
debug_type_conflict *
stab_demangle_v3_arglist
          (void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)

{
  debug_type_conflict *ppdVar1;
  debug_type pdVar2;
  debug_type_conflict *__ptr;
  char *__format;
  uint uVar3;
  demangle_component *dc;
  ulong uVar4;
  ulong uVar5;
  bfd_boolean varargs;
  
  ppdVar1 = (debug_type_conflict *)xmalloc(0x50);
  *pvarargs = 0;
  __ptr = ppdVar1;
  if (arglist != (demangle_component *)0x0) {
    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {
LAB_00111860:
      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);
      fprintf(stderr,__format);
      free(__ptr);
      return (debug_type_conflict *)0x0;
    }
    dc = (arglist->u).s_fixed.length;
    if (dc != (demangle_component *)0x0) {
      uVar4 = 0;
      uVar5 = 10;
      do {
        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);
        if (pdVar2 == (debug_type)0x0) {
          if (varargs == 0) {
            free(__ptr);
            return (debug_type_conflict *)0x0;
          }
          *pvarargs = 1;
          arglist = (arglist->u).s_extended_operator.name;
        }
        else {
          uVar3 = (int)uVar4 + 1;
          if ((uint)uVar5 <= uVar3) {
            uVar5 = (ulong)((uint)uVar5 + 10);
            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);
          }
          arglist = (arglist->u).s_extended_operator.name;
          __ptr[uVar4] = pdVar2;
          uVar4 = (ulong)uVar3;
        }
        if (arglist == (demangle_component *)0x0) break;
        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;
        dc = (arglist->u).s_fixed.length;
      } while (dc != (demangle_component *)0x0);
      ppdVar1 = __ptr + uVar4;
    }
  }
  *ppdVar1 = (debug_type_conflict)0x0;
  return __ptr;
}



undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)

{
  undefined8 *puVar1;
  long lVar2;
  undefined8 *__ptr;
  char *__format;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  int local_3c [3];
  
  puVar1 = (undefined8 *)xmalloc(0x50);
  *param_4 = 0;
  __ptr = puVar1;
  if (param_3 != (int *)0x0) {
    if (*param_3 != 0x2e) {
LAB_00111860:
      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);
      fprintf(stderr,__format);
      free(__ptr);
      return (undefined8 *)0x0;
    }
    lVar2 = *(long *)(param_3 + 2);
    if (lVar2 != 0) {
      uVar4 = 0;
      uVar5 = 10;
      do {
        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);
        if (lVar2 == 0) {
          if (local_3c[0] == 0) {
            free(__ptr);
            return (undefined8 *)0x0;
          }
          *param_4 = 1;
          param_3 = *(int **)(param_3 + 4);
        }
        else {
          uVar3 = (int)uVar4 + 1;
          if ((uint)uVar5 <= uVar3) {
            uVar5 = (ulong)((uint)uVar5 + 10);
            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);
          }
          param_3 = *(int **)(param_3 + 4);
          __ptr[uVar4] = lVar2;
          uVar4 = (ulong)uVar3;
        }
        if (param_3 == (int *)0x0) break;
        if (*param_3 != 0x2e) goto LAB_00111860;
        lVar2 = *(long *)(param_3 + 2);
      } while (lVar2 != 0);
      puVar1 = __ptr + uVar4;
    }
  }
  *puVar1 = 0;
  return __ptr;
}


PUSH R15
MOV R15,RDX
PUSH R14
MOV R14,RSI
PUSH R13
MOV R13,RDI
MOV EDI,0x50
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RCX
SUB RSP,0x38
MOV qword ptr [RSP + 0x18],RCX
CALL 0x00104370
MOV dword ptr [RBX],0x0
MOV RBP,RAX
TEST R15,R15
JZ 0x0011188e
CMP dword ptr [R15],0x2e
JNZ 0x00111860
MOV RDX,qword ptr [R15 + 0x8]
TEST RDX,RDX
JZ 0x0011188e
LEA RAX,[RSP + 0x2c]
XOR EBX,EBX
MOV R12D,0xa
MOV qword ptr [RSP],RAX
JMP 0x001117c3
LEA ECX,[RBX + 0x1]
CMP ECX,R12D
JNC 0x00111810
MOV R15,qword ptr [R15 + 0x10]
MOV qword ptr [RBP + RBX*0x8],RDX
MOV EBX,ECX
TEST R15,R15
JZ 0x00111800
CMP dword ptr [R15],0x2e
JNZ 0x00111860
MOV RDX,qword ptr [R15 + 0x8]
TEST RDX,RDX
JZ 0x00111800
MOV R8,qword ptr [RSP]
XOR ECX,ECX
MOV RSI,R14
MOV RDI,R13
CALL 0x00110fa0
MOV RDX,RAX
TEST RAX,RAX
JNZ 0x00111798
MOV EAX,dword ptr [RSP + 0x2c]
TEST EAX,EAX
JZ 0x00111840
MOV RAX,qword ptr [RSP + 0x18]
MOV dword ptr [RAX],0x1
MOV R15,qword ptr [R15 + 0x10]
TEST R15,R15
JNZ 0x001117b0
NOP dword ptr [RAX + RAX*0x1]
LEA RAX,[RBP + RBX*0x8]
MOV qword ptr [RAX],0x0
JMP 0x0011184a
LEA ESI,[R12 + 0xa]
MOV RDI,RBP
MOV dword ptr [RSP + 0xc],ECX
MOV R12,RSI
SHL RSI,0x3
MOV qword ptr [RSP + 0x10],RAX
CALL 0x001042b0
MOV RDX,qword ptr [RSP + 0x10]
MOV ECX,dword ptr [RSP + 0xc]
MOV RBP,RAX
JMP 0x001117a0
MOV RDI,RBP
CALL 0x00104920
XOR EBP,EBP
ADD RSP,0x38
MOV RAX,RBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x5
XOR EDI,EDI
LEA RSI,[0x1233a8]
CALL 0x00104240
MOV RDI,qword ptr [0x0012c9e0]
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001044a0
MOV RDI,RBP
CALL 0x00104920
JMP 0x00111848
MOV RAX,RBP
JMP 0x00111805
(translation_unit "undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}\n\n" (function_definition "undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" type_identifier (pointer_declarator "* FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" * (function_declarator "FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = (undefined8 *)xmalloc(0x50);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x50)" identifier = (cast_expression "(undefined8 *)xmalloc(0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x50)" identifier (argument_list "(0x50)" ( number_literal ))))) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "__ptr = puVar1;" (assignment_expression "__ptr = puVar1" identifier = identifier) ;) (if_statement "if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" { (if_statement "if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(*param_3 != 0x2e)" ( (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" { (labeled_statement "LAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" statement_identifier : (expression_statement "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier (argument_list "(0,"Unexpected type in v3 arglist demangling\n",5)" ( number_literal , (string_literal ""Unexpected type in v3 arglist demangling\n"" " string_content escape_sequence ") , number_literal ))))) ;)) (expression_statement "fprintf(stderr,__format);" (call_expression "fprintf(stderr,__format)" identifier (argument_list "(stderr,__format)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" identifier = (pointer_expression "*(long *)(param_3 + 2)" * (cast_expression "(long *)(param_3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 10;" (assignment_expression "uVar5 = 10" identifier = number_literal) ;) (do_statement "do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);" do (compound_statement "{\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      }" { (expression_statement "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);" (assignment_expression "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" identifier = (call_expression "FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" identifier (argument_list "(param_1,param_2,lVar2,0,local_3c)" ( identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }" { (if_statement "if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" else (compound_statement "{\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" { (expression_statement "uVar3 = (int)uVar4 + 1;" (assignment_expression "uVar3 = (int)uVar4 + 1" identifier = (binary_expression "(int)uVar4 + 1" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" if (parenthesized_expression "((uint)uVar5 <= uVar3)" ( (binary_expression "(uint)uVar5 <= uVar3" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) (compound_statement "{\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" { (expression_statement "uVar5 = (ulong)((uint)uVar5 + 10);" (assignment_expression "uVar5 = (ulong)((uint)uVar5 + 10)" identifier = (call_expression "(ulong)((uint)uVar5 + 10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar5 + 10)" ( (binary_expression "(uint)uVar5 + 10" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) )))) ;) (expression_statement "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);" (assignment_expression "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3)" identifier = (cast_expression "(undefined8 *)xrealloc(__ptr,uVar5 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(__ptr,uVar5 << 3)" identifier (argument_list "(__ptr,uVar5 << 3)" ( identifier , (binary_expression "uVar5 << 3" identifier << number_literal) ))))) ;) })) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "__ptr[uVar4] = lVar2;" (assignment_expression "__ptr[uVar4] = lVar2" (subscript_expression "__ptr[uVar4]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar4 = (ulong)uVar3;" (assignment_expression "uVar4 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (if_statement "if (param_3 == (int *)0x0) break;" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (*param_3 != 0x2e) goto LAB_00111860;" if (parenthesized_expression "(*param_3 != 0x2e)" ( (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" * identifier) != number_literal) )) (goto_statement "goto LAB_00111860;" goto statement_identifier ;)) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" identifier = (pointer_expression "*(long *)(param_3 + 2)" * (cast_expression "(long *)(param_3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) ;) (expression_statement "puVar1 = __ptr + uVar4;" (assignment_expression "puVar1 = __ptr + uVar4" identifier = (binary_expression "__ptr + uVar4" identifier + identifier)) ;) })) })) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (return_statement "return __ptr;" return identifier ;) })))
(translation_unit "debug_type_conflict *\nstab_demangle_v3_arglist\n          (void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)\n\n{\n  debug_type_conflict *ppdVar1;\n  debug_type pdVar2;\n  debug_type_conflict *__ptr;\n  char *__format;\n  uint uVar3;\n  demangle_component *dc;\n  ulong uVar4;\n  ulong uVar5;\n  bfd_boolean varargs;\n  \n  ppdVar1 = (debug_type_conflict *)xmalloc(0x50);\n  *pvarargs = 0;\n  __ptr = ppdVar1;\n  if (arglist != (demangle_component *)0x0) {\n    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }\n    dc = (arglist->u).s_fixed.length;\n    if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }\n  }\n  *ppdVar1 = (debug_type_conflict)0x0;\n  return __ptr;\n}\n\n" (function_definition "debug_type_conflict *\nstab_demangle_v3_arglist\n          (void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)\n\n{\n  debug_type_conflict *ppdVar1;\n  debug_type pdVar2;\n  debug_type_conflict *__ptr;\n  char *__format;\n  uint uVar3;\n  demangle_component *dc;\n  ulong uVar4;\n  ulong uVar5;\n  bfd_boolean varargs;\n  \n  ppdVar1 = (debug_type_conflict *)xmalloc(0x50);\n  *pvarargs = 0;\n  __ptr = ppdVar1;\n  if (arglist != (demangle_component *)0x0) {\n    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }\n    dc = (arglist->u).s_fixed.length;\n    if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }\n  }\n  *ppdVar1 = (debug_type_conflict)0x0;\n  return __ptr;\n}" type_identifier (pointer_declarator "*\nstab_demangle_v3_arglist\n          (void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)" * (function_declarator "stab_demangle_v3_arglist\n          (void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)" identifier (parameter_list "(void *dhandle,stab_handle *info,demangle_component *arglist,bfd_boolean *pvarargs)" ( (parameter_declaration "void *dhandle" primitive_type (pointer_declarator "*dhandle" * identifier)) , (parameter_declaration "stab_handle *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "demangle_component *arglist" type_identifier (pointer_declarator "*arglist" * identifier)) , (parameter_declaration "bfd_boolean *pvarargs" type_identifier (pointer_declarator "*pvarargs" * identifier)) )))) (compound_statement "{\n  debug_type_conflict *ppdVar1;\n  debug_type pdVar2;\n  debug_type_conflict *__ptr;\n  char *__format;\n  uint uVar3;\n  demangle_component *dc;\n  ulong uVar4;\n  ulong uVar5;\n  bfd_boolean varargs;\n  \n  ppdVar1 = (debug_type_conflict *)xmalloc(0x50);\n  *pvarargs = 0;\n  __ptr = ppdVar1;\n  if (arglist != (demangle_component *)0x0) {\n    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }\n    dc = (arglist->u).s_fixed.length;\n    if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }\n  }\n  *ppdVar1 = (debug_type_conflict)0x0;\n  return __ptr;\n}" { (declaration "debug_type_conflict *ppdVar1;" type_identifier (pointer_declarator "*ppdVar1" * identifier) ;) (declaration "debug_type pdVar2;" type_identifier identifier ;) (declaration "debug_type_conflict *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "demangle_component *dc;" type_identifier (pointer_declarator "*dc" * identifier) ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "bfd_boolean varargs;" type_identifier identifier ;) (expression_statement "ppdVar1 = (debug_type_conflict *)xmalloc(0x50);" (assignment_expression "ppdVar1 = (debug_type_conflict *)xmalloc(0x50)" identifier = (cast_expression "(debug_type_conflict *)xmalloc(0x50)" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x50)" identifier (argument_list "(0x50)" ( number_literal ))))) ;) (expression_statement "*pvarargs = 0;" (assignment_expression "*pvarargs = 0" (pointer_expression "*pvarargs" * identifier) = number_literal) ;) (expression_statement "__ptr = ppdVar1;" (assignment_expression "__ptr = ppdVar1" identifier = identifier) ;) (if_statement "if (arglist != (demangle_component *)0x0) {\n    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }\n    dc = (arglist->u).s_fixed.length;\n    if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }\n  }" if (parenthesized_expression "(arglist != (demangle_component *)0x0)" ( (binary_expression "arglist != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }\n    dc = (arglist->u).s_fixed.length;\n    if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }\n  }" { (if_statement "if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }" if (parenthesized_expression "(arglist->type != DEMANGLE_COMPONENT_ARGLIST)" ( (binary_expression "arglist->type != DEMANGLE_COMPONENT_ARGLIST" (field_expression "arglist->type" identifier -> field_identifier) != identifier) )) (compound_statement "{\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (debug_type_conflict *)0x0;\n    }" { (labeled_statement "LAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" statement_identifier : (expression_statement "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier (argument_list "(0,"Unexpected type in v3 arglist demangling\n",5)" ( number_literal , (string_literal ""Unexpected type in v3 arglist demangling\n"" " string_content escape_sequence ") , number_literal ))))) ;)) (expression_statement "fprintf(stderr,__format);" (call_expression "fprintf(stderr,__format)" identifier (argument_list "(stderr,__format)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (debug_type_conflict *)0x0;" return (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "dc = (arglist->u).s_fixed.length;" (assignment_expression "dc = (arglist->u).s_fixed.length" identifier = (field_expression "(arglist->u).s_fixed.length" (field_expression "(arglist->u).s_fixed" (parenthesized_expression "(arglist->u)" ( (field_expression "arglist->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (dc != (demangle_component *)0x0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }" if (parenthesized_expression "(dc != (demangle_component *)0x0)" ( (binary_expression "dc != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);\n      ppdVar1 = __ptr + uVar4;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 10;" (assignment_expression "uVar5 = 10" identifier = number_literal) ;) (do_statement "do {\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      } while (dc != (demangle_component *)0x0);" do (compound_statement "{\n        pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);\n        if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (arglist == (demangle_component *)0x0) break;\n        if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;\n        dc = (arglist->u).s_fixed.length;\n      }" { (expression_statement "pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs);" (assignment_expression "pdVar2 = stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs)" identifier = (call_expression "stab_demangle_v3_arg(dhandle,info,dc,(debug_type)0x0,&varargs)" identifier (argument_list "(dhandle,info,dc,(debug_type)0x0,&varargs)" ( identifier , identifier , identifier , (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) , (pointer_expression "&varargs" & identifier) )))) ;) (if_statement "if (pdVar2 == (debug_type)0x0) {\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }" if (parenthesized_expression "(pdVar2 == (debug_type)0x0)" ( (binary_expression "pdVar2 == (debug_type)0x0" identifier == (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal)) )) (compound_statement "{\n          if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }\n          *pvarargs = 1;\n          arglist = (arglist->u).s_extended_operator.name;\n        }" { (if_statement "if (varargs == 0) {\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }" if (parenthesized_expression "(varargs == 0)" ( (binary_expression "varargs == 0" identifier == number_literal) )) (compound_statement "{\n            free(__ptr);\n            return (debug_type_conflict *)0x0;\n          }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (debug_type_conflict *)0x0;" return (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*pvarargs = 1;" (assignment_expression "*pvarargs = 1" (pointer_expression "*pvarargs" * identifier) = number_literal) ;) (expression_statement "arglist = (arglist->u).s_extended_operator.name;" (assignment_expression "arglist = (arglist->u).s_extended_operator.name" identifier = (field_expression "(arglist->u).s_extended_operator.name" (field_expression "(arglist->u).s_extended_operator" (parenthesized_expression "(arglist->u)" ( (field_expression "arglist->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }" else (compound_statement "{\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }\n          arglist = (arglist->u).s_extended_operator.name;\n          __ptr[uVar4] = pdVar2;\n          uVar4 = (ulong)uVar3;\n        }" { (expression_statement "uVar3 = (int)uVar4 + 1;" (assignment_expression "uVar3 = (int)uVar4 + 1" identifier = (binary_expression "(int)uVar4 + 1" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }" if (parenthesized_expression "((uint)uVar5 <= uVar3)" ( (binary_expression "(uint)uVar5 <= uVar3" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) (compound_statement "{\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);\n          }" { (expression_statement "uVar5 = (ulong)((uint)uVar5 + 10);" (assignment_expression "uVar5 = (ulong)((uint)uVar5 + 10)" identifier = (call_expression "(ulong)((uint)uVar5 + 10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar5 + 10)" ( (binary_expression "(uint)uVar5 + 10" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) )))) ;) (expression_statement "__ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3);" (assignment_expression "__ptr = (debug_type_conflict *)xrealloc(__ptr,uVar5 << 3)" identifier = (cast_expression "(debug_type_conflict *)xrealloc(__ptr,uVar5 << 3)" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(__ptr,uVar5 << 3)" identifier (argument_list "(__ptr,uVar5 << 3)" ( identifier , (binary_expression "uVar5 << 3" identifier << number_literal) ))))) ;) })) (expression_statement "arglist = (arglist->u).s_extended_operator.name;" (assignment_expression "arglist = (arglist->u).s_extended_operator.name" identifier = (field_expression "(arglist->u).s_extended_operator.name" (field_expression "(arglist->u).s_extended_operator" (parenthesized_expression "(arglist->u)" ( (field_expression "arglist->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "__ptr[uVar4] = pdVar2;" (assignment_expression "__ptr[uVar4] = pdVar2" (subscript_expression "__ptr[uVar4]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar4 = (ulong)uVar3;" (assignment_expression "uVar4 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (if_statement "if (arglist == (demangle_component *)0x0) break;" if (parenthesized_expression "(arglist == (demangle_component *)0x0)" ( (binary_expression "arglist == (demangle_component *)0x0" identifier == (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (arglist->type != DEMANGLE_COMPONENT_ARGLIST) goto LAB_00111860;" if (parenthesized_expression "(arglist->type != DEMANGLE_COMPONENT_ARGLIST)" ( (binary_expression "arglist->type != DEMANGLE_COMPONENT_ARGLIST" (field_expression "arglist->type" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00111860;" goto statement_identifier ;)) (expression_statement "dc = (arglist->u).s_fixed.length;" (assignment_expression "dc = (arglist->u).s_fixed.length" identifier = (field_expression "(arglist->u).s_fixed.length" (field_expression "(arglist->u).s_fixed" (parenthesized_expression "(arglist->u)" ( (field_expression "arglist->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) while (parenthesized_expression "(dc != (demangle_component *)0x0)" ( (binary_expression "dc != (demangle_component *)0x0" identifier != (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "ppdVar1 = __ptr + uVar4;" (assignment_expression "ppdVar1 = __ptr + uVar4" identifier = (binary_expression "__ptr + uVar4" identifier + identifier)) ;) })) })) (expression_statement "*ppdVar1 = (debug_type_conflict)0x0;" (assignment_expression "*ppdVar1 = (debug_type_conflict)0x0" (pointer_expression "*ppdVar1" * identifier) = (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ;) (return_statement "return __ptr;" return identifier ;) })))
(translation_unit "undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}\n\n" (function_definition "undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" type_identifier (pointer_declarator "* FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" * (function_declarator "FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "puVar1 = (undefined8 *)xmalloc(0x50);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x50)" identifier = (cast_expression "(undefined8 *)xmalloc(0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x50)" identifier (argument_list "(0x50)" ( number_literal ))))) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "__ptr = puVar1;" (assignment_expression "__ptr = puVar1" identifier = identifier) ;) (if_statement "if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" { (if_statement "if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "(*param_3 != 0x2e)" ( (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" * identifier) != number_literal) )) (compound_statement "{\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" { (labeled_statement "LAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" statement_identifier : (expression_statement "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" identifier (argument_list "(0,"Unexpected type in v3 arglist demangling\n",5)" ( number_literal , (string_literal ""Unexpected type in v3 arglist demangling\n"" " string_content escape_sequence ") , number_literal ))))) ;)) (expression_statement "fprintf(stderr,__format);" (call_expression "fprintf(stderr,__format)" identifier (argument_list "(stderr,__format)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" identifier = (pointer_expression "*(long *)(param_3 + 2)" * (cast_expression "(long *)(param_3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) (if_statement "if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 10;" (assignment_expression "uVar5 = 10" identifier = number_literal) ;) (do_statement "do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);" do (compound_statement "{\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      }" { (expression_statement "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);" (assignment_expression "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" identifier = (call_expression "FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" identifier (argument_list "(param_1,param_2,lVar2,0,local_3c)" ( identifier , identifier , identifier , number_literal , identifier )))) ;) (if_statement "if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }" { (if_statement "if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" else (compound_statement "{\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" { (expression_statement "uVar3 = (int)uVar4 + 1;" (assignment_expression "uVar3 = (int)uVar4 + 1" identifier = (binary_expression "(int)uVar4 + 1" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" if (parenthesized_expression "((uint)uVar5 <= uVar3)" ( (binary_expression "(uint)uVar5 <= uVar3" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) <= identifier) )) (compound_statement "{\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" { (expression_statement "uVar5 = (ulong)((uint)uVar5 + 10);" (assignment_expression "uVar5 = (ulong)((uint)uVar5 + 10)" identifier = (call_expression "(ulong)((uint)uVar5 + 10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uint)uVar5 + 10)" ( (binary_expression "(uint)uVar5 + 10" (cast_expression "(uint)uVar5" ( (type_descriptor "uint" type_identifier) ) identifier) + number_literal) )))) ;) (expression_statement "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);" (assignment_expression "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3)" identifier = (cast_expression "(undefined8 *)xrealloc(__ptr,uVar5 << 3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(__ptr,uVar5 << 3)" identifier (argument_list "(__ptr,uVar5 << 3)" ( identifier , (binary_expression "uVar5 << 3" identifier << number_literal) ))))) ;) })) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" identifier = (pointer_expression "*(int **)(param_3 + 4)" * (cast_expression "(int **)(param_3 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "__ptr[uVar4] = lVar2;" (assignment_expression "__ptr[uVar4] = lVar2" (subscript_expression "__ptr[uVar4]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar4 = (ulong)uVar3;" (assignment_expression "uVar4 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (if_statement "if (param_3 == (int *)0x0) break;" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (*param_3 != 0x2e) goto LAB_00111860;" if (parenthesized_expression "(*param_3 != 0x2e)" ( (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" * identifier) != number_literal) )) (goto_statement "goto LAB_00111860;" goto statement_identifier ;)) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" identifier = (pointer_expression "*(long *)(param_3 + 2)" * (cast_expression "(long *)(param_3 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 2)" ( (binary_expression "param_3 + 2" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) ;) (expression_statement "puVar1 = __ptr + uVar4;" (assignment_expression "puVar1 = __ptr + uVar4" identifier = (binary_expression "__ptr + uVar4" identifier + identifier)) ;) })) })) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (return_statement "return __ptr;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT ))))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT << LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)\n\n{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" (* "*") (function_declarator "FUN_00111730(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" (identifier "FUN_00111730") (parameter_list "(undefined8 param_1,undefined8 param_2,int *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  undefined8 *puVar1;\n  long lVar2;\n  undefined8 *__ptr;\n  char *__format;\n  uint uVar3;\n  ulong uVar4;\n  ulong uVar5;\n  int local_3c [3];\n  \n  puVar1 = (undefined8 *)xmalloc(0x50);\n  *param_4 = 0;\n  __ptr = puVar1;\n  if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }\n  *puVar1 = 0;\n  return __ptr;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 *__ptr;" (type_identifier "undefined8") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "char *__format;" (primitive_type "char") (pointer_declarator "*__format" (* "*") (identifier "__format")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "int local_3c [3];" (primitive_type "int") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "puVar1 = (undefined8 *)xmalloc(0x50);" (assignment_expression "puVar1 = (undefined8 *)xmalloc(0x50)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)xmalloc(0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x50)" (identifier "xmalloc") (argument_list "(0x50)" (( "(") (number_literal "0x50") () ")"))))) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "__ptr = puVar1;" (assignment_expression "__ptr = puVar1" (identifier "__ptr") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (param_3 != (int *)0x0) {\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }\n    lVar2 = *(long *)(param_3 + 2);\n    if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }\n  }" ({ "{") (if_statement "if (*param_3 != 0x2e) {\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" (if "if") (parenthesized_expression "(*param_3 != 0x2e)" (( "(") (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "0x2e")) () ")")) (compound_statement "{\nLAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);\n      fprintf(stderr,__format);\n      free(__ptr);\n      return (undefined8 *)0x0;\n    }" ({ "{") (labeled_statement "LAB_00111860:\n      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" (statement_identifier "LAB_00111860") (: ":") (expression_statement "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" (identifier "__format") (= "=") (cast_expression "(char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"Unexpected type in v3 arglist demangling\n",5)" (identifier "dcgettext") (argument_list "(0,"Unexpected type in v3 arglist demangling\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Unexpected type in v3 arglist demangling\n"" (" """) (string_content "Unexpected type in v3 arglist demangling") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";"))) (expression_statement "fprintf(stderr,__format);" (call_expression "fprintf(stderr,__format)" (identifier "fprintf") (argument_list "(stderr,__format)" (( "(") (identifier "stderr") (, ",") (identifier "__format") () ")"))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return (undefined8 *)0x0;" (return "return") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_3 + 2)" (* "*") (cast_expression "(long *)(param_3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (lVar2 != 0) {\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = 0;\n      uVar5 = 10;\n      do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);\n      puVar1 = __ptr + uVar4;\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 10;" (assignment_expression "uVar5 = 10" (identifier "uVar5") (= "=") (number_literal "10")) (; ";")) (do_statement "do {\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      } while (lVar2 != 0);" (do "do") (compound_statement "{\n        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);\n        if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }\n        if (param_3 == (int *)0x0) break;\n        if (*param_3 != 0x2e) goto LAB_00111860;\n        lVar2 = *(long *)(param_3 + 2);\n      }" ({ "{") (expression_statement "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);" (assignment_expression "lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" (identifier "lVar2") (= "=") (call_expression "FUN_00110fa0(param_1,param_2,lVar2,0,local_3c)" (identifier "FUN_00110fa0") (argument_list "(param_1,param_2,lVar2,0,local_3c)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "lVar2") (, ",") (number_literal "0") (, ",") (identifier "local_3c") () ")")))) (; ";")) (if_statement "if (lVar2 == 0) {\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }\n        else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }\n          *param_4 = 1;\n          param_3 = *(int **)(param_3 + 4);\n        }" ({ "{") (if_statement "if (local_3c[0] == 0) {\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" (if "if") (parenthesized_expression "(local_3c[0] == 0)" (( "(") (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            free(__ptr);\n            return (undefined8 *)0x0;\n          }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return (undefined8 *)0x0;" (return "return") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" (identifier "param_3") (= "=") (pointer_expression "*(int **)(param_3 + 4)" (* "*") (cast_expression "(int **)(param_3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" (else "else") (compound_statement "{\n          uVar3 = (int)uVar4 + 1;\n          if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }\n          param_3 = *(int **)(param_3 + 4);\n          __ptr[uVar4] = lVar2;\n          uVar4 = (ulong)uVar3;\n        }" ({ "{") (expression_statement "uVar3 = (int)uVar4 + 1;" (assignment_expression "uVar3 = (int)uVar4 + 1" (identifier "uVar3") (= "=") (binary_expression "(int)uVar4 + 1" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((uint)uVar5 <= uVar3) {\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" (if "if") (parenthesized_expression "((uint)uVar5 <= uVar3)" (( "(") (binary_expression "(uint)uVar5 <= uVar3" (cast_expression "(uint)uVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar5")) (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n            uVar5 = (ulong)((uint)uVar5 + 10);\n            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);\n          }" ({ "{") (expression_statement "uVar5 = (ulong)((uint)uVar5 + 10);" (assignment_expression "uVar5 = (ulong)((uint)uVar5 + 10)" (identifier "uVar5") (= "=") (call_expression "(ulong)((uint)uVar5 + 10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uint)uVar5 + 10)" (( "(") (binary_expression "(uint)uVar5 + 10" (cast_expression "(uint)uVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar5")) (+ "+") (number_literal "10")) () ")")))) (; ";")) (expression_statement "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);" (assignment_expression "__ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3)" (identifier "__ptr") (= "=") (cast_expression "(undefined8 *)xrealloc(__ptr,uVar5 << 3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xrealloc(__ptr,uVar5 << 3)" (identifier "xrealloc") (argument_list "(__ptr,uVar5 << 3)" (( "(") (identifier "__ptr") (, ",") (binary_expression "uVar5 << 3" (identifier "uVar5") (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (} "}"))) (expression_statement "param_3 = *(int **)(param_3 + 4);" (assignment_expression "param_3 = *(int **)(param_3 + 4)" (identifier "param_3") (= "=") (pointer_expression "*(int **)(param_3 + 4)" (* "*") (cast_expression "(int **)(param_3 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "__ptr[uVar4] = lVar2;" (assignment_expression "__ptr[uVar4] = lVar2" (subscript_expression "__ptr[uVar4]" (identifier "__ptr") ([ "[") (identifier "uVar4") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "uVar4 = (ulong)uVar3;" (assignment_expression "uVar4 = (ulong)uVar3" (identifier "uVar4") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (} "}")))) (if_statement "if (param_3 == (int *)0x0) break;" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*param_3 != 0x2e) goto LAB_00111860;" (if "if") (parenthesized_expression "(*param_3 != 0x2e)" (( "(") (binary_expression "*param_3 != 0x2e" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (number_literal "0x2e")) () ")")) (goto_statement "goto LAB_00111860;" (goto "goto") (statement_identifier "LAB_00111860") (; ";"))) (expression_statement "lVar2 = *(long *)(param_3 + 2);" (assignment_expression "lVar2 = *(long *)(param_3 + 2)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_3 + 2)" (* "*") (cast_expression "(long *)(param_3 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 2)" (( "(") (binary_expression "param_3 + 2" (identifier "param_3") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar1 = __ptr + uVar4;" (assignment_expression "puVar1 = __ptr + uVar4" (identifier "puVar1") (= "=") (binary_expression "__ptr + uVar4" (identifier "__ptr") (+ "+") (identifier "uVar4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0")) (; ";")) (return_statement "return __ptr;" (return "return") (identifier "__ptr") (; ";")) (} "}")))

type_1 *
function_1
          (void *dhandle,type_2 *info,type_3 *var_2,type_4 *pvarargs)

{
  type_1 *ppdVar1;
  type_5 var_9;
  type_1 *var_14;
  char *__format;
  type_6 var_11;
  type_3 *var_7;
  type_7 var_15;
  type_7 var_13;
  type_4 var_10;
  
  ppdVar1 = (type_1 *)var_1(0x50);
  *pvarargs = 0;
  var_14 = ppdVar1;
  if (var_2 != (type_3 *)0x0) {
    if (var_2->type != var_3) {
LAB_00111860:
      __format = (char *)var_4(0,"Unexpected type in v3 arglist demangling\n",5);
      var_5(stderr,__format);
      var_6(var_14);
      return (type_1 *)0x0;
    }
    var_7 = (var_2->u).s_fixed.length;
    if (var_7 != (type_3 *)0x0) {
      var_15 = 0;
      var_13 = 10;
      do {
        var_9 = var_8(dhandle,info,var_7,(type_5)0x0,&var_10);
        if (var_9 == (type_5)0x0) {
          if (var_10 == 0) {
            var_6(var_14);
            return (type_1 *)0x0;
          }
          *pvarargs = 1;
          var_2 = (var_2->u).s_extended_operator.name;
        }
        else {
          var_11 = (int)var_15 + 1;
          if ((type_6)var_13 <= var_11) {
            var_13 = (type_7)((type_6)var_13 + 10);
            var_14 = (type_1 *)var_12(var_14,var_13 << 3);
          }
          var_2 = (var_2->u).s_extended_operator.name;
          var_14[var_15] = var_9;
          var_15 = (type_7)var_11;
        }
        if (var_2 == (type_3 *)0x0) break;
        if (var_2->type != var_3) goto LAB_00111860;
        var_7 = (var_2->u).s_fixed.length;
      } while (var_7 != (type_3 *)0x0);
      ppdVar1 = var_14 + var_15;
    }
  }
  *ppdVar1 = (type_1)0x0;
  return var_14;
}


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

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

{
  undefined8 *puVar1;
  long lVar2;
  undefined8 *__ptr;
  char *__format;
  uint uVar3;
  ulong uVar4;
  ulong uVar5;
  int local_3c [3];
  
  puVar1 = (undefined8 *)xmalloc(0x50);
  *param_4 = 0;
  __ptr = puVar1;
  if (param_3 != (int *)0x0) {
    if (*param_3 != 0x2e) {
LAB_00111860:
      __format = (char *)dcgettext(0,"Unexpected type in v3 arglist demangling\n",5);
      fprintf(stderr,__format);
      free(__ptr);
      return (undefined8 *)0x0;
    }
    lVar2 = *(long *)(param_3 + 2);
    if (lVar2 != 0) {
      uVar4 = 0;
      uVar5 = 10;
      do {
        lVar2 = FUN_00110fa0(param_1,param_2,lVar2,0,local_3c);
        if (lVar2 == 0) {
          if (local_3c[0] == 0) {
            free(__ptr);
            return (undefined8 *)0x0;
          }
          *param_4 = 1;
          param_3 = *(int **)(param_3 + 4);
        }
        else {
          uVar3 = (int)uVar4 + 1;
          if ((uint)uVar5 <= uVar3) {
            uVar5 = (ulong)((uint)uVar5 + 10);
            __ptr = (undefined8 *)xrealloc(__ptr,uVar5 << 3);
          }
          param_3 = *(int **)(param_3 + 4);
          __ptr[uVar4] = lVar2;
          uVar4 = (ulong)uVar3;
        }
        if (param_3 == (int *)0x0) break;
        if (*param_3 != 0x2e) goto LAB_00111860;
        lVar2 = *(long *)(param_3 + 2);
      } while (lVar2 != 0);
      puVar1 = __ptr + uVar4;
    }
  }
  *puVar1 = 0;
  return __ptr;
}

