
size_t get_any_string(size_t idx,sb *in,sb *out)

{
  char cVar1;
  _func_size_t_char_ptr_size_t_sb_ptr_offsetT_ptr *p_Var2;
  ulong uVar3;
  char *pcVar4;
  ulong uVar5;
  size_t sVar6;
  char cVar7;
  ulong uVar8;
  size_t sVar9;
  char *pcVar10;
  size_t local_78;
  char *local_70;
  offsetT val;
  char buf [20];
  
  sb_reset(out);
  uVar3 = sb_skip_white(idx,in);
  p_Var2 = macro_expr;
  if (in->len <= uVar3) {
    return uVar3;
  }
  cVar7 = in->ptr[uVar3];
  sVar9 = (size_t)cVar7;
  if (((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)
     ) {
    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {
      do {
        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {
          return uVar3;
        }
        uVar3 = uVar3 + 1;
        sb_add_char(out,sVar9);
        sVar9 = (size_t)in->ptr[uVar3];
      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));
      return uVar3;
    }
LAB_0011d6a0:
    pcVar4 = (char *)xmalloc(1);
    uVar5 = in->len;
    *pcVar4 = '\0';
    uVar8 = uVar3;
    local_70 = pcVar4;
    if (uVar3 < uVar5) {
      cVar7 = '\0';
      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||
              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {
        if (cVar1 == '<') {
          if (macro_alternate != 0 || macro_mri != 0) break;
          local_78 = 0x3c;
          uVar3 = uVar3 + 1;
        }
        else {
          local_78 = (size_t)cVar1;
          uVar8 = uVar3 + 1;
          switch(cVar1) {
          case '\"':
          case '\'':
            sb_add_char(out,(long)cVar1);
            uVar5 = in->len;
            if (uVar8 < uVar5) {
              uVar3 = uVar3 + 2;
              cVar7 = in->ptr[uVar8];
              if (cVar7 != cVar1) {
                do {
                  uVar3 = uVar8;
                  uVar8 = uVar3 + 1;
                  sb_add_char(out,(long)cVar7);
                  uVar5 = in->len;
                  if (uVar5 <= uVar8) goto LAB_0011d806;
                  cVar7 = in->ptr[uVar3 + 1];
                } while (cVar7 != cVar1);
                uVar3 = uVar3 + 2;
              }
            }
            else {
LAB_0011d806:
              if (uVar8 == uVar5) goto LAB_0011d850;
              uVar3 = uVar8 + 1;
            }
            break;
          default:
            uVar3 = uVar8;
            break;
          case '(':
          case '[':
            if (local_70 < pcVar4) {
              pcVar10 = pcVar4 + -1;
            }
            else {
              sVar6 = strlen(pcVar4);
              pcVar10 = (char *)xmalloc(sVar6 + 2);
              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);
              free(pcVar4);
              local_70 = pcVar10;
            }
            *pcVar10 = cVar1;
            uVar3 = uVar8;
            pcVar4 = pcVar10;
            break;
          case ')':
            local_78 = 0x29;
            pcVar4 = pcVar4 + (cVar7 == '(');
            uVar3 = uVar8;
            break;
          case ']':
            local_78 = 0x5d;
            uVar3 = uVar8;
            pcVar4 = pcVar4 + (cVar7 == '[');
          }
        }
        sb_add_char(out,local_78);
        uVar8 = uVar3;
        if (in->len <= uVar3) break;
        cVar7 = *pcVar4;
      }
    }
LAB_0011d850:
    free(local_70);
    return uVar8;
  }
  if (cVar7 == '%') {
    if (macro_alternate != 0) {
      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);
      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);
      sprintf(buf,"%ld",val);
      sb_add_string(out,buf);
      return sVar9;
    }
    goto LAB_0011d6a0;
  }
  if (cVar7 == '\"') {
    if (macro_alternate == 0) goto LAB_0011d5ec;
  }
  else if (cVar7 == '<') {
    if (macro_alternate == 0) {
      if (macro_mri != 0) goto LAB_0011d5ec;
      goto LAB_0011d6a0;
    }
  }
  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;
  if ((macro_strip_at == 0) && (cVar7 != '<')) {
    sb_add_char(out,0x22);
    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);
    sb_add_char(out,0x22);
    return sVar9;
  }
LAB_0011d5ec:
  sVar9 = getstring(uVar3,in,(sb *)&in->len,out);
  return sVar9;
}



ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)

{
  char cVar1;
  code *pcVar2;
  ulong uVar3;
  char *__s;
  ulong uVar4;
  size_t sVar5;
  undefined8 uVar6;
  char cVar7;
  ulong uVar8;
  char *pcVar9;
  long local_78;
  char *local_70;
  undefined8 local_60;
  char local_58 [40];
  
  FUN_00128000(param_3);
  uVar3 = FUN_001280c0(param_1,param_2);
  pcVar2 = DAT_0019d1f8;
  if ((ulong)param_2[1] <= uVar3) {
    return uVar3;
  }
  cVar7 = *(char *)(*param_2 + uVar3);
  uVar8 = (ulong)cVar7;
  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&
     ((byte)((int)cVar7 - 0x42U) < 0x30)) {
    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {
      do {
        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {
          return uVar3;
        }
        uVar3 = uVar3 + 1;
        FUN_00128010(param_3);
        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);
      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||
              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));
      return uVar3;
    }
LAB_0011d6a0:
    __s = (char *)xmalloc(1);
    uVar4 = param_2[1];
    *__s = '\0';
    uVar8 = uVar3;
    local_70 = __s;
    if (uVar3 < uVar4) {
      cVar7 = '\0';
      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||
              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {
        if (cVar1 == '<') {
          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;
          local_78 = 0x3c;
          uVar3 = uVar3 + 1;
        }
        else {
          local_78 = (long)cVar1;
          uVar8 = uVar3 + 1;
          switch(cVar1) {
          case '\"':
          case '\'':
            FUN_00128010(param_3,(long)cVar1);
            uVar4 = param_2[1];
            if (uVar8 < uVar4) {
              uVar3 = uVar3 + 2;
              if (*(char *)(*param_2 + uVar8) != cVar1) {
                do {
                  uVar3 = uVar8;
                  uVar8 = uVar3 + 1;
                  FUN_00128010(param_3);
                  uVar4 = param_2[1];
                  if (uVar4 <= uVar8) goto LAB_0011d806;
                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);
                uVar3 = uVar3 + 2;
              }
            }
            else {
LAB_0011d806:
              if (uVar8 == uVar4) goto LAB_0011d850;
              uVar3 = uVar8 + 1;
            }
            break;
          default:
            uVar3 = uVar8;
            break;
          case '(':
          case '[':
            if (local_70 < __s) {
              pcVar9 = __s + -1;
            }
            else {
              sVar5 = strlen(__s);
              pcVar9 = (char *)xmalloc(sVar5 + 2);
              memcpy(pcVar9 + 1,__s,sVar5 + 1);
              free(__s);
              local_70 = pcVar9;
            }
            *pcVar9 = cVar1;
            uVar3 = uVar8;
            __s = pcVar9;
            break;
          case ')':
            local_78 = 0x29;
            __s = __s + (cVar7 == '(');
            uVar3 = uVar8;
            break;
          case ']':
            local_78 = 0x5d;
            uVar3 = uVar8;
            __s = __s + (cVar7 == '[');
          }
        }
        FUN_00128010(param_3,local_78);
        uVar8 = uVar3;
        if ((ulong)param_2[1] <= uVar3) break;
        cVar7 = *__s;
      }
    }
LAB_0011d850:
    free(local_70);
    return uVar8;
  }
  if (cVar7 == '%') {
    if (DAT_0019d208 != 0) {
      uVar6 = dcgettext(0,"% operator needs absolute expression",5);
      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);
      sprintf(local_58,"%ld",local_60);
      FUN_00128040(param_3,local_58);
      return uVar3;
    }
    goto LAB_0011d6a0;
  }
  if (cVar7 == '\"') {
    if (DAT_0019d208 == 0) goto LAB_0011d5ec;
  }
  else if (cVar7 == '<') {
    if (DAT_0019d208 == 0) {
      if (DAT_0019d204 != 0) goto LAB_0011d5ec;
      goto LAB_0011d6a0;
    }
  }
  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;
  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {
    FUN_00128010(param_3,0x22);
    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);
    FUN_00128010(param_3,0x22);
    return uVar3;
  }
LAB_0011d5ec:
  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);
  return uVar3;
}


PUSH R15
MOV R15,RSI
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
MOV RDI,RDX
SUB RSP,0x48
CALL 0x00128000
MOV RDI,RBX
MOV RSI,R15
CALL 0x001280c0
MOV RBX,RAX
MOV RAX,qword ptr [R15 + 0x8]
CMP RAX,RBX
JBE 0x0011d5fd
MOV RDX,qword ptr [R15]
LEA RCX,[RBX + 0x2]
MOVSX RSI,byte ptr [RDX + RBX*0x1]
CMP RAX,RCX
JA 0x0011d610
MOV EAX,dword ptr [0x0019d208]
CMP SIL,0x25
JZ 0x0011d698
CMP SIL,0x22
JZ 0x0011d5d0
CMP SIL,0x3c
JNZ 0x0011d680
TEST EAX,EAX
JNZ 0x0011d68a
MOV EDX,dword ptr [0x0019d204]
TEST EDX,EDX
JZ 0x0011d6a0
LEA RDX,[R15 + 0x8]
JMP 0x0011d5ec
LEA RDX,[R15 + 0x8]
TEST EAX,EAX
JZ 0x0011d5ec
MOV EAX,dword ptr [0x0019d200]
TEST EAX,EAX
JNZ 0x0011d5ec
CMP SIL,0x3c
JNZ 0x0011d900
MOV RDI,RBX
MOV RCX,RBP
MOV RSI,R15
CALL 0x0011d320
MOV RBX,RAX
ADD RSP,0x48
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP byte ptr [RDX + RBX*0x1 + 0x1],0x27
JNZ 0x0011d58f
LEA EAX,[RSI + -0x42]
CMP AL,0x2f
JA 0x0011d58f
MOV RDX,0x804500008045
BT RDX,RAX
JNC 0x0011d6a0
MOV R12,0x800130500000200
MOV EAX,dword ptr [0x0019d208]
OR EAX,dword ptr [0x0019d204]
JZ 0x0011d657
MOV EAX,ESI
AND EAX,0xfffffffd
CMP AL,0x3c
JZ 0x0011d5fd
MOV RDI,RBP
ADD RBX,0x1
CALL 0x00128010
MOV RAX,qword ptr [R15]
MOVSX RSI,byte ptr [RAX + RBX*0x1]
CMP SIL,0x3b
JA 0x0011d640
BT R12,RSI
JNC 0x0011d640
JMP 0x0011d5fd
TEST EAX,EAX
JZ 0x0011d6a0
CMP SIL,0x27
JNZ 0x0011d6a0
LEA RDX,[R15 + 0x8]
JMP 0x0011d5d8
TEST EAX,EAX
JNZ 0x0011d8a0
MOV EDI,0x1
CALL 0x0010a7d8
CMP RBX,qword ptr [R15 + 0x8]
MOV R12,RAX
MOV byte ptr [RAX],0x0
MOV qword ptr [RSP + 0x8],RAX
JNC 0x0011d850
XOR EDX,EDX
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15]
MOVZX R14D,byte ptr [RAX + RBX*0x1]
TEST DL,DL
JNZ 0x0011d6e8
CMP R14B,0x20
JZ 0x0011d850
CMP R14B,0x9
JZ 0x0011d850
CMP R14B,0x2c
JZ 0x0011d850
CMP R14B,0x3c
JZ 0x0011d818
MOVSX RAX,R14B
LEA R13,[RBX + 0x1]
MOV qword ptr [RSP],RAX
LEA EAX,[R14 + -0x22]
CMP AL,0x3b
JA 0x0011d940
LEA RCX,[0x1414c0]
MOVZX EAX,AL
MOVSXD RAX,dword ptr [RCX + RAX*0x4]
ADD RAX,RCX
JMP RAX
XOR EAX,EAX
MOV qword ptr [RSP],0x5d
CMP DL,0x5b
MOV RBX,R13
SETZ AL
ADD R12,RAX
NOP word ptr CS:[RAX + RAX*0x1]
MOV RSI,qword ptr [RSP]
MOV RDI,RBP
CALL 0x00128010
CMP qword ptr [R15 + 0x8],RBX
JBE 0x0011d850
MOVZX EDX,byte ptr [R12]
JMP 0x0011d6c8
XOR EAX,EAX
CMP DL,0x28
MOV RBX,R13
MOV qword ptr [RSP],0x29
SETZ AL
ADD R12,RAX
JMP 0x0011d750
CMP R12,qword ptr [RSP + 0x8]
JBE 0x0011d860
SUB R12,0x1
MOV byte ptr [R12],R14B
MOV RBX,R13
JMP 0x0011d750
MOVSX RSI,R14B
MOV RDI,RBP
CALL 0x00128010
MOV RAX,qword ptr [R15 + 0x8]
CMP RAX,R13
JBE 0x0011d938
MOV RAX,qword ptr [R15]
ADD RBX,0x2
MOVSX RSI,byte ptr [RAX + R13*0x1]
CMP SIL,R14B
JNZ 0x0011d7f1
JMP 0x0011d750
MOV RAX,qword ptr [R15]
MOVSX RSI,byte ptr [RAX + R13*0x1 + 0x1]
CMP SIL,R14B
JZ 0x0011d840
MOV R13,RBX
MOV RDI,RBP
LEA RBX,[R13 + 0x1]
CALL 0x00128010
MOV RAX,qword ptr [R15 + 0x8]
CMP RAX,RBX
JA 0x0011d7e0
CMP RBX,RAX
JZ 0x0011d850
ADD RBX,0x1
JMP 0x0011d750
MOV EAX,dword ptr [0x0019d208]
OR EAX,dword ptr [0x0019d204]
JNZ 0x0011d850
ADD RBX,0x1
MOV qword ptr [RSP],0x3c
JMP 0x0011d750
LEA RBX,[R13 + 0x2]
JMP 0x0011d750
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0010a7d0
JMP 0x0011d5fd
MOV RDI,R12
CALL 0x0010a1f0
LEA RDI,[RAX + 0x2]
MOV RBX,RAX
CALL 0x0010a7d8
MOV RSI,R12
LEA RDX,[RBX + 0x1]
LEA RDI,[RAX + 0x1]
MOV qword ptr [RSP + 0x8],RAX
CALL 0x0010a490
MOV RDI,R12
CALL 0x0010a7d0
MOV R12,qword ptr [RSP + 0x8]
JMP 0x0011d79f
XOR EDI,EDI
MOV EDX,0x5
ADD RBX,0x1
MOV R12,qword ptr [0x0019d1f8]
LEA RSI,[0x141160]
CALL 0x0010a1d0
LEA RCX,[RSP + 0x18]
MOV RDX,R15
MOV RSI,RBX
MOV RDI,RAX
CALL R12
LEA R12,[RSP + 0x20]
MOV RDX,qword ptr [RSP + 0x18]
LEA RSI,[0x13f293]
MOV RDI,R12
MOV RBX,RAX
XOR EAX,EAX
CALL 0x0010a720
MOV RSI,R12
MOV RDI,RBP
CALL 0x00128040
JMP 0x0011d5fd
MOV RDI,RBP
MOV ESI,0x22
MOV qword ptr [RSP],RDX
CALL 0x00128010
MOV RDX,qword ptr [RSP]
MOV RSI,R15
MOV RDI,RBX
MOV RCX,RBP
CALL 0x0011d320
MOV ESI,0x22
MOV RDI,RBP
MOV RBX,RAX
CALL 0x00128010
JMP 0x0011d5fd
MOV RBX,R13
JMP 0x0011d806
MOV RBX,R13
JMP 0x0011d750
(translation_unit "ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)\n\n{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}\n\n" (function_definition "ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)\n\n{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long *param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "char local_58 [40];" primitive_type (array_declarator "local_58 [40]" identifier [ number_literal ]) ;) (expression_statement "FUN_00128000(param_3);" (call_expression "FUN_00128000(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar3 = FUN_001280c0(param_1,param_2);" (assignment_expression "uVar3 = FUN_001280c0(param_1,param_2)" identifier = (call_expression "FUN_001280c0(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "pcVar2 = DAT_0019d1f8;" (assignment_expression "pcVar2 = DAT_0019d1f8" identifier = identifier) ;) (if_statement "if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "((ulong)param_2[1] <= uVar3)" ( (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "cVar7 = *(char *)(*param_2 + uVar3);" (assignment_expression "cVar7 = *(char *)(*param_2 + uVar3)" identifier = (pointer_expression "*(char *)(*param_2 + uVar3)" * (cast_expression "(char *)(*param_2 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) ;) (expression_statement "uVar8 = (ulong)cVar7;" (assignment_expression "uVar8 = (ulong)cVar7" identifier = (cast_expression "(ulong)cVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" if (parenthesized_expression "(((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30))" ( (binary_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)" (parenthesized_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\''))" ( (binary_expression "(uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')" (parenthesized_expression "(uVar3 + 2 < (ulong)param_2[1])" ( (binary_expression "uVar3 + 2 < (ulong)param_2[1]" (binary_expression "uVar3 + 2" identifier + number_literal) < (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) == '\'')" ( (binary_expression "*(char *)(*param_2 + 1 + uVar3) == '\''" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" * (cast_expression "(char *)(*param_2 + 1 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1 + uVar3)" ( (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) + identifier) )))) == (char_literal "'\''" ' escape_sequence ')) ))) )) && (parenthesized_expression "((byte)((int)cVar7 - 0x42U) < 0x30)" ( (binary_expression "(byte)((int)cVar7 - 0x42U) < 0x30" (call_expression "(byte)((int)cVar7 - 0x42U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) < number_literal) ))) )) (compound_statement "{\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" { (if_statement "if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" if (parenthesized_expression "((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0)" ( (binary_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0" (parenthesized_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1)" ( (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1" (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)((int)cVar7 - 0x42U) & 0x3f)" ( (binary_expression "(ulong)((int)cVar7 - 0x42U) & 0x3f" (call_expression "(ulong)((int)cVar7 - 0x42U)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" { (do_statement "do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));" do (compound_statement "{\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      }" { (if_statement "if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }" if (parenthesized_expression "((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c))" ( (binary_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)" (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" identifier != number_literal) || (binary_expression "DAT_0019d204 != 0" identifier != number_literal)) )) && (parenthesized_expression "(((byte)uVar8 & 0xfd) == 0x3c)" ( (binary_expression "((byte)uVar8 & 0xfd) == 0x3c" (parenthesized_expression "((byte)uVar8 & 0xfd)" ( (binary_expression "(byte)uVar8 & 0xfd" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          return uVar3;\n        }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);" (assignment_expression "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3)" identifier = (binary_expression "(ulong)(char)*(byte *)(*param_2 + uVar3)" (call_expression "(ulong)(char)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(char)" ( identifier ))) * (cast_expression "(byte *)(*param_2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) ;) }) while (parenthesized_expression "((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0))" ( (binary_expression "(0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" (parenthesized_expression "(0x3b < *(byte *)(*param_2 + uVar3))" ( (binary_expression "0x3b < *(byte *)(*param_2 + uVar3)" number_literal < (pointer_expression "*(byte *)(*param_2 + uVar3)" * (cast_expression "(byte *)(*param_2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) )) || (parenthesized_expression "((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" ( (binary_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0" (parenthesized_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1)" ( (binary_expression "0x800130500000200U >> (uVar8 & 0x3f) & 1" (binary_expression "0x800130500000200U >> (uVar8 & 0x3f)" number_literal >> (parenthesized_expression "(uVar8 & 0x3f)" ( (binary_expression "uVar8 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) ;) (return_statement "return uVar3;" return identifier ;) })) (labeled_statement "LAB_0011d6a0:\n    __s = (char *)xmalloc(1);" statement_identifier : (expression_statement "__s = (char *)xmalloc(1);" (assignment_expression "__s = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;)) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (expression_statement "local_70 = __s;" (assignment_expression "local_70 = __s" identifier = identifier) ;) (if_statement "if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (while_statement "while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" while (parenthesized_expression "(((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')))" ( (parenthesized_expression "((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))" ( (binary_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')" (parenthesized_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t'))))" ( (comma_expression "cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "cVar1 = *(char *)(*param_2 + uVar3)" identifier = (pointer_expression "*(char *)(*param_2 + uVar3)" * (cast_expression "(char *)(*param_2 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) , (comma_expression "uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "uVar8 = uVar3" identifier = identifier) , (binary_expression "cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((cVar1 != ' ' && (cVar1 != '\t')))" ( (parenthesized_expression "(cVar1 != ' ' && (cVar1 != '\t'))" ( (binary_expression "cVar1 != ' ' && (cVar1 != '\t')" (binary_expression "cVar1 != ' '" identifier != (char_literal "' '" ' character ')) && (parenthesized_expression "(cVar1 != '\t')" ( (binary_expression "cVar1 != '\t'" identifier != (char_literal "'\t'" ' escape_sequence ')) ))) )) ))))) )) && (parenthesized_expression "(cVar1 != ',')" ( (binary_expression "cVar1 != ','" identifier != (char_literal "','" ' character ')) ))) )) )) (compound_statement "{\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" { (if_statement "if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" if (parenthesized_expression "(cVar1 == '<')" ( (binary_expression "cVar1 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }" { (if_statement "if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;" if (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" identifier != number_literal) || (binary_expression "DAT_0019d204 != 0" identifier != number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_78 = 0x3c;" (assignment_expression "local_78 = 0x3c" identifier = number_literal) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" else (compound_statement "{\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" { (expression_statement "local_78 = (long)cVar1;" (assignment_expression "local_78 = (long)cVar1" identifier = (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (switch_statement "switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" switch (parenthesized_expression "(cVar1)" ( identifier )) (compound_statement "{\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" { (case_statement "case '\"':" case (char_literal "'\"'" ' escape_sequence ') :) (case_statement "case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;" case (char_literal "'\''" ' escape_sequence ') : (expression_statement "FUN_00128010(param_3,(long)cVar1);" (call_expression "FUN_00128010(param_3,(long)cVar1)" identifier (argument_list "(param_3,(long)cVar1)" ( identifier , (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" if (parenthesized_expression "(uVar8 < uVar4)" ( (binary_expression "uVar8 < uVar4" identifier < identifier) )) (compound_statement "{\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }" { (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (if_statement "if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" if (parenthesized_expression "(*(char *)(*param_2 + uVar8) != cVar1)" ( (binary_expression "*(char *)(*param_2 + uVar8) != cVar1" (pointer_expression "*(char *)(*param_2 + uVar8)" * (cast_expression "(char *)(*param_2 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar8)" ( (binary_expression "*param_2 + uVar8" (pointer_expression "*param_2" * identifier) + identifier) )))) != identifier) )) (compound_statement "{\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" { (do_statement "do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);" do (compound_statement "{\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                }" { (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 <= uVar8) goto LAB_0011d806;" if (parenthesized_expression "(uVar4 <= uVar8)" ( (binary_expression "uVar4 <= uVar8" identifier <= identifier) )) (goto_statement "goto LAB_0011d806;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) != cVar1)" ( (binary_expression "*(char *)(*param_2 + 1 + uVar3) != cVar1" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" * (cast_expression "(char *)(*param_2 + 1 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1 + uVar3)" ( (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) + identifier) )))) != identifier) )) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" else (compound_statement "{\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" { (labeled_statement "LAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;" statement_identifier : (if_statement "if (uVar8 == uVar4) goto LAB_0011d850;" if (parenthesized_expression "(uVar8 == uVar4)" ( (binary_expression "uVar8 == uVar4" identifier == identifier) )) (goto_statement "goto LAB_0011d850;" goto statement_identifier ;))) (expression_statement "uVar3 = uVar8 + 1;" (assignment_expression "uVar3 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }))) (break_statement "break;" break ;)) (case_statement "default:\n            uVar3 = uVar8;\n            break;" default : (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case '(':" case (char_literal "'('" ' character ') :) (case_statement "case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;" case (char_literal "'['" ' character ') : (if_statement "if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" if (parenthesized_expression "(local_70 < __s)" ( (binary_expression "local_70 < __s" identifier < identifier) )) (compound_statement "{\n              pcVar9 = __s + -1;\n            }" { (expression_statement "pcVar9 = __s + -1;" (assignment_expression "pcVar9 = __s + -1" identifier = (binary_expression "__s + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" else (compound_statement "{\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" { (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar9 = (char *)xmalloc(sVar5 + 2);" (assignment_expression "pcVar9 = (char *)xmalloc(sVar5 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 2)" identifier (argument_list "(sVar5 + 2)" ( (binary_expression "sVar5 + 2" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar9 + 1,__s,sVar5 + 1);" (call_expression "memcpy(pcVar9 + 1,__s,sVar5 + 1)" identifier (argument_list "(pcVar9 + 1,__s,sVar5 + 1)" ( (binary_expression "pcVar9 + 1" identifier + number_literal) , identifier , (binary_expression "sVar5 + 1" identifier + number_literal) ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "local_70 = pcVar9;" (assignment_expression "local_70 = pcVar9" identifier = identifier) ;) }))) (expression_statement "*pcVar9 = cVar1;" (assignment_expression "*pcVar9 = cVar1" (pointer_expression "*pcVar9" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "__s = pcVar9;" (assignment_expression "__s = pcVar9" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;" case (char_literal "')'" ' character ') : (expression_statement "local_78 = 0x29;" (assignment_expression "local_78 = 0x29" identifier = number_literal) ;) (expression_statement "__s = __s + (cVar7 == '(');" (assignment_expression "__s = __s + (cVar7 == '(')" identifier = (binary_expression "__s + (cVar7 == '(')" identifier + (parenthesized_expression "(cVar7 == '(')" ( (binary_expression "cVar7 == '('" identifier == (char_literal "'('" ' character ')) )))) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');" case (char_literal "']'" ' character ') : (expression_statement "local_78 = 0x5d;" (assignment_expression "local_78 = 0x5d" identifier = number_literal) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "__s = __s + (cVar7 == '[');" (assignment_expression "__s = __s + (cVar7 == '[')" identifier = (binary_expression "__s + (cVar7 == '[')" identifier + (parenthesized_expression "(cVar7 == '[')" ( (binary_expression "cVar7 == '['" identifier == (char_literal "'['" ' character ')) )))) ;)) })) }))) (expression_statement "FUN_00128010(param_3,local_78);" (call_expression "FUN_00128010(param_3,local_78)" identifier (argument_list "(param_3,local_78)" ( identifier , identifier ))) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (if_statement "if ((ulong)param_2[1] <= uVar3) break;" if (parenthesized_expression "((ulong)param_2[1] <= uVar3)" ( (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar7 = *__s;" (assignment_expression "cVar7 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) })) })) (labeled_statement "LAB_0011d850:\n    free(local_70);" statement_identifier : (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;)) (return_statement "return uVar8;" return identifier ;) })) (if_statement "if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" if (parenthesized_expression "(cVar7 == '%')" ( (binary_expression "cVar7 == '%'" identifier == (char_literal "'%'" ' character ')) )) (compound_statement "{\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" { (if_statement "if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" if (parenthesized_expression "(DAT_0019d208 != 0)" ( (binary_expression "DAT_0019d208 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" { (expression_statement "uVar6 = dcgettext(0,"% operator needs absolute expression",5);" (assignment_expression "uVar6 = dcgettext(0,"% operator needs absolute expression",5)" identifier = (call_expression "dcgettext(0,"% operator needs absolute expression",5)" identifier (argument_list "(0,"% operator needs absolute expression",5)" ( number_literal , (string_literal ""% operator needs absolute expression"" " string_content ") , number_literal )))) ;) (expression_statement "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);" (assignment_expression "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" identifier = (call_expression "(*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(uVar6,uVar3 + 1,param_2,&local_60)" ( identifier , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier , (pointer_expression "&local_60" & identifier) )))) ;) (expression_statement "sprintf(local_58,"%ld",local_60);" (call_expression "sprintf(local_58,"%ld",local_60)" identifier (argument_list "(local_58,"%ld",local_60)" ( identifier , (string_literal ""%ld"" " string_content ") , identifier ))) ;) (expression_statement "FUN_00128040(param_3,local_58);" (call_expression "FUN_00128040(param_3,local_58)" identifier (argument_list "(param_3,local_58)" ( identifier , identifier ))) ;) (return_statement "return uVar3;" return identifier ;) })) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) (if_statement "if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '\"')" ( (binary_expression "cVar7 == '\"'" identifier == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }" { (if_statement "if (DAT_0019d208 == 0) goto LAB_0011d5ec;" if (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) }) (else_clause "else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '<')" ( (binary_expression "cVar7 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }" { (if_statement "if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" if (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" { (if_statement "if (DAT_0019d204 != 0) goto LAB_0011d5ec;" if (parenthesized_expression "(DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d204 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) }) (else_clause "else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "((DAT_0019d208 == 0) || (cVar7 != '\''))" ( (binary_expression "(DAT_0019d208 == 0) || (cVar7 != '\'')" (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) || (parenthesized_expression "(cVar7 != '\'')" ( (binary_expression "cVar7 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;)))))) (if_statement "if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" if (parenthesized_expression "((DAT_0019d200 == 0) && (cVar7 != '<'))" ( (binary_expression "(DAT_0019d200 == 0) && (cVar7 != '<')" (parenthesized_expression "(DAT_0019d200 == 0)" ( (binary_expression "DAT_0019d200 == 0" identifier == number_literal) )) && (parenthesized_expression "(cVar7 != '<')" ( (binary_expression "cVar7 != '<'" identifier != (char_literal "'<'" ' character ')) ))) )) (compound_statement "{\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" { (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" identifier (argument_list "(param_3,0x22)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier = (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier (argument_list "(uVar3,param_2,param_2 + 1,param_3)" ( identifier , identifier , (binary_expression "param_2 + 1" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" identifier (argument_list "(param_3,0x22)" ( identifier , number_literal ))) ;) (return_statement "return uVar3;" return identifier ;) })) (labeled_statement "LAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" statement_identifier : (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier = (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier (argument_list "(uVar3,param_2,param_2 + 1,param_3)" ( identifier , identifier , (binary_expression "param_2 + 1" identifier + number_literal) , identifier )))) ;)) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "size_t get_any_string(size_t idx,sb *in,sb *out)\n\n{\n  char cVar1;\n  _func_size_t_char_ptr_size_t_sb_ptr_offsetT_ptr *p_Var2;\n  ulong uVar3;\n  char *pcVar4;\n  ulong uVar5;\n  size_t sVar6;\n  char cVar7;\n  ulong uVar8;\n  size_t sVar9;\n  char *pcVar10;\n  size_t local_78;\n  char *local_70;\n  offsetT val;\n  char buf [20];\n  \n  sb_reset(out);\n  uVar3 = sb_skip_white(idx,in);\n  p_Var2 = macro_expr;\n  if (in->len <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = in->ptr[uVar3];\n  sVar9 = (size_t)cVar7;\n  if (((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)\n     ) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);\n    uVar5 = in->len;\n    *pcVar4 = '\0';\n    uVar8 = uVar3;\n    local_70 = pcVar4;\n    if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (macro_alternate == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((macro_strip_at == 0) && (cVar7 != '<')) {\n    sb_add_char(out,0x22);\n    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n    sb_add_char(out,0x22);\n    return sVar9;\n  }\nLAB_0011d5ec:\n  sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n  return sVar9;\n}\n\n" (function_definition "size_t get_any_string(size_t idx,sb *in,sb *out)\n\n{\n  char cVar1;\n  _func_size_t_char_ptr_size_t_sb_ptr_offsetT_ptr *p_Var2;\n  ulong uVar3;\n  char *pcVar4;\n  ulong uVar5;\n  size_t sVar6;\n  char cVar7;\n  ulong uVar8;\n  size_t sVar9;\n  char *pcVar10;\n  size_t local_78;\n  char *local_70;\n  offsetT val;\n  char buf [20];\n  \n  sb_reset(out);\n  uVar3 = sb_skip_white(idx,in);\n  p_Var2 = macro_expr;\n  if (in->len <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = in->ptr[uVar3];\n  sVar9 = (size_t)cVar7;\n  if (((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)\n     ) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);\n    uVar5 = in->len;\n    *pcVar4 = '\0';\n    uVar8 = uVar3;\n    local_70 = pcVar4;\n    if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (macro_alternate == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((macro_strip_at == 0) && (cVar7 != '<')) {\n    sb_add_char(out,0x22);\n    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n    sb_add_char(out,0x22);\n    return sVar9;\n  }\nLAB_0011d5ec:\n  sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n  return sVar9;\n}" primitive_type (function_declarator "get_any_string(size_t idx,sb *in,sb *out)" identifier (parameter_list "(size_t idx,sb *in,sb *out)" ( (parameter_declaration "size_t idx" primitive_type identifier) , (parameter_declaration "sb *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "sb *out" type_identifier (pointer_declarator "*out" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  _func_size_t_char_ptr_size_t_sb_ptr_offsetT_ptr *p_Var2;\n  ulong uVar3;\n  char *pcVar4;\n  ulong uVar5;\n  size_t sVar6;\n  char cVar7;\n  ulong uVar8;\n  size_t sVar9;\n  char *pcVar10;\n  size_t local_78;\n  char *local_70;\n  offsetT val;\n  char buf [20];\n  \n  sb_reset(out);\n  uVar3 = sb_skip_white(idx,in);\n  p_Var2 = macro_expr;\n  if (in->len <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = in->ptr[uVar3];\n  sVar9 = (size_t)cVar7;\n  if (((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)\n     ) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);\n    uVar5 = in->len;\n    *pcVar4 = '\0';\n    uVar8 = uVar3;\n    local_70 = pcVar4;\n    if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (macro_alternate == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((macro_strip_at == 0) && (cVar7 != '<')) {\n    sb_add_char(out,0x22);\n    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n    sb_add_char(out,0x22);\n    return sVar9;\n  }\nLAB_0011d5ec:\n  sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n  return sVar9;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "_func_size_t_char_ptr_size_t_sb_ptr_offsetT_ptr *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "size_t local_78;" primitive_type identifier ;) (declaration "char *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "offsetT val;" type_identifier identifier ;) (declaration "char buf [20];" primitive_type (array_declarator "buf [20]" identifier [ number_literal ]) ;) (expression_statement "sb_reset(out);" (call_expression "sb_reset(out)" identifier (argument_list "(out)" ( identifier ))) ;) (expression_statement "uVar3 = sb_skip_white(idx,in);" (assignment_expression "uVar3 = sb_skip_white(idx,in)" identifier = (call_expression "sb_skip_white(idx,in)" identifier (argument_list "(idx,in)" ( identifier , identifier )))) ;) (expression_statement "p_Var2 = macro_expr;" (assignment_expression "p_Var2 = macro_expr" identifier = identifier) ;) (if_statement "if (in->len <= uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "(in->len <= uVar3)" ( (binary_expression "in->len <= uVar3" (field_expression "in->len" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "cVar7 = in->ptr[uVar3];" (assignment_expression "cVar7 = in->ptr[uVar3]" identifier = (subscript_expression "in->ptr[uVar3]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "sVar9 = (size_t)cVar7;" (assignment_expression "sVar9 = (size_t)cVar7" identifier = (cast_expression "(size_t)cVar7" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (if_statement "if (((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)\n     ) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);\n    uVar5 = in->len;\n    *pcVar4 = '\0';\n    uVar8 = uVar3;\n    local_70 = pcVar4;\n    if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" if (parenthesized_expression "(((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)\n     )" ( (binary_expression "((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')) && ((byte)((int)cVar7 - 0x42U) < 0x30)" (parenthesized_expression "((uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\''))" ( (binary_expression "(uVar3 + 2 < in->len) && (in->ptr[uVar3 + 1] == '\'')" (parenthesized_expression "(uVar3 + 2 < in->len)" ( (binary_expression "uVar3 + 2 < in->len" (binary_expression "uVar3 + 2" identifier + number_literal) < (field_expression "in->len" identifier -> field_identifier)) )) && (parenthesized_expression "(in->ptr[uVar3 + 1] == '\'')" ( (binary_expression "in->ptr[uVar3 + 1] == '\''" (subscript_expression "in->ptr[uVar3 + 1]" (field_expression "in->ptr" identifier -> field_identifier) [ (binary_expression "uVar3 + 1" identifier + number_literal) ]) == (char_literal "'\''" ' escape_sequence ')) ))) )) && (parenthesized_expression "((byte)((int)cVar7 - 0x42U) < 0x30)" ( (binary_expression "(byte)((int)cVar7 - 0x42U) < 0x30" (call_expression "(byte)((int)cVar7 - 0x42U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) < number_literal) ))) )) (compound_statement "{\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);\n    uVar5 = in->len;\n    *pcVar4 = '\0';\n    uVar8 = uVar3;\n    local_70 = pcVar4;\n    if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" { (if_statement "if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" if (parenthesized_expression "((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0)" ( (binary_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0" (parenthesized_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1)" ( (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1" (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)((int)cVar7 - 0x42U) & 0x3f)" ( (binary_expression "(ulong)((int)cVar7 - 0x42U) & 0x3f" (call_expression "(ulong)((int)cVar7 - 0x42U)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" { (do_statement "do {\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      } while ((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0));" do (compound_statement "{\n        if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        sb_add_char(out,sVar9);\n        sVar9 = (size_t)in->ptr[uVar3];\n      }" { (if_statement "if ((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }" if (parenthesized_expression "((macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c))" ( (binary_expression "(macro_alternate != 0 || macro_mri != 0) && (((byte)sVar9 & 0xfd) == 0x3c)" (parenthesized_expression "(macro_alternate != 0 || macro_mri != 0)" ( (binary_expression "macro_alternate != 0 || macro_mri != 0" (binary_expression "macro_alternate != 0" identifier != number_literal) || (binary_expression "macro_mri != 0" identifier != number_literal)) )) && (parenthesized_expression "(((byte)sVar9 & 0xfd) == 0x3c)" ( (binary_expression "((byte)sVar9 & 0xfd) == 0x3c" (parenthesized_expression "((byte)sVar9 & 0xfd)" ( (binary_expression "(byte)sVar9 & 0xfd" (cast_expression "(byte)sVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          return uVar3;\n        }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "sb_add_char(out,sVar9);" (call_expression "sb_add_char(out,sVar9)" identifier (argument_list "(out,sVar9)" ( identifier , identifier ))) ;) (expression_statement "sVar9 = (size_t)in->ptr[uVar3];" (assignment_expression "sVar9 = (size_t)in->ptr[uVar3]" identifier = (cast_expression "(size_t)in->ptr[uVar3]" ( (type_descriptor "size_t" primitive_type) ) (subscript_expression "in->ptr[uVar3]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ]))) ;) }) while (parenthesized_expression "((0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0))" ( (binary_expression "(0x3b < (byte)in->ptr[uVar3]) || ((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0)" (parenthesized_expression "(0x3b < (byte)in->ptr[uVar3])" ( (binary_expression "0x3b < (byte)in->ptr[uVar3]" number_literal < (cast_expression "(byte)in->ptr[uVar3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "in->ptr[uVar3]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ]))) )) || (parenthesized_expression "((0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0)" ( (binary_expression "(0x800130500000200U >> (sVar9 & 0x3f) & 1) == 0" (parenthesized_expression "(0x800130500000200U >> (sVar9 & 0x3f) & 1)" ( (binary_expression "0x800130500000200U >> (sVar9 & 0x3f) & 1" (binary_expression "0x800130500000200U >> (sVar9 & 0x3f)" number_literal >> (parenthesized_expression "(sVar9 & 0x3f)" ( (binary_expression "sVar9 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) ;) (return_statement "return uVar3;" return identifier ;) })) (labeled_statement "LAB_0011d6a0:\n    pcVar4 = (char *)xmalloc(1);" statement_identifier : (expression_statement "pcVar4 = (char *)xmalloc(1);" (assignment_expression "pcVar4 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;)) (expression_statement "uVar5 = in->len;" (assignment_expression "uVar5 = in->len" identifier = (field_expression "in->len" identifier -> field_identifier)) ;) (expression_statement "*pcVar4 = '\0';" (assignment_expression "*pcVar4 = '\0'" (pointer_expression "*pcVar4" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (expression_statement "local_70 = pcVar4;" (assignment_expression "local_70 = pcVar4" identifier = identifier) ;) (if_statement "if (uVar3 < uVar5) {\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }" if (parenthesized_expression "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) )) (compound_statement "{\n      cVar7 = '\0';\n      while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }\n    }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (while_statement "while (((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }" while (parenthesized_expression "(((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')))" ( (parenthesized_expression "((cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))" ( (binary_expression "(cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')" (parenthesized_expression "(cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t'))))" ( (comma_expression "cVar1 = in->ptr[uVar3], uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "cVar1 = in->ptr[uVar3]" identifier = (subscript_expression "in->ptr[uVar3]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ])) , (comma_expression "uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "uVar8 = uVar3" identifier = identifier) , (binary_expression "cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((cVar1 != ' ' && (cVar1 != '\t')))" ( (parenthesized_expression "(cVar1 != ' ' && (cVar1 != '\t'))" ( (binary_expression "cVar1 != ' ' && (cVar1 != '\t')" (binary_expression "cVar1 != ' '" identifier != (char_literal "' '" ' character ')) && (parenthesized_expression "(cVar1 != '\t')" ( (binary_expression "cVar1 != '\t'" identifier != (char_literal "'\t'" ' escape_sequence ')) ))) )) ))))) )) && (parenthesized_expression "(cVar1 != ',')" ( (binary_expression "cVar1 != ','" identifier != (char_literal "','" ' character ')) ))) )) )) (compound_statement "{\n        if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }\n        sb_add_char(out,local_78);\n        uVar8 = uVar3;\n        if (in->len <= uVar3) break;\n        cVar7 = *pcVar4;\n      }" { (if_statement "if (cVar1 == '<') {\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }" if (parenthesized_expression "(cVar1 == '<')" ( (binary_expression "cVar1 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n          if (macro_alternate != 0 || macro_mri != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }" { (if_statement "if (macro_alternate != 0 || macro_mri != 0) break;" if (parenthesized_expression "(macro_alternate != 0 || macro_mri != 0)" ( (binary_expression "macro_alternate != 0 || macro_mri != 0" (binary_expression "macro_alternate != 0" identifier != number_literal) || (binary_expression "macro_mri != 0" identifier != number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_78 = 0x3c;" (assignment_expression "local_78 = 0x3c" identifier = number_literal) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }" else (compound_statement "{\n          local_78 = (size_t)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }\n        }" { (expression_statement "local_78 = (size_t)cVar1;" (assignment_expression "local_78 = (size_t)cVar1" identifier = (cast_expression "(size_t)cVar1" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (switch_statement "switch(cVar1) {\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }" switch (parenthesized_expression "(cVar1)" ( identifier )) (compound_statement "{\n          case '\"':\n          case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;\n          case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');\n          }" { (case_statement "case '\"':" case (char_literal "'\"'" ' escape_sequence ') :) (case_statement "case '\'':\n            sb_add_char(out,(long)cVar1);\n            uVar5 = in->len;\n            if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;" case (char_literal "'\''" ' escape_sequence ') : (expression_statement "sb_add_char(out,(long)cVar1);" (call_expression "sb_add_char(out,(long)cVar1)" identifier (argument_list "(out,(long)cVar1)" ( identifier , (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "uVar5 = in->len;" (assignment_expression "uVar5 = in->len" identifier = (field_expression "in->len" identifier -> field_identifier)) ;) (if_statement "if (uVar8 < uVar5) {\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" if (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) )) (compound_statement "{\n              uVar3 = uVar3 + 2;\n              cVar7 = in->ptr[uVar8];\n              if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }" { (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (expression_statement "cVar7 = in->ptr[uVar8];" (assignment_expression "cVar7 = in->ptr[uVar8]" identifier = (subscript_expression "in->ptr[uVar8]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (cVar7 != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }" if (parenthesized_expression "(cVar7 != cVar1)" ( (binary_expression "cVar7 != cVar1" identifier != identifier) )) (compound_statement "{\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);\n                uVar3 = uVar3 + 2;\n              }" { (do_statement "do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                } while (cVar7 != cVar1);" do (compound_statement "{\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  sb_add_char(out,(long)cVar7);\n                  uVar5 = in->len;\n                  if (uVar5 <= uVar8) goto LAB_0011d806;\n                  cVar7 = in->ptr[uVar3 + 1];\n                }" { (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "sb_add_char(out,(long)cVar7);" (call_expression "sb_add_char(out,(long)cVar7)" identifier (argument_list "(out,(long)cVar7)" ( identifier , (cast_expression "(long)cVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "uVar5 = in->len;" (assignment_expression "uVar5 = in->len" identifier = (field_expression "in->len" identifier -> field_identifier)) ;) (if_statement "if (uVar5 <= uVar8) goto LAB_0011d806;" if (parenthesized_expression "(uVar5 <= uVar8)" ( (binary_expression "uVar5 <= uVar8" identifier <= identifier) )) (goto_statement "goto LAB_0011d806;" goto statement_identifier ;)) (expression_statement "cVar7 = in->ptr[uVar3 + 1];" (assignment_expression "cVar7 = in->ptr[uVar3 + 1]" identifier = (subscript_expression "in->ptr[uVar3 + 1]" (field_expression "in->ptr" identifier -> field_identifier) [ (binary_expression "uVar3 + 1" identifier + number_literal) ])) ;) }) while (parenthesized_expression "(cVar7 != cVar1)" ( (binary_expression "cVar7 != cVar1" identifier != identifier) )) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else {\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" else (compound_statement "{\nLAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" { (labeled_statement "LAB_0011d806:\n              if (uVar8 == uVar5) goto LAB_0011d850;" statement_identifier : (if_statement "if (uVar8 == uVar5) goto LAB_0011d850;" if (parenthesized_expression "(uVar8 == uVar5)" ( (binary_expression "uVar8 == uVar5" identifier == identifier) )) (goto_statement "goto LAB_0011d850;" goto statement_identifier ;))) (expression_statement "uVar3 = uVar8 + 1;" (assignment_expression "uVar3 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }))) (break_statement "break;" break ;)) (case_statement "default:\n            uVar3 = uVar8;\n            break;" default : (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case '(':" case (char_literal "'('" ' character ') :) (case_statement "case '[':\n            if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }\n            *pcVar10 = cVar1;\n            uVar3 = uVar8;\n            pcVar4 = pcVar10;\n            break;" case (char_literal "'['" ' character ') : (if_statement "if (local_70 < pcVar4) {\n              pcVar10 = pcVar4 + -1;\n            }\n            else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }" if (parenthesized_expression "(local_70 < pcVar4)" ( (binary_expression "local_70 < pcVar4" identifier < identifier) )) (compound_statement "{\n              pcVar10 = pcVar4 + -1;\n            }" { (expression_statement "pcVar10 = pcVar4 + -1;" (assignment_expression "pcVar10 = pcVar4 + -1" identifier = (binary_expression "pcVar4 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }" else (compound_statement "{\n              sVar6 = strlen(pcVar4);\n              pcVar10 = (char *)xmalloc(sVar6 + 2);\n              memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);\n              free(pcVar4);\n              local_70 = pcVar10;\n            }" { (expression_statement "sVar6 = strlen(pcVar4);" (assignment_expression "sVar6 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "pcVar10 = (char *)xmalloc(sVar6 + 2);" (assignment_expression "pcVar10 = (char *)xmalloc(sVar6 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar6 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar6 + 2)" identifier (argument_list "(sVar6 + 2)" ( (binary_expression "sVar6 + 2" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar10 + 1,pcVar4,sVar6 + 1);" (call_expression "memcpy(pcVar10 + 1,pcVar4,sVar6 + 1)" identifier (argument_list "(pcVar10 + 1,pcVar4,sVar6 + 1)" ( (binary_expression "pcVar10 + 1" identifier + number_literal) , identifier , (binary_expression "sVar6 + 1" identifier + number_literal) ))) ;) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) (expression_statement "local_70 = pcVar10;" (assignment_expression "local_70 = pcVar10" identifier = identifier) ;) }))) (expression_statement "*pcVar10 = cVar1;" (assignment_expression "*pcVar10 = cVar1" (pointer_expression "*pcVar10" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "pcVar4 = pcVar10;" (assignment_expression "pcVar4 = pcVar10" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ')':\n            local_78 = 0x29;\n            pcVar4 = pcVar4 + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;" case (char_literal "')'" ' character ') : (expression_statement "local_78 = 0x29;" (assignment_expression "local_78 = 0x29" identifier = number_literal) ;) (expression_statement "pcVar4 = pcVar4 + (cVar7 == '(');" (assignment_expression "pcVar4 = pcVar4 + (cVar7 == '(')" identifier = (binary_expression "pcVar4 + (cVar7 == '(')" identifier + (parenthesized_expression "(cVar7 == '(')" ( (binary_expression "cVar7 == '('" identifier == (char_literal "'('" ' character ')) )))) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            pcVar4 = pcVar4 + (cVar7 == '[');" case (char_literal "']'" ' character ') : (expression_statement "local_78 = 0x5d;" (assignment_expression "local_78 = 0x5d" identifier = number_literal) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "pcVar4 = pcVar4 + (cVar7 == '[');" (assignment_expression "pcVar4 = pcVar4 + (cVar7 == '[')" identifier = (binary_expression "pcVar4 + (cVar7 == '[')" identifier + (parenthesized_expression "(cVar7 == '[')" ( (binary_expression "cVar7 == '['" identifier == (char_literal "'['" ' character ')) )))) ;)) })) }))) (expression_statement "sb_add_char(out,local_78);" (call_expression "sb_add_char(out,local_78)" identifier (argument_list "(out,local_78)" ( identifier , identifier ))) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (if_statement "if (in->len <= uVar3) break;" if (parenthesized_expression "(in->len <= uVar3)" ( (binary_expression "in->len <= uVar3" (field_expression "in->len" identifier -> field_identifier) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar7 = *pcVar4;" (assignment_expression "cVar7 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) })) })) (labeled_statement "LAB_0011d850:\n    free(local_70);" statement_identifier : (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;)) (return_statement "return uVar8;" return identifier ;) })) (if_statement "if (cVar7 == '%') {\n    if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }\n    goto LAB_0011d6a0;\n  }" if (parenthesized_expression "(cVar7 == '%')" ( (binary_expression "cVar7 == '%'" identifier == (char_literal "'%'" ' character ')) )) (compound_statement "{\n    if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }\n    goto LAB_0011d6a0;\n  }" { (if_statement "if (macro_alternate != 0) {\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }" if (parenthesized_expression "(macro_alternate != 0)" ( (binary_expression "macro_alternate != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);\n      sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);\n      sprintf(buf,"%ld",val);\n      sb_add_string(out,buf);\n      return sVar9;\n    }" { (expression_statement "pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"% operator needs absolute expression",5)" identifier = (cast_expression "(char *)dcgettext(0,"% operator needs absolute expression",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"% operator needs absolute expression",5)" identifier (argument_list "(0,"% operator needs absolute expression",5)" ( number_literal , (string_literal ""% operator needs absolute expression"" " string_content ") , number_literal ))))) ;) (expression_statement "sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val);" (assignment_expression "sVar9 = (*p_Var2)(pcVar4,uVar3 + 1,in,&val)" identifier = (call_expression "(*p_Var2)(pcVar4,uVar3 + 1,in,&val)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(pcVar4,uVar3 + 1,in,&val)" ( identifier , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier , (pointer_expression "&val" & identifier) )))) ;) (expression_statement "sprintf(buf,"%ld",val);" (call_expression "sprintf(buf,"%ld",val)" identifier (argument_list "(buf,"%ld",val)" ( identifier , (string_literal ""%ld"" " string_content ") , identifier ))) ;) (expression_statement "sb_add_string(out,buf);" (call_expression "sb_add_string(out,buf)" identifier (argument_list "(out,buf)" ( identifier , identifier ))) ;) (return_statement "return sVar9;" return identifier ;) })) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) (if_statement "if (cVar7 == '\"') {\n    if (macro_alternate == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '\"')" ( (binary_expression "cVar7 == '\"'" identifier == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    if (macro_alternate == 0) goto LAB_0011d5ec;\n  }" { (if_statement "if (macro_alternate == 0) goto LAB_0011d5ec;" if (parenthesized_expression "(macro_alternate == 0)" ( (binary_expression "macro_alternate == 0" identifier == number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) }) (else_clause "else if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if (cVar7 == '<') {\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '<')" ( (binary_expression "cVar7 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n    if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }" { (if_statement "if (macro_alternate == 0) {\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" if (parenthesized_expression "(macro_alternate == 0)" ( (binary_expression "macro_alternate == 0" identifier == number_literal) )) (compound_statement "{\n      if (macro_mri != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" { (if_statement "if (macro_mri != 0) goto LAB_0011d5ec;" if (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) }) (else_clause "else if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if ((macro_alternate == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "((macro_alternate == 0) || (cVar7 != '\''))" ( (binary_expression "(macro_alternate == 0) || (cVar7 != '\'')" (parenthesized_expression "(macro_alternate == 0)" ( (binary_expression "macro_alternate == 0" identifier == number_literal) )) || (parenthesized_expression "(cVar7 != '\'')" ( (binary_expression "cVar7 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;)))))) (if_statement "if ((macro_strip_at == 0) && (cVar7 != '<')) {\n    sb_add_char(out,0x22);\n    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n    sb_add_char(out,0x22);\n    return sVar9;\n  }" if (parenthesized_expression "((macro_strip_at == 0) && (cVar7 != '<'))" ( (binary_expression "(macro_strip_at == 0) && (cVar7 != '<')" (parenthesized_expression "(macro_strip_at == 0)" ( (binary_expression "macro_strip_at == 0" identifier == number_literal) )) && (parenthesized_expression "(cVar7 != '<')" ( (binary_expression "cVar7 != '<'" identifier != (char_literal "'<'" ' character ')) ))) )) (compound_statement "{\n    sb_add_char(out,0x22);\n    sVar9 = getstring(uVar3,in,(sb *)&in->len,out);\n    sb_add_char(out,0x22);\n    return sVar9;\n  }" { (expression_statement "sb_add_char(out,0x22);" (call_expression "sb_add_char(out,0x22)" identifier (argument_list "(out,0x22)" ( identifier , number_literal ))) ;) (expression_statement "sVar9 = getstring(uVar3,in,(sb *)&in->len,out);" (assignment_expression "sVar9 = getstring(uVar3,in,(sb *)&in->len,out)" identifier = (call_expression "getstring(uVar3,in,(sb *)&in->len,out)" identifier (argument_list "(uVar3,in,(sb *)&in->len,out)" ( identifier , identifier , (cast_expression "(sb *)&in->len" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&in->len" & (field_expression "in->len" identifier -> field_identifier))) , identifier )))) ;) (expression_statement "sb_add_char(out,0x22);" (call_expression "sb_add_char(out,0x22)" identifier (argument_list "(out,0x22)" ( identifier , number_literal ))) ;) (return_statement "return sVar9;" return identifier ;) })) (labeled_statement "LAB_0011d5ec:\n  sVar9 = getstring(uVar3,in,(sb *)&in->len,out);" statement_identifier : (expression_statement "sVar9 = getstring(uVar3,in,(sb *)&in->len,out);" (assignment_expression "sVar9 = getstring(uVar3,in,(sb *)&in->len,out)" identifier = (call_expression "getstring(uVar3,in,(sb *)&in->len,out)" identifier (argument_list "(uVar3,in,(sb *)&in->len,out)" ( identifier , identifier , (cast_expression "(sb *)&in->len" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&in->len" & (field_expression "in->len" identifier -> field_identifier))) , identifier )))) ;)) (return_statement "return sVar9;" return identifier ;) })))
(translation_unit "ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)\n\n{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}\n\n" (function_definition "ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)\n\n{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)" identifier (parameter_list "(undefined8 param_1,long *param_2,undefined8 param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "char *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "char local_58 [40];" primitive_type (array_declarator "local_58 [40]" identifier [ number_literal ]) ;) (expression_statement "FUN_00128000(param_3);" (call_expression "FUN_00128000(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar3 = FUN_001280c0(param_1,param_2);" (assignment_expression "uVar3 = FUN_001280c0(param_1,param_2)" identifier = (call_expression "FUN_001280c0(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "pcVar2 = DAT_0019d1f8;" (assignment_expression "pcVar2 = DAT_0019d1f8" identifier = identifier) ;) (if_statement "if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }" if (parenthesized_expression "((ulong)param_2[1] <= uVar3)" ( (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "cVar7 = *(char *)(*param_2 + uVar3);" (assignment_expression "cVar7 = *(char *)(*param_2 + uVar3)" identifier = (pointer_expression "*(char *)(*param_2 + uVar3)" * (cast_expression "(char *)(*param_2 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) ;) (expression_statement "uVar8 = (ulong)cVar7;" (assignment_expression "uVar8 = (ulong)cVar7" identifier = (cast_expression "(ulong)cVar7" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" if (parenthesized_expression "(((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30))" ( (binary_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)" (parenthesized_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\''))" ( (binary_expression "(uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')" (parenthesized_expression "(uVar3 + 2 < (ulong)param_2[1])" ( (binary_expression "uVar3 + 2 < (ulong)param_2[1]" (binary_expression "uVar3 + 2" identifier + number_literal) < (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) == '\'')" ( (binary_expression "*(char *)(*param_2 + 1 + uVar3) == '\''" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" * (cast_expression "(char *)(*param_2 + 1 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1 + uVar3)" ( (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) + identifier) )))) == (char_literal "'\''" ' escape_sequence ')) ))) )) && (parenthesized_expression "((byte)((int)cVar7 - 0x42U) < 0x30)" ( (binary_expression "(byte)((int)cVar7 - 0x42U) < 0x30" (call_expression "(byte)((int)cVar7 - 0x42U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) < number_literal) ))) )) (compound_statement "{\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" { (if_statement "if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" if (parenthesized_expression "((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0)" ( (binary_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0" (parenthesized_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1)" ( (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1" (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f)" number_literal >> (parenthesized_expression "((ulong)((int)cVar7 - 0x42U) & 0x3f)" ( (binary_expression "(ulong)((int)cVar7 - 0x42U) & 0x3f" (call_expression "(ulong)((int)cVar7 - 0x42U)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)cVar7 - 0x42U)" ( (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) ))) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" { (do_statement "do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));" do (compound_statement "{\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      }" { (if_statement "if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }" if (parenthesized_expression "((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c))" ( (binary_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)" (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" identifier != number_literal) || (binary_expression "DAT_0019d204 != 0" identifier != number_literal)) )) && (parenthesized_expression "(((byte)uVar8 & 0xfd) == 0x3c)" ( (binary_expression "((byte)uVar8 & 0xfd) == 0x3c" (parenthesized_expression "((byte)uVar8 & 0xfd)" ( (binary_expression "(byte)uVar8 & 0xfd" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          return uVar3;\n        }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);" (assignment_expression "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3)" identifier = (binary_expression "(ulong)(char)*(byte *)(*param_2 + uVar3)" (call_expression "(ulong)(char)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(char)" ( identifier ))) * (cast_expression "(byte *)(*param_2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) ;) }) while (parenthesized_expression "((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0))" ( (binary_expression "(0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" (parenthesized_expression "(0x3b < *(byte *)(*param_2 + uVar3))" ( (binary_expression "0x3b < *(byte *)(*param_2 + uVar3)" number_literal < (pointer_expression "*(byte *)(*param_2 + uVar3)" * (cast_expression "(byte *)(*param_2 + uVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) )) || (parenthesized_expression "((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" ( (binary_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0" (parenthesized_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1)" ( (binary_expression "0x800130500000200U >> (uVar8 & 0x3f) & 1" (binary_expression "0x800130500000200U >> (uVar8 & 0x3f)" number_literal >> (parenthesized_expression "(uVar8 & 0x3f)" ( (binary_expression "uVar8 & 0x3f" identifier & number_literal) ))) & number_literal) )) == number_literal) ))) )) ;) (return_statement "return uVar3;" return identifier ;) })) (labeled_statement "LAB_0011d6a0:\n    __s = (char *)xmalloc(1);" statement_identifier : (expression_statement "__s = (char *)xmalloc(1);" (assignment_expression "__s = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;)) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (expression_statement "local_70 = __s;" (assignment_expression "local_70 = __s" identifier = identifier) ;) (if_statement "if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (while_statement "while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" while (parenthesized_expression "(((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')))" ( (parenthesized_expression "((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))" ( (binary_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')" (parenthesized_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t'))))" ( (comma_expression "cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "cVar1 = *(char *)(*param_2 + uVar3)" identifier = (pointer_expression "*(char *)(*param_2 + uVar3)" * (cast_expression "(char *)(*param_2 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar3)" ( (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" * identifier) + identifier) ))))) , (comma_expression "uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "uVar8 = uVar3" identifier = identifier) , (binary_expression "cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((cVar1 != ' ' && (cVar1 != '\t')))" ( (parenthesized_expression "(cVar1 != ' ' && (cVar1 != '\t'))" ( (binary_expression "cVar1 != ' ' && (cVar1 != '\t')" (binary_expression "cVar1 != ' '" identifier != (char_literal "' '" ' character ')) && (parenthesized_expression "(cVar1 != '\t')" ( (binary_expression "cVar1 != '\t'" identifier != (char_literal "'\t'" ' escape_sequence ')) ))) )) ))))) )) && (parenthesized_expression "(cVar1 != ',')" ( (binary_expression "cVar1 != ','" identifier != (char_literal "','" ' character ')) ))) )) )) (compound_statement "{\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" { (if_statement "if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" if (parenthesized_expression "(cVar1 == '<')" ( (binary_expression "cVar1 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }" { (if_statement "if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;" if (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" identifier != number_literal) || (binary_expression "DAT_0019d204 != 0" identifier != number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_78 = 0x3c;" (assignment_expression "local_78 = 0x3c" identifier = number_literal) ;) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" else (compound_statement "{\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" { (expression_statement "local_78 = (long)cVar1;" (assignment_expression "local_78 = (long)cVar1" identifier = (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (switch_statement "switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" switch (parenthesized_expression "(cVar1)" ( identifier )) (compound_statement "{\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" { (case_statement "case '\"':" case (char_literal "'\"'" ' escape_sequence ') :) (case_statement "case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;" case (char_literal "'\''" ' escape_sequence ') : (expression_statement "FUN_00128010(param_3,(long)cVar1);" (call_expression "FUN_00128010(param_3,(long)cVar1)" identifier (argument_list "(param_3,(long)cVar1)" ( identifier , (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" if (parenthesized_expression "(uVar8 < uVar4)" ( (binary_expression "uVar8 < uVar4" identifier < identifier) )) (compound_statement "{\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }" { (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (if_statement "if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" if (parenthesized_expression "(*(char *)(*param_2 + uVar8) != cVar1)" ( (binary_expression "*(char *)(*param_2 + uVar8) != cVar1" (pointer_expression "*(char *)(*param_2 + uVar8)" * (cast_expression "(char *)(*param_2 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar8)" ( (binary_expression "*param_2 + uVar8" (pointer_expression "*param_2" * identifier) + identifier) )))) != identifier) )) (compound_statement "{\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" { (do_statement "do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);" do (compound_statement "{\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                }" { (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar4 <= uVar8) goto LAB_0011d806;" if (parenthesized_expression "(uVar4 <= uVar8)" ( (binary_expression "uVar4 <= uVar8" identifier <= identifier) )) (goto_statement "goto LAB_0011d806;" goto statement_identifier ;)) }) while (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) != cVar1)" ( (binary_expression "*(char *)(*param_2 + 1 + uVar3) != cVar1" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" * (cast_expression "(char *)(*param_2 + 1 + uVar3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 1 + uVar3)" ( (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal) + identifier) )))) != identifier) )) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) })) }) (else_clause "else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" else (compound_statement "{\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" { (labeled_statement "LAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;" statement_identifier : (if_statement "if (uVar8 == uVar4) goto LAB_0011d850;" if (parenthesized_expression "(uVar8 == uVar4)" ( (binary_expression "uVar8 == uVar4" identifier == identifier) )) (goto_statement "goto LAB_0011d850;" goto statement_identifier ;))) (expression_statement "uVar3 = uVar8 + 1;" (assignment_expression "uVar3 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }))) (break_statement "break;" break ;)) (case_statement "default:\n            uVar3 = uVar8;\n            break;" default : (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case '(':" case (char_literal "'('" ' character ') :) (case_statement "case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;" case (char_literal "'['" ' character ') : (if_statement "if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" if (parenthesized_expression "(local_70 < __s)" ( (binary_expression "local_70 < __s" identifier < identifier) )) (compound_statement "{\n              pcVar9 = __s + -1;\n            }" { (expression_statement "pcVar9 = __s + -1;" (assignment_expression "pcVar9 = __s + -1" identifier = (binary_expression "__s + -1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" else (compound_statement "{\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" { (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar9 = (char *)xmalloc(sVar5 + 2);" (assignment_expression "pcVar9 = (char *)xmalloc(sVar5 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 2)" identifier (argument_list "(sVar5 + 2)" ( (binary_expression "sVar5 + 2" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar9 + 1,__s,sVar5 + 1);" (call_expression "memcpy(pcVar9 + 1,__s,sVar5 + 1)" identifier (argument_list "(pcVar9 + 1,__s,sVar5 + 1)" ( (binary_expression "pcVar9 + 1" identifier + number_literal) , identifier , (binary_expression "sVar5 + 1" identifier + number_literal) ))) ;) (expression_statement "free(__s);" (call_expression "free(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "local_70 = pcVar9;" (assignment_expression "local_70 = pcVar9" identifier = identifier) ;) }))) (expression_statement "*pcVar9 = cVar1;" (assignment_expression "*pcVar9 = cVar1" (pointer_expression "*pcVar9" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "__s = pcVar9;" (assignment_expression "__s = pcVar9" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;" case (char_literal "')'" ' character ') : (expression_statement "local_78 = 0x29;" (assignment_expression "local_78 = 0x29" identifier = number_literal) ;) (expression_statement "__s = __s + (cVar7 == '(');" (assignment_expression "__s = __s + (cVar7 == '(')" identifier = (binary_expression "__s + (cVar7 == '(')" identifier + (parenthesized_expression "(cVar7 == '(')" ( (binary_expression "cVar7 == '('" identifier == (char_literal "'('" ' character ')) )))) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');" case (char_literal "']'" ' character ') : (expression_statement "local_78 = 0x5d;" (assignment_expression "local_78 = 0x5d" identifier = number_literal) ;) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" identifier = identifier) ;) (expression_statement "__s = __s + (cVar7 == '[');" (assignment_expression "__s = __s + (cVar7 == '[')" identifier = (binary_expression "__s + (cVar7 == '[')" identifier + (parenthesized_expression "(cVar7 == '[')" ( (binary_expression "cVar7 == '['" identifier == (char_literal "'['" ' character ')) )))) ;)) })) }))) (expression_statement "FUN_00128010(param_3,local_78);" (call_expression "FUN_00128010(param_3,local_78)" identifier (argument_list "(param_3,local_78)" ( identifier , identifier ))) ;) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" identifier = identifier) ;) (if_statement "if ((ulong)param_2[1] <= uVar3) break;" if (parenthesized_expression "((ulong)param_2[1] <= uVar3)" ( (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar7 = *__s;" (assignment_expression "cVar7 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) })) })) (labeled_statement "LAB_0011d850:\n    free(local_70);" statement_identifier : (expression_statement "free(local_70);" (call_expression "free(local_70)" identifier (argument_list "(local_70)" ( identifier ))) ;)) (return_statement "return uVar8;" return identifier ;) })) (if_statement "if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" if (parenthesized_expression "(cVar7 == '%')" ( (binary_expression "cVar7 == '%'" identifier == (char_literal "'%'" ' character ')) )) (compound_statement "{\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" { (if_statement "if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" if (parenthesized_expression "(DAT_0019d208 != 0)" ( (binary_expression "DAT_0019d208 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" { (expression_statement "uVar6 = dcgettext(0,"% operator needs absolute expression",5);" (assignment_expression "uVar6 = dcgettext(0,"% operator needs absolute expression",5)" identifier = (call_expression "dcgettext(0,"% operator needs absolute expression",5)" identifier (argument_list "(0,"% operator needs absolute expression",5)" ( number_literal , (string_literal ""% operator needs absolute expression"" " string_content ") , number_literal )))) ;) (expression_statement "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);" (assignment_expression "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" identifier = (call_expression "(*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(uVar6,uVar3 + 1,param_2,&local_60)" ( identifier , (binary_expression "uVar3 + 1" identifier + number_literal) , identifier , (pointer_expression "&local_60" & identifier) )))) ;) (expression_statement "sprintf(local_58,"%ld",local_60);" (call_expression "sprintf(local_58,"%ld",local_60)" identifier (argument_list "(local_58,"%ld",local_60)" ( identifier , (string_literal ""%ld"" " string_content ") , identifier ))) ;) (expression_statement "FUN_00128040(param_3,local_58);" (call_expression "FUN_00128040(param_3,local_58)" identifier (argument_list "(param_3,local_58)" ( identifier , identifier ))) ;) (return_statement "return uVar3;" return identifier ;) })) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) (if_statement "if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '\"')" ( (binary_expression "cVar7 == '\"'" identifier == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }" { (if_statement "if (DAT_0019d208 == 0) goto LAB_0011d5ec;" if (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) }) (else_clause "else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "(cVar7 == '<')" ( (binary_expression "cVar7 == '<'" identifier == (char_literal "'<'" ' character ')) )) (compound_statement "{\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }" { (if_statement "if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" if (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" { (if_statement "if (DAT_0019d204 != 0) goto LAB_0011d5ec;" if (parenthesized_expression "(DAT_0019d204 != 0)" ( (binary_expression "DAT_0019d204 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0011d5ec;" goto statement_identifier ;)) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;) })) }) (else_clause "else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" else (if_statement "if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" if (parenthesized_expression "((DAT_0019d208 == 0) || (cVar7 != '\''))" ( (binary_expression "(DAT_0019d208 == 0) || (cVar7 != '\'')" (parenthesized_expression "(DAT_0019d208 == 0)" ( (binary_expression "DAT_0019d208 == 0" identifier == number_literal) )) || (parenthesized_expression "(cVar7 != '\'')" ( (binary_expression "cVar7 != '\''" identifier != (char_literal "'\''" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_0011d6a0;" goto statement_identifier ;)))))) (if_statement "if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" if (parenthesized_expression "((DAT_0019d200 == 0) && (cVar7 != '<'))" ( (binary_expression "(DAT_0019d200 == 0) && (cVar7 != '<')" (parenthesized_expression "(DAT_0019d200 == 0)" ( (binary_expression "DAT_0019d200 == 0" identifier == number_literal) )) && (parenthesized_expression "(cVar7 != '<')" ( (binary_expression "cVar7 != '<'" identifier != (char_literal "'<'" ' character ')) ))) )) (compound_statement "{\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" { (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" identifier (argument_list "(param_3,0x22)" ( identifier , number_literal ))) ;) (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier = (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier (argument_list "(uVar3,param_2,param_2 + 1,param_3)" ( identifier , identifier , (binary_expression "param_2 + 1" identifier + number_literal) , identifier )))) ;) (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" identifier (argument_list "(param_3,0x22)" ( identifier , number_literal ))) ;) (return_statement "return uVar3;" return identifier ;) })) (labeled_statement "LAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" statement_identifier : (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier = (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" identifier (argument_list "(uVar3,param_2,param_2 + 1,param_3)" ( identifier , identifier , (binary_expression "param_2 + 1" identifier + number_literal) , identifier )))) ;)) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + IDENT) )))) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) ))) & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) ))) )) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT != (char_literal ' escape_sequence ')) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (char_literal ' character ')) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) ))))) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) ))) )) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case (char_literal ' escape_sequence ') :) (case_statement case (char_literal ' escape_sequence ') : (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + IDENT) )))) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (break_statement break ;)) (case_statement default : (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') :) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (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 ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )))) ;)) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (return_statement return IDENT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , IDENT )))) ;)) (return_statement return IDENT ;) })))
(function_definition "ulong FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)\n\n{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" (type_identifier "ulong") (function_declarator "FUN_0011d540(undefined8 param_1,long *param_2,undefined8 param_3)" (identifier "FUN_0011d540") (parameter_list "(undefined8 param_1,long *param_2,undefined8 param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  char cVar1;\n  code *pcVar2;\n  ulong uVar3;\n  char *__s;\n  ulong uVar4;\n  size_t sVar5;\n  undefined8 uVar6;\n  char cVar7;\n  ulong uVar8;\n  char *pcVar9;\n  long local_78;\n  char *local_70;\n  undefined8 local_60;\n  char local_58 [40];\n  \n  FUN_00128000(param_3);\n  uVar3 = FUN_001280c0(param_1,param_2);\n  pcVar2 = DAT_0019d1f8;\n  if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }\n  cVar7 = *(char *)(*param_2 + uVar3);\n  uVar8 = (ulong)cVar7;\n  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }\n  if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }\n  if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;\n  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }\nLAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n  return uVar3;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "long local_78;" (sized_type_specifier "long" (long "long")) (identifier "local_78") (; ";")) (declaration "char *local_70;" (primitive_type "char") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "char local_58 [40];" (primitive_type "char") (array_declarator "local_58 [40]" (identifier "local_58") ([ "[") (number_literal "40") (] "]")) (; ";")) (expression_statement "FUN_00128000(param_3);" (call_expression "FUN_00128000(param_3)" (identifier "FUN_00128000") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_001280c0(param_1,param_2);" (assignment_expression "uVar3 = FUN_001280c0(param_1,param_2)" (identifier "uVar3") (= "=") (call_expression "FUN_001280c0(param_1,param_2)" (identifier "FUN_001280c0") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pcVar2 = DAT_0019d1f8;" (assignment_expression "pcVar2 = DAT_0019d1f8" (identifier "pcVar2") (= "=") (identifier "DAT_0019d1f8")) (; ";")) (if_statement "if ((ulong)param_2[1] <= uVar3) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((ulong)param_2[1] <= uVar3)" (( "(") (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "cVar7 = *(char *)(*param_2 + uVar3);" (assignment_expression "cVar7 = *(char *)(*param_2 + uVar3)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(*param_2 + uVar3)" (* "*") (cast_expression "(char *)(*param_2 + uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar3)" (( "(") (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar3")) () ")"))))) (; ";")) (expression_statement "uVar8 = (ulong)cVar7;" (assignment_expression "uVar8 = (ulong)cVar7" (identifier "uVar8") (= "=") (cast_expression "(ulong)cVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "cVar7"))) (; ";")) (if_statement "if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)) {\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" (if "if") (parenthesized_expression "(((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30))" (( "(") (binary_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&\n     ((byte)((int)cVar7 - 0x42U) < 0x30)" (parenthesized_expression "((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\''))" (( "(") (binary_expression "(uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')" (parenthesized_expression "(uVar3 + 2 < (ulong)param_2[1])" (( "(") (binary_expression "uVar3 + 2 < (ulong)param_2[1]" (binary_expression "uVar3 + 2" (identifier "uVar3") (+ "+") (number_literal "2")) (< "<") (cast_expression "(ulong)param_2[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) == '\'')" (( "(") (binary_expression "*(char *)(*param_2 + 1 + uVar3) == '\''" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" (* "*") (cast_expression "(char *)(*param_2 + 1 + uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 1 + uVar3)" (( "(") (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "1")) (+ "+") (identifier "uVar3")) () ")")))) (== "==") (char_literal "'\''" (' "'") (escape_sequence "\'") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((byte)((int)cVar7 - 0x42U) < 0x30)" (( "(") (binary_expression "(byte)((int)cVar7 - 0x42U) < 0x30" (call_expression "(byte)((int)cVar7 - 0x42U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((int)cVar7 - 0x42U)" (( "(") (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar7")) (- "-") (number_literal "0x42U")) () ")"))) (< "<") (number_literal "0x30")) () ")"))) () ")")) (compound_statement "{\n    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }\nLAB_0011d6a0:\n    __s = (char *)xmalloc(1);\n    uVar4 = param_2[1];\n    *__s = '\0';\n    uVar8 = uVar3;\n    local_70 = __s;\n    if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }\nLAB_0011d850:\n    free(local_70);\n    return uVar8;\n  }" ({ "{") (if_statement "if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" (if "if") (parenthesized_expression "((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0)" (( "(") (binary_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0" (parenthesized_expression "(0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1)" (( "(") (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1" (binary_expression "0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f)" (number_literal "0x804500008045U") (>> ">>") (parenthesized_expression "((ulong)((int)cVar7 - 0x42U) & 0x3f)" (( "(") (binary_expression "(ulong)((int)cVar7 - 0x42U) & 0x3f" (call_expression "(ulong)((int)cVar7 - 0x42U)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)cVar7 - 0x42U)" (( "(") (binary_expression "(int)cVar7 - 0x42U" (cast_expression "(int)cVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar7")) (- "-") (number_literal "0x42U")) () ")"))) (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));\n      return uVar3;\n    }" ({ "{") (do_statement "do {\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));" (do "do") (compound_statement "{\n        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }\n        uVar3 = uVar3 + 1;\n        FUN_00128010(param_3);\n        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);\n      }" ({ "{") (if_statement "if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {\n          return uVar3;\n        }" (if "if") (parenthesized_expression "((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c))" (( "(") (binary_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)" (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" (( "(") (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" (identifier "DAT_0019d208") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "DAT_0019d204 != 0" (identifier "DAT_0019d204") (!= "!=") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(((byte)uVar8 & 0xfd) == 0x3c)" (( "(") (binary_expression "((byte)uVar8 & 0xfd) == 0x3c" (parenthesized_expression "((byte)uVar8 & 0xfd)" (( "(") (binary_expression "(byte)uVar8 & 0xfd" (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8")) (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "0x3c")) () ")"))) () ")")) (compound_statement "{\n          return uVar3;\n        }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" (identifier "FUN_00128010") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);" (assignment_expression "uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3)" (identifier "uVar8") (= "=") (binary_expression "(ulong)(char)*(byte *)(*param_2 + uVar3)" (call_expression "(ulong)(char)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (cast_expression "(byte *)(*param_2 + uVar3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar3)" (( "(") (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar3")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0))" (( "(") (binary_expression "(0x3b < *(byte *)(*param_2 + uVar3)) ||\n              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" (parenthesized_expression "(0x3b < *(byte *)(*param_2 + uVar3))" (( "(") (binary_expression "0x3b < *(byte *)(*param_2 + uVar3)" (number_literal "0x3b") (< "<") (pointer_expression "*(byte *)(*param_2 + uVar3)" (* "*") (cast_expression "(byte *)(*param_2 + uVar3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar3)" (( "(") (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar3")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0)" (( "(") (binary_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0" (parenthesized_expression "(0x800130500000200U >> (uVar8 & 0x3f) & 1)" (( "(") (binary_expression "0x800130500000200U >> (uVar8 & 0x3f) & 1" (binary_expression "0x800130500000200U >> (uVar8 & 0x3f)" (number_literal "0x800130500000200U") (>> ">>") (parenthesized_expression "(uVar8 & 0x3f)" (( "(") (binary_expression "uVar8 & 0x3f" (identifier "uVar8") (& "&") (number_literal "0x3f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (labeled_statement "LAB_0011d6a0:\n    __s = (char *)xmalloc(1);" (statement_identifier "LAB_0011d6a0") (: ":") (expression_statement "__s = (char *)xmalloc(1);" (assignment_expression "__s = (char *)xmalloc(1)" (identifier "__s") (= "=") (cast_expression "(char *)xmalloc(1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(1)" (identifier "xmalloc") (argument_list "(1)" (( "(") (number_literal "1") () ")"))))) (; ";"))) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" (identifier "uVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*__s = '\0';" (assignment_expression "*__s = '\0'" (pointer_expression "*__s" (* "*") (identifier "__s")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" (identifier "uVar8") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_70 = __s;" (assignment_expression "local_70 = __s" (identifier "local_70") (= "=") (identifier "__s")) (; ";")) (if_statement "if (uVar3 < uVar4) {\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      cVar7 = '\0';\n      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }\n    }" ({ "{") (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" (identifier "cVar7") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (while_statement "while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" (while "while") (parenthesized_expression "(((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')))" (( "(") (parenthesized_expression "((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))" (( "(") (binary_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ',')" (parenthesized_expression "(cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t'))))" (( "(") (comma_expression "cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "cVar1 = *(char *)(*param_2 + uVar3)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(*param_2 + uVar3)" (* "*") (cast_expression "(char *)(*param_2 + uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar3)" (( "(") (binary_expression "*param_2 + uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar3")) () ")"))))) (, ",") (comma_expression "uVar8 = uVar3, cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (assignment_expression "uVar8 = uVar3" (identifier "uVar8") (= "=") (identifier "uVar3")) (, ",") (binary_expression "cVar7 != '\0' ||\n              ((cVar1 != ' ' && (cVar1 != '\t')))" (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "((cVar1 != ' ' && (cVar1 != '\t')))" (( "(") (parenthesized_expression "(cVar1 != ' ' && (cVar1 != '\t'))" (( "(") (binary_expression "cVar1 != ' ' && (cVar1 != '\t')" (binary_expression "cVar1 != ' '" (identifier "cVar1") (!= "!=") (char_literal "' '" (' "'") (character " ") (' "'"))) (&& "&&") (parenthesized_expression "(cVar1 != '\t')" (( "(") (binary_expression "cVar1 != '\t'" (identifier "cVar1") (!= "!=") (char_literal "'\t'" (' "'") (escape_sequence "\t") (' "'"))) () ")"))) () ")")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(cVar1 != ',')" (( "(") (binary_expression "cVar1 != ','" (identifier "cVar1") (!= "!=") (char_literal "','" (' "'") (character ",") (' "'"))) () ")"))) () ")")) () ")")) (compound_statement "{\n        if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }\n        FUN_00128010(param_3,local_78);\n        uVar8 = uVar3;\n        if ((ulong)param_2[1] <= uVar3) break;\n        cVar7 = *__s;\n      }" ({ "{") (if_statement "if (cVar1 == '<') {\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }\n        else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" (if "if") (parenthesized_expression "(cVar1 == '<')" (( "(") (binary_expression "cVar1 == '<'" (identifier "cVar1") (== "==") (char_literal "'<'" (' "'") (character "<") (' "'"))) () ")")) (compound_statement "{\n          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;\n          local_78 = 0x3c;\n          uVar3 = uVar3 + 1;\n        }" ({ "{") (if_statement "if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;" (if "if") (parenthesized_expression "(DAT_0019d208 != 0 || DAT_0019d204 != 0)" (( "(") (binary_expression "DAT_0019d208 != 0 || DAT_0019d204 != 0" (binary_expression "DAT_0019d208 != 0" (identifier "DAT_0019d208") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "DAT_0019d204 != 0" (identifier "DAT_0019d204") (!= "!=") (number_literal "0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_78 = 0x3c;" (assignment_expression "local_78 = 0x3c" (identifier "local_78") (= "=") (number_literal "0x3c")) (; ";")) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" (else "else") (compound_statement "{\n          local_78 = (long)cVar1;\n          uVar8 = uVar3 + 1;\n          switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }\n        }" ({ "{") (expression_statement "local_78 = (long)cVar1;" (assignment_expression "local_78 = (long)cVar1" (identifier "local_78") (= "=") (cast_expression "(long)cVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "cVar1"))) (; ";")) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (switch_statement "switch(cVar1) {\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" (switch "switch") (parenthesized_expression "(cVar1)" (( "(") (identifier "cVar1") () ")")) (compound_statement "{\n          case '\"':\n          case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;\n          default:\n            uVar3 = uVar8;\n            break;\n          case '(':\n          case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;\n          case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;\n          case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');\n          }" ({ "{") (case_statement "case '\"':" (case "case") (char_literal "'\"'" (' "'") (escape_sequence "\"") (' "'")) (: ":")) (case_statement "case '\'':\n            FUN_00128010(param_3,(long)cVar1);\n            uVar4 = param_2[1];\n            if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }\n            break;" (case "case") (char_literal "'\''" (' "'") (escape_sequence "\'") (' "'")) (: ":") (expression_statement "FUN_00128010(param_3,(long)cVar1);" (call_expression "FUN_00128010(param_3,(long)cVar1)" (identifier "FUN_00128010") (argument_list "(param_3,(long)cVar1)" (( "(") (identifier "param_3") (, ",") (cast_expression "(long)cVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "cVar1")) () ")"))) (; ";")) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" (identifier "uVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar8 < uVar4) {\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }\n            else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" (if "if") (parenthesized_expression "(uVar8 < uVar4)" (( "(") (binary_expression "uVar8 < uVar4" (identifier "uVar8") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n              uVar3 = uVar3 + 2;\n              if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }\n            }" ({ "{") (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 2" (identifier "uVar3") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (*(char *)(*param_2 + uVar8) != cVar1) {\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" (if "if") (parenthesized_expression "(*(char *)(*param_2 + uVar8) != cVar1)" (( "(") (binary_expression "*(char *)(*param_2 + uVar8) != cVar1" (pointer_expression "*(char *)(*param_2 + uVar8)" (* "*") (cast_expression "(char *)(*param_2 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar8)" (( "(") (binary_expression "*param_2 + uVar8" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar8")) () ")")))) (!= "!=") (identifier "cVar1")) () ")")) (compound_statement "{\n                do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);\n                uVar3 = uVar3 + 2;\n              }" ({ "{") (do_statement "do {\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);" (do "do") (compound_statement "{\n                  uVar3 = uVar8;\n                  uVar8 = uVar3 + 1;\n                  FUN_00128010(param_3);\n                  uVar4 = param_2[1];\n                  if (uVar4 <= uVar8) goto LAB_0011d806;\n                }" ({ "{") (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar8 = uVar3 + 1;" (assignment_expression "uVar8 = uVar3 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00128010(param_3);" (call_expression "FUN_00128010(param_3)" (identifier "FUN_00128010") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar4 = param_2[1];" (assignment_expression "uVar4 = param_2[1]" (identifier "uVar4") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar4 <= uVar8) goto LAB_0011d806;" (if "if") (parenthesized_expression "(uVar4 <= uVar8)" (( "(") (binary_expression "uVar4 <= uVar8" (identifier "uVar4") (<= "<=") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_0011d806;" (goto "goto") (statement_identifier "LAB_0011d806") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*(char *)(*param_2 + 1 + uVar3) != cVar1)" (( "(") (binary_expression "*(char *)(*param_2 + 1 + uVar3) != cVar1" (pointer_expression "*(char *)(*param_2 + 1 + uVar3)" (* "*") (cast_expression "(char *)(*param_2 + 1 + uVar3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 1 + uVar3)" (( "(") (binary_expression "*param_2 + 1 + uVar3" (binary_expression "*param_2 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "1")) (+ "+") (identifier "uVar3")) () ")")))) (!= "!=") (identifier "cVar1")) () ")")) (; ";")) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 2" (identifier "uVar3") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" (else "else") (compound_statement "{\nLAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;\n              uVar3 = uVar8 + 1;\n            }" ({ "{") (labeled_statement "LAB_0011d806:\n              if (uVar8 == uVar4) goto LAB_0011d850;" (statement_identifier "LAB_0011d806") (: ":") (if_statement "if (uVar8 == uVar4) goto LAB_0011d850;" (if "if") (parenthesized_expression "(uVar8 == uVar4)" (( "(") (binary_expression "uVar8 == uVar4" (identifier "uVar8") (== "==") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_0011d850;" (goto "goto") (statement_identifier "LAB_0011d850") (; ";")))) (expression_statement "uVar3 = uVar8 + 1;" (assignment_expression "uVar3 = uVar8 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n            uVar3 = uVar8;\n            break;" (default "default") (: ":") (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case '(':" (case "case") (char_literal "'('" (' "'") (character "(") (' "'")) (: ":")) (case_statement "case '[':\n            if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }\n            *pcVar9 = cVar1;\n            uVar3 = uVar8;\n            __s = pcVar9;\n            break;" (case "case") (char_literal "'['" (' "'") (character "[") (' "'")) (: ":") (if_statement "if (local_70 < __s) {\n              pcVar9 = __s + -1;\n            }\n            else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" (if "if") (parenthesized_expression "(local_70 < __s)" (( "(") (binary_expression "local_70 < __s" (identifier "local_70") (< "<") (identifier "__s")) () ")")) (compound_statement "{\n              pcVar9 = __s + -1;\n            }" ({ "{") (expression_statement "pcVar9 = __s + -1;" (assignment_expression "pcVar9 = __s + -1" (identifier "pcVar9") (= "=") (binary_expression "__s + -1" (identifier "__s") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" (else "else") (compound_statement "{\n              sVar5 = strlen(__s);\n              pcVar9 = (char *)xmalloc(sVar5 + 2);\n              memcpy(pcVar9 + 1,__s,sVar5 + 1);\n              free(__s);\n              local_70 = pcVar9;\n            }" ({ "{") (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar9 = (char *)xmalloc(sVar5 + 2);" (assignment_expression "pcVar9 = (char *)xmalloc(sVar5 + 2)" (identifier "pcVar9") (= "=") (cast_expression "(char *)xmalloc(sVar5 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar5 + 2)" (identifier "xmalloc") (argument_list "(sVar5 + 2)" (( "(") (binary_expression "sVar5 + 2" (identifier "sVar5") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "memcpy(pcVar9 + 1,__s,sVar5 + 1);" (call_expression "memcpy(pcVar9 + 1,__s,sVar5 + 1)" (identifier "memcpy") (argument_list "(pcVar9 + 1,__s,sVar5 + 1)" (( "(") (binary_expression "pcVar9 + 1" (identifier "pcVar9") (+ "+") (number_literal "1")) (, ",") (identifier "__s") (, ",") (binary_expression "sVar5 + 1" (identifier "sVar5") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "free(__s);" (call_expression "free(__s)" (identifier "free") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "local_70 = pcVar9;" (assignment_expression "local_70 = pcVar9" (identifier "local_70") (= "=") (identifier "pcVar9")) (; ";")) (} "}")))) (expression_statement "*pcVar9 = cVar1;" (assignment_expression "*pcVar9 = cVar1" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (= "=") (identifier "cVar1")) (; ";")) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "__s = pcVar9;" (assignment_expression "__s = pcVar9" (identifier "__s") (= "=") (identifier "pcVar9")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case ')':\n            local_78 = 0x29;\n            __s = __s + (cVar7 == '(');\n            uVar3 = uVar8;\n            break;" (case "case") (char_literal "')'" (' "'") (character ")") (' "'")) (: ":") (expression_statement "local_78 = 0x29;" (assignment_expression "local_78 = 0x29" (identifier "local_78") (= "=") (number_literal "0x29")) (; ";")) (expression_statement "__s = __s + (cVar7 == '(');" (assignment_expression "__s = __s + (cVar7 == '(')" (identifier "__s") (= "=") (binary_expression "__s + (cVar7 == '(')" (identifier "__s") (+ "+") (parenthesized_expression "(cVar7 == '(')" (( "(") (binary_expression "cVar7 == '('" (identifier "cVar7") (== "==") (char_literal "'('" (' "'") (character "(") (' "'"))) () ")")))) (; ";")) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case ']':\n            local_78 = 0x5d;\n            uVar3 = uVar8;\n            __s = __s + (cVar7 == '[');" (case "case") (char_literal "']'" (' "'") (character "]") (' "'")) (: ":") (expression_statement "local_78 = 0x5d;" (assignment_expression "local_78 = 0x5d" (identifier "local_78") (= "=") (number_literal "0x5d")) (; ";")) (expression_statement "uVar3 = uVar8;" (assignment_expression "uVar3 = uVar8" (identifier "uVar3") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "__s = __s + (cVar7 == '[');" (assignment_expression "__s = __s + (cVar7 == '[')" (identifier "__s") (= "=") (binary_expression "__s + (cVar7 == '[')" (identifier "__s") (+ "+") (parenthesized_expression "(cVar7 == '[')" (( "(") (binary_expression "cVar7 == '['" (identifier "cVar7") (== "==") (char_literal "'['" (' "'") (character "[") (' "'"))) () ")")))) (; ";"))) (} "}"))) (} "}")))) (expression_statement "FUN_00128010(param_3,local_78);" (call_expression "FUN_00128010(param_3,local_78)" (identifier "FUN_00128010") (argument_list "(param_3,local_78)" (( "(") (identifier "param_3") (, ",") (identifier "local_78") () ")"))) (; ";")) (expression_statement "uVar8 = uVar3;" (assignment_expression "uVar8 = uVar3" (identifier "uVar8") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((ulong)param_2[1] <= uVar3) break;" (if "if") (parenthesized_expression "((ulong)param_2[1] <= uVar3)" (( "(") (binary_expression "(ulong)param_2[1] <= uVar3" (cast_expression "(ulong)param_2[1]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (identifier "uVar3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "cVar7 = *__s;" (assignment_expression "cVar7 = *__s" (identifier "cVar7") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0011d850:\n    free(local_70);" (statement_identifier "LAB_0011d850") (: ":") (expression_statement "free(local_70);" (call_expression "free(local_70)" (identifier "free") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";"))) (return_statement "return uVar8;" (return "return") (identifier "uVar8") (; ";")) (} "}"))) (if_statement "if (cVar7 == '%') {\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" (if "if") (parenthesized_expression "(cVar7 == '%')" (( "(") (binary_expression "cVar7 == '%'" (identifier "cVar7") (== "==") (char_literal "'%'" (' "'") (character "%") (' "'"))) () ")")) (compound_statement "{\n    if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }\n    goto LAB_0011d6a0;\n  }" ({ "{") (if_statement "if (DAT_0019d208 != 0) {\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" (if "if") (parenthesized_expression "(DAT_0019d208 != 0)" (( "(") (binary_expression "DAT_0019d208 != 0" (identifier "DAT_0019d208") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = dcgettext(0,"% operator needs absolute expression",5);\n      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);\n      sprintf(local_58,"%ld",local_60);\n      FUN_00128040(param_3,local_58);\n      return uVar3;\n    }" ({ "{") (expression_statement "uVar6 = dcgettext(0,"% operator needs absolute expression",5);" (assignment_expression "uVar6 = dcgettext(0,"% operator needs absolute expression",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"% operator needs absolute expression",5)" (identifier "dcgettext") (argument_list "(0,"% operator needs absolute expression",5)" (( "(") (number_literal "0") (, ",") (string_literal ""% operator needs absolute expression"" (" """) (string_content "% operator needs absolute expression") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);" (assignment_expression "uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" (identifier "uVar3") (= "=") (call_expression "(*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(uVar6,uVar3 + 1,param_2,&local_60)" (( "(") (identifier "uVar6") (, ",") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")")))) (; ";")) (expression_statement "sprintf(local_58,"%ld",local_60);" (call_expression "sprintf(local_58,"%ld",local_60)" (identifier "sprintf") (argument_list "(local_58,"%ld",local_60)" (( "(") (identifier "local_58") (, ",") (string_literal ""%ld"" (" """) (string_content "%ld") (" """)) (, ",") (identifier "local_60") () ")"))) (; ";")) (expression_statement "FUN_00128040(param_3,local_58);" (call_expression "FUN_00128040(param_3,local_58)" (identifier "FUN_00128040") (argument_list "(param_3,local_58)" (( "(") (identifier "param_3") (, ",") (identifier "local_58") () ")"))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (goto_statement "goto LAB_0011d6a0;" (goto "goto") (statement_identifier "LAB_0011d6a0") (; ";")) (} "}"))) (if_statement "if (cVar7 == '\"') {\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }\n  else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" (if "if") (parenthesized_expression "(cVar7 == '\"')" (( "(") (binary_expression "cVar7 == '\"'" (identifier "cVar7") (== "==") (char_literal "'\"'" (' "'") (escape_sequence "\"") (' "'"))) () ")")) (compound_statement "{\n    if (DAT_0019d208 == 0) goto LAB_0011d5ec;\n  }" ({ "{") (if_statement "if (DAT_0019d208 == 0) goto LAB_0011d5ec;" (if "if") (parenthesized_expression "(DAT_0019d208 == 0)" (( "(") (binary_expression "DAT_0019d208 == 0" (identifier "DAT_0019d208") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011d5ec;" (goto "goto") (statement_identifier "LAB_0011d5ec") (; ";"))) (} "}")) (else_clause "else if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" (else "else") (if_statement "if (cVar7 == '<') {\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }\n  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" (if "if") (parenthesized_expression "(cVar7 == '<')" (( "(") (binary_expression "cVar7 == '<'" (identifier "cVar7") (== "==") (char_literal "'<'" (' "'") (character "<") (' "'"))) () ")")) (compound_statement "{\n    if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }\n  }" ({ "{") (if_statement "if (DAT_0019d208 == 0) {\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" (if "if") (parenthesized_expression "(DAT_0019d208 == 0)" (( "(") (binary_expression "DAT_0019d208 == 0" (identifier "DAT_0019d208") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_0019d204 != 0) goto LAB_0011d5ec;\n      goto LAB_0011d6a0;\n    }" ({ "{") (if_statement "if (DAT_0019d204 != 0) goto LAB_0011d5ec;" (if "if") (parenthesized_expression "(DAT_0019d204 != 0)" (( "(") (binary_expression "DAT_0019d204 != 0" (identifier "DAT_0019d204") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0011d5ec;" (goto "goto") (statement_identifier "LAB_0011d5ec") (; ";"))) (goto_statement "goto LAB_0011d6a0;" (goto "goto") (statement_identifier "LAB_0011d6a0") (; ";")) (} "}"))) (} "}")) (else_clause "else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" (else "else") (if_statement "if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;" (if "if") (parenthesized_expression "((DAT_0019d208 == 0) || (cVar7 != '\''))" (( "(") (binary_expression "(DAT_0019d208 == 0) || (cVar7 != '\'')" (parenthesized_expression "(DAT_0019d208 == 0)" (( "(") (binary_expression "DAT_0019d208 == 0" (identifier "DAT_0019d208") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(cVar7 != '\'')" (( "(") (binary_expression "cVar7 != '\''" (identifier "cVar7") (!= "!=") (char_literal "'\''" (' "'") (escape_sequence "\'") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_0011d6a0;" (goto "goto") (statement_identifier "LAB_0011d6a0") (; ";"))))))) (if_statement "if ((DAT_0019d200 == 0) && (cVar7 != '<')) {\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((DAT_0019d200 == 0) && (cVar7 != '<'))" (( "(") (binary_expression "(DAT_0019d200 == 0) && (cVar7 != '<')" (parenthesized_expression "(DAT_0019d200 == 0)" (( "(") (binary_expression "DAT_0019d200 == 0" (identifier "DAT_0019d200") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(cVar7 != '<')" (( "(") (binary_expression "cVar7 != '<'" (identifier "cVar7") (!= "!=") (char_literal "'<'" (' "'") (character "<") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    FUN_00128010(param_3,0x22);\n    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);\n    FUN_00128010(param_3,0x22);\n    return uVar3;\n  }" ({ "{") (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" (identifier "FUN_00128010") (argument_list "(param_3,0x22)" (( "(") (identifier "param_3") (, ",") (number_literal "0x22") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" (identifier "FUN_0011d320") (argument_list "(uVar3,param_2,param_2 + 1,param_3)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "FUN_00128010(param_3,0x22);" (call_expression "FUN_00128010(param_3,0x22)" (identifier "FUN_00128010") (argument_list "(param_3,0x22)" (( "(") (identifier "param_3") (, ",") (number_literal "0x22") () ")"))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (labeled_statement "LAB_0011d5ec:\n  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (statement_identifier "LAB_0011d5ec") (: ":") (expression_statement "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);" (assignment_expression "uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_0011d320(uVar3,param_2,param_2 + 1,param_3)" (identifier "FUN_0011d320") (argument_list "(uVar3,param_2,param_2 + 1,param_3)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (identifier "param_3") () ")")))) (; ";"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

size_t function_1(size_t idx,type_1 *in,type_1 *out)

{
  char var_11;
  type_2 *p_Var2;
  type_3 var_3;
  char *var_14;
  type_3 var_9;
  size_t var_16;
  char var_10;
  type_3 var_12;
  size_t var_7;
  char *var_18;
  size_t local_78;
  char *var_13;
  type_4 val;
  char buf [20];
  
  var_1(out);
  var_3 = var_2(idx,in);
  p_Var2 = macro_expr;
  if (in->len <= var_3) {
    return var_3;
  }
  var_10 = in->ptr[var_3];
  var_7 = (size_t)var_10;
  if (((var_3 + 2 < in->len) && (in->ptr[var_3 + 1] == '\'')) && ((type_5)((int)var_10 - 0x42U) < 0x30)
     ) {
    if ((0x804500008045U >> ((type_3)((int)var_10 - 0x42U) & 0x3f) & 1) != 0) {
      do {
        if ((var_4 != 0 || var_5 != 0) && (((type_5)var_7 & 0xfd) == 0x3c)) {
          return var_3;
        }
        var_3 = var_3 + 1;
        var_6(out,var_7);
        var_7 = (size_t)in->ptr[var_3];
      } while ((0x3b < (type_5)in->ptr[var_3]) || ((0x800130500000200U >> (var_7 & 0x3f) & 1) == 0));
      return var_3;
    }
LAB_0011d6a0:
    var_14 = (char *)var_8(1);
    var_9 = in->len;
    *var_14 = '\0';
    var_12 = var_3;
    var_13 = var_14;
    if (var_3 < var_9) {
      var_10 = '\0';
      while (((var_11 = in->ptr[var_3], var_12 = var_3, var_10 != '\0' ||
              ((var_11 != ' ' && (var_11 != '\t')))) && (var_11 != ','))) {
        if (var_11 == '<') {
          if (var_4 != 0 || var_5 != 0) break;
          local_78 = 0x3c;
          var_3 = var_3 + 1;
        }
        else {
          local_78 = (size_t)var_11;
          var_12 = var_3 + 1;
          switch(var_11) {
          case '\"':
          case '\'':
            var_6(out,(long)var_11);
            var_9 = in->len;
            if (var_12 < var_9) {
              var_3 = var_3 + 2;
              var_10 = in->ptr[var_12];
              if (var_10 != var_11) {
                do {
                  var_3 = var_12;
                  var_12 = var_3 + 1;
                  var_6(out,(long)var_10);
                  var_9 = in->len;
                  if (var_9 <= var_12) goto LAB_0011d806;
                  var_10 = in->ptr[var_3 + 1];
                } while (var_10 != var_11);
                var_3 = var_3 + 2;
              }
            }
            else {
LAB_0011d806:
              if (var_12 == var_9) goto LAB_0011d850;
              var_3 = var_12 + 1;
            }
            break;
          default:
            var_3 = var_12;
            break;
          case '(':
          case '[':
            if (var_13 < var_14) {
              var_18 = var_14 + -1;
            }
            else {
              var_16 = var_15(var_14);
              var_18 = (char *)var_8(var_16 + 2);
              var_17(var_18 + 1,var_14,var_16 + 1);
              var_19(var_14);
              var_13 = var_18;
            }
            *var_18 = var_11;
            var_3 = var_12;
            var_14 = var_18;
            break;
          case ')':
            local_78 = 0x29;
            var_14 = var_14 + (var_10 == '(');
            var_3 = var_12;
            break;
          case ']':
            local_78 = 0x5d;
            var_3 = var_12;
            var_14 = var_14 + (var_10 == '[');
          }
        }
        var_6(out,local_78);
        var_12 = var_3;
        if (in->len <= var_3) break;
        var_10 = *var_14;
      }
    }
LAB_0011d850:
    var_19(var_13);
    return var_12;
  }
  if (var_10 == '%') {
    if (var_4 != 0) {
      var_14 = (char *)var_20(0,"% operator needs absolute expression",5);
      var_7 = (*p_Var2)(var_14,var_3 + 1,in,&val);
      var_21(buf,"%ld",val);
      var_22(out,buf);
      return var_7;
    }
    goto LAB_0011d6a0;
  }
  if (var_10 == '\"') {
    if (var_4 == 0) goto LAB_0011d5ec;
  }
  else if (var_10 == '<') {
    if (var_4 == 0) {
      if (var_5 != 0) goto LAB_0011d5ec;
      goto LAB_0011d6a0;
    }
  }
  else if ((var_4 == 0) || (var_10 != '\'')) goto LAB_0011d6a0;
  if ((var_23 == 0) && (var_10 != '<')) {
    var_6(out,0x22);
    var_7 = var_24(var_3,in,(type_1 *)&in->len,out);
    var_6(out,0x22);
    return var_7;
  }
LAB_0011d5ec:
  var_7 = var_24(var_3,in,(type_1 *)&in->len,out);
  return var_7;
}


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

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

{
  char cVar1;
  code *pcVar2;
  ulong uVar3;
  char *__s;
  ulong uVar4;
  size_t sVar5;
  undefined8 uVar6;
  char cVar7;
  ulong uVar8;
  char *pcVar9;
  long local_78;
  char *local_70;
  undefined8 local_60;
  char local_58 [40];
  
  FUN_00128000(param_3);
  uVar3 = FUN_001280c0(param_1,param_2);
  pcVar2 = DAT_0019d1f8;
  if ((ulong)param_2[1] <= uVar3) {
    return uVar3;
  }
  cVar7 = *(char *)(*param_2 + uVar3);
  uVar8 = (ulong)cVar7;
  if (((uVar3 + 2 < (ulong)param_2[1]) && (*(char *)(*param_2 + 1 + uVar3) == '\'')) &&
     ((byte)((int)cVar7 - 0x42U) < 0x30)) {
    if ((0x804500008045U >> ((ulong)((int)cVar7 - 0x42U) & 0x3f) & 1) != 0) {
      do {
        if ((DAT_0019d208 != 0 || DAT_0019d204 != 0) && (((byte)uVar8 & 0xfd) == 0x3c)) {
          return uVar3;
        }
        uVar3 = uVar3 + 1;
        FUN_00128010(param_3);
        uVar8 = (ulong)(char)*(byte *)(*param_2 + uVar3);
      } while ((0x3b < *(byte *)(*param_2 + uVar3)) ||
              ((0x800130500000200U >> (uVar8 & 0x3f) & 1) == 0));
      return uVar3;
    }
LAB_0011d6a0:
    __s = (char *)xmalloc(1);
    uVar4 = param_2[1];
    *__s = '\0';
    uVar8 = uVar3;
    local_70 = __s;
    if (uVar3 < uVar4) {
      cVar7 = '\0';
      while (((cVar1 = *(char *)(*param_2 + uVar3), uVar8 = uVar3, cVar7 != '\0' ||
              ((cVar1 != ' ' && (cVar1 != '\t')))) && (cVar1 != ','))) {
        if (cVar1 == '<') {
          if (DAT_0019d208 != 0 || DAT_0019d204 != 0) break;
          local_78 = 0x3c;
          uVar3 = uVar3 + 1;
        }
        else {
          local_78 = (long)cVar1;
          uVar8 = uVar3 + 1;
          switch(cVar1) {
          case '\"':
          case '\'':
            FUN_00128010(param_3,(long)cVar1);
            uVar4 = param_2[1];
            if (uVar8 < uVar4) {
              uVar3 = uVar3 + 2;
              if (*(char *)(*param_2 + uVar8) != cVar1) {
                do {
                  uVar3 = uVar8;
                  uVar8 = uVar3 + 1;
                  FUN_00128010(param_3);
                  uVar4 = param_2[1];
                  if (uVar4 <= uVar8) goto LAB_0011d806;
                } while (*(char *)(*param_2 + 1 + uVar3) != cVar1);
                uVar3 = uVar3 + 2;
              }
            }
            else {
LAB_0011d806:
              if (uVar8 == uVar4) goto LAB_0011d850;
              uVar3 = uVar8 + 1;
            }
            break;
          default:
            uVar3 = uVar8;
            break;
          case '(':
          case '[':
            if (local_70 < __s) {
              pcVar9 = __s + -1;
            }
            else {
              sVar5 = strlen(__s);
              pcVar9 = (char *)xmalloc(sVar5 + 2);
              memcpy(pcVar9 + 1,__s,sVar5 + 1);
              free(__s);
              local_70 = pcVar9;
            }
            *pcVar9 = cVar1;
            uVar3 = uVar8;
            __s = pcVar9;
            break;
          case ')':
            local_78 = 0x29;
            __s = __s + (cVar7 == '(');
            uVar3 = uVar8;
            break;
          case ']':
            local_78 = 0x5d;
            uVar3 = uVar8;
            __s = __s + (cVar7 == '[');
          }
        }
        FUN_00128010(param_3,local_78);
        uVar8 = uVar3;
        if ((ulong)param_2[1] <= uVar3) break;
        cVar7 = *__s;
      }
    }
LAB_0011d850:
    free(local_70);
    return uVar8;
  }
  if (cVar7 == '%') {
    if (DAT_0019d208 != 0) {
      uVar6 = dcgettext(0,"% operator needs absolute expression",5);
      uVar3 = (*pcVar2)(uVar6,uVar3 + 1,param_2,&local_60);
      sprintf(local_58,"%ld",local_60);
      FUN_00128040(param_3,local_58);
      return uVar3;
    }
    goto LAB_0011d6a0;
  }
  if (cVar7 == '\"') {
    if (DAT_0019d208 == 0) goto LAB_0011d5ec;
  }
  else if (cVar7 == '<') {
    if (DAT_0019d208 == 0) {
      if (DAT_0019d204 != 0) goto LAB_0011d5ec;
      goto LAB_0011d6a0;
    }
  }
  else if ((DAT_0019d208 == 0) || (cVar7 != '\'')) goto LAB_0011d6a0;
  if ((DAT_0019d200 == 0) && (cVar7 != '<')) {
    FUN_00128010(param_3,0x22);
    uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);
    FUN_00128010(param_3,0x22);
    return uVar3;
  }
LAB_0011d5ec:
  uVar3 = FUN_0011d320(uVar3,param_2,param_2 + 1,param_3);
  return uVar3;
}

