// File: 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
movq %rsp, %rbp
subq $0x590, %rsp            # imm = 0x590
movq %rdi, -0x530(%rbp)
movq %rsi, -0x528(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movslq 0x4(%rdi), %rax
movq %rax, -0x520(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rbp)
movq $0x0, -0x50(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x7210
leaq -0x61(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x151f0
movq -0x520(%rbp), %rsi
movq -0x518(%rbp), %rdx
movq -0x510(%rbp), %rcx
leaq -0x40(%rbp), %rdi
callq 0x15210
jmp 0xedbb
leaq -0x75(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x15290
movq -0x520(%rbp), %rsi
movq -0x538(%rbp), %rcx
leaq -0x28(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x152b0
jmp 0xede8
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 -0x530(%rbp), %rcx
movl -0x7c(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xef79
movq -0x530(%rbp), %rdi
addq $0x58, %rdi
movslq -0x7c(%rbp), %rsi
callq 0x13320
movq %rax, %rsi
leaq -0xb0(%rbp), %rdi
callq 0x7af0
jmp 0xee4b
leaq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x13f70
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x13fa0
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x13fd0
testb $0x1, %al
jne 0xee9b
jmp 0xef5f
leaq -0xc0(%rbp), %rdi
callq 0x14000
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movslq -0x7c(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0xcc(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
leaq -0xd0(%rbp), %rsi
callq 0x11f90
jmp 0xeede
jmp 0xeee0
leaq -0xc0(%rbp), %rdi
callq 0x14020
jmp 0xee7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xef1a
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 0xf9b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf9a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x8600
jmp 0xf9a9
leaq -0xb0(%rbp), %rdi
callq 0x8600
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0xee13
leaq -0x2d0(%rbp), %rdi
callq 0x34b0
jmp 0xef87
movl $0x10, %edi
movl $0x20, %esi
callq 0x14600
movl %eax, -0x53c(%rbp)
jmp 0xef9e
movl -0x53c(%rbp), %edx
movq -0x528(%rbp), %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x3140
jmp 0xefb9
leaq 0x1e2ae(%rip), %rsi     # 0x2d26e
leaq -0x2d0(%rbp), %rdi
callq 0x32c0
movq %rax, -0x548(%rbp)
jmp 0xefd5
movq -0x548(%rbp), %rdi
movq 0x33fcd(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xefea
movl $0x0, -0x2d4(%rbp)
movq -0x530(%rbp), %rcx
movl -0x2d4(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xf278
movl -0x2d4(%rbp), %esi
leaq -0x378(%rbp), %rdi
callq 0x14790
jmp 0xf01e
leaq 0x1e253(%rip), %rsi     # 0x2d278
leaq -0x358(%rbp), %rdi
leaq -0x378(%rbp), %rdx
callq 0x15410
jmp 0xf03a
leaq 0x1e239(%rip), %rdx     # 0x2d27a
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x141b0
jmp 0xf056
movl -0x2d4(%rbp), %esi
leaq -0x398(%rbp), %rdi
callq 0x14790
jmp 0xf06a
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rsi
leaq -0x398(%rbp), %rdx
callq 0x14670
jmp 0xf086
leaq 0x1e1f5(%rip), %rdx     # 0x2d282
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x141b0
jmp 0xf0a2
leaq -0x2d0(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x32b0
jmp 0xf0b7
leaq -0x2f8(%rbp), %rdi
callq 0x31c0
leaq -0x318(%rbp), %rdi
callq 0x31c0
leaq -0x398(%rbp), %rdi
callq 0x31c0
leaq -0x338(%rbp), %rdi
callq 0x31c0
leaq -0x358(%rbp), %rdi
callq 0x31c0
leaq -0x378(%rbp), %rdi
callq 0x31c0
movq -0x530(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x558(%rbp)
callq 0x12900
movq -0x558(%rbp), %rdi
movq %rax, -0x3a0(%rbp)
callq 0x12930
movq %rax, -0x3a8(%rbp)
movq -0x3a0(%rbp), %rdi
movq -0x3a8(%rbp), %rsi
leaq -0x2d4(%rbp), %rdx
callq 0x13980
movq %rax, -0x550(%rbp)
jmp 0xf153
movq -0x550(%rbp), %rax
cmpq $0x0, %rax
je 0xf231
leaq 0x1e119(%rip), %rsi     # 0x2d284
leaq -0x2d0(%rbp), %rdi
callq 0x32c0
jmp 0xf179
jmp 0xf231
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf99d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf214
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf208
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf1fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf1f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x31c0
leaq -0x318(%rbp), %rdi
callq 0x31c0
leaq -0x398(%rbp), %rdi
callq 0x31c0
leaq -0x338(%rbp), %rdi
callq 0x31c0
leaq -0x358(%rbp), %rdi
callq 0x31c0
leaq -0x378(%rbp), %rdi
callq 0x31c0
jmp 0xf99d
leaq 0x1e0a7(%rip), %rsi     # 0x2d2df
leaq -0x2d0(%rbp), %rdi
callq 0x32c0
movq %rax, -0x560(%rbp)
jmp 0xf24d
movq -0x560(%rbp), %rdi
movq 0x33d55(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xf262
jmp 0xf264
movl -0x2d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2d4(%rbp)
jmp 0xeff4
movl $0x0, -0x3ac(%rbp)
movq -0x530(%rbp), %rcx
movl -0x3ac(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xf96a
movl $0x0, -0x3b0(%rbp)
movq -0x530(%rbp), %rcx
movl -0x3b0(%rbp), %eax
cmpl 0x4(%rcx), %eax
jge 0xf954
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x4e30
cmpq $0x0, %rax
je 0xf93e
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x568(%rbp)
callq 0x34f0
movq -0x568(%rbp), %rdx
leaq 0x1df78(%rip), %rsi     # 0x2d282
leaq -0x3d0(%rbp), %rdi
callq 0x46f0
jmp 0xf318
leaq -0x3d1(%rbp), %rdi
callq 0x3330
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15460
movsbl (%rax), %esi
leaq -0x3d0(%rbp), %rdi
callq 0x31d0
jmp 0xf360
leaq -0x3d0(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xf373
movl $0x1, -0x3d8(%rbp)
movl $0x1, -0x3dc(%rbp)
movslq -0x3dc(%rbp), %rax
movq %rax, -0x570(%rbp)
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x4e30
movq %rax, %rcx
movq -0x570(%rbp), %rax
cmpq %rcx, %rax
jae 0xf5b4
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movslq -0x3dc(%rbp), %rsi
callq 0x15460
movsbl (%rax), %eax
movl %eax, -0x574(%rbp)
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movl -0x3dc(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x15460
movq %rax, %rcx
movl -0x574(%rbp), %eax
movsbl (%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0xf48e
movl -0x3d8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3d8(%rbp)
jmp 0xf54c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3d1(%rbp), %rdi
callq 0x3330
jmp 0xf99d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf930
cmpl $0x3, -0x3d8(%rbp)
jl 0xf54a
movl $0x0, -0x3e0(%rbp)
movl -0x3e0(%rbp), %eax
movl -0x3d8(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xf4d7
leaq -0x3d0(%rbp), %rdi
callq 0x33a0
movl -0x3e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3e0(%rbp)
jmp 0xf4a5
leaq -0x3d0(%rbp), %rdi
movl $0x2d, %esi
callq 0x31d0
jmp 0xf4ea
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movl -0x3dc(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15460
movsbl (%rax), %esi
leaq -0x3d0(%rbp), %rdi
callq 0x31d0
jmp 0xf52d
leaq -0x3d0(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xf540
movl $0x1, -0x3d8(%rbp)
jmp 0xf54c
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
movslq -0x3dc(%rbp), %rsi
callq 0x15460
movsbl (%rax), %esi
leaq -0x3d0(%rbp), %rdi
callq 0x31d0
jmp 0xf58b
leaq -0x3d0(%rbp), %rdi
movl $0x2c, %esi
callq 0x31d0
jmp 0xf59e
jmp 0xf5a0
movl -0x3dc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3dc(%rbp)
jmp 0xf387
cmpl $0x3, -0x3d8(%rbp)
jl 0xf665
movl $0x0, -0x3e4(%rbp)
movl -0x3e4(%rbp), %eax
movl -0x3d8(%rbp), %ecx
shll %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xf5fd
leaq -0x3d0(%rbp), %rdi
callq 0x33a0
movl -0x3e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3e4(%rbp)
jmp 0xf5cb
leaq -0x3d0(%rbp), %rdi
movl $0x2d, %esi
callq 0x31d0
jmp 0xf610
movslq -0x3ac(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x153d0
movq %rax, %rdi
movslq -0x3b0(%rbp), %rsi
callq 0x153f0
movq %rax, %rdi
callq 0x15480
movsbl (%rax), %esi
leaq -0x3d0(%rbp), %rdi
callq 0x31d0
jmp 0xf648
leaq -0x3d0(%rbp), %rdi
movl $0x2c, %esi
callq 0x3280
jmp 0xf65b
movl $0x1, -0x3d8(%rbp)
leaq -0x3d0(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x3180
movq %rax, -0x400(%rbp)
leaq -0x400(%rbp), %rdi
movl $0x1, %esi
callq 0x154c0
movq %rax, -0x3f8(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x15500
movq -0x588(%rbp), %rdi
movq -0x3f0(%rbp), %rsi
callq 0x33c0
movq %rax, -0x580(%rbp)
jmp 0xf6c6
movq -0x580(%rbp), %rax
movq %rax, -0x408(%rbp)
leaq -0x3d0(%rbp), %rdi
movl $0x22, %esi
callq 0x31d0
jmp 0xf6e7
movl -0x3ac(%rbp), %esi
leaq -0x4e8(%rbp), %rdi
callq 0x14790
jmp 0xf6fb
leaq 0x1db76(%rip), %rsi     # 0x2d278
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rdx
callq 0x15410
jmp 0xf717
leaq 0x1db84(%rip), %rdx     # 0x2d2a2
leaq -0x4a8(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x141b0
jmp 0xf733
movl -0x3b0(%rbp), %esi
leaq -0x508(%rbp), %rdi
callq 0x14790
jmp 0xf747
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x508(%rbp), %rdx
callq 0x14670
jmp 0xf763
leaq 0x1db3d(%rip), %rdx     # 0x2d2a7
leaq -0x468(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x141b0
jmp 0xf77f
leaq -0x448(%rbp), %rdi
leaq -0x468(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
callq 0x14200
jmp 0xf79b
leaq 0x1db3d(%rip), %rdx     # 0x2d2df
leaq -0x428(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x141b0
jmp 0xf7b7
leaq -0x2d0(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x32b0
movq %rax, -0x590(%rbp)
jmp 0xf7d3
movq -0x590(%rbp), %rdi
movq 0x337cf(%rip), %rsi     # 0x42fb0
callq 0x3300
jmp 0xf7e8
leaq -0x428(%rbp), %rdi
callq 0x31c0
leaq -0x448(%rbp), %rdi
callq 0x31c0
leaq -0x468(%rbp), %rdi
callq 0x31c0
leaq -0x488(%rbp), %rdi
callq 0x31c0
leaq -0x508(%rbp), %rdi
callq 0x31c0
leaq -0x4a8(%rbp), %rdi
callq 0x31c0
leaq -0x4c8(%rbp), %rdi
callq 0x31c0
leaq -0x4e8(%rbp), %rdi
callq 0x31c0
leaq -0x3d0(%rbp), %rdi
callq 0x31c0
jmp 0xf93e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf924
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf918
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf90c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf900
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf8f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf8e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xf8dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x31c0
leaq -0x448(%rbp), %rdi
callq 0x31c0
leaq -0x468(%rbp), %rdi
callq 0x31c0
leaq -0x488(%rbp), %rdi
callq 0x31c0
leaq -0x508(%rbp), %rdi
callq 0x31c0
leaq -0x4a8(%rbp), %rdi
callq 0x31c0
leaq -0x4c8(%rbp), %rdi
callq 0x31c0
leaq -0x4e8(%rbp), %rdi
callq 0x31c0
leaq -0x3d0(%rbp), %rdi
callq 0x31c0
jmp 0xf99d
jmp 0xf940
movl -0x3b0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3b0(%rbp)
jmp 0xf2a2
jmp 0xf956
movl -0x3ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3ac(%rbp)
jmp 0xf282
leaq 0x1d8fb(%rip), %rsi     # 0x2d26c
leaq -0x2d0(%rbp), %rdi
callq 0x32c0
jmp 0xf97f
leaq -0x2d0(%rbp), %rdi
callq 0x3440
leaq -0x28(%rbp), %rdi
callq 0x15540
addq $0x590, %rsp            # imm = 0x590
popq %rbp
retq
leaq -0x2d0(%rbp), %rdi
callq 0x3440
leaq -0x28(%rbp), %rdi
callq 0x15540
movq -0x70(%rbp), %rdi
callq 0x34e0
nopl (%rax,%rax)