// File: /workspace/github_c_makefile_star2_O2/DReichLab[P]adna/ldup.c
// Function: process
static khash_t(64) *process(kdq_t(elem_t) *q, BGZF *fp, khash_t(s) *marked, khash_t(64) *aux, int bc_type)
{
	int i, absent;
	if (kh_n_buckets(aux) < kdq_size(q) * 4 && kh_n_buckets(aux) <= AUX_REALLOC_SIZE) {
		kh_clear(64, aux);
	} else {
		kh_destroy(64, aux);
		aux = kh_init(64);
	}
	for (i = 0; i < kdq_size(q); ++i) {
		elem_t *e = &kdq_at(q, i);
		bam1_t *b = e->b;
		char *qname = bam_get_qname(b);
		if (b->core.flag&0x800) continue;
		if ((b->core.flag&1) && (b->core.flag&(BAM_FREAD1|BAM_FREAD2))) { // PE
			e->is_left = 0, e->is_pe = 1;
			if (b->core.tid < b->core.mtid) e->is_left = 1;
			else if (b->core.tid == b->core.mtid) {
				if (b->core.pos < b->core.mpos) e->is_left = 1;
				else if (b->core.pos == b->core.mpos && (b->core.flag&BAM_FREAD1)) e->is_left = 1;
			}
		} else e->is_left = 1, e->is_pe = 0; // SE
		if (e->is_left) {
			uint64_t key;
			khint_t k;
			int has_BC, rlen;
			if (bc_type == AD_USE_BC) {
				const uint8_t *BC = 0;
				BC = bam_aux_get(b, "BC");
				has_BC = BC? 1 : 0;
				key = has_BC? X31_hash_string(bam_aux2Z(BC)) : 0;
			} else if (bc_type == AD_USE_NAME) {
				const char *p, *qname = bam_get_qname(b);
				int len;
				len = strlen(qname);
				for (p = qname + len - 1; p >= qname && !ispunct(*p); --p);
				has_BC = p > qname? 1 : 0;
				key = has_BC? X31_hash_string(p + 1) : 0;
			} else key = 0, has_BC = 0;
			if (!e->is_pe) rlen = bam_cigar2rlen(b->core.n_cigar, bam_get_cigar(b));
			else rlen = b->core.isize > 0? b->core.isize : -b->core.isize;
			key ^= __ac_Wang_hash(rlen);
			k = kh_put(64, aux, key, &absent);
			if (has_BC) ++lt_n_frags_BC;
			else ++lt_n_frags_noBC;
			if (!absent) {
				if (has_BC) ++lt_n_dups_BC;
				else ++lt_n_dups_noBC;
				b->core.flag |= BAM_FDUP;
				if (e->is_pe) kh_put(s, marked, strdup(qname), &absent);
			}
		}
	}
	for (i = 0; i < kdq_size(q); ++i) {
		elem_t *e = &kdq_at(q, i);
		bam1_t *b = e->b;
		char *qname = bam_get_qname(b);
		if (e->is_pe && !e->is_left) {
			khint_t k;
			k = kh_get(s, marked, qname);
			if (k != kh_end(marked)) {
				b->core.flag |= BAM_FDUP;
				free((char*)kh_key(marked, k));
				kh_del(s, marked, k);
			}
		}
	}
	while (kdq_size(q)) {
		elem_t *e;
		e = kdq_shift(elem_t, q);
		bam_write1(fp, e->b);
		bam_destroy1(e->b);
	}
	return aux;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movl %r8d, 0x4c(%rsp)
movq %rcx, %r15
movq %rsi, 0x60(%rsp)
movq %rdi, %r13
movl (%rcx), %eax
pushq $0x4
popq %rsi
cmpq $0x400, %rax            # imm = 0x400
movq %rdx, (%rsp)
ja 0x2b20
movq 0x8(%r13), %rcx
shlq $0x2, %rcx
cmpq %rax, %rcx
jbe 0x2b20
movq 0x10(%r15), %rdi
testq %rdi, %rdi
je 0x2b36
movl %eax, %edx
shrl $0x2, %edx
andl $0x1fc, %edx            # imm = 0x1FC
cmpl $0x10, %eax
cmovbl %esi, %edx
movl $0xaa, %esi
callq 0x21b0
movq (%rsp), %r10
andq $0x0, 0x4(%r15)
jmp 0x2b39
movq %r15, %rdi
callq 0x3661
callq 0x368f
movq (%rsp), %r10
movq %rax, %r15
jmp 0x2b39
movq %rdx, %r10
movabsq $0x3ffffffffffffff, %r12 # imm = 0x3FFFFFFFFFFFFFF
xorl %r11d, %r11d
pushq $0x2
popq %r14
movq %r13, 0x38(%rsp)
movq %r15, 0x40(%rsp)
movq 0x8(%r13), %rax
cmpq %r11, %rax
jbe 0x347f
movq 0x18(%r13), %rbp
movq (%r13), %rax
andq %r12, %rax
addq %r11, %rax
andq 0x10(%r13), %rax
shlq $0x4, %rax
movq (%rbp,%rax), %rdx
movl 0xc(%rdx), %ecx
btl $0xb, %ecx
jb 0x3295
addq %rax, %rbp
movq 0x28(%rdx), %rax
movq %rax, 0x28(%rsp)
testb $0x1, %cl
sete %al
testb $-0x40, %cl
sete %cl
orb %al, %cl
je 0x2bad
movw $0x100, 0x8(%rbp)       # imm = 0x100
jmp 0x2bc2
movw $0x1, 0x8(%rbp)
movl 0x14(%rdx), %eax
cmpl %eax, (%rdx)
jge 0x2c5b
movb $0x1, 0x9(%rbp)
movl 0x4c(%rsp), %eax
cmpl $0x2, %eax
movq %r11, 0x30(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x28(%rsp), %r12
je 0x2c04
cmpl $0x1, %eax
jne 0x2c4e
movq %rdx, %rdi
leaq 0x9587(%rip), %rsi      # 0xc170
callq 0xa366
testq %rax, %rax
je 0x2c82
movq %rax, %rdi
callq 0xa58c
movq %rax, %rdi
jmp 0x2c3d
movq %r12, %rdi
callq 0x2150
cltq
addq %r12, %rax
decq %rax
movq %rax, %rbx
cmpq %r12, %rax
jb 0x2c32
callq 0x2420
movq (%rax), %rcx
movsbq (%rbx), %rdx
leaq -0x1(%rbx), %rax
testb $0x4, (%rcx,%rdx,2)
je 0x2c14
cmpq %r12, %rbx
jbe 0x2c82
incq %rbx
movq %rbx, %rdi
callq 0x369a
movq %rax, %rbx
movb $0x1, %al
movq %rax, 0x18(%rsp)
jmp 0x2c8d
movq $0x0, 0x18(%rsp)
xorl %ebx, %ebx
jmp 0x2c96
jne 0x3295
movl 0x18(%rdx), %eax
cmpl %eax, 0x4(%rdx)
jl 0x2bbe
jne 0x3295
testb $0x40, 0xc(%rdx)
jne 0x2bbe
jmp 0x3295
movq $0x0, 0x18(%rsp)
xorl %ebx, %ebx
movq (%rsp), %r10
movq 0x10(%rsp), %rdx
cmpb $0x0, 0x8(%rbp)
movq %rbp, 0x20(%rsp)
je 0x2cad
movl 0x1c(%rdx), %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
jmp 0x2cc8
movq 0x8(%rdx), %rsi
movq %rsi, %rdi
shrq $0x30, %rdi
shrl $0x18, %esi
addq 0x28(%rdx), %rsi
callq 0x8011
movq (%rsp), %r10
movl (%r15), %ebp
movl 0x8(%r15), %ecx
cmpl 0xc(%r15), %ecx
jb 0x2e87
movl 0x4(%r15), %edi
leal (%rdi,%rdi), %ecx
cmpl %ebp, %ecx
movl $0x0, %ecx
sbbl %ecx, %ecx
orl $0x1, %ecx
addl %ebp, %ecx
decl %ecx
movl %ecx, %edx
shrl %edx
orl %ecx, %edx
movl %edx, %ecx
shrl $0x2, %ecx
orl %edx, %ecx
movl %ecx, %edx
shrl $0x4, %edx
orl %ecx, %edx
movl %edx, %esi
shrl $0x8, %esi
orl %edx, %esi
movl %esi, %ecx
shrl $0x10, %ecx
orl %esi, %ecx
incl %ecx
cmpl $0x5, %ecx
pushq $0x4
popq %rdx
movl %edx, %esi
cmovael %ecx, %esi
cvtsi2sd %rsi, %xmm0
mulsd 0x92dc(%rip), %xmm0     # 0xc008
addsd 0x92dc(%rip), %xmm0     # 0xc010
cvttsd2si %xmm0, %r8
cmpl %r8d, %edi
jae 0x2e87
movq %r8, 0x58(%rsp)
movl %eax, 0x48(%rsp)
movq %rsi, 0x8(%rsp)
movq 0x8(%rsp), %r12
shrl $0x2, %r12d
andl $-0x4, %r12d
cmpl $0x10, %ecx
cmovbl %edx, %r12d
movq %r12, %rdi
callq 0x22a0
movq %rax, %r13
movq %rax, %rdi
movl $0xaa, %esi
movq %r12, %rdx
movq 0x8(%rsp), %r12
callq 0x21b0
movl %r12d, %eax
movq %rax, 0x50(%rsp)
cmpl %r12d, %ebp
jae 0x2dae
movq 0x18(%r15), %rdi
movq 0x50(%rsp), %rax
leaq (,%rax,8), %rsi
callq 0x22f0
movq %rax, 0x18(%r15)
movl (%r15), %ebp
decl %r12d
xorl %eax, %eax
cmpl %ebp, %eax
je 0x2e97
movq 0x10(%r15), %rdx
movl %eax, %esi
shrl $0x4, %esi
movl (%rdx,%rsi,4), %r8d
leal (%rax,%rax), %ecx
andl $0x1e, %ecx
movl %r8d, %edi
shrl %cl, %edi
testb $0x3, %dil
jne 0x2e80
leaq (%rdx,%rsi,4), %r9
movq 0x18(%r15), %rsi
movl %eax, %edi
movq (%rsi,%rdi,8), %rdi
btsl %ecx, %r8d
movl %r8d, (%r9)
movq %rdi, %r8
shrq $0x21, %r8
movl %edi, %ecx
shll $0xb, %ecx
xorl %ecx, %r8d
xorl %edi, %r8d
movl %r12d, %r9d
andl %r8d, %r9d
movl %r8d, %ecx
shrl $0x3, %ecx
shll $0x3, %r8d
xorl %ecx, %r8d
orl $0x1, %r8d
andl %r12d, %r8d
movl %r9d, %r10d
shrl $0x4, %r10d
movl (%r13,%r10,4), %r11d
leal (%r9,%r9), %ecx
andl $0x1e, %ecx
movl %r14d, %ebp
shll %cl, %ebp
testl %r11d, %ebp
jne 0x2e43
addl %r8d, %r9d
andl %r12d, %r9d
jmp 0x2e1e
notl %ebp
andl %ebp, %r11d
movl %r11d, (%r13,%r10,4)
movl (%r15), %ebp
movl %r9d, %r11d
cmpl %ebp, %r9d
jae 0x2e7c
movl (%rdx,%r10,4), %r8d
movl %r8d, %r9d
shrl %cl, %r9d
testb $0x3, %r9b
jne 0x2e7c
leaq (%rdx,%r10,4), %r9
movq (%rsi,%r11,8), %r10
movq %rdi, (%rsi,%r11,8)
movq %r10, %rdi
jmp 0x2deb
movq %rdi, (%rsi,%r11,8)
incl %eax
jmp 0x2db3
leal -0x1(%rbp), %r12d
movq %rbp, 0x8(%rsp)
movq 0x20(%rsp), %rbp
jmp 0x2eeb
cmpl 0x8(%rsp), %ebp
jbe 0x2eb3
movq 0x18(%r15), %rdi
movq 0x50(%rsp), %rsi
shlq $0x3, %rsi
callq 0x22f0
movq %rax, 0x18(%r15)
movq 0x10(%r15), %rdi
callq 0x2050
movq %r13, 0x10(%r15)
movq 0x8(%rsp), %rax
movl %eax, (%r15)
movl 0x4(%r15), %eax
movl %eax, 0x8(%r15)
movq 0x58(%rsp), %rax
movl %eax, 0xc(%r15)
movq 0x38(%rsp), %r13
movq (%rsp), %r10
movq 0x20(%rsp), %rbp
movl 0x48(%rsp), %eax
movl %eax, %edx
shll $0xf, %edx
notl %edx
addl %eax, %edx
movl %edx, %ecx
shrl $0xa, %ecx
xorl %edx, %ecx
leal (%rcx,%rcx,8), %eax
movl %eax, %ecx
shrl $0x6, %ecx
xorl %eax, %ecx
movl %ecx, %edx
shll $0xb, %edx
notl %edx
addl %ecx, %edx
movl %edx, %eax
shrl $0x10, %eax
xorl %edx, %eax
xorq %rbx, %rax
shrq $0x21, %rbx
movl %eax, %ecx
shll $0xb, %ecx
xorl %ecx, %ebx
xorl %eax, %ebx
movl %r12d, %esi
andl %ebx, %esi
movq 0x10(%r15), %rdx
movl %esi, %ecx
shrl $0x4, %ecx
movl (%rdx,%rcx,4), %edi
leal (%rsi,%rsi), %ecx
shrl %cl, %edi
testb $0x2, %dil
je 0x2f48
movl %esi, %edi
jmp 0x2fe1
movl %ebx, %ecx
shrl $0x3, %ecx
shll $0x3, %ebx
xorl %ecx, %ebx
orl $0x1, %ebx
andl %r12d, %ebx
movq 0x8(%rsp), %rdi
movl %esi, %r8d
movl %r8d, %ecx
shrl $0x4, %ecx
movl (%rdx,%rcx,4), %r9d
leal (%r8,%r8), %ecx
andl $0x1e, %ecx
movl %r9d, %r10d
shrl %cl, %r10d
testb $0x2, %r10b
jne 0x2fb8
testb $0x1, %r10b
jne 0x2f90
movq 0x18(%r15), %r10
movl %r8d, %r11d
cmpq %rax, (%r10,%r11,8)
je 0x2fb8
btl %ecx, %r9d
cmovbl %r8d, %edi
addl %ebx, %r8d
andl %r12d, %r8d
cmpl %esi, %r8d
jne 0x2f60
movb $0x1, %cl
movq 0x8(%rsp), %r9
movl %r9d, %r8d
cmpl %r9d, %edi
movq (%rsp), %r10
je 0x2fd1
jmp 0x2fe1
shrl %cl, %r9d
testb $0x2, %r9b
sete %cl
movl %r8d, %esi
movl %edi, %r8d
movq (%rsp), %r10
movq 0x8(%rsp), %r9
cmpl %r9d, %r8d
cmovel %esi, %r8d
testb %cl, %cl
cmovnel %esi, %r8d
movl %r8d, %edi
movl %edi, %esi
shrl $0x4, %esi
movl (%rdx,%rsi,4), %r8d
leal (%rdi,%rdi), %ecx
andl $0x1e, %ecx
movl %r8d, %r9d
shrl %cl, %r9d
movl %edi, %edi
testb $0x2, %r9b
movabsq $0x3ffffffffffffff, %r12 # imm = 0x3FFFFFFFFFFFFFF
movq 0x30(%rsp), %r11
jne 0x3232
testb $0x1, %r9b
jne 0x3261
cmpb $0x0, 0x18(%rsp)
leaq 0xe341(%rip), %rax      # 0x11368
leaq 0xe332(%rip), %rcx      # 0x11360
cmovneq %rcx, %rax
leaq 0xe33f(%rip), %rcx      # 0x11378
leaq 0xe330(%rip), %rdx      # 0x11370
cmovneq %rdx, %rcx
incq (%rax)
incq (%rcx)
movabsq $0x40000000000, %rax    # imm = 0x40000000000
movq 0x10(%rsp), %rcx
orq %rax, 0x8(%rcx)
cmpb $0x0, 0x8(%rbp)
je 0x3295
movq 0x28(%rsp), %rdi
callq 0x23e0
movq (%rsp), %rcx
movq %rax, 0x28(%rsp)
movl (%rcx), %ebx
movl 0x8(%rcx), %eax
cmpl 0xc(%rcx), %eax
jb 0x329d
movl 0x4(%rcx), %eax
leal (%rax,%rax), %ecx
cmpl %ebx, %ecx
movl $0x0, %ecx
sbbl %ecx, %ecx
orl $0x1, %ecx
addl %ebx, %ecx
decl %ecx
movl %ecx, %edx
shrl %edx
orl %ecx, %edx
movl %edx, %ecx
shrl $0x2, %ecx
orl %edx, %ecx
movl %ecx, %edx
shrl $0x4, %edx
orl %ecx, %edx
movl %edx, %esi
shrl $0x8, %esi
orl %edx, %esi
movl %esi, %ecx
shrl $0x10, %ecx
orl %esi, %ecx
incl %ecx
cmpl $0x5, %ecx
pushq $0x4
popq %rdx
movl %edx, %r15d
cmovael %ecx, %r15d
cvtsi2sd %r15, %xmm0
mulsd 0x8f2c(%rip), %xmm0     # 0xc008
addsd 0x8f2c(%rip), %xmm0     # 0xc010
cvttsd2si %xmm0, %rsi
cmpl %esi, %eax
jae 0x329d
movq %rsi, 0x20(%rsp)
movl %r15d, %r12d
shrl $0x2, %r12d
andl $-0x4, %r12d
cmpl $0x10, %ecx
cmovbl %edx, %r12d
movq %r12, %rdi
callq 0x22a0
movq %rax, %r13
movq %rax, %rdi
movl $0xaa, %esi
movq %r12, %rdx
callq 0x21b0
movq (%rsp), %r8
movl %r15d, %r12d
movq %r15, 0x10(%rsp)
cmpl %r15d, %ebx
jae 0x3150
movq 0x18(%r8), %rdi
leaq (,%r12,8), %rsi
callq 0x22f0
movq (%rsp), %r8
movq %rax, 0x18(%r8)
movl (%r8), %ebx
movq %r12, 0x18(%rsp)
movq 0x10(%rsp), %rax
leal -0x1(%rax), %r12d
xorl %edi, %edi
cmpl %ebx, %edi
je 0x32a3
movq 0x10(%r8), %r15
movl %edi, %eax
shrl $0x4, %eax
movl (%r15,%rax,4), %edx
leal (%rdi,%rdi), %ecx
andl $0x1e, %ecx
movl %edx, %esi
shrl %cl, %esi
testb $0x3, %sil
jne 0x322b
movq 0x18(%r8), %rsi
movq %rdi, 0x8(%rsp)
movl %edi, %edi
movq (%rsi,%rdi,8), %rbp
btsl %ecx, %edx
movl %edx, (%r15,%rax,4)
movq %rbp, %rdi
callq 0x36bb
movl %eax, %ecx
shrl $0x3, %ecx
movl %eax, %esi
shll $0x3, %esi
xorl %ecx, %esi
orl $0x1, %esi
andl %r12d, %esi
movl %eax, %edi
andl %r12d, %edi
movl %edi, %edx
leal (%rdi,%rdi), %ecx
andl $0x1e, %ecx
movl %r14d, %r8d
shll %cl, %r8d
shrl $0x4, %edx
movl (%r13,%rdx,4), %r9d
leal (%rdi,%rsi), %eax
testl %r9d, %r8d
je 0x31b9
notl %r8d
andl %r8d, %r9d
movl %r9d, (%r13,%rdx,4)
movq (%rsp), %r8
movl (%r8), %ebx
movl %edi, %eax
cmpl %ebx, %edi
jae 0x321e
movl (%r15,%rdx,4), %edi
shrl %cl, %edi
movq 0x18(%r8), %rsi
testb $0x3, %dil
jne 0x3222
movq (%rsi,%rax,8), %rdi
movq %rbp, (%rsi,%rax,8)
pushq $0x1
popq %rax
shll %cl, %eax
movq 0x10(%r8), %r15
orl %eax, (%r15,%rdx,4)
movq %rdi, %rbp
jmp 0x319f
movq 0x18(%r8), %rsi
movq %rbp, (%rsi,%rax,8)
movq 0x8(%rsp), %rdi
incl %edi
jmp 0x3160
pushq $0x3
popq %r9
shll %cl, %r9d
movq 0x18(%r15), %rcx
movq %rax, (%rcx,%rdi,8)
notl %r9d
andl %r9d, %r8d
movl %r8d, (%rdx,%rsi,4)
movq 0x4(%r15), %xmm0
psubd 0x8dc7(%rip), %xmm0     # 0xc020
movq %xmm0, 0x4(%r15)
jmp 0x327e
pushq $0x3
popq %r9
shll %cl, %r9d
movq 0x18(%r15), %rcx
movq %rax, (%rcx,%rdi,8)
notl %r9d
andl %r9d, %r8d
movl %r8d, (%rdx,%rsi,4)
incl 0x4(%r15)
cmpb $0x0, 0x18(%rsp)
je 0x328e
incq 0xe0d4(%rip)            # 0x11360
jmp 0x3295
incq 0xe0d3(%rip)            # 0x11368
incq %r11
jmp 0x2b54
leal -0x1(%rbx), %r12d
jmp 0x32f0
cmpl 0x10(%rsp), %ebx
jbe 0x32c3
movq 0x18(%r8), %rdi
movq 0x18(%rsp), %rsi
shlq $0x3, %rsi
callq 0x22f0
movq (%rsp), %r8
movq %rax, 0x18(%r8)
movq 0x10(%r8), %rdi
movq %r8, %rbx
callq 0x2050
movq %r13, 0x10(%rbx)
movq 0x10(%rsp), %rcx
movl %ecx, (%rbx)
movl 0x4(%rbx), %eax
movl %eax, 0x8(%rbx)
movq 0x20(%rsp), %rax
movl %eax, 0xc(%rbx)
movq %rcx, %rbx
movq 0x38(%rsp), %r13
movq 0x28(%rsp), %rdi
callq 0x36bb
movl %eax, %edx
movl %eax, %edi
andl %r12d, %edi
movq (%rsp), %r10
movq 0x10(%r10), %rsi
movl %edi, %eax
shrl $0x4, %eax
movl (%rsi,%rax,4), %eax
leal (%rdi,%rdi), %ecx
shrl %cl, %eax
testb $0x2, %al
movq 0x30(%rsp), %r11
je 0x3327
movl %edi, %r15d
jmp 0x33f0
movl %edx, %eax
shrl $0x3, %eax
shll $0x3, %edx
xorl %eax, %edx
orl $0x1, %edx
andl %r12d, %edx
movq %rbx, 0x10(%rsp)
movl %ebx, %r15d
movl %edi, %ebx
movq %rsi, 0x8(%rsp)
movq %rdi, 0x20(%rsp)
movl %edx, 0x18(%rsp)
movl %ebx, %eax
shrl $0x4, %eax
movl (%rsi,%rax,4), %ebp
leal (%rbx,%rbx), %r13d
andl $0x1e, %r13d
movl %ebp, %eax
movl %r13d, %ecx
shrl %cl, %eax
testb $0x2, %al
jne 0x33c3
testb $0x1, %al
jne 0x3398
movq 0x18(%r10), %rax
movl %ebx, %ecx
movq (%rax,%rcx,8), %rdi
movq 0x28(%rsp), %rsi
callq 0x2200
movl 0x18(%rsp), %edx
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %r10
testl %eax, %eax
je 0x33c3
btl %r13d, %ebp
cmovbl %ebx, %r15d
addl %edx, %ebx
andl %r12d, %ebx
cmpl %edi, %ebx
jne 0x334f
movb $0x1, %al
movq 0x10(%rsp), %rdx
movl %edx, %ecx
cmpl %edx, %r15d
movq 0x38(%rsp), %r13
movq 0x30(%rsp), %r11
je 0x33e3
jmp 0x33f0
movl %r13d, %ecx
shrl %cl, %ebp
testb $0x2, %bpl
sete %al
movl %ebx, %edi
movl %r15d, %ecx
movq 0x38(%rsp), %r13
movq 0x30(%rsp), %r11
movq 0x10(%rsp), %rdx
cmpl %edx, %ecx
cmovel %edi, %ecx
testb %al, %al
cmovnel %edi, %ecx
movl %ecx, %r15d
movl %r15d, %eax
shrl $0x4, %eax
movl (%rsi,%rax,4), %edx
leal (%r15,%r15), %ecx
andl $0x1e, %ecx
shrl %cl, %edx
movl %r15d, %esi
testb $0x2, %dl
movabsq $0x3ffffffffffffff, %r12 # imm = 0x3FFFFFFFFFFFFFF
jne 0x3446
testb $0x1, %dl
movq 0x40(%rsp), %r15
je 0x3295
movq 0x18(%r10), %rdx
movq 0x28(%rsp), %rdi
movq %rdi, (%rdx,%rsi,8)
pushq $0x3
popq %rdx
shll %cl, %edx
notl %edx
movq 0x10(%r10), %rcx
andl %edx, (%rcx,%rax,4)
incl 0x4(%r10)
jmp 0x3295
movq 0x18(%r10), %rdx
movq 0x28(%rsp), %rdi
movq %rdi, (%rdx,%rsi,8)
pushq $0x3
popq %rdx
shll %cl, %edx
notl %edx
movq 0x10(%r10), %rcx
andl %edx, (%rcx,%rax,4)
movq 0x4(%r10), %xmm0
psubd 0x8bb1(%rip), %xmm0     # 0xc020
movq %xmm0, 0x4(%r10)
movq 0x40(%rsp), %r15
jmp 0x3295
xorl %ecx, %ecx
cmpq %rcx, %rax
jbe 0x35f0
movq (%r13), %rax
andq %r12, %rax
movq %rcx, 0x8(%rsp)
addq %rcx, %rax
andq 0x10(%r13), %rax
movq 0x18(%r13), %rcx
shlq $0x4, %rax
cmpb $0x0, 0x8(%rcx,%rax)
je 0x34b6
leaq (%rcx,%rax), %rdx
cmpb $0x0, 0x9(%rdx)
je 0x34d8
movq 0x8(%rsp), %rcx
incq %rcx
movq 0x38(%rsp), %r13
movq 0x8(%r13), %rax
movq 0x40(%rsp), %r15
movabsq $0x3ffffffffffffff, %r12 # imm = 0x3FFFFFFFFFFFFFF
jmp 0x3481
movq (%rcx,%rax), %rax
movl (%r10), %ecx
testl %ecx, %ecx
movq %rax, 0x20(%rsp)
je 0x3587
movq 0x28(%rax), %rdi
movq %rcx, 0x18(%rsp)
leal -0x1(%rcx), %ebx
movq %rdi, 0x30(%rsp)
callq 0x36bb
movq (%rsp), %r10
movl %eax, %ebp
movl %eax, %r13d
andl %ebx, %r13d
shrl $0x3, %eax
shll $0x3, %ebp
xorl %eax, %ebp
orl $0x1, %ebp
movl %ebx, 0x28(%rsp)
andl %ebx, %ebp
movq 0x10(%r10), %r14
movl %r13d, %ebx
movl %ebx, %eax
shrl $0x4, %eax
movl (%r14,%rax,4), %r15d
leal (%rbx,%rbx), %r12d
andl $0x1e, %r12d
movl %r15d, %eax
movl %r12d, %ecx
shrl %cl, %eax
testb $0x2, %al
jne 0x3573
testb $0x1, %al
jne 0x3563
movq 0x18(%r10), %rax
movl %ebx, %ecx
movq (%rax,%rcx,8), %rdi
movq 0x30(%rsp), %rsi
callq 0x2200
movq (%rsp), %r10
testl %eax, %eax
je 0x3573
addl %ebp, %ebx
andl 0x28(%rsp), %ebx
cmpl %r13d, %ebx
jne 0x3526
jmp 0x34b6
movl %r12d, %ecx
shrl %cl, %r15d
testb $0x3, %r15b
movq 0x18(%rsp), %rcx
cmovnel %ecx, %ebx
jmp 0x3589
xorl %ebx, %ebx
cmpl %ecx, %ebx
je 0x34b6
movabsq $0x40000000000, %rax    # imm = 0x40000000000
movq 0x20(%rsp), %rcx
orq %rax, 0x8(%rcx)
movq 0x18(%r10), %rax
movl %ebx, %ecx
movq (%rax,%rcx,8), %rdi
callq 0x2050
movq (%rsp), %r10
cmpl %ebx, (%r10)
je 0x34b6
movq 0x10(%r10), %rax
movl %ebx, %edx
shrl $0x4, %edx
movl (%rax,%rdx,4), %esi
addl %ebx, %ebx
andl $0x1e, %ebx
movl %esi, %edi
movl %ebx, %ecx
shrl %cl, %edi
testb $0x3, %dil
jne 0x34b6
btsl %ebx, %esi
movl %esi, (%rax,%rdx,4)
decl 0x4(%r10)
jmp 0x34b6
movabsq $-0x400000000000000, %rbx # imm = 0xFC00000000000000
testq %rax, %rax
je 0x364f
movq (%r13), %rcx
movq 0x18(%r13), %r14
movq %rcx, %r15
andq %r12, %r15
leaq 0x1(%rcx), %rdx
andq %r12, %rdx
andq %rbx, %rcx
shlq $0x4, %r15
andq 0x10(%r13), %rdx
orq %rcx, %rdx
movq %rdx, (%r13)
decq %rax
movq %rax, 0x8(%r13)
movq (%r14,%r15), %rsi
movq 0x60(%rsp), %rdi
callq 0x835a
movq (%r14,%r15), %rdi
movq 0x40(%rsp), %r15
callq 0x7f2b
movq 0x8(%r13), %rax
jmp 0x35fa
movq %r15, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq