// File: /workspace/github_c_makefile_star2_O0/cbouilla[P]AES-attacks-finder/Algebre.c
// Function: Intersection_tmp
int Intersection_tmp(unsigned char **dst, unsigned char **mat1, int b1, unsigned char **mat2, int a, int b2)
{
	/* A améliorer */
	if (b1==0 || b2==0) return 0;
	int b=b1+b2,i;
	unsigned char **m=malloc(a*sizeof(unsigned char *));
	for (i = 0; i < a; i++) m[i]=malloc(b*sizeof(unsigned char)); 
	for (i = 0; i < a; i++)
	{
		int j;
		for (j = 0; j < b1; j++) m[i][j]=mat1[i][j];
		for (j = 0; j < b2; j++) m[i][j+b1]=mat2[i][j];	
	}
	for (i = 0; i < min(a,b1); i++)
	{
		int k1;
		for (k1 = i; k1 < b1; k1++)
		{
			int k2;
			for (k2 = i; k2 < a; k2++)
			{
				if (m[k2][k1])
				{
					if (k2!=i) echangeligne(k2,i,m,a,b);
					if (k1!=i)
					{
						echangecolonne(k1,i,m,a,b);
						echangecolonne(k1,i,mat1,a,b);
					}
					break;
				}
			}
			if (m[i][i]) break;
		}
		if (!m[i][i]) break;
		else
		{
			unsigned char invp=Inverse(m[i][i]);
			int j;
			for (j = i; j < b; j++) m[i][j]=Multiply(invp,m[i][j]);
			for (j = i+1; j < a; j++)
			{
				if (m[j][i])
				{
					int k;
					for (k = i+1; k < b; k++) if (m[i][k]) m[j][k]^=Multiply(m[j][i],m[i][k]);
					m[j][i]=0;
				}
			}
		}	
	}
	for (i = b1; i < min(a,b); i++)
	{
		int k1;
		for (k1 = i; k1 < b; k1++)
		{
			int k2;
			for (k2 = i; k2 < a; k2++)
			{
				if (m[k2][k1])
				{
					if (k2!=i) echangeligne(k2,i,m,a,b);
					if (k1!=i) echangecolonne(k1,i,m,a,b);
					break;
				}
			}
			if (m[i][i]) break;
		}
		if (!m[i][i]) break;
		else
		{
			unsigned char invp=Inverse(m[i][i]);
			int j;
			for (j = i; j < b; j++) m[i][j]=Multiply(invp,m[i][j]);
			for (j = i+1; j < a; j++)
			{
				if (m[j][i])
				{
					int k;
					for (k = i+1; k < b; k++) if (m[i][k]) m[j][k]^=Multiply(m[j][i],m[i][k]);
					m[j][i]=0;
				}
			}
		}	
	}
	int b3=b-i,j;
	unsigned char *coef=malloc(b*sizeof(unsigned char));
	for (i = 0; i < b3; i++) for (j = 0; j < a; j++) dst[j][i]=0;	
	for (i = 0; i < b3; i++)
	{
		for (j = 0; j < b; j++) coef[j]=0;
		coef[b-1-i]=1;
		for (j = b-b3-1; j >=0; j--)
		{
			int k;
			for (k = j+1; k < b; k++) if (coef[k] && m[j][k]) coef[j]^=Multiply(coef[k],m[j][k]); // 34 % du temps passé ici
		}
		for (j = 0; j < b1; j++)
		{
			int k;
			for (k = 0; k < a; k++) if (coef[j] && mat1[k][j]) dst[k][i]^=Multiply(coef[j],mat1[k][j]); // 19 % du temps passé ici
		}
	}
	for (i = 0; i < a; i++) free(m[i]);
	free(m);
	free(coef);
	return b3;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movl %r9d, -0x30(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x4b4e
cmpl $0x0, -0x30(%rbp)
jne 0x4b5a
movl $0x0, -0x4(%rbp)
jmp 0x53d9
movl -0x1c(%rbp), %eax
addl -0x30(%rbp), %eax
movl %eax, -0x34(%rbp)
movslq -0x2c(%rbp), %rdi
shlq $0x3, %rdi
callq 0x21c0
movq %rax, -0x40(%rbp)
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x4baa
movslq -0x34(%rbp), %rdi
shlq $0x0, %rdi
callq 0x21c0
movq %rax, %rdx
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x4b7b
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x4c52
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x4bfd
movq -0x18(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x44(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x44(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x4bc4
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x30(%rbp), %eax
jge 0x4c42
movq -0x28(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x44(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl -0x44(%rbp), %ecx
addl -0x1c(%rbp), %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x4c04
jmp 0x4c44
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x4bb1
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x4c75
movl -0x2c(%rbp), %eax
movl %eax, -0x90(%rbp)
jmp 0x4c7e
movl -0x1c(%rbp), %eax
movl %eax, -0x90(%rbp)
movl -0x8c(%rbp), %eax
movl -0x90(%rbp), %ecx
cmpl %ecx, %eax
jge 0x4ecd
movl -0x38(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x4d51
movl -0x38(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x4d29
movq -0x40(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x48(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4d1c
movl -0x4c(%rbp), %eax
cmpl -0x38(%rbp), %eax
je 0x4ce6
movl -0x4c(%rbp), %edi
movl -0x38(%rbp), %esi
movq -0x40(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x34(%rbp), %r8d
callq 0x35a0
movl -0x48(%rbp), %eax
cmpl -0x38(%rbp), %eax
je 0x4d1a
movl -0x48(%rbp), %edi
movl -0x38(%rbp), %esi
movq -0x40(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x34(%rbp), %r8d
callq 0x3600
movl -0x48(%rbp), %edi
movl -0x38(%rbp), %esi
movq -0x18(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x34(%rbp), %r8d
callq 0x3600
jmp 0x4d29
jmp 0x4d1e
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x4caa
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4d41
jmp 0x4d51
jmp 0x4d43
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x4c98
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x4d6c
jmp 0x4ecd
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %edi
callq 0x24c0
movb %al, -0x4d(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x4ddf
movzbl -0x4d(%rbp), %eax
movl %eax, %ecx
leaq 0x2026d(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x54(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x4d8e
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x4ebb
movq -0x40(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4eab
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x4e97
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4e8a
movq -0x40(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x201be(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x58(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x40(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x4e8c
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x4e17
movq -0x40(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x4ead
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x4de8
jmp 0x4ebd
jmp 0x4ebf
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x4c59
movl -0x1c(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x94(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x4eef
movl -0x2c(%rbp), %eax
movl %eax, -0x98(%rbp)
jmp 0x4ef8
movl -0x34(%rbp), %eax
movl %eax, -0x98(%rbp)
movl -0x94(%rbp), %eax
movl -0x98(%rbp), %ecx
cmpl %ecx, %eax
jge 0x5131
movl -0x38(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x4fb5
movl -0x38(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x4f8d
movq -0x40(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x5c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4f80
movl -0x60(%rbp), %eax
cmpl -0x38(%rbp), %eax
je 0x4f60
movl -0x60(%rbp), %edi
movl -0x38(%rbp), %esi
movq -0x40(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x34(%rbp), %r8d
callq 0x35a0
movl -0x5c(%rbp), %eax
cmpl -0x38(%rbp), %eax
je 0x4f7e
movl -0x5c(%rbp), %edi
movl -0x38(%rbp), %esi
movq -0x40(%rbp), %rdx
movl -0x2c(%rbp), %ecx
movl -0x34(%rbp), %r8d
callq 0x3600
jmp 0x4f8d
jmp 0x4f82
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x4f24
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x4fa5
jmp 0x4fb5
jmp 0x4fa7
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x4f12
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x4fd0
jmp 0x5131
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %edi
callq 0x24c0
movb %al, -0x61(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x5043
movzbl -0x61(%rbp), %eax
movl %eax, %ecx
leaq 0x20009(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x68(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x68(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x4ff2
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x511f
movq -0x40(%rbp), %rax
movslq -0x68(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x510f
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x50fb
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x6c(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
je 0x50ee
movq -0x40(%rbp), %rax
movslq -0x68(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1ff5a(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x38(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x6c(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x40(%rbp), %rax
movslq -0x68(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x6c(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x50f0
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x507b
movq -0x40(%rbp), %rax
movslq -0x68(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movb $0x0, (%rax,%rcx)
jmp 0x5111
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x504c
jmp 0x5121
jmp 0x5123
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x4ed3
movl -0x34(%rbp), %eax
subl -0x38(%rbp), %eax
movl %eax, -0x70(%rbp)
movslq -0x34(%rbp), %rdi
shlq $0x0, %rdi
callq 0x21c0
movq %rax, -0x80(%rbp)
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x70(%rbp), %eax
jge 0x5195
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x5188
movq -0x10(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x5161
jmp 0x518a
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x5152
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x70(%rbp), %eax
jge 0x5396
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x51ce
movq -0x80(%rbp), %rax
movslq -0x74(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x51af
movq -0x80(%rbp), %rax
movl -0x34(%rbp), %ecx
subl $0x1, %ecx
subl -0x38(%rbp), %ecx
movslq %ecx, %rcx
movb $0x1, (%rax,%rcx)
movl -0x34(%rbp), %eax
subl -0x70(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x74(%rbp)
cmpl $0x0, -0x74(%rbp)
jl 0x52b4
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
movl -0x84(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x52a4
movq -0x80(%rbp), %rax
movslq -0x84(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x528e
movq -0x40(%rbp), %rax
movslq -0x74(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x84(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x528e
movq -0x80(%rbp), %rax
movslq -0x84(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1fdb5(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movslq -0x74(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x84(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x80(%rbp), %rax
movslq -0x74(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x5290
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x5204
jmp 0x52a6
movl -0x74(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x51ee
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x5386
movl $0x0, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x5376
movq -0x80(%rbp), %rax
movslq -0x74(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x5360
movq -0x18(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x74(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x5360
movq -0x80(%rbp), %rax
movslq -0x74(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x1fcee(%rip), %rax     # 0x25010
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x18(%rbp), %rcx
movslq -0x88(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x74(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
movzbl (%rax,%rcx), %esi
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x38(%rbp), %rcx
movzbl (%rax,%rcx), %edx
xorl %esi, %edx
movb %dl, (%rax,%rcx)
jmp 0x5362
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x52d1
jmp 0x5378
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x52bb
jmp 0x5388
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x519c
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jge 0x53c1
movq -0x40(%rbp), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2030
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x539d
movq -0x40(%rbp), %rdi
callq 0x2030
movq -0x80(%rbp), %rdi
callq 0x2030
movl -0x70(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xa0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)