std::ios_base::Init::Init()”,referenced from 引用C++文件报错

Undefined symbols for architecture armv7:

    "std::ios_base::Init::~Init()",referenced from:
        __GLOBAL__I_a in XXXXXX(dsi_debug.o)
    "std::ios_base::Init::Init()",referenced from:
__GLOBAL__I_a in XXXXXX(dsi_debug.o)

“std::ios_base::Init::Init()”,referenced from 错误 - 过☆客 - 过☆客

要解决这个问题,有二种办法:
1)将XCode?工程中Build Setting -> Apple LLVM compiler Language 标签下的C++ Language Dialect 和 C++ Standard Library 属性值修改为 Compiler Default 即可。
2)如果遇上一些工程,改变Apple LLVM compiler Language会导致其他的编译错误,所以,还有一种解决办法是在Build Phases -> Link binary with Libraries中加一个libstdc++.6.dylib就好了。



Undefined symbols for architecture arm64: "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::ios_base::getloc() const", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::__init(unsigned long, char)", referenced from: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::basic_string[abi:ne180100](unsigned long, char) in CPP-ff0177.o "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>::~basic_string()", referenced from: std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>> std::__1::__pad_and_output[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>, char const*, char const*, char const*, std::__1::ios_base&, char) in CPP-ff0177.o "std::__1::basic_istream<char, std::__1::char_traits<char>>::operator>>(int&)", referenced from: _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::put(char)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::flush()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::endl[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char>>&)", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::sentry::~sentry()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(double)", referenced from: _main in CPP-ff0177.o "std::__1::basic_ostream<char, std::__1::char_traits<char>>::operator<<(int)", referenced from: _main in CPP-ff0177.o "std::__1::cin", referenced from: _main in CPP-ff0177.o "std::__1::cout", referenced from: _main in CPP-ff0177.o "std::__1::ctype<char>::id", referenced from: std::__1::ctype<char> const& std::__1::use_facet[abi:ne180100]<std::__1::ctype<char>>(std::__1::locale const&) in CPP-ff0177.o "std::__1::locale::~locale()", referenced from: std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o std::__1::basic_ios<char, std::__1::char_traits<char>>::widen[abi:ne180100](char) const in CPP-ff0177.o "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "std::__1::ios_base::clear(unsigned int)", referenced from: std::__1::ios_base::setstate[abi:ne180100](unsigned int) in CPP-ff0177.o "std::terminate()", referenced from: ___clang_call_terminate in CPP-ff0177.o "___cxa_begin_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o ___clang_call_terminate in CPP-ff0177.o "___cxa_call_unexpected", referenced from: std::__1::char_traits<char>::length[abi:ne180100](char const*) in CPP-ff0177.o std::__1::ostreambuf_iterator<char, std::__1::char_traits<char>>::ostreambuf_iterator[abi:ne180100](std::__1::basic_ostream<char, std::__1::char_traits<char>>&) in CPP-ff0177.o "___cxa_end_catch", referenced from: std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o std::__1::basic_ostream<char, std::__1::char_traits<char>>& std::__1::__put_character_sequence[abi:ne180100]<char, std::__1::char_traits<char>>(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, char const*, unsigned long) in CPP-ff0177.o "___gxx_personality_v0", referenced from: /private/var/folders/nt/_wsd9hj903q7pgvy73frnx4c0000gn/T/CPP-ff0177.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) v_fengte@MacBook-Pro ddd %
07-01
请仔细阅读和深度思考分析下面函数,绝对保持原始代码的处理流程和步骤不变, 绝对不要遗漏各种条件判断和标志位管理的处理和各种逻辑功能处理, 采用C/C++11标准, 绝对不要输出简化代码和处理流程和步骤,推导并重构完整的可编译的所有函数的全部代码 特别要求如下: 1.保持所有原始功能不变,不要遗漏逻辑细节 2.提高执行效率,降低计算复杂度 3.已经给定的结构体名字和元素不要更改,详细的中文注释 4.自动添加中文注释说明功能逻辑 5.不使用 auto,使用显式 for 循环 6.结构体采用32位定义 7.不要使用小函数,保持原始的函数定义 8.严格保持protobuf字段映射关系 特别注意如下: 1.函数中有关位操作不变,函数间的位操作一致 __int64 __fastcall HDDMDevice::readdevice(HDDMDevice *this, const std::string *stdArchFile) { _QWORD *qword28; // rsi size_t n; // rdx void *exception; // rbx void *v5; // r13 const char *v6; // rcx int v7; // ebx HDDMChipDesc *v8; // r13 HDDMChipDesc *v9; // r14 unsigned __int64 v10; // rax HDDMChipDesc *v11; // rbp HDDMChipDesc *v12; // r12 HDDMChipDesc *v13; // r15 __int64 v14; // r14 __int64 v15; // rbp HDDMChipDesc *v16; // rbx __int64 v17; // rbx int v18; // r13d char *v19; // r14 char v20; // dl boost::filesystem::path *v21; // rdi unsigned __int64 v22; // r8 HDDMChipDesc *v23; // r14 HDDMChipDesc *v24; // rbp int v25; // r13d int v26; // r12d _DWORD *v27; // rbx unsigned __int16 v28; // bx unsigned __int16 v29; // bp HDDMTile *TileAtGridXY; // rax unsigned __int64 v31; // rcx __int64 word4; // rsi unsigned int v33; // ebp unsigned __int16 v34; // r12 HDDMSite *SiteAtRpmGridPoint; // rax unsigned __int64 v36; // rcx int v37; // ebx char *v38; // rbp unsigned __int64 v39; // rax char *v40; // r14 char *v41; // r12 signed __int64 v42; // rax void *v43; // rdi void *v44; // rdi __int64 v45; // rax std::string *v46; // rbx unsigned __int64 SiteType; // rbx HSTString *insert_hint_unique_pos_3; // rdx HSTString *insert_hint_unique_pos_2; // r14 HSTString *insert_hint_unique_pos_5; // rax __int64 insert_hint_unique_pos; // rax __int64 v52; // rdx _BOOL8 v53; // rdi __int64 wordA; // rsi __int64 qwordB8_1; // rax __int64 qwordC0_1; // rax int word4_1; // r8d int word6; // edi _QWORD *v59; // rdx unsigned __int64 v60; // rbp unsigned __int64 v61; // rsi __int64 v62; // r9 __int64 v63; // r13 HUBSimpleScanner *v64; // rax __int64 v65; // rbx __int64 v66; // rbx HDDMTile *v67; // r14 __int64 v68; // rcx unsigned int v69; // edx unsigned __int16 v70; // ax unsigned int v71; // edi _QWORD *v72; // rdx unsigned __int64 v73; // rbp unsigned __int64 v74; // rsi __int64 v75; // r8 __int64 v76; // r13 unsigned __int64 v77; // r14 unsigned __int64 v78; // r12 HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2; // r8 __int64 v80; // rdx unsigned __int64 v81; // rbx HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3; // rdx HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6; // rax __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4_; // rax __int64 v85; // rdx HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__1; // rbx _BOOL8 v87; // rdi const std::string *v88; // rsi __int64 v89; // rdx int v90; // r14d __int64 v91; // rdx int v92; // ebx __int64 v93; // r14 boost::filesystem::path *v94; // rax __int64 v95; // rbx __int64 v96; // rbx unsigned int v97; // ebx __int64 i; // rdx __int64 qwordC0; // rdi __int64 v100; // rbp _DWORD *v101; // rax __int64 v102; // rdx unsigned int v103; // ebx __int64 qwordB8; // rdi __int64 v105; // rbp _DWORD *v106; // rax void *v108; // r12 char *v109; // r13 HEXDataException *v110; // rbp void *v111; // r13 int v112; // ecx void *v113; // rbx __int64 v114; // r12 HSTString *v116; // [rsp+10h] [rbp-5A8h] HSTString *v117; // [rsp+10h] [rbp-5A8h] HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__4; // [rsp+10h] [rbp-5A8h] HSTString *insert_hint_unique_pos_4; // [rsp+18h] [rbp-5A0h] HSTString *insert_hint_unique_pos_1; // [rsp+18h] [rbp-5A0h] HSTString *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5; // [rsp+18h] [rbp-5A0h] int v123; // [rsp+40h] [rbp-578h] HUBSimpleScanner *v124; // [rsp+40h] [rbp-578h] unsigned int v125; // [rsp+40h] [rbp-578h] HUBSimpleScanner *v126; // [rsp+48h] [rbp-570h] unsigned int v127; // [rsp+48h] [rbp-570h] unsigned int v128; // [rsp+48h] [rbp-570h] HUBSimpleScanner *v129; // [rsp+50h] [rbp-568h] unsigned int v130; // [rsp+50h] [rbp-568h] boost::filesystem::path *v131; // [rsp+58h] [rbp-560h] _QWORD v132[2]; // [rsp+90h] [rbp-528h] BYREF _QWORD v133[2]; // [rsp+A0h] [rbp-518h] BYREF _QWORD v134[2]; // [rsp+B0h] [rbp-508h] BYREF _QWORD v135[2]; // [rsp+C0h] [rbp-4F8h] BYREF _QWORD v136[2]; // [rsp+D0h] [rbp-4E8h] BYREF _QWORD v137[2]; // [rsp+E0h] [rbp-4D8h] BYREF __int64 v138; // [rsp+F0h] [rbp-4C8h] BYREF _QWORD v139[2]; // [rsp+100h] [rbp-4B8h] BYREF const char *v140[2]; // [rsp+110h] [rbp-4A8h] BYREF const char *v141[2]; // [rsp+120h] [rbp-498h] BYREF _QWORD v142[2]; // [rsp+130h] [rbp-488h] BYREF __int64 v143; // [rsp+140h] [rbp-478h] BYREF __int64 v144; // [rsp+150h] [rbp-468h] BYREF _QWORD v145[2]; // [rsp+160h] [rbp-458h] BYREF _QWORD v146[2]; // [rsp+170h] [rbp-448h] BYREF _QWORD v147[2]; // [rsp+180h] [rbp-438h] BYREF _QWORD v148[2]; // [rsp+190h] [rbp-428h] BYREF unsigned __int16 v149[8]; // [rsp+1A0h] [rbp-418h] BYREF unsigned __int16 v150[8]; // [rsp+1B0h] [rbp-408h] BYREF void *s1[2]; // [rsp+1C0h] [rbp-3F8h] BYREF char *v152[2]; // [rsp+1D0h] [rbp-3E8h] BYREF HDDMChipDesc *v153; // [rsp+1E0h] [rbp-3D8h] BYREF HDDMChipDesc *v154; // [rsp+1E8h] [rbp-3D0h] __int64 v155; // [rsp+1F0h] [rbp-3C8h] void *v156; // [rsp+200h] [rbp-3B8h] BYREF _BYTE *v157; // [rsp+208h] [rbp-3B0h] __int64 v158; // [rsp+210h] [rbp-3A8h] void *v159; // [rsp+220h] [rbp-398h] BYREF __int64 v160; // [rsp+228h] [rbp-390h] __int64 v161; // [rsp+230h] [rbp-388h] __int64 v162; // [rsp+240h] [rbp-378h] BYREF char *v163; // [rsp+248h] [rbp-370h] __int64 v164; // [rsp+250h] [rbp-368h] void *v165; // [rsp+260h] [rbp-358h] BYREF unsigned int v166; // [rsp+268h] [rbp-350h] __int64 v167; // [rsp+270h] [rbp-348h] unsigned int v168; // [rsp+278h] [rbp-340h] __int64 v169; // [rsp+280h] [rbp-338h] void *v170; // [rsp+290h] [rbp-328h] BYREF unsigned int v171; // [rsp+298h] [rbp-320h] __int64 v172; // [rsp+2A0h] [rbp-318h] unsigned int v173; // [rsp+2A8h] [rbp-310h] __int64 v174; // [rsp+2B0h] [rbp-308h] char v175[8]; // [rsp+2C0h] [rbp-2F8h] BYREF int v176; // [rsp+2C8h] [rbp-2F0h] BYREF HSTString *insert_hint_unique_pos_6; // [rsp+2D0h] [rbp-2E8h] int *v178; // [rsp+2D8h] [rbp-2E0h] int *v179; // [rsp+2E0h] [rbp-2D8h] __int64 v180; // [rsp+2E8h] [rbp-2D0h] char *v181; // [rsp+2F0h] [rbp-2C8h] BYREF int v182; // [rsp+2F8h] [rbp-2C0h] BYREF __int64 v183; // [rsp+300h] [rbp-2B8h] int *v184; // [rsp+308h] [rbp-2B0h] int *v185; // [rsp+310h] [rbp-2A8h] __int64 v186; // [rsp+318h] [rbp-2A0h] bool v187[8]; // [rsp+320h] [rbp-298h] BYREF char *v188; // [rsp+328h] [rbp-290h] BYREF __int64 v189; // [rsp+330h] [rbp-288h] __int64 v190; // [rsp+338h] [rbp-280h] __int64 v191; // [rsp+340h] [rbp-278h] __int64 v192; // [rsp+348h] [rbp-270h] __int64 v193; // [rsp+350h] [rbp-268h] __int64 v194; // [rsp+358h] [rbp-260h] __int64 v195; // [rsp+360h] [rbp-258h] BYREF int n16; // [rsp+368h] [rbp-250h] char *v197; // [rsp+370h] [rbp-248h] _QWORD v198[27]; // [rsp+378h] [rbp-240h] BYREF __int64 v199; // [rsp+450h] [rbp-168h] char v200; // [rsp+458h] [rbp-160h] char v201; // [rsp+459h] [rbp-15Fh] __int64 v202; // [rsp+460h] [rbp-158h] __int64 v203; // [rsp+468h] [rbp-150h] __int64 v204; // [rsp+470h] [rbp-148h] __int64 v205; // [rsp+478h] [rbp-140h] v153 = 0; v154 = 0; v155 = 0; v165 = 0; v166 = 0; v167 = 0; v168 = 0; v169 = 0; v156 = 0; v157 = 0; v158 = 0; v159 = 0; v160 = 0; v161 = 0; v170 = 0; v171 = 0; v172 = 0; v173 = 0; v174 = 0; v162 = 0; v163 = 0; v164 = 0; v176 = 0; insert_hint_unique_pos_6 = 0; v180 = 0; v178 = &v176; v179 = &v176; std::string::string((std::string *)v132, stdArchFile); HUBSimpleScanner::HUBSimpleScanner(v187, v132); std::string::_Rep::_M_dispose(v132[0] - 24LL, &v181); HUBSimpleScanner::readTargetWord((HUBSimpleScanner *)v187, "xngd", 1); HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "version number"); HUBSimpleScanner::scanWord((HUBSimpleScanner *)s1, (bool)v187, (const char *)&dword_0 + 1); qword28 = (_QWORD *)this->qword28; n = *((_QWORD *)s1[0] - 3); if ( n != *(qword28 - 3) || memcmp(s1[0], qword28, n) ) { exception = __cxa_allocate_exception(0x10u); v5 = s1[0]; std::string::string(v133, "Mismatched arch name '%s', expected '%s'", (const char *)v152, v6); HUBSimpleScanner::buildException(exception, v187, v133, v5); std::string::_Rep::_M_dispose(v133[0] - 24LL, &v181); __cxa_throw( exception, (struct type_info *)&`typeinfo for'HUBSimpleScanner::ScanException, (void (*)(void *))HUBSimpleScanner::ScanException::~ScanException); } HUBSimpleScanner::scanWord((HUBSimpleScanner *)v134, (bool)v187, (const char *)&dword_0 + 1); std::string::swap((std::string *)&this->qword30, (std::string *)v134); std::string::_Rep::_M_dispose(v134[0] - 24LL, &v181); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "NumSites", 1); *(_DWORD *)&this->byte0 = (16 * (HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "site count") & 0x3FFFFF)) | *(_DWORD *)&this->byte0 & 0xFC00000F; HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HDDMDevice::allocatesites(this); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "TileGridExtent", 1); this->word6 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid x"); this->word4 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid y"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HDDMDevice::allocatesupersites(this); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "RpmGridExtent", 1); this->word8 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid x"); this->wordA = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid y"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "NumChips", 1); v7 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "chip count"); v123 = v7; HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); v8 = v154; v9 = v153; v10 = 0x8E38E38E38E38E39LL * ((v154 - v153) >> 3); if ( v7 > v10 ) { std::vector<HDDMChipDesc>::_M_default_append(&v153, v7 - v10); v9 = v153; } else if ( v7 < v10 ) { v11 = (HDDMChipDesc *)((char *)v153 + 72 * v7); if ( v154 != v11 ) { v12 = (HDDMChipDesc *)((char *)v153 + 72 * v7); v13 = v12; v14 = (__int64)v11 + 32; v15 = (__int64)v11 + 8; do { v16 = v12; v12 = (HDDMChipDesc *)((char *)v12 + 72); v17 = v16 - v13; std::string::_Rep::_M_dispose(*(_QWORD *)(v17 + v14) - 24LL, &v181); std::string::_Rep::_M_dispose(*(_QWORD *)(v17 + v15) - 24LL, &v181); std::string::_Rep::_M_dispose(*((_QWORD *)v12 - 9) - 24LL, &v181); } while ( v8 != v12 ); v11 = v13; v9 = v153; } v154 = v11; } v182 = 0; v183 = 0; v186 = 0; v184 = &v182; v185 = &v182; if ( v123 > 0 ) { v116 = 0; v18 = 0; do { v19 = (char *)v9 + (_QWORD)v116; *((_DWORD *)v19 + 16) = v18; HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "Chip", 1); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v135, (bool)v187, (const char *)&dword_0 + 1); std::string::swap((std::string *)v19, (std::string *)v135); std::string::_Rep::_M_dispose(v135[0] - 24LL, v152); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v136, (bool)v187, (const char *)&dword_0 + 1); std::string::swap((std::string *)(v19 + 8), (std::string *)v136); std::string::_Rep::_M_dispose(v136[0] - 24LL, v152); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); std::_Rb_tree<std::string,std::string,std::_Identity<std::string>,std::less<std::string>,std::allocator<std::string>>::_M_insert_unique<std::string const&>( &v181, v19 + 8); if ( !v20 ) { v113 = __cxa_allocate_exception(0x10u); v114 = *((_QWORD *)v19 + 1); std::string::string(v137, "Chip name '%s' not unique", (const char *)v150); HUBSimpleScanner::buildException(v113, v187, v137, v114); std::string::_Rep::_M_dispose(v137[0] - 24LL, v152); __cxa_throw( v113, (struct type_info *)&`typeinfo for'HUBSimpleScanner::ScanException, (void (*)(void *))HUBSimpleScanner::ScanException::~ScanException); } std::string::string((std::string *)v152, stdArchFile); boost::filesystem::path::parent_path((boost::filesystem::path *)&v138); boost::filesystem::path::parent_path((boost::filesystem::path *)v139); std::string::assign((std::string *)v152, (const std::string *)v139); std::string::_Rep::_M_dispose(v139[0] - 24LL, v150); v21 = (boost::filesystem::path *)(v138 - 24); std::string::_Rep::_M_dispose(v138 - 24, v150); boost::filesystem::path::codecvt(v21); sub_A8D730((std::string *)v152, (const char **)v19); std::string::string((std::string *)v140, (const std::string *)v19); std::string::append((std::string *)v140, ".xng", 4u); boost::filesystem::path::codecvt((boost::filesystem::path *)v140); sub_A8D730((std::string *)v152, v140); std::string::_Rep::_M_dispose(v140[0] - 24, v150); if ( (unsigned int)boost::filesystem::detail::status(v152, 0) <= 1 ) { std::string::_M_mutate((std::string *)v152, 0, *((_QWORD *)v152[0] - 3), 0); boost::filesystem::path::codecvt((boost::filesystem::path *)v152); v22 = *(_QWORD *)(*(_QWORD *)stdArchFile - 24LL); if ( v22 ) std::string::replace((std::string *)v152, *((_QWORD *)v152[0] - 3), 0, *(const char **)stdArchFile, v22); boost::filesystem::path::remove_filename((boost::filesystem::path *)v152); std::string::string((std::string *)v141, (const std::string *)v19); std::string::append((std::string *)v141, ".xng", 4u); boost::filesystem::path::codecvt((boost::filesystem::path *)v141); sub_A8D730((std::string *)v152, v141); std::string::_Rep::_M_dispose(v141[0] - 24, v150); } std::string::assign((std::string *)(v19 + 32), (const std::string *)v152); v150[0] = 0; v149[0] = 0; std::string::string((std::string *)v142, (const std::string *)(v19 + 32)); HDDMDeviceCache::getFileTypeAndVersion( (HDDMDeviceCache *)HDDMDeviceCache::m_devcache, (const HSTString *)v142, v149, v150); std::string::_Rep::_M_dispose(v142[0] - 24LL, v148); if ( v149[0] != 2 ) { v110 = (HEXDataException *)__cxa_allocate_exception(0x18u); std::string::string((std::string *)&v144, (const std::string *)(v19 + 32)); std::string::string(&v143, "File is not a chip XNG:", v147); sub_8287CE(v110, (int)v152, (__int64)this); std::string::_Rep::_M_dispose(v143 - 24, v148); std::string::_Rep::_M_dispose(v144 - 24, v148); __cxa_throw( v110, (struct type_info *)&`typeinfo for'HEXDataException, (void (*)(void *))HEXDataException::~HEXDataException); } HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "TileGridOrigin", 1); *((_WORD *)v19 + 10) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid x"); *((_WORD *)v19 + 11) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid y"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "RpmGridOrigin", 1); *((_WORD *)v19 + 8) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid x"); *((_WORD *)v19 + 9) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid y"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "GraphicsOrigin", 1); *((_WORD *)v19 + 12) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "graphics x"); *((_WORD *)v19 + 13) = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "graphics y"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 1); ++v18; std::string::_Rep::_M_dispose(v152[0] - 24, v148); v116 = (HSTString *)((char *)v116 + 72); v9 = v153; } while ( v18 != v123 ); } v152[0] = 0; std::vector<HDDMChip *>::_M_fill_assign(&this->qword318, 0x8E38E38E38E38E39LL * ((v154 - v9) >> 3), v152); v23 = v153; if ( v154 != v153 ) { v24 = (HDDMChipDesc *)((char *)v154 - 72); v25 = 0; v26 = 0; v27 = (_DWORD *)((char *)v154 - 16); while ( 1 ) { *v27 = v26; v27[1] = v25; HDDMDevice::readchip_pb(this, v24); v26 += HDDMChipType::getNumTiles(*((HDDMChipType **)v27 - 2)); v25 += HDDMChipType::getNumSites(*((HDDMChipType **)v27 - 2)); v27 -= 18; if ( v23 == v24 ) break; v24 = (HDDMChipDesc *)((char *)v24 - 72); } } HDDMDevice::setrecursivedeviceid(this, this->byte0 & 0xF); HDDMDevice::createRPMGrid(this); std::vector<bool>::resize(&v165, (unsigned __int16)this->word6 * (unsigned __int16)this->word4, 0); if ( (unsigned __int8)HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "ExplicitTileNames", 0) ) { HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); while ( !(unsigned __int8)HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 0) ) { v28 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid x"); v29 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "tile grid y"); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v152, (bool)v187, (const char *)&dword_0 + 1); TileAtGridXY = (HDDMTile *)HDDMDevice::getTileAtGridXY(this, v28, v29); v31 = -858993459 * (unsigned int)(((__int64)TileAtGridXY - *(_QWORD *)(HDDMDeviceCache::m_devcache[(*((_BYTE *)TileAtGridXY + 3) >> 4) & 0xF] + 200LL)) >> 3); if ( v31 >= v168 + 8 * (v167 - (_QWORD)v165) - (unsigned __int64)v166 ) std::__throw_out_of_range("vector<bool>::_M_range_check"); *((_QWORD *)v165 + (v31 >> 6)) |= 1LL << v31; HDDMTile::setname(TileAtGridXY, v152[0]); std::string::_Rep::_M_dispose(v152[0] - 24, v150); } } if ( (unsigned __int8)HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "ImplicitTileNameMap", 0) ) { LODWORD(v152[0]) = -1; std::vector<int>::resize(&v156, (unsigned __int16)this->word6, v152); word4 = (unsigned __int16)this->word4; LODWORD(v152[0]) = -1; std::vector<int>::resize(&v159, word4, v152); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "X", 1); sub_A973A0(v187, &v156, "tile name x coordinate"); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "Y", 1); sub_A973A0(v187, &v159, "tile name y coordinate"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 1); } std::vector<bool>::resize(&v170, (*(_DWORD *)&this->byte0 >> 4) & 0x3FFFFF, 0); if ( (unsigned __int8)HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "ExplicitSiteNames", 0) ) { HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); while ( !(unsigned __int8)HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 0) ) { v33 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid x"); v34 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "rpm grid y"); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v152, (bool)v187, (const char *)&dword_0 + 1); v150[0] = v33; v150[1] = v34; SiteAtRpmGridPoint = (HDDMSite *)HDDMDevice::getSiteAtRpmGridPoint(this, v150); if ( !SiteAtRpmGridPoint ) { v111 = __cxa_allocate_exception(0x10u); std::string::string(v145, "Empty RPM grid location %d,%d referenced", (unsigned int)v149, v112); HUBSimpleScanner::buildException(v111, v187, v145, v33); std::string::_Rep::_M_dispose(v145[0] - 24LL, v150); __cxa_throw( v111, (struct type_info *)&`typeinfo for'HUBSimpleScanner::ScanException, (void (*)(void *))HUBSimpleScanner::ScanException::~ScanException); } v36 = -1431655765 * (unsigned int)(((__int64)SiteAtRpmGridPoint - *(_QWORD *)(HDDMDeviceCache::m_devcache[(*((_BYTE *)SiteAtRpmGridPoint + 8) >> 2) & 0xF] + 208LL)) >> 3); if ( v36 >= v173 + 8 * (v172 - (_QWORD)v170) - (unsigned __int64)v171 ) std::__throw_out_of_range("vector<bool>::_M_range_check"); *((_QWORD *)v170 + (v36 >> 6)) |= 1LL << v36; HDDMSite::setname(SiteAtRpmGridPoint, v152[0]); std::string::_Rep::_M_dispose(v152[0] - 24, v150); } } if ( (unsigned __int8)HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "ImplicitSiteNameMap", 0) ) { HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "NumSiteTypeGroups", 1); v37 = HUBSimpleScanner::scanInt((HUBSimpleScanner *)v187, 1, "group count"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); v38 = v163; v39 = 0x6DB6DB6DB6DB6DB7LL * ((__int64)&v163[-v162] >> 3); if ( v37 > v39 ) { std::vector<HDDMSiteTypeGroup>::_M_default_append(&v162, v37 - v39); } else if ( v37 < v39 ) { v40 = (char *)(56LL * v37 + v162); v41 = v40; if ( v163 != v40 ) { do { v42 = v41 - v40; v43 = (void *)*((_QWORD *)v41 + 4); if ( v43 ) { operator delete(v43); v42 = v41 - v40; } v44 = *(void **)&v40[v42 + 8]; if ( v44 ) operator delete(v44); v45 = *(_QWORD *)v41; v41 += 56; std::string::_Rep::_M_dispose(v45 - 24, v152); } while ( v38 != v41 ); } v163 = v40; } if ( v37 > 0 ) { v124 = 0; v126 = (HUBSimpleScanner *)(56 * ((unsigned int)(v37 - 1) + 1LL)); do { v46 = (HUBSimpleScanner *)((char *)v124 + v162); v117 = (HUBSimpleScanner *)((char *)v124 + v162); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "SiteTypeGroup", 1); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v146, (bool)v187, (const char *)&dword_0 + 1); std::string::swap(v46, (std::string *)v146); std::string::_Rep::_M_dispose(v146[0] - 24LL, v152); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 40, 1); while ( !(unsigned __int8)HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 41, 0) ) { HUBSimpleScanner::scanWord((HUBSimpleScanner *)v152, (bool)v187, (const char *)&dword_0 + 1); std::string::string((std::string *)v147, (const std::string *)v152); SiteType = HDDMDevice::getSiteType(this, (const HSTString *)v147); std::string::_Rep::_M_dispose(v147[0] - 24LL, v150); if ( !SiteType ) { v108 = __cxa_allocate_exception(0x10u); v109 = v152[0]; std::string::string(v148, "No such siteType '%s'", (const char *)v149); HUBSimpleScanner::buildException(v108, v187, v148, v109); std::string::_Rep::_M_dispose(v148[0] - 24LL, v150); __cxa_throw( v108, (struct type_info *)&`typeinfo for'HUBSimpleScanner::ScanException, (void (*)(void *))HUBSimpleScanner::ScanException::~ScanException); } insert_hint_unique_pos_3 = insert_hint_unique_pos_6; insert_hint_unique_pos_2 = (HSTString *)&v176; if ( !insert_hint_unique_pos_6 ) goto LABEL_59; do { while ( SiteType <= *((_QWORD *)insert_hint_unique_pos_3 + 4) ) { insert_hint_unique_pos_2 = insert_hint_unique_pos_3; insert_hint_unique_pos_3 = (HSTString *)*((_QWORD *)insert_hint_unique_pos_3 + 2); if ( !insert_hint_unique_pos_3 ) goto LABEL_57; } insert_hint_unique_pos_3 = (HSTString *)*((_QWORD *)insert_hint_unique_pos_3 + 3); } while ( insert_hint_unique_pos_3 ); LABEL_57: if ( insert_hint_unique_pos_2 == (HSTString *)&v176 || SiteType < *((_QWORD *)insert_hint_unique_pos_2 + 4) ) { LABEL_59: insert_hint_unique_pos_4 = insert_hint_unique_pos_2; insert_hint_unique_pos_5 = (HSTString *)operator new(0x30u); insert_hint_unique_pos_2 = insert_hint_unique_pos_5; if ( insert_hint_unique_pos_5 ) { *(_DWORD *)insert_hint_unique_pos_5 = 0; *((_QWORD *)insert_hint_unique_pos_5 + 1) = 0; *((_QWORD *)insert_hint_unique_pos_5 + 2) = 0; *((_QWORD *)insert_hint_unique_pos_5 + 3) = 0; *((_QWORD *)insert_hint_unique_pos_5 + 4) = SiteType; *((_QWORD *)insert_hint_unique_pos_5 + 5) = 0; } insert_hint_unique_pos = std::_Rb_tree<HDDMSiteType const*,std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>,std::_Select1st<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>,std::less<HDDMSiteType const*>,std::allocator<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>>::_M_get_insert_hint_unique_pos( v175, insert_hint_unique_pos_4, (char *)insert_hint_unique_pos_5 + 32); if ( v52 ) { v53 = 1; if ( !insert_hint_unique_pos && (int *)v52 != &v176 ) v53 = *((_QWORD *)insert_hint_unique_pos_2 + 4) < *(_QWORD *)(v52 + 32); std::_Rb_tree_insert_and_rebalance(v53, insert_hint_unique_pos_2, v52, &v176); ++v180; } else { insert_hint_unique_pos_1 = (HSTString *)insert_hint_unique_pos; operator delete(insert_hint_unique_pos_2); insert_hint_unique_pos_2 = insert_hint_unique_pos_1; } } *((_QWORD *)insert_hint_unique_pos_2 + 5) = v117; std::string::_Rep::_M_dispose(v152[0] - 24, v150); } LODWORD(v152[0]) = -1; std::vector<int>::resize((char *)v117 + 8, (unsigned __int16)this->word8, v152); wordA = (unsigned __int16)this->wordA; LODWORD(v152[0]) = -1; std::vector<int>::resize((char *)v117 + 32, wordA, v152); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 123, 1); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "X", 1); sub_A8D650(v187, (char *)v117 + 8, "rpm x coordinate", "name x coordinate"); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "Y", 1); sub_A8D650(v187, (char *)v117 + 32, "rpm y coordinate", "name y coordinate"); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 1); v124 = (HUBSimpleScanner *)((char *)v124 + 56); } while ( v124 != v126 ); } HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 125, 1); } HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)v187, "End", 1); HUBSimpleScanner::scanTargetChar((HUBSimpleScanner *)v187, 59, 1); std::_Rb_tree<std::string,std::string,std::_Identity<std::string>,std::less<std::string>,std::allocator<std::string>>::_M_erase( &v181, v183); std::string::_Rep::_M_dispose((char *)s1[0] - 24, v152); HUBSimpleScanner::~HUBSimpleScanner((HUBSimpleScanner *)v187); qwordB8_1 = operator new(0x30u); *(_DWORD *)(qwordB8_1 + 8) = 0; *(_QWORD *)(qwordB8_1 + 16) = 0; *(_QWORD *)(qwordB8_1 + 40) = 0; *(_QWORD *)(qwordB8_1 + 24) = qwordB8_1 + 8; *(_QWORD *)(qwordB8_1 + 32) = qwordB8_1 + 8; this->qwordB8 = qwordB8_1; qwordC0_1 = operator new(0x30u); *(_DWORD *)(qwordC0_1 + 8) = 0; *(_QWORD *)(qwordC0_1 + 16) = 0; *(_QWORD *)(qwordC0_1 + 40) = 0; *(_QWORD *)(qwordC0_1 + 24) = qwordC0_1 + 8; *(_QWORD *)(qwordC0_1 + 32) = qwordC0_1 + 8; word4_1 = (unsigned __int16)this->word4; word6 = (unsigned __int16)this->word6; this->qwordC0 = qwordC0_1; if ( word6 * word4_1 ) { v59 = v165; if ( v166 == v168 + 8 * (v167 - (_QWORD)v165) ) LABEL_135: std::__throw_out_of_range("vector<bool>::_M_range_check"); v60 = 1; v61 = 0; v62 = 0; while ( 1 ) { if ( ((1LL << v61) & v59[v61 >> 6]) == 0 ) { v67 = (HDDMTile *)(this->qwordC8 + 40 * v62); v68 = HDDMDeviceCache::m_devcache[(*((_BYTE *)v67 + 3) >> 4) & 0xF]; v69 = -858993459 * (unsigned int)(((__int64)v67 - *(_QWORD *)(v68 + 200)) >> 3) % *(unsigned __int16 *)(v68 + 6); v70 = *(_WORD *)(v68 + 4) + ~(unsigned __int16)(-858993459 * (unsigned int)(((__int64)v67 - *(_QWORD *)(v68 + 200)) >> 3) / *(unsigned __int16 *)(v68 + 6)); if ( v157 == v156 ) { v125 = (unsigned __int16)v69; v127 = v70; } else { if ( (unsigned __int16)v69 >= (unsigned __int64)((v157 - (_BYTE *)v156) >> 2) ) std::__throw_out_of_range("vector::_M_range_check"); v125 = *((_DWORD *)v156 + (unsigned __int16)v69); if ( v70 >= (unsigned __int64)((v160 - (__int64)v159) >> 2) ) std::__throw_out_of_range("vector::_M_range_check"); v127 = *((_DWORD *)v159 + v70); } std::ios_base::ios_base((std::ios_base *)v198); v199 = 0; v200 = 0; v201 = 0; v202 = 0; v203 = 0; v204 = 0; v198[0] = (char *)&`vtable for'std::ios + 16; v205 = 0; v63 = `VTT for'std::ostringstream[1]; v64 = (HUBSimpleScanner *)`VTT for'std::ostringstream[2]; *(_QWORD *)v187 = v63; v129 = v64; *(_QWORD *)&v187[*(_QWORD *)(v63 - 24)] = v64; std::ios::init(&v187[*(_QWORD *)(*(_QWORD *)v187 - 24LL)], 0); v189 = 0; v190 = 0; v191 = 0; v192 = 0; v193 = 0; v194 = 0; *(_QWORD *)v187 = (char *)&`vtable for'std::ostringstream + 24; v198[0] = (char *)&`vtable for'std::ostringstream + 64; v188 = (char *)&`vtable for'std::streambuf + 16; std::locale::locale((std::locale *)&v195); n16 = 16; v188 = (char *)&`vtable for'std::stringbuf + 16; v197 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; std::ios::init(v198, &v188); HDDMTileType::getName((HDDMTileType *)s1); v65 = std::__ostream_insert<char,std::char_traits<char>>(v187, s1[0], *((_QWORD *)s1[0] - 3)); std::__ostream_insert<char,std::char_traits<char>>(v65, "_X", 2); v66 = std::ostream::operator<<(v65, v125); std::__ostream_insert<char,std::char_traits<char>>(v66, "Y", 1); std::ostream::operator<<(v66, v127); std::string::_Rep::_M_dispose((char *)s1[0] - 24, &v181); std::stringbuf::str(v152, &v188); HDDMTile::setname(v67, v152[0]); std::string::_Rep::_M_dispose(v152[0] - 24, &v181); *(_QWORD *)v187 = (char *)&`vtable for'std::ostringstream + 24; v198[0] = (char *)&`vtable for'std::ostringstream + 64; v188 = (char *)&`vtable for'std::stringbuf + 16; std::string::_Rep::_M_dispose(v197 - 24, &v181); v188 = (char *)&`vtable for'std::streambuf + 16; std::locale::~locale((std::locale *)&v195); *(_QWORD *)v187 = v63; *(_QWORD *)&v187[*(_QWORD *)(v63 - 24)] = v129; v198[0] = (char *)&`vtable for'std::ios + 16; std::ios_base::~ios_base((std::ios_base *)v198); word4_1 = (unsigned __int16)this->word4; word6 = (unsigned __int16)this->word6; } v62 = (unsigned int)v60; if ( (unsigned int)v60 >= word6 * word4_1 ) break; v59 = v165; if ( v60 >= v168 + 8 * (v167 - (_QWORD)v165) - (unsigned __int64)v166 ) goto LABEL_135; v61 = v60++; } } v71 = *(_DWORD *)&this->byte0; if ( (*(_DWORD *)&this->byte0 & 0x3FFFFF0) != 0 ) { v72 = v170; if ( v173 + 8 * (v172 - (_QWORD)v170) == v171 ) LABEL_129: std::__throw_out_of_range("vector<bool>::_M_range_check"); v73 = 1; v74 = 0; v75 = 0; while ( 1 ) { if ( ((1LL << v74) & v72[v74 >> 6]) == 0 ) { v76 = this->qwordD0 + 24 * v75; if ( (*(_BYTE *)(v76 + 8) & 0x40) != 0 ) { v130 = -1; v77 = -1; v128 = -1; v78 = -1; } else { v77 = *(__int16 *)(v76 + 4); v78 = *(__int16 *)(v76 + 6); v128 = (__int16)v77; v130 = (__int16)v78; } HDDMTileType::getName((HDDMTileType *)v187); v152[0] = *(char **)v187; *(_QWORD *)v187 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; std::string::_Rep::_M_dispose(&std::string::_Rep::_S_empty_rep_storage, &v181); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 = (HSTString *)&v176; v80 = *(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_BYTE *)(v76 + 8) >> 2) & 0xF] + 200LL) + 40LL * ((*(_DWORD *)v76 >> 2) & 0x3FFFFF); v81 = *(_QWORD *)(*(_QWORD *)(*(_QWORD *)(*(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_BYTE *)(v80 + 3) >> 4) & 0xF] + 160LL) + 8LL * (*(_WORD *)(v80 + 6) >> 6)) + 120LL) + 8LL * *(unsigned __int8 *)(v76 + 3)); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 = insert_hint_unique_pos_6; if ( !insert_hint_unique_pos_6 ) goto LABEL_96; do { while ( v81 <= *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 + 4) ) { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 = (HSTString *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 + 2); if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 ) goto LABEL_94; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 = (HSTString *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 + 3); } while ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__3 ); LABEL_94: if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 == (HSTString *)&v176 || v81 < *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 + 4) ) { LABEL_96: insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__4 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 = (HSTString *)operator new(0x30u); if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 ) { *(_DWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 = 0; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 1) = 0; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 2) = 0; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 3) = 0; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 4) = v81; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 5) = 0; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4_ = std::_Rb_tree<HDDMSiteType const*,std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>,std::_Select1st<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>,std::less<HDDMSiteType const*>,std::allocator<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>>::_M_get_insert_hint_unique_pos( v175, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__4, (char *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__6 + 32); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__1 = (HSTString *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4_; if ( v85 ) { v87 = 1; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4_ && (int *)v85 != &v176 ) v87 = *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5 + 4) < *(_QWORD *)(v85 + 32); std::_Rb_tree_insert_and_rebalance( v87, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5, v85, &v176); ++v180; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5; } else { operator delete(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__5); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__1; } } v88 = (const std::string *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS8_ERS4__2 + 5); if ( v88 ) { v89 = *((_QWORD *)v88 + 1); if ( v77 >= (*((_QWORD *)v88 + 2) - v89) >> 2 ) std::__throw_out_of_range("vector::_M_range_check"); v90 = *(_DWORD *)(v89 + 4 * v77); v91 = *((_QWORD *)v88 + 4); if ( v78 >= (*((_QWORD *)v88 + 5) - v91) >> 2 ) std::__throw_out_of_range("vector::_M_range_check"); v92 = *(_DWORD *)(v91 + 4 * v78); if ( v92 >= 0 && v90 >= 0 ) { std::string::assign((std::string *)v152, v88); v130 = v92; v128 = v90; } } std::ios_base::ios_base((std::ios_base *)v198); v199 = 0; v200 = 0; v201 = 0; v202 = 0; v203 = 0; v204 = 0; v198[0] = (char *)&`vtable for'std::ios + 16; v205 = 0; v93 = `VTT for'std::ostringstream[1]; v94 = (boost::filesystem::path *)`VTT for'std::ostringstream[2]; *(_QWORD *)v187 = v93; v131 = v94; *(_QWORD *)&v187[*(_QWORD *)(v93 - 24)] = v94; std::ios::init(&v187[*(_QWORD *)(*(_QWORD *)v187 - 24LL)], 0); v189 = 0; v190 = 0; v191 = 0; v192 = 0; v193 = 0; v194 = 0; *(_QWORD *)v187 = (char *)&`vtable for'std::ostringstream + 24; v198[0] = (char *)&`vtable for'std::ostringstream + 64; v188 = (char *)&`vtable for'std::streambuf + 16; std::locale::locale((std::locale *)&v195); n16 = 16; v188 = (char *)&`vtable for'std::stringbuf + 16; v197 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; std::ios::init(v198, &v188); v95 = std::__ostream_insert<char,std::char_traits<char>>(v187, v152[0], *((_QWORD *)v152[0] - 3)); std::__ostream_insert<char,std::char_traits<char>>(v95, "_X", 2); v96 = std::ostream::operator<<(v95, v128); std::__ostream_insert<char,std::char_traits<char>>(v96, "Y", 1); std::ostream::operator<<(v96, v130); std::stringbuf::str(&v181, &v188); HDDMSite::setname((HDDMSite *)v76, v181); std::string::_Rep::_M_dispose(v181 - 24, s1); *(_QWORD *)v187 = (char *)&`vtable for'std::ostringstream + 24; v198[0] = (char *)&`vtable for'std::ostringstream + 64; v188 = (char *)&`vtable for'std::stringbuf + 16; std::string::_Rep::_M_dispose(v197 - 24, &v181); v188 = (char *)&`vtable for'std::streambuf + 16; std::locale::~locale((std::locale *)&v195); *(_QWORD *)v187 = v93; *(_QWORD *)&v187[*(_QWORD *)(v93 - 24)] = v131; v198[0] = (char *)&`vtable for'std::ios + 16; std::ios_base::~ios_base((std::ios_base *)v198); std::string::_Rep::_M_dispose(v152[0] - 24, &v181); v71 = *(_DWORD *)&this->byte0; } v75 = (unsigned int)v73; if ( (unsigned int)v73 >= ((v71 >> 4) & 0x3FFFFF) ) break; v72 = v170; if ( v73 >= v173 + 8 * (v172 - (_QWORD)v170) - (unsigned __int64)v171 ) goto LABEL_129; v74 = v73++; } } if ( (unsigned int)HDDMDevice::getNumChips(this) > 1 ) { v97 = 0; for ( i = 0; v97 < (unsigned __int16)this->word6 * (unsigned int)(unsigned __int16)this->word4; *v101 = -858993459 * ((v100 - *(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_BYTE *)(v100 + 3) >> 4) & 0xF] + 200LL)) >> 3) ) { qwordC0 = this->qwordC0; v100 = this->qwordC8 + 40 * i; *(_QWORD *)v187 = v100 + 16; v101 = (_DWORD *)std::map<std::string const*,unsigned int,HDDMChipType::_DerefStringPtrLessThan,std::allocator<std::pair<std::string const* const,unsigned int>>>::operator[]( qwordC0, v187); i = ++v97; } v102 = 0; v103 = 0; if ( (*(_DWORD *)&this->byte0 & 0x3FFFFF0) != 0 ) { do { qwordB8 = this->qwordB8; v105 = this->qwordD0 + 24 * v102; *(_QWORD *)v187 = v105 + 16; v106 = (_DWORD *)std::map<std::string const*,unsigned int,HDDMChipType::_DerefStringPtrLessThan,std::allocator<std::pair<std::string const* const,unsigned int>>>::operator[]( qwordB8, v187); v102 = ++v103; *v106 = -1431655765 * ((v105 - *(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_BYTE *)(v105 + 8) >> 2) & 0xF] + 208LL)) >> 3); } while ( v103 < ((*(_DWORD *)&this->byte0 >> 4) & 0x3FFFFFu) ); } } std::_Rb_tree<HDDMSiteType const*,std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>,std::_Select1st<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>,std::less<HDDMSiteType const*>,std::allocator<std::pair<HDDMSiteType const* const,HDDMSiteTypeGroup const*>>>::_M_erase( v175, insert_hint_unique_pos_6); std::vector<HDDMSiteTypeGroup>::~vector(&v162); if ( v170 ) operator delete(v170); if ( v159 ) operator delete(v159); if ( v156 ) operator delete(v156); if ( v165 ) operator delete(v165); return std::vector<HDDMChipDesc>::~vector(&v153); }
最新发布
11-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值