	.file	"25733.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
.LC0:
	.string	"debug-level"
.LC1:
	.string	"version"
.LC2:
	.string	"help"
	.section	.data.rel.ro.local,"aw"
	.align 32
	.type	long_options, @object
	.size	long_options, 128
long_options:
	.quad	.LC0
	.long	1
	.zero	4
	.quad	0
	.long	100
	.zero	4
	.quad	.LC1
	.long	0
	.zero	4
	.quad	0
	.long	118
	.zero	4
	.quad	.LC2
	.long	0
	.zero	4
	.quad	0
	.long	104
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.data
	.align 32
	.type	env_time_table, @object
	.size	env_time_table, 1024
env_time_table:
	.long	0
	.long	1035721700
	.long	1027333092
	.long	1023048325
	.long	1018944484
	.long	1016482179
	.long	1014659717
	.long	1012314665
	.long	1010555876
	.long	1009187929
	.long	1008093571
	.long	1007198187
	.long	1006271109
	.long	1005008389
	.long	1003926057
	.long	1002988036
	.long	1002167268
	.long	1001443061
	.long	1000799321
	.long	1000223342
	.long	999704963
	.long	999235953
	.long	998809580
	.long	998420282
	.long	997882501
	.long	997225886
	.long	996619781
	.long	996058570
	.long	995537449
	.long	995052264
	.long	994599428
	.long	994175807
	.long	993778660
	.long	993405582
	.long	993054451
	.long	992723386
	.long	992410713
	.long	992114940
	.long	991834736
	.long	991568899
	.long	991316355
	.long	991076129
	.long	990847345
	.long	990629199
	.long	990420970
	.long	990221997
	.long	990031674
	.long	989843160
	.long	989493893
	.long	989158886
	.long	988837278
	.long	988528281
	.long	988231173
	.long	987945274
	.long	987669966
	.long	987404666
	.long	987148841
	.long	986901992
	.long	986663656
	.long	986433402
	.long	986210820
	.long	985995539
	.long	985787199
	.long	985585473
	.long	0
	.long	1060887524
	.long	1052498916
	.long	1048214149
	.long	1044110308
	.long	1041648003
	.long	1039825541
	.long	1037480489
	.long	1035721700
	.long	1034353753
	.long	1033259395
	.long	1032364011
	.long	1031436933
	.long	1030174213
	.long	1029091881
	.long	1028153860
	.long	1027333092
	.long	1026608885
	.long	1025965145
	.long	1025389167
	.long	1024870787
	.long	1024401777
	.long	1023975403
	.long	1023586106
	.long	1023048325
	.long	1022391710
	.long	1021785605
	.long	1021224396
	.long	1020703273
	.long	1020218090
	.long	1019765252
	.long	1019341630
	.long	1018944484
	.long	1018571407
	.long	1018220277
	.long	1017889210
	.long	1017576537
	.long	1017280764
	.long	1017000559
	.long	1016734723
	.long	1016482179
	.long	1016241954
	.long	1016013169
	.long	1015795024
	.long	1015586795
	.long	1015387821
	.long	1015197498
	.long	1015008981
	.long	1014659717
	.long	1014324710
	.long	1014003102
	.long	1013694107
	.long	1013396997
	.long	1013111098
	.long	1012835787
	.long	1012570489
	.long	1012314665
	.long	1012067817
	.long	1011829482
	.long	1011599225
	.long	1011376644
	.long	1011161361
	.long	1010953022
	.long	1010751297
	.long	0
	.long	1086053348
	.long	1077664740
	.long	1073379973
	.long	1069276132
	.long	1066813827
	.long	1064991365
	.long	1062646313
	.long	1060887524
	.long	1059519577
	.long	1058425219
	.long	1057529835
	.long	1056602757
	.long	1055340037
	.long	1054257705
	.long	1053319684
	.long	1052498916
	.long	1051774708
	.long	1051130969
	.long	1050554991
	.long	1050036611
	.long	1049567601
	.long	1049141227
	.long	1048751930
	.long	1048214149
	.long	1047557534
	.long	1046951429
	.long	1046390220
	.long	1045869097
	.long	1045383914
	.long	1044931076
	.long	1044507454
	.long	1044110308
	.long	1043737231
	.long	1043386101
	.long	1043055034
	.long	1042742361
	.long	1042446588
	.long	1042166383
	.long	1041900547
	.long	1041648003
	.long	1041407778
	.long	1041178993
	.long	1040960848
	.long	1040752619
	.long	1040553645
	.long	1040363322
	.long	1040174804
	.long	1039825541
	.long	1039490534
	.long	1039168926
	.long	1038859931
	.long	1038562821
	.long	1038276922
	.long	1038001612
	.long	1037736313
	.long	1037480489
	.long	1037233641
	.long	1036995306
	.long	1036765049
	.long	1036542468
	.long	1036327185
	.long	1036118846
	.long	1035917121
	.long	0
	.long	1111219172
	.long	1102830564
	.long	1098545797
	.long	1094441956
	.long	1091979651
	.long	1090157189
	.long	1087812137
	.long	1086053348
	.long	1084685401
	.long	1083591043
	.long	1082695659
	.long	1081768581
	.long	1080505861
	.long	1079423529
	.long	1078485508
	.long	1077664740
	.long	1076940532
	.long	1076296793
	.long	1075720815
	.long	1075202435
	.long	1074733425
	.long	1074307051
	.long	1073917754
	.long	1073379973
	.long	1072723358
	.long	1072117253
	.long	1071556044
	.long	1071034921
	.long	1070549738
	.long	1070096900
	.long	1069673278
	.long	1069276132
	.long	1068903055
	.long	1068551924
	.long	1068220858
	.long	1067908185
	.long	1067612412
	.long	1067332207
	.long	1067066371
	.long	1066813827
	.long	1066573602
	.long	1066344817
	.long	1066126672
	.long	1065918443
	.long	1065719469
	.long	1065529146
	.long	1065340628
	.long	1064991365
	.long	1064656358
	.long	1064334750
	.long	1064025755
	.long	1063728645
	.long	1063442746
	.long	1063167436
	.long	1062902137
	.long	1062646313
	.long	1062399465
	.long	1062161130
	.long	1061930873
	.long	1061708292
	.long	1061493009
	.long	1061284670
	.long	1061082945
	.section	.rodata
	.align 8
.LC3:
	.string	"http://www.mindwerks.net/projects/wildmidi/"
	.section	.data.rel.local,"aw"
	.align 8
	.type	PACKAGE_URL, @object
	.size	PACKAGE_URL, 8
PACKAGE_URL:
	.quad	.LC3
	.section	.rodata
	.align 8
.LC4:
	.string	"https://github.com/Mindwerks/wildmidi/issues"
	.section	.data.rel.local
	.align 8
	.type	PACKAGE_BUGREPORT, @object
	.size	PACKAGE_BUGREPORT, 8
PACKAGE_BUGREPORT:
	.quad	.LC4
	.section	.rodata
.LC5:
	.string	"0.4"
	.section	.data.rel.local
	.align 8
	.type	PACKAGE_VERSION, @object
	.size	PACKAGE_VERSION, 8
PACKAGE_VERSION:
	.quad	.LC5
	.section	.rodata
	.align 8
.LC6:
	.string	"DevTest for WildMIDI %s - For testing purposes only\n"
	.align 8
.LC7:
	.string	"Copyright (C) WildMIDI Developers 2001-2014"
	.align 8
.LC8:
	.string	"DevTest comes with ABSOLUTELY NO WARRANTY"
	.align 8
.LC9:
	.string	"This is free software, and you are welcome to redistribute it"
	.align 8
.LC10:
	.string	"under the terms and conditions of the GNU Lesser General Public License version 3."
	.align 8
.LC11:
	.string	"For more information see COPYING\n"
.LC12:
	.string	"Report bugs to %s\n"
.LC13:
	.string	"WildMIDI homepage at %s\n"
	.text
	.type	do_version, @function
do_version:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	rax, QWORD PTR PACKAGE_VERSION[rip]
	mov	rsi, rax
	lea	rdi, .LC6[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC7[rip]
	call	puts@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC9[rip]
	call	puts@PLT
	lea	rdi, .LC10[rip]
	call	puts@PLT
	lea	rdi, .LC11[rip]
	call	puts@PLT
	mov	rax, QWORD PTR PACKAGE_BUGREPORT[rip]
	mov	rsi, rax
	lea	rdi, .LC12[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR PACKAGE_URL[rip]
	mov	rsi, rax
	lea	rdi, .LC13[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 10
	call	putchar@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	do_version, .-do_version
	.section	.rodata
	.align 8
.LC14:
	.string	" -d N   --debug-level N    Verbose output"
	.align 8
.LC15:
	.string	" -h     --help             Display this information"
	.align 8
.LC16:
	.string	" -v     --version          Display version information\n"
	.text
	.type	do_help, @function
do_help:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	call	do_version
	lea	rdi, .LC14[rip]
	call	puts@PLT
	lea	rdi, .LC15[rip]
	call	puts@PLT
	lea	rdi, .LC16[rip]
	call	puts@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	do_help, .-do_help
	.section	.rodata
.LC17:
	.string	"~/"
.LC18:
	.string	"HOME"
	.align 8
.LC19:
	.string	"Unable to get ram to expand %s: %s\n"
.LC20:
	.string	"Unable to stat %s: %s\n"
.LC21:
	.string	"Unable to get ram for %s: %s\n"
.LC22:
	.string	"Unable to open %s: %s\n"
.LC23:
	.string	"Unable to read %s: %s\n"
	.text
	.type	DT_BufferFile, @function
DT_BufferFile:
.LFB8:
	.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, 1256
	.cfi_offset 3, -24
	mov	QWORD PTR -1256[rbp], rdi
	mov	QWORD PTR -1264[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -1224[rbp], 0
	mov	QWORD PTR -1240[rbp], 0
	mov	QWORD PTR -1232[rbp], 0
	mov	rax, QWORD PTR -1256[rbp]
	mov	edx, 2
	lea	rsi, .LC17[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L4
	call	getuid@PLT
	mov	edi, eax
	call	getpwuid@PLT
	mov	QWORD PTR -1216[rbp], rax
	cmp	QWORD PTR -1216[rbp], 0
	je	.L5
	mov	rax, QWORD PTR -1216[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	QWORD PTR -1240[rbp], rax
	jmp	.L6
.L5:
	lea	rdi, .LC18[rip]
	call	getenv@PLT
	mov	QWORD PTR -1240[rbp], rax
.L6:
	cmp	QWORD PTR -1240[rbp], 0
	je	.L7
	mov	rax, QWORD PTR -1256[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -1240[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, rbx
	add	rax, 1
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1232[rbp], rax
	cmp	QWORD PTR -1232[rbp], 0
	jne	.L8
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	jmp	.L20
.L8:
	mov	rdx, QWORD PTR -1240[rbp]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	rax, QWORD PTR -1256[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	jmp	.L7
.L4:
	mov	rax, QWORD PTR -1256[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	je	.L7
	lea	rax, -1056[rbp]
	mov	esi, 1024
	mov	rdi, rax
	call	getcwd@PLT
	mov	QWORD PTR -1224[rbp], rax
	cmp	QWORD PTR -1224[rbp], 0
	je	.L10
	mov	rax, QWORD PTR -1256[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rbx, rax
	lea	rax, -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, rbx
	add	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1232[rbp], rax
.L10:
	cmp	QWORD PTR -1232[rbp], 0
	je	.L11
	cmp	QWORD PTR -1224[rbp], 0
	jne	.L12
.L11:
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	jmp	.L20
.L12:
	lea	rdx, -1056[rbp]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	lea	rax, -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	sub	rax, 1
	movzx	eax, BYTE PTR -1056[rbp+rax]
	cmp	al, 47
	je	.L13
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1232[rbp]
	add	rax, rdx
	mov	WORD PTR [rax], 47
.L13:
	mov	rdx, QWORD PTR -1256[rbp]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
.L7:
	cmp	QWORD PTR -1232[rbp], 0
	jne	.L14
	mov	rax, QWORD PTR -1256[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, 1
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1232[rbp], rax
	cmp	QWORD PTR -1232[rbp], 0
	jne	.L15
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC19[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	jmp	.L20
.L15:
	mov	rdx, QWORD PTR -1256[rbp]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
.L14:
	lea	rdx, -1200[rbp]
	mov	rax, QWORD PTR -1232[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	stat@PLT
	test	eax, eax
	je	.L16
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC20[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L20
.L16:
	mov	rax, QWORD PTR -1152[rbp]
	mov	rdx, rax
	mov	rax, QWORD PTR -1264[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -1264[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -1208[rbp], rax
	cmp	QWORD PTR -1208[rbp], 0
	jne	.L17
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC21[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L20
.L17:
	mov	rax, QWORD PTR -1232[rbp]
	mov	esi, 0
	mov	rdi, rax
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -1244[rbp], eax
	cmp	DWORD PTR -1244[rbp], -1
	jne	.L18
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC22[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
	jmp	.L20
.L18:
	mov	rax, QWORD PTR -1264[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rcx, QWORD PTR -1208[rbp]
	mov	eax, DWORD PTR -1244[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	rdx, QWORD PTR -1152[rbp]
	cmp	rax, rdx
	je	.L19
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1256[rbp]
	mov	rsi, rax
	lea	rdi, .LC23[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1208[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, DWORD PTR -1244[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, 0
	jmp	.L20
.L19:
	mov	eax, DWORD PTR -1244[rbp]
	mov	edi, eax
	call	close@PLT
	mov	rax, QWORD PTR -1232[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -1208[rbp]
.L20:
	mov	rcx, QWORD PTR -24[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L21
	call	__stack_chk_fail@PLT
.L21:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	DT_BufferFile, .-DT_BufferFile
	.local	check_notes
	.comm	check_notes,2048,32
	.type	zero_check_notes, @function
zero_check_notes:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	zero_check_notes, .-zero_check_notes
	.type	count_check_notes, @function
count_check_notes:
.LFB10:
	.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 -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	jmp	.L24
.L28:
	mov	DWORD PTR -8[rbp], 0
	jmp	.L25
.L27:
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	sal	rax, 7
	add	rdx, rax
	lea	rax, check_notes[rip]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	jne	.L26
	add	DWORD PTR -4[rbp], 1
.L26:
	add	DWORD PTR -8[rbp], 1
.L25:
	cmp	DWORD PTR -8[rbp], 127
	jle	.L27
	add	DWORD PTR -12[rbp], 1
.L24:
	cmp	DWORD PTR -12[rbp], 15
	jle	.L28
	mov	eax, DWORD PTR -4[rbp]
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	count_check_notes, .-count_check_notes
	.section	.rodata
.LC24:
	.string	"Expected MIDI event"
	.align 8
.LC25:
	.string	"Note off: Missing or Corrupt MIDI Data"
	.align 8
.LC26:
	.string	"Note Off: chan(%i) note(%i) vel(%i)\n"
	.align 8
.LC27:
	.string	"Note On: Missing or Corrupt MIDI Data"
	.align 8
.LC28:
	.string	"Note On: chan(%i) note(%i) vel(%i)\n"
	.align 8
.LC29:
	.string	"Aftertouch: Missing or Corrupt MIDI Data"
	.align 8
.LC30:
	.string	"Aftertouch: chan(%i) note(%i) vel(%i)\n"
	.align 8
.LC31:
	.string	"Controller: Missing or Corrupt MIDI Data"
.LC32:
	.string	"Controller "
.LC33:
	.string	"Bank Select: "
.LC34:
	.string	"Data Entry Course: "
.LC35:
	.string	"Channel Volume: "
.LC36:
	.string	"Channel Balance: "
.LC37:
	.string	"Pan: "
.LC38:
	.string	"Channel Expression: "
.LC39:
	.string	"Data Entry Fine: "
.LC40:
	.string	"Channel Hold: "
.LC41:
	.string	"Data Increment: "
.LC42:
	.string	"Data Decrement: "
.LC43:
	.string	"Non-registered Param Fine: "
.LC44:
	.string	"Non-registered Param Course: "
.LC45:
	.string	"Registered Param Fine: "
.LC46:
	.string	"Registered Param Course: "
.LC47:
	.string	"Channel Sound Off: "
.LC48:
	.string	"Channel Controllers Off: "
.LC49:
	.string	"Channel Notes Off: "
.LC50:
	.string	" Unknown(%i): "
.LC51:
	.string	"chan(%i) set(%i)\n"
	.align 8
.LC52:
	.string	"Set Patch: Missing or Corrupt MIDI Data"
	.align 8
.LC53:
	.string	"Set Patch: chan(%i) patch(%i)\n"
	.align 8
.LC54:
	.string	"Channel Pressure: Missing or Corrupt MIDI Data"
	.align 8
.LC55:
	.string	"Channel Pressure: chan(%i) pres(%i)\n"
	.align 8
.LC56:
	.string	"Set Pitch: Missing or Corrupt MIDI Data"
	.align 8
.LC57:
	.string	"Set Pitch: chan(%i) pitch(%i)\n"
	.align 8
.LC58:
	.string	"Sysex Event which we mostly ignore"
.LC59:
	.string	"Zero Sysex size"
.LC60:
	.string	"Bad Sysex size %lu\n"
.LC61:
	.string	"Roland Sysex Checksum Error: "
.LC62:
	.string	"%02x "
	.align 8
.LC63:
	.string	"Additional Drum Channel(0x%02x) Setting: 0x%02x\n"
.LC64:
	.string	"GS Reset"
.LC65:
	.string	"Unknown Sysex: "
	.align 8
.LC66:
	.string	"Realtime Event: 0x%.2x ** NOTE: Not expected in midi file type data\n"
	.align 8
.LC67:
	.string	"Data too short: Missing MIDI Data"
	.align 8
.LC68:
	.string	"Corrupt MIDI Data, Bad Sequence Number Prefix"
	.align 8
.LC69:
	.string	"Meta Event: Sequence Number: %.2x %.2x\n"
.LC70:
	.string	"Meta Event: Text"
.LC71:
	.string	"Meta Event: Copyright"
.LC72:
	.string	"Meta Event: Trackname"
.LC73:
	.string	"Meta Event: Instrument Name"
.LC74:
	.string	"Meta Event: Lyric"
.LC75:
	.string	"Meta Event: Marker"
.LC76:
	.string	"Meta Event: Cue Point"
.LC77:
	.string	"Meta Event: End Of Track"
.LC78:
	.string	"========================\n"
.LC79:
	.string	"Missing or Corrupt MIDI Data"
.LC80:
	.string	"Meta Event: Channel Prefix: "
	.align 8
.LC81:
	.string	"Corrupt MIDI Data, Bad Channel Prefix"
.LC82:
	.string	"%i\n"
.LC83:
	.string	"Meta Event: Port Prefix: "
	.align 8
.LC84:
	.string	"Corrupt MIDI Data, Bad Port Prefix"
.LC85:
	.string	"Meta Event: Tempo"
.LC86:
	.string	"Corrupt MIDI Data, Bad Tempo"
	.align 8
.LC87:
	.string	"Corrupt MIDI Data, Bad SMPTE Offset Prefix"
	.align 8
.LC88:
	.string	"Meta Event: SMPTE Offset: %.2x %.2x %.2x %.2x %.2x\n"
	.align 8
.LC89:
	.string	"Corrupt MIDI Data, Bad Time Signature Prefix"
	.align 8
.LC90:
	.string	"Meta Event: Time Signature: %.2x %.2x %.2x %.2x\n"
	.align 8
.LC91:
	.string	"Corrupt MIDI Data, Bad Key Signature Prefix"
	.align 8
.LC92:
	.string	"Meta Event: Key Signature: %.2x %.2x\n"
.LC93:
	.string	"Meta Event: Unsupported (%i)\n"
.LC94:
	.string	"Meta data (%u bytes):"
.LC95:
	.string	"0x%.2x "
.LC96:
	.string	"%c "
	.align 8
.LC97:
	.string	"Corrupt Midi, Unknown Event Data"
	.text
	.type	check_midi_event, @function
check_midi_event:
.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, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	eax, edx
	mov	DWORD PTR -88[rbp], ecx
	mov	DWORD PTR -92[rbp], r8d
	mov	BYTE PTR -84[rbp], al
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -60[rbp], 0
	mov	BYTE PTR -63[rbp], 0
	mov	DWORD PTR -56[rbp], 0
	mov	DWORD PTR -52[rbp], 0
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L31
	cmp	BYTE PTR -84[rbp], 0
	je	.L32
	movzx	eax, BYTE PTR -84[rbp]
	mov	BYTE PTR -63[rbp], al
	jmp	.L33
.L32:
	lea	rdi, .LC24[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L31:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -63[rbp], al
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -60[rbp], 1
.L33:
	movzx	eax, BYTE PTR -63[rbp]
	shr	al, 4
	movzx	eax, al
	sub	eax, 8
	cmp	eax, 7
	ja	.L35
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L37[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L37[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L37:
	.long	.L44-.L37
	.long	.L43-.L37
	.long	.L42-.L37
	.long	.L41-.L37
	.long	.L40-.L37
	.long	.L39-.L37
	.long	.L38-.L37
	.long	.L36-.L37
	.text
.L44:
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L45
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L45
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L46
.L45:
	lea	rdi, .LC25[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L46:
	cmp	DWORD PTR -88[rbp], 0
	je	.L47
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	ecx, BYTE PTR -63[rbp]
	and	ecx, 15
	mov	esi, ecx
	mov	ecx, edx
	mov	edx, eax
	lea	rdi, .LC26[rip]
	mov	eax, 0
	call	printf@PLT
.L47:
	add	DWORD PTR -60[rbp], 2
	movzx	eax, BYTE PTR -63[rbp]
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movsx	rcx, eax
	movsx	rax, edx
	sal	rax, 7
	lea	rdx, [rax+rcx]
	lea	rax, check_notes[rip]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	jmp	.L35
.L43:
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L48
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L48
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L49
.L48:
	lea	rdi, .LC27[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L49:
	cmp	DWORD PTR -88[rbp], 0
	je	.L50
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	ecx, BYTE PTR -63[rbp]
	and	ecx, 15
	mov	esi, ecx
	mov	ecx, edx
	mov	edx, eax
	lea	rdi, .LC28[rip]
	mov	eax, 0
	call	printf@PLT
.L50:
	add	DWORD PTR -60[rbp], 2
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L51
	movzx	eax, BYTE PTR -63[rbp]
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movsx	rcx, eax
	movsx	rax, edx
	sal	rax, 7
	lea	rdx, [rax+rcx]
	lea	rax, check_notes[rip]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	jmp	.L35
.L51:
	movzx	eax, BYTE PTR -63[rbp]
	and	eax, 15
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movsx	rcx, eax
	movsx	rax, edx
	sal	rax, 7
	lea	rdx, [rax+rcx]
	lea	rax, check_notes[rip]
	add	rax, rdx
	mov	BYTE PTR [rax], 1
	jmp	.L35
.L42:
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L53
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L53
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L54
.L53:
	lea	rdi, .LC29[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L54:
	cmp	DWORD PTR -88[rbp], 0
	je	.L55
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	ecx, BYTE PTR -63[rbp]
	mov	esi, ecx
	and	esi, 15
	mov	ecx, edx
	mov	edx, eax
	lea	rdi, .LC30[rip]
	mov	eax, 0
	call	printf@PLT
.L55:
	add	DWORD PTR -60[rbp], 2
	jmp	.L35
.L41:
	mov	eax, DWORD PTR -92[rbp]
	and	eax, 1
	test	eax, eax
	jne	.L56
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L57
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L57
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L58
.L57:
	lea	rdi, .LC31[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L56:
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L59
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L58
.L59:
	lea	rdi, .LC31[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L58:
	cmp	DWORD PTR -88[rbp], 0
	je	.L60
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cmp	eax, 123
	ja	.L61
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L63[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L63[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L63:
	.long	.L79-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L78-.L63
	.long	.L77-.L63
	.long	.L76-.L63
	.long	.L61-.L63
	.long	.L75-.L63
	.long	.L74-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L73-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L72-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L71-.L63
	.long	.L70-.L63
	.long	.L69-.L63
	.long	.L68-.L63
	.long	.L67-.L63
	.long	.L66-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L61-.L63
	.long	.L65-.L63
	.long	.L64-.L63
	.long	.L61-.L63
	.long	.L62-.L63
	.text
.L79:
	lea	rdi, .LC33[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L78:
	lea	rdi, .LC34[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L77:
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L76:
	lea	rdi, .LC36[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L75:
	lea	rdi, .LC37[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L74:
	lea	rdi, .LC38[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L73:
	lea	rdi, .LC39[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L72:
	lea	rdi, .LC40[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L71:
	lea	rdi, .LC41[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L70:
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L69:
	lea	rdi, .LC43[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L68:
	lea	rdi, .LC44[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L67:
	lea	rdi, .LC45[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L66:
	lea	rdi, .LC46[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L65:
	lea	rdi, .LC47[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L64:
	lea	rdi, .LC48[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L62:
	lea	rdi, .LC49[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L80
.L61:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC50[rip]
	mov	eax, 0
	call	printf@PLT
.L80:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -63[rbp]
	mov	ecx, edx
	and	ecx, 15
	mov	edx, eax
	mov	esi, ecx
	lea	rdi, .LC51[rip]
	mov	eax, 0
	call	printf@PLT
.L60:
	add	DWORD PTR -60[rbp], 2
	jmp	.L35
.L40:
	cmp	QWORD PTR -80[rbp], 0
	je	.L81
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L82
.L81:
	lea	rdi, .LC52[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L82:
	cmp	DWORD PTR -88[rbp], 0
	je	.L83
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -63[rbp]
	mov	ecx, edx
	and	ecx, 15
	mov	edx, eax
	mov	esi, ecx
	lea	rdi, .LC53[rip]
	mov	eax, 0
	call	printf@PLT
.L83:
	add	DWORD PTR -60[rbp], 1
	jmp	.L35
.L39:
	cmp	QWORD PTR -80[rbp], 0
	je	.L84
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L85
.L84:
	lea	rdi, .LC54[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L85:
	cmp	DWORD PTR -88[rbp], 0
	je	.L86
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movzx	edx, BYTE PTR -63[rbp]
	mov	ecx, edx
	and	ecx, 15
	mov	edx, eax
	mov	esi, ecx
	lea	rdi, .LC55[rip]
	mov	eax, 0
	call	printf@PLT
.L86:
	add	DWORD PTR -60[rbp], 1
	jmp	.L35
.L38:
	cmp	QWORD PTR -80[rbp], 1
	jbe	.L87
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L87
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L88
.L87:
	lea	rdi, .LC56[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L88:
	cmp	DWORD PTR -88[rbp], 0
	je	.L89
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	edx, eax
	movzx	eax, BYTE PTR -63[rbp]
	and	eax, 15
	mov	esi, eax
	lea	rdi, .LC57[rip]
	mov	eax, 0
	call	printf@PLT
.L89:
	add	DWORD PTR -60[rbp], 2
	jmp	.L35
.L36:
	cmp	BYTE PTR -63[rbp], -16
	je	.L90
	cmp	BYTE PTR -63[rbp], -9
	jne	.L91
.L90:
	mov	QWORD PTR -48[rbp], 0
	mov	QWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	cmp	DWORD PTR -88[rbp], 0
	je	.L93
	lea	rdi, .LC58[rip]
	call	puts@PLT
	jmp	.L93
.L94:
	mov	rax, QWORD PTR -48[rbp]
	sal	rax, 7
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	rax, rdx
	mov	QWORD PTR -48[rbp], rax
	add	QWORD PTR -72[rbp], 1
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -60[rbp], 1
.L93:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L94
	mov	rax, QWORD PTR -48[rbp]
	sal	rax, 7
	mov	rdx, rax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	rax, rdx
	mov	QWORD PTR -48[rbp], rax
	add	QWORD PTR -72[rbp], 1
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -60[rbp], 1
	cmp	QWORD PTR -48[rbp], 0
	jne	.L95
	cmp	DWORD PTR -88[rbp], 0
	je	.L163
	lea	rdi, .LC59[rip]
	call	puts@PLT
	jmp	.L163
.L95:
	mov	rax, QWORD PTR -48[rbp]
	cmp	rax, QWORD PTR -80[rbp]
	jbe	.L97
	mov	rax, QWORD PTR -48[rbp]
	mov	rsi, rax
	lea	rdi, .LC60[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, -1
	jmp	.L34
.L97:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR -48[rbp]
	add	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	realloc@PLT
	mov	QWORD PTR -32[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	lea	rcx, [rdx+rax]
	mov	rdx, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -48[rbp]
	add	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, -1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, -9
	jne	.L98
	mov	QWORD PTR -40[rbp], 0
	mov	DWORD PTR -12[rbp], 306319425
	mov	rcx, QWORD PTR -32[rbp]
	lea	rax, -12[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L164
	mov	BYTE PTR -62[rbp], 0
	mov	QWORD PTR -40[rbp], 4
.L101:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	add	BYTE PTR -62[rbp], al
	movzx	eax, BYTE PTR -62[rbp]
	test	al, al
	jns	.L100
	add	BYTE PTR -62[rbp], -128
.L100:
	add	QWORD PTR -40[rbp], 1
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 1[rax]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, -9
	jne	.L101
	mov	eax, -128
	sub	al, BYTE PTR -62[rbp]
	mov	BYTE PTR -62[rbp], al
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	BYTE PTR -62[rbp], al
	je	.L102
	lea	rdi, .LC61[rip]
	mov	eax, 0
	call	printf@PLT
	mov	QWORD PTR -40[rbp], 0
.L103:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC62[rip]
	mov	eax, 0
	call	printf@PLT
	add	QWORD PTR -40[rbp], 1
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jne	.L103
	mov	edi, 10
	call	putchar@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, -1
	jmp	.L34
.L102:
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	cmp	al, 64
	jne	.L165
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 240
	cmp	eax, 16
	jne	.L105
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	cmp	al, 21
	jne	.L105
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	and	eax, 15
	mov	BYTE PTR -61[rbp], al
	cmp	BYTE PTR -61[rbp], 0
	jne	.L106
	mov	BYTE PTR -61[rbp], 9
	jmp	.L107
.L106:
	cmp	BYTE PTR -61[rbp], 9
	ja	.L107
	sub	BYTE PTR -61[rbp], 1
.L107:
	cmp	DWORD PTR -88[rbp], 0
	je	.L166
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	movzx	eax, BYTE PTR -61[rbp]
	mov	esi, eax
	lea	rdi, .LC63[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L166
.L105:
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L167
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	cmp	al, 127
	jne	.L167
	mov	rax, QWORD PTR -32[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L167
	cmp	DWORD PTR -88[rbp], 0
	je	.L98
	lea	rdi, .LC64[rip]
	call	puts@PLT
	jmp	.L98
.L164:
	nop
	jmp	.L99
.L165:
	nop
	jmp	.L99
.L167:
	nop
.L99:
	cmp	DWORD PTR -88[rbp], 0
	je	.L98
	lea	rdi, .LC65[rip]
	mov	eax, 0
	call	printf@PLT
	mov	QWORD PTR -40[rbp], 0
.L113:
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC62[rip]
	mov	eax, 0
	call	printf@PLT
	add	QWORD PTR -40[rbp], 1
	mov	rax, QWORD PTR -40[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jne	.L113
	mov	edi, 10
	call	putchar@PLT
	jmp	.L98
.L166:
	nop
.L98:
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	QWORD PTR -32[rbp], 0
	mov	rax, QWORD PTR -48[rbp]
	add	DWORD PTR -60[rbp], eax
	jmp	.L114
.L91:
	cmp	BYTE PTR -63[rbp], -1
	je	.L115
	cmp	BYTE PTR -63[rbp], -16
	jbe	.L115
	movzx	eax, BYTE PTR -63[rbp]
	mov	esi, eax
	lea	rdi, .LC66[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L114
.L115:
	cmp	BYTE PTR -63[rbp], -1
	jne	.L116
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L117
	cmp	QWORD PTR -80[rbp], 3
	ja	.L118
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L118:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 2
	je	.L119
	lea	rdi, .LC68[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L119:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L117:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	jne	.L121
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC70[rip]
	call	puts@PLT
	jmp	.L120
.L121:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 2
	jne	.L122
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC71[rip]
	call	puts@PLT
	jmp	.L120
.L122:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 3
	jne	.L123
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC72[rip]
	call	puts@PLT
	jmp	.L120
.L123:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 4
	jne	.L124
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC73[rip]
	call	puts@PLT
	jmp	.L120
.L124:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 5
	jne	.L125
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC74[rip]
	call	puts@PLT
	jmp	.L120
.L125:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 6
	jne	.L126
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC75[rip]
	call	puts@PLT
	jmp	.L120
.L126:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 7
	jne	.L127
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	lea	rdi, .LC76[rip]
	call	puts@PLT
	jmp	.L120
.L127:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	jne	.L128
	cmp	DWORD PTR -88[rbp], 0
	je	.L129
	lea	rdi, .LC77[rip]
	call	puts@PLT
	lea	rdi, .LC78[rip]
	call	puts@PLT
.L129:
	cmp	QWORD PTR -80[rbp], 1
	ja	.L130
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L130:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L120
	lea	rdi, .LC79[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L128:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	jne	.L131
	cmp	DWORD PTR -88[rbp], 0
	je	.L132
	lea	rdi, .LC80[rip]
	mov	eax, 0
	call	printf@PLT
.L132:
	cmp	QWORD PTR -80[rbp], 2
	ja	.L133
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L133:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	je	.L134
	lea	rdi, .LC81[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L134:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC82[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L131:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 33
	jne	.L135
	cmp	DWORD PTR -88[rbp], 0
	je	.L136
	lea	rdi, .LC83[rip]
	mov	eax, 0
	call	printf@PLT
.L136:
	cmp	QWORD PTR -80[rbp], 2
	ja	.L137
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L137:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	je	.L138
	lea	rdi, .LC84[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L138:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC82[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L135:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 81
	jne	.L139
	cmp	DWORD PTR -88[rbp], 0
	je	.L140
	lea	rdi, .LC85[rip]
	call	puts@PLT
.L140:
	cmp	QWORD PTR -80[rbp], 4
	ja	.L141
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L141:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 3
	je	.L120
	lea	rdi, .LC86[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L139:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 84
	jne	.L142
	cmp	QWORD PTR -80[rbp], 6
	ja	.L143
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L143:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 5
	je	.L144
	lea	rdi, .LC87[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L144:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	movzx	edi, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	esi, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	r9d, edi
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC88[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L142:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 88
	jne	.L145
	cmp	QWORD PTR -80[rbp], 5
	ja	.L146
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L146:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 4
	je	.L147
	lea	rdi, .LC89[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L147:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	esi, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC90[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L145:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 89
	jne	.L148
	cmp	QWORD PTR -80[rbp], 3
	ja	.L149
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L149:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 2
	je	.L150
	lea	rdi, .LC91[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L150:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC92[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L120
.L148:
	cmp	DWORD PTR -88[rbp], 0
	je	.L120
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC93[rip]
	mov	eax, 0
	call	printf@PLT
.L120:
	add	QWORD PTR -72[rbp], 1
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -60[rbp], 1
	mov	DWORD PTR -56[rbp], 0
	jmp	.L151
.L153:
	mov	eax, DWORD PTR -56[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -56[rbp], eax
	add	QWORD PTR -72[rbp], 1
	add	DWORD PTR -60[rbp], 1
	cmp	QWORD PTR -80[rbp], 0
	jne	.L152
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L152:
	sub	QWORD PTR -80[rbp], 1
.L151:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L153
	mov	eax, DWORD PTR -56[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -56[rbp], eax
	add	QWORD PTR -72[rbp], 1
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -60[rbp], 1
	mov	eax, DWORD PTR -56[rbp]
	cmp	QWORD PTR -80[rbp], rax
	jnb	.L154
	lea	rdi, .LC67[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L154:
	cmp	DWORD PTR -88[rbp], 0
	je	.L155
	cmp	DWORD PTR -56[rbp], 0
	je	.L155
	mov	eax, DWORD PTR -56[rbp]
	mov	esi, eax
	lea	rdi, .LC94[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -52[rbp], 0
	jmp	.L156
.L160:
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 3
	test	eax, eax
	jne	.L157
	mov	edi, 32
	call	putchar@PLT
.L157:
	mov	eax, DWORD PTR -52[rbp]
	and	eax, 7
	test	eax, eax
	jne	.L158
	mov	edi, 10
	call	putchar@PLT
.L158:
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC95[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	jbe	.L159
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC96[rip]
	mov	eax, 0
	call	printf@PLT
.L159:
	add	QWORD PTR -72[rbp], 1
	add	DWORD PTR -52[rbp], 1
.L156:
	mov	eax, DWORD PTR -52[rbp]
	cmp	eax, DWORD PTR -56[rbp]
	jb	.L160
	mov	edi, 10
	call	putchar@PLT
	jmp	.L161
.L155:
	mov	eax, DWORD PTR -56[rbp]
	add	QWORD PTR -72[rbp], rax
.L161:
	mov	eax, DWORD PTR -56[rbp]
	add	DWORD PTR -60[rbp], eax
	jmp	.L35
.L116:
	lea	rdi, .LC97[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L34
.L114:
	jmp	.L35
.L163:
	nop
.L35:
	mov	eax, DWORD PTR -60[rbp]
.L34:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L162
	call	__stack_chk_fail@PLT
.L162:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	check_midi_event, .-check_midi_event
	.local	time_mins
	.comm	time_mins,4,4
	.local	time_secs
	.comm	time_secs,4,4
	.local	secs_per_tick
	.comm	secs_per_tick,4,4
	.local	frequency
	.comm	frequency,4,4
	.type	set_secs_per_tick, @function
set_secs_per_tick:
.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	rax, QWORD PTR -32[rbp]
	test	rax, rax
	js	.L169
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L170
.L169:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L170:
	mov	rax, QWORD PTR -24[rbp]
	test	rax, rax
	js	.L171
	pxor	xmm1, xmm1
	cvtsi2ss	xmm1, rax
	jmp	.L172
.L171:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm1, xmm1
	cvtsi2ss	xmm1, rdx
	addss	xmm1, xmm1
.L172:
	divss	xmm0, xmm1
	movss	DWORD PTR -4[rbp], xmm0
	movss	xmm0, DWORD PTR -4[rbp]
	movss	xmm1, DWORD PTR .LC98[rip]
	divss	xmm0, xmm1
	movss	DWORD PTR secs_per_tick[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	set_secs_per_tick, .-set_secs_per_tick
	.type	add_time, @function
add_time:
.LFB13:
	.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 -20[rbp], edi
	mov	DWORD PTR -4[rbp], 0
	pxor	xmm1, xmm1
	cvtsi2ss	xmm1, DWORD PTR -20[rbp]
	movss	xmm0, DWORD PTR secs_per_tick[rip]
	mulss	xmm1, xmm0
	movss	xmm0, DWORD PTR time_secs[rip]
	addss	xmm0, xmm1
	movss	DWORD PTR time_secs[rip], xmm0
	movss	xmm0, DWORD PTR time_secs[rip]
	comiss	xmm0, DWORD PTR .LC99[rip]
	ja	.L180
	jmp	.L174
.L180:
	movss	xmm0, DWORD PTR time_secs[rip]
	movss	xmm1, DWORD PTR .LC99[rip]
	divss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	DWORD PTR -4[rbp], eax
	movss	xmm1, DWORD PTR time_secs[rip]
	mov	eax, DWORD PTR -4[rbp]
	imul	eax, eax, 60
	mov	eax, eax
	test	rax, rax
	js	.L177
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L178
.L177:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L178:
	subss	xmm1, xmm0
	movss	DWORD PTR time_secs[rip], xmm1
	mov	edx, DWORD PTR time_mins[rip]
	mov	eax, DWORD PTR -4[rbp]
	add	eax, edx
	mov	DWORD PTR time_mins[rip], eax
	nop
.L174:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	add_time, .-add_time
	.section	.rodata
.LC100:
	.string	"Time %.2i:%02.05f    "
	.text
	.type	display_time, @function
display_time:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	movss	xmm0, DWORD PTR time_secs[rip]
	pxor	xmm1, xmm1
	cvtss2sd	xmm1, xmm0
	movq	rdx, xmm1
	mov	eax, DWORD PTR time_mins[rip]
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC100[rip]
	mov	eax, 1
	call	printf@PLT
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	display_time, .-display_time
	.type	add_and_display_time, @function
add_and_display_time:
.LFB15:
	.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], edi
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	add_time
	call	display_time
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	add_and_display_time, .-add_and_display_time
	.type	reset_time, @function
reset_time:
.LFB16:
	.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 time_mins[rip], 0
	pxor	xmm0, xmm0
	movss	DWORD PTR time_secs[rip], xmm0
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	reset_time, .-reset_time
	.section	.rodata
	.align 8
.LC102:
	.string	"Not a valid MUS file: File too short"
	.align 8
.LC103:
	.string	"Not a valid MUS file: expected MUS followed by 0x1A"
.LC104:
	.string	"Song Offset: %i, Length: %i\n"
.LC105:
	.string	"Number of Instruments: %i\n"
.LC106:
	.string	"(%i) %i\n"
.LC109:
	.string	"Note Off 0x%.2x\n"
.LC110:
	.string	"Note On (0x%.2x): 0x%.2x\n"
.LC111:
	.string	"Note On (0x%.2x): [0x%.2x]\n"
.LC112:
	.string	"Pitch Bend 0x%.2x\n"
.LC113:
	.string	"System Controller: "
.LC114:
	.string	"All Sounds Off"
.LC115:
	.string	"All Notes Off"
.LC116:
	.string	"Mono"
.LC117:
	.string	"Poly"
.LC118:
	.string	"Reset All Controllers"
.LC119:
	.string	"Unsupported %i\n"
.LC120:
	.string	"Controller: "
.LC121:
	.string	"Patch 0x%.2x\n"
.LC122:
	.string	"Bank 0x%.2x\n"
.LC123:
	.string	"Modulation 0x%.2x\n"
.LC124:
	.string	"Volume 0x%.2x\n"
.LC125:
	.string	"Pan 0x%.2x\n"
.LC126:
	.string	"Expression 0x%.2x\n"
.LC127:
	.string	"Reverb 0x%.2x\n"
.LC128:
	.string	"Chorus 0x%.2x\n"
.LC129:
	.string	"Sustain 0x%.2x\n"
.LC130:
	.string	"Soft Pedal 0x%.2x\n"
.LC131:
	.string	"Unsupported 0x%.2x 0x%.2x\n"
.LC132:
	.string	"0x%.2x\n"
.LC133:
	.string	"End Of Song"
	.text
	.type	test_mus, @function
test_mus:
.LFB17:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	DWORD PTR -84[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -52[rbp], 0
	mov	DWORD PTR -44[rbp], 0
	mov	DWORD PTR -40[rbp], 0
	mov	WORD PTR -54[rbp], 0
	mov	WORD PTR -56[rbp], 0
	mov	BYTE PTR -57[rbp], 0
	mov	DWORD PTR -36[rbp], 441668941
	mov	QWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	DWORD PTR -48[rbp], 0
	cmp	QWORD PTR -80[rbp], 16
	ja	.L187
	lea	rdi, .LC102[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L243
.L187:
	lea	rcx, -36[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L189
	lea	rdi, .LC103[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L243
.L189:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	DWORD PTR -40[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 7
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 6
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L190
	mov	edx, DWORD PTR -40[rbp]
	mov	eax, DWORD PTR -44[rbp]
	mov	esi, eax
	lea	rdi, .LC104[rip]
	mov	eax, 0
	call	printf@PLT
.L190:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 13
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 12
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	WORD PTR -54[rbp], ax
	cmp	DWORD PTR -84[rbp], 0
	je	.L191
	movzx	eax, WORD PTR -54[rbp]
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	printf@PLT
.L191:
	mov	DWORD PTR -52[rbp], 16
	movzx	eax, WORD PTR -54[rbp]
	add	eax, eax
	mov	edx, eax
	mov	eax, DWORD PTR -52[rbp]
	add	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	add	eax, edx
	mov	eax, eax
	cmp	QWORD PTR -80[rbp], rax
	jnb	.L192
	lea	rdi, .LC102[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L243
.L192:
	cmp	DWORD PTR -84[rbp], 0
	je	.L193
.L194:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	ecx, eax
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	ecx, eax
	mov	edx, ecx
	movzx	eax, WORD PTR -56[rbp]
	mov	esi, eax
	lea	rdi, .LC106[rip]
	mov	eax, 0
	call	printf@PLT
	add	DWORD PTR -52[rbp], 2
	movzx	eax, WORD PTR -56[rbp]
	add	eax, 1
	mov	WORD PTR -56[rbp], ax
	movzx	eax, WORD PTR -56[rbp]
	cmp	ax, WORD PTR -54[rbp]
	jne	.L194
.L193:
	mov	eax, DWORD PTR -44[rbp]
	mov	DWORD PTR -52[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L246
	movss	xmm0, DWORD PTR frequency[rip]
	pxor	xmm1, xmm1
	ucomiss	xmm0, xmm1
	jp	.L196
	pxor	xmm1, xmm1
	ucomiss	xmm0, xmm1
	jne	.L196
	movss	xmm0, DWORD PTR .LC107[rip]
	movss	DWORD PTR frequency[rip], xmm0
.L196:
	movss	xmm1, DWORD PTR frequency[rip]
	movss	xmm0, DWORD PTR .LC108[rip]
	divss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	eax, eax
	mov	rsi, rax
	mov	edi, 60
	call	set_secs_per_tick
	mov	edi, 0
	call	add_and_display_time
	jmp	.L240
.L246:
	nop
.L195:
	jmp	.L240
.L255:
	nop
.L240:
	cmp	DWORD PTR -84[rbp], 0
	je	.L198
	call	display_time
.L198:
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	shr	al, 4
	movzx	eax, al
	and	eax, 7
	cmp	eax, 7
	ja	.L199
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L201[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L201[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L201:
	.long	.L208-.L201
	.long	.L207-.L201
	.long	.L206-.L201
	.long	.L205-.L201
	.long	.L204-.L201
	.long	.L203-.L201
	.long	.L202-.L201
	.long	.L200-.L201
	.text
.L208:
	mov	BYTE PTR -57[rbp], 2
	cmp	DWORD PTR -84[rbp], 0
	je	.L247
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC109[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L247
.L207:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L210
	mov	BYTE PTR -57[rbp], 3
	cmp	DWORD PTR -84[rbp], 0
	je	.L211
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	edx, DWORD PTR -52[rbp]
	add	edx, 1
	mov	ecx, edx
	mov	rdx, QWORD PTR -72[rbp]
	add	rdx, rcx
	movzx	edx, BYTE PTR [rdx]
	movzx	edx, dl
	mov	ecx, edx
	and	ecx, 127
	mov	edx, eax
	mov	esi, ecx
	lea	rdi, .LC110[rip]
	mov	eax, 0
	call	printf@PLT
.L211:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	mov	ecx, DWORD PTR -52[rbp]
	mov	rdx, QWORD PTR -72[rbp]
	add	rdx, rcx
	movzx	edx, BYTE PTR [rdx]
	movzx	edx, dl
	mov	ecx, edx
	and	ecx, 15
	movzx	edx, BYTE PTR [rax]
	movsx	rax, ecx
	mov	BYTE PTR -32[rbp+rax], dl
	jmp	.L248
.L210:
	mov	BYTE PTR -57[rbp], 2
	cmp	DWORD PTR -84[rbp], 0
	je	.L248
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 15
	cdqe
	movzx	eax, BYTE PTR -32[rbp+rax]
	movzx	edx, al
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	ecx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC111[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L248
.L206:
	mov	BYTE PTR -57[rbp], 2
	cmp	DWORD PTR -84[rbp], 0
	je	.L249
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC112[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L249
.L205:
	mov	BYTE PTR -57[rbp], 2
	cmp	DWORD PTR -84[rbp], 0
	je	.L250
	lea	rdi, .LC113[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sub	eax, 10
	cmp	eax, 4
	ja	.L215
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L217[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L217[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L217:
	.long	.L221-.L217
	.long	.L220-.L217
	.long	.L219-.L217
	.long	.L218-.L217
	.long	.L216-.L217
	.text
.L221:
	lea	rdi, .LC114[rip]
	call	puts@PLT
	jmp	.L214
.L220:
	lea	rdi, .LC115[rip]
	call	puts@PLT
	jmp	.L214
.L219:
	lea	rdi, .LC116[rip]
	call	puts@PLT
	jmp	.L214
.L218:
	lea	rdi, .LC117[rip]
	call	puts@PLT
	jmp	.L214
.L216:
	lea	rdi, .LC118[rip]
	call	puts@PLT
	jmp	.L214
.L215:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC119[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L199
.L250:
	nop
.L214:
	jmp	.L199
.L204:
	mov	BYTE PTR -57[rbp], 3
	cmp	DWORD PTR -84[rbp], 0
	je	.L251
	lea	rdi, .LC120[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cmp	eax, 9
	ja	.L223
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L225[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L225[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L225:
	.long	.L234-.L225
	.long	.L233-.L225
	.long	.L232-.L225
	.long	.L231-.L225
	.long	.L230-.L225
	.long	.L229-.L225
	.long	.L228-.L225
	.long	.L227-.L225
	.long	.L226-.L225
	.long	.L224-.L225
	.text
.L234:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC121[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L233:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC122[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L232:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC123[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L231:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC124[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L230:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sub	eax, 64
	mov	esi, eax
	lea	rdi, .LC125[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L229:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC126[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L228:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC127[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L227:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC128[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L226:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC129[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L224:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC130[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L222
.L223:
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	ecx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC131[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L199
.L251:
	nop
.L222:
	jmp	.L199
.L203:
	mov	BYTE PTR -57[rbp], 1
	cmp	DWORD PTR -84[rbp], 0
	je	.L252
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC132[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L252
.L202:
	cmp	DWORD PTR -84[rbp], 0
	je	.L253
	lea	rdi, .LC133[rip]
	call	puts@PLT
	jmp	.L253
.L200:
	mov	BYTE PTR -57[rbp], 1
	cmp	DWORD PTR -84[rbp], 0
	je	.L254
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC132[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L254
.L247:
	nop
	jmp	.L199
.L248:
	nop
	jmp	.L199
.L249:
	nop
	jmp	.L199
.L252:
	nop
	jmp	.L199
.L254:
	nop
.L199:
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L239
	movzx	eax, BYTE PTR -57[rbp]
	add	DWORD PTR -52[rbp], eax
	jmp	.L240
.L239:
	movzx	eax, BYTE PTR -57[rbp]
	add	DWORD PTR -52[rbp], eax
	mov	DWORD PTR -48[rbp], 0
.L241:
	mov	eax, DWORD PTR -48[rbp]
	sal	eax, 7
	mov	ecx, eax
	mov	edx, DWORD PTR -52[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, ecx
	mov	DWORD PTR -48[rbp], eax
	add	DWORD PTR -52[rbp], 1
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L241
	cmp	DWORD PTR -84[rbp], 0
	je	.L242
	mov	eax, DWORD PTR -48[rbp]
	mov	edi, eax
	call	add_time
.L242:
	mov	eax, DWORD PTR -52[rbp]
	cmp	QWORD PTR -80[rbp], rax
	ja	.L255
	jmp	.L237
.L253:
	nop
.L237:
	mov	eax, 0
.L243:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L244
	call	__stack_chk_fail@PLT
.L244:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	test_mus, .-test_mus
	.section	.rodata
.LC134:
	.string	"HMI-MIDISONG061595"
	.align 8
.LC135:
	.string	"Not a valid HMI file: expected HMI-MIDISONG061595"
.LC136:
	.string	"Beats per minute: %u\n"
.LC137:
	.string	"Track count: %i\n"
.LC138:
	.string	"Track %i offset: %.8x\n"
.LC139:
	.string	"HMI-MIDITRACK"
	.align 8
.LC140:
	.string	"Not a valid HMI file: expected HMI-MIDITRACK"
.LC141:
	.string	"Start of track %u\n"
.LC142:
	.string	"Track header length: %u\n"
.LC143:
	.string	"Skipping HMI event"
.LC144:
	.string	"Note Length: %f secs\n"
	.text
	.type	test_hmi, @function
test_hmi:
.LFB18:
	.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	DWORD PTR -68[rbp], edx
	mov	WORD PTR -42[rbp], 0
	mov	DWORD PTR -24[rbp], 0
	mov	DWORD PTR -40[rbp], 0
	mov	QWORD PTR -8[rbp], 0
	mov	DWORD PTR -36[rbp], 0
	mov	DWORD PTR -32[rbp], 0
	mov	DWORD PTR -28[rbp], 0
	mov	DWORD PTR -20[rbp], 0
	mov	BYTE PTR -43[rbp], 0
	mov	DWORD PTR -16[rbp], 0
	mov	rax, QWORD PTR -64[rbp]
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 18
	lea	rsi, .LC134[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L257
	lea	rdi, .LC135[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L258
.L257:
	add	QWORD PTR -56[rbp], 212
	sub	QWORD PTR -64[rbp], 212
	add	DWORD PTR -36[rbp], 212
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	WORD PTR -42[rbp], ax
	cmp	DWORD PTR -68[rbp], 0
	je	.L259
	movzx	eax, WORD PTR -42[rbp]
	mov	esi, eax
	lea	rdi, .LC136[rip]
	mov	eax, 0
	call	printf@PLT
	movzx	eax, WORD PTR -42[rbp]
	pxor	xmm1, xmm1
	cvtsi2ss	xmm1, eax
	movss	xmm0, DWORD PTR .LC108[rip]
	divss	xmm0, xmm1
	cvttss2si	rax, xmm0
	mov	eax, eax
	mov	rsi, rax
	mov	edi, 60
	call	set_secs_per_tick
	mov	eax, 0
	call	reset_time
.L259:
	add	QWORD PTR -56[rbp], 15
	sub	QWORD PTR -64[rbp], 16
	add	DWORD PTR -36[rbp], 16
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -24[rbp], eax
	sub	QWORD PTR -64[rbp], 1
	cmp	DWORD PTR -68[rbp], 0
	je	.L260
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC137[rip]
	mov	eax, 0
	call	printf@PLT
.L260:
	mov	eax, DWORD PTR -24[rbp]
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	add	DWORD PTR -36[rbp], 1
	add	QWORD PTR -56[rbp], 141
	sub	QWORD PTR -64[rbp], 141
	add	DWORD PTR -36[rbp], 141
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -8[rbp]
	mov	DWORD PTR [rax], edx
	mov	DWORD PTR -40[rbp], 0
	jmp	.L261
.L263:
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	mov	edx, DWORD PTR -40[rbp]
	lea	rcx, 0[0+rdx*4]
	mov	rdx, QWORD PTR -8[rbp]
	add	rdx, rcx
	movzx	eax, al
	mov	DWORD PTR [rdx], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	lea	rcx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	mov	ecx, DWORD PTR [rax]
	mov	esi, edx
	mov	eax, DWORD PTR -40[rbp]
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	lea	edx, [rcx+rsi]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	lea	rcx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	mov	ecx, DWORD PTR [rax]
	mov	esi, edx
	mov	eax, DWORD PTR -40[rbp]
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	lea	edx, [rcx+rsi]
	mov	DWORD PTR [rax], edx
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	lea	rcx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rcx
	mov	ecx, DWORD PTR [rax]
	mov	esi, edx
	mov	eax, DWORD PTR -40[rbp]
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	lea	edx, [rcx+rsi]
	mov	DWORD PTR [rax], edx
	sub	QWORD PTR -64[rbp], 4
	cmp	DWORD PTR -68[rbp], 0
	je	.L262
	mov	eax, DWORD PTR -40[rbp]
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, eax
	lea	rdi, .LC138[rip]
	mov	eax, 0
	call	printf@PLT
.L262:
	add	DWORD PTR -36[rbp], 4
	add	DWORD PTR -40[rbp], 1
.L261:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -24[rbp]
	jb	.L263
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	sub	eax, DWORD PTR -36[rbp]
	mov	eax, eax
	sub	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	sub	eax, DWORD PTR -36[rbp]
	mov	eax, eax
	add	QWORD PTR -56[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -36[rbp], eax
	mov	DWORD PTR -40[rbp], 0
	jmp	.L264
.L294:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 13
	lea	rsi, .LC139[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L265
	lea	rdi, .LC140[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, -1
	jmp	.L258
.L265:
	cmp	DWORD PTR -68[rbp], 0
	je	.L266
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, eax
	lea	rdi, .LC141[rip]
	mov	eax, 0
	call	printf@PLT
.L266:
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 87
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 88
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 89
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 90
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -68[rbp], 0
	je	.L267
	mov	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	lea	rdi, .LC142[rip]
	mov	eax, 0
	call	printf@PLT
.L267:
	mov	eax, DWORD PTR -16[rbp]
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -16[rbp]
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -16[rbp]
	add	DWORD PTR -36[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	sub	eax, 1
	cmp	DWORD PTR -40[rbp], eax
	jnb	.L268
	mov	eax, DWORD PTR -40[rbp]
	add	eax, 1
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -28[rbp], eax
	jmp	.L269
.L268:
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -28[rbp], eax
.L269:
	cmp	DWORD PTR -68[rbp], 0
	je	.L271
	mov	eax, 0
	call	reset_time
	jmp	.L271
.L293:
	mov	DWORD PTR -32[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L272
	jmp	.L273
.L274:
	mov	eax, DWORD PTR -32[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -32[rbp], eax
	add	QWORD PTR -56[rbp], 1
	sub	QWORD PTR -64[rbp], 1
	add	DWORD PTR -36[rbp], 1
.L273:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L274
.L272:
	mov	eax, DWORD PTR -32[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -68[rbp], 0
	je	.L275
	mov	eax, DWORD PTR -32[rbp]
	mov	edi, eax
	call	add_and_display_time
.L275:
	add	QWORD PTR -56[rbp], 1
	sub	QWORD PTR -64[rbp], 1
	add	DWORD PTR -36[rbp], 1
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -2
	jne	.L276
	cmp	DWORD PTR -68[rbp], 0
	je	.L277
	lea	rdi, .LC143[rip]
	call	puts@PLT
.L277:
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 16
	jne	.L278
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, 5
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	add	eax, 5
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	rax, 5
	add	QWORD PTR -56[rbp], rax
	jmp	.L279
.L278:
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 21
	jne	.L279
	sub	QWORD PTR -64[rbp], 4
	add	DWORD PTR -36[rbp], 4
	add	QWORD PTR -56[rbp], 4
.L279:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	add	DWORD PTR -36[rbp], 4
	jmp	.L271
.L276:
	movzx	edx, BYTE PTR -43[rbp]
	mov	ecx, DWORD PTR -68[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	r8d, 0
	mov	rdi, rax
	call	check_midi_event
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], -1
	jne	.L280
	lea	rdi, .LC79[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, -1
	jmp	.L258
.L280:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -16
	je	.L281
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -9
	jne	.L282
.L281:
	mov	BYTE PTR -43[rbp], 0
	jmp	.L283
.L282:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -17
	ja	.L283
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L283
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -43[rbp], al
.L283:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L284
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	jne	.L284
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L284
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	add	DWORD PTR -36[rbp], eax
	jmp	.L285
.L284:
	movzx	eax, BYTE PTR -43[rbp]
	and	eax, 240
	cmp	eax, 144
	jne	.L286
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	add	DWORD PTR -36[rbp], eax
	mov	DWORD PTR -32[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L287
	jmp	.L288
.L289:
	mov	eax, DWORD PTR -32[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -32[rbp], eax
	add	QWORD PTR -56[rbp], 1
	sub	QWORD PTR -64[rbp], 1
	add	DWORD PTR -36[rbp], 1
.L288:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L289
.L287:
	mov	eax, DWORD PTR -32[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -68[rbp], 0
	je	.L290
	mov	eax, DWORD PTR -32[rbp]
	test	rax, rax
	js	.L291
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L292
.L291:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L292:
	movss	xmm1, DWORD PTR secs_per_tick[rip]
	mulss	xmm0, xmm1
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	movq	rax, xmm2
	movq	xmm0, rax
	lea	rdi, .LC144[rip]
	mov	eax, 1
	call	printf@PLT
.L290:
	add	QWORD PTR -56[rbp], 1
	sub	QWORD PTR -64[rbp], 1
	add	DWORD PTR -36[rbp], 1
	jmp	.L271
.L286:
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	add	DWORD PTR -36[rbp], eax
.L271:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jb	.L293
.L285:
	add	DWORD PTR -40[rbp], 1
.L264:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -24[rbp]
	jb	.L294
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
.L258:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	test_hmi, .-test_hmi
	.section	.rodata
.LC145:
	.string	"HMIMIDIP"
	.align 8
.LC146:
	.string	"Not a valid HMP file: expected HMIMIDIP"
.LC147:
	.string	"013195"
.LC148:
	.string	"HMPv2 format detected"
.LC149:
	.string	"Not a valid HMP file"
.LC150:
	.string	"File length: %u\n"
.LC151:
	.string	"Number of chunks: %u\n"
.LC152:
	.string	"Song Time: %u\n"
.LC153:
	.string	"Chunk number: %u\n"
.LC154:
	.string	"Chunk length: %u\n"
.LC155:
	.string	"File too short"
.LC156:
	.string	"Track Number: %u\n"
.LC157:
	.string	"HMP Loop Start"
.LC158:
	.string	"HMP Loop End"
	.text
	.type	test_hmp, @function
test_hmp:
.LFB19:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 96
	mov	QWORD PTR -72[rbp], rdi
	mov	QWORD PTR -80[rbp], rsi
	mov	DWORD PTR -84[rbp], edx
	mov	BYTE PTR -53[rbp], 0
	mov	DWORD PTR -52[rbp], 0
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -44[rbp], 0
	mov	DWORD PTR -32[rbp], 0
	mov	DWORD PTR -28[rbp], 0
	mov	DWORD PTR -24[rbp], 0
	mov	DWORD PTR -20[rbp], 0
	mov	DWORD PTR -16[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -40[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 8
	lea	rsi, .LC145[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L296
	lea	rdi, .LC146[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L297
.L296:
	add	QWORD PTR -72[rbp], 8
	sub	QWORD PTR -80[rbp], 8
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, 6
	lea	rsi, .LC147[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L298
	mov	BYTE PTR -53[rbp], 1
	add	QWORD PTR -72[rbp], 6
	sub	QWORD PTR -80[rbp], 6
	cmp	DWORD PTR -84[rbp], 0
	je	.L298
	lea	rdi, .LC148[rip]
	call	puts@PLT
.L298:
	cmp	BYTE PTR -53[rbp], 0
	je	.L299
	mov	DWORD PTR -52[rbp], 18
	jmp	.L300
.L299:
	mov	DWORD PTR -52[rbp], 24
.L300:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L301
.L303:
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -72[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L302
	lea	rdi, .LC149[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L297
.L302:
	add	DWORD PTR -48[rbp], 1
.L301:
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jb	.L303
	mov	eax, DWORD PTR -52[rbp]
	add	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR -52[rbp]
	sub	QWORD PTR -80[rbp], rax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -32[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L304
	mov	eax, DWORD PTR -32[rbp]
	mov	esi, eax
	lea	rdi, .LC150[rip]
	mov	eax, 0
	call	printf@PLT
.L304:
	add	QWORD PTR -72[rbp], 12
	sub	QWORD PTR -80[rbp], 16
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L305
	mov	eax, DWORD PTR -28[rbp]
	mov	esi, eax
	lea	rdi, .LC151[rip]
	mov	eax, 0
	call	printf@PLT
.L305:
	add	QWORD PTR -72[rbp], 4
	sub	QWORD PTR -80[rbp], 8
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -16[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L306
	mov	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	lea	rdi, .LC136[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -16[rbp]
	test	rax, rax
	js	.L307
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L308
.L307:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L308:
	movss	xmm1, DWORD PTR .LC108[rip]
	divss	xmm1, xmm0
	cvttss2si	rax, xmm1
	mov	eax, eax
	mov	rsi, rax
	mov	edi, 60
	call	set_secs_per_tick
.L306:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -12[rbp], eax
	sub	QWORD PTR -80[rbp], 8
	cmp	DWORD PTR -84[rbp], 0
	je	.L309
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, .LC152[rip]
	mov	eax, 0
	call	printf@PLT
.L309:
	cmp	BYTE PTR -53[rbp], 0
	je	.L310
	add	QWORD PTR -72[rbp], 840
	sub	QWORD PTR -80[rbp], 840
	jmp	.L311
.L310:
	add	QWORD PTR -72[rbp], 712
	sub	QWORD PTR -80[rbp], 712
.L311:
	mov	DWORD PTR -48[rbp], 0
	jmp	.L312
.L325:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -24[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -24[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -24[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -24[rbp], eax
	sub	QWORD PTR -80[rbp], 4
	cmp	DWORD PTR -84[rbp], 0
	je	.L313
	mov	eax, DWORD PTR -24[rbp]
	mov	esi, eax
	lea	rdi, .LC153[rip]
	mov	eax, 0
	call	printf@PLT
.L313:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -20[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -20[rbp], eax
	sub	QWORD PTR -80[rbp], 4
	cmp	DWORD PTR -84[rbp], 0
	je	.L314
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC154[rip]
	mov	eax, 0
	call	printf@PLT
.L314:
	mov	eax, DWORD PTR -20[rbp]
	cmp	QWORD PTR -80[rbp], rax
	jnb	.L315
	lea	rdi, .LC155[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L297
.L315:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	add	DWORD PTR -8[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	add	DWORD PTR -8[rbp], eax
	sub	QWORD PTR -80[rbp], 4
	cmp	DWORD PTR -84[rbp], 0
	je	.L316
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC156[rip]
	mov	eax, 0
	call	printf@PLT
.L316:
	sub	DWORD PTR -20[rbp], 12
	mov	DWORD PTR -44[rbp], 0
	jmp	.L317
.L324:
	mov	DWORD PTR -36[rbp], 0
	mov	DWORD PTR -40[rbp], 0
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L318
.L319:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	mov	edx, eax
	mov	eax, DWORD PTR -36[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	DWORD PTR -40[rbp], eax
	add	DWORD PTR -36[rbp], 7
	sub	QWORD PTR -80[rbp], 1
	add	DWORD PTR -44[rbp], 1
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L319
.L318:
	mov	rax, QWORD PTR -72[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -72[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	mov	edx, eax
	mov	eax, DWORD PTR -36[rbp]
	mov	ecx, eax
	sal	edx, cl
	mov	eax, edx
	or	DWORD PTR -40[rbp], eax
	sub	QWORD PTR -80[rbp], 1
	cmp	DWORD PTR -84[rbp], 0
	je	.L320
	mov	eax, DWORD PTR -40[rbp]
	mov	edi, eax
	call	add_and_display_time
.L320:
	mov	edx, DWORD PTR -84[rbp]
	mov	rsi, QWORD PTR -80[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	r8d, 1
	mov	ecx, edx
	mov	edx, 0
	mov	rdi, rax
	call	check_midi_event
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L321
	lea	rdi, .LC79[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L297
.L321:
	cmp	DWORD PTR -24[rbp], 1
	jne	.L322
	mov	rax, QWORD PTR -72[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 240
	cmp	eax, 176
	jne	.L322
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 110
	jne	.L323
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L323
	cmp	DWORD PTR -84[rbp], 0
	je	.L323
	lea	rdi, .LC157[rip]
	call	puts@PLT
.L323:
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 111
	jne	.L322
	mov	rax, QWORD PTR -72[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	cmp	al, -128
	jne	.L322
	cmp	DWORD PTR -84[rbp], 0
	je	.L322
	lea	rdi, .LC158[rip]
	call	puts@PLT
.L322:
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -44[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	QWORD PTR -72[rbp], rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sub	QWORD PTR -80[rbp], rax
	add	DWORD PTR -44[rbp], 1
.L317:
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jb	.L324
	add	DWORD PTR -48[rbp], 1
.L312:
	mov	eax, DWORD PTR -48[rbp]
	cmp	eax, DWORD PTR -28[rbp]
	jb	.L325
	mov	eax, 0
.L297:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	test_hmp, .-test_hmp
	.section	.rodata
.LC159:
	.string	"FORM"
	.align 8
.LC160:
	.string	"Not a valid xmidi file: expected FORM"
.LC161:
	.string	"First FORM found"
.LC162:
	.string	"XDIRINFO"
	.align 8
.LC163:
	.string	"Not a valid xmidi file: expected XDIRINFO"
.LC164:
	.string	"Contains %u forms\n"
.LC165:
	.string	"CAT "
	.align 8
.LC166:
	.string	"Not a valid xmidi file: expected CAT"
.LC167:
	.string	"CAT length = %u"
.LC168:
	.string	"XMID"
	.align 8
.LC169:
	.string	"Not a valid xmidi file: expected XMID"
.LC170:
	.string	"\nNew FORM"
.LC171:
	.string	"FORM length: %u\n"
.LC172:
	.string	"XMID Data"
.LC173:
	.string	"TIMB"
.LC174:
	.string	"TIMB length: %u\n"
.LC175:
	.string	"Patch:%i, Bank:%i\n"
.LC176:
	.string	"RBRN"
.LC177:
	.string	"RBRN length: %u\n"
.LC178:
	.string	"EVNT"
.LC179:
	.string	"EVENT length: %u\n"
	.align 8
.LC180:
	.string	"Not a valid xmidi file: unknown XMID entry"
.LC181:
	.string	"=============\n"
	.text
	.type	test_xmidi, @function
test_xmidi:
.LFB20:
	.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	DWORD PTR -68[rbp], edx
	mov	DWORD PTR -44[rbp], 0
	mov	DWORD PTR -40[rbp], 0
	mov	DWORD PTR -36[rbp], 0
	mov	DWORD PTR -16[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -32[rbp], 0
	mov	DWORD PTR -28[rbp], 0
	mov	DWORD PTR -8[rbp], 60
	mov	DWORD PTR -24[rbp], 500000
	mov	DWORD PTR -20[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC159[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L327
	lea	rdi, .LC160[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L327:
	cmp	DWORD PTR -68[rbp], 0
	je	.L329
	lea	rdi, .LC161[rip]
	call	puts@PLT
.L329:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -44[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 8
	lea	rsi, .LC162[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L330
	lea	rdi, .LC163[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L330:
	add	QWORD PTR -56[rbp], 8
	sub	QWORD PTR -64[rbp], 8
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	DWORD PTR -16[rbp], eax
	cmp	DWORD PTR -68[rbp], 0
	je	.L331
	mov	eax, DWORD PTR -16[rbp]
	mov	esi, eax
	lea	rdi, .LC164[rip]
	mov	eax, 0
	call	printf@PLT
.L331:
	sub	DWORD PTR -44[rbp], 13
	mov	eax, DWORD PTR -44[rbp]
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -44[rbp]
	sub	QWORD PTR -64[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC165[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L332
	lea	rdi, .LC166[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L332:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -12[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	cmp	DWORD PTR -68[rbp], 0
	je	.L333
	mov	eax, DWORD PTR -12[rbp]
	mov	esi, eax
	lea	rdi, .LC167[rip]
	mov	eax, 0
	call	printf@PLT
.L333:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC168[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L334
	lea	rdi, .LC169[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L334:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	DWORD PTR -40[rbp], 0
	jmp	.L335
.L367:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC159[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L336
	lea	rdi, .LC160[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L336:
	cmp	DWORD PTR -68[rbp], 0
	je	.L337
	lea	rdi, .LC170[rip]
	call	puts@PLT
.L337:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -32[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	cmp	DWORD PTR -68[rbp], 0
	je	.L338
	mov	eax, DWORD PTR -32[rbp]
	mov	esi, eax
	lea	rdi, .LC171[rip]
	mov	eax, 0
	call	printf@PLT
.L338:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC168[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L339
	lea	rdi, .LC169[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L339:
	cmp	DWORD PTR -68[rbp], 0
	je	.L340
	lea	rdi, .LC172[rip]
	call	puts@PLT
.L340:
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	sub	DWORD PTR -32[rbp], 4
	cmp	DWORD PTR -68[rbp], 0
	je	.L365
	mov	edx, DWORD PTR -24[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
.L365:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC173[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L342
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -44[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -44[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	sub	DWORD PTR -32[rbp], 8
	cmp	DWORD PTR -68[rbp], 0
	je	.L343
	mov	eax, DWORD PTR -44[rbp]
	mov	esi, eax
	lea	rdi, .LC174[rip]
	mov	eax, 0
	call	printf@PLT
.L343:
	mov	eax, DWORD PTR -44[rbp]
	shr	eax
	mov	DWORD PTR -44[rbp], eax
	mov	DWORD PTR -36[rbp], 0
	jmp	.L344
.L346:
	cmp	DWORD PTR -68[rbp], 0
	je	.L345
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC175[rip]
	mov	eax, 0
	call	printf@PLT
.L345:
	add	QWORD PTR -56[rbp], 2
	sub	QWORD PTR -64[rbp], 2
	sub	DWORD PTR -32[rbp], 2
	add	DWORD PTR -36[rbp], 1
.L344:
	mov	eax, DWORD PTR -36[rbp]
	cmp	eax, DWORD PTR -44[rbp]
	jb	.L346
	cmp	DWORD PTR -68[rbp], 0
	je	.L347
	mov	edi, 10
	call	putchar@PLT
	jmp	.L347
.L342:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC176[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L348
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -28[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	sub	DWORD PTR -32[rbp], 8
	cmp	DWORD PTR -68[rbp], 0
	je	.L349
	mov	eax, DWORD PTR -28[rbp]
	mov	esi, eax
	lea	rdi, .LC177[rip]
	mov	eax, 0
	call	printf@PLT
.L349:
	mov	eax, DWORD PTR -28[rbp]
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -28[rbp]
	sub	DWORD PTR -32[rbp], eax
	jmp	.L347
.L348:
	mov	rax, QWORD PTR -56[rbp]
	mov	edx, 4
	lea	rsi, .LC178[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L350
	mov	DWORD PTR -4[rbp], 0
	add	QWORD PTR -56[rbp], 4
	sub	QWORD PTR -64[rbp], 4
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -28[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -28[rbp], eax
	sub	QWORD PTR -64[rbp], 4
	sub	DWORD PTR -32[rbp], 8
	cmp	DWORD PTR -68[rbp], 0
	je	.L364
	mov	eax, DWORD PTR -28[rbp]
	mov	esi, eax
	lea	rdi, .LC179[rip]
	mov	eax, 0
	call	printf@PLT
.L364:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L352
	mov	DWORD PTR -44[rbp], 0
	mov	eax, DWORD PTR -44[rbp]
	sal	eax, 7
	mov	ecx, eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, ecx
	mov	DWORD PTR -44[rbp], eax
	sub	QWORD PTR -64[rbp], 1
	sub	DWORD PTR -28[rbp], 1
	sub	DWORD PTR -32[rbp], 1
	cmp	DWORD PTR -68[rbp], 0
	je	.L353
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	add_time
	jmp	.L353
.L352:
	cmp	DWORD PTR -68[rbp], 0
	je	.L354
	call	display_time
.L354:
	mov	edx, DWORD PTR -68[rbp]
	mov	rsi, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -56[rbp]
	mov	r8d, 0
	mov	ecx, edx
	mov	edx, 0
	mov	rdi, rax
	call	check_midi_event
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L355
	lea	rdi, .LC79[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L355:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 240
	cmp	eax, 144
	jne	.L356
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -32[rbp], eax
	mov	DWORD PTR -44[rbp], 0
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L357
	jmp	.L358
.L359:
	mov	eax, DWORD PTR -44[rbp]
	sal	eax, 7
	mov	ecx, eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, ecx
	mov	DWORD PTR -44[rbp], eax
	sub	QWORD PTR -64[rbp], 1
	sub	DWORD PTR -28[rbp], 1
	sub	DWORD PTR -32[rbp], 1
.L358:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L359
.L357:
	mov	eax, DWORD PTR -44[rbp]
	sal	eax, 7
	mov	ecx, eax
	mov	rax, QWORD PTR -56[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -56[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, ecx
	mov	DWORD PTR -44[rbp], eax
	sub	QWORD PTR -64[rbp], 1
	sub	DWORD PTR -28[rbp], 1
	sub	DWORD PTR -32[rbp], 1
	cmp	DWORD PTR -68[rbp], 0
	je	.L353
	mov	eax, DWORD PTR -44[rbp]
	test	rax, rax
	js	.L360
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rax
	jmp	.L361
.L360:
	mov	rdx, rax
	shr	rdx
	and	eax, 1
	or	rdx, rax
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, rdx
	addss	xmm0, xmm0
.L361:
	movss	xmm1, DWORD PTR secs_per_tick[rip]
	mulss	xmm0, xmm1
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	movq	rax, xmm2
	movq	xmm0, rax
	lea	rdi, .LC144[rip]
	mov	eax, 1
	call	printf@PLT
	jmp	.L353
.L356:
	mov	rax, QWORD PTR -56[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L362
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 81
	jne	.L362
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	cmp	al, 3
	jne	.L362
	cmp	DWORD PTR -20[rbp], 0
	jne	.L362
	mov	DWORD PTR -20[rbp], 1
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	mov	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	edx, eax
	mov	rax, QWORD PTR -56[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 0
	jne	.L363
	mov	DWORD PTR -24[rbp], 500000
.L363:
	cmp	DWORD PTR -68[rbp], 0
	je	.L362
	mov	edx, DWORD PTR -24[rbp]
	mov	eax, DWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
.L362:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	add	QWORD PTR -56[rbp], rax
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sub	QWORD PTR -64[rbp], rax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -32[rbp], eax
.L353:
	cmp	DWORD PTR -28[rbp], 0
	jne	.L364
	cmp	DWORD PTR -68[rbp], 0
	je	.L347
	mov	edi, 10
	call	putchar@PLT
	jmp	.L347
.L350:
	lea	rdi, .LC180[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L328
.L347:
	cmp	DWORD PTR -32[rbp], 0
	jne	.L365
	cmp	DWORD PTR -68[rbp], 0
	je	.L366
	lea	rdi, .LC181[rip]
	call	puts@PLT
.L366:
	add	DWORD PTR -40[rbp], 1
.L335:
	mov	eax, DWORD PTR -40[rbp]
	cmp	eax, DWORD PTR -16[rbp]
	jb	.L367
	mov	eax, 0
.L328:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	test_xmidi, .-test_xmidi
	.section	.rodata
.LC182:
	.string	"RIFF"
.LC183:
	.string	"MThd"
.LC184:
	.string	"Not a compatible file"
.LC185:
	.string	"Midi File Too Short"
.LC186:
	.string	"Header Size: %i\n"
.LC187:
	.string	"Corrupt Midi Header"
.LC188:
	.string	"Format: %i\n"
.LC189:
	.string	"Midi Format Not Supported"
.LC190:
	.string	"Number of Tracks: %i\n"
.LC191:
	.string	"Midi Contains No Tracks"
.LC192:
	.string	"Divisions: %i\n"
.LC193:
	.string	"Division Type Not Supported"
.LC194:
	.string	"MTrk"
.LC195:
	.string	"Expected Track Header"
.LC196:
	.string	"Start of Track"
.LC197:
	.string	"Track Size: %i\n"
	.align 8
.LC198:
	.string	"Midi File Too Short: Missing Track Data"
.LC199:
	.string	"Corrupt Midi, Expected EOT"
	.align 8
.LC200:
	.string	"Corrupt Midi, Missing or Corrupt Track Data"
	.align 8
.LC201:
	.string	"Currupt Midi: expected event, got data"
.LC202:
	.string	"%.4x %.2x %.2x %.2x %.2x\n"
	.align 8
.LC203:
	.string	"Missing or Corrupt MIDI Data 0x%.8x\n"
	.align 8
.LC204:
	.string	"Corrupt Midi, Track Data went beyond track boundries."
	.text
	.type	test_midi, @function
test_midi:
.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, 4096
	or	QWORD PTR [rsp], 0
	sub	rsp, 144
	mov	QWORD PTR -4216[rbp], rdi
	mov	QWORD PTR -4224[rbp], rsi
	mov	DWORD PTR -4228[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -4180[rbp], 96
	mov	BYTE PTR -4193[rbp], 0
	mov	QWORD PTR -4144[rbp], 500000
	mov	DWORD PTR -4176[rbp], 0
	mov	DWORD PTR -4184[rbp], 0
	lea	rdx, -4112[rbp]
	mov	eax, 0
	mov	ecx, 512
	mov	rdi, rdx
	rep stosq
	mov	QWORD PTR -4136[rbp], 0
	mov	rax, QWORD PTR -4216[rbp]
	mov	edx, 4
	lea	rsi, .LC182[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L369
	add	QWORD PTR -4216[rbp], 20
	sub	QWORD PTR -4224[rbp], 20
	add	DWORD PTR -4184[rbp], 20
.L369:
	mov	rax, QWORD PTR -4216[rbp]
	mov	edx, 4
	lea	rsi, .LC183[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L370
	lea	rdi, .LC184[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L370:
	add	QWORD PTR -4216[rbp], 4
	sub	QWORD PTR -4224[rbp], 4
	add	DWORD PTR -4184[rbp], 4
	cmp	QWORD PTR -4224[rbp], 9
	ja	.L372
	lea	rdi, .LC185[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L372:
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -4172[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -4172[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -4172[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -4172[rbp], eax
	sub	QWORD PTR -4224[rbp], 4
	add	DWORD PTR -4184[rbp], 4
	cmp	DWORD PTR -4228[rbp], 0
	je	.L373
	mov	eax, DWORD PTR -4172[rbp]
	mov	esi, eax
	lea	rdi, .LC186[rip]
	mov	eax, 0
	call	printf@PLT
.L373:
	cmp	DWORD PTR -4172[rbp], 6
	je	.L374
	lea	rdi, .LC187[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L374:
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	DWORD PTR -4168[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -4168[rbp], eax
	sub	QWORD PTR -4224[rbp], 2
	add	DWORD PTR -4184[rbp], 2
	cmp	DWORD PTR -4228[rbp], 0
	je	.L375
	mov	eax, DWORD PTR -4172[rbp]
	mov	esi, eax
	lea	rdi, .LC188[rip]
	mov	eax, 0
	call	printf@PLT
.L375:
	cmp	DWORD PTR -4168[rbp], 2
	jbe	.L376
	lea	rdi, .LC189[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L376:
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	DWORD PTR -4172[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -4172[rbp], eax
	sub	QWORD PTR -4224[rbp], 2
	add	DWORD PTR -4184[rbp], 2
	cmp	DWORD PTR -4228[rbp], 0
	je	.L377
	mov	eax, DWORD PTR -4172[rbp]
	mov	esi, eax
	lea	rdi, .LC190[rip]
	mov	eax, 0
	call	printf@PLT
.L377:
	cmp	DWORD PTR -4172[rbp], 0
	jne	.L378
	lea	rdi, .LC191[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L378:
	mov	eax, DWORD PTR -4172[rbp]
	mov	DWORD PTR -4164[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	DWORD PTR -4180[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -4180[rbp], eax
	sub	QWORD PTR -4224[rbp], 2
	add	DWORD PTR -4184[rbp], 2
	cmp	DWORD PTR -4228[rbp], 0
	je	.L379
	mov	eax, DWORD PTR -4180[rbp]
	mov	esi, eax
	lea	rdi, .LC192[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -4180[rbp]
	and	eax, 32768
	test	eax, eax
	je	.L380
	lea	rdi, .LC193[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L380:
	mov	eax, DWORD PTR -4180[rbp]
	mov	rdx, QWORD PTR -4144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
	mov	eax, 0
	call	reset_time
.L379:
	mov	DWORD PTR -4188[rbp], 0
	jmp	.L381
.L410:
	cmp	QWORD PTR -4224[rbp], 7
	ja	.L382
	lea	rdi, .LC185[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L382:
	mov	rax, QWORD PTR -4216[rbp]
	mov	edx, 4
	lea	rsi, .LC194[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	je	.L383
	lea	rdi, .LC195[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L383:
	cmp	DWORD PTR -4228[rbp], 0
	je	.L384
	lea	rdi, .LC196[rip]
	call	puts@PLT
	cmp	DWORD PTR -4168[rbp], 2
	je	.L385
	mov	eax, 0
	call	reset_time
.L385:
	mov	QWORD PTR -4152[rbp], 0
	mov	QWORD PTR -4136[rbp], 0
	mov	QWORD PTR -4144[rbp], 500000
	mov	eax, DWORD PTR -4180[rbp]
	mov	rdx, QWORD PTR -4144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
.L384:
	add	QWORD PTR -4216[rbp], 4
	sub	QWORD PTR -4224[rbp], 4
	add	DWORD PTR -4184[rbp], 4
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	DWORD PTR -4160[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	DWORD PTR -4160[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	DWORD PTR -4160[rbp], eax
	mov	rax, QWORD PTR -4216[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -4216[rbp], rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	DWORD PTR -4160[rbp], eax
	sub	QWORD PTR -4224[rbp], 4
	add	DWORD PTR -4184[rbp], 4
	cmp	DWORD PTR -4228[rbp], 0
	je	.L386
	mov	eax, DWORD PTR -4160[rbp]
	mov	esi, eax
	lea	rdi, .LC197[rip]
	mov	eax, 0
	call	printf@PLT
.L386:
	mov	eax, DWORD PTR -4160[rbp]
	cmp	QWORD PTR -4224[rbp], rax
	jnb	.L387
	lea	rdi, .LC198[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L387:
	cmp	DWORD PTR -4168[rbp], 0
	je	.L388
	mov	eax, DWORD PTR -4160[rbp]
	sub	eax, 3
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L389
	mov	eax, DWORD PTR -4160[rbp]
	sub	eax, 2
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	jne	.L389
	mov	eax, DWORD PTR -4160[rbp]
	sub	eax, 1
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L388
.L389:
	lea	rdi, .LC199[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L388:
	mov	edx, DWORD PTR -4160[rbp]
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, rdx
	mov	QWORD PTR -4128[rbp], rax
	jmp	.L390
.L409:
	mov	DWORD PTR -4192[rbp], 0
	jmp	.L391
.L392:
	mov	eax, DWORD PTR -4192[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -4192[rbp], eax
	add	QWORD PTR -4216[rbp], 1
	sub	QWORD PTR -4224[rbp], 1
	add	DWORD PTR -4184[rbp], 1
	cmp	QWORD PTR -4224[rbp], 0
	jne	.L391
	lea	rdi, .LC200[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L391:
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L392
	mov	eax, DWORD PTR -4192[rbp]
	sal	eax, 7
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 127
	or	eax, edx
	mov	DWORD PTR -4192[rbp], eax
	cmp	DWORD PTR -4228[rbp], 0
	je	.L393
	mov	eax, DWORD PTR -4192[rbp]
	add	QWORD PTR -4152[rbp], rax
	cmp	DWORD PTR -4168[rbp], 1
	jne	.L394
	cmp	DWORD PTR -4188[rbp], 0
	je	.L394
	cmp	QWORD PTR -4136[rbp], 0
	je	.L395
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	sub	rax, 4112
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L394
.L395:
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	sub	rax, 4112
	mov	rax, QWORD PTR [rax]
	cmp	QWORD PTR -4152[rbp], rax
	jb	.L394
	mov	rax, QWORD PTR -4152[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	sub	rax, 4112
	mov	rax, QWORD PTR [rax]
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	mov	DWORD PTR -4156[rbp], eax
	mov	eax, DWORD PTR -4156[rbp]
	sub	DWORD PTR -4192[rbp], eax
	mov	eax, DWORD PTR -4192[rbp]
	mov	edi, eax
	call	add_time
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	sub	rax, 4104
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -4180[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
	add	QWORD PTR -4136[rbp], 1
	mov	eax, DWORD PTR -4156[rbp]
	mov	DWORD PTR -4192[rbp], eax
.L394:
	mov	eax, DWORD PTR -4192[rbp]
	mov	edi, eax
	call	add_and_display_time
.L393:
	add	QWORD PTR -4216[rbp], 1
	cmp	QWORD PTR -4224[rbp], 0
	jne	.L396
	lea	rdi, .LC200[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L396:
	sub	QWORD PTR -4224[rbp], 1
	add	DWORD PTR -4184[rbp], 1
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	js	.L397
	cmp	BYTE PTR -4193[rbp], 0
	jne	.L397
	lea	rdi, .LC201[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	edi, al
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	movzx	esi, al
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movzx	ecx, al
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -4184[rbp]
	mov	r9d, edi
	mov	r8d, esi
	mov	esi, eax
	lea	rdi, .LC202[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, -1
	jmp	.L411
.L397:
	movzx	edx, BYTE PTR -4193[rbp]
	mov	ecx, DWORD PTR -4228[rbp]
	mov	rsi, QWORD PTR -4224[rbp]
	mov	rax, QWORD PTR -4216[rbp]
	mov	r8d, 0
	mov	rdi, rax
	call	check_midi_event
	mov	DWORD PTR -4176[rbp], eax
	cmp	DWORD PTR -4176[rbp], -1
	jne	.L398
	mov	eax, DWORD PTR -4184[rbp]
	mov	esi, eax
	lea	rdi, .LC203[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, -1
	jmp	.L411
.L398:
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -16
	je	.L399
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -9
	jne	.L400
.L399:
	mov	BYTE PTR -4193[rbp], 0
	jmp	.L401
.L400:
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -17
	ja	.L401
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L401
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	mov	BYTE PTR -4193[rbp], al
.L401:
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L402
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 81
	jne	.L402
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	cmp	al, 3
	jne	.L402
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 3
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	mov	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 4
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	add	edx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 5
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	add	eax, edx
	cdqe
	mov	QWORD PTR -4144[rbp], rax
	cmp	QWORD PTR -4144[rbp], 0
	jne	.L403
	mov	QWORD PTR -4144[rbp], 500000
.L403:
	cmp	DWORD PTR -4228[rbp], 0
	je	.L402
	mov	eax, DWORD PTR -4180[rbp]
	mov	rdx, QWORD PTR -4144[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	set_secs_per_tick
	cmp	DWORD PTR -4168[rbp], 1
	jne	.L402
	cmp	DWORD PTR -4188[rbp], 0
	jne	.L402
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	lea	rdx, -4112[rax]
	mov	rax, QWORD PTR -4152[rbp]
	mov	QWORD PTR [rdx], rax
	mov	rax, QWORD PTR -4136[rbp]
	sal	rax, 4
	add	rax, rbp
	lea	rdx, -4104[rax]
	mov	rax, QWORD PTR -4144[rbp]
	mov	QWORD PTR [rdx], rax
	add	QWORD PTR -4136[rbp], 1
.L402:
	mov	eax, DWORD PTR -4176[rbp]
	cdqe
	sub	QWORD PTR -4224[rbp], rax
	mov	eax, DWORD PTR -4176[rbp]
	add	DWORD PTR -4184[rbp], eax
	cmp	DWORD PTR -4168[rbp], 0
	jne	.L404
	cmp	QWORD PTR -4224[rbp], 1
	ja	.L405
	mov	eax, 0
	jmp	.L411
.L405:
	mov	eax, DWORD PTR -4176[rbp]
	cdqe
	add	QWORD PTR -4216[rbp], rax
	jmp	.L390
.L404:
	mov	eax, DWORD PTR -4176[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, rdx
	mov	QWORD PTR -4120[rbp], rax
	mov	rax, QWORD PTR -4120[rbp]
	cmp	rax, QWORD PTR -4128[rbp]
	jbe	.L406
	lea	rdi, .LC204[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L406:
	mov	rax, QWORD PTR -4216[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, -1
	jne	.L407
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	jne	.L407
	mov	rax, QWORD PTR -4216[rbp]
	add	rax, 2
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L407
	mov	rax, QWORD PTR -4128[rbp]
	mov	QWORD PTR -4216[rbp], rax
	jmp	.L390
.L407:
	cmp	QWORD PTR -4224[rbp], 0
	jne	.L408
	lea	rdi, .LC204[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L411
.L408:
	mov	eax, DWORD PTR -4176[rbp]
	cdqe
	add	QWORD PTR -4216[rbp], rax
.L390:
	mov	rax, QWORD PTR -4216[rbp]
	cmp	rax, QWORD PTR -4128[rbp]
	jb	.L409
	add	DWORD PTR -4188[rbp], 1
.L381:
	mov	eax, DWORD PTR -4188[rbp]
	cmp	eax, DWORD PTR -4164[rbp]
	jb	.L410
	mov	eax, 0
.L411:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L412
	call	__stack_chk_fail@PLT
.L412:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	test_midi, .-test_midi
	.section	.rodata
.LC205:
	.string	"GF1PATCH110"
	.string	"ID#000002"
.LC206:
	.string	"GF1PATCH100"
	.string	"ID#000002"
.LC207:
	.string	"Unsupported format"
.LC208:
	.string	"Number of samples: %i\n"
.LC209:
	.string	"Sample Start"
.LC210:
	.string	"Loop Fraction: 0x%x, "
.LC211:
	.string	"Data Length: %i, "
.LC212:
	.string	"Loop Start: %i, "
.LC213:
	.string	"Loop End: %i\n"
.LC214:
	.string	"Rate: %i, "
.LC216:
	.string	"Low Freq: %fHz, "
.LC217:
	.string	"High Freq: %fHz, "
.LC218:
	.string	"Root Freq: %fHz\n"
	.align 8
.LC219:
	.string	"Attack Level: %i, Attack Time: %fsecs\n"
	.align 8
.LC220:
	.string	"Decay Level: %i, Decay Time: %fsecs\n"
	.align 8
.LC221:
	.string	"Sustain Level: %i, Sustain Time: %fsecs\n"
	.align 8
.LC222:
	.string	"Sustained Release Level: %i, Sustained Release Time: %fsecs\n"
	.align 8
.LC223:
	.string	"Normal Release Level: %i, Normal Release Time: %fsecs\n"
	.align 8
.LC224:
	.string	"Clamped Release Level: %i, Clamped Release Time: %fsecs\n"
	.align 8
.LC225:
	.string	"WARNING!! Normal release envelope longer than sustained release envelope"
	.align 8
.LC226:
	.string	"          Caused by patch editor not following the file format set by Gravis"
	.align 8
.LC227:
	.string	"          WildMIDI will attempt to compensate for it on playback"
	.align 8
.LC228:
	.string	"WARNING!! Clamped release envelope longer than normal release envelope"
.LC229:
	.string	"Modes: "
.LC230:
	.string	"16 Bit  "
.LC231:
	.string	"Unsigned  "
.LC232:
	.string	"Loop  "
.LC233:
	.string	"Ping Pong  "
.LC234:
	.string	"Reverse  "
.LC235:
	.string	"Sustain  "
.LC236:
	.string	"Envelope  "
.LC237:
	.string	"Clamped Release  "
.LC238:
	.string	"Sample End\n"
	.text
	.type	test_guspat, @function
test_guspat:
.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, 48
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	QWORD PTR -8[rbp], 0
	mov	BYTE PTR -9[rbp], 0
	cmp	QWORD PTR -32[rbp], 238
	ja	.L414
	lea	rdi, .LC155[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L415
.L414:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 22
	lea	rsi, .LC205[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	je	.L416
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 22
	lea	rsi, .LC206[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	je	.L416
	lea	rdi, .LC207[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L415
.L416:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 82
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	ja	.L417
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 151
	movzx	eax, BYTE PTR [rax]
	cmp	al, 1
	jbe	.L418
.L417:
	lea	rdi, .LC207[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L415
.L418:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR 198[rax]
	mov	BYTE PTR -9[rbp], al
	cmp	DWORD PTR -36[rbp], 0
	je	.L419
	movzx	eax, BYTE PTR -9[rbp]
	mov	esi, eax
	lea	rdi, .LC208[rip]
	mov	eax, 0
	call	printf@PLT
.L419:
	mov	QWORD PTR -8[rbp], 239
.L435:
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 96
	cmp	QWORD PTR -32[rbp], rax
	jnb	.L420
	lea	rdi, .LC155[rip]
	call	puts@PLT
	mov	eax, -1
	jmp	.L415
.L420:
	cmp	DWORD PTR -36[rbp], 0
	je	.L421
	lea	rdi, .LC209[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 7[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC210[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 11[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 10[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 9[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	esi, eax
	lea	rdi, .LC211[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 15[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 14[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 13[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 12[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	esi, eax
	lea	rdi, .LC212[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 19[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 18[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 17[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 16[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	esi, eax
	lea	rdi, .LC213[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 21[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 20[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	esi, eax
	lea	rdi, .LC214[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 25[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 24[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 23[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 22[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	cvtss2sd	xmm0, xmm0
	movsd	xmm1, QWORD PTR .LC215[rip]
	divsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	lea	rdi, .LC216[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 29[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 28[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 27[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 26[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	cvtss2sd	xmm0, xmm0
	movsd	xmm1, QWORD PTR .LC215[rip]
	divsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	lea	rdi, .LC217[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 33[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 32[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 31[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 30[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	pxor	xmm0, xmm0
	cvtsi2ss	xmm0, eax
	cvtss2sd	xmm0, xmm0
	movsd	xmm1, QWORD PTR .LC215[rip]
	divsd	xmm0, xmm1
	movq	rax, xmm0
	movq	xmm0, rax
	lea	rdi, .LC218[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 37[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm2, xmm2
	cvtss2sd	xmm2, xmm0
	movq	rdx, xmm2
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 43[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC219[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 38[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm3, xmm3
	cvtss2sd	xmm3, xmm0
	movq	rdx, xmm3
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 44[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC220[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 39[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm4, xmm4
	cvtss2sd	xmm4, xmm0
	movq	rdx, xmm4
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 45[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC221[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 40[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm5, xmm5
	cvtss2sd	xmm5, xmm0
	movq	rdx, xmm5
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 46[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC222[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 41[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm6, xmm6
	cvtss2sd	xmm6, xmm0
	movq	rdx, xmm6
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 47[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC223[rip]
	mov	eax, 1
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 42[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	pxor	xmm7, xmm7
	cvtss2sd	xmm7, xmm0
	movq	rdx, xmm7
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 48[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	movq	xmm0, rdx
	mov	esi, eax
	lea	rdi, .LC224[rip]
	mov	eax, 1
	call	printf@PLT
.L421:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 40[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm1, DWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 41[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	comiss	xmm0, xmm1
	jbe	.L422
	lea	rdi, .LC225[rip]
	call	puts@PLT
	lea	rdi, .LC226[rip]
	call	puts@PLT
	lea	rdi, .LC227[rip]
	call	puts@PLT
.L422:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 41[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm1, DWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 42[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	cdqe
	lea	rdx, 0[0+rax*4]
	lea	rax, env_time_table[rip]
	movss	xmm0, DWORD PTR [rdx+rax]
	comiss	xmm0, xmm1
	jbe	.L424
	lea	rdi, .LC228[rip]
	call	puts@PLT
	lea	rdi, .LC226[rip]
	call	puts@PLT
	lea	rdi, .LC227[rip]
	call	puts@PLT
.L424:
	cmp	DWORD PTR -36[rbp], 0
	je	.L426
	lea	rdi, .LC229[rip]
	mov	eax, 0
	call	printf@PLT
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 1
	test	eax, eax
	je	.L427
	lea	rdi, .LC230[rip]
	mov	eax, 0
	call	printf@PLT
.L427:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 2
	test	eax, eax
	je	.L428
	lea	rdi, .LC231[rip]
	mov	eax, 0
	call	printf@PLT
.L428:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 4
	test	eax, eax
	je	.L429
	lea	rdi, .LC232[rip]
	mov	eax, 0
	call	printf@PLT
.L429:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 8
	test	eax, eax
	je	.L430
	lea	rdi, .LC233[rip]
	mov	eax, 0
	call	printf@PLT
.L430:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 16
	test	eax, eax
	je	.L431
	lea	rdi, .LC234[rip]
	mov	eax, 0
	call	printf@PLT
.L431:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 32
	test	eax, eax
	je	.L432
	lea	rdi, .LC235[rip]
	mov	eax, 0
	call	printf@PLT
.L432:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	and	eax, 64
	test	eax, eax
	je	.L433
	lea	rdi, .LC236[rip]
	mov	eax, 0
	call	printf@PLT
.L433:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 55[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jns	.L434
	lea	rdi, .LC237[rip]
	mov	eax, 0
	call	printf@PLT
.L434:
	mov	edi, 10
	call	putchar@PLT
	lea	rdi, .LC238[rip]
	call	puts@PLT
.L426:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 11[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 24
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 10[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 16
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 9[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	sal	eax, 8
	or	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rcx, 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	add	eax, 96
	cdqe
	add	QWORD PTR -8[rbp], rax
	sub	BYTE PTR -9[rbp], 1
	cmp	BYTE PTR -9[rbp], 0
	jne	.L435
	mov	eax, 0
.L415:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	test_guspat, .-test_guspat
	.section	.rodata
.LC239:
	.string	"d:f:vh"
.LC240:
	.string	"Unknown Option -%o ??\n"
.LC241:
	.string	"Testing: %s\n"
	.align 8
.LC242:
	.string	"%i notes still on after end of file\n"
	.align 8
.LC243:
	.string	"FAILED: %s will not work correctly with WildMIDI\n\n"
.LC244:
	.string	"Success\n"
	.text
	.globl	main
	.type	main, @function
main:
.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	DWORD PTR -68[rbp], edi
	mov	QWORD PTR -80[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -52[rbp], 0
	mov	DWORD PTR -48[rbp], 0
	mov	DWORD PTR -44[rbp], 0
	mov	DWORD PTR -16[rbp], 441668941
	mov	DWORD PTR -12[rbp], 1297239878
	mov	DWORD PTR -40[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	QWORD PTR -32[rbp], 0
	call	do_version
.L448:
	lea	rdx, -52[rbp]
	mov	rsi, QWORD PTR -80[rbp]
	mov	eax, DWORD PTR -68[rbp]
	mov	r8, rdx
	lea	rcx, long_options[rip]
	lea	rdx, .LC239[rip]
	mov	edi, eax
	call	getopt_long@PLT
	mov	DWORD PTR -36[rbp], eax
	cmp	DWORD PTR -36[rbp], -1
	je	.L465
	cmp	DWORD PTR -36[rbp], 118
	je	.L441
	cmp	DWORD PTR -36[rbp], 118
	jg	.L442
	cmp	DWORD PTR -36[rbp], 104
	je	.L443
	cmp	DWORD PTR -36[rbp], 104
	jg	.L442
	cmp	DWORD PTR -36[rbp], 100
	je	.L444
	cmp	DWORD PTR -36[rbp], 102
	je	.L445
	jmp	.L442
.L444:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR -48[rbp], eax
	jmp	.L446
.L445:
	mov	rax, QWORD PTR optarg[rip]
	mov	rdi, rax
	call	atof@PLT
	cvtsd2ss	xmm0, xmm0
	movss	DWORD PTR frequency[rip], xmm0
	jmp	.L446
.L441:
	mov	eax, 0
	jmp	.L462
.L443:
	call	do_help
	mov	eax, 0
	jmp	.L462
.L442:
	mov	eax, DWORD PTR -36[rbp]
	mov	esi, eax
	lea	rdi, .LC240[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, 0
	jmp	.L462
.L446:
	jmp	.L448
.L465:
	nop
	mov	eax, DWORD PTR optind[rip]
	cmp	DWORD PTR -68[rbp], eax
	jg	.L450
	mov	eax, 0
	jmp	.L462
.L461:
	mov	eax, DWORD PTR optind[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC241[rip]
	mov	eax, 0
	call	printf@PLT
	call	zero_check_notes
	mov	eax, DWORD PTR optind[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rdx, -32[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	DT_BufferFile
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L451
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 8
	lea	rsi, .LC145[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	jne	.L452
	mov	rcx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_hmp
	mov	DWORD PTR -44[rbp], eax
	call	count_check_notes
	mov	DWORD PTR -40[rbp], eax
	jmp	.L453
.L452:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 18
	lea	rsi, .LC134[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	jne	.L454
	mov	rcx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_hmi
	mov	DWORD PTR -44[rbp], eax
	call	count_check_notes
	mov	DWORD PTR -40[rbp], eax
	jmp	.L453
.L454:
	lea	rcx, -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	jne	.L455
	mov	edx, DWORD PTR -48[rbp]
	mov	rcx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_mus
	movsx	eax, al
	mov	DWORD PTR -44[rbp], eax
	call	count_check_notes
	mov	DWORD PTR -40[rbp], eax
	jmp	.L453
.L455:
	lea	rcx, -12[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	jne	.L456
	mov	rcx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_xmidi
	mov	DWORD PTR -44[rbp], eax
	call	count_check_notes
	mov	DWORD PTR -40[rbp], eax
	jmp	.L453
.L456:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 22
	lea	rsi, .LC205[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	je	.L457
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 22
	lea	rsi, .LC206[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	jne	.L458
.L457:
	mov	rcx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_guspat
	mov	DWORD PTR -44[rbp], eax
	jmp	.L453
.L458:
	mov	rcx, QWORD PTR -32[rbp]
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	test_midi
	mov	DWORD PTR -44[rbp], eax
	call	count_check_notes
	mov	DWORD PTR -40[rbp], eax
.L453:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	cmp	DWORD PTR -40[rbp], 0
	je	.L459
	mov	eax, DWORD PTR -40[rbp]
	mov	esi, eax
	lea	rdi, .LC242[rip]
	mov	eax, 0
	call	printf@PLT
.L459:
	cmp	DWORD PTR -44[rbp], 0
	je	.L460
	mov	eax, DWORD PTR optind[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -80[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC243[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L451
.L460:
	lea	rdi, .LC244[rip]
	call	puts@PLT
.L451:
	mov	eax, DWORD PTR optind[rip]
	add	eax, 1
	mov	DWORD PTR optind[rip], eax
.L450:
	mov	eax, DWORD PTR optind[rip]
	cmp	DWORD PTR -68[rbp], eax
	jg	.L461
	mov	eax, 0
.L462:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L463
	call	__stack_chk_fail@PLT
.L463:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	main, .-main
	.section	.rodata
	.align 4
.LC98:
	.long	1232348160
	.align 4
.LC99:
	.long	1114636288
	.align 4
.LC107:
	.long	1124859904
	.align 4
.LC108:
	.long	1281679808
	.align 8
.LC215:
	.long	0
	.long	1083129856
	.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	"25733.c"
	.text
	.section	.rodata
	.align	2
.LC0:
	.ascii	"debug-level\000"
	.align	2
.LC1:
	.ascii	"version\000"
	.align	2
.LC2:
	.ascii	"help\000"
	.align	2
	.type	long_options, %object
	.size	long_options, 64
long_options:
	.word	.LC0
	.word	1
	.word	0
	.word	100
	.word	.LC1
	.word	0
	.word	0
	.word	118
	.word	.LC2
	.word	0
	.word	0
	.word	104
	.word	0
	.word	0
	.word	0
	.word	0
	.data
	.align	2
	.type	env_time_table, %object
	.size	env_time_table, 1024
env_time_table:
	.word	0
	.word	1035721700
	.word	1027333092
	.word	1023048325
	.word	1018944484
	.word	1016482179
	.word	1014659717
	.word	1012314665
	.word	1010555876
	.word	1009187929
	.word	1008093571
	.word	1007198187
	.word	1006271109
	.word	1005008389
	.word	1003926057
	.word	1002988036
	.word	1002167268
	.word	1001443061
	.word	1000799321
	.word	1000223342
	.word	999704963
	.word	999235953
	.word	998809580
	.word	998420282
	.word	997882501
	.word	997225886
	.word	996619781
	.word	996058570
	.word	995537449
	.word	995052264
	.word	994599428
	.word	994175807
	.word	993778660
	.word	993405582
	.word	993054451
	.word	992723386
	.word	992410713
	.word	992114940
	.word	991834736
	.word	991568899
	.word	991316355
	.word	991076129
	.word	990847345
	.word	990629199
	.word	990420970
	.word	990221997
	.word	990031674
	.word	989843160
	.word	989493893
	.word	989158886
	.word	988837278
	.word	988528281
	.word	988231173
	.word	987945274
	.word	987669966
	.word	987404666
	.word	987148841
	.word	986901992
	.word	986663656
	.word	986433402
	.word	986210820
	.word	985995539
	.word	985787199
	.word	985585473
	.word	0
	.word	1060887524
	.word	1052498916
	.word	1048214149
	.word	1044110308
	.word	1041648003
	.word	1039825541
	.word	1037480489
	.word	1035721700
	.word	1034353753
	.word	1033259395
	.word	1032364011
	.word	1031436933
	.word	1030174213
	.word	1029091881
	.word	1028153860
	.word	1027333092
	.word	1026608885
	.word	1025965145
	.word	1025389167
	.word	1024870787
	.word	1024401777
	.word	1023975403
	.word	1023586106
	.word	1023048325
	.word	1022391710
	.word	1021785605
	.word	1021224396
	.word	1020703273
	.word	1020218090
	.word	1019765252
	.word	1019341630
	.word	1018944484
	.word	1018571407
	.word	1018220277
	.word	1017889210
	.word	1017576537
	.word	1017280764
	.word	1017000559
	.word	1016734723
	.word	1016482179
	.word	1016241954
	.word	1016013169
	.word	1015795024
	.word	1015586795
	.word	1015387821
	.word	1015197498
	.word	1015008981
	.word	1014659717
	.word	1014324710
	.word	1014003102
	.word	1013694107
	.word	1013396997
	.word	1013111098
	.word	1012835787
	.word	1012570489
	.word	1012314665
	.word	1012067817
	.word	1011829482
	.word	1011599225
	.word	1011376644
	.word	1011161361
	.word	1010953022
	.word	1010751297
	.word	0
	.word	1086053348
	.word	1077664740
	.word	1073379973
	.word	1069276132
	.word	1066813827
	.word	1064991365
	.word	1062646313
	.word	1060887524
	.word	1059519577
	.word	1058425219
	.word	1057529835
	.word	1056602757
	.word	1055340037
	.word	1054257705
	.word	1053319684
	.word	1052498916
	.word	1051774708
	.word	1051130969
	.word	1050554991
	.word	1050036611
	.word	1049567601
	.word	1049141227
	.word	1048751930
	.word	1048214149
	.word	1047557534
	.word	1046951429
	.word	1046390220
	.word	1045869097
	.word	1045383914
	.word	1044931076
	.word	1044507454
	.word	1044110308
	.word	1043737231
	.word	1043386101
	.word	1043055034
	.word	1042742361
	.word	1042446588
	.word	1042166383
	.word	1041900547
	.word	1041648003
	.word	1041407778
	.word	1041178993
	.word	1040960848
	.word	1040752619
	.word	1040553645
	.word	1040363322
	.word	1040174804
	.word	1039825541
	.word	1039490534
	.word	1039168926
	.word	1038859931
	.word	1038562821
	.word	1038276922
	.word	1038001612
	.word	1037736313
	.word	1037480489
	.word	1037233641
	.word	1036995306
	.word	1036765049
	.word	1036542468
	.word	1036327185
	.word	1036118846
	.word	1035917121
	.word	0
	.word	1111219172
	.word	1102830564
	.word	1098545797
	.word	1094441956
	.word	1091979651
	.word	1090157189
	.word	1087812137
	.word	1086053348
	.word	1084685401
	.word	1083591043
	.word	1082695659
	.word	1081768581
	.word	1080505861
	.word	1079423529
	.word	1078485508
	.word	1077664740
	.word	1076940532
	.word	1076296793
	.word	1075720815
	.word	1075202435
	.word	1074733425
	.word	1074307051
	.word	1073917754
	.word	1073379973
	.word	1072723358
	.word	1072117253
	.word	1071556044
	.word	1071034921
	.word	1070549738
	.word	1070096900
	.word	1069673278
	.word	1069276132
	.word	1068903055
	.word	1068551924
	.word	1068220858
	.word	1067908185
	.word	1067612412
	.word	1067332207
	.word	1067066371
	.word	1066813827
	.word	1066573602
	.word	1066344817
	.word	1066126672
	.word	1065918443
	.word	1065719469
	.word	1065529146
	.word	1065340628
	.word	1064991365
	.word	1064656358
	.word	1064334750
	.word	1064025755
	.word	1063728645
	.word	1063442746
	.word	1063167436
	.word	1062902137
	.word	1062646313
	.word	1062399465
	.word	1062161130
	.word	1061930873
	.word	1061708292
	.word	1061493009
	.word	1061284670
	.word	1061082945
	.section	.rodata
	.align	2
.LC3:
	.ascii	"http://www.mindwerks.net/projects/wildmidi/\000"
	.data
	.align	2
	.type	PACKAGE_URL, %object
	.size	PACKAGE_URL, 4
PACKAGE_URL:
	.word	.LC3
	.section	.rodata
	.align	2
.LC4:
	.ascii	"https://github.com/Mindwerks/wildmidi/issues\000"
	.data
	.align	2
	.type	PACKAGE_BUGREPORT, %object
	.size	PACKAGE_BUGREPORT, 4
PACKAGE_BUGREPORT:
	.word	.LC4
	.section	.rodata
	.align	2
.LC5:
	.ascii	"0.4\000"
	.data
	.align	2
	.type	PACKAGE_VERSION, %object
	.size	PACKAGE_VERSION, 4
PACKAGE_VERSION:
	.word	.LC5
	.section	.rodata
	.align	2
.LC6:
	.ascii	"DevTest for WildMIDI %s - For testing purposes only"
	.ascii	"\012\000"
	.align	2
.LC7:
	.ascii	"Copyright (C) WildMIDI Developers 2001-2014\000"
	.align	2
.LC8:
	.ascii	"DevTest comes with ABSOLUTELY NO WARRANTY\000"
	.align	2
.LC9:
	.ascii	"This is free software, and you are welcome to redis"
	.ascii	"tribute it\000"
	.align	2
.LC10:
	.ascii	"under the terms and conditions of the GNU Lesser Ge"
	.ascii	"neral Public License version 3.\000"
	.align	2
.LC11:
	.ascii	"For more information see COPYING\012\000"
	.align	2
.LC12:
	.ascii	"Report bugs to %s\012\000"
	.align	2
.LC13:
	.ascii	"WildMIDI homepage at %s\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_version, %function
do_version:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L2
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+4
	bl	printf
	ldr	r0, .L2+8
	bl	puts
	ldr	r0, .L2+12
	bl	puts
	ldr	r0, .L2+16
	bl	puts
	ldr	r0, .L2+20
	bl	puts
	ldr	r0, .L2+24
	bl	puts
	ldr	r3, .L2+28
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+32
	bl	printf
	ldr	r3, .L2+36
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L2+40
	bl	printf
	mov	r0, #10
	bl	putchar
	nop
	pop	{fp, pc}
.L3:
	.align	2
.L2:
	.word	PACKAGE_VERSION
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	PACKAGE_BUGREPORT
	.word	.LC12
	.word	PACKAGE_URL
	.word	.LC13
	.size	do_version, .-do_version
	.section	.rodata
	.align	2
.LC14:
	.ascii	" -d N   --debug-level N    Verbose output\000"
	.align	2
.LC15:
	.ascii	" -h     --help             Display this information"
	.ascii	"\000"
	.align	2
.LC16:
	.ascii	" -v     --version          Display version informat"
	.ascii	"ion\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_help, %function
do_help:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	bl	do_version
	ldr	r0, .L5
	bl	puts
	ldr	r0, .L5+4
	bl	puts
	ldr	r0, .L5+8
	bl	puts
	nop
	pop	{fp, pc}
.L6:
	.align	2
.L5:
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.size	do_help, .-do_help
	.section	.rodata
	.align	2
.LC17:
	.ascii	"~/\000"
	.align	2
.LC18:
	.ascii	"HOME\000"
	.align	2
.LC19:
	.ascii	"Unable to get ram to expand %s: %s\012\000"
	.align	2
.LC20:
	.ascii	"/\000"
	.align	2
.LC21:
	.ascii	"Unable to stat %s: %s\012\000"
	.align	2
.LC22:
	.ascii	"Unable to get ram for %s: %s\012\000"
	.align	2
.LC23:
	.ascii	"Unable to open %s: %s\012\000"
	.align	2
.LC24:
	.ascii	"Unable to read %s: %s\012\000"
	.align	2
.LC25:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	DT_BufferFile, %function
DT_BufferFile:
	@ args = 0, pretend = 0, frame = 1152
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #1152
	sub	sp, sp, #4
	str	r0, [fp, #-1160]
	str	r1, [fp, #-1164]
	ldr	r3, .L26
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-1148]
	mov	r3, #0
	str	r3, [fp, #-1156]
	mov	r3, #0
	str	r3, [fp, #-1152]
	mov	r2, #2
	ldr	r1, .L26+4
	ldr	r0, [fp, #-1160]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L8
	bl	getuid
	mov	r3, r0
	mov	r0, r3
	bl	getpwuid
	str	r0, [fp, #-1144]
	ldr	r3, [fp, #-1144]
	cmp	r3, #0
	beq	.L9
	ldr	r3, [fp, #-1144]
	ldr	r3, [r3, #20]
	str	r3, [fp, #-1156]
	b	.L10
.L9:
	ldr	r0, .L26+8
	bl	getenv
	str	r0, [fp, #-1156]
.L10:
	ldr	r3, [fp, #-1156]
	cmp	r3, #0
	beq	.L11
	ldr	r0, [fp, #-1160]
	bl	strlen
	mov	r4, r0
	ldr	r0, [fp, #-1156]
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1152]
	ldr	r3, [fp, #-1152]
	cmp	r3, #0
	bne	.L12
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+12
	bl	printf
	mov	r3, #0
	b	.L24
.L12:
	ldr	r1, [fp, #-1156]
	ldr	r0, [fp, #-1152]
	bl	strcpy
	ldr	r3, [fp, #-1160]
	add	r3, r3, #1
	mov	r1, r3
	ldr	r0, [fp, #-1152]
	bl	strcat
	b	.L11
.L8:
	ldr	r3, [fp, #-1160]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	beq	.L11
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, #1024
	mov	r0, r3
	bl	getcwd
	str	r0, [fp, #-1148]
	ldr	r3, [fp, #-1148]
	cmp	r3, #0
	beq	.L14
	ldr	r0, [fp, #-1160]
	bl	strlen
	mov	r4, r0
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	add	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1152]
.L14:
	ldr	r3, [fp, #-1152]
	cmp	r3, #0
	beq	.L15
	ldr	r3, [fp, #-1148]
	cmp	r3, #0
	bne	.L16
.L15:
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+12
	bl	printf
	mov	r3, #0
	b	.L24
.L16:
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-1152]
	bl	strcpy
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	sub	r3, r3, #1
	sub	r2, fp, #12
	add	r3, r2, r3
	ldrb	r3, [r3, #-1028]	@ zero_extendqisi2
	cmp	r3, #47
	beq	.L17
	ldr	r0, [fp, #-1152]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1152]
	add	r3, r3, r2
	ldr	r2, .L26+16
	mov	r0, r3
	mov	r1, r2
	mov	r3, #2
	mov	r2, r3
	bl	memcpy
.L17:
	ldr	r1, [fp, #-1160]
	ldr	r0, [fp, #-1152]
	bl	strcat
.L11:
	ldr	r3, [fp, #-1152]
	cmp	r3, #0
	bne	.L18
	ldr	r0, [fp, #-1160]
	bl	strlen
	mov	r3, r0
	add	r3, r3, #1
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1152]
	ldr	r3, [fp, #-1152]
	cmp	r3, #0
	bne	.L19
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+12
	bl	printf
	mov	r3, #0
	b	.L24
.L19:
	ldr	r1, [fp, #-1160]
	ldr	r0, [fp, #-1152]
	bl	strcpy
.L18:
	sub	r3, fp, #1120
	sub	r3, r3, #12
	mov	r1, r3
	ldr	r0, [fp, #-1152]
	bl	stat
	mov	r3, r0
	cmp	r3, #0
	beq	.L20
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+20
	bl	printf
	ldr	r0, [fp, #-1152]
	bl	free
	mov	r3, #0
	b	.L24
.L20:
	ldr	r3, [fp, #-1088]
	mov	r2, r3
	ldr	r3, [fp, #-1164]
	str	r2, [r3]
	ldr	r3, [fp, #-1164]
	ldr	r3, [r3]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-1140]
	ldr	r3, [fp, #-1140]
	cmp	r3, #0
	bne	.L21
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+24
	bl	printf
	ldr	r0, [fp, #-1152]
	bl	free
	mov	r3, #0
	b	.L24
.L21:
	mov	r1, #0
	ldr	r0, [fp, #-1152]
	bl	open
	str	r0, [fp, #-1136]
	ldr	r3, [fp, #-1136]
	cmn	r3, #1
	bne	.L22
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+28
	bl	printf
	ldr	r0, [fp, #-1152]
	bl	free
	ldr	r0, [fp, #-1140]
	bl	free
	mov	r3, #0
	b	.L24
.L22:
	ldr	r3, [fp, #-1164]
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, [fp, #-1140]
	ldr	r0, [fp, #-1136]
	bl	read
	mov	r2, r0
	ldr	r3, [fp, #-1088]
	cmp	r2, r3
	beq	.L23
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-1160]
	ldr	r0, .L26+32
	bl	printf
	ldr	r0, [fp, #-1152]
	bl	free
	ldr	r0, [fp, #-1140]
	bl	free
	ldr	r0, [fp, #-1136]
	bl	close
	mov	r3, #0
	b	.L24
.L23:
	ldr	r0, [fp, #-1136]
	bl	close
	ldr	r0, [fp, #-1152]
	bl	free
	ldr	r3, [fp, #-1140]
.L24:
	ldr	r2, .L26
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L25
	bl	__stack_chk_fail
.L25:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L27:
	.align	2
.L26:
	.word	.LC25
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.size	DT_BufferFile, .-DT_BufferFile
	.local	check_notes
	.comm	check_notes,2048,4
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	zero_check_notes, %function
zero_check_notes:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	zero_check_notes, .-zero_check_notes
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	count_check_notes, %function
count_check_notes:
	@ 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, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L30
.L34:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L31
.L33:
	ldr	r2, .L36
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #7
	add	r2, r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	bne	.L32
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L32:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L31:
	ldr	r3, [fp, #-12]
	cmp	r3, #127
	ble	.L33
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L30:
	ldr	r3, [fp, #-16]
	cmp	r3, #15
	ble	.L34
	ldr	r3, [fp, #-8]
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L37:
	.align	2
.L36:
	.word	check_notes
	.size	count_check_notes, .-count_check_notes
	.section	.rodata
	.align	2
.LC26:
	.ascii	"Expected MIDI event\000"
	.align	2
.LC27:
	.ascii	"Note off: Missing or Corrupt MIDI Data\000"
	.align	2
.LC28:
	.ascii	"Note Off: chan(%i) note(%i) vel(%i)\012\000"
	.align	2
.LC29:
	.ascii	"Note On: Missing or Corrupt MIDI Data\000"
	.align	2
.LC30:
	.ascii	"Note On: chan(%i) note(%i) vel(%i)\012\000"
	.align	2
.LC31:
	.ascii	"Aftertouch: Missing or Corrupt MIDI Data\000"
	.align	2
.LC32:
	.ascii	"Aftertouch: chan(%i) note(%i) vel(%i)\012\000"
	.align	2
.LC33:
	.ascii	"Controller: Missing or Corrupt MIDI Data\000"
	.align	2
.LC34:
	.ascii	"Controller \000"
	.align	2
.LC35:
	.ascii	"Bank Select: \000"
	.align	2
.LC36:
	.ascii	"Data Entry Course: \000"
	.align	2
.LC37:
	.ascii	"Channel Volume: \000"
	.align	2
.LC38:
	.ascii	"Channel Balance: \000"
	.align	2
.LC39:
	.ascii	"Pan: \000"
	.align	2
.LC40:
	.ascii	"Channel Expression: \000"
	.align	2
.LC41:
	.ascii	"Data Entry Fine: \000"
	.align	2
.LC42:
	.ascii	"Channel Hold: \000"
	.align	2
.LC43:
	.ascii	"Data Increment: \000"
	.align	2
.LC44:
	.ascii	"Data Decrement: \000"
	.align	2
.LC45:
	.ascii	"Non-registered Param Fine: \000"
	.align	2
.LC46:
	.ascii	"Non-registered Param Course: \000"
	.align	2
.LC47:
	.ascii	"Registered Param Fine: \000"
	.align	2
.LC48:
	.ascii	"Registered Param Course: \000"
	.align	2
.LC49:
	.ascii	"Channel Sound Off: \000"
	.align	2
.LC50:
	.ascii	"Channel Controllers Off: \000"
	.align	2
.LC51:
	.ascii	"Channel Notes Off: \000"
	.align	2
.LC52:
	.ascii	" Unknown(%i): \000"
	.align	2
.LC53:
	.ascii	"chan(%i) set(%i)\012\000"
	.align	2
.LC54:
	.ascii	"Set Patch: Missing or Corrupt MIDI Data\000"
	.align	2
.LC55:
	.ascii	"Set Patch: chan(%i) patch(%i)\012\000"
	.align	2
.LC56:
	.ascii	"Channel Pressure: Missing or Corrupt MIDI Data\000"
	.align	2
.LC57:
	.ascii	"Channel Pressure: chan(%i) pres(%i)\012\000"
	.align	2
.LC58:
	.ascii	"Set Pitch: Missing or Corrupt MIDI Data\000"
	.align	2
.LC59:
	.ascii	"Set Pitch: chan(%i) pitch(%i)\012\000"
	.align	2
.LC60:
	.ascii	"Sysex Event which we mostly ignore\000"
	.align	2
.LC61:
	.ascii	"Zero Sysex size\000"
	.align	2
.LC62:
	.ascii	"Bad Sysex size %lu\012\000"
	.align	2
.LC63:
	.ascii	"Roland Sysex Checksum Error: \000"
	.align	2
.LC64:
	.ascii	"%02x \000"
	.align	2
.LC65:
	.ascii	"Additional Drum Channel(0x%02x) Setting: 0x%02x\012"
	.ascii	"\000"
	.align	2
.LC66:
	.ascii	"GS Reset\000"
	.align	2
.LC67:
	.ascii	"Unknown Sysex: \000"
	.align	2
.LC68:
	.ascii	"Realtime Event: 0x%.2x ** NOTE: Not expected in mid"
	.ascii	"i file type data\012\000"
	.align	2
.LC69:
	.ascii	"Data too short: Missing MIDI Data\000"
	.align	2
.LC70:
	.ascii	"Corrupt MIDI Data, Bad Sequence Number Prefix\000"
	.align	2
.LC71:
	.ascii	"Meta Event: Sequence Number: %.2x %.2x\012\000"
	.align	2
.LC72:
	.ascii	"Meta Event: Text\000"
	.align	2
.LC73:
	.ascii	"Meta Event: Copyright\000"
	.align	2
.LC74:
	.ascii	"Meta Event: Trackname\000"
	.align	2
.LC75:
	.ascii	"Meta Event: Instrument Name\000"
	.align	2
.LC76:
	.ascii	"Meta Event: Lyric\000"
	.align	2
.LC77:
	.ascii	"Meta Event: Marker\000"
	.align	2
.LC78:
	.ascii	"Meta Event: Cue Point\000"
	.align	2
.LC79:
	.ascii	"Meta Event: End Of Track\000"
	.align	2
.LC80:
	.ascii	"========================\012\000"
	.align	2
.LC81:
	.ascii	"Missing or Corrupt MIDI Data\000"
	.align	2
.LC82:
	.ascii	"Meta Event: Channel Prefix: \000"
	.align	2
.LC83:
	.ascii	"Corrupt MIDI Data, Bad Channel Prefix\000"
	.align	2
.LC84:
	.ascii	"%i\012\000"
	.align	2
.LC85:
	.ascii	"Meta Event: Port Prefix: \000"
	.align	2
.LC86:
	.ascii	"Corrupt MIDI Data, Bad Port Prefix\000"
	.align	2
.LC87:
	.ascii	"Meta Event: Tempo\000"
	.align	2
.LC88:
	.ascii	"Corrupt MIDI Data, Bad Tempo\000"
	.align	2
.LC89:
	.ascii	"Corrupt MIDI Data, Bad SMPTE Offset Prefix\000"
	.align	2
.LC90:
	.ascii	"Meta Event: SMPTE Offset: %.2x %.2x %.2x %.2x %.2x\012"
	.ascii	"\000"
	.align	2
.LC91:
	.ascii	"Corrupt MIDI Data, Bad Time Signature Prefix\000"
	.align	2
.LC92:
	.ascii	"Meta Event: Time Signature: %.2x %.2x %.2x %.2x\012"
	.ascii	"\000"
	.align	2
.LC93:
	.ascii	"Corrupt MIDI Data, Bad Key Signature Prefix\000"
	.align	2
.LC94:
	.ascii	"Meta Event: Key Signature: %.2x %.2x\012\000"
	.align	2
.LC95:
	.ascii	"Meta Event: Unsupported (%i)\012\000"
	.align	2
.LC96:
	.ascii	"Meta data (%u bytes):\000"
	.align	2
.LC97:
	.ascii	"0x%.2x \000"
	.align	2
.LC98:
	.ascii	"%c \000"
	.align	2
.LC99:
	.ascii	"Corrupt Midi, Unknown Event Data\000"
	.align	2
.LC100:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_midi_event, %function
check_midi_event:
	@ args = 4, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r3, [fp, #-60]
	mov	r3, r2
	strb	r3, [fp, #-53]
	ldr	r3, .L176
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	strb	r3, [fp, #-43]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L39
	ldrb	r3, [fp, #-53]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L40
	ldrb	r3, [fp, #-53]
	strb	r3, [fp, #-43]
	b	.L41
.L40:
	ldr	r0, .L176+4
	bl	puts
	mvn	r3, #0
	b	.L42
.L39:
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]
	strb	r3, [fp, #-43]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L41:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	sub	r3, r3, #8
	cmp	r3, #7
	ldrls	pc, [pc, r3, asl #2]
	b	.L43
.L45:
	.word	.L52
	.word	.L51
	.word	.L50
	.word	.L49
	.word	.L48
	.word	.L47
	.word	.L46
	.word	.L44
.L52:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L53
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L53
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L54
.L53:
	ldr	r0, .L176+8
	bl	puts
	mvn	r3, #0
	b	.L42
.L54:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L55
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r0, .L176+12
	bl	printf
.L55:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	str	r3, [fp, #-40]
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r3, r3, #15
	ldr	r2, [fp, #-48]
	ldrb	r2, [r2]	@ zero_extendqisi2
	mov	r1, r2
	ldr	r2, .L176+16
	lsl	r3, r3, #7
	add	r3, r2, r3
	add	r3, r3, r1
	mov	r2, #0
	strb	r2, [r3]
	b	.L43
.L51:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L56
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L56
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L57
.L56:
	ldr	r0, .L176+20
	bl	puts
	mvn	r3, #0
	b	.L42
.L57:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L58
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r0, .L176+24
	bl	printf
.L58:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L59
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r3, r3, #15
	ldr	r2, [fp, #-48]
	ldrb	r2, [r2]	@ zero_extendqisi2
	mov	r1, r2
	ldr	r2, .L176+16
	lsl	r3, r3, #7
	add	r3, r2, r3
	add	r3, r3, r1
	mov	r2, #0
	strb	r2, [r3]
	b	.L43
.L59:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r3, r3, #15
	ldr	r2, [fp, #-48]
	ldrb	r2, [r2]	@ zero_extendqisi2
	mov	r1, r2
	ldr	r2, .L176+16
	lsl	r3, r3, #7
	add	r3, r2, r3
	add	r3, r3, r1
	mov	r2, #1
	strb	r2, [r3]
	b	.L43
.L50:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L61
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L61
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L62
.L61:
	ldr	r0, .L176+28
	bl	puts
	mvn	r3, #0
	b	.L42
.L62:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L63
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r0, .L176+32
	bl	printf
.L63:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	str	r3, [fp, #-40]
	b	.L43
.L49:
	ldr	r3, [fp, #4]
	and	r3, r3, #1
	cmp	r3, #0
	bne	.L64
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L65
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L65
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L66
.L65:
	ldr	r0, .L176+36
	bl	puts
	mvn	r3, #0
	b	.L42
.L64:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L67
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L66
.L67:
	ldr	r0, .L176+36
	bl	puts
	mvn	r3, #0
	b	.L42
.L66:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L68
	ldr	r0, .L176+40
	bl	printf
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #123
	ldrls	pc, [pc, r3, asl #2]
	b	.L69
.L71:
	.word	.L87
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L86
	.word	.L85
	.word	.L84
	.word	.L69
	.word	.L83
	.word	.L82
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L81
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L80
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L79
	.word	.L78
	.word	.L77
	.word	.L76
	.word	.L75
	.word	.L74
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L69
	.word	.L73
	.word	.L72
	.word	.L69
	.word	.L70
.L87:
	ldr	r0, .L176+44
	bl	printf
	b	.L88
.L86:
	ldr	r0, .L176+48
	bl	printf
	b	.L88
.L85:
	ldr	r0, .L176+52
	bl	printf
	b	.L88
.L84:
	ldr	r0, .L176+56
	bl	printf
	b	.L88
.L83:
	ldr	r0, .L176+60
	bl	printf
	b	.L88
.L82:
	ldr	r0, .L176+64
	bl	printf
	b	.L88
.L81:
	ldr	r0, .L176+68
	bl	printf
	b	.L88
.L80:
	ldr	r0, .L176+72
	bl	printf
	b	.L88
.L79:
	ldr	r0, .L176+76
	bl	printf
	b	.L88
.L78:
	ldr	r0, .L176+80
	bl	printf
	b	.L88
.L77:
	ldr	r0, .L176+84
	bl	printf
	b	.L88
.L76:
	ldr	r0, .L176+88
	bl	printf
	b	.L88
.L75:
	ldr	r0, .L176+92
	bl	printf
	b	.L88
.L74:
	ldr	r0, .L176+96
	bl	printf
	b	.L88
.L73:
	ldr	r0, .L176+100
	bl	printf
	b	.L88
.L72:
	ldr	r0, .L176+104
	bl	printf
	b	.L88
.L70:
	ldr	r0, .L176+108
	bl	printf
	b	.L88
.L69:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+112
	bl	printf
.L88:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+116
	bl	printf
.L68:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	str	r3, [fp, #-40]
	b	.L43
.L48:
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L89
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L90
.L89:
	ldr	r0, .L176+120
	bl	puts
	mvn	r3, #0
	b	.L42
.L90:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L91
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+124
	bl	printf
.L91:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	b	.L43
.L47:
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L92
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L93
.L92:
	ldr	r0, .L176+128
	bl	puts
	mvn	r3, #0
	b	.L42
.L93:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L94
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+132
	bl	printf
.L94:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	b	.L43
.L46:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bls	.L95
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L95
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L96
.L95:
	ldr	r0, .L176+136
	bl	puts
	mvn	r3, #0
	b	.L42
.L96:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L97
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r1, r3, #15
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #7
	ldr	r2, [fp, #-48]
	add	r2, r2, #1
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r2, r3
	ldr	r0, .L176+140
	bl	printf
.L97:
	ldr	r3, [fp, #-40]
	add	r3, r3, #2
	str	r3, [fp, #-40]
	b	.L43
.L44:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	cmp	r3, #240
	beq	.L98
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	cmp	r3, #247
	bne	.L99
.L98:
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L101
	ldr	r0, .L176+144
	bl	puts
	b	.L101
.L102:
	ldr	r3, [fp, #-28]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L101:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L102
	ldr	r3, [fp, #-28]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L103
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L171
	ldr	r0, .L176+148
	bl	puts
	b	.L171
.L103:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	bls	.L105
	ldr	r1, [fp, #-28]
	ldr	r0, .L176+152
	bl	printf
	mvn	r3, #0
	b	.L42
.L105:
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	mov	r1, r3
	ldr	r0, [fp, #-20]
	bl	realloc
	str	r0, [fp, #-20]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	ldr	r2, [fp, #-28]
	ldr	r1, [fp, #-48]
	mov	r0, r3
	bl	memcpy
	ldr	r2, [fp, #-16]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #247
	bne	.L106
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, .L176+156
	str	r3, [fp, #-12]
	sub	r3, fp, #12
	mov	r2, #4
	ldr	r1, [fp, #-20]
	mov	r0, r3
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L172
	mov	r3, #0
	strb	r3, [fp, #-42]
	mov	r3, #4
	str	r3, [fp, #-24]
.L109:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldrb	r3, [fp, #-42]
	add	r3, r2, r3
	strb	r3, [fp, #-42]
	ldrsb	r3, [fp, #-42]
	cmp	r3, #0
	bge	.L108
	ldrb	r3, [fp, #-42]
	sub	r3, r3, #128
	strb	r3, [fp, #-42]
.L108:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #247
	bne	.L109
	ldrb	r3, [fp, #-42]
	rsb	r3, r3, #-16777216
	add	r3, r3, #16711680
	add	r3, r3, #65280
	add	r3, r3, #128
	strb	r3, [fp, #-42]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldrb	r2, [fp, #-42]	@ zero_extendqisi2
	cmp	r2, r3
	beq	.L110
	ldr	r0, .L176+160
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
.L111:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+164
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L111
	mov	r0, #10
	bl	putchar
	ldr	r0, [fp, #-20]
	bl	free
	mvn	r3, #0
	b	.L42
.L110:
	ldr	r3, [fp, #-20]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #64
	bne	.L173
	ldr	r3, [fp, #-20]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #240
	cmp	r3, #16
	bne	.L113
	ldr	r3, [fp, #-20]
	add	r3, r3, #6
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #21
	bne	.L113
	ldr	r3, [fp, #-20]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	strb	r3, [fp, #-41]
	ldrb	r3, [fp, #-41]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L114
	mov	r3, #9
	strb	r3, [fp, #-41]
	b	.L115
.L114:
	ldrb	r3, [fp, #-41]	@ zero_extendqisi2
	cmp	r3, #9
	bhi	.L115
	ldrb	r3, [fp, #-41]
	sub	r3, r3, #1
	strb	r3, [fp, #-41]
.L115:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L174
	ldrb	r1, [fp, #-41]	@ zero_extendqisi2
	ldr	r3, [fp, #-20]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+168
	bl	printf
	b	.L174
.L113:
	ldr	r3, [fp, #-20]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L175
	ldr	r3, [fp, #-20]
	add	r3, r3, #6
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #127
	bne	.L175
	ldr	r3, [fp, #-20]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L175
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L106
	ldr	r0, .L176+172
	bl	puts
	b	.L106
.L172:
	nop
	b	.L107
.L173:
	nop
	b	.L107
.L175:
	nop
.L107:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L106
	ldr	r0, .L176+176
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-24]
.L121:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+164
	bl	printf
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L121
	mov	r0, #10
	bl	putchar
	b	.L106
.L174:
	nop
.L106:
	ldr	r0, [fp, #-20]
	bl	free
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	str	r3, [fp, #-40]
	b	.L122
.L99:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	cmp	r3, #255
	beq	.L123
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	cmp	r3, #240
	bls	.L123
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+180
	bl	printf
	b	.L122
.L123:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L124
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L125
	ldr	r3, [fp, #-52]
	cmp	r3, #3
	bhi	.L126
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L126:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #2
	beq	.L127
	ldr	r0, .L176+184
	bl	puts
	mvn	r3, #0
	b	.L42
.L127:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+188
	bl	printf
	b	.L128
.L125:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	bne	.L129
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+192
	bl	puts
	b	.L128
.L129:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #2
	bne	.L130
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+196
	bl	puts
	b	.L128
.L130:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #3
	bne	.L131
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+200
	bl	puts
	b	.L128
.L131:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #4
	bne	.L132
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+204
	bl	puts
	b	.L128
.L132:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #5
	bne	.L133
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+208
	bl	puts
	b	.L128
.L133:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #6
	bne	.L134
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+212
	bl	puts
	b	.L128
.L134:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #7
	bne	.L135
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+216
	bl	puts
	b	.L128
.L135:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	bne	.L136
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L137
	ldr	r0, .L176+220
	bl	puts
	ldr	r0, .L176+224
	bl	puts
.L137:
	ldr	r3, [fp, #-52]
	cmp	r3, #1
	bhi	.L138
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L138:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L128
	ldr	r0, .L176+228
	bl	puts
	mvn	r3, #0
	b	.L42
.L136:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	bne	.L139
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L140
	ldr	r0, .L176+232
	bl	printf
.L140:
	ldr	r3, [fp, #-52]
	cmp	r3, #2
	bhi	.L141
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L141:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	beq	.L142
	ldr	r0, .L176+236
	bl	puts
	mvn	r3, #0
	b	.L42
.L142:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+248
	bl	printf
	b	.L128
.L139:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #33
	bne	.L143
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L144
	ldr	r0, .L176+240
	bl	printf
.L144:
	ldr	r3, [fp, #-52]
	cmp	r3, #2
	bhi	.L145
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L145:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	beq	.L146
	ldr	r0, .L176+244
	bl	puts
	mvn	r3, #0
	b	.L42
.L177:
	.align	2
.L176:
	.word	.LC100
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	check_notes
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	.LC51
	.word	.LC52
	.word	.LC53
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	306319425
	.word	.LC63
	.word	.LC64
	.word	.LC65
	.word	.LC66
	.word	.LC67
	.word	.LC68
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC73
	.word	.LC74
	.word	.LC75
	.word	.LC76
	.word	.LC77
	.word	.LC78
	.word	.LC79
	.word	.LC80
	.word	.LC81
	.word	.LC82
	.word	.LC83
	.word	.LC85
	.word	.LC86
	.word	.LC84
	.word	.LC87
	.word	.LC88
	.word	.LC89
	.word	.LC90
	.word	.LC91
	.word	.LC92
	.word	.LC93
	.word	.LC94
	.word	.LC95
	.word	.LC69
	.word	.LC96
	.word	.LC97
	.word	.LC98
	.word	.LC99
	.word	.LC100
.L146:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+248
	bl	printf
	b	.L128
.L143:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #81
	bne	.L147
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L148
	ldr	r0, .L176+252
	bl	puts
.L148:
	ldr	r3, [fp, #-52]
	cmp	r3, #4
	bhi	.L149
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L149:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #3
	beq	.L128
	ldr	r0, .L176+256
	bl	puts
	mvn	r3, #0
	b	.L42
.L147:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #84
	bne	.L150
	ldr	r3, [fp, #-52]
	cmp	r3, #6
	bhi	.L151
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L151:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #5
	beq	.L152
	ldr	r0, .L176+260
	bl	puts
	mvn	r3, #0
	b	.L42
.L152:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	ip, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #6
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [sp, #4]
	str	r2, [sp]
	mov	r3, ip
	mov	r2, r0
	ldr	r0, .L176+264
	bl	printf
	b	.L128
.L150:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #88
	bne	.L153
	ldr	r3, [fp, #-52]
	cmp	r3, #5
	bhi	.L154
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L154:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #4
	beq	.L155
	ldr	r0, .L176+268
	bl	puts
	mvn	r3, #0
	b	.L42
.L155:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [sp]
	mov	r3, r0
	ldr	r0, .L176+272
	bl	printf
	b	.L128
.L153:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #89
	bne	.L156
	ldr	r3, [fp, #-52]
	cmp	r3, #3
	bhi	.L157
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L157:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #2
	beq	.L158
	ldr	r0, .L176+276
	bl	puts
	mvn	r3, #0
	b	.L42
.L158:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-48]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L176+280
	bl	printf
	b	.L128
.L156:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L128
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+284
	bl	printf
.L128:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-36]
	b	.L159
.L161:
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	bne	.L160
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L160:
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
.L159:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L161
	ldr	r3, [fp, #-36]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	bcs	.L162
	ldr	r0, .L176+288
	bl	puts
	mvn	r3, #0
	b	.L42
.L162:
	ldr	r3, [fp, #-60]
	cmp	r3, #0
	beq	.L163
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	beq	.L163
	ldr	r1, [fp, #-36]
	ldr	r0, .L176+292
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-32]
	b	.L164
.L168:
	ldr	r3, [fp, #-32]
	and	r3, r3, #3
	cmp	r3, #0
	bne	.L165
	mov	r0, #32
	bl	putchar
.L165:
	ldr	r3, [fp, #-32]
	and	r3, r3, #7
	cmp	r3, #0
	bne	.L166
	mov	r0, #10
	bl	putchar
.L166:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+296
	bl	printf
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	bls	.L167
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L176+300
	bl	printf
.L167:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-32]
	add	r3, r3, #1
	str	r3, [fp, #-32]
.L164:
	ldr	r2, [fp, #-32]
	ldr	r3, [fp, #-36]
	cmp	r2, r3
	bcc	.L168
	mov	r0, #10
	bl	putchar
	b	.L169
.L163:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-48]
.L169:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-40]
	b	.L43
.L124:
	ldr	r0, .L176+304
	bl	puts
	mvn	r3, #0
	b	.L42
.L122:
	b	.L43
.L171:
	nop
.L43:
	ldr	r3, [fp, #-40]
.L42:
	ldr	r2, .L176+308
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L170
	bl	__stack_chk_fail
.L170:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	check_midi_event, .-check_midi_event
	.local	time_mins
	.comm	time_mins,4,4
	.local	time_secs
	.comm	time_secs,4,4
	.local	secs_per_tick
	.comm	secs_per_tick,4,4
	.local	frequency
	.comm	frequency,4,4
	.global	__aeabi_ui2f
	.global	__aeabi_fdiv
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_secs_per_tick, %function
set_secs_per_tick:
	@ 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, #-24]
	str	r1, [fp, #-28]
	ldr	r0, [fp, #-28]
	bl	__aeabi_ui2f
	mov	r4, r0
	ldr	r0, [fp, #-24]
	bl	__aeabi_ui2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fdiv
	mov	r3, r0
	str	r3, [fp, #-16]	@ float
	ldr	r1, .L180
	ldr	r0, [fp, #-16]	@ float
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L180+4
	str	r2, [r3]	@ float
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L181:
	.align	2
.L180:
	.word	1232348160
	.word	secs_per_tick
	.size	set_secs_per_tick, .-set_secs_per_tick
	.global	__aeabi_i2f
	.global	__aeabi_fmul
	.global	__aeabi_fadd
	.global	__aeabi_fcmpgt
	.global	__aeabi_f2uiz
	.global	__aeabi_fsub
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_time, %function
add_time:
	@ 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, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-24]
	bl	__aeabi_i2f
	mov	r2, r0
	ldr	r3, .L187
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L187+4
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fadd
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L187+4
	str	r2, [r3]	@ float
	ldr	r3, .L187+4
	ldr	r3, [r3]	@ float
	ldr	r1, .L187+8
	mov	r0, r3
	bl	__aeabi_fcmpgt
	mov	r3, r0
	cmp	r3, #0
	bne	.L186
	b	.L182
.L186:
	ldr	r3, .L187+4
	ldr	r3, [r3]	@ float
	ldr	r1, .L187+8
	mov	r0, r3
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r3, .L187+4
	ldr	r4, [r3]	@ float
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #4
	sub	r3, r3, r2
	lsl	r3, r3, #2
	mov	r0, r3
	bl	__aeabi_ui2f
	mov	r3, r0
	mov	r1, r3
	mov	r0, r4
	bl	__aeabi_fsub
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L187+4
	str	r2, [r3]	@ float
	ldr	r3, .L187+12
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	ldr	r2, .L187+12
	str	r3, [r2]
	nop
.L182:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L188:
	.align	2
.L187:
	.word	secs_per_tick
	.word	time_secs
	.word	1114636288
	.word	time_mins
	.size	add_time, .-add_time
	.global	__aeabi_f2d
	.section	.rodata
	.align	2
.LC101:
	.ascii	"Time %.2i:%02.05f    \000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	display_time, %function
display_time:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, r5, fp, lr}
	add	fp, sp, #12
	ldr	r3, .L191
	ldr	r4, [r3]
	ldr	r3, .L191+4
	ldr	r3, [r3]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L191+8
	bl	printf
	nop
	pop	{r4, r5, fp, pc}
.L192:
	.align	2
.L191:
	.word	time_mins
	.word	time_secs
	.word	.LC101
	.size	display_time, .-display_time
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_and_display_time, %function
add_and_display_time:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	str	r0, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	add_time
	bl	display_time
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	add_and_display_time, .-add_and_display_time
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	reset_time, %function
reset_time:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	ldr	r3, .L196
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L196+4
	mov	r2, #0
	str	r2, [r3]	@ float
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L197:
	.align	2
.L196:
	.word	time_mins
	.word	time_secs
	.size	reset_time, .-reset_time
	.section	.rodata
	.align	2
.LC103:
	.ascii	"Not a valid MUS file: File too short\000"
	.align	2
.LC104:
	.ascii	"Not a valid MUS file: expected MUS followed by 0x1A"
	.ascii	"\000"
	.align	2
.LC105:
	.ascii	"Song Offset: %i, Length: %i\012\000"
	.align	2
.LC106:
	.ascii	"Number of Instruments: %i\012\000"
	.align	2
.LC107:
	.ascii	"(%i) %i\012\000"
	.global	__aeabi_fcmpeq
	.align	2
.LC108:
	.ascii	"Note Off 0x%.2x\012\000"
	.align	2
.LC109:
	.ascii	"Note On (0x%.2x): 0x%.2x\012\000"
	.align	2
.LC110:
	.ascii	"Note On (0x%.2x): [0x%.2x]\012\000"
	.align	2
.LC111:
	.ascii	"Pitch Bend 0x%.2x\012\000"
	.align	2
.LC112:
	.ascii	"System Controller: \000"
	.align	2
.LC113:
	.ascii	"All Sounds Off\000"
	.align	2
.LC114:
	.ascii	"All Notes Off\000"
	.align	2
.LC115:
	.ascii	"Mono\000"
	.align	2
.LC116:
	.ascii	"Poly\000"
	.align	2
.LC117:
	.ascii	"Reset All Controllers\000"
	.align	2
.LC118:
	.ascii	"Unsupported %i\012\000"
	.align	2
.LC119:
	.ascii	"Controller: \000"
	.align	2
.LC120:
	.ascii	"Patch 0x%.2x\012\000"
	.align	2
.LC121:
	.ascii	"Bank 0x%.2x\012\000"
	.align	2
.LC122:
	.ascii	"Modulation 0x%.2x\012\000"
	.align	2
.LC123:
	.ascii	"Volume 0x%.2x\012\000"
	.align	2
.LC124:
	.ascii	"Pan 0x%.2x\012\000"
	.align	2
.LC125:
	.ascii	"Expression 0x%.2x\012\000"
	.align	2
.LC126:
	.ascii	"Reverb 0x%.2x\012\000"
	.align	2
.LC127:
	.ascii	"Chorus 0x%.2x\012\000"
	.align	2
.LC128:
	.ascii	"Sustain 0x%.2x\012\000"
	.align	2
.LC129:
	.ascii	"Soft Pedal 0x%.2x\012\000"
	.align	2
.LC130:
	.ascii	"Unsupported 0x%.2x 0x%.2x\012\000"
	.align	2
.LC131:
	.ascii	"0x%.2x\012\000"
	.align	2
.LC132:
	.ascii	"End Of Song\000"
	.align	2
.LC102:
	.ascii	"\000\000\000\000\000\000\000\000\000\000\000\000\000"
	.ascii	"\000\000\000"
	.align	2
.LC133:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_mus, %function
test_mus:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	ldr	r3, .L268
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #0
	strh	r3, [fp, #-46]	@ movhi
	mov	r3, #0
	strh	r3, [fp, #-48]	@ movhi
	mov	r3, #0
	strb	r3, [fp, #-49]
	ldr	r3, .L268+4
	str	r3, [fp, #-28]
	ldr	r3, .L268+8
	sub	ip, fp, #24
	ldm	r3, {r0, r1, r2, r3}
	stm	ip, {r0, r1, r2, r3}
	mov	r3, #0
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-60]
	cmp	r3, #16
	bhi	.L199
	ldr	r0, .L268+12
	bl	puts
	mvn	r3, #0
	b	.L255
.L199:
	sub	r3, fp, #28
	mov	r2, #4
	mov	r1, r3
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L201
	ldr	r0, .L268+16
	bl	puts
	mvn	r3, #0
	b	.L255
.L201:
	ldr	r3, [fp, #-56]
	add	r3, r3, #5
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldr	r2, [fp, #-56]
	add	r2, r2, #4
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r3, r3, #7
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldr	r2, [fp, #-56]
	add	r2, r2, #6
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L202
	ldr	r2, [fp, #-32]
	ldr	r1, [fp, #-36]
	ldr	r0, .L268+20
	bl	printf
.L202:
	ldr	r3, [fp, #-56]
	add	r3, r3, #13
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	lsl	r3, r3, #16
	asr	r2, r3, #16
	ldr	r3, [fp, #-56]
	add	r3, r3, #12
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	asr	r3, r3, #16
	orr	r3, r2, r3
	lsl	r3, r3, #16
	asr	r3, r3, #16
	strh	r3, [fp, #-46]	@ movhi
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L203
	ldrh	r3, [fp, #-46]
	mov	r1, r3
	ldr	r0, .L268+24
	bl	printf
.L203:
	mov	r3, #16
	str	r3, [fp, #-44]
	ldrh	r3, [fp, #-46]
	lsl	r3, r3, #1
	mov	r2, r3
	ldr	r3, [fp, #-44]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	ldr	r2, [fp, #-60]
	cmp	r2, r3
	bcs	.L204
	ldr	r0, .L268+12
	bl	puts
	mvn	r3, #0
	b	.L255
.L204:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L205
.L206:
	ldrh	r0, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldr	r1, [fp, #-56]
	ldr	r2, [fp, #-44]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r2, r3
	mov	r1, r0
	ldr	r0, .L268+28
	bl	printf
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	str	r3, [fp, #-44]
	ldrh	r3, [fp, #-48]
	add	r3, r3, #1
	strh	r3, [fp, #-48]	@ movhi
	ldrh	r2, [fp, #-48]
	ldrh	r3, [fp, #-46]
	cmp	r2, r3
	bne	.L206
.L205:
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L258
	ldr	r3, .L268+32
	ldr	r3, [r3]	@ float
	mov	r1, #0
	mov	r0, r3
	bl	__aeabi_fcmpeq
	mov	r3, r0
	cmp	r3, #0
	beq	.L208
	ldr	r3, .L268+32
	ldr	r2, .L268+36
	str	r2, [r3]	@ float
.L208:
	ldr	r3, .L268+32
	ldr	r3, [r3]	@ float
	mov	r1, r3
	ldr	r0, .L268+40
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	mov	r1, r3
	mov	r0, #60
	bl	set_secs_per_tick
	mov	r0, #0
	bl	add_and_display_time
	b	.L252
.L258:
	nop
.L207:
	b	.L252
.L267:
	nop
.L252:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L210
	bl	display_time
.L210:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsr	r3, r3, #4
	and	r3, r3, #255
	and	r3, r3, #7
	cmp	r3, #7
	ldrls	pc, [pc, r3, asl #2]
	b	.L211
.L213:
	.word	.L220
	.word	.L219
	.word	.L218
	.word	.L217
	.word	.L216
	.word	.L215
	.word	.L214
	.word	.L212
.L220:
	mov	r3, #2
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L259
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+44
	bl	printf
	b	.L259
.L219:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L222
	mov	r3, #3
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L223
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r1, r3, #127
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L268+48
	bl	printf
.L223:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r2, r2, r3
	ldr	r1, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	ldrb	r2, [r2]	@ zero_extendqisi2
	sub	r1, fp, #4
	add	r3, r1, r3
	strb	r2, [r3, #-20]
	b	.L260
.L222:
	mov	r3, #2
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L260
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #15
	sub	r2, fp, #4
	add	r3, r2, r3
	ldrb	r3, [r3, #-20]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L268+52
	bl	printf
	b	.L260
.L218:
	mov	r3, #2
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L261
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+56
	bl	printf
	b	.L261
.L217:
	mov	r3, #2
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L262
	ldr	r0, .L268+60
	bl	printf
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #10
	cmp	r3, #4
	ldrls	pc, [pc, r3, asl #2]
	b	.L227
.L229:
	.word	.L233
	.word	.L232
	.word	.L231
	.word	.L230
	.word	.L228
.L233:
	ldr	r0, .L268+64
	bl	puts
	b	.L226
.L232:
	ldr	r0, .L268+68
	bl	puts
	b	.L226
.L231:
	ldr	r0, .L268+72
	bl	puts
	b	.L226
.L230:
	ldr	r0, .L268+76
	bl	puts
	b	.L226
.L228:
	ldr	r0, .L268+80
	bl	puts
	b	.L226
.L227:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+84
	bl	printf
	b	.L211
.L262:
	nop
.L226:
	b	.L211
.L216:
	mov	r3, #3
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L263
	ldr	r0, .L268+88
	bl	printf
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	ldrls	pc, [pc, r3, asl #2]
	b	.L235
.L237:
	.word	.L246
	.word	.L245
	.word	.L244
	.word	.L243
	.word	.L242
	.word	.L241
	.word	.L240
	.word	.L239
	.word	.L238
	.word	.L236
.L246:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+92
	bl	printf
	b	.L234
.L245:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+96
	bl	printf
	b	.L234
.L244:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+100
	bl	printf
	b	.L234
.L243:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+104
	bl	printf
	b	.L234
.L242:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #64
	mov	r1, r3
	ldr	r0, .L268+108
	bl	printf
	b	.L234
.L241:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+112
	bl	printf
	b	.L234
.L240:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+116
	bl	printf
	b	.L234
.L239:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+120
	bl	printf
	b	.L234
.L238:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+124
	bl	printf
	b	.L234
.L236:
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+128
	bl	printf
	b	.L234
.L235:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-44]
	add	r3, r3, #2
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L268+132
	bl	printf
	b	.L211
.L263:
	nop
.L234:
	b	.L211
.L215:
	mov	r3, #1
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L264
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+136
	bl	printf
	b	.L264
.L214:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L265
	ldr	r0, .L268+140
	bl	puts
	b	.L265
.L212:
	mov	r3, #1
	strb	r3, [fp, #-49]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L266
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L268+136
	bl	printf
	b	.L266
.L259:
	nop
	b	.L211
.L260:
	nop
	b	.L211
.L261:
	nop
	b	.L211
.L264:
	nop
	b	.L211
.L266:
	nop
.L211:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L251
	ldrb	r3, [fp, #-49]	@ zero_extendqisi2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-44]
	b	.L252
.L251:
	ldrb	r3, [fp, #-49]	@ zero_extendqisi2
	ldr	r2, [fp, #-44]
	add	r3, r2, r3
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-40]
.L253:
	ldr	r3, [fp, #-40]
	lsl	r2, r3, #7
	ldr	r1, [fp, #-56]
	ldr	r3, [fp, #-44]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L253
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L254
	ldr	r3, [fp, #-40]
	mov	r0, r3
	bl	add_time
.L254:
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-60]
	cmp	r2, r3
	bcc	.L267
	b	.L249
.L265:
	nop
.L249:
	mov	r3, #0
.L255:
	ldr	r2, .L268
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L256
	bl	__stack_chk_fail
.L256:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L269:
	.align	2
.L268:
	.word	.LC133
	.word	441668941
	.word	.LC102
	.word	.LC103
	.word	.LC104
	.word	.LC105
	.word	.LC106
	.word	.LC107
	.word	frequency
	.word	1124859904
	.word	1281679808
	.word	.LC108
	.word	.LC109
	.word	.LC110
	.word	.LC111
	.word	.LC112
	.word	.LC113
	.word	.LC114
	.word	.LC115
	.word	.LC116
	.word	.LC117
	.word	.LC118
	.word	.LC119
	.word	.LC120
	.word	.LC121
	.word	.LC122
	.word	.LC123
	.word	.LC124
	.word	.LC125
	.word	.LC126
	.word	.LC127
	.word	.LC128
	.word	.LC129
	.word	.LC130
	.word	.LC131
	.word	.LC132
	.size	test_mus, .-test_mus
	.section	.rodata
	.align	2
.LC134:
	.ascii	"HMI-MIDISONG061595\000"
	.align	2
.LC135:
	.ascii	"Not a valid HMI file: expected HMI-MIDISONG061595\000"
	.align	2
.LC136:
	.ascii	"Beats per minute: %u\012\000"
	.align	2
.LC137:
	.ascii	"Track count: %i\012\000"
	.align	2
.LC138:
	.ascii	"Track %i offset: %.8x\012\000"
	.align	2
.LC139:
	.ascii	"HMI-MIDITRACK\000"
	.align	2
.LC140:
	.ascii	"Not a valid HMI file: expected HMI-MIDITRACK\000"
	.align	2
.LC141:
	.ascii	"Start of track %u\012\000"
	.align	2
.LC142:
	.ascii	"Track header length: %u\012\000"
	.align	2
.LC143:
	.ascii	"Skipping HMI event\000"
	.align	2
.LC144:
	.ascii	"Note Length: %f secs\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_hmi, %function
test_hmi:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #64
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	str	r2, [fp, #-56]
	mov	r3, #0
	strh	r3, [fp, #-42]	@ movhi
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-43]
	mov	r3, #0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-52]
	str	r3, [fp, #-8]
	mov	r2, #18
	ldr	r1, .L307
	ldr	r0, [fp, #-48]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L271
	ldr	r0, .L307+4
	bl	puts
	mvn	r3, #0
	b	.L272
.L271:
	ldr	r3, [fp, #-48]
	add	r3, r3, #212
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #212
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #212
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	strh	r3, [fp, #-42]	@ movhi
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L273
	ldrh	r3, [fp, #-42]
	mov	r1, r3
	ldr	r0, .L307+8
	bl	printf
	ldrh	r3, [fp, #-42]
	mov	r0, r3
	bl	__aeabi_ui2f
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L307+12
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	mov	r1, r3
	mov	r0, #60
	bl	set_secs_per_tick
	bl	reset_time
.L273:
	ldr	r3, [fp, #-48]
	add	r3, r3, #15
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #16
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #16
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L274
	ldr	r1, [fp, #-24]
	ldr	r0, .L307+16
	bl	printf
.L274:
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r3, r3, #141
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #141
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #141
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-20]
	str	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L275
.L277:
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	mov	r2, r1
	str	r2, [r3]
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r1, r3, #8
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r2, [r3]
	mov	r0, r1
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	add	r2, r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r1, r3, #16
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r2, [r3]
	mov	r0, r1
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	add	r2, r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-48]
	add	r2, r3, #1
	str	r2, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r1, r3, #24
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r2, [r3]
	mov	r0, r1
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r1, [fp, #-20]
	add	r3, r1, r3
	add	r2, r2, r0
	str	r2, [r3]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #4
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L276
	ldr	r3, [fp, #-40]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r2, r3
	ldr	r1, [fp, #-40]
	ldr	r0, .L307+20
	bl	printf
.L276:
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L275:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L277
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	ldr	r2, [fp, #-36]
	sub	r3, r2, r3
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-20]
	ldr	r2, [r3]
	ldr	r3, [fp, #-36]
	sub	r3, r2, r3
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-20]
	ldr	r3, [r3]
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L278
.L306:
	mov	r2, #13
	ldr	r1, .L307+24
	ldr	r0, [fp, #-48]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L279
	ldr	r0, .L307+28
	bl	puts
	ldr	r0, [fp, #-20]
	bl	free
	mvn	r3, #0
	b	.L272
.L279:
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L280
	ldr	r1, [fp, #-40]
	ldr	r0, .L307+32
	bl	printf
.L280:
	ldr	r3, [fp, #-48]
	add	r3, r3, #87
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-48]
	add	r3, r3, #88
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-48]
	add	r3, r3, #89
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-48]
	add	r3, r3, #90
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L281
	ldr	r1, [fp, #-12]
	ldr	r0, .L307+36
	bl	printf
.L281:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-12]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	ldr	r2, [fp, #-40]
	cmp	r2, r3
	bcs	.L282
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	lsl	r3, r3, #2
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	b	.L283
.L282:
	ldr	r3, [fp, #-8]
	str	r3, [fp, #-28]
.L283:
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L285
	bl	reset_time
	b	.L285
.L305:
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L286
	b	.L287
.L288:
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L287:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L288
.L286:
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L289
	ldr	r3, [fp, #-32]
	mov	r0, r3
	bl	add_and_display_time
.L289:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #254
	bne	.L290
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L291
	ldr	r0, .L307+40
	bl	puts
.L291:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #16
	bne	.L292
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-52]
	sub	r3, r3, r2
	sub	r3, r3, #5
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r2, r3
	add	r3, r3, #5
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r3, #5
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	b	.L293
.L292:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #21
	bne	.L293
	ldr	r3, [fp, #-52]
	sub	r3, r3, #4
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	str	r3, [fp, #-48]
.L293:
	ldr	r3, [fp, #-48]
	add	r3, r3, #4
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #4
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	b	.L285
.L290:
	ldrb	r2, [fp, #-43]	@ zero_extendqisi2
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, [fp, #-56]
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	check_midi_event
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmn	r3, #1
	bne	.L294
	ldr	r0, .L307+44
	bl	puts
	ldr	r0, [fp, #-20]
	bl	free
	mvn	r3, #0
	b	.L272
.L294:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #240
	beq	.L295
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #247
	bne	.L296
.L295:
	mov	r3, #0
	strb	r3, [fp, #-43]
	b	.L297
.L296:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #239
	bhi	.L297
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L297
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]
	strb	r3, [fp, #-43]
.L297:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L298
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	bne	.L298
	ldr	r3, [fp, #-48]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L298
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-52]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	b	.L299
.L298:
	ldrb	r3, [fp, #-43]	@ zero_extendqisi2
	and	r3, r3, #240
	cmp	r3, #144
	bne	.L300
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-52]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L301
	b	.L302
.L303:
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
.L302:
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L303
.L301:
	ldr	r3, [fp, #-32]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-48]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	beq	.L304
	ldr	r0, [fp, #-32]
	bl	__aeabi_ui2f
	mov	r2, r0
	ldr	r3, .L307+48
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L307+52
	bl	printf
.L304:
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	sub	r3, r3, #1
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-36]
	b	.L285
.L300:
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-52]
	sub	r3, r2, r3
	str	r3, [fp, #-52]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	str	r3, [fp, #-36]
.L285:
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-28]
	cmp	r2, r3
	bcc	.L305
.L299:
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L278:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L306
	ldr	r0, [fp, #-20]
	bl	free
	mov	r3, #0
.L272:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L308:
	.align	2
.L307:
	.word	.LC134
	.word	.LC135
	.word	.LC136
	.word	1281679808
	.word	.LC137
	.word	.LC138
	.word	.LC139
	.word	.LC140
	.word	.LC141
	.word	.LC142
	.word	.LC143
	.word	.LC81
	.word	secs_per_tick
	.word	.LC144
	.size	test_hmi, .-test_hmi
	.section	.rodata
	.align	2
.LC145:
	.ascii	"HMIMIDIP\000"
	.align	2
.LC146:
	.ascii	"Not a valid HMP file: expected HMIMIDIP\000"
	.align	2
.LC147:
	.ascii	"013195\000"
	.align	2
.LC148:
	.ascii	"HMPv2 format detected\000"
	.align	2
.LC149:
	.ascii	"Not a valid HMP file\000"
	.align	2
.LC150:
	.ascii	"File length: %u\012\000"
	.align	2
.LC151:
	.ascii	"Number of chunks: %u\012\000"
	.align	2
.LC152:
	.ascii	"Song Time: %u\012\000"
	.align	2
.LC153:
	.ascii	"Chunk number: %u\012\000"
	.align	2
.LC154:
	.ascii	"Chunk length: %u\012\000"
	.align	2
.LC155:
	.ascii	"File too short\000"
	.align	2
.LC156:
	.ascii	"Track Number: %u\012\000"
	.align	2
.LC157:
	.ascii	"HMP Loop Start\000"
	.align	2
.LC158:
	.ascii	"HMP Loop End\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_hmp, %function
test_hmp:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #80
	str	r0, [fp, #-64]
	str	r1, [fp, #-68]
	str	r2, [fp, #-72]
	mov	r3, #0
	strb	r3, [fp, #-57]
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-52]
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r2, #8
	ldr	r1, .L338
	ldr	r0, [fp, #-64]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L310
	ldr	r0, .L338+4
	bl	puts
	mvn	r3, #0
	b	.L311
.L310:
	ldr	r3, [fp, #-64]
	add	r3, r3, #8
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #8
	str	r3, [fp, #-68]
	mov	r2, #6
	ldr	r1, .L338+8
	ldr	r0, [fp, #-64]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L312
	mov	r3, #1
	strb	r3, [fp, #-57]
	ldr	r3, [fp, #-64]
	add	r3, r3, #6
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #6
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L312
	ldr	r0, .L338+12
	bl	puts
.L312:
	ldrb	r3, [fp, #-57]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L313
	mov	r3, #18
	str	r3, [fp, #-56]
	b	.L314
.L313:
	mov	r3, #24
	str	r3, [fp, #-56]
.L314:
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L315
.L317:
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-52]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L316
	ldr	r0, .L338+16
	bl	puts
	mvn	r3, #0
	b	.L311
.L316:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L315:
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-56]
	cmp	r2, r3
	bcc	.L317
	ldr	r2, [fp, #-64]
	ldr	r3, [fp, #-56]
	add	r3, r2, r3
	str	r3, [fp, #-64]
	ldr	r2, [fp, #-68]
	ldr	r3, [fp, #-56]
	sub	r3, r2, r3
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-36]
	add	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L318
	ldr	r1, [fp, #-36]
	ldr	r0, .L338+20
	bl	printf
.L318:
	ldr	r3, [fp, #-64]
	add	r3, r3, #12
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #16
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-32]
	add	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L319
	ldr	r1, [fp, #-32]
	ldr	r0, .L338+24
	bl	printf
.L319:
	ldr	r3, [fp, #-64]
	add	r3, r3, #4
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #8
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L320
	ldr	r1, [fp, #-20]
	ldr	r0, .L338+28
	bl	printf
	ldr	r0, [fp, #-20]
	bl	__aeabi_ui2f
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L338+32
	bl	__aeabi_fdiv
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2uiz
	mov	r3, r0
	mov	r1, r3
	mov	r0, #60
	bl	set_secs_per_tick
.L320:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #8
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L321
	ldr	r1, [fp, #-16]
	ldr	r0, .L338+36
	bl	printf
.L321:
	ldrb	r3, [fp, #-57]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L322
	ldr	r3, [fp, #-64]
	add	r3, r3, #840
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #840
	str	r3, [fp, #-68]
	b	.L323
.L322:
	ldr	r3, [fp, #-64]
	add	r3, r3, #712
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #712
	str	r3, [fp, #-68]
.L323:
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L324
.L337:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-28]
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L325
	ldr	r1, [fp, #-28]
	ldr	r0, .L338+40
	bl	printf
.L325:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-24]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L326
	ldr	r1, [fp, #-24]
	ldr	r0, .L338+44
	bl	printf
.L326:
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-68]
	cmp	r2, r3
	bls	.L327
	ldr	r0, .L338+48
	bl	puts
	mvn	r3, #0
	b	.L311
.L327:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	mov	r2, r3
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #4
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L328
	ldr	r1, [fp, #-12]
	ldr	r0, .L338+52
	bl	printf
.L328:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #12
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-48]
	b	.L329
.L336:
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L330
.L331:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r2, r3, #127
	ldr	r3, [fp, #-40]
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-44]
	orr	r3, r3, r2
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-40]
	add	r3, r3, #7
	str	r3, [fp, #-40]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #1
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L331
.L330:
	ldr	r3, [fp, #-64]
	add	r2, r3, #1
	str	r2, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r2, r3, #127
	ldr	r3, [fp, #-40]
	lsl	r3, r2, r3
	mov	r2, r3
	ldr	r3, [fp, #-44]
	orr	r3, r3, r2
	str	r3, [fp, #-44]
	ldr	r3, [fp, #-68]
	sub	r3, r3, #1
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L332
	ldr	r3, [fp, #-44]
	mov	r0, r3
	bl	add_and_display_time
.L332:
	mov	r3, #1
	str	r3, [sp]
	ldr	r3, [fp, #-72]
	mov	r2, #0
	ldr	r1, [fp, #-68]
	ldr	r0, [fp, #-64]
	bl	check_midi_event
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L333
	ldr	r0, .L338+56
	bl	puts
	mvn	r3, #0
	b	.L311
.L333:
	ldr	r3, [fp, #-28]
	cmp	r3, #1
	bne	.L334
	ldr	r3, [fp, #-64]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #240
	cmp	r3, #176
	bne	.L334
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #110
	bne	.L335
	ldr	r3, [fp, #-64]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L335
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L335
	ldr	r0, .L338+60
	bl	puts
.L335:
	ldr	r3, [fp, #-64]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #111
	bne	.L334
	ldr	r3, [fp, #-64]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #128
	bne	.L334
	ldr	r3, [fp, #-72]
	cmp	r3, #0
	beq	.L334
	ldr	r0, .L338+64
	bl	puts
.L334:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-68]
	sub	r3, r2, r3
	str	r3, [fp, #-68]
	ldr	r3, [fp, #-48]
	add	r3, r3, #1
	str	r3, [fp, #-48]
.L329:
	ldr	r2, [fp, #-48]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bcc	.L336
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L324:
	ldr	r2, [fp, #-52]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	bcc	.L337
	mov	r3, #0
.L311:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L339:
	.align	2
.L338:
	.word	.LC145
	.word	.LC146
	.word	.LC147
	.word	.LC148
	.word	.LC149
	.word	.LC150
	.word	.LC151
	.word	.LC136
	.word	1281679808
	.word	.LC152
	.word	.LC153
	.word	.LC154
	.word	.LC155
	.word	.LC156
	.word	.LC81
	.word	.LC157
	.word	.LC158
	.size	test_hmp, .-test_hmp
	.section	.rodata
	.align	2
.LC159:
	.ascii	"FORM\000"
	.align	2
.LC160:
	.ascii	"Not a valid xmidi file: expected FORM\000"
	.align	2
.LC161:
	.ascii	"First FORM found\000"
	.align	2
.LC162:
	.ascii	"XDIRINFO\000"
	.align	2
.LC163:
	.ascii	"Not a valid xmidi file: expected XDIRINFO\000"
	.align	2
.LC164:
	.ascii	"Contains %u forms\012\000"
	.align	2
.LC165:
	.ascii	"CAT \000"
	.align	2
.LC166:
	.ascii	"Not a valid xmidi file: expected CAT\000"
	.align	2
.LC167:
	.ascii	"CAT length = %u\000"
	.align	2
.LC168:
	.ascii	"XMID\000"
	.align	2
.LC169:
	.ascii	"Not a valid xmidi file: expected XMID\000"
	.align	2
.LC170:
	.ascii	"\012New FORM\000"
	.align	2
.LC171:
	.ascii	"FORM length: %u\012\000"
	.align	2
.LC172:
	.ascii	"XMID Data\000"
	.align	2
.LC173:
	.ascii	"TIMB\000"
	.align	2
.LC174:
	.ascii	"TIMB length: %u\012\000"
	.align	2
.LC175:
	.ascii	"Patch:%i, Bank:%i\012\000"
	.align	2
.LC176:
	.ascii	"RBRN\000"
	.align	2
.LC177:
	.ascii	"RBRN length: %u\012\000"
	.align	2
.LC178:
	.ascii	"EVNT\000"
	.align	2
.LC179:
	.ascii	"EVENT length: %u\012\000"
	.align	2
.LC180:
	.ascii	"Not a valid xmidi file: unknown XMID entry\000"
	.align	2
.LC181:
	.ascii	"=============\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_xmidi, %function
test_xmidi:
	@ args = 0, pretend = 0, frame = 64
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #72
	str	r0, [fp, #-56]
	str	r1, [fp, #-60]
	str	r2, [fp, #-64]
	mov	r3, #0
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	mov	r3, #60
	str	r3, [fp, #-12]
	ldr	r3, .L380
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r2, #4
	ldr	r1, .L380+4
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L341
	ldr	r0, .L380+8
	bl	puts
	mvn	r3, #0
	b	.L342
.L341:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L343
	ldr	r0, .L380+12
	bl	puts
.L343:
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	mov	r2, #8
	ldr	r1, .L380+16
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L344
	ldr	r0, .L380+20
	bl	puts
	mvn	r3, #0
	b	.L342
.L344:
	ldr	r3, [fp, #-56]
	add	r3, r3, #8
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #8
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L345
	ldr	r1, [fp, #-20]
	ldr	r0, .L380+24
	bl	printf
.L345:
	ldr	r3, [fp, #-48]
	sub	r3, r3, #13
	str	r3, [fp, #-48]
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-48]
	add	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r2, [fp, #-60]
	ldr	r3, [fp, #-48]
	sub	r3, r2, r3
	str	r3, [fp, #-60]
	mov	r2, #4
	ldr	r1, .L380+28
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L346
	ldr	r0, .L380+32
	bl	puts
	mvn	r3, #0
	b	.L342
.L346:
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-16]
	orr	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-16]
	orr	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-16]
	orr	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L347
	ldr	r1, [fp, #-16]
	ldr	r0, .L380+36
	bl	printf
.L347:
	mov	r2, #4
	ldr	r1, .L380+40
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L348
	ldr	r0, .L380+44
	bl	puts
	mvn	r3, #0
	b	.L342
.L348:
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	mov	r3, #0
	str	r3, [fp, #-44]
	b	.L349
.L379:
	mov	r2, #4
	ldr	r1, .L380+4
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L350
	ldr	r0, .L380+8
	bl	puts
	mvn	r3, #0
	b	.L342
.L350:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L351
	ldr	r0, .L380+48
	bl	puts
.L351:
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-36]
	orr	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-36]
	orr	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-36]
	orr	r3, r3, r2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L352
	ldr	r1, [fp, #-36]
	ldr	r0, .L380+52
	bl	printf
.L352:
	mov	r2, #4
	ldr	r1, .L380+40
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L353
	ldr	r0, .L380+44
	bl	puts
	mvn	r3, #0
	b	.L342
.L353:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L354
	ldr	r0, .L380+56
	bl	puts
.L354:
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L377
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-12]
	bl	set_secs_per_tick
.L377:
	mov	r2, #4
	ldr	r1, .L380+60
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L356
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-48]
	orr	r3, r3, r2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #8
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L357
	ldr	r1, [fp, #-48]
	ldr	r0, .L380+64
	bl	printf
.L357:
	ldr	r3, [fp, #-48]
	lsr	r3, r3, #1
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-40]
	b	.L358
.L360:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L359
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r0, .L380+68
	bl	printf
.L359:
	ldr	r3, [fp, #-56]
	add	r3, r3, #2
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #2
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #2
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-40]
.L358:
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-48]
	cmp	r2, r3
	bcc	.L360
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L361
	mov	r0, #10
	bl	putchar
	b	.L361
.L356:
	mov	r2, #4
	ldr	r1, .L380+72
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L362
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #8
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L363
	ldr	r1, [fp, #-32]
	ldr	r0, .L380+76
	bl	printf
.L363:
	ldr	r2, [fp, #-56]
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r2, r3
	str	r3, [fp, #-36]
	b	.L361
.L362:
	mov	r2, #4
	ldr	r1, .L380+80
	ldr	r0, [fp, #-56]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L364
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-56]
	add	r2, r3, #1
	str	r2, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-32]
	orr	r3, r3, r2
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #4
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #8
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L376
	ldr	r1, [fp, #-32]
	ldr	r0, .L380+84
	bl	printf
.L376:
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L366
	mov	r3, #0
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-48]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-56]
	add	r1, r3, #1
	str	r1, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #1
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L367
	ldr	r3, [fp, #-48]
	mov	r0, r3
	bl	add_time
	b	.L367
.L366:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L368
	bl	display_time
.L368:
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, [fp, #-64]
	mov	r2, #0
	ldr	r1, [fp, #-60]
	ldr	r0, [fp, #-56]
	bl	check_midi_event
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L369
	ldr	r0, .L380+88
	bl	puts
	mvn	r3, #0
	b	.L342
.L369:
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #240
	cmp	r3, #144
	bne	.L370
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-60]
	sub	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-32]
	sub	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-36]
	sub	r3, r2, r3
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L371
	b	.L372
.L373:
	ldr	r3, [fp, #-48]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-56]
	add	r1, r3, #1
	str	r1, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #1
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
.L372:
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L373
.L371:
	ldr	r3, [fp, #-48]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-56]
	add	r1, r3, #1
	str	r1, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-60]
	sub	r3, r3, #1
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	sub	r3, r3, #1
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L367
	ldr	r0, [fp, #-48]
	bl	__aeabi_ui2f
	mov	r2, r0
	ldr	r3, .L380+92
	ldr	r3, [r3]	@ float
	mov	r1, r3
	mov	r0, r2
	bl	__aeabi_fmul
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L380+96
	bl	printf
	b	.L367
.L370:
	ldr	r3, [fp, #-56]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L374
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #81
	bne	.L374
	ldr	r3, [fp, #-56]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #3
	bne	.L374
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L374
	mov	r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-56]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #16
	ldr	r3, [fp, #-56]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	add	r3, r2, r3
	ldr	r2, [fp, #-56]
	add	r2, r2, #5
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L375
	ldr	r3, .L380
	str	r3, [fp, #-28]
.L375:
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L374
	ldr	r1, [fp, #-28]
	ldr	r0, [fp, #-12]
	bl	set_secs_per_tick
.L374:
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-56]
	add	r3, r2, r3
	str	r3, [fp, #-56]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-60]
	sub	r3, r2, r3
	str	r3, [fp, #-60]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-32]
	sub	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-8]
	ldr	r2, [fp, #-36]
	sub	r3, r2, r3
	str	r3, [fp, #-36]
.L367:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L376
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L361
	mov	r0, #10
	bl	putchar
	b	.L361
.L364:
	ldr	r0, .L380+100
	bl	puts
	mvn	r3, #0
	b	.L342
.L361:
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L377
	ldr	r3, [fp, #-64]
	cmp	r3, #0
	beq	.L378
	ldr	r0, .L380+104
	bl	puts
.L378:
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-44]
.L349:
	ldr	r2, [fp, #-44]
	ldr	r3, [fp, #-20]
	cmp	r2, r3
	bcc	.L379
	mov	r3, #0
.L342:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L381:
	.align	2
.L380:
	.word	500000
	.word	.LC159
	.word	.LC160
	.word	.LC161
	.word	.LC162
	.word	.LC163
	.word	.LC164
	.word	.LC165
	.word	.LC166
	.word	.LC167
	.word	.LC168
	.word	.LC169
	.word	.LC170
	.word	.LC171
	.word	.LC172
	.word	.LC173
	.word	.LC174
	.word	.LC175
	.word	.LC176
	.word	.LC177
	.word	.LC178
	.word	.LC179
	.word	.LC81
	.word	secs_per_tick
	.word	.LC144
	.word	.LC180
	.word	.LC181
	.size	test_xmidi, .-test_xmidi
	.section	.rodata
	.align	2
.LC182:
	.ascii	"RIFF\000"
	.align	2
.LC183:
	.ascii	"MThd\000"
	.align	2
.LC184:
	.ascii	"Not a compatible file\000"
	.align	2
.LC185:
	.ascii	"Midi File Too Short\000"
	.align	2
.LC186:
	.ascii	"Header Size: %i\012\000"
	.align	2
.LC187:
	.ascii	"Corrupt Midi Header\000"
	.align	2
.LC188:
	.ascii	"Format: %i\012\000"
	.align	2
.LC189:
	.ascii	"Midi Format Not Supported\000"
	.align	2
.LC190:
	.ascii	"Number of Tracks: %i\012\000"
	.align	2
.LC191:
	.ascii	"Midi Contains No Tracks\000"
	.align	2
.LC192:
	.ascii	"Divisions: %i\012\000"
	.align	2
.LC193:
	.ascii	"Division Type Not Supported\000"
	.align	2
.LC194:
	.ascii	"MTrk\000"
	.align	2
.LC195:
	.ascii	"Expected Track Header\000"
	.align	2
.LC196:
	.ascii	"Start of Track\000"
	.align	2
.LC197:
	.ascii	"Track Size: %i\012\000"
	.align	2
.LC198:
	.ascii	"Midi File Too Short: Missing Track Data\000"
	.align	2
.LC199:
	.ascii	"Corrupt Midi, Expected EOT\000"
	.align	2
.LC200:
	.ascii	"Corrupt Midi, Missing or Corrupt Track Data\000"
	.align	2
.LC201:
	.ascii	"Currupt Midi: expected event, got data\000"
	.align	2
.LC202:
	.ascii	"%.4x %.2x %.2x %.2x %.2x\012\000"
	.align	2
.LC203:
	.ascii	"Missing or Corrupt MIDI Data 0x%.8x\012\000"
	.align	2
.LC204:
	.ascii	"Corrupt Midi, Track Data went beyond track boundrie"
	.ascii	"s.\000"
	.align	2
.LC205:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_midi, %function
test_midi:
	@ args = 0, pretend = 0, frame = 2136
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #2144
	str	r0, [fp, #-2128]
	str	r1, [fp, #-2132]
	str	r2, [fp, #-2136]
	ldr	r3, .L427
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #96
	str	r3, [fp, #-2092]
	mov	r3, #0
	strb	r3, [fp, #-2117]
	ldr	r3, .L427+4
	str	r3, [fp, #-2104]
	mov	r3, #0
	str	r3, [fp, #-2088]
	mov	r3, #0
	str	r3, [fp, #-2100]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #2048
	mov	r1, #0
	mov	r0, r3
	bl	memset
	mov	r3, #0
	str	r3, [fp, #-2096]
	mov	r2, #4
	ldr	r1, .L427+8
	ldr	r0, [fp, #-2128]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L383
	ldr	r3, [fp, #-2128]
	add	r3, r3, #20
	str	r3, [fp, #-2128]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #20
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #20
	str	r3, [fp, #-2100]
.L383:
	mov	r2, #4
	ldr	r1, .L427+12
	ldr	r0, [fp, #-2128]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L384
	ldr	r0, .L427+16
	bl	puts
	mvn	r3, #0
	b	.L425
.L384:
	ldr	r3, [fp, #-2128]
	add	r3, r3, #4
	str	r3, [fp, #-2128]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #4
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #4
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2132]
	cmp	r3, #9
	bhi	.L386
	ldr	r0, .L427+20
	bl	puts
	mvn	r3, #0
	b	.L425
.L386:
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-2084]
	orr	r3, r3, r2
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-2084]
	orr	r3, r3, r2
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2084]
	orr	r3, r3, r2
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #4
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #4
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L387
	ldr	r1, [fp, #-2084]
	ldr	r0, .L427+24
	bl	printf
.L387:
	ldr	r3, [fp, #-2084]
	cmp	r3, #6
	beq	.L388
	ldr	r0, .L427+28
	bl	puts
	mvn	r3, #0
	b	.L425
.L388:
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	str	r3, [fp, #-2080]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2080]
	orr	r3, r3, r2
	str	r3, [fp, #-2080]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #2
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #2
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L389
	ldr	r1, [fp, #-2084]
	ldr	r0, .L427+32
	bl	printf
.L389:
	ldr	r3, [fp, #-2080]
	cmp	r3, #2
	bls	.L390
	ldr	r0, .L427+36
	bl	puts
	mvn	r3, #0
	b	.L425
.L390:
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2084]
	orr	r3, r3, r2
	str	r3, [fp, #-2084]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #2
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #2
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L391
	ldr	r1, [fp, #-2084]
	ldr	r0, .L427+40
	bl	printf
.L391:
	ldr	r3, [fp, #-2084]
	cmp	r3, #0
	bne	.L392
	ldr	r0, .L427+44
	bl	puts
	mvn	r3, #0
	b	.L425
.L392:
	ldr	r3, [fp, #-2084]
	str	r3, [fp, #-2076]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	str	r3, [fp, #-2092]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2092]
	orr	r3, r3, r2
	str	r3, [fp, #-2092]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #2
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #2
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L393
	ldr	r1, [fp, #-2092]
	ldr	r0, .L427+48
	bl	printf
	ldr	r3, [fp, #-2092]
	and	r3, r3, #32768
	cmp	r3, #0
	beq	.L394
	ldr	r0, .L427+52
	bl	puts
	mvn	r3, #0
	b	.L425
.L394:
	ldr	r1, [fp, #-2104]
	ldr	r0, [fp, #-2092]
	bl	set_secs_per_tick
	bl	reset_time
.L393:
	mov	r3, #0
	str	r3, [fp, #-2108]
	b	.L395
.L424:
	ldr	r3, [fp, #-2132]
	cmp	r3, #7
	bhi	.L396
	ldr	r0, .L427+20
	bl	puts
	mvn	r3, #0
	b	.L425
.L396:
	mov	r2, #4
	ldr	r1, .L427+56
	ldr	r0, [fp, #-2128]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L397
	ldr	r0, .L427+60
	bl	puts
	mvn	r3, #0
	b	.L425
.L397:
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L398
	ldr	r0, .L427+64
	bl	puts
	ldr	r3, [fp, #-2080]
	cmp	r3, #2
	beq	.L399
	bl	reset_time
.L399:
	mov	r3, #0
	str	r3, [fp, #-2112]
	mov	r3, #0
	str	r3, [fp, #-2096]
	ldr	r3, .L427+4
	str	r3, [fp, #-2104]
	ldr	r1, [fp, #-2104]
	ldr	r0, [fp, #-2092]
	bl	set_secs_per_tick
.L398:
	ldr	r3, [fp, #-2128]
	add	r3, r3, #4
	str	r3, [fp, #-2128]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #4
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #4
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	str	r3, [fp, #-2072]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	mov	r2, r3
	ldr	r3, [fp, #-2072]
	orr	r3, r3, r2
	str	r3, [fp, #-2072]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	mov	r2, r3
	ldr	r3, [fp, #-2072]
	orr	r3, r3, r2
	str	r3, [fp, #-2072]
	ldr	r3, [fp, #-2128]
	add	r2, r3, #1
	str	r2, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2072]
	orr	r3, r3, r2
	str	r3, [fp, #-2072]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #4
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #4
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L400
	ldr	r1, [fp, #-2072]
	ldr	r0, .L427+68
	bl	printf
.L400:
	ldr	r2, [fp, #-2132]
	ldr	r3, [fp, #-2072]
	cmp	r2, r3
	bcs	.L401
	ldr	r0, .L427+72
	bl	puts
	mvn	r3, #0
	b	.L425
.L401:
	ldr	r3, [fp, #-2080]
	cmp	r3, #0
	beq	.L402
	ldr	r3, [fp, #-2072]
	sub	r3, r3, #3
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L403
	ldr	r3, [fp, #-2072]
	sub	r3, r3, #2
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	bne	.L403
	ldr	r3, [fp, #-2072]
	sub	r3, r3, #1
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L402
.L403:
	ldr	r0, .L427+76
	bl	puts
	mvn	r3, #0
	b	.L425
.L402:
	ldr	r2, [fp, #-2128]
	ldr	r3, [fp, #-2072]
	add	r3, r2, r3
	str	r3, [fp, #-2068]
	b	.L404
.L423:
	mov	r3, #0
	str	r3, [fp, #-2116]
	b	.L405
.L406:
	ldr	r3, [fp, #-2116]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-2116]
	ldr	r3, [fp, #-2128]
	add	r3, r3, #1
	str	r3, [fp, #-2128]
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #1
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #1
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2132]
	cmp	r3, #0
	bne	.L405
	ldr	r0, .L427+80
	bl	puts
	mvn	r3, #0
	b	.L425
.L405:
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L406
	ldr	r3, [fp, #-2116]
	lsl	r2, r3, #7
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #127
	orr	r3, r2, r3
	str	r3, [fp, #-2116]
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L407
	ldr	r2, [fp, #-2112]
	ldr	r3, [fp, #-2116]
	add	r3, r2, r3
	str	r3, [fp, #-2112]
	ldr	r3, [fp, #-2080]
	cmp	r3, #1
	bne	.L408
	ldr	r3, [fp, #-2108]
	cmp	r3, #0
	beq	.L408
	ldr	r3, [fp, #-2096]
	cmp	r3, #0
	beq	.L409
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-2052]
	cmp	r3, #0
	beq	.L408
.L409:
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-2052]
	ldr	r2, [fp, #-2112]
	cmp	r2, r3
	bcc	.L408
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-2052]
	ldr	r2, [fp, #-2112]
	sub	r3, r2, r3
	str	r3, [fp, #-2064]
	ldr	r2, [fp, #-2116]
	ldr	r3, [fp, #-2064]
	sub	r3, r2, r3
	str	r3, [fp, #-2116]
	ldr	r3, [fp, #-2116]
	mov	r0, r3
	bl	add_time
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-2048]
	mov	r1, r3
	ldr	r0, [fp, #-2092]
	bl	set_secs_per_tick
	ldr	r3, [fp, #-2096]
	add	r3, r3, #1
	str	r3, [fp, #-2096]
	ldr	r3, [fp, #-2064]
	str	r3, [fp, #-2116]
.L408:
	ldr	r3, [fp, #-2116]
	mov	r0, r3
	bl	add_and_display_time
.L407:
	ldr	r3, [fp, #-2128]
	add	r3, r3, #1
	str	r3, [fp, #-2128]
	ldr	r3, [fp, #-2132]
	cmp	r3, #0
	bne	.L410
	ldr	r0, .L427+80
	bl	puts
	mvn	r3, #0
	b	.L425
.L410:
	ldr	r3, [fp, #-2132]
	sub	r3, r3, #1
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2100]
	add	r3, r3, #1
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	blt	.L411
	ldrb	r3, [fp, #-2117]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L411
	ldr	r0, .L427+84
	bl	puts
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r3, [fp, #-2128]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	ldr	r3, [fp, #-2128]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, [fp, #-2128]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	str	r3, [sp, #4]
	str	r2, [sp]
	mov	r3, r0
	mov	r2, r1
	ldr	r1, [fp, #-2100]
	ldr	r0, .L427+88
	bl	printf
	mvn	r3, #0
	b	.L425
.L411:
	ldrb	r2, [fp, #-2117]	@ zero_extendqisi2
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, [fp, #-2136]
	ldr	r1, [fp, #-2132]
	ldr	r0, [fp, #-2128]
	bl	check_midi_event
	str	r0, [fp, #-2088]
	ldr	r3, [fp, #-2088]
	cmn	r3, #1
	bne	.L412
	ldr	r1, [fp, #-2100]
	ldr	r0, .L427+92
	bl	printf
	mvn	r3, #0
	b	.L425
.L412:
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #240
	beq	.L413
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #247
	bne	.L414
.L413:
	mov	r3, #0
	strb	r3, [fp, #-2117]
	b	.L415
.L414:
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #239
	bhi	.L415
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L415
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]
	strb	r3, [fp, #-2117]
.L415:
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L416
	ldr	r3, [fp, #-2128]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #81
	bne	.L416
	ldr	r3, [fp, #-2128]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #3
	bne	.L416
	ldr	r3, [fp, #-2128]
	add	r3, r3, #3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #16
	ldr	r3, [fp, #-2128]
	add	r3, r3, #4
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	add	r3, r2, r3
	ldr	r2, [fp, #-2128]
	add	r2, r2, #5
	ldrb	r2, [r2]	@ zero_extendqisi2
	add	r3, r3, r2
	str	r3, [fp, #-2104]
	ldr	r3, [fp, #-2104]
	cmp	r3, #0
	bne	.L417
	ldr	r3, .L427+4
	str	r3, [fp, #-2104]
.L417:
	ldr	r3, [fp, #-2136]
	cmp	r3, #0
	beq	.L416
	ldr	r1, [fp, #-2104]
	ldr	r0, [fp, #-2092]
	bl	set_secs_per_tick
	ldr	r3, [fp, #-2080]
	cmp	r3, #1
	bne	.L416
	ldr	r3, [fp, #-2108]
	cmp	r3, #0
	bne	.L416
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [fp, #-2112]
	str	r2, [r3, #-2052]
	ldr	r3, [fp, #-2096]
	lsl	r3, r3, #3
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [fp, #-2104]
	str	r2, [r3, #-2048]
	ldr	r3, [fp, #-2096]
	add	r3, r3, #1
	str	r3, [fp, #-2096]
.L416:
	ldr	r3, [fp, #-2088]
	ldr	r2, [fp, #-2132]
	sub	r3, r2, r3
	str	r3, [fp, #-2132]
	ldr	r3, [fp, #-2088]
	ldr	r2, [fp, #-2100]
	add	r3, r2, r3
	str	r3, [fp, #-2100]
	ldr	r3, [fp, #-2080]
	cmp	r3, #0
	bne	.L418
	ldr	r3, [fp, #-2132]
	cmp	r3, #1
	bhi	.L419
	mov	r3, #0
	b	.L425
.L419:
	ldr	r3, [fp, #-2088]
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	str	r3, [fp, #-2128]
	b	.L404
.L418:
	ldr	r3, [fp, #-2088]
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	str	r3, [fp, #-2060]
	ldr	r2, [fp, #-2060]
	ldr	r3, [fp, #-2068]
	cmp	r2, r3
	bls	.L420
	ldr	r0, .L427+96
	bl	puts
	mvn	r3, #0
	b	.L425
.L420:
	ldr	r3, [fp, #-2128]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L421
	ldr	r3, [fp, #-2128]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	bne	.L421
	ldr	r3, [fp, #-2128]
	add	r3, r3, #2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L421
	ldr	r3, [fp, #-2068]
	str	r3, [fp, #-2128]
	b	.L404
.L421:
	ldr	r3, [fp, #-2132]
	cmp	r3, #0
	bne	.L422
	ldr	r0, .L427+96
	bl	puts
	mvn	r3, #0
	b	.L425
.L422:
	ldr	r3, [fp, #-2088]
	ldr	r2, [fp, #-2128]
	add	r3, r2, r3
	str	r3, [fp, #-2128]
.L404:
	ldr	r2, [fp, #-2128]
	ldr	r3, [fp, #-2068]
	cmp	r2, r3
	bcc	.L423
	ldr	r3, [fp, #-2108]
	add	r3, r3, #1
	str	r3, [fp, #-2108]
.L395:
	ldr	r2, [fp, #-2108]
	ldr	r3, [fp, #-2076]
	cmp	r2, r3
	bcc	.L424
	mov	r3, #0
.L425:
	ldr	r2, .L427
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L426
	bl	__stack_chk_fail
.L426:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L428:
	.align	2
.L427:
	.word	.LC205
	.word	500000
	.word	.LC182
	.word	.LC183
	.word	.LC184
	.word	.LC185
	.word	.LC186
	.word	.LC187
	.word	.LC188
	.word	.LC189
	.word	.LC190
	.word	.LC191
	.word	.LC192
	.word	.LC193
	.word	.LC194
	.word	.LC195
	.word	.LC196
	.word	.LC197
	.word	.LC198
	.word	.LC199
	.word	.LC200
	.word	.LC201
	.word	.LC202
	.word	.LC203
	.word	.LC204
	.size	test_midi, .-test_midi
	.section	.rodata
	.align	2
.LC206:
	.ascii	"GF1PATCH110\000ID#000002\000"
	.align	2
.LC207:
	.ascii	"GF1PATCH100\000ID#000002\000"
	.align	2
.LC208:
	.ascii	"Unsupported format\000"
	.align	2
.LC209:
	.ascii	"Number of samples: %i\012\000"
	.align	2
.LC210:
	.ascii	"Sample Start\000"
	.align	2
.LC211:
	.ascii	"Loop Fraction: 0x%x, \000"
	.align	2
.LC212:
	.ascii	"Data Length: %i, \000"
	.align	2
.LC213:
	.ascii	"Loop Start: %i, \000"
	.align	2
.LC214:
	.ascii	"Loop End: %i\012\000"
	.align	2
.LC215:
	.ascii	"Rate: %i, \000"
	.global	__aeabi_ddiv
	.align	2
.LC216:
	.ascii	"Low Freq: %fHz, \000"
	.align	2
.LC217:
	.ascii	"High Freq: %fHz, \000"
	.align	2
.LC218:
	.ascii	"Root Freq: %fHz\012\000"
	.align	2
.LC219:
	.ascii	"Attack Level: %i, Attack Time: %fsecs\012\000"
	.align	2
.LC220:
	.ascii	"Decay Level: %i, Decay Time: %fsecs\012\000"
	.align	2
.LC221:
	.ascii	"Sustain Level: %i, Sustain Time: %fsecs\012\000"
	.align	2
.LC222:
	.ascii	"Sustained Release Level: %i, Sustained Release Time"
	.ascii	": %fsecs\012\000"
	.align	2
.LC223:
	.ascii	"Normal Release Level: %i, Normal Release Time: %fse"
	.ascii	"cs\012\000"
	.align	2
.LC224:
	.ascii	"Clamped Release Level: %i, Clamped Release Time: %f"
	.ascii	"secs\012\000"
	.global	__aeabi_fcmplt
	.align	2
.LC225:
	.ascii	"WARNING!! Normal release envelope longer than susta"
	.ascii	"ined release envelope\000"
	.align	2
.LC226:
	.ascii	"          Caused by patch editor not following the "
	.ascii	"file format set by Gravis\000"
	.align	2
.LC227:
	.ascii	"          WildMIDI will attempt to compensate for i"
	.ascii	"t on playback\000"
	.align	2
.LC228:
	.ascii	"WARNING!! Clamped release envelope longer than norm"
	.ascii	"al release envelope\000"
	.align	2
.LC229:
	.ascii	"Modes: \000"
	.align	2
.LC230:
	.ascii	"16 Bit  \000"
	.align	2
.LC231:
	.ascii	"Unsigned  \000"
	.align	2
.LC232:
	.ascii	"Loop  \000"
	.align	2
.LC233:
	.ascii	"Ping Pong  \000"
	.align	2
.LC234:
	.ascii	"Reverse  \000"
	.align	2
.LC235:
	.ascii	"Sustain  \000"
	.align	2
.LC236:
	.ascii	"Envelope  \000"
	.align	2
.LC237:
	.ascii	"Clamped Release  \000"
	.align	2
.LC238:
	.ascii	"Sample End\012\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	test_guspat, %function
test_guspat:
	@ 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
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-28]
	cmp	r3, #238
	bhi	.L430
	ldr	r0, .L454
	bl	puts
	mvn	r3, #0
	b	.L431
.L430:
	mov	r2, #22
	ldr	r1, .L454+4
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L432
	mov	r2, #22
	ldr	r1, .L454+8
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L432
	ldr	r0, .L454+12
	bl	puts
	mvn	r3, #0
	b	.L431
.L432:
	ldr	r3, [fp, #-24]
	add	r3, r3, #82
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	bhi	.L433
	ldr	r3, [fp, #-24]
	add	r3, r3, #151
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #1
	bls	.L434
.L433:
	ldr	r0, .L454+12
	bl	puts
	mvn	r3, #0
	b	.L431
.L434:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3, #198]
	strb	r3, [fp, #-17]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L435
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L454+16
	bl	printf
.L435:
	mov	r3, #239
	str	r3, [fp, #-16]
.L451:
	ldr	r3, [fp, #-16]
	add	r3, r3, #96
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	bcs	.L436
	ldr	r0, .L454
	bl	puts
	mvn	r3, #0
	b	.L431
.L436:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L437
	ldr	r0, .L454+20
	bl	puts
	ldr	r3, [fp, #-16]
	add	r3, r3, #7
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L454+24
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #11
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #10
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #9
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #8
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L454+28
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #15
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #14
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #13
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #12
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L454+32
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #19
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #18
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #17
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #16
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L454+36
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #21
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	ldr	r2, [fp, #-16]
	add	r2, r2, #20
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r1, r3
	ldr	r0, .L454+40
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #25
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #24
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #23
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #22
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, #0
	ldr	r3, .L454+44
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L454+48
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #29
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #28
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #27
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #26
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, #0
	ldr	r3, .L454+44
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L454+52
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #33
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #32
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #31
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #30
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r0, r3
	bl	__aeabi_i2f
	mov	r3, r0
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, #0
	ldr	r3, .L454+44
	bl	__aeabi_ddiv
	mov	r2, r0
	mov	r3, r1
	ldr	r0, .L454+56
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #43
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #37
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+64
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #44
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #38
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+68
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #45
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #39
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+72
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #46
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #40
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+76
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #47
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #41
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+80
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #48
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r4, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #42
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r0, r3
	bl	__aeabi_f2d
	mov	r2, r0
	mov	r3, r1
	mov	r1, r4
	ldr	r0, .L454+84
	bl	printf
.L437:
	ldr	r3, [fp, #-16]
	add	r3, r3, #40
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r0, [r3, r2, lsl #2]	@ float
	ldr	r3, [fp, #-16]
	add	r3, r3, #41
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r1, r3
	bl	__aeabi_fcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L438
	ldr	r0, .L454+88
	bl	puts
	ldr	r0, .L454+92
	bl	puts
	ldr	r0, .L454+96
	bl	puts
.L438:
	ldr	r3, [fp, #-16]
	add	r3, r3, #41
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r0, [r3, r2, lsl #2]	@ float
	ldr	r3, [fp, #-16]
	add	r3, r3, #42
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r3, .L454+60
	ldr	r3, [r3, r2, lsl #2]	@ float
	mov	r1, r3
	bl	__aeabi_fcmplt
	mov	r3, r0
	cmp	r3, #0
	beq	.L440
	ldr	r0, .L454+100
	bl	puts
	ldr	r0, .L454+92
	bl	puts
	ldr	r0, .L454+96
	bl	puts
.L440:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L442
	ldr	r0, .L454+104
	bl	printf
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L443
	ldr	r0, .L454+108
	bl	printf
.L443:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #2
	cmp	r3, #0
	beq	.L444
	ldr	r0, .L454+112
	bl	printf
.L444:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #4
	cmp	r3, #0
	beq	.L445
	ldr	r0, .L454+116
	bl	printf
.L445:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #8
	cmp	r3, #0
	beq	.L446
	ldr	r0, .L454+120
	bl	printf
.L446:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #16
	cmp	r3, #0
	beq	.L447
	ldr	r0, .L454+124
	bl	printf
.L447:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #32
	cmp	r3, #0
	beq	.L448
	ldr	r0, .L454+128
	bl	printf
.L448:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	and	r3, r3, #64
	cmp	r3, #0
	beq	.L449
	ldr	r0, .L454+132
	bl	printf
.L449:
	ldr	r3, [fp, #-16]
	add	r3, r3, #55
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #24
	asr	r3, r3, #24
	cmp	r3, #0
	bge	.L450
	ldr	r0, .L454+136
	bl	printf
.L450:
	mov	r0, #10
	bl	putchar
	ldr	r0, .L454+140
	bl	puts
.L442:
	ldr	r3, [fp, #-16]
	add	r3, r3, #11
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r2, r3, #24
	ldr	r3, [fp, #-16]
	add	r3, r3, #10
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #16
	orr	r2, r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r3, #9
	ldr	r1, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #8
	orr	r3, r2, r3
	ldr	r2, [fp, #-16]
	add	r2, r2, #8
	ldr	r1, [fp, #-24]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	mov	r2, r3
	ldr	r3, [fp, #-16]
	add	r3, r2, r3
	add	r3, r3, #96
	str	r3, [fp, #-16]
	ldrb	r3, [fp, #-17]
	sub	r3, r3, #1
	strb	r3, [fp, #-17]
	ldrb	r3, [fp, #-17]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L451
	mov	r3, #0
.L431:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L455:
	.align	2
.L454:
	.word	.LC155
	.word	.LC206
	.word	.LC207
	.word	.LC208
	.word	.LC209
	.word	.LC210
	.word	.LC211
	.word	.LC212
	.word	.LC213
	.word	.LC214
	.word	.LC215
	.word	1083129856
	.word	.LC216
	.word	.LC217
	.word	.LC218
	.word	env_time_table
	.word	.LC219
	.word	.LC220
	.word	.LC221
	.word	.LC222
	.word	.LC223
	.word	.LC224
	.word	.LC225
	.word	.LC226
	.word	.LC227
	.word	.LC228
	.word	.LC229
	.word	.LC230
	.word	.LC231
	.word	.LC232
	.word	.LC233
	.word	.LC234
	.word	.LC235
	.word	.LC236
	.word	.LC237
	.word	.LC238
	.size	test_guspat, .-test_guspat
	.section	.rodata
	.align	2
.LC239:
	.ascii	"d:f:vh\000"
	.global	__aeabi_d2f
	.align	2
.LC240:
	.ascii	"Unknown Option -%o ??\012\000"
	.align	2
.LC241:
	.ascii	"Testing: %s\012\000"
	.align	2
.LC242:
	.ascii	"%i notes still on after end of file\012\000"
	.align	2
.LC243:
	.ascii	"FAILED: %s will not work correctly with WildMIDI\012"
	.ascii	"\012\000"
	.align	2
.LC244:
	.ascii	"Success\012\000"
	.align	2
.LC245:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 48
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #56
	str	r0, [fp, #-48]
	str	r1, [fp, #-52]
	ldr	r3, .L485
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-44]
	mov	r3, #0
	str	r3, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-32]
	ldr	r3, .L485+4
	str	r3, [fp, #-16]
	ldr	r3, .L485+8
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-40]
	bl	do_version
.L467:
	sub	r3, fp, #44
	str	r3, [sp]
	ldr	r3, .L485+12
	ldr	r2, .L485+16
	ldr	r1, [fp, #-52]
	ldr	r0, [fp, #-48]
	bl	getopt_long
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmn	r3, #1
	beq	.L484
	ldr	r3, [fp, #-20]
	sub	r3, r3, #100
	cmp	r3, #18
	ldrls	pc, [pc, r3, asl #2]
	b	.L459
.L461:
	.word	.L464
	.word	.L459
	.word	.L463
	.word	.L459
	.word	.L462
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L459
	.word	.L460
.L464:
	ldr	r3, .L485+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	str	r0, [fp, #-36]
	b	.L465
.L463:
	ldr	r3, .L485+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	atof
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2f
	mov	r3, r0
	ldr	r2, .L485+24
	str	r3, [r2]	@ float
	b	.L465
.L460:
	mov	r3, #0
	b	.L481
.L462:
	bl	do_help
	mov	r3, #0
	b	.L481
.L459:
	ldr	r1, [fp, #-20]
	ldr	r0, .L485+28
	bl	printf
	mov	r3, #0
	b	.L481
.L465:
	b	.L467
.L484:
	nop
	ldr	r3, .L485+32
	ldr	r3, [r3]
	ldr	r2, [fp, #-48]
	cmp	r2, r3
	bgt	.L469
	mov	r3, #0
	b	.L481
.L480:
	ldr	r3, .L485+32
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L485+36
	bl	printf
	bl	zero_check_notes
	ldr	r3, .L485+32
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldr	r3, [r3]
	sub	r2, fp, #40
	mov	r1, r2
	mov	r0, r3
	bl	DT_BufferFile
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L470
	mov	r2, #8
	ldr	r1, .L485+40
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L471
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_hmp
	str	r0, [fp, #-32]
	bl	count_check_notes
	str	r0, [fp, #-28]
	b	.L472
.L471:
	mov	r2, #18
	ldr	r1, .L485+44
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L473
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_hmi
	str	r0, [fp, #-32]
	bl	count_check_notes
	str	r0, [fp, #-28]
	b	.L472
.L473:
	sub	r3, fp, #16
	mov	r2, #4
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L474
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_mus
	mov	r3, r0
	str	r3, [fp, #-32]
	bl	count_check_notes
	str	r0, [fp, #-28]
	b	.L472
.L474:
	sub	r3, fp, #12
	mov	r2, #4
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L475
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_xmidi
	str	r0, [fp, #-32]
	bl	count_check_notes
	str	r0, [fp, #-28]
	b	.L472
.L475:
	mov	r2, #22
	ldr	r1, .L485+48
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L476
	mov	r2, #22
	ldr	r1, .L485+52
	ldr	r0, [fp, #-24]
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L477
.L476:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_guspat
	str	r0, [fp, #-32]
	b	.L472
.L477:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-36]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	test_midi
	str	r0, [fp, #-32]
	bl	count_check_notes
	str	r0, [fp, #-28]
.L472:
	ldr	r0, [fp, #-24]
	bl	free
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L478
	ldr	r1, [fp, #-28]
	ldr	r0, .L485+56
	bl	printf
.L478:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	beq	.L479
	ldr	r3, .L485+32
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-52]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L485+60
	bl	printf
	b	.L470
.L479:
	ldr	r0, .L485+64
	bl	puts
.L470:
	ldr	r3, .L485+32
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L485+32
	str	r3, [r2]
.L469:
	ldr	r3, .L485+32
	ldr	r3, [r3]
	ldr	r2, [fp, #-48]
	cmp	r2, r3
	bgt	.L480
	mov	r3, #0
.L481:
	ldr	r2, .L485
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L482
	bl	__stack_chk_fail
.L482:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L486:
	.align	2
.L485:
	.word	.LC245
	.word	441668941
	.word	1297239878
	.word	long_options
	.word	.LC239
	.word	optarg
	.word	frequency
	.word	.LC240
	.word	optind
	.word	.LC241
	.word	.LC145
	.word	.LC134
	.word	.LC206
	.word	.LC207
	.word	.LC242
	.word	.LC243
	.word	.LC244
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
