
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void print_symbol_counts(Cref_inputs * this, Symbol_table * symtab,
   FILE * f) */

void __thiscall
gold::Cref_inputs::print_symbol_counts(Cref_inputs *this,Symbol_table *symtab,FILE *f)

{
  Object *pOVar1;
  int *piVar2;
  _Rb_tree_node_base *p_Var3;
  pointer ppOVar4;
  undefined4 *puVar5;
  
  ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
            _M_impl._M_start;
  if (ppOVar4 !=
      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.
      _M_finish) {
    do {
      pOVar1 = *ppOVar4;
      ppOVar4 = ppOVar4 + 1;
      print_object_symbol_counts(this,symtab,f,pOVar1);
    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
             _M_impl._M_finish != ppOVar4);
  }
  for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
      (_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;
      p_Var3 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var3)) {
    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,
            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);
    piVar2 = (int *)p_Var3[4]._M_color;
    puVar5 = (undefined4 *)*piVar2;
    if (puVar5 != (undefined4 *)piVar2[1]) {
      do {
        pOVar1 = (Object *)*puVar5;
        puVar5 = puVar5 + 1;
        print_object_symbol_counts(this,symtab,f,pOVar1);
      } while ((undefined4 *)piVar2[1] != puVar5);
    }
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)

{
  undefined4 uVar1;
  int *piVar2;
  int *piVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != (undefined4 *)param_1[1]) {
    do {
      uVar1 = *puVar4;
      puVar4 = puVar4 + 1;
      FUN_00141ea0(param_1,param_2,param_3,uVar1);
    } while ((undefined4 *)param_1[1] != puVar4);
  }
  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)
      ) {
    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],
            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);
    piVar2 = (int *)piVar3[0x10];
    puVar4 = (undefined4 *)*piVar2;
    if (puVar4 != (undefined4 *)piVar2[1]) {
      do {
        uVar1 = *puVar4;
        puVar4 = puVar4 + 1;
        FUN_00141ea0(param_1,param_2,param_3,uVar1);
      } while ((undefined4 *)piVar2[1] != puVar4);
    }
  }
  return;
}


CALL 0x0004fb76
ADD EAX,0x1c00cb
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV ESI,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x4],EAX
MOV EBX,dword ptr [ESI]
CMP EBX,dword ptr [ESI + 0x4]
JZ 0x00141f75
MOV EBP,dword ptr [ESP + 0x34]
LEA ESI,[ESI]
NOP
PUSH dword ptr [EBX]
ADD EBX,0x4
PUSH EDI
PUSH EBP
PUSH ESI
CALL 0x00141ea0
ADD ESP,0x10
CMP dword ptr [ESI + 0x4],EBX
JNZ 0x00141f60
MOV EAX,dword ptr [ESI + 0x18]
LEA EDX,[ESI + 0x10]
MOV dword ptr [ESP + 0x8],EDX
MOV dword ptr [ESP],EAX
CMP EAX,EDX
JZ 0x0014200f
MOV EAX,dword ptr [ESP + 0x4]
LEA EAX,[EAX + 0xfff32bca]
MOV dword ptr [ESP + 0xc],EAX
LEA ESI,[ESI]
NOP
MOV EBP,dword ptr [ESP]
SUB ESP,0xc
MOV EDX,dword ptr [EBP + 0x40]
MOV EAX,dword ptr [EDX + 0x4]
SUB EAX,dword ptr [EDX]
SAR EAX,0x2
PUSH EAX
PUSH dword ptr [EBP + 0x44]
PUSH dword ptr [EBP + 0x28]
PUSH dword ptr [ESP + 0x24]
PUSH EDI
MOV EBX,dword ptr [ESP + 0x24]
CALL 0x00026750
MOV EBX,dword ptr [EBP + 0x40]
ADD ESP,0x20
MOV EAX,dword ptr [EBX]
CMP EAX,dword ptr [EBX + 0x4]
JZ 0x00141ff1
MOV EBP,EAX
LEA ESI,[ESI]
PUSH dword ptr [EBP]
ADD EBP,0x4
PUSH EDI
PUSH dword ptr [ESP + 0x3c]
PUSH ESI
CALL 0x00141ea0
ADD ESP,0x10
CMP dword ptr [EBX + 0x4],EBP
JNZ 0x00141fd8
SUB ESP,0xc
PUSH dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00181dd0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP],EAX
CMP EAX,EDX
JNZ 0x00141fa0
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)" identifier (parameter_list "(int *param_1,undefined4 param_2,FILE *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "FILE *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)param_1[1])" ( (binary_expression "puVar4 != (undefined4 *)param_1[1]" identifier != (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" { (do_statement "do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);" do (compound_statement "{\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    }" { (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" identifier (argument_list "(param_1,param_2,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((undefined4 *)param_1[1] != puVar4)" ( (binary_expression "(undefined4 *)param_1[1] != puVar4" (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) )) ;) })) (for_statement "for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" for ( (assignment_expression "piVar3 = (int *)param_1[6]" identifier = (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ; (binary_expression "piVar3 != param_1 + 4" identifier != (binary_expression "param_1 + 4" identifier + number_literal)) ; (assignment_expression "piVar3 = (int *)thunk_FUN_00181d80(piVar3)" identifier = (cast_expression "(int *)thunk_FUN_00181d80(piVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_00181d80(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))))) ) (compound_statement "{\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" { (expression_statement "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);" (call_expression "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" identifier (argument_list "(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" ( identifier , (string_literal ""archive %s %zu %zu\n"" " string_content escape_sequence ") , (subscript_expression "piVar3[10]" identifier [ number_literal ]) , (subscript_expression "piVar3[0x11]" identifier [ number_literal ]) , (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2" (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10]" (subscript_expression "((int *)piVar3[0x10])[1]" (parenthesized_expression "((int *)piVar3[0x10])" ( (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ])) )) [ number_literal ]) - (pointer_expression "*(int *)piVar3[0x10]" * (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ])))) >> number_literal) ))) ;) (expression_statement "piVar2 = (int *)piVar3[0x10];" (assignment_expression "piVar2 = (int *)piVar3[0x10]" identifier = (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ]))) ;) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" identifier = (cast_expression "(undefined4 *)*piVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" ( (binary_expression "puVar4 != (undefined4 *)piVar2[1]" identifier != (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" { (do_statement "do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);" do (compound_statement "{\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      }" { (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" identifier (argument_list "(param_1,param_2,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((undefined4 *)piVar2[1] != puVar4)" ( (binary_expression "(undefined4 *)piVar2[1] != puVar4" (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ])) != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Type propagation algorithm not settling */\n/* DWARF original prototype: void print_symbol_counts(Cref_inputs * this, Symbol_table * symtab,\n   FILE * f) */\n\nvoid __thiscall\ngold::Cref_inputs::print_symbol_counts(Cref_inputs *this,Symbol_table *symtab,FILE *f)\n\n{\n  Object *pOVar1;\n  int *piVar2;\n  _Rb_tree_node_base *p_Var3;\n  pointer ppOVar4;\n  undefined4 *puVar5;\n  \n  ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;\n  if (ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);\n  }\n  for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n      (_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;\n      p_Var3 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var3)) {\n    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);\n    piVar2 = (int *)p_Var3[4]._M_color;\n    puVar5 = (undefined4 *)*piVar2;\n    if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Cref_inputs::print_symbol_counts(Cref_inputs *this,Symbol_table *symtab,FILE *f)\n\n{\n  Object *pOVar1;\n  int *piVar2;\n  _Rb_tree_node_base *p_Var3;\n  pointer ppOVar4;\n  undefined4 *puVar5;\n  \n  ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;\n  if (ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);\n  }\n  for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n      (_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;\n      p_Var3 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var3)) {\n    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);\n    piVar2 = (int *)p_Var3[4]._M_color;\n    puVar5 = (undefined4 *)*piVar2;\n    if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Cref_inputs::" identifier : : identifier : :) (function_declarator "print_symbol_counts(Cref_inputs *this,Symbol_table *symtab,FILE *f)" identifier (parameter_list "(Cref_inputs *this,Symbol_table *symtab,FILE *f)" ( (parameter_declaration "Cref_inputs *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "FILE *f" type_identifier (pointer_declarator "*f" * identifier)) ))) (compound_statement "{\n  Object *pOVar1;\n  int *piVar2;\n  _Rb_tree_node_base *p_Var3;\n  pointer ppOVar4;\n  undefined4 *puVar5;\n  \n  ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;\n  if (ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);\n  }\n  for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n      (_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;\n      p_Var3 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var3)) {\n    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);\n    piVar2 = (int *)p_Var3[4]._M_color;\n    puVar5 = (undefined4 *)*piVar2;\n    if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }\n  }\n  return;\n}" { (declaration "Object *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "_Rb_tree_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "pointer ppOVar4;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start;" (field_expression "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl._M_start" (field_expression "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n            _M_impl" (binary_expression "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "ppOVar4 = (this->objects_).super__Vector_base<gold::Object*,_std" (assignment_expression "ppOVar4 = (this->objects_).super__Vector_base<gold" identifier = (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);\n  }" if (parenthesized_expression "(ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish)" ( (field_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish" (field_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl" (binary_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold::Object*,_std" (binary_expression "ppOVar4 !=\n      (this->objects_).super__Vector_base<gold" identifier != (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);\n  }" { (do_statement "do {\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    } while ((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4);" do (compound_statement "{\n      pOVar1 = *ppOVar4;\n      ppOVar4 = ppOVar4 + 1;\n      print_object_symbol_counts(this,symtab,f,pOVar1);\n    }" { (expression_statement "pOVar1 = *ppOVar4;" (assignment_expression "pOVar1 = *ppOVar4" identifier = (pointer_expression "*ppOVar4" * identifier)) ;) (expression_statement "ppOVar4 = ppOVar4 + 1;" (assignment_expression "ppOVar4 = ppOVar4 + 1" identifier = (binary_expression "ppOVar4 + 1" identifier + number_literal)) ;) (expression_statement "print_object_symbol_counts(this,symtab,f,pOVar1);" (call_expression "print_object_symbol_counts(this,symtab,f,pOVar1)" identifier (argument_list "(this,symtab,f,pOVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4)" ( (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish != ppOVar4" (field_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl._M_finish" (field_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n             _M_impl" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std" (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (for_statement "for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n      (_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;\n      p_Var3 = (_Rb_tree_node_base *)std::_Rb_tree_increment(p_Var3)) {\n    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);\n    piVar2 = (int *)p_Var3[4]._M_color;\n    puVar5 = (undefined4 *)*piVar2;\n    if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }\n  }" for ( (assignment_expression "p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header" (field_expression "(this->archives_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->archives_)._M_t._M_impl" (field_expression "(this->archives_)._M_t" (parenthesized_expression "(this->archives_)" ( (field_expression "this->archives_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ; (binary_expression "(_Rb_tree_header *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)p_Var3" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&(this->archives_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->archives_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->archives_)._M_t._M_impl" (field_expression "(this->archives_)._M_t" (parenthesized_expression "(this->archives_)" ( (field_expression "this->archives_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) ; (ERROR "p_Var3 = (_Rb_tree_node_base *)std::" (assignment_expression "p_Var3 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (call_expression "_Rb_tree_increment(p_Var3)" identifier (argument_list "(p_Var3)" ( identifier ))) ) (compound_statement "{\n    fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);\n    piVar2 = (int *)p_Var3[4]._M_color;\n    puVar5 = (undefined4 *)*piVar2;\n    if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }\n  }" { (expression_statement "fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);" (call_expression "fprintf((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2)" identifier (argument_list "((FILE *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,\n            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2)" ( (cast_expression "(FILE *)f" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""archive %s %zu %zu\n"" " string_content escape_sequence ") , (field_expression "p_Var3[2]._M_left" (subscript_expression "p_Var3[2]" identifier [ number_literal ]) . field_identifier) , (field_expression "p_Var3[4]._M_parent" (subscript_expression "p_Var3[4]" identifier [ number_literal ]) . field_identifier) , (binary_expression "((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2" (binary_expression "((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color" (subscript_expression "((int *)p_Var3[4]._M_color)[1]" (parenthesized_expression "((int *)p_Var3[4]._M_color)" ( (cast_expression "(int *)p_Var3[4]._M_color" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var3[4]._M_color" (subscript_expression "p_Var3[4]" identifier [ number_literal ]) . field_identifier)) )) [ number_literal ]) - (pointer_expression "*(int *)p_Var3[4]._M_color" * (cast_expression "(int *)p_Var3[4]._M_color" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var3[4]._M_color" (subscript_expression "p_Var3[4]" identifier [ number_literal ]) . field_identifier)))) >> number_literal) ))) ;) (expression_statement "piVar2 = (int *)p_Var3[4]._M_color;" (assignment_expression "piVar2 = (int *)p_Var3[4]._M_color" identifier = (cast_expression "(int *)p_Var3[4]._M_color" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var3[4]._M_color" (subscript_expression "p_Var3[4]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "puVar5 = (undefined4 *)*piVar2;" (assignment_expression "puVar5 = (undefined4 *)*piVar2" identifier = (cast_expression "(undefined4 *)*piVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar5 != (undefined4 *)piVar2[1]) {\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }" if (parenthesized_expression "(puVar5 != (undefined4 *)piVar2[1])" ( (binary_expression "puVar5 != (undefined4 *)piVar2[1]" identifier != (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);\n    }" { (do_statement "do {\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      } while ((undefined4 *)piVar2[1] != puVar5);" do (compound_statement "{\n        pOVar1 = (Object *)*puVar5;\n        puVar5 = puVar5 + 1;\n        print_object_symbol_counts(this,symtab,f,pOVar1);\n      }" { (expression_statement "pOVar1 = (Object *)*puVar5;" (assignment_expression "pOVar1 = (Object *)*puVar5" identifier = (cast_expression "(Object *)*puVar5" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "print_object_symbol_counts(this,symtab,f,pOVar1);" (call_expression "print_object_symbol_counts(this,symtab,f,pOVar1)" identifier (argument_list "(this,symtab,f,pOVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((undefined4 *)piVar2[1] != puVar5)" ( (binary_expression "(undefined4 *)piVar2[1] != puVar5" (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ])) != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)" identifier (parameter_list "(int *param_1,undefined4 param_2,FILE *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "FILE *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)param_1[1])" ( (binary_expression "puVar4 != (undefined4 *)param_1[1]" identifier != (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" { (do_statement "do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);" do (compound_statement "{\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    }" { (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" identifier (argument_list "(param_1,param_2,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((undefined4 *)param_1[1] != puVar4)" ( (binary_expression "(undefined4 *)param_1[1] != puVar4" (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) != identifier) )) ;) })) (for_statement "for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" for ( (assignment_expression "piVar3 = (int *)param_1[6]" identifier = (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ; (binary_expression "piVar3 != param_1 + 4" identifier != (binary_expression "param_1 + 4" identifier + number_literal)) ; (assignment_expression "piVar3 = (int *)thunk_FUN_00181d80(piVar3)" identifier = (cast_expression "(int *)thunk_FUN_00181d80(piVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_00181d80(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))))) ) (compound_statement "{\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" { (expression_statement "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);" (call_expression "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" identifier (argument_list "(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" ( identifier , (string_literal ""archive %s %zu %zu\n"" " string_content escape_sequence ") , (subscript_expression "piVar3[10]" identifier [ number_literal ]) , (subscript_expression "piVar3[0x11]" identifier [ number_literal ]) , (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2" (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10]" (subscript_expression "((int *)piVar3[0x10])[1]" (parenthesized_expression "((int *)piVar3[0x10])" ( (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ])) )) [ number_literal ]) - (pointer_expression "*(int *)piVar3[0x10]" * (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ])))) >> number_literal) ))) ;) (expression_statement "piVar2 = (int *)piVar3[0x10];" (assignment_expression "piVar2 = (int *)piVar3[0x10]" identifier = (cast_expression "(int *)piVar3[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[0x10]" identifier [ number_literal ]))) ;) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" identifier = (cast_expression "(undefined4 *)*piVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" if (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" ( (binary_expression "puVar4 != (undefined4 *)piVar2[1]" identifier != (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" { (do_statement "do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);" do (compound_statement "{\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      }" { (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" identifier (argument_list "(param_1,param_2,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "((undefined4 *)piVar2[1] != puVar4)" ( (binary_expression "(undefined4 *)piVar2[1] != puVar4" (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" 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 (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (binary_expression IDENT + LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (binary_expression (binary_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )) [ LIT ]) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) >> LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)\n\n{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00141f30(int *param_1,undefined4 param_2,FILE *param_3)" (identifier "FUN_00141f30") (parameter_list "(int *param_1,undefined4 param_2,FILE *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "FILE *param_3" (type_identifier "FILE") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int *piVar2;\n  int *piVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }\n  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)param_1[1]) {\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)param_1[1])" (( "(") (binary_expression "puVar4 != (undefined4 *)param_1[1]" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);\n  }" ({ "{") (do_statement "do {\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    } while ((undefined4 *)param_1[1] != puVar4);" (do "do") (compound_statement "{\n      uVar1 = *puVar4;\n      puVar4 = puVar4 + 1;\n      FUN_00141ea0(param_1,param_2,param_3,uVar1);\n    }" ({ "{") (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" (identifier "uVar1") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" (identifier "FUN_00141ea0") (argument_list "(param_1,param_2,param_3,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)param_1[1] != puVar4)" (( "(") (binary_expression "(undefined4 *)param_1[1] != puVar4" (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (} "}"))) (for_statement "for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)\n      ) {\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" (for "for") (( "(") (assignment_expression "piVar3 = (int *)param_1[6]" (identifier "piVar3") (= "=") (cast_expression "(int *)param_1[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";") (binary_expression "piVar3 != param_1 + 4" (identifier "piVar3") (!= "!=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";") (assignment_expression "piVar3 = (int *)thunk_FUN_00181d80(piVar3)" (identifier "piVar3") (= "=") (cast_expression "(int *)thunk_FUN_00181d80(piVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_00181d80(piVar3)" (identifier "thunk_FUN_00181d80") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))))) () ")") (compound_statement "{\n    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);\n    piVar2 = (int *)piVar3[0x10];\n    puVar4 = (undefined4 *)*piVar2;\n    if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }\n  }" ({ "{") (expression_statement "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);" (call_expression "fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" (identifier "fprintf") (argument_list "(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],\n            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2)" (( "(") (identifier "param_3") (, ",") (string_literal ""archive %s %zu %zu\n"" (" """) (string_content "archive %s %zu %zu") (escape_sequence "\n") (" """)) (, ",") (subscript_expression "piVar3[10]" (identifier "piVar3") ([ "[") (number_literal "10") (] "]")) (, ",") (subscript_expression "piVar3[0x11]" (identifier "piVar3") ([ "[") (number_literal "0x11") (] "]")) (, ",") (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2" (binary_expression "((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10]" (subscript_expression "((int *)piVar3[0x10])[1]" (parenthesized_expression "((int *)piVar3[0x10])" (( "(") (cast_expression "(int *)piVar3[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[0x10]" (identifier "piVar3") ([ "[") (number_literal "0x10") (] "]"))) () ")")) ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*(int *)piVar3[0x10]" (* "*") (cast_expression "(int *)piVar3[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[0x10]" (identifier "piVar3") ([ "[") (number_literal "0x10") (] "]"))))) (>> ">>") (number_literal "2")) () ")"))) (; ";")) (expression_statement "piVar2 = (int *)piVar3[0x10];" (assignment_expression "piVar2 = (int *)piVar3[0x10]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar3[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[0x10]" (identifier "piVar3") ([ "[") (number_literal "0x10") (] "]")))) (; ";")) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*piVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" (( "(") (binary_expression "puVar4 != (undefined4 *)piVar2[1]" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)piVar2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n      do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);\n    }" ({ "{") (do_statement "do {\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      } while ((undefined4 *)piVar2[1] != puVar4);" (do "do") (compound_statement "{\n        uVar1 = *puVar4;\n        puVar4 = puVar4 + 1;\n        FUN_00141ea0(param_1,param_2,param_3,uVar1);\n      }" ({ "{") (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" (identifier "uVar1") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00141ea0(param_1,param_2,param_3,uVar1);" (call_expression "FUN_00141ea0(param_1,param_2,param_3,uVar1)" (identifier "FUN_00141ea0") (argument_list "(param_1,param_2,param_3,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)piVar2[1] != puVar4)" (( "(") (binary_expression "(undefined4 *)piVar2[1] != puVar4" (cast_expression "(undefined4 *)piVar2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Type propagation algorithm not settling */
/* DWARF original prototype: void print_symbol_counts(Cref_inputs * this, Symbol_table * symtab,
   FILE * f) */

void __thiscall
var_1::type_1::function_1(type_1 *this,type_2 *symtab,type_3 *f)

{
  type_4 *pOVar1;
  int *piVar2;
  type_5 *p_Var3;
  type_6 var_4;
  type_7 *var_8;
  
  var_4 = (this->objects_).super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>.
            _M_impl._M_start;
  if (var_4 !=
      (this->objects_).super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>._M_impl.
      _M_finish) {
    do {
      pOVar1 = *var_4;
      var_4 = var_4 + 1;
      var_5(this,symtab,f,pOVar1);
    } while ((this->objects_).super__Vector_base<var_1::type_4*,var_2::allocator<var_1::type_4*>var_3>.
             _M_impl._M_finish != var_4);
  }
  for (p_Var3 = (this->archives_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
      (type_8 *)p_Var3 != &(this->archives_)._M_t._M_impl.super__Rb_tree_header;
      p_Var3 = (type_5 *)std::var_6(p_Var3)) {
    var_7((type_3 *)f,"archive %s %zu %zu\n",p_Var3[2]._M_left,p_Var3[4]._M_parent,
            ((int *)p_Var3[4]._M_color)[1] - *(int *)p_Var3[4]._M_color >> 2);
    piVar2 = (int *)p_Var3[4]._M_color;
    var_8 = (type_7 *)*piVar2;
    if (var_8 != (type_7 *)piVar2[1]) {
      do {
        pOVar1 = (type_4 *)*var_8;
        var_8 = var_8 + 1;
        var_5(this,symtab,f,pOVar1);
      } while ((type_7 *)piVar2[1] != var_8);
    }
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) condition: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))) body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence)) (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (binary_expression left: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  undefined4 uVar1;
  int *piVar2;
  int *piVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != (undefined4 *)param_1[1]) {
    do {
      uVar1 = *puVar4;
      puVar4 = puVar4 + 1;
      FUN_00141ea0(param_1,param_2,param_3,uVar1);
    } while ((undefined4 *)param_1[1] != puVar4);
  }
  for (piVar3 = (int *)param_1[6]; piVar3 != param_1 + 4; piVar3 = (int *)thunk_FUN_00181d80(piVar3)
      ) {
    fprintf(param_3,"archive %s %zu %zu\n",piVar3[10],piVar3[0x11],
            ((int *)piVar3[0x10])[1] - *(int *)piVar3[0x10] >> 2);
    piVar2 = (int *)piVar3[0x10];
    puVar4 = (undefined4 *)*piVar2;
    if (puVar4 != (undefined4 *)piVar2[1]) {
      do {
        uVar1 = *puVar4;
        puVar4 = puVar4 + 1;
        FUN_00141ea0(param_1,param_2,param_3,uVar1);
      } while ((undefined4 *)piVar2[1] != puVar4);
    }
  }
  return;
}

