	.file	"111079224.c"
	.intel_syntax noprefix
	.text
	.globl	gadd
	.type	gadd, @function
gadd:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edx, edi
	mov	eax, esi
	mov	BYTE PTR -4[rbp], dl
	mov	BYTE PTR -8[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	xor	al, BYTE PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	gadd, .-gadd
	.globl	gsub
	.type	gsub, @function
gsub:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edx, edi
	mov	eax, esi
	mov	BYTE PTR -4[rbp], dl
	mov	BYTE PTR -8[rbp], al
	movzx	eax, BYTE PTR -4[rbp]
	xor	al, BYTE PTR -8[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	gsub, .-gsub
	.globl	gmult
	.type	gmult, @function
gmult:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	edx, edi
	mov	eax, esi
	mov	BYTE PTR -20[rbp], dl
	mov	BYTE PTR -24[rbp], al
	mov	BYTE PTR -3[rbp], 0
	mov	BYTE PTR -2[rbp], 0
	mov	BYTE PTR -1[rbp], 0
	mov	BYTE PTR -2[rbp], 0
	jmp	.L6
.L9:
	movzx	eax, BYTE PTR -24[rbp]
	and	eax, 1
	test	eax, eax
	je	.L7
	movzx	eax, BYTE PTR -20[rbp]
	xor	BYTE PTR -3[rbp], al
.L7:
	movzx	eax, BYTE PTR -20[rbp]
	and	eax, -128
	mov	BYTE PTR -1[rbp], al
	sal	BYTE PTR -20[rbp]
	cmp	BYTE PTR -1[rbp], 0
	je	.L8
	xor	BYTE PTR -20[rbp], 27
.L8:
	shr	BYTE PTR -24[rbp]
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L6:
	cmp	BYTE PTR -2[rbp], 7
	jbe	.L9
	movzx	eax, BYTE PTR -3[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	gmult, .-gmult
	.globl	coef_add
	.type	coef_add, @function
coef_add:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	mov	rax, QWORD PTR -8[rbp]
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	xor	edx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	movzx	ecx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 2
	movzx	ecx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 3
	movzx	ecx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	movzx	edx, BYTE PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	coef_add, .-coef_add
	.globl	coef_mult
	.type	coef_mult, @function
coef_mult:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -16[rbp], rdi
	mov	QWORD PTR -24[rbp], rsi
	mov	QWORD PTR -32[rbp], rdx
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	edx, ebx
	mov	rax, QWORD PTR -32[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 1
	xor	edx, ebx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 2
	xor	edx, ebx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	xor	ebx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, edx
	mov	edi, eax
	call	gmult
	mov	edx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 3
	xor	edx, ebx
	mov	BYTE PTR [rax], dl
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	coef_mult, .-coef_mult
	.globl	Nb
	.data
	.align 4
	.type	Nb, @object
	.size	Nb, 4
Nb:
	.long	4
	.globl	Nk
	.bss
	.align 4
	.type	Nk, @object
	.size	Nk, 4
Nk:
	.zero	4
	.globl	Nr
	.align 4
	.type	Nr, @object
	.size	Nr, 4
Nr:
	.zero	4
	.data
	.align 32
	.type	s_box, @object
	.size	s_box, 256
s_box:
	.string	"c|w{\362ko\3050\001g+\376\327\253v\312\202\311}\372YG\360\255\324\242\257\234\244r\300\267\375\223&6?\367\3144\245\345\361q\3301\025\004\307#\303\030\226\005\232\007\022\200\342\353'\262u\t\203,\032\033nZ\240R;\326\263)\343/\204S\321"
	.ascii	"\355 \374\261[j\313\2769JLX\317\320\357\252\373CM3\205E\371\002"
	.ascii	"\177P<\237\250Q\243@\217\222\2358\365\274\266\332!\020\377\363"
	.ascii	"\322\315\f\023\354_\227D\027\304\247~=d]\031s`\201O\334\"*\220"
	.ascii	"\210F\356\270\024\336^\013\333\3402:\nI\006$\\\302\323\254b\221"
	.ascii	"\225\344y\347\3107m\215\325N\251lV\364\352ez\256\b\272x%.\034"
	.ascii	"\246\264\306\350\335t\037K\275\213\212p>\265fH\003\366\016a5"
	.ascii	"W\271\206\301\035\236\341\370\230\021i\331\216\224\233\036\207"
	.ascii	"\351\316U(\337\214\241\211\r\277\346BhA\231-\017\260T\273\026"
	.align 32
	.type	inv_s_box, @object
	.size	inv_s_box, 256
inv_s_box:
	.string	"R\tj\32506\2458\277@\243\236\201\363\327\373|\3439\202\233/\377\2074\216CD\304\336\351\313T{\2242\246\302#=\356L\225\013B\372\303N\b.\241f(\331$\262v[\242Im\213\321%r\370\366d\206h\230\026\324\244\\\314]e\266\222lpHP\375\355\271\332^\025FW\247\215\235\204\220\330\253"
	.ascii	"\214\274\323\n\367\344X\005\270\263E\006\320,\036\217\312?\017"
	.ascii	"\002\301\257\275\003\001\023\212k:\221\021AOg\334\352\227\362"
	.ascii	"\317\316\360\264\346s\226\254t\"\347\2555\205\342\3717\350\034"
	.ascii	"u\337nG\361\032q\035)\305\211o\267b\016\252\030\276\033\374V"
	.ascii	">K\306\322y \232\333\300\376x\315Z\364\037\335\2503\210\007\307"
	.ascii	"1\261\022\020Y'\200\354_`Q\177\251\031\265J\r-\345z\237\223\311"
	.ascii	"\234\357\240\340;M\256*\365\260\310\353\273<\203S\231a\027+\004"
	.ascii	"~\272w\326&\341i\024cU!\f}"
	.globl	R
	.type	R, @object
	.size	R, 4
R:
	.string	"\002"
	.string	""
	.string	""
	.text
	.globl	Rcon
	.type	Rcon, @function
Rcon:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 8
	mov	eax, edi
	mov	BYTE PTR -4[rbp], al
	cmp	BYTE PTR -4[rbp], 1
	jne	.L14
	mov	BYTE PTR R[rip], 1
	jmp	.L15
.L14:
	cmp	BYTE PTR -4[rbp], 1
	jbe	.L15
	mov	BYTE PTR R[rip], 2
	movzx	eax, BYTE PTR -4[rbp]
	sub	eax, 1
	mov	BYTE PTR -4[rbp], al
	jmp	.L16
.L17:
	movzx	eax, BYTE PTR R[rip]
	movzx	eax, al
	mov	esi, 2
	mov	edi, eax
	call	gmult
	mov	BYTE PTR R[rip], al
	movzx	eax, BYTE PTR -4[rbp]
	sub	eax, 1
	mov	BYTE PTR -4[rbp], al
.L16:
	cmp	BYTE PTR -4[rbp], 1
	ja	.L17
.L15:
	lea	rax, R[rip]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	Rcon, .-Rcon
	.globl	add_round_key
	.type	add_round_key, @function
add_round_key:
.LFB12:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, edx
	mov	BYTE PTR -36[rbp], al
	mov	BYTE PTR -1[rbp], 0
	jmp	.L20
.L21:
	movzx	edx, BYTE PTR -1[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -36[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	sal	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	esi, BYTE PTR -1[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	edx, BYTE PTR -1[rbp]
	mov	eax, DWORD PTR Nb[rip]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -36[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movzx	esi, BYTE PTR -1[rbp]
	mov	eax, DWORD PTR Nb[rip]
	add	eax, esi
	movsx	rsi, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR Nb[rip]
	lea	edx, [rax+rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -36[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	mov	eax, DWORD PTR Nb[rip]
	lea	esi, [rax+rax]
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, esi
	movsx	rsi, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	edx, DWORD PTR Nb[rip]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	esi, BYTE PTR [rax]
	movzx	edx, BYTE PTR -36[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	edx, DWORD PTR Nb[rip]
	mov	eax, edx
	add	eax, eax
	add	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	xor	esi, ecx
	mov	edx, esi
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L20:
	movzx	edx, BYTE PTR -1[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L21
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	add_round_key, .-add_round_key
	.globl	mix_columns
	.type	mix_columns, @function
mix_columns:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -20[rbp], 50397442
	mov	BYTE PTR -21[rbp], 0
	jmp	.L23
.L28:
	mov	BYTE PTR -22[rbp], 0
	jmp	.L24
.L25:
	movzx	edx, BYTE PTR -22[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -21[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -22[rbp]
	movzx	edx, BYTE PTR [rdx]
	cdqe
	mov	BYTE PTR -16[rbp+rax], dl
	movzx	eax, BYTE PTR -22[rbp]
	add	eax, 1
	mov	BYTE PTR -22[rbp], al
.L24:
	cmp	BYTE PTR -22[rbp], 3
	jbe	.L25
	lea	rdx, -12[rbp]
	lea	rcx, -16[rbp]
	lea	rax, -20[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	coef_mult
	mov	BYTE PTR -22[rbp], 0
	jmp	.L26
.L27:
	movzx	eax, BYTE PTR -22[rbp]
	movzx	ecx, BYTE PTR -22[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -21[rbp]
	add	edx, ecx
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -22[rbp]
	add	eax, 1
	mov	BYTE PTR -22[rbp], al
.L26:
	cmp	BYTE PTR -22[rbp], 3
	jbe	.L27
	movzx	eax, BYTE PTR -21[rbp]
	add	eax, 1
	mov	BYTE PTR -21[rbp], al
.L23:
	movzx	edx, BYTE PTR -21[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L28
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L29
	call	__stack_chk_fail@PLT
.L29:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	mix_columns, .-mix_columns
	.globl	inv_mix_columns
	.type	inv_mix_columns, @function
inv_mix_columns:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -20[rbp], 185403662
	mov	BYTE PTR -21[rbp], 0
	jmp	.L31
.L36:
	mov	BYTE PTR -22[rbp], 0
	jmp	.L32
.L33:
	movzx	edx, BYTE PTR -22[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -21[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -22[rbp]
	movzx	edx, BYTE PTR [rdx]
	cdqe
	mov	BYTE PTR -16[rbp+rax], dl
	movzx	eax, BYTE PTR -22[rbp]
	add	eax, 1
	mov	BYTE PTR -22[rbp], al
.L32:
	cmp	BYTE PTR -22[rbp], 3
	jbe	.L33
	lea	rdx, -12[rbp]
	lea	rcx, -16[rbp]
	lea	rax, -20[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	coef_mult
	mov	BYTE PTR -22[rbp], 0
	jmp	.L34
.L35:
	movzx	eax, BYTE PTR -22[rbp]
	movzx	ecx, BYTE PTR -22[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -21[rbp]
	add	edx, ecx
	movsx	rcx, edx
	mov	rdx, QWORD PTR -40[rbp]
	add	rdx, rcx
	cdqe
	movzx	eax, BYTE PTR -12[rbp+rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -22[rbp]
	add	eax, 1
	mov	BYTE PTR -22[rbp], al
.L34:
	cmp	BYTE PTR -22[rbp], 3
	jbe	.L35
	movzx	eax, BYTE PTR -21[rbp]
	add	eax, 1
	mov	BYTE PTR -21[rbp], al
.L31:
	movzx	edx, BYTE PTR -21[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L36
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L37
	call	__stack_chk_fail@PLT
.L37:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	inv_mix_columns, .-inv_mix_columns
	.globl	shift_rows
	.type	shift_rows, @function
shift_rows:
.LFB15:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -4[rbp], 1
	jmp	.L39
.L44:
	mov	BYTE PTR -2[rbp], 0
	jmp	.L40
.L43:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -1[rbp], al
	mov	BYTE PTR -3[rbp], 1
	jmp	.L41
.L42:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -4[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -3[rbp]
	add	edx, ecx
	movsx	rdx, edx
	lea	rcx, -1[rdx]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L41:
	movzx	edx, BYTE PTR -3[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L42
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	mov	eax, DWORD PTR Nb[rip]
	add	eax, edx
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L40:
	movzx	eax, BYTE PTR -2[rbp]
	cmp	al, BYTE PTR -4[rbp]
	jb	.L43
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L39:
	cmp	BYTE PTR -4[rbp], 3
	jbe	.L44
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	shift_rows, .-shift_rows
	.globl	inv_shift_rows
	.type	inv_shift_rows, @function
inv_shift_rows:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -4[rbp], 1
	jmp	.L46
.L51:
	mov	BYTE PTR -2[rbp], 0
	jmp	.L47
.L50:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	mov	eax, DWORD PTR Nb[rip]
	add	eax, edx
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -1[rbp], al
	mov	eax, DWORD PTR Nb[rip]
	sub	eax, 1
	mov	BYTE PTR -3[rbp], al
	jmp	.L48
.L49:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	cdqe
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -4[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -3[rbp]
	add	edx, ecx
	movsx	rcx, edx
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -3[rbp]
	sub	eax, 1
	mov	BYTE PTR -3[rbp], al
.L48:
	cmp	BYTE PTR -3[rbp], 0
	jne	.L49
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L47:
	movzx	eax, BYTE PTR -2[rbp]
	cmp	al, BYTE PTR -4[rbp]
	jb	.L50
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L46:
	cmp	BYTE PTR -4[rbp], 3
	jbe	.L51
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	inv_shift_rows, .-inv_shift_rows
	.globl	sub_bytes
	.type	sub_bytes, @function
sub_bytes:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -4[rbp], 0
	jmp	.L53
.L56:
	mov	BYTE PTR -3[rbp], 0
	jmp	.L54
.L55:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	mov	BYTE PTR -2[rbp], al
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	and	eax, 15
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -2[rbp]
	sal	eax, 4
	mov	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	lea	ecx, [rdx+rax]
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movsx	rax, ecx
	lea	rcx, s_box[rip]
	movzx	eax, BYTE PTR [rax+rcx]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L54:
	movzx	edx, BYTE PTR -3[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L55
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L53:
	cmp	BYTE PTR -4[rbp], 3
	jbe	.L56
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	sub_bytes, .-sub_bytes
	.globl	inv_sub_bytes
	.type	inv_sub_bytes, @function
inv_sub_bytes:
.LFB18:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -4[rbp], 0
	jmp	.L58
.L61:
	mov	BYTE PTR -3[rbp], 0
	jmp	.L59
.L60:
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	mov	BYTE PTR -2[rbp], al
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	and	eax, 15
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR -2[rbp]
	sal	eax, 4
	mov	edx, eax
	movzx	eax, BYTE PTR -1[rbp]
	lea	ecx, [rdx+rax]
	movzx	edx, BYTE PTR -4[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rdx, rax
	movsx	rax, ecx
	lea	rcx, inv_s_box[rip]
	movzx	eax, BYTE PTR [rax+rcx]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -3[rbp]
	add	eax, 1
	mov	BYTE PTR -3[rbp], al
.L59:
	movzx	edx, BYTE PTR -3[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L60
	movzx	eax, BYTE PTR -4[rbp]
	add	eax, 1
	mov	BYTE PTR -4[rbp], al
.L58:
	cmp	BYTE PTR -4[rbp], 3
	jbe	.L61
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	inv_sub_bytes, .-inv_sub_bytes
	.globl	sub_word
	.type	sub_word, @function
sub_word:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	BYTE PTR -1[rbp], 0
	jmp	.L63
.L64:
	movzx	edx, BYTE PTR -1[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	movzx	eax, al
	sal	eax, 4
	mov	ecx, eax
	movzx	edx, BYTE PTR -1[rbp]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 15
	add	eax, ecx
	movzx	ecx, BYTE PTR -1[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	cdqe
	lea	rcx, s_box[rip]
	movzx	eax, BYTE PTR [rax+rcx]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -1[rbp]
	add	eax, 1
	mov	BYTE PTR -1[rbp], al
.L63:
	cmp	BYTE PTR -1[rbp], 3
	jbe	.L64
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	sub_word, .-sub_word
	.globl	rot_word
	.type	rot_word, @function
rot_word:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -1[rbp], al
	mov	BYTE PTR -2[rbp], 0
	jmp	.L66
.L67:
	movzx	eax, BYTE PTR -2[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -2[rbp]
	mov	rdx, QWORD PTR -24[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -2[rbp]
	add	eax, 1
	mov	BYTE PTR -2[rbp], al
.L66:
	cmp	BYTE PTR -2[rbp], 2
	jbe	.L67
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 3[rax]
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR [rdx], al
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	rot_word, .-rot_word
	.globl	key_expansion
	.type	key_expansion, @function
key_expansion:
.LFB21:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR Nr[rip]
	add	eax, 1
	mov	ecx, eax
	mov	eax, DWORD PTR Nb[rip]
	mov	edx, eax
	mov	eax, ecx
	imul	eax, edx
	mov	BYTE PTR -13[rbp], al
	mov	BYTE PTR -14[rbp], 0
	jmp	.L69
.L70:
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR -14[rbp]
	sal	edx, 2
	movsx	rcx, edx
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR -14[rbp]
	sal	edx, 2
	movsx	rdx, edx
	lea	rcx, 1[rdx]
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR -14[rbp]
	sal	edx, 2
	movsx	rdx, edx
	lea	rcx, 2[rdx]
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	edx, BYTE PTR -14[rbp]
	sal	edx, 2
	movsx	rdx, edx
	lea	rcx, 3[rdx]
	mov	rdx, QWORD PTR -32[rbp]
	add	rdx, rcx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -14[rbp]
	add	eax, 1
	mov	BYTE PTR -14[rbp], al
.L69:
	movzx	edx, BYTE PTR -14[rbp]
	mov	eax, DWORD PTR Nk[rip]
	cmp	edx, eax
	jl	.L70
	mov	eax, DWORD PTR Nk[rip]
	mov	BYTE PTR -14[rbp], al
	jmp	.L71
.L74:
	movzx	eax, BYTE PTR -14[rbp]
	sub	eax, 1
	sal	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -14[rbp]
	sub	eax, 1
	sal	eax, 2
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -11[rbp], al
	movzx	eax, BYTE PTR -14[rbp]
	sub	eax, 1
	sal	eax, 2
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -14[rbp]
	sub	eax, 1
	sal	eax, 2
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -14[rbp]
	mov	ecx, DWORD PTR Nk[rip]
	cdq
	idiv	ecx
	mov	eax, edx
	test	eax, eax
	jne	.L72
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	rot_word
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	sub_word
	movzx	eax, BYTE PTR -14[rbp]
	mov	edi, DWORD PTR Nk[rip]
	cdq
	idiv	edi
	movzx	eax, al
	mov	edi, eax
	call	Rcon
	mov	rcx, rax
	lea	rdx, -12[rbp]
	lea	rax, -12[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	coef_add
	jmp	.L73
.L72:
	mov	eax, DWORD PTR Nk[rip]
	cmp	eax, 6
	jle	.L73
	movzx	eax, BYTE PTR -14[rbp]
	mov	ecx, DWORD PTR Nk[rip]
	cdq
	idiv	ecx
	mov	eax, edx
	cmp	eax, 4
	jne	.L73
	lea	rax, -12[rbp]
	mov	rdi, rax
	call	sub_word
.L73:
	movzx	eax, BYTE PTR -14[rbp]
	mov	edx, DWORD PTR Nk[rip]
	sub	eax, edx
	sal	eax, 2
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -12[rbp]
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	movsx	rsi, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -14[rbp]
	mov	edx, DWORD PTR Nk[rip]
	sub	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -11[rbp]
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rsi, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -14[rbp]
	mov	edx, DWORD PTR Nk[rip]
	sub	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 2[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -10[rbp]
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rsi, 2[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -14[rbp]
	mov	edx, DWORD PTR Nk[rip]
	sub	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, 3[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	movzx	edx, BYTE PTR -9[rbp]
	movzx	eax, BYTE PTR -14[rbp]
	sal	eax, 2
	cdqe
	lea	rsi, 3[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rsi
	xor	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	eax, BYTE PTR -14[rbp]
	add	eax, 1
	mov	BYTE PTR -14[rbp], al
.L71:
	movzx	eax, BYTE PTR -14[rbp]
	cmp	al, BYTE PTR -13[rbp]
	jb	.L74
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L75
	call	__stack_chk_fail@PLT
.L75:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	key_expansion, .-key_expansion
	.globl	cipher
	.type	cipher, @function
cipher:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -34[rbp], 0
	jmp	.L77
.L80:
	mov	BYTE PTR -33[rbp], 0
	jmp	.L78
.L79:
	movzx	edx, BYTE PTR -34[rbp]
	movzx	eax, BYTE PTR -33[rbp]
	sal	eax, 2
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -34[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -33[rbp]
	add	ecx, edx
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	mov	BYTE PTR -32[rbp+rax], dl
	movzx	eax, BYTE PTR -33[rbp]
	add	eax, 1
	mov	BYTE PTR -33[rbp], al
.L78:
	movzx	edx, BYTE PTR -33[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L79
	movzx	eax, BYTE PTR -34[rbp]
	add	eax, 1
	mov	BYTE PTR -34[rbp], al
.L77:
	cmp	BYTE PTR -34[rbp], 3
	jbe	.L80
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	mov	BYTE PTR -35[rbp], 1
	jmp	.L81
.L82:
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	sub_bytes
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	shift_rows
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	mix_columns
	movzx	edx, BYTE PTR -35[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	movzx	eax, BYTE PTR -35[rbp]
	add	eax, 1
	mov	BYTE PTR -35[rbp], al
.L81:
	movzx	edx, BYTE PTR -35[rbp]
	mov	eax, DWORD PTR Nr[rip]
	cmp	edx, eax
	jl	.L82
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	sub_bytes
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	shift_rows
	mov	eax, DWORD PTR Nr[rip]
	movzx	edx, al
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	mov	BYTE PTR -34[rbp], 0
	jmp	.L83
.L86:
	mov	BYTE PTR -33[rbp], 0
	jmp	.L84
.L85:
	movzx	edx, BYTE PTR -34[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -33[rbp]
	lea	ecx, [rdx+rax]
	movzx	edx, BYTE PTR -34[rbp]
	movzx	eax, BYTE PTR -33[rbp]
	sal	eax, 2
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	add	rdx, rax
	movsx	rax, ecx
	movzx	eax, BYTE PTR -32[rbp+rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -33[rbp]
	add	eax, 1
	mov	BYTE PTR -33[rbp], al
.L84:
	movzx	edx, BYTE PTR -33[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L85
	movzx	eax, BYTE PTR -34[rbp]
	add	eax, 1
	mov	BYTE PTR -34[rbp], al
.L83:
	cmp	BYTE PTR -34[rbp], 3
	jbe	.L86
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L87
	call	__stack_chk_fail@PLT
.L87:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	cipher, .-cipher
	.globl	inv_cipher
	.type	inv_cipher, @function
inv_cipher:
.LFB23:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 80
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	QWORD PTR -72[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	BYTE PTR -34[rbp], 0
	jmp	.L89
.L92:
	mov	BYTE PTR -33[rbp], 0
	jmp	.L90
.L91:
	movzx	edx, BYTE PTR -34[rbp]
	movzx	eax, BYTE PTR -33[rbp]
	sal	eax, 2
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, rdx
	movzx	ecx, BYTE PTR -34[rbp]
	mov	edx, DWORD PTR Nb[rip]
	imul	ecx, edx
	movzx	edx, BYTE PTR -33[rbp]
	add	ecx, edx
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	mov	BYTE PTR -32[rbp+rax], dl
	movzx	eax, BYTE PTR -33[rbp]
	add	eax, 1
	mov	BYTE PTR -33[rbp], al
.L90:
	movzx	edx, BYTE PTR -33[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L91
	movzx	eax, BYTE PTR -34[rbp]
	add	eax, 1
	mov	BYTE PTR -34[rbp], al
.L89:
	cmp	BYTE PTR -34[rbp], 3
	jbe	.L92
	mov	eax, DWORD PTR Nr[rip]
	movzx	edx, al
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	mov	eax, DWORD PTR Nr[rip]
	sub	eax, 1
	mov	BYTE PTR -35[rbp], al
	jmp	.L93
.L94:
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	inv_shift_rows
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	inv_sub_bytes
	movzx	edx, BYTE PTR -35[rbp]
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	inv_mix_columns
	movzx	eax, BYTE PTR -35[rbp]
	sub	eax, 1
	mov	BYTE PTR -35[rbp], al
.L93:
	cmp	BYTE PTR -35[rbp], 0
	jne	.L94
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	inv_shift_rows
	lea	rax, -32[rbp]
	mov	rdi, rax
	call	inv_sub_bytes
	mov	rcx, QWORD PTR -72[rbp]
	lea	rax, -32[rbp]
	mov	edx, 0
	mov	rsi, rcx
	mov	rdi, rax
	call	add_round_key
	mov	BYTE PTR -34[rbp], 0
	jmp	.L95
.L98:
	mov	BYTE PTR -33[rbp], 0
	jmp	.L96
.L97:
	movzx	edx, BYTE PTR -34[rbp]
	mov	eax, DWORD PTR Nb[rip]
	imul	edx, eax
	movzx	eax, BYTE PTR -33[rbp]
	lea	ecx, [rdx+rax]
	movzx	edx, BYTE PTR -34[rbp]
	movzx	eax, BYTE PTR -33[rbp]
	sal	eax, 2
	add	eax, edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -64[rbp]
	add	rdx, rax
	movsx	rax, ecx
	movzx	eax, BYTE PTR -32[rbp+rax]
	mov	BYTE PTR [rdx], al
	movzx	eax, BYTE PTR -33[rbp]
	add	eax, 1
	mov	BYTE PTR -33[rbp], al
.L96:
	movzx	edx, BYTE PTR -33[rbp]
	mov	eax, DWORD PTR Nb[rip]
	cmp	edx, eax
	jl	.L97
	movzx	eax, BYTE PTR -34[rbp]
	add	eax, 1
	mov	BYTE PTR -34[rbp], al
.L95:
	cmp	BYTE PTR -34[rbp], 3
	jbe	.L98
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L99
	call	__stack_chk_fail@PLT
.L99:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	inv_cipher, .-inv_cipher
	.globl	aes_init
	.type	aes_init, @function
aes_init:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	QWORD PTR -24[rbp], rdx
	cmp	QWORD PTR -16[rbp], 24
	je	.L101
	cmp	QWORD PTR -16[rbp], 32
	je	.L102
	mov	DWORD PTR Nk[rip], 4
	mov	DWORD PTR Nr[rip], 10
	jmp	.L103
.L101:
	mov	DWORD PTR Nk[rip], 6
	mov	DWORD PTR Nr[rip], 12
	jmp	.L103
.L102:
	mov	DWORD PTR Nk[rip], 8
	mov	DWORD PTR Nr[rip], 14
	nop
.L103:
	mov	eax, DWORD PTR Nr[rip]
	lea	edx, 1[rax]
	mov	eax, DWORD PTR Nb[rip]
	imul	eax, edx
	sal	eax, 2
	cdqe
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L104
	mov	eax, 1
	jmp	.L105
.L104:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	key_expansion
	mov	eax, 0
.L105:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	aes_init, .-aes_init
	.ident	"GCC: (Ubuntu 10.5.0-1ubuntu1~20.04) 10.5.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 6
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"111079224.c"
	.text
	.align	2
	.global	gadd
	.syntax unified
	.arm
	.fpu softvfp
	.type	gadd, %function
gadd:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, r0
	mov	r2, r1
	strb	r3, [fp, #-5]
	mov	r3, r2
	strb	r3, [fp, #-6]
	ldrb	r2, [fp, #-5]
	ldrb	r3, [fp, #-6]
	eor	r3, r3, r2
	and	r3, r3, #255
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	gadd, .-gadd
	.align	2
	.global	gsub
	.syntax unified
	.arm
	.fpu softvfp
	.type	gsub, %function
gsub:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	mov	r3, r0
	mov	r2, r1
	strb	r3, [fp, #-5]
	mov	r3, r2
	strb	r3, [fp, #-6]
	ldrb	r2, [fp, #-5]
	ldrb	r3, [fp, #-6]
	eor	r3, r3, r2
	and	r3, r3, #255
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	gsub, .-gsub
	.align	2
	.global	gmult
	.syntax unified
	.arm
	.fpu softvfp
	.type	gmult, %function
gmult:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	mov	r3, r0
	mov	r2, r1
	strb	r3, [fp, #-13]
	mov	r3, r2
	strb	r3, [fp, #-14]
	mov	r3, #0
	strb	r3, [fp, #-7]
	mov	r3, #0
	strb	r3, [fp, #-6]
	mov	r3, #0
	strb	r3, [fp, #-5]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L6
.L9:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L7
	ldrb	r2, [fp, #-7]
	ldrb	r3, [fp, #-13]
	eor	r3, r3, r2
	strb	r3, [fp, #-7]
.L7:
	ldrb	r3, [fp, #-13]
	bic	r3, r3, #127
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-13]
	lsl	r3, r3, #1
	strb	r3, [fp, #-13]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L8
	ldrb	r3, [fp, #-13]
	eor	r3, r3, #27
	strb	r3, [fp, #-13]
.L8:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsr	r3, r3, #1
	strb	r3, [fp, #-14]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L6:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #7
	bls	.L9
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	gmult, .-gmult
	.align	2
	.global	coef_add
	.syntax unified
	.arm
	.fpu softvfp
	.type	coef_add, %function
coef_add:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-8]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	and	r2, r3, #255
	ldr	r3, [fp, #-16]
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	add	r3, r3, #3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	coef_add, .-coef_add
	.align	2
	.global	coef_mult
	.syntax unified
	.arm
	.fpu softvfp
	.type	coef_mult, %function
coef_mult:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r2, r3, #255
	ldr	r3, [fp, #-24]
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r4, r3
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	eor	r2, r2, r4
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, #2
	eor	r2, r2, r4
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	eor	r3, r3, r4
	and	r4, r3, #255
	ldr	r3, [fp, #-16]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	mov	r0, r2
	bl	gmult
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, #3
	eor	r2, r2, r4
	and	r2, r2, #255
	strb	r2, [r3]
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	coef_mult, .-coef_mult
	.global	Nb
	.data
	.align	2
	.type	Nb, %object
	.size	Nb, 4
Nb:
	.word	4
	.comm	Nk,4,4
	.comm	Nr,4,4
	.align	2
	.type	s_box, %object
	.size	s_box, 256
s_box:
	.ascii	"c|w{\362ko\3050\001g+\376\327\253v\312\202\311}\372"
	.ascii	"YG\360\255\324\242\257\234\244r\300\267\375\223&6?\367"
	.ascii	"\3144\245\345\361q\3301\025\004\307#\303\030\226\005"
	.ascii	"\232\007\022\200\342\353'\262u\011\203,\032\033nZ\240"
	.ascii	"R;\326\263)\343/\204S\321\000\355 \374\261[j\313\276"
	.ascii	"9JLX\317\320\357\252\373CM3\205E\371\002\177P<\237\250"
	.ascii	"Q\243@\217\222\2358\365\274\266\332!\020\377\363\322"
	.ascii	"\315\014\023\354_\227D\027\304\247~=d]\031s`\201O\334"
	.ascii	"\"*\220\210F\356\270\024\336^\013\333\3402:\012I\006"
	.ascii	"$\\\302\323\254b\221\225\344y\347\3107m\215\325N\251"
	.ascii	"lV\364\352ez\256\010\272x%.\034\246\264\306\350\335"
	.ascii	"t\037K\275\213\212p>\265fH\003\366\016a5W\271\206\301"
	.ascii	"\035\236\341\370\230\021i\331\216\224\233\036\207\351"
	.ascii	"\316U(\337\214\241\211\015\277\346BhA\231-\017\260T"
	.ascii	"\273\026"
	.align	2
	.type	inv_s_box, %object
	.size	inv_s_box, 256
inv_s_box:
	.ascii	"R\011j\32506\2458\277@\243\236\201\363\327\373|\343"
	.ascii	"9\202\233/\377\2074\216CD\304\336\351\313T{\2242\246"
	.ascii	"\302#=\356L\225\013B\372\303N\010.\241f(\331$\262v["
	.ascii	"\242Im\213\321%r\370\366d\206h\230\026\324\244\\\314"
	.ascii	"]e\266\222lpHP\375\355\271\332^\025FW\247\215\235\204"
	.ascii	"\220\330\253\000\214\274\323\012\367\344X\005\270\263"
	.ascii	"E\006\320,\036\217\312?\017\002\301\257\275\003\001"
	.ascii	"\023\212k:\221\021AOg\334\352\227\362\317\316\360\264"
	.ascii	"\346s\226\254t\"\347\2555\205\342\3717\350\034u\337"
	.ascii	"nG\361\032q\035)\305\211o\267b\016\252\030\276\033\374"
	.ascii	"V>K\306\322y \232\333\300\376x\315Z\364\037\335\250"
	.ascii	"3\210\007\3071\261\022\020Y'\200\354_`Q\177\251\031"
	.ascii	"\265J\015-\345z\237\223\311\234\357\240\340;M\256*\365"
	.ascii	"\260\310\353\273<\203S\231a\027+\004~\272w\326&\341"
	.ascii	"i\024cU!\014}"
	.global	R
	.align	2
	.type	R, %object
	.size	R, 4
R:
	.ascii	"\002\000\000\000"
	.text
	.align	2
	.global	Rcon
	.syntax unified
	.arm
	.fpu softvfp
	.type	Rcon, %function
Rcon:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, r0
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #1
	bne	.L14
	ldr	r3, .L19
	mov	r2, #1
	strb	r2, [r3]
	b	.L15
.L14:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #1
	bls	.L15
	ldr	r3, .L19
	mov	r2, #2
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-5]
	b	.L16
.L17:
	ldr	r3, .L19
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, #2
	mov	r0, r3
	bl	gmult
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L19
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-5]
.L16:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #1
	bhi	.L17
.L15:
	ldr	r3, .L19
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L20:
	.align	2
.L19:
	.word	R
	.size	Rcon, .-Rcon
	.align	2
	.global	add_round_key
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_round_key, %function
add_round_key:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, r2
	strb	r3, [fp, #-21]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L22
.L23:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L24
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	lsl	r3, r3, #2
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r0, [fp, #-16]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L24
	ldr	r3, [r3]
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L24
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r0, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L24
	ldr	r3, [r3]
	add	r3, r0, r3
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r0
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L24
	ldr	r3, [r3]
	lsl	r2, r3, #1
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L24
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, .L24
	ldr	r3, [r3]
	lsl	r0, r3, #1
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r0, r3
	mov	r0, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r0
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L24
	ldr	r2, [r3]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r0, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	ldr	r2, .L24
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, .L24
	ldr	r2, [r3]
	mov	r3, r2
	lsl	r3, r3, #1
	add	r2, r3, r2
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	eor	r2, r0, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L22:
	ldrb	r2, [fp, #-5]	@ zero_extendqisi2
	ldr	r3, .L24
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L23
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L25:
	.align	2
.L24:
	.word	Nb
	.size	add_round_key, .-add_round_key
	.section	.rodata
	.align	2
.LC0:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	mix_columns
	.syntax unified
	.arm
	.fpu softvfp
	.type	mix_columns, %function
mix_columns:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L34
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L34+4
	str	r3, [fp, #-20]
	mov	r3, #0
	strb	r3, [fp, #-21]
	b	.L27
.L32:
	mov	r3, #0
	strb	r3, [fp, #-22]
	b	.L28
.L29:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L34+8
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r2, r3, r2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-12]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-22]
.L28:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L29
	sub	r2, fp, #12
	sub	r1, fp, #16
	sub	r3, fp, #20
	mov	r0, r3
	bl	coef_mult
	mov	r3, #0
	strb	r3, [fp, #-22]
	b	.L30
.L31:
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r1, .L34+8
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r1
	sub	r1, fp, #4
	add	r2, r1, r2
	ldrb	r2, [r2, #-8]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-22]
.L30:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L31
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-21]
.L27:
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldr	r3, .L34+8
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L32
	nop
	ldr	r3, .L34
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L33
	bl	__stack_chk_fail
.L33:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L35:
	.align	2
.L34:
	.word	.LC0
	.word	50397442
	.word	Nb
	.size	mix_columns, .-mix_columns
	.section	.rodata
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	inv_mix_columns
	.syntax unified
	.arm
	.fpu softvfp
	.type	inv_mix_columns, %function
inv_mix_columns:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L44
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L44+4
	str	r3, [fp, #-20]
	mov	r3, #0
	strb	r3, [fp, #-21]
	b	.L37
.L42:
	mov	r3, #0
	strb	r3, [fp, #-22]
	b	.L38
.L39:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r2, .L44+8
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r2, r3, r2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-12]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-22]
.L38:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L39
	sub	r2, fp, #12
	sub	r1, fp, #16
	sub	r3, fp, #20
	mov	r0, r3
	bl	coef_mult
	mov	r3, #0
	strb	r3, [fp, #-22]
	b	.L40
.L41:
	ldrb	r2, [fp, #-22]	@ zero_extendqisi2
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	ldr	r1, .L44+8
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r1
	sub	r1, fp, #4
	add	r2, r1, r2
	ldrb	r2, [r2, #-8]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-22]
.L40:
	ldrb	r3, [fp, #-22]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L41
	ldrb	r3, [fp, #-21]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-21]
.L37:
	ldrb	r2, [fp, #-21]	@ zero_extendqisi2
	ldr	r3, .L44+8
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L42
	nop
	ldr	r3, .L44
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L43
	bl	__stack_chk_fail
.L43:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L45:
	.align	2
.L44:
	.word	.LC1
	.word	185403662
	.word	Nb
	.size	inv_mix_columns, .-inv_mix_columns
	.align	2
	.global	shift_rows
	.syntax unified
	.arm
	.fpu softvfp
	.type	shift_rows, %function
shift_rows:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #1
	strb	r3, [fp, #-8]
	b	.L47
.L52:
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L48
.L51:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L53
	ldr	r2, [r2]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]
	strb	r3, [fp, #-5]
	mov	r3, #1
	strb	r3, [fp, #-7]
	b	.L49
.L50:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L53
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r2, r3, r2
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r1, .L53
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r1, r3
	sub	r3, r3, #1
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L49:
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, .L53
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L50
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L53
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldr	r3, .L53
	ldr	r3, [r3]
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r2, [fp, #-5]
	strb	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L48:
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L51
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L47:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L52
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L54:
	.align	2
.L53:
	.word	Nb
	.size	shift_rows, .-shift_rows
	.align	2
	.global	inv_shift_rows
	.syntax unified
	.arm
	.fpu softvfp
	.type	inv_shift_rows, %function
inv_shift_rows:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #1
	strb	r3, [fp, #-8]
	b	.L56
.L61:
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L57
.L60:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L62
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldr	r3, .L62
	ldr	r3, [r3]
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-5]
	ldr	r3, .L62
	ldr	r3, [r3]
	and	r3, r3, #255
	sub	r3, r3, #1
	strb	r3, [fp, #-7]
	b	.L58
.L59:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L62
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	sub	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r1, .L62
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-7]
.L58:
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L59
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L62
	ldr	r2, [r2]
	mul	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r2, [fp, #-5]
	strb	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L57:
	ldrb	r2, [fp, #-6]	@ zero_extendqisi2
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L60
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L56:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L61
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L63:
	.align	2
.L62:
	.word	Nb
	.size	inv_shift_rows, .-inv_shift_rows
	.align	2
	.global	sub_bytes
	.syntax unified
	.arm
	.fpu softvfp
	.type	sub_bytes, %function
sub_bytes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L65
.L68:
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L66
.L67:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L69
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L69
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r2, r3, #4
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r2, r2, r3
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r1, .L69
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r1
	ldr	r1, .L69+4
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L66:
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, .L69
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L67
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L65:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L68
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L70:
	.align	2
.L69:
	.word	Nb
	.word	s_box
	.size	sub_bytes, .-sub_bytes
	.align	2
	.global	inv_sub_bytes
	.syntax unified
	.arm
	.fpu softvfp
	.type	inv_sub_bytes, %function
inv_sub_bytes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-8]
	b	.L72
.L75:
	mov	r3, #0
	strb	r3, [fp, #-7]
	b	.L73
.L74:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L76
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	strb	r3, [fp, #-6]
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r2, .L76
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	strb	r3, [fp, #-5]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	lsl	r2, r3, #4
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r2, r2, r3
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	ldr	r1, .L76
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r1
	ldr	r1, .L76+4
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-7]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-7]
.L73:
	ldrb	r2, [fp, #-7]	@ zero_extendqisi2
	ldr	r3, .L76
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L74
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-8]
.L72:
	ldrb	r3, [fp, #-8]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L75
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L77:
	.align	2
.L76:
	.word	Nb
	.word	inv_s_box
	.size	inv_sub_bytes, .-inv_sub_bytes
	.align	2
	.global	sub_word
	.syntax unified
	.arm
	.fpu softvfp
	.type	sub_word, %function
sub_word:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-5]
	b	.L79
.L80:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	lsl	r2, r3, #4
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	add	r2, r2, r3
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldr	r1, .L81
	ldrb	r2, [r1, r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-5]
.L79:
	ldrb	r3, [fp, #-5]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L80
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L82:
	.align	2
.L81:
	.word	s_box
	.size	sub_word, .-sub_word
	.align	2
	.global	rot_word
	.syntax unified
	.arm
	.fpu softvfp
	.type	rot_word, %function
rot_word:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]
	strb	r3, [fp, #-5]
	mov	r3, #0
	strb	r3, [fp, #-6]
	b	.L84
.L85:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	ldr	r2, [fp, #-16]
	add	r2, r2, r3
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	ldr	r1, [fp, #-16]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-6]
.L84:
	ldrb	r3, [fp, #-6]	@ zero_extendqisi2
	cmp	r3, #2
	bls	.L85
	ldr	r3, [fp, #-16]
	add	r3, r3, #3
	ldrb	r2, [fp, #-5]
	strb	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	rot_word, .-rot_word
	.global	__aeabi_idivmod
	.global	__aeabi_idiv
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	key_expansion
	.syntax unified
	.arm
	.fpu softvfp
	.type	key_expansion, %function
key_expansion:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r3, .L94
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L94+4
	ldr	r3, [r3]
	add	r3, r3, #1
	and	r3, r3, #255
	ldr	r2, .L94+8
	ldr	r2, [r2]
	and	r2, r2, #255
	mul	r3, r2, r3
	strb	r3, [fp, #-13]
	mov	r3, #0
	strb	r3, [fp, #-14]
	b	.L87
.L88:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r2, r3, r2
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	mov	r1, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r2, [fp, #-24]
	add	r2, r2, r3
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r1, [fp, #-28]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r2, [fp, #-24]
	add	r2, r2, r3
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r1, [fp, #-28]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r2, [fp, #-24]
	add	r2, r2, r3
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r1, [fp, #-28]
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
.L87:
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L94+12
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L88
	ldr	r3, .L94+12
	ldr	r3, [r3]
	strb	r3, [fp, #-14]
	b	.L89
.L92:
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	lsl	r3, r3, #2
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-12]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-11]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-10]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	sub	r3, r3, #1
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L94+12
	ldr	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	cmp	r3, #0
	bne	.L90
	sub	r3, fp, #12
	mov	r0, r3
	bl	rot_word
	sub	r3, fp, #12
	mov	r0, r3
	bl	sub_word
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L94+12
	ldr	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_idiv
	mov	r3, r0
	and	r3, r3, #255
	mov	r0, r3
	bl	Rcon
	mov	r1, r0
	sub	r2, fp, #12
	sub	r3, fp, #12
	mov	r0, r3
	bl	coef_add
	b	.L91
.L90:
	ldr	r3, .L94+12
	ldr	r3, [r3]
	cmp	r3, #6
	ble	.L91
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	ldr	r2, .L94+12
	ldr	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	cmp	r3, #4
	bne	.L91
	sub	r3, fp, #12
	mov	r0, r3
	bl	sub_word
.L91:
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L94+12
	ldr	r3, [r3]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-12]	@ zero_extendqisi2
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	mov	r0, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r0
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L94+12
	ldr	r3, [r3]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-11]	@ zero_extendqisi2
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r0, [fp, #-28]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L94+12
	ldr	r3, [r3]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-10]	@ zero_extendqisi2
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r0, [fp, #-28]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldr	r3, .L94+12
	ldr	r3, [r3]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-9]	@ zero_extendqisi2
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r0, [fp, #-28]
	add	r3, r0, r3
	eor	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
	ldrb	r3, [fp, #-14]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-14]
.L89:
	ldrb	r2, [fp, #-14]	@ zero_extendqisi2
	ldrb	r3, [fp, #-13]	@ zero_extendqisi2
	cmp	r2, r3
	bcc	.L92
	nop
	ldr	r3, .L94
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L93
	bl	__stack_chk_fail
.L93:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L95:
	.align	2
.L94:
	.word	.LC2
	.word	Nr
	.word	Nb
	.word	Nk
	.size	key_expansion, .-key_expansion
	.section	.rodata
	.align	2
.LC3:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	cipher
	.syntax unified
	.arm
	.fpu softvfp
	.type	cipher, %function
cipher:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, .L108
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	strb	r3, [fp, #-26]
	b	.L97
.L100:
	mov	r3, #0
	strb	r3, [fp, #-25]
	b	.L98
.L99:
	ldrb	r2, [fp, #-26]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r2, r3, r2
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r1, .L108+4
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-20]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-25]
.L98:
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	ldr	r3, .L108+4
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L99
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-26]
.L97:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L100
	sub	r3, fp, #24
	mov	r2, #0
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	mov	r3, #1
	strb	r3, [fp, #-27]
	b	.L101
.L102:
	sub	r3, fp, #24
	mov	r0, r3
	bl	sub_bytes
	sub	r3, fp, #24
	mov	r0, r3
	bl	shift_rows
	sub	r3, fp, #24
	mov	r0, r3
	bl	mix_columns
	ldrb	r2, [fp, #-27]	@ zero_extendqisi2
	sub	r3, fp, #24
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-27]
.L101:
	ldrb	r2, [fp, #-27]	@ zero_extendqisi2
	ldr	r3, .L108+8
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L102
	sub	r3, fp, #24
	mov	r0, r3
	bl	sub_bytes
	sub	r3, fp, #24
	mov	r0, r3
	bl	shift_rows
	ldr	r3, .L108+8
	ldr	r3, [r3]
	and	r2, r3, #255
	sub	r3, fp, #24
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	mov	r3, #0
	strb	r3, [fp, #-26]
	b	.L103
.L106:
	mov	r3, #0
	strb	r3, [fp, #-25]
	b	.L104
.L105:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r2, .L108+4
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r2, r2, r3
	ldrb	r1, [fp, #-26]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r1
	sub	r1, fp, #4
	add	r2, r1, r2
	ldrb	r2, [r2, #-20]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-25]
.L104:
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	ldr	r3, .L108+4
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L105
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-26]
.L103:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L106
	nop
	ldr	r3, .L108
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L107
	bl	__stack_chk_fail
.L107:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L109:
	.align	2
.L108:
	.word	.LC3
	.word	Nb
	.word	Nr
	.size	cipher, .-cipher
	.section	.rodata
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	inv_cipher
	.syntax unified
	.arm
	.fpu softvfp
	.type	inv_cipher, %function
inv_cipher:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, .L122
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	strb	r3, [fp, #-26]
	b	.L111
.L114:
	mov	r3, #0
	strb	r3, [fp, #-25]
	b	.L112
.L113:
	ldrb	r2, [fp, #-26]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r2, r3, r2
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r1, .L122+4
	ldr	r1, [r1]
	mul	r1, r3, r1
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r1, r3
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-20]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-25]
.L112:
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	ldr	r3, .L122+4
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L113
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-26]
.L111:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L114
	ldr	r3, .L122+8
	ldr	r3, [r3]
	and	r2, r3, #255
	sub	r3, fp, #24
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	ldr	r3, .L122+8
	ldr	r3, [r3]
	and	r3, r3, #255
	sub	r3, r3, #1
	strb	r3, [fp, #-27]
	b	.L115
.L116:
	sub	r3, fp, #24
	mov	r0, r3
	bl	inv_shift_rows
	sub	r3, fp, #24
	mov	r0, r3
	bl	inv_sub_bytes
	ldrb	r2, [fp, #-27]	@ zero_extendqisi2
	sub	r3, fp, #24
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	sub	r3, fp, #24
	mov	r0, r3
	bl	inv_mix_columns
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	sub	r3, r3, #1
	strb	r3, [fp, #-27]
.L115:
	ldrb	r3, [fp, #-27]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L116
	sub	r3, fp, #24
	mov	r0, r3
	bl	inv_shift_rows
	sub	r3, fp, #24
	mov	r0, r3
	bl	inv_sub_bytes
	sub	r3, fp, #24
	mov	r2, #0
	ldr	r1, [fp, #-40]
	mov	r0, r3
	bl	add_round_key
	mov	r3, #0
	strb	r3, [fp, #-26]
	b	.L117
.L120:
	mov	r3, #0
	strb	r3, [fp, #-25]
	b	.L118
.L119:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	ldr	r2, .L122+4
	ldr	r2, [r2]
	mul	r2, r3, r2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r2, r2, r3
	ldrb	r1, [fp, #-26]	@ zero_extendqisi2
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	lsl	r3, r3, #2
	add	r3, r1, r3
	mov	r1, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r1
	sub	r1, fp, #4
	add	r2, r1, r2
	ldrb	r2, [r2, #-20]	@ zero_extendqisi2
	strb	r2, [r3]
	ldrb	r3, [fp, #-25]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-25]
.L118:
	ldrb	r2, [fp, #-25]	@ zero_extendqisi2
	ldr	r3, .L122+4
	ldr	r3, [r3]
	cmp	r2, r3
	blt	.L119
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	add	r3, r3, #1
	strb	r3, [fp, #-26]
.L117:
	ldrb	r3, [fp, #-26]	@ zero_extendqisi2
	cmp	r3, #3
	bls	.L120
	nop
	ldr	r3, .L122
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L121
	bl	__stack_chk_fail
.L121:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L123:
	.align	2
.L122:
	.word	.LC4
	.word	Nb
	.word	Nr
	.size	inv_cipher, .-inv_cipher
	.align	2
	.global	aes_init
	.syntax unified
	.arm
	.fpu softvfp
	.type	aes_init, %function
aes_init:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-12]
	cmp	r3, #24
	beq	.L125
	ldr	r3, [fp, #-12]
	cmp	r3, #32
	beq	.L126
	ldr	r3, .L130
	mov	r2, #4
	str	r2, [r3]
	ldr	r3, .L130+4
	mov	r2, #10
	str	r2, [r3]
	b	.L127
.L125:
	ldr	r3, .L130
	mov	r2, #6
	str	r2, [r3]
	ldr	r3, .L130+4
	mov	r2, #12
	str	r2, [r3]
	b	.L127
.L126:
	ldr	r3, .L130
	mov	r2, #8
	str	r2, [r3]
	ldr	r3, .L130+4
	mov	r2, #14
	str	r2, [r3]
	nop
.L127:
	ldr	r3, .L130+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L130+8
	ldr	r2, [r2]
	mul	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-16]
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L128
	mov	r3, #1
	b	.L129
.L128:
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	key_expansion
	mov	r3, #0
.L129:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L131:
	.align	2
.L130:
	.word	Nk
	.word	Nr
	.word	Nb
	.size	aes_init, .-aes_init
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
