
/* DWARF original prototype: void read_all_symbols(Archive * this) */

void __thiscall gold::Archive::read_all_symbols(Archive *this)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  off_t oVar2;
  off_t oVar3;
  const_iterator p;
  const_iterator local_88;
  
  p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2;
  p.off_ = 8;
  p.header_.name._M_string_length = 0;
  p.header_.name.field_2._M_local_buf[0] = '\0';
  p.archive_ = this;
                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */
  const_iterator::read_next_header(&p);
  paVar1 = &local_88.header_.name.field_2;
  while( true ) {
    local_88.off_ = (this->input_file_->file_).size_;
    local_88.header_.name.field_2._M_local_buf[0] = '\0';
    local_88.header_.name._M_string_length = 0;
    local_88.archive_ = this;
    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;
                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */
    const_iterator::read_next_header(&local_88);
    oVar3 = local_88.header_.off;
    oVar2 = p.off_;
    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
         *)local_88.header_.name._M_dataplus._M_p != paVar1) {
      operator_delete(local_88.header_.name._M_dataplus._M_p);
    }
    if (oVar2 == oVar3) break;
                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */
    read_symbols(this,p.header_.off);
    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {
      p.off_ = p.off_ + 0x3c;
      if ((p.archive_)->is_thin_archive_ == false) {
        p.off_ = p.off_ + p.header_.size;
      }
      if ((p.off_ & 1U) != 0) {
        p.off_ = p.off_ + 1;
      }
      const_iterator::read_next_header(&p);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {
    operator_delete(p.header_.name._M_dataplus._M_p);
  }
  return;
}



void FUN_0028f210(long param_1)

{
  ulong uVar1;
  ulong uVar2;
  long local_d8;
  ulong local_d0;
  undefined1 *local_c8;
  undefined8 local_c0;
  undefined1 local_b8 [16];
  undefined8 local_a8;
  long local_98;
  long local_88;
  undefined8 local_80;
  undefined1 *local_78;
  undefined8 local_70;
  undefined1 local_68 [16];
  ulong local_58;
  
  local_c8 = local_b8;
  local_d0 = 8;
  local_c0 = 0;
  local_b8[0] = 0;
  local_d8 = param_1;
                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */
  FUN_0028d2f0(&local_d8);
  while( true ) {
    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);
    local_68[0] = 0;
    local_70 = 0;
    local_88 = param_1;
    local_78 = local_68;
                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */
    FUN_0028d2f0(&local_88);
    uVar2 = local_58;
    uVar1 = local_d0;
    if (local_78 != local_68) {
      FUN_002dac60();
    }
    if (uVar1 == uVar2) break;
                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */
    FUN_0028f080(param_1,local_a8);
    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {
      local_d0 = local_d0 + 0x3c;
      if (*(char *)(local_d8 + 0x128) == '\0') {
        local_d0 = local_d0 + local_98;
      }
      if ((local_d0 & 1) != 0) {
        local_d0 = local_d0 + 1;
      }
      FUN_0028d2f0(&local_d8);
    }
  }
  if (local_c8 != local_b8) {
    FUN_002dac60();
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0xa8
MOV R12,RSP
MOV qword ptr [RSP],RDI
LEA RAX,[R12 + 0x20]
MOV RDI,R12
MOV qword ptr [RSP + 0x8],0x8
MOV qword ptr [RSP + 0x10],RAX
MOV qword ptr [RSP + 0x18],0x0
MOV byte ptr [RSP + 0x20],0x0
CALL 0x0028d2f0
LEA R13,[RSP + 0x50]
LEA RBP,[R13 + 0x20]
NOP dword ptr [RAX]
MOV RAX,qword ptr [RBX + 0x38]
MOV RDI,R13
MOV qword ptr [RSP + 0x50],RBX
MOV qword ptr [RSP + 0x60],RBP
MOV RAX,qword ptr [RAX + 0x58]
MOV byte ptr [RSP + 0x70],0x0
MOV qword ptr [RSP + 0x68],0x0
MOV qword ptr [RSP + 0x58],RAX
CALL 0x0028d2f0
MOV RDI,qword ptr [RSP + 0x60]
MOV R15,qword ptr [RSP + 0x8]
MOV R14,qword ptr [RSP + 0x80]
CMP RDI,RBP
JZ 0x0028f2a9
CALL 0x002dac60
CMP R15,R14
JZ 0x0028f308
MOV RSI,qword ptr [RSP + 0x30]
MOV RDI,RBX
CALL 0x0028f080
MOV RDX,qword ptr [RSP]
MOV RAX,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RDX + 0x38]
CMP RAX,qword ptr [RCX + 0x58]
JZ 0x0028f260
ADD RAX,0x3c
CMP byte ptr [RDX + 0x128],0x0
MOV qword ptr [RSP + 0x8],RAX
JNZ 0x0028f2ea
ADD RAX,qword ptr [RSP + 0x40]
MOV qword ptr [RSP + 0x8],RAX
TEST AL,0x1
JZ 0x0028f2f7
ADD RAX,0x1
MOV qword ptr [RSP + 0x8],RAX
MOV RDI,R12
CALL 0x0028d2f0
JMP 0x0028f260
MOV RDI,qword ptr [RSP + 0x10]
ADD R12,0x20
CMP RDI,R12
JZ 0x0028f31b
CALL 0x002dac60
ADD RSP,0xa8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "void FUN_0028f210(long param_1)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}\n\n" (function_definition "void FUN_0028f210(long param_1)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0028f210(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long local_d8;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_d0;" type_identifier identifier ;) (declaration "undefined1 *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "undefined8 local_c0;" type_identifier identifier ;) (declaration "undefined1 local_b8 [16];" type_identifier (array_declarator "local_b8 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_88;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_58;" type_identifier identifier ;) (expression_statement "local_c8 = local_b8;" (assignment_expression "local_c8 = local_b8" identifier = identifier) ;) (expression_statement "local_d0 = 8;" (assignment_expression "local_d0 = 8" identifier = number_literal) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d8 = param_1;" (assignment_expression "local_d8 = param_1" identifier = identifier) ;) comment (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" identifier (argument_list "(&local_d8)" ( (pointer_expression "&local_d8" & identifier) ))) ;) (while_statement "while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" { (expression_statement "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);" (assignment_expression "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" * (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x38) + 0x58)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x58" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_68[0] = 0;" (assignment_expression "local_68[0] = 0" (subscript_expression "local_68[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" identifier = identifier) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) comment (expression_statement "FUN_0028d2f0(&local_88);" (call_expression "FUN_0028d2f0(&local_88)" identifier (argument_list "(&local_88)" ( (pointer_expression "&local_88" & identifier) ))) ;) (expression_statement "uVar2 = local_58;" (assignment_expression "uVar2 = local_58" identifier = identifier) ;) (expression_statement "uVar1 = local_d0;" (assignment_expression "uVar1 = local_d0" identifier = identifier) ;) (if_statement "if (local_78 != local_68) {\n      FUN_002dac60();\n    }" if (parenthesized_expression "(local_78 != local_68)" ( (binary_expression "local_78 != local_68" identifier != identifier) )) (compound_statement "{\n      FUN_002dac60();\n    }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (uVar1 == uVar2) break;" if (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) (break_statement "break;" break ;)) comment (expression_statement "FUN_0028f080(param_1,local_a8);" (call_expression "FUN_0028f080(param_1,local_a8)" identifier (argument_list "(param_1,local_a8)" ( identifier , identifier ))) ;) (if_statement "if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" if (parenthesized_expression "(local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58))" ( (binary_expression "local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" identifier != (pointer_expression "*(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" * (cast_expression "(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_d8 + 0x38) + 0x58)" ( (binary_expression "*(long *)(local_d8 + 0x38) + 0x58" (pointer_expression "*(long *)(local_d8 + 0x38)" * (cast_expression "(long *)(local_d8 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0x38)" ( (binary_expression "local_d8 + 0x38" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" { (expression_statement "local_d0 = local_d0 + 0x3c;" (assignment_expression "local_d0 = local_d0 + 0x3c" identifier = (binary_expression "local_d0 + 0x3c" identifier + number_literal)) ;) (if_statement "if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }" if (parenthesized_expression "(*(char *)(local_d8 + 0x128) == '\0')" ( (binary_expression "*(char *)(local_d8 + 0x128) == '\0'" (pointer_expression "*(char *)(local_d8 + 0x128)" * (cast_expression "(char *)(local_d8 + 0x128)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0x128)" ( (binary_expression "local_d8 + 0x128" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_d0 = local_d0 + local_98;\n      }" { (expression_statement "local_d0 = local_d0 + local_98;" (assignment_expression "local_d0 = local_d0 + local_98" identifier = (binary_expression "local_d0 + local_98" identifier + identifier)) ;) })) (if_statement "if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }" if (parenthesized_expression "((local_d0 & 1) != 0)" ( (binary_expression "(local_d0 & 1) != 0" (parenthesized_expression "(local_d0 & 1)" ( (binary_expression "local_d0 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_d0 = local_d0 + 1;\n      }" { (expression_statement "local_d0 = local_d0 + 1;" (assignment_expression "local_d0 = local_d0 + 1" identifier = (binary_expression "local_d0 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" identifier (argument_list "(&local_d8)" ( (pointer_expression "&local_d8" & identifier) ))) ;) })) })) (if_statement "if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_c8 != local_b8)" ( (binary_expression "local_c8 != local_b8" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void read_all_symbols(Archive * this) */\n\nvoid __thiscall gold::Archive::read_all_symbols(Archive *this)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  off_t oVar2;\n  off_t oVar3;\n  const_iterator p;\n  const_iterator local_88;\n  \n  p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2;\n  p.off_ = 8;\n  p.header_.name._M_string_length = 0;\n  p.header_.name.field_2._M_local_buf[0] = '\0';\n  p.archive_ = this;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  const_iterator::read_next_header(&p);\n  paVar1 = &local_88.header_.name.field_2;\n  while( true ) {\n    local_88.off_ = (this->input_file_->file_).size_;\n    local_88.header_.name.field_2._M_local_buf[0] = '\0';\n    local_88.header_.name._M_string_length = 0;\n    local_88.archive_ = this;\n    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    const_iterator::read_next_header(&local_88);\n    oVar3 = local_88.header_.off;\n    oVar2 = p.off_;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }\n    if (oVar2 == oVar3) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    read_symbols(this,p.header_.off);\n    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {\n    operator_delete(p.header_.name._M_dataplus._M_p);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Archive::read_all_symbols(Archive *this)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  off_t oVar2;\n  off_t oVar3;\n  const_iterator p;\n  const_iterator local_88;\n  \n  p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2;\n  p.off_ = 8;\n  p.header_.name._M_string_length = 0;\n  p.header_.name.field_2._M_local_buf[0] = '\0';\n  p.archive_ = this;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  const_iterator::read_next_header(&p);\n  paVar1 = &local_88.header_.name.field_2;\n  while( true ) {\n    local_88.off_ = (this->input_file_->file_).size_;\n    local_88.header_.name.field_2._M_local_buf[0] = '\0';\n    local_88.header_.name._M_string_length = 0;\n    local_88.archive_ = this;\n    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    const_iterator::read_next_header(&local_88);\n    oVar3 = local_88.header_.off;\n    oVar2 = p.off_;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }\n    if (oVar2 == oVar3) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    read_symbols(this,p.header_.off);\n    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {\n    operator_delete(p.header_.name._M_dataplus._M_p);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Archive::" identifier : : identifier : :) (function_declarator "read_all_symbols(Archive *this)" identifier (parameter_list "(Archive *this)" ( (parameter_declaration "Archive *this" type_identifier (pointer_declarator "*this" * identifier)) ))) (compound_statement "{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  off_t oVar2;\n  off_t oVar3;\n  const_iterator p;\n  const_iterator local_88;\n  \n  p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2;\n  p.off_ = 8;\n  p.header_.name._M_string_length = 0;\n  p.header_.name.field_2._M_local_buf[0] = '\0';\n  p.archive_ = this;\n                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */\n  const_iterator::read_next_header(&p);\n  paVar1 = &local_88.header_.name.field_2;\n  while( true ) {\n    local_88.off_ = (this->input_file_->file_).size_;\n    local_88.header_.name.field_2._M_local_buf[0] = '\0';\n    local_88.header_.name._M_string_length = 0;\n    local_88.archive_ = this;\n    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    const_iterator::read_next_header(&local_88);\n    oVar3 = local_88.header_.off;\n    oVar2 = p.off_;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }\n    if (oVar2 == oVar3) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    read_symbols(this,p.header_.off);\n    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {\n    operator_delete(p.header_.name._M_dataplus._M_p);\n  }\n  return;\n}" { (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;) (declaration "off_t oVar2;" type_identifier identifier ;) (declaration "off_t oVar3;" type_identifier identifier ;) (declaration "const_iterator p;" type_identifier identifier ;) (declaration "const_iterator local_88;" type_identifier identifier ;) (expression_statement "p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2;" (assignment_expression "p.header_.name._M_dataplus._M_p = (pointer)&p.header_.name.field_2" (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&p.header_.name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (expression_statement "p.off_ = 8;" (assignment_expression "p.off_ = 8" (field_expression "p.off_" identifier . field_identifier) = number_literal) ;) (expression_statement "p.header_.name._M_string_length = 0;" (assignment_expression "p.header_.name._M_string_length = 0" (field_expression "p.header_.name._M_string_length" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "p.header_.name.field_2._M_local_buf[0] = '\0';" (assignment_expression "p.header_.name.field_2._M_local_buf[0] = '\0'" (subscript_expression "p.header_.name.field_2._M_local_buf[0]" (field_expression "p.header_.name.field_2._M_local_buf" (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "p.archive_ = this;" (assignment_expression "p.archive_ = this" (field_expression "p.archive_" identifier . field_identifier) = identifier) ;) comment (labeled_statement "const_iterator::read_next_header(&p);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&p);" (call_expression "read_next_header(&p)" identifier (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;)) (expression_statement "paVar1 = &local_88.header_.name.field_2;" (assignment_expression "paVar1 = &local_88.header_.name.field_2" identifier = (pointer_expression "&local_88.header_.name.field_2" & (field_expression "local_88.header_.name.field_2" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier))) ;) (while_statement "while( true ) {\n    local_88.off_ = (this->input_file_->file_).size_;\n    local_88.header_.name.field_2._M_local_buf[0] = '\0';\n    local_88.header_.name._M_string_length = 0;\n    local_88.archive_ = this;\n    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    const_iterator::read_next_header(&local_88);\n    oVar3 = local_88.header_.off;\n    oVar2 = p.off_;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }\n    if (oVar2 == oVar3) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    read_symbols(this,p.header_.off);\n    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_88.off_ = (this->input_file_->file_).size_;\n    local_88.header_.name.field_2._M_local_buf[0] = '\0';\n    local_88.header_.name._M_string_length = 0;\n    local_88.archive_ = this;\n    local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */\n    const_iterator::read_next_header(&local_88);\n    oVar3 = local_88.header_.off;\n    oVar2 = p.off_;\n    if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }\n    if (oVar2 == oVar3) break;\n                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */\n    read_symbols(this,p.header_.off);\n    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }\n  }" { (expression_statement "local_88.off_ = (this->input_file_->file_).size_;" (assignment_expression "local_88.off_ = (this->input_file_->file_).size_" (field_expression "local_88.off_" identifier . field_identifier) = (field_expression "(this->input_file_->file_).size_" (parenthesized_expression "(this->input_file_->file_)" ( (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "local_88.header_.name.field_2._M_local_buf[0] = '\0';" (assignment_expression "local_88.header_.name.field_2._M_local_buf[0] = '\0'" (subscript_expression "local_88.header_.name.field_2._M_local_buf[0]" (field_expression "local_88.header_.name.field_2._M_local_buf" (field_expression "local_88.header_.name.field_2" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_88.header_.name._M_string_length = 0;" (assignment_expression "local_88.header_.name._M_string_length = 0" (field_expression "local_88.header_.name._M_string_length" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "local_88.archive_ = this;" (assignment_expression "local_88.archive_ = this" (field_expression "local_88.archive_" identifier . field_identifier) = identifier) ;) (expression_statement "local_88.header_.name._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "local_88.header_.name._M_dataplus._M_p = (pointer)paVar1" (field_expression "local_88.header_.name._M_dataplus._M_p" (field_expression "local_88.header_.name._M_dataplus" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (labeled_statement "const_iterator::read_next_header(&local_88);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&local_88);" (call_expression "read_next_header(&local_88)" identifier (argument_list "(&local_88)" ( (pointer_expression "&local_88" & identifier) ))) ;)) (expression_statement "oVar3 = local_88.header_.off;" (assignment_expression "oVar3 = local_88.header_.off" identifier = (field_expression "local_88.header_.off" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier)) ;) (expression_statement "oVar2 = p.off_;" (assignment_expression "oVar2 = p.off_" identifier = (field_expression "p.off_" identifier . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1) {\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n         *)local_88.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n         *)local_88.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_88.header_.name._M_dataplus._M_p" (field_expression "local_88.header_.name._M_dataplus" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n      operator_delete(local_88.header_.name._M_dataplus._M_p);\n    }" { (expression_statement "operator_delete(local_88.header_.name._M_dataplus._M_p);" (call_expression "operator_delete(local_88.header_.name._M_dataplus._M_p)" identifier (argument_list "(local_88.header_.name._M_dataplus._M_p)" ( (field_expression "local_88.header_.name._M_dataplus._M_p" (field_expression "local_88.header_.name._M_dataplus" (field_expression "local_88.header_.name" (field_expression "local_88.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (if_statement "if (oVar2 == oVar3) break;" if (parenthesized_expression "(oVar2 == oVar3)" ( (binary_expression "oVar2 == oVar3" identifier == identifier) )) (break_statement "break;" break ;)) comment (expression_statement "read_symbols(this,p.header_.off);" (call_expression "read_symbols(this,p.header_.off)" identifier (argument_list "(this,p.header_.off)" ( identifier , (field_expression "p.header_.off" (field_expression "p.header_" identifier . field_identifier) . field_identifier) ))) ;) (if_statement "if (p.off_ != ((p.archive_)->input_file_->file_).size_) {\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }" if (parenthesized_expression "(p.off_ != ((p.archive_)->input_file_->file_).size_)" ( (binary_expression "p.off_ != ((p.archive_)->input_file_->file_).size_" (field_expression "p.off_" identifier . field_identifier) != (field_expression "((p.archive_)->input_file_->file_).size_" (parenthesized_expression "((p.archive_)->input_file_->file_)" ( (field_expression "(p.archive_)->input_file_->file_" (field_expression "(p.archive_)->input_file_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n      p.off_ = p.off_ + 0x3c;\n      if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }\n      if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }\n      const_iterator::read_next_header(&p);\n    }" { (expression_statement "p.off_ = p.off_ + 0x3c;" (assignment_expression "p.off_ = p.off_ + 0x3c" (field_expression "p.off_" identifier . field_identifier) = (binary_expression "p.off_ + 0x3c" (field_expression "p.off_" identifier . field_identifier) + number_literal)) ;) (if_statement "if ((p.archive_)->is_thin_archive_ == false) {\n        p.off_ = p.off_ + p.header_.size;\n      }" if (parenthesized_expression "((p.archive_)->is_thin_archive_ == false)" ( (binary_expression "(p.archive_)->is_thin_archive_ == false" (field_expression "(p.archive_)->is_thin_archive_" (parenthesized_expression "(p.archive_)" ( (field_expression "p.archive_" identifier . field_identifier) )) -> field_identifier) == false) )) (compound_statement "{\n        p.off_ = p.off_ + p.header_.size;\n      }" { (expression_statement "p.off_ = p.off_ + p.header_.size;" (assignment_expression "p.off_ = p.off_ + p.header_.size" (field_expression "p.off_" identifier . field_identifier) = (binary_expression "p.off_ + p.header_.size" (field_expression "p.off_" identifier . field_identifier) + (field_expression "p.header_.size" (field_expression "p.header_" identifier . field_identifier) . field_identifier))) ;) })) (if_statement "if ((p.off_ & 1U) != 0) {\n        p.off_ = p.off_ + 1;\n      }" if (parenthesized_expression "((p.off_ & 1U) != 0)" ( (binary_expression "(p.off_ & 1U) != 0" (parenthesized_expression "(p.off_ & 1U)" ( (binary_expression "p.off_ & 1U" (field_expression "p.off_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        p.off_ = p.off_ + 1;\n      }" { (expression_statement "p.off_ = p.off_ + 1;" (assignment_expression "p.off_ = p.off_ + 1" (field_expression "p.off_" identifier . field_identifier) = (binary_expression "p.off_ + 1" (field_expression "p.off_" identifier . field_identifier) + number_literal)) ;) })) (labeled_statement "const_iterator::read_next_header(&p);" statement_identifier : (ERROR ":" :) (expression_statement "read_next_header(&p);" (call_expression "read_next_header(&p)" identifier (argument_list "(&p)" ( (pointer_expression "&p" & identifier) ))) ;)) })) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {\n    operator_delete(p.header_.name._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2" (binary_expression "allocator<char>_>_9\n       *)p.header_.name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)p.header_.name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier))) != (pointer_expression "&p.header_.name.field_2" & (field_expression "p.header_.name.field_2" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier))) )) )) (compound_statement "{\n    operator_delete(p.header_.name._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(p.header_.name._M_dataplus._M_p);" (call_expression "operator_delete(p.header_.name._M_dataplus._M_p)" identifier (argument_list "(p.header_.name._M_dataplus._M_p)" ( (field_expression "p.header_.name._M_dataplus._M_p" (field_expression "p.header_.name._M_dataplus" (field_expression "p.header_.name" (field_expression "p.header_" identifier . field_identifier) . field_identifier) . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0028f210(long param_1)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    \n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}\n\n" (function_definition "void FUN_0028f210(long param_1)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    \n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0028f210(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    \n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long local_d8;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_d0;" type_identifier identifier ;) (declaration "undefined1 *local_c8;" type_identifier (pointer_declarator "*local_c8" * identifier) ;) (declaration "undefined8 local_c0;" type_identifier identifier ;) (declaration "undefined1 local_b8 [16];" type_identifier (array_declarator "local_b8 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_88;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined1 *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined1 local_68 [16];" type_identifier (array_declarator "local_68 [16]" identifier [ number_literal ]) ;) (declaration "ulong local_58;" type_identifier identifier ;) (expression_statement "local_c8 = local_b8;" (assignment_expression "local_c8 = local_b8" identifier = identifier) ;) (expression_statement "local_d0 = 8;" (assignment_expression "local_d0 = 8" identifier = number_literal) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d8 = param_1;" (assignment_expression "local_d8 = param_1" identifier = identifier) ;) (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" identifier (argument_list "(&local_d8)" ( (pointer_expression "&local_d8" & identifier) ))) ;) (while_statement "while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" { (expression_statement "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);" (assignment_expression "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" * (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x38) + 0x58)" ( (binary_expression "*(long *)(param_1 + 0x38) + 0x58" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "local_68[0] = 0;" (assignment_expression "local_68[0] = 0" (subscript_expression "local_68[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" identifier = identifier) ;) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" identifier = identifier) ;) (expression_statement "FUN_0028d2f0(&local_88);" (call_expression "FUN_0028d2f0(&local_88)" identifier (argument_list "(&local_88)" ( (pointer_expression "&local_88" & identifier) ))) ;) (expression_statement "uVar2 = local_58;" (assignment_expression "uVar2 = local_58" identifier = identifier) ;) (expression_statement "uVar1 = local_d0;" (assignment_expression "uVar1 = local_d0" identifier = identifier) ;) (if_statement "if (local_78 != local_68) {\n      FUN_002dac60();\n    }" if (parenthesized_expression "(local_78 != local_68)" ( (binary_expression "local_78 != local_68" identifier != identifier) )) (compound_statement "{\n      FUN_002dac60();\n    }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (uVar1 == uVar2) break;" if (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "FUN_0028f080(param_1,local_a8);" (call_expression "FUN_0028f080(param_1,local_a8)" identifier (argument_list "(param_1,local_a8)" ( identifier , identifier ))) ;) (if_statement "if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" if (parenthesized_expression "(local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58))" ( (binary_expression "local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" identifier != (pointer_expression "*(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" * (cast_expression "(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_d8 + 0x38) + 0x58)" ( (binary_expression "*(long *)(local_d8 + 0x38) + 0x58" (pointer_expression "*(long *)(local_d8 + 0x38)" * (cast_expression "(long *)(local_d8 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0x38)" ( (binary_expression "local_d8 + 0x38" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" { (expression_statement "local_d0 = local_d0 + 0x3c;" (assignment_expression "local_d0 = local_d0 + 0x3c" identifier = (binary_expression "local_d0 + 0x3c" identifier + number_literal)) ;) (if_statement "if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }" if (parenthesized_expression "(*(char *)(local_d8 + 0x128) == '\0')" ( (binary_expression "*(char *)(local_d8 + 0x128) == '\0'" (pointer_expression "*(char *)(local_d8 + 0x128)" * (cast_expression "(char *)(local_d8 + 0x128)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d8 + 0x128)" ( (binary_expression "local_d8 + 0x128" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        local_d0 = local_d0 + local_98;\n      }" { (expression_statement "local_d0 = local_d0 + local_98;" (assignment_expression "local_d0 = local_d0 + local_98" identifier = (binary_expression "local_d0 + local_98" identifier + identifier)) ;) })) (if_statement "if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }" if (parenthesized_expression "((local_d0 & 1) != 0)" ( (binary_expression "(local_d0 & 1) != 0" (parenthesized_expression "(local_d0 & 1)" ( (binary_expression "local_d0 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_d0 = local_d0 + 1;\n      }" { (expression_statement "local_d0 = local_d0 + 1;" (assignment_expression "local_d0 = local_d0 + 1" identifier = (binary_expression "local_d0 + 1" identifier + number_literal)) ;) })) (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" identifier (argument_list "(&local_d8)" ( (pointer_expression "&local_d8" & identifier) ))) ;) })) })) (if_statement "if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }" if (parenthesized_expression "(local_c8 != local_b8)" ( (binary_expression "local_c8 != local_b8" identifier != identifier) )) (compound_statement "{\n    FUN_002dac60();\n  }" { (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0028f210(long param_1)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    \n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0028f210(long param_1)" (identifier "FUN_0028f210") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long local_d8;\n  ulong local_d0;\n  undefined1 *local_c8;\n  undefined8 local_c0;\n  undefined1 local_b8 [16];\n  undefined8 local_a8;\n  long local_98;\n  long local_88;\n  undefined8 local_80;\n  undefined1 *local_78;\n  undefined8 local_70;\n  undefined1 local_68 [16];\n  ulong local_58;\n  \n  local_c8 = local_b8;\n  local_d0 = 8;\n  local_c0 = 0;\n  local_b8[0] = 0;\n  local_d8 = param_1;\n                    \n  FUN_0028d2f0(&local_d8);\n  while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }\n  if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }\n  return;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long local_d8;" (sized_type_specifier "long" (long "long")) (identifier "local_d8") (; ";")) (declaration "ulong local_d0;" (type_identifier "ulong") (identifier "local_d0") (; ";")) (declaration "undefined1 *local_c8;" (type_identifier "undefined1") (pointer_declarator "*local_c8" (* "*") (identifier "local_c8")) (; ";")) (declaration "undefined8 local_c0;" (type_identifier "undefined8") (identifier "local_c0") (; ";")) (declaration "undefined1 local_b8 [16];" (type_identifier "undefined1") (array_declarator "local_b8 [16]" (identifier "local_b8") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 local_a8;" (type_identifier "undefined8") (identifier "local_a8") (; ";")) (declaration "long local_98;" (sized_type_specifier "long" (long "long")) (identifier "local_98") (; ";")) (declaration "long local_88;" (sized_type_specifier "long" (long "long")) (identifier "local_88") (; ";")) (declaration "undefined8 local_80;" (type_identifier "undefined8") (identifier "local_80") (; ";")) (declaration "undefined1 *local_78;" (type_identifier "undefined1") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (declaration "undefined1 local_68 [16];" (type_identifier "undefined1") (array_declarator "local_68 [16]" (identifier "local_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "ulong local_58;" (type_identifier "ulong") (identifier "local_58") (; ";")) (expression_statement "local_c8 = local_b8;" (assignment_expression "local_c8 = local_b8" (identifier "local_c8") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "local_d0 = 8;" (assignment_expression "local_d0 = 8" (identifier "local_d0") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b8[0] = 0;" (assignment_expression "local_b8[0] = 0" (subscript_expression "local_b8[0]" (identifier "local_b8") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = param_1;" (assignment_expression "local_d8 = param_1" (identifier "local_d8") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" (identifier "FUN_0028d2f0") (argument_list "(&local_d8)" (( "(") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) () ")"))) (; ";")) (while_statement "while( true ) {\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);\n    local_68[0] = 0;\n    local_70 = 0;\n    local_88 = param_1;\n    local_78 = local_68;\n                    \n    FUN_0028d2f0(&local_88);\n    uVar2 = local_58;\n    uVar1 = local_d0;\n    if (local_78 != local_68) {\n      FUN_002dac60();\n    }\n    if (uVar1 == uVar2) break;\n                    \n    FUN_0028f080(param_1,local_a8);\n    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }\n  }" ({ "{") (expression_statement "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);" (assignment_expression "local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" (identifier "local_80") (= "=") (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x38) + 0x58)" (( "(") (binary_expression "*(long *)(param_1 + 0x38) + 0x58" (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "local_68[0] = 0;" (assignment_expression "local_68[0] = 0" (subscript_expression "local_68[0]" (identifier "local_68") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_88 = param_1;" (assignment_expression "local_88 = param_1" (identifier "local_88") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_78 = local_68;" (assignment_expression "local_78 = local_68" (identifier "local_78") (= "=") (identifier "local_68")) (; ";")) (expression_statement "FUN_0028d2f0(&local_88);" (call_expression "FUN_0028d2f0(&local_88)" (identifier "FUN_0028d2f0") (argument_list "(&local_88)" (( "(") (pointer_expression "&local_88" (& "&") (identifier "local_88")) () ")"))) (; ";")) (expression_statement "uVar2 = local_58;" (assignment_expression "uVar2 = local_58" (identifier "uVar2") (= "=") (identifier "local_58")) (; ";")) (expression_statement "uVar1 = local_d0;" (assignment_expression "uVar1 = local_d0" (identifier "uVar1") (= "=") (identifier "local_d0")) (; ";")) (if_statement "if (local_78 != local_68) {\n      FUN_002dac60();\n    }" (if "if") (parenthesized_expression "(local_78 != local_68)" (( "(") (binary_expression "local_78 != local_68" (identifier "local_78") (!= "!=") (identifier "local_68")) () ")")) (compound_statement "{\n      FUN_002dac60();\n    }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar1 == uVar2) break;" (if "if") (parenthesized_expression "(uVar1 == uVar2)" (( "(") (binary_expression "uVar1 == uVar2" (identifier "uVar1") (== "==") (identifier "uVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "FUN_0028f080(param_1,local_a8);" (call_expression "FUN_0028f080(param_1,local_a8)" (identifier "FUN_0028f080") (argument_list "(param_1,local_a8)" (( "(") (identifier "param_1") (, ",") (identifier "local_a8") () ")"))) (; ";")) (if_statement "if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" (if "if") (parenthesized_expression "(local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58))" (( "(") (binary_expression "local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" (identifier "local_d0") (!= "!=") (pointer_expression "*(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" (* "*") (cast_expression "(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_d8 + 0x38) + 0x58)" (( "(") (binary_expression "*(long *)(local_d8 + 0x38) + 0x58" (pointer_expression "*(long *)(local_d8 + 0x38)" (* "*") (cast_expression "(long *)(local_d8 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d8 + 0x38)" (( "(") (binary_expression "local_d8 + 0x38" (identifier "local_d8") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (compound_statement "{\n      local_d0 = local_d0 + 0x3c;\n      if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }\n      if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }\n      FUN_0028d2f0(&local_d8);\n    }" ({ "{") (expression_statement "local_d0 = local_d0 + 0x3c;" (assignment_expression "local_d0 = local_d0 + 0x3c" (identifier "local_d0") (= "=") (binary_expression "local_d0 + 0x3c" (identifier "local_d0") (+ "+") (number_literal "0x3c"))) (; ";")) (if_statement "if (*(char *)(local_d8 + 0x128) == '\0') {\n        local_d0 = local_d0 + local_98;\n      }" (if "if") (parenthesized_expression "(*(char *)(local_d8 + 0x128) == '\0')" (( "(") (binary_expression "*(char *)(local_d8 + 0x128) == '\0'" (pointer_expression "*(char *)(local_d8 + 0x128)" (* "*") (cast_expression "(char *)(local_d8 + 0x128)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d8 + 0x128)" (( "(") (binary_expression "local_d8 + 0x128" (identifier "local_d8") (+ "+") (number_literal "0x128")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        local_d0 = local_d0 + local_98;\n      }" ({ "{") (expression_statement "local_d0 = local_d0 + local_98;" (assignment_expression "local_d0 = local_d0 + local_98" (identifier "local_d0") (= "=") (binary_expression "local_d0 + local_98" (identifier "local_d0") (+ "+") (identifier "local_98"))) (; ";")) (} "}"))) (if_statement "if ((local_d0 & 1) != 0) {\n        local_d0 = local_d0 + 1;\n      }" (if "if") (parenthesized_expression "((local_d0 & 1) != 0)" (( "(") (binary_expression "(local_d0 & 1) != 0" (parenthesized_expression "(local_d0 & 1)" (( "(") (binary_expression "local_d0 & 1" (identifier "local_d0") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_d0 = local_d0 + 1;\n      }" ({ "{") (expression_statement "local_d0 = local_d0 + 1;" (assignment_expression "local_d0 = local_d0 + 1" (identifier "local_d0") (= "=") (binary_expression "local_d0 + 1" (identifier "local_d0") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "FUN_0028d2f0(&local_d8);" (call_expression "FUN_0028d2f0(&local_d8)" (identifier "FUN_0028d2f0") (argument_list "(&local_d8)" (( "(") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (local_c8 != local_b8) {\n    FUN_002dac60();\n  }" (if "if") (parenthesized_expression "(local_c8 != local_b8)" (( "(") (binary_expression "local_c8 != local_b8" (identifier "local_c8") (!= "!=") (identifier "local_b8")) () ")")) (compound_statement "{\n    FUN_002dac60();\n  }" ({ "{") (expression_statement "FUN_002dac60();" (call_expression "FUN_002dac60()" (identifier "FUN_002dac60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void read_all_symbols(Archive * this) */

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

{
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_2 var_8;
  type_2 var_9;
  type_3 p;
  type_3 local_88;
  
  p.header_.name._M_dataplus._M_p = (type_4)&p.header_.name.field_2;
  p.off_ = 8;
  p.header_.name._M_string_length = 0;
  p.header_.name.field_2._M_local_buf[0] = '\0';
  p.archive_ = this;
                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */
  const_iterator::var_6(&p);
  var_5 = &local_88.header_.name.field_2;
  while( true ) {
    local_88.off_ = (this->input_file_->file_).size_;
    local_88.header_.name.field_2._M_local_buf[0] = '\0';
    local_88.header_.name._M_string_length = 0;
    local_88.archive_ = this;
    local_88.header_.name._M_dataplus._M_p = (type_4)var_5;
                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */
    const_iterator::var_6(&local_88);
    var_9 = local_88.header_.off;
    var_8 = p.off_;
    if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
         *)local_88.header_.name._M_dataplus._M_p != var_5) {
      var_7(local_88.header_.name._M_dataplus._M_p);
    }
    if (var_8 == var_9) break;
                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */
    var_10(this,p.header_.off);
    if (p.off_ != ((p.archive_)->input_file_->file_).size_) {
      p.off_ = p.off_ + 0x3c;
      if ((p.archive_)->is_thin_archive_ == false) {
        p.off_ = p.off_ + p.header_.size;
      }
      if ((p.off_ & 1U) != 0) {
        p.off_ = p.off_ + 1;
      }
      const_iterator::var_6(&p);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)p.header_.name._M_dataplus._M_p != &p.header_.name.field_2) {
    var_7(p.header_.name._M_dataplus._M_p);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement))))

void MASKED(long param_1)

{
  ulong uVar1;
  ulong uVar2;
  long local_d8;
  ulong local_d0;
  undefined1 *local_c8;
  undefined8 local_c0;
  undefined1 local_b8 [16];
  undefined8 local_a8;
  long local_98;
  long local_88;
  undefined8 local_80;
  undefined1 *local_78;
  undefined8 local_70;
  undefined1 local_68 [16];
  ulong local_58;
  
  local_c8 = local_b8;
  local_d0 = 8;
  local_c0 = 0;
  local_b8[0] = 0;
  local_d8 = param_1;
                    /* try { // try from 0028f24f to 0028f253 has its CatchHandler @ 0028f32d */
  FUN_0028d2f0(&local_d8);
  while( true ) {
    local_80 = *(undefined8 *)(*(long *)(param_1 + 0x38) + 0x58);
    local_68[0] = 0;
    local_70 = 0;
    local_88 = param_1;
    local_78 = local_68;
                    /* try { // try from 0028f288 to 0028f28c has its CatchHandler @ 0028f33d */
    FUN_0028d2f0(&local_88);
    uVar2 = local_58;
    uVar1 = local_d0;
    if (local_78 != local_68) {
      FUN_002dac60();
    }
    if (uVar1 == uVar2) break;
                    /* try { // try from 0028f2b6 to 0028f2fe has its CatchHandler @ 0028f335 */
    FUN_0028f080(param_1,local_a8);
    if (local_d0 != *(ulong *)(*(long *)(local_d8 + 0x38) + 0x58)) {
      local_d0 = local_d0 + 0x3c;
      if (*(char *)(local_d8 + 0x128) == '\0') {
        local_d0 = local_d0 + local_98;
      }
      if ((local_d0 & 1) != 0) {
        local_d0 = local_d0 + 1;
      }
      FUN_0028d2f0(&local_d8);
    }
  }
  if (local_c8 != local_b8) {
    FUN_002dac60();
  }
  return;
}

