// File: /workspace/github_c_makefile_star2_O0/cbouilla[P]AES-attacks-finder/SysEqLin.c
// Function: ExtraireEX
int ExtraireEX(unsigned char ** __restrict dst, int * __restrict var, const int N, SysEqLin E) // Calcul E(X) (sous forme de matrice)
{

	const int nombre_ligne_big_matrix = E->a;
	const int nombre_colone_big_matrix = E->b + E->gen*N;
	unsigned char ** __restrict big_matrix=malloc(nombre_ligne_big_matrix*sizeof(unsigned char *));
	unsigned char * __restrict espace_big_matrix=malloc(nombre_colone_big_matrix*nombre_ligne_big_matrix*sizeof(unsigned char));

	int i;
	for (i = 0; i < nombre_ligne_big_matrix; i++) big_matrix[i]=espace_big_matrix + i*nombre_colone_big_matrix;
	for (i = 0; i < nombre_ligne_big_matrix; i++)
	{
		int j;
		for (j = 0; j < E->b; j++) big_matrix[i][j]=E->mat[i][j];
		for (j = E->b; j < nombre_colone_big_matrix; j++) big_matrix[i][j]=0;
	}
	for (i = 0; i < N; i++)
	{
		if (E->lignevar[var[i]]<E->a/E->gen)
		{
			int j;
			for (j = 0; j < E->gen; j++) big_matrix[E->gen*E->lignevar[var[i]]+j][E->b+E->gen*i+j]=1;
		}
	}
	
	int dim = 0;
	const int colonne_max_pour_pivot = E->b;
	int * __restrict place_pivot = malloc(min(colonne_max_pour_pivot,nombre_ligne_big_matrix)*sizeof(int));
	int pivot_c;
	for (pivot_c = 0; pivot_c < colonne_max_pour_pivot; pivot_c++)
	{
		int new_pivot_l;
		for (new_pivot_l = dim; new_pivot_l < nombre_ligne_big_matrix; new_pivot_l++)
		{
			if (big_matrix[new_pivot_l][pivot_c])
			{
				if (new_pivot_l!=dim)
				{
					unsigned char *tmp = big_matrix[dim];
					big_matrix[dim]=big_matrix[new_pivot_l];
					big_matrix[new_pivot_l]=tmp;
				}
				place_pivot[dim]=pivot_c;
				const unsigned char inv = Inverse(big_matrix[dim][pivot_c]);
				int colonne;
				for (colonne = pivot_c; colonne < nombre_colone_big_matrix; colonne++) big_matrix[dim][colonne]=Multiply(inv,big_matrix[dim][colonne]);
				int ligne;
				for (ligne = 0; ligne < dim; ligne++)
				{
					if (big_matrix[ligne][pivot_c])
					{
						for (colonne = pivot_c+1; colonne < nombre_colone_big_matrix; colonne++)
						{
							big_matrix[ligne][colonne]^=Multiply(big_matrix[ligne][pivot_c],big_matrix[dim][colonne]);
						}
						big_matrix[ligne][pivot_c]=0;
					}
				}
				for (ligne = new_pivot_l+1; ligne < nombre_ligne_big_matrix; ligne++)
				{
					if (big_matrix[ligne][pivot_c])
					{
						for (colonne = pivot_c+1; colonne < nombre_colone_big_matrix; colonne++)
						{
							big_matrix[ligne][colonne]^=Multiply(big_matrix[ligne][pivot_c],big_matrix[dim][colonne]);
						}
						big_matrix[ligne][pivot_c]=0;
					}
				}
				dim++;
				break;
			}
		}
	}
	
	const int dim_save = dim;
	for (pivot_c = colonne_max_pour_pivot; pivot_c < nombre_colone_big_matrix; pivot_c++)
	{
		int new_pivot_l;
		for (new_pivot_l = dim; new_pivot_l < nombre_ligne_big_matrix; new_pivot_l++)
		{
			if (big_matrix[new_pivot_l][pivot_c])
			{
				if (new_pivot_l!=dim)
				{
					unsigned char *tmp = big_matrix[dim];
					big_matrix[dim]=big_matrix[new_pivot_l];
					big_matrix[new_pivot_l]=tmp;
				}
				const unsigned char inv = Inverse(big_matrix[dim][pivot_c]);
				int colonne;
				for (colonne = pivot_c; colonne < nombre_colone_big_matrix; colonne++) big_matrix[dim][colonne]=Multiply(inv,big_matrix[dim][colonne]);
				int ligne;
				for (ligne = 0; ligne < dim; ligne++)
				{
					if (big_matrix[ligne][pivot_c])
					{
						for (colonne = pivot_c+1; colonne < nombre_colone_big_matrix; colonne++)
						{
							big_matrix[ligne][colonne]^=Multiply(big_matrix[ligne][pivot_c],big_matrix[dim][colonne]);
						}
						big_matrix[ligne][pivot_c]=0;
					}
				}
				for (ligne = new_pivot_l+1; ligne < nombre_ligne_big_matrix; ligne++)
				{
					if (big_matrix[ligne][pivot_c])
					{
						for (colonne = pivot_c+1; colonne < nombre_colone_big_matrix; colonne++)
						{
							big_matrix[ligne][colonne]^=Multiply(big_matrix[ligne][pivot_c],big_matrix[dim][colonne]);
						}
						big_matrix[ligne][pivot_c]=0;
					}
				}
				dim++;
				break;
			}
		}
	}

	const int nombre_de_lignes_max = VARIABLES*E->gen;
	int pos = 0;
	int ligne;	
	int colonne = colonne_max_pour_pivot;
	for (ligne = dim_save; ligne < dim; ligne++)
	{
		while (colonne<nombre_colone_big_matrix && big_matrix[ligne][colonne]==0)
		{
			unsigned char premier = 0;
			int j;
			for (j = 0; j < dim_save; j++)
			{
				if (big_matrix[j][colonne])
				{
					int k;
					if (premier) for (k = 0; k < nombre_de_lignes_max; k++) dst[k][pos]^=Multiply(big_matrix[j][colonne],E->mat[k][place_pivot[j]]);
					else
					{
						for (k = 0; k < nombre_de_lignes_max; k++) dst[k][pos]=Multiply(big_matrix[j][colonne],E->mat[k][place_pivot[j]]);
						premier=1;
					}			
				}
			}
			if (premier) pos++;
			colonne++;
		}
		colonne++;
	}

	for (i = colonne; i < nombre_colone_big_matrix; i++)
	{
		unsigned char premier = 0;
		int j;
		for (j = 0; j < dim_save; j++)
		{
			if (big_matrix[j][i])
			{
				int k;
				if (premier) for (k = 0; k < nombre_de_lignes_max; k++) dst[k][pos]^=Multiply(big_matrix[j][i],E->mat[k][place_pivot[j]]);
				else
				{
					for (k = 0; k < nombre_de_lignes_max; k++) dst[k][pos]=Multiply(big_matrix[j][i],E->mat[k][place_pivot[j]]);
					premier=1;
				}			
			}
		}
		if (premier) pos++;
	}

	free(place_pivot);
	free(big_matrix);
	free(espace_big_matrix);

	return pos;	

	/* A améliorer */
	#if 0
	int ligne=VARIABLES*E->gen;
	unsigned char **m=malloc(ligne*sizeof(unsigned char *));
	int b1=(N+VARIABLES)*E->gen-E->a, i;
	for (i = 0; i < ligne; i++)
	{
		m[i]=malloc(b1*sizeof(unsigned char));
		int j;
		for (j = 0; j < b1; j++) m[i][j]=0;
	}
	int col=0;
	for (i = 0; i < N; i++)
	{
		int j;
		for (j = 0; j < E->gen; j++) m[E->gen*E->lignevar[var[i]]+j][col++]=1;
	}
	for (i = E->a; i < VARIABLES*E->gen; i++) m[i][col++]=1;
	int b=Intersection(dst,E->mat,E->b,m,ligne,b1);
	for (i = 0; i < ligne; i++) free(m[i]);
	free(m);
	return b;
	#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x24(%rbp)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x20(%rbp), %rcx
movl 0x10(%rcx), %ecx
imull -0x14(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x28(%rbp)
movslq -0x24(%rbp), %rdi
shlq $0x3, %rdi
callq 0x21c0
movq %rax, -0x30(%rbp)
movl -0x28(%rbp), %eax
imull -0x24(%rbp), %eax
movslq %eax, %rdi
shlq $0x0, %rdi
callq 0x21c0
movq %rax, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x109d9
movq -0x38(%rbp), %rdx
movl -0x3c(%rbp), %eax
imull -0x28(%rbp), %eax
cltq
addq %rax, %rdx
movq -0x30(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x109aa
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x10a74
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x10a33
movq -0x20(%rbp), %rax
movq (%rax), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x40(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x30(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x40(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x109f3
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x10a64
movq -0x30(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x40(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x10a3d
jmp 0x10a66
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x109e0
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x10b3a
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movslq -0x3c(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0xc0(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x20(%rbp), %rcx
cltd
idivl 0x10(%rcx)
movl %eax, %ecx
movl -0xc0(%rbp), %eax
cmpl %ecx, %eax
jge 0x10b2a
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x10b28
movq -0x30(%rbp), %rax
movq -0x20(%rbp), %rcx
movl 0x10(%rcx), %ecx
movq -0x20(%rbp), %rdx
movq 0x18(%rdx), %rdx
movq -0x10(%rbp), %rsi
movslq -0x3c(%rbp), %rdi
movslq (%rsi,%rdi,4), %rsi
imull (%rdx,%rsi,4), %ecx
addl -0x44(%rbp), %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq -0x20(%rbp), %rcx
movl 0xc(%rcx), %ecx
movq -0x20(%rbp), %rdx
movl 0x10(%rdx), %edx
imull -0x3c(%rbp), %edx
addl %edx, %ecx
addl -0x44(%rbp), %ecx
movslq %ecx, %rcx
movb $0x1, (%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x10ac6
jmp 0x10b2a
jmp 0x10b2c
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x10a7b
movl $0x0, -0x48(%rbp)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x10b5e
movl -0x4c(%rbp), %eax
movl %eax, -0xc4(%rbp)
jmp 0x10b67
movl -0x24(%rbp), %eax
movl %eax, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0x21c0
movq %rax, -0x58(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x4c(%rbp), %eax
jge 0x10e2e
movl -0x48(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x10e1e
movq -0x30(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x10e0e
movl -0x60(%rbp), %eax
cmpl -0x48(%rbp), %eax
je 0x10bfc
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x68(%rbp)
movq -0x30(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x68(%rbp), %rdx
movq -0x30(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x5c(%rbp), %edx
movq -0x58(%rbp), %rax
movslq -0x48(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %edi
callq 0x24c0
movb %al, -0x69(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x10c7d
movzbl -0x69(%rbp), %eax
movl %eax, %ecx
leaq 0x143cf(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x70(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x70(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x10c2c
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x48(%rbp), %eax
jge 0x10d3f
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x10d2f
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x10d1b
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x14338(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x70(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x70(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x10cb3
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x10d31
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x10c84
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x10e03
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x10df3
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
movl -0x70(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x10ddf
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x14274(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x70(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x70(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x10d77
movq -0x30(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x10df5
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x10d48
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x10e1e
jmp 0x10e10
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x10b96
jmp 0x10e20
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x10b84
movl -0x48(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x11148
movl -0x48(%rbp), %eax
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x11138
movq -0x30(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x11128
movl -0x7c(%rbp), %eax
cmpl -0x48(%rbp), %eax
je 0x10eb8
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x88(%rbp), %rdx
movq -0x30(%rbp), %rax
movslq -0x7c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %edi
callq 0x24c0
movb %al, -0x89(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x10f43
movzbl -0x89(%rbp), %eax
movl %eax, %ecx
leaq 0x14115(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x90(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x30(%rbp), %rax
movslq -0x48(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x90(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x10ee0
movl $0x0, -0x94(%rbp)
movl -0x94(%rbp), %eax
cmpl -0x48(%rbp), %eax
jge 0x1102f
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x11019
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x11002
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x14060(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x90(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x90(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x10f85
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x1101b
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x10f4d
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x1111d
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x11107
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x110f0
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13f72(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x30(%rbp), %rcx
movslq -0x48(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x90(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x90(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x11073
movq -0x30(%rbp), %rax
movslq -0x94(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x11109
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x1103b
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x11138
jmp 0x1112a
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x10e4c
jmp 0x1113a
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x10e3a
leaq 0x2c179(%rip), %rax     # 0x3d2c8
movl (%rax), %eax
movq -0x20(%rbp), %rcx
imull 0x10(%rcx), %eax
movl %eax, -0x98(%rbp)
movl $0x0, -0x9c(%rbp)
movl -0x4c(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0x78(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
cmpl -0x48(%rbp), %eax
jge 0x113cd
jmp 0x1118c
movl -0xa4(%rbp), %ecx
xorl %eax, %eax
cmpl -0x28(%rbp), %ecx
movb %al, -0xc5(%rbp)
jge 0x111c5
movq -0x30(%rbp), %rax
movslq -0xa0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xa4(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
sete %al
movb %al, -0xc5(%rbp)
movb -0xc5(%rbp), %al
testb $0x1, %al
jne 0x111d4
jmp 0x113aa
movb $0x0, -0xa5(%rbp)
movl $0x0, -0xac(%rbp)
movl -0xac(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x1137e
movq -0x30(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xa4(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x11368
cmpb $0x0, -0xa5(%rbp)
je 0x112c8
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0x98(%rbp), %eax
jge 0x112c3
movq -0x30(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xa4(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13db0(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movslq -0xb0(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq -0x58(%rbp), %rdx
movslq -0xac(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x8(%rbp), %rax
movslq -0xb0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x9c(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x1122b
jmp 0x11366
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0x98(%rbp), %eax
jge 0x1135f
movq -0x30(%rbp), %rax
movslq -0xac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xa4(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13d0d(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movslq -0xb0(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq -0x58(%rbp), %rdx
movslq -0xac(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movslq -0xb0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x9c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x112d2
movb $0x1, -0xa5(%rbp)
jmp 0x11368
jmp 0x1136a
movl -0xac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xac(%rbp)
jmp 0x111e5
cmpb $0x0, -0xa5(%rbp)
je 0x11396
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x1118c
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x1117b
movl -0xa4(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0x28(%rbp), %eax
jge 0x115ab
movb $0x0, -0xb1(%rbp)
movl $0x0, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x11583
movq -0x30(%rbp), %rax
movslq -0xb8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x1156d
cmpb $0x0, -0xb1(%rbp)
je 0x114d0
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0x98(%rbp), %eax
jge 0x114cb
movq -0x30(%rbp), %rax
movslq -0xb8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13ba8(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movslq -0xbc(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq -0x58(%rbp), %rdx
movslq -0xb8(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x8(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x9c(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x11436
jmp 0x1156b
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0x98(%rbp), %eax
jge 0x11564
movq -0x30(%rbp), %rax
movslq -0xb8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x3c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13b08(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
movslq -0xbc(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq -0x58(%rbp), %rdx
movslq -0xb8(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x8(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x9c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x114da
movb $0x1, -0xb1(%rbp)
jmp 0x1156d
jmp 0x1156f
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0x113f3
cmpb $0x0, -0xb1(%rbp)
je 0x1159b
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0x1159d
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x113d6
movq -0x58(%rbp), %rdi
callq 0x2030
movq -0x30(%rbp), %rdi
callq 0x2030
movq -0x38(%rbp), %rdi
callq 0x2030
movl -0x9c(%rbp), %eax
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)