// File: /workspace/github_cpp_makefile_star2_O3/xnevs[P]bullimp/examples/colored_vertices.cpp
// Function: main
int main() { 
    using namespace boost;
    using namespace ullimp;

    graph_type pattern;
    auto u0 = add_vertex(pattern);
    auto u1 = add_vertex(pattern);
    auto u2 = add_vertex(pattern);
    add_edge(u0, u1, pattern);
    add_edge(u1, u2, pattern);
    add_edge(u2, u0, pattern);

    pattern[u0].color = "red";
    pattern[u1].color = "blue";
    pattern[u2].color = "green";

    graph_type graph;
    auto v0 = add_vertex(graph);
    auto v1 = add_vertex(graph);
    auto v2 = add_vertex(graph);
    auto v3 = add_vertex(graph);
    add_edge(v0, v1, graph);
    add_edge(v1, v2, graph);
    add_edge(v2, v0, graph);
    add_edge(v1, v3, graph);
    add_edge(v3, v0, graph);

    graph[v0].color = "red";
    graph[v1].color = "blue";
    graph[v2].color = "green";
    graph[v3].color = "green";

    auto index_map_p = get(vertex_index, pattern);
    auto index_map_g = get(vertex_index, graph);

    int count = 0;

    ullimp_subgraph_iso(pattern,
                        graph,
                        [&count, &pattern, &index_map_p, &index_map_g](auto const & iso, auto const & isoInv) {
                            std::cout << "found isomorphism:" << std::endl;
                            BGL_FORALL_VERTICES(u, pattern, graph_type) {
                                std::cout << "  " << index_map_p[u] << " -> " << index_map_g[iso[u]] << std::endl;
                            }
                            ++count;
                            return true;
                        },
                        get(vertex_index, pattern),
                        get(vertex_index, graph),
                        vertex_order_RDEG_CNC(pattern),
                        always_equivalent(),
                        [&pattern, &graph](auto const & u, auto const & v) {
                            return pattern[u].color == graph[v].color;
                        });

    std::cout << "isomorphism count = " << count << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x588, %rsp            # imm = 0x588
leaq 0x100(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x40ea
leaq 0x118(%rsp), %rbx
movq 0x8(%rbx), %rsi
subq (%rbx), %rsi
sarq $0x7, %rsi
incq %rsi
movq %rbx, %rdi
callq 0x4288
movq 0x120(%rsp), %r15
subq 0x118(%rsp), %r15
sarq $0x7, %r15
leaq 0x1(%r15), %rsi
movq %rbx, %rdi
callq 0x4288
movq 0x120(%rsp), %r14
subq 0x118(%rsp), %r14
sarq $0x7, %r14
leaq 0x1(%r14), %rsi
movq %rbx, %rdi
callq 0x4288
leaq 0x100(%rsp), %r8
decq %r15
decq %r14
movq 0x20(%r8), %rbx
subq 0x18(%r8), %rbx
leaq 0x1b0(%rsp), %rdi
leaq 0xc8(%rsp), %rcx
movq %r15, %rsi
movq %r14, %rdx
callq 0x45f0
sarq $0x7, %rbx
decq %rbx
leaq 0x1b0(%rsp), %rdi
leaq 0xc8(%rsp), %rcx
leaq 0x100(%rsp), %r8
movq %r14, %rsi
movq %rbx, %rdx
callq 0x45f0
leaq 0x1b0(%rsp), %rdi
leaq 0xc8(%rsp), %rcx
leaq 0x100(%rsp), %r8
movq %rbx, %rsi
movq %r15, %rdx
callq 0x45f0
movq 0x118(%rsp), %rax
shlq $0x7, %r15
leaq 0x60(%rax,%r15), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3bee(%rip), %rcx      # 0x6088
movl $0x3, %r8d
xorl %esi, %esi
callq 0x21a0
movq 0x118(%rsp), %rax
shlq $0x7, %r14
leaq 0x60(%rax,%r14), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3bc9(%rip), %rcx      # 0x608c
movl $0x4, %r8d
xorl %esi, %esi
callq 0x21a0
movq 0x118(%rsp), %rax
shlq $0x7, %rbx
leaq 0x60(%rax,%rbx), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3ba5(%rip), %rcx      # 0x6091
movl $0x5, %r8d
xorl %esi, %esi
callq 0x21a0
leaq 0xc8(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x40ea
leaq 0xe0(%rsp), %rbx
movq 0x8(%rbx), %rsi
subq (%rbx), %rsi
sarq $0x7, %rsi
incq %rsi
movq %rbx, %rdi
callq 0x4288
movq 0xe8(%rsp), %r12
subq 0xe0(%rsp), %r12
sarq $0x7, %r12
leaq 0x1(%r12), %rsi
movq %rbx, %rdi
callq 0x4288
movq 0xe8(%rsp), %r15
subq 0xe0(%rsp), %r15
sarq $0x7, %r15
leaq 0x1(%r15), %rsi
movq %rbx, %rdi
callq 0x4288
movq 0xe8(%rsp), %r14
subq 0xe0(%rsp), %r14
sarq $0x7, %r14
leaq 0x1(%r14), %rsi
movq %rbx, %rdi
callq 0x4288
leaq 0xc8(%rsp), %r8
decq %r12
decq %r15
movq 0x20(%r8), %rbx
subq 0x18(%r8), %rbx
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %r12, %rsi
movq %r15, %rdx
callq 0x45f0
decq %r14
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rcx
leaq 0xc8(%rsp), %r8
movq %r15, %rsi
movq %r14, %rdx
callq 0x45f0
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rcx
leaq 0xc8(%rsp), %r8
movq %r14, %rsi
movq %r12, %rdx
callq 0x45f0
sarq $0x7, %rbx
decq %rbx
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rcx
leaq 0xc8(%rsp), %r8
movq %r15, %rsi
movq %rbx, %rdx
callq 0x45f0
leaq 0xc8(%rsp), %r13
leaq 0x1b0(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %rbx, %rsi
movq %r12, %rdx
movq %r13, %r8
callq 0x45f0
movq 0xe0(%rsp), %rax
shlq $0x7, %r12
leaq 0x60(%rax,%r12), %rdi
movq 0x8(%rdi), %rdx
leaq 0x3a15(%rip), %rcx      # 0x6088
movl $0x3, %r8d
xorl %esi, %esi
callq 0x21a0
movq 0xe0(%rsp), %rax
shlq $0x7, %r15
leaq 0x60(%rax,%r15), %rdi
movq 0x8(%rdi), %rdx
leaq 0x39f0(%rip), %rcx      # 0x608c
movl $0x4, %r8d
xorl %esi, %esi
callq 0x21a0
movq 0xe0(%rsp), %rax
shlq $0x7, %r14
leaq 0x60(%rax,%r14), %rdi
movq 0x8(%rdi), %rdx
leaq 0x39cc(%rip), %rcx      # 0x6091
movl $0x5, %r8d
xorl %esi, %esi
callq 0x21a0
movq 0xe0(%rsp), %rax
shlq $0x7, %rbx
leaq 0x60(%rax,%rbx), %rdi
movq 0x8(%rdi), %rdx
leaq 0x39a3(%rip), %rcx      # 0x6091
movl $0x5, %r8d
xorl %esi, %esi
callq 0x21a0
movl $0x0, 0x94(%rsp)
leaq 0x100(%rsp), %rbx
leaq 0x138(%rsp), %rdi
movq %rbx, %rsi
callq 0x4805
leaq 0x1c0(%rsp), %rdi
movq %rbx, -0x10(%rdi)
movq %r13, -0x8(%rdi)
movq %rbx, %rsi
callq 0x50aa
leaq 0x2d8(%rsp), %rdi
leaq 0xc8(%rsp), %r14
movq %r14, %rsi
callq 0x50aa
movq 0x120(%rsp), %rax
movq 0xe8(%rsp), %rcx
leaq 0x408(%rsp), %rdi
subq 0x118(%rsp), %rax
subq 0xe0(%rsp), %rcx
sarq $0x7, %rax
sarq $0x7, %rcx
movq %rax, -0x10(%rdi)
movq %rcx, -0x8(%rdi)
leaq 0x138(%rsp), %rsi
callq 0x5496
leaq 0x458(%rsp), %rdi
leaq 0x94(%rsp), %rax
leaq 0x4f(%rsp), %rsi
leaq 0x4e(%rsp), %rdx
movq %rbx, -0x30(%rdi)
movq %r14, -0x28(%rdi)
movq %rax, -0x20(%rdi)
movq %rbx, -0x18(%rdi)
movq %rsi, -0x10(%rdi)
movq %rdx, -0x8(%rdi)
leaq 0x98(%rsp), %rdx
movq -0x60(%rdi), %rsi
movq $-0x1, (%rdx)
leaq 0x20(%rsp), %rcx
callq 0x5518
leaq 0x480(%rsp), %rdi
leaq 0x98(%rsp), %rdx
movq -0x28(%rdi), %rax
movq -0x80(%rdi), %rsi
movq $-0x1, (%rdx)
movq %rax, -0x10(%rdi)
leaq 0x20(%rsp), %rcx
callq 0x5518
movq 0x480(%rsp), %r14
movq %r14, 0x498(%rsp)
movq 0x3f8(%rsp), %rbx
movq 0x400(%rsp), %r15
movq %rbx, 0x4a8(%rsp)
movq %r15, 0x4b0(%rsp)
imulq %rbx, %r15
movq %r15, %rdi
callq 0x2030
movq %rax, 0x4c0(%rsp)
movq %r15, %rax
shrq $0x3e, %rax
shlq $0x2, %r15
negq %rax
sbbq %r12, %r12
orq %r15, %r12
movq %r12, %rdi
callq 0x2030
movq %rax, 0x4c8(%rsp)
movq $-0x1, 0x4d0(%rsp)
movq %r12, %rdi
callq 0x2030
leaq 0x4e8(%rsp), %r14
movq %rax, -0x10(%r14)
movl $0xffffffff, -0x8(%r14) # imm = 0xFFFFFFFF
leaq 0x98(%rsp), %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x55ee
leaq 0x500(%rsp), %r15
movq -0x108(%r15), %rsi
leaq 0x98(%rsp), %rdx
movq %r15, %rdi
callq 0x55ee
leaq 0x518(%rsp), %r12
movq -0x120(%r12), %rsi
leaq 0x98(%rsp), %rdx
movq %r12, %rdi
callq 0x55ee
leaq 0x530(%rsp), %r13
movq -0x138(%r13), %rsi
leaq 0x98(%rsp), %rdx
movq %r13, %rdi
callq 0x55ee
movq 0x4e8(%rsp), %rax
movq 0x3f8(%rsp), %rsi
movq %rax, 0x548(%rsp)
movq 0x500(%rsp), %rax
movq %rax, 0x558(%rsp)
movq 0x518(%rsp), %rax
movq %rax, 0x568(%rsp)
movq 0x530(%rsp), %rax
movq %rax, 0x578(%rsp)
leaq 0x98(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x4b40
movq 0x98(%rsp), %rbp
cmpq $0x0, 0x3f8(%rsp)
je 0x299d
movq 0x138(%rsp), %rax
xorl %ecx, %ecx
movq (%rax,%rcx,8), %rdx
movq %rcx, (%rbp,%rdx,8)
incq %rcx
cmpq %rcx, 0x3f8(%rsp)
ja 0x2987
movq 0x120(%rsp), %rcx
movq 0x118(%rsp), %rax
subq %rax, %rcx
movq %rcx, 0x18(%rsp)
je 0x2b3b
sarq $0x7, 0x18(%rsp)
xorl %r12d, %r12d
movq 0x298(%rsp), %rax
leaq (%r12,%r12,2), %r14
movq (%rbp,%r12,8), %r13
movq (%rax,%r14,8), %r15
movq 0x8(%rax,%r14,8), %rbx
cmpq %rbx, %r15
je 0x2a25
movq (%r15), %rax
movq %rax, 0x20(%rsp)
cmpq %r13, (%rbp,%rax,8)
jbe 0x2a1f
movq 0x548(%rsp), %rcx
leaq (%rcx,%r14,8), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x2a15
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x8(%rdi)
jmp 0x2a1f
leaq 0x20(%rsp), %rdx
callq 0x5820
addq $0x8, %r15
jmp 0x29de
movq 0x2a8(%rsp), %rax
movq (%rax,%r14,8), %r15
movq 0x8(%rax,%r14,8), %rbx
cmpq %rbx, %r15
je 0x2a7d
movq (%r15), %rax
movq %rax, 0x20(%rsp)
cmpq %r13, (%rbp,%rax,8)
jbe 0x2a77
movq 0x558(%rsp), %rcx
leaq (%rcx,%r14,8), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x2a6d
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x8(%rdi)
jmp 0x2a77
leaq 0x20(%rsp), %rdx
callq 0x5820
addq $0x8, %r15
jmp 0x2a36
movq 0x2b8(%rsp), %rax
movq (%rax,%r14,8), %r15
movq 0x8(%rax,%r14,8), %rbx
cmpq %rbx, %r15
je 0x2ad5
movq (%r15), %rax
movq %rax, 0x20(%rsp)
cmpq %r13, (%rbp,%rax,8)
jbe 0x2acf
movq 0x568(%rsp), %rcx
leaq (%rcx,%r14,8), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x2ac5
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x8(%rdi)
jmp 0x2acf
leaq 0x20(%rsp), %rdx
callq 0x5820
addq $0x8, %r15
jmp 0x2a8e
movq 0x2c8(%rsp), %rax
movq (%rax,%r14,8), %rbx
movq 0x8(%rax,%r14,8), %r15
cmpq %r15, %rbx
je 0x2b2d
movq (%rbx), %rax
movq %rax, 0x20(%rsp)
cmpq %r13, (%rbp,%rax,8)
jbe 0x2b27
movq 0x578(%rsp), %rcx
leaq (%rcx,%r14,8), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0x2b1d
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x8(%rdi)
jmp 0x2b27
leaq 0x20(%rsp), %rdx
callq 0x5820
addq $0x8, %rbx
jmp 0x2ae6
incq %r12
cmpq 0x18(%rsp), %r12
jne 0x29c4
movq 0x98(%rsp), %rdi
testq %rdi, %rdi
je 0x2b58
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x1b0(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x20(%rax), %rax
subq %rcx, %rax
movq %rcx, 0x28(%rsp)
movq %rax, 0x30(%rsp)
je 0x2e1e
movq 0x1b8(%rsp), %rcx
movq 0x4b0(%rsp), %rsi
movq 0x4c0(%rsp), %rdi
sarq $0x7, 0x30(%rsp)
xorl %r9d, %r9d
movq 0x18(%rcx), %rax
movq 0x20(%rcx), %rcx
movq %rcx, %rdx
subq %rax, %rdx
leaq 0x58(%rax), %r8
sarq $0x7, %rdx
cmpq %rax, %rcx
je 0x2bf4
movq 0x28(%rsp), %rbx
movq %r9, %r11
shlq $0x7, %r11
xorl %r14d, %r14d
movq 0x28(%rbx,%r11), %r10
movq 0x58(%rbx,%r11), %r11
movq %r8, %rbx
cmpq %r11, (%rbx)
jae 0x2bdc
xorl %ebp, %ebp
jmp 0x2be4
cmpq %r10, -0x30(%rbx)
setae %bpl
movb %bpl, (%rdi,%r14)
incq %r14
subq $-0x80, %rbx
cmpq %r14, %rdx
jne 0x2bd3
incq %r9
addq %rsi, %rdi
cmpq 0x30(%rsp), %r9
jne 0x2bb2
movq 0x1b8(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x20(%rax), %rax
movq %rax, %rdx
subq %rcx, %rdx
movq %rax, 0xb0(%rsp)
movq %rcx, 0x40(%rsp)
sarq $0x7, %rdx
movq %rdx, 0x8(%rsp)
movq 0x4b0(%rsp), %rax
movq 0x4c0(%rsp), %rsi
xorl %ecx, %ecx
movq $0x0, 0x58(%rsp)
movq %rax, 0x50(%rsp)
movq %rsi, 0x78(%rsp)
movq 0xb0(%rsp), %rax
movq %rcx, 0x80(%rsp)
cmpq 0x40(%rsp), %rax
je 0x2dfd
movq %rcx, %rdi
imulq 0x50(%rsp), %rdi
movq 0x28(%rsp), %r9
movq %rcx, %rax
shlq $0x7, %rax
xorl %r12d, %r12d
addq 0x78(%rsp), %rdi
leaq (%r9,%rax), %rsi
leaq 0x8(%r9,%rax), %r8
leaq 0x38(%r9,%rax), %rax
movq %rsi, 0x60(%rsp)
movq %r8, 0x18(%rsp)
movq %rax, 0x88(%rsp)
movq %rdi, 0x10(%rsp)
cmpb $0x1, (%rdi,%r12)
jne 0x2df1
movq 0x60(%rsp), %rax
movq 0x18(%rax), %rbx
cmpq 0x18(%rsp), %rbx
je 0x2d45
movq 0x40(%rsp), %rcx
movq %r12, %rax
shlq $0x7, %rax
leaq 0x8(%rcx,%rax), %r14
movq 0x10(%r14), %rbp
cmpq %r14, %rbp
je 0x2ddb
movq 0x4b0(%rsp), %rax
movq 0x4c0(%rsp), %rcx
movq %rax, 0x38(%rsp)
movq 0x20(%rbx), %r15
movq %rcx, %r13
imulq %rax, %r15
movq %rbp, %rax
addq %rcx, %r15
movq 0x20(%rax), %rcx
cmpb $0x0, (%r15,%rcx)
jne 0x2d2b
movq %rax, %rdi
callq 0x2160
cmpq %r14, %rax
jne 0x2d0e
jmp 0x2ddb
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
movq %r13, %rcx
cmpq 0x18(%rsp), %rax
movq 0x38(%rsp), %rax
jne 0x2cfd
movq 0x18(%rsp), %rax
movq 0x40(%rax), %rbx
cmpq 0x88(%rsp), %rbx
je 0x2dcf
movq 0x40(%rsp), %rcx
movq %r12, %rax
shlq $0x7, %rax
leaq 0x38(%rcx,%rax), %r14
movq 0x10(%r14), %rbp
cmpq %r14, %rbp
je 0x2ddb
movq 0x4b0(%rsp), %rcx
movq 0x4c0(%rsp), %rax
movq %rcx, 0x38(%rsp)
movq 0x20(%rbx), %r15
movq %rax, %r13
imulq %rcx, %r15
addq %rax, %r15
movq %rbp, %rax
movq 0x20(%rax), %rcx
cmpb $0x0, (%r15,%rcx)
jne 0x2db2
movq %rax, %rdi
callq 0x2160
cmpq %r14, %rax
jne 0x2d98
jmp 0x2ddb
movq %rbx, %rdi
callq 0x2160
movq 0x38(%rsp), %rcx
movq %rax, %rbx
cmpq 0x88(%rsp), %rax
movq %r13, %rax
jne 0x2d87
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rdi
jmp 0x2df1
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rdx
movb $0x1, %al
movq %rax, 0x58(%rsp)
movb $0x0, (%rdi,%r12)
incq %r12
cmpq %rdx, %r12
jne 0x2caf
movq 0x80(%rsp), %rcx
incq %rcx
cmpq 0x30(%rsp), %rcx
jne 0x2c52
testb $0x1, 0x58(%rsp)
jne 0x2c2d
leaq 0x1b0(%rsp), %rax
xorl %edi, %edi
movq 0x258(%rax), %r13
movq 0x3f8(%rsp), %rcx
movq 0x1b8(%rsp), %rax
decq %rcx
cmpq %rcx, %rdi
jae 0x3678
movq 0x498(%rsp), %rcx
movq 0x18(%rax), %rdx
movq 0x20(%rax), %rax
movq 0x470(%rsp), %r8
movq 0x4c0(%rsp), %r9
movq 0x4c8(%rsp), %r10
movq %rcx, 0xb0(%rsp)
movq 0x4d8(%rsp), %rcx
movq %rax, 0x190(%rsp)
subq %rdx, %rax
movq %rdx, 0x198(%rsp)
movq 0x548(%rsp), %rdx
movq %r8, 0x38(%rsp)
movq %r9, 0x58(%rsp)
movq %r10, 0x88(%rsp)
sarq $0x7, %rax
movq %rax, 0x18(%rsp)
movq %rcx, 0x80(%rsp)
movq 0x3d0(%rsp), %rcx
movq %rdx, 0x188(%rsp)
movq 0x558(%rsp), %rdx
movq %rcx, 0x168(%rsp)
movq 0x3e0(%rsp), %rcx
movq %rdx, 0x180(%rsp)
movq 0x3b0(%rsp), %rdx
movq %rcx, 0x160(%rsp)
movq 0x3c0(%rsp), %rcx
movq %rdx, 0x178(%rsp)
movq 0x568(%rsp), %rdx
movq %rcx, 0x170(%rsp)
movq 0x578(%rsp), %rcx
movq %rdx, 0x158(%rsp)
movq %rcx, 0x150(%rsp)
movq %rdi, 0x8(%rsp)
movq (%r13), %rdi
movq %r13, 0x40(%rsp)
movq (%r8,%rdi,8), %rax
cmpq $-0x1, %rax
je 0x2f6a
movq 0xb0(%rsp), %rcx
movq $-0x1, (%rcx,%rax,8)
movq (%r8,%rdi,8), %rbx
incq %rbx
jmp 0x2f6c
xorl %ebx, %ebx
cmpq 0x18(%rsp), %rbx
je 0x3040
movq 0x4b0(%rsp), %r12
movq 0x428(%rsp), %rax
movq 0x498(%rsp), %r13
movq 0x430(%rsp), %rbp
movq %rbx, %r15
shlq $0x4, %r15
leaq 0x1(%rbx,%rbx,2), %r14
movq %rdi, 0x60(%rsp)
orq $0xd, %r15
imulq %rdi, %r12
addq 0x58(%rsp), %r12
movq %rax, 0x10(%rsp)
cmpb $0x1, (%r12,%rbx)
jne 0x302a
cmpq $-0x1, (%r13,%rbx,8)
jne 0x302a
movq 0x10(%rsp), %rax
movq %rdi, %rsi
shlq $0x7, %rsi
movq 0x18(%rax), %rcx
movq 0x18(%rbp), %rax
movq 0x68(%rcx,%rsi), %rdx
cmpq (%rax,%r15,8), %rdx
jne 0x302a
testq %rdx, %rdx
je 0x3008
leaq 0x60(%rcx,%rsi), %rcx
movq -0x8(%rax,%r15,8), %rsi
movq (%rcx), %rdi
callq 0x2130
movq 0x60(%rsp), %rdi
testl %eax, %eax
jne 0x302a
movq 0x60(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
movq %rbx, %rdx
callq 0x3fa6
movq 0x60(%rsp), %rdi
testb %al, %al
jne 0x30e0
incq %rbx
addq $0x3, %r14
addq $0x10, %r15
cmpq %rbx, 0x18(%rsp)
jne 0x2fba
movq 0x38(%rsp), %r8
cmpq $-0x1, %rdi
je 0x3053
movq $-0x1, (%r8,%rdi,8)
movq 0x8(%rsp), %rdi
movq 0x40(%rsp), %r13
movq 0x58(%rsp), %r9
movq 0x88(%rsp), %r10
leaq 0x118(%rsp), %r14
subq $0x1, %rdi
jb 0x3900
movslq 0x4e0(%rsp), %rax
movq 0x80(%rsp), %rdx
addq $-0x8, %r13
leal -0x1(%rax), %ecx
movl %ecx, 0x4e0(%rsp)
movslq (%rdx,%rax,4), %rax
movslq 0x4d0(%rsp), %rcx
cmpl %eax, %ecx
jle 0x30c7
leal -0x1(%rcx), %edx
movl %edx, 0x4d0(%rsp)
decl %edx
movslq (%r10,%rcx,4), %rsi
decq %rcx
movb $0x1, (%r9,%rsi)
cmpq %rax, %rcx
jg 0x30ad
movq 0x3f8(%rsp), %rax
decq %rax
cmpq %rax, %rdi
jb 0x2f39
jmp 0x3696
cmpq $-0x1, %rbx
je 0x3040
movq 0x38(%rsp), %rax
movq 0x80(%rsp), %rsi
movq %rbx, (%rax,%rdi,8)
movq 0xb0(%rsp), %rax
movq %rdi, (%rax,%rbx,8)
movslq 0x4e0(%rsp), %rcx
movl 0x4d0(%rsp), %eax
leaq 0x1(%rcx), %rdx
movl %edx, 0x4e0(%rsp)
movl %eax, 0x4(%rsi,%rcx,4)
movq 0x188(%rsp), %rsi
movl %eax, 0x4d4(%rsp)
leaq (%rdi,%rdi,2), %rax
movq (%rsi,%rax,8), %rdx
movq 0x8(%rsi,%rax,8), %rcx
movq %rdx, 0x68(%rsp)
movq %rcx, 0x28(%rsp)
cmpq %rcx, %rdx
je 0x31dd
movq 0x168(%rsp), %rdx
movq 0x498(%rsp), %rsi
movq 0x68(%rsp), %rdi
movq -0x8(%rdx,%r14,8), %rcx
movq (%rdx,%r14,8), %rdx
cmpq %rdx, %rcx
je 0x31d2
movq 0x4b0(%rsp), %r8
movq 0x4c0(%rsp), %r9
movq 0x4c8(%rsp), %r10
movq %rcx, %r11
imulq (%rdi), %r8
movq (%r11), %r15
cmpq $-0x1, (%rsi,%r15,8)
jne 0x31c9
addq %r8, %r15
cmpb $0x1, (%r9,%r15)
jne 0x31c9
movb $0x0, (%r9,%r15)
movslq 0x4d0(%rsp), %r12
leaq 0x1(%r12), %r13
movl %r13d, 0x4d0(%rsp)
movl %r15d, 0x4(%r10,%r12,4)
addq $0x8, %r11
cmpq %rdx, %r11
jne 0x3196
addq $0x8, %rdi
cmpq 0x28(%rsp), %rdi
jne 0x3172
movq 0x180(%rsp), %rcx
movq (%rcx,%rax,8), %rdx
movq 0x8(%rcx,%rax,8), %rcx
movq %rdx, 0x70(%rsp)
movq %rcx, 0x78(%rsp)
cmpq %rcx, %rdx
je 0x328a
movq 0x160(%rsp), %rdx
movq 0x498(%rsp), %rsi
movq 0x70(%rsp), %rdi
movq -0x8(%rdx,%r14,8), %rcx
movq (%rdx,%r14,8), %rdx
cmpq %rdx, %rcx
je 0x327f
movq 0x4b0(%rsp), %r8
movq 0x4c0(%rsp), %r9
movq 0x4c8(%rsp), %r10
movq %rcx, %r11
imulq (%rdi), %r8
movq (%r11), %r15
cmpq $-0x1, (%rsi,%r15,8)
jne 0x3276
addq %r8, %r15
cmpb $0x1, (%r9,%r15)
jne 0x3276
movb $0x0, (%r9,%r15)
movslq 0x4d0(%rsp), %r12
leaq 0x1(%r12), %r13
movl %r13d, 0x4d0(%rsp)
movl %r15d, 0x4(%r10,%r12,4)
addq $0x8, %r11
cmpq %rdx, %r11
jne 0x3243
addq $0x8, %rdi
cmpq 0x78(%rsp), %rdi
jne 0x321f
movq 0x178(%rsp), %rcx
movq -0x8(%rcx,%r14,8), %rdx
movq (%rcx,%r14,8), %r12
movq %rdx, 0xb8(%rsp)
cmpq %r12, %rdx
je 0x3324
movq 0x158(%rsp), %rdx
movq 0x4b0(%rsp), %rsi
movq 0x4c0(%rsp), %rdi
movq 0xb8(%rsp), %r8
movq (%rdx,%rax,8), %rcx
movq 0x8(%rdx,%rax,8), %rdx
cmpq %rdx, %rcx
je 0x331b
movq (%r8), %r9
movq 0x4c8(%rsp), %r10
movq %rcx, %r11
movq (%r11), %r15
imulq %rsi, %r15
addq %r9, %r15
cmpb $0x1, (%rdi,%r15)
jne 0x3312
movb $0x0, (%rdi,%r15)
movslq 0x4d0(%rsp), %r13
leaq 0x1(%r13), %rbp
movl %ebp, 0x4d0(%rsp)
movl %r15d, 0x4(%r10,%r13,4)
addq $0x8, %r11
cmpq %rdx, %r11
jne 0x32e4
addq $0x8, %r8
cmpq %r12, %r8
jne 0x32d1
movq 0x170(%rsp), %rcx
movq -0x8(%rcx,%r14,8), %rdx
movq (%rcx,%r14,8), %rcx
movq %rdx, 0xc0(%rsp)
movq %rcx, 0x10(%rsp)
cmpq %rcx, %rdx
je 0x33c6
movq 0x150(%rsp), %rdx
movq 0x4c0(%rsp), %rsi
movq 0xc0(%rsp), %rdi
movq (%rdx,%rax,8), %rcx
movq 0x8(%rdx,%rax,8), %rax
movq 0x4b0(%rsp), %rdx
cmpq %rax, %rcx
je 0x33bb
movq (%rdi), %r8
movq 0x4c8(%rsp), %r9
movq %rcx, %r10
movq (%r10), %r11
imulq %rdx, %r11
addq %r8, %r11
cmpb $0x1, (%rsi,%r11)
jne 0x33b2
movb $0x0, (%rsi,%r11)
movslq 0x4d0(%rsp), %r14
leaq 0x1(%r14), %r15
movl %r15d, 0x4d0(%rsp)
movl %r11d, 0x4(%r9,%r14,4)
addq $0x8, %r10
cmpq %rax, %r10
jne 0x3383
addq $0x8, %rdi
cmpq 0x10(%rsp), %rdi
jne 0x3370
movq 0x3f8(%rsp), %rax
shrq %rax
cmpq %rax, 0x8(%rsp)
ja 0x35d8
movq 0x28(%rsp), %rax
cmpq %rax, 0x68(%rsp)
je 0x34d8
movq 0x498(%rsp), %r15
cmpq %r12, 0xb8(%rsp)
je 0x34bf
movq 0x68(%rsp), %rax
movq 0x4c8(%rsp), %rdx
movq 0x4c0(%rsp), %rcx
movq 0xb8(%rsp), %rbp
movq (%rax), %rax
movq %rdx, 0x1a0(%rsp)
movq 0x4b0(%rsp), %rdx
movq %rcx, 0x50(%rsp)
imulq %rax, %rdx
movq %rax, 0x30(%rsp)
leaq (%rcx,%rdx), %r13
movq %rdx, 0x1a8(%rsp)
movq (%rbp), %r14
cmpq $-0x1, (%r15,%r14,8)
jne 0x34b6
cmpb $0x1, (%r13,%r14)
jne 0x34b6
movq 0x30(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
movq %r14, %rdx
callq 0x3e94
testb %al, %al
jne 0x34b6
addq 0x1a8(%rsp), %r14
movq 0x50(%rsp), %rax
cmpb $0x1, (%rax,%r14)
jne 0x34b6
movq 0x50(%rsp), %rax
movq 0x1a0(%rsp), %rdx
movb $0x0, (%rax,%r14)
movslq 0x4d0(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x4d0(%rsp)
movl %r14d, 0x4(%rdx,%rax,4)
addq $0x8, %rbp
cmpq %r12, %rbp
jne 0x344c
movq 0x68(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x68(%rsp)
cmpq 0x28(%rsp), %rax
jne 0x33f4
movq 0x78(%rsp), %rax
cmpq %rax, 0x70(%rsp)
je 0x35d8
movq 0x498(%rsp), %r15
movq 0x10(%rsp), %rax
cmpq %rax, 0xc0(%rsp)
je 0x35bf
movq 0x70(%rsp), %rax
movq 0x4c8(%rsp), %rsi
movq 0x4c0(%rsp), %rdx
movq 0xc0(%rsp), %r12
movq (%rax), %rcx
movq %rsi, 0x28(%rsp)
movq 0x4b0(%rsp), %rsi
movq 0x10(%rsp), %rax
movq %rdx, 0x30(%rsp)
imulq %rcx, %rsi
movq %rcx, %rbp
leaq (%rdx,%rsi), %r13
movq %rsi, 0x50(%rsp)
movq (%r12), %r14
cmpq $-0x1, (%r15,%r14,8)
jne 0x35b6
cmpb $0x1, (%r13,%r14)
jne 0x35b6
leaq 0x1b0(%rsp), %rdi
movq %rbp, %rsi
movq %r14, %rdx
callq 0x3e94
testb %al, %al
movq 0x10(%rsp), %rax
jne 0x35b6
addq 0x50(%rsp), %r14
movq 0x30(%rsp), %rcx
cmpb $0x1, (%rcx,%r14)
jne 0x35b6
movq 0x30(%rsp), %rax
movq 0x28(%rsp), %rdx
movb $0x0, (%rax,%r14)
movslq 0x4d0(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x4d0(%rsp)
movl %r14d, 0x4(%rdx,%rax,4)
movq 0x10(%rsp), %rax
addq $0x8, %r12
cmpq %rax, %r12
jne 0x354a
movq 0x70(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x70(%rsp)
cmpq 0x78(%rsp), %rax
jne 0x34f0
movq 0x60(%rsp), %rsi
leaq 0x1b0(%rsp), %rdi
movq %rbx, %rdx
callq 0x3e94
testb %al, %al
je 0x360c
movq 0x8(%rsp), %rdi
movq 0x40(%rsp), %r13
movq 0x38(%rsp), %r8
incq %rdi
addq $0x8, %r13
jmp 0x30c7
movslq 0x4e0(%rsp), %rax
movq 0x80(%rsp), %rdx
movq 0x40(%rsp), %r13
movq 0x8(%rsp), %rdi
movq 0x38(%rsp), %r8
movq 0x58(%rsp), %r9
movq 0x88(%rsp), %r10
leal -0x1(%rax), %ecx
movl %ecx, 0x4e0(%rsp)
movslq (%rdx,%rax,4), %rax
movslq 0x4d0(%rsp), %rcx
cmpl %eax, %ecx
jle 0x30c7
leal -0x1(%rcx), %edx
movl %edx, 0x4d0(%rsp)
decl %edx
movslq (%r10,%rcx,4), %rsi
decq %rcx
movb $0x1, (%r9,%rsi)
cmpq %rax, %rcx
jg 0x3659
jmp 0x30c7
movq 0x18(%rax), %rcx
movq 0x20(%rax), %rdx
movq %rdi, 0x8(%rsp)
movq %rdx, %rax
subq %rcx, %rax
sarq $0x7, %rax
movq %rax, 0x18(%rsp)
jmp 0x36ab
movq 0x198(%rsp), %rcx
movq 0x190(%rsp), %rdx
movq %rdi, 0x8(%rsp)
cmpq %rcx, %rdx
je 0x3898
movq (%r13), %r15
xorl %r12d, %r12d
movq 0x498(%rsp), %rbx
cmpq $-0x1, (%rbx,%r12,8)
jne 0x388a
movq 0x4b0(%rsp), %rax
imulq %r15, %rax
addq 0x4c0(%rsp), %rax
cmpb $0x1, (%r12,%rax)
jne 0x388a
movq 0x428(%rsp), %rax
movq 0x430(%rsp), %rcx
movq %r15, %rsi
shlq $0x7, %rsi
movq %r12, %rdi
shlq $0x7, %rdi
movq 0x18(%rax), %rax
movq 0x18(%rcx), %rcx
movq 0x68(%rax,%rsi), %rdx
cmpq 0x68(%rcx,%rdi), %rdx
jne 0x388a
testq %rdx, %rdx
je 0x3745
leaq 0x60(%rax,%rsi), %rax
leaq 0x60(%rcx,%rdi), %rcx
movq (%rcx), %rsi
movq (%rax), %rdi
callq 0x2130
testl %eax, %eax
jne 0x388a
leaq 0x1b0(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x3fa6
testb %al, %al
je 0x388a
movq 0x470(%rsp), %rax
movq %r12, (%rax,%r15,8)
movq %r15, (%rbx,%r12,8)
movq 0x5861(%rip), %rdi      # 0x8fd8
movl $0x12, %edx
leaq 0x299e(%rip), %rsi      # 0x6121
callq 0x2150
movq 0x5849(%rip), %rcx      # 0x8fd8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2100
movq 0x582e(%rip), %rdi      # 0x8fd8
movsbl %al, %esi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movq 0x440(%rsp), %rax
movq 0x20(%rax), %rbp
movq 0x18(%rax), %rax
subq %rax, %rbp
je 0x3861
sarq $0x7, %rbp
xorl %ebx, %ebx
movq 0x57f8(%rip), %rdi      # 0x8fd8
movl $0x2, %edx
leaq 0x2948(%rip), %rsi      # 0x6134
callq 0x2150
movq 0x57e0(%rip), %rdi      # 0x8fd8
movq %rbx, %rsi
callq 0x20c0
movl $0x4, %edx
leaq 0x292b(%rip), %rsi      # 0x6137
movq %rax, %rdi
movq %rax, %r14
callq 0x2150
movq 0x470(%rsp), %rax
movq (%rax,%rbx,8), %rsi
movq %r14, %rdi
callq 0x20c0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
incq %rbx
cmpq %rbx, %rbp
jne 0x37d9
movq 0x438(%rsp), %rax
movq $-0x1, %rcx
incl (%rax)
movq 0x470(%rsp), %rax
movq %rcx, (%rax,%r15,8)
movq 0x498(%rsp), %rax
movq %rcx, (%rax,%r12,8)
incq %r12
cmpq 0x18(%rsp), %r12
jne 0x36bb
movslq 0x4e0(%rsp), %rcx
movq 0x4d8(%rsp), %rax
leal -0x1(%rcx), %edx
movl %edx, 0x4e0(%rsp)
movslq (%rax,%rcx,4), %rax
movslq 0x4d0(%rsp), %rcx
cmpl %eax, %ecx
jle 0x38ef
movq 0x4c0(%rsp), %rdx
movq 0x4c8(%rsp), %rsi
leal -0x1(%rcx), %edi
movl %edi, 0x4d0(%rsp)
decl %edi
movslq (%rsi,%rcx,4), %r8
decq %rcx
movb $0x1, (%rdx,%r8)
cmpq %rax, %rcx
jg 0x38d5
movq 0x8(%rsp), %rdi
addq $-0x8, %r13
decq %rdi
jmp 0x2e2f
leaq 0x1b0(%rsp), %rdi
callq 0x3cde
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x392a
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x56a7(%rip), %rdi      # 0x8fd8
leaq 0x275f(%rip), %rsi      # 0x6097
movl $0x14, %edx
callq 0x2150
movl 0x94(%rsp), %esi
movq 0x5688(%rip), %rdi      # 0x8fd8
callq 0x21e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2100
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movq 0xf8(%rsp), %rdi
movl $0x1, %esi
callq 0x2120
leaq 0xe0(%rsp), %rdi
callq 0x41a8
movq 0xc8(%rsp), %rdi
leaq 0xc8(%rsp), %r15
cmpq %r15, %rdi
je 0x39c8
movq (%rdi), %rbx
movl $0x28, %esi
callq 0x2120
movq %rbx, %rdi
cmpq %r15, %rbx
jne 0x39b3
movq 0x130(%rsp), %rdi
movl $0x1, %esi
callq 0x2120
movq %r14, %rdi
callq 0x41a8
movq 0x100(%rsp), %rdi
leaq 0x100(%rsp), %r14
cmpq %r14, %rdi
je 0x3a0c
movq (%rdi), %rbx
movl $0x28, %esi
callq 0x2120
movq %rbx, %rdi
cmpq %r14, %rbx
jne 0x39f7
xorl %eax, %eax
addq $0x588, %rsp            # imm = 0x588
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x3af3
movq %rax, %rbx
jmp 0x3afb
movq %rax, %rbx
jmp 0x3b03
movq %rax, %rbx
jmp 0x3b0b
movq %rax, %rbx
jmp 0x3b13
movq %rax, %rbx
jmp 0x3b3f
movq %rax, %rbx
jmp 0x3b5c
movq %rax, %rbx
jmp 0x3b79
movq %rax, %rbx
jmp 0x3c03
movq %rax, %rbx
jmp 0x3c9f
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3aa0
jmp 0x3a96
jmp 0x3a96
jmp 0x3a96
jmp 0x3a96
jmp 0x3a96
jmp 0x3a96
movq %rax, %rbx
jmp 0x3b27
movq %rax, %rbx
jmp 0x3cc9
jmp 0x3aa0
movq %rax, %rbx
jmp 0x3cbc
jmp 0x3c8f
jmp 0x3ab3
jmp 0x3ab3
jmp 0x3ab3
movq 0x98(%rsp), %rdi
leaq 0x4e8(%rsp), %r14
leaq 0x500(%rsp), %r15
leaq 0x518(%rsp), %r12
leaq 0x530(%rsp), %r13
movq %rax, %rbx
testq %rdi, %rdi
je 0x3af3
movq 0xa8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq %r13, %rdi
callq 0x5670
movq %r12, %rdi
callq 0x5670
movq %r15, %rdi
callq 0x5670
movq %r14, %rdi
callq 0x5670
leaq 0x4a8(%rsp), %r14
movq %r14, %rdi
callq 0x3e62
movq -0x28(%r14), %r14
testq %r14, %r14
je 0x3b3f
movq 0x490(%rsp), %rsi
movq %r14, %rdi
subq %r14, %rsi
callq 0x2120
movq 0x458(%rsp), %rdi
testq %rdi, %rdi
je 0x3b5c
movq 0x468(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x408(%rsp), %rdi
testq %rdi, %rdi
je 0x3b79
movq 0x418(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
leaq 0x398(%rsp), %rdi
callq 0x5670
leaq 0x380(%rsp), %rdi
callq 0x5670
leaq 0x368(%rsp), %rdi
callq 0x5670
leaq 0x350(%rsp), %r14
movq %r14, %rdi
callq 0x5670
movq -0x38(%r14), %rdi
testq %rdi, %rdi
je 0x3bc9
movq 0x328(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x300(%rsp), %rdi
testq %rdi, %rdi
je 0x3be6
movq 0x310(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x2e8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c03
movq 0x2f8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
leaq 0x280(%rsp), %rdi
callq 0x5670
leaq 0x268(%rsp), %rdi
callq 0x5670
leaq 0x250(%rsp), %rdi
callq 0x5670
leaq 0x238(%rsp), %r14
movq %r14, %rdi
callq 0x5670
movq -0x38(%r14), %rdi
testq %rdi, %rdi
je 0x3c53
movq 0x210(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x1e8(%rsp), %rdi
testq %rdi, %rdi
je 0x3c70
movq 0x1f8(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
movq 0x1d0(%rsp), %rdi
testq %rdi, %rdi
je 0x3c9f
movq 0x1e0(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
jmp 0x3c9f
leaq 0x1b0(%rsp), %rdi
movq %rax, %rbx
callq 0x3cde
movq 0x138(%rsp), %rdi
testq %rdi, %rdi
je 0x3cbc
movq 0x148(%rsp), %rsi
subq %rdi, %rsi
callq 0x2120
leaq 0xc8(%rsp), %rdi
callq 0x412e
leaq 0x100(%rsp), %rdi
callq 0x412e
movq %rbx, %rdi
callq 0x21f0