
/* WARNING: Variable defined which should be unmapped: pv */

String_sort_list_ptr
script_string_sort_list_add(String_sort_list_ptr pv,Wildcard_section *string_sort)

{
  iterator __position;
  String_sort_list_ptr pSVar1;
  
  if (pv != (String_sort_list_ptr)0x0) {
    __position._M_current =
         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).
         _M_impl._M_finish;
    if (__position._M_current ==
        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).
        _M_impl._M_end_of_storage) {
      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::
      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);
    }
    else {
      ((__position._M_current)->name).value = (string_sort->name).value;
      ((__position._M_current)->name).length = (string_sort->name).length;
      (__position._M_current)->sort = string_sort->sort;
      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).
      _M_impl._M_finish = __position._M_current + 1;
    }
    return pv;
  }
  pSVar1 = script_new_string_sort_list(string_sort);
  return pSVar1;
}



int FUN_0016b680(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (param_1 != 0) {
    puVar1 = *(undefined4 **)(param_1 + 4);
    if (puVar1 == *(undefined4 **)(param_1 + 8)) {
      FUN_0016f300(param_1,puVar1,param_2);
    }
    else {
      *puVar1 = *param_2;
      puVar1[1] = param_2[1];
      puVar1[2] = param_2[2];
      *(undefined4 **)(param_1 + 4) = puVar1 + 3;
    }
    return param_1;
  }
  iVar2 = FUN_0016b0d0();
  return iVar2;
}


PUSH EBX
SUB ESP,0x18
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JZ 0x0016b6b8
MOV EDX,dword ptr [EAX + 0x4]
CMP EDX,dword ptr [EAX + 0x8]
JZ 0x0016b6c8
MOV EBX,dword ptr [ECX]
ADD EDX,0xc
MOV dword ptr [EDX + -0xc],EBX
MOV EBX,dword ptr [ECX + 0x4]
MOV dword ptr [EDX + -0x8],EBX
MOV ECX,dword ptr [ECX + 0x8]
MOV dword ptr [EDX + -0x4],ECX
MOV dword ptr [EAX + 0x4],EDX
ADD ESP,0x18
POP EBX
RET
MOV dword ptr [ESP + 0x20],ECX
ADD ESP,0x18
POP EBX
JMP 0x0016b0d0
SUB ESP,0x4
PUSH ECX
PUSH EDX
PUSH EAX
MOV dword ptr [ESP + 0x1c],EAX
CALL 0x0016f300
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
JMP 0x0016b6af
(translation_unit "int FUN_0016b680(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}\n\n" (function_definition "int FUN_0016b680(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0016b680(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" { (expression_statement "puVar1 = *(undefined4 **)(param_1 + 4);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" if (parenthesized_expression "(puVar1 == *(undefined4 **)(param_1 + 8))" ( (binary_expression "puVar1 == *(undefined4 **)(param_1 + 8)" identifier == (pointer_expression "*(undefined4 **)(param_1 + 8)" * (cast_expression "(undefined4 **)(param_1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      FUN_0016f300(param_1,puVar1,param_2);\n    }" { (expression_statement "FUN_0016f300(param_1,puVar1,param_2);" (call_expression "FUN_0016f300(param_1,puVar1,param_2)" identifier (argument_list "(param_1,puVar1,param_2)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" else (compound_statement "{\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" { (expression_statement "*puVar1 = *param_2;" (assignment_expression "*puVar1 = *param_2" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "puVar1[1] = param_2[1];" (assignment_expression "puVar1[1] = param_2[1]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar1[2] = param_2[2];" (assignment_expression "puVar1[2] = param_2[2]" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 **)(param_1 + 4) = puVar1 + 3;" (assignment_expression "*(undefined4 **)(param_1 + 4) = puVar1 + 3" (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) }))) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar2 = FUN_0016b0d0();" (assignment_expression "iVar2 = FUN_0016b0d0()" identifier = (call_expression "FUN_0016b0d0()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Variable defined which should be unmapped: pv */\n\nString_sort_list_ptr\nscript_string_sort_list_add(String_sort_list_ptr pv,Wildcard_section *string_sort)\n\n{\n  iterator __position;\n  String_sort_list_ptr pSVar1;\n  \n  if (pv != (String_sort_list_ptr)0x0) {\n    __position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;\n    if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }\n    return pv;\n  }\n  pSVar1 = script_new_string_sort_list(string_sort);\n  return pSVar1;\n}\n\n" comment (function_definition "String_sort_list_ptr\nscript_string_sort_list_add(String_sort_list_ptr pv,Wildcard_section *string_sort)\n\n{\n  iterator __position;\n  String_sort_list_ptr pSVar1;\n  \n  if (pv != (String_sort_list_ptr)0x0) {\n    __position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;\n    if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }\n    return pv;\n  }\n  pSVar1 = script_new_string_sort_list(string_sort);\n  return pSVar1;\n}" type_identifier (function_declarator "script_string_sort_list_add(String_sort_list_ptr pv,Wildcard_section *string_sort)" identifier (parameter_list "(String_sort_list_ptr pv,Wildcard_section *string_sort)" ( (parameter_declaration "String_sort_list_ptr pv" type_identifier identifier) , (parameter_declaration "Wildcard_section *string_sort" type_identifier (pointer_declarator "*string_sort" * identifier)) ))) (compound_statement "{\n  iterator __position;\n  String_sort_list_ptr pSVar1;\n  \n  if (pv != (String_sort_list_ptr)0x0) {\n    __position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;\n    if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }\n    return pv;\n  }\n  pSVar1 = script_new_string_sort_list(string_sort);\n  return pSVar1;\n}" { (declaration "iterator __position;" type_identifier identifier ;) (declaration "String_sort_list_ptr pSVar1;" type_identifier identifier ;) (if_statement "if (pv != (String_sort_list_ptr)0x0) {\n    __position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;\n    if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }\n    return pv;\n  }" if (parenthesized_expression "(pv != (String_sort_list_ptr)0x0)" ( (binary_expression "pv != (String_sort_list_ptr)0x0" identifier != (cast_expression "(String_sort_list_ptr)0x0" ( (type_descriptor "String_sort_list_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    __position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;\n    if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }\n    return pv;\n  }" { (expression_statement "__position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish;" (assignment_expression "__position._M_current =\n         (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl._M_finish" (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n         _M_impl" (parenthesized_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>)" ( (ERROR "pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::" (comma_expression "pv->super__Vector_base<gold::Wildcard_section,_std" (binary_expression "pv->super__Vector_base<gold" (field_expression "pv->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Wildcard_section" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Wildcard_section>_>" (binary_expression "Wildcard_section>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage) {\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }\n    else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }" if (parenthesized_expression "(__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage)" ( (binary_expression "__position._M_current ==\n        (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage" (field_expression "__position._M_current" identifier . field_identifier) == (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl._M_end_of_storage" (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n        _M_impl" (parenthesized_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>)" ( (ERROR "pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::" (comma_expression "pv->super__Vector_base<gold::Wildcard_section,_std" (binary_expression "pv->super__Vector_base<gold" (field_expression "pv->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Wildcard_section" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Wildcard_section>_>" (binary_expression "Wildcard_section>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) )) (compound_statement "{\n      std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);\n    }" { (labeled_statement "std::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold::Wildcard_section&>(pv,__position,string_sort);" statement_identifier (ERROR "::vector<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>::\n      _M_realloc_insert<const_gold:" : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Wildcard_section,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Wildcard_section>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<const_gold" identifier < identifier) :) : (expression_statement "Wildcard_section&>(pv,__position,string_sort);" (binary_expression "Wildcard_section&>(pv,__position,string_sort)" identifier (ERROR "&" &) > (parenthesized_expression "(pv,__position,string_sort)" ( (comma_expression "pv,__position,string_sort" identifier , (comma_expression "__position,string_sort" identifier , identifier)) ))) ;)) }) (else_clause "else {\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }" else (compound_statement "{\n      ((__position._M_current)->name).value = (string_sort->name).value;\n      ((__position._M_current)->name).length = (string_sort->name).length;\n      (__position._M_current)->sort = string_sort->sort;\n      (pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;\n    }" { (expression_statement "((__position._M_current)->name).value = (string_sort->name).value;" (assignment_expression "((__position._M_current)->name).value = (string_sort->name).value" (field_expression "((__position._M_current)->name).value" (parenthesized_expression "((__position._M_current)->name)" ( (field_expression "(__position._M_current)->name" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (field_expression "(string_sort->name).value" (parenthesized_expression "(string_sort->name)" ( (field_expression "string_sort->name" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "((__position._M_current)->name).length = (string_sort->name).length;" (assignment_expression "((__position._M_current)->name).length = (string_sort->name).length" (field_expression "((__position._M_current)->name).length" (parenthesized_expression "((__position._M_current)->name)" ( (field_expression "(__position._M_current)->name" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (field_expression "(string_sort->name).length" (parenthesized_expression "(string_sort->name)" ( (field_expression "string_sort->name" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(__position._M_current)->sort = string_sort->sort;" (assignment_expression "(__position._M_current)->sort = string_sort->sort" (field_expression "(__position._M_current)->sort" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = (field_expression "string_sort->sort" identifier -> field_identifier)) ;) (expression_statement "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1;" (assignment_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish = __position._M_current + 1" (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl._M_finish" (field_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>).\n      _M_impl" (parenthesized_expression "(pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::Wildcard_section>_>)" ( (ERROR "pv->super__Vector_base<gold::Wildcard_section,_std::allocator<gold::" (comma_expression "pv->super__Vector_base<gold::Wildcard_section,_std" (binary_expression "pv->super__Vector_base<gold" (field_expression "pv->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Wildcard_section" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Wildcard_section>_>" (binary_expression "Wildcard_section>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }))) (return_statement "return pv;" return identifier ;) })) (expression_statement "pSVar1 = script_new_string_sort_list(string_sort);" (assignment_expression "pSVar1 = script_new_string_sort_list(string_sort)" identifier = (call_expression "script_new_string_sort_list(string_sort)" identifier (argument_list "(string_sort)" ( identifier )))) ;) (return_statement "return pSVar1;" return identifier ;) })))
(translation_unit "int FUN_0016b680(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}\n\n" (function_definition "int FUN_0016b680(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0016b680(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" { (expression_statement "puVar1 = *(undefined4 **)(param_1 + 4);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" if (parenthesized_expression "(puVar1 == *(undefined4 **)(param_1 + 8))" ( (binary_expression "puVar1 == *(undefined4 **)(param_1 + 8)" identifier == (pointer_expression "*(undefined4 **)(param_1 + 8)" * (cast_expression "(undefined4 **)(param_1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      FUN_0016f300(param_1,puVar1,param_2);\n    }" { (expression_statement "FUN_0016f300(param_1,puVar1,param_2);" (call_expression "FUN_0016f300(param_1,puVar1,param_2)" identifier (argument_list "(param_1,puVar1,param_2)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" else (compound_statement "{\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" { (expression_statement "*puVar1 = *param_2;" (assignment_expression "*puVar1 = *param_2" (pointer_expression "*puVar1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "puVar1[1] = param_2[1];" (assignment_expression "puVar1[1] = param_2[1]" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar1[2] = param_2[2];" (assignment_expression "puVar1[2] = param_2[2]" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 **)(param_1 + 4) = puVar1 + 3;" (assignment_expression "*(undefined4 **)(param_1 + 4) = puVar1 + 3" (pointer_expression "*(undefined4 **)(param_1 + 4)" * (cast_expression "(undefined4 **)(param_1 + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) }))) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar2 = FUN_0016b0d0();" (assignment_expression "iVar2 = FUN_0016b0d0()" identifier = (call_expression "FUN_0016b0d0()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_0016b680(int param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_0016b680(int param_1,undefined4 *param_2)" (identifier "FUN_0016b680") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  \n  if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }\n  iVar2 = FUN_0016b0d0();\n  return iVar2;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if (param_1 != 0) {\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar1 = *(undefined4 **)(param_1 + 4);\n    if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }\n    return param_1;\n  }" ({ "{") (expression_statement "puVar1 = *(undefined4 **)(param_1 + 4);" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 4)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 4)" (* "*") (cast_expression "(undefined4 **)(param_1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (puVar1 == *(undefined4 **)(param_1 + 8)) {\n      FUN_0016f300(param_1,puVar1,param_2);\n    }\n    else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" (if "if") (parenthesized_expression "(puVar1 == *(undefined4 **)(param_1 + 8))" (( "(") (binary_expression "puVar1 == *(undefined4 **)(param_1 + 8)" (identifier "puVar1") (== "==") (pointer_expression "*(undefined4 **)(param_1 + 8)" (* "*") (cast_expression "(undefined4 **)(param_1 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      FUN_0016f300(param_1,puVar1,param_2);\n    }" ({ "{") (expression_statement "FUN_0016f300(param_1,puVar1,param_2);" (call_expression "FUN_0016f300(param_1,puVar1,param_2)" (identifier "FUN_0016f300") (argument_list "(param_1,puVar1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "puVar1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" (else "else") (compound_statement "{\n      *puVar1 = *param_2;\n      puVar1[1] = param_2[1];\n      puVar1[2] = param_2[2];\n      *(undefined4 **)(param_1 + 4) = puVar1 + 3;\n    }" ({ "{") (expression_statement "*puVar1 = *param_2;" (assignment_expression "*puVar1 = *param_2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "puVar1[1] = param_2[1];" (assignment_expression "puVar1[1] = param_2[1]" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar1[2] = param_2[2];" (assignment_expression "puVar1[2] = param_2[2]" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 **)(param_1 + 4) = puVar1 + 3;" (assignment_expression "*(undefined4 **)(param_1 + 4) = puVar1 + 3" (pointer_expression "*(undefined4 **)(param_1 + 4)" (* "*") (cast_expression "(undefined4 **)(param_1 + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3"))) (; ";")) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_0016b0d0();" (assignment_expression "iVar2 = FUN_0016b0d0()" (identifier "iVar2") (= "=") (call_expression "FUN_0016b0d0()" (identifier "FUN_0016b0d0") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

/* WARNING: Variable defined which should be unmapped: pv */

type_1
function_1(type_1 var_1,type_2 *string_sort)

{
  type_3 __position;
  type_1 pSVar1;
  
  if (var_1 != (type_1)0x0) {
    __position._M_current =
         (var_1->super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_2>var_3).
         _M_impl._M_finish;
    if (__position._M_current ==
        (var_1->super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_2>var_3).
        _M_impl._M_end_of_storage) {
      std::vector<gold::type_2,_std::allocator<gold::type_2>var_2>::
      _M_realloc_insert<const_gold::type_2&>(var_1,__position,string_sort);
    }
    else {
      ((__position._M_current)->name).value = (string_sort->name).value;
      ((__position._M_current)->name).length = (string_sort->name).length;
      (__position._M_current)->sort = string_sort->sort;
      (var_1->super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_2>var_3).
      _M_impl._M_finish = __position._M_current + 1;
    }
    return var_1;
  }
  pSVar1 = var_4(string_sort);
  return pSVar1;
}


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

int MASKED(int param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  int iVar2;
  
  if (param_1 != 0) {
    puVar1 = *(undefined4 **)(param_1 + 4);
    if (puVar1 == *(undefined4 **)(param_1 + 8)) {
      FUN_0016f300(param_1,puVar1,param_2);
    }
    else {
      *puVar1 = *param_2;
      puVar1[1] = param_2[1];
      puVar1[2] = param_2[2];
      *(undefined4 **)(param_1 + 4) = puVar1 + 3;
    }
    return param_1;
  }
  iVar2 = FUN_0016b0d0();
  return iVar2;
}

