// File: /workspace/github_c_makefile_star2_O2/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 $0xd8, %rsp
movq %r9, 0x10(%rsp)
movq %r8, 0x28(%rsp)
movl %ecx, 0xbc(%rsp)
movl %edx, %r14d
movq %rsi, 0x48(%rsp)
cvtsi2sd %edx, %xmm1
movq %rdi, %rbx
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jb 0xab27
sqrtsd %xmm1, %xmm0
jmp 0xab3c
movapd %xmm1, %xmm0
movsd %xmm1, 0x18(%rsp)
callq 0x82d0
movsd 0x18(%rsp), %xmm1
mulsd 0xdacac(%rip), %xmm0    # 0xe57f0
ucomisd 0xdacac(%rip), %xmm0    # 0xe57f8
movq %r14, 0x50(%rsp)
jbe 0xab63
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jb 0xab69
sqrtsd %xmm1, %xmm0
jmp 0xab72
pushq $0x10
popq %r13
jmp 0xab7f
movapd %xmm1, %xmm0
callq 0x82d0
mulsd 0xdac76(%rip), %xmm0    # 0xe57f0
cvttsd2si %xmm0, %r13d
movq 0x50(%rsp), %r10
leal -0x2(%r10), %eax
movslq %r10d, %rcx
movq %rcx, 0x38(%rsp)
movl (%rbx,%rcx,4), %r12d
leal 0x1(%r10), %ecx
movslq %ecx, %rcx
leal 0x2(%r10,%r10), %edx
movslq %edx, %rdx
movq %rdx, 0xc8(%rsp)
leal (%rcx,%rcx,2), %edx
movslq %edx, %rdx
movq %rdx, 0xc0(%rsp)
leal 0x4(,%r10,4), %edx
movslq %edx, %rsi
leal (%rcx,%rcx,4), %edx
movslq %edx, %r8
imull $0x6, %ecx, %edx
movslq %edx, %rdx
imull $0x7, %ecx, %edi
movslq %edi, %rdi
xorl %r9d, %r9d
testl %r10d, %r10d
movl $0x0, %r11d
cmovgl %r10d, %r11d
movq %r11, 0xa8(%rsp)
movq 0x10(%rsp), %r11
cmpq %r9, 0xa8(%rsp)
je 0xac0f
movl 0x4(%rbx,%r9,4), %r10d
subl (%rbx,%r9,4), %r10d
movl %r10d, (%r11,%r9,4)
incq %r9
jmp 0xabf3
movq 0x10(%rsp), %r11
leaq (%r11,%rcx,4), %rcx
movq %rcx, (%rsp)
movq 0xc8(%rsp), %rcx
leaq (%r11,%rcx,4), %r9
movq 0xc0(%rsp), %rcx
leaq (%r11,%rcx,4), %r10
leaq (%r11,%rsi,4), %rcx
movq %rcx, 0x8(%rsp)
leaq (%r11,%r8,4), %rcx
movq %rcx, 0x40(%rsp)
movq 0x38(%rsp), %rcx
andl $0x0, (%r11,%rcx,4)
leaq (%r11,%rdx,4), %rbp
leaq (%r11,%rdi,4), %rcx
movq %rcx, 0xb0(%rsp)
xorl %ecx, %ecx
cmpq 0x38(%rsp), %rcx
movq 0x28(%rsp), %rdx
jg 0xacb4
orl $-0x1, (%r10,%rcx,4)
orl $-0x1, (%rdx,%rcx,4)
orl $-0x1, (%r9,%rcx,4)
movq 0xb0(%rsp), %rdx
orl $-0x1, (%rdx,%rcx,4)
movq (%rsp), %rdx
pushq $0x1
popq %rsi
movl %esi, (%rdx,%rcx,4)
movl %esi, (%rbp,%rcx,4)
movq 0x8(%rsp), %rdx
andl $0x0, (%rdx,%rcx,4)
movq 0x10(%rsp), %rdx
movl (%rdx,%rcx,4), %edx
movq 0x40(%rsp), %rsi
movl %edx, (%rsi,%rcx,4)
incq %rcx
jmp 0xac62
movq %r9, 0x18(%rsp)
cmpl %r13d, %eax
cmovll %eax, %r13d
xorl %r15d, %r15d
xorl %edi, %edi
xorl %esi, %esi
movq %rbp, %rdx
movq %r10, 0x58(%rsp)
movq 0x50(%rsp), %r14
movl %r14d, %ecx
callq 0xb6d5
movq 0x38(%rsp), %rcx
movq 0x8(%rsp), %rdx
movl $0xfffffffe, (%rdx,%rcx,4) # imm = 0xFFFFFFFE
orl $-0x1, (%rbx,%rcx,4)
andl $0x0, (%rbp,%rcx,4)
pushq $-0x2
popq %rcx
subl %r14d, %ecx
movq 0x58(%rsp), %r9
pushq $-0x1
popq %rdx
movl $0x0, 0x24(%rsp)
movq 0x48(%rsp), %r10
cmpq %r15, 0xa8(%rsp)
je 0xada5
movq 0x40(%rsp), %rsi
movslq (%rsi,%r15,4), %rsi
testq %rsi, %rsi
je 0xad57
cmpl %r13d, %esi
jle 0xad75
movq (%rsp), %rdi
andl $0x0, (%rdi,%r15,4)
movq 0x8(%rsp), %rsi
orl $-0x1, (%rsi,%r15,4)
incl 0x24(%rsp)
movl %ecx, (%rbx,%r15,4)
movq 0x38(%rsp), %rsi
incl (%rdi,%rsi,4)
jmp 0xad9d
movq 0x8(%rsp), %rsi
movl $0xfffffffe, (%rsi,%r15,4) # imm = 0xFFFFFFFE
orl $-0x1, (%rbx,%r15,4)
incl 0x24(%rsp)
andl $0x0, (%rbp,%r15,4)
jmp 0xad9d
movslq (%r9,%rsi,4), %rdi
cmpq $-0x1, %rdi
je 0xad8e
movq 0x28(%rsp), %r8
movl %r15d, (%r8,%rdi,4)
movl (%r9,%rsi,4), %edi
jmp 0xad90
movl %edx, %edi
movq 0x18(%rsp), %r8
movl %edi, (%r8,%r15,4)
movl %r15d, (%r9,%rsi,4)
incq %r15
jmp 0xad11
leaq 0x4(%r10), %r13
movq $0x0, 0x80(%rsp)
movl $0x0, 0x70(%rsp)
movq %rbx, 0x90(%rsp)
movq 0x38(%rsp), %rdx
movq 0x18(%rsp), %r14
movl 0x24(%rsp), %ecx
cmpl 0x50(%rsp), %ecx
jge 0xb5eb
movslq 0x80(%rsp), %rcx
cmpq %rdx, %rcx
movq %rdx, %rsi
cmovgq %rcx, %rsi
movq %rsi, 0x80(%rsp)
cmpq %rdx, %rcx
jge 0xae0e
movq 0x58(%rsp), %rsi
movl (%rsi,%rcx,4), %esi
cmpl $-0x1, %esi
jne 0xae15
incq %rcx
jmp 0xadf7
pushq $-0x1
popq %rcx
movl %ecx, %edx
jmp 0xae22
movq %rcx, 0x80(%rsp)
pushq $-0x1
popq %rcx
movl %esi, %edx
movl %edx, 0x7c(%rsp)
movslq %edx, %rsi
movslq (%r14,%rsi,4), %rdx
cmpq $-0x1, %rdx
je 0xae40
movq 0x28(%rsp), %rcx
orl $-0x1, (%rcx,%rdx,4)
movl (%r14,%rsi,4), %ecx
movq %rsi, %r8
movq 0x80(%rsp), %rdi
movslq %edi, %rdx
movq 0x58(%rsp), %rsi
movl %ecx, (%rsi,%rdx,4)
movq 0x8(%rsp), %rcx
movl (%rcx,%r8,4), %edx
movq (%rsp), %rcx
movq %r8, 0x68(%rsp)
movl (%rcx,%r8,4), %ecx
movl %ecx, 0x78(%rsp)
movl %edx, 0x30(%rsp)
testl %edx, %edx
jle 0xaf42
leal (%r12,%rdi), %ecx
cmpl 0xbc(%rsp), %ecx
movq 0x48(%rsp), %r14
jl 0xaf47
pushq $-0x2
popq %rcx
xorl %edx, %edx
cmpq %rdx, 0xa8(%rsp)
je 0xaebc
movslq (%rbx,%rdx,4), %rsi
testq %rsi, %rsi
js 0xaeb5
movl (%r14,%rsi,4), %edi
movl %edi, (%rbx,%rdx,4)
movl %ecx, (%r14,%rsi,4)
incq %rdx
decl %ecx
jmp 0xae97
xorl %edx, %edx
xorl %ecx, %ecx
movslq %edx, %rdi
leal 0x1(%rdi), %r8d
leaq (,%rdi,4), %r9
addq %r13, %r9
cmpl %r12d, %edi
jge 0xaf3d
movl %r8d, %edx
movq %r9, %rsi
pushq $-0x2
popq %r10
subl (%r14,%rdi,4), %r10d
leaq 0x1(%rdi), %rdi
leal 0x1(%rdx), %r8d
leaq 0x4(%r9), %r9
js 0xaed2
movl %r10d, %edi
movl (%rbx,%rdi,4), %r8d
movslq %ecx, %r9
movl %r8d, (%r14,%r9,4)
movl %r9d, (%rbx,%rdi,4)
leaq (,%r9,4), %r9
addq %r13, %r9
xorl %r8d, %r8d
movq 0x10(%rsp), %r10
movl (%r10,%rdi,4), %r10d
decl %r10d
cmpl %r10d, %r8d
jge 0xaf36
movl (%rsi), %r10d
movl %r10d, (%r9,%r8,4)
incq %r8
incl %edx
addq $0x4, %rsi
jmp 0xaf13
addl %r8d, %ecx
incl %ecx
jmp 0xaec0
movl %ecx, %r12d
jmp 0xaf47
movq 0x48(%rsp), %r14
movq 0x68(%rsp), %rsi
movl 0x30(%rsp), %edi
movl 0x78(%rsp), %ecx
addl %ecx, 0x24(%rsp)
negl %ecx
movq (%rsp), %rdx
movl %ecx, (%rdx,%rsi,4)
movl (%rbx,%rsi,4), %edx
pushq $-0x2
popq %rcx
subl %esi, %ecx
movl %ecx, 0xa0(%rsp)
testl %edi, %edi
movq %r12, 0xd0(%rsp)
movl %r12d, %r15d
movl %edx, 0x60(%rsp)
cmovel %edx, %r15d
pushq $-0x1
popq %rcx
cmovnsl %edi, %ecx
addl $0x2, %ecx
movl %ecx, 0x98(%rsp)
movl $0x0, 0x34(%rsp)
pushq $0x1
popq %rcx
movl %r15d, 0x74(%rsp)
movl 0x7c(%rsp), %edx
cmpl 0x98(%rsp), %ecx
je 0xb0d5
cmpl %edi, %ecx
movl %ecx, 0x88(%rsp)
jle 0xafd5
movq 0x10(%rsp), %rcx
movl (%rcx,%rsi,4), %r8d
subl %edi, %r8d
movl %edx, %edi
movl 0x60(%rsp), %edx
jmp 0xaff2
movl 0x60(%rsp), %edx
movslq %edx, %rcx
incl %edx
movl %edx, 0x60(%rsp)
movslq (%r14,%rcx,4), %rdi
movl (%rbx,%rdi,4), %edx
movq 0x10(%rsp), %rcx
movl (%rcx,%rdi,4), %r8d
movslq %edx, %rcx
testl %r8d, %r8d
movl $0x0, %edx
cmovlel %edx, %r8d
leaq (%r14,%rcx,4), %r9
xorl %r10d, %r10d
movq 0x28(%rsp), %rdx
cmpl %r10d, %r8d
je 0xb0a4
movl (%r9,%r10,4), %ecx
movslq %ecx, %r12
movq (%rsp), %rsi
movl (%rsi,%r12,4), %r11d
testl %r11d, %r11d
jle 0xb09c
movl %r11d, %ecx
negl %ecx
movl %ecx, (%rsi,%r12,4)
movslq %r15d, %rcx
movl %r12d, (%r14,%rcx,4)
movq 0x18(%rsp), %rcx
movslq (%rcx,%r12,4), %rcx
movl (%rdx,%r12,4), %ebx
cmpq $-0x1, %rcx
je 0xb050
movl %ebx, (%rdx,%rcx,4)
movq 0x18(%rsp), %rcx
movl (%rcx,%r12,4), %edx
movq 0xc8(%rsp), %rcx
cmpl $-0x1, %ebx
jne 0xb077
movq 0x40(%rsp), %rcx
movl (%rcx,%r12,4), %ebx
movq 0xc0(%rsp), %rcx
addl %r11d, 0x34(%rsp)
incl %r15d
movq 0x10(%rsp), %r11
leaq (%r11,%rcx,4), %rcx
movslq %ebx, %r11
movl %edx, (%rcx,%r11,4)
movq 0x28(%rsp), %rdx
movq 0x90(%rsp), %rbx
incq %r10
jmp 0xb00d
movl 0x7c(%rsp), %edx
cmpl %edx, %edi
je 0xb0be
movslq %edi, %rcx
movl 0xa0(%rsp), %esi
movl %esi, (%rbx,%rcx,4)
andl $0x0, (%rbp,%rcx,4)
movl 0x88(%rsp), %ecx
incl %ecx
movq 0x68(%rsp), %rsi
movl 0x30(%rsp), %edi
jmp 0xafa9
movq 0x40(%rsp), %rcx
movl 0x34(%rsp), %edx
movl %edx, (%rcx,%rsi,4)
movl 0x74(%rsp), %r14d
movl %r14d, (%rbx,%rsi,4)
movl %r15d, %ecx
subl %r14d, %ecx
movq 0x10(%rsp), %rdx
movl %ecx, (%rdx,%rsi,4)
movq 0x8(%rsp), %rcx
movl $0xfffffffe, (%rcx,%rsi,4) # imm = 0xFFFFFFFE
movl %eax, %edi
movl 0x70(%rsp), %esi
movq %rbp, %rdx
movq 0x50(%rsp), %rcx
callq 0xb6d5
movl %eax, %edi
movslq %r14d, %rax
movslq %r15d, %rcx
movq %rcx, 0x88(%rsp)
movq %rax, 0x98(%rsp)
movq 0x18(%rsp), %r14
cmpq 0x88(%rsp), %rax
jge 0xb1ac
movq 0x48(%rsp), %rcx
movslq (%rcx,%rax,4), %rcx
movq 0x8(%rsp), %rdx
movl (%rdx,%rcx,4), %edx
testl %edx, %edx
jle 0xb1a7
movq (%rsp), %rsi
movl (%rsi,%rcx,4), %esi
leal (%rsi,%rdi), %r8d
movl (%rbx,%rcx,4), %r10d
movslq %r10d, %r9
addl %edx, %r10d
movslq %r10d, %r10
cmpq %r10, %r9
jge 0xb1a7
movq 0x48(%rsp), %r10
movslq (%r10,%r9,4), %r10
movl (%rbp,%r10,4), %r11d
cmpl %edi, %r11d
jge 0xb196
testl %r11d, %r11d
je 0xb19e
movq 0x40(%rsp), %r11
movl (%r11,%r10,4), %r11d
addl %r8d, %r11d
jmp 0xb199
addl %esi, %r11d
movl %r11d, (%rbp,%r10,4)
incq %r9
movl (%rbx,%rcx,4), %r10d
jmp 0xb165
incq %rax
jmp 0xb134
movq 0x98(%rsp), %rax
cmpq 0x88(%rsp), %rax
jge 0xb32f
movq 0x48(%rsp), %r14
movq %rax, 0x60(%rsp)
movl (%r14,%rax,4), %eax
movslq %eax, %rsi
movl (%rbx,%rsi,4), %r10d
movslq %r10d, %rdx
movq 0x8(%rsp), %rax
movslq (%rax,%rsi,4), %r9
addq %rdx, %r9
xorl %r8d, %r8d
movq %rdx, %r15
xorl %eax, %eax
movslq %r10d, %r11
cmpq %r9, %r15
jge 0xb238
movl (%r14,%r15,4), %ecx
movslq %ecx, %rbx
movl (%rbp,%rbx,4), %r12d
testl %r12d, %r12d
je 0xb233
subl %edi, %r12d
jle 0xb21a
addl %r12d, %r8d
incl %r10d
movl %ecx, (%r14,%r11,4)
addl %ecx, %eax
jmp 0xb233
movq 0x90(%rsp), %rcx
movl 0xa0(%rsp), %r11d
movl %r11d, (%rcx,%rbx,4)
andl $0x0, (%rbp,%rbx,4)
incq %r15
jmp 0xb1ee
movl %r10d, %ecx
subl %edx, %ecx
incl %ecx
movq 0x8(%rsp), %rbx
movl %ecx, (%rbx,%rsi,4)
movq 0x10(%rsp), %rcx
movslq (%rcx,%rsi,4), %r15
addq %rdx, %r15
movslq %r10d, %rcx
cmpq %r15, %r9
jge 0xb27e
movslq (%r14,%r9,4), %rbx
movq (%rsp), %r12
movl (%r12,%rbx,4), %r12d
testl %r12d, %r12d
jle 0xb279
addl %r12d, %r8d
leal 0x1(%rcx), %r10d
movl %ebx, (%r14,%rcx,4)
addl %ebx, %eax
incq %r9
jmp 0xb253
testl %r8d, %r8d
je 0xb2eb
movq 0x40(%rsp), %r10
movl (%r10,%rsi,4), %r9d
cmpl %r8d, %r9d
cmovll %r9d, %r8d
movl %r8d, (%r10,%rsi,4)
movl (%r14,%r11,4), %r8d
movl %r8d, (%r14,%rcx,4)
movl (%r14,%rdx,4), %r8d
movl %r8d, (%r14,%r11,4)
movl 0x7c(%rsp), %r8d
movl %r8d, (%r14,%rdx,4)
subl %edx, %ecx
incl %ecx
movq 0x10(%rsp), %rdx
movl %ecx, (%rdx,%rsi,4)
xorl %edx, %edx
divl 0x50(%rsp)
movq 0xb0(%rsp), %rcx
movl (%rcx,%rdx,4), %eax
movq 0x18(%rsp), %r14
movl %eax, (%r14,%rsi,4)
movl %esi, (%rcx,%rdx,4)
movq 0x28(%rsp), %rax
movl %edx, (%rax,%rsi,4)
movq 0x90(%rsp), %rbx
jmp 0xb322
movq 0x90(%rsp), %rbx
movl 0xa0(%rsp), %eax
movl %eax, (%rbx,%rsi,4)
movq (%rsp), %rcx
movl (%rcx,%rsi,4), %eax
addl %eax, 0x34(%rsp)
subl %eax, 0x78(%rsp)
andl $0x0, (%rcx,%rsi,4)
subl %eax, 0x24(%rsp)
movq 0x8(%rsp), %rax
orl $-0x1, (%rax,%rsi,4)
movq 0x18(%rsp), %r14
movq 0x60(%rsp), %rax
incq %rax
jmp 0xb1b4
movq 0x40(%rsp), %rax
movq 0x68(%rsp), %rcx
movl 0x34(%rsp), %edx
movl %edx, (%rax,%rcx,4)
movl 0x70(%rsp), %esi
cmpl %edx, %esi
cmovlel %edx, %esi
addl %esi, %edi
movl %esi, 0x70(%rsp)
movq %rbp, %rdx
movq 0x50(%rsp), %rcx
callq 0xb6d5
movq 0x98(%rsp), %rsi
movq 0x28(%rsp), %rdx
cmpq 0x88(%rsp), %rsi
jge 0xb4d2
movq 0x48(%rsp), %rcx
movq %rsi, 0x60(%rsp)
movslq (%rcx,%rsi,4), %rcx
movq (%rsp), %rsi
cmpl $0x0, (%rsi,%rcx,4)
jns 0xb4c5
movl (%rdx,%rcx,4), %ecx
movq 0xb0(%rsp), %rsi
movl (%rsi,%rcx,4), %edx
orl $-0x1, (%rsi,%rcx,4)
cmpl $-0x1, %edx
je 0xb4c0
movslq %edx, %rsi
cmpl $-0x1, (%r14,%rsi,4)
je 0xb4c0
leaq (%r14,%rsi,4), %r14
movq 0x10(%rsp), %rcx
movl (%rcx,%rsi,4), %r8d
movq 0x8(%rsp), %rcx
movl (%rcx,%rsi,4), %r9d
movl (%rbx,%rsi,4), %edi
leal -0x1(%r8), %r10d
movslq %edi, %rcx
addl %r10d, %edi
movslq %edi, %rdi
cmpq %rdi, %rcx
jge 0xb3f8
movslq (%r13,%rcx,4), %rdi
incq %rcx
movl %eax, (%rbp,%rdi,4)
movl (%rbx,%rsi,4), %edi
jmp 0xb3dc
pushq $-0x2
popq %r11
subl %edx, %r11d
movq %r14, 0xa0(%rsp)
movq %r14, %rcx
movslq %edx, %r15
movl (%rcx), %edx
cmpl $-0x1, %edx
je 0xb4aa
movslq %edx, %rcx
xorl %edi, %edi
movq 0x10(%rsp), %r14
cmpl %r8d, (%r14,%rcx,4)
jne 0xb437
xorl %edi, %edi
movq 0x8(%rsp), %r14
cmpl %r9d, (%r14,%rcx,4)
sete %dil
movslq (%rbx,%rcx,4), %r12
leal (%r10,%r12), %ebx
movslq %ebx, %rbx
testl %edi, %edi
je 0xb494
cmpq %rbx, %r12
jge 0xb460
movslq (%r13,%r12,4), %r14
xorl %edi, %edi
cmpl %eax, (%rbp,%r14,4)
sete %dil
incq %r12
jmp 0xb442
movq 0x90(%rsp), %rbx
movl %r11d, (%rbx,%rcx,4)
movq (%rsp), %rdi
movl (%rdi,%rcx,4), %edx
addl %edx, (%rdi,%rsi,4)
andl $0x0, (%rdi,%rcx,4)
movq 0x8(%rsp), %rdx
orl $-0x1, (%rdx,%rcx,4)
movq 0x18(%rsp), %rdi
movl (%rdi,%rcx,4), %edx
movl %edx, (%rdi,%r15,4)
jmp 0xb40f
movq 0x18(%rsp), %rdi
leaq (%rdi,%rcx,4), %rcx
movq 0x90(%rsp), %rbx
jmp 0xb40a
movq 0xa0(%rsp), %rcx
movl (%rcx), %edx
incl %eax
movq 0x18(%rsp), %r14
jmp 0xb3a5
movq 0x28(%rsp), %rdx
movq 0x60(%rsp), %rsi
incq %rsi
jmp 0xb369
movq 0x50(%rsp), %rcx
movl %ecx, %edx
subl 0x24(%rsp), %edx
movl 0x74(%rsp), %ecx
movq 0x68(%rsp), %rdi
movq 0x98(%rsp), %r8
cmpq 0x88(%rsp), %r8
jge 0xb5ad
movq 0x48(%rsp), %rsi
movq %r8, %r12
movl (%rsi,%r8,4), %esi
movslq %esi, %rdi
movq (%rsp), %r10
movl (%r10,%rdi,4), %r8d
testl %r8d, %r8d
jns 0xb59d
movl %r8d, %r9d
negl %r9d
movl %r9d, (%r10,%rdi,4)
movq 0x40(%rsp), %r9
movl (%r9,%rdi,4), %r9d
addl 0x34(%rsp), %r9d
cmpl %edx, %r9d
jl 0xb53c
movl %edx, %r9d
addl %r8d, %r9d
movslq %r9d, %r8
movq 0x58(%rsp), %r15
movslq (%r15,%r8,4), %r10
pushq $-0x1
popq %r9
cmpq $-0x1, %r10
movq 0x28(%rsp), %r11
je 0xb562
movl %esi, (%r11,%r10,4)
movl (%r15,%r8,4), %r9d
movl %r9d, (%r14,%rdi,4)
orl $-0x1, (%r11,%rdi,4)
movl %esi, (%r15,%r8,4)
movq 0x80(%rsp), %r9
cmpl %r8d, %r9d
cmovgel %r8d, %r9d
movq %r9, 0x80(%rsp)
movq 0x40(%rsp), %r9
movl %r8d, (%r9,%rdi,4)
movslq %ecx, %rdi
incl %ecx
movq 0x48(%rsp), %r8
movl %esi, (%r8,%rdi,4)
movq %r12, %r8
incq %r8
movq 0x68(%rsp), %rdi
jmp 0xb4ee
movq (%rsp), %rdx
movl 0x78(%rsp), %esi
movl %esi, (%rdx,%rdi,4)
movl %ecx, %edx
subl 0x74(%rsp), %edx
movq 0x10(%rsp), %rsi
movl %edx, (%rsi,%rdi,4)
jne 0xb5d1
orl $-0x1, (%rbx,%rdi,4)
andl $0x0, (%rbp,%rdi,4)
cmpl $0x0, 0x30(%rsp)
cmovel 0xd0(%rsp), %ecx
movl %ecx, %r12d
movq 0x38(%rsp), %rdx
jmp 0xadcf
xorl %eax, %eax
pushq $-0x2
popq %rcx
movq 0x50(%rsp), %rsi
movq (%rsp), %r8
cmpq %rax, 0xa8(%rsp)
je 0xb615
movl %ecx, %edx
subl (%rbx,%rax,4), %edx
movl %edx, (%rbx,%rax,4)
movq 0x38(%rsp), %rdx
incq %rax
jmp 0xb5f9
xorl %eax, %eax
movq 0x58(%rsp), %rcx
cmpq %rdx, %rax
jg 0xb62a
orl $-0x1, (%rcx,%rax,4)
incq %rax
jmp 0xb61c
movl %esi, %eax
movq 0x58(%rsp), %rdi
testl %eax, %eax
js 0xb659
movl %eax, %ecx
cmpl $0x0, (%r8,%rcx,4)
jg 0xb655
movslq (%rbx,%rcx,4), %rdx
movl (%rdi,%rdx,4), %edx
movl %edx, (%r14,%rcx,4)
movq 0x38(%rsp), %rdx
movslq (%rbx,%rcx,4), %rcx
movl %eax, (%rdi,%rcx,4)
decl %eax
jmp 0xb631
movq 0x58(%rsp), %rdi
testl %esi, %esi
js 0xb687
movl %esi, %eax
cmpl $0x0, (%r8,%rax,4)
jle 0xb683
movslq (%rbx,%rax,4), %rcx
cmpq $-0x1, %rcx
je 0xb683
movl (%rdi,%rcx,4), %ecx
movl %ecx, (%r14,%rax,4)
movslq (%rbx,%rax,4), %rax
movl %esi, (%rdi,%rax,4)
decl %esi
jmp 0xb65e
xorl %r15d, %r15d
xorl %eax, %eax
movq 0x58(%rsp), %r14
cmpq %rdx, %r15
jg 0xb6c1
cmpl $-0x1, (%rbx,%r15,4)
jne 0xb6bc
movl %r15d, %edi
movl %eax, %esi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq 0x28(%rsp), %r8
movq %rbp, %r9
callq 0xb70f
movq 0x38(%rsp), %rdx
incq %r15
jmp 0xb691
xorl %eax, %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq