	.file	"boot2.c"
	.section	.rodata
	.type	optstr, @object
	.size	optstr, 12
optstr:
	.ascii	"VhaCgmnPprsv"
	.type	flags, @object
	.size	flags, 12
flags:
	.byte	29
	.byte	12
	.byte	0
	.byte	13
	.byte	15
	.byte	16
	.byte	28
	.byte	30
	.byte	18
	.byte	5
	.byte	1
	.byte	11
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"ad"
.LC1:
	.string	"da"
.LC2:
	.string	"fd"
	.section	.rodata
	.type	dev_nm, @object
	.size	dev_nm, 12
dev_nm:
	.long	.LC0
	.long	.LC1
	.long	.LC2
	.type	dev_maj, @object
	.size	dev_maj, 3
dev_maj:
	.byte	30
	.byte	4
	.byte	2
	.data
	.type	opts, @object
	.size	opts, 4
opts:
	.long	536870912
	.text
.globl memcpy
	.type	memcpy, @function
memcpy:
	pushl	%ebx
	movl	16(%esp), %edx
	movl	12(%esp), %ebx
	addl	%edx, %ebx
	movl	8(%esp), %ecx
	addl	%edx, %ecx
	jmp	.L2
.L3:
	movb	(%ebx), %al
	movb	%al, (%ecx)
.L2:
	decl	%ebx
	decl	%ecx
	decl	%edx
	jns	.L3
	popl	%ebx
	ret
	.size	memcpy, .-memcpy
.globl strcmp
	.type	strcmp, @function
strcmp:
	pushl	%ebx
	movl	8(%esp), %eax
	movl	12(%esp), %ecx
	jmp	.L7
.L8:
	incl	%eax
	incl	%ecx
.L7:
	movb	(%eax), %bl
	movb	(%ecx), %dl
	cmpb	%dl, %bl
	jne	.L9
	testb	%dl, %dl
	jne	.L8
.L9:
	movzbl	%bl, %eax
	movzbl	%dl, %edx
	subl	%edx, %eax
	popl	%ebx
	ret
	.size	strcmp, .-strcmp
	.section	.rodata.str1.1
.LC3:
	.string	"format"
.LC4:
	.string	"Bad %s\n"
	.text
	.type	xfsread, @function
xfsread:
	pushl	%ebx
	movl	16(%esp), %ebx
	pushl	%ebx
	pushl	16(%esp)
	pushl	16(%esp)
	call	*boot2_ufs_api+8
	addl	$12, %esp
	cmpl	%ebx, %eax
	jne	.L14
	xorl	%eax, %eax
	jmp	.L16
.L14:
	pushl	$.LC3
	pushl	$.LC4
	call	printf
	orl	$-1, %eax
	popl	%edx
	popl	%ecx
.L16:
	popl	%ebx
	ret
	.size	xfsread, .-xfsread
	.section	.rodata.str1.1
.LC5:
	.string	"/boot.config"
.LC6:
	.string	"%s: %s"
.LC7:
	.string	"/boot/loader"
.LC8:
	.string	"/loader"
.LC9:
	.string	"/kernel"
.LC10:
	.string	"\nDragonFly boot\n%u:%s(%u,%c)%s: "
	.text
.globl main
	.type	main, @function
main:
	pushl	%ebx
	movl	__base, %ecx
	leal	_end+65535(%ecx), %eax
	xorw	%ax, %ax
	subl	%ecx, %eax
	movl	%eax, boot2_dmadat
	movl	$262144, __v86
	movl	$514, __v86+40
	movl	$41216, %eax
	subl	%ecx, %eax
	movzbl	(%eax), %edx
	movl	%edx, dsk
	movb	%dl, %al
	andl	$-128, %eax
	cmpb	$1, %al
	sbbl	%eax, %eax
	andl	$2, %eax
	movl	%eax, dsk+4
	andl	$127, %edx
	movl	%edx, dsk+8
	movl	$41217, %eax
	subl	%ecx, %eax
	movzbl	(%eax), %eax
	incl	%eax
	movl	%eax, dsk+12
	movl	$1, bootinfo
	movl	$84, bootinfo+48
	movl	$0, bootinfo+56
	call	memsize
	movl	%eax, bootinfo+60
	incb	bootinfo+52
	call	dskprobe
	testl	%eax, %eax
	jne	.L22
	pushl	$.LC5
	call	*boot2_ufs_api+4
	popl	%ecx
	testl	%eax, %eax
	je	.L22
	pushl	$512
	pushl	$cmd
	pushl	%eax
	call	*boot2_ufs_api+8
	addl	$12, %esp
.L22:
	cmpb	$0, cmd
	jne	.L25
	movl	$1, %ebx
	jmp	.L27
.L25:
	pushl	$cmd
	pushl	$.LC5
	pushl	$.LC6
	call	printf
	call	parse
	addl	$12, %esp
	xorl	%ebx, %ebx
	testl	%eax, %eax
	sete	%bl
	movb	$0, cmd
.L27:
	movl	opts, %eax
	testl	$536940544, %eax
	jne	.L28
	orl	$536875008, %eax
	movl	%eax, opts
.L28:
	testb	$16, opts+1
	je	.L30
	call	sio_init
	testl	%eax, %eax
	je	.L30
	movl	$536870912, opts
.L30:
	testl	%ebx, %ebx
	je	.L45
	cmpb	$0, kname
	jne	.L45
	pushl	$13
	pushl	$.LC7
	pushl	$kname
	call	memcpy
	pushl	$54
	call	keyhit
	addl	$16, %esp
	testl	%eax, %eax
	jne	.L45
	call	load
	pushl	$8
	pushl	$.LC8
	pushl	$kname
	call	memcpy
	call	load
	pushl	$8
	pushl	$.LC9
	pushl	$kname
	call	memcpy
	addl	$24, %esp
	jmp	.L45
.L37:
	xorl	%ebx, %ebx
.L45:
	pushl	$kname
	movl	dsk+16, %eax
	addl	$97, %eax
	pushl	%eax
	pushl	dsk+8
	movl	dsk+4, %eax
	pushl	dev_nm(,%eax,4)
	movl	dsk, %eax
	andl	$127, %eax
	pushl	%eax
	pushl	$.LC10
	call	printf
	addl	$24, %esp
	testl	%ebx, %ebx
	je	.L38
	pushl	$90
	call	keyhit
	popl	%edx
	testl	%eax, %eax
	je	.L40
.L38:
	call	getstr
	jmp	.L41
.L40:
	pushl	$10
	call	putchar
	popl	%eax
.L41:
	call	parse
	testl	%eax, %eax
	je	.L42
	pushl	$7
	call	putchar
	popl	%ebx
	jmp	.L37
.L42:
	call	load
	jmp	.L37
	.size	main, .-main
	.type	memsize, @function
memsize:
	movl	$21, __v86+4
	movl	$34816, __v86+24
	call	__v86int
	movl	__v86+24, %eax
	ret
	.size	memsize, .-memsize
	.section	.rodata.str1.1
.LC11:
	.string	"\b \b"
	.text
	.type	getstr, @function
getstr:
	pushl	%ebx
	movl	$cmd, %ebx
.L65:
	pushl	$0
	call	xgetc
	movl	%eax, %edx
	popl	%eax
	cmpl	$10, %edx
	je	.L52
	jg	.L53
	testl	%edx, %edx
	je	.L65
	cmpl	$8, %edx
	jmp	.L64
.L53:
	cmpl	$13, %edx
	je	.L52
	cmpl	$127, %edx
.L64:
	jne	.L50
	cmpl	$cmd, %ebx
	jbe	.L65
	decl	%ebx
	pushl	$.LC11
	call	printf
	jmp	.L63
.L52:
	movb	$0, (%ebx)
	popl	%ebx
	ret
.L50:
	movl	%ebx, %eax
	subl	$cmd, %eax
	cmpl	$510, %eax
	ja	.L55
	movb	%dl, (%ebx)
	incl	%ebx
.L55:
	pushl	%edx
	call	putchar
.L63:
	popl	%eax
	jmp	.L65
	.size	getstr, .-getstr
.globl exit
	.type	exit, @function
exit:
	ret
	.size	exit, .-exit
	.section	.rodata.str1.1
.LC12:
	.string	"No %s\n"
	.text
	.type	load, @function
load:
	pushl	%ebp
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	subl	$200, %esp
	pushl	$kname
	call	*boot2_ufs_api+4
	movl	%eax, %ebp
	popl	%ecx
	testl	%eax, %eax
	jne	.L69
	cmpl	$0, ls
	jne	.L100
	pushl	$kname
	pushl	$.LC12
	jmp	.L104
.L69:
	pushl	$52
	leal	152(%esp), %eax
	pushl	%eax
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	cmpw	$267, 148(%esp)
	je	.L74
	cmpl	$1179403647, 148(%esp)
	je	.L76
	pushl	$.LC3
	pushl	$.LC4
.L104:
	call	printf
	popl	%eax
	popl	%edx
	jmp	.L100
.L74:
	movl	168(%esp), %edi
	andl	$16777215, %edi
	movl	%edi, %ebx
	subl	__base, %ebx
	movl	$4096, fs_off
	pushl	152(%esp)
	pushl	%ebx
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	movl	152(%esp), %eax
	addl	$4095, %eax
	andl	$-4096, %eax
	leal	(%ebx,%eax), %esi
	pushl	156(%esp)
	pushl	%esi
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	movl	160(%esp), %ebx
	addl	$4095, %ebx
	andl	$-4096, %ebx
	addl	156(%esp), %ebx
	leal	(%esi,%ebx), %ebx
	movl	%ebx, %eax
	addl	__base, %eax
	movl	%eax, bootinfo+64
	pushl	$4
	leal	168(%esp), %eax
	pushl	%eax
	pushl	%ebx
	call	memcpy
	addl	$4, %ebx
	movl	176(%esp), %eax
	addl	$12, %esp
	testl	%eax, %eax
	je	.L80
	pushl	%eax
	pushl	%ebx
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	addl	164(%esp), %ebx
	pushl	$4
	pushl	%ebx
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	leal	4(%ebx), %esi
	movl	(%ebx), %ebx
	subl	$4, %ebx
	pushl	%ebx
	pushl	%esi
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	leal	(%esi,%ebx), %ebx
	jmp	.L80
.L85:
	pushl	$32
	movl	%ebx, %edi
	sall	$5, %edi
	leal	88(%esp,%edi), %eax
	pushl	%eax
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	cmpl	$1, 84(%esp,%edi)
	jne	.L87
	incl	%ebx
.L87:
	incl	%esi
.L89:
	movzwl	192(%esp), %eax
	cmpl	%eax, %esi
	jge	.L90
	cmpl	$1, %ebx
	jle	.L85
.L90:
	leal	100(%esp), %esi
.L92:
	movl	-4(%esi), %ebx
	andl	$16777215, %ebx
	subl	__base, %ebx
	movl	-12(%esi), %eax
	movl	%eax, fs_off
	pushl	(%esi)
	pushl	%ebx
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	addl	$32, %esi
	leal	164(%esp), %eax
	cmpl	%eax, %esi
	jne	.L92
	movl	136(%esp), %eax
	addl	$4095, %eax
	andl	$-4096, %eax
	addl	%eax, %ebx
	movl	%ebx, %eax
	addl	__base, %eax
	movl	%eax, bootinfo+64
	movzwl	198(%esp), %ecx
	movzwl	196(%esp), %edx
	leal	3(%ecx), %eax
	cmpl	%eax, %edx
	jne	.L95
	imull	$40, %ecx, %eax
	movl	180(%esp), %edx
	addl	$40, %edx
	addl	%edx, %eax
	movl	%eax, fs_off
	pushl	$80
	leal	8(%esp), %esi
	pushl	%esi
	pushl	%ebp
	call	xfsread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L100
	movl	$0, (%esp)
	leal	24(%esp), %edi
.L98:
	pushl	$4
	pushl	%edi
	pushl	%ebx
	call	memcpy
	addl	$4, %ebx
	movl	16(%esi), %eax
	movl	%eax, fs_off
	pushl	20(%esi)
	pushl	%ebx
	pushl	%ebp
	call	xfsread
	addl	$24, %esp
	testl	%eax, %eax
	jne	.L100
	addl	20(%esi), %ebx
	incl	(%esp)
	addl	$40, %edi
	addl	$40, %esi
	cmpl	$2, (%esp)
	jne	.L98
.L95:
	movl	172(%esp), %edi
	andl	$16777215, %edi
.L80:
	movl	__base, %edx
	leal	(%ebx,%edx), %eax
	movl	%eax, bootinfo+68
	leal	kname(%edx), %eax
	movl	%eax, bootinfo+4
	movl	dsk, %eax
	movb	%al, bootinfo+53
	addl	$bootinfo, %edx
	pushl	%edx
	pushl	$0
	pushl	$0
	pushl	$0
	movl	dsk+4, %eax
	movzbl	dev_maj(%eax), %ecx
	movl	dsk+16, %eax
	sall	$8, %eax
	orl	%eax, %ecx
	movl	dsk+8, %eax
	sall	$16, %eax
	movl	dsk+12, %edx
	sall	$20, %edx
	orl	%edx, %eax
	orl	$-1610612736, %eax
	orl	%eax, %ecx
	pushl	%ecx
	movl	opts, %eax
	andl	$537264127, %eax
	pushl	%eax
	pushl	%edi
	call	__exec
	addl	$28, %esp
	jmp	.L100
.L76:
	movl	176(%esp), %eax
	movl	%eax, fs_off
	xorl	%esi, %esi
	xorl	%ebx, %ebx
	jmp	.L89
.L100:
	addl	$200, %esp
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	ret
	.size	load, .-load
	.section	.rodata.str1.1
.LC13:
	.string	"NO KB\n"
	.text
	.type	parse, @function
parse:
	pushl	%ebp
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	movl	$cmd, %esi
	jmp	.L106
.L107:
	leal	1(%esi), %edx
	cmpb	$32, %cl
	je	.L108
	cmpb	$9, %cl
	je	.L108
	cmpb	$10, %cl
	je	.L108
	movl	%edx, %edi
	jmp	.L112
.L113:
	incl	%edi
.L112:
	movb	(%edi), %al
	testb	%al, %al
	je	.L114
	cmpb	$10, %al
	je	.L116
	cmpb	$32, %al
	je	.L116
	cmpb	$9, %al
	jne	.L113
.L116:
	movb	$0, (%edi)
	incl	%edi
.L114:
	cmpb	$45, %cl
	jne	.L167
	jmp	.L119
.L121:
	movl	$11, %edx
.L122:
	movsbl	optstr(%edx),%eax
	cmpl	%ecx, %eax
	je	.L165
	decl	%edx
	cmpl	$-1, %edx
	jne	.L122
	movl	%ebx, opts
	jmp	.L127
.L165:
	movzbl	flags(%edx), %ecx
	movl	$1, %eax
	sall	%cl, %eax
	xorl	%eax, %ebx
	incl	%esi
	jmp	.L125
.L119:
	movl	opts, %ebx
.L125:
	movb	1(%esi), %al
	movsbl	%al,%ecx
	testb	%al, %al
	jne	.L121
	movl	%ebx, opts
	andl	$1073741824, %ebx
	je	.L129
	movl	$1174, %eax
	subl	__base, %eax
	testb	$16, (%eax)
	jne	.L131
	pushl	$.LC13
	call	printf
	orl	$536875008, opts
	popl	%ebx
.L131:
	andl	$-1073741825, opts
	jmp	.L129
.L167:
	leal	-1(%edx), %ecx
	jmp	.L133
.L134:
	incl	%edx
.L133:
	movb	(%edx), %al
	testb	%al, %al
	je	.L135
	cmpb	$40, %al
	jne	.L134
	cmpb	$58, 1(%ecx)
	je	.L138
	orl	$-1, %ebp
	jmp	.L140
.L138:
	movsbl	(%ecx),%eax
	leal	-48(%eax), %ebp
	cmpl	$9, %ebp
	ja	.L127
	addl	$2, %ecx
.L140:
	subl	%ecx, %edx
	cmpl	$2, %edx
	jne	.L127
	movb	(%ecx), %bl
	xorl	%esi, %esi
	jmp	.L144
.L145:
	cmpl	$2, %esi
	je	.L127
	incl	%esi
.L144:
	movl	dev_nm(,%esi,4), %edx
	cmpb	(%edx), %bl
	jne	.L145
	movb	1(%ecx), %al
	cmpb	1(%edx), %al
	jne	.L145
	movl	%esi, dsk+4
	movsbl	3(%ecx),%eax
	leal	-48(%eax), %ebx
	movl	%ebx, dsk+8
	cmpb	$44, 4(%ecx)
	jne	.L127
	cmpl	$9, %ebx
	ja	.L127
	leal	5(%ecx), %edx
	movl	$1, dsk+12
	cmpb	$44, 1(%edx)
	jne	.L151
	movsbl	5(%ecx),%eax
	subl	$47, %eax
	movl	%eax, dsk+12
	cmpl	$4, %eax
	ja	.L127
	leal	7(%ecx), %edx
.L151:
	cmpb	$41, 1(%edx)
	jne	.L127
	movsbl	(%edx),%eax
	subl	$97, %eax
	movl	%eax, dsk+16
	cmpl	$7, %eax
	ja	.L127
	cmpl	$-1, %ebp
	je	.L156
	movl	%ebp, %ebx
.L156:
	cmpl	$2, %esi
	sbbl	%eax, %eax
	andl	$128, %eax
	leal	2(%edx), %ecx
	addl	%ebx, %eax
	movl	%eax, dsk
.L135:
	movl	%edi, %edx
	subl	%ecx, %edx
	xorl	%eax, %eax
	cmpb	$0, -1(%edi)
	sete	%al
	subl	%eax, %edx
	movl	%edx, %eax
	je	.L129
	cmpl	$1023, %edx
	ja	.L127
	incl	%eax
	pushl	%eax
	pushl	%ecx
	pushl	$kname
	call	memcpy
	movl	%edi, %edx
	addl	$12, %esp
	jmp	.L108
.L129:
	movl	%edi, %edx
.L108:
	movl	%edx, %esi
.L106:
	movb	(%esi), %cl
	testb	%cl, %cl
	jne	.L107
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	jmp	dskprobe
.L127:
	orl	$-1, %eax
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	ret
	.size	parse, .-parse
	.section	.rodata.str1.1
.LC14:
	.string	"slice"
.LC15:
	.string	"label"
.LC16:
	.string	"partition"
	.text
	.type	dskprobe, @function
dskprobe:
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	movl	boot2_dmadat, %ebx
	movl	$0, dsk+20
	pushl	$1
	pushl	$0
	pushl	%ebx
	call	drvread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L189
	leal	446(%ebx), %edi
	movl	dsk+12, %eax
	cmpl	$1, %eax
	ja	.L172
	movl	%ebx, %ecx
	movl	%eax, %edx
	xorl	%esi, %esi
.L174:
	cmpb	$-91, 450(%ecx)
	jne	.L175
	cmpb	$0, 446(%ecx)
	js	.L177
	cmpl	$1, %edx
	ja	.L175
	jmp	.L179
.L177:
	leal	2(%esi), %edx
	jmp	.L180
.L175:
	incl	%esi
	addl	$16, %ecx
	cmpl	$4, %esi
	jne	.L174
.L180:
	decl	%eax
	jne	.L181
	movl	%edx, dsk+12
.L181:
	cmpl	$1, %edx
	je	.L183
	testl	%edx, %edx
	je	.L185
	movl	%edx, %eax
.L172:
	sall	$4, %eax
	leal	-32(%edi,%eax), %edi
.L185:
	cmpb	$-91, 4(%edi)
	je	.L187
	pushl	$.LC14
	jmp	.L205
.L187:
	movl	8(%edi), %eax
	movl	%eax, dsk+20
.L183:
	pushl	$1
	movl	dsk+20, %eax
	incl	%eax
	pushl	%eax
	pushl	%ebx
	call	drvread
	addl	$12, %esp
	testl	%eax, %eax
	jne	.L189
	cmpl	$-2108275369, (%ebx)
	jne	.L191
	cmpl	$-2108275369, 132(%ebx)
	je	.L193
.L191:
	cmpl	$2, dsk+16
	je	.L194
	pushl	$.LC15
.L205:
	pushl	$.LC4
	call	printf
	popl	%esi
	popl	%edi
	jmp	.L189
.L193:
	cmpl	$0, dsk+24
	jne	.L196
	cmpw	$4, 4(%ebx)
	jne	.L198
	movl	$1, dsk+4
.L198:
	movl	$1, dsk+24
.L196:
	movl	dsk+16, %edx
	movzwl	138(%ebx), %eax
	cmpl	%eax, %edx
	jae	.L200
	sall	$4, %edx
	leal	(%edx,%ebx), %eax
	cmpl	$0, 148(%eax)
	jne	.L202
.L200:
	pushl	$.LC16
	jmp	.L205
.L202:
	movl	152(%eax), %eax
	addl	dsk+20, %eax
	movl	%eax, dsk+20
	subl	184(%ebx), %eax
	movl	%eax, dsk+20
.L194:
	movl	boot2_ufs_api, %ecx
	popl	%ebx
	popl	%esi
	popl	%edi
	jmp	*%ecx
.L179:
	leal	2(%esi), %edx
	testl	%eax, %eax
	jne	.L175
	jmp	.L181
.L189:
	orl	$-1, %eax
	popl	%ebx
	popl	%esi
	popl	%edi
	ret
	.size	dskprobe, .-dskprobe
.globl dskread
	.type	dskread, @function
dskread:
	movl	8(%esp), %eax
	addl	dsk+20, %eax
	movl	%eax, 8(%esp)
	jmp	drvread
	.size	dskread, .-dskread
.globl printf
	.type	printf, @function
printf:
	pushl	%ebp
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	subl	$16, %esp
	movl	36(%esp), %edi
	leal	40(%esp), %edx
	movl	%edx, 12(%esp)
	jmp	.L234
.L210:
	incl	%edi
	cmpb	$37, %al
	jne	.L211
	movb	(%edi), %al
	incl	%edi
	cmpb	$115, %al
	je	.L215
	cmpb	$117, %al
	je	.L216
	cmpb	$99, %al
	jne	.L211
	movl	12(%esp), %edx
	leal	4(%edx), %ecx
	movl	%ecx, 12(%esp)
	pushl	(%edx)
	jmp	.L233
.L215:
	movl	12(%esp), %edx
	leal	4(%edx), %ecx
	movl	%ecx, 12(%esp)
	movl	(%edx), %ebx
	jmp	.L218
.L219:
	movsbl	%al,%edx
	pushl	%edx
	call	putchar
	incl	%ebx
	popl	%eax
.L218:
	movb	(%ebx), %al
	testb	%al, %al
	jne	.L219
	jmp	.L234
.L216:
	movl	12(%esp), %esi
	movl	(%esi), %eax
	leal	2(%esp), %ebx
.L220:
	movl	$10, %edx
	movl	%edx, %ebp
	xorl	%edx, %edx
	divl	%ebp
	addl	$48, %edx
	movb	%dl, (%ebx)
	incl	%ebx
	testl	%eax, %eax
	jne	.L220
	leal	4(%esi), %edx
	movl	%edx, 12(%esp)
	jmp	.L222
.L223:
	movsbl	(%ebx),%edx
	pushl	%edx
	call	putchar
	popl	%eax
.L222:
	decl	%ebx
	leal	2(%esp), %edx
	cmpl	%edx, %ebx
	jae	.L223
	jmp	.L234
.L211:
	movsbl	%al,%eax
	pushl	%eax
.L233:
	call	putchar
	popl	%ebp
.L234:
	movb	(%edi), %al
	testb	%al, %al
	jne	.L210
	addl	$16, %esp
	popl	%ebx
	popl	%esi
	popl	%edi
	popl	%ebp
	ret
	.size	printf, .-printf
.globl putchar
	.type	putchar, @function
putchar:
	pushl	%ebx
	movl	8(%esp), %ebx
	cmpl	$10, %ebx
	jne	.L236
	pushl	$13
	call	xputc
	popl	%eax
.L236:
	movl	%ebx, 8(%esp)
	popl	%ebx
	jmp	xputc
	.size	putchar, .-putchar
	.data
	.type	c.3937, @object
	.size	c.3937, 4
c.3937:
	.long	761035823
	.section	.rodata.str1.1
.LC17:
	.string	"error %u lba %u\n"
	.text
	.type	drvread, @function
drvread:
	pushl	%edi
	pushl	%esi
	pushl	%ebx
	movl	16(%esp), %ebx
	movl	20(%esp), %edi
	movl	24(%esp), %esi
	movl	c.3937, %eax
	rorl	$24, %eax
	movl	%eax, c.3937
	pushl	%eax
	call	xputc
	pushl	$8
	call	xputc
	movl	$458752, __v86
	movl	$1829, __v86+4
	movl	__base, %edx
	leal	(%ebx,%edx), %eax
	shrl	$4, %eax
	movzwl	%ax, %eax
	movl	%eax, __v86+8
	movl	%edi, __v86+24
	addl	%edx, %ebx
	andl	$15, %ebx
	movl	%ebx, __v86+36
	movl	%edi, %eax
	shrl	$16, %eax
	movl	%eax, __v86+28
	sall	$8, %esi
	orl	dsk, %esi
	movl	%esi, __v86+32
	call	__v86int
	movl	$262144, __v86
	popl	%eax
	popl	%edx
	testb	$1, __v86+40
	jne	.L240
	xorl	%eax, %eax
	jmp	.L242
.L240:
	pushl	%edi
	movl	__v86+24, %eax
	movzbl	%ah, %eax
	pushl	%eax
	pushl	$.LC17
	call	printf
	orl	$-1, %eax
	addl	$12, %esp
.L242:
	popl	%ebx
	popl	%esi
	popl	%edi
	ret
	.size	drvread, .-drvread
	.type	keyhit, @function
keyhit:
	pushl	%esi
	pushl	%ebx
	movl	12(%esp), %esi
	testb	$16, opts+3
	jne	.L245
	xorl	%ebx, %ebx
.L247:
	pushl	$1
	call	xgetc
	popl	%ecx
	testl	%eax, %eax
	je	.L248
	movl	$1, %eax
	jmp	.L250
.L248:
	movl	$1132, %eax
	subl	__base, %eax
	movl	(%eax), %edx
	testl	%ebx, %ebx
	jne	.L251
	movl	%edx, %ebx
	jmp	.L253
.L251:
	cmpl	%ebx, %edx
	jb	.L245
.L253:
	leal	(%ebx,%esi), %eax
	cmpl	%eax, %edx
	jb	.L247
.L245:
	xorl	%eax, %eax
.L250:
	popl	%ebx
	popl	%esi
	ret
	.size	keyhit, .-keyhit
	.type	xputc, @function
xputc:
	pushl	%ebx
	movl	8(%esp), %ebx
	testb	$32, opts+3
	je	.L257
	pushl	%ebx
	call	putc
	popl	%eax
.L257:
	testb	$16, opts+1
	je	.L261
	movl	%ebx, 8(%esp)
	popl	%ebx
	jmp	sio_putc
.L261:
	popl	%ebx
	ret
	.size	xputc, .-xputc
	.type	putc, @function
putc:
	movl	$16, __v86+4
	movzbl	4(%esp),%eax
	orb	$14, %ah
	movl	%eax, __v86+24
	movl	$7, __v86+36
	jmp	__v86int
	.size	putc, .-putc
	.type	xgetc, @function
xgetc:
	pushl	%ebx
	movl	8(%esp), %ebx
	testb	$16, opts+3
.L280:
	jne	.L265
	testb	$32, opts+3
	je	.L267
	pushl	$1
	call	getc
	popl	%edx
	testl	%eax, %eax
	je	.L267
	testl	%ebx, %ebx
	jne	.L270
	movl	$0, 8(%esp)
	popl	%ebx
	jmp	getc
.L267:
	testb	$16, opts+1
	je	.L272
	call	sio_ischar
	testl	%eax, %eax
	je	.L272
	testl	%ebx, %ebx
	jne	.L270
	popl	%ebx
	jmp	sio_getc
.L272:
	testl	%ebx, %ebx
	jmp	.L280
.L265:
	xorl	%eax, %eax
	jmp	.L276
.L270:
	movl	$1, %eax
.L276:
	popl	%ebx
	ret
	.size	xgetc, .-xgetc
	.type	getc, @function
getc:
	pushl	%ebx
	movl	8(%esp), %ebx
	movl	$22, __v86+4
	movl	%ebx, %eax
	sall	$8, %eax
	movl	%eax, __v86+24
	call	__v86int
	testl	%ebx, %ebx
	jne	.L282
	movzbl	__v86+24,%eax
	jmp	.L284
.L282:
	movl	__v86+40, %eax
	xorl	$64, %eax
	shrl	$6, %eax
	andl	$1, %eax
.L284:
	popl	%ebx
	ret
	.size	getc, .-getc
	.local	dsk
	.comm	dsk,28,4
	.local	cmd
	.comm	cmd,512,32
	.local	kname
	.comm	kname,1024,32
	.local	bootinfo
	.comm	bootinfo,84,32
	.comm	fs_off,4,4
	.comm	ls,4,4
	.comm	boot2_dmadat,4,4
	.ident	"GCC: (GNU) 4.1.2 (DragonFly)"
