请仔细阅读和分析下面函数,进行优化后,采用C/C++11标准,完整推导并重构可编译的全部代码
特别注意:
1.保留所有原始功能
2.提高执行效率,降低计算复杂度
3.已经给定的结构体名字和元素不要更改,详细的中文注释
4.自动添加中文注释说明功能逻辑
5.不使用 auto,使用显式 for 循环
6.结构体采用32位定义
7.不要使用小函数,保持原始的函数定义
HDDMDevice *__cdecl HDDMDeviceCache::loadDevice(
HDDMDeviceCache *this,
const HSTString *deviceFilePath,
const HSTString *archFilePath)
{
int v3; // ebp
_DWORD *v4; // edi
int i; // esi
HDDMDevice *v6; // ebp
_DWORD *v7; // eax
int v8; // eax
void **v9; // eax
HDDMTilePort **v10; // eax
volatile signed __int32 *v11; // edi
bool v12; // al
HDDMDevice *v13; // eax
int Env; // edi
unsigned __int16 v15; // bp
unsigned __int16 v16; // di
unsigned int v17; // eax
int v18; // esi
int v19; // eax
int v20; // edx
int v21; // ebp
int v22; // ecx
int v23; // edi
int v24; // edx
unsigned int v25; // eax
int v26; // ecx
unsigned int v27; // eax
int v28; // ebp
int v29; // edx
int v30; // eax
int v31; // ecx
__int16 v32; // ax
_WORD **v33; // edi
int v34; // esi
int v35; // esi
int v36; // esi
const HDDMTilePort *v37; // edi
_DWORD *v38; // ebp
int v39; // esi
int v40; // eax
int v41; // esi
int v42; // eax
_WORD **v43; // ebp
int v44; // esi
int v45; // esi
int v46; // eax
int *v47; // eax
unsigned int v48; // edx
int *v49; // ecx
unsigned int v50; // esi
int *v51; // eax
int *v52; // ebp
_DWORD *v53; // eax
int *v54; // esi
_BOOL4 v55; // edx
int *v56; // eax
HDDMTile *v57; // edx
int *v58; // ecx
unsigned int v59; // esi
int *v60; // eax
int *v61; // ebp
_DWORD *v62; // eax
int *v63; // esi
_BOOL4 v64; // edx
_WORD **v65; // edi
int v66; // esi
int v67; // esi
int v68; // edi
int v69; // edi
int v70; // edi
int v71; // edi
int v72; // edi
int v73; // eax
int v74; // eax
unsigned int v75; // esi
unsigned int v76; // eax
HDDMTile *v77; // ecx
int *v78; // eax
int *v79; // edx
int v80; // edi
int v81; // eax
int v82; // eax
int v83; // eax
int v84; // edx
int v85; // ebp
unsigned int v86; // edi
int *v87; // eax
int *v88; // esi
int *v89; // eax
_BOOL4 v90; // ecx
int v91; // esi
int v92; // eax
int v93; // eax
int v94; // eax
int TileType; // esi
int v96; // ecx
int v97; // edx
int v98; // edi
int v99; // eax
int v100; // esi
int v101; // ecx
int v102; // edx
int v103; // edi
int v104; // eax
HDDMOracle *v106; // esi
void *v107; // esi
void *exception; // edi
int (__cdecl ***v109)(int); // eax
HDDMTile **v110; // eax
_DWORD *v111; // eax
HPAParamMgr *s1; // [esp+0h] [ebp-6DCh]
const char *s2; // [esp+4h] [ebp-6D8h]
google::protobuf::Message *n; // [esp+8h] [ebp-6D4h]
HDDMTilePort **v115; // [esp+Ch] [ebp-6D0h]
HDDMTilePort **v116; // [esp+Ch] [ebp-6D0h]
HDDMTilePort **v117; // [esp+10h] [ebp-6CCh]
void *v118; // [esp+14h] [ebp-6C8h]
const char *v119; // [esp+18h] [ebp-6C4h]
int v120; // [esp+1Ch] [ebp-6C0h]
char v121; // [esp+30h] [ebp-6ACh]
unsigned int j; // [esp+30h] [ebp-6ACh]
int v123; // [esp+38h] [ebp-6A4h]
int *v124; // [esp+38h] [ebp-6A4h]
unsigned int v125; // [esp+40h] [ebp-69Ch]
_DWORD *v126; // [esp+40h] [ebp-69Ch]
HPAParamMgr *ParamMgr; // [esp+4Ch] [ebp-690h]
HPAParamMgr *v128; // [esp+4Ch] [ebp-690h]
HPAParamMgr *v129; // [esp+4Ch] [ebp-690h]
unsigned __int16 v130; // [esp+50h] [ebp-68Ch]
int v131; // [esp+50h] [ebp-68Ch]
_DWORD *v132; // [esp+60h] [ebp-67Ch]
int v133; // [esp+64h] [ebp-678h]
_WORD **v134; // [esp+68h] [ebp-674h]
int v135; // [esp+7Ch] [ebp-660h]
HDDMDevice *Device; // [esp+80h] [ebp-65Ch]
int v137; // [esp+84h] [ebp-658h]
char ValueAsBool; // [esp+8Fh] [ebp-64Dh]
unsigned int v139; // [esp+90h] [ebp-64Ch]
int *v140; // [esp+94h] [ebp-648h] BYREF
int *v141; // [esp+98h] [ebp-644h] BYREF
int *v142; // [esp+9Ch] [ebp-640h]
char v143; // [esp+ADh] [ebp-62Fh] BYREF
char v144; // [esp+AEh] [ebp-62Eh] BYREF
char v145; // [esp+AFh] [ebp-62Dh] BYREF
char v146; // [esp+B0h] [ebp-62Ch] BYREF
char v147; // [esp+B8h] [ebp-624h] BYREF
char v148; // [esp+B9h] [ebp-623h] BYREF
char v149; // [esp+BAh] [ebp-622h] BYREF
unsigned __int16 xng_device_FileType[8]; // [esp+C0h] [ebp-61Ch] BYREF
unsigned __int16 v151[6]; // [esp+D0h] [ebp-60Ch] BYREF
char xng_device_FileVersion[4]; // [esp+DCh] [ebp-600h] BYREF
_DWORD v153[4]; // [esp+E0h] [ebp-5FCh] BYREF
int v154[4]; // [esp+F0h] [ebp-5ECh] BYREF
_DWORD v155[4]; // [esp+100h] [ebp-5DCh] BYREF
_DWORD v156[4]; // [esp+110h] [ebp-5CCh] BYREF
int v157[4]; // [esp+120h] [ebp-5BCh] BYREF
_DWORD v158[4]; // [esp+130h] [ebp-5ACh] BYREF
_DWORD v159[4]; // [esp+140h] [ebp-59Ch] BYREF
_DWORD v160[4]; // [esp+150h] [ebp-58Ch] BYREF
_DWORD v161[4]; // [esp+160h] [ebp-57Ch] BYREF
_DWORD v162[4]; // [esp+170h] [ebp-56Ch] BYREF
_DWORD v163[4]; // [esp+190h] [ebp-54Ch] BYREF
_DWORD v164[4]; // [esp+1A0h] [ebp-53Ch] BYREF
_DWORD v165[4]; // [esp+1B0h] [ebp-52Ch] BYREF
_DWORD v166[4]; // [esp+1C0h] [ebp-51Ch] BYREF
int v167[4]; // [esp+1D0h] [ebp-50Ch] BYREF
_DWORD v168[4]; // [esp+1E0h] [ebp-4FCh] BYREF
_DWORD v169[4]; // [esp+1F0h] [ebp-4ECh] BYREF
_DWORD v170[4]; // [esp+200h] [ebp-4DCh] BYREF
_DWORD v171[4]; // [esp+210h] [ebp-4CCh] BYREF
_DWORD v172[4]; // [esp+220h] [ebp-4BCh] BYREF
_DWORD v173[4]; // [esp+230h] [ebp-4ACh] BYREF
char *v174[4]; // [esp+240h] [ebp-49Ch] BYREF
_DWORD v175[4]; // [esp+250h] [ebp-48Ch] BYREF
_DWORD v176[4]; // [esp+260h] [ebp-47Ch] BYREF
_DWORD v177[4]; // [esp+270h] [ebp-46Ch] BYREF
int v178[4]; // [esp+280h] [ebp-45Ch] BYREF
int v179[4]; // [esp+290h] [ebp-44Ch] BYREF
int v180[4]; // [esp+2A0h] [ebp-43Ch] BYREF
int v181[4]; // [esp+2B0h] [ebp-42Ch] BYREF
_DWORD v182[4]; // [esp+2C0h] [ebp-41Ch] BYREF
_DWORD v183[4]; // [esp+2D0h] [ebp-40Ch] BYREF
int v184[4]; // [esp+2E0h] [ebp-3FCh] BYREF
int v185[4]; // [esp+2F0h] [ebp-3ECh] BYREF
unsigned int *v186; // [esp+300h] [ebp-3DCh] BYREF
_DWORD v187[8]; // [esp+310h] [ebp-3CCh] BYREF
_DWORD v188[3]; // [esp+330h] [ebp-3ACh] BYREF
int v189; // [esp+33Ch] [ebp-3A0h] BYREF
unsigned int v190; // [esp+340h] [ebp-39Ch] BYREF
HDDMTile *v191[4]; // [esp+350h] [ebp-38Ch] BYREF
HDDMTilePort *v192[4]; // [esp+360h] [ebp-37Ch] BYREF
HDDMTile *v193[4]; // [esp+370h] [ebp-36Ch] BYREF
char v194[4]; // [esp+380h] [ebp-35Ch] BYREF
int v195; // [esp+384h] [ebp-358h] BYREF
void *v196; // [esp+388h] [ebp-354h]
int *v197; // [esp+38Ch] [ebp-350h]
int *v198; // [esp+390h] [ebp-34Ch]
int v199; // [esp+394h] [ebp-348h]
_BYTE v200[28]; // [esp+3A4h] [ebp-338h] BYREF
int (__cdecl **v201)(int); // [esp+3C0h] [ebp-31Ch] BYREF
int v202; // [esp+3C4h] [ebp-318h] BYREF
void *v203; // [esp+3C8h] [ebp-314h]
int *v204; // [esp+3CCh] [ebp-310h]
int *v205; // [esp+3D0h] [ebp-30Ch]
volatile signed __int32 *v206; // [esp+3D4h] [ebp-308h]
_DWORD v207[5]; // [esp+3D8h] [ebp-304h] BYREF
std::string *v208; // [esp+3ECh] [ebp-2F0h]
int v209; // [esp+450h] [ebp-28Ch]
void *hddmChipDesc; // [esp+460h] [ebp-27Ch] BYREF
char *v211; // [esp+464h] [ebp-278h] BYREF
__int16 v212; // [esp+468h] [ebp-274h] BYREF
__int16 v213; // [esp+46Ah] [ebp-272h]
__int16 v214; // [esp+46Ch] [ebp-270h]
__int16 v215; // [esp+46Eh] [ebp-26Eh]
__int16 v216; // [esp+470h] [ebp-26Ch]
__int16 v217; // [esp+472h] [ebp-26Ah]
_DWORD v218[5]; // [esp+474h] [ebp-268h] BYREF
int v219; // [esp+488h] [ebp-254h]
char v220; // [esp+48Ch] [ebp-250h]
HUTRuntime::HUTRuntime((HUTRuntime *)v200, 1);
ParamMgr = (HPAParamMgr *)HPAParamMgr::getParamMgr(s1);
std::string::string(v153);
ValueAsBool = HPAParamMgr::getValueAsBool(ParamMgr, (const std::string *)v153);
std::string::_Rep::_M_dispose(v153[0] - 12, &hddmChipDesc);
if ( ValueAsBool )
{
v3 = *(_DWORD *)deviceFilePath;
std::string::string(v192);
std::string::string(v171);
v120 = v3;
v119 = "DEBUG: Request device load: %s, %s\n";
v118 = &loc_1000002;
v117 = v192;
ComMsgMgr::sendScopedMsg::eval(
2,
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
738,
v171);
std::string::_Rep::_M_dispose(v171[0] - 12, &v201);
std::string::_Rep::_M_dispose((char *)v192[0] - 12, &hddmChipDesc);
}
std::string::string((std::string *)v154, deviceFilePath);
sub_92304C();
std::string::_Rep::_M_dispose(v154[0] - 12, &v201);
v4 = hddmChipDesc;
for ( i = 0; i != 16; ++i )
{
v6 = (HDDMDevice *)*((_DWORD *)this + i);
if ( v6 )
{
v7 = (_DWORD *)v6->dword9C;
if ( *(v4 - 3) == *(v7 - 3) && !memcmp(v4, v7, *(v4 - 3)) )
{
++v6->dword98;
if ( ValueAsBool )
{
std::string::string(v193);
std::string::string(v172);
ComMsgMgr::sendScopedMsg::eval(
2,
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
757,
v172);
std::string::_Rep::_M_dispose(v172[0] - 12, v194);
std::string::_Rep::_M_dispose((char *)v193[0] - 12, &v201);
v4 = hddmChipDesc;
}
std::string::_Rep::_M_dispose(v4 - 3, &v201);
goto LABEL_177;
}
}
}
std::string::_Rep::_M_dispose(v4 - 3, &v201);
std::string::string(v156, "", &v143);
std::string::string(v155, "", &v144);
Device = (HDDMDevice *)HDDMDeviceCache::createDevice(this, (const HSTString *)v155, (const HSTString *)v156);
std::string::_Rep::_M_dispose(v155[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose(v156[0] - 12, &hddmChipDesc);
++Device->dword98;
xng_device_FileType[0] = 0;
*(_WORD *)xng_device_FileVersion = 0;
HDDMDeviceCache::getFileTypeAndVersion(this, deviceFilePath, xng_device_FileType, xng_device_FileVersion);
if ( (unsigned __int16)(xng_device_FileType[0] - 2) > 1u )
{
exception = __cxa_allocate_exception(0xCu);
std::string::string((std::string *)&v189, deviceFilePath);
std::string::string(v157);
sub_6A63B6(
(std::string *)&v189,
(int)"File is not a chip or device XNG:",
(int)&v201,
(int)v115,
(int)v117,
(int)v118,
(int)v119,
v120);
std::string::_Rep::_M_dispose(v157[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose(v189 - 12, &hddmChipDesc);
__cxa_throw(
exception,
(struct type_info *)&`typeinfo for'HEXDataException,
(void (*)(void *))HEXDataException::~HEXDataException);
}
v158[0] = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
v159[0] = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
if ( xng_device_FileType[0] == 2 )
{
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::filtering_stream(
(int)&hddmChipDesc,
*(_DWORD *)deviceFilePath,
4,
0);
std::istream::read((std::istream *)&v212, v194, (int)&byte_8);
HDDMXng::Chip::Chip((HDDMXng::Chip *)&v201);
HDDMDevice::readMessage((HDDMDevice *)&v212, (std::istream *)&v201, n);
std::string::assign((std::string *)v158, v208);
std::string::assign((std::string *)v159, (const std::string *)v207[4]);
HDDMXng::Chip::~Chip((HDDMXng::Chip *)&v201);
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::~filtering_stream((int)&hddmChipDesc);
}
else
{
std::string::string((std::string *)v160, deviceFilePath);
HUBSimpleScanner::HUBSimpleScanner(&hddmChipDesc, v160);
std::string::_Rep::_M_dispose(v160[0] - 12, &v201);
HUBSimpleScanner::scanTargetWord((HUBSimpleScanner *)&hddmChipDesc, "xngd", 1);
HUBSimpleScanner::scanInt((HUBSimpleScanner *)&hddmChipDesc, 1, "version number");
HUBSimpleScanner::scanWord((HUBSimpleScanner *)v161, (bool)&hddmChipDesc, (const char *)&dword_0 + 1);
std::string::swap((std::string *)v158, (std::string *)v161);
std::string::_Rep::_M_dispose(v161[0] - 12, &v201);
HUBSimpleScanner::scanWord((HUBSimpleScanner *)v162, (bool)&hddmChipDesc, (const char *)&dword_0 + 1);
std::string::swap((std::string *)v159, (std::string *)v162);
std::string::_Rep::_M_dispose(v162[0] - 12, &v201);
HUBSimpleScanner::~HUBSimpleScanner((HUBSimpleScanner *)&hddmChipDesc);
}
std::string::string((std::string *)v163, archFilePath);
if ( !*(_DWORD *)(v163[0] - 12) )
{
std::string::string((std::string *)v173, deviceFilePath);
std::string::string((std::string *)v174, (const std::string *)v158);
std::string::append((std::string *)v174, ".xng", 4u);
v8 = std::string::rfind((std::string *)v173, "/", 0xFFFFFFFF, 1u);
if ( v8 == -1 )
{
std::string::assign((std::string *)v173, (const std::string *)v174);
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::filtering_stream(
(int)&hddmChipDesc,
v173[0],
4,
0);
if ( (v220 & 5) != 0 )
{
std::string::string((std::string *)v177, (const std::string *)v158);
std::string::append((std::string *)v177, "_", 1u);
v109 = (int (__cdecl ***)(int))std::string::append((std::string *)v177, deviceFilePath);
v201 = *v109;
*v109 = (int (__cdecl **)(int))((char *)&std::string::_Rep::_S_empty_rep_storage + 12);
std::string::swap((std::string *)v173, (std::string *)&v201);
std::string::_Rep::_M_dispose(v201 - 3, v194);
std::string::_Rep::_M_dispose(v177[0] - 12, &v201);
}
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::~filtering_stream((int)&hddmChipDesc);
}
else
{
v125 = v8 + 1;
std::string::replace((std::string *)v173, v8 + 1, 0xFFFFFFFF, v174[0], *((_DWORD *)v174[0] - 3));
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::filtering_stream(
(int)&v201,
v173[0],
4,
0);
if ( ((unsigned __int8)v208 & 5) != 0 )
{
std::operator+<char>((std::string *)v176);
v9 = (void **)std::string::append((std::string *)v176, "/", 1u);
hddmChipDesc = *v9;
*v9 = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
v10 = (HDDMTilePort **)std::string::append((std::string *)&hddmChipDesc, (const std::string *)v174);
v192[0] = *v10;
*v10 = (HDDMTilePort *)((char *)&std::string::_Rep::_S_empty_rep_storage + 12);
std::string::_Rep::_M_dispose((char *)hddmChipDesc - 12, v194);
std::string::_Rep::_M_dispose(v176[0] - 12, &hddmChipDesc);
std::string::replace((std::string *)v173, v125, 0xFFFFFFFF, (const char *)v192[0], *((_DWORD *)v192[0] - 3));
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::filtering_stream(
(int)&hddmChipDesc,
v173[0],
4,
0);
if ( (v220 & 5) != 0 )
{
std::operator+<char>((std::string *)v175);
v110 = (HDDMTile **)std::string::append((std::string *)v175, "/", 1u);
v193[0] = *v110;
*v110 = (HDDMTile *)((char *)&std::string::_Rep::_S_empty_rep_storage + 12);
v111 = (_DWORD *)std::string::append((std::string *)v193, (const std::string *)v174);
*(_DWORD *)v194 = *v111;
*v111 = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
std::string::swap((std::string *)v192, (std::string *)v194);
std::string::_Rep::_M_dispose(*(_DWORD *)v194 - 12, v191);
std::string::_Rep::_M_dispose((char *)v193[0] - 12, v194);
std::string::_Rep::_M_dispose(v175[0] - 12, v194);
std::string::replace((std::string *)v173, v125, 0xFFFFFFFF, (const char *)v192[0], *((_DWORD *)v192[0] - 3));
}
isl::iostreams::filtering_stream<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>,boost::iostreams::public_>::~filtering_stream((int)&hddmChipDesc);
std::string::_Rep::_M_dispose((char *)v192[0] - 12, v194);
}
v201 = &off_212594C;
v203 = &off_212594C + 6;
v207[0] = &off_212594C + 11;
if ( (*(_BYTE *)(*(_DWORD *)v202 + 24) & 1) != 0 )
(*(void (__cdecl **)(int))(*(_DWORD *)v209 + 24))(v209);
v201 = &off_212590C;
v203 = &off_212590C + 6;
v207[0] = &off_212590C + 11;
v11 = v206;
if ( v206 )
{
if ( _InterlockedExchangeAdd(v206 + 1, 0xFFFFFFFF) == 1 )
{
(*(void (__cdecl **)(volatile signed __int32 *))(*v11 + 8))(v11);
if ( _InterlockedExchangeAdd(v11 + 2, 0xFFFFFFFF) == 1 )
(*(void (__cdecl **)(volatile signed __int32 *))(*v11 + 12))(v11);
}
}
v203 = off_21258CC;
v204 = 0;
v201 = (int (__cdecl **)(int))(&`vtable for'boost::iostreams::detail::chain_client<boost::iostreams::chain<boost::iostreams::input,char,std::char_traits<char>,std::allocator<char>>>
+ 2);
v207[0] = (char *)&`vtable for'std::ios + 8;
std::ios_base::~ios_base((std::ios_base *)v207);
}
std::string::string((std::string *)v164, (const std::string *)v173);
std::string::_Rep::_M_dispose(v174[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose(v173[0] - 12, &hddmChipDesc);
std::string::swap((std::string *)v163, (std::string *)v164);
std::string::_Rep::_M_dispose(v164[0] - 12, &hddmChipDesc);
}
std::string::string((std::string *)v165, (const std::string *)v163);
HDDMDevice::setloadpaths(Device, deviceFilePath, (const HSTString *)v165);
std::string::_Rep::_M_dispose(v165[0] - 12, &hddmChipDesc);
*(_WORD *)&xng_device_FileVersion[2] = 0;
v151[0] = 0;
std::string::string((std::string *)v166, (const std::string *)v163);
HDDMDeviceCache::getFileTypeAndVersion(
this,
(const HSTString *)v166,
(unsigned __int16 *)&xng_device_FileVersion[2],
(char *)v151);
std::string::_Rep::_M_dispose(v166[0] - 12, &hddmChipDesc);
if ( *(_WORD *)&xng_device_FileVersion[2] != 1 )
{
v107 = __cxa_allocate_exception(0xCu);
std::string::string((std::string *)v191, (const std::string *)v163);
std::string::string(v167);
sub_6A63B6(
(std::string *)v191,
(int)"File is not an architecture XNG:",
(int)&v201,
(int)v116,
(int)v117,
(int)v118,
(int)v119,
v120);
std::string::_Rep::_M_dispose(v167[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose((char *)v191[0] - 12, &hddmChipDesc);
__cxa_throw(
v107,
(struct type_info *)&`typeinfo for'HEXDataException,
(void (*)(void *))HEXDataException::~HEXDataException);
}
HDDMDevice::readarch_pb(Device, (const std::string *)v163, v151[0]);
v12 = xng_device_FileType[0] == 3;
Device->byteE1 = xng_device_FileType[0] == 3;
if ( v12 )
{
HDDMDevice::readdevice(Device, deviceFilePath);
}
else
{
hddmChipDesc = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
v211 = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
v212 = -1;
v213 = -1;
v214 = -1;
v215 = -1;
v216 = -1;
v217 = -1;
v218[0] = (char *)&std::string::_Rep::_S_empty_rep_storage + 12;
memset(&v218[1], 0, 16);
v219 = 0;
std::string::assign((std::string *)&v211, "chip", 4u);
std::string::assign((std::string *)&hddmChipDesc, (const std::string *)v159);
std::string::assign((std::string *)v218, deviceFilePath);
v212 = 0;
v213 = 0;
v214 = 0;
v215 = 0;
v216 = 0;
v217 = 0;
v219 = 0;
v201 = 0;
std::vector<HDDMChip *>::_M_fill_assign((int)&Device->dword1A4, 1, (int)&v201);
HDDMDevice::readchip_pb(Device, (HDDMChipDesc *)&hddmChipDesc);
std::string::_Rep::_M_dispose(v218[0] - 12, &v201);
std::string::_Rep::_M_dispose(v211 - 12, &v201);
std::string::_Rep::_M_dispose((char *)hddmChipDesc - 12, &v201);
}
v13 = Device;
if ( !Device->dword2C )
{
HDDMDevice::createRPMGrid(Device);
v13 = Device;
}
HDDMDevice::createRoutingDS(v13);
HDDMDevice::setrecursivedeviceid(Device, Device->byte0 & 0xF);
HDDMDevice::postprocess(Device);
std::string::string(v168);
v121 = HPAParamMgr::getValueAsBool(ParamMgr, (const std::string *)v168);
std::string::_Rep::_M_dispose(v168[0] - 12, &hddmChipDesc);
if ( !v121 )
{
HDDMTemplateIO::HDDMTemplateIO((HDDMTemplateIO *)&hddmChipDesc);
HDDMTemplateIO::loadTemplateData((HDDMTemplateIO *)&hddmChipDesc, Device);
HDDMTemplateIO::~HDDMTemplateIO((HDDMTemplateIO *)&hddmChipDesc);
}
HDDMNodeAdjuster::HDDMNodeAdjuster((HDDMNodeAdjuster *)&hddmChipDesc, Device);
HDDMNodeAdjuster::performAdjustments((HDDMNodeAdjuster *)&hddmChipDesc, (const std::string *)&Device->dword9C);
HDDMNodeAdjuster::~HDDMNodeAdjuster((HDDMNodeAdjuster *)&hddmChipDesc);
HDDMDevice::suppressCostcodes(Device);
HUTEnv::HUTEnv((HUTEnv *)&v149);
Env = HUTEnv::getEnv((HUTEnv *)"DEVMODEL_CHECKTILEPORTS", s2);
HUTEnv::~HUTEnv((HUTEnv *)&v149);
if ( Env )
{
v195 = 0;
v196 = 0;
v199 = 0;
v197 = &v195;
v198 = &v195;
v202 = 0;
v203 = 0;
v206 = 0;
v204 = &v202;
v205 = &v202;
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Begin checking tile ports {\n", 28);
if ( !((unsigned __int16)Device->word6 * (unsigned __int16)Device->word4) )
goto LABEL_130;
v15 = Device->word6;
v16 = Device->word4;
v139 = 0;
v17 = 0;
while ( 1 )
{
v18 = Device->dword74 + 28 * v17;
v190 = v18;
v19 = *(_DWORD *)(*(_DWORD *)(HDDMDeviceCache::m_devcache[*(_BYTE *)(v18 + 3) >> 4] + 96)
+ 4 * (*(_WORD *)(v18 + 6) >> 6));
v20 = *(_DWORD *)(v19 + 292);
if ( !(unsigned __int16)((*(_DWORD *)(v19 + 296) - v20) >> 2) )
goto LABEL_129;
v21 = *(_DWORD *)(v19 + 296);
v137 = 0;
do
{
v132 = *(_DWORD **)(v20 + 4 * v137);
v22 = v132[3];
v23 = v132[4];
if ( !(unsigned __int16)((v23 - v22) >> 2) )
goto LABEL_127;
v135 = 0;
do
{
v126 = *(_DWORD **)(v22 + 4 * v135);
v24 = v126[3];
v25 = (v126[4] - v24) >> 2;
if ( !v25 )
goto LABEL_125;
for ( j = 0; j < v25; ++j )
{
v37 = 0;
if ( (unsigned __int16)j < v25 )
v37 = *(const HDDMTilePort **)(v24 + 4 * (unsigned __int16)j);
v191[0] = 0;
v192[0] = 0;
if ( (unsigned __int8)HDDMTile::getMatchingPort((HDDMTile *)v18, v37, v191, v192) )
{
if ( !std::string::compare((std::string *)(v132 + 1), "Z") )
hut::detail::assertion_failed(
(hut::detail *)"edge1->getName() != \"Z\"",
"void {anonymous}::_checkTilePorts(const HDDMDevice*)",
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
(const char *)&elf_hash_bucket[109] + 2,
(int)v117);
v129 = *(HPAParamMgr **)v192[0];
v193[0] = 0;
hddmChipDesc = 0;
HDDMTile::getMatchingPort(v191[0], v192[0], v193, (const HDDMTilePort **)&hddmChipDesc);
if ( hddmChipDesc )
v38 = *(_DWORD **)hddmChipDesc;
else
v38 = 0;
if ( v193[0] != (HDDMTile *)v190 )
{
HDDMTile::getName((HDDMTile *)v184);
if ( v193[0] )
HDDMTile::getName((HDDMTile *)v183);
else
std::string::string(v183, "NULL", &v148);
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Tile3 = ", 8);
v39 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v183[0], *(_DWORD *)(v183[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v39, " should be ", 11);
v40 = std::__ostream_insert<char,std::char_traits<char>>(v39, v184[0], *(_DWORD *)(v184[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v40, "\n", 1);
std::string::_Rep::_M_dispose(v183[0] - 12, &v189);
std::string::_Rep::_M_dispose(v184[0] - 12, &v189);
if ( v193[0] != (HDDMTile *)v190 )
hut::detail::assertion_failed(
(hut::detail *)"tile3 == tile1",
"void {anonymous}::_checkTilePorts(const HDDMDevice*)",
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
(const char *)&elf_hash_bucket[112] + 2,
(int)v117);
}
if ( v126 != v38 )
{
if ( v38 )
std::string::string((std::string *)v182, (const std::string *)(v38 + 2));
else
std::string::string(v182, "NULL", &v147);
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Face3 = ", 8);
v41 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v182[0], *(_DWORD *)(v182[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v41, " should be ", 11);
v42 = std::__ostream_insert<char,std::char_traits<char>>(v41, v126[2], *(_DWORD *)(v126[2] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v42, "\n", 1);
std::string::_Rep::_M_dispose(v182[0] - 12, &v189);
}
if ( v37 != hddmChipDesc )
{
v43 = (_WORD **)*((_DWORD *)v37 + 1);
v44 = hddmChipDesc ? *((_DWORD *)hddmChipDesc + 1) : -1;
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Port3 = ", 8);
v45 = std::ostream::_M_insert<unsigned long>(&std::cout, v44);
std::__ostream_insert<char,std::char_traits<char>>(v45, " should be ", 11);
v46 = std::ostream::_M_insert<unsigned long>(v45, v43);
std::__ostream_insert<char,std::char_traits<char>>(v46, "\n", 1);
if ( v37 != hddmChipDesc )
hut::detail::assertion_failed(
(hut::detail *)"port3 == port1",
"void {anonymous}::_checkTilePorts(const HDDMDevice*)",
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
(const char *)&elf_hash_bucket[115] + 1,
(int)v117);
}
if ( *((_DWORD *)v37 + 2) != *((_DWORD *)v192[0] + 2) )
{
v47 = (int *)v196;
if ( !v196 )
goto LABEL_76;
v48 = v190;
v49 = &v195;
do
{
while ( v47[4] >= v190 )
{
v49 = v47;
v47 = (int *)v47[2];
if ( !v47 )
goto LABEL_74;
}
v47 = (int *)v47[3];
}
while ( v47 );
LABEL_74:
if ( v49 == &v195 || v49[4] > v190 )
{
LABEL_76:
v186 = &v190;
v117 = (HDDMTilePort **)&v186;
v116 = (HDDMTilePort **)&unk_1BA93B5;
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_emplace_hint_unique<std::piecewise_construct_t const&,std::tuple<HDDMTile const* const&>,std::tuple<>>((int)&v140);
v48 = v190;
v49 = v140;
}
++v49[5];
v50 = *(_DWORD *)(*(_DWORD *)(HDDMDeviceCache::m_devcache[*(_BYTE *)(v48 + 3) >> 4] + 96)
+ 4 * (*(_WORD *)(v48 + 6) >> 6));
v51 = (int *)v203;
v52 = &v202;
if ( !v203 )
goto LABEL_84;
do
{
while ( v50 <= v51[4] )
{
v52 = v51;
v51 = (int *)v51[2];
if ( !v51 )
goto LABEL_82;
}
v51 = (int *)v51[3];
}
while ( v51 );
LABEL_82:
if ( v52 == &v202 || v50 < v52[4] )
{
LABEL_84:
v53 = (_DWORD *)operator new(0x18u);
v52 = v53;
if ( v53 )
{
*v53 = 0;
v53[1] = 0;
v53[2] = 0;
v53[3] = 0;
v53[4] = v50;
v53[5] = 0;
}
v116 = (HDDMTilePort **)(v53 + 4);
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((int)&v141);
v54 = v141;
if ( v142 )
{
v55 = 1;
if ( !v141 && v142 != &v202 )
v55 = v52[4] < (unsigned int)v142[4];
std::_Rb_tree_insert_and_rebalance(v55, v52, v142, &v202);
v206 = (volatile signed __int32 *)((char *)v206 + 1);
}
else
{
operator delete(v52);
v52 = v54;
}
}
++v52[5];
v56 = (int *)v196;
if ( !v196 )
goto LABEL_96;
v57 = v191[0];
v58 = &v195;
do
{
while ( (HDDMTile *)v56[4] >= v191[0] )
{
v58 = v56;
v56 = (int *)v56[2];
if ( !v56 )
goto LABEL_94;
}
v56 = (int *)v56[3];
}
while ( v56 );
LABEL_94:
if ( v58 == &v195 || (HDDMTile *)v58[4] > v191[0] )
{
LABEL_96:
v187[0] = v191;
v117 = (HDDMTilePort **)v187;
v116 = (HDDMTilePort **)&unk_1BA93B5;
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_emplace_hint_unique<std::piecewise_construct_t const&,std::tuple<HDDMTile const* const&>,std::tuple<>>((int)&v140);
v57 = v191[0];
v58 = v140;
}
++v58[5];
v59 = *(_DWORD *)(*(_DWORD *)(HDDMDeviceCache::m_devcache[*((_BYTE *)v57 + 3) >> 4] + 96)
+ 4 * (*((_WORD *)v57 + 3) >> 6));
v60 = (int *)v203;
v61 = &v202;
if ( !v203 )
goto LABEL_104;
do
{
while ( v59 <= v60[4] )
{
v61 = v60;
v60 = (int *)v60[2];
if ( !v60 )
goto LABEL_102;
}
v60 = (int *)v60[3];
}
while ( v60 );
LABEL_102:
if ( v61 == &v202 || v59 < v61[4] )
{
LABEL_104:
v62 = (_DWORD *)operator new(0x18u);
v61 = v62;
if ( v62 )
{
*v62 = 0;
v62[1] = 0;
v62[2] = 0;
v62[3] = 0;
v62[4] = v59;
v62[5] = 0;
}
v116 = (HDDMTilePort **)(v62 + 4);
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((int)&v141);
v63 = v141;
if ( v142 )
{
v64 = 1;
if ( !v141 && v142 != &v202 )
v64 = v61[4] < (unsigned int)v142[4];
std::_Rb_tree_insert_and_rebalance(v64, v61, v142, &v202);
v206 = (volatile signed __int32 *)((char *)v206 + 1);
}
else
{
operator delete(v61);
v61 = v63;
}
}
++v61[5];
v131 = *((_DWORD *)v192[0] + 2);
v133 = *((_DWORD *)v192[0] + 1);
HDDMTile::getName((HDDMTile *)v181);
v134 = (_WORD **)*((_DWORD *)v37 + 2);
v65 = (_WORD **)*((_DWORD *)v37 + 1);
HDDMTile::getName((HDDMTile *)v180);
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Global mismatch: ", 17);
v66 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v180[0], *(_DWORD *)(v180[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v66, ".", 1);
v67 = std::__ostream_insert<char,std::char_traits<char>>(v66, v126[2], *(_DWORD *)(v126[2] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v67, "[", 1);
v68 = std::ostream::_M_insert<unsigned long>(v67, v65);
std::__ostream_insert<char,std::char_traits<char>>(v68, "] = ", 4);
v69 = std::ostream::_M_insert<unsigned long>(v68, v134);
std::__ostream_insert<char,std::char_traits<char>>(v69, " ", 1);
v70 = std::__ostream_insert<char,std::char_traits<char>>(v69, v181[0], *(_DWORD *)(v181[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v70, ".", 1);
v71 = std::__ostream_insert<char,std::char_traits<char>>(
v70,
*((_DWORD *)v129 + 2),
*(_DWORD *)(*((_DWORD *)v129 + 2) - 12));
std::__ostream_insert<char,std::char_traits<char>>(v71, "[", 1);
v72 = std::ostream::_M_insert<unsigned long>(v71, v133);
std::__ostream_insert<char,std::char_traits<char>>(v72, "] = ", 4);
v73 = std::ostream::_M_insert<unsigned long>(v72, v131);
std::__ostream_insert<char,std::char_traits<char>>(v73, "\n", 1);
std::string::_Rep::_M_dispose(v180[0] - 12, &v189);
std::string::_Rep::_M_dispose(v181[0] - 12, &v189);
}
goto LABEL_45;
}
v18 = v190;
if ( !v191[0] )
goto LABEL_46;
v26 = HDDMDeviceCache::m_devcache[*(_BYTE *)(v190 + 3) >> 4];
v27 = -1227133513 * ((int)(v190 - *(_DWORD *)(v26 + 116)) >> 2);
v128 = (HPAParamMgr *)*(unsigned __int16 *)(v26 + 6);
v123 = v27 % (unsigned int)v128;
v28 = *(unsigned __int16 *)(v26 + 4);
v29 = v28 - 1 - v27 / (unsigned int)v128;
v30 = *(_DWORD *)(*(_DWORD *)(v26 + 96) + 4 * (*(_WORD *)(v190 + 6) >> 6));
v31 = *(unsigned __int16 *)(v30 + 24);
v130 = *(_WORD *)(v30 + 26);
v32 = ***(_WORD ***)v37;
if ( v32 == 1 )
{
if ( (HPAParamMgr *)(v123 + v31) != v128 )
goto LABEL_44;
}
else if ( v32 )
{
if ( v32 == 2 )
{
if ( (_WORD)v29 )
goto LABEL_44;
}
else if ( v32 == 3 && (_WORD)v123 )
{
LABEL_44:
v33 = (_WORD **)*((_DWORD *)v37 + 1);
HDDMTile::getName((HDDMTile *)v185);
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "Missing matching port for ", 26);
v34 = std::__ostream_insert<char,std::char_traits<char>>(&std::cout, v185[0], *(_DWORD *)(v185[0] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v34, ".", 1);
v35 = std::__ostream_insert<char,std::char_traits<char>>(v34, v126[2], *(_DWORD *)(v126[2] - 12));
std::__ostream_insert<char,std::char_traits<char>>(v35, "[", 1);
v36 = std::ostream::_M_insert<unsigned long>(v35, v33);
std::__ostream_insert<char,std::char_traits<char>>(v36, "]", 1);
std::__ostream_insert<char,std::char_traits<char>>(v36, "\n", 1);
std::string::_Rep::_M_dispose(v185[0] - 12, &hddmChipDesc);
hut::detail::assertion_failed(
(hut::detail *)"false",
"void {anonymous}::_checkTilePorts(const HDDMDevice*)",
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
(const char *)&elf_hash_bucket[107] + 3,
(int)v117);
LABEL_45:
v18 = v190;
}
}
else if ( v130 + (unsigned __int16)v29 != (unsigned __int16)v28 )
{
goto LABEL_44;
}
LABEL_46:
v24 = v126[3];
v25 = (v126[4] - v24) >> 2;
}
v22 = v132[3];
v23 = v132[4];
LABEL_125:
++v135;
}
while ( v135 < (unsigned __int16)((v23 - v22) >> 2) );
v74 = *(_DWORD *)(*(_DWORD *)(HDDMDeviceCache::m_devcache[*(_BYTE *)(v18 + 3) >> 4] + 96)
+ 4 * (*(_WORD *)(v18 + 6) >> 6));
v21 = *(_DWORD *)(v74 + 296);
v20 = *(_DWORD *)(v74 + 292);
LABEL_127:
++v137;
}
while ( v137 < (unsigned __int16)((v21 - v20) >> 2) );
v16 = Device->word4;
v15 = Device->word6;
LABEL_129:
v17 = ++v139;
if ( v139 >= v15 * (unsigned int)v16 )
{
LABEL_130:
if ( v199 )
{
std::ofstream::basic_ofstream(&hddmChipDesc, "badGlobals.txt", 48, v116);
if ( (unsigned __int16)Device->word6 * (unsigned __int16)Device->word4 )
{
v75 = 0;
v76 = 0;
do
{
v77 = (HDDMTile *)(Device->dword74 + 28 * v76);
v193[0] = v77;
v78 = (int *)v196;
v79 = &v195;
if ( !v196 )
goto LABEL_187;
do
{
if ( (unsigned int)v77 > v78[4] )
{
v78 = (int *)v78[3];
}
else
{
v79 = v78;
v78 = (int *)v78[2];
}
}
while ( v78 );
if ( v79 == &v195 || (unsigned int)v77 < v79[4] )
{
LABEL_187:
v187[4] = v193;
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_emplace_hint_unique<std::piecewise_construct_t const&,std::tuple<HDDMTile const* const&>,std::tuple<>>((int)&v140);
v79 = v140;
}
v80 = v79[5];
if ( v80 > 0 )
{
HDDMTile::getName((HDDMTile *)v179);
v81 = std::__ostream_insert<char,std::char_traits<char>>(
&hddmChipDesc,
v179[0],
*(_DWORD *)(v179[0] - 12));
v82 = std::operator<<<std::char_traits<char>>(v81, " ");
v83 = std::ostream::operator<<(v82, v80);
std::operator<<<std::char_traits<char>>(v83, "\n");
std::string::_Rep::_M_dispose(v179[0] - 12, v192);
}
v76 = ++v75;
}
while ( v75 < (unsigned __int16)Device->word6 * (unsigned int)(unsigned __int16)Device->word4 );
}
v84 = Device->dword60;
if ( (unsigned __int16)((Device->dword64 - v84) >> 2) )
{
v85 = 0;
do
{
v86 = *(_DWORD *)(v84 + 4 * v85);
v87 = (int *)v203;
v88 = &v202;
if ( !v203 )
goto LABEL_150;
do
{
if ( v86 > v87[4] )
{
v87 = (int *)v87[3];
}
else
{
v88 = v87;
v87 = (int *)v87[2];
}
}
while ( v87 );
if ( v88 == &v202 || v86 < v88[4] )
{
LABEL_150:
v89 = (int *)operator new(0x18u);
if ( v89 )
{
*v89 = 0;
v89[1] = 0;
v89[2] = 0;
v89[3] = 0;
v89[4] = v86;
v89[5] = 0;
}
v124 = v89;
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((int)&v141);
v88 = v141;
if ( v142 )
{
v90 = 1;
if ( !v141 && v142 != &v202 )
v90 = v124[4] < (unsigned int)v142[4];
std::_Rb_tree_insert_and_rebalance(v90, v124, v142, &v202);
v206 = (volatile signed __int32 *)((char *)v206 + 1);
v88 = v124;
}
else
{
operator delete(v124);
}
}
v91 = v88[5];
if ( v91 > 0 )
{
HDDMTileType::getName((HDDMTileType *)v178);
v92 = std::__ostream_insert<char,std::char_traits<char>>(
&hddmChipDesc,
v178[0],
*(_DWORD *)(v178[0] - 12));
v93 = std::operator<<<std::char_traits<char>>(v92, " ");
v94 = std::ostream::operator<<(v93, v91);
std::operator<<<std::char_traits<char>>(v94, "\n");
std::string::_Rep::_M_dispose(v178[0] - 12, v193);
}
++v85;
v84 = Device->dword60;
}
while ( v85 < (unsigned __int16)((Device->dword64 - v84) >> 2) );
}
std::__ostream_insert<char,std::char_traits<char>>(&std::cout, "}\n", 2);
std::ofstream::~ofstream(&hddmChipDesc);
}
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(
(int)&v201,
v203);
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(
(int)v194,
v196);
break;
}
}
}
if ( !Device->dword17C )
{
v106 = (HDDMOracle *)operator new(0x8Cu);
HDDMOracle::HDDMOracle(v106, Device);
Device->dword17C = v106;
}
std::string::string(v169, "RCLK_INT_L", &v145);
TileType = HDDMDevice::getTileType(Device, (const HSTString *)v169);
std::string::_Rep::_M_dispose(v169[0] - 12, &hddmChipDesc);
if ( TileType )
{
v96 = *(unsigned __int16 *)(TileType + 2);
if ( *(_WORD *)(TileType + 2) )
{
v97 = 0;
v98 = 0;
do
{
v99 = v97 + *(_DWORD *)(TileType + 124);
if ( (*(_BYTE *)(v99 + 3) & 8) != 0 )
*(_BYTE *)(v99 + 1) |= 0x10u;
++v98;
v97 += 24;
}
while ( v96 > v98 );
}
}
std::string::string(v170, "RCLK_INT_R", &v146);
v100 = HDDMDevice::getTileType(Device, (const HSTString *)v170);
std::string::_Rep::_M_dispose(v170[0] - 12, &hddmChipDesc);
if ( v100 )
{
v101 = *(unsigned __int16 *)(v100 + 2);
if ( *(_WORD *)(v100 + 2) )
{
v102 = 0;
v103 = 0;
do
{
v104 = v102 + *(_DWORD *)(v100 + 124);
if ( (*(_BYTE *)(v104 + 3) & 8) != 0 )
*(_BYTE *)(v104 + 1) |= 0x10u;
++v103;
v102 += 24;
}
while ( v101 > v103 );
}
}
if ( ValueAsBool )
{
HUTRuntime::getWallSecs((HUTRuntime *)v200);
HUTRuntime::getUserSecs((HUTRuntime *)v200);
std::string::string(&hddmChipDesc);
std::string::string(v188);
ComMsgMgr::sendScopedMsg::eval(
3,
"/proj/buildscratch/builds/2014.1/continuous/20140404125757/src/shared/device/devmodel/HDDMDevice.cxx",
896,
v188);
std::string::_Rep::_M_dispose(v188[0] - 12, v194);
std::string::_Rep::_M_dispose((char *)hddmChipDesc - 12, &v201);
}
HDDMProto::freeMemory((HDDMProto *)&dword_21701EC);
std::string::_Rep::_M_dispose(v163[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose(v159[0] - 12, &hddmChipDesc);
std::string::_Rep::_M_dispose(v158[0] - 12, &hddmChipDesc);
v6 = Device;
LABEL_177:
HUTRuntime::~HUTRuntime((HUTRuntime *)v200);
return v6;
}
最新发布