
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void add_view(File_read * this, View * v) */

void __thiscall gold::File_read::add_view(File_read *this,View *v)

{
  size_t *psVar1;
  _List_node_base *p_Var2;
  _List_node_base *this_00;
  int local_34;
  char cStack_30;
  pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*> local_2c;
  undefined4 uStack_14;
  
  uStack_14 = 0x5d1d9;
  local_2c.first.first._0_4_ = (undefined4)v->start_;
  local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4);
  local_2c.second = v;
  local_2c.first.second = v->byteshift_;
  std::
  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>
  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>
            (&(this->views_)._M_t,&local_2c);
  if (cStack_30 == '\0') {
    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);
    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");
    }
    if (*(char *)&p_Var2[3]._M_next != '\0') {
      v->cache_ = true;
      *(undefined1 *)&p_Var2[3]._M_next = 0;
    }
    this_00 = (_List_node_base *)operator_new(0xc);
    this_00[1]._M_next = p_Var2;
    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);
    psVar1 = &(this->saved_views_).
              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.
              _M_impl._M_node._M_size;
    *psVar1 = *psVar1 + 1;
    *(View **)(local_34 + 0x1c) = v;
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_0005d1d0(int param_1,undefined4 *param_2)

{
  int iVar1;
  int iVar2;
  int local_38;
  char local_34 [8];
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 *local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5d1d9;
  local_2c = *param_2;
  local_28 = param_2[1];
  local_20 = param_2;
  local_24 = param_2[5];
  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);
  if (local_34[0] == '\0') {
    iVar1 = *(int *)(local_38 + 0x1c);
    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);
    }
    if (*(char *)(iVar1 + 0x18) != '\0') {
      *(undefined1 *)(param_2 + 6) = 1;
      *(undefined1 *)(iVar1 + 0x18) = 0;
    }
    iVar2 = FUN_0017ebf0(0xc);
    *(int *)(iVar2 + 8) = iVar1;
    FUN_00183960(iVar2,param_1 + 0x58);
    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;
    *(undefined4 **)(local_38 + 0x1c) = param_2;
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x2a4e27
SUB ESP,0x2c
MOV EDI,dword ptr [ESP + 0x44]
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x1c],EDI
MOV ECX,dword ptr [EDI + 0x14]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ESP + 0x8]
SUB ESP,0x4
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0x1c],ECX
LEA EDX,[ESP + 0x14]
PUSH EDX
LEA EDX,[ESI + 0x40]
PUSH EDX
PUSH EAX
CALL 0x0005edd0
MOV EDX,dword ptr [ESP + 0x14]
ADD ESP,0xc
CMP byte ptr [ESP + 0xc],0x0
JNZ 0x0005d262
MOV EBP,dword ptr [EDX + 0x1c]
MOV EAX,dword ptr [EDI + 0x8]
CMP dword ptr [EBP + 0x8],EAX
JNC 0x0005d27a
CMP byte ptr [EBP + 0x18],0x0
JNZ 0x0005d270
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0xc
PUSH 0xc
CALL 0x0017ebf0
MOV dword ptr [EAX + 0x8],EBP
POP EDX
POP ECX
LEA ECX,[ESI + 0x58]
PUSH ECX
PUSH EAX
CALL 0x00183960
MOV EDX,dword ptr [ESP + 0x14]
ADD dword ptr [ESI + 0x60],0x1
ADD ESP,0x10
MOV dword ptr [EDX + 0x1c],EDI
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV byte ptr [EDI + 0x18],0x1
MOV byte ptr [EBP + 0x18],0x0
JMP 0x0005d237
LEA EAX,[EBX + 0xfff1eda0]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xfff1eab4]
PUSH 0x1c8
PUSH EAX
CALL 0x0005f0b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0005d1d0(int param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_0005d1d0(int param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0005d1d0(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "char local_34 [8];" primitive_type (array_declarator "local_34 [8]" identifier [ number_literal ]) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5d1d9;" (assignment_expression "uStack_14 = 0x5d1d9" identifier = number_literal) ;) (expression_statement "local_2c = *param_2;" (assignment_expression "local_2c = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_28 = param_2[1];" (assignment_expression "local_28 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" identifier = identifier) ;) (expression_statement "local_24 = param_2[5];" (assignment_expression "local_24 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);" (call_expression "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c)" identifier (argument_list "(local_34,param_1 + 0x40,&local_2c)" ( identifier , (binary_expression "param_1 + 0x40" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) ))) ;) (if_statement "if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" if (parenthesized_expression "(local_34[0] == '\0')" ( (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" { (expression_statement "iVar1 = *(int *)(local_38 + 0x1c);" (assignment_expression "iVar1 = *(int *)(local_38 + 0x1c)" identifier = (pointer_expression "*(int *)(local_38 + 0x1c)" * (cast_expression "(int *)(local_38 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x1c)" ( (binary_expression "local_38 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" if (parenthesized_expression "((uint)param_2[2] <= *(uint *)(iVar1 + 8))" ( (binary_expression "(uint)param_2[2] <= *(uint *)(iVar1 + 8)" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) <= (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" { comment (expression_statement "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);" (call_expression "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1)" identifier (argument_list "("../../gold/fileread.cc",0x1c8,"add_view",param_1)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""add_view"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 0x18) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar1 + 0x18)" * (cast_expression "(char *)(iVar1 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" { (expression_statement "*(undefined1 *)(param_2 + 6) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 6) = 1" (pointer_expression "*(undefined1 *)(param_2 + 6)" * (cast_expression "(undefined1 *)(param_2 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(iVar1 + 0x18) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x18) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x18)" * (cast_expression "(undefined1 *)(iVar1 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar2 = FUN_0017ebf0(0xc);" (assignment_expression "iVar2 = FUN_0017ebf0(0xc)" identifier = (call_expression "FUN_0017ebf0(0xc)" identifier (argument_list "(0xc)" ( number_literal )))) ;) (expression_statement "*(int *)(iVar2 + 8) = iVar1;" (assignment_expression "*(int *)(iVar2 + 8) = iVar1" (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00183960(iVar2,param_1 + 0x58);" (call_expression "FUN_00183960(iVar2,param_1 + 0x58)" identifier (argument_list "(iVar2,param_1 + 0x58)" ( identifier , (binary_expression "param_1 + 0x58" identifier + number_literal) ))) ;) (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 **)(local_38 + 0x1c) = param_2;" (assignment_expression "*(undefined4 **)(local_38 + 0x1c) = param_2" (pointer_expression "*(undefined4 **)(local_38 + 0x1c)" * (cast_expression "(undefined4 **)(local_38 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_38 + 0x1c)" ( (binary_expression "local_38 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void add_view(File_read * this, View * v) */\n\nvoid __thiscall gold::File_read::add_view(File_read *this,View *v)\n\n{\n  size_t *psVar1;\n  _List_node_base *p_Var2;\n  _List_node_base *this_00;\n  int local_34;\n  char cStack_30;\n  pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*> local_2c;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c.first.first._0_4_ = (undefined4)v->start_;\n  local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4);\n  local_2c.second = v;\n  local_2c.first.second = v->byteshift_;\n  std::\n  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c);\n  if (cStack_30 == '\0') {\n    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);\n    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }\n    if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }\n    this_00 = (_List_node_base *)operator_new(0xc);\n    this_00[1]._M_next = p_Var2;\n    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);\n    psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.\n              _M_impl._M_node._M_size;\n    *psVar1 = *psVar1 + 1;\n    *(View **)(local_34 + 0x1c) = v;\n  }\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::File_read::add_view(File_read *this,View *v)\n\n{\n  size_t *psVar1;\n  _List_node_base *p_Var2;\n  _List_node_base *this_00;\n  int local_34;\n  char cStack_30;\n  pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*> local_2c;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c.first.first._0_4_ = (undefined4)v->start_;\n  local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4);\n  local_2c.second = v;\n  local_2c.first.second = v->byteshift_;\n  std::\n  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c);\n  if (cStack_30 == '\0') {\n    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);\n    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }\n    if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }\n    this_00 = (_List_node_base *)operator_new(0xc);\n    this_00[1]._M_next = p_Var2;\n    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);\n    psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.\n              _M_impl._M_node._M_size;\n    *psVar1 = *psVar1 + 1;\n    *(View **)(local_34 + 0x1c) = v;\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::File_read::" identifier : : identifier : :) (function_declarator "add_view(File_read *this,View *v)" identifier (parameter_list "(File_read *this,View *v)" ( (parameter_declaration "File_read *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "View *v" type_identifier (pointer_declarator "*v" * identifier)) ))) (compound_statement "{\n  size_t *psVar1;\n  _List_node_base *p_Var2;\n  _List_node_base *this_00;\n  int local_34;\n  char cStack_30;\n  pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*> local_2c;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c.first.first._0_4_ = (undefined4)v->start_;\n  local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4);\n  local_2c.second = v;\n  local_2c.first.second = v->byteshift_;\n  std::\n  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c);\n  if (cStack_30 == '\0') {\n    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);\n    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }\n    if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }\n    this_00 = (_List_node_base *)operator_new(0xc);\n    this_00[1]._M_next = p_Var2;\n    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);\n    psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.\n              _M_impl._M_node._M_size;\n    *psVar1 = *psVar1 + 1;\n    *(View **)(local_34 + 0x1c) = v;\n  }\n  return;\n}" { (declaration "size_t *psVar1;" primitive_type (pointer_declarator "*psVar1" * identifier) ;) (declaration "_List_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "_List_node_base *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "char cStack_30;" primitive_type identifier ;) (ERROR "pair<std::pair<long_long_int,_unsigned_int>,_gold::" (comma_expression "pair<std::pair<long_long_int,_unsigned_int>,_gold" (binary_expression "pair<std::pair<long_long_int" (binary_expression "pair<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : :) (expression_statement "File_read::View*> local_2c;" (binary_expression "File_read::View*> local_2c" identifier (ERROR "::View*" : : identifier *) > identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5d1d9;" (assignment_expression "uStack_14 = 0x5d1d9" identifier = number_literal) ;) (expression_statement "local_2c.first.first._0_4_ = (undefined4)v->start_;" (assignment_expression "local_2c.first.first._0_4_ = (undefined4)v->start_" (field_expression "local_2c.first.first._0_4_" (field_expression "local_2c.first.first" (field_expression "local_2c.first" identifier . field_identifier) . field_identifier) . field_identifier) = (cast_expression "(undefined4)v->start_" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "v->start_" identifier -> field_identifier))) ;) (expression_statement "local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4);" (assignment_expression "local_2c.first.first._4_4_ = *(undefined4 *)((int)&v->start_ + 4)" (field_expression "local_2c.first.first._4_4_" (field_expression "local_2c.first.first" (field_expression "local_2c.first" identifier . field_identifier) . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)((int)&v->start_ + 4)" * (cast_expression "(undefined4 *)((int)&v->start_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&v->start_ + 4)" ( (binary_expression "(int)&v->start_ + 4" (cast_expression "(int)&v->start_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&v->start_" & (field_expression "v->start_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "local_2c.second = v;" (assignment_expression "local_2c.second = v" (field_expression "local_2c.second" identifier . field_identifier) = identifier) ;) (expression_statement "local_2c.first.second = v->byteshift_;" (assignment_expression "local_2c.first.second = v->byteshift_" (field_expression "local_2c.first.second" (field_expression "local_2c.first" identifier . field_identifier) . field_identifier) = (field_expression "v->byteshift_" identifier -> field_identifier)) ;) (labeled_statement "std::\n  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c);" statement_identifier (ERROR "::\n  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std::less<std::pair<long_long_int,_unsigned_int>_>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>_>\n  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold:" : : (binary_expression "_Rb_tree<std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>,_std" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>,_gold" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (comma_expression "File_read::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>,_std" identifier (ERROR "::View*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::File_read::View*>_>" : : (comma_expression "View*>,_std" identifier (ERROR "*>" * >) , identifier) : : (binary_expression "_Select1st<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>,_gold" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) >) , identifier) : : (binary_expression "less<std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>_>,_std" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>_>,_std" (binary_expression "_unsigned_int>_" identifier > identifier) > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (binary_expression "pair<const_std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>,_gold" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) : : (binary_expression "File_read::View*>_>_" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > identifier) > : : (binary_expression "_M_emplace_unique<std" identifier < identifier) : : (binary_expression "pair<std" identifier < identifier) : : (comma_expression "pair<long_long_int,_unsigned_int>,_gold" (binary_expression "pair<long_long_int" identifier < identifier) , (binary_expression "_unsigned_int>,_gold" identifier > (ERROR "," ,) identifier)) :) : (expression_statement "File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c);" (binary_expression "File_read::View*>_>\n            (&(this->views_)._M_t,&local_2c)" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) > (parenthesized_expression "(&(this->views_)._M_t,&local_2c)" ( (comma_expression "&(this->views_)._M_t,&local_2c" (pointer_expression "&(this->views_)._M_t" & (field_expression "(this->views_)._M_t" (parenthesized_expression "(this->views_)" ( (field_expression "this->views_" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "&local_2c" & identifier)) ))) ;)) (if_statement "if (cStack_30 == '\0') {\n    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);\n    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }\n    if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }\n    this_00 = (_List_node_base *)operator_new(0xc);\n    this_00[1]._M_next = p_Var2;\n    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);\n    psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.\n              _M_impl._M_node._M_size;\n    *psVar1 = *psVar1 + 1;\n    *(View **)(local_34 + 0x1c) = v;\n  }" if (parenthesized_expression "(cStack_30 == '\0')" ( (binary_expression "cStack_30 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    p_Var2 = *(_List_node_base **)(local_34 + 0x1c);\n    if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }\n    if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }\n    this_00 = (_List_node_base *)operator_new(0xc);\n    this_00[1]._M_next = p_Var2;\n    std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);\n    psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::File_read::View*>_>.\n              _M_impl._M_node._M_size;\n    *psVar1 = *psVar1 + 1;\n    *(View **)(local_34 + 0x1c) = v;\n  }" { (expression_statement "p_Var2 = *(_List_node_base **)(local_34 + 0x1c);" (assignment_expression "p_Var2 = *(_List_node_base **)(local_34 + 0x1c)" identifier = (pointer_expression "*(_List_node_base **)(local_34 + 0x1c)" * (cast_expression "(_List_node_base **)(local_34 + 0x1c)" ( (type_descriptor "_List_node_base **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 0x1c)" ( (binary_expression "local_34 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if ((_List_node_base *)v->size_ <= p_Var2[1]._M_next) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }" if (parenthesized_expression "((_List_node_base *)v->size_ <= p_Var2[1]._M_next)" ( (binary_expression "(_List_node_base *)v->size_ <= p_Var2[1]._M_next" (cast_expression "(_List_node_base *)v->size_" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "v->size_" identifier -> field_identifier)) <= (field_expression "p_Var2[1]._M_next" (subscript_expression "p_Var2[1]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view");" (call_expression "do_gold_unreachable("../../gold/fileread.cc",0x1c8,"add_view")" identifier (argument_list "("../../gold/fileread.cc",0x1c8,"add_view")" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""add_view"" " string_content ") ))) ;) })) (if_statement "if (*(char *)&p_Var2[3]._M_next != '\0') {\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }" if (parenthesized_expression "(*(char *)&p_Var2[3]._M_next != '\0')" ( (binary_expression "*(char *)&p_Var2[3]._M_next != '\0'" (pointer_expression "*(char *)&p_Var2[3]._M_next" * (cast_expression "(char *)&p_Var2[3]._M_next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var2[3]._M_next" & (field_expression "p_Var2[3]._M_next" (subscript_expression "p_Var2[3]" identifier [ number_literal ]) . field_identifier)))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      v->cache_ = true;\n      *(undefined1 *)&p_Var2[3]._M_next = 0;\n    }" { (expression_statement "v->cache_ = true;" (assignment_expression "v->cache_ = true" (field_expression "v->cache_" identifier -> field_identifier) = true) ;) (expression_statement "*(undefined1 *)&p_Var2[3]._M_next = 0;" (assignment_expression "*(undefined1 *)&p_Var2[3]._M_next = 0" (pointer_expression "*(undefined1 *)&p_Var2[3]._M_next" * (cast_expression "(undefined1 *)&p_Var2[3]._M_next" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var2[3]._M_next" & (field_expression "p_Var2[3]._M_next" (subscript_expression "p_Var2[3]" identifier [ number_literal ]) . field_identifier)))) = number_literal) ;) })) (expression_statement "this_00 = (_List_node_base *)operator_new(0xc);" (assignment_expression "this_00 = (_List_node_base *)operator_new(0xc)" identifier = (cast_expression "(_List_node_base *)operator_new(0xc)" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "this_00[1]._M_next = p_Var2;" (assignment_expression "this_00[1]._M_next = p_Var2" (field_expression "this_00[1]._M_next" (subscript_expression "this_00[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (labeled_statement "std::__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);" statement_identifier : (ERROR ":" :) (labeled_statement "__detail::_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);" statement_identifier : (ERROR ":" :) (labeled_statement "_List_node_base::_M_hook(this_00,(_List_node_base *)&this->saved_views_);" statement_identifier : (ERROR ":" :) (expression_statement "_M_hook(this_00,(_List_node_base *)&this->saved_views_);" (call_expression "_M_hook(this_00,(_List_node_base *)&this->saved_views_)" identifier (argument_list "(this_00,(_List_node_base *)&this->saved_views_)" ( identifier , (cast_expression "(_List_node_base *)&this->saved_views_" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->saved_views_" & (field_expression "this->saved_views_" identifier -> field_identifier))) ))) ;)))) (ERROR "psVar1 = &(this->saved_views_).\n              super__List_base<gold::File_read::View*,_std::allocator<gold::" (assignment_expression "psVar1 = &(this->saved_views_).\n              super__List_base<gold" identifier = (binary_expression "&(this->saved_views_).\n              super__List_base<gold" (pointer_expression "&(this->saved_views_).\n              super__List_base" & (field_expression "(this->saved_views_).\n              super__List_base" (parenthesized_expression "(this->saved_views_)" ( (field_expression "this->saved_views_" identifier -> field_identifier) )) . field_identifier)) < identifier)) : : (comma_expression "File_read::View*,_std" identifier (ERROR "::View*" : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "File_read::View*>_>.\n              _M_impl._M_node._M_size;" (field_expression "File_read::View*>_>.\n              _M_impl._M_node._M_size" (field_expression "File_read::View*>_>.\n              _M_impl._M_node" (field_expression "File_read::View*>_>.\n              _M_impl" (binary_expression "File_read::View*>_" identifier (ERROR "::View*" : : identifier *) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (expression_statement "*(View **)(local_34 + 0x1c) = v;" (assignment_expression "*(View **)(local_34 + 0x1c) = v" (pointer_expression "*(View **)(local_34 + 0x1c)" * (cast_expression "(View **)(local_34 + 0x1c)" ( (type_descriptor "View **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_34 + 0x1c)" ( (binary_expression "local_34 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0005d1d0(int param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0005d1d0(int param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0005d1d0(int param_1,undefined4 *param_2)" identifier (parameter_list "(int param_1,undefined4 *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "char local_34 [8];" primitive_type (array_declarator "local_34 [8]" identifier [ number_literal ]) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x5d1d9;" (assignment_expression "uStack_14 = 0x5d1d9" identifier = number_literal) ;) (expression_statement "local_2c = *param_2;" (assignment_expression "local_2c = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_28 = param_2[1];" (assignment_expression "local_28 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" identifier = identifier) ;) (expression_statement "local_24 = param_2[5];" (assignment_expression "local_24 = param_2[5]" identifier = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);" (call_expression "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c)" identifier (argument_list "(local_34,param_1 + 0x40,&local_2c)" ( identifier , (binary_expression "param_1 + 0x40" identifier + number_literal) , (pointer_expression "&local_2c" & identifier) ))) ;) (if_statement "if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" if (parenthesized_expression "(local_34[0] == '\0')" ( (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" { (expression_statement "iVar1 = *(int *)(local_38 + 0x1c);" (assignment_expression "iVar1 = *(int *)(local_38 + 0x1c)" identifier = (pointer_expression "*(int *)(local_38 + 0x1c)" * (cast_expression "(int *)(local_38 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x1c)" ( (binary_expression "local_38 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" if (parenthesized_expression "((uint)param_2[2] <= *(uint *)(iVar1 + 8))" ( (binary_expression "(uint)param_2[2] <= *(uint *)(iVar1 + 8)" (cast_expression "(uint)param_2[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) <= (pointer_expression "*(uint *)(iVar1 + 8)" * (cast_expression "(uint *)(iVar1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" { (expression_statement "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);" (call_expression "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1)" identifier (argument_list "("../../gold/fileread.cc",0x1c8,"add_view",param_1)" ( (string_literal ""../../gold/fileread.cc"" " string_content ") , number_literal , (string_literal ""add_view"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 0x18) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar1 + 0x18)" * (cast_expression "(char *)(iVar1 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" { (expression_statement "*(undefined1 *)(param_2 + 6) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 6) = 1" (pointer_expression "*(undefined1 *)(param_2 + 6)" * (cast_expression "(undefined1 *)(param_2 + 6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 6)" ( (binary_expression "param_2 + 6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(iVar1 + 0x18) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x18) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x18)" * (cast_expression "(undefined1 *)(iVar1 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar2 = FUN_0017ebf0(0xc);" (assignment_expression "iVar2 = FUN_0017ebf0(0xc)" identifier = (call_expression "FUN_0017ebf0(0xc)" identifier (argument_list "(0xc)" ( number_literal )))) ;) (expression_statement "*(int *)(iVar2 + 8) = iVar1;" (assignment_expression "*(int *)(iVar2 + 8) = iVar1" (pointer_expression "*(int *)(iVar2 + 8)" * (cast_expression "(int *)(iVar2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00183960(iVar2,param_1 + 0x58);" (call_expression "FUN_00183960(iVar2,param_1 + 0x58)" identifier (argument_list "(iVar2,param_1 + 0x58)" ( identifier , (binary_expression "param_1 + 0x58" identifier + number_literal) ))) ;) (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined4 **)(local_38 + 0x1c) = param_2;" (assignment_expression "*(undefined4 **)(local_38 + 0x1c) = param_2" (pointer_expression "*(undefined4 **)(local_38 + 0x1c)" * (cast_expression "(undefined4 **)(local_38 + 0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_38 + 0x1c)" ( (binary_expression "local_38 + 0x1c" identifier + number_literal) )))) = identifier) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0005d1d0(int param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0005d1d0(int param_1,undefined4 *param_2)" (identifier "FUN_0005d1d0") (parameter_list "(int param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int local_38;\n  char local_34 [8];\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined4 *local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x5d1d9;\n  local_2c = *param_2;\n  local_28 = param_2[1];\n  local_20 = param_2;\n  local_24 = param_2[5];\n  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);\n  if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "char local_34 [8];" (primitive_type "char") (array_declarator "local_34 [8]" (identifier "local_34") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x5d1d9;" (assignment_expression "uStack_14 = 0x5d1d9" (identifier "uStack_14") (= "=") (number_literal "0x5d1d9")) (; ";")) (expression_statement "local_2c = *param_2;" (assignment_expression "local_2c = *param_2" (identifier "local_2c") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_28 = param_2[1];" (assignment_expression "local_28 = param_2[1]" (identifier "local_28") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" (identifier "local_20") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_24 = param_2[5];" (assignment_expression "local_24 = param_2[5]" (identifier "local_24") (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);" (call_expression "FUN_0005edd0(local_34,param_1 + 0x40,&local_2c)" (identifier "FUN_0005edd0") (argument_list "(local_34,param_1 + 0x40,&local_2c)" (( "(") (identifier "local_34") (, ",") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")"))) (; ";")) (if_statement "if (local_34[0] == '\0') {\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" (if "if") (parenthesized_expression "(local_34[0] == '\0')" (( "(") (binary_expression "local_34[0] == '\0'" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar1 = *(int *)(local_38 + 0x1c);\n    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }\n    if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }\n    iVar2 = FUN_0017ebf0(0xc);\n    *(int *)(iVar2 + 8) = iVar1;\n    FUN_00183960(iVar2,param_1 + 0x58);\n    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;\n    *(undefined4 **)(local_38 + 0x1c) = param_2;\n  }" ({ "{") (expression_statement "iVar1 = *(int *)(local_38 + 0x1c);" (assignment_expression "iVar1 = *(int *)(local_38 + 0x1c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(local_38 + 0x1c)" (* "*") (cast_expression "(int *)(local_38 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x1c)" (( "(") (binary_expression "local_38 + 0x1c" (identifier "local_38") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" (if "if") (parenthesized_expression "((uint)param_2[2] <= *(uint *)(iVar1 + 8))" (( "(") (binary_expression "(uint)param_2[2] <= *(uint *)(iVar1 + 8)" (cast_expression "(uint)param_2[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (<= "<=") (pointer_expression "*(uint *)(iVar1 + 8)" (* "*") (cast_expression "(uint *)(iVar1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n                    \n      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);\n    }" ({ "{") (expression_statement "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);" (call_expression "FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/fileread.cc",0x1c8,"add_view",param_1)" (( "(") (string_literal ""../../gold/fileread.cc"" (" """) (string_content "../../gold/fileread.cc") (" """)) (, ",") (number_literal "0x1c8") (, ",") (string_literal ""add_view"" (" """) (string_content "add_view") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar1 + 0x18) != '\0') {\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 0x18) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0x18) != '\0'" (pointer_expression "*(char *)(iVar1 + 0x18)" (* "*") (cast_expression "(char *)(iVar1 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(undefined1 *)(param_2 + 6) = 1;\n      *(undefined1 *)(iVar1 + 0x18) = 0;\n    }" ({ "{") (expression_statement "*(undefined1 *)(param_2 + 6) = 1;" (assignment_expression "*(undefined1 *)(param_2 + 6) = 1" (pointer_expression "*(undefined1 *)(param_2 + 6)" (* "*") (cast_expression "(undefined1 *)(param_2 + 6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 6)" (( "(") (binary_expression "param_2 + 6" (identifier "param_2") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)(iVar1 + 0x18) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x18) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x18)" (* "*") (cast_expression "(undefined1 *)(iVar1 + 0x18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_0017ebf0(0xc);" (assignment_expression "iVar2 = FUN_0017ebf0(0xc)" (identifier "iVar2") (= "=") (call_expression "FUN_0017ebf0(0xc)" (identifier "FUN_0017ebf0") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")")))) (; ";")) (expression_statement "*(int *)(iVar2 + 8) = iVar1;" (assignment_expression "*(int *)(iVar2 + 8) = iVar1" (pointer_expression "*(int *)(iVar2 + 8)" (* "*") (cast_expression "(int *)(iVar2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (expression_statement "FUN_00183960(iVar2,param_1 + 0x58);" (call_expression "FUN_00183960(iVar2,param_1 + 0x58)" (identifier "FUN_00183960") (argument_list "(iVar2,param_1 + 0x58)" (( "(") (identifier "iVar2") (, ",") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;" (assignment_expression "*(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x60) + 1" (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 **)(local_38 + 0x1c) = param_2;" (assignment_expression "*(undefined4 **)(local_38 + 0x1c) = param_2" (pointer_expression "*(undefined4 **)(local_38 + 0x1c)" (* "*") (cast_expression "(undefined4 **)(local_38 + 0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_38 + 0x1c)" (( "(") (binary_expression "local_38 + 0x1c" (identifier "local_38") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void add_view(File_read * this, View * v) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 *v)

{
  size_t *psVar1;
  type_3 *p_Var2;
  type_3 *this_00;
  int var_4;
  char var_3;
  pair<std::pair<long_long_int,_unsigned_int>,_gold::type_1::type_2*> var_1;
  type_4 uStack_14;
  
  uStack_14 = 0x5d1d9;
  var_1.first.first._0_4_ = (type_4)v->start_;
  var_1.first.first._4_4_ = *(type_4 *)((int)&v->start_ + 4);
  var_1.second = v;
  var_1.first.second = v->byteshift_;
  std::
  _Rb_tree<std::pair<long_long_int,_unsigned_int>,_std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::type_1::type_2*>,_std::_Select1st<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::type_1::type_2*>var_2>,_std::less<std::pair<long_long_int,_unsigned_int>var_2>,_std::allocator<std::pair<const_std::pair<long_long_int,_unsigned_int>,_gold::type_1::type_2*>var_2>var_2>
  ::_M_emplace_unique<std::pair<std::pair<long_long_int,_unsigned_int>,_gold::type_1::type_2*>var_2>
            (&(this->views_)._M_t,&var_1);
  if (var_3 == '\0') {
    p_Var2 = *(type_3 **)(var_4 + 0x1c);
    if ((type_3 *)v->size_ <= p_Var2[1]._M_next) {
                    /* WARNING: Subroutine does not return */
      var_5("../../gold/fileread.cc",0x1c8,"add_view");
    }
    if (*(char *)&p_Var2[3]._M_next != '\0') {
      v->cache_ = true;
      *(type_5 *)&p_Var2[3]._M_next = 0;
    }
    this_00 = (type_3 *)var_6(0xc);
    this_00[1]._M_next = p_Var2;
    std::__detail::_List_node_base::var_7(this_00,(type_3 *)&this->saved_views_);
    psVar1 = &(this->saved_views_).
              super__List_base<gold::type_1::type_2*,_std::allocator<gold::type_1::type_2*>var_2>.
              _M_impl._M_node._M_size;
    *psVar1 = *psVar1 + 1;
    *(type_2 **)(var_4 + 0x1c) = v;
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,undefined4 *param_2)

{
  int iVar1;
  int iVar2;
  int local_38;
  char local_34 [8];
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined4 *local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x5d1d9;
  local_2c = *param_2;
  local_28 = param_2[1];
  local_20 = param_2;
  local_24 = param_2[5];
  FUN_0005edd0(local_34,param_1 + 0x40,&local_2c);
  if (local_34[0] == '\0') {
    iVar1 = *(int *)(local_38 + 0x1c);
    if ((uint)param_2[2] <= *(uint *)(iVar1 + 8)) {
                    /* WARNING: Subroutine does not return */
      FUN_0005f0b0("../../gold/fileread.cc",0x1c8,"add_view",param_1);
    }
    if (*(char *)(iVar1 + 0x18) != '\0') {
      *(undefined1 *)(param_2 + 6) = 1;
      *(undefined1 *)(iVar1 + 0x18) = 0;
    }
    iVar2 = FUN_0017ebf0(0xc);
    *(int *)(iVar2 + 8) = iVar1;
    FUN_00183960(iVar2,param_1 + 0x58);
    *(int *)(param_1 + 0x60) = *(int *)(param_1 + 0x60) + 1;
    *(undefined4 **)(local_38 + 0x1c) = param_2;
  }
  return;
}

