CF779D:String Game(二分)

D. String Game
time limit per test
2 seconds
memory limit per test
512 megabytes
input
standard input
output
standard output

Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. But it turns out to be pretty hard for her, because she is too young. Therefore, her brother Sergey always helps her.

Sergey gives Nastya the word t and wants to get the word p out of it. Nastya removes letters in a certain order (one after another, in this order strictly), which is specified by permutation of letters' indices of the word ta1... a|t|. We denote the length of word x as |x|. Note that after removing one letter, the indices of other letters don't change. For example, if t = "nastya" and a = [4, 1, 5, 3, 2, 6] then removals make the following sequence of words "nastya "nastya "nastya "nastya "nastya "nastya "nastya".

Sergey knows this permutation. His goal is to stop his sister at some point and continue removing by himself to get the word p. Since Nastya likes this activity, Sergey wants to stop her as late as possible. Your task is to determine, how many letters Nastya can remove before she will be stopped by Sergey.

It is guaranteed that the word p can be obtained by removing the letters from word t.

Input

The first and second lines of the input contain the words t and p, respectively. Words are composed of lowercase letters of the Latin alphabet (1 ≤ |p| < |t| ≤ 200 000). It is guaranteed that the word p can be obtained by removing the letters from word t.

Next line contains a permutation a1, a2, ..., a|t| of letter indices that specifies the order in which Nastya removes letters of t (1 ≤ ai ≤ |t|, all ai are distinct).

Output

Print a single integer number, the maximum number of letters that Nastya can remove.

Examples
input
ababcba
abb
5 3 4 1 7 6 2
output
3
input
bbbabb
bb
1 6 3 4 2 5
output
4
Note

In the first sample test sequence of removing made by Nastya looks like this:

"ababcba "ababcba "ababcba "ababcba"

Nastya can not continue, because it is impossible to get word "abb" from word "ababcba".

So, Nastya will remove only three letters.

题意:给出t字串和p字串,然后按照给定的顺序删除t中的字符,问最多可以删多少个,使得p仍然是t的子序列。

思路:因为是按顺序删除的,二分答案即可。

# include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
using namespace std;
const int MAXN = 200000;
char a[MAXN+3], b[MAXN+3];
int arr[MAXN+3], vis[MAXN+3]={0}, cas=0, len, len2;

bool judge(int x)
{
    int cnt = 1;
    for(int i=0; i<x; ++i)
        vis[arr[i]] = cas;
    for(int i=1; i<=len; ++i)
        if(a[i] == b[cnt] && vis[i] != cas)
        {
            ++cnt;
            if(cnt == len2+1)
                return true;
        }
    return false;
}
int main()
{
    while(~scanf("%s%s",a+1,b+1))
    {
        len = strlen(a+1);
        len2 = strlen(b+1);
        for(int i=0; i<len; ++i)
            scanf("%d",&arr[i]);
        int l=1, r=len, mid;
        while(l<=r)
        {
            ++cas;//时间戳,避免重复memset vis数组浪费时间。
            mid = (l+r)>>1;
            if(judge(mid))
                l = mid + 1;
            else
                r = mid - 1;
        }
        printf("%d\n",r);
    }
    return 0;
}


请仔细阅读和分析下面函数 1. 保持原始的功能逻辑不变 2. 已经给定的结构体名字和元素不要更改 3. 程序内部错误和异常使用英文, 其他添加中文注释说明 4. 不使用 auto,使用显式 for 循环 5. 结构体采用32位定义 6. 不要使用小函数,使用一个函数进行部署 7. 实现全部功能,完整可编译的代码 8. 提高执行效率,降低计算复杂度 HDDMDevice *__fastcall HDDMDeviceCache::loadDevice( HDDMDeviceCache *this, const std::string *archFilePath, const std::string *deviceFilePath, const std::string *templatePath, const std::string *nodeTemplatePath) { int v6; // eax __int64 v7; // r15 __int64 v8; // r14 __int64 n128; // r13 _QWORD *s1_1; // r14 HDDMDevice *Device_2; // rbx _QWORD *s2_1; // rsi size_t n; // rdx bool v15; // zf HDDMDevice *Device_1; // rax const std::string *p_qword160; // r12 HDConfig *v18; // rbx unsigned __int64 v19; // rbx HEXInternalException *v20; // rbx char isDerived; // al char ValueAsBoolERKSs; // bl char ValueAsBoolERKSs_1; // bl unsigned __int16 word4; // si unsigned __int16 word6; // cx __int64 v26; // rdx unsigned __int64 v27; // rbx __int64 v28; // rdx __int64 v29; // rdi __int64 v30; // rax __int64 v31; // rcx __int64 v32; // rsi _QWORD *v33; // r12 __int64 v34; // rdx unsigned __int64 v35; // rax unsigned int v36; // ebp __int64 v37; // rcx unsigned int v38; // edi int v39; // r8d int v40; // edx int v41; // esi __int64 v42; // rcx int v43; // r9d int v44; // r10d __int16 n3; // cx unsigned int v46; // r14d __int64 v47; // r13 __int64 v48; // r13 __int64 v49; // r13 __int64 v50; // r8 const HDDMTilePort *s1_4; // r13 __int64 v52; // r8 std::string *v53; // rax _QWORD *v54; // r14 __int64 v55; // r15 __int64 v56; // rax __int64 v57; // r8 __int64 v58; // r14 __int64 v59; // rax unsigned int v60; // r15d unsigned int v61; // r14d __int64 v62; // r14 __int64 v63; // rax __int64 v64; // r8 int *insert_hint_unique_pos_3; // rdx int *insert_hint_unique_pos_2; // r15 int *insert_hint_unique_pos_4; // r14 __int64 insert_hint_unique_pos_5; // rax __int64 insert_hint_unique_pos; // rax __int64 v70; // rdx _BOOL8 v71; // rdi unsigned __int64 v72; // r14 int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12; // rdx int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2; // r15 __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14; // rax __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__13; // rax __int64 v77; // rdx _BOOL8 v78; // rdi int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15; // rdx HDDMTile *v80; // rsi int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5; // r15 int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__16; // r14 __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17; // rax HDDMTile *v84; // rax __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__3; // rax __int64 v86; // rdx _BOOL8 v87; // rdi unsigned __int64 v88; // r14 int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18; // rdx int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8; // r15 __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20; // rax __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__6; // rax __int64 v93; // rdx _BOOL8 v94; // rdi unsigned int v95; // r14d unsigned int v96; // r15d __int64 v97; // r13 __int64 v98; // r13 __int64 v99; // r13 __int64 v100; // r13 __int64 v101; // r13 __int64 v102; // r13 __int64 v103; // r13 __int64 v104; // rax __int64 v105; // rdx int v106; // eax __int64 v107; // rax int v108; // ecx unsigned int v109; // ebx __int64 v110; // rdx int v111; // ebp __int64 v112; // rax __int64 v113; // rax __int64 v114; // rax __int64 qwordA8; // rdx __int64 v116; // r13 int v117; // r14d int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21; // rax unsigned __int64 v119; // r12 int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10; // rbx __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22; // rax int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11; // r15 __int64 insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__9; // rax __int64 v124; // rdx _BOOL8 v125; // rdi int v126; // ebx __int64 v127; // rax __int64 v128; // rax __int64 v129; // rax __int64 TileType; // rbx int v131; // eax __int64 v132; // rdx __int64 v133; // rcx __int64 v134; // rax __int64 TileTypeERKSs; // rbx int v136; // eax __int64 v137; // rdx __int64 v138; // rcx __int64 v139; // rax HPAParamMgr *ParamMgrEv; // rbp char ValueAsBoolERKSs_2; // bl const char *s1_3; // rbp HDDMInactiveExceptionAccess *v143; // rbp char v144; // bl google::protobuf::Message *message; // rdx HEXDataException *v146; // rbp HDDMDevice **v147; // rbx __int64 v148; // rax __int64 v149; // rax HDDMOracle *v150; // rbx HEXDataException *exception; // rbx char *DEBUG:_Request_device_load:_%s__%s_n; // [rsp+0h] [rbp-AC8h] __int64 v153; // [rsp+8h] [rbp-AC0h] int v154; // [rsp+10h] [rbp-AB8h] HDDMTilePort **p_s1; // [rsp+20h] [rbp-AA8h] std::string *v158; // [rsp+30h] [rbp-A98h] std::string *v160; // [rsp+58h] [rbp-A70h] int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_; // [rsp+68h] [rbp-A60h] int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__19; // [rsp+68h] [rbp-A60h] unsigned int insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_a; // [rsp+68h] [rbp-A60h] int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__7; // [rsp+68h] [rbp-A60h] int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__4; // [rsp+68h] [rbp-A60h] int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__1; // [rsp+68h] [rbp-A60h] int *insert_hint_unique_pos_1; // [rsp+68h] [rbp-A60h] unsigned int v168; // [rsp+74h] [rbp-A54h] HDDMDevice *Device; // [rsp+98h] [rbp-A30h] __int64 v170; // [rsp+A0h] [rbp-A28h] __int64 v171; // [rsp+C0h] [rbp-A08h] char ValueAsBool; // [rsp+CBh] [rbp-9FDh] unsigned int v173; // [rsp+CCh] [rbp-9FCh] char v174; // [rsp+E5h] [rbp-9E3h] BYREF char v175; // [rsp+E7h] [rbp-9E1h] BYREF char v176; // [rsp+E9h] [rbp-9DFh] BYREF char v177; // [rsp+EAh] [rbp-9DEh] BYREF char v178; // [rsp+ECh] [rbp-9DCh] BYREF char v179; // [rsp+EDh] [rbp-9DBh] BYREF char v180; // [rsp+EFh] [rbp-9D9h] BYREF unsigned __int16 xngFileType[8]; // [rsp+F0h] [rbp-9D8h] BYREF unsigned __int16 xngFileType_1[8]; // [rsp+100h] [rbp-9C8h] BYREF unsigned __int16 p_xngFileVersion[7]; // [rsp+110h] [rbp-9B8h] BYREF unsigned __int16 xngFileVersion; // [rsp+11Eh] [rbp-9AAh] BYREF _QWORD v185[2]; // [rsp+120h] [rbp-9A8h] BYREF _QWORD v186[2]; // [rsp+130h] [rbp-998h] BYREF _QWORD v187[2]; // [rsp+140h] [rbp-988h] BYREF _QWORD v188[2]; // [rsp+150h] [rbp-978h] BYREF __int64 v189; // [rsp+160h] [rbp-968h] BYREF __int64 v190; // [rsp+170h] [rbp-958h] BYREF int v191[2]; // [rsp+180h] [rbp-948h] BYREF int v192[2]; // [rsp+190h] [rbp-938h] BYREF _QWORD v193[2]; // [rsp+1A0h] [rbp-928h] BYREF _QWORD v194[2]; // [rsp+1B0h] [rbp-918h] BYREF _QWORD v195[2]; // [rsp+1C0h] [rbp-908h] BYREF _QWORD deviceFilePath_1[2]; // [rsp+1F0h] [rbp-8D8h] BYREF _QWORD v197[2]; // [rsp+200h] [rbp-8C8h] BYREF __int64 v198; // [rsp+210h] [rbp-8B8h] BYREF __int64 v199; // [rsp+220h] [rbp-8A8h] BYREF _QWORD v200[2]; // [rsp+230h] [rbp-898h] BYREF _QWORD v201[2]; // [rsp+240h] [rbp-888h] BYREF _QWORD v202[2]; // [rsp+250h] [rbp-878h] BYREF _QWORD v203[2]; // [rsp+260h] [rbp-868h] BYREF _QWORD v204[2]; // [rsp+270h] [rbp-858h] BYREF _QWORD v205[2]; // [rsp+280h] [rbp-848h] BYREF _QWORD v206[2]; // [rsp+2A0h] [rbp-828h] BYREF _QWORD v207[2]; // [rsp+2B0h] [rbp-818h] BYREF _QWORD v208[2]; // [rsp+2C0h] [rbp-808h] BYREF _QWORD v209[2]; // [rsp+2D0h] [rbp-7F8h] BYREF _QWORD v210[2]; // [rsp+2F0h] [rbp-7D8h] BYREF _QWORD v211[2]; // [rsp+300h] [rbp-7C8h] BYREF _QWORD v212[2]; // [rsp+310h] [rbp-7B8h] BYREF _QWORD v213[2]; // [rsp+320h] [rbp-7A8h] BYREF _QWORD v214[2]; // [rsp+330h] [rbp-798h] BYREF _QWORD v215[2]; // [rsp+340h] [rbp-788h] BYREF _QWORD v216[2]; // [rsp+350h] [rbp-778h] BYREF _QWORD v217[2]; // [rsp+360h] [rbp-768h] BYREF _QWORD v218[2]; // [rsp+370h] [rbp-758h] BYREF _QWORD v219[2]; // [rsp+380h] [rbp-748h] BYREF _QWORD v220[2]; // [rsp+390h] [rbp-738h] BYREF unsigned int v221[4]; // [rsp+3A0h] [rbp-728h] BYREF _QWORD v222[2]; // [rsp+3B0h] [rbp-718h] BYREF HDDMTile *v223[2]; // [rsp+3C0h] [rbp-708h] BYREF HDDMTilePort *p_s1_1[2]; // [rsp+3D0h] [rbp-6F8h] BYREF __int64 v225; // [rsp+3E0h] [rbp-6E8h] BYREF __int64 v226; // [rsp+3F0h] [rbp-6D8h] BYREF _QWORD v227[2]; // [rsp+400h] [rbp-6C8h] BYREF _QWORD v228[2]; // [rsp+410h] [rbp-6B8h] BYREF __int64 v229; // [rsp+420h] [rbp-6A8h] BYREF _QWORD v230[2]; // [rsp+430h] [rbp-698h] BYREF _QWORD v231[2]; // [rsp+440h] [rbp-688h] BYREF _QWORD v232[2]; // [rsp+450h] [rbp-678h] BYREF const HDDMTile *v233[2]; // [rsp+460h] [rbp-668h] BYREF __int64 v234; // [rsp+470h] [rbp-658h] BYREF int v235; // [rsp+478h] [rbp-650h] BYREF int *insert_hint_unique_pos_6; // [rsp+480h] [rbp-648h] int *v237; // [rsp+488h] [rbp-640h] int *v238; // [rsp+490h] [rbp-638h] __int64 v239; // [rsp+498h] [rbp-630h] void *s1_2; // [rsp+4A0h] [rbp-628h] BYREF int v241; // [rsp+4A8h] [rbp-620h] BYREF int *insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23; // [rsp+4B0h] [rbp-618h] int *v243; // [rsp+4B8h] [rbp-610h] int *v244; // [rsp+4C0h] [rbp-608h] __int64 v245; // [rsp+4C8h] [rbp-600h] _BYTE v246[64]; // [rsp+4D0h] [rbp-5F8h] BYREF void *istream[12]; // [rsp+510h] [rbp-5B8h] BYREF _BYTE v248[176]; // [rsp+570h] [rbp-558h] BYREF void *s1; // [rsp+620h] [rbp-4A8h] BYREF char *v250; // [rsp+628h] [rbp-4A0h] BYREF HDDMDevice v251; // [rsp+630h] [rbp-498h] BYREF char v252; // [rsp+A88h] [rbp-40h] std::string::string(&s1, "", &s1_2); std::string::string(istream, "device:loadDevice", &v234); HUTMemWatcher::HUTMemWatcher((HUTMemWatcher *)v248, (const std::string *)istream, (const std::string *)&s1); std::string::_Rep::_M_dispose((char *)istream[0] - 24, v246); std::string::_Rep::_M_dispose((char *)s1 - 24, istream); if ( &_pthread_key_create ) { v6 = pthread_mutex_lock(&mutex_); if ( v6 ) std::__throw_system_error(v6); } HUTRuntime::HUTRuntime((HUTRuntime *)v246, 1); HUTMemory::getUsedMemory((HUTMemory *)v246); p_s1 = (HDDMTilePort **)HPAParamMgr::getParamMgr((HPAParamMgr *)v246); std::string::string(v185, "device.trackDeviceDataLoading", istream); ValueAsBool = HPAParamMgr::getValueAsBool((HPAParamMgr *)p_s1, (const std::string *)v185); std::string::_Rep::_M_dispose(v185[0] - 24LL, &s1); if ( ValueAsBool ) { v7 = *(_QWORD *)archFilePath; v8 = *(_QWORD *)deviceFilePath; std::string::string(v218, "trackDeviceDataLoading", &v175); std::string::string(v217, "device", &s1); v154 = v8; v153 = v7; DEBUG:_Request_device_load:_%s__%s_n = "DEBUG: Request device load: %s, %s\n"; ComMsgMgr::sendScopedMsg::eval( 2, "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", 770, v217, v218, 16777218); std::string::_Rep::_M_dispose(v217[0] - 24LL, istream); std::string::_Rep::_M_dispose(v218[0] - 24LL, &s1); } std::string::string((std::string *)v186, archFilePath); sub_2188390(&s1, (const std::string *)v186); n128 = 0; std::string::_Rep::_M_dispose(v186[0] - 24LL, istream); s1_1 = s1; do { Device_2 = *(HDDMDevice **)((char *)&this->qword0 + n128); if ( Device_2 ) { s2_1 = (_QWORD *)Device_2->qword160; n = *(s1_1 - 3); if ( n == *(s2_1 - 3) && !memcmp(s1_1, s2_1, n) ) { ++Device_2->dword158; if ( ValueAsBool ) { std::string::string(v220, "trackDeviceDataLoading", &v176); std::string::string(v219, "device", istream); ComMsgMgr::sendScopedMsg::eval( 3, "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", 789, v219, v220, 16777218); std::string::_Rep::_M_dispose(v219[0] - 24LL, &s1_2); std::string::_Rep::_M_dispose(v220[0] - 24LL, istream); s1_1 = s1; } std::string::_Rep::_M_dispose(s1_1 - 3, istream); goto LABEL_13; } } n128 += 8; } while ( n128 != 128 ); std::string::_Rep::_M_dispose(s1_1 - 3, istream); std::string::string(v188, "", istream); std::string::string(v187, "", &s1_2); Device = (HDDMDevice *)HDDMDeviceCache::createDevice(this, (const std::string *)v187, (const std::string *)v188); std::string::_Rep::_M_dispose(v187[0] - 24LL, &s1); std::string::_Rep::_M_dispose(v188[0] - 24LL, &s1); ++Device->dword158; xngFileType[0] = 0; xngFileVersion = 0; HDDMDeviceCache::getFileTypeAndVersion(this, archFilePath, xngFileType, &xngFileVersion); if ( (unsigned __int16)(xngFileType[0] - 2) > 1u ) { exception = (HEXDataException *)__cxa_allocate_exception(0x18u); std::string::string((std::string *)&v190, archFilePath); std::string::string(&v189, "File is not a chip or device XNG:", istream); sub_1E8DC92(exception, (int)DEBUG:_Request_device_load:_%s__%s_n, v153); std::string::_Rep::_M_dispose(v189 - 24, &s1); std::string::_Rep::_M_dispose(v190 - 24, &s1); __cxa_throw(exception, (struct type_info *)&`typeinfo for'HEXDataException, sub_1F4CF30); } *(_QWORD *)v191 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; *(_QWORD *)v192 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; if ( xngFileType[0] == 2 ) { sub_1F9A060(&s1, *(_QWORD *)archFilePath, 4, 0); std::istream::read((std::istream *)&v251, (char *)&s1_2, 8); HDDMXng::Chip::Chip((HDDMXng::Chip *)istream); HDDMDevice::readMessage(&v251, (std::istream *)istream, message); std::string::assign((std::string *)v191, (const std::string *)istream[7]); std::string::assign((std::string *)v192, (const std::string *)istream[6]); HDDMXng::Chip::~Chip((HDDMXng::Chip *)istream); sub_1F34A70(&s1); } else // xngd { std::string::string((std::string *)v193, archFilePath); HUBSimpleScanner::HUBSimpleScanner(&s1, v193); std::string::_Rep::_M_dispose(v193[0] - 24LL, istream); HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)&s1, "xngd", 1); HUBSimpleScanner::scanInt((HUBSimpleScanner *)&s1, 1, "version number"); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v194, (bool)&s1, (const char *)&dword_0 + 1); std::string::swap((std::string *)v191, (std::string *)v194); std::string::_Rep::_M_dispose(v194[0] - 24LL, istream); HUBSimpleScanner::scanWord((HUBSimpleScanner *)v195, (bool)&s1, (const char *)&dword_0 + 1); std::string::swap((std::string *)v192, (std::string *)v195); std::string::_Rep::_M_dispose(v195[0] - 24LL, istream); HUBSimpleScanner::~HUBSimpleScanner((HUBSimpleScanner *)&s1); } std::string::string((std::string *)deviceFilePath_1, deviceFilePath); if ( !*(_QWORD *)(deviceFilePath_1[0] - 24LL) ) { sub_21886D0(v197, archFilePath, v191); std::string::swap((std::string *)deviceFilePath_1, (std::string *)v197); std::string::_Rep::_M_dispose(v197[0] - 24LL, &s1); } HDDMDevice::setloadpaths(Device, archFilePath, (const std::string *)deviceFilePath_1); xngFileType_1[0] = 0; p_xngFileVersion[0] = 0; HDDMDeviceCache::getFileTypeAndVersion(this, (const std::string *)deviceFilePath_1, xngFileType_1, p_xngFileVersion); if ( xngFileType_1[0] != 1 ) { v146 = (HEXDataException *)__cxa_allocate_exception(0x18u); std::string::string((std::string *)&v199, (const std::string *)deviceFilePath_1); std::string::string(&v198, "File is not an architecture XNG:", istream); sub_1E8DC92(v146, (int)DEBUG:_Request_device_load:_%s__%s_n, v153); std::string::_Rep::_M_dispose(v198 - 24, &s1); std::string::_Rep::_M_dispose(v199 - 24, &s1); __cxa_throw(v146, (struct type_info *)&`typeinfo for'HEXDataException, sub_1F4CF30); } HDDMDevice::readarch_pb(Device, (const std::string *)deviceFilePath_1, p_xngFileVersion[0]); v15 = xngFileType[0] != 3; Device->byte1F1 = xngFileType[0] == 3; if ( !v15 ) { HDDMDevice::readdevice(Device, archFilePath); Device_1 = Device; if ( Device->qword40 ) goto LABEL_24; LABEL_29: HDDMDevice::createRPMGrid(Device_1); goto LABEL_24; } v251.word4 = -1; v251.word6 = -1; *(_WORD *)&v251.byte0 = -1; s1 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; v250 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; *(_WORD *)&v251.gap1[1] = -1; v251.word8 = -1; v251.wordA = -1; *(_QWORD *)&v251.word10 = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; memset(&v251.dword18, 0, 24); v251.qword30 = 0xFFFFFFFF00000000LL; std::string::assign((std::string *)&v250, "chip", 4u); std::string::assign((std::string *)&s1, (const std::string *)v192); std::string::assign((std::string *)&v251.word10, archFilePath); v251.word6 = 0; *(_WORD *)&v251.byte0 = 0; *(_WORD *)&v251.gap1[1] = 0; v251.word4 = 0; v251.word8 = 0; v251.wordA = 0; v251.qword30 = 0; istream[0] = 0; std::vector<HDDMChip *>::_M_fill_assign(&Device->qword3B8, 1, istream); HDDMDevice::readchip_pb(Device, &s1); std::string::_Rep::_M_dispose(*(_QWORD *)&v251.word10 - 24LL, istream); std::string::_Rep::_M_dispose(v250 - 24, istream); std::string::_Rep::_M_dispose((char *)s1 - 24, istream); Device_1 = Device; if ( !Device->qword40 ) goto LABEL_29; LABEL_24: HDDMDevice::createRoutingDS(Device); HDDMDevice::setrecursivedeviceid(Device, Device->byte0 & 0xF); p_qword160 = (const std::string *)&Device->qword160; std::string::string((std::string *)v200, (const std::string *)&Device->qword160); std::string::string((std::string *)v232, (const std::string *)v200); std::string::_Rep::_M_dispose(v200[0] - 24LL, &s1); std::string::string(v201, "cfg", &v174); boost::filesystem::path::replace_extension((boost::filesystem::path *)v232, (const boost::filesystem::path *)v201); std::string::_Rep::_M_dispose(v201[0] - 24LL, &s1); HUTEnv::getRDIDataDir((HUTEnv *)v202, (const std::string *)v232); std::string::string((std::string *)v233, (const std::string *)v202); std::string::_Rep::_M_dispose(v202[0] - 24LL, &s1); boost::filesystem::path::operator/=(v233, v232); std::string::string((std::string *)&v234, (const std::string *)v233); boost::filesystem::path::stem((boost::filesystem::path *)v203); std::string::string((std::string *)&s1_2, (const std::string *)v203); std::string::_Rep::_M_dispose(v203[0] - 24LL, &s1); std::string::string((std::string *)v204, (const std::string *)&v234); boost::filesystem::detail::status(v221, v204, 0); if ( v221[0] <= 1 ) { std::string::_Rep::_M_dispose(v204[0] - 24LL, &s1); } else { std::string::_Rep::_M_dispose(v204[0] - 24LL, &s1); v18 = (HDConfig *)operator new(0xB0u); HDConfig::HDConfig(v18, 0, 1); *(_QWORD *)Device->gap310 = v18; std::string::string(v205, "", istream); HDConfig::readFile(*(HDConfig **)Device->gap310, (const std::string *)&v234, (const std::string *)v205); std::string::_Rep::_M_dispose(v205[0] - 24LL, &s1); istream[0] = (char *)&std::string::_Rep::_S_empty_rep_storage + 24; std::string::string(v206, "DeviceName", v231); LOBYTE(v18) = sub_1F2E490(*(std::string **)Device->gap310, (HDARPart *)v206, (std::string *)istream); std::string::_Rep::_M_dispose(v206[0] - 24LL, &s1); if ( (_BYTE)v18 ) { v19 = *((_QWORD *)s1_2 - 3); if ( v19 != *((_QWORD *)istream[0] - 3) || memcmp(s1_2, istream[0], *((_QWORD *)s1_2 - 3)) ) { std::string::string(&s1, " Device name does not match configuration name! ", v231); std::string::append((std::string *)&s1, (const std::string *)istream); v20 = (HEXInternalException *)__cxa_allocate_exception(0x18u); HEXInternalException::HEXInternalException(v20, (const std::string *)&s1); __cxa_throw(v20, (struct type_info *)&`typeinfo for'HEXInternalException, sub_1F508A0); } } else { v19 = *((_QWORD *)istream[0] - 3); } std::string::_M_mutate((std::string *)istream, 0, v19, 0); std::string::string(v207, "BaseDevice", v231); v144 = sub_1F2E490(*(std::string **)Device->gap310, (HDARPart *)v207, (std::string *)istream); std::string::_Rep::_M_dispose(v207[0] - 24LL, &s1); if ( v144 ) std::string::assign((std::string *)&Device->gap310[8], (const std::string *)istream); std::string::_Rep::_M_dispose((char *)istream[0] - 24, &s1); } HDConfig::HDConfig((HDConfig *)&s1, 0, 1); std::string::string(v209, "", v231); std::string::string(v208, "specdevice.cfg", v230); HDConfig::readFile((HDConfig *)&s1, (const std::string *)v208, (const std::string *)v209); std::string::_Rep::_M_dispose(v208[0] - 24LL, istream); std::string::_Rep::_M_dispose(v209[0] - 24LL, istream); std::string::string(istream, "specialDevice.", v231); std::string::append((std::string *)istream, (const std::string *)&s1_2); if ( (unsigned __int8)HDConfig::exists((HDConfig *)&s1, (const std::string *)istream, 0) ) { if ( !*(_QWORD *)Device->gap310 ) sub_2035550( (unsigned int)"/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", 932, (unsigned int)"device", 0x20000000, (unsigned int)"@21-424@%s", (_DWORD)s1_2, (_DWORD)DEBUG:_Request_device_load:_%s__%s_n, v153, v154); } else if ( *(_QWORD *)Device->gap310 ) { s1_3 = (const char *)s1_2; std::string::string(v222, "device", &v177); ComMsgMgr::sendMsg::eval( 1, "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", 938, v222, &unk_8000000, "@21-425@%s", s1_3); std::string::_Rep::_M_dispose(v222[0] - 24LL, v231); } std::string::_Rep::_M_dispose((char *)istream[0] - 24, v231); HDConfig::~HDConfig((HDConfig *)&s1); std::string::_Rep::_M_dispose((char *)s1_2 - 24, &s1); std::string::_Rep::_M_dispose(v234 - 24, &s1); std::string::_Rep::_M_dispose((char *)v233[0] - 24, &s1); std::string::_Rep::_M_dispose(v232[0] - 24LL, &s1); HDDMDerived::HDDMDerived((HDDMDerived *)istream, Device); isDerived = HDDMDerived::isDerived((HDDMDerived *)istream); Device->byte321 = isDerived; if ( isDerived ) { HDDMDerived::buildTileList((HDDMDerived *)istream); HDDMDerived::buildSiteList((HDDMDerived *)istream); if ( Device->byte321 ) HDDMDerived::updateDevice((HDDMDerived *)istream); } HDDMDevice::postprocess(Device); std::string::string(v210, "device.disableTemplateLoading", &s1_2); ValueAsBoolERKSs = HPAParamMgr::getValueAsBool((HPAParamMgr *)p_s1, (const std::string *)v210); std::string::_Rep::_M_dispose(v210[0] - 24LL, &s1); if ( !ValueAsBoolERKSs ) { HDDMTemplateIO::HDDMTemplateIO((HDDMTemplateIO *)&s1); std::string::string(v211, "device.loadAllNodeTemplates", &v234); ValueAsBoolERKSs_1 = HPAParamMgr::getValueAsBool((HPAParamMgr *)p_s1, (const std::string *)v211); std::string::_Rep::_M_dispose(v211[0] - 24LL, &s1_2); if ( ValueAsBoolERKSs_1 ) v252 = 1; std::string::string((std::string *)v213, nodeTemplatePath); std::string::string((std::string *)v212, templatePath); HDDMTemplateIO::loadTemplateData(&s1, Device, v212, v213); std::string::_Rep::_M_dispose(v212[0] - 24LL, &s1_2); std::string::_Rep::_M_dispose(v213[0] - 24LL, &s1_2); HDDMTemplateIO::~HDDMTemplateIO((HDDMTemplateIO *)&s1); } HDDMNodeAdjuster::HDDMNodeAdjuster((HDDMNodeAdjuster *)&s1, Device); HDDMNodeAdjuster::performAdjustments((HDDMNodeAdjuster *)&s1, p_qword160); HDDMNodeAdjuster::~HDDMNodeAdjuster((HDDMNodeAdjuster *)&s1); HDDMDevice::suppressCostcodes(Device); if ( !HUTEnv::getEnv((HUTEnv *)"DEVMODEL_CHECKTILEPORTS", (const char *)p_qword160) ) goto LABEL_184; v235 = 0; insert_hint_unique_pos_6 = 0; v239 = 0; v241 = 0; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23 = 0; v245 = 0; v237 = &v235; v238 = &v235; v243 = &v241; v244 = &v241; std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Begin checking tile ports {\n", 28); word4 = Device->word4; word6 = Device->word6; if ( !(word6 * word4) ) goto LABEL_159; v173 = 0; v26 = 0; do { v27 = *(_QWORD *)(Device->qwordF8 + 8 * v26); v28 = *(_QWORD *)(*(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_WORD *)v27 >> 6) & 0xF] + 168LL) + 8LL * (*(_WORD *)(v27 + 4) & 0x3FF)); v29 = *(_QWORD *)(v28 + 560); v30 = *(_QWORD *)(v28 + 552); if ( !(unsigned __int16)((v29 - v30) >> 3) ) goto LABEL_158; v171 = 0; do { v160 = *(std::string **)(v30 + 8 * v171); v31 = *((_QWORD *)v160 + 3); v32 = *((_QWORD *)v160 + 4); if ( !(unsigned __int16)((v32 - v31) >> 3) ) goto LABEL_156; v170 = 0; while ( 1 ) { v33 = *(_QWORD **)(v31 + 8 * v170); v34 = v33[3]; v35 = (v33[4] - v34) >> 3; if ( (_DWORD)v35 ) { v36 = 0; while ( 1 ) { s1_4 = 0; if ( (unsigned __int16)v36 < v35 ) s1_4 = *(const HDDMTilePort **)(v34 + 8LL * (unsigned __int16)v36); v223[0] = 0; p_s1_1[0] = 0; if ( (unsigned __int8)HDDMTile::getMatchingPort((HDDMTile *)v27, s1_4, v223, p_s1_1) ) { if ( !(unsigned int)std::string::compare((std::string *)((char *)v160 + 8), "Z") ) hut::detail::assertion_failed( (hut::detail *)"edge1->getName() != \"Z\"", "void {anonymous}::_checkTilePorts(const HDDMDevice*)", "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", (const char *)&elf_hash_bucket[82], v52); v53 = *(std::string **)p_s1_1[0]; v233[0] = 0; s1 = 0; v158 = v53; HDDMTile::getMatchingPort(v223[0], p_s1_1[0], v233, (const HDDMTilePort **)&s1); if ( s1 ) v54 = *(_QWORD **)s1; else v54 = 0; if ( (const HDDMTile *)v27 != v233[0] ) { HDDMTile::getName((HDDMTile *)&v229); if ( v233[0] ) HDDMTile::getName((HDDMTile *)v228); else std::string::string(v228, "NULL", &v179); std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Tile3 = ", 8); v55 = std::__ostream_insert<char,std::char_traits<char>>( &std::cout, v228[0], *(_QWORD *)(v228[0] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v55, " should be ", 11); v56 = std::__ostream_insert<char,std::char_traits<char>>(v55, v229, *(_QWORD *)(v229 - 24)); std::__ostream_insert<char,std::char_traits<char>>(v56, "\n", 1); std::string::_Rep::_M_dispose(v228[0] - 24LL, v232); std::string::_Rep::_M_dispose(v229 - 24, v232); if ( (const HDDMTile *)v27 != v233[0] ) hut::detail::assertion_failed( (hut::detail *)"tile3 == tile1", "void {anonymous}::_checkTilePorts(const HDDMDevice*)", "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", (const char *)&elf_hash_bucket[85], v57); } if ( v33 != v54 ) { if ( v54 ) std::string::string((std::string *)v227, (const std::string *)(v54 + 2)); else std::string::string(v227, "NULL", &v178); std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Face3 = ", 8); v58 = std::__ostream_insert<char,std::char_traits<char>>( &std::cout, v227[0], *(_QWORD *)(v227[0] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v58, " should be ", 11); v59 = std::__ostream_insert<char,std::char_traits<char>>(v58, v33[2], *(_QWORD *)(v33[2] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v59, "\n", 1); std::string::_Rep::_M_dispose(v227[0] - 24LL, v232); } if ( s1_4 != s1 ) { v60 = *((_DWORD *)s1_4 + 2); v61 = -1; if ( s1 ) v61 = *((_DWORD *)s1 + 2); std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Port3 = ", 8); v62 = std::ostream::_M_insert<unsigned long>(&std::cout, v61); std::__ostream_insert<char,std::char_traits<char>>(v62, " should be ", 11); v63 = std::ostream::_M_insert<unsigned long>(v62, v60); std::__ostream_insert<char,std::char_traits<char>>(v63, "\n", 1); if ( s1_4 != s1 ) hut::detail::assertion_failed( (hut::detail *)"port3 == port1", "void {anonymous}::_checkTilePorts(const HDDMDevice*)", "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", (const char *)&elf_hash_bucket[87] + 3, v64); } if ( *((_DWORD *)s1_4 + 3) != *((_DWORD *)p_s1_1[0] + 3) ) { insert_hint_unique_pos_3 = insert_hint_unique_pos_6; insert_hint_unique_pos_2 = &v235; if ( !insert_hint_unique_pos_6 ) goto LABEL_86; do { while ( v27 <= *((_QWORD *)insert_hint_unique_pos_3 + 4) ) { insert_hint_unique_pos_2 = insert_hint_unique_pos_3; insert_hint_unique_pos_3 = (int *)*((_QWORD *)insert_hint_unique_pos_3 + 2); if ( !insert_hint_unique_pos_3 ) goto LABEL_84; } insert_hint_unique_pos_3 = (int *)*((_QWORD *)insert_hint_unique_pos_3 + 3); } while ( insert_hint_unique_pos_3 ); LABEL_84: if ( insert_hint_unique_pos_2 == &v235 || v27 < *((_QWORD *)insert_hint_unique_pos_2 + 4) ) { LABEL_86: insert_hint_unique_pos_4 = insert_hint_unique_pos_2; insert_hint_unique_pos_5 = operator new(0x30u); insert_hint_unique_pos_2 = (int *)insert_hint_unique_pos_5; if ( insert_hint_unique_pos_5 ) { *(_DWORD *)insert_hint_unique_pos_5 = 0; *(_QWORD *)(insert_hint_unique_pos_5 + 8) = 0; *(_QWORD *)(insert_hint_unique_pos_5 + 16) = 0; *(_QWORD *)(insert_hint_unique_pos_5 + 24) = 0; *(_QWORD *)(insert_hint_unique_pos_5 + 32) = v27; *(_DWORD *)(insert_hint_unique_pos_5 + 40) = 0; } insert_hint_unique_pos = std::_Rb_tree<HDDMTile const*,std::pair<HDDMTile const* const,int>,std::_Select1st<std::pair<HDDMTile const* const,int>>,std::less<HDDMTile const*>,std::allocator<std::pair<HDDMTile const* const,int>>>::_M_get_insert_hint_unique_pos( &v234, insert_hint_unique_pos_4, insert_hint_unique_pos_5 + 32); if ( v70 ) { v71 = 1; if ( !insert_hint_unique_pos && (int *)v70 != &v235 ) v71 = *((_QWORD *)insert_hint_unique_pos_2 + 4) < *(_QWORD *)(v70 + 32); std::_Rb_tree_insert_and_rebalance(v71, insert_hint_unique_pos_2, v70, &v235); ++v239; } else { insert_hint_unique_pos_1 = (int *)insert_hint_unique_pos; operator delete(insert_hint_unique_pos_2); insert_hint_unique_pos_2 = insert_hint_unique_pos_1; } } ++insert_hint_unique_pos_2[10]; v72 = *(_QWORD *)(*(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_WORD *)v27 >> 6) & 0xF] + 168LL) + 8LL * (*(_WORD *)(v27 + 4) & 0x3FF)); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 = &v241; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23 ) goto LABEL_98; do { while ( v72 <= *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 + 4) ) { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 + 2); if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 ) goto LABEL_96; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 + 3); } while ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__12 ); LABEL_96: if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 == &v241 || v72 < *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 + 4) ) { LABEL_98: insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_ = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 = operator new(0x30u); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14; if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 ) { *(_DWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 8) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 16) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 24) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 32) = v72; *(_DWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 40) = 0; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__13 = std::_Rb_tree<HDDMTileType const*,std::pair<HDDMTileType const* const,int>,std::_Select1st<std::pair<HDDMTileType const* const,int>>,std::less<HDDMTileType const*>,std::allocator<std::pair<HDDMTileType const* const,int>>>::_M_get_insert_hint_unique_pos( &s1_2, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__14 + 32); if ( v77 ) { v78 = 1; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__13 && (int *)v77 != &v241 ) v78 = *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 + 4) < *(_QWORD *)(v77 + 32); std::_Rb_tree_insert_and_rebalance( v78, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2, v77, &v241); ++v245; } else { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__1 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__13; operator delete(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__1; } } ++insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__2[10]; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 = insert_hint_unique_pos_6; if ( insert_hint_unique_pos_6 ) { v80 = v223[0]; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 = &v235; do { while ( (HDDMTile *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 + 4) >= v223[0] ) { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 + 2); if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 ) goto LABEL_108; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 + 3); } while ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__15 ); LABEL_108: if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 == &v235 || (HDDMTile *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 + 4) > v223[0] ) { LABEL_110: insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__16 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 = operator new(0x30u); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17; if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 ) { *(_DWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 + 8) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 + 16) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__17 + 24) = 0; v84 = v223[0]; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5[10] = 0; *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 + 4) = v84; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__3 = std::_Rb_tree<HDDMTile const*,std::pair<HDDMTile const* const,int>,std::_Select1st<std::pair<HDDMTile const* const,int>>,std::less<HDDMTile const*>,std::allocator<std::pair<HDDMTile const* const,int>>>::_M_get_insert_hint_unique_pos( &v234, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__16, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 + 8); if ( v86 ) { v87 = 1; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__3 && (int *)v86 != &v235 ) v87 = *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 + 4) < *(_QWORD *)(v86 + 32); std::_Rb_tree_insert_and_rebalance( v87, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5, v86, &v235); ++v239; } else { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__4 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__3; operator delete(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__4; } v80 = v223[0]; } ++insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5[10]; v88 = *(_QWORD *)(*(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_WORD *)v80 >> 6) & 0xF] + 168LL) + 8LL * (*((_WORD *)v80 + 2) & 0x3FF)); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 = &v241; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23 ) goto LABEL_123; do { while ( v88 <= *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 + 4) ) { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 + 2); if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 ) goto LABEL_121; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 + 3); } while ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__18 ); LABEL_121: if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 == &v241 || v88 < *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 + 4) ) { LABEL_123: insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__19 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 = operator new(0x30u); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20; if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 ) { *(_DWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 8) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 16) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 24) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 32) = v88; *(_DWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 40) = 0; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__6 = std::_Rb_tree<HDDMTileType const*,std::pair<HDDMTileType const* const,int>,std::_Select1st<std::pair<HDDMTileType const* const,int>>,std::less<HDDMTileType const*>,std::allocator<std::pair<HDDMTileType const* const,int>>>::_M_get_insert_hint_unique_pos( &s1_2, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__19, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__20 + 32); if ( v93 ) { v94 = 1; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__6 && (int *)v93 != &v241 ) v94 = *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 + 4) < *(_QWORD *)(v93 + 32); std::_Rb_tree_insert_and_rebalance( v94, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8, v93, &v241); ++v245; } else { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__7 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__6; operator delete(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__7; } } ++insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__8[10]; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_a = *((_DWORD *)p_s1_1[0] + 3); v168 = *((_DWORD *)p_s1_1[0] + 2); HDDMTile::getName((HDDMTile *)&v226); v95 = *((_DWORD *)s1_4 + 3); v96 = *((_DWORD *)s1_4 + 2); HDDMTile::getName((HDDMTile *)&v225); std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Global mismatch: ", 17); v97 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v225, *(_QWORD *)(v225 - 24)); std::__ostream_insert<char,std::char_traits<char>>(v97, ".", 1); v98 = std::__ostream_insert<char,std::char_traits<char>>(v97, v33[2], *(_QWORD *)(v33[2] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v98, "[", 1); v99 = std::ostream::_M_insert<unsigned long>(v98, v96); std::__ostream_insert<char,std::char_traits<char>>(v99, "] = ", 4); v100 = std::ostream::_M_insert<unsigned long>(v99, v95); std::__ostream_insert<char,std::char_traits<char>>(v100, " ", 1); v101 = std::__ostream_insert<char,std::char_traits<char>>(v100, v226, *(_QWORD *)(v226 - 24)); std::__ostream_insert<char,std::char_traits<char>>(v101, ".", 1); v102 = std::__ostream_insert<char,std::char_traits<char>>( v101, *((_QWORD *)v158 + 2), *(_QWORD *)(*((_QWORD *)v158 + 2) - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v102, "[", 1); v103 = std::ostream::_M_insert<unsigned long>(v102, v168); std::__ostream_insert<char,std::char_traits<char>>(v103, "] = ", 4); v104 = std::ostream::_M_insert<unsigned long>( v103, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4_a); std::__ostream_insert<char,std::char_traits<char>>(v104, "\n", 1); std::string::_Rep::_M_dispose(v225 - 24, v232); std::string::_Rep::_M_dispose(v226 - 24, v232); goto LABEL_56; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__5 = &v235; goto LABEL_110; } } else if ( v223[0] ) { if ( (*(_BYTE *)v27 & 0x20) != 0 ) { v143 = (HDDMInactiveExceptionAccess *)__cxa_allocate_exception(0x18u); HDDMTile::getRawName((HDDMTile *)v231); std::string::string(v232, "Tile", v233); HDDMInactiveExceptionAccess::HDDMInactiveExceptionAccess( v143, (const std::string *)v232, (const std::string *)v231); std::string::_Rep::_M_dispose(v232[0] - 24LL, &s1); std::string::_Rep::_M_dispose(v231[0] - 24LL, &s1); __cxa_throw(v143, (struct type_info *)&`typeinfo for'HDDMInactiveExceptionAccess, sub_1ED58B0); } v37 = HDDMDeviceCache::m_devcache[(*(_WORD *)v27 >> 6) & 0xF]; v38 = *(unsigned __int16 *)(v37 + 6); v39 = *(unsigned __int16 *)(v37 + 4); v40 = *(_DWORD *)(v27 + 40) % v38; v41 = v39 - 1 - *(_DWORD *)(v27 + 40) / v38; v42 = *(_QWORD *)(*(_QWORD *)(v37 + 168) + 8LL * (*(_WORD *)(v27 + 4) & 0x3FF)); v43 = *(unsigned __int16 *)(v42 + 24); v44 = *(unsigned __int16 *)(v42 + 26); n3 = ***(_WORD ***)s1_4; if ( n3 == 1 ) { if ( v43 + v40 == v38 ) goto LABEL_56; } else if ( n3 ) { if ( n3 == 2 ) { if ( !(_WORD)v41 ) goto LABEL_56; } else if ( n3 != 3 || !(_WORD)v40 ) { goto LABEL_56; } } else if ( v44 + (unsigned __int16)v41 == v39 ) { goto LABEL_56; } v46 = *((_DWORD *)s1_4 + 2); HDDMTile::getName((HDDMTile *)v230); std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Missing matching port for ", 26); v47 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v230[0], *(_QWORD *)(v230[0] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v47, ".", 1); v48 = std::__ostream_insert<char,std::char_traits<char>>(v47, v33[2], *(_QWORD *)(v33[2] - 24LL)); std::__ostream_insert<char,std::char_traits<char>>(v48, "[", 1); v49 = std::ostream::_M_insert<unsigned long>(v48, v46); std::__ostream_insert<char,std::char_traits<char>>(v49, "]", 1); std::__ostream_insert<char,std::char_traits<char>>(v49, "\n", 1); std::string::_Rep::_M_dispose(v230[0] - 24LL, &s1); hut::detail::assertion_failed( (hut::detail *)"false", "void {anonymous}::_checkTilePorts(const HDDMDevice*)", "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", (const char *)&elf_hash_bucket[80] + 1, v50); } LABEL_56: v34 = v33[3]; ++v36; v35 = (v33[4] - v34) >> 3; if ( v36 >= (unsigned int)v35 ) { v105 = *((_QWORD *)v160 + 3); v32 = *((_QWORD *)v160 + 4); goto LABEL_139; } } } v105 = v31; LABEL_139: v106 = v170++; if ( (unsigned __int16)((v32 - v105) >> 3) <= v106 + 1 ) break; v31 = v105; } v107 = *(_QWORD *)(*(_QWORD *)(HDDMDeviceCache::m_devcache[(*(_WORD *)v27 >> 6) & 0xF] + 168LL) + 8LL * (*(_WORD *)(v27 + 4) & 0x3FF)); v29 = *(_QWORD *)(v107 + 560); v30 = *(_QWORD *)(v107 + 552); LABEL_156: v108 = v171++; } while ( v108 + 1 < (unsigned __int16)((v29 - v30) >> 3) ); word4 = Device->word4; word6 = Device->word6; LABEL_158: v26 = ++v173; } while ( v173 < word6 * (unsigned int)word4 ); LABEL_159: if ( v239 ) { std::ofstream::basic_ofstream(&s1, "badGlobals.txt", 48); if ( (unsigned __int16)Device->word6 * (unsigned __int16)Device->word4 ) { v109 = 0; v110 = 0; do { v233[0] = *(const HDDMTile **)(Device->qwordF8 + 8 * v110); v111 = *(_DWORD *)std::map<HDDMTile const*,int>::operator[](&v234, v233); if ( v111 > 0 ) { HDDMTile::getName((HDDMTile *)p_s1_1); v112 = std::__ostream_insert<char,std::char_traits<char>>(&s1, p_s1_1[0], *((_QWORD *)p_s1_1[0] - 3)); v113 = std::operator<<<std::char_traits<char>>(v112, " "); v114 = std::ostream::operator<<(v113, (unsigned int)v111); std::operator<<<std::char_traits<char>>(v114, "\n"); std::string::_Rep::_M_dispose((char *)p_s1_1[0] - 24, v232); } v110 = ++v109; } while ( v109 < (unsigned __int16)Device->word6 * (unsigned int)(unsigned __int16)Device->word4 ); } qwordA8 = Device->qwordA8; if ( (unsigned __int16)((Device->qwordB0 - qwordA8) >> 3) ) { v116 = 0; v117 = 0; do { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23; v119 = *(_QWORD *)(qwordA8 + v116); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 = &v241; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23 ) goto LABEL_174; do { while ( v119 <= *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 + 4) ) { insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21; insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 + 2); if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 ) goto LABEL_172; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 = (int *)*((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 + 3); } while ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__21 ); LABEL_172: if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 == &v241 || v119 < *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 + 4) ) { LABEL_174: insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 = operator new(0x30u); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22; if ( insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 ) { *(_DWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 8) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 16) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 24) = 0; *(_QWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 32) = v119; *(_DWORD *)(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 40) = 0; } insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__9 = std::_Rb_tree<HDDMTileType const*,std::pair<HDDMTileType const* const,int>,std::_Select1st<std::pair<HDDMTileType const* const,int>>,std::less<HDDMTileType const*>,std::allocator<std::pair<HDDMTileType const* const,int>>>::_M_get_insert_hint_unique_pos( &s1_2, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__22 + 32); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 = (int *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__9; if ( v124 ) { v125 = 1; if ( !insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__9 && (int *)v124 != &v241 ) v125 = *((_QWORD *)insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11 + 4) < *(_QWORD *)(v124 + 32); insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11; std::_Rb_tree_insert_and_rebalance( v125, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11, v124, &v241); ++v245; } else { operator delete(insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__11); } } v126 = insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__10[10]; if ( v126 > 0 ) { HDDMTileType::getName((HDDMTileType *)v223); v127 = std::__ostream_insert<char,std::char_traits<char>>(&s1, v223[0], *((_QWORD *)v223[0] - 3)); v128 = std::operator<<<std::char_traits<char>>(v127, " "); v129 = std::ostream::operator<<(v128, (unsigned int)v126); std::operator<<<std::char_traits<char>>(v129, "\n"); std::string::_Rep::_M_dispose((char *)v223[0] - 24, v233); } ++v117; v116 += 8; qwordA8 = Device->qwordA8; } while ( v117 < (unsigned __int16)((Device->qwordB0 - qwordA8) >> 3) ); } std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "}\n", 2); std::ofstream::~ofstream(&s1); } std::_Rb_tree<HDDMTileType const*,std::pair<HDDMTileType const* const,int>,std::_Select1st<std::pair<HDDMTileType const* const,int>>,std::less<HDDMTileType const*>,std::allocator<std::pair<HDDMTileType const* const,int>>>::_M_erase( &s1_2, insert_hint_unique_posESt23_Rb_tree_const_iteratorIS5_ERS4__23); std::_Rb_tree<HDDMTile const*,std::pair<HDDMTile const* const,int>,std::_Select1st<std::pair<HDDMTile const* const,int>>,std::less<HDDMTile const*>,std::allocator<std::pair<HDDMTile const* const,int>>>::_M_erase( &v234, insert_hint_unique_pos_6); LABEL_184: if ( !*(_QWORD *)&Device->gap329[7] ) { v150 = (HDDMOracle *)operator new(0x138u); HDDMOracle::HDDMOracle(v150, Device); *(_QWORD *)&Device->gap329[7] = v150; } std::string::string(v214, "RCLK_INT_L", &s1_2); TileType = HDDMDevice::getTileType(Device, (const std::string *)v214); std::string::_Rep::_M_dispose(v214[0] - 24LL, &s1); if ( TileType ) { v131 = *(unsigned __int16 *)(TileType + 2); if ( (_WORD)v131 ) { v132 = 0; v133 = 8 * (3LL * (unsigned int)(v131 - 1) + 3); do { v134 = *(_QWORD *)(TileType + 216) + v132; if ( (*(_BYTE *)(v134 + 1) & 8) != 0 ) *(_BYTE *)(v134 + 2) |= 0x10u; v132 += 24; } while ( v132 != v133 ); } } std::string::string(v215, "RCLK_INT_R", &s1_2); TileTypeERKSs = HDDMDevice::getTileType(Device, (const std::string *)v215); std::string::_Rep::_M_dispose(v215[0] - 24LL, &s1); if ( TileTypeERKSs ) { v136 = *(unsigned __int16 *)(TileTypeERKSs + 2); if ( (_WORD)v136 ) { v137 = 0; v138 = 8 * (3LL * (unsigned int)(v136 - 1) + 3); do { v139 = *(_QWORD *)(TileTypeERKSs + 216) + v137; if ( (*(_BYTE *)(v139 + 1) & 8) != 0 ) *(_BYTE *)(v139 + 2) |= 0x10u; v137 += 24; } while ( v137 != v138 ); } } HDDMResourceLimits::HDDMResourceLimits((HDDMResourceLimits *)&s1, Device, 0); *(&Device->byte321 + 1) = HDDMResourceLimits::isDeviceLimited((HDDMResourceLimits *)&s1); HDDMResourceLimits::~HDDMResourceLimits((HDDMResourceLimits *)&s1); if ( ValueAsBool ) { HUTMemory::getUsedMemory((HUTMemory *)&s1); HUTRuntime::getWallSecs((HUTRuntime *)v246); HUTRuntime::getUserSecs((HUTRuntime *)v246); std::string::string(&s1, "trackDeviceDataLoading", &v180); std::string::string(v233, "device", &s1_2); ComMsgMgr::sendScopedMsg::eval( 4, "/proj/rdi-xco/wall/workspaces/wall287/sub/REL/2016.3/src/shared/device/devmodel/HDDMDevice.cxx", 1045, v233, &s1, 16777218); std::string::_Rep::_M_dispose((char *)v233[0] - 24, &v234); std::string::_Rep::_M_dispose((char *)s1 - 24, &s1_2); } HDDMProto::freeMemory((HDDMProto *)&qword_992E0F0); ParamMgrEv = (HPAParamMgr *)HPAParamMgr::getParamMgr((HPAParamMgr *)&qword_992E0F0); std::string::string(v216, "arch.regenRpmGrid", &s1_2); ValueAsBoolERKSs_2 = HPAParamMgr::getValueAsBool(ParamMgrEv, (const std::string *)v216); std::string::_Rep::_M_dispose(v216[0] - 24LL, &s1); if ( ValueAsBoolERKSs_2 ) { HDDMSiteRPMHack::HDDMSiteRPMHack((HDDMSiteRPMHack *)&s1, Device); HDDMSiteRPMHack::regenRPMGrid((HDDMSiteRPMHack *)&s1); HDDMDevice::createRPMGrid(Device); HDDMSiteRPMHack::~HDDMSiteRPMHack((HDDMSiteRPMHack *)&s1); } if ( !*(_QWORD *)&Device->gap329[15] ) { v147 = (HDDMDevice **)operator new(0x20u); v147[1] = 0; v147[2] = 0; v147[3] = 0; *v147 = Device; v148 = Device->qword98 - Device->qword90; s1 = 0; v149 = v148 >> 3; if ( (_WORD)v149 ) std::vector<HDDMConnectionDB *>::_M_fill_insert(v147 + 1, 0, (unsigned __int16)v149, &s1); *(_QWORD *)&Device->gap329[15] = v147; } HDDMDerived::~HDDMDerived((HDDMDerived *)istream); std::string::_Rep::_M_dispose(deviceFilePath_1[0] - 24LL, &s1); std::string::_Rep::_M_dispose(*(_QWORD *)v192 - 24LL, &s1); std::string::_Rep::_M_dispose(*(_QWORD *)v191 - 24LL, &s1); Device_2 = Device; LABEL_13: HUTRuntime::~HUTRuntime((HUTRuntime *)v246); if ( &_pthread_key_create ) pthread_mutex_unlock(&mutex_); HUTMemWatcher::~HUTMemWatcher((HUTMemWatcher *)v248); return Device_2; }
最新发布
09-29
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值