// File: JameyWoo[P]re2graph/algorithms.cpp
// Function: nfa2dot(NFA, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void nfa2dot(NFA nfa, string dot_file) {
    // 合并起点终点相同的边, 用一个矩阵来存储
    vector<vector<vector<char>>> merge_jump(nfa.state_cnt, vector<vector<char>>(nfa.state_cnt, vector<char>()));
    for (int i = 0; i < nfa.state_cnt; ++i) {
        auto sm = nfa.jump[i];
        for (auto m : sm) {
            for (auto v : m.second) {
                merge_jump[i][v].push_back(m.first);
            }
        }
    }
    // cout << "dot_file: " << dot_file << endl;
    ofstream write;
    write.open(dot_file, ios::out | ios::trunc);
    // 写入文件开始
    write << "digraph {" << endl;
    // 写入状态
    for (int i = 0; i < nfa.state_cnt; ++i) {
        write << "\t" + to_string(i) + " [label=\"" + to_string(i) + "\"";
        if (count(nfa.end_states.begin(), nfa.end_states.end(), i)) {
            write << " color=red shape=doublecircle";  // 如果是终止状态, 那么结点为红色, 且为双圆型
        }
        write << "]" << endl;
    }
    // * 可以合并的边, 检测到连续3个或以上的 +1递增 的条件就合并, 用 - 连接
    for (int i = 0; i < nfa.state_cnt; ++i) {
        for (int j = 0; j < nfa.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
movq %rsp, %rbp
subq $0x5d0, %rsp            # imm = 0x5D0
movq %rdi, -0x568(%rbp)
movq %rsi, -0x560(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movslq 0x4(%rdi), %rax
movq %rax, -0x558(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rbp)
movq $0x0, -0x50(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x7210
leaq -0x61(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x151f0
movq -0x558(%rbp), %rsi
movq -0x550(%rbp), %rdx
movq -0x548(%rbp), %rcx
leaq -0x40(%rbp), %rdi
callq 0x15210
jmp 0xdd0b
leaq -0x75(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x15290
movq -0x558(%rbp), %rsi
movq -0x570(%rbp), %rcx
leaq -0x28(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x152b0
jmp 0xdd38
leaq -0x75(%rbp), %rdi
callq 0x15330
leaq -0x40(%rbp), %rdi
callq 0x15350
leaq -0x61(%rbp), %rdi
callq 0x153b0
leaq -0x60(%rbp), %rdi
callq 0x4dd0
movl $0x0, -0x7c(%rbp)
movq -0x568(%rbp), %rcx
movl -0x7c(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xdf71
movq -0x568(%rbp), %rdi
addq $0x58, %rdi
movslq -0x7c(%rbp), %rsi
callq 0x121f0
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x62e0
jmp 0xdd9b
leaq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x12850
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x12880
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x128b0
testb $0x1, %al
jne 0xddeb
jmp 0xdf46
leaq -0xc0(%rbp), %rdi
callq 0x128e0
movq %rax, %rsi
leaq -0xe8(%rbp), %rdi
callq 0x6ce0
jmp 0xde08
leaq -0xe8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
callq 0x12900
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
callq 0x12930
movq %rax, -0x100(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x12960
testb $0x1, %al
jne 0xde5c
jmp 0xdf29
leaq -0xf8(%rbp), %rdi
callq 0x129a0
movl (%rax), %eax
movl %eax, -0x104(%rbp)
movslq -0x7c(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x104(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
leaq -0xe8(%rbp), %rsi
callq 0x11f90
jmp 0xde9d
jmp 0xde9f
leaq -0xf8(%rbp), %rdi
callq 0x12aa0
jmp 0xde40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xded9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x75(%rbp), %rdi
callq 0x15330
leaq -0x40(%rbp), %rdi
callq 0x15350
leaq -0x61(%rbp), %rdi
callq 0x153b0
leaq -0x60(%rbp), %rdi
callq 0x4dd0
jmp 0xe9aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe9a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdf60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x6e80
jmp 0xdf60
leaq -0xe8(%rbp), %rdi
callq 0x6e80
leaq -0xc0(%rbp), %rdi
callq 0x12ac0
jmp 0xddcf
leaq -0xb0(%rbp), %rdi
callq 0x6f60
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0xdd63
leaq -0xb0(%rbp), %rdi
callq 0x6f60
jmp 0xe9a1
leaq -0x308(%rbp), %rdi
callq 0x34b0
jmp 0xdf7f
movl $0x10, %edi
movl $0x20, %esi
callq 0x14600
movl %eax, -0x574(%rbp)
jmp 0xdf96
movl -0x574(%rbp), %edx
movq -0x560(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x3140
jmp 0xdfb1
leaq 0x1f2b6(%rip), %rsi     # 0x2d26e
leaq -0x308(%rbp), %rdi
callq 0x32c0
movq %rax, -0x580(%rbp)
jmp 0xdfcd
movq -0x580(%rbp), %rdi
movq 0x34fd5(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xdfe2
movl $0x0, -0x30c(%rbp)
movq -0x568(%rbp), %rcx
movl -0x30c(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xe270
movl -0x30c(%rbp), %esi
leaq -0x3b0(%rbp), %rdi
callq 0x14790
jmp 0xe016
leaq 0x1f25b(%rip), %rsi     # 0x2d278
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rdx
callq 0x15410
jmp 0xe032
leaq 0x1f241(%rip), %rdx     # 0x2d27a
leaq -0x370(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x141b0
jmp 0xe04e
movl -0x30c(%rbp), %esi
leaq -0x3d0(%rbp), %rdi
callq 0x14790
jmp 0xe062
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
callq 0x14670
jmp 0xe07e
leaq 0x1f1fd(%rip), %rdx     # 0x2d282
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x141b0
jmp 0xe09a
leaq -0x308(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x32b0
jmp 0xe0af
leaq -0x330(%rbp), %rdi
callq 0x31c0
leaq -0x350(%rbp), %rdi
callq 0x31c0
leaq -0x3d0(%rbp), %rdi
callq 0x31c0
leaq -0x370(%rbp), %rdi
callq 0x31c0
leaq -0x390(%rbp), %rdi
callq 0x31c0
leaq -0x3b0(%rbp), %rdi
callq 0x31c0
movq -0x568(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x590(%rbp)
callq 0x12900
movq -0x590(%rbp), %rdi
movq %rax, -0x3d8(%rbp)
callq 0x12930
movq %rax, -0x3e0(%rbp)
movq -0x3d8(%rbp), %rdi
movq -0x3e0(%rbp), %rsi
leaq -0x30c(%rbp), %rdx
callq 0x13980
movq %rax, -0x588(%rbp)
jmp 0xe14b
movq -0x588(%rbp), %rax
cmpq $0x0, %rax
je 0xe229
leaq 0x1f121(%rip), %rsi     # 0x2d284
leaq -0x308(%rbp), %rdi
callq 0x32c0
jmp 0xe171
jmp 0xe229
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe218
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe20c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe1f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe1e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x31c0
leaq -0x350(%rbp), %rdi
callq 0x31c0
leaq -0x3d0(%rbp), %rdi
callq 0x31c0
leaq -0x370(%rbp), %rdi
callq 0x31c0
leaq -0x390(%rbp), %rdi
callq 0x31c0
leaq -0x3b0(%rbp), %rdi
callq 0x31c0
jmp 0xe995
leaq 0x1f0af(%rip), %rsi     # 0x2d2df
leaq -0x308(%rbp), %rdi
callq 0x32c0
movq %rax, -0x598(%rbp)
jmp 0xe245
movq -0x598(%rbp), %rdi
movq 0x34d5d(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xe25a
jmp 0xe25c
movl -0x30c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30c(%rbp)
jmp 0xdfec
movl $0x0, -0x3e4(%rbp)
movq -0x568(%rbp), %rcx
movl -0x3e4(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xe962
movl $0x0, -0x3e8(%rbp)
movq -0x568(%rbp), %rcx
movl -0x3e8(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xe94c
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x4e30
cmpq $0x0, %rax
je 0xe936
leaq -0x409(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x34f0
movq -0x5a0(%rbp), %rdx
leaq 0x1ef80(%rip), %rsi     # 0x2d282
leaq -0x408(%rbp), %rdi
callq 0x46f0
jmp 0xe310
leaq -0x409(%rbp), %rdi
callq 0x3330
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15460
movsbl (%rax), %esi
leaq -0x408(%rbp), %rdi
callq 0x31d0
jmp 0xe358
leaq -0x408(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xe36b
movl $0x1, -0x410(%rbp)
movl $0x1, -0x414(%rbp)
movslq -0x414(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x4e30
movq %rax, %rcx
movq -0x5a8(%rbp), %rax
cmpq %rcx, %rax
jae 0xe5ac
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movslq -0x414(%rbp), %rsi
callq 0x15460
movsbl (%rax), %eax
movl %eax, -0x5ac(%rbp)
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movl -0x414(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x15460
movq %rax, %rcx
movl -0x5ac(%rbp), %eax
movsbl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0xe486
movl -0x410(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x410(%rbp)
jmp 0xe544
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x409(%rbp), %rdi
callq 0x3330
jmp 0xe995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe928
cmpl $0x3, -0x410(%rbp)
jl 0xe542
movl $0x0, -0x418(%rbp)
movl -0x418(%rbp), %eax
movl -0x410(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xe4cf
leaq -0x408(%rbp), %rdi
callq 0x33a0
movl -0x418(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x418(%rbp)
jmp 0xe49d
leaq -0x408(%rbp), %rdi
movl $0x2d, %esi
callq 0x31d0
jmp 0xe4e2
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movl -0x414(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15460
movsbl (%rax), %esi
leaq -0x408(%rbp), %rdi
callq 0x31d0
jmp 0xe525
leaq -0x408(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xe538
movl $0x1, -0x410(%rbp)
jmp 0xe544
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movslq -0x414(%rbp), %rsi
callq 0x15460
movsbl (%rax), %esi
leaq -0x408(%rbp), %rdi
callq 0x31d0
jmp 0xe583
leaq -0x408(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xe596
jmp 0xe598
movl -0x414(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x414(%rbp)
jmp 0xe37f
cmpl $0x3, -0x410(%rbp)
jl 0xe65d
movl $0x0, -0x41c(%rbp)
movl -0x41c(%rbp), %eax
movl -0x410(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xe5f5
leaq -0x408(%rbp), %rdi
callq 0x33a0
movl -0x41c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x41c(%rbp)
jmp 0xe5c3
leaq -0x408(%rbp), %rdi
movl $0x2d, %esi
callq 0x31d0
jmp 0xe608
movslq -0x3e4(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3e8(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x15480
movsbl (%rax), %esi
leaq -0x408(%rbp), %rdi
callq 0x31d0
jmp 0xe640
leaq -0x408(%rbp), %rdi
movl $0x2c, %esi
callq 0x3280
jmp 0xe653
movl $0x1, -0x410(%rbp)
leaq -0x408(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0x3180
movq %rax, -0x438(%rbp)
leaq -0x438(%rbp), %rdi
movl $0x1, %esi
callq 0x154c0
movq %rax, -0x430(%rbp)
leaq -0x428(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x15500
movq -0x5c0(%rbp), %rdi
movq -0x428(%rbp), %rsi
callq 0x33c0
movq %rax, -0x5b8(%rbp)
jmp 0xe6be
movq -0x5b8(%rbp), %rax
movq %rax, -0x440(%rbp)
leaq -0x408(%rbp), %rdi
movl $0x22, %esi
callq 0x31d0
jmp 0xe6df
movl -0x3e4(%rbp), %esi
leaq -0x520(%rbp), %rdi
callq 0x14790
jmp 0xe6f3
leaq 0x1eb7e(%rip), %rsi     # 0x2d278
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rdx
callq 0x15410
jmp 0xe70f
leaq 0x1eb8c(%rip), %rdx     # 0x2d2a2
leaq -0x4e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x141b0
jmp 0xe72b
movl -0x3e8(%rbp), %esi
leaq -0x540(%rbp), %rdi
callq 0x14790
jmp 0xe73f
leaq -0x4c0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
leaq -0x540(%rbp), %rdx
callq 0x14670
jmp 0xe75b
leaq 0x1eb45(%rip), %rdx     # 0x2d2a7
leaq -0x4a0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x141b0
jmp 0xe777
leaq -0x480(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
leaq -0x408(%rbp), %rdx
callq 0x14200
jmp 0xe793
leaq 0x1eb45(%rip), %rdx     # 0x2d2df
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x141b0
jmp 0xe7af
leaq -0x308(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x32b0
movq %rax, -0x5c8(%rbp)
jmp 0xe7cb
movq -0x5c8(%rbp), %rdi
movq 0x347d7(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xe7e0
leaq -0x460(%rbp), %rdi
callq 0x31c0
leaq -0x480(%rbp), %rdi
callq 0x31c0
leaq -0x4a0(%rbp), %rdi
callq 0x31c0
leaq -0x4c0(%rbp), %rdi
callq 0x31c0
leaq -0x540(%rbp), %rdi
callq 0x31c0
leaq -0x4e0(%rbp), %rdi
callq 0x31c0
leaq -0x500(%rbp), %rdi
callq 0x31c0
leaq -0x520(%rbp), %rdi
callq 0x31c0
leaq -0x408(%rbp), %rdi
callq 0x31c0
jmp 0xe936
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe91c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe910
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xe8d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x31c0
leaq -0x480(%rbp), %rdi
callq 0x31c0
leaq -0x4a0(%rbp), %rdi
callq 0x31c0
leaq -0x4c0(%rbp), %rdi
callq 0x31c0
leaq -0x540(%rbp), %rdi
callq 0x31c0
leaq -0x4e0(%rbp), %rdi
callq 0x31c0
leaq -0x500(%rbp), %rdi
callq 0x31c0
leaq -0x520(%rbp), %rdi
callq 0x31c0
leaq -0x408(%rbp), %rdi
callq 0x31c0
jmp 0xe995
jmp 0xe938
movl -0x3e8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3e8(%rbp)
jmp 0xe29a
jmp 0xe94e
movl -0x3e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3e4(%rbp)
jmp 0xe27a
leaq 0x1e903(%rip), %rsi     # 0x2d26c
leaq -0x308(%rbp), %rdi
callq 0x32c0
jmp 0xe977
leaq -0x308(%rbp), %rdi
callq 0x3440
leaq -0x28(%rbp), %rdi
callq 0x15540
addq $0x5d0, %rsp            # imm = 0x5D0
popq %rbp
retq
leaq -0x308(%rbp), %rdi
callq 0x3440
leaq -0x28(%rbp), %rdi
callq 0x15540
movq -0x70(%rbp), %rdi
callq 0x34e0
nopw %cs:(%rax,%rax)