
void free_entry(conf_entry *entry)

{
  int iVar1;
  
  if (subkeytypes[(entry->key).primary] == 2) {
    safefree((entry->key).secondary.s);
  }
  iVar1 = valuetypes[(entry->key).primary];
  if (iVar1 == 2) {
    safefree((entry->value).u.stringval);
  }
  else if (iVar1 == 3) {
    filename_free((entry->value).u.fileval);
  }
  else if (iVar1 == 4) {
    fontspec_free((entry->value).u.fontval);
  }
  safefree(entry);
  return;
}



void FUN_0010a087(int *param_1)

{
  int iVar1;
  
  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {
    FUN_0010da9f(*(undefined8 *)(param_1 + 2));
  }
  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);
  if (iVar1 == 2) {
    FUN_0010da9f(*(undefined8 *)(param_1 + 4));
  }
  else if (iVar1 == 3) {
    FUN_00154301(*(undefined8 *)(param_1 + 4));
  }
  else if (iVar1 == 4) {
    FUN_00154757(*(undefined8 *)(param_1 + 4));
  }
  FUN_0010da9f(param_1);
  return;
}


PUSH RBX
MOV RBX,RDI
MOVSXD RDX,dword ptr [RDI]
LEA RAX,[0x15da60]
CMP dword ptr [RAX + RDX*0x4],0x2
JZ 0x0010a0c1
MOVSXD RDX,dword ptr [RBX]
LEA RAX,[0x15d780]
MOV EAX,dword ptr [RAX + RDX*0x4]
CMP EAX,0x2
JZ 0x0010a0cc
CMP EAX,0x3
JZ 0x0010a0d7
CMP EAX,0x4
JZ 0x0010a0e2
MOV RDI,RBX
CALL 0x0010da9f
POP RBX
RET
MOV RDI,qword ptr [RDI + 0x8]
CALL 0x0010da9f
JMP 0x0010a09b
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x0010da9f
JMP 0x0010a0b7
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00154301
JMP 0x0010a0b7
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00154757
JMP 0x0010a0b7
(translation_unit "void FUN_0010a087(int *param_1)\n\n{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0010a087(int *param_1)\n\n{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0010a087(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" if (parenthesized_expression "(*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2)" ( (binary_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2" (pointer_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4)" * (cast_expression "(int *)(&DAT_0015da60 + (long)*param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0015da60 + (long)*param_1 * 4)" ( (binary_expression "&DAT_0015da60 + (long)*param_1 * 4" (pointer_expression "&DAT_0015da60" & identifier) + (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_1" * identifier)) * number_literal)) )))) == number_literal) )) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" { (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 2));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 2))" identifier (argument_list "(*(undefined8 *)(param_1 + 2))" ( (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ))) ;) })) (expression_statement "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);" (assignment_expression "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4)" identifier = (pointer_expression "*(int *)(&DAT_0015d780 + (long)*param_1 * 4)" * (cast_expression "(int *)(&DAT_0015d780 + (long)*param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0015d780 + (long)*param_1 * 4)" ( (binary_expression "&DAT_0015d780 + (long)*param_1 * 4" (pointer_expression "&DAT_0015d780" & identifier) + (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_1" * identifier)) * number_literal)) ))))) ;) (if_statement "if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" else (if_statement "if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 3)" ( (binary_expression "iVar1 == 3" identifier == number_literal) )) (compound_statement "{\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_00154301(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154301(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" else (if_statement "if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 4)" ( (binary_expression "iVar1 == 4" identifier == number_literal) )) (compound_statement "{\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_00154757(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154757(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })))))) (expression_statement "FUN_0010da9f(param_1);" (call_expression "FUN_0010da9f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void free_entry(conf_entry *entry)\n\n{\n  int iVar1;\n  \n  if (subkeytypes[(entry->key).primary] == 2) {\n    safefree((entry->key).secondary.s);\n  }\n  iVar1 = valuetypes[(entry->key).primary];\n  if (iVar1 == 2) {\n    safefree((entry->value).u.stringval);\n  }\n  else if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }\n  safefree(entry);\n  return;\n}\n\n" (function_definition "void free_entry(conf_entry *entry)\n\n{\n  int iVar1;\n  \n  if (subkeytypes[(entry->key).primary] == 2) {\n    safefree((entry->key).secondary.s);\n  }\n  iVar1 = valuetypes[(entry->key).primary];\n  if (iVar1 == 2) {\n    safefree((entry->value).u.stringval);\n  }\n  else if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }\n  safefree(entry);\n  return;\n}" primitive_type (function_declarator "free_entry(conf_entry *entry)" identifier (parameter_list "(conf_entry *entry)" ( (parameter_declaration "conf_entry *entry" type_identifier (pointer_declarator "*entry" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if (subkeytypes[(entry->key).primary] == 2) {\n    safefree((entry->key).secondary.s);\n  }\n  iVar1 = valuetypes[(entry->key).primary];\n  if (iVar1 == 2) {\n    safefree((entry->value).u.stringval);\n  }\n  else if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }\n  safefree(entry);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (subkeytypes[(entry->key).primary] == 2) {\n    safefree((entry->key).secondary.s);\n  }" if (parenthesized_expression "(subkeytypes[(entry->key).primary] == 2)" ( (binary_expression "subkeytypes[(entry->key).primary] == 2" (subscript_expression "subkeytypes[(entry->key).primary]" identifier [ (field_expression "(entry->key).primary" (parenthesized_expression "(entry->key)" ( (field_expression "entry->key" identifier -> field_identifier) )) . field_identifier) ]) == number_literal) )) (compound_statement "{\n    safefree((entry->key).secondary.s);\n  }" { (expression_statement "safefree((entry->key).secondary.s);" (call_expression "safefree((entry->key).secondary.s)" identifier (argument_list "((entry->key).secondary.s)" ( (field_expression "(entry->key).secondary.s" (field_expression "(entry->key).secondary" (parenthesized_expression "(entry->key)" ( (field_expression "entry->key" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) })) (expression_statement "iVar1 = valuetypes[(entry->key).primary];" (assignment_expression "iVar1 = valuetypes[(entry->key).primary]" identifier = (subscript_expression "valuetypes[(entry->key).primary]" identifier [ (field_expression "(entry->key).primary" (parenthesized_expression "(entry->key)" ( (field_expression "entry->key" identifier -> field_identifier) )) . field_identifier) ])) ;) (if_statement "if (iVar1 == 2) {\n    safefree((entry->value).u.stringval);\n  }\n  else if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    safefree((entry->value).u.stringval);\n  }" { (expression_statement "safefree((entry->value).u.stringval);" (call_expression "safefree((entry->value).u.stringval)" identifier (argument_list "((entry->value).u.stringval)" ( (field_expression "(entry->value).u.stringval" (field_expression "(entry->value).u" (parenthesized_expression "(entry->value)" ( (field_expression "entry->value" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) }) (else_clause "else if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }" else (if_statement "if (iVar1 == 3) {\n    filename_free((entry->value).u.fileval);\n  }\n  else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }" if (parenthesized_expression "(iVar1 == 3)" ( (binary_expression "iVar1 == 3" identifier == number_literal) )) (compound_statement "{\n    filename_free((entry->value).u.fileval);\n  }" { (expression_statement "filename_free((entry->value).u.fileval);" (call_expression "filename_free((entry->value).u.fileval)" identifier (argument_list "((entry->value).u.fileval)" ( (field_expression "(entry->value).u.fileval" (field_expression "(entry->value).u" (parenthesized_expression "(entry->value)" ( (field_expression "entry->value" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) }) (else_clause "else if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }" else (if_statement "if (iVar1 == 4) {\n    fontspec_free((entry->value).u.fontval);\n  }" if (parenthesized_expression "(iVar1 == 4)" ( (binary_expression "iVar1 == 4" identifier == number_literal) )) (compound_statement "{\n    fontspec_free((entry->value).u.fontval);\n  }" { (expression_statement "fontspec_free((entry->value).u.fontval);" (call_expression "fontspec_free((entry->value).u.fontval)" identifier (argument_list "((entry->value).u.fontval)" ( (field_expression "(entry->value).u.fontval" (field_expression "(entry->value).u" (parenthesized_expression "(entry->value)" ( (field_expression "entry->value" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) })))))) (expression_statement "safefree(entry);" (call_expression "safefree(entry)" identifier (argument_list "(entry)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0010a087(int *param_1)\n\n{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0010a087(int *param_1)\n\n{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0010a087(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (if_statement "if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" if (parenthesized_expression "(*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2)" ( (binary_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2" (pointer_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4)" * (cast_expression "(int *)(&DAT_0015da60 + (long)*param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0015da60 + (long)*param_1 * 4)" ( (binary_expression "&DAT_0015da60 + (long)*param_1 * 4" (pointer_expression "&DAT_0015da60" & identifier) + (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_1" * identifier)) * number_literal)) )))) == number_literal) )) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" { (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 2));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 2))" identifier (argument_list "(*(undefined8 *)(param_1 + 2))" ( (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ))) ;) })) (expression_statement "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);" (assignment_expression "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4)" identifier = (pointer_expression "*(int *)(&DAT_0015d780 + (long)*param_1 * 4)" * (cast_expression "(int *)(&DAT_0015d780 + (long)*param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0015d780 + (long)*param_1 * 4)" ( (binary_expression "&DAT_0015d780 + (long)*param_1 * 4" (pointer_expression "&DAT_0015d780" & identifier) + (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_1" * identifier)) * number_literal)) ))))) ;) (if_statement "if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" else (if_statement "if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 3)" ( (binary_expression "iVar1 == 3" identifier == number_literal) )) (compound_statement "{\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_00154301(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154301(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" else (if_statement "if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" if (parenthesized_expression "(iVar1 == 4)" ( (binary_expression "iVar1 == 4" identifier == number_literal) )) (compound_statement "{\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" { (expression_statement "FUN_00154757(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154757(*(undefined8 *)(param_1 + 4))" identifier (argument_list "(*(undefined8 *)(param_1 + 4))" ( (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) })))))) (expression_statement "FUN_0010da9f(param_1);" (call_expression "FUN_0010da9f(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (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 (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (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 ;) })))
(function_definition "void FUN_0010a087(int *param_1)\n\n{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0010a087(int *param_1)" (identifier "FUN_0010a087") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }\n  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);\n  if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }\n  FUN_0010da9f(param_1);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (if_statement "if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" (if "if") (parenthesized_expression "(*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2)" (( "(") (binary_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2" (pointer_expression "*(int *)(&DAT_0015da60 + (long)*param_1 * 4)" (* "*") (cast_expression "(int *)(&DAT_0015da60 + (long)*param_1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0015da60 + (long)*param_1 * 4)" (( "(") (binary_expression "&DAT_0015da60 + (long)*param_1 * 4" (pointer_expression "&DAT_0015da60" (& "&") (identifier "DAT_0015da60")) (+ "+") (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 2));\n  }" ({ "{") (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 2));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 2))" (identifier "FUN_0010da9f") (argument_list "(*(undefined8 *)(param_1 + 2))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);" (assignment_expression "iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(&DAT_0015d780 + (long)*param_1 * 4)" (* "*") (cast_expression "(int *)(&DAT_0015d780 + (long)*param_1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0015d780 + (long)*param_1 * 4)" (( "(") (binary_expression "&DAT_0015d780 + (long)*param_1 * 4" (pointer_expression "&DAT_0015d780" (& "&") (identifier "DAT_0015d780")) (+ "+") (binary_expression "(long)*param_1 * 4" (cast_expression "(long)*param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar1 == 2) {\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(iVar1 == 2)" (( "(") (binary_expression "iVar1 == 2" (identifier "iVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    FUN_0010da9f(*(undefined8 *)(param_1 + 4));\n  }" ({ "{") (expression_statement "FUN_0010da9f(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_0010da9f(*(undefined8 *)(param_1 + 4))" (identifier "FUN_0010da9f") (argument_list "(*(undefined8 *)(param_1 + 4))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 4)" (* "*") (cast_expression "(undefined8 *)(param_1 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" (else "else") (if_statement "if (iVar1 == 3) {\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }\n  else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(iVar1 == 3)" (( "(") (binary_expression "iVar1 == 3" (identifier "iVar1") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    FUN_00154301(*(undefined8 *)(param_1 + 4));\n  }" ({ "{") (expression_statement "FUN_00154301(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154301(*(undefined8 *)(param_1 + 4))" (identifier "FUN_00154301") (argument_list "(*(undefined8 *)(param_1 + 4))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 4)" (* "*") (cast_expression "(undefined8 *)(param_1 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" (else "else") (if_statement "if (iVar1 == 4) {\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" (if "if") (parenthesized_expression "(iVar1 == 4)" (( "(") (binary_expression "iVar1 == 4" (identifier "iVar1") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n    FUN_00154757(*(undefined8 *)(param_1 + 4));\n  }" ({ "{") (expression_statement "FUN_00154757(*(undefined8 *)(param_1 + 4));" (call_expression "FUN_00154757(*(undefined8 *)(param_1 + 4))" (identifier "FUN_00154757") (argument_list "(*(undefined8 *)(param_1 + 4))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 4)" (* "*") (cast_expression "(undefined8 *)(param_1 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}"))))))) (expression_statement "FUN_0010da9f(param_1);" (call_expression "FUN_0010da9f(param_1)" (identifier "FUN_0010da9f") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *entry)

{
  int var_2;
  
  if (subkeytypes[(entry->key).primary] == 2) {
    var_1((entry->key).secondary.s);
  }
  var_2 = valuetypes[(entry->key).primary];
  if (var_2 == 2) {
    var_1((entry->value).u.stringval);
  }
  else if (var_2 == 3) {
    var_3((entry->value).u.fileval);
  }
  else if (var_2 == 4) {
    var_4((entry->value).u.fontval);
  }
  var_1(entry);
  return;
}


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

void MASKED(int *param_1)

{
  int iVar1;
  
  if (*(int *)(&DAT_0015da60 + (long)*param_1 * 4) == 2) {
    FUN_0010da9f(*(undefined8 *)(param_1 + 2));
  }
  iVar1 = *(int *)(&DAT_0015d780 + (long)*param_1 * 4);
  if (iVar1 == 2) {
    FUN_0010da9f(*(undefined8 *)(param_1 + 4));
  }
  else if (iVar1 == 3) {
    FUN_00154301(*(undefined8 *)(param_1 + 4));
  }
  else if (iVar1 == 4) {
    FUN_00154757(*(undefined8 *)(param_1 + 4));
  }
  FUN_0010da9f(param_1);
  return;
}

