// File: /workspace/github_cpp_makefile_star2_O2/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 $0x518, %rsp            # imm = 0x518
leaq 0xd8(%rsp), %rbx
leaq 0x140(%rsp), %rsi
movq %rbx, %rdi
callq 0x39e4
movq %rbx, %rdi
callq 0x3a25
leaq 0xd8(%rsp), %rdi
movq %rax, %r15
callq 0x3a25
leaq 0xd8(%rsp), %rdi
movq %rax, %r14
callq 0x3a25
leaq 0x140(%rsp), %rdi
leaq 0xd8(%rsp), %rcx
movq %rax, %rbx
movq %r15, %rsi
movq %r14, %rdx
callq 0x3a52
leaq 0x140(%rsp), %rdi
leaq 0xd8(%rsp), %rcx
movq %r14, %rsi
movq %rbx, %rdx
callq 0x3a52
leaq 0x140(%rsp), %rdi
leaq 0xd8(%rsp), %rcx
movq %rbx, %rsi
movq %r15, %rdx
callq 0x3a52
movq 0xf0(%rsp), %rax
shlq $0x7, %r15
leaq 0x60(%rax,%r15), %rdi
leaq 0x3c1b(%rip), %rsi      # 0x6004
callq 0x21f0
movq 0xf0(%rsp), %rax
shlq $0x7, %r14
leaq 0x60(%rax,%r14), %rdi
leaq 0x3c02(%rip), %rsi      # 0x6008
callq 0x21f0
movq 0xf0(%rsp), %rax
shlq $0x7, %rbx
leaq 0x60(%rax,%rbx), %rdi
leaq 0x3bea(%rip), %rsi      # 0x600d
callq 0x21f0
leaq 0xa0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x39e4
leaq 0xa0(%rsp), %rdi
callq 0x3a25
leaq 0xa0(%rsp), %rdi
movq %rax, %r12
callq 0x3a25
leaq 0xa0(%rsp), %rdi
movq %rax, %r15
callq 0x3a25
leaq 0xa0(%rsp), %rdi
movq %rax, %r14
callq 0x3a25
leaq 0x140(%rsp), %rdi
leaq 0xa0(%rsp), %rcx
movq %rax, %rbx
movq %r12, %rsi
movq %r15, %rdx
callq 0x3a52
leaq 0x140(%rsp), %rdi
leaq 0xa0(%rsp), %rcx
movq %r15, %rsi
movq %r14, %rdx
callq 0x3a52
leaq 0x140(%rsp), %rdi
leaq 0xa0(%rsp), %rcx
movq %r14, %rsi
movq %r12, %rdx
callq 0x3a52
leaq 0x140(%rsp), %rdi
leaq 0xa0(%rsp), %rcx
movq %r15, %rsi
movq %rbx, %rdx
callq 0x3a52
leaq 0xa0(%rsp), %r13
leaq 0x140(%rsp), %rdi
movq %rbx, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x3a52
movq 0xb8(%rsp), %rax
shlq $0x7, %r12
leaq 0x60(%rax,%r12), %rdi
leaq 0x3ae5(%rip), %rsi      # 0x6004
callq 0x21f0
movq 0xb8(%rsp), %rax
shlq $0x7, %r15
leaq 0x60(%rax,%r15), %rdi
leaq 0x3acc(%rip), %rsi      # 0x6008
callq 0x21f0
movq 0xb8(%rsp), %rax
shlq $0x7, %r14
leaq 0x60(%rax,%r14), %rdi
leaq 0x3ab4(%rip), %rsi      # 0x600d
callq 0x21f0
movq 0xb8(%rsp), %rax
shlq $0x7, %rbx
leaq 0x60(%rax,%rbx), %rdi
leaq 0x3a97(%rip), %rsi      # 0x600d
callq 0x21f0
andl $0x0, 0x7c(%rsp)
leaq 0xd8(%rsp), %rbx
leaq 0x128(%rsp), %rdi
movq %rbx, %rsi
callq 0x442c
leaq 0x150(%rsp), %r15
movq %rbx, -0x10(%r15)
movq %r13, -0x8(%r15)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4e58
leaq 0x268(%rsp), %rdi
leaq 0xa0(%rsp), %r14
movq %r14, %rsi
callq 0x4e58
movq 0xf8(%rsp), %rax
movq 0xc0(%rsp), %rcx
leaq 0x398(%rsp), %rdi
subq 0xf0(%rsp), %rax
subq 0xb8(%rsp), %rcx
sarq $0x7, %rax
sarq $0x7, %rcx
movq %rax, -0x10(%rdi)
movq %rcx, -0x8(%rdi)
leaq 0x128(%rsp), %rsi
callq 0x5204
leaq 0x3e8(%rsp), %rdi
leaq 0x7c(%rsp), %rax
leaq 0x47(%rsp), %rsi
leaq 0x46(%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 0x88(%rsp), %rdx
orq $-0x1, (%rdx)
movq -0x60(%rdi), %rsi
leaq 0x10(%rsp), %rcx
callq 0x5254
leaq 0x410(%rsp), %rdi
leaq 0x88(%rsp), %rdx
movq -0x28(%rdi), %rax
orq $-0x1, (%rdx)
movq -0x80(%rdi), %rsi
movq %rax, -0x10(%rdi)
leaq 0x10(%rsp), %rcx
callq 0x5254
movq 0x410(%rsp), %rax
movq %rax, 0x428(%rsp)
movq 0x388(%rsp), %rbx
movq 0x390(%rsp), %r14
movq %rbx, 0x438(%rsp)
movq %r14, 0x440(%rsp)
imulq %rbx, %r14
movq %r14, %rdi
callq 0x2030
movq %rax, 0x450(%rsp)
movq %r14, %rax
shrq $0x3e, %rax
shlq $0x2, %r14
negq %rax
sbbq %r15, %r15
orq %r14, %r15
movq %r15, %rdi
callq 0x2030
movq %rax, 0x458(%rsp)
orq $-0x1, 0x460(%rsp)
movq %r15, %rdi
callq 0x2030
leaq 0x438(%rsp), %rcx
leaq 0x478(%rsp), %rdi
movq %rax, 0x30(%rcx)
orl $-0x1, 0x38(%rcx)
leaq 0x88(%rsp), %rdx
movq %rbx, %rsi
callq 0x52ac
leaq 0x490(%rsp), %rdi
movq -0x108(%rdi), %rsi
leaq 0x88(%rsp), %rdx
callq 0x52ac
leaq 0x4a8(%rsp), %rdi
movq -0x120(%rdi), %rsi
leaq 0x88(%rsp), %rdx
callq 0x52ac
leaq 0x4c0(%rsp), %rdi
movq -0x138(%rdi), %rsi
leaq 0x88(%rsp), %rdx
callq 0x52ac
movq 0x478(%rsp), %rax
movq 0x388(%rsp), %rsi
movq %rax, 0x4d8(%rsp)
movq 0x490(%rsp), %rax
movq %rax, 0x4e8(%rsp)
movq 0x4a8(%rsp), %rax
movq %rax, 0x4f8(%rsp)
movq 0x4c0(%rsp), %rax
movq %rax, 0x508(%rsp)
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x46d0
movq 0x88(%rsp), %r14
movq 0x128(%rsp), %rax
xorl %ecx, %ecx
cmpq %rcx, 0x388(%rsp)
jbe 0x27fb
movq (%rax,%rcx,8), %rdx
movq %rcx, (%r14,%rdx,8)
incq %rcx
jmp 0x27e4
movq 0xf8(%rsp), %rax
leaq 0x10(%rsp), %r15
xorl %ecx, %ecx
subq 0xf0(%rsp), %rax
sarq $0x7, %rax
movq %rax, 0x20(%rsp)
cmpq %rax, %rcx
je 0x2948
cmpq %rax, %rcx
je 0x2940
movq 0x228(%rsp), %rax
imulq $0x18, %rcx, %r12
movq (%r14,%rcx,8), %r13
movq %rcx, 0x8(%rsp)
movq (%rax,%r12), %rbx
movq 0x8(%rax,%r12), %rbp
cmpq %rbp, %rbx
je 0x2877
movq (%rbx), %rax
movq %rax, 0x10(%rsp)
cmpq %r13, (%r14,%rax,8)
jbe 0x2871
movq 0x4d8(%rsp), %rdi
addq %r12, %rdi
movq %r15, %rsi
callq 0x5300
addq $0x8, %rbx
jmp 0x284b
movq 0x238(%rsp), %rax
movq (%rax,%r12), %rbx
movq 0x8(%rax,%r12), %rbp
cmpq %rbp, %rbx
je 0x28b4
movq (%rbx), %rax
movq %rax, 0x10(%rsp)
cmpq %r13, (%r14,%rax,8)
jbe 0x28ae
movq 0x4e8(%rsp), %rdi
addq %r12, %rdi
movq %r15, %rsi
callq 0x5300
addq $0x8, %rbx
jmp 0x2888
movq 0x248(%rsp), %rax
movq (%rax,%r12), %rbx
movq 0x8(%rax,%r12), %rbp
cmpq %rbp, %rbx
je 0x28f1
movq (%rbx), %rax
movq %rax, 0x10(%rsp)
cmpq %r13, (%r14,%rax,8)
jbe 0x28eb
movq 0x4f8(%rsp), %rdi
addq %r12, %rdi
movq %r15, %rsi
callq 0x5300
addq $0x8, %rbx
jmp 0x28c5
movq 0x258(%rsp), %rax
movq (%rax,%r12), %rbx
movq 0x8(%rax,%r12), %rbp
cmpq %rbp, %rbx
je 0x292e
movq (%rbx), %rax
movq %rax, 0x10(%rsp)
cmpq %r13, (%r14,%rax,8)
jbe 0x2928
movq 0x508(%rsp), %rdi
addq %r12, %rdi
movq %r15, %rsi
callq 0x5300
addq $0x8, %rbx
jmp 0x2902
movq 0x8(%rsp), %rcx
movq 0x20(%rsp), %rax
incq %rcx
jmp 0x2824
movq %rax, %rcx
jmp 0x281b
leaq 0x88(%rsp), %rdi
callq 0x4a9a
movq 0x140(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x20(%rax), %rax
subq %rcx, %rax
movq %rcx, 0x60(%rsp)
movq %rax, %rcx
sarq $0x7, %rcx
xorl %eax, %eax
movq %rcx, 0x68(%rsp)
cmpq %rcx, %rax
je 0x2a1e
movq 0x148(%rsp), %rcx
cmpq 0x68(%rsp), %rax
je 0x2a11
movq 0x60(%rsp), %rdi
movq %rax, %rsi
shlq $0x7, %rsi
movq 0x20(%rcx), %r8
xorl %r9d, %r9d
movq 0x28(%rdi,%rsi), %rdx
movq 0x58(%rdi,%rsi), %rsi
movq 0x18(%rcx), %rdi
subq %rdi, %r8
addq $0x58, %rdi
sarq $0x7, %r8
cmpq %r8, %r9
je 0x2a09
movq 0x440(%rsp), %r10
movq %r9, %r11
shlq $0x7, %r11
addq %rdi, %r11
imulq %rax, %r10
addq 0x450(%rsp), %r10
cmpq %r9, %r8
je 0x2a04
cmpq %rsi, (%r11)
jae 0x29f0
xorl %ebx, %ebx
jmp 0x29f7
cmpq %rdx, -0x30(%r11)
setae %bl
movb %bl, (%r10,%r9)
incq %r9
subq $-0x80, %r11
jmp 0x29e2
movq %r8, %r9
jmp 0x29bf
incq %rax
jmp 0x298c
movq 0x68(%rsp), %rcx
movq %rcx, %rax
jmp 0x297b
xorl %edx, %edx
movq $0x0, 0x38(%rsp)
cmpq %rcx, %rdx
jne 0x2a46
xorl %edx, %edx
testb $0x1, 0x38(%rsp)
movl $0x0, %eax
movq %rax, 0x38(%rsp)
jne 0x2a29
jmp 0x2c6b
movq 0x148(%rsp), %rax
movq %rax, 0x80(%rsp)
cmpq %rcx, %rdx
je 0x2c63
movq 0x80(%rsp), %rax
movq 0x60(%rsp), %rcx
movq %rdx, 0x48(%rsp)
movq 0x20(%rax), %rsi
subq 0x18(%rax), %rsi
movq %rdx, %rax
shlq $0x7, %rax
leaq (%rcx,%rax), %rdi
movq %rdi, 0x70(%rsp)
leaq 0x8(%rcx,%rax), %rdi
leaq 0x38(%rcx,%rax), %rax
xorl %ecx, %ecx
movq %rdi, 0x30(%rsp)
movq %rax, 0x18(%rsp)
sarq $0x7, %rsi
movq %rsi, (%rsp)
cmpq %rsi, %rcx
je 0x2c56
movq 0x440(%rsp), %r8
imulq %rdx, %r8
addq 0x450(%rsp), %r8
movq %r8, 0x28(%rsp)
cmpq %rsi, %rcx
je 0x2c4e
cmpb $0x1, (%r8,%rcx)
jne 0x2c36
movq 0x70(%rsp), %rax
movq 0x148(%rsp), %rsi
movq 0x450(%rsp), %rdx
movq 0x440(%rsp), %rbp
movq %rcx, %r13
movq 0x18(%rax), %rbx
movq %rsi, 0x8(%rsp)
movq %rdx, 0x20(%rsp)
cmpq %rdi, %rbx
je 0x2b86
cmpq %rdi, %rbx
je 0x2b81
movq 0x8(%rsp), %rax
movq 0x20(%rbx), %r12
shlq $0x7, %rcx
movb $0x1, %r15b
movq 0x18(%rax), %rax
imulq %rbp, %r12
addq 0x20(%rsp), %r12
leaq 0x8(%rax,%rcx), %r14
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x2b62
cmpq %r14, %rax
je 0x2b5d
movq 0x20(%rax), %rcx
cmpb $0x0, (%r12,%rcx)
jne 0x2b5a
movq %rax, %rdi
callq 0x2150
jmp 0x2b40
xorl %r15d, %r15d
movq %r14, %rax
jmp 0x2b3b
testb $0x1, %r15b
jne 0x2c14
movq %rbx, %rdi
callq 0x2150
movq 0x30(%rsp), %rdi
movq %rax, %rbx
movq %r13, %rcx
jmp 0x2b10
movq %rdi, %rbx
jmp 0x2b0b
movq 0x40(%rdi), %rbx
movq 0x18(%rsp), %rax
cmpq %rax, %rbx
je 0x2c3e
cmpq 0x18(%rsp), %rbx
je 0x2c02
movq 0x8(%rsp), %rax
movq 0x20(%rbx), %r12
shlq $0x7, %rcx
movb $0x1, %r15b
movq 0x18(%rax), %rax
imulq %rbp, %r12
addq 0x20(%rsp), %r12
leaq 0x38(%rax,%rcx), %r14
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x2bec
cmpq %r14, %rax
je 0x2be7
movq 0x20(%rax), %rcx
cmpb $0x0, (%r12,%rcx)
jne 0x2be4
movq %rax, %rdi
callq 0x2150
jmp 0x2bca
xorl %r15d, %r15d
movq %r14, %rax
jmp 0x2bc5
testb $0x1, %r15b
jne 0x2c14
movq %rbx, %rdi
callq 0x2150
movq %rax, %rbx
movq %r13, %rcx
jmp 0x2b98
movq 0x18(%rsp), %rax
movq 0x30(%rsp), %rdi
movq %rax, %rbx
jmp 0x2b8f
movq 0x28(%rsp), %r8
movq 0x48(%rsp), %rdx
movq (%rsp), %rsi
movq 0x30(%rsp), %rdi
movb $0x1, %al
movq %r13, %rcx
movq %rax, 0x38(%rsp)
movb $0x0, (%r8,%r13)
incq %rcx
jmp 0x2ac9
movq 0x48(%rsp), %rdx
movq (%rsp), %rsi
movq 0x28(%rsp), %r8
jmp 0x2c36
movq %rsi, %rcx
jmp 0x2aa7
movq 0x68(%rsp), %rcx
incq %rdx
jmp 0x2a56
movq %rcx, %rdx
jmp 0x2a29
leaq 0x140(%rsp), %rax
movq 0x735e(%rip), %rbp      # 0x9fd8
leaq 0x342f(%rip), %rbx      # 0x60b0
leaq 0x342b(%rip), %r14      # 0x60b3
xorl %r15d, %r15d
movq 0x258(%rax), %rax
movq %rax, 0x50(%rsp)
movq %r15, 0x58(%rsp)
movq 0x388(%rsp), %rax
decq %rax
cmpq %rax, %r15
jae 0x32be
movq 0x50(%rsp), %rax
movq (%rax), %rdi
movq 0x400(%rsp), %rax
movq %rdi, 0x88(%rsp)
movq (%rax,%rdi,8), %rcx
cmpq $-0x1, %rcx
je 0x2ce8
movq 0x428(%rsp), %rdx
orq $-0x1, (%rdx,%rcx,8)
movq (%rax,%rdi,8), %rdx
incq %rdx
jmp 0x2cea
xorl %edx, %edx
movq 0x148(%rsp), %rax
leaq 0x1(%rdx,%rdx,2), %r12
movq %rdi, 0x48(%rsp)
movq 0x20(%rax), %r15
subq 0x18(%rax), %r15
sarq $0x7, %r15
cmpq %rdx, %r15
je 0x3282
movq 0x440(%rsp), %rax
imulq %rdi, %rax
addq 0x450(%rsp), %rax
cmpb $0x1, (%rdx,%rax)
jne 0x2d8a
movq 0x428(%rsp), %rax
cmpq $-0x1, (%rax,%rdx,8)
jne 0x2d8a
movq %rdx, 0x10(%rsp)
movq %rdx, 0x20(%rsp)
leaq 0x3b8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x38ce
movq 0x20(%rsp), %rdx
movq 0x48(%rsp), %rdi
testb %al, %al
je 0x2d8a
movq %rdi, %rsi
leaq 0x140(%rsp), %rdi
callq 0x38fa
movq 0x48(%rsp), %rdi
movq 0x20(%rsp), %rdx
testb %al, %al
jne 0x2d96
incq %rdx
addq $0x3, %r12
jmp 0x2d08
cmpq $-0x1, %rdx
je 0x3282
movq 0x400(%rsp), %rax
movq %rdx, (%rax,%rdi,8)
movq 0x428(%rsp), %r15
movq %rdi, (%r15,%rdx,8)
movslq 0x470(%rsp), %rdx
movl 0x460(%rsp), %eax
movq 0x468(%rsp), %rcx
leaq 0x1(%rdx), %rsi
movl %esi, 0x470(%rsp)
movl %eax, 0x4(%rcx,%rdx,4)
movl %eax, 0x464(%rsp)
imulq $0x18, %rdi, %rsi
movq 0x4d8(%rsp), %rdx
movq 0x360(%rsp), %rcx
movq %rsi, (%rsp)
movq (%rdx,%rsi), %rax
movq 0x8(%rdx,%rsi), %rdx
movq %rdx, 0x80(%rsp)
movq %rax, %rdx
movq %rax, 0x28(%rsp)
cmpq 0x80(%rsp), %rdx
je 0x2e87
movq 0x440(%rsp), %r8
movq -0x8(%rcx,%r12,8), %rsi
movq (%rcx,%r12,8), %rdi
movq 0x450(%rsp), %r9
movq 0x458(%rsp), %r10
imulq (%rdx), %r8
cmpq %rdi, %rsi
je 0x2e81
movq (%rsi), %r11
cmpq $-0x1, (%r15,%r11,8)
jne 0x2e7b
addq %r8, %r11
cmpb $0x1, (%r9,%r11)
jne 0x2e7b
movb $0x0, (%r9,%r11)
movslq 0x460(%rsp), %r13
leaq 0x1(%r13), %rax
movl %eax, 0x460(%rsp)
movl %r11d, 0x4(%r10,%r13,4)
addq $0x8, %rsi
jmp 0x2e45
addq $0x8, %rdx
jmp 0x2e16
movq 0x4e8(%rsp), %rdx
movq (%rsp), %rsi
movq 0x370(%rsp), %rcx
movq (%rdx,%rsi), %rax
movq 0x8(%rdx,%rsi), %rdx
movq %rdx, 0x60(%rsp)
movq %rax, %rdx
movq %rax, 0x8(%rsp)
cmpq 0x60(%rsp), %rdx
je 0x2f20
movq 0x440(%rsp), %r8
movq -0x8(%rcx,%r12,8), %rsi
movq (%rcx,%r12,8), %rdi
movq 0x450(%rsp), %r9
movq 0x458(%rsp), %r10
imulq (%rdx), %r8
cmpq %rdi, %rsi
je 0x2f1a
movq (%rsi), %r11
cmpq $-0x1, (%r15,%r11,8)
jne 0x2f14
addq %r8, %r11
cmpb $0x1, (%r9,%r11)
jne 0x2f14
movb $0x0, (%r9,%r11)
movslq 0x460(%rsp), %rax
leaq 0x1(%rax), %r13
movl %r13d, 0x460(%rsp)
movl %r11d, 0x4(%r10,%rax,4)
addq $0x8, %rsi
jmp 0x2edd
addq $0x8, %rdx
jmp 0x2eb1
movq 0x340(%rsp), %rax
movq 0x4f8(%rsp), %rcx
addq (%rsp), %rcx
movq -0x8(%rax,%r12,8), %rdx
movq (%rax,%r12,8), %rsi
movq %rcx, 0x18(%rsp)
movq %rdx, 0x110(%rsp)
movq %rsi, 0x30(%rsp)
cmpq %rsi, %rdx
je 0x2fbf
movq 0x18(%rsp), %rax
movq (%rdx), %rsi
movq 0x440(%rsp), %r9
movq 0x450(%rsp), %r10
movq 0x458(%rsp), %r11
movq (%rax), %rdi
movq 0x8(%rax), %r8
cmpq %r8, %rdi
je 0x2fb4
movq (%rdi), %r13
imulq %r9, %r13
addq %rsi, %r13
cmpb $0x1, (%r10,%r13)
jne 0x2fae
movb $0x0, (%r10,%r13)
movslq 0x460(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x460(%rsp)
movl %r13d, 0x4(%r11,%rax,4)
addq $0x8, %rdi
jmp 0x2f7b
movq 0x30(%rsp), %rsi
addq $0x8, %rdx
jmp 0x2f4f
movq 0x350(%rsp), %rax
movq (%rsp), %rdx
addq 0x508(%rsp), %rdx
movq -0x8(%rax,%r12,8), %rcx
movq (%rax,%r12,8), %rax
movq %rdx, (%rsp)
movq %rax, 0x18(%rsp)
movq %rcx, 0x118(%rsp)
cmpq 0x18(%rsp), %rcx
je 0x305f
movq (%rsp), %rax
movq (%rcx), %rdx
movq 0x440(%rsp), %r8
movq 0x450(%rsp), %r9
movq 0x458(%rsp), %r10
movq (%rax), %rsi
movq 0x8(%rax), %rdi
cmpq %rdi, %rsi
je 0x3054
movq (%rsi), %r11
imulq %r8, %r11
addq %rdx, %r11
cmpb $0x1, (%r9,%r11)
jne 0x304e
movb $0x0, (%r9,%r11)
movslq 0x460(%rsp), %rax
leaq 0x1(%rax), %r12
movl %r12d, 0x460(%rsp)
movl %r11d, 0x4(%r10,%rax,4)
addq $0x8, %rsi
jmp 0x301a
movq 0x30(%rsp), %rsi
addq $0x8, %rcx
jmp 0x2fed
movq 0x388(%rsp), %rax
movq 0x8(%rsp), %rdx
shrq %rax
cmpq %rax, 0x58(%rsp)
jbe 0x30ac
movq 0x48(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x140(%rsp), %rdi
callq 0x37bc
testb %al, %al
jne 0x346e
leaq 0x438(%rsp), %rdi
callq 0x3890
movq 0x58(%rsp), %r15
jmp 0x2c9c
movq 0x28(%rsp), %rcx
cmpq 0x80(%rsp), %rcx
je 0x31a2
movq 0x458(%rsp), %r8
movq (%rcx), %rax
movq 0x450(%rsp), %rdi
movq 0x110(%rsp), %r13
movq %rcx, 0x28(%rsp)
movq %r8, 0x120(%rsp)
movq 0x440(%rsp), %r8
movq %rax, (%rsp)
movq %rdi, 0x38(%rsp)
imulq %rax, %r8
movq %r8, 0x68(%rsp)
addq %rdi, %r8
movq %r8, 0x70(%rsp)
cmpq %rsi, %r13
je 0x3199
movq (%r13), %r12
cmpq $-0x1, (%r15,%r12,8)
jne 0x3190
cmpb $0x1, (%r8,%r12)
jne 0x3190
movq (%rsp), %rsi
leaq 0x140(%rsp), %rdi
movq %r12, %rdx
callq 0x37bc
movq 0x70(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rcx
movq 0x8(%rsp), %rdx
testb %al, %al
jne 0x3190
addq 0x68(%rsp), %r12
movq 0x38(%rsp), %rax
cmpb $0x1, (%rax,%r12)
jne 0x3190
movq 0x38(%rsp), %rax
movq 0x120(%rsp), %rdi
movb $0x0, (%rax,%r12)
movslq 0x460(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x460(%rsp)
movq 0x28(%rsp), %rcx
movl %r12d, 0x4(%rdi,%rax,4)
addq $0x8, %r13
jmp 0x3109
addq $0x8, %rcx
jmp 0x30b1
movq 0x18(%rsp), %rcx
cmpq 0x60(%rsp), %rdx
je 0x3076
movq 0x458(%rsp), %rdi
movq (%rdx), %rax
movq 0x450(%rsp), %rsi
movq 0x118(%rsp), %r13
movq %rdx, 0x8(%rsp)
movq %rdi, 0x38(%rsp)
movq 0x440(%rsp), %rdi
movq %rax, 0x30(%rsp)
movq %rsi, (%rsp)
imulq %rax, %rdi
movq %rdi, 0x70(%rsp)
addq %rsi, %rdi
movq %rdi, 0x28(%rsp)
cmpq %rcx, %r13
je 0x3279
movq (%r13), %r12
cmpq $-0x1, (%r15,%r12,8)
jne 0x3273
cmpb $0x1, (%rdi,%r12)
jne 0x3273
movq 0x30(%rsp), %rsi
leaq 0x140(%rsp), %rdi
movq %r12, %rdx
callq 0x37bc
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %rdx
testb %al, %al
jne 0x3273
addq 0x70(%rsp), %r12
movq (%rsp), %rax
cmpb $0x1, (%rax,%r12)
jne 0x3273
movq (%rsp), %rax
movq 0x38(%rsp), %rsi
movb $0x0, (%rax,%r12)
movslq 0x460(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x460(%rsp)
movq 0x18(%rsp), %rcx
movl %r12d, 0x4(%rsi,%rax,4)
addq $0x8, %r13
jmp 0x31f9
addq $0x8, %rdx
jmp 0x31a7
cmpq $-0x1, %rdi
je 0x3295
movq 0x400(%rsp), %rax
orq $-0x1, (%rax,%rdi,8)
movq 0x58(%rsp), %r15
testq %r15, %r15
je 0x3481
addq $-0x8, 0x50(%rsp)
leaq 0x438(%rsp), %rdi
decq %r15
callq 0x3890
jmp 0x2c97
movq 0x50(%rsp), %rax
xorl %r13d, %r13d
movq (%rax), %r12
movq 0x148(%rsp), %rax
movq %r12, 0x88(%rsp)
movq %r12, 0x20(%rsp)
movq 0x20(%rax), %rcx
subq 0x18(%rax), %rcx
movq %rcx, %rax
sarq $0x7, %rax
movq %rax, 0x8(%rsp)
cmpq %rax, %r13
je 0x3453
cmpq %rax, %r13
je 0x344b
movq 0x428(%rsp), %rax
movq %r13, 0x10(%rsp)
cmpq $-0x1, (%rax,%r13,8)
jne 0x343e
movq 0x440(%rsp), %rax
imulq %r12, %rax
addq 0x450(%rsp), %rax
cmpb $0x1, (%r13,%rax)
jne 0x343e
leaq 0x3b8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x38ce
testb %al, %al
je 0x343e
leaq 0x140(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x38fa
testb %al, %al
je 0x343e
movq 0x400(%rsp), %rax
movq %r13, (%rax,%r12,8)
movq 0x428(%rsp), %rax
movq %r12, (%rax,%r13,8)
leaq 0x2d05(%rip), %rsi      # 0x609d
movq %rbp, %rdi
callq 0x2110
movq %rax, %rdi
callq 0x20b0
movq 0x3d0(%rsp), %rax
xorl %r15d, %r15d
movq 0x20(%rax), %r12
subq 0x18(%rax), %r12
sarq $0x7, %r12
cmpq %r12, %r15
je 0x3410
cmpq %r15, %r12
je 0x340b
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x2110
movq %rax, %rdi
movq %r15, %rsi
callq 0x20e0
movq %rax, %rdi
movq %r14, %rsi
callq 0x2110
movq 0x400(%rsp), %rcx
movq (%rcx,%r15,8), %rsi
movq %rax, %rdi
callq 0x20e0
movq %rax, %rdi
callq 0x20b0
incq %r15
jmp 0x33c4
movq %r12, %r15
jmp 0x33bf
movq 0x3c8(%rsp), %rax
movq 0x20(%rsp), %r12
movq 0x58(%rsp), %r15
incl (%rax)
movq 0x400(%rsp), %rax
orq $-0x1, (%rax,%r12,8)
movq 0x428(%rsp), %rax
orq $-0x1, (%rax,%r13,8)
movq 0x8(%rsp), %rax
incq %r13
jmp 0x32fb
movq %rax, %r13
jmp 0x32f2
leaq 0x438(%rsp), %rdi
callq 0x3890
addq $-0x8, 0x50(%rsp)
decq %r15
jmp 0x2c97
movq 0x58(%rsp), %r15
addq $0x8, 0x50(%rsp)
incq %r15
jmp 0x2c97
leaq 0x140(%rsp), %rdi
callq 0x370c
leaq 0x128(%rsp), %rdi
callq 0x4a9a
movq 0x6b36(%rip), %rdi      # 0x9fd8
leaq 0x2b6a(%rip), %rsi      # 0x6013
callq 0x2110
movl 0x7c(%rsp), %esi
movq %rax, %rdi
callq 0x21d0
movq %rax, %rdi
callq 0x20b0
leaq 0xa0(%rsp), %rdi
callq 0x3a70
leaq 0xd8(%rsp), %rdi
callq 0x3a70
xorl %eax, %eax
addq $0x518, %rsp            # imm = 0x518
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
jmp 0x3640
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x3665
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x3672
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x367f
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x368c
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x36a6
movq %rax, %r12
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x36b3
movq %rax, %r12
leaq 0x268(%rsp), %rbx
jmp 0x36bb
movq %rax, %r12
jmp 0x36c3
movq %rax, %r12
jmp 0x36dd
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3618
jmp 0x3610
jmp 0x3610
jmp 0x3610
jmp 0x3610
jmp 0x3610
jmp 0x3610
jmp 0x3618
movq %rax, %r12
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
jmp 0x3699
movq %rax, %r12
jmp 0x36f7
movq %rax, %r12
jmp 0x36ea
jmp 0x36cd
jmp 0x36cd
jmp 0x3630
jmp 0x3630
jmp 0x3630
leaq 0x88(%rsp), %rdi
movq %rax, %r12
callq 0x4a9a
leaq 0x4c0(%rsp), %rdi
leaq 0x150(%rsp), %r15
leaq 0x268(%rsp), %rbx
leaq 0x398(%rsp), %r14
callq 0x5320
leaq 0x4a8(%rsp), %rdi
callq 0x5320
leaq 0x490(%rsp), %rdi
callq 0x5320
leaq 0x478(%rsp), %rdi
callq 0x5320
leaq 0x438(%rsp), %rdi
callq 0x378a
leaq 0x410(%rsp), %rdi
callq 0x4a9a
leaq 0x3e8(%rsp), %rdi
callq 0x4a9a
movq %r14, %rdi
callq 0x4a9a
movq %rbx, %rdi
callq 0x5342
movq %r15, %rdi
callq 0x5342
jmp 0x36dd
leaq 0x140(%rsp), %rdi
movq %rax, %r12
callq 0x370c
leaq 0x128(%rsp), %rdi
callq 0x4a9a
leaq 0xa0(%rsp), %rdi
callq 0x3a70
leaq 0xd8(%rsp), %rdi
callq 0x3a70
movq %r12, %rdi
callq 0x21e0