
int cplus_demangle_print_callback
              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)

{
  size_t sVar1;
  demangle_callbackref p_Var2;
  void *pvVar3;
  int iVar4;
  int iVar5;
  d_print_info dpi;
  
  dpi.len = 0;
  dpi.last_char = '\0';
  dpi.templates = (d_print_template *)0x0;
  dpi.modifiers = (d_print_mod *)0x0;
  dpi.pack_index = 0;
  dpi.flush_count = 0;
  dpi.demangle_failure = 0;
  dpi.recursion = 0;
  dpi.is_lambda_arg = 0;
  dpi.component_stack = (d_component_stack *)0x0;
  dpi.saved_scopes = (d_saved_scope *)0x0;
  dpi.next_saved_scope = 0;
  dpi.num_saved_scopes = 0;
  dpi.copy_templates = (d_print_template *)0x0;
  dpi.next_copy_template = 0;
  dpi.num_copy_templates = 0;
  dpi.callback = callback;
  dpi.opaque = opaque;
  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);
  dpi.current_template = (demangle_component *)0x0;
  dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;
  iVar4 = dpi.num_saved_scopes;
  if (dpi.num_saved_scopes < 1) {
    iVar4 = 1;
  }
  iVar5 = 1;
  if (0 < dpi.num_copy_templates) {
    iVar5 = dpi.num_copy_templates;
  }
  dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8);
  dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8);
  d_print_comp(&dpi,options,dc);
  pvVar3 = dpi.opaque;
  p_Var2 = dpi.callback;
  sVar1 = dpi.len;
  dpi.buf[dpi.len] = '\0';
  (*p_Var2)(dpi.buf,sVar1,pvVar3);
  return (uint)(dpi.demangle_failure == 0);
}



bool cplus_demangle_print_callback
               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined1 auStack_160 [256];
  int local_60;
  undefined1 local_5c;
  code *local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined1 *local_30;
  undefined4 local_2c;
  int local_28;
  undefined1 *local_24;
  undefined4 local_20;
  int local_1c [3];
  
  local_60 = 0;
  local_5c = 0;
  local_50 = 0;
  local_4c = 0;
  local_3c = 0;
  local_38 = 0;
  local_48 = 0;
  local_44 = 0;
  local_40 = 0;
  local_34 = 0;
  local_30 = (undefined1 *)0x0;
  local_2c = 0;
  local_28 = 0;
  local_24 = (undefined1 *)0x0;
  local_20 = 0;
  local_1c[0] = 0;
  local_58 = param_3;
  local_54 = param_4;
  FUN_0031a8b8(local_1c,&local_28,param_2);
  local_1c[1] = 0;
  local_1c[0] = local_28 * local_1c[0];
  iVar3 = local_28;
  if (local_28 < 1) {
    iVar3 = 1;
  }
  iVar4 = 1;
  if (0 < local_1c[0]) {
    iVar4 = local_1c[0];
  }
  local_30 = auStack_160 + iVar3 * -8 + -8;
  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;
  FUN_0031b710(auStack_160,param_1,param_2);
  uVar2 = local_54;
  pcVar1 = local_58;
  iVar3 = local_60;
  auStack_160[local_60] = 0;
  (*pcVar1)(auStack_160,iVar3,uVar2);
  return local_48 == 0;
}


lui gp,0x1a
addiu gp,gp,0x3478
addu gp,gp,t9
addiu sp,sp,-0x178
lw t9,-0x41f8(gp)
or t1,a1,zero
or t2,a0,zero
sw s8,0x170(sp)
or s8,sp,zero
addiu a1,s8,0x150
sw ra,0x174(sp)
addiu a0,s8,0x15c
sw s1,0x16c(sp)
addiu t9,t9,-0x5748
sw s0,0x168(sp)
sw gp,0x10(sp)
or s1,sp,zero
sw a2,0x120(s8)
or a2,t1,zero
sw a3,0x124(s8)
addiu s0,s8,0x18
sw zero,0x118(s8)
sb zero,0x11c(s8)
sw zero,0x128(s8)
sw zero,0x12c(s8)
sw zero,0x13c(s8)
sw zero,0x140(s8)
sw zero,0x130(s8)
sw zero,0x134(s8)
sw zero,0x138(s8)
sw zero,0x144(s8)
sw zero,0x148(s8)
sw zero,0x14c(s8)
sw zero,0x150(s8)
sw zero,0x154(s8)
sw zero,0x158(s8)
bal 0x0031a8b8
_sw zero,0x15c(s8)
li t0,0x1
lw a0,0x150(s8)
or a2,t1,zero
lw v0,0x15c(s8)
or a1,t2,zero
lw gp,0x10(s8)
slt a3,zero,a0
sw zero,0x160(s8)
mul v1,a0,v0
movz a0,t0,a3
lw t9,-0x41f8(gp)
or a3,a0,zero
sll a3,a3,0x3
addiu t9,t9,-0x48f0
slt v0,zero,v1
sw v1,0x15c(s8)
movn t0,v1,v0
subu sp,sp,a3
or a0,s0,zero
addiu v1,sp,0x10
sll v0,t0,0x3
sw v1,0x148(s8)
subu sp,sp,v0
addiu v0,sp,0x10
bal 0x0031b710
_sw v0,0x154(s8)
or a0,s0,zero
lw a1,0x118(s8)
or sp,s1,zero
lw a2,0x124(s8)
lw t9,0x120(s8)
addu s0,s0,a1
jalr t9
_sb zero,0x0(s0)
lw v0,0x130(s8)
or sp,s8,zero
lw ra,0x174(sp)
lw s8,0x170(sp)
sltiu v0,v0,0x1
lw s1,0x16c(sp)
lw s0,0x168(sp)
jr ra
_addiu sp,sp,0x178
(translation_unit "bool cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}\n\n" (function_definition "bool cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" primitive_type (function_declarator "cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 auStack_160 [256];" type_identifier (array_declarator "auStack_160 [256]" identifier [ number_literal ]) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "code *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined1 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "int local_1c [3];" primitive_type (array_declarator "local_1c [3]" identifier [ number_literal ]) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = (undefined1 *)0x0;" (assignment_expression "local_30 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined1 *)0x0;" (assignment_expression "local_24 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c[0] = 0;" (assignment_expression "local_1c[0] = 0" (subscript_expression "local_1c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_54 = param_4;" (assignment_expression "local_54 = param_4" identifier = identifier) ;) (expression_statement "FUN_0031a8b8(local_1c,&local_28,param_2);" (call_expression "FUN_0031a8b8(local_1c,&local_28,param_2)" identifier (argument_list "(local_1c,&local_28,param_2)" ( identifier , (pointer_expression "&local_28" & identifier) , identifier ))) ;) (expression_statement "local_1c[1] = 0;" (assignment_expression "local_1c[1] = 0" (subscript_expression "local_1c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_1c[0] = local_28 * local_1c[0];" (assignment_expression "local_1c[0] = local_28 * local_1c[0]" (subscript_expression "local_1c[0]" identifier [ number_literal ]) = (binary_expression "local_28 * local_1c[0]" identifier * (subscript_expression "local_1c[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar3 = local_28;" (assignment_expression "iVar3 = local_28" identifier = identifier) ;) (if_statement "if (local_28 < 1) {\n    iVar3 = 1;\n  }" if (parenthesized_expression "(local_28 < 1)" ( (binary_expression "local_28 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar3 = 1;\n  }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (if_statement "if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }" if (parenthesized_expression "(0 < local_1c[0])" ( (binary_expression "0 < local_1c[0]" number_literal < (subscript_expression "local_1c[0]" identifier [ number_literal ])) )) (compound_statement "{\n    iVar4 = local_1c[0];\n  }" { (expression_statement "iVar4 = local_1c[0];" (assignment_expression "iVar4 = local_1c[0]" identifier = (subscript_expression "local_1c[0]" identifier [ number_literal ])) ;) })) (expression_statement "local_30 = auStack_160 + iVar3 * -8 + -8;" (assignment_expression "local_30 = auStack_160 + iVar3 * -8 + -8" identifier = (binary_expression "auStack_160 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar3 * -8" identifier + (binary_expression "iVar3 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;" (assignment_expression "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" identifier = (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8" (binary_expression "auStack_160 + iVar4 * -8" identifier + (binary_expression "iVar4 * -8" identifier * number_literal)) + (binary_expression "iVar3 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "FUN_0031b710(auStack_160,param_1,param_2);" (call_expression "FUN_0031b710(auStack_160,param_1,param_2)" identifier (argument_list "(auStack_160,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = local_54;" (assignment_expression "uVar2 = local_54" identifier = identifier) ;) (expression_statement "pcVar1 = local_58;" (assignment_expression "pcVar1 = local_58" identifier = identifier) ;) (expression_statement "iVar3 = local_60;" (assignment_expression "iVar3 = local_60" identifier = identifier) ;) (expression_statement "auStack_160[local_60] = 0;" (assignment_expression "auStack_160[local_60] = 0" (subscript_expression "auStack_160[local_60]" identifier [ identifier ]) = number_literal) ;) (expression_statement "(*pcVar1)(auStack_160,iVar3,uVar2);" (call_expression "(*pcVar1)(auStack_160,iVar3,uVar2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(auStack_160,iVar3,uVar2)" ( identifier , identifier , identifier ))) ;) (return_statement "return local_48 == 0;" return (binary_expression "local_48 == 0" identifier == number_literal) ;) })))
(translation_unit "int cplus_demangle_print_callback\n              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)\n\n{\n  size_t sVar1;\n  demangle_callbackref p_Var2;\n  void *pvVar3;\n  int iVar4;\n  int iVar5;\n  d_print_info dpi;\n  \n  dpi.len = 0;\n  dpi.last_char = '\0';\n  dpi.templates = (d_print_template *)0x0;\n  dpi.modifiers = (d_print_mod *)0x0;\n  dpi.pack_index = 0;\n  dpi.flush_count = 0;\n  dpi.demangle_failure = 0;\n  dpi.recursion = 0;\n  dpi.is_lambda_arg = 0;\n  dpi.component_stack = (d_component_stack *)0x0;\n  dpi.saved_scopes = (d_saved_scope *)0x0;\n  dpi.next_saved_scope = 0;\n  dpi.num_saved_scopes = 0;\n  dpi.copy_templates = (d_print_template *)0x0;\n  dpi.next_copy_template = 0;\n  dpi.num_copy_templates = 0;\n  dpi.callback = callback;\n  dpi.opaque = opaque;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dpi.current_template = (demangle_component *)0x0;\n  dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  iVar5 = 1;\n  if (0 < dpi.num_copy_templates) {\n    iVar5 = dpi.num_copy_templates;\n  }\n  dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8);\n  dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8);\n  d_print_comp(&dpi,options,dc);\n  pvVar3 = dpi.opaque;\n  p_Var2 = dpi.callback;\n  sVar1 = dpi.len;\n  dpi.buf[dpi.len] = '\0';\n  (*p_Var2)(dpi.buf,sVar1,pvVar3);\n  return (uint)(dpi.demangle_failure == 0);\n}\n\n" (function_definition "int cplus_demangle_print_callback\n              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)\n\n{\n  size_t sVar1;\n  demangle_callbackref p_Var2;\n  void *pvVar3;\n  int iVar4;\n  int iVar5;\n  d_print_info dpi;\n  \n  dpi.len = 0;\n  dpi.last_char = '\0';\n  dpi.templates = (d_print_template *)0x0;\n  dpi.modifiers = (d_print_mod *)0x0;\n  dpi.pack_index = 0;\n  dpi.flush_count = 0;\n  dpi.demangle_failure = 0;\n  dpi.recursion = 0;\n  dpi.is_lambda_arg = 0;\n  dpi.component_stack = (d_component_stack *)0x0;\n  dpi.saved_scopes = (d_saved_scope *)0x0;\n  dpi.next_saved_scope = 0;\n  dpi.num_saved_scopes = 0;\n  dpi.copy_templates = (d_print_template *)0x0;\n  dpi.next_copy_template = 0;\n  dpi.num_copy_templates = 0;\n  dpi.callback = callback;\n  dpi.opaque = opaque;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dpi.current_template = (demangle_component *)0x0;\n  dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  iVar5 = 1;\n  if (0 < dpi.num_copy_templates) {\n    iVar5 = dpi.num_copy_templates;\n  }\n  dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8);\n  dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8);\n  d_print_comp(&dpi,options,dc);\n  pvVar3 = dpi.opaque;\n  p_Var2 = dpi.callback;\n  sVar1 = dpi.len;\n  dpi.buf[dpi.len] = '\0';\n  (*p_Var2)(dpi.buf,sVar1,pvVar3);\n  return (uint)(dpi.demangle_failure == 0);\n}" primitive_type (function_declarator "cplus_demangle_print_callback\n              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)" identifier (parameter_list "(int options,demangle_component *dc,demangle_callbackref callback,void *opaque)" ( (parameter_declaration "int options" primitive_type identifier) , (parameter_declaration "demangle_component *dc" type_identifier (pointer_declarator "*dc" * identifier)) , (parameter_declaration "demangle_callbackref callback" type_identifier identifier) , (parameter_declaration "void *opaque" primitive_type (pointer_declarator "*opaque" * identifier)) ))) (compound_statement "{\n  size_t sVar1;\n  demangle_callbackref p_Var2;\n  void *pvVar3;\n  int iVar4;\n  int iVar5;\n  d_print_info dpi;\n  \n  dpi.len = 0;\n  dpi.last_char = '\0';\n  dpi.templates = (d_print_template *)0x0;\n  dpi.modifiers = (d_print_mod *)0x0;\n  dpi.pack_index = 0;\n  dpi.flush_count = 0;\n  dpi.demangle_failure = 0;\n  dpi.recursion = 0;\n  dpi.is_lambda_arg = 0;\n  dpi.component_stack = (d_component_stack *)0x0;\n  dpi.saved_scopes = (d_saved_scope *)0x0;\n  dpi.next_saved_scope = 0;\n  dpi.num_saved_scopes = 0;\n  dpi.copy_templates = (d_print_template *)0x0;\n  dpi.next_copy_template = 0;\n  dpi.num_copy_templates = 0;\n  dpi.callback = callback;\n  dpi.opaque = opaque;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dpi.current_template = (demangle_component *)0x0;\n  dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  iVar5 = 1;\n  if (0 < dpi.num_copy_templates) {\n    iVar5 = dpi.num_copy_templates;\n  }\n  dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8);\n  dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8);\n  d_print_comp(&dpi,options,dc);\n  pvVar3 = dpi.opaque;\n  p_Var2 = dpi.callback;\n  sVar1 = dpi.len;\n  dpi.buf[dpi.len] = '\0';\n  (*p_Var2)(dpi.buf,sVar1,pvVar3);\n  return (uint)(dpi.demangle_failure == 0);\n}" { (declaration "size_t sVar1;" primitive_type identifier ;) (declaration "demangle_callbackref p_Var2;" type_identifier identifier ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "d_print_info dpi;" type_identifier identifier ;) (expression_statement "dpi.len = 0;" (assignment_expression "dpi.len = 0" (field_expression "dpi.len" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.last_char = '\0';" (assignment_expression "dpi.last_char = '\0'" (field_expression "dpi.last_char" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "dpi.templates = (d_print_template *)0x0;" (assignment_expression "dpi.templates = (d_print_template *)0x0" (field_expression "dpi.templates" identifier . field_identifier) = (cast_expression "(d_print_template *)0x0" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.modifiers = (d_print_mod *)0x0;" (assignment_expression "dpi.modifiers = (d_print_mod *)0x0" (field_expression "dpi.modifiers" identifier . field_identifier) = (cast_expression "(d_print_mod *)0x0" ( (type_descriptor "d_print_mod *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.pack_index = 0;" (assignment_expression "dpi.pack_index = 0" (field_expression "dpi.pack_index" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.flush_count = 0;" (assignment_expression "dpi.flush_count = 0" (field_expression "dpi.flush_count" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.demangle_failure = 0;" (assignment_expression "dpi.demangle_failure = 0" (field_expression "dpi.demangle_failure" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.recursion = 0;" (assignment_expression "dpi.recursion = 0" (field_expression "dpi.recursion" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.is_lambda_arg = 0;" (assignment_expression "dpi.is_lambda_arg = 0" (field_expression "dpi.is_lambda_arg" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.component_stack = (d_component_stack *)0x0;" (assignment_expression "dpi.component_stack = (d_component_stack *)0x0" (field_expression "dpi.component_stack" identifier . field_identifier) = (cast_expression "(d_component_stack *)0x0" ( (type_descriptor "d_component_stack *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.saved_scopes = (d_saved_scope *)0x0;" (assignment_expression "dpi.saved_scopes = (d_saved_scope *)0x0" (field_expression "dpi.saved_scopes" identifier . field_identifier) = (cast_expression "(d_saved_scope *)0x0" ( (type_descriptor "d_saved_scope *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.next_saved_scope = 0;" (assignment_expression "dpi.next_saved_scope = 0" (field_expression "dpi.next_saved_scope" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.num_saved_scopes = 0;" (assignment_expression "dpi.num_saved_scopes = 0" (field_expression "dpi.num_saved_scopes" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.copy_templates = (d_print_template *)0x0;" (assignment_expression "dpi.copy_templates = (d_print_template *)0x0" (field_expression "dpi.copy_templates" identifier . field_identifier) = (cast_expression "(d_print_template *)0x0" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.next_copy_template = 0;" (assignment_expression "dpi.next_copy_template = 0" (field_expression "dpi.next_copy_template" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.num_copy_templates = 0;" (assignment_expression "dpi.num_copy_templates = 0" (field_expression "dpi.num_copy_templates" identifier . field_identifier) = number_literal) ;) (expression_statement "dpi.callback = callback;" (assignment_expression "dpi.callback = callback" (field_expression "dpi.callback" identifier . field_identifier) = identifier) ;) (expression_statement "dpi.opaque = opaque;" (assignment_expression "dpi.opaque = opaque" (field_expression "dpi.opaque" identifier . field_identifier) = identifier) ;) (expression_statement "d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);" (call_expression "d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc)" identifier (argument_list "(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc)" ( (pointer_expression "&dpi.num_copy_templates" & (field_expression "dpi.num_copy_templates" identifier . field_identifier)) , (pointer_expression "&dpi.num_saved_scopes" & (field_expression "dpi.num_saved_scopes" identifier . field_identifier)) , identifier ))) ;) (expression_statement "dpi.current_template = (demangle_component *)0x0;" (assignment_expression "dpi.current_template = (demangle_component *)0x0" (field_expression "dpi.current_template" identifier . field_identifier) = (cast_expression "(demangle_component *)0x0" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;" (assignment_expression "dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates" (field_expression "dpi.num_copy_templates" identifier . field_identifier) = (binary_expression "dpi.num_saved_scopes * dpi.num_copy_templates" (field_expression "dpi.num_saved_scopes" identifier . field_identifier) * (field_expression "dpi.num_copy_templates" identifier . field_identifier))) ;) (expression_statement "iVar4 = dpi.num_saved_scopes;" (assignment_expression "iVar4 = dpi.num_saved_scopes" identifier = (field_expression "dpi.num_saved_scopes" identifier . field_identifier)) ;) (if_statement "if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }" if (parenthesized_expression "(dpi.num_saved_scopes < 1)" ( (binary_expression "dpi.num_saved_scopes < 1" (field_expression "dpi.num_saved_scopes" identifier . field_identifier) < number_literal) )) (compound_statement "{\n    iVar4 = 1;\n  }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) })) (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (if_statement "if (0 < dpi.num_copy_templates) {\n    iVar5 = dpi.num_copy_templates;\n  }" if (parenthesized_expression "(0 < dpi.num_copy_templates)" ( (binary_expression "0 < dpi.num_copy_templates" number_literal < (field_expression "dpi.num_copy_templates" identifier . field_identifier)) )) (compound_statement "{\n    iVar5 = dpi.num_copy_templates;\n  }" { (expression_statement "iVar5 = dpi.num_copy_templates;" (assignment_expression "iVar5 = dpi.num_copy_templates" identifier = (field_expression "dpi.num_copy_templates" identifier . field_identifier)) ;) })) (expression_statement "dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8);" (assignment_expression "dpi.saved_scopes = (d_saved_scope *)((int)&dpi + iVar4 * -8 + -8)" (field_expression "dpi.saved_scopes" identifier . field_identifier) = (cast_expression "(d_saved_scope *)((int)&dpi + iVar4 * -8 + -8)" ( (type_descriptor "d_saved_scope *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&dpi + iVar4 * -8 + -8)" ( (binary_expression "(int)&dpi + iVar4 * -8 + -8" (binary_expression "(int)&dpi + iVar4 * -8" (cast_expression "(int)&dpi" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dpi" & identifier)) + (binary_expression "iVar4 * -8" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8);" (assignment_expression "dpi.copy_templates = (d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8)" (field_expression "dpi.copy_templates" identifier . field_identifier) = (cast_expression "(d_print_template *)((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8)" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&dpi + iVar5 * -8 + iVar4 * -8 + -8)" ( (binary_expression "(int)&dpi + iVar5 * -8 + iVar4 * -8 + -8" (binary_expression "(int)&dpi + iVar5 * -8 + iVar4 * -8" (binary_expression "(int)&dpi + iVar5 * -8" (cast_expression "(int)&dpi" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&dpi" & identifier)) + (binary_expression "iVar5 * -8" identifier * number_literal)) + (binary_expression "iVar4 * -8" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "d_print_comp(&dpi,options,dc);" (call_expression "d_print_comp(&dpi,options,dc)" identifier (argument_list "(&dpi,options,dc)" ( (pointer_expression "&dpi" & identifier) , identifier , identifier ))) ;) (expression_statement "pvVar3 = dpi.opaque;" (assignment_expression "pvVar3 = dpi.opaque" identifier = (field_expression "dpi.opaque" identifier . field_identifier)) ;) (expression_statement "p_Var2 = dpi.callback;" (assignment_expression "p_Var2 = dpi.callback" identifier = (field_expression "dpi.callback" identifier . field_identifier)) ;) (expression_statement "sVar1 = dpi.len;" (assignment_expression "sVar1 = dpi.len" identifier = (field_expression "dpi.len" identifier . field_identifier)) ;) (expression_statement "dpi.buf[dpi.len] = '\0';" (assignment_expression "dpi.buf[dpi.len] = '\0'" (subscript_expression "dpi.buf[dpi.len]" (field_expression "dpi.buf" identifier . field_identifier) [ (field_expression "dpi.len" identifier . field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(*p_Var2)(dpi.buf,sVar1,pvVar3);" (call_expression "(*p_Var2)(dpi.buf,sVar1,pvVar3)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(dpi.buf,sVar1,pvVar3)" ( (field_expression "dpi.buf" identifier . field_identifier) , identifier , identifier ))) ;) (return_statement "return (uint)(dpi.demangle_failure == 0);" return (call_expression "(uint)(dpi.demangle_failure == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(dpi.demangle_failure == 0)" ( (binary_expression "dpi.demangle_failure == 0" (field_expression "dpi.demangle_failure" identifier . field_identifier) == number_literal) ))) ;) })))
(translation_unit "bool cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}\n\n" (function_definition "bool cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" primitive_type (function_declarator "cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined1 auStack_160 [256];" type_identifier (array_declarator "auStack_160 [256]" identifier [ number_literal ]) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "undefined1 local_5c;" type_identifier identifier ;) (declaration "code *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined1 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "int local_1c [3];" primitive_type (array_declarator "local_1c [3]" identifier [ number_literal ]) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = (undefined1 *)0x0;" (assignment_expression "local_30 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (undefined1 *)0x0;" (assignment_expression "local_24 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c[0] = 0;" (assignment_expression "local_1c[0] = 0" (subscript_expression "local_1c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" identifier = identifier) ;) (expression_statement "local_54 = param_4;" (assignment_expression "local_54 = param_4" identifier = identifier) ;) (expression_statement "FUN_0031a8b8(local_1c,&local_28,param_2);" (call_expression "FUN_0031a8b8(local_1c,&local_28,param_2)" identifier (argument_list "(local_1c,&local_28,param_2)" ( identifier , (pointer_expression "&local_28" & identifier) , identifier ))) ;) (expression_statement "local_1c[1] = 0;" (assignment_expression "local_1c[1] = 0" (subscript_expression "local_1c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_1c[0] = local_28 * local_1c[0];" (assignment_expression "local_1c[0] = local_28 * local_1c[0]" (subscript_expression "local_1c[0]" identifier [ number_literal ]) = (binary_expression "local_28 * local_1c[0]" identifier * (subscript_expression "local_1c[0]" identifier [ number_literal ]))) ;) (expression_statement "iVar3 = local_28;" (assignment_expression "iVar3 = local_28" identifier = identifier) ;) (if_statement "if (local_28 < 1) {\n    iVar3 = 1;\n  }" if (parenthesized_expression "(local_28 < 1)" ( (binary_expression "local_28 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar3 = 1;\n  }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (if_statement "if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }" if (parenthesized_expression "(0 < local_1c[0])" ( (binary_expression "0 < local_1c[0]" number_literal < (subscript_expression "local_1c[0]" identifier [ number_literal ])) )) (compound_statement "{\n    iVar4 = local_1c[0];\n  }" { (expression_statement "iVar4 = local_1c[0];" (assignment_expression "iVar4 = local_1c[0]" identifier = (subscript_expression "local_1c[0]" identifier [ number_literal ])) ;) })) (expression_statement "local_30 = auStack_160 + iVar3 * -8 + -8;" (assignment_expression "local_30 = auStack_160 + iVar3 * -8 + -8" identifier = (binary_expression "auStack_160 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar3 * -8" identifier + (binary_expression "iVar3 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;" (assignment_expression "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" identifier = (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8" (binary_expression "auStack_160 + iVar4 * -8" identifier + (binary_expression "iVar4 * -8" identifier * number_literal)) + (binary_expression "iVar3 * -8" identifier * number_literal)) + number_literal)) ;) (expression_statement "FUN_0031b710(auStack_160,param_1,param_2);" (call_expression "FUN_0031b710(auStack_160,param_1,param_2)" identifier (argument_list "(auStack_160,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = local_54;" (assignment_expression "uVar2 = local_54" identifier = identifier) ;) (expression_statement "pcVar1 = local_58;" (assignment_expression "pcVar1 = local_58" identifier = identifier) ;) (expression_statement "iVar3 = local_60;" (assignment_expression "iVar3 = local_60" identifier = identifier) ;) (expression_statement "auStack_160[local_60] = 0;" (assignment_expression "auStack_160[local_60] = 0" (subscript_expression "auStack_160[local_60]" identifier [ identifier ]) = number_literal) ;) (expression_statement "(*pcVar1)(auStack_160,iVar3,uVar2);" (call_expression "(*pcVar1)(auStack_160,iVar3,uVar2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(auStack_160,iVar3,uVar2)" ( identifier , identifier , identifier ))) ;) (return_statement "return local_48 == 0;" return (binary_expression "local_48 == 0" identifier == number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return (binary_expression IDENT == LIT) ;) })))
(function_definition "bool cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" (primitive_type "bool") (function_declarator "cplus_demangle_print_callback\n               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" (identifier "cplus_demangle_print_callback") (parameter_list "(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "code *param_3" (type_identifier "code") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  code *pcVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  undefined1 auStack_160 [256];\n  int local_60;\n  undefined1 local_5c;\n  code *local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  int local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined1 *local_30;\n  undefined4 local_2c;\n  int local_28;\n  undefined1 *local_24;\n  undefined4 local_20;\n  int local_1c [3];\n  \n  local_60 = 0;\n  local_5c = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_3c = 0;\n  local_38 = 0;\n  local_48 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_34 = 0;\n  local_30 = (undefined1 *)0x0;\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = (undefined1 *)0x0;\n  local_20 = 0;\n  local_1c[0] = 0;\n  local_58 = param_3;\n  local_54 = param_4;\n  FUN_0031a8b8(local_1c,&local_28,param_2);\n  local_1c[1] = 0;\n  local_1c[0] = local_28 * local_1c[0];\n  iVar3 = local_28;\n  if (local_28 < 1) {\n    iVar3 = 1;\n  }\n  iVar4 = 1;\n  if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }\n  local_30 = auStack_160 + iVar3 * -8 + -8;\n  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;\n  FUN_0031b710(auStack_160,param_1,param_2);\n  uVar2 = local_54;\n  pcVar1 = local_58;\n  iVar3 = local_60;\n  auStack_160[local_60] = 0;\n  (*pcVar1)(auStack_160,iVar3,uVar2);\n  return local_48 == 0;\n}" ({ "{") (declaration "code *pcVar1;" (type_identifier "code") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined1 auStack_160 [256];" (type_identifier "undefined1") (array_declarator "auStack_160 [256]" (identifier "auStack_160") ([ "[") (number_literal "256") (] "]")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "undefined1 local_5c;" (type_identifier "undefined1") (identifier "local_5c") (; ";")) (declaration "code *local_58;" (type_identifier "code") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined1 *local_30;" (type_identifier "undefined1") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "undefined1 *local_24;" (type_identifier "undefined1") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "int local_1c [3];" (primitive_type "int") (array_declarator "local_1c [3]" (identifier "local_1c") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" (identifier "local_5c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = (undefined1 *)0x0;" (assignment_expression "local_30 = (undefined1 *)0x0" (identifier "local_30") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = (undefined1 *)0x0;" (assignment_expression "local_24 = (undefined1 *)0x0" (identifier "local_24") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c[0] = 0;" (assignment_expression "local_1c[0] = 0" (subscript_expression "local_1c[0]" (identifier "local_1c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = param_3;" (assignment_expression "local_58 = param_3" (identifier "local_58") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_54 = param_4;" (assignment_expression "local_54 = param_4" (identifier "local_54") (= "=") (identifier "param_4")) (; ";")) (expression_statement "FUN_0031a8b8(local_1c,&local_28,param_2);" (call_expression "FUN_0031a8b8(local_1c,&local_28,param_2)" (identifier "FUN_0031a8b8") (argument_list "(local_1c,&local_28,param_2)" (( "(") (identifier "local_1c") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "local_1c[1] = 0;" (assignment_expression "local_1c[1] = 0" (subscript_expression "local_1c[1]" (identifier "local_1c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c[0] = local_28 * local_1c[0];" (assignment_expression "local_1c[0] = local_28 * local_1c[0]" (subscript_expression "local_1c[0]" (identifier "local_1c") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "local_28 * local_1c[0]" (identifier "local_28") (* "*") (subscript_expression "local_1c[0]" (identifier "local_1c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "iVar3 = local_28;" (assignment_expression "iVar3 = local_28" (identifier "iVar3") (= "=") (identifier "local_28")) (; ";")) (if_statement "if (local_28 < 1) {\n    iVar3 = 1;\n  }" (if "if") (parenthesized_expression "(local_28 < 1)" (( "(") (binary_expression "local_28 < 1" (identifier "local_28") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    iVar3 = 1;\n  }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (0 < local_1c[0]) {\n    iVar4 = local_1c[0];\n  }" (if "if") (parenthesized_expression "(0 < local_1c[0])" (( "(") (binary_expression "0 < local_1c[0]" (number_literal "0") (< "<") (subscript_expression "local_1c[0]" (identifier "local_1c") ([ "[") (number_literal "0") (] "]"))) () ")")) (compound_statement "{\n    iVar4 = local_1c[0];\n  }" ({ "{") (expression_statement "iVar4 = local_1c[0];" (assignment_expression "iVar4 = local_1c[0]" (identifier "iVar4") (= "=") (subscript_expression "local_1c[0]" (identifier "local_1c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_30 = auStack_160 + iVar3 * -8 + -8;" (assignment_expression "local_30 = auStack_160 + iVar3 * -8 + -8" (identifier "local_30") (= "=") (binary_expression "auStack_160 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar3 * -8" (identifier "auStack_160") (+ "+") (binary_expression "iVar3 * -8" (identifier "iVar3") (* "*") (number_literal "-8"))) (+ "+") (number_literal "-8"))) (; ";")) (expression_statement "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;" (assignment_expression "local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" (identifier "local_24") (= "=") (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8 + -8" (binary_expression "auStack_160 + iVar4 * -8 + iVar3 * -8" (binary_expression "auStack_160 + iVar4 * -8" (identifier "auStack_160") (+ "+") (binary_expression "iVar4 * -8" (identifier "iVar4") (* "*") (number_literal "-8"))) (+ "+") (binary_expression "iVar3 * -8" (identifier "iVar3") (* "*") (number_literal "-8"))) (+ "+") (number_literal "-8"))) (; ";")) (expression_statement "FUN_0031b710(auStack_160,param_1,param_2);" (call_expression "FUN_0031b710(auStack_160,param_1,param_2)" (identifier "FUN_0031b710") (argument_list "(auStack_160,param_1,param_2)" (( "(") (identifier "auStack_160") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "uVar2 = local_54;" (assignment_expression "uVar2 = local_54" (identifier "uVar2") (= "=") (identifier "local_54")) (; ";")) (expression_statement "pcVar1 = local_58;" (assignment_expression "pcVar1 = local_58" (identifier "pcVar1") (= "=") (identifier "local_58")) (; ";")) (expression_statement "iVar3 = local_60;" (assignment_expression "iVar3 = local_60" (identifier "iVar3") (= "=") (identifier "local_60")) (; ";")) (expression_statement "auStack_160[local_60] = 0;" (assignment_expression "auStack_160[local_60] = 0" (subscript_expression "auStack_160[local_60]" (identifier "auStack_160") ([ "[") (identifier "local_60") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar1)(auStack_160,iVar3,uVar2);" (call_expression "(*pcVar1)(auStack_160,iVar3,uVar2)" (parenthesized_expression "(*pcVar1)" (( "(") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) () ")")) (argument_list "(auStack_160,iVar3,uVar2)" (( "(") (identifier "auStack_160") (, ",") (identifier "iVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (return_statement "return local_48 == 0;" (return "return") (binary_expression "local_48 == 0" (identifier "local_48") (== "==") (number_literal "0")) (; ";")) (} "}")))

int function_1
              (int options,type_1 *dc,type_2 callback,void *opaque)

{
  size_t sVar1;
  type_2 p_Var2;
  void *pvVar3;
  int var_2;
  int var_3;
  type_3 dpi;
  
  dpi.len = 0;
  dpi.last_char = '\0';
  dpi.templates = (type_4 *)0x0;
  dpi.modifiers = (type_5 *)0x0;
  dpi.pack_index = 0;
  dpi.flush_count = 0;
  dpi.demangle_failure = 0;
  dpi.recursion = 0;
  dpi.is_lambda_arg = 0;
  dpi.component_stack = (type_6 *)0x0;
  dpi.saved_scopes = (type_7 *)0x0;
  dpi.next_saved_scope = 0;
  dpi.num_saved_scopes = 0;
  dpi.copy_templates = (type_4 *)0x0;
  dpi.next_copy_template = 0;
  dpi.num_copy_templates = 0;
  dpi.callback = callback;
  dpi.opaque = opaque;
  var_1(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);
  dpi.current_template = (type_1 *)0x0;
  dpi.num_copy_templates = dpi.num_saved_scopes * dpi.num_copy_templates;
  var_2 = dpi.num_saved_scopes;
  if (dpi.num_saved_scopes < 1) {
    var_2 = 1;
  }
  var_3 = 1;
  if (0 < dpi.num_copy_templates) {
    var_3 = dpi.num_copy_templates;
  }
  dpi.saved_scopes = (type_7 *)((int)&dpi + var_2 * -8 + -8);
  dpi.copy_templates = (type_4 *)((int)&dpi + var_3 * -8 + var_2 * -8 + -8);
  var_4(&dpi,options,dc);
  pvVar3 = dpi.opaque;
  p_Var2 = dpi.callback;
  sVar1 = dpi.len;
  dpi.buf[dpi.len] = '\0';
  (*p_Var2)(dpi.buf,sVar1,pvVar3);
  return (uint)(dpi.demangle_failure == 0);
}


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

bool MASKED
               (undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)

{
  code *pcVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  undefined1 auStack_160 [256];
  int local_60;
  undefined1 local_5c;
  code *local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  int local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined1 *local_30;
  undefined4 local_2c;
  int local_28;
  undefined1 *local_24;
  undefined4 local_20;
  int local_1c [3];
  
  local_60 = 0;
  local_5c = 0;
  local_50 = 0;
  local_4c = 0;
  local_3c = 0;
  local_38 = 0;
  local_48 = 0;
  local_44 = 0;
  local_40 = 0;
  local_34 = 0;
  local_30 = (undefined1 *)0x0;
  local_2c = 0;
  local_28 = 0;
  local_24 = (undefined1 *)0x0;
  local_20 = 0;
  local_1c[0] = 0;
  local_58 = param_3;
  local_54 = param_4;
  FUN_0031a8b8(local_1c,&local_28,param_2);
  local_1c[1] = 0;
  local_1c[0] = local_28 * local_1c[0];
  iVar3 = local_28;
  if (local_28 < 1) {
    iVar3 = 1;
  }
  iVar4 = 1;
  if (0 < local_1c[0]) {
    iVar4 = local_1c[0];
  }
  local_30 = auStack_160 + iVar3 * -8 + -8;
  local_24 = auStack_160 + iVar4 * -8 + iVar3 * -8 + -8;
  FUN_0031b710(auStack_160,param_1,param_2);
  uVar2 = local_54;
  pcVar1 = local_58;
  iVar3 = local_60;
  auStack_160[local_60] = 0;
  (*pcVar1)(auStack_160,iVar3,uVar2);
  return local_48 == 0;
}

