	.file	"435691.c"
	.intel_syntax noprefix
	.text
	.globl	Nr
	.bss
	.align 4
	.type	Nr, @object
	.size	Nr, 4
Nr:
	.zero	4
	.globl	Nk
	.align 4
	.type	Nk, @object
	.size	Nk, 4
Nk:
	.zero	4
	.globl	in
	.align 16
	.type	in, @object
	.size	in, 16
in:
	.zero	16
	.globl	out
	.align 16
	.type	out, @object
	.size	out, 16
out:
	.zero	16
	.globl	state
	.align 16
	.type	state, @object
	.size	state, 16
state:
	.zero	16
	.globl	RoundKey
	.align 32
	.type	RoundKey, @object
	.size	RoundKey, 240
RoundKey:
	.zero	240
	.globl	Key
	.align 32
	.type	Key, @object
	.size	Key, 32
Key:
	.zero	32
	.section	.rodata
	.align 32
.LC0:
	.long	99
	.long	124
	.long	119
	.long	123
	.long	242
	.long	107
	.long	111
	.long	197
	.long	48
	.long	1
	.long	103
	.long	43
	.long	254
	.long	215
	.long	171
	.long	118
	.long	202
	.long	130
	.long	201
	.long	125
	.long	250
	.long	89
	.long	71
	.long	240
	.long	173
	.long	212
	.long	162
	.long	175
	.long	156
	.long	164
	.long	114
	.long	192
	.long	183
	.long	253
	.long	147
	.long	38
	.long	54
	.long	63
	.long	247
	.long	204
	.long	52
	.long	165
	.long	229
	.long	241
	.long	113
	.long	216
	.long	49
	.long	21
	.long	4
	.long	199
	.long	35
	.long	195
	.long	24
	.long	150
	.long	5
	.long	154
	.long	7
	.long	18
	.long	128
	.long	226
	.long	235
	.long	39
	.long	178
	.long	117
	.long	9
	.long	131
	.long	44
	.long	26
	.long	27
	.long	110
	.long	90
	.long	160
	.long	82
	.long	59
	.long	214
	.long	179
	.long	41
	.long	227
	.long	47
	.long	132
	.long	83
	.long	209
	.long	0
	.long	237
	.long	32
	.long	252
	.long	177
	.long	91
	.long	106
	.long	203
	.long	190
	.long	57
	.long	74
	.long	76
	.long	88
	.long	207
	.long	208
	.long	239
	.long	170
	.long	251
	.long	67
	.long	77
	.long	51
	.long	133
	.long	69
	.long	249
	.long	2
	.long	127
	.long	80
	.long	60
	.long	159
	.long	168
	.long	81
	.long	163
	.long	64
	.long	143
	.long	146
	.long	157
	.long	56
	.long	245
	.long	188
	.long	182
	.long	218
	.long	33
	.long	16
	.long	255
	.long	243
	.long	210
	.long	205
	.long	12
	.long	19
	.long	236
	.long	95
	.long	151
	.long	68
	.long	23
	.long	196
	.long	167
	.long	126
	.long	61
	.long	100
	.long	93
	.long	25
	.long	115
	.long	96
	.long	129
	.long	79
	.long	220
	.long	34
	.long	42
	.long	144
	.long	136
	.long	70
	.long	238
	.long	184
	.long	20
	.long	222
	.long	94
	.long	11
	.long	219
	.long	224
	.long	50
	.long	58
	.long	10
	.long	73
	.long	6
	.long	36
	.long	92
	.long	194
	.long	211
	.long	172
	.long	98
	.long	145
	.long	149
	.long	228
	.long	121
	.long	231
	.long	200
	.long	55
	.long	109
	.long	141
	.long	213
	.long	78
	.long	169
	.long	108
	.long	86
	.long	244
	.long	234
	.long	101
	.long	122
	.long	174
	.long	8
	.long	186
	.long	120
	.long	37
	.long	46
	.long	28
	.long	166
	.long	180
	.long	198
	.long	232
	.long	221
	.long	116
	.long	31
	.long	75
	.long	189
	.long	139
	.long	138
	.long	112
	.long	62
	.long	181
	.long	102
	.long	72
	.long	3
	.long	246
	.long	14
	.long	97
	.long	53
	.long	87
	.long	185
	.long	134
	.long	193
	.long	29
	.long	158
	.long	225
	.long	248
	.long	152
	.long	17
	.long	105
	.long	217
	.long	142
	.long	148
	.long	155
	.long	30
	.long	135
	.long	233
	.long	206
	.long	85
	.long	40
	.long	223
	.long	140
	.long	161
	.long	137
	.long	13
	.long	191
	.long	230
	.long	66
	.long	104
	.long	65
	.long	153
	.long	45
	.long	15
	.long	176
	.long	84
	.long	187
	.long	22
	.text
	.globl	getSBoxValue
	.type	getSBoxValue, @function
getSBoxValue:
.LFB0:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1056
	mov	DWORD PTR -1044[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -1040[rbp]
	lea	rdx, .LC0[rip]
	mov	ecx, 128
	mov	rdi, rax
	mov	rsi, rdx
	rep movsq
	mov	eax, DWORD PTR -1044[rbp]
	cdqe
	mov	eax, DWORD PTR -1040[rbp+rax*4]
	mov	rdx, QWORD PTR -8[rbp]
	sub	rdx, QWORD PTR fs:40
	je	.L3
	call	__stack_chk_fail@PLT
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	getSBoxValue, .-getSBoxValue
	.globl	Rcon
	.data
	.align 32
	.type	Rcon, @object
	.size	Rcon, 1020
Rcon:
	.long	141
	.long	1
	.long	2
	.long	4
	.long	8
	.long	16
	.long	32
	.long	64
	.long	128
	.long	27
	.long	54
	.long	108
	.long	216
	.long	171
	.long	77
	.long	154
	.long	47
	.long	94
	.long	188
	.long	99
	.long	198
	.long	151
	.long	53
	.long	106
	.long	212
	.long	179
	.long	125
	.long	250
	.long	239
	.long	197
	.long	145
	.long	57
	.long	114
	.long	228
	.long	211
	.long	189
	.long	97
	.long	194
	.long	159
	.long	37
	.long	74
	.long	148
	.long	51
	.long	102
	.long	204
	.long	131
	.long	29
	.long	58
	.long	116
	.long	232
	.long	203
	.long	141
	.long	1
	.long	2
	.long	4
	.long	8
	.long	16
	.long	32
	.long	64
	.long	128
	.long	27
	.long	54
	.long	108
	.long	216
	.long	171
	.long	77
	.long	154
	.long	47
	.long	94
	.long	188
	.long	99
	.long	198
	.long	151
	.long	53
	.long	106
	.long	212
	.long	179
	.long	125
	.long	250
	.long	239
	.long	197
	.long	145
	.long	57
	.long	114
	.long	228
	.long	211
	.long	189
	.long	97
	.long	194
	.long	159
	.long	37
	.long	74
	.long	148
	.long	51
	.long	102
	.long	204
	.long	131
	.long	29
	.long	58
	.long	116
	.long	232
	.long	203
	.long	141
	.long	1
	.long	2
	.long	4
	.long	8
	.long	16
	.long	32
	.long	64
	.long	128
	.long	27
	.long	54
	.long	108
	.long	216
	.long	171
	.long	77
	.long	154
	.long	47
	.long	94
	.long	188
	.long	99
	.long	198
	.long	151
	.long	53
	.long	106
	.long	212
	.long	179
	.long	125
	.long	250
	.long	239
	.long	197
	.long	145
	.long	57
	.long	114
	.long	228
	.long	211
	.long	189
	.long	97
	.long	194
	.long	159
	.long	37
	.long	74
	.long	148
	.long	51
	.long	102
	.long	204
	.long	131
	.long	29
	.long	58
	.long	116
	.long	232
	.long	203
	.long	141
	.long	1
	.long	2
	.long	4
	.long	8
	.long	16
	.long	32
	.long	64
	.long	128
	.long	27
	.long	54
	.long	108
	.long	216
	.long	171
	.long	77
	.long	154
	.long	47
	.long	94
	.long	188
	.long	99
	.long	198
	.long	151
	.long	53
	.long	106
	.long	212
	.long	179
	.long	125
	.long	250
	.long	239
	.long	197
	.long	145
	.long	57
	.long	114
	.long	228
	.long	211
	.long	189
	.long	97
	.long	194
	.long	159
	.long	37
	.long	74
	.long	148
	.long	51
	.long	102
	.long	204
	.long	131
	.long	29
	.long	58
	.long	116
	.long	232
	.long	203
	.long	141
	.long	1
	.long	2
	.long	4
	.long	8
	.long	16
	.long	32
	.long	64
	.long	128
	.long	27
	.long	54
	.long	108
	.long	216
	.long	171
	.long	77
	.long	154
	.long	47
	.long	94
	.long	188
	.long	99
	.long	198
	.long	151
	.long	53
	.long	106
	.long	212
	.long	179
	.long	125
	.long	250
	.long	239
	.long	197
	.long	145
	.long	57
	.long	114
	.long	228
	.long	211
	.long	189
	.long	97
	.long	194
	.long	159
	.long	37
	.long	74
	.long	148
	.long	51
	.long	102
	.long	204
	.long	131
	.long	29
	.long	58
	.long	116
	.long	232
	.long	203
	.text
	.globl	KeyExpansion
	.type	KeyExpansion, @function
KeyExpansion:
.LFB1:
	.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	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -20[rbp], 0
	jmp	.L5
.L6:
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -20[rbp]
	lea	ecx, 0[0+rax*4]
	movsx	rax, edx
	lea	rdx, Key[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movsx	rax, ecx
	lea	rcx, RoundKey[rip]
	mov	BYTE PTR [rax+rcx], dl
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	edx, 1[rax]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	ecx, 1[rax]
	movsx	rax, edx
	lea	rdx, Key[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movsx	rax, ecx
	lea	rcx, RoundKey[rip]
	mov	BYTE PTR [rax+rcx], dl
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	edx, 2[rax]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	ecx, 2[rax]
	movsx	rax, edx
	lea	rdx, Key[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movsx	rax, ecx
	lea	rcx, RoundKey[rip]
	mov	BYTE PTR [rax+rcx], dl
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	edx, 3[rax]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	lea	ecx, 3[rax]
	movsx	rax, edx
	lea	rdx, Key[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movsx	rax, ecx
	lea	rcx, RoundKey[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	DWORD PTR -20[rbp], 1
.L5:
	mov	eax, DWORD PTR Nk[rip]
	cmp	DWORD PTR -20[rbp], eax
	jl	.L6
	jmp	.L7
.L12:
	mov	DWORD PTR -16[rbp], 0
	jmp	.L8
.L9:
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, 1
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -16[rbp]
	add	eax, edx
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	mov	BYTE PTR -12[rbp+rax], dl
	add	DWORD PTR -16[rbp], 1
.L8:
	cmp	DWORD PTR -16[rbp], 3
	jle	.L9
	mov	ecx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdq
	idiv	ecx
	mov	eax, edx
	test	eax, eax
	jne	.L10
	movzx	eax, BYTE PTR -12[rbp]
	mov	BYTE PTR -21[rbp], al
	movzx	eax, BYTE PTR -11[rbp]
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	mov	BYTE PTR -11[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -21[rbp]
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -12[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -11[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -11[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -9[rbp], al
	movzx	eax, BYTE PTR -12[rbp]
	mov	esi, eax
	mov	edi, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdq
	idiv	edi
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, Rcon[rip]
	mov	eax, DWORD PTR [rdx+rax]
	xor	eax, esi
	mov	BYTE PTR -12[rbp], al
	jmp	.L11
.L10:
	mov	eax, DWORD PTR Nk[rip]
	cmp	eax, 6
	jle	.L11
	mov	ecx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	cdq
	idiv	ecx
	mov	eax, edx
	cmp	eax, 4
	jne	.L11
	movzx	eax, BYTE PTR -12[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -12[rbp], al
	movzx	eax, BYTE PTR -11[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -11[rbp], al
	movzx	eax, BYTE PTR -10[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -10[rbp], al
	movzx	eax, BYTE PTR -9[rbp]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	BYTE PTR -9[rbp], al
.L11:
	mov	edx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	sal	eax, 2
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	movzx	edx, BYTE PTR -12[rbp]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	xor	ecx, edx
	cdqe
	lea	rdx, RoundKey[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	edx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	sal	eax, 2
	add	eax, 1
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	movzx	edx, BYTE PTR -11[rbp]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	add	eax, 1
	xor	ecx, edx
	cdqe
	lea	rdx, RoundKey[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	edx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	sal	eax, 2
	add	eax, 2
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	movzx	edx, BYTE PTR -10[rbp]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	add	eax, 2
	xor	ecx, edx
	cdqe
	lea	rdx, RoundKey[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	edx, DWORD PTR Nk[rip]
	mov	eax, DWORD PTR -20[rbp]
	sub	eax, edx
	sal	eax, 2
	add	eax, 3
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	movzx	edx, BYTE PTR -9[rbp]
	mov	eax, DWORD PTR -20[rbp]
	sal	eax, 2
	add	eax, 3
	xor	ecx, edx
	cdqe
	lea	rdx, RoundKey[rip]
	mov	BYTE PTR [rax+rdx], cl
	add	DWORD PTR -20[rbp], 1
.L7:
	mov	eax, DWORD PTR Nr[rip]
	add	eax, 1
	sal	eax, 2
	cmp	DWORD PTR -20[rbp], eax
	jl	.L12
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L13
	call	__stack_chk_fail@PLT
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	KeyExpansion, .-KeyExpansion
	.section	.rodata
.LC1:
	.string	"round :: %d\nkey :: "
.LC2:
	.string	"%2x "
	.text
	.globl	AddRoundKey
	.type	AddRoundKey, @function
AddRoundKey:
.LFB2:
	.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	DWORD PTR -20[rbp], edi
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC1[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -8[rbp], 0
	jmp	.L15
.L18:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L16
.L17:
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, state[rip]
	add	rax, rdx
	movzx	ecx, BYTE PTR [rax]
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -8[rbp]
	add	eax, edx
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	ecx, eax
	mov	edx, ecx
	mov	eax, DWORD PTR -8[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 2
	add	rcx, rax
	lea	rax, state[rip]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -8[rbp]
	add	eax, edx
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	cdqe
	lea	rdx, RoundKey[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -4[rbp], 1
.L16:
	cmp	DWORD PTR -4[rbp], 3
	jle	.L17
	add	DWORD PTR -8[rbp], 1
.L15:
	cmp	DWORD PTR -8[rbp], 3
	jle	.L18
	mov	edi, 10
	call	putchar@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	AddRoundKey, .-AddRoundKey
	.globl	SubBytes
	.type	SubBytes, @function
SubBytes:
.LFB3:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -8[rbp], 0
	jmp	.L20
.L23:
	mov	DWORD PTR -4[rbp], 0
	jmp	.L21
.L22:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, state[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edi, eax
	call	getSBoxValue
	mov	edx, eax
	mov	eax, DWORD PTR -4[rbp]
	movsx	rcx, eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 2
	add	rcx, rax
	lea	rax, state[rip]
	add	rax, rcx
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -4[rbp], 1
.L21:
	cmp	DWORD PTR -4[rbp], 3
	jle	.L22
	add	DWORD PTR -8[rbp], 1
.L20:
	cmp	DWORD PTR -8[rbp], 3
	jle	.L23
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	SubBytes, .-SubBytes
	.globl	ShiftRows
	.type	ShiftRows, @function
ShiftRows:
.LFB4:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movzx	eax, BYTE PTR state[rip+4]
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR state[rip+5]
	mov	BYTE PTR state[rip+4], al
	movzx	eax, BYTE PTR state[rip+6]
	mov	BYTE PTR state[rip+5], al
	movzx	eax, BYTE PTR state[rip+7]
	mov	BYTE PTR state[rip+6], al
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR state[rip+7], al
	movzx	eax, BYTE PTR state[rip+8]
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR state[rip+10]
	mov	BYTE PTR state[rip+8], al
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR state[rip+10], al
	movzx	eax, BYTE PTR state[rip+9]
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR state[rip+11]
	mov	BYTE PTR state[rip+9], al
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR state[rip+11], al
	movzx	eax, BYTE PTR state[rip+12]
	mov	BYTE PTR -1[rbp], al
	movzx	eax, BYTE PTR state[rip+15]
	mov	BYTE PTR state[rip+12], al
	movzx	eax, BYTE PTR state[rip+14]
	mov	BYTE PTR state[rip+15], al
	movzx	eax, BYTE PTR state[rip+13]
	mov	BYTE PTR state[rip+14], al
	movzx	eax, BYTE PTR -1[rbp]
	mov	BYTE PTR state[rip+13], al
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE4:
	.size	ShiftRows, .-ShiftRows
	.globl	MixColumns
	.type	MixColumns, @function
MixColumns:
.LFB5:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], 0
	jmp	.L26
.L27:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	mov	BYTE PTR -7[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+4]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+8]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+12]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	eax, ecx
	mov	BYTE PTR -6[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip]
	movzx	ecx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+4]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, eax
	mov	ecx, eax
	movzx	eax, BYTE PTR -5[rbp]
	shr	al, 7
	mov	edx, eax
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	movzx	eax, BYTE PTR -5[rbp]
	xor	al, BYTE PTR -6[rbp]
	mov	ecx, edx
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+4]
	movzx	ecx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+8]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, eax
	mov	ecx, eax
	movzx	eax, BYTE PTR -5[rbp]
	shr	al, 7
	mov	edx, eax
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+4]
	movzx	edx, BYTE PTR [rax+rdx]
	movzx	eax, BYTE PTR -5[rbp]
	xor	al, BYTE PTR -6[rbp]
	mov	ecx, edx
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+4]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+8]
	movzx	ecx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+12]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, eax
	mov	ecx, eax
	movzx	eax, BYTE PTR -5[rbp]
	shr	al, 7
	mov	edx, eax
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+8]
	movzx	edx, BYTE PTR [rax+rdx]
	movzx	eax, BYTE PTR -5[rbp]
	xor	al, BYTE PTR -6[rbp]
	mov	ecx, edx
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+8]
	mov	BYTE PTR [rax+rdx], cl
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+12]
	movzx	eax, BYTE PTR [rax+rdx]
	xor	al, BYTE PTR -7[rbp]
	mov	BYTE PTR -5[rbp], al
	movzx	eax, BYTE PTR -5[rbp]
	add	eax, eax
	mov	ecx, eax
	movzx	eax, BYTE PTR -5[rbp]
	shr	al, 7
	mov	edx, eax
	mov	eax, edx
	add	eax, eax
	add	eax, edx
	lea	edx, 0[0+rax*8]
	add	eax, edx
	xor	eax, ecx
	mov	BYTE PTR -5[rbp], al
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+12]
	movzx	edx, BYTE PTR [rax+rdx]
	movzx	eax, BYTE PTR -5[rbp]
	xor	al, BYTE PTR -6[rbp]
	mov	ecx, edx
	xor	ecx, eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	lea	rdx, state[rip+12]
	mov	BYTE PTR [rax+rdx], cl
	add	DWORD PTR -4[rbp], 1
.L26:
	cmp	DWORD PTR -4[rbp], 3
	jle	.L27
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE5:
	.size	MixColumns, .-MixColumns
	.globl	Cipher
	.type	Cipher, @function
Cipher:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	jmp	.L29
.L32:
	mov	DWORD PTR -8[rbp], 0
	jmp	.L30
.L31:
	mov	eax, DWORD PTR -12[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -8[rbp]
	add	eax, edx
	cdqe
	lea	rdx, in[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	mov	edx, DWORD PTR -12[rbp]
	movsx	rcx, edx
	mov	edx, DWORD PTR -8[rbp]
	movsx	rdx, edx
	sal	rdx, 2
	add	rcx, rdx
	lea	rdx, state[rip]
	add	rdx, rcx
	mov	BYTE PTR [rdx], al
	add	DWORD PTR -8[rbp], 1
.L30:
	cmp	DWORD PTR -8[rbp], 3
	jle	.L31
	add	DWORD PTR -12[rbp], 1
.L29:
	cmp	DWORD PTR -12[rbp], 3
	jle	.L32
	mov	edi, 0
	call	AddRoundKey
	mov	DWORD PTR -4[rbp], 1
	jmp	.L33
.L34:
	mov	eax, 0
	call	SubBytes
	mov	eax, 0
	call	ShiftRows
	mov	eax, 0
	call	MixColumns
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	AddRoundKey
	add	DWORD PTR -4[rbp], 1
.L33:
	mov	eax, DWORD PTR Nr[rip]
	cmp	DWORD PTR -4[rbp], eax
	jl	.L34
	mov	eax, 0
	call	SubBytes
	mov	eax, 0
	call	ShiftRows
	mov	eax, DWORD PTR Nr[rip]
	mov	edi, eax
	call	AddRoundKey
	mov	DWORD PTR -12[rbp], 0
	jmp	.L35
.L38:
	mov	DWORD PTR -8[rbp], 0
	jmp	.L36
.L37:
	mov	eax, DWORD PTR -12[rbp]
	lea	edx, 0[0+rax*4]
	mov	eax, DWORD PTR -8[rbp]
	lea	ecx, [rdx+rax]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 2
	add	rdx, rax
	lea	rax, state[rip]
	add	rax, rdx
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	lea	rcx, out[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	DWORD PTR -8[rbp], 1
.L36:
	cmp	DWORD PTR -8[rbp], 3
	jle	.L37
	add	DWORD PTR -12[rbp], 1
.L35:
	cmp	DWORD PTR -12[rbp], 3
	jle	.L38
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	Cipher, .-Cipher
	.section	.rodata
	.align 8
.LC3:
	.string	"Enter the length of Key(128, 192 or 256 only): "
.LC4:
	.string	"%d"
	.align 8
.LC5:
	.string	"Enter the Key in hexadecimal: "
.LC6:
	.string	"%x"
	.align 8
.LC7:
	.string	"Enter the PlainText in hexadecimal: "
.LC8:
	.string	"\nText after encryption:"
.LC9:
	.string	"\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	jmp	.L40
.L42:
	lea	rdi, .LC3[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rsi, Nr[rip]
	lea	rdi, .LC4[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
.L40:
	mov	eax, DWORD PTR Nr[rip]
	cmp	eax, 128
	je	.L41
	mov	eax, DWORD PTR Nr[rip]
	cmp	eax, 192
	je	.L41
	mov	eax, DWORD PTR Nr[rip]
	cmp	eax, 256
	jne	.L42
.L41:
	mov	eax, DWORD PTR Nr[rip]
	lea	edx, 31[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 5
	mov	DWORD PTR Nk[rip], eax
	mov	eax, DWORD PTR Nk[rip]
	add	eax, 6
	mov	DWORD PTR Nr[rip], eax
	movabs	rax, 506097522914230528
	movabs	rdx, 1084818905618843912
	mov	QWORD PTR -48[rbp], rax
	mov	QWORD PTR -40[rbp], rdx
	movabs	rax, 8603657889541918976
	movabs	rdx, -4822678189205112
	mov	QWORD PTR -32[rbp], rax
	mov	QWORD PTR -24[rbp], rdx
	mov	DWORD PTR -52[rbp], 0
	jmp	.L43
.L44:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	movzx	edx, BYTE PTR -48[rbp+rax]
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rcx, Key[rip]
	mov	BYTE PTR [rax+rcx], dl
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	movzx	edx, BYTE PTR -32[rbp+rax]
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rcx, in[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	DWORD PTR -52[rbp], 1
.L43:
	mov	eax, DWORD PTR Nk[rip]
	sal	eax, 2
	cmp	DWORD PTR -52[rbp], eax
	jl	.L44
	mov	edi, 0
	call	fflush@PLT
	lea	rdi, .LC5[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L45
.L46:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, Key[rip]
	add	rax, rdx
	mov	rsi, rax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	add	DWORD PTR -52[rbp], 1
.L45:
	mov	eax, DWORD PTR Nk[rip]
	sal	eax, 2
	cmp	DWORD PTR -52[rbp], eax
	jl	.L46
	lea	rdi, .LC7[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L47
.L48:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, in[rip]
	add	rax, rdx
	mov	rsi, rax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	add	DWORD PTR -52[rbp], 1
.L47:
	cmp	DWORD PTR -52[rbp], 15
	jle	.L48
	mov	eax, 0
	call	KeyExpansion
	mov	eax, 0
	call	Cipher
	lea	rdi, .LC8[rip]
	call	puts@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L49
.L50:
	mov	eax, DWORD PTR -52[rbp]
	cdqe
	lea	rdx, out[rip]
	movzx	eax, BYTE PTR [rax+rdx]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC2[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -52[rbp], 1
.L49:
	mov	eax, DWORD PTR Nk[rip]
	sal	eax, 2
	cmp	DWORD PTR -52[rbp], eax
	jl	.L50
	lea	rdi, .LC9[rip]
	call	puts@PLT
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L52
	call	__stack_chk_fail@PLT
.L52:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	main, .-main
	.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	"435691.c"
	.text
	.global	Nr
	.bss
	.align	2
	.type	Nr, %object
	.size	Nr, 4
Nr:
	.space	4
	.global	Nk
	.align	2
	.type	Nk, %object
	.size	Nk, 4
Nk:
	.space	4
	.comm	in,16,4
	.comm	out,16,4
	.comm	state,16,4
	.comm	RoundKey,240,4
	.comm	Key,32,4
	.section	.rodata
	.align	2
.LC0:
	.word	99
	.word	124
	.word	119
	.word	123
	.word	242
	.word	107
	.word	111
	.word	197
	.word	48
	.word	1
	.word	103
	.word	43
	.word	254
	.word	215
	.word	171
	.word	118
	.word	202
	.word	130
	.word	201
	.word	125
	.word	250
	.word	89
	.word	71
	.word	240
	.word	173
	.word	212
	.word	162
	.word	175
	.word	156
	.word	164
	.word	114
	.word	192
	.word	183
	.word	253
	.word	147
	.word	38
	.word	54
	.word	63
	.word	247
	.word	204
	.word	52
	.word	165
	.word	229
	.word	241
	.word	113
	.word	216
	.word	49
	.word	21
	.word	4
	.word	199
	.word	35
	.word	195
	.word	24
	.word	150
	.word	5
	.word	154
	.word	7
	.word	18
	.word	128
	.word	226
	.word	235
	.word	39
	.word	178
	.word	117
	.word	9
	.word	131
	.word	44
	.word	26
	.word	27
	.word	110
	.word	90
	.word	160
	.word	82
	.word	59
	.word	214
	.word	179
	.word	41
	.word	227
	.word	47
	.word	132
	.word	83
	.word	209
	.word	0
	.word	237
	.word	32
	.word	252
	.word	177
	.word	91
	.word	106
	.word	203
	.word	190
	.word	57
	.word	74
	.word	76
	.word	88
	.word	207
	.word	208
	.word	239
	.word	170
	.word	251
	.word	67
	.word	77
	.word	51
	.word	133
	.word	69
	.word	249
	.word	2
	.word	127
	.word	80
	.word	60
	.word	159
	.word	168
	.word	81
	.word	163
	.word	64
	.word	143
	.word	146
	.word	157
	.word	56
	.word	245
	.word	188
	.word	182
	.word	218
	.word	33
	.word	16
	.word	255
	.word	243
	.word	210
	.word	205
	.word	12
	.word	19
	.word	236
	.word	95
	.word	151
	.word	68
	.word	23
	.word	196
	.word	167
	.word	126
	.word	61
	.word	100
	.word	93
	.word	25
	.word	115
	.word	96
	.word	129
	.word	79
	.word	220
	.word	34
	.word	42
	.word	144
	.word	136
	.word	70
	.word	238
	.word	184
	.word	20
	.word	222
	.word	94
	.word	11
	.word	219
	.word	224
	.word	50
	.word	58
	.word	10
	.word	73
	.word	6
	.word	36
	.word	92
	.word	194
	.word	211
	.word	172
	.word	98
	.word	145
	.word	149
	.word	228
	.word	121
	.word	231
	.word	200
	.word	55
	.word	109
	.word	141
	.word	213
	.word	78
	.word	169
	.word	108
	.word	86
	.word	244
	.word	234
	.word	101
	.word	122
	.word	174
	.word	8
	.word	186
	.word	120
	.word	37
	.word	46
	.word	28
	.word	166
	.word	180
	.word	198
	.word	232
	.word	221
	.word	116
	.word	31
	.word	75
	.word	189
	.word	139
	.word	138
	.word	112
	.word	62
	.word	181
	.word	102
	.word	72
	.word	3
	.word	246
	.word	14
	.word	97
	.word	53
	.word	87
	.word	185
	.word	134
	.word	193
	.word	29
	.word	158
	.word	225
	.word	248
	.word	152
	.word	17
	.word	105
	.word	217
	.word	142
	.word	148
	.word	155
	.word	30
	.word	135
	.word	233
	.word	206
	.word	85
	.word	40
	.word	223
	.word	140
	.word	161
	.word	137
	.word	13
	.word	191
	.word	230
	.word	66
	.word	104
	.word	65
	.word	153
	.word	45
	.word	15
	.word	176
	.word	84
	.word	187
	.word	22
	.align	2
.LC1:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	getSBoxValue
	.syntax unified
	.arm
	.fpu softvfp
	.type	getSBoxValue, %function
getSBoxValue:
	@ args = 0, pretend = 0, frame = 1040
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1040
	str	r0, [fp, #-1040]
	ldr	r3, .L4
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L4+4
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r2
	mov	r2, #1024
	mov	r0, r3
	bl	memcpy
	ldr	r3, [fp, #-1040]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-1028]
	ldr	r2, .L4
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L3
	bl	__stack_chk_fail
.L3:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L5:
	.align	2
.L4:
	.word	.LC1
	.word	.LC0
	.size	getSBoxValue, .-getSBoxValue
	.global	Rcon
	.data
	.align	2
	.type	Rcon, %object
	.size	Rcon, 1020
Rcon:
	.word	141
	.word	1
	.word	2
	.word	4
	.word	8
	.word	16
	.word	32
	.word	64
	.word	128
	.word	27
	.word	54
	.word	108
	.word	216
	.word	171
	.word	77
	.word	154
	.word	47
	.word	94
	.word	188
	.word	99
	.word	198
	.word	151
	.word	53
	.word	106
	.word	212
	.word	179
	.word	125
	.word	250
	.word	239
	.word	197
	.word	145
	.word	57
	.word	114
	.word	228
	.word	211
	.word	189
	.word	97
	.word	194
	.word	159
	.word	37
	.word	74
	.word	148
	.word	51
	.word	102
	.word	204
	.word	131
	.word	29
	.word	58
	.word	116
	.word	232
	.word	203
	.word	141
	.word	1
	.word	2
	.word	4
	.word	8
	.word	16
	.word	32
	.word	64
	.word	128
	.word	27
	.word	54
	.word	108
	.word	216
	.word	171
	.word	77
	.word	154
	.word	47
	.word	94
	.word	188
	.word	99
	.word	198
	.word	151
	.word	53
	.word	106
	.word	212
	.word	179
	.word	125
	.word	250
	.word	239
	.word	197
	.word	145
	.word	57
	.word	114
	.word	228
	.word	211
	.word	189
	.word	97
	.word	194
	.word	159
	.word	37
	.word	74
	.word	148
	.word	51
	.word	102
	.word	204
	.word	131
	.word	29
	.word	58
	.word	116
	.word	232
	.word	203
	.word	141
	.word	1
	.word	2
	.word	4
	.word	8
	.word	16
	.word	32
	.word	64
	.word	128
	.word	27
	.word	54
	.word	108
	.word	216
	.word	171
	.word	77
	.word	154
	.word	47
	.word	94
	.word	188
	.word	99
	.word	198
	.word	151
	.word	53
	.word	106
	.word	212
	.word	179
	.word	125
	.word	250
	.word	239
	.word	197
	.word	145
	.word	57
	.word	114
	.word	228
	.word	211
	.word	189
	.word	97
	.word	194
	.word	159
	.word	37
	.word	74
	.word	148
	.word	51
	.word	102
	.word	204
	.word	131
	.word	29
	.word	58
	.word	116
	.word	232
	.word	203
	.word	141
	.word	1
	.word	2
	.word	4
	.word	8
	.word	16
	.word	32
	.word	64
	.word	128
	.word	27
	.word	54
	.word	108
	.word	216
	.word	171
	.word	77
	.word	154
	.word	47
	.word	94
	.word	188
	.word	99
	.word	198
	.word	151
	.word	53
	.word	106
	.word	212
	.word	179
	.word	125
	.word	250
	.word	239
	.word	197
	.word	145
	.word	57
	.word	114
	.word	228
	.word	211
	.word	189
	.word	97
	.word	194
	.word	159
	.word	37
	.word	74
	.word	148
	.word	51
	.word	102
	.word	204
	.word	131
	.word	29
	.word	58
	.word	116
	.word	232
	.word	203
	.word	141
	.word	1
	.word	2
	.word	4
	.word	8
	.word	16
	.word	32
	.word	64
	.word	128
	.word	27
	.word	54
	.word	108
	.word	216
	.word	171
	.word	77
	.word	154
	.word	47
	.word	94
	.word	188
	.word	99
	.word	198
	.word	151
	.word	53
	.word	106
	.word	212
	.word	179
	.word	125
	.word	250
	.word	239
	.word	197
	.word	145
	.word	57
	.word	114
	.word	228
	.word	211
	.word	189
	.word	97
	.word	194
	.word	159
	.word	37
	.word	74
	.word	148
	.word	51
	.word	102
	.word	204
	.word	131
	.word	29
	.word	58
	.word	116
	.word	232
	.word	203
	.global	__aeabi_idivmod
	.global	__aeabi_idiv
	.section	.rodata
	.align	2
.LC2:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	KeyExpansion
	.syntax unified
	.arm
	.fpu softvfp
	.type	KeyExpansion, %function
KeyExpansion:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #28
	ldr	r3, .L16
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-28]
	b	.L7
.L8:
	ldr	r3, [fp, #-28]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	ldr	r1, .L16+4
	ldrb	r1, [r1, r2]	@ zero_extendqisi2
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r2, r3, #1
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r1, .L16+4
	ldrb	r1, [r1, r2]	@ zero_extendqisi2
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r2, r3, #2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r1, .L16+4
	ldrb	r1, [r1, r2]	@ zero_extendqisi2
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r2, r3, #3
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r1, .L16+4
	ldrb	r1, [r1, r2]	@ zero_extendqisi2
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L7:
	ldr	r3, .L16+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L8
	b	.L9
.L14:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L10
.L11:
	ldr	r3, [fp, #-28]
	sub	r3, r3, #1
	lsl	r2, r3, #2
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldr	r2, .L16+8
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	sub	r2, fp, #20
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L10:
	ldr	r3, [fp, #-24]
	cmp	r3, #3
	ble	.L11
	ldr	r3, .L16+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	cmp	r3, #0
	bne	.L12
	ldrb	r3, [fp, #-20]
	strb	r3, [fp, #-29]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	strb	r3, [fp, #-18]
	ldrb	r3, [fp, #-29]
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-18]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r4, r3, #24
	ldr	r3, .L16+12
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	__aeabi_idiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L16+16
	ldr	r3, [r3, r2, lsl #2]
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r4
	lsl	r3, r3, #24
	asr	r3, r3, #24
	and	r3, r3, #255
	strb	r3, [fp, #-20]
	b	.L13
.L12:
	ldr	r3, .L16+12
	ldr	r3, [r3]
	cmp	r3, #6
	ble	.L13
	ldr	r3, .L16+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-28]
	mov	r1, r2
	mov	r0, r3
	bl	__aeabi_idivmod
	mov	r3, r1
	cmp	r3, #4
	bne	.L13
	ldrb	r3, [fp, #-20]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-20]
	ldrb	r3, [fp, #-19]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-19]
	ldrb	r3, [fp, #-18]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-18]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r3, r3, #255
	strb	r3, [fp, #-17]
.L13:
	ldr	r3, .L16+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	ldr	r2, .L16+8
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-20]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	eor	r2, r2, r1
	and	r1, r2, #255
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, .L16+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #1
	ldr	r2, .L16+8
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-19]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #1
	eor	r2, r2, r1
	and	r1, r2, #255
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, .L16+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #2
	ldr	r2, .L16+8
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-18]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #2
	eor	r2, r2, r1
	and	r1, r2, #255
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, .L16+12
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	add	r3, r3, #3
	ldr	r2, .L16+8
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-17]	@ zero_extendqisi2
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	add	r3, r3, #3
	eor	r2, r2, r1
	and	r1, r2, #255
	ldr	r2, .L16+8
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L9:
	ldr	r3, .L16+20
	ldr	r3, [r3]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L14
	nop
	ldr	r3, .L16
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L15
	bl	__stack_chk_fail
.L15:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L17:
	.align	2
.L16:
	.word	.LC2
	.word	Key
	.word	RoundKey
	.word	Nk
	.word	Rcon
	.word	Nr
	.size	KeyExpansion, .-KeyExpansion
	.section	.rodata
	.align	2
.LC3:
	.ascii	"round :: %d\012key :: \000"
	.align	2
.LC4:
	.ascii	"%2x \000"
	.text
	.align	2
	.global	AddRoundKey
	.syntax unified
	.arm
	.fpu softvfp
	.type	AddRoundKey, %function
AddRoundKey:
	@ 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, #-16]
	ldr	r1, [fp, #-16]
	ldr	r0, .L23
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L19
.L22:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L20
.L21:
	ldr	r2, .L23+4
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-16]
	lsl	r1, r3, #2
	ldr	r3, [fp, #-12]
	add	r3, r1, r3
	lsl	r1, r3, #2
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	ldr	r1, .L23+8
	ldrb	r3, [r1, r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r2, .L23+4
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	lsl	r2, r3, #2
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldr	r2, .L23+8
	ldrb	r3, [r2, r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L23+12
	bl	printf
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L20:
	ldr	r3, [fp, #-8]
	cmp	r3, #3
	ble	.L21
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L19:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L22
	mov	r0, #10
	bl	putchar
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L24:
	.align	2
.L23:
	.word	.LC3
	.word	state
	.word	RoundKey
	.word	.LC4
	.size	AddRoundKey, .-AddRoundKey
	.align	2
	.global	SubBytes
	.syntax unified
	.arm
	.fpu softvfp
	.type	SubBytes, %function
SubBytes:
	@ 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, #0
	str	r3, [fp, #-12]
	b	.L26
.L29:
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L27
.L28:
	ldr	r2, .L30
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	getSBoxValue
	mov	r3, r0
	and	r1, r3, #255
	ldr	r2, .L30
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L27:
	ldr	r3, [fp, #-8]
	cmp	r3, #3
	ble	.L28
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L26:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L29
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L31:
	.align	2
.L30:
	.word	state
	.size	SubBytes, .-SubBytes
	.align	2
	.global	ShiftRows
	.syntax unified
	.arm
	.fpu softvfp
	.type	ShiftRows, %function
ShiftRows:
	@ 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
	ldr	r3, .L33
	ldrb	r3, [r3, #4]
	strb	r3, [fp, #-5]
	ldr	r3, .L33
	ldrb	r2, [r3, #5]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #4]
	ldr	r3, .L33
	ldrb	r2, [r3, #6]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #5]
	ldr	r3, .L33
	ldrb	r2, [r3, #7]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #6]
	ldr	r2, .L33
	ldrb	r3, [fp, #-5]
	strb	r3, [r2, #7]
	ldr	r3, .L33
	ldrb	r3, [r3, #8]
	strb	r3, [fp, #-5]
	ldr	r3, .L33
	ldrb	r2, [r3, #10]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #8]
	ldr	r2, .L33
	ldrb	r3, [fp, #-5]
	strb	r3, [r2, #10]
	ldr	r3, .L33
	ldrb	r3, [r3, #9]
	strb	r3, [fp, #-5]
	ldr	r3, .L33
	ldrb	r2, [r3, #11]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #9]
	ldr	r2, .L33
	ldrb	r3, [fp, #-5]
	strb	r3, [r2, #11]
	ldr	r3, .L33
	ldrb	r3, [r3, #12]
	strb	r3, [fp, #-5]
	ldr	r3, .L33
	ldrb	r2, [r3, #15]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #12]
	ldr	r3, .L33
	ldrb	r2, [r3, #14]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #15]
	ldr	r3, .L33
	ldrb	r2, [r3, #13]	@ zero_extendqisi2
	ldr	r3, .L33
	strb	r2, [r3, #14]
	ldr	r2, .L33
	ldrb	r3, [fp, #-5]
	strb	r3, [r2, #13]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L34:
	.align	2
.L33:
	.word	state
	.size	ShiftRows, .-ShiftRows
	.align	2
	.global	MixColumns
	.syntax unified
	.arm
	.fpu softvfp
	.type	MixColumns, %function
MixColumns:
	@ 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, #0
	str	r3, [fp, #-8]
	b	.L36
.L37:
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r3, [r3]
	strb	r3, [fp, #-11]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	and	r2, r3, #255
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	and	r2, r3, #255
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #12
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	strb	r3, [fp, #-10]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #1
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsr	r3, r3, #7
	and	r3, r3, #255
	mov	r1, r3
	lsl	r1, r1, #1
	add	r3, r1, r3
	mov	r1, r3
	lsl	r0, r1, #3
	mov	r1, r3
	mov	r3, r0
	add	r3, r1, r3
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	strb	r3, [fp, #-9]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r1, [fp, #-9]
	ldrb	r3, [fp, #-10]
	eor	r3, r3, r1
	and	r3, r3, #255
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #4
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #8
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #1
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsr	r3, r3, #7
	and	r3, r3, #255
	mov	r1, r3
	lsl	r1, r1, #1
	add	r3, r1, r3
	mov	r1, r3
	lsl	r0, r1, #3
	mov	r1, r3
	mov	r3, r0
	add	r3, r1, r3
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	strb	r3, [fp, #-9]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #4
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r1, [fp, #-9]
	ldrb	r3, [fp, #-10]
	eor	r3, r3, r1
	and	r3, r3, #255
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #4
	mov	r2, r1
	strb	r2, [r3]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #8
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r1, .L38
	ldr	r3, [fp, #-8]
	add	r3, r1, r3
	add	r3, r3, #12
	ldrb	r3, [r3]	@ zero_extendqisi2
	eor	r3, r3, r2
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #1
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsr	r3, r3, #7
	and	r3, r3, #255
	mov	r1, r3
	lsl	r1, r1, #1
	add	r3, r1, r3
	mov	r1, r3
	lsl	r0, r1, #3
	mov	r1, r3
	mov	r3, r0
	add	r3, r1, r3
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	strb	r3, [fp, #-9]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #8
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r1, [fp, #-9]
	ldrb	r3, [fp, #-10]
	eor	r3, r3, r1
	and	r3, r3, #255
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #8
	mov	r2, r1
	strb	r2, [r3]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #12
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-11]
	eor	r3, r3, r2
	strb	r3, [fp, #-9]
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsl	r3, r3, #1
	lsl	r3, r3, #24
	asr	r2, r3, #24
	ldrb	r3, [fp, #-9]	@ zero_extendqisi2
	lsr	r3, r3, #7
	and	r3, r3, #255
	mov	r1, r3
	lsl	r1, r1, #1
	add	r3, r1, r3
	mov	r1, r3
	lsl	r0, r1, #3
	mov	r1, r3
	mov	r3, r0
	add	r3, r1, r3
	and	r3, r3, #255
	lsl	r3, r3, #24
	asr	r3, r3, #24
	eor	r3, r3, r2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	strb	r3, [fp, #-9]
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #12
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r1, [fp, #-9]
	ldrb	r3, [fp, #-10]
	eor	r3, r3, r1
	and	r3, r3, #255
	eor	r3, r3, r2
	and	r1, r3, #255
	ldr	r2, .L38
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	add	r3, r3, #12
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L36:
	ldr	r3, [fp, #-8]
	cmp	r3, #3
	ble	.L37
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L39:
	.align	2
.L38:
	.word	state
	.size	MixColumns, .-MixColumns
	.align	2
	.global	Cipher
	.syntax unified
	.arm
	.fpu softvfp
	.type	Cipher, %function
Cipher:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L41
.L44:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L42
.L43:
	ldr	r3, [fp, #-16]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldr	r2, .L51
	ldrb	r1, [r2, r3]	@ zero_extendqisi2
	ldr	r2, .L51+4
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #2
	add	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L42:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L43
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L41:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	ble	.L44
	mov	r0, #0
	bl	AddRoundKey
	mov	r3, #1
	str	r3, [fp, #-8]
	b	.L45
.L46:
	bl	SubBytes
	bl	ShiftRows
	bl	MixColumns
	ldr	r0, [fp, #-8]
	bl	AddRoundKey
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L45:
	ldr	r3, .L51+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	cmp	r2, r3
	blt	.L46
	bl	SubBytes
	bl	ShiftRows
	ldr	r3, .L51+8
	ldr	r3, [r3]
	mov	r0, r3
	bl	AddRoundKey
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L47
.L50:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L48
.L49:
	ldr	r3, [fp, #-16]
	lsl	r2, r3, #2
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldr	r1, .L51+4
	ldr	r2, [fp, #-12]
	lsl	r2, r2, #2
	add	r1, r1, r2
	ldr	r2, [fp, #-16]
	add	r2, r1, r2
	ldrb	r1, [r2]	@ zero_extendqisi2
	ldr	r2, .L51+12
	strb	r1, [r2, r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L48:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L49
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L47:
	ldr	r3, [fp, #-16]
	cmp	r3, #3
	ble	.L50
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L52:
	.align	2
.L51:
	.word	in
	.word	state
	.word	Nr
	.word	out
	.size	Cipher, .-Cipher
	.section	.rodata
	.align	2
.LC5:
	.ascii	"Enter the length of Key(128, 192 or 256 only): \000"
	.align	2
.LC6:
	.ascii	"%d\000"
	.align	2
.LC9:
	.ascii	"Enter the Key in hexadecimal: \000"
	.align	2
.LC10:
	.ascii	"%x\000"
	.align	2
.LC11:
	.ascii	"Enter the PlainText in hexadecimal: \000"
	.align	2
.LC12:
	.ascii	"\012Text after encryption:\000"
	.align	2
.LC13:
	.ascii	"\012\000"
	.align	2
.LC7:
	.ascii	"\000\001\002\003\004\005\006\007\010\011\012\013\014"
	.ascii	"\015\016\017"
	.align	2
.LC8:
	.ascii	"\000\021\"3DUfw\210\231\252\273\314\335\356\377"
	.align	2
.LC14:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	ldr	r3, .L67
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	b	.L54
.L56:
	ldr	r0, .L67+4
	bl	printf
	ldr	r1, .L67+8
	ldr	r0, .L67+12
	bl	__isoc99_scanf
.L54:
	ldr	r3, .L67+8
	ldr	r3, [r3]
	cmp	r3, #128
	beq	.L55
	ldr	r3, .L67+8
	ldr	r3, [r3]
	cmp	r3, #192
	beq	.L55
	ldr	r3, .L67+8
	ldr	r3, [r3]
	cmp	r3, #256
	bne	.L56
.L55:
	ldr	r3, .L67+8
	ldr	r3, [r3]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	mov	r2, r3
	ldr	r3, .L67+16
	str	r2, [r3]
	ldr	r3, .L67+16
	ldr	r3, [r3]
	add	r3, r3, #6
	ldr	r2, .L67+8
	str	r3, [r2]
	ldr	r3, .L67+20
	sub	ip, fp, #40
	ldm	r3, {r0, r1, r2, r3}
	stm	ip, {r0, r1, r2, r3}
	ldr	r3, .L67+24
	sub	ip, fp, #24
	ldm	r3, {r0, r1, r2, r3}
	stm	ip, {r0, r1, r2, r3}
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L57
.L58:
	sub	r2, fp, #40
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, .L67+28
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	sub	r2, fp, #24
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, .L67+32
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L57:
	ldr	r3, .L67+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	cmp	r2, r3
	blt	.L58
	mov	r0, #0
	bl	fflush
	ldr	r0, .L67+36
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L59
.L60:
	ldr	r3, [fp, #-44]
	ldr	r2, .L67+28
	add	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L67+40
	bl	__isoc99_scanf
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L59:
	ldr	r3, .L67+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	cmp	r2, r3
	blt	.L60
	ldr	r0, .L67+44
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L61
.L62:
	ldr	r3, [fp, #-44]
	ldr	r2, .L67+32
	add	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L67+40
	bl	__isoc99_scanf
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L61:
	ldr	r3, [fp, #-44]
	cmp	r3, #15
	ble	.L62
	bl	KeyExpansion
	bl	Cipher
	ldr	r0, .L67+48
	bl	puts
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L63
.L64:
	ldr	r2, .L67+52
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L67+56
	bl	printf
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L63:
	ldr	r3, .L67+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-44]
	cmp	r2, r3
	blt	.L64
	ldr	r0, .L67+60
	bl	puts
	nop
	ldr	r3, .L67
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L66
	bl	__stack_chk_fail
.L66:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L68:
	.align	2
.L67:
	.word	.LC14
	.word	.LC5
	.word	Nr
	.word	.LC6
	.word	Nk
	.word	.LC7
	.word	.LC8
	.word	Key
	.word	in
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	out
	.word	.LC4
	.word	.LC13
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
