	.file	"fec.c"
gcc2_compiled.:
___gnu_compiled_c:
.data
	.align 2
	.type	 _allPp,@object
_allPp:
	.long 0
	.long 0
	.long LC0
	.long LC1
	.long LC2
	.long LC3
	.long LC4
	.long LC5
	.long LC6
	.long LC7
	.long LC8
	.long LC9
	.long LC10
	.long LC11
	.long LC12
	.long LC13
	.long LC14
.text
LC14:
	.ascii "11010000000010001\0"
LC13:
	.ascii "1100000000000001\0"
LC12:
	.ascii "110000100010001\0"
LC11:
	.ascii "11011000000001\0"
LC10:
	.ascii "1100101000001\0"
LC9:
	.ascii "101000000001\0"
LC8:
	.ascii "10010000001\0"
LC7:
	.ascii "1000100001\0"
LC6:
	.ascii "101110001\0"
LC5:
	.ascii "10010001\0"
LC4:
	.ascii "1100001\0"
LC3:
	.ascii "101001\0"
LC2:
	.ascii "11001\0"
LC1:
	.ascii "1101\0"
LC0:
	.ascii "111\0"
	.size	 _allPp,68
LC15:
	.ascii "-- malloc failure allocating %s\12\0"
	.align 2
	.type	 _my_malloc,@function
_my_malloc:
	pushl %ebp
	movl %esp,%ebp
	pushl 8(%ebp)
	call _malloc
	addl $4,%esp
	testl %eax,%eax
	jne L28
	pushl 12(%ebp)
	pushl $LC15
	pushl $___sF+176
	call _fprintf
	pushl $1
	call _exit
	.align 2,0x90
L28:
	leave
	ret
Lfe1:
	.size	 _my_malloc,Lfe1-_my_malloc
	.align 2
	.type	 _generate_gf,@function
_generate_gf:
	pushl %ebp
	movl %esp,%ebp
	pushl %esi
	pushl %ebx
	movl _allPp+64,%ebx
	movl $1,%ecx
	movw $0,_gf_exp+32
	xorl %edx,%edx
	.align 2,0x90
L33:
	movw %cx,_gf_exp(,%edx,2)
	movzwl %cx,%eax
	movl %edx,_gf_log(,%eax,4)
	cmpb $49,(%edx,%ebx)
	jne L32
	xorw %cx,_gf_exp+32
L32:
	incl %edx
	addw %cx,%cx
	cmpl $15,%edx
	jle L33
	movzwl _gf_exp+32,%eax
	movl $16,_gf_log(,%eax,4)
	movl $32768,%ecx
	movl $17,%edx
	.align 2,0x90
L39:
	cmpw %cx,_gf_exp-2(,%edx,2)
	jb L40
	movl %ecx,%eax
	xorw _gf_exp-2(,%edx,2),%ax
	addw %ax,%ax
	xorw _gf_exp+32,%ax
	movw %ax,_gf_exp(,%edx,2)
	jmp L41
	.align 2,0x90
L40:
	movw _gf_exp-2(,%edx,2),%si
	addw %si,%si
	movw %si,_gf_exp(,%edx,2)
L41:
	movzwl _gf_exp(,%edx,2),%eax
	movl %edx,_gf_log(,%eax,4)
	incl %edx
	cmpl $65534,%edx
	jle L39
	movl $65535,_gf_log
	xorl %edx,%edx
	.align 2,0x90
L46:
	movw _gf_exp(,%edx,2),%ax
	movw %ax,_gf_exp+131070(,%edx,2)
	incl %edx
	cmpl $65534,%edx
	jle L46
	movw $0,_inverse
	movw $1,_inverse+2
	movl $2,%edx
	.align 2,0x90
L51:
	movl $65535,%eax
	subl _gf_log(,%edx,4),%eax
	movw _gf_exp(,%eax,2),%ax
	movw %ax,_inverse(,%edx,2)
	incl %edx
	cmpl $65535,%edx
	jle L51
	leal -8(%ebp),%esp
	popl %ebx
	popl %esi
	leave
	ret
Lfe2:
	.size	 _generate_gf,Lfe2-_generate_gf
	.align 2
	.type	 _addmul1,@function
_addmul1:
	pushl %ebp
	movl %esp,%ebp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%edx
	movl 20(%ebp),%edi
	leal 0(,%edi,2),%eax
	/* DI free now */
	movl 12(%ebp),%edi
	leal -30(%edx,%eax),%esi
	movzwl 16(%ebp),%eax
	movl _gf_log(,%eax,4),%eax
	addl %eax,%eax
	leal _gf_exp(%eax),%ebx
	cmpl %esi,%edx
	jae L55
	.align 2,0x90
#define XYZ(n) \
	movzwl n(%edi),%eax ; \
	cmpl $0,%eax;  \
	je 1f;  \
	movl _gf_log(,%eax,4),%eax ; \
	movw (%ebx,%eax,2),%ax ; \
	xorw %ax,n(%edx) ; \
1: ;

#define XYZ2(n) \
	movl n(%edi),%eax ; \
	movzwl %ax, %ecx ; \
	cmpw $0,%ax;  \
	je 1f;  \
	movl _gf_log(,%ecx,4),%ecx ; \
	movw (%ebx,%ecx,2),%ax ; \
1: \
	roll $16, %eax ; \
	movzwl %ax, %ecx ; \
	cmpw $0,%ax;  \
	je 2f;  \
	movl _gf_log(,%ecx,4),%ecx ; \
	movw (%ebx,%ecx,2),%ax ; \
2: \
	roll $16, %eax ; \
	xorl %ax,n(%edx) ;
	

L57:
#if 0
	XYZ2(0)
	XYZ2(4)
	XYZ2(8)
	XYZ2(12)
	XYZ2(16)
	XYZ2(20)
	XYZ2(24)
	XYZ2(28)
#else
	XYZ(0)
	XYZ(2)
	XYZ(4)
	XYZ(6)
	XYZ(8)
	XYZ(10)
	XYZ(12)
	XYZ(14)
	XYZ(16)
	XYZ(18)
	XYZ(20)
	XYZ(22)
	XYZ(24)
	XYZ(26)
	XYZ(28)
	XYZ(30)
#endif
	addl $32,%edx
	addl $32,%edi
	cmpl %esi,%edx
	jb L57
L55:
	addl $30,%esi
	cmpl %esi,%edx
	jae L76
	.align 2,0x90
L78:
	XYZ(0) ;
	addl $2,%edx
	addl $2,%edi
	cmpl %esi,%edx
	jb L78
L76:
	leal -12(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe3:
	.size	 _addmul1,Lfe3-_addmul1
	.align 2
	.type	 _matmul,@function
_matmul:
	pushl %ebp
	movl %esp,%ebp
	subl $24,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl $0,-4(%ebp)
	movl 20(%ebp),%edx
	cmpl %edx,-4(%ebp)
	jge L83
	movl 28(%ebp),%esi
	addl %esi,%esi
	movl %esi,-16(%ebp)
	.align 2,0x90
L85:
	xorl %ebx,%ebx
	cmpl %ebx,28(%ebp)
	jle L84
	movl -4(%ebp),%eax
	imull 24(%ebp),%eax
	addl %eax,%eax
	movl %eax,-8(%ebp)
	.align 2,0x90
L89:
	movl 8(%ebp),%edi
	addl -8(%ebp),%edi
	movl 12(%ebp),%edx
	leal (%edx,%ebx,2),%edx
	movl %edx,-24(%ebp)
	movw $0,-12(%ebp)
	xorl %ecx,%ecx
	cmpl %ecx,24(%ebp)
	jle L91
	.align 2,0x90
L93:
	movzwl (%edi),%esi
	movl %esi,-20(%ebp)
	movl -24(%ebp),%edx
	movzwl (%edx),%eax
	testl %esi,%esi
	je L96
	testl %eax,%eax
	jne L95
L96:
	xorl %eax,%eax
	jmp L94
	.align 2,0x90
L95:
	movl -20(%ebp),%esi
	movl _gf_log(,%esi,4),%esi
	addl _gf_log(,%eax,4),%esi
	movl %esi,%eax
	movw _gf_exp(,%eax,2),%ax
L94:
	xorw %ax,-12(%ebp)
	incl %ecx
	addl $2,%edi
	movl -16(%ebp),%edx
	addl %edx,-24(%ebp)
	cmpl %ecx,24(%ebp)
	jg L93
L91:
	movl -4(%ebp),%eax
	imull 28(%ebp),%eax
	addl %ebx,%eax
	movw -12(%ebp),%dx
	movl 16(%ebp),%esi
	movw %dx,(%esi,%eax,2)
	incl %ebx
	cmpl %ebx,28(%ebp)
	jg L89
L84:
	incl -4(%ebp)
	movl 20(%ebp),%esi
	cmpl %esi,-4(%ebp)
	jl L85
L83:
	leal -36(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe4:
	.size	 _matmul,Lfe4-_matmul
LC16:
	.ascii "indxc\0"
LC17:
	.ascii "indxr\0"
LC18:
	.ascii "ipiv\0"
LC19:
	.ascii " ## __LINE__ ## \0"
LC20:
	.ascii "singular matrix\12\0"
LC21:
	.ascii "XXX pivot not found!\12\0"
LC22:
	.ascii "singular matrix 2\12\0"
LC23:
	.ascii "AARGH, indxr[col] %d\12\0"
LC24:
	.ascii "AARGH, indxc[col] %d\12\0"
	.align 2
	.type	 _invert_mat,@function
_invert_mat:
	pushl %ebp
	movl %esp,%ebp
	subl $52,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl $1,-16(%ebp)
	pushl $LC16
	movl 12(%ebp),%edx
	sall $2,%edx
	movl %edx,-52(%ebp)
	pushl %edx
	call _my_malloc
	movl %eax,-20(%ebp)
	pushl $LC17
	pushl -52(%ebp)
	call _my_malloc
	movl %eax,-24(%ebp)
	pushl $LC18
	pushl -52(%ebp)
	call _my_malloc
	movl %eax,-28(%ebp)
	pushl $LC19
	movl 12(%ebp),%ecx
	addl %ecx,%ecx
	movl %ecx,-52(%ebp)
	pushl %ecx
	call _my_malloc
	movl %eax,-32(%ebp)
	addl $32,%esp
	pushl $LC19
	pushl -52(%ebp)
	call _my_malloc
	movl %eax,-36(%ebp)
	pushl -52(%ebp)
	pushl -32(%ebp)
	call _bzero
	xorl %eax,%eax
	addl $16,%esp
	cmpl %eax,12(%ebp)
	jle L102
	.align 2,0x90
L104:
	movl -28(%ebp),%ebx
	movl $0,(%ebx,%eax,4)
	incl %eax
	cmpl %eax,12(%ebp)
	jg L104
L102:
	movl $0,-12(%ebp)
	movl 12(%ebp),%edx
	cmpl %edx,-12(%ebp)
	jge L107
	.align 2,0x90
L109:
	movl $-1,-8(%ebp)
	movl $-1,-4(%ebp)
	movl -12(%ebp),%ecx
	movl -28(%ebp),%ebx
	cmpl $1,(%ebx,%ecx,4)
	je L110
	movl %ecx,%eax
	imull 12(%ebp),%eax
	addl %ecx,%eax
	movl 8(%ebp),%edx
	cmpw $0,(%edx,%eax,2)
	je L110
	movl %ecx,-4(%ebp)
	movl %ecx,-8(%ebp)
	jmp L111
	.align 2,0x90
L110:
	xorl %edi,%edi
	cmpl %edi,12(%ebp)
	jle L113
	.align 2,0x90
L115:
	movl -28(%ebp),%ecx
	cmpl $1,(%ecx,%edi,4)
	je L114
	xorl %esi,%esi
	cmpl %esi,12(%ebp)
	jle L114
	.align 2,0x90
L120:
	movl -28(%ebp),%ebx
	cmpl $0,(%ebx,%esi,4)
	jne L121
	movl 12(%ebp),%eax
	imull %edi,%eax
	addl %esi,%eax
	movl 8(%ebp),%edx
	cmpw $0,(%edx,%eax,2)
	je L119
	movl %edi,-4(%ebp)
	movl %esi,-8(%ebp)
	jmp L111
	.align 2,0x90
L121:
	movl -28(%ebp),%ecx
	cmpl $1,(%ecx,%esi,4)
	jle L119
	pushl $LC20
	jmp L171
	.align 2,0x90
L119:
	incl %esi
	cmpl %esi,12(%ebp)
	jg L120
L114:
	incl %edi
	cmpl %edi,12(%ebp)
	jg L115
L113:
	cmpl $-1,-8(%ebp)
	jne L111
	pushl $LC21
	jmp L171
	.align 2,0x90
L111:
	movl -8(%ebp),%ebx
	movl -28(%ebp),%edx
	incl (%edx,%ebx,4)
	cmpl %ebx,-4(%ebp)
	je L129
	xorl %esi,%esi
	cmpl %esi,12(%ebp)
	jle L129
	movl -4(%ebp),%ecx
	imull 12(%ebp),%ecx
	movl %ecx,-40(%ebp)
	movl -8(%ebp),%edi
	imull 12(%ebp),%edi
	.align 2,0x90
L133:
	movl -40(%ebp),%ebx
	addl %esi,%ebx
	movl %ebx,-44(%ebp)
	movl 8(%ebp),%edx
	movw (%edx,%ebx,2),%dx
	movw %dx,-52(%ebp)
	leal (%esi,%edi),%ecx
	movl 8(%ebp),%ebx
	movw (%ebx,%ecx,2),%ax
	movl -44(%ebp),%edx
	movw %ax,(%ebx,%edx,2)
	movw -52(%ebp),%dx
	movw %dx,(%ebx,%ecx,2)
	incl %esi
	cmpl %esi,12(%ebp)
	jg L133
L129:
	movl -4(%ebp),%edx
	movl -12(%ebp),%ecx
	movl -24(%ebp),%ebx
	movl %edx,(%ebx,%ecx,4)
	movl -8(%ebp),%ebx
	movl -20(%ebp),%edx
	movl %ebx,(%edx,%ecx,4)
	movl -8(%ebp),%eax
	imull 12(%ebp),%eax
	movl 8(%ebp),%ecx
	leal (%ecx,%eax,2),%edi
	movw (%edi,%ebx,2),%ax
	testw %ax,%ax
	jne L135
	pushl $LC22
L171:
	pushl $___sF+176
	call _fprintf
	addl $8,%esp
	jmp L125
	.align 2,0x90
L135:
	cmpw $1,%ax
	je L136
	andl $65535,%eax
	movw _inverse(,%eax,2),%ax
	movl -8(%ebp),%ebx
	movw $1,(%edi,%ebx,2)
	xorl %esi,%esi
	cmpl %esi,12(%ebp)
	jle L136
	andl $65535,%eax
	movl %eax,-52(%ebp)
	.align 2,0x90
L140:
	movzwl (%edi,%esi,2),%eax
	cmpl $0,-52(%ebp)
	je L143
	testl %eax,%eax
	jne L142
L143:
	xorl %eax,%eax
	jmp L141
	.align 2,0x90
L142:
	movl -52(%ebp),%edx
	movl _gf_log(,%edx,4),%edx
	addl _gf_log(,%eax,4),%edx
	movl %edx,%eax
	movw _gf_exp(,%eax,2),%ax
L141:
	movw %ax,(%edi,%esi,2)
	incl %esi
	cmpl %esi,12(%ebp)
	jg L140
L136:
	movl -8(%ebp),%ecx
	movl -32(%ebp),%ebx
	movw $1,(%ebx,%ecx,2)
	movl 12(%ebp),%eax
	addl %eax,%eax
	pushl %eax
	pushl %ebx
	pushl %edi
	call _bcmp
	addl $12,%esp
	testl %eax,%eax
	je L145
	movl 8(%ebp),%edx
	movl %edx,-52(%ebp)
	xorl %esi,%esi
	cmpl %esi,12(%ebp)
	jle L145
	.align 2,0x90
L149:
	cmpl %esi,-8(%ebp)
	je L148
	movl -8(%ebp),%ecx
	movl -52(%ebp),%ebx
	movw (%ebx,%ecx,2),%ax
	movw $0,(%ebx,%ecx,2)
	testw %ax,%ax
	je L148
	pushl 12(%ebp)
	andl $65535,%eax
	pushl %eax
	pushl %edi
	pushl %ebx
	call _addmul1
	addl $16,%esp
L148:
	incl %esi
	movl -52(%ebp),%ecx
	movl 12(%ebp),%edx
	leal (%ecx,%edx,2),%ecx
	movl %ecx,-52(%ebp)
	cmpl %edx,%esi
	jl L149
L145:
	movl -8(%ebp),%ebx
	movl -32(%ebp),%edx
	movw $0,(%edx,%ebx,2)
	incl -12(%ebp)
	movl 12(%ebp),%ecx
	cmpl %ecx,-12(%ebp)
	jl L109
L107:
	movl 12(%ebp),%ebx
	decl %ebx
	movl %ebx,-12(%ebp)
	js L155
	.align 2,0x90
L157:
	movl -12(%ebp),%edx
	movl -24(%ebp),%ecx
	cmpl $0,(%ecx,%edx,4)
	jl L159
	movl 12(%ebp),%ebx
	cmpl %ebx,(%ecx,%edx,4)
	jl L158
L159:
	movl -12(%ebp),%edx
	movl -24(%ebp),%ecx
	pushl (%ecx,%edx,4)
	pushl $LC23
	jmp L172
	.align 2,0x90
L158:
	movl -12(%ebp),%ebx
	movl -20(%ebp),%edx
	cmpl $0,(%edx,%ebx,4)
	jl L162
	movl 12(%ebp),%ecx
	cmpl %ecx,(%edx,%ebx,4)
	jl L161
L162:
	movl -12(%ebp),%ebx
	movl -20(%ebp),%edx
	pushl (%edx,%ebx,4)
	pushl $LC24
L172:
	pushl $___sF+176
	call _fprintf
	addl $12,%esp
	jmp L156
	.align 2,0x90
L161:
	movl -12(%ebp),%ecx
	movl -24(%ebp),%ebx
	movl (%ebx,%ecx,4),%eax
	movl -20(%ebp),%edx
	cmpl %eax,(%edx,%ecx,4)
	je L156
	xorl %edi,%edi
	cmpl %edi,12(%ebp)
	jle L156
	.align 2,0x90
L168:
	movl 12(%ebp),%ecx
	imull %edi,%ecx
	movl %ecx,-48(%ebp)
	movl -12(%ebp),%ebx
	movl -24(%ebp),%edx
	addl (%edx,%ebx,4),%ecx
	movl %ecx,-44(%ebp)
	movl 8(%ebp),%ebx
	movw (%ebx,%ecx,2),%bx
	movw %bx,-52(%ebp)
	movl -48(%ebp),%eax
	movl -12(%ebp),%edx
	movl -20(%ebp),%ecx
	addl (%ecx,%edx,4),%eax
	movl 8(%ebp),%ebx
	movw (%ebx,%eax,2),%ax
	movl -44(%ebp),%edx
	movw %ax,(%ebx,%edx,2)
	movl -48(%ebp),%edx
	movl -12(%ebp),%ebx
	addl (%ecx,%ebx,4),%edx
	movw -52(%ebp),%bx
	movl 8(%ebp),%ecx
	movw %bx,(%ecx,%edx,2)
	incl %edi
	cmpl %edi,12(%ebp)
	jg L168
L156:
	decl -12(%ebp)
	jns L157
L155:
	movl $0,-16(%ebp)
L125:
	pushl -20(%ebp)
	call _free
	pushl -24(%ebp)
	call _free
	pushl -28(%ebp)
	call _free
	pushl -32(%ebp)
	call _free
	pushl -36(%ebp)
	call _free
	movl -16(%ebp),%eax
	leal -64(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe5:
	.size	 _invert_mat,Lfe5-_invert_mat
	.align 2
.globl _invert_vdm
	.type	 _invert_vdm,@function
_invert_vdm:
	pushl %ebp
	movl %esp,%ebp
	subl $36,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 12(%ebp),%edi
	cmpl $1,%edi
	je L218
	pushl $LC19
	leal (%edi,%edi),%ebx
	pushl %ebx
	call _my_malloc
	movl %eax,-12(%ebp)
	pushl $LC19
	pushl %ebx
	call _my_malloc
	movl %eax,-8(%ebp)
	pushl $LC19
	pushl %ebx
	call _my_malloc
	movl %eax,-16(%ebp)
	movl $1,%edx
	xorl %ecx,%ecx
	addl $24,%esp
	cmpl %edi,%ecx
	jge L176
	.align 2,0x90
L178:
	movl -12(%ebp),%ebx
	movw $0,(%ebx,%ecx,2)
	movl 8(%ebp),%esi
	movw (%esi,%edx,2),%ax
	movl -16(%ebp),%ebx
	movw %ax,(%ebx,%ecx,2)
	incl %ecx
	addl %edi,%edx
	cmpl %edi,%ecx
	jl L178
L176:
	movl -16(%ebp),%esi
	movw (%esi),%ax
	movl -12(%ebp),%ebx
	movw %ax,-2(%ebx,%edi,2)
	movl $1,%ecx
	cmpl %edi,%ecx
	jge L181
	leal -1(%edi),%esi
	movl %esi,-24(%ebp)
	.align 2,0x90
L183:
	movl -16(%ebp),%ebx
	movw (%ebx,%ecx,2),%bx
	movw %bx,-20(%ebp)
	movl %edi,%edx
	subl %ecx,%edx
	cmpl %edx,-24(%ebp)
	jle L185
	movzwl %bx,%esi
	movl %esi,-36(%ebp)
	leal -1(%edi),%ebx
	movl %ebx,-32(%ebp)
	.align 2,0x90
L187:
	movl -12(%ebp),%esi
	movzwl 2(%esi,%edx,2),%eax
	cmpl $0,-36(%ebp)
	je L190
	testl %eax,%eax
	jne L189
L190:
	xorl %eax,%eax
	jmp L188
	.align 2,0x90
L189:
	movl -36(%ebp),%ebx
	movl _gf_log(,%ebx,4),%ebx
	addl _gf_log(,%eax,4),%ebx
	movl %ebx,%eax
	movw _gf_exp(,%eax,2),%ax
L188:
	movl -12(%ebp),%esi
	xorw %ax,(%esi,%edx,2)
	incl %edx
	cmpl %edx,-32(%ebp)
	jg L187
L185:
	movw -20(%ebp),%si
	movl -12(%ebp),%ebx
	xorw %si,-2(%ebx,%edi,2)
	incl %ecx
	cmpl %edi,%ecx
	jl L183
L181:
	movl $0,-4(%ebp)
	cmpl %edi,-4(%ebp)
	jge L194
	.align 2,0x90
L196:
	movl -4(%ebp),%ebx
	movl -16(%ebp),%esi
	movw (%esi,%ebx,2),%ax
	movw $1,-28(%ebp)
	movl -8(%ebp),%ebx
	movw $1,-2(%ebx,%edi,2)
	leal -2(%edi),%ecx
	testl %ecx,%ecx
	jl L198
	andl $65535,%eax
	movl %eax,-36(%ebp)
	.align 2,0x90
L200:
	movl -8(%ebp),%esi
	movzwl 2(%esi,%ecx,2),%eax
	cmpl $0,-36(%ebp)
	je L203
	testl %eax,%eax
	jne L202
L203:
	xorl %eax,%eax
	jmp L201
	.align 2,0x90
L202:
	movl -36(%ebp),%ebx
	movl _gf_log(,%ebx,4),%ebx
	addl _gf_log(,%eax,4),%ebx
	movl %ebx,%eax
	movw _gf_exp(,%eax,2),%ax
L201:
	movl -12(%ebp),%esi
	xorw 2(%esi,%ecx,2),%ax
	movl -8(%ebp),%esi
	movw %ax,(%esi,%ecx,2)
	movl -36(%ebp),%edx
	movzwl -28(%ebp),%eax
	testl %edx,%edx
	je L206
	testl %eax,%eax
	jne L205
L206:
	xorl %eax,%eax
	jmp L204
	.align 2,0x90
L205:
	movl _gf_log(,%edx,4),%edx
	addl _gf_log(,%eax,4),%edx
	movl %edx,%eax
	movw _gf_exp(,%eax,2),%ax
L204:
	movl -8(%ebp),%ebx
	xorw (%ebx,%ecx,2),%ax
	movw %ax,-28(%ebp)
	decl %ecx
	jns L200
L198:
	xorl %ecx,%ecx
	cmpl %edi,%ecx
	jge L195
	movzwl -28(%ebp),%esi
	movl %esi,-36(%ebp)
	.align 2,0x90
L211:
	movl -36(%ebp),%ebx
	movzwl _inverse(,%ebx,2),%edx
	movl -8(%ebp),%esi
	movzwl (%esi,%ecx,2),%eax
	testl %edx,%edx
	je L214
	testl %eax,%eax
	jne L213
L214:
	xorl %edx,%edx
	jmp L212
	.align 2,0x90
L213:
	movl _gf_log(,%edx,4),%edx
	addl _gf_log(,%eax,4),%edx
	movl %edx,%eax
	movw _gf_exp(,%eax,2),%dx
L212:
	movl %ecx,%eax
	imull %edi,%eax
	addl -4(%ebp),%eax
	movl 8(%ebp),%ebx
	movw %dx,(%ebx,%eax,2)
	incl %ecx
	cmpl %edi,%ecx
	jl L211
L195:
	incl -4(%ebp)
	cmpl %edi,-4(%ebp)
	jl L196
L194:
	pushl -12(%ebp)
	call _free
	pushl -8(%ebp)
	call _free
	pushl -16(%ebp)
	call _free
L218:
	xorl %eax,%eax
	leal -48(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe6:
	.size	 _invert_vdm,Lfe6-_invert_vdm
.data
	.align 2
	.type	 _fec_initialized,@object
	.size	 _fec_initialized,4
_fec_initialized:
	.long 0
.text
	.align 2
	.type	 _init_fec,@function
_init_fec:
	pushl %ebp
	movl %esp,%ebp
	call _generate_gf
	movl $1,_fec_initialized
	leave
	ret
Lfe7:
	.size	 _init_fec,Lfe7-_init_fec
LC25:
	.ascii "bad parameters to fec_free\12\0"
	.align 2
.globl _fec_free
	.type	 _fec_free,@function
_fec_free:
	pushl %ebp
	movl %esp,%ebp
	pushl %ebx
	movl 8(%ebp),%ebx
	testl %ebx,%ebx
	je L222
	movl 8(%ebx),%eax
	xorl $-20181524,%eax
	xorl 4(%ebx),%eax
	xorl 12(%ebx),%eax
	cmpl %eax,(%ebx)
	je L221
L222:
	pushl $LC25
	pushl $___sF+176
	call _fprintf
	jmp L220
	.align 2,0x90
L221:
	pushl 12(%ebx)
	call _free
	pushl %ebx
	call _free
L220:
	movl -4(%ebp),%ebx
	leave
	ret
Lfe8:
	.size	 _fec_free,Lfe8-_fec_free
LC26:
	.ascii "Invalid parameters k %d n %d GF_SIZE %d\12\0"
LC27:
	.ascii "new_code\0"
	.align 2
.globl _fec_new
	.type	 _fec_new,@function
_fec_new:
	pushl %ebp
	movl %esp,%ebp
	subl $20,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%edi
	cmpl $0,_fec_initialized
	jne L224
	call _init_fec
L224:
	cmpl $65536,%edi
	jg L226
	cmpl $65536,12(%ebp)
	jg L226
	cmpl %edi,12(%ebp)
	jge L225
L226:
	pushl $65535
	pushl 12(%ebp)
	pushl %edi
	pushl $LC26
	pushl $___sF+176
	call _fprintf
	xorl %eax,%eax
	jmp L252
	.align 2,0x90
L225:
	pushl $LC27
	pushl $16
	call _my_malloc
	movl %eax,-8(%ebp)
	movl %edi,4(%eax)
	movl 12(%ebp),%esi
	movl -8(%ebp),%edx
	movl %esi,8(%edx)
	pushl $LC19
	movl 12(%ebp),%ebx
	imull %edi,%ebx
	addl %ebx,%ebx
	pushl %ebx
	call _my_malloc
	movl -8(%ebp),%edx
	movl %eax,12(%edx)
	movl 12(%ebp),%eax
	xorl $-20181524,%eax
	xorl %edi,%eax
	movl -8(%ebp),%edx
	xorl 12(%edx),%eax
	movl %eax,(%edx)
	pushl $LC19
	pushl %ebx
	call _my_malloc
	movl %eax,-4(%ebp)
	movw $1,(%eax)
	movl $1,%ecx
	addl $24,%esp
	cmpl %edi,%ecx
	jge L228
	.align 2,0x90
L230:
	movl -4(%ebp),%esi
	movw $0,(%esi,%ecx,2)
	incl %ecx
	cmpl %edi,%ecx
	jl L230
L228:
	movl -4(%ebp),%edx
	leal (%edx,%edi,2),%edx
	movl %edx,-20(%ebp)
	xorl %ebx,%ebx
	movl 12(%ebp),%eax
	decl %eax
	cmpl %eax,%ebx
	jge L233
	leal (%edi,%edi),%esi
	movl %esi,-16(%ebp)
	movl 12(%ebp),%edx
	decl %edx
	movl %edx,-12(%ebp)
	.align 2,0x90
L235:
	xorl %ecx,%ecx
	cmpl %edi,%ecx
	jge L234
	.align 2,0x90
L239:
	movl %ebx,%eax
	imull %ecx,%eax
	cmpl $65534,%eax
	jle L242
	.align 2,0x90
L243:
	addl $-65535,%eax
	movl %eax,%edx
	sarl $16,%edx
	andl $65535,%eax
	addl %edx,%eax
	cmpl $65534,%eax
	jg L243
L242:
	andl $65535,%eax
	movw _gf_exp(,%eax,2),%ax
	movl -20(%ebp),%esi
	movw %ax,(%esi,%ecx,2)
	incl %ecx
	cmpl %edi,%ecx
	jl L239
L234:
	incl %ebx
	movl -16(%ebp),%edx
	addl %edx,-20(%ebp)
	cmpl %ebx,-12(%ebp)
	jg L235
L233:
	pushl %edi
	pushl -4(%ebp)
	call _invert_vdm
	pushl %edi
	pushl %edi
	movl 12(%ebp),%eax
	subl %edi,%eax
	pushl %eax
	movl %edi,%ebx
	imull %edi,%ebx
	addl %ebx,%ebx
	movl %ebx,%eax
	movl -8(%ebp),%esi
	addl 12(%esi),%eax
	pushl %eax
	pushl -4(%ebp)
	movl -4(%ebp),%eax
	addl %ebx,%eax
	pushl %eax
	call _matmul
	addl $32,%esp
	pushl %ebx
	pushl 12(%esi)
	call _bzero
	movl 12(%esi),%edx
	movl %edx,-20(%ebp)
	xorl %ecx,%ecx
	addl $8,%esp
	cmpl %edi,%ecx
	jge L248
	leal 2(,%edi,2),%eax
	.align 2,0x90
L250:
	movl -20(%ebp),%esi
	movw $1,(%esi)
	incl %ecx
	addl %eax,%esi
	movl %esi,-20(%ebp)
	cmpl %edi,%ecx
	jl L250
L248:
	pushl -4(%ebp)
	call _free
	movl -8(%ebp),%eax
L252:
	leal -32(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe9:
	.size	 _fec_new,Lfe9-_fec_new
LC28:
	.ascii "Invalid index %d (max %d)\12\0"
	.align 2
.globl _fec_encode
	.type	 _fec_encode,@function
_fec_encode:
	pushl %ebp
	movl %esp,%ebp
	subl $4,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%ebx
	movl 20(%ebp),%edx
	movl 4(%ebx),%ecx
	movl %ecx,-4(%ebp)
	movl 24(%ebp),%eax
	shrl $31,%eax
	addl 24(%ebp),%eax
	movl %eax,%esi
	sarl $1,%esi
	cmpl %ecx,%edx
	jge L255
	leal (%esi,%esi),%eax
	pushl %eax
	pushl 16(%ebp)
	movl 12(%ebp),%ecx
	pushl (%ecx,%edx,4)
	call _bcopy
	jmp L256
	.align 2,0x90
L255:
	cmpl %edx,8(%ebx)
	jle L257
	movl -4(%ebp),%eax
	imull %edx,%eax
	addl %eax,%eax
	movl %eax,%edi
	addl 12(%ebx),%edi
	leal (%esi,%esi),%eax
	pushl %eax
	pushl 16(%ebp)
	call _bzero
	xorl %ebx,%ebx
	addl $8,%esp
	cmpl %ebx,-4(%ebp)
	jle L256
	.align 2,0x90
L261:
	cmpw $0,(%edi,%ebx,2)
	je L260
	pushl %esi
	movzwl (%edi,%ebx,2),%eax
	pushl %eax
	movl 12(%ebp),%ecx
	pushl (%ecx,%ebx,4)
	pushl 16(%ebp)
	call _addmul1
	addl $16,%esp
L260:
	incl %ebx
	cmpl %ebx,-4(%ebp)
	jg L261
	jmp L256
	.align 2,0x90
L257:
	movl 8(%ebx),%eax
	decl %eax
	pushl %eax
	pushl %edx
	pushl $LC28
	pushl $___sF+176
	call _fprintf
L256:
	leal -16(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe10:
	.size	 _fec_encode,Lfe10-_fec_encode
	.align 2
	.type	 _shuffle,@function
_shuffle:
	pushl %ebp
	movl %esp,%ebp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%edi
	movl 12(%ebp),%esi
	xorl %ecx,%ecx
L276:
	cmpl %ecx,16(%ebp)
	jle L267
	movl 16(%ebp),%edx
	cmpl %edx,(%esi,%ecx,4)
	jge L271
	cmpl %ecx,(%esi,%ecx,4)
	jne L270
L271:
	incl %ecx
	jmp L276
	.align 2,0x90
L270:
	movl (%esi,%ecx,4),%ebx
	cmpl %ebx,(%esi,%ebx,4)
	jne L273
	movl $1,%eax
	jmp L275
	.align 2,0x90
L273:
	movl (%esi,%ecx,4),%edx
	movl (%esi,%ebx,4),%eax
	movl %eax,(%esi,%ecx,4)
	movl %edx,(%esi,%ebx,4)
	movl (%edi,%ecx,4),%edx
	movl (%edi,%ebx,4),%eax
	movl %eax,(%edi,%ecx,4)
	movl %edx,(%edi,%ebx,4)
	jmp L276
	.align 2,0x90
L267:
	xorl %eax,%eax
L275:
	leal -12(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe11:
	.size	 _shuffle,Lfe11-_shuffle
LC29:
	.ascii "decode: invalid index %d (max %d)\12\0"
	.align 2
	.type	 _build_decode_matrix,@function
_build_decode_matrix:
	pushl %ebp
	movl %esp,%ebp
	subl $8,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%ecx
	movl 4(%ecx),%edi
	pushl $LC19
	movl %edi,%eax
	imull %edi,%eax
	addl %eax,%eax
	pushl %eax
	call _my_malloc
	movl %eax,-4(%ebp)
	xorl %ebx,%ebx
	movl -4(%ebp),%esi
	addl $8,%esp
	cmpl %edi,%ebx
	jge L279
	leal (%edi,%edi),%ecx
	movl %ecx,-8(%ebp)
	.align 2,0x90
L281:
	movl 16(%ebp),%ecx
	cmpl %edi,(%ecx,%ebx,4)
	jge L282
	pushl -8(%ebp)
	pushl %esi
	call _bzero
	movw $1,(%esi,%ebx,2)
	addl $8,%esp
	jmp L280
	.align 2,0x90
L282:
	movl 16(%ebp),%ecx
	movl (%ecx,%ebx,4),%edx
	movl 8(%ebp),%ecx
	cmpl %edx,8(%ecx)
	jg L284
	movl 8(%ecx),%eax
	decl %eax
	pushl %eax
	pushl %edx
	pushl $LC29
	pushl $___sF+176
	call _fprintf
	pushl -4(%ebp)
	call _free
	xorl %eax,%eax
	jmp L288
	.align 2,0x90
L284:
	pushl -8(%ebp)
	pushl %esi
	movl %edi,%eax
	movl 16(%ebp),%ecx
	imull (%ecx,%ebx,4),%eax
	addl %eax,%eax
	movl 8(%ebp),%ecx
	addl 12(%ecx),%eax
	pushl %eax
	call _bcopy
	addl $12,%esp
L280:
	incl %ebx
	addl -8(%ebp),%esi
	cmpl %edi,%ebx
	jl L281
L279:
	pushl %edi
	pushl -4(%ebp)
	call _invert_mat
	addl $8,%esp
	testl %eax,%eax
	je L287
	pushl -4(%ebp)
	call _free
	movl $0,-4(%ebp)
L287:
	movl -4(%ebp),%eax
L288:
	leal -20(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe12:
	.size	 _build_decode_matrix,Lfe12-_build_decode_matrix
LC30:
	.ascii "new pkt pointers\0"
LC31:
	.ascii "new pkt buffer\0"
	.align 2
.globl _fec_decode
	.type	 _fec_decode,@function
_fec_decode:
	pushl %ebp
	movl %esp,%ebp
	subl $20,%esp
	pushl %edi
	pushl %esi
	pushl %ebx
	movl 8(%ebp),%ebx
	movl 4(%ebx),%edi
	movl 20(%ebp),%eax
	shrl $31,%eax
	addl 20(%ebp),%eax
	sarl $1,%eax
	movl %eax,-4(%ebp)
	pushl %edi
	pushl 16(%ebp)
	pushl 12(%ebp)
	call _shuffle
	addl $12,%esp
	testl %eax,%eax
	jne L312
	pushl 16(%ebp)
	pushl 12(%ebp)
	pushl %ebx
	call _build_decode_matrix
	movl %eax,-8(%ebp)
	addl $12,%esp
	testl %eax,%eax
	jne L292
L312:
	movl $1,%eax
	jmp L311
	.align 2,0x90
L292:
	pushl $LC30
	leal 0(,%edi,4),%eax
	pushl %eax
	call _my_malloc
	movl %eax,-12(%ebp)
	xorl %esi,%esi
	addl $8,%esp
	cmpl %edi,%esi
	jge L294
	movl -4(%ebp),%edx
	addl %edx,%edx
	movl %edx,-16(%ebp)
	.align 2,0x90
L296:
	movl 16(%ebp),%edx
	cmpl %edi,(%edx,%esi,4)
	jl L295
	pushl $LC31
	pushl -16(%ebp)
	call _my_malloc
	movl -12(%ebp),%edx
	movl %eax,(%edx,%esi,4)
	pushl -16(%ebp)
	pushl %eax
	call _bzero
	xorl %ebx,%ebx
	addl $16,%esp
	cmpl %edi,%ebx
	jge L295
	movl %esi,%edx
	imull %edi,%edx
	movl %edx,-20(%ebp)
	.align 2,0x90
L301:
	movl -20(%ebp),%eax
	addl %ebx,%eax
	movl -8(%ebp),%edx
	cmpw $0,(%edx,%eax,2)
	je L300
	pushl -4(%ebp)
	movzwl (%edx,%eax,2),%eax
	pushl %eax
	movl 12(%ebp),%edx
	pushl (%edx,%ebx,4)
	movl -12(%ebp),%edx
	pushl (%edx,%esi,4)
	call _addmul1
	addl $16,%esp
L300:
	incl %ebx
	cmpl %edi,%ebx
	jl L301
L295:
	incl %esi
	cmpl %edi,%esi
	jl L296
L294:
	xorl %esi,%esi
	cmpl %edi,%esi
	jge L306
	movl -4(%ebp),%ebx
	addl %ebx,%ebx
	.align 2,0x90
L308:
	movl 16(%ebp),%edx
	cmpl %edi,(%edx,%esi,4)
	jl L307
	pushl %ebx
	movl 12(%ebp),%edx
	pushl (%edx,%esi,4)
	movl -12(%ebp),%edx
	pushl (%edx,%esi,4)
	call _bcopy
	movl -12(%ebp),%edx
	pushl (%edx,%esi,4)
	call _free
	addl $16,%esp
L307:
	incl %esi
	cmpl %edi,%esi
	jl L308
L306:
	pushl -12(%ebp)
	call _free
	pushl -8(%ebp)
	call _free
	xorl %eax,%eax
L311:
	leal -32(%ebp),%esp
	popl %ebx
	popl %esi
	popl %edi
	leave
	ret
Lfe13:
	.size	 _fec_decode,Lfe13-_fec_decode
.lcomm _gf_exp,262140
.lcomm _gf_log,262144
.lcomm _inverse,131072
