// File: /workspace/github_c_makefile_star2_O3/PoulinV[P]AxiCLASS/build/../tools/sparse.c
// Function: sp_amd
int sp_amd(int *Cp, int *Ci, int n, int nzmax, int *P, int *W){
	int *last, *len, *nv, *next, *head, *elen, *degree, *w, *hhead;
	int d, dk, dext, lemax=0, e, elenk, eln, i, j, k, k1, k2, k3, jlast, ln;
	int dense, mindeg=0, nvi, nvj, nvk, mark, wnvi, ok, nel=0;
	int p, p1, p2, p3, p4, pj, pk, pk1, pk2, pn, q, cnz;
	unsigned int h;
	/*	I assume that the sparse matrix C is symmetrix (C = A + A' in our case)
		and that the diagonal elements has been removed. C must be large enough,
		C->max_nonzero >= (6/5)*(C->Ap[n]) + 2n. Work array W must be 8*(n+1).
	*/
	dense = MAX(16,10*sqrt((double) n));
	dense = MIN(n-2,dense);
	cnz = Cp[n];
	/*	Assign pointers to positions in work array:*/
	len = W;
	nv = W+(n+1);
	next = W+2*(n+1);
	head = W+3*(n+1);
	elen = W+4*(n+1);
	degree = W+5*(n+1);
	w = W+6*(n+1);
	hhead = W+7*(n+1);
	last = P;
	/* Initialise quotient graph: */
	for(k=0; k<n; k++) len[k] = Cp[k+1]-Cp[k];
	len[n] = 0;
	for(i=0; i<=n; i++){
		head[i] = -1;
		last[i] = -1;
		next[i] = -1;
		hhead[i] = -1;
		nv[i] = 1;
		w[i] = 1;
		elen[i] = 0;
		degree[i] = len[i];
	}
	mark = sp_wclear(0, 0, w, n);
	elen[n] = -2;
	Cp[n] = -1;
	w[n] = 0;
	/* Initialize degree lists */
	for(i=0; i<n; i++){
		d = degree[i];
		if(d==0){
			elen[i] = -2;
			nel++;
			Cp[i] = -1;
			w[i] = 0;
		}
		else if(d>dense){
			nv[i] = 0;
			elen[i] = -1;
			nel++;
			Cp[i] = SPFLIP(n);
			nv[n]++;
		}
		else{
			if(head[d]!=-1) last[head[d]] = i;
			next[i] = head[d];
			head[d] = i;
		}
	}
	while(nel<n){
		/* Select node ofminimum degree: */
		for(k=-1; (mindeg<n)&&((k=head[mindeg])==-1); mindeg++);
		if(next[k]!=-1) last[next[k]]=-1;
		head[mindeg] = next[k];
		elenk = elen[k];
		nvk = nv[k];
		nel +=nvk;
		/* Garbage collection */
		if((elenk>0)&&(cnz+mindeg >=nzmax)){
			for(j=0; j<n; j++){
				if((p=Cp[j])>=0){
					Cp[j] = Ci[p];
					Ci[p] = SPFLIP(j);
				}
			}
			for(q=0,p=0; p<cnz; ){
				if((j=SPFLIP(Ci[p++]))>=0){
					Ci[q] = Cp[j];
					Cp[j] = q++;
					for(k3=0; k3<len[j]-1; k3++) Ci[q++] = Ci[p++];
				}
			}
			cnz = q;
		}
		/* Construct new element: */
		dk = 0;
		nv[k] = -nvk;
		p = Cp[k];
		pk1 = (elenk==0) ? p : cnz;
		pk2 = pk1;
		for(k1=1; k1<=elenk + 1; k1++){
			if (k1>elenk){
				e=k;
				pj = p;
				ln = len[k] - elenk;
			}
			else{
				e = Ci[p++];
				pj = Cp[e];
				ln = len[e];
			}
			for(k2=1; k2<=ln; k2++){
				i=Ci[pj++];
				if((nvi=nv[i])<=0) continue;
				dk += nvi;
				nv[i] = -nvi;
				Ci[pk2++] = i;
				if (next[i]!=-1) last[next[i]] =last[i];
				if (last[i]!=-1){
					next[last[i]] = next[i];
				}
				else{
					head[degree[i]] = next[i];
				}
			}
			if(e!=k){
				Cp[e] = SPFLIP(k);
				w[e] = 0;
			}
		}
		if (elenk!=0) cnz = pk2;
		degree[k] = dk;
		Cp[k] = pk1;
		len[k] = pk2 - pk1;
		elen[k] = -2;
		/* Find set differences: */
		mark = sp_wclear(mark, lemax, w, n);
		for(pk=pk1; pk<pk2; pk++){
			i = Ci[pk];
			if((eln = elen[i]) <=0) continue;
			nvi = -nv[i];
			wnvi = mark - nvi;
			for(p=Cp[i]; p<=Cp[i] + eln -1; p++){
				e = Ci[p];
				if(w[e] >=mark){
					w[e] -= nvi;
				}
				else if(w[e]!=0){
					w[e] = degree[e] + wnvi;
				}
			}
		}
		/* Degree update:*/
		for(pk=pk1; pk<pk2; pk++){
			i=Ci[pk];
			p1 = Cp[i];
			p2 = p1 + elen[i] - 1;
			pn = p1;
			for(h=0, d=0, p=p1; p<=p2; p++){
				e = Ci[p];
				if(w[e]!=0){
					dext = w[e] - mark;
					if (dext>0){
						d+=dext;
						Ci[pn++] = e;
						h +=e;
					}
					else{
						Cp[e] = SPFLIP(k);
						w[e] = 0;
					}
				}
			}
			elen[i] = pn-p1+1;
			p3 = pn;
			p4 = p1 + len[i];
			for(p=p2+1; p<p4; p++){
				j=Ci[p];
				if((nvj = nv[j]) <= 0) continue;
				d += nvj;
				Ci[pn++] = j;
				h += j;
			}
			if (d==0){
				Cp[i] = SPFLIP(k);
				nvi = -nv[i];
				dk -= nvi;
				nvk += nvi;
				nel +=nvi;
				nv[i] = 0;
				elen[i] = -1;
			}
			else{
				degree[i] = MIN(degree[i],d);
				Ci[pn] = Ci[p3];
				Ci[p3] = Ci[p1];
				Ci[p1] = k;
				len[i] = pn -p1 +1;
				h %= n;
				next[i] = hhead[h];
				hhead[h] = i;
				last[i] = h;
			}
		}
		degree[k] = dk;
		lemax = MAX(lemax,dk);
		mark = sp_wclear(mark+lemax, lemax, w, n);
		/* Supernode detection: */
		for(pk=pk1; pk <pk2; pk++){
			i = Ci[pk];
			if(nv[i]>=0) continue;
			h = last[i];
			i = hhead[h];
			hhead[h] = -1;
			for( ;(i!=-1)&&(next[i]!=-1);i = next[i],mark++){
				ln = len[i];
				eln = elen[i];
				for(p=Cp[i] + 1; p<=Cp[i]+ln-1; p++) w[Ci[p]] = mark;
				jlast = i;
				for(j=next[i]; j!=-1; ){
					ok = (len[j]==ln)&&(elen[j] == eln);
					for(p=Cp[j] +1;ok&&p<=Cp[j]+ln-1; p++){
						if(w[Ci[p]]!=mark) ok=0;
					}
					if (ok){
						Cp[j] = SPFLIP(i);
						nv[i] +=nv[j];
						nv[j] = 0;
						elen[j] = -1;
						j = next[j];
						next[jlast] = j;
					}
					else{
						jlast =j;
						j = next[j];
					}
				}
			}
		}
		/* Finalize new element: */
		for(p=pk1, pk=pk1; pk<pk2; pk++){
			i = Ci[pk];
			if ((nvi = -nv[i]) <=0) continue;
			nv[i] = nvi;
			d = degree[i] +dk -nvi;
			d = MIN(d, (n-nel-nvi));
			if(head[d]!=-1) last[head[d]] = i;
			next[i] = head[d];
			last[i] = -1;
			head[d] = i;
			mindeg = MIN(mindeg,d);
			degree[i] = d;
			Ci[p++] = i;
		}
		nv[k] = nvk;
		if((len[k] = p-pk1)==0){
			Cp[k] = -1;
			w[k] = 0;
		}
		if(elenk!=0) cnz = p;
	}
	/* Postordering */
	for(i=0; i<n; i++) Cp[i] = SPFLIP(Cp[i]);
	for(j=0; j<=n; j++) head[j] = -1;
	for(j=n; j>=0; j--){
		if(nv[j] > 0) continue;
		next[j] = head[Cp[j]];
		head[Cp[j]] = j;
	}
	for(e=n; e>=0; e--){
		if(nv[e]<=0) continue;
		if(Cp[e] !=-1){
			next[e] = head[Cp[e]];
			head[Cp[e]] = e;
		}
	}
	for(k=0,i=0; i<=n; i++){
		if (Cp[i] == -1) k = sp_tdfs(i, k, head, next, P, w);
	}
	return _SUCCESS_;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
movq %r9, %r14
movq %r8, %rbx
movl %ecx, 0xc8(%rsp)
movq %rsi, %rbp
movq %rdx, 0x20(%rsp)
cvtsi2sd %edx, %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movq %rdi, 0x68(%rsp)
jb 0xc1ef
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0xc209
movapd %xmm1, %xmm0
movsd %xmm1, 0x38(%rsp)
callq 0x82b0
movsd 0x38(%rsp), %xmm1
movq 0x68(%rsp), %rdi
mulsd 0xe25df(%rip), %xmm0    # 0xee7f0
movl $0x10, %ecx
ucomisd 0xe25da(%rip), %xmm0    # 0xee7f8
jbe 0xc24d
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jb 0xc233
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0xc241
movapd %xmm1, %xmm0
callq 0x82b0
movq 0x68(%rsp), %rdi
mulsd 0xe25a7(%rip), %xmm0    # 0xee7f0
cvttsd2si %xmm0, %ecx
movq 0x20(%rsp), %r10
leal -0x2(%r10), %eax
cmpl %ecx, %eax
cmovll %eax, %ecx
movl %ecx, 0x4(%rsp)
movslq %r10d, %rax
movq %rax, 0x78(%rsp)
movl (%rdi,%rax,4), %eax
leal 0x1(%r10), %edx
movslq %edx, %rdx
leal 0x2(%r10,%r10), %esi
movslq %esi, %r9
leal (%rdx,%rdx,2), %esi
movslq %esi, %rsi
movq %rsi, 0xd8(%rsp)
leal 0x4(,%r10,4), %esi
movslq %esi, %rsi
leal (%rdx,%rdx,4), %r8d
movq %r14, %r13
movslq %r8d, %r14
movq %r9, 0xe0(%rsp)
leal (%r9,%r9,2), %r8d
movslq %r8d, %r8
leal 0x8(,%r10,8), %r9d
subl %edx, %r9d
movslq %r9d, %r9
movl %r10d, %r15d
testl %r10d, %r10d
jle 0xc2de
xorl %r10d, %r10d
movl 0x4(%rdi,%r10,4), %r11d
subl (%rdi,%r10,4), %r11d
movl %r11d, (%r13,%r10,4)
leaq 0x1(%r10), %r11
movq %r11, %r10
cmpq %r11, %r15
jne 0xc2c4
movq %r15, 0xa0(%rsp)
leaq (,%rdx,4), %r10
addq %r13, %r10
movq %r10, 0x8(%rsp)
movq 0xe0(%rsp), %r10
leaq (%r13,%r10,4), %r15
movq 0xd8(%rsp), %r10
leaq (%r13,%r10,4), %r10
movq %r10, 0x70(%rsp)
leaq (%r13,%rsi,4), %rcx
movq %rcx, 0x10(%rsp)
leaq (%r13,%r14,4), %rcx
movq %rcx, 0x28(%rsp)
leaq (%r13,%r8,4), %r12
leaq (%r13,%r9,4), %r9
movq 0x78(%rsp), %rsi
movl $0x0, (%r13,%rsi,4)
movl %edx, %edx
movq %rdx, 0xd0(%rsp)
cmpl $0x0, 0x20(%rsp)
movq %rdi, %r10
movq %r13, %r14
movq %r9, 0xa8(%rsp)
js 0xc4e8
movq 0xd0(%rsp), %rdx
leaq (,%rdx,4), %rcx
movq %rcx, 0x38(%rsp)
xorl %esi, %esi
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movl $0x1, %r8d
movq 0x70(%rsp), %r11
movq 0x8(%rsp), %r13
movq 0x10(%rsp), %rcx
movq 0x28(%rsp), %rdx
movl %edi, (%r11,%rsi)
movl %edi, (%rbx,%rsi)
movl %edi, (%r15,%rsi)
movl %edi, (%r9,%rsi)
movl %r8d, (%r13,%rsi)
movl %r8d, (%r12,%rsi)
movl $0x0, (%rcx,%rsi)
movl (%r14,%rsi), %r9d
movl %r9d, (%rdx,%rsi)
movq 0xa8(%rsp), %r9
addq $0x4, %rsi
cmpq %rsi, 0x38(%rsp)
jne 0xc39a
cmpl $0x0, 0x20(%rsp)
je 0xc4e8
xorl %edx, %edx
movq 0x20(%rsp), %rsi
movq 0x8(%rsp), %r9
movq 0x10(%rsp), %rcx
cmpl $0x0, (%r12,%rdx,4)
je 0xc3ff
movl $0x1, (%r12,%rdx,4)
incq %rdx
cmpq %rdx, 0xa0(%rsp)
jne 0xc3f0
movq 0x78(%rsp), %rdx
movl $0xfffffffe, (%rcx,%rdx,4) # imm = 0xFFFFFFFE
movl $0xffffffff, (%r10,%rdx,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rdx,4)
testl %esi, %esi
jle 0xcfac
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
subl %esi, %edx
xorl %esi, %esi
movl $0x0, (%rsp)
movq 0x28(%rsp), %rcx
movl 0x4(%rsp), %r11d
movslq (%rcx,%rsi,4), %rdi
testq %rdi, %rdi
je 0xc483
cmpl %r11d, %edi
jle 0xc4a9
movl $0x0, (%r9,%rsi,4)
movq 0x10(%rsp), %rcx
movl $0xffffffff, (%rcx,%rsi,4) # imm = 0xFFFFFFFF
movq 0x28(%rsp), %rcx
incl (%rsp)
movl %edx, (%r10,%rsi,4)
movq 0x78(%rsp), %rdi
incl (%r9,%rdi,4)
jmp 0xc4d5
movq 0x10(%rsp), %rcx
movl $0xfffffffe, (%rcx,%rsi,4) # imm = 0xFFFFFFFE
movq 0x28(%rsp), %rcx
incl (%rsp)
movl $0xffffffff, (%r10,%rsi,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rsi,4)
jmp 0xc4d5
movq 0x70(%rsp), %r9
movslq (%r9,%rdi,4), %r8
cmpq $-0x1, %r8
je 0xc4c2
movl %esi, (%rbx,%r8,4)
movl (%r9,%rdi,4), %r8d
jmp 0xc4c8
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl %r8d, (%r15,%rsi,4)
movl %esi, (%r9,%rdi,4)
movq 0x8(%rsp), %r9
incq %rsi
cmpq %rsi, 0xa0(%rsp)
jne 0xc44a
jmp 0xc515
movq 0x78(%rsp), %rcx
movq 0x10(%rsp), %rdx
movl $0xfffffffe, (%rdx,%rcx,4) # imm = 0xFFFFFFFE
movl $0xffffffff, (%r10,%rcx,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rcx,4)
movl $0x0, (%rsp)
movq 0x8(%rsp), %r9
movq 0x20(%rsp), %rdi
cmpl %edi, (%rsp)
jge 0xce98
movl $0x2, %ecx
movq $0x0, 0x98(%rsp)
xorl %r8d, %r8d
movq %r15, 0x38(%rsp)
movq %r14, 0x40(%rsp)
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
cmpl %edi, %r8d
jge 0xc57e
movq %r8, %r11
movslq %r8d, %rdi
movq 0x70(%rsp), %rsi
leaq (%rsi,%rdi,4), %rsi
movq 0x78(%rsp), %r8
subq %rdi, %r8
xorl %edi, %edi
movl (%rsi,%rdi,4), %r13d
cmpl $-0x1, %r13d
jne 0xc586
incq %rdi
cmpq %rdi, %r8
jne 0xc564
movq 0x20(%rsp), %rdi
movl %edi, %r8d
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
jmp 0xc591
movq %r11, %r8
addl %edi, %r8d
movq 0x20(%rsp), %rdi
movl %r13d, 0x54(%rsp)
movslq %r13d, %r13
movslq (%r15,%r13,4), %rsi
cmpq $-0x1, %rsi
je 0xc5ae
movl $0xffffffff, (%rbx,%rsi,4) # imm = 0xFFFFFFFF
movl (%r15,%r13,4), %edx
movslq %r8d, %rsi
movq %r8, %r11
movq 0x70(%rsp), %r8
movl %edx, (%r8,%rsi,4)
movq 0x10(%rsp), %rdx
movl (%rdx,%r13,4), %edx
movq %rdx, 0xc0(%rsp)
movq %r13, 0x88(%rsp)
movl (%r9,%r13,4), %esi
movl %esi, 0x50(%rsp)
testl %edx, %edx
movq %r11, 0x30(%rsp)
jle 0xc6e5
leal (%r11,%rax), %edx
cmpl 0xc8(%rsp), %edx
movq %r11, %r8
movl 0x54(%rsp), %r13d
jl 0xc6de
testl %edi, %edi
jle 0xc639
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
xorl %esi, %esi
movslq (%r10,%rsi,4), %rdi
testq %rdi, %rdi
js 0xc62a
movl (%rbp,%rdi,4), %r8d
movl %r8d, (%r10,%rsi,4)
movq 0x30(%rsp), %r8
movl %edx, (%rbp,%rdi,4)
incq %rsi
decl %edx
cmpq %rsi, 0xa0(%rsp)
jne 0xc60f
testl %eax, %eax
jle 0xc6f4
movq $0x0, 0x48(%rsp)
xorl %edx, %edx
movslq %edx, %rdi
incl %edx
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
subl (%rbp,%rdi,4), %esi
js 0xc6d4
movl %esi, %esi
movl (%r10,%rsi,4), %edi
movq 0x48(%rsp), %r11
movslq %r11d, %r11
movl %edi, (%rbp,%r11,4)
movl %r11d, (%r10,%rsi,4)
incl %r11d
cmpl $0x2, (%r14,%rsi,4)
movq %r11, 0x48(%rsp)
jl 0xc6d4
movslq %r11d, %rdi
movslq %edx, %r8
leaq (,%r8,4), %r8
addq %rbp, %r8
leaq (,%rdi,4), %r9
addq %rbp, %r9
xorl %edi, %edi
movl (%r8,%rdi,4), %r10d
movl %r10d, (%r9,%rdi,4)
movl (%r14,%rsi,4), %r10d
decl %r10d
incq %rdi
cmpl %r10d, %edi
jl 0xc6a0
addl %edi, %edx
movq 0x48(%rsp), %rsi
addl %edi, %esi
movq %rsi, 0x48(%rsp)
movq 0x68(%rsp), %r10
movq 0x8(%rsp), %r9
movq 0x30(%rsp), %r8
cmpl %eax, %edx
jl 0xc64c
jmp 0xc6fd
movq %rax, 0x48(%rsp)
jmp 0xc6fd
movq %rax, 0x48(%rsp)
movq %r11, %r8
movl 0x54(%rsp), %r13d
jmp 0xc6fd
movq $0x0, 0x48(%rsp)
movl 0x50(%rsp), %eax
addl %eax, (%rsp)
negl %eax
movq 0x88(%rsp), %rdx
movl %eax, (%r9,%rdx,4)
movl (%r10,%rdx,4), %r11d
movq 0x48(%rsp), %rax
movl %eax, %edi
movq 0xc0(%rsp), %rsi
testl %esi, %esi
movl %r11d, 0x58(%rsp)
cmovel %r11d, %edi
movl %edi, 0x1c(%rsp)
js 0xccd9
movl $0xfffffffe, %eax       # imm = 0xFFFFFFFE
subl %r13d, %eax
movl %eax, 0x90(%rsp)
leal 0x1(%rsi), %eax
movl %eax, 0xb8(%rsp)
movl $0x1, %r8d
movl $0x0, 0x4(%rsp)
cmpl %esi, %r8d
jle 0xc782
movq 0x88(%rsp), %rax
movl (%r14,%rax,4), %eax
subl %esi, %eax
movl %r13d, %edx
movq %rdx, 0x60(%rsp)
movl 0x58(%rsp), %edx
jmp 0xc7a1
movl 0x58(%rsp), %edx
movslq %edx, %rax
incl %edx
movl %edx, 0x58(%rsp)
movslq (%rbp,%rax,4), %rax
movl (%r10,%rax,4), %edx
movq %rax, 0x60(%rsp)
movl (%r14,%rax,4), %eax
testl %eax, %eax
jle 0xc837
movslq %edx, %rdx
leaq (,%rdx,4), %r11
addq %rbp, %r11
movl %eax, %edx
xorl %esi, %esi
movl (%r11,%rsi,4), %eax
movslq %eax, %r13
movl (%r9,%r13,4), %r14d
testl %r14d, %r14d
jle 0xc830
movl %r14d, %eax
negl %eax
movl %eax, (%r9,%r13,4)
movslq %edi, %rax
movl %r13d, (%rbp,%rax,4)
movslq (%r15,%r13,4), %r9
movl (%rbx,%r13,4), %eax
cmpq $-0x1, %r9
je 0xc7ee
movl %eax, (%rbx,%r9,4)
movl (%r15,%r13,4), %r9d
movq 0xe0(%rsp), %r15
cmpl $-0x1, %eax
jne 0xc810
movq 0x28(%rsp), %rax
movl (%rax,%r13,4), %eax
movq 0xd8(%rsp), %r15
addl %r14d, 0x4(%rsp)
incl %edi
movq 0x40(%rsp), %r14
leaq (%r14,%r15,4), %r14
cltq
movl %r9d, (%r14,%rax,4)
movq 0x38(%rsp), %r15
movq 0x8(%rsp), %r9
incq %rsi
cmpl %esi, %edx
jne 0xc7bb
movl 0x54(%rsp), %r13d
movq 0x60(%rsp), %rax
cmpl %r13d, %eax
movq 0xc0(%rsp), %rsi
je 0xc863
cltq
movl 0x90(%rsp), %edx
movl %edx, (%r10,%rax,4)
movl $0x0, (%r12,%rax,4)
leal 0x1(%r8), %eax
cmpl 0xb8(%rsp), %r8d
movl %eax, %r8d
movq 0x40(%rsp), %r14
jne 0xc761
movq 0x28(%rsp), %rax
movq 0x88(%rsp), %rdx
leaq (%rax,%rdx,4), %r11
movl 0x4(%rsp), %eax
movl %eax, (%r11)
movl 0x1c(%rsp), %esi
movl %esi, (%r10,%rdx,4)
leaq (%r14,%rdx,4), %r8
movl %edi, %eax
subl %esi, %eax
movq %r8, 0x80(%rsp)
movl %eax, (%r8)
movq 0x10(%rsp), %rax
movl $0xfffffffe, (%rax,%rdx,4) # imm = 0xFFFFFFFE
jle 0xcd0a
movq %r11, 0xb0(%rsp)
movslq %esi, %rax
movslq %edi, %rdx
movq %rdx, 0x58(%rsp)
movslq (%rbp,%rax,4), %rdx
movq 0x10(%rsp), %rsi
movslq (%rsi,%rdx,4), %rsi
testq %rsi, %rsi
jle 0xc931
movq 0x8(%rsp), %r8
movl (%r8,%rdx,4), %r8d
leal (%r8,%rcx), %r9d
movslq (%r10,%rdx,4), %r11
movslq (%rbp,%r11,4), %r14
movl (%r12,%r14,4), %r13d
cmpl %ecx, %r13d
jge 0xc91b
testl %r13d, %r13d
je 0xc922
movq 0x28(%rsp), %r13
movl (%r13,%r14,4), %r13d
addl %r9d, %r13d
jmp 0xc91e
addl %r8d, %r13d
movl %r13d, (%r12,%r14,4)
incq %r11
movslq (%r10,%rdx,4), %r14
addq %rsi, %r14
cmpq %r14, %r11
jl 0xc8f9
incq %rax
cmpq 0x58(%rsp), %rax
jne 0xc8d5
movl 0x1c(%rsp), %eax
cmpl %eax, %edi
movq 0x30(%rsp), %r8
jle 0xcd15
cltq
movq %rax, 0xb8(%rsp)
movl (%rbp,%rax,4), %eax
movslq %eax, %r9
movl (%r10,%r9,4), %r8d
movslq %r8d, %r14
movq 0x10(%rsp), %rax
movl (%rax,%r9,4), %edx
leal (%rdx,%r8), %eax
movq %rdx, 0xf0(%rsp)
testl %edx, %edx
movq %r8, 0x60(%rsp)
movq %r14, 0xe8(%rsp)
movl %eax, 0xcc(%rsp)
jle 0xc9df
movslq %eax, %rsi
xorl %eax, %eax
xorl %edx, %edx
movl (%rbp,%r14,4), %r13d
movslq %r13d, %r15
movl (%r12,%r15,4), %r11d
testl %r11d, %r11d
je 0xc9d5
subl %ecx, %r11d
jle 0xc9c1
addl %r11d, %edx
movslq %r8d, %r11
incl %r8d
movl %r13d, (%rbp,%r11,4)
addl %r13d, %eax
jmp 0xc9d5
movl 0x90(%rsp), %r11d
movl %r11d, (%r10,%r15,4)
movl $0x0, (%r12,%r15,4)
incq %r14
cmpq %rsi, %r14
jl 0xc998
jmp 0xc9e3
xorl %edx, %edx
xorl %eax, %eax
movl %r8d, %esi
movq 0x60(%rsp), %r14
subl %r14d, %esi
incl %esi
movq 0x10(%rsp), %r11
movl %esi, (%r11,%r9,4)
movq 0x40(%rsp), %rsi
movl (%rsi,%r9,4), %esi
cmpl %esi, 0xf0(%rsp)
jge 0xca4a
movslq 0xcc(%rsp), %r11
addl %r14d, %esi
movslq %esi, %r14
movl %r8d, %esi
movslq (%rbp,%r11,4), %r15
movq 0x8(%rsp), %r13
movl (%r13,%r15,4), %r13d
testl %r13d, %r13d
jle 0xca40
addl %r13d, %edx
movslq %esi, %r13
incl %esi
movl %r15d, (%rbp,%r13,4)
addl %r15d, %eax
incq %r11
cmpq %r14, %r11
jl 0xca1c
jmp 0xca4d
movl %r8d, %esi
testl %edx, %edx
je 0xcac3
movq 0x28(%rsp), %r14
movl (%r14,%r9,4), %r11d
cmpl %edx, %r11d
cmovll %r11d, %edx
movl %edx, (%r14,%r9,4)
movslq %r8d, %rdx
movl (%rbp,%rdx,4), %r8d
movslq %esi, %rsi
movl %r8d, (%rbp,%rsi,4)
movq 0xe8(%rsp), %r11
movl (%rbp,%r11,4), %r8d
movl %r8d, (%rbp,%rdx,4)
movl 0x54(%rsp), %edx
movl %edx, (%rbp,%r11,4)
subl 0x60(%rsp), %esi
incl %esi
movq 0x40(%rsp), %r14
movl %esi, (%r14,%r9,4)
xorl %edx, %edx
divl 0x20(%rsp)
movq 0xa8(%rsp), %rsi
movl (%rsi,%rdx,4), %eax
movq 0x38(%rsp), %r15
movl %eax, (%r15,%r9,4)
movl %r9d, (%rsi,%rdx,4)
movl %edx, (%rbx,%r9,4)
jmp 0xcb01
movl 0x90(%rsp), %eax
movl %eax, (%r10,%r9,4)
movq 0x8(%rsp), %rdx
movl (%rdx,%r9,4), %eax
addl %eax, 0x4(%rsp)
subl %eax, 0x50(%rsp)
subl %eax, (%rsp)
movl $0x0, (%rdx,%r9,4)
movq 0x10(%rsp), %rax
movl $0xffffffff, (%rax,%r9,4) # imm = 0xFFFFFFFF
movq 0x38(%rsp), %r15
movq 0x40(%rsp), %r14
movq 0x30(%rsp), %r8
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rax
incq %rax
cmpq 0x58(%rsp), %rax
jne 0xc94e
movq 0x98(%rsp), %rax
movl 0x4(%rsp), %edx
cmpl %edx, %eax
cmovlel %edx, %eax
movq %rax, 0x98(%rsp)
addl %eax, %ecx
movl %edx, (%rsi)
movl 0x1c(%rsp), %eax
cmpl %eax, %edi
jle 0xcd97
cltq
movq 0x8(%rsp), %r9
movq %rax, 0x90(%rsp)
movslq (%rbp,%rax,4), %rax
cmpl $0x0, (%r9,%rax,4)
js 0xcb84
movq 0x90(%rsp), %rax
incq %rax
cmpq 0x58(%rsp), %rax
movq 0x30(%rsp), %r8
jne 0xcb54
jmp 0xcda3
movl (%rbx,%rax,4), %eax
movq 0xa8(%rsp), %rdx
movl (%rdx,%rax,4), %esi
movl $0xffffffff, (%rdx,%rax,4) # imm = 0xFFFFFFFF
cmpl $-0x1, %esi
je 0xcb68
movslq %esi, %r8
movl (%r15,%r8,4), %edx
cmpl $-0x1, %edx
je 0xcb68
movl (%r14,%r8,4), %r9d
movq 0x10(%rsp), %rax
movl (%rax,%r8,4), %r11d
movslq (%r10,%r8,4), %r14
leal -0x1(%r9), %eax
leal (%r9,%r14), %r15d
decl %r15d
cmpl %r15d, %r14d
movq 0x38(%rsp), %r15
jge 0xcbf7
movslq 0x4(%rbp,%r14,4), %rdx
incq %r14
movl %ecx, (%r12,%rdx,4)
movl (%r10,%r8,4), %edx
addl %eax, %edx
movslq %edx, %rdx
cmpq %rdx, %r14
jl 0xcbd0
movl (%r15,%r8,4), %edx
cmpl $-0x1, %edx
je 0xccc8
movl $0xfffffffe, %r10d      # imm = 0xFFFFFFFE
subl %esi, %r10d
movl %r10d, 0x60(%rsp)
movq %rbx, %r10
movslq %edx, %r13
movq 0x40(%rsp), %rbx
cmpl %r9d, (%rbx,%r13,4)
jne 0xcc4b
movq 0x10(%rsp), %rbx
cmpl %r11d, (%rbx,%r13,4)
jne 0xcc4b
movq 0x68(%rsp), %rbx
movslq (%rbx,%r13,4), %r14
leal (%rax,%r14), %r15d
cmpl %r15d, %r14d
cmovgl %r14d, %r15d
movslq %r15d, %r15
cmpq %r14, %r15
je 0xcc64
movslq 0x4(%rbp,%r14,4), %rbx
incq %r14
cmpl %ecx, (%r12,%rbx,4)
je 0xcc38
movq 0x38(%rsp), %r15
movl (%r15,%r13,4), %r14d
movl %edx, %esi
movq %r10, %rbx
movl %r14d, %edx
cmpl $-0x1, %r14d
jne 0xcc05
jmp 0xcca5
movq 0x68(%rsp), %rdx
movl 0x60(%rsp), %ebx
movl %ebx, (%rdx,%r13,4)
movq 0x8(%rsp), %rbx
movl (%rbx,%r13,4), %edx
addl %edx, (%rbx,%r8,4)
movl $0x0, (%rbx,%r13,4)
movq 0x10(%rsp), %rdx
movl $0xffffffff, (%rdx,%r13,4) # imm = 0xFFFFFFFF
movq 0x38(%rsp), %r15
movl (%r15,%r13,4), %r14d
movslq %esi, %rdx
movl %r14d, (%r15,%rdx,4)
jmp 0xcc56
movl (%r15,%r8,4), %esi
incl %ecx
cmpl $-0x1, %esi
movq 0x68(%rsp), %r10
movq 0x40(%rsp), %r14
movq 0x8(%rsp), %r9
jne 0xcb9e
jmp 0xcb68
incl %ecx
movq 0x40(%rsp), %r14
movq 0x8(%rsp), %r9
jmp 0xcb68
movq %rax, %rsi
movq 0x28(%rsp), %rax
leaq (%rax,%rdx,4), %r11
xorl %edi, %edi
movl %edi, (%r11)
movl %esi, (%r10,%rdx,4)
leaq (%r14,%rdx,4), %rax
movq %rax, 0x80(%rsp)
movl %edi, (%rax)
movq 0x10(%rsp), %rax
movl $0xfffffffe, (%rax,%rdx,4) # imm = 0xFFFFFFFE
jmp 0xcd2b
movq 0x30(%rsp), %r8
movl 0x4(%rsp), %edi
jmp 0xcd2b
movq 0x40(%rsp), %r14
movq 0x8(%rsp), %r9
movl 0x4(%rsp), %edi
movq 0xb0(%rsp), %r11
movl %edi, (%r11)
movq 0x98(%rsp), %rax
cmpl %edi, %eax
cmovlel %edi, %eax
movq %rax, 0x98(%rsp)
addl %eax, %ecx
movq 0x20(%rsp), %rdi
movq 0x80(%rsp), %rdx
movq 0x88(%rsp), %rsi
movl 0x50(%rsp), %eax
movl %eax, (%r9,%rsi,4)
movl $0x0, (%rdx)
movl $0xffffffff, (%r10,%rsi,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rsi,4)
movl 0x1c(%rsp), %eax
cmpl $0x0, 0xc0(%rsp)
cmovel 0x48(%rsp), %eax
cmpl %edi, (%rsp)
jl 0xc541
jmp 0xce98
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %r9
jmp 0xcd4a
movl 0x1c(%rsp), %esi
cmpl %esi, %edi
jle 0xcd45
movq 0x20(%rsp), %rax
movl %eax, %edx
subl (%rsp), %edx
movslq %esi, %rdi
movl %esi, %eax
movl (%rbp,%rdi,4), %esi
movslq %esi, %r8
movq %r9, %r13
movl (%r9,%r8,4), %r9d
testl %r9d, %r9d
jns 0xce4c
movl %r9d, %r11d
negl %r11d
movl %r11d, (%r13,%r8,4)
movq 0x28(%rsp), %r11
movl (%r11,%r8,4), %r11d
addl 0x4(%rsp), %r11d
cmpl %edx, %r11d
jl 0xcdee
movl %edx, %r11d
addl %r9d, %r11d
movslq %r11d, %r9
movq 0x70(%rsp), %r14
movslq (%r14,%r9,4), %r11
cmpq $-0x1, %r11
je 0xce0d
movl %esi, (%rbx,%r11,4)
movl (%r14,%r9,4), %r11d
jmp 0xce13
movl $0xffffffff, %r11d      # imm = 0xFFFFFFFF
movl %r11d, (%r15,%r8,4)
movl $0xffffffff, (%rbx,%r8,4) # imm = 0xFFFFFFFF
movl %esi, (%r14,%r9,4)
movq 0x30(%rsp), %r11
cmpl %r9d, %r11d
cmovgel %r9d, %r11d
movq %r11, 0x30(%rsp)
movq 0x28(%rsp), %r11
movl %r9d, (%r11,%r8,4)
movslq %eax, %r8
incl %eax
movl %esi, (%rbp,%r8,4)
movq 0x40(%rsp), %r14
incq %rdi
cmpq %rdi, 0x58(%rsp)
movq 0x8(%rsp), %r9
jne 0xcdba
movq 0x88(%rsp), %rsi
movl 0x50(%rsp), %edx
movl %edx, (%r9,%rsi,4)
movl %eax, %edx
subl 0x1c(%rsp), %edx
movq 0x80(%rsp), %rdi
movl %edx, (%rdi)
movl %eax, 0x1c(%rsp)
movq 0x20(%rsp), %rdi
movq 0x30(%rsp), %r8
je 0xcd68
jmp 0xcd7c
testl %edi, %edi
movq 0xa0(%rsp), %rbp
jle 0xcebb
xorl %eax, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
subl (%r10,%rax,4), %ecx
movl %ecx, (%r10,%rax,4)
incq %rax
cmpq %rax, %rbp
jne 0xcea6
testl %edi, %edi
movq 0x70(%rsp), %r14
movq 0xd0(%rsp), %r13
js 0xcf98
leaq (,%r13,4), %rdx
movq %r14, %rdi
movl $0xff, %esi
callq 0x8200
movq 0x8(%rsp), %rdx
movq 0x68(%rsp), %r10
movq %rbp, %rax
cmpl $0x0, (%rdx,%rax,4)
jg 0xcf0c
movslq (%r10,%rax,4), %rcx
movl (%r14,%rcx,4), %ecx
movl %ecx, (%r15,%rax,4)
movslq (%r10,%rax,4), %rcx
movl %eax, (%r14,%rcx,4)
leaq -0x1(%rax), %rcx
testq %rax, %rax
movq %rcx, %rax
jg 0xcef2
movq 0x20(%rsp), %rcx
cmpl $0x0, (%rdx,%rbp,4)
jle 0xcf3d
movslq (%r10,%rbp,4), %rax
cmpq $-0x1, %rax
je 0xcf3d
movl (%r14,%rax,4), %eax
movl %eax, (%r15,%rbp,4)
movslq (%r10,%rbp,4), %rax
movl %ebp, (%r14,%rax,4)
leaq -0x1(%rbp), %rax
testq %rbp, %rbp
movq %rax, %rbp
jg 0xcf1d
testl %ecx, %ecx
js 0xcf98
xorl %eax, %eax
xorl %ecx, %ecx
cmpl $-0x1, (%r10,%rax,4)
jne 0xcf90
movl %eax, (%r12)
xorl %edx, %edx
movl %edx, %esi
movl (%r12,%rsi,4), %edi
movslq %edi, %r9
movslq (%r14,%r9,4), %r8
cmpq $-0x1, %r8
je 0xcf82
movl (%r15,%r8,4), %edi
movl %edi, (%r14,%r9,4)
incl %edx
movl %r8d, 0x4(%r12,%rsi,4)
jmp 0xcf8c
decl %edx
movslq %ecx, %rsi
incl %ecx
movl %edi, (%rbx,%rsi,4)
testl %edx, %edx
jns 0xcf5e
incq %rax
cmpq %r13, %rax
jne 0xcf51
xorl %eax, %eax
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x0, (%rsp)
jmp 0xc515