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

bfd_boolean
pr_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)

{
  pr_handle *info;
  bfd_boolean bVar1;
  byte *type;
  char *pcVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  char *__dest;
  int iVar6;
  byte *pbVar7;
  byte *pbVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  char ab [22];
  
  bVar11 = 0;
  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,
                  "pr_class_baseclass");
  }
  bVar1 = substitute_type((pr_handle *)p,"");
  if (bVar1 == 0) {
    return 0;
  }
  info = (pr_handle *)((int)p + 8);
  type = (byte *)pop_type(info);
  bVar9 = false;
  bVar10 = type == (byte *)0x0;
  if (!bVar10) {
    iVar6 = 6;
    pbVar7 = type;
    pbVar8 = (byte *)0x57243;
    do {
      if (iVar6 == 0) break;
      iVar6 = iVar6 + -1;
      bVar9 = *pbVar7 < *pbVar8;
      bVar10 = *pbVar7 == *pbVar8;
      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;
      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;
    } while (bVar10);
    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&
        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&
       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {
      pcVar2 = "protected ";
      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&
         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {
        pcVar2 = "private ";
        if (visibility != DEBUG_VISIBILITY_PRIVATE) {
          pcVar2 = "/* unknown visibility */ ";
        }
      }
      bVar1 = prepend_type(info,pcVar2);
      if (bVar1 != 0) {
        if (bitpos != 0) {
          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);
          bVar1 = append_type(info," /* bitpos ");
          if (bVar1 == 0) {
            return 0;
          }
          bVar1 = append_type(info,ab);
          if (bVar1 == 0) {
            return 0;
          }
          bVar1 = append_type(info," */");
          if (bVar1 == 0) {
            return 0;
          }
        }
        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);
        pcVar2 = strchr(pcVar3,0x7b);
        if (pcVar2 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");
        }
        pcVar2 = pcVar2 + -1;
        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {
          if (*pcVar3 == ':') {
            pcVar3 = ", ";
            goto LAB_00039f2e;
          }
        }
        pcVar3 = " : ";
LAB_00039f2e:
        bVar1 = prepend_type(info,pcVar3);
        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {
          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));
          sVar5 = strlen(pcVar3);
          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);
          iVar6 = *(int *)((int)p + 8);
          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));
          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);
          strcat(__dest,pcVar2);
          free(*(void **)(iVar6 + 4));
          *(char **)(*(int *)((int)p + 8) + 4) = __dest;
          free(pcVar3);
          return 1;
        }
      }
    }
  }
  return 0;
}



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

undefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  byte *pbVar2;
  char *pcVar3;
  char *pcVar4;
  size_t sVar5;
  size_t sVar6;
  char *__dest;
  byte *pbVar7;
  byte *pbVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  char local_32 [30];
  undefined4 uStack_14;
  
  bVar11 = 0;
  uStack_14 = 0x39df9;
  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,
                  "pr_class_baseclass");
  }
  iVar1 = FUN_00037630();
  if (iVar1 == 0) {
    return 0;
  }
  pbVar2 = (byte *)FUN_00036d90();
  bVar9 = false;
  bVar10 = pbVar2 == (byte *)0x0;
  if (!bVar10) {
    iVar1 = 6;
    pbVar7 = pbVar2;
    pbVar8 = (byte *)0x57243;
    do {
      if (iVar1 == 0) break;
      iVar1 = iVar1 + -1;
      bVar9 = *pbVar7 < *pbVar8;
      bVar10 = *pbVar7 == *pbVar8;
      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;
      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;
    } while (bVar10);
    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&
         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&
        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&
       (iVar1 = FUN_000374e0(), iVar1 != 0)) {
      if (param_3 != 0 || param_2 != 0) {
        sprintf(local_32,"%llu",param_2,param_3);
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
      }
      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);
      pcVar3 = strchr(pcVar4,0x7b);
      if (pcVar3 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");
      }
      pcVar3 = pcVar3 + -1;
      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {
      }
      iVar1 = FUN_000374e0();
      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {
        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));
        sVar6 = strlen(pcVar4);
        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);
        iVar1 = *(int *)(param_1 + 8);
        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));
        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);
        strcat(__dest,pcVar3);
        free(*(void **)(iVar1 + 4));
        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;
        free(pcVar4);
        return 1;
      }
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000153d0
ADD EBX,0x39207
SUB ESP,0x3c
MOV EAX,dword ptr [ESP + 0x54]
MOV EBP,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x4],EDX
TEST EAX,EAX
JZ 0x0003a082
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0003a082
LEA EDX,[EBX + 0xfffdca07]
MOV EAX,EBP
CALL 0x00037630
TEST EAX,EAX
JNZ 0x00039e48
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBP + 0x8]
MOV dword ptr [ESP + 0xc],EAX
CALL 0x00036d90
TEST EAX,EAX
JZ 0x00039e76
MOV ECX,0x6
LEA EDI,[EBX + 0xfffe4243]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x00039e80
ADD EAX,0x6
JNZ 0x00039e80
XOR EAX,EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x00038f80
TEST EAX,EAX
JZ 0x00039e76
MOV EAX,dword ptr [ESP + 0x5c]
TEST EAX,EAX
JNZ 0x00039ff0
CMP dword ptr [ESP + 0x60],0x1
LEA EDX,[EBX + 0xfffe43b1]
JZ 0x00039eca
MOV EAX,dword ptr [ESP + 0x60]
LEA EDX,[EBX + 0xfffe43a0]
TEST EAX,EAX
JZ 0x00039eca
CMP dword ptr [ESP + 0x60],0x2
LEA EDX,[EBX + 0xfffe43a8]
LEA EAX,[EBX + 0xfffe4386]
CMOVNZ EDX,EAX
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x000374e0
TEST EAX,EAX
JZ 0x00039e76
MOV EDI,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESP]
MOV EDX,EDI
OR EDX,ESI
JNZ 0x0003a020
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0x8
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0x4]
PUSH 0x7b
PUSH ESI
CALL 0x00014450
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0003a0a1
LEA EDI,[EAX + -0x1]
CMP ESI,EDI
JNZ 0x00039f23
JMP 0x0003a010
ADD ESI,0x1
CMP EDI,ESI
JZ 0x0003a010
CMP byte ptr [ESI],0x3a
JNZ 0x00039f18
LEA EDX,[EBX + 0xfffdc754]
MOV ESI,dword ptr [ESP + 0xc]
MOV EAX,ESI
CALL 0x000374e0
TEST EAX,EAX
JZ 0x00039e76
MOV EAX,ESI
CALL 0x00036d90
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00039e76
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
PUSH dword ptr [EAX + 0x4]
CALL 0x00014480
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x10],EAX
CALL 0x00014480
MOV EDX,dword ptr [ESP + 0x10]
LEA EAX,[EDX + EAX*0x1 + 0x1]
MOV dword ptr [ESP],EAX
CALL 0x000142b0
MOV ECX,dword ptr [EBP + 0x8]
MOV EDX,EDI
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ECX + 0x4]
MOV dword ptr [ESP + 0x1c],ECX
ADD ESP,0xc
SUB EDX,EAX
PUSH EDX
PUSH EAX
PUSH dword ptr [ESP + 0xc]
CALL 0x00014140
POP EAX
POP EDX
PUSH ESI
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EDI
SUB EAX,dword ptr [ECX + 0x4]
ADD EAX,dword ptr [ESP + 0xc]
PUSH EAX
CALL 0x00014320
POP ECX
POP EAX
PUSH EDI
MOV EDI,dword ptr [ESP + 0xc]
PUSH EDI
CALL 0x00014300
POP EAX
MOV ECX,dword ptr [ESP + 0x18]
PUSH dword ptr [ECX + 0x4]
CALL 0x00014120
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EAX + 0x4],EDI
MOV dword ptr [ESP],ESI
CALL 0x00014120
ADD ESP,0x10
MOV EAX,0x1
JMP 0x00039e3b
MOV EAX,dword ptr [ESP + 0xc]
LEA EDX,[EBX + 0xfffe43bc]
CALL 0x000374e0
TEST EAX,EAX
JNZ 0x00039e9b
XOR EAX,EAX
JMP 0x00039e78
LEA EDX,[EBX + 0xfffe43f0]
JMP 0x00039f2e
LEA EAX,[EBX + 0xfffe43f4]
PUSH dword ptr [ESP + 0x4]
PUSH dword ptr [ESP + 0x4]
PUSH EAX
LEA ESI,[ESP + 0x26]
PUSH ESI
CALL 0x000146d0
MOV EDI,dword ptr [ESP + 0x1c]
LEA EDX,[EBX + 0xfffe43f9]
MOV EAX,EDI
CALL 0x00037580
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00039e76
MOV EDX,ESI
MOV EAX,EDI
CALL 0x00037580
TEST EAX,EAX
JZ 0x00039e76
LEA EDX,[EBX + 0xfffe441b]
MOV EAX,EDI
CALL 0x00037580
TEST EAX,EAX
JNZ 0x00039ee8
XOR EAX,EAX
JMP 0x00039e78
LEA EAX,[EBX + 0xfffe4904]
PUSH EAX
LEA EAX,[EBX + 0xfffe4154]
PUSH 0x53d
PUSH EAX
LEA EAX,[EBX + 0xfffe4650]
PUSH EAX
CALL 0x00014850
LEA EAX,[EBX + 0xfffe4904]
PUSH EAX
LEA EAX,[EBX + 0xfffe4154]
PUSH 0x575
PUSH EAX
LEA EAX,[EBX + 0xfffe4405]
PUSH EAX
CALL 0x00014850
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00039df0(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type 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  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char local_32 [30];" primitive_type (array_declarator "local_32 [30]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x39df9;" (assignment_expression "uStack_14 = 0x39df9" identifier = number_literal) ;) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" ( (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" ( (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "iVar1 = FUN_00037630();" (assignment_expression "iVar1 = FUN_00037630()" identifier = (call_expression "FUN_00037630()" identifier (argument_list "()" ( )))) ;) (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 "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" identifier = (cast_expression "(byte *)FUN_00036d90()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar10 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar10 = pbVar2 == (byte *)0x0" identifier = (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" { (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar2;" (assignment_expression "pbVar7 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar8 = (byte *)0x57243;" (assignment_expression "pbVar8 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);" do (compound_statement "{\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    }" { (if_statement "if (iVar1 == 0) break;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = iVar1 + -1;" (assignment_expression "iVar1 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" if (parenthesized_expression "((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0))" ( (binary_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)" (parenthesized_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))))" ( (binary_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" (parenthesized_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0))" ( (binary_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)" (parenthesized_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa))" ( (binary_expression "((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" ( (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) || (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" ( (binary_expression "pbVar2 != (byte *)0xfffffffa" identifier != (cast_expression "(byte *)0xfffffffa" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar1 = FUN_00038f80(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00038f80(), iVar1 != 0" (assignment_expression "iVar1 = FUN_00038f80()" identifier = (call_expression "FUN_00038f80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" ( (parenthesized_expression "(param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))" ( (binary_expression "param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)" (binary_expression "param_4 == 0" identifier == number_literal) || (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) ))) )) && (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" { (if_statement "if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(param_3 != 0 || param_2 != 0)" ( (binary_expression "param_3 != 0 || param_2 != 0" (binary_expression "param_3 != 0" identifier != number_literal) || (binary_expression "param_2 != 0" identifier != number_literal)) )) (compound_statement "{\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" { (expression_statement "sprintf(local_32,"%llu",param_2,param_3);" (call_expression "sprintf(local_32,"%llu",param_2,param_3)" identifier (argument_list "(local_32,"%llu",param_2,param_3)" ( identifier , (string_literal ""%llu"" " string_content ") , identifier , identifier ))) ;) (expression_statement "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);" (assignment_expression "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4)" identifier = (pointer_expression "*(char **)(**(int **)(param_1 + 8) + 4)" * (cast_expression "(char **)(**(int **)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 4)" ( (binary_expression "**(int **)(param_1 + 8) + 4" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pcVar3 = strchr(pcVar4,0x7b);" (assignment_expression "pcVar3 = strchr(pcVar4,0x7b)" identifier = (call_expression "strchr(pcVar4,0x7b)" identifier (argument_list "(pcVar4,0x7b)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\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                    /* WARNING: Subroutine does not return */\n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }" { comment (expression_statement "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");" (call_expression "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" identifier (argument_list "("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" ( (string_literal ""s != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "pcVar3 = pcVar3 + -1;" (assignment_expression "pcVar3 = pcVar3 + -1" identifier = (binary_expression "pcVar3 + -1" identifier + number_literal)) ;) (for_statement "for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }" for ( ; (parenthesized_expression "(pcVar4 != pcVar3 && (*pcVar4 != ':'))" ( (binary_expression "pcVar4 != pcVar3 && (*pcVar4 != ':')" (binary_expression "pcVar4 != pcVar3" identifier != identifier) && (parenthesized_expression "(*pcVar4 != ':')" ( (binary_expression "*pcVar4 != ':'" (pointer_expression "*pcVar4" * identifier) != (char_literal "':'" ' character ')) ))) )) ; (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ) (compound_statement "{\n      }" { })) (expression_statement "iVar1 = FUN_000374e0();" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" if (parenthesized_expression "((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0))" ( (binary_expression "(iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" ( (comma_expression "pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0" (assignment_expression "pcVar4 = (char *)FUN_00036d90()" identifier = (cast_expression "(char *)FUN_00036d90()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) , (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" { (expression_statement "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));" (assignment_expression "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4))" identifier = (call_expression "strlen(*(char **)(*(int *)(param_1 + 8) + 4))" identifier (argument_list "(*(char **)(*(int *)(param_1 + 8) + 4))" ( (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "sVar6 = strlen(pcVar4);" (assignment_expression "sVar6 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar5 + 1 + sVar6);" (assignment_expression "__dest = (char *)xmalloc(sVar5 + 1 + sVar6)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1 + sVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1 + sVar6)" identifier (argument_list "(sVar5 + 1 + sVar6)" ( (binary_expression "sVar5 + 1 + sVar6" (binary_expression "sVar5 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));" (call_expression "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" identifier (argument_list "(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" ( identifier , (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) , (binary_expression "(int)pcVar3 - (int)*(void **)(iVar1 + 4)" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)*(void **)(iVar1 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ))) ;) (expression_statement "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);" (call_expression "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" identifier (argument_list "(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" ( (binary_expression "__dest + ((int)pcVar3 - *(int *)(iVar1 + 4))" identifier + (parenthesized_expression "((int)pcVar3 - *(int *)(iVar1 + 4))" ( (binary_expression "(int)pcVar3 - *(int *)(iVar1 + 4)" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "strcat(__dest,pcVar3);" (call_expression "strcat(__dest,pcVar3)" identifier (argument_list "(__dest,pcVar3)" ( identifier , identifier ))) ;) (expression_statement "free(*(void **)(iVar1 + 4));" (call_expression "free(*(void **)(iVar1 + 4))" identifier (argument_list "(*(void **)(iVar1 + 4))" ( (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "*(char **)(*(int *)(param_1 + 8) + 4) = __dest;" (assignment_expression "*(char **)(*(int *)(param_1 + 8) + 4) = __dest" (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_boolean\npr_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)\n\n{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  byte *type;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__dest;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char ab [22];\n  \n  bVar11 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar9 = false;\n  bVar10 = type == (byte *)0x0;\n  if (!bVar10) {\n    iVar6 = 6;\n    pbVar7 = type;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment (function_definition "bfd_boolean\npr_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)\n\n{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  byte *type;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__dest;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char ab [22];\n  \n  bVar11 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar9 = false;\n  bVar10 = type == (byte *)0x0;\n  if (!bVar10) {\n    iVar6 = 6;\n    pbVar7 = type;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "pr_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)" identifier (parameter_list "(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "bfd_vma bitpos" type_identifier identifier) , (parameter_declaration "bfd_boolean is_virtual" type_identifier identifier) , (parameter_declaration "debug_visibility visibility" type_identifier identifier) ))) (compound_statement "{\n  pr_handle *info;\n  bfd_boolean bVar1;\n  byte *type;\n  char *pcVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__dest;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char ab [22];\n  \n  bVar11 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  bVar1 = substitute_type((pr_handle *)p,"");\n  if (bVar1 == 0) {\n    return 0;\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar9 = false;\n  bVar10 = type == (byte *)0x0;\n  if (!bVar10) {\n    iVar6 = 6;\n    pbVar7 = type;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }\n  }\n  return 0;\n}" { (declaration "pr_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "byte *type;" type_identifier (pointer_declarator "*type" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char ab [22];" primitive_type (array_declarator "ab [22]" identifier [ number_literal ]) ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (if_statement "if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0))" ( (binary_expression "(*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)" (parenthesized_expression "(*(int **)((int)p + 8) == (int *)0x0)" ( (binary_expression "*(int **)((int)p + 8) == (int *)0x0" (pointer_expression "*(int **)((int)p + 8)" * (cast_expression "(int **)((int)p + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)((int)p + 8) == 0)" ( (binary_expression "**(int **)((int)p + 8) == 0" (pointer_expression "**(int **)((int)p + 8)" * (pointer_expression "*(int **)((int)p + 8)" * (cast_expression "(int **)((int)p + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (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 "info = (pr_handle *)((int)p + 8);" (assignment_expression "info = (pr_handle *)((int)p + 8)" identifier = (cast_expression "(pr_handle *)((int)p + 8)" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "type = (byte *)pop_type(info);" (assignment_expression "type = (byte *)pop_type(info)" identifier = (cast_expression "(byte *)pop_type(info)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "pop_type(info)" identifier (argument_list "(info)" ( identifier ))))) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar10 = type == (byte *)0x0;" (assignment_expression "bVar10 = type == (byte *)0x0" identifier = (binary_expression "type == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar10) {\n    iVar6 = 6;\n    pbVar7 = type;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n    iVar6 = 6;\n    pbVar7 = type;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }\n  }" { (expression_statement "iVar6 = 6;" (assignment_expression "iVar6 = 6" identifier = number_literal) ;) (expression_statement "pbVar7 = type;" (assignment_expression "pbVar7 = type" identifier = identifier) ;) (expression_statement "pbVar8 = (byte *)0x57243;" (assignment_expression "pbVar8 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);" do (compound_statement "{\n      if (iVar6 == 0) break;\n      iVar6 = iVar6 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    }" { (if_statement "if (iVar6 == 0) break;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if (((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))) {\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }" if (parenthesized_expression "(((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0))))" ( (binary_expression "((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)) &&\n       ((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))" (parenthesized_expression "((((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0))" ( (binary_expression "(((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar1 = push_type(info,(char *)type), bVar1 != 0)" (parenthesized_expression "(((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0))" ( (binary_expression "((!bVar9 && !bVar10) != bVar9) || (type = type + 6, type != (byte *)0x0)" (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" ( (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) || (parenthesized_expression "(type = type + 6, type != (byte *)0x0)" ( (comma_expression "type = type + 6, type != (byte *)0x0" (assignment_expression "type = type + 6" identifier = (binary_expression "type + 6" identifier + number_literal)) , (binary_expression "type != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(bVar1 = push_type(info,(char *)type), bVar1 != 0)" ( (comma_expression "bVar1 = push_type(info,(char *)type), bVar1 != 0" (assignment_expression "bVar1 = push_type(info,(char *)type)" identifier = (call_expression "push_type(info,(char *)type)" identifier (argument_list "(info,(char *)type)" ( identifier , (cast_expression "(char *)type" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "bVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)))" ( (parenthesized_expression "(is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0))" ( (binary_expression "is_virtual == 0 || (bVar1 = prepend_type(info,"virtual "), bVar1 != 0)" (binary_expression "is_virtual == 0" identifier == number_literal) || (parenthesized_expression "(bVar1 = prepend_type(info,"virtual "), bVar1 != 0)" ( (comma_expression "bVar1 = prepend_type(info,"virtual "), bVar1 != 0" (assignment_expression "bVar1 = prepend_type(info,"virtual ")" identifier = (call_expression "prepend_type(info,"virtual ")" identifier (argument_list "(info,"virtual ")" ( identifier , (string_literal ""virtual "" " string_content ") )))) , (binary_expression "bVar1 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      pcVar2 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }\n      bVar1 = prepend_type(info,pcVar2);\n      if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }\n    }" { (expression_statement "pcVar2 = "protected ";" (assignment_expression "pcVar2 = "protected "" identifier = (string_literal ""protected "" " string_content ")) ;) (if_statement "if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }" if (parenthesized_expression "((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC))" ( (binary_expression "(visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)" (parenthesized_expression "(visibility != DEBUG_VISIBILITY_PROTECTED)" ( (binary_expression "visibility != DEBUG_VISIBILITY_PROTECTED" identifier != identifier) )) && (parenthesized_expression "(pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)" ( (comma_expression "pcVar2 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC" (assignment_expression "pcVar2 = "public "" identifier = (string_literal ""public "" " string_content ")) , (binary_expression "visibility != DEBUG_VISIBILITY_PUBLIC" identifier != identifier)) ))) )) (compound_statement "{\n        pcVar2 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }\n      }" { (expression_statement "pcVar2 = "private ";" (assignment_expression "pcVar2 = "private "" identifier = (string_literal ""private "" " string_content ")) ;) (if_statement "if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar2 = "/* unknown visibility */ ";\n        }" if (parenthesized_expression "(visibility != DEBUG_VISIBILITY_PRIVATE)" ( (binary_expression "visibility != DEBUG_VISIBILITY_PRIVATE" identifier != identifier) )) (compound_statement "{\n          pcVar2 = "/* unknown visibility */ ";\n        }" { (expression_statement "pcVar2 = "/* unknown visibility */ ";" (assignment_expression "pcVar2 = "/* unknown visibility */ "" identifier = (string_literal ""/* unknown visibility */ "" " string_content ")) ;) })) })) (expression_statement "bVar1 = prepend_type(info,pcVar2);" (assignment_expression "bVar1 = prepend_type(info,pcVar2)" identifier = (call_expression "prepend_type(info,pcVar2)" identifier (argument_list "(info,pcVar2)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 != 0) {\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }\n        pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);\n        pcVar2 = strchr(pcVar3,0x7b);\n        if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }\n        pcVar2 = pcVar2 + -1;\n        for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }\n        pcVar3 = " : ";\nLAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);\n        if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }\n      }" { (if_statement "if (bitpos != 0) {\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }" if (parenthesized_expression "(bitpos != 0)" ( (binary_expression "bitpos != 0" identifier != number_literal) )) (compound_statement "{\n          sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);\n          bVar1 = append_type(info," /* bitpos ");\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info,ab);\n          if (bVar1 == 0) {\n            return 0;\n          }\n          bVar1 = append_type(info," */");\n          if (bVar1 == 0) {\n            return 0;\n          }\n        }" { (expression_statement "sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_);" (call_expression "sprintf(ab,"%llu",(undefined4)bitpos,bitpos._4_4_)" identifier (argument_list "(ab,"%llu",(undefined4)bitpos,bitpos._4_4_)" ( identifier , (string_literal ""%llu"" " string_content ") , (cast_expression "(undefined4)bitpos" ( (type_descriptor "undefined4" type_identifier) ) identifier) , (field_expression "bitpos._4_4_" identifier . field_identifier) ))) ;) (expression_statement "bVar1 = append_type(info," /* bitpos ");" (assignment_expression "bVar1 = append_type(info," /* bitpos ")" identifier = (call_expression "append_type(info," /* bitpos ")" identifier (argument_list "(info," /* bitpos ")" ( identifier , (string_literal "" /* bitpos "" " string_content ") )))) ;) (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 "bVar1 = append_type(info,ab);" (assignment_expression "bVar1 = append_type(info,ab)" identifier = (call_expression "append_type(info,ab)" identifier (argument_list "(info,ab)" ( 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 "bVar1 = append_type(info," */");" (assignment_expression "bVar1 = append_type(info," */")" identifier = (call_expression "append_type(info," */")" identifier (argument_list "(info," */")" ( identifier , (string_literal "" */"" " string_content ") )))) ;) (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 "pcVar3 = *(char **)(**(int **)((int)p + 8) + 4);" (assignment_expression "pcVar3 = *(char **)(**(int **)((int)p + 8) + 4)" identifier = (pointer_expression "*(char **)(**(int **)((int)p + 8) + 4)" * (cast_expression "(char **)(**(int **)((int)p + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)((int)p + 8) + 4)" ( (binary_expression "**(int **)((int)p + 8) + 4" (pointer_expression "**(int **)((int)p + 8)" * (pointer_expression "*(int **)((int)p + 8)" * (cast_expression "(int **)((int)p + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pcVar2 = strchr(pcVar3,0x7b);" (assignment_expression "pcVar2 = strchr(pcVar3,0x7b)" identifier = (call_expression "strchr(pcVar3,0x7b)" identifier (argument_list "(pcVar3,0x7b)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\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                    /* WARNING: Subroutine does not return */\n          __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n        }" { comment (expression_statement "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");" (call_expression "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" identifier (argument_list "("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" ( (string_literal ""s != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "pcVar2 = pcVar2 + -1;" (assignment_expression "pcVar2 = pcVar2 + -1" identifier = (binary_expression "pcVar2 + -1" identifier + number_literal)) ;) (for_statement "for (; pcVar3 != pcVar2; pcVar3 = pcVar3 + 1) {\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }" for ( ; (binary_expression "pcVar3 != pcVar2" identifier != identifier) ; (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ) (compound_statement "{\n          if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }\n        }" { (if_statement "if (*pcVar3 == ':') {\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }" if (parenthesized_expression "(*pcVar3 == ':')" ( (binary_expression "*pcVar3 == ':'" (pointer_expression "*pcVar3" * identifier) == (char_literal "':'" ' character ')) )) (compound_statement "{\n            pcVar3 = ", ";\n            goto LAB_00039f2e;\n          }" { (expression_statement "pcVar3 = ", ";" (assignment_expression "pcVar3 = ", "" identifier = (string_literal "", "" " string_content ")) ;) (goto_statement "goto LAB_00039f2e;" goto statement_identifier ;) })) })) (expression_statement "pcVar3 = " : ";" (assignment_expression "pcVar3 = " : "" identifier = (string_literal "" : "" " string_content ")) ;) (labeled_statement "LAB_00039f2e:\n        bVar1 = prepend_type(info,pcVar3);" statement_identifier : (expression_statement "bVar1 = prepend_type(info,pcVar3);" (assignment_expression "bVar1 = prepend_type(info,pcVar3)" identifier = (call_expression "prepend_type(info,pcVar3)" identifier (argument_list "(info,pcVar3)" ( identifier , identifier )))) ;)) (if_statement "if ((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) {\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }" if (parenthesized_expression "((bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0))" ( (binary_expression "(bVar1 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)" (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(pcVar3 = pop_type(info), pcVar3 != (char *)0x0)" ( (comma_expression "pcVar3 = pop_type(info), pcVar3 != (char *)0x0" (assignment_expression "pcVar3 = pop_type(info)" identifier = (call_expression "pop_type(info)" identifier (argument_list "(info)" ( identifier )))) , (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));\n          sVar5 = strlen(pcVar3);\n          __dest = (char *)xmalloc(sVar4 + 1 + sVar5);\n          iVar6 = *(int *)((int)p + 8);\n          memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));\n          strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);\n          strcat(__dest,pcVar2);\n          free(*(void **)(iVar6 + 4));\n          *(char **)(*(int *)((int)p + 8) + 4) = __dest;\n          free(pcVar3);\n          return 1;\n        }" { (expression_statement "sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4));" (assignment_expression "sVar4 = strlen(*(char **)(*(int *)((int)p + 8) + 4))" identifier = (call_expression "strlen(*(char **)(*(int *)((int)p + 8) + 4))" identifier (argument_list "(*(char **)(*(int *)((int)p + 8) + 4))" ( (pointer_expression "*(char **)(*(int *)((int)p + 8) + 4)" * (cast_expression "(char **)(*(int *)((int)p + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)p + 8) + 4)" ( (binary_expression "*(int *)((int)p + 8) + 4" (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "sVar5 = strlen(pcVar3);" (assignment_expression "sVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar4 + 1 + sVar5);" (assignment_expression "__dest = (char *)xmalloc(sVar4 + 1 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 1 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 1 + sVar5)" identifier (argument_list "(sVar4 + 1 + sVar5)" ( (binary_expression "sVar4 + 1 + sVar5" (binary_expression "sVar4 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar6 = *(int *)((int)p + 8);" (assignment_expression "iVar6 = *(int *)((int)p + 8)" identifier = (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4));" (call_expression "memcpy(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4))" identifier (argument_list "(__dest,*(void **)(iVar6 + 4),(int)pcVar2 - (int)*(void **)(iVar6 + 4))" ( identifier , (pointer_expression "*(void **)(iVar6 + 4)" * (cast_expression "(void **)(iVar6 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) , (binary_expression "(int)pcVar2 - (int)*(void **)(iVar6 + 4)" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)*(void **)(iVar6 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(void **)(iVar6 + 4)" * (cast_expression "(void **)(iVar6 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))))) ))) ;) (expression_statement "strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3);" (call_expression "strcpy(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3)" identifier (argument_list "(__dest + ((int)pcVar2 - *(int *)(iVar6 + 4)),pcVar3)" ( (binary_expression "__dest + ((int)pcVar2 - *(int *)(iVar6 + 4))" identifier + (parenthesized_expression "((int)pcVar2 - *(int *)(iVar6 + 4))" ( (binary_expression "(int)pcVar2 - *(int *)(iVar6 + 4)" (cast_expression "(int)pcVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(iVar6 + 4)" * (cast_expression "(int *)(iVar6 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "strcat(__dest,pcVar2);" (call_expression "strcat(__dest,pcVar2)" identifier (argument_list "(__dest,pcVar2)" ( identifier , identifier ))) ;) (expression_statement "free(*(void **)(iVar6 + 4));" (call_expression "free(*(void **)(iVar6 + 4))" identifier (argument_list "(*(void **)(iVar6 + 4))" ( (pointer_expression "*(void **)(iVar6 + 4)" * (cast_expression "(void **)(iVar6 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 4)" ( (binary_expression "iVar6 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "*(char **)(*(int *)((int)p + 8) + 4) = __dest;" (assignment_expression "*(char **)(*(int *)((int)p + 8) + 4) = __dest" (pointer_expression "*(char **)(*(int *)((int)p + 8) + 4)" * (cast_expression "(char **)(*(int *)((int)p + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)p + 8) + 4)" ( (binary_expression "*(int *)((int)p + 8) + 4" (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00039df0(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type 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  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char local_32 [30];" primitive_type (array_declarator "local_32 [30]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x39df9;" (assignment_expression "uStack_14 = 0x39df9" identifier = number_literal) ;) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" ( (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" ( (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" { (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "iVar1 = FUN_00037630();" (assignment_expression "iVar1 = FUN_00037630()" identifier = (call_expression "FUN_00037630()" identifier (argument_list "()" ( )))) ;) (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 "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" identifier = (cast_expression "(byte *)FUN_00036d90()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar10 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar10 = pbVar2 == (byte *)0x0" identifier = (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "(!bVar10)" ( (unary_expression "!bVar10" ! identifier) )) (compound_statement "{\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" { (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar2;" (assignment_expression "pbVar7 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar8 = (byte *)0x57243;" (assignment_expression "pbVar8 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);" do (compound_statement "{\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    }" { (if_statement "if (iVar1 == 0) break;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar1 = iVar1 + -1;" (assignment_expression "iVar1 = iVar1 + -1" identifier = (binary_expression "iVar1 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" identifier = (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" identifier = (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar11 * -2" identifier + (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" if (parenthesized_expression "((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0))" ( (binary_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)" (parenthesized_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))))" ( (binary_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" (parenthesized_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0))" ( (binary_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)" (parenthesized_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa))" ( (binary_expression "((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" ( (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) || (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" ( (binary_expression "pbVar2 != (byte *)0xfffffffa" identifier != (cast_expression "(byte *)0xfffffffa" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar1 = FUN_00038f80(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00038f80(), iVar1 != 0" (assignment_expression "iVar1 = FUN_00038f80()" identifier = (call_expression "FUN_00038f80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" ( (parenthesized_expression "(param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))" ( (binary_expression "param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)" (binary_expression "param_4 == 0" identifier == number_literal) || (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) ))) )) && (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" { (if_statement "if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(param_3 != 0 || param_2 != 0)" ( (binary_expression "param_3 != 0 || param_2 != 0" (binary_expression "param_3 != 0" identifier != number_literal) || (binary_expression "param_2 != 0" identifier != number_literal)) )) (compound_statement "{\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" { (expression_statement "sprintf(local_32,"%llu",param_2,param_3);" (call_expression "sprintf(local_32,"%llu",param_2,param_3)" identifier (argument_list "(local_32,"%llu",param_2,param_3)" ( identifier , (string_literal ""%llu"" " string_content ") , identifier , identifier ))) ;) (expression_statement "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" identifier = (call_expression "FUN_00037580()" identifier (argument_list "()" ( )))) ;) (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 "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);" (assignment_expression "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4)" identifier = (pointer_expression "*(char **)(**(int **)(param_1 + 8) + 4)" * (cast_expression "(char **)(**(int **)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 8) + 4)" ( (binary_expression "**(int **)(param_1 + 8) + 4" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) + number_literal) ))))) ;) (expression_statement "pcVar3 = strchr(pcVar4,0x7b);" (assignment_expression "pcVar3 = strchr(pcVar4,0x7b)" identifier = (call_expression "strchr(pcVar4,0x7b)" identifier (argument_list "(pcVar4,0x7b)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\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                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }" { (expression_statement "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");" (call_expression "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" identifier (argument_list "("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" ( (string_literal ""s != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""pr_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "pcVar3 = pcVar3 + -1;" (assignment_expression "pcVar3 = pcVar3 + -1" identifier = (binary_expression "pcVar3 + -1" identifier + number_literal)) ;) (for_statement "for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }" for ( ; (parenthesized_expression "(pcVar4 != pcVar3 && (*pcVar4 != ':'))" ( (binary_expression "pcVar4 != pcVar3 && (*pcVar4 != ':')" (binary_expression "pcVar4 != pcVar3" identifier != identifier) && (parenthesized_expression "(*pcVar4 != ':')" ( (binary_expression "*pcVar4 != ':'" (pointer_expression "*pcVar4" * identifier) != (char_literal "':'" ' character ')) ))) )) ; (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ) (compound_statement "{\n      }" { })) (expression_statement "iVar1 = FUN_000374e0();" (assignment_expression "iVar1 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" if (parenthesized_expression "((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0))" ( (binary_expression "(iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" ( (comma_expression "pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0" (assignment_expression "pcVar4 = (char *)FUN_00036d90()" identifier = (cast_expression "(char *)FUN_00036d90()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) , (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" { (expression_statement "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));" (assignment_expression "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4))" identifier = (call_expression "strlen(*(char **)(*(int *)(param_1 + 8) + 4))" identifier (argument_list "(*(char **)(*(int *)(param_1 + 8) + 4))" ( (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "sVar6 = strlen(pcVar4);" (assignment_expression "sVar6 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "__dest = (char *)xmalloc(sVar5 + 1 + sVar6);" (assignment_expression "__dest = (char *)xmalloc(sVar5 + 1 + sVar6)" identifier = (cast_expression "(char *)xmalloc(sVar5 + 1 + sVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar5 + 1 + sVar6)" identifier (argument_list "(sVar5 + 1 + sVar6)" ( (binary_expression "sVar5 + 1 + sVar6" (binary_expression "sVar5 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));" (call_expression "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" identifier (argument_list "(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" ( identifier , (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) , (binary_expression "(int)pcVar3 - (int)*(void **)(iVar1 + 4)" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)*(void **)(iVar1 + 4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))))) ))) ;) (expression_statement "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);" (call_expression "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" identifier (argument_list "(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" ( (binary_expression "__dest + ((int)pcVar3 - *(int *)(iVar1 + 4))" identifier + (parenthesized_expression "((int)pcVar3 - *(int *)(iVar1 + 4))" ( (binary_expression "(int)pcVar3 - *(int *)(iVar1 + 4)" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "strcat(__dest,pcVar3);" (call_expression "strcat(__dest,pcVar3)" identifier (argument_list "(__dest,pcVar3)" ( identifier , identifier ))) ;) (expression_statement "free(*(void **)(iVar1 + 4));" (call_expression "free(*(void **)(iVar1 + 4))" identifier (argument_list "(*(void **)(iVar1 + 4))" ( (pointer_expression "*(void **)(iVar1 + 4)" * (cast_expression "(void **)(iVar1 + 4)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "*(char **)(*(int *)(param_1 + 8) + 4) = __dest;" (assignment_expression "*(char **)(*(int *)(param_1 + 8) + 4) = __dest" (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" * (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" ( (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) || (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (for_statement for ( ; (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00039df0(int param_1,int param_2,int param_3,int param_4)\n\n{\n  int iVar1;\n  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00039df0(int param_1,int param_2,int param_3,int param_4)" (identifier "FUN_00039df0") (parameter_list "(int param_1,int param_2,int param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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  byte *pbVar2;\n  char *pcVar3;\n  char *pcVar4;\n  size_t sVar5;\n  size_t sVar6;\n  char *__dest;\n  byte *pbVar7;\n  byte *pbVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  char local_32 [30];\n  undefined4 uStack_14;\n  \n  bVar11 = 0;\n  uStack_14 = 0x39df9;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }\n  iVar1 = FUN_00037630();\n  if (iVar1 == 0) {\n    return 0;\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar9 = false;\n  bVar10 = pbVar2 == (byte *)0x0;\n  if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "char *__dest;" (primitive_type "char") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "char local_32 [30];" (primitive_type "char") (array_declarator "local_32 [30]" (identifier "local_32") ([ "[") (number_literal "30") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x39df9;" (assignment_expression "uStack_14 = 0x39df9" (identifier "uStack_14") (= "=") (number_literal "0x39df9")) (; ";")) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" (if "if") (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" (( "(") (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" (( "(") (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");\n  }" ({ "{") (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" (identifier "__assert_fail") (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,\n                  "pr_class_baseclass")" (( "(") (string_literal ""info->stack != NULL && info->stack->next != NULL"" (" """) (string_content "info->stack != NULL && info->stack->next != NULL") (" """)) (, ",") (string_literal ""../../binutils/prdbg.c"" (" """) (string_content "../../binutils/prdbg.c") (" """)) (, ",") (number_literal "0x53d") (, ",") (string_literal ""pr_class_baseclass"" (" """) (string_content "pr_class_baseclass") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = FUN_00037630();" (assignment_expression "iVar1 = FUN_00037630()" (identifier "iVar1") (= "=") (call_expression "FUN_00037630()" (identifier "FUN_00037630") (argument_list "()" (( "(") () ")")))) (; ";")) (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 "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_00036d90()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036d90()" (identifier "FUN_00036d90") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" (identifier "bVar9") (= "=") (false "false")) (; ";")) (expression_statement "bVar10 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar10 = pbVar2 == (byte *)0x0" (identifier "bVar10") (= "=") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar10) {\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(!bVar10)" (( "(") (unary_expression "!bVar10" (! "!") (identifier "bVar10")) () ")")) (compound_statement "{\n    iVar1 = 6;\n    pbVar7 = pbVar2;\n    pbVar8 = (byte *)0x57243;\n    do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);\n    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" (identifier "iVar1") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar7 = pbVar2;" (assignment_expression "pbVar7 = pbVar2" (identifier "pbVar7") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "pbVar8 = (byte *)0x57243;" (assignment_expression "pbVar8 = (byte *)0x57243" (identifier "pbVar8") (= "=") (cast_expression "(byte *)0x57243" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x57243"))) (; ";")) (do_statement "do {\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    } while (bVar10);" (do "do") (compound_statement "{\n      if (iVar1 == 0) break;\n      iVar1 = iVar1 + -1;\n      bVar9 = *pbVar7 < *pbVar8;\n      bVar10 = *pbVar7 == *pbVar8;\n      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;\n      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar1 == 0) break;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar1 = iVar1 + -1;" (assignment_expression "iVar1 = iVar1 + -1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + -1" (identifier "iVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar7 < *pbVar8;" (assignment_expression "bVar9 = *pbVar7 < *pbVar8" (identifier "bVar9") (= "=") (binary_expression "*pbVar7 < *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (< "<") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "bVar10 = *pbVar7 == *pbVar8;" (assignment_expression "bVar10 = *pbVar7 == *pbVar8" (identifier "bVar10") (= "=") (binary_expression "*pbVar7 == *pbVar8" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (== "==") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar11 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + (uint)bVar11 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar11 * -2" (identifier "pbVar8") (+ "+") (binary_expression "(uint)bVar11 * -2" (cast_expression "(uint)bVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (; ";")) (if_statement "if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)) {\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0))" (( "(") (binary_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&\n       (iVar1 = FUN_000374e0(), iVar1 != 0)" (parenthesized_expression "(((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))))" (( "(") (binary_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&\n        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" (parenthesized_expression "((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0))" (( "(") (binary_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&\n         (iVar1 = FUN_00038f80(), iVar1 != 0)" (parenthesized_expression "(((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa))" (( "(") (binary_expression "((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" (( "(") (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) () ")")) (!= "!=") (identifier "bVar9")) () ")")) (|| "||") (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" (( "(") (binary_expression "pbVar2 != (byte *)0xfffffffa" (identifier "pbVar2") (!= "!=") (cast_expression "(byte *)0xfffffffa" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xfffffffa"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_00038f80(), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_00038f80(), iVar1 != 0" (assignment_expression "iVar1 = FUN_00038f80()" (identifier "iVar1") (= "=") (call_expression "FUN_00038f80()" (identifier "FUN_00038f80") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))" (( "(") (parenthesized_expression "(param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0))" (( "(") (binary_expression "param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)" (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" (identifier "iVar1") (= "=") (call_expression "FUN_000374e0()" (identifier "FUN_000374e0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_000374e0(), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_000374e0(), iVar1 != 0" (assignment_expression "iVar1 = FUN_000374e0()" (identifier "iVar1") (= "=") (call_expression "FUN_000374e0()" (identifier "FUN_000374e0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }\n      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);\n      pcVar3 = strchr(pcVar4,0x7b);\n      if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }\n      pcVar3 = pcVar3 + -1;\n      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }\n      iVar1 = FUN_000374e0();\n      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }\n    }" ({ "{") (if_statement "if (param_3 != 0 || param_2 != 0) {\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" (if "if") (parenthesized_expression "(param_3 != 0 || param_2 != 0)" (( "(") (binary_expression "param_3 != 0 || param_2 != 0" (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n        sprintf(local_32,"%llu",param_2,param_3);\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n        iVar1 = FUN_00037580();\n        if (iVar1 == 0) {\n          return 0;\n        }\n      }" ({ "{") (expression_statement "sprintf(local_32,"%llu",param_2,param_3);" (call_expression "sprintf(local_32,"%llu",param_2,param_3)" (identifier "sprintf") (argument_list "(local_32,"%llu",param_2,param_3)" (( "(") (identifier "local_32") (, ",") (string_literal ""%llu"" (" """) (string_content "%llu") (" """)) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" (identifier "iVar1") (= "=") (call_expression "FUN_00037580()" (identifier "FUN_00037580") (argument_list "()" (( "(") () ")")))) (; ";")) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" (identifier "iVar1") (= "=") (call_expression "FUN_00037580()" (identifier "FUN_00037580") (argument_list "()" (( "(") () ")")))) (; ";")) (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 "iVar1 = FUN_00037580();" (assignment_expression "iVar1 = FUN_00037580()" (identifier "iVar1") (= "=") (call_expression "FUN_00037580()" (identifier "FUN_00037580") (argument_list "()" (( "(") () ")")))) (; ";")) (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 "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);" (assignment_expression "pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(**(int **)(param_1 + 8) + 4)" (* "*") (cast_expression "(char **)(**(int **)(param_1 + 8) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 8) + 4)" (( "(") (binary_expression "**(int **)(param_1 + 8) + 4" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strchr(pcVar4,0x7b);" (assignment_expression "pcVar3 = strchr(pcVar4,0x7b)" (identifier "pcVar3") (= "=") (call_expression "strchr(pcVar4,0x7b)" (identifier "strchr") (argument_list "(pcVar4,0x7b)" (( "(") (identifier "pcVar4") (, ",") (number_literal "0x7b") () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\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                    \n        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");\n      }" ({ "{") (expression_statement "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");" (call_expression "__assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" (identifier "__assert_fail") (argument_list "("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass")" (( "(") (string_literal ""s != NULL"" (" """) (string_content "s != NULL") (" """)) (, ",") (string_literal ""../../binutils/prdbg.c"" (" """) (string_content "../../binutils/prdbg.c") (" """)) (, ",") (number_literal "0x575") (, ",") (string_literal ""pr_class_baseclass"" (" """) (string_content "pr_class_baseclass") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar3 = pcVar3 + -1;" (assignment_expression "pcVar3 = pcVar3 + -1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + -1" (identifier "pcVar3") (+ "+") (number_literal "-1"))) (; ";")) (for_statement "for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {\n      }" (for "for") (( "(") (; ";") (parenthesized_expression "(pcVar4 != pcVar3 && (*pcVar4 != ':'))" (( "(") (binary_expression "pcVar4 != pcVar3 && (*pcVar4 != ':')" (binary_expression "pcVar4 != pcVar3" (identifier "pcVar4") (!= "!=") (identifier "pcVar3")) (&& "&&") (parenthesized_expression "(*pcVar4 != ':')" (( "(") (binary_expression "*pcVar4 != ':'" (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) (!= "!=") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")"))) () ")")) (; ";") (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n      }" ({ "{") (} "}"))) (expression_statement "iVar1 = FUN_000374e0();" (assignment_expression "iVar1 = FUN_000374e0()" (identifier "iVar1") (= "=") (call_expression "FUN_000374e0()" (identifier "FUN_000374e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" (if "if") (parenthesized_expression "((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0))" (( "(") (binary_expression "(iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)" (( "(") (comma_expression "pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0" (assignment_expression "pcVar4 = (char *)FUN_00036d90()" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00036d90()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036d90()" (identifier "FUN_00036d90") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));\n        sVar6 = strlen(pcVar4);\n        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);\n        iVar1 = *(int *)(param_1 + 8);\n        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));\n        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);\n        strcat(__dest,pcVar3);\n        free(*(void **)(iVar1 + 4));\n        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;\n        free(pcVar4);\n        return 1;\n      }" ({ "{") (expression_statement "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));" (assignment_expression "sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4))" (identifier "sVar5") (= "=") (call_expression "strlen(*(char **)(*(int *)(param_1 + 8) + 4))" (identifier "strlen") (argument_list "(*(char **)(*(int *)(param_1 + 8) + 4))" (( "(") (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" (* "*") (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (expression_statement "sVar6 = strlen(pcVar4);" (assignment_expression "sVar6 = strlen(pcVar4)" (identifier "sVar6") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "__dest = (char *)xmalloc(sVar5 + 1 + sVar6);" (assignment_expression "__dest = (char *)xmalloc(sVar5 + 1 + sVar6)" (identifier "__dest") (= "=") (cast_expression "(char *)xmalloc(sVar5 + 1 + sVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar5 + 1 + sVar6)" (identifier "xmalloc") (argument_list "(sVar5 + 1 + sVar6)" (( "(") (binary_expression "sVar5 + 1 + sVar6" (binary_expression "sVar5 + 1" (identifier "sVar5") (+ "+") (number_literal "1")) (+ "+") (identifier "sVar6")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));" (call_expression "memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" (identifier "memcpy") (argument_list "(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4))" (( "(") (identifier "__dest") (, ",") (pointer_expression "*(void **)(iVar1 + 4)" (* "*") (cast_expression "(void **)(iVar1 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (, ",") (binary_expression "(int)pcVar3 - (int)*(void **)(iVar1 + 4)" (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")) (- "-") (cast_expression "(int)*(void **)(iVar1 + 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(void **)(iVar1 + 4)" (* "*") (cast_expression "(void **)(iVar1 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))))) () ")"))) (; ";")) (expression_statement "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);" (call_expression "strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" (identifier "strcpy") (argument_list "(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4)" (( "(") (binary_expression "__dest + ((int)pcVar3 - *(int *)(iVar1 + 4))" (identifier "__dest") (+ "+") (parenthesized_expression "((int)pcVar3 - *(int *)(iVar1 + 4))" (( "(") (binary_expression "(int)pcVar3 - *(int *)(iVar1 + 4)" (cast_expression "(int)pcVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar3")) (- "-") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) () ")"))) (, ",") (identifier "pcVar4") () ")"))) (; ";")) (expression_statement "strcat(__dest,pcVar3);" (call_expression "strcat(__dest,pcVar3)" (identifier "strcat") (argument_list "(__dest,pcVar3)" (( "(") (identifier "__dest") (, ",") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "free(*(void **)(iVar1 + 4));" (call_expression "free(*(void **)(iVar1 + 4))" (identifier "free") (argument_list "(*(void **)(iVar1 + 4))" (( "(") (pointer_expression "*(void **)(iVar1 + 4)" (* "*") (cast_expression "(void **)(iVar1 + 4)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "*(char **)(*(int *)(param_1 + 8) + 4) = __dest;" (assignment_expression "*(char **)(*(int *)(param_1 + 8) + 4) = __dest" (pointer_expression "*(char **)(*(int *)(param_1 + 8) + 4)" (* "*") (cast_expression "(char **)(*(int *)(param_1 + 8) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "__dest")) (; ";")) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" (identifier "free") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

type_1
function_1(void *p,type_2 var_17,type_1 var_11,type_3 var_13)

{
  type_4 *info;
  type_1 var_3;
  type_5 *var_5;
  char *var_21;
  char *var_22;
  size_t var_25;
  size_t var_26;
  char *var_29;
  int var_6;
  type_5 *var_7;
  type_5 *var_8;
  bool var_9;
  bool bVar10;
  type_5 bVar11;
  char ab [22];
  
  bVar11 = 0;
  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    var_1("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,
                  "pr_class_baseclass");
  }
  var_3 = var_2((type_4 *)p,"");
  if (var_3 == 0) {
    return 0;
  }
  info = (type_4 *)((int)p + 8);
  var_5 = (type_5 *)var_4(info);
  var_9 = false;
  bVar10 = var_5 == (type_5 *)0x0;
  if (!bVar10) {
    var_6 = 6;
    var_7 = var_5;
    var_8 = (type_5 *)0x57243;
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_9 = *var_7 < *var_8;
      bVar10 = *var_7 == *var_8;
      var_7 = var_7 + (type_6)bVar11 * -2 + 1;
      var_8 = var_8 + (type_6)bVar11 * -2 + 1;
    } while (bVar10);
    if (((((!var_9 && !bVar10) != var_9) || (var_5 = var_5 + 6, var_5 != (type_5 *)0x0)) &&
        (var_3 = var_10(info,(char *)var_5), var_3 != 0)) &&
       ((var_11 == 0 || (var_3 = var_12(info,"virtual "), var_3 != 0)))) {
      var_21 = "protected ";
      if ((var_13 != var_14) &&
         (var_21 = "public ", var_13 != var_15)) {
        var_21 = "private ";
        if (var_13 != var_16) {
          var_21 = "/* unknown visibility */ ";
        }
      }
      var_3 = var_12(info,var_21);
      if (var_3 != 0) {
        if (var_17 != 0) {
          var_18(ab,"%llu",(type_7)var_17,var_17._4_4_);
          var_3 = var_19(info," /* bitpos ");
          if (var_3 == 0) {
            return 0;
          }
          var_3 = var_19(info,ab);
          if (var_3 == 0) {
            return 0;
          }
          var_3 = var_19(info," */");
          if (var_3 == 0) {
            return 0;
          }
        }
        var_22 = *(char **)(**(int **)((int)p + 8) + 4);
        var_21 = var_20(var_22,0x7b);
        if (var_21 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
          var_1("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");
        }
        var_21 = var_21 + -1;
        for (; var_22 != var_21; var_22 = var_22 + 1) {
          if (*var_22 == ':') {
            var_22 = ", ";
            goto LAB_00039f2e;
          }
        }
        var_22 = " : ";
LAB_00039f2e:
        var_3 = var_12(info,var_22);
        if ((var_3 != 0) && (var_22 = var_4(info), var_22 != (char *)0x0)) {
          var_25 = var_23(*(char **)(*(int *)((int)p + 8) + 4));
          var_26 = var_23(var_22);
          var_29 = (char *)var_24(var_25 + 1 + var_26);
          var_6 = *(int *)((int)p + 8);
          var_27(var_29,*(void **)(var_6 + 4),(int)var_21 - (int)*(void **)(var_6 + 4));
          var_28(var_29 + ((int)var_21 - *(int *)(var_6 + 4)),var_22);
          var_30(var_29,var_21);
          var_31(*(void **)(var_6 + 4));
          *(char **)(*(int *)((int)p + 8) + 4) = var_29;
          var_31(var_22);
          return 1;
        }
      }
    }
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal))))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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 (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (for_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))))) (return_statement (number_literal)))))

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

undefined4 MASKED(int param_1,int param_2,int param_3,int param_4)

{
  int iVar1;
  byte *pbVar2;
  char *pcVar3;
  char *pcVar4;
  size_t sVar5;
  size_t sVar6;
  char *__dest;
  byte *pbVar7;
  byte *pbVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  char local_32 [30];
  undefined4 uStack_14;
  
  bVar11 = 0;
  uStack_14 = 0x39df9;
  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x53d,
                  "pr_class_baseclass");
  }
  iVar1 = FUN_00037630();
  if (iVar1 == 0) {
    return 0;
  }
  pbVar2 = (byte *)FUN_00036d90();
  bVar9 = false;
  bVar10 = pbVar2 == (byte *)0x0;
  if (!bVar10) {
    iVar1 = 6;
    pbVar7 = pbVar2;
    pbVar8 = (byte *)0x57243;
    do {
      if (iVar1 == 0) break;
      iVar1 = iVar1 + -1;
      bVar9 = *pbVar7 < *pbVar8;
      bVar10 = *pbVar7 == *pbVar8;
      pbVar7 = pbVar7 + (uint)bVar11 * -2 + 1;
      pbVar8 = pbVar8 + (uint)bVar11 * -2 + 1;
    } while (bVar10);
    if ((((((!bVar9 && !bVar10) != bVar9) || (pbVar2 != (byte *)0xfffffffa)) &&
         (iVar1 = FUN_00038f80(), iVar1 != 0)) &&
        ((param_4 == 0 || (iVar1 = FUN_000374e0(), iVar1 != 0)))) &&
       (iVar1 = FUN_000374e0(), iVar1 != 0)) {
      if (param_3 != 0 || param_2 != 0) {
        sprintf(local_32,"%llu",param_2,param_3);
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
        iVar1 = FUN_00037580();
        if (iVar1 == 0) {
          return 0;
        }
      }
      pcVar4 = *(char **)(**(int **)(param_1 + 8) + 4);
      pcVar3 = strchr(pcVar4,0x7b);
      if (pcVar3 == (char *)0x0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("s != NULL","../../binutils/prdbg.c",0x575,"pr_class_baseclass");
      }
      pcVar3 = pcVar3 + -1;
      for (; (pcVar4 != pcVar3 && (*pcVar4 != ':')); pcVar4 = pcVar4 + 1) {
      }
      iVar1 = FUN_000374e0();
      if ((iVar1 != 0) && (pcVar4 = (char *)FUN_00036d90(), pcVar4 != (char *)0x0)) {
        sVar5 = strlen(*(char **)(*(int *)(param_1 + 8) + 4));
        sVar6 = strlen(pcVar4);
        __dest = (char *)xmalloc(sVar5 + 1 + sVar6);
        iVar1 = *(int *)(param_1 + 8);
        memcpy(__dest,*(void **)(iVar1 + 4),(int)pcVar3 - (int)*(void **)(iVar1 + 4));
        strcpy(__dest + ((int)pcVar3 - *(int *)(iVar1 + 4)),pcVar4);
        strcat(__dest,pcVar3);
        free(*(void **)(iVar1 + 4));
        *(char **)(*(int *)(param_1 + 8) + 4) = __dest;
        free(pcVar4);
        return 1;
      }
    }
  }
  return 0;
}

