请仔细阅读和分析下面函数,进行优化后,采用C/C++11标准,完整推导并重构可编译的全部代码
特别注意:
1.保持所有原始功能不变
2.提高执行效率,降低计算复杂度
3.已经给定的结构体名字和元素不要更改,详细的中文注释
4.自动添加中文注释说明功能逻辑
5.不使用 auto,使用显式 for 循环
6.结构体采用32位定义
7.不要使用小函数,保持原始的函数定义
函数中的 HDDMXng::Chip::Chip 映射为
message Chip
{
optional uint32 numsites = 1;
optional uint32 numrows = 2;
optional uint32 numcols = 3;
optional uint32 rpmgridx = 4;
optional uint32 rpmgridy = 5;
optional sint32 extremaxmin = 6;
optional sint32 extremaxmax = 7;
optional sint32 extremaymin = 8;
optional sint32 extremaymax = 9;
optional string chip = 10;
optional string arch = 11;
}
将 _BYTE chip_msg[8] 映射为 HDDMXng::Chip chip_msg;
void __cdecl HDDMDevice::readchip_pb(HDDMDevice *this, HDDMChipDesc *hddmChipDesc)
{
HDDMChipType *v2; // eax
HDDMDevice *v3; // eax
HDDMChipType *v4; // eax
int v5; // esi
int pHDDMChip; // ebp
char *dword214; // esi
int dword220; // ebp
int v9; // edi
void *v10; // esi
__int16 v11; // dx
__int16 v12; // dx
int dword9C; // edi
unsigned int *v14; // esi
int v15; // edx
int v16; // ecx
int v17; // ecx
char *v18; // esi
int v19; // ebp
void *v20; // edi
int dwordA0; // edi
int v22; // esi
int v23; // edx
int v24; // ecx
int v25; // ecx
char *v26; // esi
int v27; // ebp
void *v28; // edi
_BYTE *dword210; // ecx
size_t v30; // ebp
int v31; // edi
unsigned int v32; // eax
unsigned int v33; // edi
char *v34; // edi
HDDMChip **dest; // edx
HDDMChip **v36; // eax
_DWORD *v37; // esi
void *v38; // eax
int v39; // edi
int v40; // ebp
int pHDDMChipType; // esi
HDDMChipType **v42; // eax
HDDMChipType *v43; // eax
int v44; // edi
__int16 v45; // dx
int v46; // esi
void *src; // [esp+4h] [ebp-218h]
const char *srca; // [esp+4h] [ebp-218h]
const char *srcb; // [esp+4h] [ebp-218h]
const char *srcc; // [esp+4h] [ebp-218h]
const char *srcd; // [esp+4h] [ebp-218h]
void *srce; // [esp+4h] [ebp-218h]
char **n; // [esp+8h] [ebp-214h]
_DWORD *v54; // [esp+Ch] [ebp-210h]
char *v55; // [esp+1Ch] [ebp-200h]
char *v56; // [esp+1Ch] [ebp-200h]
char *v57; // [esp+1Ch] [ebp-200h]
HDDMChip **v58; // [esp+1Ch] [ebp-200h]
HDDMChip **v59; // [esp+1Ch] [ebp-200h]
unsigned int i; // [esp+20h] [ebp-1FCh]
unsigned int j; // [esp+20h] [ebp-1FCh]
int v62; // [esp+24h] [ebp-1F8h]
int v63; // [esp+24h] [ebp-1F8h]
HDDMChip *v64; // [esp+28h] [ebp-1F4h]
bool v65; // [esp+2Fh] [ebp-1EDh]
char *v66; // [esp+34h] [ebp-1E8h]
char *v67; // [esp+34h] [ebp-1E8h]
int NumTiles; // [esp+38h] [ebp-1E4h]
int NumSites; // [esp+38h] [ebp-1E4h]
int v70; // [esp+3Ch] [ebp-1E0h]
int v71; // [esp+3Ch] [ebp-1E0h]
__int16 v72; // [esp+4Ch] [ebp-1D0h] BYREF
__int16 v73; // [esp+4Eh] [ebp-1CEh]
HDDMChipType *v74; // [esp+50h] [ebp-1CCh] BYREF
char *v75; // [esp+60h] [ebp-1BCh] BYREF
char *v76; // [esp+70h] [ebp-1ACh] BYREF
char *v77; // [esp+80h] [ebp-19Ch] BYREF
char *v78; // [esp+84h] [ebp-198h] BYREF
char *v79; // [esp+88h] [ebp-194h] BYREF
char *v80; // [esp+8Ch] [ebp-190h] BYREF
char v81[4]; // [esp+90h] [ebp-18Ch] BYREF
__int16 v82; // [esp+94h] [ebp-188h]
char v83[6]; // [esp+A0h] [ebp-17Ch] BYREF
__int16 v84; // [esp+A6h] [ebp-176h]
_DWORD v85[4]; // [esp+B0h] [ebp-16Ch] BYREF
_DWORD v86[2]; // [esp+C0h] [ebp-15Ch] BYREF
_BYTE v87[16]; // [esp+D0h] [ebp-14Ch] BYREF
int v88; // [esp+E0h] [ebp-13Ch]
void *v89; // [esp+E4h] [ebp-138h]
_BYTE v90[24]; // [esp+E8h] [ebp-134h] BYREF
_BYTE v91[24]; // [esp+100h] [ebp-11Ch] BYREF
_BYTE v92[24]; // [esp+118h] [ebp-104h] BYREF
_BYTE v93[16]; // [esp+130h] [ebp-ECh] BYREF
_BYTE *v94; // [esp+140h] [ebp-DCh]
_BYTE *v95; // [esp+144h] [ebp-D8h]
int v96; // [esp+148h] [ebp-D4h]
_BYTE chip_msg[8]; // [esp+150h] [ebp-CCh] BYREF
int v98; // [esp+158h] [ebp-C4h]
int v99; // [esp+15Ch] [ebp-C0h]
int v100; // [esp+160h] [ebp-BCh]
int v101; // [esp+164h] [ebp-B8h]
int v102; // [esp+168h] [ebp-B4h]
int v103; // [esp+16Ch] [ebp-B0h]
int v104; // [esp+170h] [ebp-ACh]
int v105; // [esp+174h] [ebp-A8h]
int v106; // [esp+178h] [ebp-A4h]
int v107; // [esp+180h] [ebp-9Ch]
_BYTE v108[8]; // [esp+198h] [ebp-84h] BYREF
int v109[31]; // [esp+1A0h] [ebp-7Ch] BYREF
isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::filtering_stream(
v108,
*((_DWORD *)hddmChipDesc + 20),
4,
0);
sub_8D8DC4();
HDDMXng::Chip::Chip((HDDMXng::Chip *)chip_msg);
HDDMDevice::readMessage((int)v109, (google::protobuf::Message *)chip_msg);
v2 = *(HDDMChipType **)stlp_std::map<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,HDDMChipType *,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChipType *>>>::operator[]<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>(
&this->char1F8,
hddmChipDesc);
*((_DWORD *)hddmChipDesc + 21) = v2;
v74 = v2;
v65 = v2 == 0;
if ( !v2 )
{
v40 = (this->dword1F0 - this->dword1EC) >> 2;
stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string(v90, v106);
pHDDMChipType = operator new(0x78u);
HDDMChipType::HDDMChipType(pHDDMChipType, this, v40, v90);
*((_DWORD *)hddmChipDesc + 21) = pHDDMChipType;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v90);
v74 = (HDDMChipType *)*((_DWORD *)hddmChipDesc + 21);
stlp_std::vector<HDDMChipType *,stlp_std::allocator<HDDMChipType *>>::push_back(&this->dword1EC, &v74);
HDDMChipType::getName((HDDMChipType *)v91);
v42 = (HDDMChipType **)stlp_std::map<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,HDDMChipType *,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChipType *>>>::operator[]<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>(
&this->char1F8,
v91);
*v42 = v74;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v91);
v43 = v74;
v44 = v98;
*((_DWORD *)v74 + 9) = v98;
*((_WORD *)v43 + 22) = v101;
*((_WORD *)v43 + 23) = v102;
v45 = v100;
LOWORD(pHDDMChipType) = v99;
*((_DWORD *)v43 + 8) = v100 * v99;
*((_WORD *)v43 + 20) = v45;
*((_WORD *)v43 + 21) = pHDDMChipType;
v94 = v93;
v95 = v93;
v93[0] = 0;
stlp_std::vector<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::allocator<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>>::resize(
(char *)v43 + 60,
v44,
v93);
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93);
v94 = v93;
v95 = v93;
v93[0] = 0;
stlp_std::vector<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::allocator<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>>::resize(
(char *)v74 + 48,
*((_DWORD *)v74 + 8),
v93);
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93);
}
v3 = this;
if ( !this->isXngd )
{
if ( (char *)v106 != &this->archFilePath )
stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_assign(
(int)&this->archFilePath,
*(void **)(v106 + 20),
*(_DWORD *)(v106 + 16));
*(_DWORD *)&this->nDeviceCode = (16 * (v98 & 0x3FFFFF)) | *(_DWORD *)&this->nDeviceCode & 0xFC00000F;
this->word4 = v99;
this->word6 = v100;
this->word8 = v101;
this->wordA = v102;
this->dword10 = v103;
this->dword14 = v104;
this->dword18 = v105;
this->dword1C = v107;
v4 = v74;
this->dword94 = (char *)v74 + 96;
this->dword98 = (char *)v4 + 72;
v3 = this;
}
v5 = (v3->dword214 - v3->dword210) >> 2;
stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string(
v92,
(int)hddmChipDesc + 24);
pHDDMChip = operator new(0x3Cu);
HDDMChip::HDDMChip(pHDDMChip, this, v5, v92, v74);
*((_DWORD *)hddmChipDesc + 22) = pHDDMChip;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v92);
v64 = (HDDMChip *)*((_DWORD *)hddmChipDesc + 22);
dword214 = (char *)this->dword214;
if ( dword214 != (char *)this->dword218 )
{
*(_DWORD *)dword214 = *((_DWORD *)hddmChipDesc + 22);
this->dword214 += 4;
goto LABEL_9;
}
dword210 = (_BYTE *)this->dword210;
v30 = dword214 - dword210;
v31 = 1;
v32 = (dword214 - dword210) >> 2;
if ( v32 )
v31 = (dword214 - dword210) >> 2;
v33 = v32 + v31;
if ( v33 > 0x3FFFFFFF || v32 > v33 )
{
v39 = -4;
LABEL_71:
dest = (HDDMChip **)stlp_std::__malloc_alloc::allocate((stlp_std::__malloc_alloc *)v39, (unsigned int)src);
dword210 = (_BYTE *)this->dword210;
v30 = dword214 - dword210;
v34 = (char *)dest + (v39 & 0xFFFFFFFC);
goto LABEL_65;
}
if ( v33 )
{
v39 = 4 * v33;
goto LABEL_71;
}
v34 = 0;
dest = 0;
LABEL_65:
v36 = dest;
if ( v30 )
{
v58 = dest;
v36 = (HDDMChip **)((char *)memmove(dest, dword210, v30) + v30);
dest = v58;
}
*v36 = v64;
v37 = v36 + 1;
v38 = (void *)this->dword210;
if ( v38 )
{
v59 = dest;
free(v38);
dest = v59;
}
this->dword210 = dest;
this->dword214 = v37;
this->dword218 = v34;
LABEL_9:
HDDMChip::getName((HDDMChip *)v87);
dword220 = this->dword220;
if ( !dword220 )
{
v55 = &this->char21C;
LABEL_58:
stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::basic_string(v93, (int)v87);
v96 = 0;
v75 = v55;
v54 = v93;
n = &v75;
stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,stlp_std::less<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>>,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const,HDDMChip *>>>::insert_unique(&v78);
v55 = v78;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93);
goto LABEL_16;
}
v9 = v88;
v10 = v89;
v55 = &this->char21C;
do
{
while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
*(void **)(dword220 + 36),
*(_DWORD *)(dword220 + 32),
v10,
v9) >= 0 )
{
v55 = (char *)dword220;
dword220 = *(_DWORD *)(dword220 + 8);
if ( !dword220 )
goto LABEL_14;
}
dword220 = *(_DWORD *)(dword220 + 12);
}
while ( dword220 );
LABEL_14:
if ( &this->char21C == v55
|| stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
v10,
v9,
*((void **)v55 + 9),
*((_DWORD *)v55 + 8)) < 0 )
{
goto LABEL_58;
}
LABEL_16:
*((_DWORD *)v55 + 10) = v64;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v87);
*((_DWORD *)v64 + 9) = *((_DWORD *)hddmChipDesc + 23);
*((_DWORD *)v64 + 10) = *((_DWORD *)hddmChipDesc + 24);
*((_DWORD *)v64 + 12) = *((_DWORD *)hddmChipDesc + 13);
HDDMChipType::getTileGridExtent((HDDMChipType *)&v72);
v11 = *((_WORD *)hddmChipDesc + 27) + v73;
*((_WORD *)v64 + 22) = *((_WORD *)hddmChipDesc + 26) + v72;
*((_WORD *)v64 + 23) = v11;
*((_DWORD *)v64 + 14) = *((_DWORD *)hddmChipDesc + 12);
HDDMChipType::getRpmGridExtent((HDDMChipType *)&v72);
v12 = *((_WORD *)hddmChipDesc + 25) + v73;
*((_WORD *)v64 + 26) = *((_WORD *)hddmChipDesc + 24) + v72;
*((_WORD *)v64 + 27) = v12;
if ( !this->dword9C )
HDDMDevice::allocatesupersites(this);
NumTiles = HDDMChipType::getNumTiles(v74);
if ( NumTiles )
{
v62 = 0;
for ( i = 0; i != NumTiles; ++i )
{
dword9C = this->dword9C;
v14 = (unsigned int *)(dword9C + 48 * (i + HDDMChip::getMinTileIndex(v64)));
HDDMTile::readme_pb(v14, v109);
v14[11] = HDDMChip::getIndex(v64);
v14[1] = (v14[1] + HDDMChip::getMinSiteIndex(v64)) & 0x3FFFFF | v14[1] & 0xFFC00000;
*v14 = (4 * (((*v14 >> 2) + *((__int16 *)hddmChipDesc + 28)) & 0x1FFFFFF)) | *v14 & 0xF8000003;
v14[2] += *((__int16 *)hddmChipDesc + 29);
if ( !v65 )
{
v94 = v93;
v95 = v93;
v93[0] = 0;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v93, v14 + 3);
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93);
goto LABEL_31;
}
v15 = *((_DWORD *)v74 + 12);
if ( i >= -1431655765 * ((*((_DWORD *)v74 + 13) - v15) >> 3) )
{
v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srca);
operator delete(v64);
goto LABEL_74;
}
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v62 + v15, v14 + 3);
v16 = *((_DWORD *)v74 + 12);
if ( i >= -1431655765 * ((*((_DWORD *)v74 + 13) - v16) >> 3) )
{
v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcb);
LABEL_74:
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(dword9C);
goto LABEL_75;
}
v17 = v62 + v16;
v70 = v17;
v66 = (char *)v74 + 72;
v18 = (char *)*((_DWORD *)v74 + 19);
if ( v18 )
{
v19 = *(_DWORD *)(v17 + 16);
v20 = *(void **)(v17 + 20);
v56 = (char *)v74 + 72;
do
{
while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
*(void **)(*((_DWORD *)v18 + 4) + 20),
*(_DWORD *)(*((_DWORD *)v18 + 4) + 16),
v20,
v19) >= 0 )
{
v56 = v18;
v18 = (char *)*((_DWORD *)v18 + 2);
if ( !v18 )
goto LABEL_28;
}
v18 = (char *)*((_DWORD *)v18 + 3);
}
while ( v18 );
LABEL_28:
if ( v66 != v56
&& stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
v20,
v19,
*(void **)(*((_DWORD *)v56 + 4) + 20),
*(_DWORD *)(*((_DWORD *)v56 + 4) + 16)) >= 0 )
{
goto LABEL_30;
}
}
else
{
v56 = (char *)v74 + 72;
}
v85[0] = v70;
v85[1] = 0;
v76 = v56;
v54 = v85;
n = &v76;
stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const*,HDDMChipType::_DerefStringPtrLessThan,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>>::insert_unique(&v79);
v56 = v79;
LABEL_30:
*((_DWORD *)v56 + 5) = i;
LABEL_31:
v62 += 24;
}
}
if ( !this->dwordA0 )
HDDMDevice::allocatesites(this);
NumSites = HDDMChipType::getNumSites(v74);
if ( NumSites )
{
v63 = 0;
for ( j = 0; j != NumSites; ++j )
{
dwordA0 = this->dwordA0;
v22 = dwordA0 + 36 * (j + HDDMChip::getMinSiteIndex(v64));
HDDMSite::readme_pb(v22, v109);
*(_DWORD *)(v22 + 32) = HDDMChip::getIndex(v64);
*(_DWORD *)v22 = (4 * (((*(_DWORD *)v22 >> 2) + HDDMChip::getMinTileIndex(v64)) & 0x3FFFFF)) | *(_DWORD *)v22 & 0xFF000003;
if ( *(char *)(v22 + 7) >= 0 )
{
HDDMChip::getRpmGridRect((HDDMChip *)v81);
*(_WORD *)(v22 + 4) = (v82 + *(_WORD *)(v22 + 4)) & 0xFFF | *(_WORD *)(v22 + 4) & 0xF000;
srcc = (const char *)v64;
HDDMChip::getRpmGridRect((HDDMChip *)v83);
*(_DWORD *)(v22 + 4) = ((((unsigned __int16)(*(_DWORD *)(v22 + 4) >> 12) + v84) & 0xFFF) << 12) | *(_DWORD *)(v22 + 4) & 0xFF000FFF;
}
if ( !v65 )
{
v94 = v93;
v95 = v93;
v93[0] = 0;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v93, v22 + 8);
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v93);
goto LABEL_49;
}
v23 = *((_DWORD *)v74 + 15);
if ( -1431655765 * ((*((_DWORD *)v74 + 16) - v23) >> 3) <= j )
goto LABEL_78;
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_swap(v63 + v23, v22 + 8);
v24 = *((_DWORD *)v74 + 15);
if ( -1431655765 * ((*((_DWORD *)v74 + 16) - v24) >> 3) <= j )
{
stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcd);
LABEL_78:
v46 = stlp_std::__stl_throw_out_of_range((stlp_std *)"vector", srcc);
stlp_std::priv::_String_base<char,stlp_std::allocator<char>>::_M_deallocate_block(v63);
LABEL_75:
HDDMXng::Chip::~Chip((HDDMXng::Chip *)chip_msg);
isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::~filtering_stream(v108);
_Unwind_Resume(v46, srce, n, v54);
}
v25 = v63 + v24;
v71 = v25;
v67 = (char *)v74 + 96;
v26 = (char *)*((_DWORD *)v74 + 25);
if ( v26 )
{
v27 = *(_DWORD *)(v25 + 16);
v28 = *(void **)(v25 + 20);
v57 = (char *)v74 + 96;
do
{
while ( stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
*(void **)(*((_DWORD *)v26 + 4) + 20),
*(_DWORD *)(*((_DWORD *)v26 + 4) + 16),
v28,
v27) >= 0 )
{
v57 = v26;
v26 = (char *)*((_DWORD *)v26 + 2);
if ( !v26 )
goto LABEL_46;
}
v26 = (char *)*((_DWORD *)v26 + 3);
}
while ( v26 );
LABEL_46:
if ( v57 != v67
&& stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>::_M_compare(
v28,
v27,
*(void **)(*((_DWORD *)v57 + 4) + 20),
*(_DWORD *)(*((_DWORD *)v57 + 4) + 16)) >= 0 )
{
goto LABEL_48;
}
}
else
{
v57 = (char *)v74 + 96;
}
v86[0] = v71;
v86[1] = 0;
v77 = v57;
v54 = v86;
n = &v77;
stlp_std::priv::_Rb_tree<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const*,HDDMChipType::_DerefStringPtrLessThan,stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>,stlp_std::priv::_Select1st<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::priv::_MapTraitsT<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>,stlp_std::allocator<stlp_std::pair<stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>> const* const,unsigned int>>>::insert_unique(&v80);
v57 = v80;
LABEL_48:
*((_DWORD *)v57 + 5) = j;
LABEL_49:
v63 += 24;
}
}
HDDMXng::Chip::~Chip((HDDMXng::Chip *)chip_msg);
isl::iostreams::filtering_stream<boost::iostreams::input,char,stlp_std::char_traits<char>,stlp_std::allocator<char>,boost::iostreams::public_>::~filtering_stream(v108);
}