
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

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

{
  d_print_template *pdVar1;
  size_t sVar2;
  demangle_callbackref p_Var3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  d_print_template *pdStack_180;
  d_saved_scope dStack_17c;
  d_saved_scope dStack_174;
  d_print_info dpi;
  
  dpi.last_char = '\0';
  dpi.len = 0;
  dpi.callback = callback;
  dpi.templates = (d_print_template *)0x0;
  dpi.opaque = opaque;
  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;
  pdStack_180 = (d_print_template *)0x1a3d03;
  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);
  dStack_174.templates = (d_print_template *)&dStack_17c;
  dpi.current_template = (demangle_component *)0x0;
  iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes;
  iVar4 = dpi.num_saved_scopes;
  if (dpi.num_saved_scopes < 1) {
    iVar4 = 1;
  }
  dpi.num_copy_templates = iVar7;
  uVar5 = (iVar4 * 8 + 0xfU) / 0x10;
  if (iVar7 < 1) {
    iVar7 = 1;
  }
  dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1;
  uVar6 = (iVar7 * 8 + 0xfU) / 0x10;
  dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1);
  (&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59;
  d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,
               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,
               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container);
  sVar2 = dpi.len;
  pdVar1 = dStack_174.templates;
  dpi.buf[dpi.len] = '\0';
  dStack_174.templates[-1].next = (d_print_template *)dpi.opaque;
  pdVar1[-2].template_decl = (demangle_component *)sVar2;
  pdVar1[-2].next = (d_print_template *)&dpi;
  p_Var3 = dpi.callback;
  pdVar1[-3].template_decl = (demangle_component *)0x1a3d75;
  (*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);
  return (uint)(dpi.demangle_failure == 0);
}



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

{
  undefined1 *puVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  undefined4 uStack_180;
  undefined1 auStack_17c [12];
  undefined1 *local_170;
  undefined1 local_168 [256];
  int local_68;
  undefined1 local_64;
  code *local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  int local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined1 *local_38;
  undefined4 local_34;
  int local_30;
  undefined1 *local_2c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  
  local_64 = 0;
  local_68 = 0;
  local_60 = param_3;
  local_58 = 0;
  local_5c = param_4;
  local_54 = 0;
  local_44 = 0;
  local_40 = 0;
  local_50 = 0;
  local_4c = 0;
  local_48 = 0;
  local_3c = 0;
  local_38 = (undefined1 *)0x0;
  local_34 = 0;
  local_30 = 0;
  local_2c = (undefined1 *)0x0;
  local_28 = 0;
  local_24 = 0;
  uStack_180 = 0x1a3d03;
  FUN_00199c80();
  local_20 = 0;
  local_24 = local_24 * local_30;
  iVar3 = local_30;
  if (local_30 < 1) {
    iVar3 = 1;
  }
  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;
  local_38 = auStack_17c + iVar3;
  iVar4 = local_24;
  if (local_24 < 1) {
    iVar4 = 1;
  }
  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;
  local_2c = auStack_17c + iVar4 + iVar3;
  local_170 = auStack_17c;
  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;
  FUN_0019a610();
  iVar3 = local_68;
  puVar1 = local_170;
  local_168[local_68] = 0;
  *(undefined4 *)(local_170 + -8) = local_5c;
  *(int *)(puVar1 + -0xc) = iVar3;
  *(undefined1 **)(puVar1 + -0x10) = local_168;
  pcVar2 = local_60;
  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;
  (*pcVar2)();
  return local_50 == 0;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
MOV EDI,0x10
PUSH ESI
LEA EDX,[EBP + -0x2c]
MOV ESI,0x1
PUSH EBX
LEA EBX,[EBP + 0xfffffe9c]
SUB ESP,0x16c
MOV EAX,dword ptr [EBP + 0x10]
MOV ECX,dword ptr [EBP + 0xc]
MOV byte ptr [EBP + -0x60],0x0
MOV dword ptr [EBP + -0x64],0x0
MOV dword ptr [EBP + -0x5c],EAX
MOV EAX,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + -0x54],0x0
MOV dword ptr [EBP + -0x58],EAX
LEA EAX,[EBP + -0x20]
MOV dword ptr [EBP + -0x50],0x0
MOV dword ptr [EBP + -0x40],0x0
MOV dword ptr [EBP + -0x3c],0x0
MOV dword ptr [EBP + -0x4c],0x0
MOV dword ptr [EBP + -0x48],0x0
MOV dword ptr [EBP + -0x44],0x0
MOV dword ptr [EBP + -0x38],0x0
MOV dword ptr [EBP + -0x34],0x0
MOV dword ptr [EBP + -0x30],0x0
MOV dword ptr [EBP + -0x2c],0x0
MOV dword ptr [EBP + -0x28],0x0
MOV dword ptr [EBP + -0x24],0x0
MOV dword ptr [EBP + -0x20],0x0
CALL 0x00199c80
MOV EAX,dword ptr [EBP + -0x2c]
MOV ECX,dword ptr [EBP + -0x20]
MOV dword ptr [EBP + 0xfffffe94],ESP
MOV dword ptr [EBP + -0x1c],0x0
IMUL ECX,EAX
TEST EAX,EAX
CMOVLE EAX,ESI
XOR EDX,EDX
LEA EAX,[EAX*0x8 + 0xf]
MOV dword ptr [EBP + -0x20],ECX
DIV EDI
SHL EAX,0x4
SUB ESP,EAX
TEST ECX,ECX
CMOVLE ECX,ESI
XOR EDX,EDX
MOV dword ptr [EBP + -0x34],ESP
LEA EAX,[ECX*0x8 + 0xf]
MOV ECX,dword ptr [EBP + 0xc]
DIV EDI
MOV EDX,dword ptr [EBP + 0x8]
SHL EAX,0x4
SUB ESP,EAX
MOV EAX,EBX
MOV dword ptr [EBP + -0x28],ESP
CALL 0x0019a610
MOV ESP,dword ptr [EBP + 0xfffffe94]
MOV EAX,dword ptr [EBP + -0x64]
SUB ESP,0x4
MOV byte ptr [EBP + EAX*0x1 + 0xfffffe9c],0x0
PUSH dword ptr [EBP + -0x58]
PUSH EAX
PUSH EBX
CALL dword ptr [EBP + -0x5c]
MOV EDX,dword ptr [EBP + -0x4c]
XOR EAX,EAX
ADD ESP,0x10
TEST EDX,EDX
SETZ AL
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "bool FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}\n\n" (function_definition "bool FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" primitive_type (function_declarator "FUN_001a3c60(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  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uStack_180;" type_identifier identifier ;) (declaration "undefined1 auStack_17c [12];" type_identifier (array_declarator "auStack_17c [12]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_170;" type_identifier (pointer_declarator "*local_170" * identifier) ;) (declaration "undefined1 local_168 [256];" type_identifier (array_declarator "local_168 [256]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined1 local_64;" type_identifier identifier ;) (declaration "code *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" identifier = identifier) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 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_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_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = (undefined1 *)0x0;" (assignment_expression "local_2c = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "uStack_180 = 0x1a3d03;" (assignment_expression "uStack_180 = 0x1a3d03" identifier = number_literal) ;) (expression_statement "FUN_00199c80();" (call_expression "FUN_00199c80()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = local_24 * local_30;" (assignment_expression "local_24 = local_24 * local_30" identifier = (binary_expression "local_24 * local_30" identifier * identifier)) ;) (expression_statement "iVar3 = local_30;" (assignment_expression "iVar3 = local_30" identifier = identifier) ;) (if_statement "if (local_30 < 1) {\n    iVar3 = 1;\n  }" if (parenthesized_expression "(local_30 < 1)" ( (binary_expression "local_30 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar3 = 1;\n  }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10" identifier = (binary_expression "((iVar3 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar3 * 8 + 0xfU) / 0x10)" ( (binary_expression "(iVar3 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar3 * 8 + 0xfU)" ( (binary_expression "iVar3 * 8 + 0xfU" (binary_expression "iVar3 * 8" identifier * number_literal) + number_literal) )) / number_literal) )) * number_literal)) ;) (expression_statement "local_38 = auStack_17c + iVar3;" (assignment_expression "local_38 = auStack_17c + iVar3" identifier = (binary_expression "auStack_17c + iVar3" identifier + identifier)) ;) (expression_statement "iVar4 = local_24;" (assignment_expression "iVar4 = local_24" identifier = identifier) ;) (if_statement "if (local_24 < 1) {\n    iVar4 = 1;\n  }" if (parenthesized_expression "(local_24 < 1)" ( (binary_expression "local_24 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar4 = 1;\n  }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) })) (expression_statement "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10" identifier = (binary_expression "((iVar4 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar4 * 8 + 0xfU) / 0x10)" ( (binary_expression "(iVar4 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar4 * 8 + 0xfU)" ( (binary_expression "iVar4 * 8 + 0xfU" (binary_expression "iVar4 * 8" identifier * number_literal) + number_literal) )) / number_literal) )) * number_literal)) ;) (expression_statement "local_2c = auStack_17c + iVar4 + iVar3;" (assignment_expression "local_2c = auStack_17c + iVar4 + iVar3" identifier = (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" identifier + identifier) + identifier)) ;) (expression_statement "local_170 = auStack_17c;" (assignment_expression "local_170 = auStack_17c" identifier = identifier) ;) (expression_statement "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;" (assignment_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59" (pointer_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" * (cast_expression "(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_17c + iVar4 + iVar3 + -4)" ( (binary_expression "auStack_17c + iVar4 + iVar3 + -4" (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" identifier + identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0019a610();" (call_expression "FUN_0019a610()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = local_68;" (assignment_expression "iVar3 = local_68" identifier = identifier) ;) (expression_statement "puVar1 = local_170;" (assignment_expression "puVar1 = local_170" identifier = identifier) ;) (expression_statement "local_168[local_68] = 0;" (assignment_expression "local_168[local_68] = 0" (subscript_expression "local_168[local_68]" identifier [ identifier ]) = number_literal) ;) (expression_statement "*(undefined4 *)(local_170 + -8) = local_5c;" (assignment_expression "*(undefined4 *)(local_170 + -8) = local_5c" (pointer_expression "*(undefined4 *)(local_170 + -8)" * (cast_expression "(undefined4 *)(local_170 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_170 + -8)" ( (binary_expression "local_170 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar1 + -0xc) = iVar3;" (assignment_expression "*(int *)(puVar1 + -0xc) = iVar3" (pointer_expression "*(int *)(puVar1 + -0xc)" * (cast_expression "(int *)(puVar1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0xc)" ( (binary_expression "puVar1 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar1 + -0x10) = local_168;" (assignment_expression "*(undefined1 **)(puVar1 + -0x10) = local_168" (pointer_expression "*(undefined1 **)(puVar1 + -0x10)" * (cast_expression "(undefined1 **)(puVar1 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x10)" ( (binary_expression "puVar1 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = local_60;" (assignment_expression "pcVar2 = local_60" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;" (assignment_expression "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75" (pointer_expression "*(undefined4 *)(puVar1 + -0x14)" * (cast_expression "(undefined4 *)(puVar1 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x14)" ( (binary_expression "puVar1 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (return_statement "return local_50 == 0;" return (binary_expression "local_50 == 0" identifier == number_literal) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Unknown calling convention */\n\nint cplus_demangle_print_callback\n              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)\n\n{\n  d_print_template *pdVar1;\n  size_t sVar2;\n  demangle_callbackref p_Var3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  d_print_template *pdStack_180;\n  d_saved_scope dStack_17c;\n  d_saved_scope dStack_174;\n  d_print_info dpi;\n  \n  dpi.last_char = '\0';\n  dpi.len = 0;\n  dpi.callback = callback;\n  dpi.templates = (d_print_template *)0x0;\n  dpi.opaque = opaque;\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  pdStack_180 = (d_print_template *)0x1a3d03;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dStack_174.templates = (d_print_template *)&dStack_17c;\n  dpi.current_template = (demangle_component *)0x0;\n  iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  dpi.num_copy_templates = iVar7;\n  uVar5 = (iVar4 * 8 + 0xfU) / 0x10;\n  if (iVar7 < 1) {\n    iVar7 = 1;\n  }\n  dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1;\n  uVar6 = (iVar7 * 8 + 0xfU) / 0x10;\n  dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1);\n  (&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59;\n  d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container);\n  sVar2 = dpi.len;\n  pdVar1 = dStack_174.templates;\n  dpi.buf[dpi.len] = '\0';\n  dStack_174.templates[-1].next = (d_print_template *)dpi.opaque;\n  pdVar1[-2].template_decl = (demangle_component *)sVar2;\n  pdVar1[-2].next = (d_print_template *)&dpi;\n  p_Var3 = dpi.callback;\n  pdVar1[-3].template_decl = (demangle_component *)0x1a3d75;\n  (*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);\n  return (uint)(dpi.demangle_failure == 0);\n}\n\n" comment comment (function_definition "int cplus_demangle_print_callback\n              (int options,demangle_component *dc,demangle_callbackref callback,void *opaque)\n\n{\n  d_print_template *pdVar1;\n  size_t sVar2;\n  demangle_callbackref p_Var3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  d_print_template *pdStack_180;\n  d_saved_scope dStack_17c;\n  d_saved_scope dStack_174;\n  d_print_info dpi;\n  \n  dpi.last_char = '\0';\n  dpi.len = 0;\n  dpi.callback = callback;\n  dpi.templates = (d_print_template *)0x0;\n  dpi.opaque = opaque;\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  pdStack_180 = (d_print_template *)0x1a3d03;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dStack_174.templates = (d_print_template *)&dStack_17c;\n  dpi.current_template = (demangle_component *)0x0;\n  iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  dpi.num_copy_templates = iVar7;\n  uVar5 = (iVar4 * 8 + 0xfU) / 0x10;\n  if (iVar7 < 1) {\n    iVar7 = 1;\n  }\n  dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1;\n  uVar6 = (iVar7 * 8 + 0xfU) / 0x10;\n  dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1);\n  (&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59;\n  d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container);\n  sVar2 = dpi.len;\n  pdVar1 = dStack_174.templates;\n  dpi.buf[dpi.len] = '\0';\n  dStack_174.templates[-1].next = (d_print_template *)dpi.opaque;\n  pdVar1[-2].template_decl = (demangle_component *)sVar2;\n  pdVar1[-2].next = (d_print_template *)&dpi;\n  p_Var3 = dpi.callback;\n  pdVar1[-3].template_decl = (demangle_component *)0x1a3d75;\n  (*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);\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  d_print_template *pdVar1;\n  size_t sVar2;\n  demangle_callbackref p_Var3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  d_print_template *pdStack_180;\n  d_saved_scope dStack_17c;\n  d_saved_scope dStack_174;\n  d_print_info dpi;\n  \n  dpi.last_char = '\0';\n  dpi.len = 0;\n  dpi.callback = callback;\n  dpi.templates = (d_print_template *)0x0;\n  dpi.opaque = opaque;\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  pdStack_180 = (d_print_template *)0x1a3d03;\n  d_count_templates_scopes(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);\n  dStack_174.templates = (d_print_template *)&dStack_17c;\n  dpi.current_template = (demangle_component *)0x0;\n  iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes;\n  iVar4 = dpi.num_saved_scopes;\n  if (dpi.num_saved_scopes < 1) {\n    iVar4 = 1;\n  }\n  dpi.num_copy_templates = iVar7;\n  uVar5 = (iVar4 * 8 + 0xfU) / 0x10;\n  if (iVar7 < 1) {\n    iVar7 = 1;\n  }\n  dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1;\n  uVar6 = (iVar7 * 8 + 0xfU) / 0x10;\n  dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1);\n  (&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59;\n  d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container);\n  sVar2 = dpi.len;\n  pdVar1 = dStack_174.templates;\n  dpi.buf[dpi.len] = '\0';\n  dStack_174.templates[-1].next = (d_print_template *)dpi.opaque;\n  pdVar1[-2].template_decl = (demangle_component *)sVar2;\n  pdVar1[-2].next = (d_print_template *)&dpi;\n  p_Var3 = dpi.callback;\n  pdVar1[-3].template_decl = (demangle_component *)0x1a3d75;\n  (*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);\n  return (uint)(dpi.demangle_failure == 0);\n}" { (declaration "d_print_template *pdVar1;" type_identifier (pointer_declarator "*pdVar1" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "demangle_callbackref p_Var3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "d_print_template *pdStack_180;" type_identifier (pointer_declarator "*pdStack_180" * identifier) ;) (declaration "d_saved_scope dStack_17c;" type_identifier identifier ;) (declaration "d_saved_scope dStack_174;" type_identifier identifier ;) (declaration "d_print_info dpi;" type_identifier identifier ;) (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.len = 0;" (assignment_expression "dpi.len = 0" (field_expression "dpi.len" 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.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.opaque = opaque;" (assignment_expression "dpi.opaque = opaque" (field_expression "dpi.opaque" identifier . field_identifier) = identifier) ;) (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 "pdStack_180 = (d_print_template *)0x1a3d03;" (assignment_expression "pdStack_180 = (d_print_template *)0x1a3d03" identifier = (cast_expression "(d_print_template *)0x1a3d03" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (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 "dStack_174.templates = (d_print_template *)&dStack_17c;" (assignment_expression "dStack_174.templates = (d_print_template *)&dStack_17c" (field_expression "dStack_174.templates" identifier . field_identifier) = (cast_expression "(d_print_template *)&dStack_17c" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dStack_17c" & 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 "iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes;" (assignment_expression "iVar7 = dpi.num_copy_templates * dpi.num_saved_scopes" identifier = (binary_expression "dpi.num_copy_templates * dpi.num_saved_scopes" (field_expression "dpi.num_copy_templates" identifier . field_identifier) * (field_expression "dpi.num_saved_scopes" 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 "dpi.num_copy_templates = iVar7;" (assignment_expression "dpi.num_copy_templates = iVar7" (field_expression "dpi.num_copy_templates" identifier . field_identifier) = identifier) ;) (expression_statement "uVar5 = (iVar4 * 8 + 0xfU) / 0x10;" (assignment_expression "uVar5 = (iVar4 * 8 + 0xfU) / 0x10" identifier = (binary_expression "(iVar4 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar4 * 8 + 0xfU)" ( (binary_expression "iVar4 * 8 + 0xfU" (binary_expression "iVar4 * 8" identifier * number_literal) + number_literal) )) / number_literal)) ;) (if_statement "if (iVar7 < 1) {\n    iVar7 = 1;\n  }" if (parenthesized_expression "(iVar7 < 1)" ( (binary_expression "iVar7 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar7 = 1;\n  }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) (expression_statement "dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1;" (assignment_expression "dpi.saved_scopes = &dStack_174 + uVar5 * -2 + -1" (field_expression "dpi.saved_scopes" identifier . field_identifier) = (binary_expression "&dStack_174 + uVar5 * -2 + -1" (binary_expression "&dStack_174 + uVar5 * -2" (pointer_expression "&dStack_174" & identifier) + (binary_expression "uVar5 * -2" identifier * number_literal)) + number_literal)) ;) (expression_statement "uVar6 = (iVar7 * 8 + 0xfU) / 0x10;" (assignment_expression "uVar6 = (iVar7 * 8 + 0xfU) / 0x10" identifier = (binary_expression "(iVar7 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar7 * 8 + 0xfU)" ( (binary_expression "iVar7 * 8 + 0xfU" (binary_expression "iVar7 * 8" identifier * number_literal) + number_literal) )) / number_literal)) ;) (expression_statement "dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1);" (assignment_expression "dpi.copy_templates = (d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1)" (field_expression "dpi.copy_templates" identifier . field_identifier) = (cast_expression "(d_print_template *)(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1)" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1)" ( (binary_expression "&dStack_174 + uVar6 * -2 + uVar5 * -2 + -1" (binary_expression "&dStack_174 + uVar6 * -2 + uVar5 * -2" (binary_expression "&dStack_174 + uVar6 * -2" (pointer_expression "&dStack_174" & identifier) + (binary_expression "uVar6 * -2" identifier * number_literal)) + (binary_expression "uVar5 * -2" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "(&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59;" (assignment_expression "(&pdStack_180)[uVar5 * -4 + uVar6 * -4] = (d_print_template *)0x1a3d59" (subscript_expression "(&pdStack_180)[uVar5 * -4 + uVar6 * -4]" (parenthesized_expression "(&pdStack_180)" ( (pointer_expression "&pdStack_180" & identifier) )) [ (binary_expression "uVar5 * -4 + uVar6 * -4" (binary_expression "uVar5 * -4" identifier * number_literal) + (binary_expression "uVar6 * -4" identifier * number_literal)) ]) = (cast_expression "(d_print_template *)0x1a3d59" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container);" (call_expression "d_print_comp((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container)" identifier (argument_list "((d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container,\n               (int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates,\n               (&dStack_174)[uVar6 * -2 + uVar5 * -2].container)" ( (cast_expression "(d_print_info *)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container" ( (type_descriptor "d_print_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].container" (subscript_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1]" (parenthesized_expression "(&dStack_174)" ( (pointer_expression "&dStack_174" & identifier) )) [ (binary_expression "uVar6 * -2 + uVar5 * -2 + -1" (binary_expression "uVar6 * -2 + uVar5 * -2" (binary_expression "uVar6 * -2" identifier * number_literal) + (binary_expression "uVar5 * -2" identifier * number_literal)) + number_literal) ]) . field_identifier)) , (cast_expression "(int)(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates" ( (type_descriptor "int" primitive_type) ) (field_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1].templates" (subscript_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2 + -1]" (parenthesized_expression "(&dStack_174)" ( (pointer_expression "&dStack_174" & identifier) )) [ (binary_expression "uVar6 * -2 + uVar5 * -2 + -1" (binary_expression "uVar6 * -2 + uVar5 * -2" (binary_expression "uVar6 * -2" identifier * number_literal) + (binary_expression "uVar5 * -2" identifier * number_literal)) + number_literal) ]) . field_identifier)) , (field_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2].container" (subscript_expression "(&dStack_174)[uVar6 * -2 + uVar5 * -2]" (parenthesized_expression "(&dStack_174)" ( (pointer_expression "&dStack_174" & identifier) )) [ (binary_expression "uVar6 * -2 + uVar5 * -2" (binary_expression "uVar6 * -2" identifier * number_literal) + (binary_expression "uVar5 * -2" identifier * number_literal)) ]) . field_identifier) ))) ;) (expression_statement "sVar2 = dpi.len;" (assignment_expression "sVar2 = dpi.len" identifier = (field_expression "dpi.len" identifier . field_identifier)) ;) (expression_statement "pdVar1 = dStack_174.templates;" (assignment_expression "pdVar1 = dStack_174.templates" identifier = (field_expression "dStack_174.templates" 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 "dStack_174.templates[-1].next = (d_print_template *)dpi.opaque;" (assignment_expression "dStack_174.templates[-1].next = (d_print_template *)dpi.opaque" (field_expression "dStack_174.templates[-1].next" (subscript_expression "dStack_174.templates[-1]" (field_expression "dStack_174.templates" identifier . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(d_print_template *)dpi.opaque" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "dpi.opaque" identifier . field_identifier))) ;) (expression_statement "pdVar1[-2].template_decl = (demangle_component *)sVar2;" (assignment_expression "pdVar1[-2].template_decl = (demangle_component *)sVar2" (field_expression "pdVar1[-2].template_decl" (subscript_expression "pdVar1[-2]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(demangle_component *)sVar2" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pdVar1[-2].next = (d_print_template *)&dpi;" (assignment_expression "pdVar1[-2].next = (d_print_template *)&dpi" (field_expression "pdVar1[-2].next" (subscript_expression "pdVar1[-2]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(d_print_template *)&dpi" ( (type_descriptor "d_print_template *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dpi" & identifier))) ;) (expression_statement "p_Var3 = dpi.callback;" (assignment_expression "p_Var3 = dpi.callback" identifier = (field_expression "dpi.callback" identifier . field_identifier)) ;) (expression_statement "pdVar1[-3].template_decl = (demangle_component *)0x1a3d75;" (assignment_expression "pdVar1[-3].template_decl = (demangle_component *)0x1a3d75" (field_expression "pdVar1[-3].template_decl" (subscript_expression "pdVar1[-3]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(demangle_component *)0x1a3d75" ( (type_descriptor "demangle_component *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);" (call_expression "(*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next)" (parenthesized_expression "(*p_Var3)" ( (pointer_expression "*p_Var3" * identifier) )) (argument_list "((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next)" ( (cast_expression "(char *)pdVar1[-2].next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "pdVar1[-2].next" (subscript_expression "pdVar1[-2]" identifier [ number_literal ]) . field_identifier)) , (cast_expression "(size_t)pdVar1[-2].template_decl" ( (type_descriptor "size_t" primitive_type) ) (field_expression "pdVar1[-2].template_decl" (subscript_expression "pdVar1[-2]" identifier [ number_literal ]) . field_identifier)) , (field_expression "pdVar1[-1].next" (subscript_expression "pdVar1[-1]" identifier [ number_literal ]) . field_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 FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}\n\n" (function_definition "bool FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" primitive_type (function_declarator "FUN_001a3c60(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  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uStack_180;" type_identifier identifier ;) (declaration "undefined1 auStack_17c [12];" type_identifier (array_declarator "auStack_17c [12]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_170;" type_identifier (pointer_declarator "*local_170" * identifier) ;) (declaration "undefined1 local_168 [256];" type_identifier (array_declarator "local_168 [256]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined1 local_64;" type_identifier identifier ;) (declaration "code *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined1 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" identifier = identifier) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 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_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_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = (undefined1 *)0x0;" (assignment_expression "local_2c = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "uStack_180 = 0x1a3d03;" (assignment_expression "uStack_180 = 0x1a3d03" identifier = number_literal) ;) (expression_statement "FUN_00199c80();" (call_expression "FUN_00199c80()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = local_24 * local_30;" (assignment_expression "local_24 = local_24 * local_30" identifier = (binary_expression "local_24 * local_30" identifier * identifier)) ;) (expression_statement "iVar3 = local_30;" (assignment_expression "iVar3 = local_30" identifier = identifier) ;) (if_statement "if (local_30 < 1) {\n    iVar3 = 1;\n  }" if (parenthesized_expression "(local_30 < 1)" ( (binary_expression "local_30 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar3 = 1;\n  }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (expression_statement "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10" identifier = (binary_expression "((iVar3 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar3 * 8 + 0xfU) / 0x10)" ( (binary_expression "(iVar3 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar3 * 8 + 0xfU)" ( (binary_expression "iVar3 * 8 + 0xfU" (binary_expression "iVar3 * 8" identifier * number_literal) + number_literal) )) / number_literal) )) * number_literal)) ;) (expression_statement "local_38 = auStack_17c + iVar3;" (assignment_expression "local_38 = auStack_17c + iVar3" identifier = (binary_expression "auStack_17c + iVar3" identifier + identifier)) ;) (expression_statement "iVar4 = local_24;" (assignment_expression "iVar4 = local_24" identifier = identifier) ;) (if_statement "if (local_24 < 1) {\n    iVar4 = 1;\n  }" if (parenthesized_expression "(local_24 < 1)" ( (binary_expression "local_24 < 1" identifier < number_literal) )) (compound_statement "{\n    iVar4 = 1;\n  }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) })) (expression_statement "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10" identifier = (binary_expression "((iVar4 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar4 * 8 + 0xfU) / 0x10)" ( (binary_expression "(iVar4 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar4 * 8 + 0xfU)" ( (binary_expression "iVar4 * 8 + 0xfU" (binary_expression "iVar4 * 8" identifier * number_literal) + number_literal) )) / number_literal) )) * number_literal)) ;) (expression_statement "local_2c = auStack_17c + iVar4 + iVar3;" (assignment_expression "local_2c = auStack_17c + iVar4 + iVar3" identifier = (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" identifier + identifier) + identifier)) ;) (expression_statement "local_170 = auStack_17c;" (assignment_expression "local_170 = auStack_17c" identifier = identifier) ;) (expression_statement "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;" (assignment_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59" (pointer_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" * (cast_expression "(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_17c + iVar4 + iVar3 + -4)" ( (binary_expression "auStack_17c + iVar4 + iVar3 + -4" (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" identifier + identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0019a610();" (call_expression "FUN_0019a610()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = local_68;" (assignment_expression "iVar3 = local_68" identifier = identifier) ;) (expression_statement "puVar1 = local_170;" (assignment_expression "puVar1 = local_170" identifier = identifier) ;) (expression_statement "local_168[local_68] = 0;" (assignment_expression "local_168[local_68] = 0" (subscript_expression "local_168[local_68]" identifier [ identifier ]) = number_literal) ;) (expression_statement "*(undefined4 *)(local_170 + -8) = local_5c;" (assignment_expression "*(undefined4 *)(local_170 + -8) = local_5c" (pointer_expression "*(undefined4 *)(local_170 + -8)" * (cast_expression "(undefined4 *)(local_170 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_170 + -8)" ( (binary_expression "local_170 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar1 + -0xc) = iVar3;" (assignment_expression "*(int *)(puVar1 + -0xc) = iVar3" (pointer_expression "*(int *)(puVar1 + -0xc)" * (cast_expression "(int *)(puVar1 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0xc)" ( (binary_expression "puVar1 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar1 + -0x10) = local_168;" (assignment_expression "*(undefined1 **)(puVar1 + -0x10) = local_168" (pointer_expression "*(undefined1 **)(puVar1 + -0x10)" * (cast_expression "(undefined1 **)(puVar1 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + -0x10)" ( (binary_expression "puVar1 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar2 = local_60;" (assignment_expression "pcVar2 = local_60" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;" (assignment_expression "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75" (pointer_expression "*(undefined4 *)(puVar1 + -0x14)" * (cast_expression "(undefined4 *)(puVar1 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x14)" ( (binary_expression "puVar1 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "()" ( ))) ;) (return_statement "return local_50 == 0;" return (binary_expression "local_50 == 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (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 = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + LIT) )) / LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (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 = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + LIT) )) / LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (return_statement return (binary_expression IDENT == LIT) ;) })))
(function_definition "bool FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)\n\n{\n  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" (primitive_type "bool") (function_declarator "FUN_001a3c60(undefined4 param_1,undefined4 param_2,code *param_3,undefined4 param_4)" (identifier "FUN_001a3c60") (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  undefined1 *puVar1;\n  code *pcVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 uStack_180;\n  undefined1 auStack_17c [12];\n  undefined1 *local_170;\n  undefined1 local_168 [256];\n  int local_68;\n  undefined1 local_64;\n  code *local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  int local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  int local_30;\n  undefined1 *local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined4 local_20;\n  \n  local_64 = 0;\n  local_68 = 0;\n  local_60 = param_3;\n  local_58 = 0;\n  local_5c = param_4;\n  local_54 = 0;\n  local_44 = 0;\n  local_40 = 0;\n  local_50 = 0;\n  local_4c = 0;\n  local_48 = 0;\n  local_3c = 0;\n  local_38 = (undefined1 *)0x0;\n  local_34 = 0;\n  local_30 = 0;\n  local_2c = (undefined1 *)0x0;\n  local_28 = 0;\n  local_24 = 0;\n  uStack_180 = 0x1a3d03;\n  FUN_00199c80();\n  local_20 = 0;\n  local_24 = local_24 * local_30;\n  iVar3 = local_30;\n  if (local_30 < 1) {\n    iVar3 = 1;\n  }\n  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;\n  local_38 = auStack_17c + iVar3;\n  iVar4 = local_24;\n  if (local_24 < 1) {\n    iVar4 = 1;\n  }\n  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;\n  local_2c = auStack_17c + iVar4 + iVar3;\n  local_170 = auStack_17c;\n  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;\n  FUN_0019a610();\n  iVar3 = local_68;\n  puVar1 = local_170;\n  local_168[local_68] = 0;\n  *(undefined4 *)(local_170 + -8) = local_5c;\n  *(int *)(puVar1 + -0xc) = iVar3;\n  *(undefined1 **)(puVar1 + -0x10) = local_168;\n  pcVar2 = local_60;\n  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;\n  (*pcVar2)();\n  return local_50 == 0;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uStack_180;" (type_identifier "undefined4") (identifier "uStack_180") (; ";")) (declaration "undefined1 auStack_17c [12];" (type_identifier "undefined1") (array_declarator "auStack_17c [12]" (identifier "auStack_17c") ([ "[") (number_literal "12") (] "]")) (; ";")) (declaration "undefined1 *local_170;" (type_identifier "undefined1") (pointer_declarator "*local_170" (* "*") (identifier "local_170")) (; ";")) (declaration "undefined1 local_168 [256];" (type_identifier "undefined1") (array_declarator "local_168 [256]" (identifier "local_168") ([ "[") (number_literal "256") (] "]")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined1 local_64;" (type_identifier "undefined1") (identifier "local_64") (; ";")) (declaration "code *local_60;" (type_identifier "code") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (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 "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined1 *local_2c;" (type_identifier "undefined1") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" (identifier "local_60") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" (identifier "local_5c") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (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_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_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = (undefined1 *)0x0;" (assignment_expression "local_38 = (undefined1 *)0x0" (identifier "local_38") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = (undefined1 *)0x0;" (assignment_expression "local_2c = (undefined1 *)0x0" (identifier "local_2c") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_180 = 0x1a3d03;" (assignment_expression "uStack_180 = 0x1a3d03" (identifier "uStack_180") (= "=") (number_literal "0x1a3d03")) (; ";")) (expression_statement "FUN_00199c80();" (call_expression "FUN_00199c80()" (identifier "FUN_00199c80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = local_24 * local_30;" (assignment_expression "local_24 = local_24 * local_30" (identifier "local_24") (= "=") (binary_expression "local_24 * local_30" (identifier "local_24") (* "*") (identifier "local_30"))) (; ";")) (expression_statement "iVar3 = local_30;" (assignment_expression "iVar3 = local_30" (identifier "iVar3") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (local_30 < 1) {\n    iVar3 = 1;\n  }" (if "if") (parenthesized_expression "(local_30 < 1)" (( "(") (binary_expression "local_30 < 1" (identifier "local_30") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    iVar3 = 1;\n  }" ({ "{") (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10" (identifier "iVar3") (= "=") (binary_expression "((iVar3 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar3 * 8 + 0xfU) / 0x10)" (( "(") (binary_expression "(iVar3 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar3 * 8 + 0xfU)" (( "(") (binary_expression "iVar3 * 8 + 0xfU" (binary_expression "iVar3 * 8" (identifier "iVar3") (* "*") (number_literal "8")) (+ "+") (number_literal "0xfU")) () ")")) (/ "/") (number_literal "0x10")) () ")")) (* "*") (number_literal "-0x10"))) (; ";")) (expression_statement "local_38 = auStack_17c + iVar3;" (assignment_expression "local_38 = auStack_17c + iVar3" (identifier "local_38") (= "=") (binary_expression "auStack_17c + iVar3" (identifier "auStack_17c") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar4 = local_24;" (assignment_expression "iVar4 = local_24" (identifier "iVar4") (= "=") (identifier "local_24")) (; ";")) (if_statement "if (local_24 < 1) {\n    iVar4 = 1;\n  }" (if "if") (parenthesized_expression "(local_24 < 1)" (( "(") (binary_expression "local_24 < 1" (identifier "local_24") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    iVar4 = 1;\n  }" ({ "{") (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;" (assignment_expression "iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10" (identifier "iVar4") (= "=") (binary_expression "((iVar4 * 8 + 0xfU) / 0x10) * -0x10" (parenthesized_expression "((iVar4 * 8 + 0xfU) / 0x10)" (( "(") (binary_expression "(iVar4 * 8 + 0xfU) / 0x10" (parenthesized_expression "(iVar4 * 8 + 0xfU)" (( "(") (binary_expression "iVar4 * 8 + 0xfU" (binary_expression "iVar4 * 8" (identifier "iVar4") (* "*") (number_literal "8")) (+ "+") (number_literal "0xfU")) () ")")) (/ "/") (number_literal "0x10")) () ")")) (* "*") (number_literal "-0x10"))) (; ";")) (expression_statement "local_2c = auStack_17c + iVar4 + iVar3;" (assignment_expression "local_2c = auStack_17c + iVar4 + iVar3" (identifier "local_2c") (= "=") (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" (identifier "auStack_17c") (+ "+") (identifier "iVar4")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "local_170 = auStack_17c;" (assignment_expression "local_170 = auStack_17c" (identifier "local_170") (= "=") (identifier "auStack_17c")) (; ";")) (expression_statement "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;" (assignment_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59" (pointer_expression "*(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" (* "*") (cast_expression "(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_17c + iVar4 + iVar3 + -4)" (( "(") (binary_expression "auStack_17c + iVar4 + iVar3 + -4" (binary_expression "auStack_17c + iVar4 + iVar3" (binary_expression "auStack_17c + iVar4" (identifier "auStack_17c") (+ "+") (identifier "iVar4")) (+ "+") (identifier "iVar3")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x1a3d59")) (; ";")) (expression_statement "FUN_0019a610();" (call_expression "FUN_0019a610()" (identifier "FUN_0019a610") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = local_68;" (assignment_expression "iVar3 = local_68" (identifier "iVar3") (= "=") (identifier "local_68")) (; ";")) (expression_statement "puVar1 = local_170;" (assignment_expression "puVar1 = local_170" (identifier "puVar1") (= "=") (identifier "local_170")) (; ";")) (expression_statement "local_168[local_68] = 0;" (assignment_expression "local_168[local_68] = 0" (subscript_expression "local_168[local_68]" (identifier "local_168") ([ "[") (identifier "local_68") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(local_170 + -8) = local_5c;" (assignment_expression "*(undefined4 *)(local_170 + -8) = local_5c" (pointer_expression "*(undefined4 *)(local_170 + -8)" (* "*") (cast_expression "(undefined4 *)(local_170 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_170 + -8)" (( "(") (binary_expression "local_170 + -8" (identifier "local_170") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "local_5c")) (; ";")) (expression_statement "*(int *)(puVar1 + -0xc) = iVar3;" (assignment_expression "*(int *)(puVar1 + -0xc) = iVar3" (pointer_expression "*(int *)(puVar1 + -0xc)" (* "*") (cast_expression "(int *)(puVar1 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0xc)" (( "(") (binary_expression "puVar1 + -0xc" (identifier "puVar1") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(undefined1 **)(puVar1 + -0x10) = local_168;" (assignment_expression "*(undefined1 **)(puVar1 + -0x10) = local_168" (pointer_expression "*(undefined1 **)(puVar1 + -0x10)" (* "*") (cast_expression "(undefined1 **)(puVar1 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + -0x10)" (( "(") (binary_expression "puVar1 + -0x10" (identifier "puVar1") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_168")) (; ";")) (expression_statement "pcVar2 = local_60;" (assignment_expression "pcVar2 = local_60" (identifier "pcVar2") (= "=") (identifier "local_60")) (; ";")) (expression_statement "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;" (assignment_expression "*(undefined4 *)(puVar1 + -0x14) = 0x1a3d75" (pointer_expression "*(undefined4 *)(puVar1 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar1 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + -0x14)" (( "(") (binary_expression "puVar1 + -0x14" (identifier "puVar1") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x1a3d75")) (; ";")) (expression_statement "(*pcVar2)();" (call_expression "(*pcVar2)()" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return local_50 == 0;" (return "return") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

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

{
  type_3 *pdVar1;
  size_t sVar2;
  type_2 p_Var3;
  int var_2;
  type_4 var_4;
  type_4 var_5;
  int var_3;
  type_3 *pdStack_180;
  type_5 dStack_17c;
  type_5 dStack_174;
  type_6 dpi;
  
  dpi.last_char = '\0';
  dpi.len = 0;
  dpi.callback = callback;
  dpi.templates = (type_3 *)0x0;
  dpi.opaque = opaque;
  dpi.modifiers = (type_7 *)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_8 *)0x0;
  dpi.saved_scopes = (type_5 *)0x0;
  dpi.next_saved_scope = 0;
  dpi.num_saved_scopes = 0;
  dpi.copy_templates = (type_3 *)0x0;
  dpi.next_copy_template = 0;
  dpi.num_copy_templates = 0;
  pdStack_180 = (type_3 *)0x1a3d03;
  var_1(&dpi.num_copy_templates,&dpi.num_saved_scopes,dc);
  dStack_174.templates = (type_3 *)&dStack_17c;
  dpi.current_template = (type_1 *)0x0;
  var_3 = dpi.num_copy_templates * dpi.num_saved_scopes;
  var_2 = dpi.num_saved_scopes;
  if (dpi.num_saved_scopes < 1) {
    var_2 = 1;
  }
  dpi.num_copy_templates = var_3;
  var_4 = (var_2 * 8 + 0xfU) / 0x10;
  if (var_3 < 1) {
    var_3 = 1;
  }
  dpi.saved_scopes = &dStack_174 + var_4 * -2 + -1;
  var_5 = (var_3 * 8 + 0xfU) / 0x10;
  dpi.copy_templates = (type_3 *)(&dStack_174 + var_5 * -2 + var_4 * -2 + -1);
  (&pdStack_180)[var_4 * -4 + var_5 * -4] = (type_3 *)0x1a3d59;
  var_6((type_6 *)(&dStack_174)[var_5 * -2 + var_4 * -2 + -1].container,
               (int)(&dStack_174)[var_5 * -2 + var_4 * -2 + -1].templates,
               (&dStack_174)[var_5 * -2 + var_4 * -2].container);
  sVar2 = dpi.len;
  pdVar1 = dStack_174.templates;
  dpi.buf[dpi.len] = '\0';
  dStack_174.templates[-1].next = (type_3 *)dpi.opaque;
  pdVar1[-2].template_decl = (type_1 *)sVar2;
  pdVar1[-2].next = (type_3 *)&dpi;
  p_Var3 = dpi.callback;
  pdVar1[-3].template_decl = (type_1 *)0x1a3d75;
  (*p_Var3)((char *)pdVar1[-2].next,(size_t)pdVar1[-2].template_decl,pdVar1[-1].next);
  return (type_4)(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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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 (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

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

{
  undefined1 *puVar1;
  code *pcVar2;
  int iVar3;
  int iVar4;
  undefined4 uStack_180;
  undefined1 auStack_17c [12];
  undefined1 *local_170;
  undefined1 local_168 [256];
  int local_68;
  undefined1 local_64;
  code *local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  int local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined1 *local_38;
  undefined4 local_34;
  int local_30;
  undefined1 *local_2c;
  undefined4 local_28;
  int local_24;
  undefined4 local_20;
  
  local_64 = 0;
  local_68 = 0;
  local_60 = param_3;
  local_58 = 0;
  local_5c = param_4;
  local_54 = 0;
  local_44 = 0;
  local_40 = 0;
  local_50 = 0;
  local_4c = 0;
  local_48 = 0;
  local_3c = 0;
  local_38 = (undefined1 *)0x0;
  local_34 = 0;
  local_30 = 0;
  local_2c = (undefined1 *)0x0;
  local_28 = 0;
  local_24 = 0;
  uStack_180 = 0x1a3d03;
  FUN_00199c80();
  local_20 = 0;
  local_24 = local_24 * local_30;
  iVar3 = local_30;
  if (local_30 < 1) {
    iVar3 = 1;
  }
  iVar3 = ((iVar3 * 8 + 0xfU) / 0x10) * -0x10;
  local_38 = auStack_17c + iVar3;
  iVar4 = local_24;
  if (local_24 < 1) {
    iVar4 = 1;
  }
  iVar4 = ((iVar4 * 8 + 0xfU) / 0x10) * -0x10;
  local_2c = auStack_17c + iVar4 + iVar3;
  local_170 = auStack_17c;
  *(undefined4 *)(auStack_17c + iVar4 + iVar3 + -4) = 0x1a3d59;
  FUN_0019a610();
  iVar3 = local_68;
  puVar1 = local_170;
  local_168[local_68] = 0;
  *(undefined4 *)(local_170 + -8) = local_5c;
  *(int *)(puVar1 + -0xc) = iVar3;
  *(undefined1 **)(puVar1 + -0x10) = local_168;
  pcVar2 = local_60;
  *(undefined4 *)(puVar1 + -0x14) = 0x1a3d75;
  (*pcVar2)();
  return local_50 == 0;
}

