// File: /workspace/github_c_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, %rbx
movq %rsi, %r13
movq %rdi, %r14
movslq 0x8(%rcx), %r12
movl 0x10(%rcx), %ebp
movl %edx, 0x30(%rsp)
imull %edx, %ebp
addl 0xc(%rcx), %ebp
leaq (,%r12,8), %rdi
callq 0x21d0
movq %rax, %r15
movl %ebp, %eax
imull %r12d, %eax
movslq %eax, %rdi
callq 0x21d0
movq %r15, %r9
movq %r12, %rdi
movl %ebp, 0x14(%rsp)
movslq %ebp, %rsi
testq %r12, %r12
jle 0xb44e
xorl %edx, %edx
movq %rax, %rcx
movq %rcx, (%r9,%rdx,8)
incq %rdx
addq %rsi, %rcx
cmpq %rdx, %rdi
jne 0xb43f
movq %rax, 0x58(%rsp)
movq %rdi, 0x8(%rsp)
testl %edi, %edi
movq %r9, 0x20(%rsp)
movq %rsi, 0x48(%rsp)
jle 0xb4bb
xorl %r15d, %r15d
movl 0xc(%rbx), %edx
testl %edx, %edx
jle 0xb48f
movq (%r9,%r15,8), %rax
xorl %ecx, %ecx
movq (%rbx), %rdx
movq (%rdx,%r15,8), %rdx
movb (%rdx,%rcx), %dl
movb %dl, (%rax,%rcx)
incq %rcx
movslq 0xc(%rbx), %rdx
cmpq %rdx, %rcx
jl 0xb476
cmpl 0x14(%rsp), %edx
jge 0xb4b1
movslq %edx, %rdi
addq (%r9,%r15,8), %rdi
notl %edx
addl 0x14(%rsp), %edx
incq %rdx
xorl %esi, %esi
callq 0x2120
movq 0x20(%rsp), %r9
incq %r15
cmpq 0x8(%rsp), %r15
jne 0xb469
movl 0x30(%rsp), %eax
testl %eax, %eax
jle 0xb521
movl %eax, %ecx
xorl %esi, %esi
movq 0x18(%rbx), %rax
movslq (%r13,%rsi,4), %rdi
movl (%rax,%rdi,4), %r8d
movl 0x8(%rbx), %eax
cltd
idivl 0x10(%rbx)
cmpl %eax, %r8d
jge 0xb519
movl 0x10(%rbx), %edx
testl %edx, %edx
jle 0xb519
xorl %eax, %eax
movq 0x18(%rbx), %r8
movslq (%r8,%rdi,4), %r8
movslq %edx, %rdx
imulq %rdx, %r8
addq %rax, %r8
movq (%r9,%r8,8), %r8
imull %esi, %edx
addl 0xc(%rbx), %edx
addl %eax, %edx
movslq %edx, %rdx
movb $0x1, (%r8,%rdx)
movl 0x10(%rbx), %edx
incq %rax
cmpl %edx, %eax
jl 0xb4e9
incq %rsi
cmpq %rcx, %rsi
jne 0xb4c7
movslq 0xc(%rbx), %r15
movq 0x8(%rsp), %rax
cmpl %eax, %r15d
cmovll %r15d, %eax
movslq %eax, %rdi
shlq $0x2, %rdi
callq 0x21d0
movq %rax, 0x30(%rsp)
movq %r15, %rax
testq %r15, %r15
movq %r15, 0x28(%rsp)
jle 0xb6e8
movq 0x48(%rsp), %r11
leaq -0x1(%r11), %rcx
movq %rcx, 0x38(%rsp)
xorl %ebp, %ebp
leaq 0xdaa6(%rip), %r12      # 0x19010
xorl %ecx, %ecx
movq 0x20(%rsp), %r10
movl 0x14(%rsp), %r9d
movq 0x8(%rsp), %r8
cmpl %r8d, %ecx
jge 0xb6da
movslq %ecx, %rax
movq %rcx, %rsi
leaq (%r10,%rax,8), %rcx
movl %r8d, %edx
movq %rsi, 0x18(%rsp)
subl %esi, %edx
xorl %r15d, %r15d
movq (%rcx,%r15,8), %rsi
cmpb $0x0, (%rsi,%rbp)
jne 0xb5b7
incq %r15
cmpl %r15d, %edx
jne 0xb59b
movq 0x18(%rsp), %rcx
jmp 0xb6d0
testl %r15d, %r15d
je 0xb5c8
movq (%r10,%rax,8), %rdx
movq %rsi, (%r10,%rax,8)
movq %rdx, (%rcx,%r15,8)
movq 0x30(%rsp), %rcx
movl %ebp, (%rcx,%rax,4)
movq (%r10,%rax,8), %r13
movzbl (%r13,%rbp), %edi
callq 0x2537
movq 0x48(%rsp), %r11
cmpq %r11, %rbp
jge 0xb60c
movzbl %al, %eax
shll $0x8, %eax
movq %rbp, %rcx
movzbl (%r13,%rcx), %edx
leaq (%rax,%r12), %rsi
movb (%rdx,%rsi), %dl
movb %dl, (%r13,%rcx)
incq %rcx
cmpq %r11, %rcx
jl 0xb5f2
cmpl $0x0, 0x18(%rsp)
movq 0x20(%rsp), %r10
movl 0x14(%rsp), %r9d
jle 0xb667
movl 0x18(%rsp), %eax
xorl %ecx, %ecx
movq (%r10,%rcx,8), %rdx
cmpb $0x0, (%rdx,%rbp)
je 0xb65f
cmpq 0x38(%rsp), %rbp
jge 0xb65b
movq %rbp, %rsi
movzbl (%rdx,%rbp), %edi
movzbl 0x1(%r13,%rsi), %r8d
shll $0x8, %edi
addq %r12, %rdi
movb (%r8,%rdi), %dil
xorb %dil, 0x1(%rdx,%rsi)
incq %rsi
leal 0x1(%rsi), %edi
cmpl %edi, %r9d
jg 0xb637
movb $0x0, (%rdx,%rbp)
incq %rcx
cmpq %rax, %rcx
jne 0xb623
movq 0x18(%rsp), %rcx
movl %ecx, %eax
incl %ecx
movq %rcx, %r8
addl %r15d, %eax
incl %eax
cmpl 0x8(%rsp), %eax
jge 0xb6cd
addq %r8, %r15
movslq %r15d, %rax
movq (%r10,%rax,8), %rcx
cmpb $0x0, (%rcx,%rbp)
movq 0x8(%rsp), %r15
je 0xb6c5
cmpq 0x38(%rsp), %rbp
jge 0xb6c1
movq %rbp, %rdx
movzbl (%rcx,%rbp), %esi
movzbl 0x1(%r13,%rdx), %edi
shll $0x8, %esi
addq %r12, %rsi
movb (%rdi,%rsi), %sil
xorb %sil, 0x1(%rcx,%rdx)
incq %rdx
leal 0x1(%rdx), %esi
cmpl %esi, %r9d
jg 0xb69d
movb $0x0, (%rcx,%rbp)
incq %rax
cmpq %r15, %rax
jl 0xb684
movq %r8, %rcx
movq 0x28(%rsp), %rax
movq 0x8(%rsp), %r8
incq %rbp
cmpq %rax, %rbp
jne 0xb57b
jmp 0xb6fe
xorl %ecx, %ecx
movq 0x20(%rsp), %r10
movq 0x48(%rsp), %r11
movl 0x14(%rsp), %r9d
movq 0x8(%rsp), %r8
movl %ecx, %r15d
cmpl %r9d, %eax
movq %rcx, 0x18(%rsp)
jge 0xb8ad
leaq -0x1(%r11), %rdx
movq %rdx, 0x38(%rsp)
leaq 0xd8f1(%rip), %rbp      # 0x19010
movq %rax, %rdi
movl %ecx, %r13d
movq %rdi, %r12
incq %rdi
cmpl %r8d, %r13d
jge 0xb76d
movslq %edi, %rax
movq %rax, 0x50(%rsp)
movslq %r13d, %rax
leaq (%r10,%rax,8), %rcx
movl %r8d, %edx
subl %r13d, %edx
xorl %r15d, %r15d
movq (%rcx,%r15,8), %rsi
cmpb $0x0, (%rsi,%r12)
jne 0xb775
incq %r15
cmpl %r15d, %edx
jne 0xb748
movl %r13d, %r15d
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %r8
jmp 0xb8a1
movl %r13d, %r15d
jmp 0xb8a1
movq %rdi, 0x70(%rsp)
testl %r15d, %r15d
je 0xb78b
movq (%r10,%rax,8), %rdx
movq %rsi, (%r10,%rax,8)
movq %rdx, (%rcx,%r15,8)
movq %r13, 0x40(%rsp)
leal 0x1(%r13), %ecx
movq %rcx, 0x68(%rsp)
addq %r15, %rcx
movq %rcx, 0x60(%rsp)
movq (%r10,%rax,8), %r13
movzbl (%r13,%r12), %edi
callq 0x2537
movzbl %al, %eax
shll $0x8, %eax
movq %r12, %rcx
movq 0x48(%rsp), %r11
movzbl (%r13,%rcx), %edx
leaq (%rax,%rbp), %rsi
movb (%rdx,%rsi), %dl
movb %dl, (%r13,%rcx)
incq %rcx
cmpq %r11, %rcx
jl 0xb7be
cmpl $0x0, 0x40(%rsp)
movq 0x20(%rsp), %r10
movl 0x14(%rsp), %r9d
jle 0xb834
movl 0x40(%rsp), %eax
xorl %ecx, %ecx
movq (%r10,%rcx,8), %rdx
cmpb $0x0, (%rdx,%r12)
je 0xb82c
cmpq 0x38(%rsp), %r12
jge 0xb827
movq 0x50(%rsp), %rsi
movzbl (%rdx,%r12), %edi
movzbl (%r13,%rsi), %r8d
shll $0x8, %edi
addq %rbp, %rdi
movb (%r8,%rdi), %dil
xorb %dil, (%rdx,%rsi)
incq %rsi
cmpq %r11, %rsi
jl 0xb806
movb $0x0, (%rdx,%r12)
incq %rcx
cmpq %rax, %rcx
jne 0xb7ef
movq 0x40(%rsp), %rax
addl %r15d, %eax
incl %eax
movq 0x8(%rsp), %r8
cmpl %r8d, %eax
movq 0x68(%rsp), %r15
jge 0xb897
movslq 0x60(%rsp), %rax
movq (%r10,%rax,8), %rcx
cmpb $0x0, (%rcx,%r12)
je 0xb88f
cmpq 0x38(%rsp), %r12
jge 0xb88a
movq 0x50(%rsp), %rdx
movzbl (%rcx,%r12), %esi
movzbl (%r13,%rdx), %edi
shll $0x8, %esi
addq %rbp, %rsi
movb (%rdi,%rsi), %sil
xorb %sil, (%rcx,%rdx)
incq %rdx
cmpq %r11, %rdx
jl 0xb869
movb $0x0, (%rcx,%r12)
incq %rax
cmpq %r8, %rax
jl 0xb852
movq 0x18(%rsp), %rcx
movq 0x70(%rsp), %rdi
movl %r15d, %r13d
cmpl %edi, %r9d
jne 0xb725
movq %rcx, %rsi
leaq 0x26a01(%rip), %rcx     # 0x322b8
movl 0x10(%rbx), %eax
imull (%rcx), %eax
movq $0x0, 0x8(%rsp)
movl %esi, %ecx
movl %eax, %edx
cmpl %r15d, %esi
jge 0xba4b
movslq %esi, %rsi
movslq %r15d, %rdi
movq %rdi, 0x50(%rsp)
movq $0x0, 0x8(%rsp)
leaq 0xd722(%rip), %r8       # 0x19010
movq 0x28(%rsp), %rdi
cmpl %r9d, %edi
jge 0xba1e
movq %rsi, 0x40(%rsp)
movq (%r10,%rsi,8), %rsi
movq %rsi, 0x38(%rsp)
movl %r9d, %esi
movslq %edi, %r9
incl %edi
cmpl %edi, %esi
cmovgl %esi, %edi
movq %rdi, 0x28(%rsp)
movq 0x38(%rsp), %rsi
cmpb $0x0, (%rsi,%r9)
jne 0xba25
cmpl $0x0, 0x18(%rsp)
jle 0xba02
movslq 0x8(%rsp), %r11
xorl %r15d, %r15d
xorl %r12d, %r12d
movq (%r10,%r15,8), %r13
cmpb $0x0, (%r13,%r9)
je 0xb9e6
testb %r12b, %r12b
je 0xb99f
movb $0x1, %r12b
testl %eax, %eax
jle 0xb9e6
movq 0x30(%rsp), %rsi
movslq (%rsi,%r15,4), %rdi
xorl %esi, %esi
movzbl (%r13,%r9), %r10d
movq (%rbx), %rbp
movq (%rbp,%rsi,8), %rbp
movzbl (%rbp,%rdi), %ebp
shll $0x8, %r10d
addq %r8, %r10
movb (%rbp,%r10), %r10b
movq (%r14,%rsi,8), %rbp
xorb %r10b, (%rbp,%r11)
incq %rsi
cmpq %rsi, %rdx
jne 0xb96d
jmp 0xb9e1
movb $0x1, %r12b
testl %eax, %eax
jle 0xb9e6
movq 0x30(%rsp), %rsi
movslq (%rsi,%r15,4), %rdi
xorl %esi, %esi
movzbl (%r13,%r9), %r10d
movq (%rbx), %rbp
movq (%rbp,%rsi,8), %rbp
movzbl (%rbp,%rdi), %ebp
shll $0x8, %r10d
addq %r8, %r10
movb (%rbp,%r10), %r10b
movq (%r14,%rsi,8), %rbp
movb %r10b, (%rbp,%r11)
incq %rsi
cmpq %rsi, %rdx
jne 0xb9b1
movq 0x20(%rsp), %r10
incq %r15
cmpq %rcx, %r15
jne 0xb942
xorl %esi, %esi
testb %r12b, %r12b
setne %sil
movq 0x48(%rsp), %r11
jmp 0xba04
xorl %esi, %esi
movq 0x8(%rsp), %rdi
addl %esi, %edi
movq %rdi, 0x8(%rsp)
incq %r9
cmpq %r11, %r9
jl 0xb91c
jmp 0xba2a
movq %rdi, 0x28(%rsp)
jmp 0xba34
movq %r9, 0x28(%rsp)
movl 0x14(%rsp), %r9d
movq 0x40(%rsp), %rsi
movq 0x28(%rsp), %rdi
incl %edi
incq %rsi
cmpq 0x50(%rsp), %rsi
jne 0xb8f3
jmp 0xba50
movq 0x28(%rsp), %rdi
cmpl %r9d, %edi
jge 0xbb58
movslq %edi, %rsi
leaq 0xd5ad(%rip), %rdi      # 0x19010
movl $0x0, %r8d
cmpl $0x0, 0x18(%rsp)
jle 0xbb3f
movslq 0x8(%rsp), %r8
xorl %r9d, %r9d
xorl %r10d, %r10d
movq 0x20(%rsp), %r11
movq (%r11,%r9,8), %r11
cmpb $0x0, (%r11,%rsi)
je 0xbb24
testb %r10b, %r10b
je 0xbae1
movb $0x1, %r10b
testl %eax, %eax
jle 0xbb24
movq 0x30(%rsp), %r15
movslq (%r15,%r9,4), %r15
xorl %r12d, %r12d
movzbl (%r11,%rsi), %r13d
movq (%rbx), %rbp
movq (%rbp,%r12,8), %rbp
movzbl (%rbp,%r15), %ebp
shll $0x8, %r13d
addq %rdi, %r13
movb (%rbp,%r13), %bpl
movq (%r14,%r12,8), %r13
xorb %bpl, (%r13,%r8)
incq %r12
cmpq %r12, %rdx
jne 0xbaaf
jmp 0xbb24
movb $0x1, %r10b
testl %eax, %eax
jle 0xbb24
movq 0x30(%rsp), %r15
movslq (%r15,%r9,4), %r15
xorl %r12d, %r12d
movzbl (%r11,%rsi), %r13d
movq (%rbx), %rbp
movq (%rbp,%r12,8), %rbp
movzbl (%rbp,%r15), %ebp
shll $0x8, %r13d
addq %rdi, %r13
movb (%rbp,%r13), %bpl
movq (%r14,%r12,8), %r13
movb %bpl, (%r13,%r8)
incq %r12
cmpq %r12, %rdx
jne 0xbaf4
incq %r9
cmpq %rcx, %r9
jne 0xba7f
xorl %r8d, %r8d
testb %r10b, %r10b
setne %r8b
movq 0x48(%rsp), %r11
movq 0x8(%rsp), %r9
addl %r8d, %r9d
movq %r9, 0x8(%rsp)
incq %rsi
cmpq %r11, %rsi
jne 0xba63
movq 0x30(%rsp), %rdi
callq 0x2030
movq 0x20(%rsp), %rdi
callq 0x2030
movq 0x58(%rsp), %rdi
callq 0x2030
movq 0x8(%rsp), %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq