// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]Dsuite/./Dsuite_fBranch.h
// Function: Tree::Tree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Tree(string treeString) {
        // First take care of any branch lengths
        std::regex branchLengths(":.*?(?=,|\\))");
        string treeNoBranchLengths = std::regex_replace(treeString,branchLengths,"");
        std::vector<string> tmpBranchEndNodeId;
        std::vector<string> tmpBranchStartNodeId;
        int numberOfInternalNodes = 0;
        std::regex sistersRegEx("\\(([a-zA-Z0-9.[:s:]_-]+),([a-zA-Z0-9.[:s:]_-]+)\\)");
        std::regex sistersRegExNoGroups("\\([a-zA-Z0-9.[:s:]_-]+,[a-zA-Z0-9.[:s:]_-]+\\)");
        std::regex comma(",");
        std::smatch match;
        string workingTreeCopy = treeNoBranchLengths;
        while (std::regex_search(workingTreeCopy,match,sistersRegEx)) {
            assert(match.size() == 3);
            // for (auto x:match) std::cout << x << " "; std::cout << std::endl;
            string nodeId = "internalNode"+numToString(numberOfInternalNodes)+"X";
            tmpBranchStartNodeId.push_back(nodeId);
            tmpBranchStartNodeId.push_back(nodeId);
            if (std::count(tmpBranchEndNodeId.begin(),tmpBranchEndNodeId.end(),match[1])) duplicateTreeValueError(match[1]);
            else tmpBranchEndNodeId.push_back(match[1]);
            if (std::count(tmpBranchEndNodeId.begin(),tmpBranchEndNodeId.end(),match[2])) duplicateTreeValueError(match[2]);
            else tmpBranchEndNodeId.push_back(match[2]);
            
            workingTreeCopy = std::regex_replace(workingTreeCopy, sistersRegExNoGroups, nodeId, std::regex_constants::format_first_only);
            // std::cout << workingTreeCopy << std::endl;
            numberOfInternalNodes++;
        }
        if (std::regex_search(workingTreeCopy,comma)) {
            std::cerr << "ERROR: The tree string could not be parsed correctly! The remaining unparsed tree string is:"  << std::endl;
            std::cerr << workingTreeCopy << std::endl;
            exit(1);
        }
        
        // Prepare arrays for temporary branch format.
        std::vector<string> tmp2BranchID;
        std::vector<string> tmp2BranchParentId;
        std::vector<string> tmp2BranchDaughterId1;
        std::vector<string> tmp2BranchDaughterId2;
        std::vector<string> tmp2BranchEndNodeId;
        
        // Prepare the first two branches in temporary format (tmpBranchEndNodeId[-1] and tmpBranchEndNodeId[-2] are the two oldest branches).
        // Test if the first root branch ends in an internal node.
        std::regex internalNodeRegEx("internalNode[0-9]+X");
        tmp2BranchID.push_back("b0");
        tmp2BranchParentId.push_back("treeOrigin");
        tmp2BranchEndNodeId.push_back(tmpBranchEndNodeId[tmpBranchEndNodeId.size()-1]);
        if (std::regex_match(tmpBranchEndNodeId[tmpBranchEndNodeId.size()-1],internalNodeRegEx)) {
            tmp2BranchDaughterId1.push_back("unborn"); tmp2BranchDaughterId2.push_back("unborn");
        } else {
            tmp2BranchDaughterId1.push_back("none"); tmp2BranchDaughterId2.push_back("none");
        }
        // Repeat the above for the second branch.
        // Test if the second root branch ends in an internal node.
        tmp2BranchID.push_back("b1");
        tmp2BranchParentId.push_back("treeOrigin");
        tmp2BranchEndNodeId.push_back(tmpBranchEndNodeId[tmpBranchEndNodeId.size()-2]);
        if (std::regex_match(tmpBranchEndNodeId[tmpBranchEndNodeId.size()-2],internalNodeRegEx)) {
            tmp2BranchDaughterId1.push_back("unborn"); tmp2BranchDaughterId2.push_back("unborn");
        } else {
            tmp2BranchDaughterId1.push_back("none"); tmp2BranchDaughterId2.push_back("none");
        }
        
        // Find out about all remaining branches until either all branches end with extinctions, or all branches have reached the present.
        int branchIdCounter = 2;
        bool treeComplete = false;
        while (!treeComplete) {
            bool change = false;
            //std::cout << "tmp2BranchID.size(): " << tmp2BranchID.size() << std::endl;
            for (int i = 0; i < tmp2BranchID.size(); i++) {
                // if a branch terminated with a speciation event in the past, then add the two daughter branches
                if (tmp2BranchDaughterId1[i] == "unborn" && tmp2BranchDaughterId2[i] == "unborn") {
                    //std::cout << "tmp2BranchEndNodeId.size(): " << tmp2BranchEndNodeId.size() << std::endl;
                    // Find the two branches that have the same start node as this branch's end node.
                    for (int j = 0; j < tmpBranchStartNodeId.size(); j++) {
                       // std::cout << "j: " << j << " i: " << i << std::endl;
                        if (tmpBranchStartNodeId[j] == tmp2BranchEndNodeId[i]) {
                            tmp2BranchID.push_back("b"+numToString(branchIdCounter));
                            //std::cout << "tmp2BranchID.size(): " << tmp2BranchID.size() << " i: " << i << std::endl;
                            tmp2BranchParentId.push_back(tmp2BranchID[i]);
                            //std::cout << "tmpBranchEndNodeId.size(): " << tmpBranchEndNodeId.size() << " j: " << j << std::endl;
                            tmp2BranchEndNodeId.push_back(tmpBranchEndNodeId[j]);
                            if (std::regex_match(tmpBranchEndNodeId[j],internalNodeRegEx)) {
                                tmp2BranchDaughterId1.push_back("unborn");
                                tmp2BranchDaughterId2.push_back("unborn");
                            } else {
                                tmp2BranchDaughterId1.push_back("none");
                                tmp2BranchDaughterId2.push_back("none");
                            }
                            // Update daughter ids of temporary parent.
                            //std::cout << "tmp2BranchDaughterId1.size(): " << tmp2BranchDaughterId1.size() << " i: " << i << std::endl;
                           // std::cout << "tmp2BranchDaughterId2.size(): " << tmp2BranchDaughterId2.size() << " i: " << i << std::endl;
                            if (tmp2BranchDaughterId1[i] == "unborn") {
                                tmp2BranchDaughterId1[i] = "b"+numToString(branchIdCounter);
                            } else {
                                tmp2BranchDaughterId2[i] = "b"+numToString(branchIdCounter);
                            }
                            // Increase the branchIdCounter
                            branchIdCounter += 1;
                            change = true;
                        }
                    }
                }
            }
            if (change == false) treeComplete = true;
        }
        
        // Fill array @branch, and at the same time, add species for terminal branches.
        std::vector<string> species;
        for (int i = 0; i < tmp2BranchID.size(); i++) {
            string speciesId;
            if (std::regex_match(tmp2BranchEndNodeId[i], internalNodeRegEx)) {
                speciesId = "unknown";
            } else {
                speciesId = tmp2BranchEndNodeId[i];
                //if (tmp2BranchParentId[i] != "treeOrigin")
                allSpecies.push_back(speciesId);
            }
            branches.push_back(new Branch(tmp2BranchID[i], tmp2BranchParentId[i], tmp2BranchDaughterId1[i], tmp2BranchDaughterId2[i], speciesId));
            
        }
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2d8, %rsp            # imm = 0x2D8
movq %rsi, %rbx
leaq 0x18(%rdi), %rax
movq %rax, 0x100(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x10(%rdi)
movq %rdi, 0xf8(%rsp)
movups %xmm0, (%rdi)
leaq 0x1969c(%rip), %rsi     # 0x38ff1
leaq 0x298(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x20a1c
leaq 0x19665(%rip), %rcx     # 0x38fd1
leaq 0x278(%rsp), %rdi
leaq 0x298(%rsp), %rdx
movq %rbx, %rsi
xorl %r8d, %r8d
callq 0x20a82
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
andq $0x0, 0x50(%rsp)
movaps %xmm0, 0x130(%rsp)
andq $0x0, 0x140(%rsp)
leaq 0x19651(%rip), %rsi     # 0x38ffe
leaq 0x258(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x20a1c
leaq 0x1966c(%rip), %rsi     # 0x39030
leaq 0x238(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x20a1c
leaq 0x195cf(%rip), %rsi     # 0x38faa
leaq 0x218(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x20a1c
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0x278(%rsp), %rsi
callq 0x7590
xorl %ebp, %ebp
leaq 0x178(%rsp), %r15
leaq 0x20(%rsp), %rbx
movq %rsp, %r14
leaq 0x148(%rsp), %r12
pushq $0x18
popq %r13
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
leaq 0x258(%rsp), %rdx
xorl %ecx, %ecx
callq 0x20ad2
testb %al, %al
je 0x1fca2
movq 0x68(%rsp), %rax
subq 0x60(%rsp), %rax
je 0x204db
cmpq $0x90, %rax
jne 0x204db
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1071b
movq %r14, %rdi
leaq 0x1961c(%rip), %rsi     # 0x39096
movq %rbx, %rdx
callq 0x20aed
movq %r12, %rdi
movq %r14, %rsi
leaq 0x19683(%rip), %rdx     # 0x39112
callq 0x1063e
movq %r14, %rdi
callq 0x7898
movq %rbx, %rdi
callq 0x7898
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0xbdc2
leaq 0x130(%rsp), %rdi
movq %r12, %rsi
callq 0xbdc2
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %r8
subq %rcx, %r8
je 0x1faf5
movq %r8, %rax
cqto
idivq %r13
addq $-0x5, %rax
cmpq $-0x3, %rax
ja 0x1faf5
addq $0x18, %rcx
jmp 0x1fafc
addq %r8, %rcx
addq $-0x48, %rcx
movq %rcx, %rdx
callq 0x2c9e9
testq %rax, %rax
je 0x1fb49
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rcx
subq %rsi, %rcx
je 0x1fb30
movq %rcx, %rax
cqto
idivq %r13
addq $-0x5, %rax
cmpq $-0x3, %rax
ja 0x1fb30
addq $0x18, %rsi
jmp 0x1fb37
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r14, %rdi
callq 0x2ca74
movq %r14, %rdi
callq 0x32533
jmp 0x1fb8c
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rcx
subq %rsi, %rcx
je 0x1fb70
movq %rcx, %rax
cqto
idivq %r13
addq $-0x5, %rax
cmpq $-0x3, %rax
ja 0x1fb70
addq $0x18, %rsi
jmp 0x1fb77
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r14, %rdi
callq 0x2ca74
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1e154
movq %r14, %rdi
callq 0x7898
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %r8
subq %rcx, %r8
je 0x1fbc5
movq %r8, %rax
cqto
idivq %r13
addq $-0x6, %rax
cmpq $-0x4, %rax
ja 0x1fbc5
addq $0x30, %rcx
jmp 0x1fbcc
addq %r8, %rcx
addq $-0x48, %rcx
movq %rcx, %rdx
callq 0x2c9e9
testq %rax, %rax
je 0x1fc19
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rcx
subq %rsi, %rcx
je 0x1fc00
movq %rcx, %rax
cqto
idivq %r13
addq $-0x6, %rax
cmpq $-0x4, %rax
ja 0x1fc00
addq $0x30, %rsi
jmp 0x1fc07
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r14, %rdi
callq 0x2ca74
movq %r14, %rdi
callq 0x32533
jmp 0x1fc5c
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rcx
subq %rsi, %rcx
je 0x1fc40
movq %rcx, %rax
cqto
idivq %r13
addq $-0x6, %rax
cmpq $-0x4, %rax
ja 0x1fc40
addq $0x30, %rsi
jmp 0x1fc47
addq %rcx, %rsi
addq $-0x48, %rsi
movq %r14, %rdi
callq 0x2ca74
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x1e154
movq %r14, %rdi
callq 0x7898
movq %r14, %rdi
movq %r15, %rsi
leaq 0x238(%rsp), %rdx
movq %r12, %rcx
movl $0x400, %r8d            # imm = 0x400
callq 0x20b47
movq %r15, %rdi
movq %r14, %rsi
callq 0x7500
movq %r14, %rdi
callq 0x7898
incl %ebp
movq %r12, %rdi
callq 0x7898
jmp 0x1fa2b
leaq 0x178(%rsp), %rdi
leaq 0x218(%rsp), %rsi
xorl %edx, %edx
callq 0x20b97
testb %al, %al
jne 0x204f8
xorps %xmm0, %xmm0
movaps %xmm0, 0xc0(%rsp)
andq $0x0, 0xd0(%rsp)
movaps %xmm0, 0x110(%rsp)
andq $0x0, 0x120(%rsp)
movaps %xmm0, 0x80(%rsp)
andq $0x0, 0x90(%rsp)
movaps %xmm0, 0xa0(%rsp)
andq $0x0, 0xb0(%rsp)
movaps %xmm0, 0xe0(%rsp)
andq $0x0, 0xf0(%rsp)
leaq 0x193e0(%rip), %rsi     # 0x39100
leaq 0x148(%rsp), %rdi
pushq $0x10
popq %rdx
callq 0x20a1c
leaq 0x193dd(%rip), %rsi     # 0x39114
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xc0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x19249(%rip), %rsi     # 0x38fac
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x110(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
movq 0x48(%rsp), %rsi
addq $-0x20, %rsi
leaq 0xe0(%rsp), %rdi
callq 0xbdc2
movq 0x48(%rsp), %rdi
addq $-0x20, %rdi
leaq 0x148(%rsp), %rsi
xorl %edx, %edx
callq 0x20bae
testb %al, %al
je 0x1fe0c
leaq 0x19356(%rip), %rsi     # 0x39117
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x1932a(%rip), %rsi     # 0x39117
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
jmp 0x1fe5c
leaq 0x191d9(%rip), %rsi     # 0x38fec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x191ad(%rip), %rsi     # 0x38fec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x192b3(%rip), %rsi     # 0x3911e
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xc0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x19115(%rip), %rsi     # 0x38fac
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x110(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
movq 0x48(%rsp), %rsi
addq $-0x40, %rsi
leaq 0xe0(%rsp), %rdi
callq 0xbdc2
movq 0x48(%rsp), %rdi
addq $-0x40, %rdi
leaq 0x148(%rsp), %rsi
xorl %edx, %edx
callq 0x20bae
testb %al, %al
je 0x1ff40
leaq 0x19222(%rip), %rsi     # 0x39117
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x191f6(%rip), %rsi     # 0x39117
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
jmp 0x1ff90
leaq 0x190a5(%rip), %rsi     # 0x38fec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
leaq 0x19079(%rip), %rsi     # 0x38fec
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %rsp, %rsi
callq 0x1e154
movq %rsp, %rdi
callq 0x7898
pushq $0x2
popq %rbx
xorl %eax, %eax
leaq 0x19173(%rip), %r14     # 0x39117
leaq 0x20(%rsp), %r15
movq %rsp, %r13
testb $0x1, %al
jne 0x2024b
xorl %r12d, %r12d
movq $0x0, 0x108(%rsp)
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
sarq $0x5, %rax
cmpq %r12, %rax
jbe 0x2023b
movq %r12, %rbp
shlq $0x5, %rbp
movq 0x80(%rsp), %rdi
addq %rbp, %rdi
movq %r14, %rsi
callq 0x813d
testb %al, %al
je 0x20233
movq 0xa0(%rsp), %rdi
addq %rbp, %rdi
movq %r14, %rsi
callq 0x813d
testb %al, %al
je 0x20233
movq %r12, 0x168(%rsp)
xorl %r12d, %r12d
xorl %r14d, %r14d
movq 0x130(%rsp), %rdi
movq 0x138(%rsp), %rax
subq %rdi, %rax
sarq $0x5, %rax
cmpq %r14, %rax
jbe 0x20224
addq %r12, %rdi
movq 0xe0(%rsp), %rsi
addq %rbp, %rsi
callq 0xd5bf
testb %al, %al
je 0x20218
movq %r15, %rdi
movl %ebx, %esi
callq 0x1071b
movq %r13, %rdi
leaq 0x195c5(%rip), %rsi     # 0x3963f
movq %r15, %rdx
callq 0x20aed
leaq 0xc0(%rsp), %rdi
movq %r13, %rsi
callq 0x1e154
movq %r13, %rdi
callq 0x7898
movq %r15, %rdi
callq 0x7898
movq 0xc0(%rsp), %rsi
addq %rbp, %rsi
leaq 0x110(%rsp), %rdi
callq 0xbdc2
movq 0x40(%rsp), %rsi
addq %r12, %rsi
leaq 0xe0(%rsp), %rdi
callq 0xbdc2
movq 0x40(%rsp), %rdi
addq %r12, %rdi
leaq 0x148(%rsp), %rsi
xorl %edx, %edx
callq 0x20bae
testb %al, %al
je 0x20138
movq %r13, %rdi
leaq 0x19023(%rip), %rsi     # 0x39117
movq %r15, %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %r13, %rsi
callq 0x1e154
movq %r13, %rdi
callq 0x7898
movq %r13, %rdi
leaq 0x18ff9(%rip), %rsi     # 0x39117
movq %r15, %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %r13, %rsi
callq 0x1e154
jmp 0x20184
movq %r13, %rdi
leaq 0x18eaa(%rip), %rsi     # 0x38fec
movq %r15, %rdx
callq 0x8102
leaq 0x80(%rsp), %rdi
movq %r13, %rsi
callq 0x1e154
movq %r13, %rdi
callq 0x7898
movq %r13, %rdi
leaq 0x18e80(%rip), %rsi     # 0x38fec
movq %r15, %rdx
callq 0x8102
leaq 0xa0(%rsp), %rdi
movq %r13, %rsi
callq 0x1e154
movq %r13, %rdi
callq 0x7898
movq 0x80(%rsp), %rdi
addq %rbp, %rdi
leaq 0x18f79(%rip), %rsi     # 0x39117
callq 0x813d
testb %al, %al
je 0x201cd
movq %r15, %rdi
movl %ebx, %esi
callq 0x1071b
movq %r13, %rdi
leaq 0x19484(%rip), %rsi     # 0x3963f
movq %r15, %rdx
callq 0x20aed
movq 0x80(%rsp), %rdi
jmp 0x201f1
movq %r15, %rdi
movl %ebx, %esi
callq 0x1071b
movq %r13, %rdi
leaq 0x1945e(%rip), %rsi     # 0x3963f
movq %r15, %rdx
callq 0x20aed
movq 0xa0(%rsp), %rdi
addq %rbp, %rdi
movq %r13, %rsi
callq 0x7500
movq %r13, %rdi
callq 0x7898
movq %r15, %rdi
callq 0x7898
incl %ebx
movb $0x1, %al
movq %rax, 0x108(%rsp)
incq %r14
addq $0x20, %r12
jmp 0x2002b
leaq 0x18eec(%rip), %r14     # 0x39117
movq 0x168(%rsp), %r12
incq %r12
jmp 0x1ffc3
testb $0x1, 0x108(%rsp)
sete %al
jmp 0x1ffac
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
xorl %r13d, %r13d
movq %rsp, %r15
leaq 0x2b8(%rsp), %rbx
xorl %ebp, %ebp
movq 0xc8(%rsp), %rax
subq 0xc0(%rsp), %rax
sarq $0x5, %rax
cmpq %rbp, %rax
jbe 0x20402
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
andq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
movq 0xe0(%rsp), %rdi
addq %r13, %rdi
leaq 0x148(%rsp), %rsi
xorl %edx, %edx
callq 0x20bae
testb %al, %al
je 0x202c9
movq %r15, %rdi
leaq 0x18e5f(%rip), %rsi     # 0x39121
callq 0x7800
jmp 0x202ec
movq 0xe0(%rsp), %rsi
addq %r13, %rsi
movq %r15, %rdi
callq 0x7240
movq 0xf8(%rsp), %rdi
movq %r15, %rsi
callq 0xbdc2
movl $0x118, %edi            # imm = 0x118
callq 0x7410
movq %rax, %r12
movq 0xc0(%rsp), %rsi
addq %r13, %rsi
leaq 0x1f8(%rsp), %rdi
callq 0x7590
movq 0x110(%rsp), %rsi
addq %r13, %rsi
leaq 0x1d8(%rsp), %rdi
callq 0x7590
movq 0x80(%rsp), %rsi
addq %r13, %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x7590
movq 0xa0(%rsp), %rsi
addq %r13, %rsi
leaq 0x198(%rsp), %rdi
callq 0x7590
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7590
movb $0x1, %r14b
movq %r12, %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x1d8(%rsp), %rdx
leaq 0x1b8(%rsp), %rcx
leaq 0x198(%rsp), %r8
movq %rbx, %r9
callq 0x20bc6
movq %r12, 0x170(%rsp)
xorl %r14d, %r14d
movq 0x100(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x2cd14
movq %rbx, %rdi
callq 0x7898
leaq 0x198(%rsp), %rdi
callq 0x7898
leaq 0x1b8(%rsp), %rdi
callq 0x7898
leaq 0x1d8(%rsp), %rdi
callq 0x7898
leaq 0x1f8(%rsp), %rdi
callq 0x7898
movq %r15, %rdi
callq 0x7898
incq %rbp
addq $0x20, %r13
jmp 0x20269
leaq 0x20(%rsp), %rdi
callq 0xb80c
leaq 0x148(%rsp), %rdi
callq 0x20dac
leaq 0xe0(%rsp), %rdi
callq 0xb80c
leaq 0xa0(%rsp), %rdi
callq 0xb80c
leaq 0x80(%rsp), %rdi
callq 0xb80c
leaq 0x110(%rsp), %rdi
callq 0xb80c
leaq 0xc0(%rsp), %rdi
callq 0xb80c
leaq 0x178(%rsp), %rdi
callq 0x7898
leaq 0x60(%rsp), %rdi
callq 0x2acd8
leaq 0x218(%rsp), %rdi
callq 0x20dac
leaq 0x238(%rsp), %rdi
callq 0x20dac
leaq 0x258(%rsp), %rdi
callq 0x20dac
leaq 0x130(%rsp), %rdi
callq 0xb80c
leaq 0x40(%rsp), %rdi
callq 0xb80c
leaq 0x278(%rsp), %rdi
callq 0x7898
leaq 0x298(%rsp), %rdi
callq 0x20dac
addq $0x2d8, %rsp            # imm = 0x2D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18b7c(%rip), %rdi     # 0x3905e
leaq 0x18b87(%rip), %rsi     # 0x39070
leaq 0x18b93(%rip), %rcx     # 0x39083
pushq $0x49
popq %rdx
callq 0x72b0
movq 0x30ae9(%rip), %rdi     # 0x50fe8
leaq 0x18b9d(%rip), %rsi     # 0x390a3
callq 0x7400
movq %rax, %rdi
callq 0x71e0
movq 0x30ace(%rip), %rdi     # 0x50fe8
leaq 0x178(%rsp), %rsi
callq 0x73c0
movq %rax, %rdi
callq 0x71e0
pushq $0x1
popq %rdi
callq 0x74f0
jmp 0x206f9
jmp 0x206f9
jmp 0x2072b
jmp 0x2072b
jmp 0x206f9
jmp 0x206f9
jmp 0x2072b
jmp 0x2072b
jmp 0x206f9
jmp 0x206f9
jmp 0x2072b
jmp 0x2072b
jmp 0x206f9
jmp 0x206f9
jmp 0x2072b
jmp 0x2072b
jmp 0x206f9
jmp 0x2072b
jmp 0x206f9
jmp 0x2072b
jmp 0x206f9
jmp 0x2072b
jmp 0x206f9
jmp 0x2072b
movq %rax, %r15
jmp 0x2073b
movq %rax, %r15
jmp 0x20789
movq %rax, %r15
jmp 0x207a0
movq %rax, %r15
jmp 0x207ad
movq %rax, %r15
jmp 0x207ba
movq %rax, %r15
jmp 0x207de
movq %rax, %r15
jmp 0x207eb
jmp 0x20663
jmp 0x2072b
jmp 0x20603
jmp 0x206da
jmp 0x20603
jmp 0x206da
jmp 0x20603
jmp 0x206da
movq %rax, %r15
movq %rsp, %rdi
callq 0x7898
jmp 0x206dd
jmp 0x206da
movq %rax, %r15
movb $0x1, %r14b
jmp 0x2067b
movq %rax, %r15
movb $0x1, %r14b
jmp 0x20688
movq %rax, %r15
movb $0x1, %r14b
jmp 0x20695
movq %rax, %r15
movb $0x1, %r14b
jmp 0x206a2
movq %rax, %r15
jmp 0x206b4
jmp 0x206c3
jmp 0x206da
movq %rax, %r15
movq %rsp, %rdi
callq 0x7898
jmp 0x20657
movq %rax, %r15
leaq 0x20(%rsp), %rdi
jmp 0x206e5
jmp 0x20663
movq %rax, %r15
jmp 0x2077c
movq %rax, %r15
leaq 0x2b8(%rsp), %rdi
callq 0x7898
leaq 0x198(%rsp), %rdi
callq 0x7898
leaq 0x1b8(%rsp), %rdi
callq 0x7898
leaq 0x1d8(%rsp), %rdi
callq 0x7898
leaq 0x1f8(%rsp), %rdi
callq 0x7898
testb %r14b, %r14b
je 0x206c6
movl $0x118, %esi            # imm = 0x118
movq %r12, %rdi
callq 0x7420
jmp 0x206c6
movq %rax, %r15
movq %rsp, %rdi
callq 0x7898
leaq 0x20(%rsp), %rdi
callq 0xb80c
jmp 0x2072e
movq %rax, %r15
leaq 0x148(%rsp), %rdi
callq 0x7898
jmp 0x2077c
jmp 0x2072b
jmp 0x206f9
jmp 0x2072b
jmp 0x206f9
jmp 0x206f9
movq %rax, %r15
movq %rsp, %rdi
jmp 0x20722
jmp 0x2072b
jmp 0x2070d
jmp 0x2070d
jmp 0x2072b
jmp 0x2072b
jmp 0x2072b
movq %rax, %r15
jmp 0x2071d
movq %rax, %r15
movq %rsp, %rdi
callq 0x7898
leaq 0x20(%rsp), %rdi
callq 0x7898
jmp 0x2072e
jmp 0x2072b
movq %rax, %r15
leaq 0x148(%rsp), %rdi
callq 0x20dac
leaq 0xe0(%rsp), %rdi
callq 0xb80c
leaq 0xa0(%rsp), %rdi
callq 0xb80c
leaq 0x80(%rsp), %rdi
callq 0xb80c
leaq 0x110(%rsp), %rdi
callq 0xb80c
leaq 0xc0(%rsp), %rdi
callq 0xb80c
leaq 0x178(%rsp), %rdi
callq 0x7898
leaq 0x60(%rsp), %rdi
callq 0x2acd8
leaq 0x218(%rsp), %rdi
callq 0x20dac
leaq 0x238(%rsp), %rdi
callq 0x20dac
leaq 0x258(%rsp), %rdi
callq 0x20dac
leaq 0x130(%rsp), %rdi
callq 0xb80c
leaq 0x40(%rsp), %rdi
callq 0xb80c
leaq 0x278(%rsp), %rdi
callq 0x7898
leaq 0x298(%rsp), %rdi
callq 0x20dac
movq 0x100(%rsp), %rdi
callq 0x2cf4a
movq 0xf8(%rsp), %rdi
callq 0xb80c
movq %r15, %rdi
callq 0x7750
nop