mirror of
https://github.com/msojocs/wx-compiler.git
synced 2025-07-19 00:00:04 +08:00
feat: 实现一些逻辑
This commit is contained in:
parent
af8e0e2f71
commit
06e7bdb22d
@ -94,7 +94,7 @@ namespace WXSS
|
|||||||
public:
|
public:
|
||||||
Offset0Type *offset_0 = nullptr;
|
Offset0Type *offset_0 = nullptr;
|
||||||
std::string offset_4_str;
|
std::string offset_4_str;
|
||||||
std::string offset_4_int;
|
int offset_4_int;
|
||||||
int offset_28 = 0;
|
int offset_28 = 0;
|
||||||
int offset_32 = 0;
|
int offset_32 = 0;
|
||||||
std::string offset_36 = "";
|
std::string offset_36 = "";
|
||||||
@ -118,19 +118,19 @@ namespace WXSS
|
|||||||
~TransitTable();
|
~TransitTable();
|
||||||
static TransitTable* GetInstance();
|
static TransitTable* GetInstance();
|
||||||
void Init(void);
|
void Init(void);
|
||||||
std::string GetTopType();
|
int GetTopType();
|
||||||
};
|
};
|
||||||
|
|
||||||
class CSSSyntaxTree
|
class CSSSyntaxTree
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
/* data
|
/* data
|
||||||
size: 0xB0
|
size: 0xB0 176
|
||||||
*/
|
*/
|
||||||
public:
|
public:
|
||||||
std::string offset_0;
|
std::string offset_0;
|
||||||
WXSS::Token offset_24;
|
WXSS::Token offset_24;
|
||||||
bool offset_116; // 类型未确定
|
int offset_116; // 类型未确定
|
||||||
std::vector<std::shared_ptr<CSSSyntaxTree>> offset_120;
|
std::vector<std::shared_ptr<CSSSyntaxTree>> offset_120;
|
||||||
bool offset_132; // 类型未确定,不是布尔值
|
bool offset_132; // 类型未确定,不是布尔值
|
||||||
std::shared_ptr<std::string> offset_140;
|
std::shared_ptr<std::string> offset_140;
|
||||||
@ -184,10 +184,10 @@ namespace WXSS
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
/* data */
|
/* data */
|
||||||
std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> offset_0;
|
|
||||||
std::deque<std::shared_ptr<WXSS::CSSTreeLib::Base>> offset_8;
|
std::deque<std::shared_ptr<WXSS::CSSTreeLib::Base>> offset_8;
|
||||||
std::deque<std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>> offset_48;
|
std::deque<std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>> offset_48;
|
||||||
public:
|
public:
|
||||||
|
std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> offset_0;
|
||||||
Parser(/* args */);
|
Parser(/* args */);
|
||||||
~Parser();
|
~Parser();
|
||||||
/**
|
/**
|
||||||
@ -213,6 +213,7 @@ namespace WXSS
|
|||||||
std::string offset_8; // 长度24
|
std::string offset_8; // 长度24
|
||||||
std::map<std::string, std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>> offset_32;
|
std::map<std::string, std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>> offset_32;
|
||||||
std::map<std::string, std::vector<std::string>> offset_56;
|
std::map<std::string, std::vector<std::string>> offset_56;
|
||||||
|
std::map<std::string,std::string> offset_104;
|
||||||
std::map<std::string, int> offset_128;
|
std::map<std::string, int> offset_128;
|
||||||
std::map<std::string, std::string> offset_152;
|
std::map<std::string, std::string> offset_152;
|
||||||
XCompiler(/* args */);
|
XCompiler(/* args */);
|
||||||
|
@ -7,19 +7,19 @@ namespace WXSS
|
|||||||
|
|
||||||
int off_519B58()
|
int off_519B58()
|
||||||
{
|
{
|
||||||
throw "not implement";
|
return 1;
|
||||||
}
|
}
|
||||||
int off_519B2C()
|
int off_519B2C()
|
||||||
{
|
{
|
||||||
throw "not implement";
|
return 3;
|
||||||
}
|
}
|
||||||
int off_519A44()
|
int off_519A44()
|
||||||
{
|
{
|
||||||
throw "not implement";
|
return 2;
|
||||||
}
|
}
|
||||||
int off_519B18()
|
int off_519B18()
|
||||||
{
|
{
|
||||||
throw "not implement";
|
return 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -32,7 +32,8 @@ namespace WXSS
|
|||||||
|
|
||||||
// Parse - 5
|
// Parse - 5
|
||||||
std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> le(new WXSS::CSSTreeLib::CSSSyntaxTree());
|
std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> le(new WXSS::CSSTreeLib::CSSSyntaxTree());
|
||||||
|
this->offset_0 = le;
|
||||||
|
le->offset_0 = "RULES";
|
||||||
if (v118.begin() == v118.end())
|
if (v118.begin() == v118.end())
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@ -48,12 +49,13 @@ namespace WXSS
|
|||||||
|
|
||||||
std::shared_ptr<WXSS::CSSTreeLib::Base> v102(new WXSS::CSSTreeLib::Base());
|
std::shared_ptr<WXSS::CSSTreeLib::Base> v102(new WXSS::CSSTreeLib::Base());
|
||||||
v102->offset_4_str = "$";
|
v102->offset_4_str = "$";
|
||||||
|
v102->offset_28 = 1;
|
||||||
this->offset_8.push_back(v102);
|
this->offset_8.push_back(v102);
|
||||||
|
|
||||||
// off_519A44
|
// off_519A44
|
||||||
std::shared_ptr<WXSS::CSSTreeLib::Base> v104(new WXSS::CSSTreeLib::Base());
|
std::shared_ptr<WXSS::CSSTreeLib::Base> v104(new WXSS::CSSTreeLib::Base());
|
||||||
// v104->offset_0 = off_519A44;
|
v104->offset_0 = off_519A44;
|
||||||
v104->offset_4_str = instance->GetTopType();
|
v104->offset_4_int = instance->GetTopType();
|
||||||
this->offset_8.push_back(v104);
|
this->offset_8.push_back(v104);
|
||||||
|
|
||||||
// Parse - 15
|
// Parse - 15
|
||||||
@ -63,10 +65,11 @@ namespace WXSS
|
|||||||
int v75 = 0;
|
int v75 = 0;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (/* ??? || */v75 >= v118.size())
|
if (this->offset_8.begin() == this->offset_8.end() || v75 >= v118.size())
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
auto v116 = this->offset_8.back();
|
||||||
auto cur = v118[v75];
|
auto cur = v118[v75];
|
||||||
std::string str;
|
std::string str;
|
||||||
switch (cur.offset_0)
|
switch (cur.offset_0)
|
||||||
@ -116,9 +119,10 @@ namespace WXSS
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Parse - 20-0
|
// Parse - 20-0
|
||||||
if (true)
|
if (v116->offset_0() == 1)
|
||||||
{
|
{
|
||||||
if (true)
|
auto v27 = v116->offset_4_str;
|
||||||
|
if (str[0] != v27[0] || str != v27)
|
||||||
{
|
{
|
||||||
std::stringstream v135;
|
std::stringstream v135;
|
||||||
if (str[0] != '$' || str[1])
|
if (str[0] != '$' || str[1])
|
||||||
@ -135,10 +139,10 @@ namespace WXSS
|
|||||||
if (cur.offset_0 != 8)
|
if (cur.offset_0 != 8)
|
||||||
{
|
{
|
||||||
v41 = "UNKNOWN";
|
v41 = "UNKNOWN";
|
||||||
// if (cur.offset_4)
|
if (cur.offset_4.get() != nullptr)
|
||||||
// {
|
{
|
||||||
// v41 = cur.offset_4;
|
v41 = cur.offset_4.get()->data();
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
v135 << v41;
|
v135 << v41;
|
||||||
@ -166,10 +170,10 @@ namespace WXSS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Parse - 20-5
|
// Parse - 20-5
|
||||||
else if (true)
|
else if (v116->offset_0() == 3)
|
||||||
{
|
{
|
||||||
this->offset_8.pop_back();
|
this->offset_8.pop_back();
|
||||||
if (2)
|
if (v116->offset_28 == 2)
|
||||||
{
|
{
|
||||||
if (this->offset_48.begin() == this->offset_48.end())
|
if (this->offset_48.begin() == this->offset_48.end())
|
||||||
{
|
{
|
||||||
@ -233,8 +237,45 @@ namespace WXSS
|
|||||||
|
|
||||||
}
|
}
|
||||||
// Parse - 20-10
|
// Parse - 20-10
|
||||||
else if (true)
|
else if (v116->offset_0() == 2)
|
||||||
{
|
{
|
||||||
|
// off_519A44
|
||||||
|
|
||||||
|
int v52 = v116->offset_4_int;
|
||||||
|
|
||||||
|
std::string v135 = str;
|
||||||
|
auto v86 = instance->offset_0[v52];
|
||||||
|
auto strc = v86.find(v135);
|
||||||
|
if ( strc == v86.end() || strc->second.size() == 0)
|
||||||
|
{
|
||||||
|
std::stringstream v135;
|
||||||
|
v135 << a3 << "(" << cur.offset_20;
|
||||||
|
v135 << cur.offset_24 << "): unexpected token `";
|
||||||
|
std::string v63 = cur.offset_28;
|
||||||
|
if (cur.offset_0 != 1)
|
||||||
|
{
|
||||||
|
v63 = "$";
|
||||||
|
if (cur.offset_0 != 8)
|
||||||
|
{
|
||||||
|
v63 = "UNKNOWN";
|
||||||
|
if (cur.offset_4.get() != nullptr)
|
||||||
|
{
|
||||||
|
v63 = *cur.offset_4.get();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v135 << v63 << "`";
|
||||||
|
a4 = v135.str();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
this->offset_8.pop_back();
|
||||||
|
for (int i = strc->second.size() - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
auto cur = strc->second[i];
|
||||||
|
if (cur[0]->offset_0() == 4)
|
||||||
|
break;
|
||||||
|
this->offset_8.push_back(cur[0]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// Parse - 20-15
|
// Parse - 20-15
|
||||||
|
@ -4201,9 +4201,9 @@ namespace WXSS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::string TransitTable::GetTopType()
|
int TransitTable::GetTopType()
|
||||||
{
|
{
|
||||||
throw "not implement";
|
return 25;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,7 +20,6 @@ namespace WXSS
|
|||||||
{
|
{
|
||||||
WXSS::CSSTreeLib::Parser v29;
|
WXSS::CSSTreeLib::Parser v29;
|
||||||
std::string v61;
|
std::string v61;
|
||||||
std::string v77;
|
|
||||||
int v47 = v29.Parse(i->second, i->first, v61, a4);
|
int v47 = v29.Parse(i->second, i->first, v61, a4);
|
||||||
if (v47)
|
if (v47)
|
||||||
{
|
{
|
||||||
@ -30,12 +29,11 @@ namespace WXSS
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree> v57(new WXSS::CSSTreeLib::CSSSyntaxTree());
|
v4->Traval(v29.offset_0);
|
||||||
v4->Traval(v57);
|
|
||||||
std::string v42;
|
std::string v42;
|
||||||
for (int j = 0; j < v57->offset_120.size(); j++)
|
for (int j = 0; j < v29.offset_0->offset_120.size(); j++)
|
||||||
{
|
{
|
||||||
auto cur = v57->offset_120[j];
|
auto cur = v29.offset_0->offset_120[j];
|
||||||
if (cur->offset_0 == "DIRECTIVE")
|
if (cur->offset_0 == "DIRECTIVE")
|
||||||
{
|
{
|
||||||
auto v8 = cur->offset_120;
|
auto v8 = cur->offset_120;
|
||||||
@ -209,6 +207,11 @@ namespace WXSS
|
|||||||
}
|
}
|
||||||
int XCompiler::GetCompiled(std::string const&, std::string&)
|
int XCompiler::GetCompiled(std::string const&, std::string&)
|
||||||
{
|
{
|
||||||
|
if (this->offset_0)
|
||||||
|
{
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
|
||||||
throw "not implement";
|
throw "not implement";
|
||||||
}
|
}
|
||||||
int XCompiler::GetJSCompiled(std::string const& a2, std::string& a3)
|
int XCompiler::GetJSCompiled(std::string const& a2, std::string& a3)
|
||||||
|
@ -7843,18 +7843,20 @@ int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, unsigned int **a3
|
|||||||
v5 = *(_DWORD *)(v16 + 8);
|
v5 = *(_DWORD *)(v16 + 8);
|
||||||
v16 = v5;
|
v16 = v5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( v13 == v15 || (unsigned __int8)std::operator<<char>(a2, (int)(v15 + 4)) )
|
if ( v13 == v15 || (unsigned __int8)std::operator<<char>(a2, (int)(v15 + 4)) )
|
||||||
{
|
{
|
||||||
|
// end == find
|
||||||
if ( this + 9 == std::_Rb_tree<std::string,std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>,std::_Select1st<std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>>,std::less<std::string>,std::allocator<std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>>>::find(
|
if ( this + 9 == std::_Rb_tree<std::string,std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>,std::_Select1st<std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>>,std::less<std::string>,std::allocator<std::pair<std::string const,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>>>::find(
|
||||||
this + 8,
|
this + 8,
|
||||||
a2) )
|
a2) )
|
||||||
{
|
{
|
||||||
v14 = 1;
|
v14 = 1;
|
||||||
std::string::operator=(a3, (char *)&byte_50DF9A);
|
std::string::operator=(a3, (char *)&byte_50DF9A); // '\0'
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::string::operator=(a3, (char *)&byte_50DF9A);
|
std::string::operator=(a3, (char *)&byte_50DF9A); // '\0'
|
||||||
v7 = std::map<std::string,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>::operator[](this + 8, a2);
|
v7 = std::map<std::string,zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>>::operator[](this + 8, a2);
|
||||||
std::__shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(&v19, v7);
|
std::__shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree,(__gnu_cxx::_Lock_policy)2>::__shared_ptr(&v19, v7);
|
||||||
for ( i = 0; ; ++i )
|
for ( i = 0; ; ++i )
|
||||||
@ -7886,6 +7888,7 @@ int __thiscall WXSS::XCompiler::GetCompiled(int *this, int a2, unsigned int **a3
|
|||||||
1u);
|
1u);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 26 * 4 = 104
|
||||||
v11 = std::map<std::string,std::string>::operator[](this + 26, a2);
|
v11 = std::map<std::string,std::string>::operator[](this + 26, a2);
|
||||||
std::string::_M_assign((int)v11, (int)a3);
|
std::string::_M_assign((int)v11, (int)a3);
|
||||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20);
|
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v20);
|
||||||
@ -8973,14 +8976,16 @@ void __thiscall WXSS::XCompiler::XCompiler(char *this, _DWORD *a2, char a3, int
|
|||||||
v55 = this + 8; // this->offset_8
|
v55 = this + 8; // this->offset_8
|
||||||
this[16] = 0;
|
this[16] = 0;
|
||||||
|
|
||||||
// this->offset_8
|
// this->offset_8 std::string
|
||||||
*((_DWORD *)this + 2) = this + 16;
|
*((_DWORD *)this + 2) = this + 16;
|
||||||
|
// this->offset_12
|
||||||
*((_DWORD *)this + 3) = 0;
|
*((_DWORD *)this + 3) = 0;
|
||||||
|
|
||||||
// this->offset_36
|
// this->offset_36
|
||||||
*((_DWORD *)this + 9) = 0;
|
*((_DWORD *)this + 9) = 0;
|
||||||
// this->offset_40
|
// this->offset_40
|
||||||
*((_DWORD *)this + 10) = 0;
|
*((_DWORD *)this + 10) = 0;
|
||||||
|
// offset_44
|
||||||
*((_DWORD *)this + 11) = this + 36;
|
*((_DWORD *)this + 11) = this + 36;
|
||||||
*((_DWORD *)this + 12) = this + 36;
|
*((_DWORD *)this + 12) = this + 36;
|
||||||
*((_DWORD *)this + 13) = 0;
|
*((_DWORD *)this + 13) = 0;
|
||||||
@ -9021,6 +9026,7 @@ void __thiscall WXSS::XCompiler::XCompiler(char *this, _DWORD *a2, char a3, int
|
|||||||
*(_DWORD *)this = 0;
|
*(_DWORD *)this = 0;
|
||||||
*((_DWORD *)this + 1) = 0;
|
*((_DWORD *)this + 1) = 0;
|
||||||
|
|
||||||
|
// a2->offset_12
|
||||||
for ( i = (_DWORD *)a2[3]; ; i = (_DWORD *)std::_Rb_tree_increment(v38) )
|
for ( i = (_DWORD *)a2[3]; ; i = (_DWORD *)std::_Rb_tree_increment(v38) )
|
||||||
{
|
{
|
||||||
v38 = (int)i;
|
v38 = (int)i;
|
||||||
@ -11131,14 +11137,14 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
volatile signed __int32 *v124[5]; // [esp+100h] [ebp-178h] BYREF
|
volatile signed __int32 *v124[5]; // [esp+100h] [ebp-178h] BYREF
|
||||||
void *v125[6]; // [esp+114h] [ebp-164h] BYREF
|
void *v125[6]; // [esp+114h] [ebp-164h] BYREF
|
||||||
void *v126; // [esp+12Ch] [ebp-14Ch] BYREF
|
void *v126; // [esp+12Ch] [ebp-14Ch] BYREF
|
||||||
int v127; // [esp+144h] [ebp-134h] BYREF
|
int v127; // [esp+144h] [ebp-134h] BYREF v127->offset_0
|
||||||
volatile signed __int32 *v128; // [esp+148h] [ebp-130h] BYREF
|
volatile signed __int32 *v128; // [esp+148h] [ebp-130h] BYREF v127->offset_4
|
||||||
volatile signed __int32 *v129; // [esp+14Ch] [ebp-12Ch] BYREF
|
volatile signed __int32 *v129; // [esp+14Ch] [ebp-12Ch] BYREF v127->offset_8
|
||||||
int v130; // [esp+150h] [ebp-128h]
|
int v130; // [esp+150h] [ebp-128h] v127->offset_12
|
||||||
int v131; // [esp+154h] [ebp-124h]
|
int v131; // [esp+154h] [ebp-124h] v127->offset_16
|
||||||
int v132; // [esp+158h] [ebp-120h]
|
int v132; // [esp+158h] [ebp-120h] v127->offset_20
|
||||||
int v133; // [esp+15Ch] [ebp-11Ch]
|
int v133; // [esp+15Ch] [ebp-11Ch] v127->offset_24
|
||||||
char v134[64]; // [esp+160h] [ebp-118h] BYREF
|
char v134[64]; // [esp+160h] [ebp-118h] BYREF v127->offset_28
|
||||||
_DWORD *v135; // [esp+1A0h] [ebp-D8h] BYREF
|
_DWORD *v135; // [esp+1A0h] [ebp-D8h] BYREF
|
||||||
volatile signed __int32 *v136; // [esp+1A4h] [ebp-D4h] BYREF
|
volatile signed __int32 *v136; // [esp+1A4h] [ebp-D4h] BYREF
|
||||||
char v137[4]; // [esp+1A8h] [ebp-D0h] BYREF
|
char v137[4]; // [esp+1A8h] [ebp-D0h] BYREF
|
||||||
@ -11174,12 +11180,13 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
WXSS::CSSTreeLib::TransitTable::Init((int)&WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret);
|
WXSS::CSSTreeLib::TransitTable::Init((int)&WXSS::CSSTreeLib::TransitTable::GetInstance(void)::ret);
|
||||||
|
|
||||||
// Parse - 5
|
// Parse - 5
|
||||||
lpuexcpte = (struct _Unwind_Exception *)operator new(0xB0u);
|
lpuexcpte = (struct _Unwind_Exception *)operator new(0xB0u); // 176
|
||||||
WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpte);
|
WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)lpuexcpte);
|
||||||
zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>::shared_ptr(lpuexcpte);
|
zcc::shared_ptr<WXSS::CSSTreeLib::CSSSyntaxTree>::shared_ptr(lpuexcpte);
|
||||||
*(_DWORD *)this = v127;
|
*(_DWORD *)this = v127;
|
||||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 4), v128);
|
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=((volatile signed __int32 **)(this + 4), v128);
|
||||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v128);
|
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v128);
|
||||||
|
|
||||||
std::string::operator=(*(unsigned int ***)this, "RULES");
|
std::string::operator=(*(unsigned int ***)this, "RULES");
|
||||||
lpuexcpt = (struct _Unwind_Exception *)v119;
|
lpuexcpt = (struct _Unwind_Exception *)v119;
|
||||||
if ( v118 == v119 )
|
if ( v118 == v119 )
|
||||||
@ -11210,18 +11217,26 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
*((_DWORD *)lpuexcpt + 4) = v131;
|
*((_DWORD *)lpuexcpt + 4) = v131;
|
||||||
*((_DWORD *)lpuexcpt + 5) = v132;
|
*((_DWORD *)lpuexcpt + 5) = v132;
|
||||||
*((_DWORD *)lpuexcpt + 6) = v133;
|
*((_DWORD *)lpuexcpt + 6) = v133;
|
||||||
qmemcpy((char *)lpuexcpt + 28, v134, 0x40u);
|
qmemcpy((char *)lpuexcpt + 28, v134, 0x40u); // 64字节
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse - 10
|
// Parse - 10
|
||||||
v7 = operator new(0x78u);
|
v7 = operator new(0x78u); // 120
|
||||||
*v7 = &off_519B58;
|
*v7 = &off_519B58;
|
||||||
v7[1] = v7 + 3;
|
// v7->offset_4 = v7->offset_12
|
||||||
|
v7[1] = v7 + 3; // std::string
|
||||||
|
// v7->offset_8 = 0
|
||||||
v7[2] = 0;
|
v7[2] = 0;
|
||||||
|
// v7->offset_12 = 0
|
||||||
*((_BYTE *)v7 + 12) = 0;
|
*((_BYTE *)v7 + 12) = 0;
|
||||||
|
|
||||||
|
// v7->offset_32 = 0
|
||||||
v7[8] = 0;
|
v7[8] = 0;
|
||||||
|
// v7->offset_36 = 0
|
||||||
v7[9] = 0;
|
v7[9] = 0;
|
||||||
|
// v7->offset_56 = 0
|
||||||
*((_BYTE *)v7 + 56) = 0;
|
*((_BYTE *)v7 + 56) = 0;
|
||||||
|
// v7->offset_28 = 1
|
||||||
v7[7] = 1;
|
v7[7] = 1;
|
||||||
v7[10] = 0;
|
v7[10] = 0;
|
||||||
v7[11] = 0;
|
v7[11] = 0;
|
||||||
@ -11234,6 +11249,7 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
std::string::_M_assign((int)lpuexcptf + 4, (int)&v135);
|
std::string::_M_assign((int)lpuexcptf + 4, (int)&v135);
|
||||||
std::string::_M_dispose((void **)&v135);
|
std::string::_M_dispose((void **)&v135);
|
||||||
|
|
||||||
|
// int this
|
||||||
v78 = (_DWORD *)(this + 8);
|
v78 = (_DWORD *)(this + 8);
|
||||||
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back(this + 8, (int *)&v102);
|
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back(this + 8, (int *)&v102);
|
||||||
|
|
||||||
@ -11252,11 +11268,11 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
v107 = 0;
|
v107 = 0;
|
||||||
v112 = v9;
|
v112 = v9;
|
||||||
v113 = 0;
|
v113 = 0;
|
||||||
// v9->offset_0 = &v9->offset_8
|
// v9->offset_0 = &v9->offset_8 std::string
|
||||||
*v9 = v9 + 2;
|
*v9 = v9 + 2;
|
||||||
// v9->offset_24 = v9->offset_32
|
// v9->offset_24 = v9->offset_32 std::string
|
||||||
v9[6] = v9 + 8;
|
v9[6] = v9 + 8;
|
||||||
// v9->offset_48 = v9->offset_56
|
// v9->offset_48 = v9->offset_56 std::string
|
||||||
v9[12] = v9 + 14;
|
v9[12] = v9 + 14;
|
||||||
/*
|
/*
|
||||||
v9:
|
v9:
|
||||||
@ -11361,16 +11377,19 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
v24 = this;
|
v24 = this;
|
||||||
|
|
||||||
v25 = *(_DWORD *)(this + 32); // it_finish
|
v25 = *(_DWORD *)(this + 32); // it_finish
|
||||||
// this->offset_16 -> it_start, v75 索引
|
// this->offset_16 -> it_start, v75 索引
|
||||||
if ( *(_DWORD *)(this + 16) == v25 || v75 >= -373475417 * ((v119 - v118) >> 2) )
|
if ( *(_DWORD *)(this + 16) == v25 || v75 >= -373475417 * ((v119 - v118) >> 2) )
|
||||||
break;
|
break;
|
||||||
if ( v25 == *(_DWORD *)(this + 36) )
|
if ( v25 == *(_DWORD *)(this + 36) )
|
||||||
v25 = *(_DWORD *)(*(_DWORD *)(this + 44) - 4) + 512;
|
v25 = *(_DWORD *)(*(_DWORD *)(this + 44) - 4) + 512;
|
||||||
|
|
||||||
v72 = *(volatile signed __int32 **)(v25 - 4);
|
v72 = *(volatile signed __int32 **)(v25 - 4);
|
||||||
v116 = *(char **)(v25 - 8);
|
v116 = *(char **)(v25 - 8);
|
||||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v117, v72);
|
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::operator=(&v117, v72);
|
||||||
lpuexcpta = (struct _Unwind_Exception *)&v118[92 * v75];
|
|
||||||
|
lpuexcpta = (struct _Unwind_Exception *)&v118[92 * v75]; // cur
|
||||||
switch ( *(_DWORD *)lpuexcpta )
|
switch ( *(_DWORD *)lpuexcpta )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
@ -11386,7 +11405,7 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
Str = "$NAME";
|
Str = "$NAME";
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
Str = (char *)&off_50F38C;
|
Str = (char *)&off_50F38C; // "$ID"
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
Str = "$MULTI_EXPR";
|
Str = "$MULTI_EXPR";
|
||||||
@ -11454,7 +11473,7 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
}
|
}
|
||||||
++v75;
|
++v75;
|
||||||
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::pop_back(v78);
|
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::pop_back(v78);
|
||||||
if ( *Str != 36 || Str[1] )
|
if ( *Str != '$'/*36*/ || Str[1] )
|
||||||
{
|
{
|
||||||
v82 = operator new(0xB0u);
|
v82 = operator new(0xB0u);
|
||||||
WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v82);
|
WXSS::CSSTreeLib::CSSSyntaxTree::CSSSyntaxTree((int)v82);
|
||||||
@ -11599,10 +11618,11 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
v32 = v124; // 只是为了销毁
|
v32 = v124; // 只是为了销毁
|
||||||
LABEL_59:
|
LABEL_59:
|
||||||
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v32);
|
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(v32);
|
||||||
}
|
} // end == 3
|
||||||
// Parse - 20-10
|
// Parse - 20-10
|
||||||
else if ( (*(int (__fastcall **)(char *))(*(_DWORD *)v116 + 8))(v116) == 2 )
|
else if ( (*(int (__fastcall **)(char *))(*(_DWORD *)v116 + 8))(v116) == 2 )
|
||||||
{
|
{
|
||||||
|
// int *v86
|
||||||
v86 = &dword_50CBE0;
|
v86 = &dword_50CBE0;
|
||||||
v52 = *((_DWORD *)v116 + 1);
|
v52 = *((_DWORD *)v116 + 1);
|
||||||
v53 = (_DWORD *)dword_50CBE4;
|
v53 = (_DWORD *)dword_50CBE4;
|
||||||
@ -11620,8 +11640,13 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
if ( v86 != &dword_50CBE0 && v52 < v86[4] )
|
if ( v86 != &dword_50CBE0 && v52 < v86[4] )
|
||||||
v86 = &dword_50CBE0;
|
v86 = &dword_50CBE0;
|
||||||
v73 = std::string::basic_string((void **)&v135, Str);
|
v73 = std::string::basic_string((void **)&v135, Str);
|
||||||
|
|
||||||
v77 = (char *)(v86 + 6);
|
v77 = (char *)(v86 + 6);
|
||||||
|
// v77 = v86->offset_24
|
||||||
|
|
||||||
v87 = (char *)v86[7];
|
v87 = (char *)v86[7];
|
||||||
|
// v87 = v86->offset_28
|
||||||
|
|
||||||
Strc = v77;
|
Strc = v77;
|
||||||
while ( v87 )
|
while ( v87 )
|
||||||
{
|
{
|
||||||
@ -11648,13 +11673,13 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
Strc = v58;
|
Strc = v58;
|
||||||
}
|
}
|
||||||
std::string::_M_dispose((void **)&v135);
|
std::string::_M_dispose((void **)&v135);
|
||||||
v20 = (int *)v77;
|
v20 = (int *)v77; // end
|
||||||
if ( Strc == v77 || *((_DWORD *)Strc + 11) == *((_DWORD *)Strc + 10) )
|
if ( Strc == v77 || *((_DWORD *)Strc + 11) == *((_DWORD *)Strc + 10) )
|
||||||
{
|
{
|
||||||
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::basic_stringstream((int)&v135);
|
std::basic_stringstream<char,std::char_traits<char>,std::allocator<char>>::basic_stringstream((int)&v135);
|
||||||
v59 = std::operator<<<char>((std::ostream::sentry *)v137, a3);
|
v59 = std::operator<<<char>((std::ostream::sentry *)v137, a3);
|
||||||
std::operator<<<std::char_traits<char>>(v59, "(");
|
std::operator<<<std::char_traits<char>>(v59, "(");
|
||||||
v60 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 5));
|
v60 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 5)); // cur
|
||||||
std::operator<<<std::char_traits<char>>(v60, ":");
|
std::operator<<<std::char_traits<char>>(v60, ":");
|
||||||
v61 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 6));
|
v61 = (std::ostream::sentry *)std::ostream::operator<<(*((_DWORD *)lpuexcpta + 6));
|
||||||
v62 = std::operator<<<std::char_traits<char>>(v61, "): unexpected token `");
|
v62 = std::operator<<<std::char_traits<char>>(v61, "): unexpected token `");
|
||||||
@ -11677,6 +11702,7 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
v36 = (char *)&v123;
|
v36 = (char *)&v123;
|
||||||
goto LABEL_48;// 销毁数据,返回-1
|
goto LABEL_48;// 销毁数据,返回-1
|
||||||
}
|
}
|
||||||
|
// this->offset_8
|
||||||
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::pop_back(v78);
|
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::pop_back(v78);
|
||||||
for ( lpuexcptd = ((*(_DWORD *)(*((_DWORD *)Strc + 10) + 4) - **((_DWORD **)Strc + 10)) >> 3) - 1;
|
for ( lpuexcptd = ((*(_DWORD *)(*((_DWORD *)Strc + 10) + 4) - **((_DWORD **)Strc + 10)) >> 3) - 1;
|
||||||
lpuexcptd >= 0;
|
lpuexcptd >= 0;
|
||||||
@ -11686,12 +11712,15 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
|
|||||||
v67 = *(_DWORD *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd);
|
v67 = *(_DWORD *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd);
|
||||||
if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v67 + 8))(v67, v73) == 4 )
|
if ( (*(int (__thiscall **)(int, int))(*(_DWORD *)v67 + 8))(v67, v73) == 4 )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// zcc::shared_ptr<WXSS::CSSTreeLib::Base>
|
||||||
v20 = (int *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd);
|
v20 = (int *)(**((_DWORD **)Strc + 10) + 8 * lpuexcptd);
|
||||||
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((int)v78, v20);
|
std::deque<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((int)v78, v20);
|
||||||
v73 = v66;
|
v73 = v66;
|
||||||
}
|
}
|
||||||
}
|
} // end == 2
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse - 25
|
// Parse - 25
|
||||||
if ( *(_DWORD *)(this + 72) == *(_DWORD *)(this + 56) )
|
if ( *(_DWORD *)(this + 72) == *(_DWORD *)(this + 56) )
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user