
char * make_qualified_name(archive_info *arch,archive_info *nested_arch,char *member_name)

{
  long lVar1;
  char *__s;
  char *pcVar2;
  size_t sVar3;
  size_t sVar4;
  size_t sVar5;
  char *__s_00;
  char *pcVar6;
  
  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);
  pcVar6 = arch->file_name;
  sVar3 = strlen(pcVar6);
  sVar4 = strlen(member_name);
  sVar5 = sVar4 + sVar3 + 3;
  if (arch->is_thin_archive == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);
      return pcVar2;
    }
  }
  else if (arch->nested_member_origin == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);
      return pcVar2;
    }
  }
  else {
    __s = nested_arch->file_name;
    lVar1 = sVar4 + sVar3 + 5;
    if (__s == (char *)0x0) {
      sVar5 = strlen(pcVar2);
      sVar5 = lVar1 + sVar5;
      __s_00 = (char *)malloc(sVar5);
      __s = pcVar2;
    }
    else {
      sVar5 = strlen(__s);
      sVar5 = lVar1 + sVar5;
      __s_00 = (char *)malloc(sVar5);
    }
    if (__s_00 != (char *)0x0) {
      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);
      return __s_00;
    }
  }
  pcVar6 = (char *)dcgettext(0,"Out of memory\n",5);
  error(pcVar6);
  return (char *)0x0;
}



char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)

{
  long lVar1;
  char *__s;
  char *__s_00;
  char *pcVar2;
  size_t sVar3;
  size_t sVar4;
  size_t sVar5;
  char *__s_01;
  undefined8 uVar6;
  
  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);
  __s = (char *)*param_1;
  sVar3 = strlen(__s);
  sVar4 = strlen(param_3);
  sVar5 = sVar4 + sVar3 + 3;
  if (*(int *)(param_1 + 10) == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);
      return pcVar2;
    }
  }
  else if (param_1[8] == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);
      return pcVar2;
    }
  }
  else {
    __s_00 = (char *)*param_2;
    lVar1 = sVar4 + sVar3 + 5;
    if (__s_00 == (char *)0x0) {
      sVar5 = strlen(pcVar2);
      sVar5 = lVar1 + sVar5;
      __s_01 = (char *)malloc(sVar5);
      __s_00 = pcVar2;
    }
    else {
      sVar5 = strlen(__s_00);
      sVar5 = lVar1 + sVar5;
      __s_01 = (char *)malloc(sVar5);
    }
    if (__s_01 != (char *)0x0) {
      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);
      return __s_01;
    }
  }
  uVar6 = dcgettext(0,"Out of memory\n",5);
  error(uVar6);
  return (char *)0x0;
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RSI
LEA RSI,[0x1648c9]
PUSH R12
MOV R12,RDX
MOV EDX,0x5
PUSH RBP
PUSH RBX
MOV RBX,RDI
XOR EDI,EDI
SUB RSP,0x8
CALL 0x00107130
MOV RBP,qword ptr [RBX]
MOV R14,RAX
MOV RDI,RBP
CALL 0x00107150
MOV RDI,R12
MOV R15,RAX
CALL 0x00107150
MOV EDX,dword ptr [RBX + 0x50]
ADD RAX,R15
LEA R15,[RAX + 0x3]
TEST EDX,EDX
JZ 0x00155d10
CMP qword ptr [RBX + 0x40],0x0
JNZ 0x00155d50
MOV RDI,R15
CALL 0x001072e0
MOV R13,RAX
TEST RAX,RAX
JZ 0x00155dc8
MOV R8,R12
MOV RCX,RBP
LEA RDX,[0x184642]
MOV RSI,R15
MOV RDI,R13
XOR EAX,EAX
CALL 0x001071b0
JMP 0x00155d3e
MOV RDI,R15
CALL 0x001072e0
MOV R13,RAX
TEST RAX,RAX
JZ 0x00155dc8
MOV R8,R12
MOV RCX,RBP
LEA RDX,[0x18463b]
MOV RSI,R15
MOV RDI,R13
XOR EAX,EAX
CALL 0x001071b0
ADD RSP,0x8
MOV RAX,R13
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R15,qword ptr [R13]
LEA RBX,[RAX + 0x5]
TEST R15,R15
JZ 0x00155da0
MOV RDI,R15
CALL 0x00107150
ADD RBX,RAX
MOV RDI,RBX
CALL 0x001072e0
MOV R9,R12
MOV R8,R15
MOV R13,RAX
TEST RAX,RAX
JZ 0x00155dc8
MOV RCX,RBP
LEA RDX,[0x184630]
MOV RSI,RBX
MOV RDI,R13
XOR EAX,EAX
CALL 0x001071b0
JMP 0x00155d3e
MOV RDI,R14
CALL 0x00107150
ADD RBX,RAX
MOV RDI,RBX
CALL 0x001072e0
MOV R9,R12
MOV R8,R14
MOV R13,RAX
TEST RAX,RAX
JNZ 0x00155d7e
NOP dword ptr [RAX]
MOV EDX,0x5
LEA RSI,[0x1845d5]
XOR EDI,EDI
XOR R13D,R13D
CALL 0x00107130
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00154b80
JMP 0x00155d3e
(translation_unit "char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)\n\n{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}\n\n" (function_definition "char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)\n\n{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,char *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__s_01;" primitive_type (pointer_declarator "*__s_01" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (expression_statement "pcVar2 = (char *)dcgettext(0,"<corrupt>",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"<corrupt>",5)" identifier = (cast_expression "(char *)dcgettext(0,"<corrupt>",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"<corrupt>",5)" identifier (argument_list "(0,"<corrupt>",5)" ( number_literal , (string_literal ""<corrupt>"" " string_content ") , number_literal ))))) ;) (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "sVar4 = strlen(param_3);" (assignment_expression "sVar4 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "sVar5 = sVar4 + sVar3 + 3;" (assignment_expression "sVar5 = sVar4 + sVar3 + 3" identifier = (binary_expression "sVar4 + sVar3 + 3" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 10) == 0)" ( (binary_expression "*(int *)(param_1 + 10) == 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3)" identifier (argument_list "(pcVar2,sVar5,"%s(%s)",__s,param_3)" ( identifier , identifier , (string_literal ""%s(%s)"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" else (if_statement "if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" if (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3)" identifier (argument_list "(pcVar2,sVar5,"%s[%s]",__s,param_3)" ( identifier , identifier , (string_literal ""%s[%s]"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" else (compound_statement "{\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" { (expression_statement "__s_00 = (char *)*param_2;" (assignment_expression "__s_00 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "lVar1 = sVar4 + sVar3 + 5;" (assignment_expression "lVar1 = sVar4 + sVar3 + 5" identifier = (binary_expression "sVar4 + sVar3 + 5" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" if (parenthesized_expression "(__s_00 == (char *)0x0)" ( (binary_expression "__s_00 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }" { (expression_statement "sVar5 = strlen(pcVar2);" (assignment_expression "sVar5 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "__s_00 = pcVar2;" (assignment_expression "__s_00 = pcVar2" identifier = identifier) ;) }) (else_clause "else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" else (compound_statement "{\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" { (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" identifier = (call_expression "strlen(__s_00)" identifier (argument_list "(__s_00)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) }))) (if_statement "if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" if (parenthesized_expression "(__s_01 != (char *)0x0)" ( (binary_expression "__s_01 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" { (expression_statement "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);" (call_expression "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" identifier (argument_list "(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" ( identifier , identifier , (string_literal ""%s[%s(%s)]"" " string_content ") , identifier , identifier , identifier ))) ;) (return_statement "return __s_01;" return identifier ;) })) }))))) (expression_statement "uVar6 = dcgettext(0,"Out of memory\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Out of memory\n",5)" identifier = (call_expression "dcgettext(0,"Out of memory\n",5)" identifier (argument_list "(0,"Out of memory\n",5)" ( number_literal , (string_literal ""Out of memory\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "char * make_qualified_name(archive_info *arch,archive_info *nested_arch,char *member_name)\n\n{\n  long lVar1;\n  char *__s;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  char *pcVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  pcVar6 = arch->file_name;\n  sVar3 = strlen(pcVar6);\n  sVar4 = strlen(member_name);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (arch->is_thin_archive == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }\n  pcVar6 = (char *)dcgettext(0,"Out of memory\n",5);\n  error(pcVar6);\n  return (char *)0x0;\n}\n\n" (function_definition "char * make_qualified_name(archive_info *arch,archive_info *nested_arch,char *member_name)\n\n{\n  long lVar1;\n  char *__s;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  char *pcVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  pcVar6 = arch->file_name;\n  sVar3 = strlen(pcVar6);\n  sVar4 = strlen(member_name);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (arch->is_thin_archive == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }\n  pcVar6 = (char *)dcgettext(0,"Out of memory\n",5);\n  error(pcVar6);\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* make_qualified_name(archive_info *arch,archive_info *nested_arch,char *member_name)" * (function_declarator "make_qualified_name(archive_info *arch,archive_info *nested_arch,char *member_name)" identifier (parameter_list "(archive_info *arch,archive_info *nested_arch,char *member_name)" ( (parameter_declaration "archive_info *arch" type_identifier (pointer_declarator "*arch" * identifier)) , (parameter_declaration "archive_info *nested_arch" type_identifier (pointer_declarator "*nested_arch" * identifier)) , (parameter_declaration "char *member_name" primitive_type (pointer_declarator "*member_name" * identifier)) )))) (compound_statement "{\n  long lVar1;\n  char *__s;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_00;\n  char *pcVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  pcVar6 = arch->file_name;\n  sVar3 = strlen(pcVar6);\n  sVar4 = strlen(member_name);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (arch->is_thin_archive == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }\n  pcVar6 = (char *)dcgettext(0,"Out of memory\n",5);\n  error(pcVar6);\n  return (char *)0x0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar2 = (char *)dcgettext(0,"<corrupt>",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"<corrupt>",5)" identifier = (cast_expression "(char *)dcgettext(0,"<corrupt>",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"<corrupt>",5)" identifier (argument_list "(0,"<corrupt>",5)" ( number_literal , (string_literal ""<corrupt>"" " string_content ") , number_literal ))))) ;) (expression_statement "pcVar6 = arch->file_name;" (assignment_expression "pcVar6 = arch->file_name" identifier = (field_expression "arch->file_name" identifier -> field_identifier)) ;) (expression_statement "sVar3 = strlen(pcVar6);" (assignment_expression "sVar3 = strlen(pcVar6)" identifier = (call_expression "strlen(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier )))) ;) (expression_statement "sVar4 = strlen(member_name);" (assignment_expression "sVar4 = strlen(member_name)" identifier = (call_expression "strlen(member_name)" identifier (argument_list "(member_name)" ( identifier )))) ;) (expression_statement "sVar5 = sVar4 + sVar3 + 3;" (assignment_expression "sVar5 = sVar4 + sVar3 + 3" identifier = (binary_expression "sVar4 + sVar3 + 3" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (arch->is_thin_archive == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }" if (parenthesized_expression "(arch->is_thin_archive == 0)" ( (binary_expression "arch->is_thin_archive == 0" (field_expression "arch->is_thin_archive" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name);" (call_expression "snprintf(pcVar2,sVar5,"%s(%s)",pcVar6,member_name)" identifier (argument_list "(pcVar2,sVar5,"%s(%s)",pcVar6,member_name)" ( identifier , identifier , (string_literal ""%s(%s)"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }" else (if_statement "if (arch->nested_member_origin == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }\n  else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }" if (parenthesized_expression "(arch->nested_member_origin == 0)" ( (binary_expression "arch->nested_member_origin == 0" (field_expression "arch->nested_member_origin" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name);" (call_expression "snprintf(pcVar2,sVar5,"%s[%s]",pcVar6,member_name)" identifier (argument_list "(pcVar2,sVar5,"%s[%s]",pcVar6,member_name)" ( identifier , identifier , (string_literal ""%s[%s]"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else {\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }" else (compound_statement "{\n    __s = nested_arch->file_name;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }\n    if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }\n  }" { (expression_statement "__s = nested_arch->file_name;" (assignment_expression "__s = nested_arch->file_name" identifier = (field_expression "nested_arch->file_name" identifier -> field_identifier)) ;) (expression_statement "lVar1 = sVar4 + sVar3 + 5;" (assignment_expression "lVar1 = sVar4 + sVar3 + 5" identifier = (binary_expression "sVar4 + sVar3 + 5" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (__s == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n      __s = pcVar2;\n    }" { (expression_statement "sVar5 = strlen(pcVar2);" (assignment_expression "sVar5 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_00 = (char *)malloc(sVar5);" (assignment_expression "__s_00 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "__s = pcVar2;" (assignment_expression "__s = pcVar2" identifier = identifier) ;) }) (else_clause "else {\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }" else (compound_statement "{\n      sVar5 = strlen(__s);\n      sVar5 = lVar1 + sVar5;\n      __s_00 = (char *)malloc(sVar5);\n    }" { (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_00 = (char *)malloc(sVar5);" (assignment_expression "__s_00 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) }))) (if_statement "if (__s_00 != (char *)0x0) {\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }" if (parenthesized_expression "(__s_00 != (char *)0x0)" ( (binary_expression "__s_00 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);\n      return __s_00;\n    }" { (expression_statement "snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name);" (call_expression "snprintf(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name)" identifier (argument_list "(__s_00,sVar5,"%s[%s(%s)]",pcVar6,__s,member_name)" ( identifier , identifier , (string_literal ""%s[%s(%s)]"" " string_content ") , identifier , identifier , identifier ))) ;) (return_statement "return __s_00;" return identifier ;) })) }))))) (expression_statement "pcVar6 = (char *)dcgettext(0,"Out of memory\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"Out of memory\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Out of memory\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Out of memory\n",5)" identifier (argument_list "(0,"Out of memory\n",5)" ( number_literal , (string_literal ""Out of memory\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "error(pcVar6);" (call_expression "error(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)\n\n{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}\n\n" (function_definition "char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)\n\n{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,char *param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *__s_00;" primitive_type (pointer_declarator "*__s_00" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__s_01;" primitive_type (pointer_declarator "*__s_01" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (expression_statement "pcVar2 = (char *)dcgettext(0,"<corrupt>",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"<corrupt>",5)" identifier = (cast_expression "(char *)dcgettext(0,"<corrupt>",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"<corrupt>",5)" identifier (argument_list "(0,"<corrupt>",5)" ( number_literal , (string_literal ""<corrupt>"" " string_content ") , number_literal ))))) ;) (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "sVar4 = strlen(param_3);" (assignment_expression "sVar4 = strlen(param_3)" identifier = (call_expression "strlen(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "sVar5 = sVar4 + sVar3 + 3;" (assignment_expression "sVar5 = sVar4 + sVar3 + 3" identifier = (binary_expression "sVar4 + sVar3 + 3" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 10) == 0)" ( (binary_expression "*(int *)(param_1 + 10) == 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3)" identifier (argument_list "(pcVar2,sVar5,"%s(%s)",__s,param_3)" ( identifier , identifier , (string_literal ""%s(%s)"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" else (if_statement "if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" if (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }" { (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" if (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" { (expression_statement "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3)" identifier (argument_list "(pcVar2,sVar5,"%s[%s]",__s,param_3)" ( identifier , identifier , (string_literal ""%s[%s]"" " string_content ") , identifier , identifier ))) ;) (return_statement "return pcVar2;" return identifier ;) })) }) (else_clause "else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" else (compound_statement "{\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" { (expression_statement "__s_00 = (char *)*param_2;" (assignment_expression "__s_00 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "lVar1 = sVar4 + sVar3 + 5;" (assignment_expression "lVar1 = sVar4 + sVar3 + 5" identifier = (binary_expression "sVar4 + sVar3 + 5" (binary_expression "sVar4 + sVar3" identifier + identifier) + number_literal)) ;) (if_statement "if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" if (parenthesized_expression "(__s_00 == (char *)0x0)" ( (binary_expression "__s_00 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }" { (expression_statement "sVar5 = strlen(pcVar2);" (assignment_expression "sVar5 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) (expression_statement "__s_00 = pcVar2;" (assignment_expression "__s_00 = pcVar2" identifier = identifier) ;) }) (else_clause "else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" else (compound_statement "{\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" { (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" identifier = (call_expression "strlen(__s_00)" identifier (argument_list "(__s_00)" ( identifier )))) ;) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" identifier = (binary_expression "lVar1 + sVar5" identifier + identifier)) ;) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" identifier = (cast_expression "(char *)malloc(sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(sVar5)" identifier (argument_list "(sVar5)" ( identifier ))))) ;) }))) (if_statement "if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" if (parenthesized_expression "(__s_01 != (char *)0x0)" ( (binary_expression "__s_01 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" { (expression_statement "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);" (call_expression "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" identifier (argument_list "(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" ( identifier , identifier , (string_literal ""%s[%s(%s)]"" " string_content ") , identifier , identifier , identifier ))) ;) (return_statement "return __s_01;" return identifier ;) })) }))))) (expression_statement "uVar6 = dcgettext(0,"Out of memory\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Out of memory\n",5)" identifier = (call_expression "dcgettext(0,"Out of memory\n",5)" identifier (argument_list "(0,"Out of memory\n",5)" ( number_literal , (string_literal ""Out of memory\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + 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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) }))))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "char * FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)\n\n{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" (primitive_type "char") (pointer_declarator "* FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" (* "*") (function_declarator "FUN_00155c80(undefined8 *param_1,undefined8 *param_2,char *param_3)" (identifier "FUN_00155c80") (parameter_list "(undefined8 *param_1,undefined8 *param_2,char *param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  long lVar1;\n  char *__s;\n  char *__s_00;\n  char *pcVar2;\n  size_t sVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *__s_01;\n  undefined8 uVar6;\n  \n  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);\n  __s = (char *)*param_1;\n  sVar3 = strlen(__s);\n  sVar4 = strlen(param_3);\n  sVar5 = sVar4 + sVar3 + 3;\n  if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }\n  uVar6 = dcgettext(0,"Out of memory\n",5);\n  error(uVar6);\n  return (char *)0x0;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "char *__s_00;" (primitive_type "char") (pointer_declarator "*__s_00" (* "*") (identifier "__s_00")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "char *__s_01;" (primitive_type "char") (pointer_declarator "*__s_01" (* "*") (identifier "__s_01")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (expression_statement "pcVar2 = (char *)dcgettext(0,"<corrupt>",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"<corrupt>",5)" (identifier "pcVar2") (= "=") (cast_expression "(char *)dcgettext(0,"<corrupt>",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"<corrupt>",5)" (identifier "dcgettext") (argument_list "(0,"<corrupt>",5)" (( "(") (number_literal "0") (, ",") (string_literal ""<corrupt>"" (" """) (string_content "<corrupt>") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "__s = (char *)*param_1;" (assignment_expression "__s = (char *)*param_1" (identifier "__s") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "sVar3 = strlen(__s);" (assignment_expression "sVar3 = strlen(__s)" (identifier "sVar3") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "sVar4 = strlen(param_3);" (assignment_expression "sVar4 = strlen(param_3)" (identifier "sVar4") (= "=") (call_expression "strlen(param_3)" (identifier "strlen") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "sVar5 = sVar4 + sVar3 + 3;" (assignment_expression "sVar5 = sVar4 + sVar3 + 3" (identifier "sVar5") (= "=") (binary_expression "sVar4 + sVar3 + 3" (binary_expression "sVar4 + sVar3" (identifier "sVar4") (+ "+") (identifier "sVar3")) (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (*(int *)(param_1 + 10) == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 10) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 10) == 0" (pointer_expression "*(int *)(param_1 + 10)" (* "*") (cast_expression "(int *)(param_1 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }\n  }" ({ "{") (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" (identifier "pcVar2") (= "=") (cast_expression "(char *)malloc(sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")"))))) (; ";")) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" (if "if") (parenthesized_expression "(pcVar2 != (char *)0x0)" (( "(") (binary_expression "pcVar2 != (char *)0x0" (identifier "pcVar2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);\n      return pcVar2;\n    }" ({ "{") (expression_statement "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3)" (identifier "snprintf") (argument_list "(pcVar2,sVar5,"%s(%s)",__s,param_3)" (( "(") (identifier "pcVar2") (, ",") (identifier "sVar5") (, ",") (string_literal ""%s(%s)"" (" """) (string_content "%s(%s)") (" """)) (, ",") (identifier "__s") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return pcVar2;" (return "return") (identifier "pcVar2") (; ";")) (} "}"))) (} "}")) (else_clause "else if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" (else "else") (if_statement "if (param_1[8] == 0) {\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }\n  else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" (if "if") (parenthesized_expression "(param_1[8] == 0)" (( "(") (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar2 = (char *)malloc(sVar5);\n    if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }\n  }" ({ "{") (expression_statement "pcVar2 = (char *)malloc(sVar5);" (assignment_expression "pcVar2 = (char *)malloc(sVar5)" (identifier "pcVar2") (= "=") (cast_expression "(char *)malloc(sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")"))))) (; ";")) (if_statement "if (pcVar2 != (char *)0x0) {\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" (if "if") (parenthesized_expression "(pcVar2 != (char *)0x0)" (( "(") (binary_expression "pcVar2 != (char *)0x0" (identifier "pcVar2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);\n      return pcVar2;\n    }" ({ "{") (expression_statement "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);" (call_expression "snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3)" (identifier "snprintf") (argument_list "(pcVar2,sVar5,"%s[%s]",__s,param_3)" (( "(") (identifier "pcVar2") (, ",") (identifier "sVar5") (, ",") (string_literal ""%s[%s]"" (" """) (string_content "%s[%s]") (" """)) (, ",") (identifier "__s") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return pcVar2;" (return "return") (identifier "pcVar2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" (else "else") (compound_statement "{\n    __s_00 = (char *)*param_2;\n    lVar1 = sVar4 + sVar3 + 5;\n    if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }\n    if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }\n  }" ({ "{") (expression_statement "__s_00 = (char *)*param_2;" (assignment_expression "__s_00 = (char *)*param_2" (identifier "__s_00") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "lVar1 = sVar4 + sVar3 + 5;" (assignment_expression "lVar1 = sVar4 + sVar3 + 5" (identifier "lVar1") (= "=") (binary_expression "sVar4 + sVar3 + 5" (binary_expression "sVar4 + sVar3" (identifier "sVar4") (+ "+") (identifier "sVar3")) (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (__s_00 == (char *)0x0) {\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }\n    else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" (if "if") (parenthesized_expression "(__s_00 == (char *)0x0)" (( "(") (binary_expression "__s_00 == (char *)0x0" (identifier "__s_00") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      sVar5 = strlen(pcVar2);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n      __s_00 = pcVar2;\n    }" ({ "{") (expression_statement "sVar5 = strlen(pcVar2);" (assignment_expression "sVar5 = strlen(pcVar2)" (identifier "sVar5") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" (identifier "sVar5") (= "=") (binary_expression "lVar1 + sVar5" (identifier "lVar1") (+ "+") (identifier "sVar5"))) (; ";")) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" (identifier "__s_01") (= "=") (cast_expression "(char *)malloc(sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")"))))) (; ";")) (expression_statement "__s_00 = pcVar2;" (assignment_expression "__s_00 = pcVar2" (identifier "__s_00") (= "=") (identifier "pcVar2")) (; ";")) (} "}")) (else_clause "else {\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" (else "else") (compound_statement "{\n      sVar5 = strlen(__s_00);\n      sVar5 = lVar1 + sVar5;\n      __s_01 = (char *)malloc(sVar5);\n    }" ({ "{") (expression_statement "sVar5 = strlen(__s_00);" (assignment_expression "sVar5 = strlen(__s_00)" (identifier "sVar5") (= "=") (call_expression "strlen(__s_00)" (identifier "strlen") (argument_list "(__s_00)" (( "(") (identifier "__s_00") () ")")))) (; ";")) (expression_statement "sVar5 = lVar1 + sVar5;" (assignment_expression "sVar5 = lVar1 + sVar5" (identifier "sVar5") (= "=") (binary_expression "lVar1 + sVar5" (identifier "lVar1") (+ "+") (identifier "sVar5"))) (; ";")) (expression_statement "__s_01 = (char *)malloc(sVar5);" (assignment_expression "__s_01 = (char *)malloc(sVar5)" (identifier "__s_01") (= "=") (cast_expression "(char *)malloc(sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(sVar5)" (identifier "malloc") (argument_list "(sVar5)" (( "(") (identifier "sVar5") () ")"))))) (; ";")) (} "}")))) (if_statement "if (__s_01 != (char *)0x0) {\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" (if "if") (parenthesized_expression "(__s_01 != (char *)0x0)" (( "(") (binary_expression "__s_01 != (char *)0x0" (identifier "__s_01") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);\n      return __s_01;\n    }" ({ "{") (expression_statement "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);" (call_expression "snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" (identifier "snprintf") (argument_list "(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3)" (( "(") (identifier "__s_01") (, ",") (identifier "sVar5") (, ",") (string_literal ""%s[%s(%s)]"" (" """) (string_content "%s[%s(%s)]") (" """)) (, ",") (identifier "__s") (, ",") (identifier "__s_00") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return __s_01;" (return "return") (identifier "__s_01") (; ";")) (} "}"))) (} "}")))))) (expression_statement "uVar6 = dcgettext(0,"Out of memory\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Out of memory\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"Out of memory\n",5)" (identifier "dcgettext") (argument_list "(0,"Out of memory\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Out of memory\n"" (" """) (string_content "Out of memory") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" (identifier "error") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

char * function_1(type_1 *arch,type_1 *nested_arch,char *member_name)

{
  long var_9;
  char *var_8;
  char *var_6;
  size_t var_4;
  size_t var_3;
  size_t var_10;
  char *var_11;
  char *pcVar6;
  
  var_6 = (char *)var_1(0,"<corrupt>",5);
  pcVar6 = arch->file_name;
  var_4 = var_2(pcVar6);
  var_3 = var_2(member_name);
  var_10 = var_3 + var_4 + 3;
  if (arch->is_thin_archive == 0) {
    var_6 = (char *)var_5(var_10);
    if (var_6 != (char *)0x0) {
      var_7(var_6,var_10,"%s(%s)",pcVar6,member_name);
      return var_6;
    }
  }
  else if (arch->nested_member_origin == 0) {
    var_6 = (char *)var_5(var_10);
    if (var_6 != (char *)0x0) {
      var_7(var_6,var_10,"%s[%s]",pcVar6,member_name);
      return var_6;
    }
  }
  else {
    var_8 = nested_arch->file_name;
    var_9 = var_3 + var_4 + 5;
    if (var_8 == (char *)0x0) {
      var_10 = var_2(var_6);
      var_10 = var_9 + var_10;
      var_11 = (char *)var_5(var_10);
      var_8 = var_6;
    }
    else {
      var_10 = var_2(var_8);
      var_10 = var_9 + var_10;
      var_11 = (char *)var_5(var_10);
    }
    if (var_11 != (char *)0x0) {
      var_7(var_11,var_10,"%s[%s(%s)]",pcVar6,var_8,member_name);
      return var_11;
    }
  }
  pcVar6 = (char *)var_1(0,"Out of memory\n",5);
  var_12(pcVar6);
  return (char *)0x0;
}


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

char * MASKED(undefined8 *param_1,undefined8 *param_2,char *param_3)

{
  long lVar1;
  char *__s;
  char *__s_00;
  char *pcVar2;
  size_t sVar3;
  size_t sVar4;
  size_t sVar5;
  char *__s_01;
  undefined8 uVar6;
  
  pcVar2 = (char *)dcgettext(0,"<corrupt>",5);
  __s = (char *)*param_1;
  sVar3 = strlen(__s);
  sVar4 = strlen(param_3);
  sVar5 = sVar4 + sVar3 + 3;
  if (*(int *)(param_1 + 10) == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s(%s)",__s,param_3);
      return pcVar2;
    }
  }
  else if (param_1[8] == 0) {
    pcVar2 = (char *)malloc(sVar5);
    if (pcVar2 != (char *)0x0) {
      snprintf(pcVar2,sVar5,"%s[%s]",__s,param_3);
      return pcVar2;
    }
  }
  else {
    __s_00 = (char *)*param_2;
    lVar1 = sVar4 + sVar3 + 5;
    if (__s_00 == (char *)0x0) {
      sVar5 = strlen(pcVar2);
      sVar5 = lVar1 + sVar5;
      __s_01 = (char *)malloc(sVar5);
      __s_00 = pcVar2;
    }
    else {
      sVar5 = strlen(__s_00);
      sVar5 = lVar1 + sVar5;
      __s_01 = (char *)malloc(sVar5);
    }
    if (__s_01 != (char *)0x0) {
      snprintf(__s_01,sVar5,"%s[%s(%s)]",__s,__s_00,param_3);
      return __s_01;
    }
  }
  uVar6 = dcgettext(0,"Out of memory\n",5);
  error(uVar6);
  return (char *)0x0;
}

