
bfd_boolean pr_method_type(void *p,bfd_boolean domain,int argcount,bfd_boolean varargs)

{
  bfd_boolean bVar1;
  char *pcVar2;
  size_t sVar3;
  char *pcVar4;
  undefined8 *__ptr;
  byte *pbVar5;
  long lVar6;
  int iVar7;
  undefined8 *puVar8;
  byte *pbVar9;
  pr_handle *info;
  byte *pbVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  byte *local_48;
  
  bVar13 = 0;
  iVar7 = 10;
  local_48 = (byte *)0x0;
  if (domain == 0) goto LAB_00127451;
  bVar1 = substitute_type((pr_handle *)p,"");
  if (bVar1 == 0) {
    return 0;
  }
  pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10));
  bVar11 = false;
  bVar12 = pbVar5 == (byte *)0x0;
  if (bVar12) {
    return 0;
  }
  lVar6 = 6;
  pbVar9 = pbVar5;
  pbVar10 = (byte *)0x14585c;
  do {
    if (lVar6 == 0) break;
    lVar6 = lVar6 + -1;
    bVar11 = *pbVar9 < *pbVar10;
    bVar12 = *pbVar9 == *pbVar10;
    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
  } while (bVar12);
  bVar11 = (!bVar11 && !bVar12) == bVar11;
  if (bVar11) {
    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);
    bVar11 = pcVar2 == (char *)0x0;
    local_48 = pbVar5 + 6;
    if (!bVar11) goto LAB_00127642;
  }
  else {
LAB_00127642:
    bVar12 = false;
    lVar6 = 0xc;
    pbVar9 = pbVar5;
    pbVar10 = (byte *)"union class ";
    do {
      if (lVar6 == 0) break;
      lVar6 = lVar6 + -1;
      bVar12 = *pbVar9 < *pbVar10;
      bVar11 = *pbVar9 == *pbVar10;
      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
    } while (bVar11);
    local_48 = pbVar5;
    if ((!bVar12 && !bVar11) == bVar12) {
      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);
      local_48 = pbVar5 + 0xc;
      if (pcVar2 != (char *)0x0) {
        local_48 = pbVar5;
      }
    }
  }
  sVar3 = strlen((char *)local_48);
  iVar7 = (int)sVar3 + 10;
LAB_00127451:
  if (argcount < 1) {
    __ptr = (undefined8 *)0x0;
    iVar7 = iVar7 + 0xf;
  }
  else {
    lVar6 = (long)(argcount + -1);
    __ptr = (undefined8 *)xmalloc((long)argcount << 3);
    do {
      bVar1 = substitute_type((pr_handle *)p,"");
      if (bVar1 == 0) {
        free(__ptr);
        return 0;
      }
      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));
      __ptr[lVar6] = pcVar2;
      if (pcVar2 == (char *)0x0) {
        free(__ptr);
        return 0;
      }
      lVar6 = lVar6 + -1;
      sVar3 = strlen(pcVar2);
      iVar7 = iVar7 + 2 + (int)sVar3;
    } while ((int)lVar6 != -1);
    if (varargs != 0) {
      iVar7 = iVar7 + 5;
    }
  }
  pcVar2 = (char *)xmalloc(iVar7);
  if (domain == 0) {
    *pcVar2 = '\0';
  }
  else {
    strcpy(pcVar2,(char *)local_48);
  }
  sVar3 = strlen(pcVar2);
  builtin_strncpy(pcVar2 + sVar3,"::| (",6);
  if (argcount < 0) {
    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);
  }
  else if (argcount == 0) {
    if (varargs != 0) {
      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);
    }
  }
  else {
    puVar8 = __ptr;
    while( true ) {
      sVar3 = strlen(pcVar2);
      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);
      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;
      pcVar4[2] = '\0';
      pcVar4[0] = ',';
      pcVar4[1] = ' ';
      puVar8 = puVar8 + 1;
    }
    if (varargs != 0) {
      builtin_strncpy(pcVar4,", ...",6);
    }
    free(__ptr);
  }
  sVar3 = strlen(pcVar2);
  (pcVar2 + sVar3)[0] = ')';
  (pcVar2 + sVar3)[1] = '\0';
  bVar1 = substitute_type((pr_handle *)p,pcVar2);
  if (bVar1 == 0) {
    return 0;
  }
  free(pcVar2);
  return 1;
}



undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  char *pcVar5;
  undefined8 *__ptr;
  byte *pbVar6;
  long lVar7;
  undefined8 *puVar8;
  byte *pbVar9;
  byte *pbVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  byte *local_48;
  
  bVar13 = 0;
  iVar1 = 10;
  local_48 = (byte *)0x0;
  if (param_2 == 0) goto LAB_00127451;
  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);
  if (iVar1 == 0) {
    return 0;
  }
  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);
  bVar11 = false;
  bVar12 = pbVar6 == (byte *)0x0;
  if (bVar12) {
    return 0;
  }
  lVar7 = 6;
  pbVar9 = pbVar6;
  pbVar10 = (byte *)0x14585c;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar11 = *pbVar9 < *pbVar10;
    bVar12 = *pbVar9 == *pbVar10;
    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
  } while (bVar12);
  bVar11 = (!bVar11 && !bVar12) == bVar11;
  if (bVar11) {
    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);
    bVar11 = pcVar3 == (char *)0x0;
    local_48 = pbVar6 + 6;
    if (!bVar11) goto LAB_00127642;
  }
  else {
LAB_00127642:
    bVar12 = false;
    lVar7 = 0xc;
    pbVar9 = pbVar6;
    pbVar10 = (byte *)"union class ";
    do {
      if (lVar7 == 0) break;
      lVar7 = lVar7 + -1;
      bVar12 = *pbVar9 < *pbVar10;
      bVar11 = *pbVar9 == *pbVar10;
      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
    } while (bVar11);
    local_48 = pbVar6;
    if ((!bVar12 && !bVar11) == bVar12) {
      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);
      local_48 = pbVar6 + 0xc;
      if (pcVar3 != (char *)0x0) {
        local_48 = pbVar6;
      }
    }
  }
  sVar4 = strlen((char *)local_48);
  iVar1 = (int)sVar4 + 10;
LAB_00127451:
  if (param_3 < 1) {
    __ptr = (undefined8 *)0x0;
    iVar1 = iVar1 + 0xf;
  }
  else {
    lVar7 = (long)(param_3 + -1);
    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);
    do {
      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);
      if (iVar2 == 0) {
        free(__ptr);
        return 0;
      }
      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);
      __ptr[lVar7] = pcVar3;
      if (pcVar3 == (char *)0x0) {
        free(__ptr);
        return 0;
      }
      lVar7 = lVar7 + -1;
      sVar4 = strlen(pcVar3);
      iVar1 = iVar1 + 2 + (int)sVar4;
    } while ((int)lVar7 != -1);
    if (param_4 != 0) {
      iVar1 = iVar1 + 5;
    }
  }
  pcVar3 = (char *)xmalloc(iVar1);
  if (param_2 == 0) {
    *pcVar3 = '\0';
  }
  else {
    strcpy(pcVar3,(char *)local_48);
  }
  sVar4 = strlen(pcVar3);
  builtin_strncpy(pcVar3 + sVar4,"::| (",6);
  if (param_3 < 0) {
    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);
  }
  else if (param_3 == 0) {
    if (param_4 != 0) {
      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);
    }
  }
  else {
    puVar8 = __ptr;
    while( true ) {
      sVar4 = strlen(pcVar3);
      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);
      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;
      pcVar5[2] = '\0';
      pcVar5[0] = ',';
      pcVar5[1] = ' ';
      puVar8 = puVar8 + 1;
    }
    if (param_4 != 0) {
      builtin_strncpy(pcVar5,", ...",6);
    }
    free(__ptr);
  }
  sVar4 = strlen(pcVar3);
  (pcVar3 + sVar4)[0] = ')';
  (pcVar3 + sVar4)[1] = '\0';
  iVar1 = FUN_00127110(param_1,pcVar3);
  if (iVar1 == 0) {
    return 0;
  }
  free(pcVar3);
  return 1;
}


PUSH R15
PUSH R14
MOV R14D,EDX
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
MOV EBP,0xa
PUSH RBX
SUB RSP,0x18
MOV dword ptr [RSP + 0x8],ESI
MOV dword ptr [RSP + 0xc],ECX
MOV qword ptr [RSP],0x0
TEST ESI,ESI
JNZ 0x001275b8
TEST R14D,R14D
JG 0x00127540
ADD EBP,0xf
XOR R13D,R13D
MOV EDI,EBP
CALL 0x00107350
MOV R11D,dword ptr [RSP + 0x8]
MOV RBX,RAX
TEST R11D,R11D
JNZ 0x00127690
MOV byte ptr [RAX],0x0
MOV RDI,RBX
CALL 0x00107250
MOV R10D,0x28
LEA RDX,[RBX + RAX*0x1]
MOV dword ptr [RDX],0x207c3a3a
MOV word ptr [RDX + 0x4],R10W
TEST R14D,R14D
JS 0x001276a8
JZ 0x00127710
LEA EAX,[R14 + -0x1]
MOV RBP,R13
LEA R14,[R13 + RAX*0x8 + 0x8]
JMP 0x001274c4
MOV EDI,0x202c
MOV byte ptr [RAX + 0x2],0x0
MOV word ptr [RAX],DI
MOV RDI,RBX
ADD RBP,0x8
CALL 0x00107250
MOV RSI,qword ptr [RBP + -0x8]
LEA RDI,[RBX + RAX*0x1]
CALL 0x00107220
CMP R14,RBP
JNZ 0x001274b8
MOV ESI,dword ptr [RSP + 0xc]
TEST ESI,ESI
JNZ 0x001275e0
MOV RDI,R13
CALL 0x00107070
MOV RDI,RBX
CALL 0x00107250
MOV EDX,0x29
MOV RSI,RBX
MOV RDI,R12
MOV word ptr [RBX + RAX*0x1],DX
CALL 0x00127110
TEST EAX,EAX
JZ 0x001275c8
MOV RDI,RBX
CALL 0x00107070
ADD RSP,0x18
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVSXD RDI,R14D
LEA EBX,[R14 + -0x1]
LEA R15,[R12 + 0x10]
SHL RDI,0x3
MOVSXD RBX,EBX
CALL 0x00107350
MOV R13,RAX
NOP dword ptr [RAX + RAX*0x1]
LEA RSI,[0x13da2a]
MOV RDI,R12
CALL 0x00127110
TEST EAX,EAX
JZ 0x001276d8
MOV RDI,R15
CALL 0x00126930
MOV qword ptr [R13 + RBX*0x8],RAX
TEST RAX,RAX
JZ 0x001276f8
MOV RDI,RAX
SUB RBX,0x1
CALL 0x00107250
LEA EBP,[RBP + RAX*0x1 + 0x2]
CMP EBX,-0x1
JNZ 0x00127560
MOV EBX,dword ptr [RSP + 0xc]
LEA EAX,[RBP + 0x5]
TEST EBX,EBX
CMOVNZ EBP,EAX
JMP 0x00127460
LEA RSI,[0x13da2a]
CALL 0x00127110
TEST EAX,EAX
JNZ 0x001275f8
ADD RSP,0x18
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV ECX,0x202c
MOV dword ptr [RAX + 0x2],0x2e2e2e
MOV word ptr [RAX],CX
JMP 0x001274ee
LEA RDI,[R12 + 0x10]
CALL 0x00126930
MOV RSI,RAX
TEST RAX,RAX
JZ 0x001275c8
MOV ECX,0x6
LEA RDI,[0x14585c]
MOV RDX,RAX
MOV qword ptr [RSP],RAX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00127642
LEA RBX,[RDX + 0x6]
MOV ESI,0x20
MOV RDI,RBX
CALL 0x00107280
TEST RAX,RAX
JZ 0x00127705
MOV RSI,qword ptr [RSP]
MOV ECX,0xc
LEA RDI,[0x145856]
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0012767d
MOV R15,qword ptr [RSP]
MOV ESI,0x20
LEA RBX,[R15 + 0xc]
MOV RDI,RBX
CALL 0x00107280
TEST RAX,RAX
CMOVNZ RBX,R15
MOV qword ptr [RSP],RBX
MOV RDI,qword ptr [RSP]
CALL 0x00107250
LEA EBP,[RAX + 0xa]
JMP 0x00127451
MOV RSI,qword ptr [RSP]
MOV RDI,RAX
CALL 0x001070f0
JMP 0x0012747b
LEA RAX,[RBX + RAX*0x1 + 0x5]
MOV R8D,0x2f
MOV RCX,0x6f6e6b6e75202a2f
MOV qword ptr [RAX],RCX
MOV dword ptr [RAX + 0x8],0x2a206e77
MOV word ptr [RAX + 0xc],R8W
JMP 0x001274f6
MOV RDI,R13
MOV dword ptr [RSP],EAX
CALL 0x00107070
MOV EAX,dword ptr [RSP]
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R13
CALL 0x00107070
JMP 0x001275c8
MOV qword ptr [RSP],RBX
JMP 0x0012767d
MOV R9D,dword ptr [RSP + 0xc]
TEST R9D,R9D
JZ 0x001274f6
MOV dword ptr [RBX + RAX*0x1 + 0x5],0x2e2e2e
JMP 0x001274f6
(translation_unit "undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" type_identifier (function_declarator "FUN_00127420(long param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(long param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = 10;" (assignment_expression "iVar1 = 10" identifier = number_literal) ;) (expression_statement "local_48 = (byte *)0x0;" (assignment_expression "local_48 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_2 == 0) goto LAB_00127451;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00127451;" goto statement_identifier ;)) (expression_statement "iVar1 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar1 = FUN_00127110(param_1,&DAT_0013da2a)" identifier = (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" identifier (argument_list "(param_1,&DAT_0013da2a)" ( identifier , (pointer_expression "&DAT_0013da2a" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10)" identifier = (cast_expression "(byte *)FUN_00126930(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00126930(param_1 + 0x10)" identifier (argument_list "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = pbVar6 == (byte *)0x0;" (assignment_expression "bVar12 = pbVar6 == (byte *)0x0" identifier = (binary_expression "pbVar6 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar12) {\n    return 0;\n  }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar7 = 6;" (assignment_expression "lVar7 = 6" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)0x14585c;" (assignment_expression "pbVar10 = (byte *)0x14585c" identifier = (cast_expression "(byte *)0x14585c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar11 = (!bVar11 && !bVar12) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar12) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" ( (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }" { (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 6),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 6),0x20)" identifier = (call_expression "strchr((char *)(pbVar6 + 6),0x20)" identifier (argument_list "((char *)(pbVar6 + 6),0x20)" ( (cast_expression "(char *)(pbVar6 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 6)" ( (binary_expression "pbVar6 + 6" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "bVar11 = pcVar3 == (char *)0x0;" (assignment_expression "bVar11 = pcVar3 == (char *)0x0" identifier = (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_48 = pbVar6 + 6;" (assignment_expression "local_48 = pbVar6 + 6" identifier = (binary_expression "pbVar6 + 6" identifier + number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00127642;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00127642;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" { (labeled_statement "LAB_00127642:\n    bVar12 = false;" statement_identifier : (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;)) (expression_statement "lVar7 = 0xc;" (assignment_expression "lVar7 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"union class ";" (assignment_expression "pbVar10 = (byte *)"union class "" identifier = (cast_expression "(byte *)"union class "" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""union class "" " string_content "))) ;) (do_statement "do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar10;" (assignment_expression "bVar11 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" identifier = identifier) ;) (if_statement "if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" if (parenthesized_expression "((!bVar12 && !bVar11) == bVar12)" ( (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" { (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20)" identifier = (call_expression "strchr((char *)(pbVar6 + 0xc),0x20)" identifier (argument_list "((char *)(pbVar6 + 0xc),0x20)" ( (cast_expression "(char *)(pbVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0xc)" ( (binary_expression "pbVar6 + 0xc" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "local_48 = pbVar6 + 0xc;" (assignment_expression "local_48 = pbVar6 + 0xc" identifier = (binary_expression "pbVar6 + 0xc" identifier + number_literal)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_48 = pbVar6;\n      }" { (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" identifier = identifier) ;) })) })) }))) (expression_statement "sVar4 = strlen((char *)local_48);" (assignment_expression "sVar4 = strlen((char *)local_48)" identifier = (call_expression "strlen((char *)local_48)" identifier (argument_list "((char *)local_48)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar1 = (int)sVar4 + 10;" (assignment_expression "iVar1 = (int)sVar4 + 10" identifier = (binary_expression "(int)sVar4 + 10" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (labeled_statement "LAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" statement_identifier : (if_statement "if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }" { (expression_statement "__ptr = (undefined8 *)0x0;" (assignment_expression "__ptr = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar1 = iVar1 + 0xf;" (assignment_expression "iVar1 = iVar1 + 0xf" identifier = (binary_expression "iVar1 + 0xf" identifier + number_literal)) ;) }) (else_clause "else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" else (compound_statement "{\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" { (expression_statement "lVar7 = (long)(param_3 + -1);" (assignment_expression "lVar7 = (long)(param_3 + -1)" identifier = (cast_expression "(long)(param_3 + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 + -1)" ( (binary_expression "param_3 + -1" identifier + number_literal) )))) ;) (expression_statement "__ptr = (undefined8 *)xmalloc((long)param_3 << 3);" (assignment_expression "__ptr = (undefined8 *)xmalloc((long)param_3 << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)param_3 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)param_3 << 3)" identifier (argument_list "((long)param_3 << 3)" ( (binary_expression "(long)param_3 << 3" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (do_statement "do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);" do (compound_statement "{\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    }" { (expression_statement "iVar2 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar2 = FUN_00127110(param_1,&DAT_0013da2a)" identifier = (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" identifier (argument_list "(param_1,&DAT_0013da2a)" ( identifier , (pointer_expression "&DAT_0013da2a" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar3 = (char *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pcVar3 = (char *)FUN_00126930(param_1 + 0x10)" identifier = (cast_expression "(char *)FUN_00126930(param_1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00126930(param_1 + 0x10)" identifier (argument_list "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "__ptr[lVar7] = pcVar3;" (assignment_expression "__ptr[lVar7] = pcVar3" (subscript_expression "__ptr[lVar7]" identifier [ identifier ]) = identifier) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "iVar1 = iVar1 + 2 + (int)sVar4;" (assignment_expression "iVar1 = iVar1 + 2 + (int)sVar4" identifier = (binary_expression "iVar1 + 2 + (int)sVar4" (binary_expression "iVar1 + 2" identifier + number_literal) + (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((int)lVar7 != -1)" ( (binary_expression "(int)lVar7 != -1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (if_statement "if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = iVar1 + 5;\n    }" { (expression_statement "iVar1 = iVar1 + 5;" (assignment_expression "iVar1 = iVar1 + 5" identifier = (binary_expression "iVar1 + 5" identifier + number_literal)) ;) })) })))) (expression_statement "pcVar3 = (char *)xmalloc(iVar1);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar1)" identifier = (cast_expression "(char *)xmalloc(iVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))))) ;) (if_statement "if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    *pcVar3 = '\0';\n  }" { (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n    strcpy(pcVar3,(char *)local_48);\n  }" else (compound_statement "{\n    strcpy(pcVar3,(char *)local_48);\n  }" { (expression_statement "strcpy(pcVar3,(char *)local_48);" (call_expression "strcpy(pcVar3,(char *)local_48)" identifier (argument_list "(pcVar3,(char *)local_48)" ( identifier , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) }))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "builtin_strncpy(pcVar3 + sVar4,"::| (",6);" (call_expression "builtin_strncpy(pcVar3 + sVar4,"::| (",6)" identifier (argument_list "(pcVar3 + sVar4,"::| (",6)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) , (string_literal ""::| ("" " string_content ") , number_literal ))) ;) (if_statement "if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(param_3 < 0)" ( (binary_expression "param_3 < 0" identifier < number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe)" identifier (argument_list "(pcVar3 + sVar4 + 5,"/* unknown */",0xe)" ( (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" identifier + identifier) + number_literal) , (string_literal ""/* unknown */"" " string_content ") , number_literal ))) ;) }) (else_clause "else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" else (if_statement "if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }" { (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" { (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4)" identifier (argument_list "(pcVar3 + sVar4 + 5,"...",4)" ( (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" identifier + identifier) + number_literal) , (string_literal ""..."" " string_content ") , number_literal ))) ;) })) }) (else_clause "else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" else (compound_statement "{\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" { (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" identifier = identifier) ;) (while_statement "while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" { (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);" (assignment_expression "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8)" identifier = (call_expression "stpcpy(pcVar3 + sVar4,(char *)*puVar8)" identifier (argument_list "(pcVar3 + sVar4,(char *)*puVar8)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) , (cast_expression "(char *)*puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) )))) ;) (if_statement "if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;" if (parenthesized_expression "(__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1)" ( (binary_expression "__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1" (binary_expression "__ptr + (ulong)(param_3 - 1) + 1" (binary_expression "__ptr + (ulong)(param_3 - 1)" identifier + (call_expression "(ulong)(param_3 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_3 - 1)" ( (binary_expression "param_3 - 1" identifier - number_literal) )))) + number_literal) == (binary_expression "puVar8 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar5[2] = '\0';" (assignment_expression "pcVar5[2] = '\0'" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar5[0] = ',';" (assignment_expression "pcVar5[0] = ','" (subscript_expression "pcVar5[0]" identifier [ number_literal ]) = (char_literal "','" ' character ')) ;) (expression_statement "pcVar5[1] = ' ';" (assignment_expression "pcVar5[1] = ' '" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (char_literal "' '" ' character ')) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar5,", ...",6);\n    }" { (expression_statement "builtin_strncpy(pcVar5,", ...",6);" (call_expression "builtin_strncpy(pcVar5,", ...",6)" identifier (argument_list "(pcVar5,", ...",6)" ( identifier , (string_literal "", ..."" " string_content ") , number_literal ))) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "(pcVar3 + sVar4)[0] = ')';" (assignment_expression "(pcVar3 + sVar4)[0] = ')'" (subscript_expression "(pcVar3 + sVar4)[0]" (parenthesized_expression "(pcVar3 + sVar4)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) )) [ number_literal ]) = (char_literal "')'" ' character ')) ;) (expression_statement "(pcVar3 + sVar4)[1] = '\0';" (assignment_expression "(pcVar3 + sVar4)[1] = '\0'" (subscript_expression "(pcVar3 + sVar4)[1]" (parenthesized_expression "(pcVar3 + sVar4)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) )) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar1 = FUN_00127110(param_1,pcVar3);" (assignment_expression "iVar1 = FUN_00127110(param_1,pcVar3)" identifier = (call_expression "FUN_00127110(param_1,pcVar3)" identifier (argument_list "(param_1,pcVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bfd_boolean pr_method_type(void *p,bfd_boolean domain,int argcount,bfd_boolean varargs)\n\n{\n  bfd_boolean bVar1;\n  char *pcVar2;\n  size_t sVar3;\n  char *pcVar4;\n  undefined8 *__ptr;\n  byte *pbVar5;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  pr_handle *info;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar7 = 10;\n  local_48 = (byte *)0x0;\n  if (domain == 0) goto LAB_00127451;\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10));\n  bVar11 = false;\n  bVar12 = pbVar5 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar6 = 6;\n  pbVar9 = pbVar5;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);\n    bVar11 = pcVar2 == (char *)0x0;\n    local_48 = pbVar5 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }\n  sVar3 = strlen((char *)local_48);\n  iVar7 = (int)sVar3 + 10;\nLAB_00127451:\n  if (argcount < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }\n  else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar7);\n  if (domain == 0) {\n    *pcVar2 = '\0';\n  }\n  else {\n    strcpy(pcVar2,(char *)local_48);\n  }\n  sVar3 = strlen(pcVar2);\n  builtin_strncpy(pcVar2 + sVar3,"::| (",6);\n  if (argcount < 0) {\n    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);\n  }\n  else if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar3 = strlen(pcVar2);\n  (pcVar2 + sVar3)[0] = ')';\n  (pcVar2 + sVar3)[1] = '\0';\n  bVar1 = substitute_type((pr_handle *)p,pcVar2);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  free(pcVar2);\n  return 1;\n}\n\n" (function_definition "bfd_boolean pr_method_type(void *p,bfd_boolean domain,int argcount,bfd_boolean varargs)\n\n{\n  bfd_boolean bVar1;\n  char *pcVar2;\n  size_t sVar3;\n  char *pcVar4;\n  undefined8 *__ptr;\n  byte *pbVar5;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  pr_handle *info;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar7 = 10;\n  local_48 = (byte *)0x0;\n  if (domain == 0) goto LAB_00127451;\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10));\n  bVar11 = false;\n  bVar12 = pbVar5 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar6 = 6;\n  pbVar9 = pbVar5;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);\n    bVar11 = pcVar2 == (char *)0x0;\n    local_48 = pbVar5 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }\n  sVar3 = strlen((char *)local_48);\n  iVar7 = (int)sVar3 + 10;\nLAB_00127451:\n  if (argcount < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }\n  else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar7);\n  if (domain == 0) {\n    *pcVar2 = '\0';\n  }\n  else {\n    strcpy(pcVar2,(char *)local_48);\n  }\n  sVar3 = strlen(pcVar2);\n  builtin_strncpy(pcVar2 + sVar3,"::| (",6);\n  if (argcount < 0) {\n    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);\n  }\n  else if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar3 = strlen(pcVar2);\n  (pcVar2 + sVar3)[0] = ')';\n  (pcVar2 + sVar3)[1] = '\0';\n  bVar1 = substitute_type((pr_handle *)p,pcVar2);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  free(pcVar2);\n  return 1;\n}" type_identifier (function_declarator "pr_method_type(void *p,bfd_boolean domain,int argcount,bfd_boolean varargs)" identifier (parameter_list "(void *p,bfd_boolean domain,int argcount,bfd_boolean varargs)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "bfd_boolean domain" type_identifier identifier) , (parameter_declaration "int argcount" primitive_type identifier) , (parameter_declaration "bfd_boolean varargs" type_identifier identifier) ))) (compound_statement "{\n  bfd_boolean bVar1;\n  char *pcVar2;\n  size_t sVar3;\n  char *pcVar4;\n  undefined8 *__ptr;\n  byte *pbVar5;\n  long lVar6;\n  int iVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  pr_handle *info;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar7 = 10;\n  local_48 = (byte *)0x0;\n  if (domain == 0) goto LAB_00127451;\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10));\n  bVar11 = false;\n  bVar12 = pbVar5 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar6 = 6;\n  pbVar9 = pbVar5;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);\n    bVar11 = pcVar2 == (char *)0x0;\n    local_48 = pbVar5 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }\n  sVar3 = strlen((char *)local_48);\n  iVar7 = (int)sVar3 + 10;\nLAB_00127451:\n  if (argcount < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }\n  else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }\n  pcVar2 = (char *)xmalloc(iVar7);\n  if (domain == 0) {\n    *pcVar2 = '\0';\n  }\n  else {\n    strcpy(pcVar2,(char *)local_48);\n  }\n  sVar3 = strlen(pcVar2);\n  builtin_strncpy(pcVar2 + sVar3,"::| (",6);\n  if (argcount < 0) {\n    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);\n  }\n  else if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar3 = strlen(pcVar2);\n  (pcVar2 + sVar3)[0] = ')';\n  (pcVar2 + sVar3)[1] = '\0';\n  bVar1 = substitute_type((pr_handle *)p,pcVar2);\n  if (bVar1 == 0) {\n    return 0;\n  }\n  free(pcVar2);\n  return 1;\n}" { (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "pr_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 10;" (assignment_expression "iVar7 = 10" identifier = number_literal) ;) (expression_statement "local_48 = (byte *)0x0;" (assignment_expression "local_48 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (domain == 0) goto LAB_00127451;" if (parenthesized_expression "(domain == 0)" ( (binary_expression "domain == 0" identifier == number_literal) )) (goto_statement "goto LAB_00127451;" goto statement_identifier ;)) (expression_statement "bVar1 = substitute_type((pr_handle *)p,"");" (assignment_expression "bVar1 = substitute_type((pr_handle *)p,"")" identifier = (call_expression "substitute_type((pr_handle *)p,"")" identifier (argument_list "((pr_handle *)p,"")" ( (cast_expression "(pr_handle *)p" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal """" " ") )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10));" (assignment_expression "pbVar5 = (byte *)pop_type((pr_handle *)((long)p + 0x10))" identifier = (cast_expression "(byte *)pop_type((pr_handle *)((long)p + 0x10))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "pop_type((pr_handle *)((long)p + 0x10))" identifier (argument_list "((pr_handle *)((long)p + 0x10))" ( (cast_expression "(pr_handle *)((long)p + 0x10)" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 0x10)" ( (binary_expression "(long)p + 0x10" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = pbVar5 == (byte *)0x0;" (assignment_expression "bVar12 = pbVar5 == (byte *)0x0" identifier = (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar12) {\n    return 0;\n  }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar6 = 6;" (assignment_expression "lVar6 = 6" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)0x14585c;" (assignment_expression "pbVar10 = (byte *)0x14585c" identifier = (cast_expression "(byte *)0x14585c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);" do (compound_statement "{\n    if (lVar6 == 0) break;\n    lVar6 = lVar6 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar11 = (!bVar11 && !bVar12) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar12) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" ( (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);\n    bVar11 = pcVar2 == (char *)0x0;\n    local_48 = pbVar5 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    pcVar2 = strchr((char *)(pbVar5 + 6),0x20);\n    bVar11 = pcVar2 == (char *)0x0;\n    local_48 = pbVar5 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }" { (expression_statement "pcVar2 = strchr((char *)(pbVar5 + 6),0x20);" (assignment_expression "pcVar2 = strchr((char *)(pbVar5 + 6),0x20)" identifier = (call_expression "strchr((char *)(pbVar5 + 6),0x20)" identifier (argument_list "((char *)(pbVar5 + 6),0x20)" ( (cast_expression "(char *)(pbVar5 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 6)" ( (binary_expression "pbVar5 + 6" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "bVar11 = pcVar2 == (char *)0x0;" (assignment_expression "bVar11 = pcVar2 == (char *)0x0" identifier = (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_48 = pbVar5 + 6;" (assignment_expression "local_48 = pbVar5 + 6" identifier = (binary_expression "pbVar5 + 6" identifier + number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00127642;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00127642;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00127642:\n    bVar12 = false;\n    lVar6 = 0xc;\n    pbVar9 = pbVar5;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar5;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }\n  }" { (labeled_statement "LAB_00127642:\n    bVar12 = false;" statement_identifier : (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;)) (expression_statement "lVar6 = 0xc;" (assignment_expression "lVar6 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar5;" (assignment_expression "pbVar9 = pbVar5" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"union class ";" (assignment_expression "pbVar10 = (byte *)"union class "" identifier = (cast_expression "(byte *)"union class "" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""union class "" " string_content "))) ;) (do_statement "do {\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar6 == 0) break;\n      lVar6 = lVar6 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    }" { (if_statement "if (lVar6 == 0) break;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar10;" (assignment_expression "bVar11 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "local_48 = pbVar5;" (assignment_expression "local_48 = pbVar5" identifier = identifier) ;) (if_statement "if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }" if (parenthesized_expression "((!bVar12 && !bVar11) == bVar12)" ( (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n      pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);\n      local_48 = pbVar5 + 0xc;\n      if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }\n    }" { (expression_statement "pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20);" (assignment_expression "pcVar2 = strchr((char *)(pbVar5 + 0xc),0x20)" identifier = (call_expression "strchr((char *)(pbVar5 + 0xc),0x20)" identifier (argument_list "((char *)(pbVar5 + 0xc),0x20)" ( (cast_expression "(char *)(pbVar5 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar5 + 0xc)" ( (binary_expression "pbVar5 + 0xc" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "local_48 = pbVar5 + 0xc;" (assignment_expression "local_48 = pbVar5 + 0xc" identifier = (binary_expression "pbVar5 + 0xc" identifier + number_literal)) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n        local_48 = pbVar5;\n      }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_48 = pbVar5;\n      }" { (expression_statement "local_48 = pbVar5;" (assignment_expression "local_48 = pbVar5" identifier = identifier) ;) })) })) }))) (expression_statement "sVar3 = strlen((char *)local_48);" (assignment_expression "sVar3 = strlen((char *)local_48)" identifier = (call_expression "strlen((char *)local_48)" identifier (argument_list "((char *)local_48)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar7 = (int)sVar3 + 10;" (assignment_expression "iVar7 = (int)sVar3 + 10" identifier = (binary_expression "(int)sVar3 + 10" (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (labeled_statement "LAB_00127451:\n  if (argcount < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }\n  else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }" statement_identifier : (if_statement "if (argcount < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }\n  else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }" if (parenthesized_expression "(argcount < 1)" ( (binary_expression "argcount < 1" identifier < number_literal) )) (compound_statement "{\n    __ptr = (undefined8 *)0x0;\n    iVar7 = iVar7 + 0xf;\n  }" { (expression_statement "__ptr = (undefined8 *)0x0;" (assignment_expression "__ptr = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar7 = iVar7 + 0xf;" (assignment_expression "iVar7 = iVar7 + 0xf" identifier = (binary_expression "iVar7 + 0xf" identifier + number_literal)) ;) }) (else_clause "else {\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }" else (compound_statement "{\n    lVar6 = (long)(argcount + -1);\n    __ptr = (undefined8 *)xmalloc((long)argcount << 3);\n    do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);\n    if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }\n  }" { (expression_statement "lVar6 = (long)(argcount + -1);" (assignment_expression "lVar6 = (long)(argcount + -1)" identifier = (cast_expression "(long)(argcount + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(argcount + -1)" ( (binary_expression "argcount + -1" identifier + number_literal) )))) ;) (expression_statement "__ptr = (undefined8 *)xmalloc((long)argcount << 3);" (assignment_expression "__ptr = (undefined8 *)xmalloc((long)argcount << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)argcount << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)argcount << 3)" identifier (argument_list "((long)argcount << 3)" ( (binary_expression "(long)argcount << 3" (cast_expression "(long)argcount" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (do_statement "do {\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    } while ((int)lVar6 != -1);" do (compound_statement "{\n      bVar1 = substitute_type((pr_handle *)p,"");\n      if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar2 = pop_type((pr_handle *)((long)p + 0x10));\n      __ptr[lVar6] = pcVar2;\n      if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar6 = lVar6 + -1;\n      sVar3 = strlen(pcVar2);\n      iVar7 = iVar7 + 2 + (int)sVar3;\n    }" { (expression_statement "bVar1 = substitute_type((pr_handle *)p,"");" (assignment_expression "bVar1 = substitute_type((pr_handle *)p,"")" identifier = (call_expression "substitute_type((pr_handle *)p,"")" identifier (argument_list "((pr_handle *)p,"")" ( (cast_expression "(pr_handle *)p" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal """" " ") )))) ;) (if_statement "if (bVar1 == 0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar2 = pop_type((pr_handle *)((long)p + 0x10));" (assignment_expression "pcVar2 = pop_type((pr_handle *)((long)p + 0x10))" identifier = (call_expression "pop_type((pr_handle *)((long)p + 0x10))" identifier (argument_list "((pr_handle *)((long)p + 0x10))" ( (cast_expression "(pr_handle *)((long)p + 0x10)" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)p + 0x10)" ( (binary_expression "(long)p + 0x10" (cast_expression "(long)p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) )))) ;) (expression_statement "__ptr[lVar6] = pcVar2;" (assignment_expression "__ptr[lVar6] = pcVar2" (subscript_expression "__ptr[lVar6]" identifier [ identifier ]) = identifier) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "sVar3 = strlen(pcVar2);" (assignment_expression "sVar3 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "iVar7 = iVar7 + 2 + (int)sVar3;" (assignment_expression "iVar7 = iVar7 + 2 + (int)sVar3" identifier = (binary_expression "iVar7 + 2 + (int)sVar3" (binary_expression "iVar7 + 2" identifier + number_literal) + (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((int)lVar6 != -1)" ( (binary_expression "(int)lVar6 != -1" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (if_statement "if (varargs != 0) {\n      iVar7 = iVar7 + 5;\n    }" if (parenthesized_expression "(varargs != 0)" ( (binary_expression "varargs != 0" identifier != number_literal) )) (compound_statement "{\n      iVar7 = iVar7 + 5;\n    }" { (expression_statement "iVar7 = iVar7 + 5;" (assignment_expression "iVar7 = iVar7 + 5" identifier = (binary_expression "iVar7 + 5" identifier + number_literal)) ;) })) })))) (expression_statement "pcVar2 = (char *)xmalloc(iVar7);" (assignment_expression "pcVar2 = (char *)xmalloc(iVar7)" identifier = (cast_expression "(char *)xmalloc(iVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))))) ;) (if_statement "if (domain == 0) {\n    *pcVar2 = '\0';\n  }\n  else {\n    strcpy(pcVar2,(char *)local_48);\n  }" if (parenthesized_expression "(domain == 0)" ( (binary_expression "domain == 0" identifier == number_literal) )) (compound_statement "{\n    *pcVar2 = '\0';\n  }" { (expression_statement "*pcVar2 = '\0';" (assignment_expression "*pcVar2 = '\0'" (pointer_expression "*pcVar2" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n    strcpy(pcVar2,(char *)local_48);\n  }" else (compound_statement "{\n    strcpy(pcVar2,(char *)local_48);\n  }" { (expression_statement "strcpy(pcVar2,(char *)local_48);" (call_expression "strcpy(pcVar2,(char *)local_48)" identifier (argument_list "(pcVar2,(char *)local_48)" ( identifier , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) }))) (expression_statement "sVar3 = strlen(pcVar2);" (assignment_expression "sVar3 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "builtin_strncpy(pcVar2 + sVar3,"::| (",6);" (call_expression "builtin_strncpy(pcVar2 + sVar3,"::| (",6)" identifier (argument_list "(pcVar2 + sVar3,"::| (",6)" ( (binary_expression "pcVar2 + sVar3" identifier + identifier) , (string_literal ""::| ("" " string_content ") , number_literal ))) ;) (if_statement "if (argcount < 0) {\n    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);\n  }\n  else if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(argcount < 0)" ( (binary_expression "argcount < 0" identifier < number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe);" (call_expression "builtin_strncpy(pcVar2 + sVar3 + 5,"/* unknown */",0xe)" identifier (argument_list "(pcVar2 + sVar3 + 5,"/* unknown */",0xe)" ( (binary_expression "pcVar2 + sVar3 + 5" (binary_expression "pcVar2 + sVar3" identifier + identifier) + number_literal) , (string_literal ""/* unknown */"" " string_content ") , number_literal ))) ;) }) (else_clause "else if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }" else (if_statement "if (argcount == 0) {\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(argcount == 0)" ( (binary_expression "argcount == 0" identifier == number_literal) )) (compound_statement "{\n    if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }\n  }" { (if_statement "if (varargs != 0) {\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }" if (parenthesized_expression "(varargs != 0)" ( (binary_expression "varargs != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);\n    }" { (expression_statement "builtin_strncpy(pcVar2 + sVar3 + 5,"...",4);" (call_expression "builtin_strncpy(pcVar2 + sVar3 + 5,"...",4)" identifier (argument_list "(pcVar2 + sVar3 + 5,"...",4)" ( (binary_expression "pcVar2 + sVar3 + 5" (binary_expression "pcVar2 + sVar3" identifier + identifier) + number_literal) , (string_literal ""..."" " string_content ") , number_literal ))) ;) })) }) (else_clause "else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }" else (compound_statement "{\n    puVar8 = __ptr;\n    while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }\n    free(__ptr);\n  }" { (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" identifier = identifier) ;) (while_statement "while( true ) {\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      sVar3 = strlen(pcVar2);\n      pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);\n      if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;\n      pcVar4[2] = '\0';\n      pcVar4[0] = ',';\n      pcVar4[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" { (expression_statement "sVar3 = strlen(pcVar2);" (assignment_expression "sVar3 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8);" (assignment_expression "pcVar4 = stpcpy(pcVar2 + sVar3,(char *)*puVar8)" identifier = (call_expression "stpcpy(pcVar2 + sVar3,(char *)*puVar8)" identifier (argument_list "(pcVar2 + sVar3,(char *)*puVar8)" ( (binary_expression "pcVar2 + sVar3" identifier + identifier) , (cast_expression "(char *)*puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) )))) ;) (if_statement "if (__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1) break;" if (parenthesized_expression "(__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1)" ( (binary_expression "__ptr + (ulong)(argcount - 1) + 1 == puVar8 + 1" (binary_expression "__ptr + (ulong)(argcount - 1) + 1" (binary_expression "__ptr + (ulong)(argcount - 1)" identifier + (call_expression "(ulong)(argcount - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(argcount - 1)" ( (binary_expression "argcount - 1" identifier - number_literal) )))) + number_literal) == (binary_expression "puVar8 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar4[2] = '\0';" (assignment_expression "pcVar4[2] = '\0'" (subscript_expression "pcVar4[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar4[0] = ',';" (assignment_expression "pcVar4[0] = ','" (subscript_expression "pcVar4[0]" identifier [ number_literal ]) = (char_literal "','" ' character ')) ;) (expression_statement "pcVar4[1] = ' ';" (assignment_expression "pcVar4[1] = ' '" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) = (char_literal "' '" ' character ')) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (if_statement "if (varargs != 0) {\n      builtin_strncpy(pcVar4,", ...",6);\n    }" if (parenthesized_expression "(varargs != 0)" ( (binary_expression "varargs != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar4,", ...",6);\n    }" { (expression_statement "builtin_strncpy(pcVar4,", ...",6);" (call_expression "builtin_strncpy(pcVar4,", ...",6)" identifier (argument_list "(pcVar4,", ...",6)" ( identifier , (string_literal "", ..."" " string_content ") , number_literal ))) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))))) (expression_statement "sVar3 = strlen(pcVar2);" (assignment_expression "sVar3 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "(pcVar2 + sVar3)[0] = ')';" (assignment_expression "(pcVar2 + sVar3)[0] = ')'" (subscript_expression "(pcVar2 + sVar3)[0]" (parenthesized_expression "(pcVar2 + sVar3)" ( (binary_expression "pcVar2 + sVar3" identifier + identifier) )) [ number_literal ]) = (char_literal "')'" ' character ')) ;) (expression_statement "(pcVar2 + sVar3)[1] = '\0';" (assignment_expression "(pcVar2 + sVar3)[1] = '\0'" (subscript_expression "(pcVar2 + sVar3)[1]" (parenthesized_expression "(pcVar2 + sVar3)" ( (binary_expression "pcVar2 + sVar3" identifier + identifier) )) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar1 = substitute_type((pr_handle *)p,pcVar2);" (assignment_expression "bVar1 = substitute_type((pr_handle *)p,pcVar2)" identifier = (call_expression "substitute_type((pr_handle *)p,pcVar2)" identifier (argument_list "((pr_handle *)p,pcVar2)" ( (cast_expression "(pr_handle *)p" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" type_identifier (function_declarator "FUN_00127420(long param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(long param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "byte *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = 10;" (assignment_expression "iVar1 = 10" identifier = number_literal) ;) (expression_statement "local_48 = (byte *)0x0;" (assignment_expression "local_48 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (param_2 == 0) goto LAB_00127451;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00127451;" goto statement_identifier ;)) (expression_statement "iVar1 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar1 = FUN_00127110(param_1,&DAT_0013da2a)" identifier = (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" identifier (argument_list "(param_1,&DAT_0013da2a)" ( identifier , (pointer_expression "&DAT_0013da2a" & identifier) )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10)" identifier = (cast_expression "(byte *)FUN_00126930(param_1 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00126930(param_1 + 0x10)" identifier (argument_list "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = pbVar6 == (byte *)0x0;" (assignment_expression "bVar12 = pbVar6 == (byte *)0x0" identifier = (binary_expression "pbVar6 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (bVar12) {\n    return 0;\n  }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar7 = 6;" (assignment_expression "lVar7 = 6" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)0x14585c;" (assignment_expression "pbVar10 = (byte *)0x14585c" identifier = (cast_expression "(byte *)0x14585c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);" do (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (expression_statement "bVar11 = (!bVar11 && !bVar12) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar12) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" ( (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" if (parenthesized_expression "(bVar11)" ( identifier )) (compound_statement "{\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }" { (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 6),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 6),0x20)" identifier = (call_expression "strchr((char *)(pbVar6 + 6),0x20)" identifier (argument_list "((char *)(pbVar6 + 6),0x20)" ( (cast_expression "(char *)(pbVar6 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 6)" ( (binary_expression "pbVar6 + 6" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "bVar11 = pcVar3 == (char *)0x0;" (assignment_expression "bVar11 = pcVar3 == (char *)0x0" identifier = (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "local_48 = pbVar6 + 6;" (assignment_expression "local_48 = pbVar6 + 6" identifier = (binary_expression "pbVar6 + 6" identifier + number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00127642;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00127642;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" { (labeled_statement "LAB_00127642:\n    bVar12 = false;" statement_identifier : (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;)) (expression_statement "lVar7 = 0xc;" (assignment_expression "lVar7 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)"union class ";" (assignment_expression "pbVar10 = (byte *)"union class "" identifier = (cast_expression "(byte *)"union class "" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""union class "" " string_content "))) ;) (do_statement "do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar11 = *pbVar9 == *pbVar10;" (assignment_expression "bVar11 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" identifier = identifier) ;) (if_statement "if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" if (parenthesized_expression "((!bVar12 && !bVar11) == bVar12)" ( (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier) )) (compound_statement "{\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" { (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20)" identifier = (call_expression "strchr((char *)(pbVar6 + 0xc),0x20)" identifier (argument_list "((char *)(pbVar6 + 0xc),0x20)" ( (cast_expression "(char *)(pbVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar6 + 0xc)" ( (binary_expression "pbVar6 + 0xc" identifier + number_literal) ))) , number_literal )))) ;) (expression_statement "local_48 = pbVar6 + 0xc;" (assignment_expression "local_48 = pbVar6 + 0xc" identifier = (binary_expression "pbVar6 + 0xc" identifier + number_literal)) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_48 = pbVar6;\n      }" { (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" identifier = identifier) ;) })) })) }))) (expression_statement "sVar4 = strlen((char *)local_48);" (assignment_expression "sVar4 = strlen((char *)local_48)" identifier = (call_expression "strlen((char *)local_48)" identifier (argument_list "((char *)local_48)" ( (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar1 = (int)sVar4 + 10;" (assignment_expression "iVar1 = (int)sVar4 + 10" identifier = (binary_expression "(int)sVar4 + 10" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (labeled_statement "LAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" statement_identifier : (if_statement "if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }" { (expression_statement "__ptr = (undefined8 *)0x0;" (assignment_expression "__ptr = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar1 = iVar1 + 0xf;" (assignment_expression "iVar1 = iVar1 + 0xf" identifier = (binary_expression "iVar1 + 0xf" identifier + number_literal)) ;) }) (else_clause "else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" else (compound_statement "{\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" { (expression_statement "lVar7 = (long)(param_3 + -1);" (assignment_expression "lVar7 = (long)(param_3 + -1)" identifier = (cast_expression "(long)(param_3 + -1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 + -1)" ( (binary_expression "param_3 + -1" identifier + number_literal) )))) ;) (expression_statement "__ptr = (undefined8 *)xmalloc((long)param_3 << 3);" (assignment_expression "__ptr = (undefined8 *)xmalloc((long)param_3 << 3)" identifier = (cast_expression "(undefined8 *)xmalloc((long)param_3 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)param_3 << 3)" identifier (argument_list "((long)param_3 << 3)" ( (binary_expression "(long)param_3 << 3" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (do_statement "do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);" do (compound_statement "{\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    }" { (expression_statement "iVar2 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar2 = FUN_00127110(param_1,&DAT_0013da2a)" identifier = (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" identifier (argument_list "(param_1,&DAT_0013da2a)" ( identifier , (pointer_expression "&DAT_0013da2a" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar3 = (char *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pcVar3 = (char *)FUN_00126930(param_1 + 0x10)" identifier = (cast_expression "(char *)FUN_00126930(param_1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00126930(param_1 + 0x10)" identifier (argument_list "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "__ptr[lVar7] = pcVar3;" (assignment_expression "__ptr[lVar7] = pcVar3" (subscript_expression "__ptr[lVar7]" identifier [ identifier ]) = identifier) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "iVar1 = iVar1 + 2 + (int)sVar4;" (assignment_expression "iVar1 = iVar1 + 2 + (int)sVar4" identifier = (binary_expression "iVar1 + 2 + (int)sVar4" (binary_expression "iVar1 + 2" identifier + number_literal) + (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "((int)lVar7 != -1)" ( (binary_expression "(int)lVar7 != -1" (cast_expression "(int)lVar7" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (if_statement "if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = iVar1 + 5;\n    }" { (expression_statement "iVar1 = iVar1 + 5;" (assignment_expression "iVar1 = iVar1 + 5" identifier = (binary_expression "iVar1 + 5" identifier + number_literal)) ;) })) })))) (expression_statement "pcVar3 = (char *)xmalloc(iVar1);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar1)" identifier = (cast_expression "(char *)xmalloc(iVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))))) ;) (if_statement "if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    *pcVar3 = '\0';\n  }" { (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n    strcpy(pcVar3,(char *)local_48);\n  }" else (compound_statement "{\n    strcpy(pcVar3,(char *)local_48);\n  }" { (expression_statement "strcpy(pcVar3,(char *)local_48);" (call_expression "strcpy(pcVar3,(char *)local_48)" identifier (argument_list "(pcVar3,(char *)local_48)" ( identifier , (cast_expression "(char *)local_48" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) }))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "builtin_strncpy(pcVar3 + sVar4,"::| (",6);" (call_expression "builtin_strncpy(pcVar3 + sVar4,"::| (",6)" identifier (argument_list "(pcVar3 + sVar4,"::| (",6)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) , (string_literal ""::| ("" " string_content ") , number_literal ))) ;) (if_statement "if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(param_3 < 0)" ( (binary_expression "param_3 < 0" identifier < number_literal) )) (compound_statement "{\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }" { (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe)" identifier (argument_list "(pcVar3 + sVar4 + 5,"",0xe)" ( (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" identifier + identifier) + number_literal) , (string_literal """" " ") , number_literal ))) ;) }) (else_clause "else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" else (if_statement "if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }" { (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" { (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4)" identifier (argument_list "(pcVar3 + sVar4 + 5,"...",4)" ( (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" identifier + identifier) + number_literal) , (string_literal ""..."" " string_content ") , number_literal ))) ;) })) }) (else_clause "else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" else (compound_statement "{\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" { (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" identifier = identifier) ;) (while_statement "while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" { (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);" (assignment_expression "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8)" identifier = (call_expression "stpcpy(pcVar3 + sVar4,(char *)*puVar8)" identifier (argument_list "(pcVar3 + sVar4,(char *)*puVar8)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) , (cast_expression "(char *)*puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) )))) ;) (if_statement "if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;" if (parenthesized_expression "(__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1)" ( (binary_expression "__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1" (binary_expression "__ptr + (ulong)(param_3 - 1) + 1" (binary_expression "__ptr + (ulong)(param_3 - 1)" identifier + (call_expression "(ulong)(param_3 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_3 - 1)" ( (binary_expression "param_3 - 1" identifier - number_literal) )))) + number_literal) == (binary_expression "puVar8 + 1" identifier + number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar5[2] = '\0';" (assignment_expression "pcVar5[2] = '\0'" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar5[0] = ',';" (assignment_expression "pcVar5[0] = ','" (subscript_expression "pcVar5[0]" identifier [ number_literal ]) = (char_literal "','" ' character ')) ;) (expression_statement "pcVar5[1] = ' ';" (assignment_expression "pcVar5[1] = ' '" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (char_literal "' '" ' character ')) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      builtin_strncpy(pcVar5,", ...",6);\n    }" { (expression_statement "builtin_strncpy(pcVar5,", ...",6);" (call_expression "builtin_strncpy(pcVar5,", ...",6)" identifier (argument_list "(pcVar5,", ...",6)" ( identifier , (string_literal "", ..."" " string_content ") , number_literal ))) ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "(pcVar3 + sVar4)[0] = ')';" (assignment_expression "(pcVar3 + sVar4)[0] = ')'" (subscript_expression "(pcVar3 + sVar4)[0]" (parenthesized_expression "(pcVar3 + sVar4)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) )) [ number_literal ]) = (char_literal "')'" ' character ')) ;) (expression_statement "(pcVar3 + sVar4)[1] = '\0';" (assignment_expression "(pcVar3 + sVar4)[1] = '\0'" (subscript_expression "(pcVar3 + sVar4)[1]" (parenthesized_expression "(pcVar3 + sVar4)" ( (binary_expression "pcVar3 + sVar4" identifier + identifier) )) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar1 = FUN_00127110(param_1,pcVar3);" (assignment_expression "iVar1 = FUN_00127110(param_1,pcVar3)" identifier = (call_expression "FUN_00127110(param_1,pcVar3)" identifier (argument_list "(param_1,pcVar3)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = 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 == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (string_literal " string_content ") , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , (string_literal " ") , LIT ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , (string_literal " string_content ") , LIT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT) == (binary_expression IDENT + LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00127420(long param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" (type_identifier "undefined8") (function_declarator "FUN_00127420(long param_1,int param_2,int param_3,int param_4)" (identifier "FUN_00127420") (parameter_list "(long param_1,int param_2,int param_3,int param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  char *pcVar5;\n  undefined8 *__ptr;\n  byte *pbVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  byte bVar13;\n  byte *local_48;\n  \n  bVar13 = 0;\n  iVar1 = 10;\n  local_48 = (byte *)0x0;\n  if (param_2 == 0) goto LAB_00127451;\n  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);\n  bVar11 = false;\n  bVar12 = pbVar6 == (byte *)0x0;\n  if (bVar12) {\n    return 0;\n  }\n  lVar7 = 6;\n  pbVar9 = pbVar6;\n  pbVar10 = (byte *)0x14585c;\n  do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);\n  bVar11 = (!bVar11 && !bVar12) == bVar11;\n  if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }\n  sVar4 = strlen((char *)local_48);\n  iVar1 = (int)sVar4 + 10;\nLAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }\n  pcVar3 = (char *)xmalloc(iVar1);\n  if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }\n  sVar4 = strlen(pcVar3);\n  builtin_strncpy(pcVar3 + sVar4,"::| (",6);\n  if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }\n  sVar4 = strlen(pcVar3);\n  (pcVar3 + sVar4)[0] = ')';\n  (pcVar3 + sVar4)[1] = '\0';\n  iVar1 = FUN_00127110(param_1,pcVar3);\n  if (iVar1 == 0) {\n    return 0;\n  }\n  free(pcVar3);\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined8 *__ptr;" (type_identifier "undefined8") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "byte *local_48;" (type_identifier "byte") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = 10;" (assignment_expression "iVar1 = 10" (identifier "iVar1") (= "=") (number_literal "10")) (; ";")) (expression_statement "local_48 = (byte *)0x0;" (assignment_expression "local_48 = (byte *)0x0" (identifier "local_48") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (param_2 == 0) goto LAB_00127451;" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00127451;" (goto "goto") (statement_identifier "LAB_00127451") (; ";"))) (expression_statement "iVar1 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar1 = FUN_00127110(param_1,&DAT_0013da2a)" (identifier "iVar1") (= "=") (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" (identifier "FUN_00127110") (argument_list "(param_1,&DAT_0013da2a)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0013da2a" (& "&") (identifier "DAT_0013da2a")) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pbVar6 = (byte *)FUN_00126930(param_1 + 0x10)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)FUN_00126930(param_1 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00126930(param_1 + 0x10)" (identifier "FUN_00126930") (argument_list "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = pbVar6 == (byte *)0x0;" (assignment_expression "bVar12 = pbVar6 == (byte *)0x0" (identifier "bVar12") (= "=") (binary_expression "pbVar6 == (byte *)0x0" (identifier "pbVar6") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (bVar12) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "lVar7 = 6;" (assignment_expression "lVar7 = 6" (identifier "lVar7") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" (identifier "pbVar9") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar10 = (byte *)0x14585c;" (assignment_expression "pbVar10 = (byte *)0x14585c" (identifier "pbVar10") (= "=") (cast_expression "(byte *)0x14585c" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x14585c"))) (; ";")) (do_statement "do {\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  } while (bVar12);" (do "do") (compound_statement "{\n    if (lVar7 == 0) break;\n    lVar7 = lVar7 + -1;\n    bVar11 = *pbVar9 < *pbVar10;\n    bVar12 = *pbVar9 == *pbVar10;\n    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n  }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" (identifier "bVar11") (= "=") (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (expression_statement "bVar11 = (!bVar11 && !bVar12) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar12) == bVar11" (identifier "bVar11") (= "=") (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" (( "(") (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar12" (! "!") (identifier "bVar12"))) () ")")) (== "==") (identifier "bVar11"))) (; ";")) (if_statement "if (bVar11) {\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }\n  else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (compound_statement "{\n    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);\n    bVar11 = pcVar3 == (char *)0x0;\n    local_48 = pbVar6 + 6;\n    if (!bVar11) goto LAB_00127642;\n  }" ({ "{") (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 6),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 6),0x20)" (identifier "pcVar3") (= "=") (call_expression "strchr((char *)(pbVar6 + 6),0x20)" (identifier "strchr") (argument_list "((char *)(pbVar6 + 6),0x20)" (( "(") (cast_expression "(char *)(pbVar6 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 6)" (( "(") (binary_expression "pbVar6 + 6" (identifier "pbVar6") (+ "+") (number_literal "6")) () ")"))) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "bVar11 = pcVar3 == (char *)0x0;" (assignment_expression "bVar11 = pcVar3 == (char *)0x0" (identifier "bVar11") (= "=") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "local_48 = pbVar6 + 6;" (assignment_expression "local_48 = pbVar6 + 6" (identifier "local_48") (= "=") (binary_expression "pbVar6 + 6" (identifier "pbVar6") (+ "+") (number_literal "6"))) (; ";")) (if_statement "if (!bVar11) goto LAB_00127642;" (if "if") (parenthesized_expression "(!bVar11)" (( "(") (unary_expression "!bVar11" (! "!") (identifier "bVar11")) () ")")) (goto_statement "goto LAB_00127642;" (goto "goto") (statement_identifier "LAB_00127642") (; ";"))) (} "}")) (else_clause "else {\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" (else "else") (compound_statement "{\nLAB_00127642:\n    bVar12 = false;\n    lVar7 = 0xc;\n    pbVar9 = pbVar6;\n    pbVar10 = (byte *)"union class ";\n    do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);\n    local_48 = pbVar6;\n    if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_00127642:\n    bVar12 = false;" (statement_identifier "LAB_00127642") (: ":") (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" (identifier "bVar12") (= "=") (false "false")) (; ";"))) (expression_statement "lVar7 = 0xc;" (assignment_expression "lVar7 = 0xc" (identifier "lVar7") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar9 = pbVar6;" (assignment_expression "pbVar9 = pbVar6" (identifier "pbVar9") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar10 = (byte *)"union class ";" (assignment_expression "pbVar10 = (byte *)"union class "" (identifier "pbVar10") (= "=") (cast_expression "(byte *)"union class "" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""union class "" (" """) (string_content "union class ") (" """)))) (; ";")) (do_statement "do {\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    } while (bVar11);" (do "do") (compound_statement "{\n      if (lVar7 == 0) break;\n      lVar7 = lVar7 + -1;\n      bVar12 = *pbVar9 < *pbVar10;\n      bVar11 = *pbVar9 == *pbVar10;\n      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;\n      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar9 < *pbVar10;" (assignment_expression "bVar12 = *pbVar9 < *pbVar10" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar11 = *pbVar9 == *pbVar10;" (assignment_expression "bVar11 = *pbVar9 == *pbVar10" (identifier "bVar11") (= "=") (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar13 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" (identifier "local_48") (= "=") (identifier "pbVar6")) (; ";")) (if_statement "if ((!bVar12 && !bVar11) == bVar12) {\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" (if "if") (parenthesized_expression "((!bVar12 && !bVar11) == bVar12)" (( "(") (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" (( "(") (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" (! "!") (identifier "bVar12")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (== "==") (identifier "bVar12")) () ")")) (compound_statement "{\n      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);\n      local_48 = pbVar6 + 0xc;\n      if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }\n    }" ({ "{") (expression_statement "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);" (assignment_expression "pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20)" (identifier "pcVar3") (= "=") (call_expression "strchr((char *)(pbVar6 + 0xc),0x20)" (identifier "strchr") (argument_list "((char *)(pbVar6 + 0xc),0x20)" (( "(") (cast_expression "(char *)(pbVar6 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar6 + 0xc)" (( "(") (binary_expression "pbVar6 + 0xc" (identifier "pbVar6") (+ "+") (number_literal "0xc")) () ")"))) (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "local_48 = pbVar6 + 0xc;" (assignment_expression "local_48 = pbVar6 + 0xc" (identifier "local_48") (= "=") (binary_expression "pbVar6 + 0xc" (identifier "pbVar6") (+ "+") (number_literal "0xc"))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\n        local_48 = pbVar6;\n      }" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        local_48 = pbVar6;\n      }" ({ "{") (expression_statement "local_48 = pbVar6;" (assignment_expression "local_48 = pbVar6" (identifier "local_48") (= "=") (identifier "pbVar6")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "sVar4 = strlen((char *)local_48);" (assignment_expression "sVar4 = strlen((char *)local_48)" (identifier "sVar4") (= "=") (call_expression "strlen((char *)local_48)" (identifier "strlen") (argument_list "((char *)local_48)" (( "(") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "iVar1 = (int)sVar4 + 10;" (assignment_expression "iVar1 = (int)sVar4 + 10" (identifier "iVar1") (= "=") (binary_expression "(int)sVar4 + 10" (cast_expression "(int)sVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar4")) (+ "+") (number_literal "10"))) (; ";")) (labeled_statement "LAB_00127451:\n  if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" (statement_identifier "LAB_00127451") (: ":") (if_statement "if (param_3 < 1) {\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }\n  else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    __ptr = (undefined8 *)0x0;\n    iVar1 = iVar1 + 0xf;\n  }" ({ "{") (expression_statement "__ptr = (undefined8 *)0x0;" (assignment_expression "__ptr = (undefined8 *)0x0" (identifier "__ptr") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar1 = iVar1 + 0xf;" (assignment_expression "iVar1 = iVar1 + 0xf" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 0xf" (identifier "iVar1") (+ "+") (number_literal "0xf"))) (; ";")) (} "}")) (else_clause "else {\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" (else "else") (compound_statement "{\n    lVar7 = (long)(param_3 + -1);\n    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);\n    do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);\n    if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }\n  }" ({ "{") (expression_statement "lVar7 = (long)(param_3 + -1);" (assignment_expression "lVar7 = (long)(param_3 + -1)" (identifier "lVar7") (= "=") (cast_expression "(long)(param_3 + -1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_3 + -1)" (( "(") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "__ptr = (undefined8 *)xmalloc((long)param_3 << 3);" (assignment_expression "__ptr = (undefined8 *)xmalloc((long)param_3 << 3)" (identifier "__ptr") (= "=") (cast_expression "(undefined8 *)xmalloc((long)param_3 << 3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)param_3 << 3)" (identifier "xmalloc") (argument_list "((long)param_3 << 3)" (( "(") (binary_expression "(long)param_3 << 3" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (do_statement "do {\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    } while ((int)lVar7 != -1);" (do "do") (compound_statement "{\n      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);\n      if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }\n      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);\n      __ptr[lVar7] = pcVar3;\n      if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }\n      lVar7 = lVar7 + -1;\n      sVar4 = strlen(pcVar3);\n      iVar1 = iVar1 + 2 + (int)sVar4;\n    }" ({ "{") (expression_statement "iVar2 = FUN_00127110(param_1,&DAT_0013da2a);" (assignment_expression "iVar2 = FUN_00127110(param_1,&DAT_0013da2a)" (identifier "iVar2") (= "=") (call_expression "FUN_00127110(param_1,&DAT_0013da2a)" (identifier "FUN_00127110") (argument_list "(param_1,&DAT_0013da2a)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_0013da2a" (& "&") (identifier "DAT_0013da2a")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n        free(__ptr);\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pcVar3 = (char *)FUN_00126930(param_1 + 0x10);" (assignment_expression "pcVar3 = (char *)FUN_00126930(param_1 + 0x10)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_00126930(param_1 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00126930(param_1 + 0x10)" (identifier "FUN_00126930") (argument_list "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "__ptr[lVar7] = pcVar3;" (assignment_expression "__ptr[lVar7] = pcVar3" (subscript_expression "__ptr[lVar7]" (identifier "__ptr") ([ "[") (identifier "lVar7") (] "]")) (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n        free(__ptr);\n        return 0;\n      }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(__ptr);\n        return 0;\n      }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "iVar1 = iVar1 + 2 + (int)sVar4;" (assignment_expression "iVar1 = iVar1 + 2 + (int)sVar4" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 2 + (int)sVar4" (binary_expression "iVar1 + 2" (identifier "iVar1") (+ "+") (number_literal "2")) (+ "+") (cast_expression "(int)sVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar7 != -1)" (( "(") (binary_expression "(int)lVar7 != -1" (cast_expression "(int)lVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar7")) (!= "!=") (number_literal "-1")) () ")")) (; ";")) (if_statement "if (param_4 != 0) {\n      iVar1 = iVar1 + 5;\n    }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = iVar1 + 5;\n    }" ({ "{") (expression_statement "iVar1 = iVar1 + 5;" (assignment_expression "iVar1 = iVar1 + 5" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 5" (identifier "iVar1") (+ "+") (number_literal "5"))) (; ";")) (} "}"))) (} "}"))))) (expression_statement "pcVar3 = (char *)xmalloc(iVar1);" (assignment_expression "pcVar3 = (char *)xmalloc(iVar1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(iVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar1)" (identifier "xmalloc") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))))) (; ";")) (if_statement "if (param_2 == 0) {\n    *pcVar3 = '\0';\n  }\n  else {\n    strcpy(pcVar3,(char *)local_48);\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *pcVar3 = '\0';\n  }" ({ "{") (expression_statement "*pcVar3 = '\0';" (assignment_expression "*pcVar3 = '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")) (else_clause "else {\n    strcpy(pcVar3,(char *)local_48);\n  }" (else "else") (compound_statement "{\n    strcpy(pcVar3,(char *)local_48);\n  }" ({ "{") (expression_statement "strcpy(pcVar3,(char *)local_48);" (call_expression "strcpy(pcVar3,(char *)local_48)" (identifier "strcpy") (argument_list "(pcVar3,(char *)local_48)" (( "(") (identifier "pcVar3") (, ",") (cast_expression "(char *)local_48" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_48")) () ")"))) (; ";")) (} "}")))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "builtin_strncpy(pcVar3 + sVar4,"::| (",6);" (call_expression "builtin_strncpy(pcVar3 + sVar4,"::| (",6)" (identifier "builtin_strncpy") (argument_list "(pcVar3 + sVar4,"::| (",6)" (( "(") (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) (, ",") (string_literal ""::| ("" (" """) (string_content "::| (") (" """)) (, ",") (number_literal "6") () ")"))) (; ";")) (if_statement "if (param_3 < 0) {\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }\n  else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" (if "if") (parenthesized_expression "(param_3 < 0)" (( "(") (binary_expression "param_3 < 0" (identifier "param_3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);\n  }" ({ "{") (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"",0xe)" (identifier "builtin_strncpy") (argument_list "(pcVar3 + sVar4 + 5,"",0xe)" (( "(") (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "5")) (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0xe") () ")"))) (; ";")) (} "}")) (else_clause "else if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" (else "else") (if_statement "if (param_3 == 0) {\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }\n  else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }\n  }" ({ "{") (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);\n    }" ({ "{") (expression_statement "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);" (call_expression "builtin_strncpy(pcVar3 + sVar4 + 5,"...",4)" (identifier "builtin_strncpy") (argument_list "(pcVar3 + sVar4 + 5,"...",4)" (( "(") (binary_expression "pcVar3 + sVar4 + 5" (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "5")) (, ",") (string_literal ""..."" (" """) (string_content "...") (" """)) (, ",") (number_literal "4") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" (else "else") (compound_statement "{\n    puVar8 = __ptr;\n    while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }\n    if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }\n    free(__ptr);\n  }" ({ "{") (expression_statement "puVar8 = __ptr;" (assignment_expression "puVar8 = __ptr" (identifier "puVar8") (= "=") (identifier "__ptr")) (; ";")) (while_statement "while( true ) {\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      sVar4 = strlen(pcVar3);\n      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);\n      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;\n      pcVar5[2] = '\0';\n      pcVar5[0] = ',';\n      pcVar5[1] = ' ';\n      puVar8 = puVar8 + 1;\n    }" ({ "{") (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);" (assignment_expression "pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8)" (identifier "pcVar5") (= "=") (call_expression "stpcpy(pcVar3 + sVar4,(char *)*puVar8)" (identifier "stpcpy") (argument_list "(pcVar3 + sVar4,(char *)*puVar8)" (( "(") (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) (, ",") (cast_expression "(char *)*puVar8" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) () ")")))) (; ";")) (if_statement "if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;" (if "if") (parenthesized_expression "(__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1)" (( "(") (binary_expression "__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1" (binary_expression "__ptr + (ulong)(param_3 - 1) + 1" (binary_expression "__ptr + (ulong)(param_3 - 1)" (identifier "__ptr") (+ "+") (call_expression "(ulong)(param_3 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_3 - 1)" (( "(") (binary_expression "param_3 - 1" (identifier "param_3") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1")) (== "==") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar5[2] = '\0';" (assignment_expression "pcVar5[2] = '\0'" (subscript_expression "pcVar5[2]" (identifier "pcVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar5[0] = ',';" (assignment_expression "pcVar5[0] = ','" (subscript_expression "pcVar5[0]" (identifier "pcVar5") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "','" (' "'") (character ",") (' "'"))) (; ";")) (expression_statement "pcVar5[1] = ' ';" (assignment_expression "pcVar5[1] = ' '" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "' '" (' "'") (character " ") (' "'"))) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (param_4 != 0) {\n      builtin_strncpy(pcVar5,", ...",6);\n    }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      builtin_strncpy(pcVar5,", ...",6);\n    }" ({ "{") (expression_statement "builtin_strncpy(pcVar5,", ...",6);" (call_expression "builtin_strncpy(pcVar5,", ...",6)" (identifier "builtin_strncpy") (argument_list "(pcVar5,", ...",6)" (( "(") (identifier "pcVar5") (, ",") (string_literal "", ..."" (" """) (string_content ", ...") (" """)) (, ",") (number_literal "6") () ")"))) (; ";")) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (} "}")))))) (expression_statement "sVar4 = strlen(pcVar3);" (assignment_expression "sVar4 = strlen(pcVar3)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "(pcVar3 + sVar4)[0] = ')';" (assignment_expression "(pcVar3 + sVar4)[0] = ')'" (subscript_expression "(pcVar3 + sVar4)[0]" (parenthesized_expression "(pcVar3 + sVar4)" (( "(") (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) () ")")) ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "')'" (' "'") (character ")") (' "'"))) (; ";")) (expression_statement "(pcVar3 + sVar4)[1] = '\0';" (assignment_expression "(pcVar3 + sVar4)[1] = '\0'" (subscript_expression "(pcVar3 + sVar4)[1]" (parenthesized_expression "(pcVar3 + sVar4)" (( "(") (binary_expression "pcVar3 + sVar4" (identifier "pcVar3") (+ "+") (identifier "sVar4")) () ")")) ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar1 = FUN_00127110(param_1,pcVar3);" (assignment_expression "iVar1 = FUN_00127110(param_1,pcVar3)" (identifier "iVar1") (= "=") (call_expression "FUN_00127110(param_1,pcVar3)" (identifier "FUN_00127110") (argument_list "(param_1,pcVar3)" (( "(") (identifier "param_1") (, ",") (identifier "pcVar3") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

type_1 function_1(void *p,type_1 var_1,int var_14,type_1 var_18)

{
  type_1 var_3;
  char *var_11;
  size_t var_21;
  char *pcVar4;
  type_2 *var_23;
  type_3 *var_5;
  long var_6;
  int var_15;
  type_2 *var_24;
  type_3 *var_7;
  type_4 *info;
  type_3 *var_8;
  bool var_9;
  bool var_12;
  type_3 bVar13;
  type_3 *local_48;
  
  bVar13 = 0;
  var_15 = 10;
  local_48 = (type_3 *)0x0;
  if (var_1 == 0) goto LAB_00127451;
  var_3 = var_2((type_4 *)p,"");
  if (var_3 == 0) {
    return 0;
  }
  var_5 = (type_3 *)var_4((type_4 *)((long)p + 0x10));
  var_9 = false;
  var_12 = var_5 == (type_3 *)0x0;
  if (var_12) {
    return 0;
  }
  var_6 = 6;
  var_7 = var_5;
  var_8 = (type_3 *)0x14585c;
  do {
    if (var_6 == 0) break;
    var_6 = var_6 + -1;
    var_9 = *var_7 < *var_8;
    var_12 = *var_7 == *var_8;
    var_7 = var_7 + (type_5)bVar13 * -2 + 1;
    var_8 = var_8 + (type_5)bVar13 * -2 + 1;
  } while (var_12);
  var_9 = (!var_9 && !var_12) == var_9;
  if (var_9) {
    var_11 = var_10((char *)(var_5 + 6),0x20);
    var_9 = var_11 == (char *)0x0;
    local_48 = var_5 + 6;
    if (!var_9) goto LAB_00127642;
  }
  else {
LAB_00127642:
    var_12 = false;
    var_6 = 0xc;
    var_7 = var_5;
    var_8 = (type_3 *)"union class ";
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_12 = *var_7 < *var_8;
      var_9 = *var_7 == *var_8;
      var_7 = var_7 + (type_5)bVar13 * -2 + 1;
      var_8 = var_8 + (type_5)bVar13 * -2 + 1;
    } while (var_9);
    local_48 = var_5;
    if ((!var_12 && !var_9) == var_12) {
      var_11 = var_10((char *)(var_5 + 0xc),0x20);
      local_48 = var_5 + 0xc;
      if (var_11 != (char *)0x0) {
        local_48 = var_5;
      }
    }
  }
  var_21 = var_13((char *)local_48);
  var_15 = (int)var_21 + 10;
LAB_00127451:
  if (var_14 < 1) {
    var_23 = (type_2 *)0x0;
    var_15 = var_15 + 0xf;
  }
  else {
    var_6 = (long)(var_14 + -1);
    var_23 = (type_2 *)var_16((long)var_14 << 3);
    do {
      var_3 = var_2((type_4 *)p,"");
      if (var_3 == 0) {
        var_17(var_23);
        return 0;
      }
      var_11 = var_4((type_4 *)((long)p + 0x10));
      var_23[var_6] = var_11;
      if (var_11 == (char *)0x0) {
        var_17(var_23);
        return 0;
      }
      var_6 = var_6 + -1;
      var_21 = var_13(var_11);
      var_15 = var_15 + 2 + (int)var_21;
    } while ((int)var_6 != -1);
    if (var_18 != 0) {
      var_15 = var_15 + 5;
    }
  }
  var_11 = (char *)var_16(var_15);
  if (var_1 == 0) {
    *var_11 = '\0';
  }
  else {
    var_19(var_11,(char *)local_48);
  }
  var_21 = var_13(var_11);
  var_20(var_11 + var_21,"::| (",6);
  if (var_14 < 0) {
    var_20(var_11 + var_21 + 5,"/* unknown */",0xe);
  }
  else if (var_14 == 0) {
    if (var_18 != 0) {
      var_20(var_11 + var_21 + 5,"...",4);
    }
  }
  else {
    var_24 = var_23;
    while( true ) {
      var_21 = var_13(var_11);
      pcVar4 = var_22(var_11 + var_21,(char *)*var_24);
      if (var_23 + (type_5)(var_14 - 1) + 1 == var_24 + 1) break;
      pcVar4[2] = '\0';
      pcVar4[0] = ',';
      pcVar4[1] = ' ';
      var_24 = var_24 + 1;
    }
    if (var_18 != 0) {
      var_20(pcVar4,", ...",6);
    }
    var_17(var_23);
  }
  var_21 = var_13(var_11);
  (var_11 + var_21)[0] = ')';
  (var_11 + var_21)[1] = '\0';
  var_3 = var_2((type_4 *)p,var_11);
  if (var_3 == 0) {
    return 0;
  }
  var_17(var_11);
  return 1;
}


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

undefined8 MASKED(long param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  char *pcVar5;
  undefined8 *__ptr;
  byte *pbVar6;
  long lVar7;
  undefined8 *puVar8;
  byte *pbVar9;
  byte *pbVar10;
  bool bVar11;
  bool bVar12;
  byte bVar13;
  byte *local_48;
  
  bVar13 = 0;
  iVar1 = 10;
  local_48 = (byte *)0x0;
  if (param_2 == 0) goto LAB_00127451;
  iVar1 = FUN_00127110(param_1,&DAT_0013da2a);
  if (iVar1 == 0) {
    return 0;
  }
  pbVar6 = (byte *)FUN_00126930(param_1 + 0x10);
  bVar11 = false;
  bVar12 = pbVar6 == (byte *)0x0;
  if (bVar12) {
    return 0;
  }
  lVar7 = 6;
  pbVar9 = pbVar6;
  pbVar10 = (byte *)0x14585c;
  do {
    if (lVar7 == 0) break;
    lVar7 = lVar7 + -1;
    bVar11 = *pbVar9 < *pbVar10;
    bVar12 = *pbVar9 == *pbVar10;
    pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
    pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
  } while (bVar12);
  bVar11 = (!bVar11 && !bVar12) == bVar11;
  if (bVar11) {
    pcVar3 = strchr((char *)(pbVar6 + 6),0x20);
    bVar11 = pcVar3 == (char *)0x0;
    local_48 = pbVar6 + 6;
    if (!bVar11) goto LAB_00127642;
  }
  else {
LAB_00127642:
    bVar12 = false;
    lVar7 = 0xc;
    pbVar9 = pbVar6;
    pbVar10 = (byte *)"union class ";
    do {
      if (lVar7 == 0) break;
      lVar7 = lVar7 + -1;
      bVar12 = *pbVar9 < *pbVar10;
      bVar11 = *pbVar9 == *pbVar10;
      pbVar9 = pbVar9 + (ulong)bVar13 * -2 + 1;
      pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
    } while (bVar11);
    local_48 = pbVar6;
    if ((!bVar12 && !bVar11) == bVar12) {
      pcVar3 = strchr((char *)(pbVar6 + 0xc),0x20);
      local_48 = pbVar6 + 0xc;
      if (pcVar3 != (char *)0x0) {
        local_48 = pbVar6;
      }
    }
  }
  sVar4 = strlen((char *)local_48);
  iVar1 = (int)sVar4 + 10;
LAB_00127451:
  if (param_3 < 1) {
    __ptr = (undefined8 *)0x0;
    iVar1 = iVar1 + 0xf;
  }
  else {
    lVar7 = (long)(param_3 + -1);
    __ptr = (undefined8 *)xmalloc((long)param_3 << 3);
    do {
      iVar2 = FUN_00127110(param_1,&DAT_0013da2a);
      if (iVar2 == 0) {
        free(__ptr);
        return 0;
      }
      pcVar3 = (char *)FUN_00126930(param_1 + 0x10);
      __ptr[lVar7] = pcVar3;
      if (pcVar3 == (char *)0x0) {
        free(__ptr);
        return 0;
      }
      lVar7 = lVar7 + -1;
      sVar4 = strlen(pcVar3);
      iVar1 = iVar1 + 2 + (int)sVar4;
    } while ((int)lVar7 != -1);
    if (param_4 != 0) {
      iVar1 = iVar1 + 5;
    }
  }
  pcVar3 = (char *)xmalloc(iVar1);
  if (param_2 == 0) {
    *pcVar3 = '\0';
  }
  else {
    strcpy(pcVar3,(char *)local_48);
  }
  sVar4 = strlen(pcVar3);
  builtin_strncpy(pcVar3 + sVar4,"::| (",6);
  if (param_3 < 0) {
    builtin_strncpy(pcVar3 + sVar4 + 5,"/* unknown */",0xe);
  }
  else if (param_3 == 0) {
    if (param_4 != 0) {
      builtin_strncpy(pcVar3 + sVar4 + 5,"...",4);
    }
  }
  else {
    puVar8 = __ptr;
    while( true ) {
      sVar4 = strlen(pcVar3);
      pcVar5 = stpcpy(pcVar3 + sVar4,(char *)*puVar8);
      if (__ptr + (ulong)(param_3 - 1) + 1 == puVar8 + 1) break;
      pcVar5[2] = '\0';
      pcVar5[0] = ',';
      pcVar5[1] = ' ';
      puVar8 = puVar8 + 1;
    }
    if (param_4 != 0) {
      builtin_strncpy(pcVar5,", ...",6);
    }
    free(__ptr);
  }
  sVar4 = strlen(pcVar3);
  (pcVar3 + sVar4)[0] = ')';
  (pcVar3 + sVar4)[1] = '\0';
  iVar1 = FUN_00127110(param_1,pcVar3);
  if (iVar1 == 0) {
    return 0;
  }
  free(pcVar3);
  return 1;
}

