
/* DWARF original prototype: void release_segments(Script_sections * this) */

void __thiscall gold::Script_sections::release_segments(Script_sections *this)

{
  Phdrs_elements *pPVar1;
  pointer ppPVar2;
  pointer ppPVar3;
  
  if ((this->saw_sections_clause_ != false) &&
     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)) {
    ppPVar2 = (pPVar1->
              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).
              _M_impl._M_finish;
    for (ppPVar3 = (pPVar1->
                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).
                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {
      (*ppPVar3)->segment_ = (Output_segment *)0x0;
    }
  }
  this->segments_created_ = false;
  return;
}



void FUN_001cd220(char *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int *piVar3;
  
  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)
     ) {
    piVar2 = (int *)puVar1[1];
    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {
      *(undefined4 *)(*piVar3 + 0x30) = 0;
    }
  }
  param_1[0x1f] = '\0';
  return;
}


PUSH EBX
MOV EBX,dword ptr [ESP + 0x8]
CMP byte ptr [EBX],0x0
JZ 0x001cd250
MOV EDX,dword ptr [EBX + 0x10]
TEST EDX,EDX
JZ 0x001cd250
MOV EAX,dword ptr [EDX]
MOV ECX,dword ptr [EDX + 0x4]
CMP EAX,ECX
JZ 0x001cd250
LEA ESI,[ESI]
MOV EDX,dword ptr [EAX]
ADD EAX,0x4
MOV dword ptr [EDX + 0x30],0x0
CMP ECX,EAX
JNZ 0x001cd240
MOV byte ptr [EBX + 0x1f],0x0
POP EBX
RET
(translation_unit "void FUN_001cd220(char *param_1)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}\n\n" (function_definition "void FUN_001cd220(char *param_1)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" primitive_type (function_declarator "FUN_001cd220(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (if_statement "if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" if (parenthesized_expression "((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     )" ( (binary_expression "(*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" ( (comma_expression "puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x10)" * (cast_expression "(undefined4 **)(param_1 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) , (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" { (expression_statement "piVar2 = (int *)puVar1[1];" (assignment_expression "piVar2 = (int *)puVar1[1]" identifier = (cast_expression "(int *)puVar1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar1[1]" identifier [ number_literal ]))) ;) (for_statement "for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" for ( (assignment_expression "piVar3 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ; (binary_expression "piVar3 != piVar2" identifier != identifier) ; (assignment_expression "piVar3 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ) (compound_statement "{\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" { (expression_statement "*(undefined4 *)(*piVar3 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*piVar3 + 0x30) = 0" (pointer_expression "*(undefined4 *)(*piVar3 + 0x30)" * (cast_expression "(undefined4 *)(*piVar3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 0x30)" ( (binary_expression "*piVar3 + 0x30" (pointer_expression "*piVar3" * identifier) + number_literal) )))) = number_literal) ;) })) })) (expression_statement "param_1[0x1f] = '\0';" (assignment_expression "param_1[0x1f] = '\0'" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void release_segments(Script_sections * this) */\n\nvoid __thiscall gold::Script_sections::release_segments(Script_sections *this)\n\n{\n  Phdrs_elements *pPVar1;\n  pointer ppPVar2;\n  pointer ppPVar3;\n  \n  if ((this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)) {\n    ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;\n    for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }\n  }\n  this->segments_created_ = false;\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Script_sections::release_segments(Script_sections *this)\n\n{\n  Phdrs_elements *pPVar1;\n  pointer ppPVar2;\n  pointer ppPVar3;\n  \n  if ((this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)) {\n    ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;\n    for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }\n  }\n  this->segments_created_ = false;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Script_sections::" identifier : : identifier : :) (function_declarator "release_segments(Script_sections *this)" identifier (parameter_list "(Script_sections *this)" ( (parameter_declaration "Script_sections *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  Phdrs_elements *pPVar1;\n  pointer ppPVar2;\n  pointer ppPVar3;\n  \n  if ((this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)) {\n    ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;\n    for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }\n  }\n  this->segments_created_ = false;\n  return;\n}" { (declaration "Phdrs_elements *pPVar1;" type_identifier (pointer_declarator "*pPVar1" * identifier) ;) (declaration "pointer ppPVar2;" type_identifier identifier ;) (declaration "pointer ppPVar3;" type_identifier identifier ;) (if_statement "if ((this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)) {\n    ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;\n    for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }\n  }" if (parenthesized_expression "((this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0))" ( (binary_expression "(this->saw_sections_clause_ != false) &&\n     (pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)" (parenthesized_expression "(this->saw_sections_clause_ != false)" ( (binary_expression "this->saw_sections_clause_ != false" (field_expression "this->saw_sections_clause_" identifier -> field_identifier) != false) )) && (parenthesized_expression "(pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0)" ( (comma_expression "pPVar1 = this->phdrs_elements_, pPVar1 != (Phdrs_elements *)0x0" (assignment_expression "pPVar1 = this->phdrs_elements_" identifier = (field_expression "this->phdrs_elements_" identifier -> field_identifier)) , (binary_expression "pPVar1 != (Phdrs_elements *)0x0" identifier != (cast_expression "(Phdrs_elements *)0x0" ( (type_descriptor "Phdrs_elements *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;\n    for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }\n  }" { (expression_statement "ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish;" (assignment_expression "ppPVar2 = (pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish" identifier = (field_expression "(pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl._M_finish" (field_expression "(pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n              _M_impl" (parenthesized_expression "(pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>)" ( (ERROR "pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::" (comma_expression "pPVar1->\n              super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar1->\n              super__Vector_base<gold::Phdrs_element*" (binary_expression "pPVar1->\n              super__Vector_base<gold" (field_expression "pPVar1->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Phdrs_element*>_>" (binary_expression "Phdrs_element*>_" identifier * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (for_statement "for (ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start; ppPVar3 != ppPVar2; ppPVar3 = ppPVar3 + 1) {\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }" for ( (assignment_expression "ppPVar3 = (pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start" identifier = (field_expression "(pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl._M_start" (field_expression "(pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>).\n                   _M_impl" (parenthesized_expression "(pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>)" ( (binary_expression "pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_>" (binary_expression "pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold::Phdrs_element*>_" (binary_expression "pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std::allocator<gold" (binary_expression "pPVar1->\n                   super__Vector_base<gold::Phdrs_element*,_std" (binary_expression "pPVar1->\n                   super__Vector_base<gold" (field_expression "pPVar1->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Phdrs_element" : : identifier) * (ERROR ">" >) identifier) > identifier) )) . field_identifier) . field_identifier)) ; (binary_expression "ppPVar3 != ppPVar2" identifier != identifier) ; (assignment_expression "ppPVar3 = ppPVar3 + 1" identifier = (binary_expression "ppPVar3 + 1" identifier + number_literal)) ) (compound_statement "{\n      (*ppPVar3)->segment_ = (Output_segment *)0x0;\n    }" { (expression_statement "(*ppPVar3)->segment_ = (Output_segment *)0x0;" (assignment_expression "(*ppPVar3)->segment_ = (Output_segment *)0x0" (field_expression "(*ppPVar3)->segment_" (parenthesized_expression "(*ppPVar3)" ( (pointer_expression "*ppPVar3" * identifier) )) -> field_identifier) = (cast_expression "(Output_segment *)0x0" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (expression_statement "this->segments_created_ = false;" (assignment_expression "this->segments_created_ = false" (field_expression "this->segments_created_" identifier -> field_identifier) = false) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001cd220(char *param_1)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}\n\n" (function_definition "void FUN_001cd220(char *param_1)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" primitive_type (function_declarator "FUN_001cd220(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (if_statement "if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" if (parenthesized_expression "((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     )" ( (binary_expression "(*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" (parenthesized_expression "(*param_1 != '\0')" ( (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" ( (comma_expression "puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x10)" * (cast_expression "(undefined4 **)(param_1 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) , (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" { (expression_statement "piVar2 = (int *)puVar1[1];" (assignment_expression "piVar2 = (int *)puVar1[1]" identifier = (cast_expression "(int *)puVar1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar1[1]" identifier [ number_literal ]))) ;) (for_statement "for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" for ( (assignment_expression "piVar3 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ; (binary_expression "piVar3 != piVar2" identifier != identifier) ; (assignment_expression "piVar3 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ) (compound_statement "{\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" { (expression_statement "*(undefined4 *)(*piVar3 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*piVar3 + 0x30) = 0" (pointer_expression "*(undefined4 *)(*piVar3 + 0x30)" * (cast_expression "(undefined4 *)(*piVar3 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + 0x30)" ( (binary_expression "*piVar3 + 0x30" (pointer_expression "*piVar3" * identifier) + number_literal) )))) = number_literal) ;) })) })) (expression_statement "param_1[0x1f] = '\0';" (assignment_expression "param_1[0x1f] = '\0'" (subscript_expression "param_1[0x1f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = LIT) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return ;) })))
(function_definition "void FUN_001cd220(char *param_1)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001cd220(char *param_1)" (identifier "FUN_001cd220") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  int *piVar3;\n  \n  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }\n  param_1[0x1f] = '\0';\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (if_statement "if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     ) {\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" (if "if") (parenthesized_expression "((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)\n     )" (( "(") (binary_expression "(*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" (parenthesized_expression "(*param_1 != '\0')" (( "(") (binary_expression "*param_1 != '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0" (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x10)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x10)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (, ",") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    piVar2 = (int *)puVar1[1];\n    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }\n  }" ({ "{") (expression_statement "piVar2 = (int *)puVar1[1];" (assignment_expression "piVar2 = (int *)puVar1[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)puVar1[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (for_statement "for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" (for "for") (( "(") (assignment_expression "piVar3 = (int *)*puVar1" (identifier "piVar3") (= "=") (cast_expression "(int *)*puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";") (binary_expression "piVar3 != piVar2" (identifier "piVar3") (!= "!=") (identifier "piVar2")) (; ";") (assignment_expression "piVar3 = piVar3 + 1" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 1" (identifier "piVar3") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n      *(undefined4 *)(*piVar3 + 0x30) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(*piVar3 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(*piVar3 + 0x30) = 0" (pointer_expression "*(undefined4 *)(*piVar3 + 0x30)" (* "*") (cast_expression "(undefined4 *)(*piVar3 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + 0x30)" (( "(") (binary_expression "*piVar3 + 0x30" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_1[0x1f] = '\0';" (assignment_expression "param_1[0x1f] = '\0'" (subscript_expression "param_1[0x1f]" (identifier "param_1") ([ "[") (number_literal "0x1f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void release_segments(Script_sections * this) */

void __thiscall var_5::type_1::function_1(type_1 *this)

{
  type_2 *var_1;
  type_3 var_8;
  type_3 var_7;
  
  if ((this->saw_sections_clause_ != false) &&
     (var_1 = this->phdrs_elements_, var_1 != (type_2 *)0x0)) {
    var_8 = (var_1->
              super__Vector_base<var_5::var_2*var_4,var_6::allocator<var_5::var_2*>var_3>var_4).
              _M_impl._M_finish;
    for (var_7 = (var_1->
                   super__Vector_base<var_5::var_2*,var_6::allocator<var_5::var_2*>var_3>var_4).
                   _M_impl._M_start; var_7 != var_8; var_7 = var_7 + 1) {
      (*var_7)->segment_ = (type_4 *)0x0;
    }
  }
  this->segments_created_ = false;
  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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) condition: (binary_expression left: (identifier) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) (return_statement))))

void MASKED(char *param_1)

{
  undefined4 *puVar1;
  int *piVar2;
  int *piVar3;
  
  if ((*param_1 != '\0') && (puVar1 = *(undefined4 **)(param_1 + 0x10), puVar1 != (undefined4 *)0x0)
     ) {
    piVar2 = (int *)puVar1[1];
    for (piVar3 = (int *)*puVar1; piVar3 != piVar2; piVar3 = piVar3 + 1) {
      *(undefined4 *)(*piVar3 + 0x30) = 0;
    }
  }
  param_1[0x1f] = '\0';
  return;
}

