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

int __regparm3
demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)

{
  char cVar1;
  int index;
  int iVar2;
  size_t __n;
  char *pcVar3;
  char *pcVar4;
  int iVar5;
  int local_50;
  char num [2];
  string temp;
  string last_name;
  
  index = register_Btype(work);
  if ((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)) {
    isfuncname = work->destructor & 1;
  }
  pcVar3 = *mangled;
  temp.e = (char *)0x0;
  temp.p = (char *)0x0;
  temp.b = (char *)0x0;
  last_name.e = (char *)0x0;
  last_name.p = (char *)0x0;
  last_name.b = (char *)0x0;
  if (*pcVar3 == 'K') {
    *mangled = pcVar3 + 1;
    iVar2 = consume_count_with_underscores(mangled);
    if ((iVar2 != -1) && (iVar2 < work->numk)) {
      local_50 = 1;
      pcVar3 = work->ktypevec[iVar2];
      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {
        string_append(&temp,pcVar3);
      }
      goto LAB_001d1d40;
    }
  }
  else {
    cVar1 = pcVar3[1];
    if ('0' < cVar1) {
      if (cVar1 < ':') {
        num[1] = '\0';
        num[0] = cVar1;
        iVar2 = strtol(num,(char **)0x0,10);
        *mangled = *mangled + ((*mangled)[2] == '_') + 2;
      }
      else {
        if (cVar1 != '_') {
          return 0;
        }
        *mangled = pcVar3 + 1;
        iVar2 = consume_count_with_underscores(mangled);
        if (iVar2 == -1) {
          return 0;
        }
      }
      local_50 = 1;
      for (; 0 < iVar2; iVar2 = iVar2 + -1) {
        pcVar4 = *mangled;
        cVar1 = *pcVar4;
        pcVar3 = pcVar4;
        if (cVar1 == '_') {
          pcVar3 = pcVar4 + 1;
          *mangled = pcVar3;
          cVar1 = pcVar4[1];
        }
        last_name.p = last_name.b;
        if (cVar1 == 't') {
          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);
          if (local_50 != 0) goto LAB_001d1cf0;
LAB_001d1f20:
          local_50 = 0;
          break;
        }
        if (cVar1 == 'K') {
          *mangled = pcVar3 + 1;
          iVar5 = consume_count_with_underscores(mangled);
          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;
          pcVar3 = work->ktypevec[iVar5];
          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {
            string_append(&temp,pcVar3);
          }
        }
        else {
          if ((work->options & 0x2000U) == 0) {
            if (last_name.b != (char *)0x0) {
              free(last_name.b);
              last_name.p = (char *)0x0;
              last_name.e = (char *)0x0;
            }
            last_name.b = last_name.p;
            local_50 = do_type(work,mangled,&last_name);
            if (local_50 == 0) goto LAB_001d1f20;
            string_appends(&temp,&last_name,(string *)last_name.p);
          }
          else {
            __n = consume_count(mangled);
            if (__n == 0xffffffff) goto LAB_001d1f20;
            pcVar3 = (char *)xmalloc(__n + 1);
            memcpy(pcVar3,*mangled,__n);
            pcVar3[__n] = '\0';
            pcVar4 = cplus_demangle(pcVar3,work->options);
            if (pcVar4 == (char *)0x0) {
              pcVar4 = *mangled;
              if (__n != 0) {
                string_appendn(&temp,pcVar4,__n);
                pcVar4 = *mangled;
              }
            }
            else {
              if (*pcVar4 != '\0') {
                string_append(&temp,pcVar4);
              }
              free(pcVar4);
              pcVar4 = *mangled;
            }
            free(pcVar3);
            *mangled = pcVar4 + __n;
          }
LAB_001d1cf0:
          iVar5 = (int)temp.p - (int)temp.b;
          if (temp.b == temp.p) {
            iVar5 = 0;
          }
          remember_Ktype(work,temp.b,iVar5);
        }
        if (iVar2 != 1) {
          pcVar3 = "::";
          if ((work->options & 4) != 0) {
            pcVar3 = ".";
          }
          string_append(&temp,pcVar3);
        }
      }
LAB_001d1d40:
      iVar2 = (int)temp.p - (int)temp.b;
      if (temp.b == temp.p) {
        iVar2 = 0;
      }
      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);
      if (isfuncname != 0) {
        pcVar3 = ".";
        if ((work->options & 4) == 0) {
          pcVar3 = "::";
        }
        string_append(&temp,pcVar3);
        if ((work->destructor & 1) != 0) {
          string_append(&temp,"~");
        }
        string_appends(&temp,&last_name,(string *)last_name.p);
      }
      if (append == 0) {
        if (result->b != result->p) {
          pcVar3 = ".";
          if ((work->options & 4) == 0) {
            pcVar3 = "::";
          }
          string_append(&temp,pcVar3);
        }
        if (temp.b != temp.p) {
          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);
        }
      }
      else {
        string_appends(result,&temp,(string *)temp.p);
      }
      if (last_name.b != (char *)0x0) {
        free(last_name.b);
        last_name.p = (char *)0x0;
        last_name.e = (char *)0x0;
        last_name.b = (char *)0x0;
      }
      if (temp.b != (char *)0x0) {
        free(temp.b);
        return local_50;
      }
      return local_50;
    }
  }
  return 0;
}



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

int __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  size_t __n;
  void *__dest;
  char *pcVar5;
  int iVar6;
  int local_50;
  char local_36;
  undefined1 local_35;
  void *local_34;
  void *local_30;
  undefined4 local_2c;
  void *local_28;
  void *local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1d1b5d;
  uVar3 = FUN_001cdb80();
  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {
    param_4 = param_1[0xb] & 1;
  }
  pcVar5 = (char *)*param_2;
  local_2c = 0;
  local_30 = (void *)0x0;
  local_34 = (void *)0x0;
  local_20 = 0;
  local_24 = (void *)0x0;
  local_28 = (void *)0x0;
  if (*pcVar5 == 'K') {
    *param_2 = (int)(pcVar5 + 1);
    iVar4 = FUN_001cde90();
    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {
      local_50 = 1;
      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);
      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
        FUN_001ce230();
      }
      goto LAB_001d1d40;
    }
  }
  else {
    cVar2 = pcVar5[1];
    if ('0' < cVar2) {
      if (cVar2 < ':') {
        local_35 = 0;
        local_36 = cVar2;
        iVar4 = strtol(&local_36,(char **)0x0,10);
        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');
      }
      else {
        if (cVar2 != '_') {
          return 0;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_001cde90();
        if (iVar4 == -1) {
          return 0;
        }
      }
      local_50 = 1;
      for (; 0 < iVar4; iVar4 = iVar4 + -1) {
        pcVar1 = (char *)*param_2;
        cVar2 = *pcVar1;
        pcVar5 = pcVar1;
        if (cVar2 == '_') {
          pcVar5 = pcVar1 + 1;
          *param_2 = (int)pcVar5;
          cVar2 = pcVar1[1];
        }
        local_24 = local_28;
        if (cVar2 == 't') {
          local_50 = FUN_001d1450(&local_28,1,0);
          if (local_50 != 0) goto LAB_001d1cf0;
LAB_001d1f20:
          local_50 = 0;
          break;
        }
        if (cVar2 == 'K') {
          *param_2 = (int)(pcVar5 + 1);
          iVar6 = FUN_001cde90();
          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;
          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);
          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
            FUN_001ce230();
          }
        }
        else {
          if ((*param_1 & 0x2000) == 0) {
            if (local_28 != (void *)0x0) {
              free(local_28);
              local_24 = (void *)0x0;
              local_20 = 0;
            }
            local_28 = local_24;
            local_50 = FUN_001cf7b0();
            if (local_50 == 0) goto LAB_001d1f20;
            FUN_001ce380();
          }
          else {
            __n = FUN_001cdde0();
            if (__n == 0xffffffff) goto LAB_001d1f20;
            __dest = (void *)FUN_001e4cc0(__n + 1);
            memcpy(__dest,(void *)*param_2,__n);
            *(undefined1 *)((int)__dest + __n) = 0;
            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);
            if (pcVar5 == (char *)0x0) {
              iVar6 = *param_2;
              if (__n != 0) {
                FUN_001ce150();
                iVar6 = *param_2;
              }
            }
            else {
              if (*pcVar5 != '\0') {
                FUN_001ce230();
              }
              free(pcVar5);
              iVar6 = *param_2;
            }
            free(__dest);
            *param_2 = iVar6 + __n;
          }
LAB_001d1cf0:
          FUN_001cdc20();
        }
        if (iVar4 != 1) {
          FUN_001ce230();
        }
      }
LAB_001d1d40:
      FUN_001ce060(uVar3);
      if (param_4 != 0) {
        FUN_001ce230();
        if ((param_1[0xb] & 1) != 0) {
          FUN_001ce230();
        }
        FUN_001ce380();
      }
      if (param_5 == 0) {
        if (*param_3 != param_3[1]) {
          FUN_001ce230();
        }
        if (local_34 != local_30) {
          FUN_001ce190();
        }
      }
      else {
        FUN_001ce380();
      }
      if (local_28 != (void *)0x0) {
        free(local_28);
        local_24 = (void *)0x0;
        local_20 = 0;
        local_28 = (void *)0x0;
      }
      if (local_34 != (void *)0x0) {
        free(local_34);
        return local_50;
      }
      return local_50;
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00035840
ADD EBX,0x1bd4a3
SUB ESP,0x4c
MOV dword ptr [ESP + 0x18],ECX
CALL 0x001cdb80
MOV ECX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x1c],EAX
TEST ECX,ECX
JZ 0x001d1b8b
MOV EAX,dword ptr [ESI + 0x28]
AND EAX,0x1
MOV dword ptr [ESP + 0x60],EAX
JZ 0x001d1e40
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x34],0x0
CMP byte ptr [EAX],0x4b
JZ 0x001d1f98
MOVZX EDX,byte ptr [EAX + 0x1]
CMP DL,0x31
JL 0x001d1bf8
CMP DL,0x39
JLE 0x001d1c10
MOV dword ptr [ESP + 0xc],0x0
CMP DL,0x5f
JNZ 0x001d1c00
ADD EAX,0x1
MOV dword ptr [EDI],EAX
MOV EAX,EDI
CALL 0x001cde90
CMP EAX,-0x1
JNZ 0x001d1c3e
LEA ESI,[ESI]
MOV dword ptr [ESP + 0xc],0x0
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV byte ptr [ESP + 0x26],DL
SUB ESP,0x4
MOV byte ptr [ESP + 0x2b],0x0
PUSH 0xa
PUSH 0x0
LEA EAX,[ESP + 0x32]
PUSH EAX
CALL 0x000293f0
MOV EDX,dword ptr [EDI]
XOR ECX,ECX
ADD ESP,0x10
CMP byte ptr [EDX + 0x2],0x5f
SETZ CL
LEA EDX,[EDX + ECX*0x1 + 0x2]
MOV dword ptr [EDI],EDX
MOV EBP,EAX
LEA EAX,[ESP + 0x34]
MOV dword ptr [ESP + 0xc],0x1
MOV dword ptr [ESP + 0x4],EAX
TEST EBP,EBP
JLE 0x001d1d40
LEA ESI,[ESI]
NOP
MOV ECX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EDI]
MOV dword ptr [ESP + 0x38],ECX
MOVZX EAX,byte ptr [EDX]
CMP AL,0x5f
JNZ 0x001d1c82
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [EDI],EAX
MOVZX EAX,byte ptr [EDX + 0x1]
MOV EDX,dword ptr [ESP + 0x8]
CMP AL,0x74
JZ 0x001d1ef0
CMP AL,0x4b
JZ 0x001d1f30
TEST dword ptr [ESI],0x2000
JNZ 0x001d1e50
TEST ECX,ECX
JZ 0x001d1cc6
SUB ESP,0xc
PUSH ECX
CALL 0x00029410
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x44],0x0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,EDI
MOV EAX,ESI
CALL 0x001cf7b0
MOV dword ptr [ESP + 0xc],EAX
TEST EAX,EAX
JZ 0x001d1f20
MOV ECX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x4]
LEA EAX,[ESP + 0x28]
CALL 0x001ce380
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,EAX
SUB ECX,EDX
CMP EDX,EAX
MOV EAX,0x0
CMOVZ ECX,EAX
MOV EAX,ESI
CALL 0x001cdc20
CMP EBP,0x1
JZ 0x001d1d2d
LEA EAX,[EBX + 0xffefec4b]
TEST byte ptr [ESI],0x4
LEA EDX,[EBX + 0xfff12f99]
CMOVNZ EDX,EAX
LEA EAX,[ESP + 0x28]
CALL 0x001ce230
SUB EBP,0x1
TEST EBP,EBP
JG 0x001d1c60
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,EAX
SUB ECX,EDX
CMP EDX,EAX
MOV EAX,0x0
CMOVZ ECX,EAX
SUB ESP,0xc
LEA EAX,[ESI + 0xc]
PUSH dword ptr [ESP + 0x28]
CALL 0x001ce060
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x60]
TEST EDX,EDX
JZ 0x001d1da6
TEST byte ptr [ESI],0x4
LEA EAX,[EBX + 0xfff12f99]
LEA EDX,[EBX + 0xffefec4b]
CMOVZ EDX,EAX
LEA EDI,[ESP + 0x28]
MOV EAX,EDI
CALL 0x001ce230
TEST byte ptr [ESI + 0x2c],0x1
JNZ 0x001d1fe3
MOV ECX,dword ptr [ESP + 0x38]
LEA EDX,[ESP + 0x34]
MOV EAX,EDI
CALL 0x001ce380
MOV EAX,dword ptr [ESP + 0x64]
TEST EAX,EAX
JNZ 0x001d1ff8
MOV EAX,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EAX + 0x4]
CMP dword ptr [EAX],EDI
JZ 0x001d1dd8
LEA EAX,[EBX + 0xfff12f99]
TEST byte ptr [ESI],0x4
LEA EDX,[EBX + 0xffefec4b]
CMOVZ EDX,EAX
LEA EAX,[ESP + 0x28]
CALL 0x001ce230
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x2c]
CMP EDX,ECX
JZ 0x001d1def
MOV EAX,dword ptr [ESP + 0x18]
SUB ECX,EDX
CALL 0x001ce190
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x001d1e1b
SUB ESP,0xc
PUSH EAX
CALL 0x00029410
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x44],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x001d1c00
SUB ESP,0xc
PUSH EAX
CALL 0x00029410
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x2c]
AND EAX,0x1
MOV dword ptr [ESP + 0x60],EAX
JMP 0x001d1b8b
MOV EAX,EDI
CALL 0x001cdde0
CMP EAX,-0x1
JZ 0x001d1f20
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EAX
ADD EAX,0x1
PUSH EAX
CALL 0x001e4cc0
ADD ESP,0xc
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [EDI]
MOV dword ptr [ESP + 0x1c],EAX
PUSH EAX
CALL 0x000295c0
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x18]
MOV byte ptr [ECX + EAX*0x1],0x0
POP EAX
POP EDX
PUSH dword ptr [ESI]
PUSH ECX
CALL 0x001ceef0
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x001d1f70
CMP byte ptr [EAX],0x0
JZ 0x001d1ebe
MOV EDX,ECX
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0x14],ECX
CALL 0x001ce230
MOV ECX,dword ptr [ESP + 0x14]
SUB ESP,0xc
PUSH ECX
CALL 0x00029410
MOV EDX,dword ptr [EDI]
ADD ESP,0x10
MOV dword ptr [ESP + 0x14],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x00029410
MOV EDX,dword ptr [ESP + 0x24]
ADD EDX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV dword ptr [EDI],EDX
JMP 0x001d1cf0
LEA ECX,[ESP + 0x28]
SUB ESP,0x4
MOV EDX,EDI
MOV EAX,ESI
PUSH 0x0
PUSH 0x1
PUSH dword ptr [ESP + 0x10]
CALL 0x001d1450
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x001d1cf0
LEA ESI,[ESI]
NOP
MOV dword ptr [ESP + 0xc],0x0
JMP 0x001d1d40
ADD EDX,0x1
MOV EAX,EDI
MOV dword ptr [EDI],EDX
CALL 0x001cde90
CMP EAX,-0x1
JZ 0x001d1f20
CMP dword ptr [ESI + 0x10],EAX
JLE 0x001d1f20
MOV EDX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [EDX + EAX*0x4]
TEST EDX,EDX
JZ 0x001d1d0d
CMP byte ptr [EDX],0x0
JZ 0x001d1d0d
LEA EAX,[ESP + 0x28]
CALL 0x001ce230
JMP 0x001d1d0d
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EDI]
TEST ECX,ECX
JZ 0x001d1ecc
MOV ECX,dword ptr [ESP + 0x8]
LEA EAX,[ESP + 0x28]
CALL 0x001ce150
MOV EDX,dword ptr [EDI]
JMP 0x001d1ecc
ADD EAX,0x1
MOV dword ptr [EDI],EAX
MOV EAX,EDI
CALL 0x001cde90
CMP EAX,-0x1
JZ 0x001d1bf8
CMP dword ptr [ESI + 0x10],EAX
JLE 0x001d1bf8
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0xc],0x1
MOV EDX,dword ptr [EDX + EAX*0x4]
TEST EDX,EDX
JZ 0x001d1d40
CMP byte ptr [EDX],0x0
JZ 0x001d1d40
LEA EAX,[ESP + 0x28]
CALL 0x001ce230
JMP 0x001d1d40
LEA EDX,[EBX + 0xfff0ff2a]
MOV EAX,EDI
CALL 0x001ce230
JMP 0x001d1d97
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[ESP + 0x28]
CALL 0x001ce380
JMP 0x001d1def
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "int __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" identifier (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "char local_36;" primitive_type identifier ;) (declaration "undefined1 local_35;" type_identifier identifier ;) (declaration "void *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "void *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "void *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1d1b5d;" (assignment_expression "uStack_14 = 0x1d1b5d" identifier = number_literal) ;) (expression_statement "uVar3 = FUN_001cdb80();" (assignment_expression "uVar3 = FUN_001cdb80()" identifier = (call_expression "FUN_001cdb80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" if (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" ( (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" ( (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" identifier = (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal)) , (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" { (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" identifier = (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" if (parenthesized_expression "(*pcVar5 == 'K')" ( (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'K'" ' character ')) )) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" if (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" ( (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar4 < (int)param_1[4])" ( (binary_expression "iVar4 < (int)param_1[4]" identifier < (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" * (cast_expression "(char **)(param_1[2] + iVar4 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar4 * 4)" ( (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar4 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001ce230();\n      }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_001d1d40;" goto statement_identifier ;) })) }) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" else (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" { (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" if (parenthesized_expression "('0' < cVar2)" ( (binary_expression "'0' < cVar2" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" { (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(cVar2 < ':')" ( (binary_expression "cVar2 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" { (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" identifier = number_literal) ;) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" identifier = identifier) ;) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" identifier = (call_expression "strtol(&local_36,(char **)0x0,10)" identifier (argument_list "(&local_36,(char **)0x0,10)" ( (pointer_expression "&local_36" & identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) + (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(*param_2 + 2) == '_')" ( (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" * (cast_expression "(char *)(*param_2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 2)" ( (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) }) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" else (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" { (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" if (parenthesized_expression "(cVar2 != '_')" ( (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" for ( ; (binary_expression "0 < iVar4" number_literal < identifier) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" { (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" identifier = identifier) ;) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" if (parenthesized_expression "(cVar2 == '_')" ( (binary_expression "cVar2 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" { (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" identifier = (subscript_expression "pcVar1[1]" identifier [ number_literal ])) ;) })) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" identifier = identifier) ;) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" if (parenthesized_expression "(cVar2 == 't')" ( (binary_expression "cVar2 == 't'" identifier == (char_literal "'t'" ' character ')) )) (compound_statement "{\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" { (expression_statement "local_50 = FUN_001d1450(&local_28,1,0);" (assignment_expression "local_50 = FUN_001d1450(&local_28,1,0)" identifier = (call_expression "FUN_001d1450(&local_28,1,0)" identifier (argument_list "(&local_28,1,0)" ( (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (local_50 != 0) goto LAB_001d1cf0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001d1cf0;" goto statement_identifier ;)) (labeled_statement "LAB_001d1f20:\n          local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" if (parenthesized_expression "(cVar2 == 'K')" ( (binary_expression "cVar2 == 'K'" identifier == (char_literal "'K'" ' character ')) )) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar6 = FUN_001cde90();" (assignment_expression "iVar6 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;" if (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" ( (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) || (parenthesized_expression "((int)param_1[4] <= iVar6)" ( (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) <= identifier) ))) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" * (cast_expression "(char **)(param_1[2] + iVar6 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar6 * 4)" ( (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            FUN_001ce230();\n          }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" else (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" { (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" if (parenthesized_expression "((*param_1 & 0x2000) == 0)" ( (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" ( (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }" { (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" identifier = identifier) ;) (expression_statement "local_50 = FUN_001cf7b0();" (assignment_expression "local_50 = FUN_001cf7b0()" identifier = (call_expression "FUN_001cf7b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_50 == 0) goto LAB_001d1f20;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" else (compound_statement "{\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" { (expression_statement "__n = FUN_001cdde0();" (assignment_expression "__n = FUN_001cdde0()" identifier = (call_expression "FUN_001cdde0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (__n == 0xffffffff) goto LAB_001d1f20;" if (parenthesized_expression "(__n == 0xffffffff)" ( (binary_expression "__n == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "__dest = (void *)FUN_001e4cc0(__n + 1);" (assignment_expression "__dest = (void *)FUN_001e4cc0(__n + 1)" identifier = (cast_expression "(void *)FUN_001e4cc0(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e4cc0(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_001ceef0(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001ceef0(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }" { (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" { (expression_statement "FUN_001ce150();" (call_expression "FUN_001ce150()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) }) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" else (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" { (if_statement "if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_001ce230();\n              }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar6 + __n" identifier + identifier)) ;) }))) (labeled_statement "LAB_001d1cf0:\n          FUN_001cdc20();" statement_identifier : (expression_statement "FUN_001cdc20();" (call_expression "FUN_001cdc20()" identifier (argument_list "()" ( ))) ;)) }))) (if_statement "if (iVar4 != 1) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_001d1d40:\n      FUN_001ce060(uVar3);" statement_identifier : (expression_statement "FUN_001ce060(uVar3);" (call_expression "FUN_001ce060(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;)) (if_statement "if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "((param_1[0xb] & 1) != 0)" ( (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" ( (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }" { (if_statement "if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "(*param_3 != param_3[1])" ( (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" * identifier) != (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_34 != local_30) {\n          FUN_001ce190();\n        }" if (parenthesized_expression "(local_34 != local_30)" ( (binary_expression "local_34 != local_30" identifier != identifier) )) (compound_statement "{\n          FUN_001ce190();\n        }" { (expression_statement "FUN_001ce190();" (call_expression "FUN_001ce190()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n        FUN_001ce380();\n      }" else (compound_statement "{\n        FUN_001ce380();\n      }" { (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" if (parenthesized_expression "(local_34 != (void *)0x0)" ( (binary_expression "local_34 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return local_50;" return identifier ;) })) (return_statement "return local_50;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3\ndemangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)\n\n{\n  char cVar1;\n  int index;\n  int iVar2;\n  size_t __n;\n  char *pcVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_50;\n  char num [2];\n  string temp;\n  string last_name;\n  \n  index = register_Btype(work);\n  if ((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)) {\n    isfuncname = work->destructor & 1;\n  }\n  pcVar3 = *mangled;\n  temp.e = (char *)0x0;\n  temp.p = (char *)0x0;\n  temp.b = (char *)0x0;\n  last_name.e = (char *)0x0;\n  last_name.p = (char *)0x0;\n  last_name.b = (char *)0x0;\n  if (*pcVar3 == 'K') {\n    *mangled = pcVar3 + 1;\n    iVar2 = consume_count_with_underscores(mangled);\n    if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "int __regparm3\ndemangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)\n\n{\n  char cVar1;\n  int index;\n  int iVar2;\n  size_t __n;\n  char *pcVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_50;\n  char num [2];\n  string temp;\n  string last_name;\n  \n  index = register_Btype(work);\n  if ((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)) {\n    isfuncname = work->destructor & 1;\n  }\n  pcVar3 = *mangled;\n  temp.e = (char *)0x0;\n  temp.p = (char *)0x0;\n  temp.b = (char *)0x0;\n  last_name.e = (char *)0x0;\n  last_name.p = (char *)0x0;\n  last_name.b = (char *)0x0;\n  if (*pcVar3 == 'K') {\n    *mangled = pcVar3 + 1;\n    iVar2 = consume_count_with_underscores(mangled);\n    if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)" identifier (parameter_list "(work_stuff *work,char **mangled,string *result,int isfuncname,int append)" ( (parameter_declaration "work_stuff *work" type_identifier (pointer_declarator "*work" * identifier)) , (parameter_declaration "char **mangled" primitive_type (pointer_declarator "**mangled" * (pointer_declarator "*mangled" * identifier))) , (parameter_declaration "string *result" type_identifier (pointer_declarator "*result" * identifier)) , (parameter_declaration "int isfuncname" primitive_type identifier) , (parameter_declaration "int append" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int index;\n  int iVar2;\n  size_t __n;\n  char *pcVar3;\n  char *pcVar4;\n  int iVar5;\n  int local_50;\n  char num [2];\n  string temp;\n  string last_name;\n  \n  index = register_Btype(work);\n  if ((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)) {\n    isfuncname = work->destructor & 1;\n  }\n  pcVar3 = *mangled;\n  temp.e = (char *)0x0;\n  temp.p = (char *)0x0;\n  temp.b = (char *)0x0;\n  last_name.e = (char *)0x0;\n  last_name.p = (char *)0x0;\n  last_name.b = (char *)0x0;\n  if (*pcVar3 == 'K') {\n    *mangled = pcVar3 + 1;\n    iVar2 = consume_count_with_underscores(mangled);\n    if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int index;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "char num [2];" primitive_type (array_declarator "num [2]" identifier [ number_literal ]) ;) (declaration "string temp;" type_identifier identifier ;) (declaration "string last_name;" type_identifier identifier ;) (expression_statement "index = register_Btype(work);" (assignment_expression "index = register_Btype(work)" identifier = (call_expression "register_Btype(work)" identifier (argument_list "(work)" ( identifier )))) ;) (if_statement "if ((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)) {\n    isfuncname = work->destructor & 1;\n  }" if (parenthesized_expression "((isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0))" ( (binary_expression "(isfuncname != 0) && (isfuncname = work->constructor & 1, isfuncname == 0)" (parenthesized_expression "(isfuncname != 0)" ( (binary_expression "isfuncname != 0" identifier != number_literal) )) && (parenthesized_expression "(isfuncname = work->constructor & 1, isfuncname == 0)" ( (comma_expression "isfuncname = work->constructor & 1, isfuncname == 0" (assignment_expression "isfuncname = work->constructor & 1" identifier = (binary_expression "work->constructor & 1" (field_expression "work->constructor" identifier -> field_identifier) & number_literal)) , (binary_expression "isfuncname == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    isfuncname = work->destructor & 1;\n  }" { (expression_statement "isfuncname = work->destructor & 1;" (assignment_expression "isfuncname = work->destructor & 1" identifier = (binary_expression "work->destructor & 1" (field_expression "work->destructor" identifier -> field_identifier) & number_literal)) ;) })) (expression_statement "pcVar3 = *mangled;" (assignment_expression "pcVar3 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "temp.e = (char *)0x0;" (assignment_expression "temp.e = (char *)0x0" (field_expression "temp.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "temp.p = (char *)0x0;" (assignment_expression "temp.p = (char *)0x0" (field_expression "temp.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "temp.b = (char *)0x0;" (assignment_expression "temp.b = (char *)0x0" (field_expression "temp.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.e = (char *)0x0;" (assignment_expression "last_name.e = (char *)0x0" (field_expression "last_name.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.p = (char *)0x0;" (assignment_expression "last_name.p = (char *)0x0" (field_expression "last_name.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.b = (char *)0x0;" (assignment_expression "last_name.b = (char *)0x0" (field_expression "last_name.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*pcVar3 == 'K') {\n    *mangled = pcVar3 + 1;\n    iVar2 = consume_count_with_underscores(mangled);\n    if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" if (parenthesized_expression "(*pcVar3 == 'K')" ( (binary_expression "*pcVar3 == 'K'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'K'" ' character ')) )) (compound_statement "{\n    *mangled = pcVar3 + 1;\n    iVar2 = consume_count_with_underscores(mangled);\n    if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }\n  }" { (expression_statement "*mangled = pcVar3 + 1;" (assignment_expression "*mangled = pcVar3 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = consume_count_with_underscores(mangled);" (assignment_expression "iVar2 = consume_count_with_underscores(mangled)" identifier = (call_expression "consume_count_with_underscores(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if ((iVar2 != -1) && (iVar2 < work->numk)) {\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }" if (parenthesized_expression "((iVar2 != -1) && (iVar2 < work->numk))" ( (binary_expression "(iVar2 != -1) && (iVar2 < work->numk)" (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar2 < work->numk)" ( (binary_expression "iVar2 < work->numk" identifier < (field_expression "work->numk" identifier -> field_identifier)) ))) )) (compound_statement "{\n      local_50 = 1;\n      pcVar3 = work->ktypevec[iVar2];\n      if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }\n      goto LAB_001d1d40;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = work->ktypevec[iVar2];" (assignment_expression "pcVar3 = work->ktypevec[iVar2]" identifier = (subscript_expression "work->ktypevec[iVar2]" (field_expression "work->ktypevec" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n        string_append(&temp,pcVar3);\n      }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (*pcVar3 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (*pcVar3 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        string_append(&temp,pcVar3);\n      }" { (expression_statement "string_append(&temp,pcVar3);" (call_expression "string_append(&temp,pcVar3)" identifier (argument_list "(&temp,pcVar3)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) })) (goto_statement "goto LAB_001d1d40;" goto statement_identifier ;) })) }) (else_clause "else {\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" else (compound_statement "{\n    cVar1 = pcVar3[1];\n    if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" { (expression_statement "cVar1 = pcVar3[1];" (assignment_expression "cVar1 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar1) {\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }" if (parenthesized_expression "('0' < cVar1)" ( (binary_expression "'0' < cVar1" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n      if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }\nLAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;\n      if (temp.b == temp.p) {\n        iVar2 = 0;\n      }\n      remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);\n      if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }\n      if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }\n      if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }\n      if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }\n      return local_50;\n    }" { (if_statement "if (cVar1 < ':') {\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }\n      else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(cVar1 < ':')" ( (binary_expression "cVar1 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n        num[1] = '\0';\n        num[0] = cVar1;\n        iVar2 = strtol(num,(char **)0x0,10);\n        *mangled = *mangled + ((*mangled)[2] == '_') + 2;\n      }" { (expression_statement "num[1] = '\0';" (assignment_expression "num[1] = '\0'" (subscript_expression "num[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "num[0] = cVar1;" (assignment_expression "num[0] = cVar1" (subscript_expression "num[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar2 = strtol(num,(char **)0x0,10);" (assignment_expression "iVar2 = strtol(num,(char **)0x0,10)" identifier = (call_expression "strtol(num,(char **)0x0,10)" identifier (argument_list "(num,(char **)0x0,10)" ( identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "*mangled = *mangled + ((*mangled)[2] == '_') + 2;" (assignment_expression "*mangled = *mangled + ((*mangled)[2] == '_') + 2" (pointer_expression "*mangled" * identifier) = (binary_expression "*mangled + ((*mangled)[2] == '_') + 2" (binary_expression "*mangled + ((*mangled)[2] == '_')" (pointer_expression "*mangled" * identifier) + (parenthesized_expression "((*mangled)[2] == '_')" ( (binary_expression "(*mangled)[2] == '_'" (subscript_expression "(*mangled)[2]" (parenthesized_expression "(*mangled)" ( (pointer_expression "*mangled" * identifier) )) [ number_literal ]) == (char_literal "'_'" ' character ')) ))) + number_literal)) ;) }) (else_clause "else {\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }" else (compound_statement "{\n        if (cVar1 != '_') {\n          return 0;\n        }\n        *mangled = pcVar3 + 1;\n        iVar2 = consume_count_with_underscores(mangled);\n        if (iVar2 == -1) {\n          return 0;\n        }\n      }" { (if_statement "if (cVar1 != '_') {\n          return 0;\n        }" if (parenthesized_expression "(cVar1 != '_')" ( (binary_expression "cVar1 != '_'" identifier != (char_literal "'_'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*mangled = pcVar3 + 1;" (assignment_expression "*mangled = pcVar3 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = consume_count_with_underscores(mangled);" (assignment_expression "iVar2 = consume_count_with_underscores(mangled)" identifier = (call_expression "consume_count_with_underscores(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if (iVar2 == -1) {\n          return 0;\n        }" if (parenthesized_expression "(iVar2 == -1)" ( (binary_expression "iVar2 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (for_statement "for (; 0 < iVar2; iVar2 = iVar2 + -1) {\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }" for ( ; (binary_expression "0 < iVar2" number_literal < identifier) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n        pcVar4 = *mangled;\n        cVar1 = *pcVar4;\n        pcVar3 = pcVar4;\n        if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }\n        last_name.p = last_name.b;\n        if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }\n        if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }\n      }" { (expression_statement "pcVar4 = *mangled;" (assignment_expression "pcVar4 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "pcVar3 = pcVar4;" (assignment_expression "pcVar3 = pcVar4" identifier = identifier) ;) (if_statement "if (cVar1 == '_') {\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }" if (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          pcVar3 = pcVar4 + 1;\n          *mangled = pcVar3;\n          cVar1 = pcVar4[1];\n        }" { (expression_statement "pcVar3 = pcVar4 + 1;" (assignment_expression "pcVar3 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "*mangled = pcVar3;" (assignment_expression "*mangled = pcVar3" (pointer_expression "*mangled" * identifier) = identifier) ;) (expression_statement "cVar1 = pcVar4[1];" (assignment_expression "cVar1 = pcVar4[1]" identifier = (subscript_expression "pcVar4[1]" identifier [ number_literal ])) ;) })) (expression_statement "last_name.p = last_name.b;" (assignment_expression "last_name.p = last_name.b" (field_expression "last_name.p" identifier . field_identifier) = (field_expression "last_name.b" identifier . field_identifier)) ;) (if_statement "if (cVar1 == 't') {\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" if (parenthesized_expression "(cVar1 == 't')" ( (binary_expression "cVar1 == 't'" identifier == (char_literal "'t'" ' character ')) )) (compound_statement "{\n          local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" { (expression_statement "local_50 = demangle_template(work,mangled,&temp,&last_name,1,0);" (assignment_expression "local_50 = demangle_template(work,mangled,&temp,&last_name,1,0)" identifier = (call_expression "demangle_template(work,mangled,&temp,&last_name,1,0)" identifier (argument_list "(work,mangled,&temp,&last_name,1,0)" ( identifier , identifier , (pointer_expression "&temp" & identifier) , (pointer_expression "&last_name" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (local_50 != 0) goto LAB_001d1cf0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001d1cf0;" goto statement_identifier ;)) (labeled_statement "LAB_001d1f20:\n          local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (if_statement "if (cVar1 == 'K') {\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }\n        else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }" if (parenthesized_expression "(cVar1 == 'K')" ( (binary_expression "cVar1 == 'K'" identifier == (char_literal "'K'" ' character ')) )) (compound_statement "{\n          *mangled = pcVar3 + 1;\n          iVar5 = consume_count_with_underscores(mangled);\n          if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;\n          pcVar3 = work->ktypevec[iVar5];\n          if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }\n        }" { (expression_statement "*mangled = pcVar3 + 1;" (assignment_expression "*mangled = pcVar3 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = consume_count_with_underscores(mangled);" (assignment_expression "iVar5 = consume_count_with_underscores(mangled)" identifier = (call_expression "consume_count_with_underscores(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if ((iVar5 == -1) || (work->numk <= iVar5)) goto LAB_001d1f20;" if (parenthesized_expression "((iVar5 == -1) || (work->numk <= iVar5))" ( (binary_expression "(iVar5 == -1) || (work->numk <= iVar5)" (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) || (parenthesized_expression "(work->numk <= iVar5)" ( (binary_expression "work->numk <= iVar5" (field_expression "work->numk" identifier -> field_identifier) <= identifier) ))) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "pcVar3 = work->ktypevec[iVar5];" (assignment_expression "pcVar3 = work->ktypevec[iVar5]" identifier = (subscript_expression "work->ktypevec[iVar5]" (field_expression "work->ktypevec" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (*pcVar3 != '\0')) {\n            string_append(&temp,pcVar3);\n          }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (*pcVar3 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (*pcVar3 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            string_append(&temp,pcVar3);\n          }" { (expression_statement "string_append(&temp,pcVar3);" (call_expression "string_append(&temp,pcVar3)" identifier (argument_list "(&temp,pcVar3)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) })) }) (else_clause "else {\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }" else (compound_statement "{\n          if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }\nLAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;\n          if (temp.b == temp.p) {\n            iVar5 = 0;\n          }\n          remember_Ktype(work,temp.b,iVar5);\n        }" { (if_statement "if ((work->options & 0x2000U) == 0) {\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }\n          else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }" if (parenthesized_expression "((work->options & 0x2000U) == 0)" ( (binary_expression "(work->options & 0x2000U) == 0" (parenthesized_expression "(work->options & 0x2000U)" ( (binary_expression "work->options & 0x2000U" (field_expression "work->options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }\n            last_name.b = last_name.p;\n            local_50 = do_type(work,mangled,&last_name);\n            if (local_50 == 0) goto LAB_001d1f20;\n            string_appends(&temp,&last_name,(string *)last_name.p);\n          }" { (if_statement "if (last_name.b != (char *)0x0) {\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }" if (parenthesized_expression "(last_name.b != (char *)0x0)" ( (binary_expression "last_name.b != (char *)0x0" (field_expression "last_name.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(last_name.b);\n              last_name.p = (char *)0x0;\n              last_name.e = (char *)0x0;\n            }" { (expression_statement "free(last_name.b);" (call_expression "free(last_name.b)" identifier (argument_list "(last_name.b)" ( (field_expression "last_name.b" identifier . field_identifier) ))) ;) (expression_statement "last_name.p = (char *)0x0;" (assignment_expression "last_name.p = (char *)0x0" (field_expression "last_name.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.e = (char *)0x0;" (assignment_expression "last_name.e = (char *)0x0" (field_expression "last_name.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "last_name.b = last_name.p;" (assignment_expression "last_name.b = last_name.p" (field_expression "last_name.b" identifier . field_identifier) = (field_expression "last_name.p" identifier . field_identifier)) ;) (expression_statement "local_50 = do_type(work,mangled,&last_name);" (assignment_expression "local_50 = do_type(work,mangled,&last_name)" identifier = (call_expression "do_type(work,mangled,&last_name)" identifier (argument_list "(work,mangled,&last_name)" ( identifier , identifier , (pointer_expression "&last_name" & identifier) )))) ;) (if_statement "if (local_50 == 0) goto LAB_001d1f20;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "string_appends(&temp,&last_name,(string *)last_name.p);" (call_expression "string_appends(&temp,&last_name,(string *)last_name.p)" identifier (argument_list "(&temp,&last_name,(string *)last_name.p)" ( (pointer_expression "&temp" & identifier) , (pointer_expression "&last_name" & identifier) , (cast_expression "(string *)last_name.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "last_name.p" identifier . field_identifier)) ))) ;) }) (else_clause "else {\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }" else (compound_statement "{\n            __n = consume_count(mangled);\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            pcVar3 = (char *)xmalloc(__n + 1);\n            memcpy(pcVar3,*mangled,__n);\n            pcVar3[__n] = '\0';\n            pcVar4 = cplus_demangle(pcVar3,work->options);\n            if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }\n            free(pcVar3);\n            *mangled = pcVar4 + __n;\n          }" { (expression_statement "__n = consume_count(mangled);" (assignment_expression "__n = consume_count(mangled)" identifier = (call_expression "consume_count(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if (__n == 0xffffffff) goto LAB_001d1f20;" if (parenthesized_expression "(__n == 0xffffffff)" ( (binary_expression "__n == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "pcVar3 = (char *)xmalloc(__n + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(__n + 1)" identifier = (cast_expression "(char *)xmalloc(__n + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar3,*mangled,__n);" (call_expression "memcpy(pcVar3,*mangled,__n)" identifier (argument_list "(pcVar3,*mangled,__n)" ( identifier , (pointer_expression "*mangled" * identifier) , identifier ))) ;) (expression_statement "pcVar3[__n] = '\0';" (assignment_expression "pcVar3[__n] = '\0'" (subscript_expression "pcVar3[__n]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4 = cplus_demangle(pcVar3,work->options);" (assignment_expression "pcVar4 = cplus_demangle(pcVar3,work->options)" identifier = (call_expression "cplus_demangle(pcVar3,work->options)" identifier (argument_list "(pcVar3,work->options)" ( identifier , (field_expression "work->options" identifier -> field_identifier) )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }\n            else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar4 = *mangled;\n              if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }\n            }" { (expression_statement "pcVar4 = *mangled;" (assignment_expression "pcVar4 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (if_statement "if (__n != 0) {\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n                string_appendn(&temp,pcVar4,__n);\n                pcVar4 = *mangled;\n              }" { (expression_statement "string_appendn(&temp,pcVar4,__n);" (call_expression "string_appendn(&temp,pcVar4,__n)" identifier (argument_list "(&temp,pcVar4,__n)" ( (pointer_expression "&temp" & identifier) , identifier , identifier ))) ;) (expression_statement "pcVar4 = *mangled;" (assignment_expression "pcVar4 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) })) }) (else_clause "else {\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }" else (compound_statement "{\n              if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }\n              free(pcVar4);\n              pcVar4 = *mangled;\n            }" { (if_statement "if (*pcVar4 != '\0') {\n                string_append(&temp,pcVar4);\n              }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                string_append(&temp,pcVar4);\n              }" { (expression_statement "string_append(&temp,pcVar4);" (call_expression "string_append(&temp,pcVar4)" identifier (argument_list "(&temp,pcVar4)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) })) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) (expression_statement "pcVar4 = *mangled;" (assignment_expression "pcVar4 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) }))) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "*mangled = pcVar4 + __n;" (assignment_expression "*mangled = pcVar4 + __n" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar4 + __n" identifier + identifier)) ;) }))) (labeled_statement "LAB_001d1cf0:\n          iVar5 = (int)temp.p - (int)temp.b;" statement_identifier : (expression_statement "iVar5 = (int)temp.p - (int)temp.b;" (assignment_expression "iVar5 = (int)temp.p - (int)temp.b" identifier = (binary_expression "(int)temp.p - (int)temp.b" (cast_expression "(int)temp.p" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.p" identifier . field_identifier)) - (cast_expression "(int)temp.b" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.b" identifier . field_identifier)))) ;)) (if_statement "if (temp.b == temp.p) {\n            iVar5 = 0;\n          }" if (parenthesized_expression "(temp.b == temp.p)" ( (binary_expression "temp.b == temp.p" (field_expression "temp.b" identifier . field_identifier) == (field_expression "temp.p" identifier . field_identifier)) )) (compound_statement "{\n            iVar5 = 0;\n          }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) })) (expression_statement "remember_Ktype(work,temp.b,iVar5);" (call_expression "remember_Ktype(work,temp.b,iVar5)" identifier (argument_list "(work,temp.b,iVar5)" ( identifier , (field_expression "temp.b" identifier . field_identifier) , identifier ))) ;) }))) (if_statement "if (iVar2 != 1) {\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }" if (parenthesized_expression "(iVar2 != 1)" ( (binary_expression "iVar2 != 1" identifier != number_literal) )) (compound_statement "{\n          pcVar3 = "::";\n          if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }\n          string_append(&temp,pcVar3);\n        }" { (expression_statement "pcVar3 = "::";" (assignment_expression "pcVar3 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) (if_statement "if ((work->options & 4) != 0) {\n            pcVar3 = ".";\n          }" if (parenthesized_expression "((work->options & 4) != 0)" ( (binary_expression "(work->options & 4) != 0" (parenthesized_expression "(work->options & 4)" ( (binary_expression "work->options & 4" (field_expression "work->options" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            pcVar3 = ".";\n          }" { (expression_statement "pcVar3 = ".";" (assignment_expression "pcVar3 = "."" identifier = (string_literal ""."" " string_content ")) ;) })) (expression_statement "string_append(&temp,pcVar3);" (call_expression "string_append(&temp,pcVar3)" identifier (argument_list "(&temp,pcVar3)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) })) })) (labeled_statement "LAB_001d1d40:\n      iVar2 = (int)temp.p - (int)temp.b;" statement_identifier : (expression_statement "iVar2 = (int)temp.p - (int)temp.b;" (assignment_expression "iVar2 = (int)temp.p - (int)temp.b" identifier = (binary_expression "(int)temp.p - (int)temp.b" (cast_expression "(int)temp.p" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.p" identifier . field_identifier)) - (cast_expression "(int)temp.b" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.b" identifier . field_identifier)))) ;)) (if_statement "if (temp.b == temp.p) {\n        iVar2 = 0;\n      }" if (parenthesized_expression "(temp.b == temp.p)" ( (binary_expression "temp.b == temp.p" (field_expression "temp.b" identifier . field_identifier) == (field_expression "temp.p" identifier . field_identifier)) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (expression_statement "remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index);" (call_expression "remember_Btype((work_stuff *)&work->btypevec,temp.b,iVar2,index)" identifier (argument_list "((work_stuff *)&work->btypevec,temp.b,iVar2,index)" ( (cast_expression "(work_stuff *)&work->btypevec" ( (type_descriptor "work_stuff *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&work->btypevec" & (field_expression "work->btypevec" identifier -> field_identifier))) , (field_expression "temp.b" identifier . field_identifier) , identifier , identifier ))) ;) (if_statement "if (isfuncname != 0) {\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }" if (parenthesized_expression "(isfuncname != 0)" ( (binary_expression "isfuncname != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar3 = ".";\n        if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }\n        string_append(&temp,pcVar3);\n        if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }\n        string_appends(&temp,&last_name,(string *)last_name.p);\n      }" { (expression_statement "pcVar3 = ".";" (assignment_expression "pcVar3 = "."" identifier = (string_literal ""."" " string_content ")) ;) (if_statement "if ((work->options & 4) == 0) {\n          pcVar3 = "::";\n        }" if (parenthesized_expression "((work->options & 4) == 0)" ( (binary_expression "(work->options & 4) == 0" (parenthesized_expression "(work->options & 4)" ( (binary_expression "work->options & 4" (field_expression "work->options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          pcVar3 = "::";\n        }" { (expression_statement "pcVar3 = "::";" (assignment_expression "pcVar3 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) })) (expression_statement "string_append(&temp,pcVar3);" (call_expression "string_append(&temp,pcVar3)" identifier (argument_list "(&temp,pcVar3)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) (if_statement "if ((work->destructor & 1) != 0) {\n          string_append(&temp,"~");\n        }" if (parenthesized_expression "((work->destructor & 1) != 0)" ( (binary_expression "(work->destructor & 1) != 0" (parenthesized_expression "(work->destructor & 1)" ( (binary_expression "work->destructor & 1" (field_expression "work->destructor" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          string_append(&temp,"~");\n        }" { (expression_statement "string_append(&temp,"~");" (call_expression "string_append(&temp,"~")" identifier (argument_list "(&temp,"~")" ( (pointer_expression "&temp" & identifier) , (string_literal ""~"" " string_content ") ))) ;) })) (expression_statement "string_appends(&temp,&last_name,(string *)last_name.p);" (call_expression "string_appends(&temp,&last_name,(string *)last_name.p)" identifier (argument_list "(&temp,&last_name,(string *)last_name.p)" ( (pointer_expression "&temp" & identifier) , (pointer_expression "&last_name" & identifier) , (cast_expression "(string *)last_name.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "last_name.p" identifier . field_identifier)) ))) ;) })) (if_statement "if (append == 0) {\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }\n      else {\n        string_appends(result,&temp,(string *)temp.p);\n      }" if (parenthesized_expression "(append == 0)" ( (binary_expression "append == 0" identifier == number_literal) )) (compound_statement "{\n        if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }\n        if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }\n      }" { (if_statement "if (result->b != result->p) {\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }" if (parenthesized_expression "(result->b != result->p)" ( (binary_expression "result->b != result->p" (field_expression "result->b" identifier -> field_identifier) != (field_expression "result->p" identifier -> field_identifier)) )) (compound_statement "{\n          pcVar3 = ".";\n          if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }\n          string_append(&temp,pcVar3);\n        }" { (expression_statement "pcVar3 = ".";" (assignment_expression "pcVar3 = "."" identifier = (string_literal ""."" " string_content ")) ;) (if_statement "if ((work->options & 4) == 0) {\n            pcVar3 = "::";\n          }" if (parenthesized_expression "((work->options & 4) == 0)" ( (binary_expression "(work->options & 4) == 0" (parenthesized_expression "(work->options & 4)" ( (binary_expression "work->options & 4" (field_expression "work->options" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            pcVar3 = "::";\n          }" { (expression_statement "pcVar3 = "::";" (assignment_expression "pcVar3 = "::"" identifier = (string_literal ""::"" " string_content ")) ;) })) (expression_statement "string_append(&temp,pcVar3);" (call_expression "string_append(&temp,pcVar3)" identifier (argument_list "(&temp,pcVar3)" ( (pointer_expression "&temp" & identifier) , identifier ))) ;) })) (if_statement "if (temp.b != temp.p) {\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }" if (parenthesized_expression "(temp.b != temp.p)" ( (binary_expression "temp.b != temp.p" (field_expression "temp.b" identifier . field_identifier) != (field_expression "temp.p" identifier . field_identifier)) )) (compound_statement "{\n          string_prependn(result,temp.b,(int)temp.p - (int)temp.b);\n        }" { (expression_statement "string_prependn(result,temp.b,(int)temp.p - (int)temp.b);" (call_expression "string_prependn(result,temp.b,(int)temp.p - (int)temp.b)" identifier (argument_list "(result,temp.b,(int)temp.p - (int)temp.b)" ( identifier , (field_expression "temp.b" identifier . field_identifier) , (binary_expression "(int)temp.p - (int)temp.b" (cast_expression "(int)temp.p" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.p" identifier . field_identifier)) - (cast_expression "(int)temp.b" ( (type_descriptor "int" primitive_type) ) (field_expression "temp.b" identifier . field_identifier))) ))) ;) })) }) (else_clause "else {\n        string_appends(result,&temp,(string *)temp.p);\n      }" else (compound_statement "{\n        string_appends(result,&temp,(string *)temp.p);\n      }" { (expression_statement "string_appends(result,&temp,(string *)temp.p);" (call_expression "string_appends(result,&temp,(string *)temp.p)" identifier (argument_list "(result,&temp,(string *)temp.p)" ( identifier , (pointer_expression "&temp" & identifier) , (cast_expression "(string *)temp.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "temp.p" identifier . field_identifier)) ))) ;) }))) (if_statement "if (last_name.b != (char *)0x0) {\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }" if (parenthesized_expression "(last_name.b != (char *)0x0)" ( (binary_expression "last_name.b != (char *)0x0" (field_expression "last_name.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(last_name.b);\n        last_name.p = (char *)0x0;\n        last_name.e = (char *)0x0;\n        last_name.b = (char *)0x0;\n      }" { (expression_statement "free(last_name.b);" (call_expression "free(last_name.b)" identifier (argument_list "(last_name.b)" ( (field_expression "last_name.b" identifier . field_identifier) ))) ;) (expression_statement "last_name.p = (char *)0x0;" (assignment_expression "last_name.p = (char *)0x0" (field_expression "last_name.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.e = (char *)0x0;" (assignment_expression "last_name.e = (char *)0x0" (field_expression "last_name.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "last_name.b = (char *)0x0;" (assignment_expression "last_name.b = (char *)0x0" (field_expression "last_name.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (temp.b != (char *)0x0) {\n        free(temp.b);\n        return local_50;\n      }" if (parenthesized_expression "(temp.b != (char *)0x0)" ( (binary_expression "temp.b != (char *)0x0" (field_expression "temp.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(temp.b);\n        return local_50;\n      }" { (expression_statement "free(temp.b);" (call_expression "free(temp.b)" identifier (argument_list "(temp.b)" ( (field_expression "temp.b" identifier . field_identifier) ))) ;) (return_statement "return local_50;" return identifier ;) })) (return_statement "return local_50;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" identifier (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "char local_36;" primitive_type identifier ;) (declaration "undefined1 local_35;" type_identifier identifier ;) (declaration "void *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "void *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "void *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1d1b5d;" (assignment_expression "uStack_14 = 0x1d1b5d" identifier = number_literal) ;) (expression_statement "uVar3 = FUN_001cdb80();" (assignment_expression "uVar3 = FUN_001cdb80()" identifier = (call_expression "FUN_001cdb80()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" if (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" ( (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" ( (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" identifier = (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal)) , (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" { (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" identifier = (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" if (parenthesized_expression "(*pcVar5 == 'K')" ( (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'K'" ' character ')) )) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" if (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" ( (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar4 < (int)param_1[4])" ( (binary_expression "iVar4 < (int)param_1[4]" identifier < (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" * (cast_expression "(char **)(param_1[2] + iVar4 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar4 * 4)" ( (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar4 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001ce230();\n      }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_001d1d40;" goto statement_identifier ;) })) }) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" else (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" { (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" if (parenthesized_expression "('0' < cVar2)" ( (binary_expression "'0' < cVar2" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" { (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(cVar2 < ':')" ( (binary_expression "cVar2 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" { (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" identifier = number_literal) ;) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" identifier = identifier) ;) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" identifier = (call_expression "strtol(&local_36,(char **)0x0,10)" identifier (argument_list "(&local_36,(char **)0x0,10)" ( (pointer_expression "&local_36" & identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) + (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(*param_2 + 2) == '_')" ( (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" * (cast_expression "(char *)(*param_2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 2)" ( (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) }) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" else (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" { (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" if (parenthesized_expression "(cVar2 != '_')" ( (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" for ( ; (binary_expression "0 < iVar4" number_literal < identifier) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" { (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" identifier = identifier) ;) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" if (parenthesized_expression "(cVar2 == '_')" ( (binary_expression "cVar2 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" { (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" identifier = (subscript_expression "pcVar1[1]" identifier [ number_literal ])) ;) })) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" identifier = identifier) ;) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" if (parenthesized_expression "(cVar2 == 't')" ( (binary_expression "cVar2 == 't'" identifier == (char_literal "'t'" ' character ')) )) (compound_statement "{\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" { (expression_statement "local_50 = FUN_001d1450(&local_28,1,0);" (assignment_expression "local_50 = FUN_001d1450(&local_28,1,0)" identifier = (call_expression "FUN_001d1450(&local_28,1,0)" identifier (argument_list "(&local_28,1,0)" ( (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (local_50 != 0) goto LAB_001d1cf0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001d1cf0;" goto statement_identifier ;)) (labeled_statement "LAB_001d1f20:\n          local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" if (parenthesized_expression "(cVar2 == 'K')" ( (binary_expression "cVar2 == 'K'" identifier == (char_literal "'K'" ' character ')) )) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar6 = FUN_001cde90();" (assignment_expression "iVar6 = FUN_001cde90()" identifier = (call_expression "FUN_001cde90()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;" if (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" ( (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) || (parenthesized_expression "((int)param_1[4] <= iVar6)" ( (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) <= identifier) ))) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" * (cast_expression "(char **)(param_1[2] + iVar6 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar6 * 4)" ( (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            FUN_001ce230();\n          }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" else (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" { (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" if (parenthesized_expression "((*param_1 & 0x2000) == 0)" ( (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" ( (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }" { (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" identifier = identifier) ;) (expression_statement "local_50 = FUN_001cf7b0();" (assignment_expression "local_50 = FUN_001cf7b0()" identifier = (call_expression "FUN_001cf7b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_50 == 0) goto LAB_001d1f20;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" else (compound_statement "{\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" { (expression_statement "__n = FUN_001cdde0();" (assignment_expression "__n = FUN_001cdde0()" identifier = (call_expression "FUN_001cdde0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (__n == 0xffffffff) goto LAB_001d1f20;" if (parenthesized_expression "(__n == 0xffffffff)" ( (binary_expression "__n == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_001d1f20;" goto statement_identifier ;)) (expression_statement "__dest = (void *)FUN_001e4cc0(__n + 1);" (assignment_expression "__dest = (void *)FUN_001e4cc0(__n + 1)" identifier = (cast_expression "(void *)FUN_001e4cc0(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e4cc0(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_001ceef0(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001ceef0(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }" { (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" { (expression_statement "FUN_001ce150();" (call_expression "FUN_001ce150()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) }) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" else (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" { (if_statement "if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_001ce230();\n              }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar6 + __n" identifier + identifier)) ;) }))) (labeled_statement "LAB_001d1cf0:\n          FUN_001cdc20();" statement_identifier : (expression_statement "FUN_001cdc20();" (call_expression "FUN_001cdc20()" identifier (argument_list "()" ( ))) ;)) }))) (if_statement "if (iVar4 != 1) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_001d1d40:\n      FUN_001ce060(uVar3);" statement_identifier : (expression_statement "FUN_001ce060(uVar3);" (call_expression "FUN_001ce060(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;)) (if_statement "if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "((param_1[0xb] & 1) != 0)" ( (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" ( (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }" { (if_statement "if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }" if (parenthesized_expression "(*param_3 != param_3[1])" ( (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" * identifier) != (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n          FUN_001ce230();\n        }" { (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_34 != local_30) {\n          FUN_001ce190();\n        }" if (parenthesized_expression "(local_34 != local_30)" ( (binary_expression "local_34 != local_30" identifier != identifier) )) (compound_statement "{\n          FUN_001ce190();\n        }" { (expression_statement "FUN_001ce190();" (call_expression "FUN_001ce190()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n        FUN_001ce380();\n      }" else (compound_statement "{\n        FUN_001ce380();\n      }" { (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" if (parenthesized_expression "(local_34 != (void *)0x0)" ( (binary_expression "local_34 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return local_50;" return identifier ;) })) (return_statement "return local_50;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (char_literal ' character ') < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' character ')) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) }))) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_001d1b50(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" (identifier "FUN_001d1b50") (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1d1b5d;\n  uVar3 = FUN_001cdb80();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "char local_36;" (primitive_type "char") (identifier "local_36") (; ";")) (declaration "undefined1 local_35;" (type_identifier "undefined1") (identifier "local_35") (; ";")) (declaration "void *local_34;" (primitive_type "void") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "void *local_30;" (primitive_type "void") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "void *local_28;" (primitive_type "void") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "void *local_24;" (primitive_type "void") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1d1b5d;" (assignment_expression "uStack_14 = 0x1d1b5d" (identifier "uStack_14") (= "=") (number_literal "0x1d1b5d")) (; ";")) (expression_statement "uVar3 = FUN_001cdb80();" (assignment_expression "uVar3 = FUN_001cdb80()" (identifier "uVar3") (= "=") (call_expression "FUN_001cdb80()" (identifier "FUN_001cdb80") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" (if "if") (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" (( "(") (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" (( "(") (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" (identifier "param_4") (= "=") (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (& "&") (number_literal "1"))) (, ",") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" ({ "{") (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" (identifier "param_4") (= "=") (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" (identifier "local_30") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" (identifier "local_34") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" (identifier "local_28") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" (if "if") (parenthesized_expression "(*pcVar5 == 'K')" (( "(") (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'K'" (' "'") (character "K") (' "'"))) () ")")) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_001cde90();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }\n  }" ({ "{") (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" (identifier "iVar4") (= "=") (call_expression "FUN_001cde90()" (identifier "FUN_001cde90") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" (if "if") (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" (( "(") (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < (int)param_1[4])" (( "(") (binary_expression "iVar4 < (int)param_1[4]" (identifier "iVar4") (< "<") (cast_expression "(int)param_1[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }\n      goto LAB_001d1d40;\n    }" ({ "{") (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" (* "*") (cast_expression "(char **)(param_1[2] + iVar4 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[2] + iVar4 * 4)" (( "(") (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_001ce230();\n      }" (if "if") (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" (( "(") (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        FUN_001ce230();\n      }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_001d1d40;" (goto "goto") (statement_identifier "LAB_001d1d40") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" (else "else") (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" ({ "{") (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" (if "if") (parenthesized_expression "('0' < cVar2)" (( "(") (binary_expression "'0' < cVar2" (char_literal "'0'" (' "'") (character "0") (' "'")) (< "<") (identifier "cVar2")) () ")")) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }\nLAB_001d1d40:\n      FUN_001ce060(uVar3);\n      if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" ({ "{") (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" (if "if") (parenthesized_expression "(cVar2 < ':')" (( "(") (binary_expression "cVar2 < ':'" (identifier "cVar2") (< "<") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")")) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" ({ "{") (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" (identifier "local_35") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" (identifier "local_36") (= "=") (identifier "cVar2")) (; ";")) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" (identifier "iVar4") (= "=") (call_expression "strtol(&local_36,(char **)0x0,10)" (identifier "strtol") (argument_list "(&local_36,(char **)0x0,10)" (( "(") (pointer_expression "&local_36" (& "&") (identifier "local_36")) (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "2")) (+ "+") (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(*param_2 + 2) == '_')" (( "(") (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" (* "*") (cast_expression "(char *)(*param_2 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 2)" (( "(") (binary_expression "*param_2 + 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" (else "else") (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001cde90();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" ({ "{") (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" (if "if") (parenthesized_expression "(cVar2 != '_')" (( "(") (binary_expression "cVar2 != '_'" (identifier "cVar2") (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_001cde90();" (assignment_expression "iVar4 = FUN_001cde90()" (identifier "iVar4") (= "=") (call_expression "FUN_001cde90()" (identifier "FUN_001cde90") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar4 == -1)" (( "(") (binary_expression "iVar4 == -1" (identifier "iVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" (for "for") (( "(") (; ";") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) (; ";") (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }\n        if (iVar4 != 1) {\n          FUN_001ce230();\n        }\n      }" ({ "{") (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" (identifier "pcVar1") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" (identifier "cVar2") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" (identifier "pcVar5") (= "=") (identifier "pcVar1")) (; ";")) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" (if "if") (parenthesized_expression "(cVar2 == '_')" (( "(") (binary_expression "cVar2 == '_'" (identifier "cVar2") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" ({ "{") (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar1 + 1" (identifier "pcVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))) (; ";")) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar1[1]" (identifier "pcVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" (identifier "local_24") (= "=") (identifier "local_28")) (; ";")) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" (if "if") (parenthesized_expression "(cVar2 == 't')" (( "(") (binary_expression "cVar2 == 't'" (identifier "cVar2") (== "==") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (compound_statement "{\n          local_50 = FUN_001d1450(&local_28,1,0);\n          if (local_50 != 0) goto LAB_001d1cf0;\nLAB_001d1f20:\n          local_50 = 0;\n          break;\n        }" ({ "{") (expression_statement "local_50 = FUN_001d1450(&local_28,1,0);" (assignment_expression "local_50 = FUN_001d1450(&local_28,1,0)" (identifier "local_50") (= "=") (call_expression "FUN_001d1450(&local_28,1,0)" (identifier "FUN_001d1450") (argument_list "(&local_28,1,0)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_50 != 0) goto LAB_001d1cf0;" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1cf0;" (goto "goto") (statement_identifier "LAB_001d1cf0") (; ";"))) (labeled_statement "LAB_001d1f20:\n          local_50 = 0;" (statement_identifier "LAB_001d1f20") (: ":") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" (if "if") (parenthesized_expression "(cVar2 == 'K')" (( "(") (binary_expression "cVar2 == 'K'" (identifier "cVar2") (== "==") (char_literal "'K'" (' "'") (character "K") (' "'"))) () ")")) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_001cde90();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }\n        }" ({ "{") (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar6 = FUN_001cde90();" (assignment_expression "iVar6 = FUN_001cde90()" (identifier "iVar6") (= "=") (call_expression "FUN_001cde90()" (identifier "FUN_001cde90") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;" (if "if") (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" (( "(") (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "((int)param_1[4] <= iVar6)" (( "(") (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (<= "<=") (identifier "iVar6")) () ")"))) () ")")) (goto_statement "goto LAB_001d1f20;" (goto "goto") (statement_identifier "LAB_001d1f20") (; ";"))) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" (* "*") (cast_expression "(char **)(param_1[2] + iVar6 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[2] + iVar6 * 4)" (( "(") (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_001ce230();\n          }" (if "if") (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" (( "(") (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            FUN_001ce230();\n          }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" (else "else") (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_001d1cf0:\n          FUN_001cdc20();\n        }" ({ "{") (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }\n          else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" (if "if") (parenthesized_expression "((*param_1 & 0x2000) == 0)" (( "(") (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" (( "(") (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_001cf7b0();\n            if (local_50 == 0) goto LAB_001d1f20;\n            FUN_001ce380();\n          }" ({ "{") (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" (if "if") (parenthesized_expression "(local_28 != (void *)0x0)" (( "(") (binary_expression "local_28 != (void *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" (identifier "local_28") (= "=") (identifier "local_24")) (; ";")) (expression_statement "local_50 = FUN_001cf7b0();" (assignment_expression "local_50 = FUN_001cf7b0()" (identifier "local_50") (= "=") (call_expression "FUN_001cf7b0()" (identifier "FUN_001cf7b0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_50 == 0) goto LAB_001d1f20;" (if "if") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001d1f20;" (goto "goto") (statement_identifier "LAB_001d1f20") (; ";"))) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" (identifier "FUN_001ce380") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" (else "else") (compound_statement "{\n            __n = FUN_001cdde0();\n            if (__n == 0xffffffff) goto LAB_001d1f20;\n            __dest = (void *)FUN_001e4cc0(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" ({ "{") (expression_statement "__n = FUN_001cdde0();" (assignment_expression "__n = FUN_001cdde0()" (identifier "__n") (= "=") (call_expression "FUN_001cdde0()" (identifier "FUN_001cdde0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (__n == 0xffffffff) goto LAB_001d1f20;" (if "if") (parenthesized_expression "(__n == 0xffffffff)" (( "(") (binary_expression "__n == 0xffffffff" (identifier "__n") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_001d1f20;" (goto "goto") (statement_identifier "LAB_001d1f20") (; ";"))) (expression_statement "__dest = (void *)FUN_001e4cc0(__n + 1);" (assignment_expression "__dest = (void *)FUN_001e4cc0(__n + 1)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_001e4cc0(__n + 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e4cc0(__n + 1)" (identifier "FUN_001e4cc0") (argument_list "(__n + 1)" (( "(") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" (identifier "memcpy") (argument_list "(__dest,(void *)*param_2,__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" (* "*") (cast_expression "(undefined1 *)((int)__dest + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__dest + __n)" (( "(") (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001ceef0(__dest,*param_1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_001ceef0(__dest,*param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001ceef0(__dest,*param_1)" (identifier "FUN_001ceef0") (argument_list "(__dest,*param_1)" (( "(") (identifier "__dest") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }\n            }" ({ "{") (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (__n != 0) {\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_001ce150();\n                iVar6 = *param_2;\n              }" ({ "{") (expression_statement "FUN_001ce150();" (call_expression "FUN_001ce150()" (identifier "FUN_001ce150") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" (else "else") (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" ({ "{") (if_statement "if (*pcVar5 != '\0') {\n                FUN_001ce230();\n              }" (if "if") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                FUN_001ce230();\n              }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "free(__dest);" (call_expression "free(__dest)" (identifier "free") (argument_list "(__dest)" (( "(") (identifier "__dest") () ")"))) (; ";")) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar6 + __n" (identifier "iVar6") (+ "+") (identifier "__n"))) (; ";")) (} "}")))) (labeled_statement "LAB_001d1cf0:\n          FUN_001cdc20();" (statement_identifier "LAB_001d1cf0") (: ":") (expression_statement "FUN_001cdc20();" (call_expression "FUN_001cdc20()" (identifier "FUN_001cdc20") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (if_statement "if (iVar4 != 1) {\n          FUN_001ce230();\n        }" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          FUN_001ce230();\n        }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_001d1d40:\n      FUN_001ce060(uVar3);" (statement_identifier "LAB_001d1d40") (: ":") (expression_statement "FUN_001ce060(uVar3);" (call_expression "FUN_001ce060(uVar3)" (identifier "FUN_001ce060") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";"))) (if_statement "if (param_4 != 0) {\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_001ce230();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }\n        FUN_001ce380();\n      }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_001ce230();\n        }" (if "if") (parenthesized_expression "((param_1[0xb] & 1) != 0)" (( "(") (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" (( "(") (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_001ce230();\n        }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" (identifier "FUN_001ce380") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }\n      else {\n        FUN_001ce380();\n      }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }\n        if (local_34 != local_30) {\n          FUN_001ce190();\n        }\n      }" ({ "{") (if_statement "if (*param_3 != param_3[1]) {\n          FUN_001ce230();\n        }" (if "if") (parenthesized_expression "(*param_3 != param_3[1])" (( "(") (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n          FUN_001ce230();\n        }" ({ "{") (expression_statement "FUN_001ce230();" (call_expression "FUN_001ce230()" (identifier "FUN_001ce230") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_34 != local_30) {\n          FUN_001ce190();\n        }" (if "if") (parenthesized_expression "(local_34 != local_30)" (( "(") (binary_expression "local_34 != local_30" (identifier "local_34") (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n          FUN_001ce190();\n        }" ({ "{") (expression_statement "FUN_001ce190();" (call_expression "FUN_001ce190()" (identifier "FUN_001ce190") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        FUN_001ce380();\n      }" (else "else") (compound_statement "{\n        FUN_001ce380();\n      }" ({ "{") (expression_statement "FUN_001ce380();" (call_expression "FUN_001ce380()" (identifier "FUN_001ce380") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" (if "if") (parenthesized_expression "(local_28 != (void *)0x0)" (( "(") (binary_expression "local_28 != (void *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" (identifier "local_28") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" (if "if") (parenthesized_expression "(local_34 != (void *)0x0)" (( "(") (binary_expression "local_34 != (void *)0x0" (identifier "local_34") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" ({ "{") (expression_statement "free(local_34);" (call_expression "free(local_34)" (identifier "free") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (return_statement "return local_50;" (return "return") (identifier "local_50") (; ";")) (} "}"))) (return_statement "return local_50;" (return "return") (identifier "local_50") (; ";")) (} "}"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

int __regparm3
function_1(type_1 *work,char **mangled,type_2 *result,int var_2,int var_24)

{
  char var_7;
  int index;
  int var_5;
  size_t var_17;
  char *var_3;
  char *var_9;
  int var_12;
  int var_11;
  char num [2];
  type_2 temp;
  type_2 last_name;
  
  index = var_1(work);
  if ((var_2 != 0) && (var_2 = work->constructor & 1, var_2 == 0)) {
    var_2 = work->destructor & 1;
  }
  var_3 = *mangled;
  temp.e = (char *)0x0;
  temp.p = (char *)0x0;
  temp.b = (char *)0x0;
  last_name.e = (char *)0x0;
  last_name.p = (char *)0x0;
  last_name.b = (char *)0x0;
  if (*var_3 == 'K') {
    *mangled = var_3 + 1;
    var_5 = var_4(mangled);
    if ((var_5 != -1) && (var_5 < work->numk)) {
      var_11 = 1;
      var_3 = work->ktypevec[var_5];
      if ((var_3 != (char *)0x0) && (*var_3 != '\0')) {
        var_6(&temp,var_3);
      }
      goto LAB_001d1d40;
    }
  }
  else {
    var_7 = var_3[1];
    if ('0' < var_7) {
      if (var_7 < ':') {
        num[1] = '\0';
        num[0] = var_7;
        var_5 = var_8(num,(char **)0x0,10);
        *mangled = *mangled + ((*mangled)[2] == '_') + 2;
      }
      else {
        if (var_7 != '_') {
          return 0;
        }
        *mangled = var_3 + 1;
        var_5 = var_4(mangled);
        if (var_5 == -1) {
          return 0;
        }
      }
      var_11 = 1;
      for (; 0 < var_5; var_5 = var_5 + -1) {
        var_9 = *mangled;
        var_7 = *var_9;
        var_3 = var_9;
        if (var_7 == '_') {
          var_3 = var_9 + 1;
          *mangled = var_3;
          var_7 = var_9[1];
        }
        last_name.p = last_name.b;
        if (var_7 == 't') {
          var_11 = var_10(work,mangled,&temp,&last_name,1,0);
          if (var_11 != 0) goto LAB_001d1cf0;
LAB_001d1f20:
          var_11 = 0;
          break;
        }
        if (var_7 == 'K') {
          *mangled = var_3 + 1;
          var_12 = var_4(mangled);
          if ((var_12 == -1) || (work->numk <= var_12)) goto LAB_001d1f20;
          var_3 = work->ktypevec[var_12];
          if ((var_3 != (char *)0x0) && (*var_3 != '\0')) {
            var_6(&temp,var_3);
          }
        }
        else {
          if ((work->options & 0x2000U) == 0) {
            if (last_name.b != (char *)0x0) {
              var_13(last_name.b);
              last_name.p = (char *)0x0;
              last_name.e = (char *)0x0;
            }
            last_name.b = last_name.p;
            var_11 = var_14(work,mangled,&last_name);
            if (var_11 == 0) goto LAB_001d1f20;
            var_15(&temp,&last_name,(type_2 *)last_name.p);
          }
          else {
            var_17 = var_16(mangled);
            if (var_17 == 0xffffffff) goto LAB_001d1f20;
            var_3 = (char *)var_18(var_17 + 1);
            var_19(var_3,*mangled,var_17);
            var_3[var_17] = '\0';
            var_9 = var_20(var_3,work->options);
            if (var_9 == (char *)0x0) {
              var_9 = *mangled;
              if (var_17 != 0) {
                var_21(&temp,var_9,var_17);
                var_9 = *mangled;
              }
            }
            else {
              if (*var_9 != '\0') {
                var_6(&temp,var_9);
              }
              var_13(var_9);
              var_9 = *mangled;
            }
            var_13(var_3);
            *mangled = var_9 + var_17;
          }
LAB_001d1cf0:
          var_12 = (int)temp.p - (int)temp.b;
          if (temp.b == temp.p) {
            var_12 = 0;
          }
          var_22(work,temp.b,var_12);
        }
        if (var_5 != 1) {
          var_3 = "::";
          if ((work->options & 4) != 0) {
            var_3 = ".";
          }
          var_6(&temp,var_3);
        }
      }
LAB_001d1d40:
      var_5 = (int)temp.p - (int)temp.b;
      if (temp.b == temp.p) {
        var_5 = 0;
      }
      var_23((type_1 *)&work->btypevec,temp.b,var_5,index);
      if (var_2 != 0) {
        var_3 = ".";
        if ((work->options & 4) == 0) {
          var_3 = "::";
        }
        var_6(&temp,var_3);
        if ((work->destructor & 1) != 0) {
          var_6(&temp,"~");
        }
        var_15(&temp,&last_name,(type_2 *)last_name.p);
      }
      if (var_24 == 0) {
        if (result->b != result->p) {
          var_3 = ".";
          if ((work->options & 4) == 0) {
            var_3 = "::";
          }
          var_6(&temp,var_3);
        }
        if (temp.b != temp.p) {
          var_25(result,temp.b,(int)temp.p - (int)temp.b);
        }
      }
      else {
        var_15(result,&temp,(type_2 *)temp.p);
      }
      if (last_name.b != (char *)0x0) {
        var_13(last_name.b);
        last_name.p = (char *)0x0;
        last_name.e = (char *)0x0;
        last_name.b = (char *)0x0;
      }
      if (temp.b != (char *)0x0) {
        var_13(temp.b);
        return var_11;
      }
      return var_11;
    }
  }
  return 0;
}


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

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

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

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  size_t __n;
  void *__dest;
  char *pcVar5;
  int iVar6;
  int local_50;
  char local_36;
  undefined1 local_35;
  void *local_34;
  void *local_30;
  undefined4 local_2c;
  void *local_28;
  void *local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1d1b5d;
  uVar3 = FUN_001cdb80();
  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {
    param_4 = param_1[0xb] & 1;
  }
  pcVar5 = (char *)*param_2;
  local_2c = 0;
  local_30 = (void *)0x0;
  local_34 = (void *)0x0;
  local_20 = 0;
  local_24 = (void *)0x0;
  local_28 = (void *)0x0;
  if (*pcVar5 == 'K') {
    *param_2 = (int)(pcVar5 + 1);
    iVar4 = FUN_001cde90();
    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {
      local_50 = 1;
      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);
      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
        FUN_001ce230();
      }
      goto LAB_001d1d40;
    }
  }
  else {
    cVar2 = pcVar5[1];
    if ('0' < cVar2) {
      if (cVar2 < ':') {
        local_35 = 0;
        local_36 = cVar2;
        iVar4 = strtol(&local_36,(char **)0x0,10);
        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');
      }
      else {
        if (cVar2 != '_') {
          return 0;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_001cde90();
        if (iVar4 == -1) {
          return 0;
        }
      }
      local_50 = 1;
      for (; 0 < iVar4; iVar4 = iVar4 + -1) {
        pcVar1 = (char *)*param_2;
        cVar2 = *pcVar1;
        pcVar5 = pcVar1;
        if (cVar2 == '_') {
          pcVar5 = pcVar1 + 1;
          *param_2 = (int)pcVar5;
          cVar2 = pcVar1[1];
        }
        local_24 = local_28;
        if (cVar2 == 't') {
          local_50 = FUN_001d1450(&local_28,1,0);
          if (local_50 != 0) goto LAB_001d1cf0;
LAB_001d1f20:
          local_50 = 0;
          break;
        }
        if (cVar2 == 'K') {
          *param_2 = (int)(pcVar5 + 1);
          iVar6 = FUN_001cde90();
          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_001d1f20;
          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);
          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
            FUN_001ce230();
          }
        }
        else {
          if ((*param_1 & 0x2000) == 0) {
            if (local_28 != (void *)0x0) {
              free(local_28);
              local_24 = (void *)0x0;
              local_20 = 0;
            }
            local_28 = local_24;
            local_50 = FUN_001cf7b0();
            if (local_50 == 0) goto LAB_001d1f20;
            FUN_001ce380();
          }
          else {
            __n = FUN_001cdde0();
            if (__n == 0xffffffff) goto LAB_001d1f20;
            __dest = (void *)FUN_001e4cc0(__n + 1);
            memcpy(__dest,(void *)*param_2,__n);
            *(undefined1 *)((int)__dest + __n) = 0;
            pcVar5 = (char *)FUN_001ceef0(__dest,*param_1);
            if (pcVar5 == (char *)0x0) {
              iVar6 = *param_2;
              if (__n != 0) {
                FUN_001ce150();
                iVar6 = *param_2;
              }
            }
            else {
              if (*pcVar5 != '\0') {
                FUN_001ce230();
              }
              free(pcVar5);
              iVar6 = *param_2;
            }
            free(__dest);
            *param_2 = iVar6 + __n;
          }
LAB_001d1cf0:
          FUN_001cdc20();
        }
        if (iVar4 != 1) {
          FUN_001ce230();
        }
      }
LAB_001d1d40:
      FUN_001ce060(uVar3);
      if (param_4 != 0) {
        FUN_001ce230();
        if ((param_1[0xb] & 1) != 0) {
          FUN_001ce230();
        }
        FUN_001ce380();
      }
      if (param_5 == 0) {
        if (*param_3 != param_3[1]) {
          FUN_001ce230();
        }
        if (local_34 != local_30) {
          FUN_001ce190();
        }
      }
      else {
        FUN_001ce380();
      }
      if (local_28 != (void *)0x0) {
        free(local_28);
        local_24 = (void *)0x0;
        local_20 = 0;
        local_28 = (void *)0x0;
      }
      if (local_34 != (void *)0x0) {
        free(local_34);
        return local_50;
      }
      return local_50;
    }
  }
  return 0;
}

