// File: /workspace/github_cpp_makefile_star2_O1/qema[P]orca-py/liborca.cpp
// Function: motif_counts(char const*, int, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
int motif_counts(const char* orbit_type, int graphlet_size, 
        const char* input_str, const char* output_filename, string &out_str) {
    common2.clear();
    common3.clear();
    bool use_adj_matrix;
    //fstream fin; // input and output files
    stringstream fin(input_str);
    // open input, output files
    if (strcmp(orbit_type, "node")!=0 && strcmp(orbit_type, "edge")!=0) {
        cerr << "Incorrect orbit type '" << orbit_type << "'. Should be 'node' or 'edge'." << endl;
        return 0;
    }
    if (graphlet_size!=4 && graphlet_size!=5) {
        cerr << "Incorrect graphlet size " << graphlet_size << ". Should be 4 or 5." << endl;
        return 0;
    }
    //fin.open(input_filename, fstream::in);
    if (fin.fail()) {
        //cerr << "Failed to open file " << input_filename << endl;
        cerr << "Failed to open string stream" << endl;
        return 0;
    }
    // read input graph
    fin >> n >> m;
    //cout << n << " " << m;
    int d_max=0;
    edges = (PAIR*)malloc(m*sizeof(PAIR));
    deg = (int*)calloc(n,sizeof(int));
    for (int i=0;i<m;i++) {
        int a,b;
        fin >> a >> b;
        if (!(0<=a && a<n) || !(0<=b && b<n)) {
            cerr << "Node ids should be between 1 and n-1." << endl;
            return 0;
        }
        if (a==b) {
            cerr << "Self loops (edge from x to x) are not allowed." << endl;
            return 0;
        }
        deg[a]++; deg[b]++;
        edges[i]=PAIR(a,b);
    }
    for (int i=0;i<n;i++) d_max=max(d_max,deg[i]);
    //printf("nodes: %d\n",n);
    //printf("edges: %d\n",m);
    //printf("max degree: %d\n",d_max);
    //fin.close();
    if ((int)(set<PAIR>(edges,edges+m).size())!=m) {
        cerr << "Input file contains duplicate undirected edges." << endl;
        return 0;
    }
    // set up adjacency matrix if it's smaller than 100MB
    if ((int64)n*n < 100LL*1024*1024*8) {
        use_adj_matrix = true;
        adjacent = adjacent_matrix;
        adj_matrix = (int*)calloc((n*n)/adj_chunk+1,sizeof(int));
        for (int i=0;i<m;i++) {
            int a=edges[i].a, b=edges[i].b;
            adj_matrix[(a*n+b)/adj_chunk]|=(1<<((a*n+b)%adj_chunk));
            adj_matrix[(b*n+a)/adj_chunk]|=(1<<((b*n+a)%adj_chunk));
        }
    } else {
        use_adj_matrix = false;
        adjacent = adjacent_list;
    }
    // set up adjacency, incidence lists
    adj = (int**)malloc(n*sizeof(int*));
    for (int i=0;i<n;i++) adj[i] = (int*)malloc(deg[i]*sizeof(int));
    inc = (PII**)malloc(n*sizeof(PII*));
    for (int i=0;i<n;i++) inc[i] = (PII*)malloc(deg[i]*sizeof(PII));
    int *d = (int*)calloc(n,sizeof(int));
    for (int i=0;i<m;i++) {
        int a=edges[i].a, b=edges[i].b;
        adj[a][d[a]]=b; adj[b][d[b]]=a;
        inc[a][d[a]]=PII(b,i); inc[b][d[b]]=PII(a,i);
        d[a]++; d[b]++;
    }
    for (int i=0;i<n;i++) {
        sort(adj[i],adj[i]+deg[i]);
        sort(inc[i],inc[i]+deg[i]);
    }
    // initialize orbit counts
    orbit = (int64**)malloc(n*sizeof(int64*));
    for (int i=0;i<n;i++) orbit[i] = (int64*)calloc(73,sizeof(int64));
    // initialize edge orbit counts
    eorbit = (int64**)malloc(m*sizeof(int64*));
    for (int i=0;i<m;i++) eorbit[i] = (int64*)calloc(68,sizeof(int64));

    if (strcmp(orbit_type,"node") == 0) {
        //printf("Counting NODE orbits of graphlets on %d nodes.\n\n",graphlet_size);
        if (graphlet_size==4) count4();
        if (graphlet_size==5) count5();
        if (strcmp(output_filename, "std") == 0) {
            cout << "orbit counts: \n" << writeResultsString(graphlet_size) << endl;
        } else {
            //out_str = writeResults(graphlet_size, output_filename);
            out_str = writeResultsString(graphlet_size);
        }
    } else {
        //printf("Counting EDGE orbits of graphlets on %d nodes.\n\n",graphlet_size);
        if (graphlet_size==4) ecount4();
        if (graphlet_size==5) ecount5();
        if (strcmp(output_filename, "std") == 0) {
            cout << "orbit counts: \n" << writeEdgeResultsString(graphlet_size) << endl;
        } else {
            //out_str = writeEdgeResults(graphlet_size, output_filename);
            out_str = writeEdgeResultsString(graphlet_size);
        }
    }

    free(edges);
    free(deg);
    free(d);
    if (use_adj_matrix) {
        free(adj_matrix);
    } else {
        for (int i=0;i<n;i++) free(adj[i]);
        free(adj);
    }
    for (int i=0;i<n;i++) free(inc[i]);
    free(inc);
    for (int i=0;i<n;i++) free(orbit[i]);
    free(orbit);
    for (int i=0;i<m;i++) free(eorbit[i]);
    free(eorbit);
    return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movq %r8, (%rsp)
movq %rcx, 0x8(%rsp)
movq %rdx, %rbx
movl %esi, %r15d
movq %rdi, %rbp
movq %fs:0x28, %rax
movq %rax, 0x1e0(%rsp)
movq 0x59e1(%rip), %rdi      # 0x13fb0
callq 0xf332
movq 0x59a5(%rip), %rdi      # 0x13f80
callq 0xf3ac
leaq 0x28(%rsp), %rdi
leaq 0x24(%rsp), %rdx
movq %rbx, %rsi
callq 0xf21c
leaq 0x58(%rsp), %rdi
leaq 0x28(%rsp), %rsi
movl $0x18, %edx
callq 0x52e0
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe621
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x51f0
leaq 0x2a06(%rip), %rsi      # 0x1102e
movq %rbp, %rdi
callq 0x5290
testl %eax, %eax
je 0xe68a
leaq 0x29f8(%rip), %rsi      # 0x11033
movq %rbp, %rdi
callq 0x5290
testl %eax, %eax
je 0xe68a
movq 0x59a2(%rip), %rbx      # 0x13ff0
leaq 0x29e3(%rip), %rsi      # 0x11038
movl $0x16, %edx
movq %rbx, %rdi
callq 0x5220
testq %rbp, %rbp
je 0xe709
movq %rbp, %rdi
callq 0x50c0
movq 0x5976(%rip), %rdi      # 0x13ff0
movq %rbp, %rsi
movq %rax, %rdx
callq 0x5220
jmp 0xe720
leal -0x6(%r15), %eax
cmpl $-0x3, %eax
ja 0xe6e7
movq 0x5956(%rip), %rdi      # 0x13ff0
leaq 0x29cd(%rip), %rsi      # 0x1106e
movl $0x18, %edx
callq 0x5220
movq 0x593e(%rip), %rdi      # 0x13ff0
movl %r15d, %esi
callq 0x5320
movq %rax, %rbx
leaq 0x29c3(%rip), %rsi      # 0x11087
movl $0x13, %edx
movq %rax, %rdi
callq 0x5220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x51c0
jmp 0xe74f
movq 0x58(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x78(%rsp,%rax)
je 0xe7ad
movl $0x1c, %edx
leaq 0x2994(%rip), %rsi      # 0x1109b
jmp 0xe72c
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5310
movl $0x1e, %edx
leaq 0x2923(%rip), %rsi      # 0x1104f
movq 0x58bd(%rip), %rbx      # 0x13ff0
movq %rbx, %rdi
callq 0x5220
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x51c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5030
movq %rax, %rdi
callq 0x5130
xorl %ebx, %ebx
movq 0x57d5(%rip), %rsi      # 0x13f40
leaq 0x58(%rsp), %rdi
callq 0x5160
leaq 0xd8(%rsp), %rdi
callq 0x5080
movq %fs:0x28, %rax
cmpq 0x1e0(%rsp), %rax
jne 0xf012
movl %ebx, %eax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x57ec(%rip), %rsi      # 0x13fa0
leaq 0x58(%rsp), %rdi
callq 0x50f0
movq 0x578b(%rip), %rbx      # 0x13f50
movq %rax, %rdi
movq %rbx, %rsi
callq 0x50f0
movslq (%rbx), %rdi
shlq $0x3, %rdi
callq 0x5280
movq 0x57d5(%rip), %rcx      # 0x13fb8
movq %rax, (%rcx)
movq 0x57b3(%rip), %rax      # 0x13fa0
movslq (%rax), %rdi
movl $0x4, %esi
callq 0x5110
movq 0x57c7(%rip), %rcx      # 0x13fc8
movq %rax, (%rcx)
cmpl $0x0, (%rbx)
jle 0xe8c7
xorl %r14d, %r14d
leaq 0x58(%rsp), %r12
leaq 0x28(%rsp), %rbx
leaq 0x24(%rsp), %r13
movq %r12, %rdi
movq %rbx, %rsi
callq 0x50f0
movq %rax, %rdi
movq %r13, %rsi
callq 0x50f0
movslq 0x28(%rsp), %rax
movl $0x25, %edx
testq %rax, %rax
js 0xe9f2
movq 0x5751(%rip), %rcx      # 0x13fa0
movl (%rcx), %esi
cmpl %esi, %eax
jge 0xe9f2
movl 0x24(%rsp), %ecx
testl %ecx, %ecx
js 0xe9f2
cmpl %esi, %ecx
jge 0xe9f2
cmpl %ecx, %eax
je 0xea46
movq 0x574c(%rip), %rcx      # 0x13fc8
movq (%rcx), %rcx
incl (%rcx,%rax,4)
movslq 0x24(%rsp), %rax
incl (%rcx,%rax,4)
movl 0x28(%rsp), %eax
movl 0x24(%rsp), %ecx
cmpl %eax, %ecx
movl %eax, %edx
cmovll %ecx, %edx
cmovll %eax, %ecx
movq 0x5715(%rip), %rax      # 0x13fb8
movq (%rax), %rax
shlq $0x20, %rcx
orq %rcx, %rdx
movq %rdx, (%rax,%r14,8)
incq %r14
movq 0x5695(%rip), %rax      # 0x13f50
movslq (%rax), %rax
cmpq %rax, %r14
jl 0xe81f
movq 0x56ea(%rip), %rax      # 0x13fb8
movq (%rax), %rsi
movq 0x5678(%rip), %rbx      # 0x13f50
movslq (%rbx), %rax
leaq (%rsi,%rax,8), %rdx
leaq 0x28(%rsp), %rdi
callq 0xf25a
movl (%rbx), %ebx
leaq 0x28(%rsp), %rdi
movl 0x28(%rdi), %r14d
callq 0xf3f6
cmpl %r14d, %ebx
jne 0xe9fb
movq 0x5697(%rip), %rax      # 0x13fa0
movslq (%rax), %rbx
movq %rbx, %rax
imulq %rbx, %rax
movq %rax, 0x10(%rsp)
cmpq $0x31ffffff, %rax       # imm = 0x31FFFFFF
ja 0xea91
leaq -0x92f8(%rip), %rax     # 0x5633
movl %ebx, %ecx
imull %ebx, %ecx
leal 0x1f(%rcx), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
movq 0x5669(%rip), %rcx      # 0x13fa8
movq %rax, (%rcx)
sarl $0x5, %edx
incl %edx
movslq %edx, %rdi
movl $0x4, %esi
callq 0x5110
movq 0x562d(%rip), %rcx      # 0x13f88
movq %rax, (%rcx)
movq 0x55eb(%rip), %rcx      # 0x13f50
movslq (%rcx), %rdx
testq %rdx, %rdx
jle 0xeaa2
movq 0x5640(%rip), %rcx      # 0x13fb8
movq (%rcx), %rsi
movq 0x561e(%rip), %rcx      # 0x13fa0
movl (%rcx), %edi
xorl %r8d, %r8d
movl (%rsi,%r8,8), %r9d
movl 0x4(%rsi,%r8,8), %r10d
movl %edi, %r11d
imull %r9d, %r11d
leal (%r11,%r10), %ecx
movl $0x1, %r14d
shll %cl, %r14d
addl %r10d, %r11d
addl $0x1f, %r11d
testl %ecx, %ecx
cmovnsl %ecx, %r11d
sarl $0x5, %r11d
movslq %r11d, %rcx
orl %r14d, (%rax,%rcx,4)
imull %edi, %r10d
leal (%r10,%r9), %ecx
movl $0x1, %r11d
shll %cl, %r11d
addl %r10d, %r9d
addl $0x1f, %r9d
testl %ecx, %ecx
cmovnsl %ecx, %r9d
sarl $0x5, %r9d
movslq %r9d, %rcx
orl %r11d, (%rax,%rcx,4)
incq %r8
cmpq %r8, %rdx
jne 0xe987
jmp 0xeaa2
leaq 0x26bf(%rip), %rsi      # 0x110b8
jmp 0xea52
movq 0x55ee(%rip), %rbx      # 0x13ff0
leaq 0x2704(%rip), %rsi      # 0x1110d
movl $0x2f, %edx
movq %rbx, %rdi
callq 0x5220
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x51c0
movsbl %al, %esi
movq 0x55bc(%rip), %rdi      # 0x13ff0
callq 0x5030
movq %rax, %rdi
callq 0x5130
jmp 0xe762
movl $0x2e, %edx
leaq 0x268c(%rip), %rsi      # 0x110de
movq 0x5597(%rip), %rbx      # 0x13ff0
movq %rbx, %rdi
callq 0x5220
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x51c0
movsbl %al, %esi
movq 0x5571(%rip), %rdi      # 0x13ff0
callq 0x5030
movq %rax, %rdi
callq 0x5130
jmp 0xe762
leaq -0x94c5(%rip), %rax     # 0x55d3
movq 0x5509(%rip), %rcx      # 0x13fa8
movq %rax, (%rcx)
leaq (,%rbx,8), %rdi
movq %rdi, 0x18(%rsp)
callq 0x5280
movq 0x54dd(%rip), %rcx      # 0x13f98
movq %rax, (%rcx)
testl %ebx, %ebx
movq 0x5501(%rip), %r12      # 0x13fc8
jle 0xeaf4
xorl %r14d, %r14d
movq 0x54c5(%rip), %r13      # 0x13f98
movq (%r12), %rax
movslq (%rax,%r14,4), %rdi
shlq $0x2, %rdi
callq 0x5280
movq (%r13), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0xead3
movq 0x18(%rsp), %rdi
callq 0x5280
movq 0x548b(%rip), %r13      # 0x13f90
movq %rax, (%r13)
testl %ebx, %ebx
jle 0xeb31
xorl %r14d, %r14d
movq (%r12), %rax
movslq (%rax,%r14,4), %rdi
shlq $0x3, %rdi
callq 0x5280
movq (%r13), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0xeb10
movl $0x4, %esi
movq %rbx, %rdi
callq 0x5110
movq %rax, %rbx
movq 0x5408(%rip), %r14      # 0x13f50
cmpl $0x0, (%r14)
jle 0xebba
movq 0x5463(%rip), %rax      # 0x13fb8
movq (%rax), %rax
movq 0x5439(%rip), %rcx      # 0x13f98
movq (%rcx), %rcx
movq (%r13), %rdx
xorl %esi, %esi
movslq (%rax,%rsi,8), %rdi
movslq 0x4(%rax,%rsi,8), %r8
movq (%rcx,%rdi,8), %r9
movslq (%rbx,%rdi,4), %r10
movl %r8d, (%r9,%r10,4)
movq (%rcx,%r8,8), %r9
movslq (%rbx,%r8,4), %r11
movl %edi, (%r9,%r11,4)
movq (%rdx,%rdi,8), %r9
movl %r8d, (%r9,%r10,8)
movl %esi, 0x4(%r9,%r10,8)
movq (%rdx,%r8,8), %r9
movl %edi, (%r9,%r11,8)
movl %esi, 0x4(%r9,%r11,8)
leal 0x1(%r10), %r9d
movl %r9d, (%rbx,%rdi,4)
incl (%rbx,%r8,4)
incq %rsi
movslq (%r14), %rdi
cmpq %rdi, %rsi
jl 0xeb68
movq 0x53df(%rip), %rax      # 0x13fa0
movl (%rax), %r13d
testl %r13d, %r13d
jle 0xec76
xorl %r14d, %r14d
movq 0x53f1(%rip), %rax      # 0x13fc8
movq (%rax), %rax
movslq (%rax,%r14,4), %rax
testq %rax, %rax
je 0xec18
movq 0x53ae(%rip), %rcx      # 0x13f98
movq (%rcx), %rcx
movq (%rcx,%r14,8), %r12
leaq (%r12,%rax,4), %r13
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %r13, %rsi
callq 0xfea1
movq %r12, %rdi
movq %r13, %rsi
callq 0xff9d
movq 0x53a9(%rip), %rax      # 0x13fc8
movq (%rax), %rax
movslq (%rax,%r14,4), %rax
testq %rax, %rax
je 0xec60
movq 0x535e(%rip), %rcx      # 0x13f90
movq (%rcx), %rcx
movq (%rcx,%r14,8), %r12
leaq (%r12,%rax,8), %r13
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %r13, %rsi
callq 0x10206
movq %r12, %rdi
movq %r13, %rsi
callq 0x102d8
incq %r14
movq 0x5336(%rip), %rax      # 0x13fa0
movslq (%rax), %r13
cmpq %r13, %r14
jl 0xebd0
movslq %r13d, %r14
leaq (,%r14,8), %rdi
callq 0x5280
movq 0x52bb(%rip), %r12      # 0x13f48
movq %rax, (%r12)
testl %r14d, %r14d
jle 0xecbb
movl %r13d, %r14d
xorl %r13d, %r13d
movl $0x49, %edi
movl $0x8, %esi
callq 0x5110
movq (%r12), %rcx
movq %rax, (%rcx,%r13,8)
incq %r13
cmpq %r13, %r14
jne 0xec9c
movq 0x528e(%rip), %rax      # 0x13f50
movslq (%rax), %r14
leaq (,%r14,8), %rdi
callq 0x5280
movq 0x5287(%rip), %r13      # 0x13f60
movq %rax, (%r13)
testq %r14, %r14
jle 0xed04
xorl %r12d, %r12d
movl $0x44, %edi
movl $0x8, %esi
callq 0x5110
movq (%r13), %rcx
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r14
jne 0xece5
leaq 0x2323(%rip), %rsi      # 0x1102e
movq %rbp, %rdi
callq 0x5290
testl %eax, %eax
je 0xed6c
cmpl $0x5, %r15d
movq 0x522e(%rip), %r14      # 0x13f50
movq 0x5277(%rip), %r12      # 0x13fa0
movq 0x5298(%rip), %rbp      # 0x13fc8
je 0xed43
cmpl $0x4, %r15d
jne 0xed48
callq 0x5f4d
cmpl $0x5, %r15d
jne 0xed48
callq 0x9fca
leaq 0x23ee(%rip), %rsi      # 0x1113d
movq 0x8(%rsp), %rdi
callq 0x5290
testl %eax, %eax
je 0xedd8
leaq 0x28(%rsp), %rdi
movl %r15d, %esi
callq 0xe398
jmp 0xedbf
cmpl $0x5, %r15d
movq 0x51d9(%rip), %r14      # 0x13f50
movq 0x5222(%rip), %r12      # 0x13fa0
movq 0x5243(%rip), %rbp      # 0x13fc8
je 0xed98
cmpl $0x4, %r15d
jne 0xed9d
callq 0x56ce
cmpl $0x5, %r15d
jne 0xed9d
callq 0x6887
leaq 0x2399(%rip), %rsi      # 0x1113d
movq 0x8(%rsp), %rdi
callq 0x5290
testl %eax, %eax
je 0xee1d
leaq 0x28(%rsp), %rdi
movl %r15d, %esi
callq 0xdfc1
leaq 0x28(%rsp), %r15
movq (%rsp), %rdi
movq %r15, %rsi
callq 0x5250
movq (%r15), %rdi
jmp 0xee65
movq 0x51e1(%rip), %rdi      # 0x13fc0
leaq 0x235b(%rip), %rsi      # 0x11141
movl $0xf, %edx
callq 0x5220
leaq 0x28(%rsp), %rdi
movl %r15d, %esi
callq 0xe398
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x51b2(%rip), %rdi      # 0x13fc0
callq 0x5220
movq %rax, %rdi
callq 0x50d0
jmp 0xee60
movq 0x519c(%rip), %rdi      # 0x13fc0
leaq 0x2316(%rip), %rsi      # 0x11141
movl $0xf, %edx
callq 0x5220
leaq 0x28(%rsp), %rdi
movl %r15d, %esi
callq 0xdfc1
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x516d(%rip), %rdi      # 0x13fc0
callq 0x5220
movq %rax, %rdi
callq 0x50d0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xee7c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x51f0
movq 0x5135(%rip), %rax      # 0x13fb8
movq (%rax), %rdi
callq 0x5240
movq (%rbp), %rdi
callq 0x5240
movq %rbx, %rdi
callq 0x5240
cmpq $0x32000000, 0x10(%rsp) # imm = 0x32000000
jae 0xeeb0
movq 0x50da(%rip), %r15      # 0x13f88
jmp 0xeedf
cmpl $0x0, (%r12)
movq 0x50dc(%rip), %r15      # 0x13f98
jle 0xeedf
xorl %ebx, %ebx
movq 0x50d1(%rip), %r15      # 0x13f98
movq (%r15), %rax
movq (%rax,%rbx,8), %rdi
callq 0x5240
incq %rbx
movslq (%r12), %rax
cmpq %rax, %rbx
jl 0xeec7
movq (%r15), %rdi
callq 0x5240
cmpl $0x0, (%r12)
movq 0x509d(%rip), %r15      # 0x13f90
jle 0xef0f
xorl %ebx, %ebx
movq (%r15), %rax
movq (%rax,%rbx,8), %rdi
callq 0x5240
incq %rbx
movslq (%r12), %rax
cmpq %rax, %rbx
jl 0xeef7
movq (%r15), %rdi
callq 0x5240
cmpl $0x0, (%r12)
movq 0x5025(%rip), %r15      # 0x13f48
jle 0xef3f
xorl %ebx, %ebx
movq (%r15), %rax
movq (%rax,%rbx,8), %rdi
callq 0x5240
incq %rbx
movslq (%r12), %rax
cmpq %rax, %rbx
jl 0xef27
movq (%r15), %rdi
callq 0x5240
cmpl $0x0, (%r14)
jle 0xef67
xorl %ebx, %ebx
movq (%r13), %rax
movq (%rax,%rbx,8), %rdi
callq 0x5240
incq %rbx
movslq (%r14), %rax
cmpq %rax, %rbx
jl 0xef4f
movq (%r13), %rdi
callq 0x5240
movl $0x1, %ebx
jmp 0xe764
jmp 0xefd6
jmp 0xefd6
jmp 0xefd6
jmp 0xef84
jmp 0xefd6
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xefd9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0xefd9
jmp 0xefd6
jmp 0xefd6
jmp 0xefd6
jmp 0xefd6
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeff7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x51f0
jmp 0xeff7
movq %rax, %rbx
jmp 0xeff7
jmp 0xefd6
jmp 0xefd6
movq %rax, %rbx
movq 0x4f60(%rip), %rsi      # 0x13f40
leaq 0x58(%rsp), %rdi
callq 0x5160
leaq 0xd8(%rsp), %rdi
callq 0x5080
movq %fs:0x28, %rax
cmpq 0x1e0(%rsp), %rax
jne 0xf012
movq %rbx, %rdi
callq 0x5330
callq 0x5210