// File: /workspace/github_cpp_makefile_star2_O2/fffrankkk[P]XmlCode/src/Main.cpp
// Function: CMain::Inc(std::vector<CClassDetail*, std::allocator<CClassDetail*>>&, CClassDetail*)
void CMain::Inc(vector<CClassDetail *>& vecDetail, CClassDetail* pCRoot)
{
    ofstream ofsWriter;
    ofsWriter.open("Config.h");
    CClassCont CContent;
    string strComment = CContent.GetFileComment("Config.h");
    string strIfndef = CContent.GetMacroIfndef("Config.h");
    string strDefine = CContent.GetMacroDefine("Config.h");

    ofsWriter << strComment << endl << strIfndef << strDefine << endl;

    ofsWriter << "#include \"XMLTree.h\"" << endl;
    ofsWriter << endl;
    ofsWriter << "#include <string>" << endl;
    ofsWriter << "#include <vector>" << endl;
    ofsWriter << endl;
    ofsWriter << "using std::string;" << endl;
    ofsWriter << "using std::vector;" << endl;
    ofsWriter << endl;

    pCRoot->SetName("Config");

    for (BT_AUTO(iterDetail, vecDetail.begin()); iterDetail != vecDetail.end(); ++iterDetail) {
        pCRoot->AddChild((*iterDetail)->GetName(), *iterDetail);
    }


    stack<pair<CClassDetail*, string> > staClasses;
    staClasses.push(make_pair(pCRoot, ""));
    vector<pair<CClassDetail*, string> > vecClasses;
    while (!staClasses.empty()) {
        pair<CClassDetail*, string> paiClass = staClasses.top();
        staClasses.pop();

        vecClasses.push_back(paiClass);

        vector<CClassDetail *> vecChildren = paiClass.first->GetChildren();

        string strBase = string("C") + NUtility::First2Up(paiClass.first->GetName());
        if (!paiClass.second.empty()) {
            strBase = paiClass.second + "::" + strBase;
        }

        for (size_t zuCount = 0; zuCount < vecChildren.size(); ++zuCount) {
            staClasses.push(make_pair(vecChildren[zuCount], strBase));
        }
    }

    vector<string> vecDeclare = pCRoot->GenerateDeclare();
    for (size_t zuCount = 0; zuCount < vecDeclare.size(); ++zuCount) {
        ofsWriter << vecDeclare[zuCount] << endl;
    }
    ofsWriter << endl;

    for (BT_AUTO(iterPair, vecClasses.rbegin()); iterPair != vecClasses.rend(); ++iterPair) {

        vector<string> vecGet = iterPair->first->GenerateGet(iterPair->second);
        for (size_t zuCount = 0; zuCount < vecGet.size(); ++zuCount) {
            ofsWriter << vecGet[zuCount] << endl;
        }
    }

    string strEndif = CContent.GetMacroEndif();
    ofsWriter << strEndif;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3d8, %rsp            # imm = 0x3D8
movq %rdx, %rbp
movq %rsi, %r14
leaq 0x1d8(%rsp), %rbx
movq %rbx, %rdi
callq 0x4580
leaq 0x1069a(%rip), %rsi     # 0x181a8
pushq $0x10
popq %rdx
movq %rbx, %rdi
callq 0x4050
leaq 0x140(%rsp), %rdi
callq 0x1082c
leaq 0x1067b(%rip), %rsi     # 0x181a8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5480
leaq 0x120(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x10bac
leaq 0x30(%rsp), %rdi
callq 0x4160
leaq 0x10641(%rip), %rsi     # 0x181a8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5480
leaq 0x100(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x1263c
leaq 0x30(%rsp), %rdi
callq 0x4160
leaq 0x10607(%rip), %rsi     # 0x181a8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5480
leaq 0xe0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x12748
leaq 0x30(%rsp), %rdi
callq 0x4160
leaq 0x1d8(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x4270
movq %rax, %rdi
callq 0x4180
leaq 0x100(%rsp), %rsi
movq %rax, %rdi
callq 0x4270
leaq 0xe0(%rsp), %rsi
movq %rax, %rdi
callq 0x4270
movq %rax, %rdi
callq 0x4180
leaq 0x10591(%rip), %rsi     # 0x181b1
leaq 0x1d8(%rsp), %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4180
leaq 0x1d8(%rsp), %rdi
callq 0x4180
leaq 0x1057d(%rip), %rsi     # 0x181c6
leaq 0x1d8(%rsp), %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4180
leaq 0x10573(%rip), %rsi     # 0x181d8
leaq 0x1d8(%rsp), %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4180
leaq 0x1d8(%rsp), %rdi
callq 0x4180
leaq 0x1055c(%rip), %rsi     # 0x181ea
leaq 0x1d8(%rsp), %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4180
leaq 0x10553(%rip), %rsi     # 0x181fd
leaq 0x1d8(%rsp), %rdi
callq 0x42e0
movq %rax, %rdi
callq 0x4180
leaq 0x1d8(%rsp), %rdi
callq 0x4180
leaq 0x104cb(%rip), %rsi     # 0x1819e
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x5480
leaq 0x30(%rsp), %rsi
movq %rbp, %rdi
callq 0xac10
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x4160
movq (%r14), %r12
leaq 0x78(%rbp), %r15
cmpq 0x8(%r14), %r12
je 0x7d35
movq (%r12), %rsi
movq %rbx, %rdi
callq 0xac1a
movq (%r12), %r13
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6ad6
movq %r13, (%rax)
movq %rbx, %rdi
callq 0x4160
addq $0x8, %r12
jmp 0x7d03
leaq 0x30(%rsp), %rdi
callq 0x899a
leaq 0xa0(%rsp), %rsi
movq %rbp, (%rsi)
leaq 0x10799(%rip), %rax     # 0x184ea
movq %rax, 0x8(%rsi)
leaq 0x8(%rsp), %rdi
callq 0x89b6
movq %rbp, 0x98(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x8e68
leaq 0x10(%rsp), %rdi
callq 0x4160
xorps %xmm0, %xmm0
leaq 0x80(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0xa8(%rsp), %r15
leaq 0x8(%rsp), %r14
leaq 0x30(%rsp), %rbp
leaq 0xc8(%rsp), %r13
leaq 0xa0(%rsp), %r12
leaq 0x1b8(%rsp), %rbx
movq 0x60(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0x7f35
cmpq 0x68(%rsp), %rsi
jne 0x7de5
movq 0x78(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x1e0, %eax            # imm = 0x1E0
addq %rax, %rsi
addq $-0x28, %rsi
movq %r14, %rdi
callq 0x89d2
movq %rbp, %rdi
callq 0x9122
leaq 0x80(%rsp), %rdi
movq %r14, %rsi
callq 0x89e6
movq 0x8(%rsp), %rsi
movq %r13, %rdi
callq 0xaece
movq %r12, %rdi
leaq 0x10548(%rip), %rsi     # 0x18368
leaq 0x7(%rsp), %rdx
callq 0x5480
leaq 0x198(%rsp), %r14
leaq 0x178(%rsp), %r13
movq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xac1a
movq %r13, %rdi
movq %r14, %rsi
callq 0x7602
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x8a12
movq %r13, %rdi
callq 0x4160
movq %r14, %rdi
callq 0x4160
movq %r12, %rdi
callq 0x4160
cmpq $0x0, 0x18(%rsp)
je 0x7ebd
movq %r13, %rdi
leaq 0x10(%rsp), %rsi
leaq 0x10316(%rip), %rdx     # 0x181a5
callq 0x8a98
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x8a79
movq %rbx, %rdi
movq %r12, %rsi
callq 0x43a0
movq %r12, %rdi
callq 0x4160
movq %r13, %rdi
callq 0x4160
xorl %r14d, %r14d
xorl %r13d, %r13d
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rax
subq %rsi, %rax
sarq $0x3, %rax
cmpq %rax, %r13
jae 0x7f09
addq %r14, %rsi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x8b14
movq %rbp, %rdi
movq %r12, %rsi
callq 0x8e68
movq %r15, %rdi
callq 0x4160
incq %r13
addq $0x8, %r14
jmp 0x7ec3
movq %rbx, %rdi
callq 0x4160
leaq 0xc8(%rsp), %r13
movq %r13, %rdi
callq 0x6ee2
leaq 0x10(%rsp), %rdi
callq 0x4160
leaq 0x8(%rsp), %r14
jmp 0x7dbd
leaq 0x8(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xaf4a
xorl %r14d, %r14d
leaq 0x1d8(%rsp), %rbx
xorl %r15d, %r15d
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r15
jae 0x7f98
addq %r14, %rsi
movq %rbx, %rdi
callq 0x4270
movq %rax, %rdi
callq 0x4180
incq %r15
addq $0x20, %r14
jmp 0x7f60
leaq 0x1d8(%rsp), %rdi
callq 0x4180
movq 0x88(%rsp), %r15
leaq 0x8(%rsp), %rbx
leaq 0x1d8(%rsp), %r14
cmpq 0x80(%rsp), %r15
je 0x801a
movq -0x28(%r15), %rsi
leaq -0x20(%r15), %rdx
movq %rbx, %rdi
callq 0xce82
addq $-0x28, %r15
xorl %r12d, %r12d
xorl %r13d, %r13d
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r13
jae 0x8010
addq %r12, %rsi
movq %r14, %rdi
callq 0x4270
movq %rax, %rdi
callq 0x4180
incq %r13
addq $0x20, %r12
jmp 0x7fde
movq %rbx, %rdi
callq 0x8ad0
jmp 0x7fba
leaq 0x8(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x12854
leaq 0x1d8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4270
leaq 0x8(%rsp), %rdi
callq 0x4160
leaq 0xa0(%rsp), %rdi
callq 0x8ad0
leaq 0x80(%rsp), %rdi
callq 0x8af2
leaq 0x30(%rsp), %rdi
callq 0x8b26
leaq 0xe0(%rsp), %rdi
callq 0x4160
leaq 0x100(%rsp), %rdi
callq 0x4160
leaq 0x120(%rsp), %rdi
callq 0x4160
leaq 0x140(%rsp), %rdi
callq 0x10b82
leaq 0x1d8(%rsp), %rdi
callq 0x4490
addq $0x3d8, %rsp            # imm = 0x3D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4160
jmp 0x8206
jmp 0x81be
jmp 0x81be
jmp 0x8165
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4160
jmp 0x8220
movq %rax, %rbx
jmp 0x8220
jmp 0x81aa
jmp 0x81af
jmp 0x81aa
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x8232
movq %rax, %rbx
jmp 0x8237
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x823f
movq %rax, %rbx
jmp 0x8244
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x824c
movq %rax, %rbx
jmp 0x8251
jmp 0x814a
movq %rax, %rbx
jmp 0x825e
jmp 0x81aa
jmp 0x81d0
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
jmp 0x81c9
jmp 0x81be
movq %rax, %rbx
jmp 0x8213
jmp 0x816f
movq %rax, %rbx
jmp 0x81ed
movq %rax, %rbx
jmp 0x81e0
movq %rax, %rbx
jmp 0x81a0
movq %rax, %rbx
jmp 0x8193
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0x4160
leaq 0x198(%rsp), %rdi
callq 0x4160
leaq 0xa0(%rsp), %rdi
jmp 0x81db
movq %rax, %rbx
jmp 0x822a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x4160
jmp 0x822a
movq %rax, %rbx
jmp 0x8206
movq %rax, %rbx
movq %r15, %rdi
callq 0x4160
jmp 0x81d3
movq %rax, %rbx
leaq 0x1b8(%rsp), %rdi
callq 0x4160
leaq 0xc8(%rsp), %rdi
callq 0x6ee2
leaq 0x10(%rsp), %rdi
callq 0x4160
jmp 0x8213
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8ad0
leaq 0xa0(%rsp), %rdi
callq 0x8ad0
leaq 0x80(%rsp), %rdi
callq 0x8af2
leaq 0x30(%rsp), %rdi
callq 0x8b26
leaq 0xe0(%rsp), %rdi
callq 0x4160
leaq 0x100(%rsp), %rdi
callq 0x4160
leaq 0x120(%rsp), %rdi
callq 0x4160
leaq 0x140(%rsp), %rdi
callq 0x10b82
leaq 0x1d8(%rsp), %rdi
callq 0x4490
movq %rbx, %rdi
callq 0x45c0
nop