
/* DWARF original prototype: void Output_segment(Output_segment * this, Elf_Word type, Elf_Word
   flags) */

void __thiscall
gold::Output_segment::Output_segment(Output_segment *this,Elf_Word type,Elf_Word flags)

{
  Output_data_list *pOVar1;
  Output_segment *pOVar2;
  Elf_Word EVar3;
  
  pOVar2 = this;
  do {
    pOVar2->output_lists_[0].
    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =
         (pointer)0x0;
    pOVar1 = pOVar2->output_lists_;
    pOVar2->output_lists_[0].
    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =
         (pointer)0x0;
    pOVar2->output_lists_[0].
    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
    _M_end_of_storage = (pointer)0x0;
    pOVar2 = (Output_segment *)(pOVar1 + 1);
  } while ((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_);
  this->field_0x19c = this->field_0x19c & 0xf0;
  EVar3 = 4;
  if (type != 7) {
    EVar3 = flags;
  }
  *(undefined4 *)&this->vaddr_ = 0;
  *(undefined4 *)((int)&this->vaddr_ + 4) = 0;
  *(undefined4 *)&this->paddr_ = 0;
  *(undefined4 *)((int)&this->paddr_ + 4) = 0;
  *(undefined4 *)&this->memsz_ = 0;
  *(undefined4 *)((int)&this->memsz_ + 4) = 0;
  *(undefined4 *)&this->max_align_ = 0;
  *(undefined4 *)((int)&this->max_align_ + 4) = 0;
  *(undefined4 *)&this->min_p_align_ = 0;
  *(undefined4 *)((int)&this->min_p_align_ + 4) = 0;
  *(undefined4 *)&this->offset_ = 0;
  *(undefined4 *)((int)&this->offset_ + 4) = 0;
  *(undefined4 *)&this->filesz_ = 0;
  *(undefined4 *)((int)&this->filesz_ + 4) = 0;
  this->type_ = type;
  this->flags_ = EVar3;
  return;
}



void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  puVar1 = param_1;
  do {
    *puVar1 = 0;
    puVar2 = puVar1 + 3;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1 = puVar2;
  } while (puVar2 != param_1 + 0x57);
  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;
  uVar3 = 4;
  if (param_2 != 7) {
    uVar3 = param_3;
  }
  param_1[0x57] = 0;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  param_1[0x5c] = 0;
  param_1[0x5d] = 0;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = 0;
  param_1[100] = 0;
  param_1[0x65] = param_2;
  param_1[0x66] = uVar3;
  return;
}


PUSH EBX
MOV ECX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [ESP + 0xc]
MOV EAX,ECX
LEA EDX,[ECX + 0x15c]
LEA ESI,[ESI]
MOV dword ptr [EAX],0x0
ADD EAX,0xc
MOV dword ptr [EAX + -0x8],0x0
MOV dword ptr [EAX + -0x4],0x0
CMP EAX,EDX
JNZ 0x000efbf8
AND byte ptr [ECX + 0x19c],0xf0
MOV EAX,0x4
CMP EBX,0x7
CMOVNZ EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ECX + 0x15c],0x0
MOV dword ptr [ECX + 0x160],0x0
MOV dword ptr [ECX + 0x164],0x0
MOV dword ptr [ECX + 0x168],0x0
MOV dword ptr [ECX + 0x16c],0x0
MOV dword ptr [ECX + 0x170],0x0
MOV dword ptr [ECX + 0x174],0x0
MOV dword ptr [ECX + 0x178],0x0
MOV dword ptr [ECX + 0x17c],0x0
MOV dword ptr [ECX + 0x180],0x0
MOV dword ptr [ECX + 0x184],0x0
MOV dword ptr [ECX + 0x188],0x0
MOV dword ptr [ECX + 0x18c],0x0
MOV dword ptr [ECX + 0x190],0x0
MOV dword ptr [ECX + 0x194],EBX
MOV dword ptr [ECX + 0x198],EAX
POP EBX
RET
(translation_unit "void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}\n\n" (function_definition "void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" primitive_type (function_declarator "FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "puVar1 = param_1;" (assignment_expression "puVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);" do (compound_statement "{\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  }" { (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar2 = puVar1 + 3;" (assignment_expression "puVar2 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "puVar1[1] = 0;" (assignment_expression "puVar1[1] = 0" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" identifier = identifier) ;) }) while (parenthesized_expression "(puVar2 != param_1 + 0x57)" ( (binary_expression "puVar2 != param_1 + 0x57" identifier != (binary_expression "param_1 + 0x57" identifier + number_literal)) )) ;) (expression_statement "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;" (assignment_expression "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" * (cast_expression "(byte *)(param_1 + 0x67)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67)" ( (binary_expression "param_1 + 0x67" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" * (cast_expression "(byte *)(param_1 + 0x67)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67)" ( (binary_expression "param_1 + 0x67" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" identifier = number_literal) ;) (if_statement "if (param_2 != 7) {\n    uVar3 = param_3;\n  }" if (parenthesized_expression "(param_2 != 7)" ( (binary_expression "param_2 != 7" identifier != number_literal) )) (compound_statement "{\n    uVar3 = param_3;\n  }" { (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) })) (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5a] = 0;" (assignment_expression "param_1[0x5a] = 0" (subscript_expression "param_1[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5e] = 0;" (assignment_expression "param_1[0x5e] = 0" (subscript_expression "param_1[0x5e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5f] = 0;" (assignment_expression "param_1[0x5f] = 0" (subscript_expression "param_1[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x60] = 0;" (assignment_expression "param_1[0x60] = 0" (subscript_expression "param_1[0x60]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x61] = 0;" (assignment_expression "param_1[0x61] = 0" (subscript_expression "param_1[0x61]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x62] = 0;" (assignment_expression "param_1[0x62] = 0" (subscript_expression "param_1[0x62]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[99] = 0;" (assignment_expression "param_1[99] = 0" (subscript_expression "param_1[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[100] = 0;" (assignment_expression "param_1[100] = 0" (subscript_expression "param_1[100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x65] = param_2;" (assignment_expression "param_1[0x65] = param_2" (subscript_expression "param_1[0x65]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x66] = uVar3;" (assignment_expression "param_1[0x66] = uVar3" (subscript_expression "param_1[0x66]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void Output_segment(Output_segment * this, Elf_Word type, Elf_Word\n   flags) */\n\nvoid __thiscall\ngold::Output_segment::Output_segment(Output_segment *this,Elf_Word type,Elf_Word flags)\n\n{\n  Output_data_list *pOVar1;\n  Output_segment *pOVar2;\n  Elf_Word EVar3;\n  \n  pOVar2 = this;\n  do {\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;\n    pOVar1 = pOVar2->output_lists_;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    pOVar2 = (Output_segment *)(pOVar1 + 1);\n  } while ((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_);\n  this->field_0x19c = this->field_0x19c & 0xf0;\n  EVar3 = 4;\n  if (type != 7) {\n    EVar3 = flags;\n  }\n  *(undefined4 *)&this->vaddr_ = 0;\n  *(undefined4 *)((int)&this->vaddr_ + 4) = 0;\n  *(undefined4 *)&this->paddr_ = 0;\n  *(undefined4 *)((int)&this->paddr_ + 4) = 0;\n  *(undefined4 *)&this->memsz_ = 0;\n  *(undefined4 *)((int)&this->memsz_ + 4) = 0;\n  *(undefined4 *)&this->max_align_ = 0;\n  *(undefined4 *)((int)&this->max_align_ + 4) = 0;\n  *(undefined4 *)&this->min_p_align_ = 0;\n  *(undefined4 *)((int)&this->min_p_align_ + 4) = 0;\n  *(undefined4 *)&this->offset_ = 0;\n  *(undefined4 *)((int)&this->offset_ + 4) = 0;\n  *(undefined4 *)&this->filesz_ = 0;\n  *(undefined4 *)((int)&this->filesz_ + 4) = 0;\n  this->type_ = type;\n  this->flags_ = EVar3;\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Output_segment::Output_segment(Output_segment *this,Elf_Word type,Elf_Word flags)\n\n{\n  Output_data_list *pOVar1;\n  Output_segment *pOVar2;\n  Elf_Word EVar3;\n  \n  pOVar2 = this;\n  do {\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;\n    pOVar1 = pOVar2->output_lists_;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    pOVar2 = (Output_segment *)(pOVar1 + 1);\n  } while ((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_);\n  this->field_0x19c = this->field_0x19c & 0xf0;\n  EVar3 = 4;\n  if (type != 7) {\n    EVar3 = flags;\n  }\n  *(undefined4 *)&this->vaddr_ = 0;\n  *(undefined4 *)((int)&this->vaddr_ + 4) = 0;\n  *(undefined4 *)&this->paddr_ = 0;\n  *(undefined4 *)((int)&this->paddr_ + 4) = 0;\n  *(undefined4 *)&this->memsz_ = 0;\n  *(undefined4 *)((int)&this->memsz_ + 4) = 0;\n  *(undefined4 *)&this->max_align_ = 0;\n  *(undefined4 *)((int)&this->max_align_ + 4) = 0;\n  *(undefined4 *)&this->min_p_align_ = 0;\n  *(undefined4 *)((int)&this->min_p_align_ + 4) = 0;\n  *(undefined4 *)&this->offset_ = 0;\n  *(undefined4 *)((int)&this->offset_ + 4) = 0;\n  *(undefined4 *)&this->filesz_ = 0;\n  *(undefined4 *)((int)&this->filesz_ + 4) = 0;\n  this->type_ = type;\n  this->flags_ = EVar3;\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_segment::" identifier : : identifier : :) (function_declarator "Output_segment(Output_segment *this,Elf_Word type,Elf_Word flags)" identifier (parameter_list "(Output_segment *this,Elf_Word type,Elf_Word flags)" ( (parameter_declaration "Output_segment *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Elf_Word type" type_identifier identifier) , (parameter_declaration "Elf_Word flags" type_identifier identifier) ))) (compound_statement "{\n  Output_data_list *pOVar1;\n  Output_segment *pOVar2;\n  Elf_Word EVar3;\n  \n  pOVar2 = this;\n  do {\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;\n    pOVar1 = pOVar2->output_lists_;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    pOVar2 = (Output_segment *)(pOVar1 + 1);\n  } while ((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_);\n  this->field_0x19c = this->field_0x19c & 0xf0;\n  EVar3 = 4;\n  if (type != 7) {\n    EVar3 = flags;\n  }\n  *(undefined4 *)&this->vaddr_ = 0;\n  *(undefined4 *)((int)&this->vaddr_ + 4) = 0;\n  *(undefined4 *)&this->paddr_ = 0;\n  *(undefined4 *)((int)&this->paddr_ + 4) = 0;\n  *(undefined4 *)&this->memsz_ = 0;\n  *(undefined4 *)((int)&this->memsz_ + 4) = 0;\n  *(undefined4 *)&this->max_align_ = 0;\n  *(undefined4 *)((int)&this->max_align_ + 4) = 0;\n  *(undefined4 *)&this->min_p_align_ = 0;\n  *(undefined4 *)((int)&this->min_p_align_ + 4) = 0;\n  *(undefined4 *)&this->offset_ = 0;\n  *(undefined4 *)((int)&this->offset_ + 4) = 0;\n  *(undefined4 *)&this->filesz_ = 0;\n  *(undefined4 *)((int)&this->filesz_ + 4) = 0;\n  this->type_ = type;\n  this->flags_ = EVar3;\n  return;\n}" { (declaration "Output_data_list *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "Output_segment *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "Elf_Word EVar3;" type_identifier identifier ;) (expression_statement "pOVar2 = this;" (assignment_expression "pOVar2 = this" identifier = identifier) ;) (do_statement "do {\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;\n    pOVar1 = pOVar2->output_lists_;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    pOVar2 = (Output_segment *)(pOVar1 + 1);\n  } while ((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_);" do (compound_statement "{\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;\n    pOVar1 = pOVar2->output_lists_;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;\n    pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;\n    pOVar2 = (Output_segment *)(pOVar1 + 1);\n  }" { (expression_statement "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0;" (assignment_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start =\n         (pointer)0x0" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "pOVar1 = pOVar2->output_lists_;" (assignment_expression "pOVar1 = pOVar2->output_lists_" identifier = (field_expression "pOVar2->output_lists_" identifier -> field_identifier)) ;) (expression_statement "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0;" (assignment_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish =\n         (pointer)0x0" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_finish" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0;" (assignment_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage = (pointer)0x0" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n    _M_end_of_storage" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold::Output_data*,_std" (binary_expression "pOVar2->output_lists_[0].\n    super__Vector_base<gold" (field_expression "pOVar2->output_lists_[0].\n    super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "pOVar2 = (Output_segment *)(pOVar1 + 1);" (assignment_expression "pOVar2 = (Output_segment *)(pOVar1 + 1)" identifier = (cast_expression "(Output_segment *)(pOVar1 + 1)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pOVar1 + 1)" ( (binary_expression "pOVar1 + 1" identifier + number_literal) )))) ;) }) while (parenthesized_expression "((Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_)" ( (binary_expression "(Output_segment *)(pOVar1 + 1) != (Output_segment *)&this->vaddr_" (cast_expression "(Output_segment *)(pOVar1 + 1)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pOVar1 + 1)" ( (binary_expression "pOVar1 + 1" identifier + number_literal) ))) != (cast_expression "(Output_segment *)&this->vaddr_" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->vaddr_" & (field_expression "this->vaddr_" identifier -> field_identifier)))) )) ;) (expression_statement "this->field_0x19c = this->field_0x19c & 0xf0;" (assignment_expression "this->field_0x19c = this->field_0x19c & 0xf0" (field_expression "this->field_0x19c" identifier -> field_identifier) = (binary_expression "this->field_0x19c & 0xf0" (field_expression "this->field_0x19c" identifier -> field_identifier) & number_literal)) ;) (expression_statement "EVar3 = 4;" (assignment_expression "EVar3 = 4" identifier = number_literal) ;) (if_statement "if (type != 7) {\n    EVar3 = flags;\n  }" if (parenthesized_expression "(type != 7)" ( (binary_expression "type != 7" identifier != number_literal) )) (compound_statement "{\n    EVar3 = flags;\n  }" { (expression_statement "EVar3 = flags;" (assignment_expression "EVar3 = flags" identifier = identifier) ;) })) (expression_statement "*(undefined4 *)&this->vaddr_ = 0;" (assignment_expression "*(undefined4 *)&this->vaddr_ = 0" (pointer_expression "*(undefined4 *)&this->vaddr_" * (cast_expression "(undefined4 *)&this->vaddr_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->vaddr_" & (field_expression "this->vaddr_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->vaddr_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->vaddr_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->vaddr_ + 4)" * (cast_expression "(undefined4 *)((int)&this->vaddr_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->vaddr_ + 4)" ( (binary_expression "(int)&this->vaddr_ + 4" (cast_expression "(int)&this->vaddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->vaddr_" & (field_expression "this->vaddr_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->paddr_ = 0;" (assignment_expression "*(undefined4 *)&this->paddr_ = 0" (pointer_expression "*(undefined4 *)&this->paddr_" * (cast_expression "(undefined4 *)&this->paddr_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->paddr_" & (field_expression "this->paddr_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->paddr_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->paddr_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->paddr_ + 4)" * (cast_expression "(undefined4 *)((int)&this->paddr_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->paddr_ + 4)" ( (binary_expression "(int)&this->paddr_ + 4" (cast_expression "(int)&this->paddr_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->paddr_" & (field_expression "this->paddr_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->memsz_ = 0;" (assignment_expression "*(undefined4 *)&this->memsz_ = 0" (pointer_expression "*(undefined4 *)&this->memsz_" * (cast_expression "(undefined4 *)&this->memsz_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->memsz_" & (field_expression "this->memsz_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->memsz_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->memsz_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->memsz_ + 4)" * (cast_expression "(undefined4 *)((int)&this->memsz_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->memsz_ + 4)" ( (binary_expression "(int)&this->memsz_ + 4" (cast_expression "(int)&this->memsz_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->memsz_" & (field_expression "this->memsz_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->max_align_ = 0;" (assignment_expression "*(undefined4 *)&this->max_align_ = 0" (pointer_expression "*(undefined4 *)&this->max_align_" * (cast_expression "(undefined4 *)&this->max_align_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->max_align_" & (field_expression "this->max_align_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->max_align_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->max_align_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->max_align_ + 4)" * (cast_expression "(undefined4 *)((int)&this->max_align_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->max_align_ + 4)" ( (binary_expression "(int)&this->max_align_ + 4" (cast_expression "(int)&this->max_align_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->max_align_" & (field_expression "this->max_align_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->min_p_align_ = 0;" (assignment_expression "*(undefined4 *)&this->min_p_align_ = 0" (pointer_expression "*(undefined4 *)&this->min_p_align_" * (cast_expression "(undefined4 *)&this->min_p_align_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->min_p_align_" & (field_expression "this->min_p_align_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->min_p_align_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->min_p_align_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->min_p_align_ + 4)" * (cast_expression "(undefined4 *)((int)&this->min_p_align_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->min_p_align_ + 4)" ( (binary_expression "(int)&this->min_p_align_ + 4" (cast_expression "(int)&this->min_p_align_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->min_p_align_" & (field_expression "this->min_p_align_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->offset_ = 0;" (assignment_expression "*(undefined4 *)&this->offset_ = 0" (pointer_expression "*(undefined4 *)&this->offset_" * (cast_expression "(undefined4 *)&this->offset_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->offset_" & (field_expression "this->offset_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->offset_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->offset_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->offset_ + 4)" * (cast_expression "(undefined4 *)((int)&this->offset_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->offset_ + 4)" ( (binary_expression "(int)&this->offset_ + 4" (cast_expression "(int)&this->offset_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->offset_" & (field_expression "this->offset_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&this->filesz_ = 0;" (assignment_expression "*(undefined4 *)&this->filesz_ = 0" (pointer_expression "*(undefined4 *)&this->filesz_" * (cast_expression "(undefined4 *)&this->filesz_" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->filesz_" & (field_expression "this->filesz_" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&this->filesz_ + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&this->filesz_ + 4) = 0" (pointer_expression "*(undefined4 *)((int)&this->filesz_ + 4)" * (cast_expression "(undefined4 *)((int)&this->filesz_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->filesz_ + 4)" ( (binary_expression "(int)&this->filesz_ + 4" (cast_expression "(int)&this->filesz_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->filesz_" & (field_expression "this->filesz_" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "this->type_ = type;" (assignment_expression "this->type_ = type" (field_expression "this->type_" identifier -> field_identifier) = identifier) ;) (expression_statement "this->flags_ = EVar3;" (assignment_expression "this->flags_ = EVar3" (field_expression "this->flags_" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}\n\n" (function_definition "void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" primitive_type (function_declarator "FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (expression_statement "puVar1 = param_1;" (assignment_expression "puVar1 = param_1" identifier = identifier) ;) (do_statement "do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);" do (compound_statement "{\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  }" { (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (expression_statement "puVar2 = puVar1 + 3;" (assignment_expression "puVar2 = puVar1 + 3" identifier = (binary_expression "puVar1 + 3" identifier + number_literal)) ;) (expression_statement "puVar1[1] = 0;" (assignment_expression "puVar1[1] = 0" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" identifier = identifier) ;) }) while (parenthesized_expression "(puVar2 != param_1 + 0x57)" ( (binary_expression "puVar2 != param_1 + 0x57" identifier != (binary_expression "param_1 + 0x57" identifier + number_literal)) )) ;) (expression_statement "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;" (assignment_expression "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" * (cast_expression "(byte *)(param_1 + 0x67)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67)" ( (binary_expression "param_1 + 0x67" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" * (cast_expression "(byte *)(param_1 + 0x67)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67)" ( (binary_expression "param_1 + 0x67" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" identifier = number_literal) ;) (if_statement "if (param_2 != 7) {\n    uVar3 = param_3;\n  }" if (parenthesized_expression "(param_2 != 7)" ( (binary_expression "param_2 != 7" identifier != number_literal) )) (compound_statement "{\n    uVar3 = param_3;\n  }" { (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) })) (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5a] = 0;" (assignment_expression "param_1[0x5a] = 0" (subscript_expression "param_1[0x5a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5e] = 0;" (assignment_expression "param_1[0x5e] = 0" (subscript_expression "param_1[0x5e]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x5f] = 0;" (assignment_expression "param_1[0x5f] = 0" (subscript_expression "param_1[0x5f]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x60] = 0;" (assignment_expression "param_1[0x60] = 0" (subscript_expression "param_1[0x60]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x61] = 0;" (assignment_expression "param_1[0x61] = 0" (subscript_expression "param_1[0x61]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x62] = 0;" (assignment_expression "param_1[0x62] = 0" (subscript_expression "param_1[0x62]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[99] = 0;" (assignment_expression "param_1[99] = 0" (subscript_expression "param_1[99]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[100] = 0;" (assignment_expression "param_1[100] = 0" (subscript_expression "param_1[100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x65] = param_2;" (assignment_expression "param_1[0x65] = param_2" (subscript_expression "param_1[0x65]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x66] = uVar3;" (assignment_expression "param_1[0x66] = uVar3" (subscript_expression "param_1[0x66]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000efbe0(undefined4 *param_1,int param_2,undefined4 param_3)" (identifier "FUN_000efbe0") (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  \n  puVar1 = param_1;\n  do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);\n  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;\n  uVar3 = 4;\n  if (param_2 != 7) {\n    uVar3 = param_3;\n  }\n  param_1[0x57] = 0;\n  param_1[0x58] = 0;\n  param_1[0x59] = 0;\n  param_1[0x5a] = 0;\n  param_1[0x5b] = 0;\n  param_1[0x5c] = 0;\n  param_1[0x5d] = 0;\n  param_1[0x5e] = 0;\n  param_1[0x5f] = 0;\n  param_1[0x60] = 0;\n  param_1[0x61] = 0;\n  param_1[0x62] = 0;\n  param_1[99] = 0;\n  param_1[100] = 0;\n  param_1[0x65] = param_2;\n  param_1[0x66] = uVar3;\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (expression_statement "puVar1 = param_1;" (assignment_expression "puVar1 = param_1" (identifier "puVar1") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  } while (puVar2 != param_1 + 0x57);" (do "do") (compound_statement "{\n    *puVar1 = 0;\n    puVar2 = puVar1 + 3;\n    puVar1[1] = 0;\n    puVar1[2] = 0;\n    puVar1 = puVar2;\n  }" ({ "{") (expression_statement "*puVar1 = 0;" (assignment_expression "*puVar1 = 0" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2 = puVar1 + 3;" (assignment_expression "puVar2 = puVar1 + 3" (identifier "puVar2") (= "=") (binary_expression "puVar1 + 3" (identifier "puVar1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar1[1] = 0;" (assignment_expression "puVar1[1] = 0" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1[2] = 0;" (assignment_expression "puVar1[2] = 0" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = puVar2;" (assignment_expression "puVar1 = puVar2" (identifier "puVar1") (= "=") (identifier "puVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != param_1 + 0x57)" (( "(") (binary_expression "puVar2 != param_1 + 0x57" (identifier "puVar2") (!= "!=") (binary_expression "param_1 + 0x57" (identifier "param_1") (+ "+") (number_literal "0x57"))) () ")")) (; ";")) (expression_statement "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;" (assignment_expression "*(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" (* "*") (cast_expression "(byte *)(param_1 + 0x67)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x67)" (( "(") (binary_expression "param_1 + 0x67" (identifier "param_1") (+ "+") (number_literal "0x67")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x67) & 0xf0" (pointer_expression "*(byte *)(param_1 + 0x67)" (* "*") (cast_expression "(byte *)(param_1 + 0x67)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x67)" (( "(") (binary_expression "param_1 + 0x67" (identifier "param_1") (+ "+") (number_literal "0x67")) () ")")))) (& "&") (number_literal "0xf0"))) (; ";")) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" (identifier "uVar3") (= "=") (number_literal "4")) (; ";")) (if_statement "if (param_2 != 7) {\n    uVar3 = param_3;\n  }" (if "if") (parenthesized_expression "(param_2 != 7)" (( "(") (binary_expression "param_2 != 7" (identifier "param_2") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n    uVar3 = param_3;\n  }" ({ "{") (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" (identifier "uVar3") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (expression_statement "param_1[0x57] = 0;" (assignment_expression "param_1[0x57] = 0" (subscript_expression "param_1[0x57]" (identifier "param_1") ([ "[") (number_literal "0x57") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x58] = 0;" (assignment_expression "param_1[0x58] = 0" (subscript_expression "param_1[0x58]" (identifier "param_1") ([ "[") (number_literal "0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x59] = 0;" (assignment_expression "param_1[0x59] = 0" (subscript_expression "param_1[0x59]" (identifier "param_1") ([ "[") (number_literal "0x59") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5a] = 0;" (assignment_expression "param_1[0x5a] = 0" (subscript_expression "param_1[0x5a]" (identifier "param_1") ([ "[") (number_literal "0x5a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5b] = 0;" (assignment_expression "param_1[0x5b] = 0" (subscript_expression "param_1[0x5b]" (identifier "param_1") ([ "[") (number_literal "0x5b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5c] = 0;" (assignment_expression "param_1[0x5c] = 0" (subscript_expression "param_1[0x5c]" (identifier "param_1") ([ "[") (number_literal "0x5c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5d] = 0;" (assignment_expression "param_1[0x5d] = 0" (subscript_expression "param_1[0x5d]" (identifier "param_1") ([ "[") (number_literal "0x5d") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5e] = 0;" (assignment_expression "param_1[0x5e] = 0" (subscript_expression "param_1[0x5e]" (identifier "param_1") ([ "[") (number_literal "0x5e") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x5f] = 0;" (assignment_expression "param_1[0x5f] = 0" (subscript_expression "param_1[0x5f]" (identifier "param_1") ([ "[") (number_literal "0x5f") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x60] = 0;" (assignment_expression "param_1[0x60] = 0" (subscript_expression "param_1[0x60]" (identifier "param_1") ([ "[") (number_literal "0x60") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x61] = 0;" (assignment_expression "param_1[0x61] = 0" (subscript_expression "param_1[0x61]" (identifier "param_1") ([ "[") (number_literal "0x61") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x62] = 0;" (assignment_expression "param_1[0x62] = 0" (subscript_expression "param_1[0x62]" (identifier "param_1") ([ "[") (number_literal "0x62") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[99] = 0;" (assignment_expression "param_1[99] = 0" (subscript_expression "param_1[99]" (identifier "param_1") ([ "[") (number_literal "99") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[100] = 0;" (assignment_expression "param_1[100] = 0" (subscript_expression "param_1[100]" (identifier "param_1") ([ "[") (number_literal "100") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x65] = param_2;" (assignment_expression "param_1[0x65] = param_2" (subscript_expression "param_1[0x65]" (identifier "param_1") ([ "[") (number_literal "0x65") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_1[0x66] = uVar3;" (assignment_expression "param_1[0x66] = uVar3" (subscript_expression "param_1[0x66]" (identifier "param_1") ([ "[") (number_literal "0x66") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void Output_segment(Output_segment * this, Elf_Word type, Elf_Word
   flags) */

void __thiscall
var_1::function_1::function_1(function_1 *this,type_1 var_5,type_1 flags)

{
  type_2 *var_4;
  function_1 *pOVar2;
  type_1 EVar3;
  
  pOVar2 = this;
  do {
    pOVar2->output_lists_[0].
    super__Vector_base<var_1::Output_data*,var_2::allocator<var_1::Output_data*>var_3>._M_impl._M_start =
         (type_3)0x0;
    var_4 = pOVar2->output_lists_;
    pOVar2->output_lists_[0].
    super__Vector_base<var_1::Output_data*,var_2::allocator<var_1::Output_data*>var_3>._M_impl._M_finish =
         (type_3)0x0;
    pOVar2->output_lists_[0].
    super__Vector_base<var_1::Output_data*,var_2::allocator<var_1::Output_data*>var_3>._M_impl.
    _M_end_of_storage = (type_3)0x0;
    pOVar2 = (function_1 *)(var_4 + 1);
  } while ((function_1 *)(var_4 + 1) != (function_1 *)&this->vaddr_);
  this->field_0x19c = this->field_0x19c & 0xf0;
  EVar3 = 4;
  if (var_5 != 7) {
    EVar3 = flags;
  }
  *(type_4 *)&this->vaddr_ = 0;
  *(type_4 *)((int)&this->vaddr_ + 4) = 0;
  *(type_4 *)&this->paddr_ = 0;
  *(type_4 *)((int)&this->paddr_ + 4) = 0;
  *(type_4 *)&this->memsz_ = 0;
  *(type_4 *)((int)&this->memsz_ + 4) = 0;
  *(type_4 *)&this->max_align_ = 0;
  *(type_4 *)((int)&this->max_align_ + 4) = 0;
  *(type_4 *)&this->min_p_align_ = 0;
  *(type_4 *)((int)&this->min_p_align_ + 4) = 0;
  *(type_4 *)&this->offset_ = 0;
  *(type_4 *)((int)&this->offset_ + 4) = 0;
  *(type_4 *)&this->filesz_ = 0;
  *(type_4 *)((int)&this->filesz_ + 4) = 0;
  this->type_ = var_5;
  this->flags_ = EVar3;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

void MASKED(undefined4 *param_1,int param_2,undefined4 param_3)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  
  puVar1 = param_1;
  do {
    *puVar1 = 0;
    puVar2 = puVar1 + 3;
    puVar1[1] = 0;
    puVar1[2] = 0;
    puVar1 = puVar2;
  } while (puVar2 != param_1 + 0x57);
  *(byte *)(param_1 + 0x67) = *(byte *)(param_1 + 0x67) & 0xf0;
  uVar3 = 4;
  if (param_2 != 7) {
    uVar3 = param_3;
  }
  param_1[0x57] = 0;
  param_1[0x58] = 0;
  param_1[0x59] = 0;
  param_1[0x5a] = 0;
  param_1[0x5b] = 0;
  param_1[0x5c] = 0;
  param_1[0x5d] = 0;
  param_1[0x5e] = 0;
  param_1[0x5f] = 0;
  param_1[0x60] = 0;
  param_1[0x61] = 0;
  param_1[0x62] = 0;
  param_1[99] = 0;
  param_1[100] = 0;
  param_1[0x65] = param_2;
  param_1[0x66] = uVar3;
  return;
}

