feat: transit table

This commit is contained in:
msojocs 2023-08-14 20:13:09 +08:00
parent c173f17062
commit af8e0e2f71
8 changed files with 4391 additions and 78 deletions

View File

@ -49,8 +49,6 @@ add_executable(wcc
src/utils/file.cpp
)
add_executable(wcsc
src/include/bittest.h
src/utils/bittest.cpp
src/wcsc.cpp
src/wcsc/usage.cpp
src/wxa/wxa.cpp
@ -60,11 +58,13 @@ add_executable(wcsc
src/wxss/token.cpp
src/wxss/tokenizer.cpp
src/wxss/x_compiler.cpp
src/wxss/css_tree_lib/css_tree_lib.cpp
src/wxss/css_tree_lib/base.cpp
src/wxss/css_tree_lib/css_syntax_tree.cpp
src/wxss/css_tree_lib/lexical_checker.cpp
src/wxss/css_tree_lib/parser.cpp
src/wxss/css_tree_lib/transit_table.cpp
src/utils/bittest.cpp
src/utils/json.cpp
src/utils/string_utils.cpp
src/utils/file.cpp

View File

@ -588,7 +588,7 @@ namespace WXML
// 大小12字节
public:
std::vector<std::shared_ptr<WXML::EXPRLib::Base>> offset_0;
Offset0Type *offset_8;
// Offset0Type *offset_8;
BNF(/* args */);
~BNF();
};

View File

@ -78,11 +78,42 @@ namespace WXSS
namespace CSSTreeLib
{
using Offset0Type = int();
int off_519B58();
int off_519B2C();
int off_519A44();
int off_519B18();
class Base
{
private:
/* data
size: 0x78u
*/
public:
Offset0Type *offset_0 = nullptr;
std::string offset_4_str;
std::string offset_4_int;
int offset_28 = 0;
int offset_32 = 0;
std::string offset_36 = "";
Base(/* args */);
~Base();
};
using BNF = std::vector<std::shared_ptr<WXSS::CSSTreeLib::Base>>;
class TransitTable
{
private:
/* data */
public:
static TransitTable* instance;
static std::mutex m;
std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>> offset_0;
bool offset_24;
TransitTable(/* args */);
~TransitTable();
static TransitTable* GetInstance();
@ -147,19 +178,6 @@ namespace WXSS
static LexicalChecker* GetInstance(bool);
};
using Offset0Type = int();
class Base
{
private:
/* data
size: 0x78u
*/
public:
Offset0Type *offset_0 = nullptr;
std::string offset_4;
Base(/* args */);
~Base();
};
class Parser

View File

@ -0,0 +1,8 @@
#include "../../include/wxss.h"
namespace WXSS
{
namespace CSSTreeLib
{
}
}

View File

@ -0,0 +1,25 @@
#include "../../include/wxss.h"
namespace WXSS
{
namespace CSSTreeLib
{
int off_519B58()
{
throw "not implement";
}
int off_519B2C()
{
throw "not implement";
}
int off_519A44()
{
throw "not implement";
}
int off_519B18()
{
throw "not implement";
}
}
}

View File

@ -38,18 +38,22 @@ namespace WXSS
return 0;
}
// Parse - 10
WXSS::Token v127;
v127.offset_0 = 8;
v127.offset_20 = v118.back().offset_20;
v127.offset_24 = v118.back().offset_24;
v127.offset_28[0] = 0;
v118.push_back(v127);
// Parse - 10
std::shared_ptr<WXSS::CSSTreeLib::Base> v102(new WXSS::CSSTreeLib::Base());
v102->offset_4 = "$";
v102->offset_4_str = "$";
this->offset_8.push_back(v102);
// off_519A44
std::shared_ptr<WXSS::CSSTreeLib::Base> v104(new WXSS::CSSTreeLib::Base());
// v104->offset_0 = off_519A44;
v104->offset_4 = instance->GetTopType();
v104->offset_4_str = instance->GetTopType();
this->offset_8.push_back(v104);
// Parse - 15

File diff suppressed because it is too large Load Diff

View File

@ -11186,15 +11186,15 @@ int __thiscall WXSS::CSSTreeLib::Parser::Parse(int this, char **a2, int *a3, uns
goto LABEL_107; // 销毁数据返回Tokens
v132 = 0;
v133 = 0;
v134[0] = 0;
v130 = 0;
v131 = 0;
v5 = *((_DWORD *)v119 - 18);
v128 = 0;
v132 = v5;
v134[0] = 0; // v127.offset_28
v130 = 0; // v127.offset_12
v131 = 0; // v127.offset_16
v5 = *((_DWORD *)v119 - 18); // 18 * 4 = 72
v128 = 0; // v127.offset_4
v132 = v5; // v127.offset_20
v129 = 0;
v127 = 8;
v133 = *((_DWORD *)v119 - 17);
v127 = 8; // v127.offset_0
v133 = *((_DWORD *)v119 - 17); // v127.offset_24
if ( v119 == v120 )
{
std::vector<WXSS::Token>::_M_realloc_insert<WXSS::Token const&>(&v118, v119, &v127);
@ -14297,9 +14297,12 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
volatile signed __int32 *v1420; // [esp+9Ch] [ebp-1Ch] BYREF
int v1421; // [esp+A0h] [ebp-18h]
// int a1
if ( !*(_BYTE *)(a1 + 24) )
{
// TransitTable::Init - 0
*(_BYTE *)(a1 + 24) = 1;
// =======================1================
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v2 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v1);
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>,std::_Select1st<std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>>>::operator=(
@ -14312,11 +14315,12 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::string::basic_string((void **)&v1419, "$NAME");
v1414 = 1;
v3 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1207 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v3, &v1419);
v1207 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v3, &v1419); // "$NAME"
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1207, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1416 = 0; // std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>
v1417 = 0;
v1418 = 0;
v4 = operator new(4u);
@ -14324,10 +14328,10 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v4);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v623 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v623);
WXSS::CSSTreeLib::Action::Action((int)v623); // off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v623);
v624 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v624 + 36, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "ATTR");
@ -14339,64 +14343,80 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
v1416 = 0;
// TransitTable::Init - 5
v1416 = 0; // std::vector<WXSS::CSSTreeLib::BNF> v1416
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)asc_50F6EC);
std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); // ";" ";\000:\000}\000$\000+"
v1414 = 1;
// v6 = this->offset_0[1]
v6 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1208 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v6, &v1419);
// v1208 = v6[";"]
v1208 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v6, &v1419); // ";"
// v6[";"] = std::vector<WXSS::CSSTreeLib::BNF>
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1208, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
// std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>> v1416
v1417 = 0;
v1418 = 0;
v625 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v625);
WXSS::CSSTreeLib::Terminal::Terminal((int)v625); // off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v625);
v626 = v1412;
std::string::basic_string((void **)&v1419, (char *)asc_50F6EC);
std::string::basic_string((void **)&v1419, (char *)asc_50F6EC); // ";" ";\000:\000}\000$\000+"
std::string::_M_assign(v626 + 4, (int)&v1419);
// v1412->offset_4 = ";"
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v627 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v627);
WXSS::CSSTreeLib::Action::Action((int)v627);// off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v627);
v628 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::_M_assign(v628 + 36, (int)&v1419);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v628 + 36, (int)&v1419); // v1414->offset_36
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "ATTR");
// v1414->offset_4 = "ATTR"
v7 = v1414;
*(_DWORD *)(v1414 + 28) = 0;
// v1414->offset_28 = 0
*(_DWORD *)(v7 + 32) = 2;
// v1414->offset_32 = 2
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1208, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
v1416 = 0;
// TransitTable::Init - 10
v1416 = 0; // std::vector<WXSS::CSSTreeLib::BNF>
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]);
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); // ":"
v1414 = 1;
v8 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1209 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v8, &v1419);
v1209 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v8, &v1419); // ":"
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1209, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1416 = 0; // std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>
v1417 = 0;
v1418 = 0;
v629 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v629);
WXSS::CSSTreeLib::Terminal::Terminal((int)v629);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v629);
v630 = v1414;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]);
std::string::_M_assign(v630 + 4, (int)&v1419);
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]); // ":"
std::string::_M_assign(v630 + 4, (int)&v1419); // ":"
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
v9 = operator new(8u);
*v9 = &off_519A44;
v9[1] = 0;
@ -14407,16 +14427,19 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 15
v1416 = 0;
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]);
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[4]); // "}"
v1414 = 1;
v10 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1210 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v10, &v1419);
v1210 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v10, &v1419);// "}"
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1210, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14424,11 +14447,12 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
*v11 = &off_519B18;
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v11);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v631 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v631);
WXSS::CSSTreeLib::Action::Action((int)v631);// off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v631);
v632 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v632 + 36, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "ATTR");
@ -14436,20 +14460,25 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
*(_DWORD *)(v1414 + 28) = 0;
*(_DWORD *)(v12 + 32) = 1;
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1210, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 20
v1416 = 0;
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]);
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[6]); // "$"
v1414 = 1;
v13 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1211 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v13, &v1419);
v1211 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v13, &v1419); // "$"
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1211, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14457,11 +14486,12 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
*v14 = &off_519B18;
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v14);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v633 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v633);
WXSS::CSSTreeLib::Action::Action((int)v633); // off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v633);
v634 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v634 + 36, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "ATTR");
@ -14470,9 +14500,13 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
*(_DWORD *)(v15 + 32) = 1;
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1211, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 25
// =======================2================
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 2;
v17 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v16);
@ -14480,6 +14514,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
v17,
&v1419);
std::_Rb_tree<std::string,std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>,std::_Select1st<std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>>,std::less<std::string>,std::allocator<std::pair<std::string const,std::vector<WXSS::CSSTreeLib::BNF>>>>::~_Rb_tree((int)&v1419);
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14490,99 +14525,119 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1212, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1417 = 0;
v1418 = 0;
v635 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v635);
WXSS::CSSTreeLib::Terminal::Terminal((int)v635); // off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v635);
v636 = v1414;
std::string::basic_string((void **)&v1419, "$NAME");
std::string::_M_assign(v636 + 4, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
v19 = operator new(8u);
*v19 = &off_519A44;
v19[1] = 0;
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1419, (int)v19);
v1419[1] = 27;
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1419);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1212, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 30
v1416 = 0;
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]);
// ";\000:\000}\000$\000+"
// 01 23 45 67 8
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); // "+"
v1414 = 2;
v20 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1213 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v20, &v1419);
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1213, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1417 = 0;
v1418 = 0;
v637 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v637);
WXSS::CSSTreeLib::Terminal::Terminal((int)v637);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1410, (int)v637);
v638 = v1410;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]);
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[8]); // "+"
std::string::_M_assign(v638 + 4, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1410);
v639 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v639);
WXSS::CSSTreeLib::Terminal::Terminal((int)v639);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v639);
v640 = v1412;
std::string::basic_string((void **)&v1419, "$NAME");
std::string::_M_assign(v640 + 4, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v641 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v641);
WXSS::CSSTreeLib::Action::Action((int)v641); // off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v641);
v642 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v642 + 36, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR");
v21 = v1414;
*(_DWORD *)(v1414 + 28) = 0;
*(_DWORD *)(v21 + 32) = 2;
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1213, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 35
v1416 = 0;
v1417 = 0;
v1418 = 0;
std::string::basic_string((void **)&v1419, (char *)off_50F6FF);
// {'$','I','D','\0'}
// 0 1 2 3
std::string::basic_string((void **)&v1419, (char *)off_50F6FF); // "$"
v1414 = 2;
v22 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, &v1414);
v1214 = std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>::operator[](v22, &v1419);
std::vector<WXSS::CSSTreeLib::BNF>::_M_move_assign((void ***)v1214, (void ***)&v1416);
std::string::_M_dispose((void **)&v1419);
std::vector<WXSS::CSSTreeLib::BNF>::~vector((void ***)&v1416);
v1416 = 0;
v1417 = 0;
v1418 = 0;
v643 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v643);
WXSS::CSSTreeLib::Terminal::Terminal((int)v643);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v643);
v644 = v1412;
std::string::basic_string((void **)&v1419, (char *)off_50F6FF);
std::string::basic_string((void **)&v1419, (char *)off_50F6FF); // "$"
std::string::_M_assign(v644 + 4, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v645 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v645);
WXSS::CSSTreeLib::Action::Action((int)v645); // off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v645);
v646 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6); // '\0'
std::string::_M_assign(v646 + 36, (int)&v1419);
std::string::_M_dispose((void **)&v1419);
std::string::operator=((unsigned int **)(v1414 + 4), "SELECTOR");
@ -14591,9 +14646,12 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
*(_DWORD *)(v23 + 32) = 1;
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1414);
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1214, &v1416);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 40
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14608,7 +14666,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
v1417 = 0;
v1418 = 0;
v647 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v647);
WXSS::CSSTreeLib::Terminal::Terminal((int)v647);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1412, (int)v647);
v648 = v1412;
std::string::basic_string((void **)&v1419, "[");
@ -14616,7 +14674,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v649 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v649);
WXSS::CSSTreeLib::Terminal::Terminal((int)v649);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v649);
v650 = v1414;
std::string::basic_string((void **)&v1419, "$NAME");
@ -14634,6 +14692,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 45
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14648,7 +14707,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
v1417 = 0;
v1418 = 0;
v651 = operator new(0x78u);
WXSS::CSSTreeLib::Terminal::Terminal((int)v651);
WXSS::CSSTreeLib::Terminal::Terminal((int)v651);// off_519B58
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v651);
v652 = v1414;
std::string::basic_string((void **)&v1419, (char *)&asc_50F6EC[2]);
@ -14665,6 +14724,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 50
v1416 = 0;
v1417 = 0;
v1418 = 0;
@ -14695,7 +14755,7 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::string::_M_dispose((void **)&v1419);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::push_back((void **)&v1416, &v1412);
v657 = operator new(0x3Cu);
WXSS::CSSTreeLib::Action::Action((int)v657);
WXSS::CSSTreeLib::Action::Action((int)v657); // off_519B2C
zcc::shared_ptr<WXSS::CSSTreeLib::Base>::shared_ptr(&v1414, (int)v657);
v658 = v1414;
std::string::basic_string((void **)&v1419, (char *)&byte_50F6E6);
@ -14711,6 +14771,9 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// TransitTable::Init - 55
// =======================================3
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 3;
v31 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v30);
@ -15262,6 +15325,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// =======================================4
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 4;
v85 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v84);
@ -15361,6 +15426,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// =======================================5
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 5;
v91 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v90);
@ -15693,6 +15760,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1413);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1411);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// =======================================6
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 6;
v109 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v108);
@ -15782,6 +15851,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1242, &v1419);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1419);
// =======================================7
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 7;
v119 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v118);
@ -15882,6 +15953,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::vector<WXSS::CSSTreeLib::BNF>::push_back((int)v1245, &v1419);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1417);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1419);
// =======================================8
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 8;
v128 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v127);
@ -16012,6 +16085,8 @@ void __fastcall WXSS::CSSTreeLib::TransitTable::Init(int a1)
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1420);
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count(&v1415);
std::vector<zcc::shared_ptr<WXSS::CSSTreeLib::Base>>::~vector((void **)&v1416);
// =======================================9
std::_Rb_tree_header::_Rb_tree_header(&v1420);
v1416 = 9;
v136 = std::map<int,std::map<std::string,std::vector<WXSS::CSSTreeLib::BNF>>>::operator[]((_DWORD *)a1, v135);
@ -46166,18 +46241,21 @@ void __fastcall WXSS::CSSTreeLib::EPS::~EPS(void *a1)
operator delete(a1);
}
//----- (00446728) --------------------------------------------------------
//----- (00446728) off_519B2C--------------------------------------------------------
int __fastcall WXSS::CSSTreeLib::Action::Action(int a1)
{
// size: 0x3C - 60
int result; // eax
*(_DWORD *)a1 = &off_519B2C;
*(_DWORD *)(a1 + 4) = a1 + 12;
*(_DWORD *)(a1 + 4) = a1 + 12; // std::string offset_4
result = a1 + 44;
*(_DWORD *)(a1 + 8) = 0;
*(_BYTE *)(a1 + 12) = 0;
*(_DWORD *)(a1 + 36) = a1 + 44;
*(_DWORD *)(a1 + 36) = a1 + 44; // std::string
*(_DWORD *)(a1 + 40) = 0;
*(_BYTE *)(a1 + 44) = 0;
*(_DWORD *)(a1 + 28) = 0;
return result;