// File: /workspace/github_cpp_makefile_star2_O1/JameyWoo[P]re2graph/algorithms.cpp
// Function: dfa2dot(DFA, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void dfa2dot(DFA dfa, string dot_file) {
    // 合并起点终点相同的边, 用一个矩阵来存储
    vector<vector<vector<char>>> merge_jump(dfa.state_cnt, vector<vector<char>>(dfa.state_cnt, vector<char>()));
    for (int i = 0; i < dfa.state_cnt; ++i) {
        auto sm = dfa.jump_map[i];
        for (auto m : sm) {
            merge_jump[i][m.second].push_back(m.first);
        }
    }
    ofstream write;
    write.open(dot_file, ios::out | ios::trunc);
    // 写入文件开始
    write << "digraph {" << endl;
    // 写入状态
    for (int i = 0; i < dfa.state_cnt; ++i) {
        write << "\t" + to_string(i) + " [label=\"" + to_string(i) + "\"";
        if (count(dfa.end_states.begin(), dfa.end_states.end(), i)) {
            write << " color=red shape=doublecircle";  // 如果是终止状态, 那么结点为红色, 且为双圆型
        }
        write << "]" << endl;
    }
    // * 可以合并的边, 检测到连续3个或以上的 +1递增 的条件就合并, 用 - 连接
    for (int i = 0; i < dfa.state_cnt; ++i) {
        for (int j = 0; j < dfa.state_cnt; ++j) {
            if (merge_jump[i][j].size()) {
                string cond = "\"";
                cond += merge_jump[i][j][0];
                cond += ',';
                int ins = 1;
                for (int k = 1; k < merge_jump[i][j].size(); ++k) {
                    if (merge_jump[i][j][k] == merge_jump[i][j][k - 1] + 1) {
                        ins += 1;
                    } else {
                        if (ins >= 3) {
                            for (int l = 0; l < 2 * ins - 1; ++l) {
                                cond.pop_back();
                            }
                            cond += '-';
                            cond += merge_jump[i][j][k - 1];
                            cond += ',';
                            ins = 1;
                        }
                    }
                    cond += merge_jump[i][j][k];
                    cond += ',';
                    // cout << "cond: " << cond << endl;
                }
                if (ins >= 3) {
                    for (int l = 0; l < 2 * ins - 1; ++l) {
                        cond.pop_back();
                    }
                    cond += '-';
                    cond += merge_jump[i][j].back();
                    cond.push_back(',');
                    ins = 1;
                }
                cond.erase(cond.end() - 1);
                cond += '"';
                // cout << "cond = " << cond << endl;
                write << "\t" + to_string(i) + " -> " + to_string(j) + " [label=" + cond + "]" << endl;
            }
        }
    }
    write << "}";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x348, %rsp            # imm = 0x348
movq %rsi, %rbx
movq %rdi, %r14
movslq 0x4(%rdi), %r15
xorps %xmm0, %xmm0
movq %rsp, %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x148(%rsp), %rdi
leaq 0x70(%rsp), %rcx
movq %r15, %rsi
callq 0xe0ea
leaq 0xf0(%rsp), %rdi
leaq 0x148(%rsp), %rdx
leaq 0x48(%rsp), %rcx
movq %r15, %rsi
callq 0xe182
movq %rbx, 0x68(%rsp)
leaq 0x148(%rsp), %rdi
callq 0xe21a
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x9b85
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2200
cmpl $0x0, 0x4(%r14)
movq %r14, 0x20(%rsp)
jle 0x9c43
leaq 0x150(%rsp), %rbx
xorl %ebp, %ebp
leaq 0x148(%rsp), %r15
movq %rsp, %r12
movq %r14, %rax
leaq (,%rbp,2), %r14
addq %rbp, %r14
movq %r14, %rsi
shlq $0x4, %rsi
addq 0x58(%rax), %rsi
movq %r15, %rdi
callq 0x42b8
movq 0x160(%rsp), %r13
cmpq %rbx, %r13
je 0x9c26
movq 0x20(%r13), %rax
movq %rax, (%rsp)
movq 0xf0(%rsp), %rax
movslq 0x4(%rsp), %rcx
movq (%rax,%r14,8), %rax
leaq (%rcx,%rcx,2), %rcx
leaq (%rax,%rcx,8), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x9c0e
movb (%rsp), %al
movb %al, (%rsi)
incq 0x8(%rdi)
jmp 0x9c16
movq %r12, %rdx
callq 0xee8c
movq %r13, %rdi
callq 0x2160
movq %rax, %r13
cmpq %rbx, %rax
jne 0x9bd8
movq %r15, %rdi
callq 0x448c
incq %rbp
movq 0x20(%rsp), %r14
movslq 0x4(%r14), %rax
cmpq %rax, %rbp
jl 0x9baa
leaq 0x148(%rsp), %rdi
callq 0x2320
leaq 0x148(%rsp), %rdi
movq 0x68(%rsp), %rsi
movl $0x30, %edx
callq 0x20e0
leaq 0x9578(%rip), %rsi      # 0x131e6
leaq 0x148(%rsp), %r14
movl $0x9, %edx
movq %r14, %rdi
callq 0x2240
movq 0x148(%rsp), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21e0
movsbl %al, %esi
leaq 0x148(%rsp), %rbp
movq %rbp, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq 0x20(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jle 0xa111
leaq 0x10(%rsp), %r12
xorl %r15d, %r15d
leaq 0x90(%rsp), %rbx
movq %rbp, %r14
movq %rbx, %rbp
movl $0x1, %r13d
cmpl $0xa, %r15d
jb 0x9d2f
movl $0x4, %r13d
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x9d26
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x9d2c
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x9d2f
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r13d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x9cf6
addl $-0x3, %r13d
jmp 0x9d2f
addl $-0x2, %r13d
jmp 0x9d2f
decl %r13d
movl %r13d, %esi
leaq 0xa0(%rsp), %rax
movq %rax, 0x90(%rsp)
movq %rbp, %rbx
movq %rbp, %rdi
movl $0x2d, %edx
callq 0x2260
movq 0x90(%rsp), %rdi
movl %r13d, %esi
movl %r15d, %edx
callq 0xea40
movl $0x1, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x9477(%rip), %rcx      # 0x131f0
callq 0x2220
leaq 0xc0(%rsp), %rsi
movq %rsi, 0xb0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movl $0xd1b71759, %ebx       # imm = 0xD1B71759
je 0x9db7
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x9dbd
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xb8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
leaq 0x940b(%rip), %rsi      # 0x131f2
callq 0x2380
leaq 0x58(%rsp), %rsi
movq %rsi, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9e14
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0x9e1a
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r13d
cmpl $0xa, %r15d
jb 0x9e80
movl $0x4, %r13d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x9e77
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x9e7d
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x9e80
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r13d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x9e47
addl $-0x3, %r13d
jmp 0x9e80
addl $-0x2, %r13d
jmp 0x9e80
decl %r13d
movl %r13d, %esi
leaq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
movl $0x2d, %edx
callq 0x2260
movq 0x28(%rsp), %rdi
movl %r13d, %esi
movl %r15d, %edx
callq 0xea40
movq 0x48(%rsp), %rcx
movl $0xf, %esi
leaq 0x58(%rsp), %rax
cmpq %rax, %rcx
je 0x9ec5
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %r8
movq 0x30(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
movq %rbp, %rbx
leaq 0x80(%rsp), %r13
movq %r14, %rbp
jbe 0x9f01
movl $0xf, %esi
leaq 0x38(%rsp), %rdi
cmpq %rdi, 0x28(%rsp)
je 0x9efc
movq 0x38(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x9f12
movq 0x28(%rsp), %rsi
leaq 0x48(%rsp), %rdi
callq 0x2090
jmp 0x9f20
leaq 0x28(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2220
movq %r13, 0x70(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x9f43
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
jmp 0x9f4b
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x70(%rsp), %rdi
leaq 0x9286(%rip), %rsi      # 0x131fa
callq 0x2380
movq %r12, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9f9a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x9fa2
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbp, %rdi
callq 0x2240
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x9fe1
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x70(%rsp), %rdi
cmpq %r13, %rdi
je 0x9ffb
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa017
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa033
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xa058
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xa07d
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x20(%rsp), %rcx
movq 0x40(%rcx), %rax
movq 0x48(%rcx), %rcx
cmpq %rcx, %rax
je 0xa0bf
xorl %edx, %edx
xorl %esi, %esi
cmpl %r15d, (%rax)
sete %sil
addq %rsi, %rdx
addq $0x4, %rax
cmpq %rcx, %rax
jne 0xa091
testq %rdx, %rdx
je 0xa0bf
movl $0x1d, %edx
movq %rbp, %rdi
leaq 0x9142(%rip), %rsi      # 0x131fc
callq 0x2240
movl $0x1, %edx
movq %rbp, %rdi
leaq 0x9189(%rip), %rsi      # 0x13257
callq 0x2240
movq 0x148(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x21e0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
incl %r15d
movq 0x20(%rsp), %rax
cmpl 0x4(%rax), %r15d
jl 0x9cd6
movq 0x20(%rsp), %rbx
cmpl $0x0, 0x4(%rbx)
jle 0xa885
movq $0x0, 0x68(%rsp)
movq %rsp, %r13
cmpl $0x0, 0x4(%rbx)
jle 0xa86b
movq 0x68(%rsp), %rax
leaq (%rax,%rax,2), %rbp
xorl %r15d, %r15d
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rax
leaq (%r15,%r15,2), %r12
movq 0x8(%rax,%r12,8), %rcx
cmpq (%rax,%r12,8), %rcx
je 0xa85b
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r13, %rdi
leaq 0x9086(%rip), %rsi      # 0x131fa
leaq 0x9080(%rip), %rdx      # 0x131fb
callq 0x4572
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r12,8), %rax
movsbl (%rax), %esi
movq %r13, %rdi
callq 0x21c0
movq %r13, %rdi
movl $0x2c, %esi
callq 0x21c0
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rcx
movq (%rcx,%r12,8), %rax
movq 0x8(%rcx,%r12,8), %rcx
subq %rax, %rcx
movl $0x1, %ebx
cmpq $0x2, %rcx
jb 0xa29d
movl $0x1, %ebx
movl $0x1, %r14d
movsbl (%rax,%r14), %ecx
movsbl -0x1(%rax,%r14), %eax
incl %eax
cmpl %ecx, %eax
jne 0xa1ef
incl %ebx
jmp 0xa24f
cmpl $0x3, %ebx
jl 0xa24f
leal -0x1(,%rbx,2), %ebx
cmpl $0x2, %ebx
movl $0x1, %eax
cmovll %eax, %ebx
movq %r13, %rdi
callq 0x2280
decl %ebx
jne 0xa206
movq %r13, %rdi
movl $0x2d, %esi
callq 0x21c0
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r12,8), %rax
movsbl -0x1(%rax,%r14), %esi
movq %r13, %rdi
callq 0x21c0
movl $0x1, %ebx
movq %r13, %rdi
movl $0x2c, %esi
callq 0x21c0
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r12,8), %rax
movsbl (%rax,%r14), %esi
movq %r13, %rdi
callq 0x21c0
movq %r13, %rdi
movl $0x2c, %esi
callq 0x21c0
incq %r14
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rcx
movq (%rcx,%r12,8), %rax
movq 0x8(%rcx,%r12,8), %rcx
subq %rax, %rcx
cmpq %r14, %rcx
ja 0xa1da
cmpl $0x3, %ebx
leaq 0x128(%rsp), %r14
jl 0xa2ff
leal -0x1(,%rbx,2), %ebx
cmpl $0x2, %ebx
movl $0x1, %eax
cmovll %eax, %ebx
movq %r13, %rdi
callq 0x2280
decl %ebx
jne 0xa2bc
movq %r13, %rdi
movl $0x2d, %esi
callq 0x21c0
movq 0xf0(%rsp), %rax
movq (%rax,%rbp,8), %rax
movq 0x8(%rax,%r12,8), %rax
movsbl -0x1(%rax), %esi
movq %r13, %rdi
callq 0x21c0
movq %r13, %rdi
movl $0x2c, %esi
callq 0x21c0
movq 0x8(%rsp), %rsi
decq %rsi
movl $0x1, %edx
movq %r13, %rdi
callq 0x2270
movq %r13, %rdi
movl $0x22, %esi
callq 0x21c0
movl $0x1, %r12d
movq 0x68(%rsp), %rbx
cmpq $0xa, %rbx
jb 0xa378
movl $0x4, %r12d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0xa36f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xa375
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xa378
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xa33a
addl $-0x3, %r12d
jmp 0xa378
addl $-0x2, %r12d
jmp 0xa378
decl %r12d
movl %r12d, %esi
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
movq %r14, %rdi
movl $0x2d, %edx
callq 0x2260
movq 0x128(%rsp), %rdi
movl %r12d, %esi
movl %ebx, %edx
callq 0xea40
movl $0x1, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x8e32(%rip), %rcx      # 0x131f0
callq 0x2220
leaq 0x118(%rsp), %rsi
movq %rsi, 0x108(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa3f7
movq %rdx, 0x108(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x118(%rsp)
jmp 0xa3fd
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x20(%rsp), %rbx
leaq 0x80(%rsp), %r14
movq 0x8(%rax), %rdx
movq %rdx, 0x110(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x108(%rsp), %rdi
leaq 0x8de6(%rip), %rsi      # 0x1321a
callq 0x2380
leaq 0x38(%rsp), %rsi
movq %rsi, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa461
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0xa467
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r12d
cmpq $0xa, %r15
jb 0xa4d2
movl $0x4, %r12d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0xa4c9
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xa4cf
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xa4d2
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xa494
addl $-0x3, %r12d
jmp 0xa4d2
addl $-0x2, %r12d
jmp 0xa4d2
decl %r12d
movl %r12d, %esi
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0xd0(%rsp), %rdi
movl $0x2d, %edx
callq 0x2260
movq 0xd0(%rsp), %rdi
movl %r12d, %esi
movl %r15d, %edx
callq 0xea40
movq 0x28(%rsp), %rcx
movl $0xf, %esi
leaq 0x38(%rsp), %rax
cmpq %rax, %rcx
je 0xa523
movq 0x38(%rsp), %rsi
movq 0x30(%rsp), %r8
movq 0xd8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0xa55d
movl $0xf, %esi
leaq 0xe0(%rsp), %rdi
cmpq %rdi, 0xd0(%rsp)
je 0xa558
movq 0xe0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xa571
movq 0xd0(%rsp), %rsi
leaq 0x28(%rsp), %rdi
callq 0x2090
jmp 0xa582
leaq 0xd0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2220
leaq 0xa0(%rsp), %rsi
movq %rsi, 0x90(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xa5b3
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0xa5b9
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x90(%rsp), %rdi
leaq 0x8c37(%rip), %rsi      # 0x1321f
callq 0x2380
leaq 0xc0(%rsp), %rsi
movq %rsi, 0xb0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa621
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0xa627
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xb8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
leaq 0xb0(%rsp), %rdi
callq 0x2090
leaq 0x58(%rsp), %rsi
movq %rsi, 0x48(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa680
movq %rdx, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0xa686
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x48(%rsp), %rdi
leaq 0x8bad(%rip), %rsi      # 0x13257
callq 0x2380
movq %r14, 0x70(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa6d5
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
jmp 0xa6dc
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq 0x148(%rsp), %rdi
callq 0x2240
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21e0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq 0x70(%rsp), %rdi
cmpq %r14, %rdi
je 0xa74f
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa76b
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xa790
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xa7b5
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xa7da
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa7f6
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xa81b
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xa840
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2200
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xa85b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2200
incq %r15
movslq 0x4(%rbx), %rax
cmpq %rax, %r15
jl 0xa142
movq 0x68(%rsp), %rdx
incq %rdx
movslq 0x4(%rbx), %rax
movq %rdx, 0x68(%rsp)
cmpq %rax, %rdx
jl 0xa12c
leaq 0x8958(%rip), %rsi      # 0x131e4
leaq 0x148(%rsp), %rdi
movl $0x1, %edx
callq 0x2240
movq 0xe71b(%rip), %rax      # 0x18fc0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x150(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x148(%rsp,%rcx)
callq 0x21a0
leaq 0x240(%rsp), %rdi
callq 0x20a0
leaq 0xf0(%rsp), %rdi
callq 0xe268
addq $0x348, %rsp            # imm = 0x348
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xaa0c
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0xe21a
jmp 0xa90f
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xabec
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x2200
jmp 0xabec
jmp 0xaa67
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0xa951
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xa951
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xa978
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xa978
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa999
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xa999
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa9ba
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xa9ba
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xa9e4
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xa9e4
movq %rax, %rbx
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xaba7
movq 0xa0(%rsp), %rsi
jmp 0xab9f
jmp 0xaa67
movq %rax, %rbx
jmp 0xabdf
jmp 0xaa67
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0x448c
jmp 0xabdf
jmp 0xab89
movq %rax, %rbx
jmp 0xab21
movq %rax, %rbx
jmp 0xaafc
jmp 0xab89
movq %rax, %rbx
jmp 0xaad7
movq %rax, %rbx
jmp 0xab62
movq %rax, %rbx
jmp 0xaab2
movq %rax, %rbx
jmp 0xab3d
movq %rax, %rbx
jmp 0xaa96
movq %rax, %rbx
jmp 0xaba7
jmp 0xab89
jmp 0xab89
movq %rax, %rbx
movq 0x70(%rsp), %rdi
cmpq %r14, %rdi
je 0xaa96
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xaab2
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xaad7
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xaafc
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xab21
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xab3d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xab62
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xab8c
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2200
jmp 0xab8c
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xaba7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x2200
movq 0xe412(%rip), %rax      # 0x18fc0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x150(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x148(%rsp,%rcx)
callq 0x21a0
leaq 0x240(%rsp), %rdi
callq 0x20a0
leaq 0xf0(%rsp), %rdi
callq 0xe268
movq %rbx, %rdi
callq 0x2350