
bfd_boolean substitute_type(pr_handle *info,char *s)

{
  pr_stack *ppVar1;
  bfd_boolean bVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  
  if (info->stack == (pr_stack *)0x0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");
  }
  pcVar6 = info->stack->type;
  pcVar3 = strchr(pcVar6,0x7c);
  if (pcVar3 != (char *)0x0) {
    sVar4 = strlen(pcVar6);
    sVar5 = strlen(s);
    pcVar6 = (char *)xmalloc(sVar4 + sVar5);
    ppVar1 = info->stack;
    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);
    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);
    strcat(pcVar6,pcVar3 + 1);
    free(ppVar1->type);
    info->stack->type = pcVar6;
    return 1;
  }
  pcVar3 = strchr(s,0x7c);
  if ((pcVar3 != (char *)0x0) &&
     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||
      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {
    bVar2 = prepend_type((pr_handle *)&info->stack,"(");
    if (bVar2 == 0) {
      return 0;
    }
    bVar2 = append_type((pr_handle *)&info->stack,")");
    if (bVar2 == 0) {
      return 0;
    }
  }
  if (*s == '\0') {
    return 1;
  }
  bVar2 = append_type((pr_handle *)&info->stack," ");
  if (bVar2 == 0) {
    return 0;
  }
  bVar2 = append_type((pr_handle *)&info->stack,s);
  return (uint)(bVar2 != 0);
}



bool FUN_00127110(long param_1,char *param_2)

{
  long lVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  
  if (*(long *)(param_1 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");
  }
  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);
  pcVar3 = strchr(pcVar6,0x7c);
  if (pcVar3 != (char *)0x0) {
    sVar4 = strlen(pcVar6);
    sVar5 = strlen(param_2);
    pcVar6 = (char *)xmalloc(sVar4 + sVar5);
    lVar1 = *(long *)(param_1 + 0x10);
    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));
    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);
    strcat(pcVar6,pcVar3 + 1);
    free(*(void **)(lVar1 + 8));
    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;
    return true;
  }
  pcVar3 = strchr(param_2,0x7c);
  if ((pcVar3 != (char *)0x0) &&
     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||
      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {
    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);
    if (iVar2 == 0) {
      return false;
    }
    iVar2 = FUN_00127080(param_1 + 0x10,")");
    if (iVar2 == 0) {
      return false;
    }
  }
  if (*param_2 == '\0') {
    return true;
  }
  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);
  if (iVar2 == 0) {
    return false;
  }
  iVar2 = FUN_00127080(param_1 + 0x10,param_2);
  return iVar2 != 0;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RAX,qword ptr [RDI + 0x10]
TEST RAX,RAX
JZ 0x0012727b
MOV R12,qword ptr [RAX + 0x8]
MOV RBP,RDI
MOV R13,RSI
MOV ESI,0x7c
MOV RDI,R12
CALL 0x00107280
MOV RBX,RAX
TEST RAX,RAX
JNZ 0x001271e8
MOV ESI,0x7c
MOV RDI,R13
CALL 0x00107280
TEST RAX,RAX
JZ 0x001271ab
MOV ESI,0x7b
MOV RDI,R12
CALL 0x00107280
TEST RAX,RAX
JZ 0x00127260
LEA RBX,[RBP + 0x10]
LEA RSI,[0x14295d]
MOV RDI,RBX
CALL 0x00126fe0
TEST EAX,EAX
JNZ 0x00127198
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
LEA RSI,[0x142459]
MOV RDI,RBX
CALL 0x00127080
TEST EAX,EAX
JZ 0x00127187
CMP byte ptr [R13],0x0
MOV EAX,0x1
JZ 0x00127189
ADD RBP,0x10
LEA RSI,[0x13d6b7]
MOV RDI,RBP
CALL 0x00127080
TEST EAX,EAX
JZ 0x00127187
MOV RSI,R13
MOV RDI,RBP
CALL 0x00127080
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
JMP 0x00127189
MOV RDI,R12
CALL 0x00107250
MOV RDI,R13
MOV R12,RAX
CALL 0x00107250
LEA RDI,[R12 + RAX*0x1]
CALL 0x00107350
MOV R14,qword ptr [RBP + 0x10]
MOV RDX,RBX
MOV RDI,RAX
MOV R12,RAX
MOV RSI,qword ptr [R14 + 0x8]
SUB RDX,RSI
CALL 0x001074b0
MOV RDI,RBX
SUB RDI,qword ptr [R14 + 0x8]
MOV RSI,R13
ADD RDI,R12
CALL 0x001070f0
LEA RSI,[RBX + 0x1]
MOV RDI,R12
CALL 0x00107740
MOV RDI,qword ptr [R14 + 0x8]
CALL 0x00107070
MOV RAX,qword ptr [RBP + 0x10]
MOV qword ptr [RAX + 0x8],R12
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV ESI,0x28
MOV RDI,R12
CALL 0x00107280
TEST RAX,RAX
JNZ 0x00127170
JMP 0x001271ab
LEA RCX,[0x146070]
MOV EDX,0x1a3
LEA RSI,[0x14576d]
LEA RDI,[0x145784]
CALL 0x001072d0
(translation_unit "bool FUN_00127110(long param_1,char *param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}\n\n" (function_definition "bool FUN_00127110(long param_1,char *param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" primitive_type (function_declarator "FUN_00127110(long param_1,char *param_2)" identifier (parameter_list "(long param_1,char *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type 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 *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (if_statement "if (*(long *)(param_1 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x10) == 0)" ( (binary_expression "*(long *)(param_1 + 0x10) == 0" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");" (call_expression "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" identifier (argument_list "("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" ( (string_literal ""info->stack != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""substitute_type"" " string_content ") ))) ;) })) (expression_statement "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);" (assignment_expression "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8)" identifier = (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" * (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" ( (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar3 = strchr(pcVar6,0x7c);" (assignment_expression "pcVar3 = strchr(pcVar6,0x7c)" identifier = (call_expression "strchr(pcVar6,0x7c)" identifier (argument_list "(pcVar6,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\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    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }" { (expression_statement "sVar4 = strlen(pcVar6);" (assignment_expression "sVar4 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar4 + sVar5);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar4 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5)" identifier (argument_list "(sVar4 + sVar5)" ( (binary_expression "sVar4 + sVar5" identifier + identifier) ))))) ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));" (call_expression "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" identifier (argument_list "(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" ( identifier , (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) , (binary_expression "(long)pcVar3 - (long)*(void **)(lVar1 + 8)" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)*(void **)(lVar1 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))))) ))) ;) (expression_statement "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);" (call_expression "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" identifier (argument_list "(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" ( (binary_expression "pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8))" identifier + (parenthesized_expression "((long)pcVar3 - *(long *)(lVar1 + 8))" ( (binary_expression "(long)pcVar3 - *(long *)(lVar1 + 8)" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "strcat(pcVar6,pcVar3 + 1);" (call_expression "strcat(pcVar6,pcVar3 + 1)" identifier (argument_list "(pcVar6,pcVar3 + 1)" ( identifier , (binary_expression "pcVar3 + 1" identifier + number_literal) ))) ;) (expression_statement "free(*(void **)(lVar1 + 8));" (call_expression "free(*(void **)(lVar1 + 8))" identifier (argument_list "(*(void **)(lVar1 + 8))" ( (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;" (assignment_expression "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6" (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" * (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" ( (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (return_statement "return true;" return true ;) })) (expression_statement "pcVar3 = strchr(param_2,0x7c);" (assignment_expression "pcVar3 = strchr(param_2,0x7c)" identifier = (call_expression "strchr(param_2,0x7c)" identifier (argument_list "(param_2,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" if (parenthesized_expression "((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))))" ( (binary_expression "(pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" ( (parenthesized_expression "(pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))" ( (comma_expression "pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (assignment_expression "pcVar3 = strchr(pcVar6,0x7b)" identifier = (call_expression "strchr(pcVar6,0x7b)" identifier (argument_list "(pcVar6,0x7b)" ( identifier , number_literal )))) , (binary_expression "pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" ( (comma_expression "pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0" (assignment_expression "pcVar6 = strchr(pcVar6,0x28)" identifier = (call_expression "strchr(pcVar6,0x28)" identifier (argument_list "(pcVar6,0x28)" ( identifier , number_literal )))) , (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" { (expression_statement "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);" (assignment_expression "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" identifier = (call_expression "FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" identifier (argument_list "(param_1 + 0x10,&DAT_0014295d)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (pointer_expression "&DAT_0014295d" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,")");" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,")")" identifier = (call_expression "FUN_00127080(param_1 + 0x10,")")" identifier (argument_list "(param_1 + 0x10,")")" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (string_literal "")"" " string_content ") )))) ;) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) })) (if_statement "if (*param_2 == '\0') {\n    return true;\n  }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" identifier = (call_expression "FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" identifier (argument_list "(param_1 + 0x10,&DAT_0013d6b7)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (pointer_expression "&DAT_0013d6b7" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,param_2);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,param_2)" identifier = (call_expression "FUN_00127080(param_1 + 0x10,param_2)" identifier (argument_list "(param_1 + 0x10,param_2)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier )))) ;) (return_statement "return iVar2 != 0;" return (binary_expression "iVar2 != 0" identifier != number_literal) ;) })))
(translation_unit "bfd_boolean substitute_type(pr_handle *info,char *s)\n\n{\n  pr_stack *ppVar1;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (info->stack == (pr_stack *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = info->stack->type;\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(s);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    ppVar1 = info->stack;\n    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);\n    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);\n    strcat(pcVar6,pcVar3 + 1);\n    free(ppVar1->type);\n    info->stack->type = pcVar6;\n    return 1;\n  }\n  pcVar3 = strchr(s,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    bVar2 = prepend_type((pr_handle *)&info->stack,"(");\n    if (bVar2 == 0) {\n      return 0;\n    }\n    bVar2 = append_type((pr_handle *)&info->stack,")");\n    if (bVar2 == 0) {\n      return 0;\n    }\n  }\n  if (*s == '\0') {\n    return 1;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack," ");\n  if (bVar2 == 0) {\n    return 0;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack,s);\n  return (uint)(bVar2 != 0);\n}\n\n" (function_definition "bfd_boolean substitute_type(pr_handle *info,char *s)\n\n{\n  pr_stack *ppVar1;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (info->stack == (pr_stack *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = info->stack->type;\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(s);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    ppVar1 = info->stack;\n    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);\n    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);\n    strcat(pcVar6,pcVar3 + 1);\n    free(ppVar1->type);\n    info->stack->type = pcVar6;\n    return 1;\n  }\n  pcVar3 = strchr(s,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    bVar2 = prepend_type((pr_handle *)&info->stack,"(");\n    if (bVar2 == 0) {\n      return 0;\n    }\n    bVar2 = append_type((pr_handle *)&info->stack,")");\n    if (bVar2 == 0) {\n      return 0;\n    }\n  }\n  if (*s == '\0') {\n    return 1;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack," ");\n  if (bVar2 == 0) {\n    return 0;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack,s);\n  return (uint)(bVar2 != 0);\n}" type_identifier (function_declarator "substitute_type(pr_handle *info,char *s)" identifier (parameter_list "(pr_handle *info,char *s)" ( (parameter_declaration "pr_handle *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "char *s" primitive_type (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  pr_stack *ppVar1;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (info->stack == (pr_stack *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = info->stack->type;\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(s);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    ppVar1 = info->stack;\n    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);\n    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);\n    strcat(pcVar6,pcVar3 + 1);\n    free(ppVar1->type);\n    info->stack->type = pcVar6;\n    return 1;\n  }\n  pcVar3 = strchr(s,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    bVar2 = prepend_type((pr_handle *)&info->stack,"(");\n    if (bVar2 == 0) {\n      return 0;\n    }\n    bVar2 = append_type((pr_handle *)&info->stack,")");\n    if (bVar2 == 0) {\n      return 0;\n    }\n  }\n  if (*s == '\0') {\n    return 1;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack," ");\n  if (bVar2 == 0) {\n    return 0;\n  }\n  bVar2 = append_type((pr_handle *)&info->stack,s);\n  return (uint)(bVar2 != 0);\n}" { (declaration "pr_stack *ppVar1;" type_identifier (pointer_declarator "*ppVar1" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier 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 *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (if_statement "if (info->stack == (pr_stack *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" if (parenthesized_expression "(info->stack == (pr_stack *)0x0)" ( (binary_expression "info->stack == (pr_stack *)0x0" (field_expression "info->stack" identifier -> field_identifier) == (cast_expression "(pr_stack *)0x0" ( (type_descriptor "pr_stack *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");" (call_expression "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" identifier (argument_list "("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" ( (string_literal ""info->stack != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""substitute_type"" " string_content ") ))) ;) })) (expression_statement "pcVar6 = info->stack->type;" (assignment_expression "pcVar6 = info->stack->type" identifier = (field_expression "info->stack->type" (field_expression "info->stack" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pcVar3 = strchr(pcVar6,0x7c);" (assignment_expression "pcVar3 = strchr(pcVar6,0x7c)" identifier = (call_expression "strchr(pcVar6,0x7c)" identifier (argument_list "(pcVar6,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(s);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    ppVar1 = info->stack;\n    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);\n    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);\n    strcat(pcVar6,pcVar3 + 1);\n    free(ppVar1->type);\n    info->stack->type = pcVar6;\n    return 1;\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    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(s);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    ppVar1 = info->stack;\n    memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);\n    strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);\n    strcat(pcVar6,pcVar3 + 1);\n    free(ppVar1->type);\n    info->stack->type = pcVar6;\n    return 1;\n  }" { (expression_statement "sVar4 = strlen(pcVar6);" (assignment_expression "sVar4 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(s);" (assignment_expression "sVar5 = strlen(s)" identifier = (call_expression "strlen(s)" identifier (argument_list "(s)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar4 + sVar5);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar4 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5)" identifier (argument_list "(sVar4 + sVar5)" ( (binary_expression "sVar4 + sVar5" identifier + identifier) ))))) ;) (expression_statement "ppVar1 = info->stack;" (assignment_expression "ppVar1 = info->stack" identifier = (field_expression "info->stack" identifier -> field_identifier)) ;) (expression_statement "memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type);" (call_expression "memcpy(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type)" identifier (argument_list "(pcVar6,ppVar1->type,(long)pcVar3 - (long)ppVar1->type)" ( identifier , (field_expression "ppVar1->type" identifier -> field_identifier) , (binary_expression "(long)pcVar3 - (long)ppVar1->type" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ppVar1->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "ppVar1->type" identifier -> field_identifier))) ))) ;) (expression_statement "strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s);" (call_expression "strcpy(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s)" identifier (argument_list "(pcVar6 + ((long)pcVar3 - (long)ppVar1->type),s)" ( (binary_expression "pcVar6 + ((long)pcVar3 - (long)ppVar1->type)" identifier + (parenthesized_expression "((long)pcVar3 - (long)ppVar1->type)" ( (binary_expression "(long)pcVar3 - (long)ppVar1->type" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ppVar1->type" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "ppVar1->type" identifier -> field_identifier))) ))) , identifier ))) ;) (expression_statement "strcat(pcVar6,pcVar3 + 1);" (call_expression "strcat(pcVar6,pcVar3 + 1)" identifier (argument_list "(pcVar6,pcVar3 + 1)" ( identifier , (binary_expression "pcVar3 + 1" identifier + number_literal) ))) ;) (expression_statement "free(ppVar1->type);" (call_expression "free(ppVar1->type)" identifier (argument_list "(ppVar1->type)" ( (field_expression "ppVar1->type" identifier -> field_identifier) ))) ;) (expression_statement "info->stack->type = pcVar6;" (assignment_expression "info->stack->type = pcVar6" (field_expression "info->stack->type" (field_expression "info->stack" identifier -> field_identifier) -> field_identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pcVar3 = strchr(s,0x7c);" (assignment_expression "pcVar3 = strchr(s,0x7c)" identifier = (call_expression "strchr(s,0x7c)" identifier (argument_list "(s,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    bVar2 = prepend_type((pr_handle *)&info->stack,"(");\n    if (bVar2 == 0) {\n      return 0;\n    }\n    bVar2 = append_type((pr_handle *)&info->stack,")");\n    if (bVar2 == 0) {\n      return 0;\n    }\n  }" if (parenthesized_expression "((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))))" ( (binary_expression "(pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" ( (parenthesized_expression "(pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))" ( (comma_expression "pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (assignment_expression "pcVar3 = strchr(pcVar6,0x7b)" identifier = (call_expression "strchr(pcVar6,0x7b)" identifier (argument_list "(pcVar6,0x7b)" ( identifier , number_literal )))) , (binary_expression "pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" ( (comma_expression "pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0" (assignment_expression "pcVar6 = strchr(pcVar6,0x28)" identifier = (call_expression "strchr(pcVar6,0x28)" identifier (argument_list "(pcVar6,0x28)" ( identifier , number_literal )))) , (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    bVar2 = prepend_type((pr_handle *)&info->stack,"(");\n    if (bVar2 == 0) {\n      return 0;\n    }\n    bVar2 = append_type((pr_handle *)&info->stack,")");\n    if (bVar2 == 0) {\n      return 0;\n    }\n  }" { (expression_statement "bVar2 = prepend_type((pr_handle *)&info->stack,"(");" (assignment_expression "bVar2 = prepend_type((pr_handle *)&info->stack,"(")" identifier = (call_expression "prepend_type((pr_handle *)&info->stack,"(")" identifier (argument_list "((pr_handle *)&info->stack,"(")" ( (cast_expression "(pr_handle *)&info->stack" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info->stack" & (field_expression "info->stack" identifier -> field_identifier))) , (string_literal ""("" " string_content ") )))) ;) (if_statement "if (bVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = append_type((pr_handle *)&info->stack,")");" (assignment_expression "bVar2 = append_type((pr_handle *)&info->stack,")")" identifier = (call_expression "append_type((pr_handle *)&info->stack,")")" identifier (argument_list "((pr_handle *)&info->stack,")")" ( (cast_expression "(pr_handle *)&info->stack" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info->stack" & (field_expression "info->stack" identifier -> field_identifier))) , (string_literal "")"" " string_content ") )))) ;) (if_statement "if (bVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (*s == '\0') {\n    return 1;\n  }" if (parenthesized_expression "(*s == '\0')" ( (binary_expression "*s == '\0'" (pointer_expression "*s" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar2 = append_type((pr_handle *)&info->stack," ");" (assignment_expression "bVar2 = append_type((pr_handle *)&info->stack," ")" identifier = (call_expression "append_type((pr_handle *)&info->stack," ")" identifier (argument_list "((pr_handle *)&info->stack," ")" ( (cast_expression "(pr_handle *)&info->stack" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info->stack" & (field_expression "info->stack" identifier -> field_identifier))) , (string_literal "" "" " string_content ") )))) ;) (if_statement "if (bVar2 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = append_type((pr_handle *)&info->stack,s);" (assignment_expression "bVar2 = append_type((pr_handle *)&info->stack,s)" identifier = (call_expression "append_type((pr_handle *)&info->stack,s)" identifier (argument_list "((pr_handle *)&info->stack,s)" ( (cast_expression "(pr_handle *)&info->stack" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info->stack" & (field_expression "info->stack" identifier -> field_identifier))) , identifier )))) ;) (return_statement "return (uint)(bVar2 != 0);" return (call_expression "(uint)(bVar2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) ))) ;) })))
(translation_unit "bool FUN_00127110(long param_1,char *param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}\n\n" (function_definition "bool FUN_00127110(long param_1,char *param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" primitive_type (function_declarator "FUN_00127110(long param_1,char *param_2)" identifier (parameter_list "(long param_1,char *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type 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 *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (if_statement "if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x10) == 0)" ( (binary_expression "*(long *)(param_1 + 0x10) == 0" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" { (expression_statement "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");" (call_expression "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" identifier (argument_list "("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" ( (string_literal ""info->stack != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""substitute_type"" " string_content ") ))) ;) })) (expression_statement "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);" (assignment_expression "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8)" identifier = (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" * (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" ( (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pcVar3 = strchr(pcVar6,0x7c);" (assignment_expression "pcVar3 = strchr(pcVar6,0x7c)" identifier = (call_expression "strchr(pcVar6,0x7c)" identifier (argument_list "(pcVar6,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\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    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }" { (expression_statement "sVar4 = strlen(pcVar6);" (assignment_expression "sVar4 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar4 + sVar5);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar4 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + sVar5)" identifier (argument_list "(sVar4 + sVar5)" ( (binary_expression "sVar4 + sVar5" identifier + identifier) ))))) ;) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" identifier = (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));" (call_expression "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" identifier (argument_list "(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" ( identifier , (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) , (binary_expression "(long)pcVar3 - (long)*(void **)(lVar1 + 8)" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)*(void **)(lVar1 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))))) ))) ;) (expression_statement "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);" (call_expression "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" identifier (argument_list "(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" ( (binary_expression "pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8))" identifier + (parenthesized_expression "((long)pcVar3 - *(long *)(lVar1 + 8))" ( (binary_expression "(long)pcVar3 - *(long *)(lVar1 + 8)" (cast_expression "(long)pcVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(lVar1 + 8)" * (cast_expression "(long *)(lVar1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "strcat(pcVar6,pcVar3 + 1);" (call_expression "strcat(pcVar6,pcVar3 + 1)" identifier (argument_list "(pcVar6,pcVar3 + 1)" ( identifier , (binary_expression "pcVar3 + 1" identifier + number_literal) ))) ;) (expression_statement "free(*(void **)(lVar1 + 8));" (call_expression "free(*(void **)(lVar1 + 8))" identifier (argument_list "(*(void **)(lVar1 + 8))" ( (pointer_expression "*(void **)(lVar1 + 8)" * (cast_expression "(void **)(lVar1 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 8)" ( (binary_expression "lVar1 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;" (assignment_expression "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6" (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" * (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" ( (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) )))) = identifier) ;) (return_statement "return true;" return true ;) })) (expression_statement "pcVar3 = strchr(param_2,0x7c);" (assignment_expression "pcVar3 = strchr(param_2,0x7c)" identifier = (call_expression "strchr(param_2,0x7c)" identifier (argument_list "(param_2,0x7c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" if (parenthesized_expression "((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))))" ( (binary_expression "(pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" ( (parenthesized_expression "(pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))" ( (comma_expression "pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (assignment_expression "pcVar3 = strchr(pcVar6,0x7b)" identifier = (call_expression "strchr(pcVar6,0x7b)" identifier (argument_list "(pcVar6,0x7b)" ( identifier , number_literal )))) , (binary_expression "pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" ( (comma_expression "pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0" (assignment_expression "pcVar6 = strchr(pcVar6,0x28)" identifier = (call_expression "strchr(pcVar6,0x28)" identifier (argument_list "(pcVar6,0x28)" ( identifier , number_literal )))) , (binary_expression "pcVar6 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) (compound_statement "{\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" { (expression_statement "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);" (assignment_expression "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" identifier = (call_expression "FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" identifier (argument_list "(param_1 + 0x10,&DAT_0014295d)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (pointer_expression "&DAT_0014295d" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,")");" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,")")" identifier = (call_expression "FUN_00127080(param_1 + 0x10,")")" identifier (argument_list "(param_1 + 0x10,")")" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (string_literal "")"" " string_content ") )))) ;) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) })) (if_statement "if (*param_2 == '\0') {\n    return true;\n  }" if (parenthesized_expression "(*param_2 == '\0')" ( (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" identifier = (call_expression "FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" identifier (argument_list "(param_1 + 0x10,&DAT_0013d6b7)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , (pointer_expression "&DAT_0013d6b7" & identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,param_2);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,param_2)" identifier = (call_expression "FUN_00127080(param_1 + 0x10,param_2)" identifier (argument_list "(param_1 + 0x10,param_2)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) , identifier )))) ;) (return_statement "return iVar2 != 0;" return (binary_expression "iVar2 != 0" identifier != number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (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 (sized_type_specifier long)) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = IDENT) ;) (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (return_statement return (binary_expression IDENT != LIT) ;) })))
(function_definition "bool FUN_00127110(long param_1,char *param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" (primitive_type "bool") (function_declarator "FUN_00127110(long param_1,char *param_2)" (identifier "FUN_00127110") (parameter_list "(long param_1,char *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  \n  if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }\n  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);\n  pcVar3 = strchr(pcVar6,0x7c);\n  if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }\n  pcVar3 = strchr(param_2,0x7c);\n  if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }\n  if (*param_2 == '\0') {\n    return true;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);\n  if (iVar2 == 0) {\n    return false;\n  }\n  iVar2 = FUN_00127080(param_1 + 0x10,param_2);\n  return iVar2 != 0;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x10) == 0) {\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x10) == 0" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");\n  }" ({ "{") (expression_statement "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");" (call_expression "__assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" (identifier "__assert_fail") (argument_list "("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type")" (( "(") (string_literal ""info->stack != NULL"" (" """) (string_content "info->stack != NULL") (" """)) (, ",") (string_literal ""../../binutils/prdbg.c"" (" """) (string_content "../../binutils/prdbg.c") (" """)) (, ",") (number_literal "0x1a3") (, ",") (string_literal ""substitute_type"" (" """) (string_content "substitute_type") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);" (assignment_expression "pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" (* "*") (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strchr(pcVar6,0x7c);" (assignment_expression "pcVar3 = strchr(pcVar6,0x7c)" (identifier "pcVar3") (= "=") (call_expression "strchr(pcVar6,0x7c)" (identifier "strchr") (argument_list "(pcVar6,0x7c)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x7c") () ")")))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\n    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\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    sVar4 = strlen(pcVar6);\n    sVar5 = strlen(param_2);\n    pcVar6 = (char *)xmalloc(sVar4 + sVar5);\n    lVar1 = *(long *)(param_1 + 0x10);\n    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));\n    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);\n    strcat(pcVar6,pcVar3 + 1);\n    free(*(void **)(lVar1 + 8));\n    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;\n    return true;\n  }" ({ "{") (expression_statement "sVar4 = strlen(pcVar6);" (assignment_expression "sVar4 = strlen(pcVar6)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar6)" (identifier "strlen") (argument_list "(pcVar6)" (( "(") (identifier "pcVar6") () ")")))) (; ";")) (expression_statement "sVar5 = strlen(param_2);" (assignment_expression "sVar5 = strlen(param_2)" (identifier "sVar5") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "pcVar6 = (char *)xmalloc(sVar4 + sVar5);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar4 + sVar5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)xmalloc(sVar4 + sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar4 + sVar5)" (identifier "xmalloc") (argument_list "(sVar4 + sVar5)" (( "(") (binary_expression "sVar4 + sVar5" (identifier "sVar4") (+ "+") (identifier "sVar5")) () ")"))))) (; ";")) (expression_statement "lVar1 = *(long *)(param_1 + 0x10);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));" (call_expression "memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" (identifier "memcpy") (argument_list "(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8))" (( "(") (identifier "pcVar6") (, ",") (pointer_expression "*(void **)(lVar1 + 8)" (* "*") (cast_expression "(void **)(lVar1 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "(long)pcVar3 - (long)*(void **)(lVar1 + 8)" (cast_expression "(long)pcVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pcVar3")) (- "-") (cast_expression "(long)*(void **)(lVar1 + 8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(void **)(lVar1 + 8)" (* "*") (cast_expression "(void **)(lVar1 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))))) () ")"))) (; ";")) (expression_statement "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);" (call_expression "strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" (identifier "strcpy") (argument_list "(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2)" (( "(") (binary_expression "pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8))" (identifier "pcVar6") (+ "+") (parenthesized_expression "((long)pcVar3 - *(long *)(lVar1 + 8))" (( "(") (binary_expression "(long)pcVar3 - *(long *)(lVar1 + 8)" (cast_expression "(long)pcVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pcVar3")) (- "-") (pointer_expression "*(long *)(lVar1 + 8)" (* "*") (cast_expression "(long *)(lVar1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")"))))) () ")"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "strcat(pcVar6,pcVar3 + 1);" (call_expression "strcat(pcVar6,pcVar3 + 1)" (identifier "strcat") (argument_list "(pcVar6,pcVar3 + 1)" (( "(") (identifier "pcVar6") (, ",") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "free(*(void **)(lVar1 + 8));" (call_expression "free(*(void **)(lVar1 + 8))" (identifier "free") (argument_list "(*(void **)(lVar1 + 8))" (( "(") (pointer_expression "*(void **)(lVar1 + 8)" (* "*") (cast_expression "(void **)(lVar1 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 8)" (( "(") (binary_expression "lVar1 + 8" (identifier "lVar1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;" (assignment_expression "*(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6" (pointer_expression "*(char **)(*(long *)(param_1 + 0x10) + 8)" (* "*") (cast_expression "(char **)(*(long *)(param_1 + 0x10) + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x10) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x10) + 8" (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "pcVar6")) (; ";")) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "pcVar3 = strchr(param_2,0x7c);" (assignment_expression "pcVar3 = strchr(param_2,0x7c)" (identifier "pcVar3") (= "=") (call_expression "strchr(param_2,0x7c)" (identifier "strchr") (argument_list "(param_2,0x7c)" (( "(") (identifier "param_2") (, ",") (number_literal "0x7c") () ")")))) (; ";")) (if_statement "if ((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" (if "if") (parenthesized_expression "((pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))))" (( "(") (binary_expression "(pcVar3 != (char *)0x0) &&\n     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))" (( "(") (parenthesized_expression "(pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0))" (( "(") (comma_expression "pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (assignment_expression "pcVar3 = strchr(pcVar6,0x7b)" (identifier "pcVar3") (= "=") (call_expression "strchr(pcVar6,0x7b)" (identifier "strchr") (argument_list "(pcVar6,0x7b)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x7b") () ")")))) (, ",") (binary_expression "pcVar3 != (char *)0x0 ||\n      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "(pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)" (( "(") (comma_expression "pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0" (assignment_expression "pcVar6 = strchr(pcVar6,0x28)" (identifier "pcVar6") (= "=") (call_expression "strchr(pcVar6,0x28)" (identifier "strchr") (argument_list "(pcVar6,0x28)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x28") () ")")))) (, ",") (binary_expression "pcVar6 != (char *)0x0" (identifier "pcVar6") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);\n    if (iVar2 == 0) {\n      return false;\n    }\n    iVar2 = FUN_00127080(param_1 + 0x10,")");\n    if (iVar2 == 0) {\n      return false;\n    }\n  }" ({ "{") (expression_statement "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);" (assignment_expression "iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" (identifier "iVar2") (= "=") (call_expression "FUN_00126fe0(param_1 + 0x10,&DAT_0014295d)" (identifier "FUN_00126fe0") (argument_list "(param_1 + 0x10,&DAT_0014295d)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (pointer_expression "&DAT_0014295d" (& "&") (identifier "DAT_0014295d")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,")");" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,")")" (identifier "iVar2") (= "=") (call_expression "FUN_00127080(param_1 + 0x10,")")" (identifier "FUN_00127080") (argument_list "(param_1 + 0x10,")")" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (string_literal "")"" (" """) (string_content ")") (" """)) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}"))) (if_statement "if (*param_2 == '\0') {\n    return true;\n  }" (if "if") (parenthesized_expression "(*param_2 == '\0')" (( "(") (binary_expression "*param_2 == '\0'" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" (identifier "iVar2") (= "=") (call_expression "FUN_00127080(param_1 + 0x10,&DAT_0013d6b7)" (identifier "FUN_00127080") (argument_list "(param_1 + 0x10,&DAT_0013d6b7)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (pointer_expression "&DAT_0013d6b7" (& "&") (identifier "DAT_0013d6b7")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    return false;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00127080(param_1 + 0x10,param_2);" (assignment_expression "iVar2 = FUN_00127080(param_1 + 0x10,param_2)" (identifier "iVar2") (= "=") (call_expression "FUN_00127080(param_1 + 0x10,param_2)" (identifier "FUN_00127080") (argument_list "(param_1 + 0x10,param_2)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) (, ",") (identifier "param_2") () ")")))) (; ";")) (return_statement "return iVar2 != 0;" (return "return") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (; ";")) (} "}")))

type_1 function_1(type_2 *info,char *s)

{
  type_3 *ppVar1;
  type_1 var_14;
  char *var_3;
  size_t var_6;
  size_t var_7;
  char *var_10;
  
  if (info->stack == (type_3 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");
  }
  var_10 = info->stack->type;
  var_3 = var_2(var_10,0x7c);
  if (var_3 != (char *)0x0) {
    var_6 = var_4(var_10);
    var_7 = var_4(s);
    var_10 = (char *)var_5(var_6 + var_7);
    ppVar1 = info->stack;
    var_8(var_10,ppVar1->type,(long)var_3 - (long)ppVar1->type);
    var_9(var_10 + ((long)var_3 - (long)ppVar1->type),s);
    var_11(var_10,var_3 + 1);
    var_12(ppVar1->type);
    info->stack->type = var_10;
    return 1;
  }
  var_3 = var_2(s,0x7c);
  if ((var_3 != (char *)0x0) &&
     ((var_3 = var_2(var_10,0x7b), var_3 != (char *)0x0 ||
      (var_10 = var_2(var_10,0x28), var_10 != (char *)0x0)))) {
    var_14 = var_13((type_2 *)&info->stack,"(");
    if (var_14 == 0) {
      return 0;
    }
    var_14 = var_15((type_2 *)&info->stack,")");
    if (var_14 == 0) {
      return 0;
    }
  }
  if (*s == '\0') {
    return 1;
  }
  var_14 = var_15((type_2 *)&info->stack," ");
  if (var_14 == 0) {
    return 0;
  }
  var_14 = var_15((type_2 *)&info->stack,s);
  return (uint)(var_14 != 0);
}


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

bool MASKED(long param_1,char *param_2)

{
  long lVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  
  if (*(long *)(param_1 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL","../../binutils/prdbg.c",0x1a3,"substitute_type");
  }
  pcVar6 = *(char **)(*(long *)(param_1 + 0x10) + 8);
  pcVar3 = strchr(pcVar6,0x7c);
  if (pcVar3 != (char *)0x0) {
    sVar4 = strlen(pcVar6);
    sVar5 = strlen(param_2);
    pcVar6 = (char *)xmalloc(sVar4 + sVar5);
    lVar1 = *(long *)(param_1 + 0x10);
    memcpy(pcVar6,*(void **)(lVar1 + 8),(long)pcVar3 - (long)*(void **)(lVar1 + 8));
    strcpy(pcVar6 + ((long)pcVar3 - *(long *)(lVar1 + 8)),param_2);
    strcat(pcVar6,pcVar3 + 1);
    free(*(void **)(lVar1 + 8));
    *(char **)(*(long *)(param_1 + 0x10) + 8) = pcVar6;
    return true;
  }
  pcVar3 = strchr(param_2,0x7c);
  if ((pcVar3 != (char *)0x0) &&
     ((pcVar3 = strchr(pcVar6,0x7b), pcVar3 != (char *)0x0 ||
      (pcVar6 = strchr(pcVar6,0x28), pcVar6 != (char *)0x0)))) {
    iVar2 = FUN_00126fe0(param_1 + 0x10,&DAT_0014295d);
    if (iVar2 == 0) {
      return false;
    }
    iVar2 = FUN_00127080(param_1 + 0x10,")");
    if (iVar2 == 0) {
      return false;
    }
  }
  if (*param_2 == '\0') {
    return true;
  }
  iVar2 = FUN_00127080(param_1 + 0x10,&DAT_0013d6b7);
  if (iVar2 == 0) {
    return false;
  }
  iVar2 = FUN_00127080(param_1 + 0x10,param_2);
  return iVar2 != 0;
}

