
char * input_scrub_pop(input_save *saved)

{
  char *pcVar1;
  
  input_scrub_end();
  input_file_pop(saved->input_file_save);
  buffer_start = saved->buffer_start;
  from_sb.ptr = (saved->from_sb).ptr;
  from_sb.len = (saved->from_sb).len;
  pcVar1 = saved->saved_position;
  buffer_length = saved->buffer_length;
  physical_input_file = saved->physical_input_file;
  logical_input_file = saved->logical_input_file;
  physical_input_line = saved->physical_input_line;
  logical_input_line = saved->logical_input_line;
  sb_index = saved->sb_index;
  from_sb.max = (saved->from_sb).max;
  from_sb_is_expansion = saved->from_sb_is_expansion;
  partial_where = saved->partial_where;
  partial_size = saved->partial_size;
  next_saved_file = saved->next_saved_file;
  save_source[0] = saved->save_source[0];
  free(saved);
  return pcVar1;
}



undefined8 FUN_00120ba0(undefined8 *param_1)

{
  undefined8 uVar1;
  
  FUN_00120b60();
  FUN_001205e0(param_1[0xe]);
  DAT_00174ff8 = *param_1;
  DAT_00174fc0 = param_1[9];
  DAT_00174fc8 = param_1[10];
  uVar1 = param_1[0xf];
  DAT_00174fd8 = param_1[4];
  DAT_00174fb8 = param_1[5];
  DAT_00174fb0 = param_1[6];
  DAT_00174fac = *(undefined4 *)(param_1 + 7);
  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);
  DAT_0016c498 = param_1[8];
  DAT_00174fd0 = param_1[0xb];
  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);
  DAT_00174ff0 = param_1[1];
  DAT_00174fe8 = param_1[2];
  DAT_00174fa0 = param_1[0xd];
  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);
  free(param_1);
  return uVar1;
}


PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
CALL 0x00120b60
MOV RDI,qword ptr [RBX + 0x70]
CALL 0x001205e0
MOV RAX,qword ptr [RBX]
MOVDQU XMM0,xmmword ptr [RBX + 0x48]
MOV RDI,RBX
MOV RBP,qword ptr [RBX + 0x78]
MOV qword ptr [0x00174ff8],RAX
MOV RAX,qword ptr [RBX + 0x20]
MOVAPS xmmword ptr [0x00174fc0],XMM0
MOV qword ptr [0x00174fd8],RAX
MOV RAX,qword ptr [RBX + 0x28]
MOV qword ptr [0x00174fb8],RAX
MOV RAX,qword ptr [RBX + 0x30]
MOV qword ptr [0x00174fb0],RAX
MOV EAX,dword ptr [RBX + 0x38]
MOV dword ptr [0x00174fac],EAX
MOV EAX,dword ptr [RBX + 0x3c]
MOV dword ptr [0x00174fa8],EAX
MOV RAX,qword ptr [RBX + 0x40]
MOV qword ptr [0x0016c498],RAX
MOV RAX,qword ptr [RBX + 0x58]
MOV qword ptr [0x00174fd0],RAX
MOV EAX,dword ptr [RBX + 0x60]
MOV dword ptr [0x0016c490],EAX
MOV RAX,qword ptr [RBX + 0x8]
MOV qword ptr [0x00174ff0],RAX
MOV RAX,qword ptr [RBX + 0x10]
MOV qword ptr [0x00174fe8],RAX
MOV RAX,qword ptr [RBX + 0x68]
MOV qword ptr [0x00174fa0],RAX
MOVZX EAX,byte ptr [RBX + 0x18]
MOV byte ptr [0x00174fe0],AL
CALL 0x00111730
ADD RSP,0x8
MOV RAX,RBP
POP RBX
POP RBP
RET
(translation_unit "undefined8 FUN_00120ba0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}\n\n" (function_definition "undefined8 FUN_00120ba0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" type_identifier (function_declarator "FUN_00120ba0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "FUN_00120b60();" (call_expression "FUN_00120b60()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001205e0(param_1[0xe]);" (call_expression "FUN_001205e0(param_1[0xe])" identifier (argument_list "(param_1[0xe])" ( (subscript_expression "param_1[0xe]" identifier [ number_literal ]) ))) ;) (expression_statement "DAT_00174ff8 = *param_1;" (assignment_expression "DAT_00174ff8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "DAT_00174fc0 = param_1[9];" (assignment_expression "DAT_00174fc0 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fc8 = param_1[10];" (assignment_expression "DAT_00174fc8 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fd8 = param_1[4];" (assignment_expression "DAT_00174fd8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fb8 = param_1[5];" (assignment_expression "DAT_00174fb8 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fb0 = param_1[6];" (assignment_expression "DAT_00174fb0 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fac = *(undefined4 *)(param_1 + 7);" (assignment_expression "DAT_00174fac = *(undefined4 *)(param_1 + 7)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 7)" * (cast_expression "(undefined4 *)(param_1 + 7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (expression_statement "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);" (assignment_expression "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)((long)param_1 + 0x3c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "DAT_0016c498 = param_1[8];" (assignment_expression "DAT_0016c498 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fd0 = param_1[0xb];" (assignment_expression "DAT_00174fd0 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_00174ff0 = param_1[1];" (assignment_expression "DAT_00174ff0 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fe8 = param_1[2];" (assignment_expression "DAT_00174fe8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fa0 = param_1[0xd];" (assignment_expression "DAT_00174fa0 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fe0 = *(undefined1 *)(param_1 + 3);" (assignment_expression "DAT_00174fe0 = *(undefined1 *)(param_1 + 3)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) ))))) ;) (expression_statement "free(param_1);" (call_expression "free(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "char * input_scrub_pop(input_save *saved)\n\n{\n  char *pcVar1;\n  \n  input_scrub_end();\n  input_file_pop(saved->input_file_save);\n  buffer_start = saved->buffer_start;\n  from_sb.ptr = (saved->from_sb).ptr;\n  from_sb.len = (saved->from_sb).len;\n  pcVar1 = saved->saved_position;\n  buffer_length = saved->buffer_length;\n  physical_input_file = saved->physical_input_file;\n  logical_input_file = saved->logical_input_file;\n  physical_input_line = saved->physical_input_line;\n  logical_input_line = saved->logical_input_line;\n  sb_index = saved->sb_index;\n  from_sb.max = (saved->from_sb).max;\n  from_sb_is_expansion = saved->from_sb_is_expansion;\n  partial_where = saved->partial_where;\n  partial_size = saved->partial_size;\n  next_saved_file = saved->next_saved_file;\n  save_source[0] = saved->save_source[0];\n  free(saved);\n  return pcVar1;\n}\n\n" (function_definition "char * input_scrub_pop(input_save *saved)\n\n{\n  char *pcVar1;\n  \n  input_scrub_end();\n  input_file_pop(saved->input_file_save);\n  buffer_start = saved->buffer_start;\n  from_sb.ptr = (saved->from_sb).ptr;\n  from_sb.len = (saved->from_sb).len;\n  pcVar1 = saved->saved_position;\n  buffer_length = saved->buffer_length;\n  physical_input_file = saved->physical_input_file;\n  logical_input_file = saved->logical_input_file;\n  physical_input_line = saved->physical_input_line;\n  logical_input_line = saved->logical_input_line;\n  sb_index = saved->sb_index;\n  from_sb.max = (saved->from_sb).max;\n  from_sb_is_expansion = saved->from_sb_is_expansion;\n  partial_where = saved->partial_where;\n  partial_size = saved->partial_size;\n  next_saved_file = saved->next_saved_file;\n  save_source[0] = saved->save_source[0];\n  free(saved);\n  return pcVar1;\n}" primitive_type (pointer_declarator "* input_scrub_pop(input_save *saved)" * (function_declarator "input_scrub_pop(input_save *saved)" identifier (parameter_list "(input_save *saved)" ( (parameter_declaration "input_save *saved" type_identifier (pointer_declarator "*saved" * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  \n  input_scrub_end();\n  input_file_pop(saved->input_file_save);\n  buffer_start = saved->buffer_start;\n  from_sb.ptr = (saved->from_sb).ptr;\n  from_sb.len = (saved->from_sb).len;\n  pcVar1 = saved->saved_position;\n  buffer_length = saved->buffer_length;\n  physical_input_file = saved->physical_input_file;\n  logical_input_file = saved->logical_input_file;\n  physical_input_line = saved->physical_input_line;\n  logical_input_line = saved->logical_input_line;\n  sb_index = saved->sb_index;\n  from_sb.max = (saved->from_sb).max;\n  from_sb_is_expansion = saved->from_sb_is_expansion;\n  partial_where = saved->partial_where;\n  partial_size = saved->partial_size;\n  next_saved_file = saved->next_saved_file;\n  save_source[0] = saved->save_source[0];\n  free(saved);\n  return pcVar1;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (expression_statement "input_scrub_end();" (call_expression "input_scrub_end()" identifier (argument_list "()" ( ))) ;) (expression_statement "input_file_pop(saved->input_file_save);" (call_expression "input_file_pop(saved->input_file_save)" identifier (argument_list "(saved->input_file_save)" ( (field_expression "saved->input_file_save" identifier -> field_identifier) ))) ;) (expression_statement "buffer_start = saved->buffer_start;" (assignment_expression "buffer_start = saved->buffer_start" identifier = (field_expression "saved->buffer_start" identifier -> field_identifier)) ;) (expression_statement "from_sb.ptr = (saved->from_sb).ptr;" (assignment_expression "from_sb.ptr = (saved->from_sb).ptr" (field_expression "from_sb.ptr" identifier . field_identifier) = (field_expression "(saved->from_sb).ptr" (parenthesized_expression "(saved->from_sb)" ( (field_expression "saved->from_sb" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "from_sb.len = (saved->from_sb).len;" (assignment_expression "from_sb.len = (saved->from_sb).len" (field_expression "from_sb.len" identifier . field_identifier) = (field_expression "(saved->from_sb).len" (parenthesized_expression "(saved->from_sb)" ( (field_expression "saved->from_sb" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar1 = saved->saved_position;" (assignment_expression "pcVar1 = saved->saved_position" identifier = (field_expression "saved->saved_position" identifier -> field_identifier)) ;) (expression_statement "buffer_length = saved->buffer_length;" (assignment_expression "buffer_length = saved->buffer_length" identifier = (field_expression "saved->buffer_length" identifier -> field_identifier)) ;) (expression_statement "physical_input_file = saved->physical_input_file;" (assignment_expression "physical_input_file = saved->physical_input_file" identifier = (field_expression "saved->physical_input_file" identifier -> field_identifier)) ;) (expression_statement "logical_input_file = saved->logical_input_file;" (assignment_expression "logical_input_file = saved->logical_input_file" identifier = (field_expression "saved->logical_input_file" identifier -> field_identifier)) ;) (expression_statement "physical_input_line = saved->physical_input_line;" (assignment_expression "physical_input_line = saved->physical_input_line" identifier = (field_expression "saved->physical_input_line" identifier -> field_identifier)) ;) (expression_statement "logical_input_line = saved->logical_input_line;" (assignment_expression "logical_input_line = saved->logical_input_line" identifier = (field_expression "saved->logical_input_line" identifier -> field_identifier)) ;) (expression_statement "sb_index = saved->sb_index;" (assignment_expression "sb_index = saved->sb_index" identifier = (field_expression "saved->sb_index" identifier -> field_identifier)) ;) (expression_statement "from_sb.max = (saved->from_sb).max;" (assignment_expression "from_sb.max = (saved->from_sb).max" (field_expression "from_sb.max" identifier . field_identifier) = (field_expression "(saved->from_sb).max" (parenthesized_expression "(saved->from_sb)" ( (field_expression "saved->from_sb" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "from_sb_is_expansion = saved->from_sb_is_expansion;" (assignment_expression "from_sb_is_expansion = saved->from_sb_is_expansion" identifier = (field_expression "saved->from_sb_is_expansion" identifier -> field_identifier)) ;) (expression_statement "partial_where = saved->partial_where;" (assignment_expression "partial_where = saved->partial_where" identifier = (field_expression "saved->partial_where" identifier -> field_identifier)) ;) (expression_statement "partial_size = saved->partial_size;" (assignment_expression "partial_size = saved->partial_size" identifier = (field_expression "saved->partial_size" identifier -> field_identifier)) ;) (expression_statement "next_saved_file = saved->next_saved_file;" (assignment_expression "next_saved_file = saved->next_saved_file" identifier = (field_expression "saved->next_saved_file" identifier -> field_identifier)) ;) (expression_statement "save_source[0] = saved->save_source[0];" (assignment_expression "save_source[0] = saved->save_source[0]" (subscript_expression "save_source[0]" identifier [ number_literal ]) = (subscript_expression "saved->save_source[0]" (field_expression "saved->save_source" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "free(saved);" (call_expression "free(saved)" identifier (argument_list "(saved)" ( identifier ))) ;) (return_statement "return pcVar1;" return identifier ;) })))
(translation_unit "undefined8 FUN_00120ba0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}\n\n" (function_definition "undefined8 FUN_00120ba0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" type_identifier (function_declarator "FUN_00120ba0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "FUN_00120b60();" (call_expression "FUN_00120b60()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001205e0(param_1[0xe]);" (call_expression "FUN_001205e0(param_1[0xe])" identifier (argument_list "(param_1[0xe])" ( (subscript_expression "param_1[0xe]" identifier [ number_literal ]) ))) ;) (expression_statement "DAT_00174ff8 = *param_1;" (assignment_expression "DAT_00174ff8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "DAT_00174fc0 = param_1[9];" (assignment_expression "DAT_00174fc0 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fc8 = param_1[10];" (assignment_expression "DAT_00174fc8 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fd8 = param_1[4];" (assignment_expression "DAT_00174fd8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fb8 = param_1[5];" (assignment_expression "DAT_00174fb8 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fb0 = param_1[6];" (assignment_expression "DAT_00174fb0 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fac = *(undefined4 *)(param_1 + 7);" (assignment_expression "DAT_00174fac = *(undefined4 *)(param_1 + 7)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 7)" * (cast_expression "(undefined4 *)(param_1 + 7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (expression_statement "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);" (assignment_expression "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)((long)param_1 + 0x3c)" * (cast_expression "(undefined4 *)((long)param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "DAT_0016c498 = param_1[8];" (assignment_expression "DAT_0016c498 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fd0 = param_1[0xb];" (assignment_expression "DAT_00174fd0 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "DAT_00174ff0 = param_1[1];" (assignment_expression "DAT_00174ff0 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fe8 = param_1[2];" (assignment_expression "DAT_00174fe8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fa0 = param_1[0xd];" (assignment_expression "DAT_00174fa0 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "DAT_00174fe0 = *(undefined1 *)(param_1 + 3);" (assignment_expression "DAT_00174fe0 = *(undefined1 *)(param_1 + 3)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) ))))) ;) (expression_statement "free(param_1);" (call_expression "free(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_00120ba0(undefined8 *param_1)\n\n{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" (type_identifier "undefined8") (function_declarator "FUN_00120ba0(undefined8 *param_1)" (identifier "FUN_00120ba0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  \n  FUN_00120b60();\n  FUN_001205e0(param_1[0xe]);\n  DAT_00174ff8 = *param_1;\n  DAT_00174fc0 = param_1[9];\n  DAT_00174fc8 = param_1[10];\n  uVar1 = param_1[0xf];\n  DAT_00174fd8 = param_1[4];\n  DAT_00174fb8 = param_1[5];\n  DAT_00174fb0 = param_1[6];\n  DAT_00174fac = *(undefined4 *)(param_1 + 7);\n  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);\n  DAT_0016c498 = param_1[8];\n  DAT_00174fd0 = param_1[0xb];\n  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);\n  DAT_00174ff0 = param_1[1];\n  DAT_00174fe8 = param_1[2];\n  DAT_00174fa0 = param_1[0xd];\n  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);\n  free(param_1);\n  return uVar1;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (expression_statement "FUN_00120b60();" (call_expression "FUN_00120b60()" (identifier "FUN_00120b60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_001205e0(param_1[0xe]);" (call_expression "FUN_001205e0(param_1[0xe])" (identifier "FUN_001205e0") (argument_list "(param_1[0xe])" (( "(") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) () ")"))) (; ";")) (expression_statement "DAT_00174ff8 = *param_1;" (assignment_expression "DAT_00174ff8 = *param_1" (identifier "DAT_00174ff8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "DAT_00174fc0 = param_1[9];" (assignment_expression "DAT_00174fc0 = param_1[9]" (identifier "DAT_00174fc0") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "DAT_00174fc8 = param_1[10];" (assignment_expression "DAT_00174fc8 = param_1[10]" (identifier "DAT_00174fc8") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "uVar1 = param_1[0xf];" (assignment_expression "uVar1 = param_1[0xf]" (identifier "uVar1") (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "DAT_00174fd8 = param_1[4];" (assignment_expression "DAT_00174fd8 = param_1[4]" (identifier "DAT_00174fd8") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "DAT_00174fb8 = param_1[5];" (assignment_expression "DAT_00174fb8 = param_1[5]" (identifier "DAT_00174fb8") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "DAT_00174fb0 = param_1[6];" (assignment_expression "DAT_00174fb0 = param_1[6]" (identifier "DAT_00174fb0") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "DAT_00174fac = *(undefined4 *)(param_1 + 7);" (assignment_expression "DAT_00174fac = *(undefined4 *)(param_1 + 7)" (identifier "DAT_00174fac") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 7)" (* "*") (cast_expression "(undefined4 *)(param_1 + 7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);" (assignment_expression "DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c)" (identifier "DAT_00174fa8") (= "=") (pointer_expression "*(undefined4 *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "DAT_0016c498 = param_1[8];" (assignment_expression "DAT_0016c498 = param_1[8]" (identifier "DAT_0016c498") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "DAT_00174fd0 = param_1[0xb];" (assignment_expression "DAT_00174fd0 = param_1[0xb]" (identifier "DAT_00174fd0") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "DAT_0016c490 = *(undefined4 *)(param_1 + 0xc)" (identifier "DAT_0016c490") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "DAT_00174ff0 = param_1[1];" (assignment_expression "DAT_00174ff0 = param_1[1]" (identifier "DAT_00174ff0") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "DAT_00174fe8 = param_1[2];" (assignment_expression "DAT_00174fe8 = param_1[2]" (identifier "DAT_00174fe8") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "DAT_00174fa0 = param_1[0xd];" (assignment_expression "DAT_00174fa0 = param_1[0xd]" (identifier "DAT_00174fa0") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "DAT_00174fe0 = *(undefined1 *)(param_1 + 3);" (assignment_expression "DAT_00174fe0 = *(undefined1 *)(param_1 + 3)" (identifier "DAT_00174fe0") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 3)" (* "*") (cast_expression "(undefined1 *)(param_1 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "free(param_1);" (call_expression "free(param_1)" (identifier "free") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

char * function_1(type_1 *saved)

{
  char *pcVar1;
  
  var_1();
  var_2(saved->input_file_save);
  buffer_start = saved->buffer_start;
  from_sb.ptr = (saved->from_sb).ptr;
  from_sb.len = (saved->from_sb).len;
  pcVar1 = saved->saved_position;
  buffer_length = saved->buffer_length;
  physical_input_file = saved->physical_input_file;
  logical_input_file = saved->logical_input_file;
  physical_input_line = saved->physical_input_line;
  logical_input_line = saved->logical_input_line;
  sb_index = saved->sb_index;
  from_sb.max = (saved->from_sb).max;
  from_sb_is_expansion = saved->from_sb_is_expansion;
  partial_where = saved->partial_where;
  partial_size = saved->partial_size;
  next_saved_file = saved->next_saved_file;
  save_source[0] = saved->save_source[0];
  var_3(saved);
  return pcVar1;
}


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

undefined8 MASKED(undefined8 *param_1)

{
  undefined8 uVar1;
  
  FUN_00120b60();
  FUN_001205e0(param_1[0xe]);
  DAT_00174ff8 = *param_1;
  DAT_00174fc0 = param_1[9];
  DAT_00174fc8 = param_1[10];
  uVar1 = param_1[0xf];
  DAT_00174fd8 = param_1[4];
  DAT_00174fb8 = param_1[5];
  DAT_00174fb0 = param_1[6];
  DAT_00174fac = *(undefined4 *)(param_1 + 7);
  DAT_00174fa8 = *(undefined4 *)((long)param_1 + 0x3c);
  DAT_0016c498 = param_1[8];
  DAT_00174fd0 = param_1[0xb];
  DAT_0016c490 = *(undefined4 *)(param_1 + 0xc);
  DAT_00174ff0 = param_1[1];
  DAT_00174fe8 = param_1[2];
  DAT_00174fa0 = param_1[0xd];
  DAT_00174fe0 = *(undefined1 *)(param_1 + 3);
  free(param_1);
  return uVar1;
}

