// File: /workspace/github_cpp_makefile_star2_O2/xnevs[P]bullimp/examples/compare.cpp
// Function: main
int main(int argc, char *argv[]) { 
    using namespace std;

    if(argc < 2) {
        cout << "Usage: ./compare test.AXX test.BXX" << endl;
        return 1;
    }

    ifstream in{argv[1], ios::in|ios::binary};
    if(!in.is_open()) return -1;

    auto pattern = read_amalfi<graph_type>(in);
    in.close();

    in.open(argv[2], ios::in|ios::binary);
    if(!in.is_open()) return -1;

    auto graph = read_amalfi<graph_type>(in);
    in.close();

    int count;
    chrono::time_point<chrono::steady_clock> start, end;
    chrono::milliseconds elapsed;

    count = 0;

    start = chrono::steady_clock::now();

    ullimp::ullimp_subgraph_iso(
            pattern,
            graph,
            [&count](auto const &a, auto const &b){
                ++count;
                return true;
            });

    end = chrono::steady_clock::now();
    elapsed = chrono::duration_cast<chrono::milliseconds>(end - start);

    cout << setw(8) << "ullimp: " << count << ", " << "time = " << elapsed.count() << " ms" << endl;


    count = 0;

    start = chrono::steady_clock::now();

    boost::vf2_subgraph_iso(
            pattern,
            graph,
            [&count](auto const &a, auto const &b){
                ++count;
                return true;
            });

    end = chrono::steady_clock::now();
    elapsed = chrono::duration_cast<chrono::milliseconds>(end - start);

    cout << setw(8) << "vf2: " << count << ", " << "time = " << elapsed.count() << " ms" << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x708, %rsp            # imm = 0x708
cmpl $0x1, %edi
jg 0x23cd
movq 0xac27(%rip), %rdi      # 0xcfd8
leaq 0x5c4c(%rip), %rsi      # 0x8004
callq 0x2140
movq %rax, %rdi
callq 0x20c0
pushq $0x1
popq %rbx
jmp 0x3a83
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq 0x500(%rsp), %rdi
pushq $0xc
popq %rdx
callq 0x2230
leaq 0x578(%rsp), %r14
movq %r14, %rdi
callq 0x2070
testb %al, %al
je 0x26cf
leaq 0x4c8(%rsp), %rdi
leaq 0x500(%rsp), %rsi
callq 0x3fff
leaq 0x500(%rsp), %rdi
callq 0x2060
movq 0x10(%rbx), %rsi
leaq 0x500(%rsp), %rdi
pushq $0xc
popq %rdx
callq 0x20f0
movq %r14, %rdi
callq 0x2070
testb %al, %al
je 0x26d7
leaq 0x490(%rsp), %rbx
leaq 0x500(%rsp), %rsi
movq %rbx, %rdi
callq 0x3fff
leaq 0x500(%rsp), %rdi
callq 0x2060
andl $0x0, 0x1c(%rsp)
callq 0x21b0
movq %rax, 0x480(%rsp)
leaq 0x4c8(%rsp), %r14
leaq 0xa0(%rsp), %rdi
movq %r14, %rsi
callq 0x5704
leaq 0xe0(%rsp), %r15
movq %r14, -0x10(%r15)
movq %rbx, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
callq 0x4b94
leaq 0x1f8(%rsp), %rbx
leaq 0x490(%rsp), %rsi
movq %rbx, %rdi
callq 0x4b94
movq 0x4e8(%rsp), %rax
subq 0x4e0(%rsp), %rax
pushq $0x68
popq %rcx
cqto
leaq 0x328(%rsp), %r14
idivq %rcx
movq %rax, -0x10(%r14)
movq 0x4b0(%rsp), %rax
subq 0x4a8(%rsp), %rax
cqto
idivq %rcx
movq %rax, -0x8(%r14)
leaq 0xa0(%rsp), %rsi
movq %r14, %rdi
callq 0x4f64
leaq 0x50(%rsp), %rdx
leaq 0x1c(%rsp), %rax
leaq 0x350(%rsp), %rdi
movq %rax, -0x8(%rdi)
orq $-0x1, (%rdx)
movq -0x38(%rdi), %rsi
leaq 0x88(%rsp), %rcx
callq 0x4fb4
leaq 0x378(%rsp), %rdi
leaq 0x50(%rsp), %rdx
movq -0x28(%rdi), %rax
orq $-0x1, (%rdx)
movq -0x58(%rdi), %rsi
movq %rax, -0x10(%rdi)
leaq 0x88(%rsp), %rcx
callq 0x4fb4
movq 0x378(%rsp), %rax
movq %rax, 0x390(%rsp)
movq 0x318(%rsp), %rbx
movq 0x320(%rsp), %r13
movq %rbx, 0x3a0(%rsp)
movq %r13, 0x3a8(%rsp)
imulq %rbx, %r13
movq %r13, %rdi
callq 0x2030
movq %rax, 0x3b8(%rsp)
movq %r13, %rax
shrq $0x3e, %rax
shlq $0x2, %r13
negq %rax
sbbq %r12, %r12
orq %r13, %r12
movq %r12, %rdi
callq 0x2030
movq %rax, 0x3c0(%rsp)
orq $-0x1, 0x3c8(%rsp)
movq %r12, %rdi
callq 0x2030
leaq 0x3a0(%rsp), %rcx
leaq 0x3e0(%rsp), %rdi
movq %rax, 0x30(%rcx)
orl $-0x1, 0x38(%rcx)
leaq 0x50(%rsp), %rdx
movq %rbx, %rsi
callq 0x500c
leaq 0x3f8(%rsp), %rdi
movq -0xe0(%rdi), %rsi
leaq 0x50(%rsp), %rdx
callq 0x500c
leaq 0x410(%rsp), %rdi
movq -0xf8(%rdi), %rsi
leaq 0x50(%rsp), %rdx
callq 0x500c
leaq 0x428(%rsp), %rdi
movq -0x110(%rdi), %rsi
leaq 0x50(%rsp), %rdx
callq 0x500c
movq 0x3e0(%rsp), %rax
movq 0x318(%rsp), %rsi
movq %rax, 0x440(%rsp)
movq 0x3f8(%rsp), %rax
movq %rax, 0x450(%rsp)
movq 0x410(%rsp), %rax
movq %rax, 0x460(%rsp)
movq 0x428(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x50(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x5060
movq 0x50(%rsp), %r15
movq 0xa0(%rsp), %rax
xorl %ecx, %ecx
cmpq %rcx, 0x318(%rsp)
jbe 0x26df
movq (%rax,%rcx,8), %rdx
movq %rcx, (%r15,%rdx,8)
incq %rcx
jmp 0x26b8
pushq $-0x1
popq %rbx
jmp 0x3a76
pushq $-0x1
popq %rbx
jmp 0x3a69
movq 0x4e8(%rsp), %rax
subq 0x4e0(%rsp), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
leaq 0x88(%rsp), %r13
xorl %ecx, %ecx
movq %rax, 0x8(%rsp)
cmpq %rax, %rcx
je 0x2843
cmpq %rax, %rcx
je 0x283b
movq 0x1b8(%rsp), %rax
imulq $0x18, %rcx, %r14
movq (%r15,%rcx,8), %rbp
movq %rcx, 0x10(%rsp)
movq (%rax,%r14), %r12
movq 0x8(%rax,%r14), %rbx
cmpq %rbx, %r12
je 0x2766
movq (%r12), %rax
movq %rax, 0x88(%rsp)
cmpq %rbp, (%r15,%rax,8)
jbe 0x2760
movq 0x440(%rsp), %rdi
addq %r14, %rdi
movq %r13, %rsi
callq 0x50b4
addq $0x8, %r12
jmp 0x2736
movq 0x1c8(%rsp), %rax
movq (%rax,%r14), %r12
movq 0x8(%rax,%r14), %rbx
cmpq %rbx, %r12
je 0x27a7
movq (%r12), %rax
movq %rax, 0x88(%rsp)
cmpq %rbp, (%r15,%rax,8)
jbe 0x27a1
movq 0x450(%rsp), %rdi
addq %r14, %rdi
movq %r13, %rsi
callq 0x50b4
addq $0x8, %r12
jmp 0x2777
movq 0x1d8(%rsp), %rax
movq (%rax,%r14), %r12
movq 0x8(%rax,%r14), %rbx
cmpq %rbx, %r12
je 0x27e8
movq (%r12), %rax
movq %rax, 0x88(%rsp)
cmpq %rbp, (%r15,%rax,8)
jbe 0x27e2
movq 0x460(%rsp), %rdi
addq %r14, %rdi
movq %r13, %rsi
callq 0x50b4
addq $0x8, %r12
jmp 0x27b8
movq 0x1e8(%rsp), %rax
movq (%rax,%r14), %r12
movq 0x8(%rax,%r14), %rbx
cmpq %rbx, %r12
je 0x2829
movq (%r12), %rax
movq %rax, 0x88(%rsp)
cmpq %rbp, (%r15,%rax,8)
jbe 0x2823
movq 0x470(%rsp), %rdi
addq %r14, %rdi
movq %r13, %rsi
callq 0x50b4
addq $0x8, %r12
jmp 0x27f9
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
incq %rcx
jmp 0x270f
movq %rax, %rcx
jmp 0x2706
leaq 0x50(%rsp), %rdi
callq 0x531e
movq 0xd0(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x20(%rax), %rax
subq %rcx, %rax
movq %rcx, 0x80(%rsp)
cqto
pushq $0x68
popq %rcx
idivq %rcx
xorl %ecx, %ecx
movq %rax, 0x78(%rsp)
cmpq %rax, %rcx
je 0x291d
movq 0xd8(%rsp), %rsi
cmpq %rax, %rcx
je 0x2915
movq 0x80(%rsp), %rdx
imulq $0x68, %rcx, %rax
movq 0x18(%rsi), %r9
movq 0x28(%rdx,%rax), %rdi
movq 0x58(%rdx,%rax), %r8
movq 0x20(%rsi), %rax
subq %r9, %rax
cqto
pushq $0x68
popq %r10
idivq %r10
addq $0x58, %r9
xorl %edx, %edx
cmpq %rax, %rdx
je 0x2908
movq 0x3a8(%rsp), %r10
imulq $0x68, %rdx, %r11
addq %r9, %r11
imulq %rcx, %r10
addq 0x3b8(%rsp), %r10
cmpq %rdx, %rax
je 0x2903
cmpq %r8, (%r11)
jae 0x28ef
xorl %ebx, %ebx
jmp 0x28f6
cmpq %rdi, -0x30(%r11)
setae %bl
movb %bl, (%r10,%rdx)
incq %rdx
addq $0x68, %r11
jmp 0x28e1
movq %rax, %rdx
jmp 0x28c1
movq 0x78(%rsp), %rax
incq %rcx
jmp 0x2888
movq %rax, %rcx
jmp 0x2877
xorl %esi, %esi
movq $0x0, 0x40(%rsp)
cmpq %rax, %rsi
jne 0x2945
xorl %esi, %esi
testb $0x1, 0x40(%rsp)
movl $0x0, %ecx
movq %rcx, 0x40(%rsp)
jne 0x2928
jmp 0x2b73
movq 0xd8(%rsp), %rcx
movq %rcx, 0x70(%rsp)
cmpq %rax, %rsi
je 0x2b6b
movq 0x70(%rsp), %rcx
movq 0x20(%rcx), %rax
subq 0x18(%rcx), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
movq 0x80(%rsp), %rcx
imulq $0x68, %rsi, %rdx
movq %rsi, 0x30(%rsp)
leaq (%rcx,%rdx), %rdi
movq %rdi, 0xb8(%rsp)
leaq 0x8(%rcx,%rdx), %rdi
leaq 0x38(%rcx,%rdx), %rcx
xorl %edx, %edx
movq %rdi, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq %rax, 0x48(%rsp)
cmpq %rax, %rdx
je 0x2b5e
movq 0x3a8(%rsp), %r8
imulq %rsi, %r8
addq 0x3b8(%rsp), %r8
movq %r8, 0x38(%rsp)
cmpq %rax, %rdx
je 0x2b56
cmpb $0x1, (%r8,%rdx)
jne 0x2b3d
movq 0xb8(%rsp), %rax
movq 0xd8(%rsp), %rsi
movq 0x3b8(%rsp), %rcx
movq 0x3a8(%rsp), %rbx
movq %rdx, %rbp
movq 0x18(%rax), %r12
movq %rsi, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
cmpq %rdi, %r12
je 0x2a8b
cmpq %rdi, %r12
je 0x2a86
movq 0x10(%rsp), %rax
movq 0x20(%r12), %r14
imulq $0x68, %rdx, %rcx
movb $0x1, %r13b
movq 0x18(%rax), %rax
imulq %rbx, %r14
addq 0x8(%rsp), %r14
leaq 0x8(%rax,%rcx), %r15
movq 0x10(%r15), %rax
cmpq %r15, %rax
je 0x2a67
cmpq %r15, %rax
je 0x2a62
movq 0x20(%rax), %rcx
cmpb $0x0, (%r14,%rcx)
jne 0x2a5f
movq %rax, %rdi
callq 0x2180
jmp 0x2a45
xorl %r13d, %r13d
movq %r15, %rax
jmp 0x2a40
testb $0x1, %r13b
jne 0x2b1a
movq %r12, %rdi
callq 0x2180
movq 0x28(%rsp), %rdi
movq %rax, %r12
movq %rbp, %rdx
jmp 0x2a14
movq %rdi, %r12
jmp 0x2a0f
movq 0x40(%rdi), %r12
movq 0x20(%rsp), %rax
cmpq %rax, %r12
je 0x2b45
cmpq 0x20(%rsp), %r12
je 0x2b08
movq 0x10(%rsp), %rax
movq 0x20(%r12), %r14
imulq $0x68, %rdx, %rcx
movb $0x1, %r13b
movq 0x18(%rax), %rax
imulq %rbx, %r14
addq 0x8(%rsp), %r14
leaq 0x38(%rax,%rcx), %r15
movq 0x10(%r15), %rax
cmpq %r15, %rax
je 0x2af2
cmpq %r15, %rax
je 0x2aed
movq 0x20(%rax), %rcx
cmpb $0x0, (%r14,%rcx)
jne 0x2aea
movq %rax, %rdi
callq 0x2180
jmp 0x2ad0
xorl %r13d, %r13d
movq %r15, %rax
jmp 0x2acb
testb $0x1, %r13b
jne 0x2b1a
movq %r12, %rdi
callq 0x2180
movq %rax, %r12
movq %rbp, %rdx
jmp 0x2a9d
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdi
movq %rax, %r12
jmp 0x2a94
movb $0x1, %al
movq 0x38(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdi
movq %rbp, %rdx
movq %rax, 0x40(%rsp)
movq 0x48(%rsp), %rax
movb $0x0, (%r8,%rbp)
incq %rdx
jmp 0x29ca
movq 0x30(%rsp), %rsi
movq 0x48(%rsp), %rax
movq 0x38(%rsp), %r8
jmp 0x2b3d
movq %rax, %rdx
jmp 0x29a8
movq 0x78(%rsp), %rax
incq %rsi
jmp 0x2952
movq %rax, %rsi
jmp 0x2928
leaq 0xd0(%rsp), %rax
xorl %r12d, %r12d
movq 0x258(%rax), %r15
movq 0x318(%rsp), %rax
movq (%r15), %r13
decq %rax
cmpq %rax, %r12
jae 0x3114
movq 0x368(%rsp), %rax
movq (%rax,%r13,8), %rcx
cmpq $-0x1, %rcx
je 0x2bc4
movq 0x390(%rsp), %rdx
orq $-0x1, (%rdx,%rcx,8)
movq (%rax,%r13,8), %rsi
incq %rsi
jmp 0x2bc6
xorl %esi, %esi
movq 0xd8(%rsp), %rcx
movq 0x20(%rcx), %rax
subq 0x18(%rcx), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
leaq 0x1(%rsi,%rsi,2), %rbp
movq %rax, %r14
cmpq %rsi, %r14
je 0x2d36
movq 0x3a8(%rsp), %rax
imulq %r13, %rax
addq 0x3b8(%rsp), %rax
cmpb $0x1, (%rsi,%rax)
jne 0x2c39
movq 0x390(%rsp), %rax
cmpq $-0x1, (%rax,%rsi,8)
jne 0x2c39
leaq 0xd0(%rsp), %rdi
movq %rsi, %rdx
movq %r13, %rsi
movq %rdx, 0x20(%rsp)
callq 0x3efa
movq 0x20(%rsp), %rsi
testb %al, %al
jne 0x2c42
incq %rsi
addq $0x3, %rbp
jmp 0x2be6
cmpq $-0x1, %rsi
je 0x2d36
movq 0x368(%rsp), %rax
movq %r15, 0xc0(%rsp)
movq %rsi, (%rax,%r13,8)
movq 0x390(%rsp), %r15
movq %r13, (%r15,%rsi,8)
movslq 0x3d8(%rsp), %rdx
movl 0x3c8(%rsp), %eax
movq 0x3d0(%rsp), %rcx
leaq 0x1(%rdx), %rsi
movl %esi, 0x3d8(%rsp)
movl %eax, 0x4(%rcx,%rdx,4)
movl %eax, 0x3cc(%rsp)
imulq $0x18, %r13, %rax
movq 0x440(%rsp), %rdx
movq 0x2f0(%rsp), %rcx
movq (%rdx,%rax), %rsi
movq 0x8(%rdx,%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rsi, %rdx
movq %rsi, 0x10(%rsp)
cmpq 0x48(%rsp), %rdx
je 0x2d6b
movq 0x3a8(%rsp), %r8
movq -0x8(%rcx,%rbp,8), %rsi
movq (%rcx,%rbp,8), %rdi
movq 0x3b8(%rsp), %r9
movq 0x3c0(%rsp), %r10
imulq (%rdx), %r8
cmpq %rdi, %rsi
je 0x2d30
movq (%rsi), %r11
cmpq $-0x1, (%r15,%r11,8)
jne 0x2d2a
addq %r8, %r11
cmpb $0x1, (%r9,%r11)
jne 0x2d2a
movb $0x0, (%r9,%r11)
movslq 0x3c8(%rsp), %rbx
leaq 0x1(%rbx), %r14
movl %r14d, 0x3c8(%rsp)
movl %r11d, 0x4(%r10,%rbx,4)
addq $0x8, %rsi
jmp 0x2cf3
addq $0x8, %rdx
jmp 0x2cc3
cmpq $-0x1, %r13
je 0x2d49
movq 0x368(%rsp), %rax
orq $-0x1, (%rax,%r13,8)
testq %r12, %r12
je 0x31dd
leaq 0x3a0(%rsp), %rdi
decq %r12
addq $-0x8, %r15
callq 0x3ebc
jmp 0x2b85
movq 0x450(%rsp), %rdx
movq 0x300(%rsp), %rcx
movq (%rdx,%rax), %rsi
movq 0x8(%rdx,%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rsi, %rdx
movq %rsi, 0x40(%rsp)
cmpq 0x30(%rsp), %rdx
je 0x2e00
movq 0x3a8(%rsp), %r8
movq -0x8(%rcx,%rbp,8), %rsi
movq (%rcx,%rbp,8), %rdi
movq 0x3b8(%rsp), %r9
movq 0x3c0(%rsp), %r10
imulq (%rdx), %r8
cmpq %rdi, %rsi
je 0x2dfa
movq (%rsi), %r11
cmpq $-0x1, (%r15,%r11,8)
jne 0x2df4
addq %r8, %r11
cmpb $0x1, (%r9,%r11)
jne 0x2df4
movb $0x0, (%r9,%r11)
movslq 0x3c8(%rsp), %rbx
leaq 0x1(%rbx), %r14
movl %r14d, 0x3c8(%rsp)
movl %r11d, 0x4(%r10,%rbx,4)
addq $0x8, %rsi
jmp 0x2dbd
addq $0x8, %rdx
jmp 0x2d91
movq 0x2d0(%rsp), %rcx
movq %r13, 0x488(%rsp)
movq %r12, 0x70(%rsp)
movq -0x8(%rcx,%rbp,8), %rdx
movq (%rcx,%rbp,8), %r13
movq 0x460(%rsp), %rcx
addq %rax, %rcx
movq %rdx, 0x78(%rsp)
cmpq %r13, %rdx
je 0x2e95
movq (%rdx), %rsi
movq (%rcx), %rdi
movq 0x8(%rcx), %r8
movq 0x3a8(%rsp), %r9
movq 0x3b8(%rsp), %r10
movq 0x3c0(%rsp), %r11
cmpq %r8, %rdi
je 0x2e8f
movq (%rdi), %rbx
imulq %r9, %rbx
addq %rsi, %rbx
cmpb $0x1, (%r10,%rbx)
jne 0x2e89
movb $0x0, (%r10,%rbx)
movslq 0x3c8(%rsp), %r14
leaq 0x1(%r14), %r12
movl %r12d, 0x3c8(%rsp)
movl %ebx, 0x4(%r11,%r14,4)
addq $0x8, %rdi
jmp 0x2e55
addq $0x8, %rdx
jmp 0x2e2e
movq 0x2e0(%rsp), %rcx
addq 0x470(%rsp), %rax
movq -0x8(%rcx,%rbp,8), %rdx
movq (%rcx,%rbp,8), %r12
movq %rdx, %rcx
movq %rdx, 0x80(%rsp)
cmpq %r12, %rcx
je 0x2f20
movq (%rcx), %rdx
movq (%rax), %rsi
movq 0x8(%rax), %rdi
movq 0x3a8(%rsp), %r8
movq 0x3b8(%rsp), %r9
movq 0x3c0(%rsp), %r10
cmpq %rdi, %rsi
je 0x2f1a
movq (%rsi), %r11
imulq %r8, %r11
addq %rdx, %r11
cmpb $0x1, (%r9,%r11)
jne 0x2f14
movb $0x0, (%r9,%r11)
movslq 0x3c8(%rsp), %rbx
leaq 0x1(%rbx), %r14
movl %r14d, 0x3c8(%rsp)
movl %r11d, 0x4(%r10,%rbx,4)
addq $0x8, %rsi
jmp 0x2ee0
addq $0x8, %rcx
jmp 0x2eb9
movq 0x318(%rsp), %rax
shrq %rax
cmpq %rax, 0x70(%rsp)
jbe 0x2f73
movq 0x488(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0xd0(%rsp), %rdi
callq 0x3de8
testb %al, %al
jne 0x31c4
leaq 0x3a0(%rsp), %rdi
callq 0x3ebc
movq 0xc0(%rsp), %r15
movq 0x70(%rsp), %r12
jmp 0x2b85
movq 0x10(%rsp), %rdx
movq %r13, 0x8(%rsp)
cmpq 0x48(%rsp), %rdx
je 0x304e
movq 0x3c0(%rsp), %rsi
movq (%rdx), %rax
movq 0x3b8(%rsp), %rcx
movq 0x78(%rsp), %rbx
movq %rsi, 0xb8(%rsp)
movq 0x3a8(%rsp), %rsi
movq %rax, 0x10(%rsp)
movq %rcx, 0x28(%rsp)
imulq %rax, %rsi
leaq (%rcx,%rsi), %r14
movq %rsi, 0x38(%rsp)
cmpq %r13, %rbx
je 0x3045
movq (%rbx), %rbp
cmpq $-0x1, (%r15,%rbp,8)
jne 0x303f
cmpb $0x1, (%r14,%rbp)
jne 0x303f
movq 0x10(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
movq %r12, %r13
movq %rdx, %r12
movq %rbp, %rdx
callq 0x3de8
movq %r12, %rdx
movq %r13, %r12
movq 0x8(%rsp), %r13
testb %al, %al
jne 0x303f
addq 0x38(%rsp), %rbp
movq 0x28(%rsp), %rax
cmpb $0x1, (%rax,%rbp)
jne 0x303f
movq 0x28(%rsp), %rax
movq 0xb8(%rsp), %rsi
movb $0x0, (%rax,%rbp)
movslq 0x3c8(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x3c8(%rsp)
movl %ebp, 0x4(%rsi,%rax,4)
addq $0x8, %rbx
jmp 0x2fc7
addq $0x8, %rdx
jmp 0x2f7d
movq 0x40(%rsp), %rax
cmpq 0x30(%rsp), %rax
je 0x2f32
movq 0x3c0(%rsp), %rcx
movq (%rax), %r14
movq %rax, 0x40(%rsp)
movq 0x3b8(%rsp), %rax
movq 0x80(%rsp), %rbx
movq %rcx, 0x28(%rsp)
movq 0x3a8(%rsp), %rcx
movq %rax, 0x10(%rsp)
imulq %r14, %rcx
leaq (%rax,%rcx), %r13
movq %rcx, 0x8(%rsp)
cmpq %r12, %rbx
je 0x3106
movq (%rbx), %rbp
cmpq $-0x1, (%r15,%rbp,8)
jne 0x3100
cmpb $0x1, (%r13,%rbp)
jne 0x3100
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x3de8
testb %al, %al
jne 0x3100
addq 0x8(%rsp), %rbp
movq 0x10(%rsp), %rax
cmpb $0x1, (%rax,%rbp)
jne 0x3100
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rdx
movb $0x0, (%rax,%rbp)
movslq 0x3c8(%rsp), %rax
leaq 0x1(%rax), %rcx
movl %ecx, 0x3c8(%rsp)
movl %ebp, 0x4(%rdx,%rax,4)
addq $0x8, %rbx
jmp 0x309d
movq 0x40(%rsp), %rax
addq $0x8, %rax
jmp 0x3053
movq 0xd8(%rsp), %rcx
movq 0x20(%rcx), %rax
subq 0x18(%rcx), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
xorl %r14d, %r14d
movq %rax, %rbx
cmpq %rbx, %r14
je 0x31ab
cmpq %r14, %rbx
je 0x31a6
movq 0x390(%rsp), %rax
cmpq $-0x1, (%rax,%r14,8)
jne 0x31a1
movq 0x3a8(%rsp), %rax
imulq %r13, %rax
addq 0x3b8(%rsp), %rax
cmpb $0x1, (%r14,%rax)
jne 0x31a1
leaq 0xd0(%rsp), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x3efa
testb %al, %al
je 0x31a1
movq 0x348(%rsp), %rax
movq 0x368(%rsp), %rcx
movq 0x390(%rsp), %rdx
incl (%rax)
orq $-0x1, (%rcx,%r13,8)
orq $-0x1, (%rdx,%r14,8)
incq %r14
jmp 0x3137
movq %rbx, %r14
jmp 0x3132
leaq 0x3a0(%rsp), %rdi
callq 0x3ebc
addq $-0x8, %r15
decq %r12
jmp 0x2b85
movq 0x70(%rsp), %r12
movq 0xc0(%rsp), %r15
incq %r12
addq $0x8, %r15
jmp 0x2b85
leaq 0xd0(%rsp), %rdi
callq 0x3d38
leaq 0xa0(%rsp), %rdi
callq 0x531e
callq 0x21b0
subq 0x480(%rsp), %rax
movl $0xf4240, %ecx          # imm = 0xF4240
movq 0x9dc8(%rip), %r14      # 0xcfd8
cqto
idivq %rcx
movq (%r14), %rcx
movq %rax, %rbx
movq -0x18(%rcx), %rax
movq $0x8, 0x10(%r14,%rax)
leaq 0x4df8(%rip), %rsi      # 0x8027
movq %r14, %rdi
callq 0x2140
movl 0x1c(%rsp), %esi
movq %rax, %rdi
callq 0x2210
leaq 0x4de6(%rip), %rsi      # 0x8030
movq %rax, %rdi
callq 0x2140
leaq 0x4dda(%rip), %rsi      # 0x8033
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2130
leaq 0x4dc8(%rip), %rsi      # 0x803b
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
callq 0x20c0
andl $0x0, 0x1c(%rsp)
callq 0x21b0
movq %rax, %r15
leaq 0x4c8(%rsp), %rbx
leaq 0x88(%rsp), %rdi
movq %rbx, %rsi
callq 0x5ee0
movq 0x4e8(%rsp), %rcx
subq 0x4e0(%rsp), %rcx
movq %rcx, %rax
cqto
pushq $0x68
popq %rsi
idivq %rsi
movq 0x90(%rsp), %rdx
subq 0x88(%rsp), %rdx
sarq $0x3, %rdx
cmpq %rdx, %rax
jne 0x3a97
movq 0x4b0(%rsp), %rax
subq 0x4a8(%rsp), %rax
cmpq %rax, %rcx
ja 0x39cd
movq 0x4d8(%rsp), %rax
cmpq 0x4a0(%rsp), %rax
ja 0x39cd
leaq 0xe8(%rsp), %r12
leaq 0x490(%rsp), %rdx
movq %rbx, -0x18(%r12)
movq %rdx, -0x10(%r12)
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5f40
leaq 0x198(%rsp), %rbx
leaq 0x490(%rsp), %rsi
leaq 0x4c8(%rsp), %rdx
movq %rbx, %rdi
callq 0x5f40
leaq 0xa0(%rsp), %rax
vpxor %xmm0, %xmm0, %xmm0
leaq 0x50(%rsp), %rbp
movq $0x0, 0x8(%rsp)
movq %r15, 0x28(%rsp)
andq $0x0, 0x10(%rax)
vmovdqa %xmm0, (%rax)
movq 0xd0(%rsp), %rcx
movq 0x190(%rsp), %rsi
movq 0x20(%rcx), %rax
subq 0x18(%rcx), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
cmpq %rax, %rsi
jne 0x33aa
incl 0x1c(%rsp)
jmp 0x34a8
vmovdqu 0x228(%rsp), %xmm0
vpcmpnltuq 0x178(%rsp), %xmm0, %k0
kmovd %k0, %eax
cmpb $0x3, %al
jne 0x34a8
movq 0x8(%rsp), %r15
movq 0x188(%rsp), %rax
cmpq 0x238(%rsp), %rax
ja 0x34cf
movq 0x88(%rsp), %r13
cmpq 0x90(%rsp), %r13
je 0x34af
movq 0x190(%rsp), %rax
cmpq 0x188(%rsp), %rax
jae 0x3431
movq 0x240(%rsp), %rcx
cmpq 0x238(%rsp), %rcx
jae 0x3431
movq %r12, %rdi
movq %r13, %rsi
callq 0x607e
testb %al, %al
je 0x349f
jmp 0x34af
cmpq 0x180(%rsp), %rax
jae 0x345b
movq 0x240(%rsp), %rcx
cmpq 0x230(%rsp), %rcx
jae 0x345b
movq (%r13), %rax
movq 0x168(%rsp), %rcx
jmp 0x3483
cmpq 0x178(%rsp), %rax
jae 0x348c
movq 0x240(%rsp), %rax
cmpq 0x228(%rsp), %rax
jae 0x348c
movq (%r13), %rax
movq 0x158(%rsp), %rcx
cmpq $0x0, (%rcx,%rax,8)
jne 0x3490
jmp 0x349f
movq (%r13), %rax
movq 0x118(%rsp), %rcx
cmpq $-0x1, (%rcx,%rax,8)
je 0x34af
addq $0x8, %r13
jmp 0x33ee
movq 0x8(%rsp), %r15
jmp 0x34cf
movq 0x4b0(%rsp), %rax
subq 0x4a8(%rsp), %rax
cqto
pushq $0x68
popq %rcx
idivq %rcx
xorl %r14d, %r14d
movq %rax, %r15
jmp 0x352d
movq 0xa8(%rsp), %rax
cmpq %rax, 0xa0(%rsp)
je 0x39a7
movq -0x10(%rax), %r13
leaq -0x10(%rax), %rcx
movq -0x8(%rax), %r14
movq %rcx, 0xa8(%rsp)
movq 0x118(%rsp), %rcx
movq (%r13), %rax
movq (%rcx,%rax,8), %rax
movq %rax, 0x50(%rsp)
movq %r12, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x635e
movq %rbx, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x635e
incq %r14
cmpq %r15, %r14
jne 0x3537
movq %r14, %r15
jmp 0x34cf
movq 0x190(%rsp), %rax
cmpq 0x188(%rsp), %rax
jae 0x356c
movq 0x240(%rsp), %rcx
cmpq 0x238(%rsp), %rcx
jae 0x356c
movq 0x208(%rsp), %rax
cmpq $0x0, (%rax,%r14,8)
jne 0x3588
jmp 0x352a
cmpq 0x180(%rsp), %rax
jae 0x3592
movq 0x240(%rsp), %rcx
cmpq 0x230(%rsp), %rcx
jae 0x3592
movq 0x218(%rsp), %rax
jmp 0x35b6
cmpq 0x178(%rsp), %rax
jae 0x35c1
movq 0x240(%rsp), %rax
cmpq 0x228(%rsp), %rax
jae 0x35c1
movq 0x208(%rsp), %rax
cmpq $0x0, (%rax,%r14,8)
je 0x352a
movq 0x1c8(%rsp), %rax
cmpq $-0x1, (%rax,%r14,8)
jne 0x352a
movq 0xd0(%rsp), %rax
imulq $0x68, (%r13), %rcx
movq %r15, 0x8(%rsp)
xorl %r12d, %r12d
xorl %ebp, %ebp
movq $0x0, 0x10(%rsp)
movq 0x18(%rax), %rax
leaq 0x38(%rax,%rcx), %r15
movq 0x10(%r15), %rbx
cmpq %r15, %rbx
je 0x36a4
cmpq %r15, %rbx
je 0x369c
movq 0x20(%rbx), %rax
movq 0x118(%rsp), %rcx
movq (%rcx,%rax,8), %rsi
movq (%r13), %rcx
cmpq $-0x1, %rsi
jne 0x365a
cmpq %rcx, %rax
je 0x365a
movq 0x168(%rsp), %rcx
movq 0x158(%rsp), %rdx
movq (%rcx,%rax,8), %rcx
cmpq $0x1, %rcx
sbbq $-0x1, %rbp
cmpq $0x0, (%rdx,%rax,8)
je 0x3682
incq %r12
jmp 0x368c
cmpq %rcx, %rax
movq 0xd8(%rsp), %rcx
cmoveq %r14, %rsi
leaq 0x50(%rsp), %rdi
movq %r14, %rdx
callq 0x560f
cmpb $0x0, 0x68(%rsp)
jne 0x368c
jmp 0x3988
cmpq $0x1, %rcx
adcq $0x0, 0x10(%rsp)
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
jmp 0x360a
movq %r15, %rbx
jmp 0x3601
movq 0xd0(%rsp), %rax
imulq $0x68, (%r13), %rcx
movq 0x18(%rax), %rax
leaq 0x8(%rax,%rcx), %r15
movq 0x10(%r15), %rbx
cmpq %r15, %rbx
je 0x3761
cmpq %r15, %rbx
je 0x3759
movq 0x20(%rbx), %rax
movq 0x118(%rsp), %rcx
movq (%rcx,%rax,8), %rdx
movq (%r13), %rcx
cmpq $-0x1, %rdx
jne 0x3717
cmpq %rcx, %rax
je 0x3717
movq 0x168(%rsp), %rcx
movq 0x158(%rsp), %rdx
movq (%rcx,%rax,8), %rcx
cmpq $0x1, %rcx
sbbq $-0x1, %rbp
cmpq $0x0, (%rdx,%rax,8)
je 0x373f
incq %r12
jmp 0x3749
cmpq %rcx, %rax
movq 0xd8(%rsp), %rcx
cmoveq %r14, %rdx
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x560f
cmpb $0x0, 0x68(%rsp)
jne 0x3749
jmp 0x3988
cmpq $0x1, %rcx
adcq $0x0, 0x10(%rsp)
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
jmp 0x36c7
movq %r15, %rbx
jmp 0x36be
movq 0xd8(%rsp), %rax
imulq $0x68, %r14, %rcx
movq $0x0, 0x20(%rsp)
movq $0x0, 0x38(%rsp)
movq $0x0, 0x30(%rsp)
movq %rcx, 0x48(%rsp)
movq 0x18(%rax), %rax
leaq 0x38(%rax,%rcx), %r15
movq 0x10(%r15), %rbx
cmpq %r15, %rbx
je 0x383e
cmpq %r15, %rbx
je 0x3836
movq 0x20(%rbx), %rax
movq 0x1c8(%rsp), %rcx
movq (%rcx,%rax,8), %rsi
cmpq %r14, %rax
je 0x37f3
cmpq $-0x1, %rsi
jne 0x37f3
movq 0x218(%rsp), %rcx
movq 0x208(%rsp), %rdx
movq (%rcx,%rax,8), %rcx
cmpq $0x1, %rcx
sbbq $-0x1, 0x20(%rsp)
cmpq $0x0, (%rdx,%rax,8)
je 0x381c
incq 0x38(%rsp)
jmp 0x3826
movq (%r13), %rdx
movq 0xd0(%rsp), %rcx
cmpq %r14, %rax
cmoveq %rdx, %rsi
leaq 0x50(%rsp), %rdi
callq 0x560f
cmpb $0x0, 0x68(%rsp)
jne 0x3826
jmp 0x3988
cmpq $0x1, %rcx
adcq $0x0, 0x30(%rsp)
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
jmp 0x37a3
movq %r15, %rbx
jmp 0x379a
movq 0xd8(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x18(%rax), %rax
leaq 0x8(%rax,%rcx), %r15
movq 0x10(%r15), %rbx
cmpq %r15, %rbx
je 0x38fc
cmpq %r15, %rbx
je 0x38f4
movq 0x20(%rbx), %rax
movq 0x1c8(%rsp), %rcx
movq (%rcx,%rax,8), %rdx
cmpq %r14, %rax
je 0x38b1
cmpq $-0x1, %rdx
jne 0x38b1
movq 0x218(%rsp), %rcx
movq 0x208(%rsp), %rdx
movq (%rcx,%rax,8), %rcx
cmpq $0x1, %rcx
sbbq $-0x1, 0x20(%rsp)
cmpq $0x0, (%rdx,%rax,8)
je 0x38da
incq 0x38(%rsp)
jmp 0x38e4
movq (%r13), %rsi
movq 0xd0(%rsp), %rcx
cmpq %r14, %rax
cmoveq %rsi, %rdx
leaq 0x50(%rsp), %rdi
callq 0x560f
cmpb $0x0, 0x68(%rsp)
jne 0x38e4
jmp 0x3988
cmpq $0x1, %rcx
adcq $0x0, 0x30(%rsp)
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
jmp 0x3861
movq %r15, %rbx
jmp 0x3858
cmpq 0x38(%rsp), %r12
ja 0x3988
cmpq 0x20(%rsp), %rbp
ja 0x3988
movq 0x30(%rsp), %rax
cmpq %rax, 0x10(%rsp)
ja 0x3988
movq %r13, 0x50(%rsp)
movq %r14, 0x58(%rsp)
leaq 0xa0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x605e
movq %r14, 0xc8(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0xc8(%rsp), %rdx
movq %r13, %rsi
callq 0x620e
leaq 0x198(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
movq %r13, %rdx
callq 0x620e
leaq 0xe8(%rsp), %r12
leaq 0x198(%rsp), %rbx
leaq 0x50(%rsp), %rbp
jmp 0x337c
movq 0x8(%rsp), %r15
leaq 0xe8(%rsp), %r12
leaq 0x198(%rsp), %rbx
leaq 0x50(%rsp), %rbp
jmp 0x352a
leaq 0xa0(%rsp), %rdi
callq 0x64c2
leaq 0xd0(%rsp), %rdi
callq 0x3fe2
movq 0x9610(%rip), %r14      # 0xcfd8
movq 0x28(%rsp), %r15
leaq 0x88(%rsp), %rdi
callq 0x531e
callq 0x21b0
subq %r15, %rax
movl $0xf4240, %ecx          # imm = 0xF4240
cqto
idivq %rcx
movq (%r14), %rcx
movq %rax, %rbx
movq -0x18(%rcx), %rax
movq $0x8, 0x10(%r14,%rax)
leaq 0x4639(%rip), %rsi      # 0x803f
movq %r14, %rdi
callq 0x2140
movl 0x1c(%rsp), %esi
movq %rax, %rdi
callq 0x2210
leaq 0x460f(%rip), %rsi      # 0x8030
movq %rax, %rdi
callq 0x2140
leaq 0x4603(%rip), %rsi      # 0x8033
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2130
leaq 0x45f1(%rip), %rsi      # 0x803b
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
callq 0x20c0
leaq 0x490(%rsp), %rdi
callq 0x4090
xorl %ebx, %ebx
leaq 0x4c8(%rsp), %rdi
callq 0x4090
leaq 0x500(%rsp), %rdi
callq 0x2080
movl %ebx, %eax
addq $0x708, %rsp            # imm = 0x708
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x461c(%rip), %rdi      # 0x80ba
leaq 0x464c(%rip), %rsi      # 0x80f1
leaq 0x4674(%rip), %rcx      # 0x8120
movl $0x3d8, %edx            # imm = 0x3D8
callq 0x2100
jmp 0x3c17
jmp 0x3c17
jmp 0x3c17
jmp 0x3c17
jmp 0x3c17
movq %r12, %rdi
movq %rax, %rbp
callq 0x603a
jmp 0x3c34
movq %rax, %rbp
jmp 0x3c34
movq %rax, %rbp
jmp 0x3c6b
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
jmp 0x3ca0
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
jmp 0x3cad
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
jmp 0x3cba
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
jmp 0x3cc7
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
jmp 0x3cdc
movq %rax, %rbp
jmp 0x3ce4
movq %rax, %rbp
jmp 0x3cec
movq %rax, %rbp
jmp 0x3cf4
movq %rax, %rbp
jmp 0x3cfc
jmp 0x3c0f
jmp 0x3c05
movq %rax, %rbp
jmp 0x3d23
jmp 0x3c17
movq %rax, %rbp
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
jmp 0x3cd4
movq %rax, %rbp
jmp 0x3d16
jmp 0x3c17
movq %rax, %rbp
jmp 0x3d09
leaq 0xa0(%rsp), %rdi
movq %rax, %rbp
callq 0x64c2
leaq 0xd0(%rsp), %rdi
callq 0x3fe2
leaq 0x88(%rsp), %rdi
jmp 0x3d04
jmp 0x3c43
leaq 0xd0(%rsp), %rdi
movq %rax, %rbp
callq 0x3d38
jmp 0x3cfc
jmp 0x3c5e
jmp 0x3c5e
jmp 0x3c5e
leaq 0x50(%rsp), %rdi
movq %rax, %rbp
callq 0x531e
leaq 0x428(%rsp), %rdi
leaq 0xe0(%rsp), %r15
leaq 0x1f8(%rsp), %rbx
leaq 0x328(%rsp), %r14
leaq 0x350(%rsp), %r12
leaq 0x378(%rsp), %r13
callq 0x50d4
leaq 0x410(%rsp), %rdi
callq 0x50d4
leaq 0x3f8(%rsp), %rdi
callq 0x50d4
leaq 0x3e0(%rsp), %rdi
callq 0x50d4
leaq 0x3a0(%rsp), %rdi
callq 0x3db6
movq %r13, %rdi
callq 0x531e
movq %r12, %rdi
callq 0x531e
movq %r14, %rdi
callq 0x531e
movq %rbx, %rdi
callq 0x50f6
movq %r15, %rdi
callq 0x50f6
leaq 0xa0(%rsp), %rdi
callq 0x531e
leaq 0x490(%rsp), %rdi
callq 0x4090
leaq 0x4c8(%rsp), %rdi
callq 0x4090
leaq 0x500(%rsp), %rdi
callq 0x2080
movq %rbp, %rdi
callq 0x2220