// File: /workspace/github_c_makefile_star2_O1/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 $0xe8, %rsp
movq %r9, 0x30(%rsp)
movq %r8, 0x50(%rsp)
movl %ecx, 0xa8(%rsp)
movq %rsi, %rbp
cvtsi2sd %edx, %xmm1
movq %rdi, %r14
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movq %rdx, 0x20(%rsp)
jb 0xc26e
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0xc288
movapd %xmm1, %xmm0
movsd %xmm1, 0x60(%rsp)
callq 0x82b0
movsd 0x60(%rsp), %xmm1
movq 0x20(%rsp), %rdx
mulsd 0xe5560(%rip), %xmm0    # 0xf17f0
movl $0x10, %ecx
ucomisd 0xe555b(%rip), %xmm0    # 0xf17f8
jbe 0xc2cc
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jb 0xc2b2
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0xc2c0
movapd %xmm1, %xmm0
callq 0x82b0
movq 0x20(%rsp), %rdx
mulsd 0xe5528(%rip), %xmm0    # 0xf17f0
cvttsd2si %xmm0, %ecx
leal -0x2(%rdx), %eax
cmpl %ecx, %eax
cmovll %eax, %ecx
movl %ecx, 0x60(%rsp)
movslq %edx, %rax
movq %rax, 0x80(%rsp)
movl (%r14,%rax,4), %eax
movq %rdx, %r10
leal 0x1(%rdx), %edx
movslq %edx, %rdx
leal 0x2(%r10,%r10), %esi
movslq %esi, %r8
leal (%rdx,%rdx,2), %esi
movslq %esi, %rsi
movq %rsi, 0xc0(%rsp)
leal 0x4(,%r10,4), %esi
movslq %esi, %rsi
leal (%rdx,%rdx,4), %edi
movslq %edi, %rdi
movq %r8, 0xc8(%rsp)
leal (%r8,%r8,2), %r8d
movslq %r8d, %r8
leal 0x8(,%r10,8), %r9d
subl %edx, %r9d
movslq %r9d, %r9
movl %r10d, %ebx
testl %r10d, %r10d
movq 0x30(%rsp), %r15
jle 0xc35d
xorl %r10d, %r10d
movl 0x4(%r14,%r10,4), %r11d
subl (%r14,%r10,4), %r11d
movl %r11d, (%r15,%r10,4)
leaq 0x1(%r10), %r11
movq %r11, %r10
cmpq %r11, %rbx
jne 0xc344
movq %rbx, 0x88(%rsp)
leaq (%r15,%rdx,4), %rcx
movq %rcx, 0x10(%rsp)
movq 0xc8(%rsp), %r10
leaq (%r15,%r10,4), %r13
movq 0xc0(%rsp), %r10
leaq (%r15,%r10,4), %r11
leaq (%r15,%rsi,4), %rcx
leaq (%r15,%rdi,4), %rbx
leaq (%r15,%r8,4), %r12
leaq (%r15,%r9,4), %rsi
movq %rsi, 0x78(%rsp)
movq 0x80(%rsp), %rsi
movl $0x0, (%r15,%rsi,4)
movl %edx, %edx
movq %rdx, 0xb0(%rsp)
cmpl $0x0, 0x20(%rsp)
movq 0x50(%rsp), %r10
js 0xc419
movq 0xb0(%rsp), %rdx
leaq (,%rdx,4), %rdx
xorl %esi, %esi
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
movl $0x1, %r8d
movl %edi, (%r11,%rsi)
movl %edi, (%r10,%rsi)
movl %edi, (%r13,%rsi)
movq 0x78(%rsp), %r9
movl %edi, (%r9,%rsi)
movq 0x10(%rsp), %r9
movl %r8d, (%r9,%rsi)
movl %r8d, (%r12,%rsi)
movl $0x0, (%rcx,%rsi)
movl (%r15,%rsi), %r9d
movl %r9d, (%rbx,%rsi)
addq $0x4, %rsi
cmpq %rsi, %rdx
jne 0xc3de
movq %rcx, 0x28(%rsp)
movq %r11, 0x58(%rsp)
cmpl $0x0, 0x20(%rsp)
movq 0x88(%rsp), %r9
movq %r15, %r11
movl 0x60(%rsp), %r10d
jle 0xc453
xorl %edx, %edx
cmpl $0x0, (%r12,%rdx,4)
je 0xc44b
movl $0x1, (%r12,%rdx,4)
incq %rdx
cmpq %rdx, %r9
jne 0xc43c
movq 0x80(%rsp), %rdx
movq 0x28(%rsp), %rcx
movl $0xfffffffe, (%rcx,%rdx,4) # imm = 0xFFFFFFFE
movl $0xffffffff, (%r14,%rdx,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rdx,4)
movq 0x20(%rsp), %rsi
testl %esi, %esi
jle 0xc533
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
subl %esi, %edx
xorl %esi, %esi
movl $0x0, 0x4(%rsp)
movslq (%rbx,%rsi,4), %rdi
testq %rdi, %rdi
je 0xc4d1
cmpl %r10d, %edi
jle 0xc4f3
movq 0x10(%rsp), %rdi
movl $0x0, (%rdi,%rsi,4)
movq 0x28(%rsp), %rcx
movl $0xffffffff, (%rcx,%rsi,4) # imm = 0xFFFFFFFF
incl 0x4(%rsp)
movl %edx, (%r14,%rsi,4)
movq 0x80(%rsp), %r8
incl (%rdi,%r8,4)
jmp 0xc525
movq 0x28(%rsp), %rcx
movl $0xfffffffe, (%rcx,%rsi,4) # imm = 0xFFFFFFFE
incl 0x4(%rsp)
movl $0xffffffff, (%r14,%rsi,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rsi,4)
jmp 0xc525
movq 0x58(%rsp), %r8
movslq (%r8,%rdi,4), %r8
cmpq $-0x1, %r8
je 0xc50b
movq 0x50(%rsp), %r9
movl %esi, (%r9,%r8,4)
movq 0x58(%rsp), %r9
movl (%r9,%rdi,4), %r8d
movl %r8d, (%r13,%rsi,4)
movl %esi, (%r9,%rdi,4)
movq 0x88(%rsp), %r9
incq %rsi
cmpq %rsi, %r9
jne 0xc495
jmp 0xc53b
movl $0x0, 0x4(%rsp)
movq 0x20(%rsp), %rdx
cmpl %edx, 0x4(%rsp)
jge 0xcdb7
movl $0x2, %ecx
movq $0x0, 0xb8(%rsp)
xorl %edi, %edi
movq %r13, 0x60(%rsp)
movq %rbx, 0x48(%rsp)
cmpl %edx, %edi
jge 0xc5a0
movq %rdi, %r8
movslq %edi, %rsi
movq 0x58(%rsp), %rdx
leaq (%rdx,%rsi,4), %rdx
movq 0x80(%rsp), %rdi
subq %rsi, %rdi
xorl %esi, %esi
movl (%rdx,%rsi,4), %r10d
cmpl $-0x1, %r10d
jne 0xc5a8
incq %rsi
cmpq %rsi, %rdi
jne 0xc587
movq 0x20(%rsp), %rdx
movl %edx, %edi
movl $0xffffffff, %r10d      # imm = 0xFFFFFFFF
jmp 0xc5ad
movq %r8, %rdi
addl %esi, %edi
movl %r10d, 0x8(%rsp)
movslq %r10d, %rdx
movq %rdx, 0x68(%rsp)
movslq (%r13,%rdx,4), %rdx
cmpq $-0x1, %rdx
je 0xc5d1
movq 0x50(%rsp), %rsi
movl $0xffffffff, (%rsi,%rdx,4) # imm = 0xFFFFFFFF
movq 0x68(%rsp), %r10
movl (%r13,%r10,4), %edx
movslq %edi, %rsi
movq %rdi, %r8
movq 0x58(%rsp), %rdi
movl %edx, (%rdi,%rsi,4)
movq 0x28(%rsp), %rdx
movl (%rdx,%r10,4), %esi
movq 0x10(%rsp), %rdx
movl (%rdx,%r10,4), %edx
movl %edx, 0x3c(%rsp)
movq %rsi, 0x98(%rsp)
testl %esi, %esi
movq %r8, 0x90(%rsp)
jle 0xc6df
leal (%r8,%rax), %edx
cmpl 0xa8(%rsp), %edx
jl 0xc6df
cmpl $0x0, 0x20(%rsp)
movl 0x8(%rsp), %r10d
jle 0xc65b
movl $0xfffffffe, %edx       # imm = 0xFFFFFFFE
xorl %esi, %esi
movslq (%r14,%rsi,4), %rdi
testq %rdi, %rdi
js 0xc651
movl (%rbp,%rdi,4), %r8d
movl %r8d, (%r14,%rsi,4)
movl %edx, (%rbp,%rdi,4)
incq %rsi
decl %edx
cmpq %rsi, %r9
jne 0xc63b
xorl %r8d, %r8d
testl %eax, %eax
jle 0xc6e7
xorl %edx, %edx
movslq %edx, %rdi
incl %edx
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
subl (%rbp,%rdi,4), %esi
js 0xc6d9
movl %esi, %esi
movl (%r14,%rsi,4), %edi
movslq %r8d, %r8
movl %edi, (%rbp,%r8,4)
movl %r8d, (%r14,%rsi,4)
incl %r8d
cmpl $0x2, (%r11,%rsi,4)
jl 0xc6d9
movq %r8, %r15
movslq %r8d, %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 (%r11,%rsi,4), %r10d
decl %r10d
incq %rdi
cmpl %r10d, %edi
jl 0xc6b5
addl %edi, %edx
movq %r15, %r8
addl %edi, %r8d
movl 0x8(%rsp), %r10d
cmpl %eax, %edx
jl 0xc668
jmp 0xc6e7
movl %eax, %r8d
movl 0x8(%rsp), %r10d
movl 0x3c(%rsp), %eax
negl %eax
movq 0x10(%rsp), %rdx
movq 0x68(%rsp), %rsi
movl %eax, (%rdx,%rsi,4)
movl (%r14,%rsi,4), %esi
movq %r8, 0xd0(%rsp)
movl %r8d, %eax
movq 0x98(%rsp), %rdx
testl %edx, %edx
movl %esi, 0x40(%rsp)
cmovel %esi, %eax
movl %eax, 0x18(%rsp)
js 0xc86a
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
subl %r10d, %esi
movl %esi, 0xa0(%rsp)
leal 0x1(%rdx), %esi
movl %esi, 0x70(%rsp)
movl $0x1, %edi
movl $0x0, 0x1c(%rsp)
movl %eax, 0xc(%rsp)
cmpl %edx, %edi
jle 0xc763
movq 0x68(%rsp), %rax
movl (%r11,%rax,4), %esi
subl %edx, %esi
movl %r10d, %r9d
movl 0x40(%rsp), %eax
jmp 0xc77d
movl 0x40(%rsp), %edx
movslq %edx, %rax
incl %edx
movl %edx, 0x40(%rsp)
movslq (%rbp,%rax,4), %r9
movl (%r14,%r9,4), %eax
movl (%r11,%r9,4), %esi
testl %esi, %esi
jle 0xc827
cltq
leaq (,%rax,4), %rdx
addq %rbp, %rdx
movl %esi, %esi
xorl %r11d, %r11d
movl (%rdx,%r11,4), %eax
movslq %eax, %r10
movq 0x10(%rsp), %rbx
movl (%rbx,%r10,4), %r8d
testl %r8d, %r8d
jle 0xc81b
movl %r8d, %eax
negl %eax
movl %eax, (%rbx,%r10,4)
movslq 0xc(%rsp), %rax
movl %r10d, (%rbp,%rax,4)
movslq (%r13,%r10,4), %rax
cmpq $-0x1, %rax
movq 0x50(%rsp), %r15
je 0xc7d7
movl (%r15,%r10,4), %ebx
movl %ebx, (%r15,%rax,4)
movl (%r15,%r10,4), %eax
movl (%r13,%r10,4), %r13d
movq 0xc8(%rsp), %rbx
cmpl $-0x1, %eax
jne 0xc7fe
movq 0x48(%rsp), %rax
movl (%rax,%r10,4), %eax
movq 0xc0(%rsp), %rbx
addl %r8d, 0x1c(%rsp)
incl 0xc(%rsp)
movq 0x30(%rsp), %r8
leaq (%r8,%rbx,4), %r8
cltq
movl %r13d, (%r8,%rax,4)
movq 0x60(%rsp), %r13
incq %r11
cmpl %r11d, %esi
jne 0xc797
movl 0x8(%rsp), %r10d
cmpl %r10d, %r9d
movq 0x30(%rsp), %r11
movq 0x98(%rsp), %rdx
je 0xc854
movslq %r9d, %rax
movl 0xa0(%rsp), %esi
movl %esi, (%r14,%rax,4)
movl $0x0, (%r12,%rax,4)
leal 0x1(%rdi), %eax
cmpl 0x70(%rsp), %edi
movl %eax, %edi
movq 0x48(%rsp), %rbx
jne 0xc74b
jmp 0xc876
movl $0x0, 0x1c(%rsp)
movl %eax, 0xc(%rsp)
movq 0x68(%rsp), %rdx
movl 0x1c(%rsp), %eax
movl %eax, (%rbx,%rdx,4)
movl 0x18(%rsp), %esi
movl %esi, (%r14,%rdx,4)
movl 0xc(%rsp), %edi
movl %edi, %eax
movslq %edi, %rdi
movq %rdi, 0x40(%rsp)
subl %esi, %eax
movl %eax, (%r11,%rdx,4)
movq 0x28(%rsp), %r9
movl $0xfffffffe, (%r9,%rdx,4) # imm = 0xFFFFFFFE
jle 0xc911
movslq 0x18(%rsp), %rax
movslq (%rbp,%rax,4), %rdx
movslq (%r9,%rdx,4), %rsi
testq %rsi, %rsi
jle 0xc902
movq 0x10(%rsp), %rdi
movl (%rdi,%rdx,4), %edi
leal (%rdi,%rcx), %r8d
movslq (%r14,%rdx,4), %r9
movslq (%rbp,%r9,4), %r10
movl (%r12,%r10,4), %r11d
cmpl %ecx, %r11d
jge 0xc8ec
testl %r11d, %r11d
je 0xc8f3
movl (%rbx,%r10,4), %r11d
addl %r8d, %r11d
jmp 0xc8ef
addl %edi, %r11d
movl %r11d, (%r12,%r10,4)
incq %r9
movslq (%r14,%rdx,4), %r10
addq %rsi, %r10
cmpq %r10, %r9
jl 0xc8d0
incq %rax
cmpq 0x40(%rsp), %rax
movq 0x28(%rsp), %r9
jne 0xc8b2
movl 0x3c(%rsp), %eax
addl %eax, 0x4(%rsp)
movl 0x18(%rsp), %eax
cmpl %eax, 0xc(%rsp)
jle 0xcaeb
movl $0xfffffffe, %r15d      # imm = 0xFFFFFFFE
subl 0x8(%rsp), %r15d
cltq
movq %rax, 0xa0(%rsp)
movl (%rbp,%rax,4), %eax
movslq %eax, %rsi
movl (%r14,%rsi,4), %edi
movslq %edi, %rdx
movl (%r9,%rsi,4), %r8d
leal (%r8,%rdi), %eax
movq %r8, 0xe0(%rsp)
testl %r8d, %r8d
movq %rdi, 0x70(%rsp)
movq %rdx, 0xd8(%rsp)
movl %eax, 0xac(%rsp)
jle 0xc9b7
movslq %eax, %r11
xorl %eax, %eax
xorl %r9d, %r9d
movl (%rbp,%rdx,4), %r8d
movslq %r8d, %r10
movl (%r12,%r10,4), %ebx
testl %ebx, %ebx
je 0xc9ad
subl %ecx, %ebx
jle 0xc9a1
addl %ebx, %r9d
movslq %edi, %r10
incl %edi
movl %r8d, (%rbp,%r10,4)
addl %r8d, %eax
jmp 0xc9ad
movl %r15d, (%r14,%r10,4)
movl $0x0, (%r12,%r10,4)
incq %rdx
cmpq %r11, %rdx
jl 0xc97b
jmp 0xc9bc
xorl %r9d, %r9d
xorl %eax, %eax
movl %edi, %edx
movq 0x70(%rsp), %r10
subl %r10d, %edx
incl %edx
movq 0x28(%rsp), %r8
movl %edx, (%r8,%rsi,4)
movq 0x30(%rsp), %rdx
movl (%rdx,%rsi,4), %edx
cmpl %edx, 0xe0(%rsp)
jge 0xca1e
movslq 0xac(%rsp), %r8
addl %r10d, %edx
movslq %edx, %r11
movl %edi, %edx
movslq (%rbp,%r8,4), %r10
movq 0x10(%rsp), %rbx
movl (%rbx,%r10,4), %ebx
testl %ebx, %ebx
jle 0xca14
addl %ebx, %r9d
movslq %edx, %rbx
incl %edx
movl %r10d, (%rbp,%rbx,4)
addl %r10d, %eax
incq %r8
cmpq %r11, %r8
jl 0xc9f2
jmp 0xca20
movl %edi, %edx
testl %r9d, %r9d
je 0xca98
movq 0x48(%rsp), %rbx
movl (%rbx,%rsi,4), %r8d
cmpl %r9d, %r8d
cmovll %r8d, %r9d
movl %r9d, (%rbx,%rsi,4)
movslq %edi, %rdi
movl (%rbp,%rdi,4), %r8d
movslq %edx, %rdx
movl %r8d, (%rbp,%rdx,4)
movq 0xd8(%rsp), %r9
movl (%rbp,%r9,4), %r8d
movl %r8d, (%rbp,%rdi,4)
movl 0x8(%rsp), %edi
movl %edi, (%rbp,%r9,4)
subl 0x70(%rsp), %edx
incl %edx
movq 0x30(%rsp), %r11
movl %edx, (%r11,%rsi,4)
xorl %edx, %edx
divl 0x20(%rsp)
movq 0x78(%rsp), %rdi
movl (%rdi,%rdx,4), %eax
movl %eax, (%r13,%rsi,4)
movl %esi, (%rdi,%rdx,4)
movq 0x50(%rsp), %rax
movl %edx, (%rax,%rsi,4)
movq 0x28(%rsp), %r9
jmp 0xcad3
movl %r15d, (%r14,%rsi,4)
movq 0x10(%rsp), %rdx
movl (%rdx,%rsi,4), %eax
addl %eax, 0x1c(%rsp)
subl %eax, 0x3c(%rsp)
subl %eax, 0x4(%rsp)
movl $0x0, (%rdx,%rsi,4)
movq 0x28(%rsp), %r9
movl $0xffffffff, (%r9,%rsi,4) # imm = 0xFFFFFFFF
movq 0x30(%rsp), %r11
movq 0x48(%rsp), %rbx
movq 0x78(%rsp), %rdi
movq 0xa0(%rsp), %rax
incq %rax
cmpq 0x40(%rsp), %rax
jne 0xc934
jmp 0xcaf5
movq 0x30(%rsp), %r11
movq 0x78(%rsp), %rdi
movq 0x68(%rsp), %rax
movl 0x1c(%rsp), %edx
movl %edx, (%rbx,%rax,4)
movq 0xb8(%rsp), %rax
cmpl %edx, %eax
cmovlel %edx, %eax
movq %rax, 0xb8(%rsp)
addl %eax, %ecx
movl 0x18(%rsp), %eax
cmpl %eax, 0xc(%rsp)
jle 0xcc85
movslq %eax, %rsi
movslq (%rbp,%rsi,4), %rax
movq 0x10(%rsp), %rdx
cmpl $0x0, (%rdx,%rax,4)
movq %rsi, 0x70(%rsp)
js 0xcb57
movq 0x70(%rsp), %rsi
incq %rsi
cmpq 0x40(%rsp), %rsi
movq 0x78(%rsp), %rdi
jne 0xcb29
jmp 0xcc85
movq 0x50(%rsp), %rdx
movl (%rdx,%rax,4), %eax
movl (%rdi,%rax,4), %r8d
movl $0xffffffff, (%rdi,%rax,4) # imm = 0xFFFFFFFF
cmpl $-0x1, %r8d
je 0xcb3e
movslq %r8d, %rsi
cmpl $-0x1, (%r13,%rsi,4)
je 0xcb3e
movl (%r11,%rsi,4), %edi
movl (%r9,%rsi,4), %r9d
movslq (%r14,%rsi,4), %rdx
leal -0x1(%rdi), %eax
leal (%rdi,%rdx), %r10d
decl %r10d
cmpl %r10d, %edx
jge 0xcbb1
movslq 0x4(%rbp,%rdx,4), %r10
incq %rdx
movl %ecx, (%r12,%r10,4)
movl (%r14,%rsi,4), %r10d
addl %eax, %r10d
movslq %r10d, %r10
cmpq %r10, %rdx
jl 0xcb96
movl (%r13,%rsi,4), %edx
cmpl $-0x1, %edx
je 0xcc60
movl $0xfffffffe, %r11d      # imm = 0xFFFFFFFE
subl %r8d, %r11d
movslq %edx, %r10
movb $0x1, %bl
movq 0x30(%rsp), %r15
cmpl %edi, (%r15,%r10,4)
jne 0xcbe4
movq 0x28(%rsp), %rbx
cmpl %r9d, (%rbx,%r10,4)
setne %bl
testb %bl, %bl
jne 0xcc0d
movslq (%r14,%r10,4), %r13
leal (%rax,%r13), %ebx
cmpl %ebx, %r13d
cmovgl %r13d, %ebx
movslq %ebx, %rbx
cmpq %r13, %rbx
je 0xcc1c
movslq 0x4(%rbp,%r13,4), %r15
incq %r13
cmpl %ecx, (%r12,%r15,4)
je 0xcbfa
movq 0x60(%rsp), %r13
movl (%r13,%r10,4), %r10d
movl %edx, %r8d
jmp 0xcc53
movl %r11d, (%r14,%r10,4)
movq 0x10(%rsp), %rbx
movl (%rbx,%r10,4), %edx
addl %edx, (%rbx,%rsi,4)
movl $0x0, (%rbx,%r10,4)
movq 0x28(%rsp), %rdx
movl $0xffffffff, (%rdx,%r10,4) # imm = 0xFFFFFFFF
movq 0x60(%rsp), %r13
movl (%r13,%r10,4), %r10d
movslq %r8d, %rdx
movl %r10d, (%r13,%rdx,4)
movl %r10d, %edx
cmpl $-0x1, %r10d
jne 0xcbc8
movl (%r13,%rsi,4), %r8d
incl %ecx
cmpl $-0x1, %r8d
movq 0x30(%rsp), %r11
movq 0x28(%rsp), %r9
movq 0x48(%rsp), %rbx
jne 0xcb70
jmp 0xcb3e
movl 0x18(%rsp), %edi
cmpl %edi, 0xc(%rsp)
jle 0xcd59
movslq %edi, %rdx
movq 0x20(%rsp), %rax
movl %eax, %esi
subl 0x4(%rsp), %esi
movl %edi, %eax
movl (%rbp,%rdx,4), %edi
movslq %edi, %r8
movq 0x10(%rsp), %rbx
movl (%rbx,%r8,4), %r9d
testl %r9d, %r9d
js 0xccc2
movq 0x48(%rsp), %rbx
jmp 0xcd49
movl %r9d, %r10d
negl %r10d
movl %r10d, (%rbx,%r8,4)
movq 0x48(%rsp), %r10
movl (%r10,%r8,4), %r10d
addl 0x1c(%rsp), %r10d
cmpl %esi, %r10d
jl 0xcce2
movl %esi, %r10d
addl %r9d, %r10d
movslq %r10d, %r9
movq 0x58(%rsp), %r10
movslq (%r10,%r9,4), %r10
cmpq $-0x1, %r10
movq 0x50(%rsp), %r11
je 0xcd00
movl %edi, (%r11,%r10,4)
movq 0x58(%rsp), %rbx
movl (%rbx,%r9,4), %r10d
movl %r10d, (%r13,%r8,4)
movl $0xffffffff, (%r11,%r8,4) # imm = 0xFFFFFFFF
movl %edi, (%rbx,%r9,4)
movq 0x90(%rsp), %r10
cmpl %r9d, %r10d
cmovgel %r9d, %r10d
movq %r10, 0x90(%rsp)
movq 0x48(%rsp), %rbx
movl %r9d, (%rbx,%r8,4)
movslq %eax, %r8
incl %eax
movl %edi, (%rbp,%r8,4)
movq 0x30(%rsp), %r11
incq %rdx
cmpq %rdx, 0x40(%rsp)
jne 0xcca3
jmp 0xcd5b
movl %edi, %eax
movq 0x10(%rsp), %rdx
movq 0x68(%rsp), %rsi
movl 0x3c(%rsp), %edi
movl %edi, (%rdx,%rsi,4)
movl %eax, %edx
subl 0x18(%rsp), %edx
movl %edx, (%r11,%rsi,4)
jne 0xcd88
movl $0xffffffff, (%r14,%rsi,4) # imm = 0xFFFFFFFF
movl $0x0, (%r12,%rsi,4)
cmpl $0x0, 0x98(%rsp)
cmovel 0xd0(%rsp), %eax
movq 0x20(%rsp), %rdx
cmpl 0x4(%rsp), %edx
movq 0x88(%rsp), %r9
movq 0x90(%rsp), %rdi
jg 0xc567
testl %edx, %edx
jle 0xcdd2
xorl %eax, %eax
movl $0xfffffffe, %ecx       # imm = 0xFFFFFFFE
subl (%r14,%rax,4), %ecx
movl %ecx, (%r14,%rax,4)
incq %rax
cmpq %rax, %r9
jne 0xcdbd
testl %edx, %edx
movq 0x50(%rsp), %rbx
movq 0x58(%rsp), %r15
movq 0xb0(%rsp), %rbp
js 0xce0a
leaq (,%rbp,4), %rdx
movq %r15, %rdi
movl $0xff, %esi
callq 0x8200
movq 0x88(%rsp), %r9
movq 0x20(%rsp), %rdx
testl %edx, %edx
movq 0x10(%rsp), %rsi
js 0xce3d
movq %r9, %rax
cmpl $0x0, (%rsi,%rax,4)
jg 0xce31
movslq (%r14,%rax,4), %rcx
movl (%r15,%rcx,4), %ecx
movl %ecx, (%r13,%rax,4)
movslq (%r14,%rax,4), %rcx
movl %eax, (%r15,%rcx,4)
leaq -0x1(%rax), %rcx
testq %rax, %rax
movq %rcx, %rax
jg 0xce16
testl %edx, %edx
js 0xce6f
cmpl $0x0, (%rsi,%r9,4)
jle 0xce63
movslq (%r14,%r9,4), %rax
cmpq $-0x1, %rax
je 0xce63
movl (%r15,%rax,4), %eax
movl %eax, (%r13,%r9,4)
movslq (%r14,%r9,4), %rax
movl %r9d, (%r15,%rax,4)
leaq -0x1(%r9), %rax
testq %r9, %r9
movq %rax, %r9
jg 0xce41
testl %edx, %edx
js 0xcebf
xorl %eax, %eax
xorl %ecx, %ecx
cmpl $-0x1, (%r14,%rax,4)
jne 0xceb7
movl %eax, (%r12)
xorl %edx, %edx
movl %edx, %esi
movl (%r12,%rsi,4), %edi
movslq %edi, %r9
movslq (%r15,%r9,4), %r8
cmpq $-0x1, %r8
je 0xcea9
movl (%r13,%r8,4), %edi
movl %edi, (%r15,%r9,4)
incl %edx
movl %r8d, 0x4(%r12,%rsi,4)
jmp 0xceb3
decl %edx
movslq %ecx, %rsi
incl %ecx
movl %edi, (%rbx,%rsi,4)
testl %edx, %edx
jns 0xce84
incq %rax
cmpq %rbp, %rax
jne 0xce77
xorl %eax, %eax
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq