	.file	"csapp.c"
	.section	.rodata
.LC0:
	.string	"%s: %s\n"
	.text
.globl unix_error
	.type	unix_error,@function
unix_error:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	__errno_location
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	strerror
	movl	%eax, 12(%esp)
	movl	8(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	$.LC0, 4(%esp)
	movl	stderr, %eax
	movl	%eax, (%esp)
	call	fprintf
	movl	$0, (%esp)
	call	exit
.Lfe1:
	.size	unix_error,.Lfe1-unix_error
.globl posix_error
	.type	posix_error,@function
posix_error:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	strerror
	movl	%eax, 12(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	$.LC0, 4(%esp)
	movl	stderr, %eax
	movl	%eax, (%esp)
	call	fprintf
	movl	$0, (%esp)
	call	exit
.Lfe2:
	.size	posix_error,.Lfe2-posix_error
	.section	.rodata
.LC1:
	.string	"%s: DNS error %d\n"
	.text
.globl dns_error
	.type	dns_error,@function
dns_error:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	call	__h_errno_location
	movl	(%eax), %eax
	movl	%eax, 12(%esp)
	movl	8(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	$.LC1, 4(%esp)
	movl	stderr, %eax
	movl	%eax, (%esp)
	call	fprintf
	movl	$0, (%esp)
	call	exit
.Lfe3:
	.size	dns_error,.Lfe3-dns_error
	.section	.rodata
.LC2:
	.string	"%s\n"
	.text
.globl app_error
	.type	app_error,@function
app_error:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	$.LC2, 4(%esp)
	movl	stderr, %eax
	movl	%eax, (%esp)
	call	fprintf
	movl	$0, (%esp)
	call	exit
.Lfe4:
	.size	app_error,.Lfe4-app_error
	.section	.rodata
.LC3:
	.string	"Fork error"
	.text
.globl Fork
	.type	Fork,@function
Fork:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	fork
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L10
	movl	$.LC3, (%esp)
	call	unix_error
.L10:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe5:
	.size	Fork,.Lfe5-Fork
	.section	.rodata
.LC4:
	.string	"Execve error"
	.text
.globl Execve
	.type	Execve,@function
Execve:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	execve
	testl	%eax, %eax
	jns	.L11
	movl	$.LC4, (%esp)
	call	unix_error
.L11:
	leave
	ret
.Lfe6:
	.size	Execve,.Lfe6-Execve
	.section	.rodata
.LC5:
	.string	"Wait error"
	.text
.globl Wait
	.type	Wait,@function
Wait:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	wait
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L14
	movl	$.LC5, (%esp)
	call	unix_error
.L14:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe7:
	.size	Wait,.Lfe7-Wait
	.section	.rodata
.LC6:
	.string	"Waitpid error"
	.text
.globl Waitpid
	.type	Waitpid,@function
Waitpid:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	waitpid
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L16
	movl	$.LC6, (%esp)
	call	unix_error
.L16:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe8:
	.size	Waitpid,.Lfe8-Waitpid
	.section	.rodata
.LC7:
	.string	"Kill error"
	.text
.globl Kill
	.type	Kill,@function
Kill:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	kill
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L17
	movl	$.LC7, (%esp)
	call	unix_error
.L17:
	leave
	ret
.Lfe9:
	.size	Kill,.Lfe9-Kill
.globl Pause
	.type	Pause,@function
Pause:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	pause
	leave
	ret
.Lfe10:
	.size	Pause,.Lfe10-Pause
.globl Sleep
	.type	Sleep,@function
Sleep:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sleep
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe11:
	.size	Sleep,.Lfe11-Sleep
.globl Alarm
	.type	Alarm,@function
Alarm:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	alarm
	leave
	ret
.Lfe12:
	.size	Alarm,.Lfe12-Alarm
	.section	.rodata
.LC9:
	.string	"Setpgid error"
	.text
.globl Setpgid
	.type	Setpgid,@function
Setpgid:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	setpgid
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L23
	movl	$.LC9, (%esp)
	call	unix_error
.L23:
	leave
	ret
.Lfe13:
	.size	Setpgid,.Lfe13-Setpgid
.globl Getpgrp
	.type	Getpgrp,@function
Getpgrp:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	getpgrp
	leave
	ret
.Lfe14:
	.size	Getpgrp,.Lfe14-Getpgrp
	.section	.rodata
.LC10:
	.string	"Signal error"
	.text
.globl Signal
	.type	Signal,@function
Signal:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$312, %esp
	movl	12(%ebp), %eax
	movl	%eax, -152(%ebp)
	leal	-152(%ebp), %eax
	addl	$4, %eax
	movl	%eax, (%esp)
	call	sigemptyset
	movl	$268435456, -20(%ebp)
	leal	-296(%ebp), %eax
	movl	%eax, 8(%esp)
	leal	-152(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigaction
	testl	%eax, %eax
	jns	.L27
	movl	$.LC10, (%esp)
	call	unix_error
.L27:
	movl	-296(%ebp), %eax
	leave
	ret
.Lfe15:
	.size	Signal,.Lfe15-Signal
	.section	.rodata
.LC11:
	.string	"Sigprocmask error"
	.text
.globl Sigprocmask
	.type	Sigprocmask,@function
Sigprocmask:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigprocmask
	testl	%eax, %eax
	jns	.L28
	movl	$.LC11, (%esp)
	call	unix_error
.L28:
	leave
	ret
.Lfe16:
	.size	Sigprocmask,.Lfe16-Sigprocmask
	.section	.rodata
.LC12:
	.string	"Sigemptyset error"
	.text
.globl Sigemptyset
	.type	Sigemptyset,@function
Sigemptyset:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigemptyset
	testl	%eax, %eax
	jns	.L30
	movl	$.LC12, (%esp)
	call	unix_error
.L30:
	leave
	ret
.Lfe17:
	.size	Sigemptyset,.Lfe17-Sigemptyset
	.section	.rodata
.LC13:
	.string	"Sigfillset error"
	.text
.globl Sigfillset
	.type	Sigfillset,@function
Sigfillset:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigfillset
	testl	%eax, %eax
	jns	.L32
	movl	$.LC13, (%esp)
	call	unix_error
.L32:
	leave
	ret
.Lfe18:
	.size	Sigfillset,.Lfe18-Sigfillset
	.section	.rodata
.LC14:
	.string	"Sigaddset error"
	.text
.globl Sigaddset
	.type	Sigaddset,@function
Sigaddset:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigaddset
	testl	%eax, %eax
	jns	.L34
	movl	$.LC14, (%esp)
	call	unix_error
.L34:
	leave
	ret
.Lfe19:
	.size	Sigaddset,.Lfe19-Sigaddset
	.section	.rodata
.LC15:
	.string	"Sigdelset error"
	.text
.globl Sigdelset
	.type	Sigdelset,@function
Sigdelset:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigdelset
	testl	%eax, %eax
	jns	.L36
	movl	$.LC15, (%esp)
	call	unix_error
.L36:
	leave
	ret
.Lfe20:
	.size	Sigdelset,.Lfe20-Sigdelset
	.section	.rodata
.LC16:
	.string	"Sigismember error"
	.text
.globl Sigismember
	.type	Sigismember,@function
Sigismember:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sigismember
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L39
	movl	$.LC16, (%esp)
	call	unix_error
.L39:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe21:
	.size	Sigismember,.Lfe21-Sigismember
	.section	.rodata
.LC17:
	.string	"Open error"
	.text
.globl Open
	.type	Open,@function
Open:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	open
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L41
	movl	$.LC17, (%esp)
	call	unix_error
.L41:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe22:
	.size	Open,.Lfe22-Open
	.section	.rodata
.LC18:
	.string	"Read error"
	.text
.globl Read
	.type	Read,@function
Read:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	read
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L43
	movl	$.LC18, (%esp)
	call	unix_error
.L43:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe23:
	.size	Read,.Lfe23-Read
	.section	.rodata
.LC19:
	.string	"Write error"
	.text
.globl Write
	.type	Write,@function
Write:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	write
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L45
	movl	$.LC19, (%esp)
	call	unix_error
.L45:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe24:
	.size	Write,.Lfe24-Write
	.section	.rodata
.LC20:
	.string	"Lseek error"
	.text
.globl Lseek
	.type	Lseek,@function
Lseek:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	lseek
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L47
	movl	$.LC20, (%esp)
	call	unix_error
.L47:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe25:
	.size	Lseek,.Lfe25-Lseek
	.section	.rodata
.LC21:
	.string	"Close error"
	.text
.globl Close
	.type	Close,@function
Close:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	close
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L48
	movl	$.LC21, (%esp)
	call	unix_error
.L48:
	leave
	ret
.Lfe26:
	.size	Close,.Lfe26-Close
	.section	.rodata
.LC22:
	.string	"Select error"
	.text
.globl Select
	.type	Select,@function
Select:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	24(%ebp), %eax
	movl	%eax, 16(%esp)
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	select
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L51
	movl	$.LC22, (%esp)
	call	unix_error
.L51:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe27:
	.size	Select,.Lfe27-Select
	.section	.rodata
.LC23:
	.string	"Dup2 error"
	.text
.globl Dup2
	.type	Dup2,@function
Dup2:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	dup2
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L53
	movl	$.LC23, (%esp)
	call	unix_error
.L53:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe28:
	.size	Dup2,.Lfe28-Dup2
	.section	.rodata
.LC24:
	.string	"Stat error"
	.text
.globl Stat
	.type	Stat,@function
Stat:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	stat
	testl	%eax, %eax
	jns	.L54
	movl	$.LC24, (%esp)
	call	unix_error
.L54:
	leave
	ret
.Lfe29:
	.size	Stat,.Lfe29-Stat
	.section	.rodata
.LC25:
	.string	"Fstat error"
	.text
.globl Fstat
	.type	Fstat,@function
Fstat:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fstat
	testl	%eax, %eax
	jns	.L56
	movl	$.LC25, (%esp)
	call	unix_error
.L56:
	leave
	ret
.Lfe30:
	.size	Fstat,.Lfe30-Fstat
	.section	.rodata
.LC26:
	.string	"mmap error"
	.text
.globl Mmap
	.type	Mmap,@function
Mmap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	28(%ebp), %eax
	movl	%eax, 20(%esp)
	movl	24(%ebp), %eax
	movl	%eax, 16(%esp)
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	mmap
	movl	%eax, -4(%ebp)
	cmpl	$-1, -4(%ebp)
	jne	.L59
	movl	$.LC26, (%esp)
	call	unix_error
.L59:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe31:
	.size	Mmap,.Lfe31-Mmap
	.section	.rodata
.LC27:
	.string	"munmap error"
	.text
.globl Munmap
	.type	Munmap,@function
Munmap:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	munmap
	testl	%eax, %eax
	jns	.L60
	movl	$.LC27, (%esp)
	call	unix_error
.L60:
	leave
	ret
.Lfe32:
	.size	Munmap,.Lfe32-Munmap
	.section	.rodata
.LC28:
	.string	"Malloc error"
	.text
.globl Malloc
	.type	Malloc,@function
Malloc:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	malloc
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L63
	movl	$.LC28, (%esp)
	call	unix_error
.L63:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe33:
	.size	Malloc,.Lfe33-Malloc
	.section	.rodata
.LC29:
	.string	"Realloc error"
	.text
.globl Realloc
	.type	Realloc,@function
Realloc:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	realloc
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L65
	movl	$.LC29, (%esp)
	call	unix_error
.L65:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe34:
	.size	Realloc,.Lfe34-Realloc
	.section	.rodata
.LC30:
	.string	"Calloc error"
	.text
.globl Calloc
	.type	Calloc,@function
Calloc:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	calloc
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L67
	movl	$.LC30, (%esp)
	call	unix_error
.L67:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe35:
	.size	Calloc,.Lfe35-Calloc
.globl Free
	.type	Free,@function
Free:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	free
	leave
	ret
.Lfe36:
	.size	Free,.Lfe36-Free
	.section	.rodata
.LC31:
	.string	"Fclose error"
	.text
.globl Fclose
	.type	Fclose,@function
Fclose:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fclose
	testl	%eax, %eax
	je	.L69
	movl	$.LC31, (%esp)
	call	unix_error
.L69:
	leave
	ret
.Lfe37:
	.size	Fclose,.Lfe37-Fclose
	.section	.rodata
.LC32:
	.string	"Fdopen error"
	.text
.globl Fdopen
	.type	Fdopen,@function
Fdopen:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fdopen
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L72
	movl	$.LC32, (%esp)
	call	unix_error
.L72:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe38:
	.size	Fdopen,.Lfe38-Fdopen
	.section	.rodata
.LC33:
	.string	"Fgets error"
	.text
.globl Fgets
	.type	Fgets,@function
Fgets:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fgets
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L74
	movl	16(%ebp), %eax
	movl	%eax, (%esp)
	call	ferror
	testl	%eax, %eax
	je	.L74
	movl	$.LC33, (%esp)
	call	app_error
.L74:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe39:
	.size	Fgets,.Lfe39-Fgets
	.section	.rodata
.LC34:
	.string	"Fopen error"
	.text
.globl Fopen
	.type	Fopen,@function
Fopen:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fopen
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L76
	movl	$.LC34, (%esp)
	call	unix_error
.L76:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe40:
	.size	Fopen,.Lfe40-Fopen
	.section	.rodata
.LC35:
	.string	"Fputs error"
	.text
.globl Fputs
	.type	Fputs,@function
Fputs:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fputs
	cmpl	$-1, %eax
	jne	.L77
	movl	$.LC35, (%esp)
	call	unix_error
.L77:
	leave
	ret
.Lfe41:
	.size	Fputs,.Lfe41-Fputs
	.section	.rodata
.LC36:
	.string	"Fread error"
	.text
.globl Fread
	.type	Fread,@function
Fread:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fread
	movl	%eax, -4(%ebp)
	movl	-4(%ebp), %eax
	cmpl	16(%ebp), %eax
	jae	.L80
	movl	20(%ebp), %eax
	movl	%eax, (%esp)
	call	ferror
	testl	%eax, %eax
	je	.L80
	movl	$.LC36, (%esp)
	call	unix_error
.L80:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe42:
	.size	Fread,.Lfe42-Fread
	.section	.rodata
.LC37:
	.string	"Fwrite error"
	.text
.globl Fwrite
	.type	Fwrite,@function
Fwrite:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	fwrite
	cmpl	16(%ebp), %eax
	jae	.L81
	movl	$.LC37, (%esp)
	call	unix_error
.L81:
	leave
	ret
.Lfe43:
	.size	Fwrite,.Lfe43-Fwrite
	.section	.rodata
.LC38:
	.string	"Socket error"
	.text
.globl Socket
	.type	Socket,@function
Socket:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	socket
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L84
	movl	$.LC38, (%esp)
	call	unix_error
.L84:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe44:
	.size	Socket,.Lfe44-Socket
	.section	.rodata
.LC39:
	.string	"Setsockopt error"
	.text
.globl Setsockopt
	.type	Setsockopt,@function
Setsockopt:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	24(%ebp), %eax
	movl	%eax, 16(%esp)
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	setsockopt
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L85
	movl	$.LC39, (%esp)
	call	unix_error
.L85:
	leave
	ret
.Lfe45:
	.size	Setsockopt,.Lfe45-Setsockopt
	.section	.rodata
.LC40:
	.string	"Bind error"
	.text
.globl Bind
	.type	Bind,@function
Bind:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	bind
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L87
	movl	$.LC40, (%esp)
	call	unix_error
.L87:
	leave
	ret
.Lfe46:
	.size	Bind,.Lfe46-Bind
	.section	.rodata
.LC41:
	.string	"Listen error"
	.text
.globl Listen
	.type	Listen,@function
Listen:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	listen
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L89
	movl	$.LC41, (%esp)
	call	unix_error
.L89:
	leave
	ret
.Lfe47:
	.size	Listen,.Lfe47-Listen
	.section	.rodata
.LC42:
	.string	"Accept error"
	.text
.globl Accept
	.type	Accept,@function
Accept:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	accept
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L92
	movl	$.LC42, (%esp)
	call	unix_error
.L92:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe48:
	.size	Accept,.Lfe48-Accept
	.section	.rodata
.LC43:
	.string	"Connect error"
	.text
.globl Connect
	.type	Connect,@function
Connect:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	connect
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L93
	movl	$.LC43, (%esp)
	call	unix_error
.L93:
	leave
	ret
.Lfe49:
	.size	Connect,.Lfe49-Connect
	.section	.rodata
.LC44:
	.string	"Gethostbyname error"
	.text
.globl Gethostbyname
	.type	Gethostbyname,@function
Gethostbyname:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	gethostbyname
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L96
	movl	$.LC44, (%esp)
	call	dns_error
.L96:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe50:
	.size	Gethostbyname,.Lfe50-Gethostbyname
	.section	.rodata
.LC45:
	.string	"Gethostbyaddr error"
	.text
.globl Gethostbyaddr
	.type	Gethostbyaddr,@function
Gethostbyaddr:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	gethostbyaddr
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jne	.L98
	movl	$.LC45, (%esp)
	call	dns_error
.L98:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe51:
	.size	Gethostbyaddr,.Lfe51-Gethostbyaddr
	.section	.rodata
.LC46:
	.string	"Pthread_create error"
	.text
.globl Pthread_create
	.type	Pthread_create,@function
Pthread_create:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	20(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_create
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	je	.L99
	movl	$.LC46, 4(%esp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	posix_error
.L99:
	leave
	ret
.Lfe52:
	.size	Pthread_create,.Lfe52-Pthread_create
	.section	.rodata
.LC47:
	.string	"Pthread_cancel error"
	.text
.globl Pthread_cancel
	.type	Pthread_cancel,@function
Pthread_cancel:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_cancel
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	je	.L101
	movl	$.LC47, 4(%esp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	posix_error
.L101:
	leave
	ret
.Lfe53:
	.size	Pthread_cancel,.Lfe53-Pthread_cancel
	.section	.rodata
.LC48:
	.string	"Pthread_join error"
	.text
.globl Pthread_join
	.type	Pthread_join,@function
Pthread_join:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_join
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	je	.L103
	movl	$.LC48, 4(%esp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	posix_error
.L103:
	leave
	ret
.Lfe54:
	.size	Pthread_join,.Lfe54-Pthread_join
	.section	.rodata
.LC49:
	.string	"Pthread_detach error"
	.text
.globl Pthread_detach
	.type	Pthread_detach,@function
Pthread_detach:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_detach
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	je	.L105
	movl	$.LC49, 4(%esp)
	movl	-4(%ebp), %eax
	movl	%eax, (%esp)
	call	posix_error
.L105:
	leave
	ret
.Lfe55:
	.size	Pthread_detach,.Lfe55-Pthread_detach
.globl Pthread_exit
	.type	Pthread_exit,@function
Pthread_exit:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_exit
.Lfe56:
	.size	Pthread_exit,.Lfe56-Pthread_exit
.globl Pthread_self
	.type	Pthread_self,@function
Pthread_self:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	call	pthread_self
	leave
	ret
.Lfe57:
	.size	Pthread_self,.Lfe57-Pthread_self
.globl Pthread_once
	.type	Pthread_once,@function
Pthread_once:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	pthread_once
	leave
	ret
.Lfe58:
	.size	Pthread_once,.Lfe58-Pthread_once
	.section	.rodata
.LC50:
	.string	"Sem_init error"
	.text
.globl Sem_init
	.type	Sem_init,@function
Sem_init:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sem_init
	testl	%eax, %eax
	jns	.L110
	movl	$.LC50, (%esp)
	call	unix_error
.L110:
	leave
	ret
.Lfe59:
	.size	Sem_init,.Lfe59-Sem_init
	.section	.rodata
.LC51:
	.string	"P error"
	.text
.globl P
	.type	P,@function
P:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sem_wait
	testl	%eax, %eax
	jns	.L112
	movl	$.LC51, (%esp)
	call	unix_error
.L112:
	leave
	ret
.Lfe60:
	.size	P,.Lfe60-P
	.section	.rodata
.LC52:
	.string	"V error"
	.text
.globl V
	.type	V,@function
V:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	sem_post
	testl	%eax, %eax
	jns	.L114
	movl	$.LC52, (%esp)
	call	unix_error
.L114:
	leave
	ret
.Lfe61:
	.size	V,.Lfe61-V
.globl rio_readn
	.type	rio_readn,@function
rio_readn:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	16(%ebp), %eax
	movl	%eax, -4(%ebp)
	movl	12(%ebp), %eax
	movl	%eax, -12(%ebp)
.L117:
	cmpl	$0, -4(%ebp)
	jne	.L119
	jmp	.L118
.L119:
	movl	-4(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	read
	movl	%eax, -8(%ebp)
	cmpl	$0, -8(%ebp)
	jns	.L120
	call	__errno_location
	cmpl	$4, (%eax)
	jne	.L121
	movl	$0, -8(%ebp)
	jmp	.L123
.L121:
	movl	$-1, -16(%ebp)
	jmp	.L116
.L120:
	cmpl	$0, -8(%ebp)
	jne	.L123
	jmp	.L118
.L123:
	movl	-8(%ebp), %edx
	leal	-4(%ebp), %eax
	subl	%edx, (%eax)
	movl	-8(%ebp), %edx
	leal	-12(%ebp), %eax
	addl	%edx, (%eax)
	jmp	.L117
.L118:
	movl	-4(%ebp), %eax
	movl	16(%ebp), %edx
	subl	%eax, %edx
	movl	%edx, %eax
	movl	%eax, -16(%ebp)
.L116:
	movl	-16(%ebp), %eax
	leave
	ret
.Lfe62:
	.size	rio_readn,.Lfe62-rio_readn
.globl rio_writen
	.type	rio_writen,@function
rio_writen:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	16(%ebp), %eax
	movl	%eax, -4(%ebp)
	movl	12(%ebp), %eax
	movl	%eax, -12(%ebp)
.L126:
	cmpl	$0, -4(%ebp)
	jne	.L128
	jmp	.L127
.L128:
	movl	-4(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	write
	movl	%eax, -8(%ebp)
	cmpl	$0, -8(%ebp)
	jg	.L129
	call	__errno_location
	cmpl	$4, (%eax)
	jne	.L130
	movl	$0, -8(%ebp)
	jmp	.L129
.L130:
	movl	$-1, -16(%ebp)
	jmp	.L125
.L129:
	movl	-8(%ebp), %edx
	leal	-4(%ebp), %eax
	subl	%edx, (%eax)
	movl	-8(%ebp), %edx
	leal	-12(%ebp), %eax
	addl	%edx, (%eax)
	jmp	.L126
.L127:
	movl	16(%ebp), %eax
	movl	%eax, -16(%ebp)
.L125:
	movl	-16(%ebp), %eax
	leave
	ret
.Lfe63:
	.size	rio_writen,.Lfe63-rio_writen
	.type	rio_read,@function
rio_read:
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	subl	$20, %esp
	nop
.L133:
	movl	8(%ebp), %eax
	cmpl	$0, 4(%eax)
	jle	.L135
	jmp	.L134
.L135:
	movl	8(%ebp), %ebx
	movl	$8192, 8(%esp)
	movl	8(%ebp), %eax
	addl	$12, %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	read
	movl	%eax, 4(%ebx)
	movl	8(%ebp), %eax
	cmpl	$0, 4(%eax)
	jns	.L136
	call	__errno_location
	cmpl	$4, (%eax)
	je	.L133
	movl	$-1, -12(%ebp)
	jmp	.L132
.L136:
	movl	8(%ebp), %eax
	cmpl	$0, 4(%eax)
	jne	.L139
	movl	$0, -12(%ebp)
	jmp	.L132
.L139:
	movl	8(%ebp), %edx
	movl	8(%ebp), %eax
	addl	$12, %eax
	movl	%eax, 8(%edx)
	jmp	.L133
.L134:
	movl	16(%ebp), %eax
	movl	%eax, -8(%ebp)
	movl	8(%ebp), %eax
	movl	4(%eax), %eax
	cmpl	16(%ebp), %eax
	jae	.L141
	movl	8(%ebp), %eax
	movl	4(%eax), %eax
	movl	%eax, -8(%ebp)
.L141:
	movl	-8(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	8(%ebp), %eax
	movl	8(%eax), %eax
	movl	%eax, 4(%esp)
	movl	12(%ebp), %eax
	movl	%eax, (%esp)
	call	memcpy
	movl	8(%ebp), %ecx
	movl	8(%ebp), %edx
	movl	-8(%ebp), %eax
	addl	8(%edx), %eax
	movl	%eax, 8(%ecx)
	movl	8(%ebp), %ecx
	movl	8(%ebp), %eax
	movl	-8(%ebp), %edx
	movl	4(%eax), %eax
	subl	%edx, %eax
	movl	%eax, 4(%ecx)
	movl	-8(%ebp), %eax
	movl	%eax, -12(%ebp)
.L132:
	movl	-12(%ebp), %eax
	addl	$20, %esp
	popl	%ebx
	popl	%ebp
	ret
.Lfe64:
	.size	rio_read,.Lfe64-rio_read
.globl rio_readinitb
	.type	rio_readinitb,@function
rio_readinitb:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %edx
	movl	12(%ebp), %eax
	movl	%eax, (%edx)
	movl	8(%ebp), %eax
	movl	$0, 4(%eax)
	movl	8(%ebp), %edx
	movl	8(%ebp), %eax
	addl	$12, %eax
	movl	%eax, 8(%edx)
	popl	%ebp
	ret
.Lfe65:
	.size	rio_readinitb,.Lfe65-rio_readinitb
.globl rio_readnb
	.type	rio_readnb,@function
rio_readnb:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	16(%ebp), %eax
	movl	%eax, -4(%ebp)
	movl	12(%ebp), %eax
	movl	%eax, -12(%ebp)
.L144:
	cmpl	$0, -4(%ebp)
	jne	.L146
	jmp	.L145
.L146:
	movl	-4(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_read
	movl	%eax, -8(%ebp)
	cmpl	$0, -8(%ebp)
	jns	.L147
	call	__errno_location
	cmpl	$4, (%eax)
	jne	.L148
	movl	$0, -8(%ebp)
	jmp	.L150
.L148:
	movl	$-1, -16(%ebp)
	jmp	.L143
.L147:
	cmpl	$0, -8(%ebp)
	jne	.L150
	jmp	.L145
.L150:
	movl	-8(%ebp), %edx
	leal	-4(%ebp), %eax
	subl	%edx, (%eax)
	movl	-8(%ebp), %edx
	leal	-12(%ebp), %eax
	addl	%edx, (%eax)
	jmp	.L144
.L145:
	movl	-4(%ebp), %eax
	movl	16(%ebp), %edx
	subl	%eax, %edx
	movl	%edx, %eax
	movl	%eax, -16(%ebp)
.L143:
	movl	-16(%ebp), %eax
	leave
	ret
.Lfe66:
	.size	rio_readnb,.Lfe66-rio_readnb
.globl rio_readlineb
	.type	rio_readlineb,@function
rio_readlineb:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$40, %esp
	movl	12(%ebp), %eax
	movl	%eax, -16(%ebp)
	movl	$1, -4(%ebp)
.L153:
	movl	-4(%ebp), %eax
	cmpl	16(%ebp), %eax
	jb	.L156
	jmp	.L154
.L156:
	movl	$1, 8(%esp)
	leal	-9(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_read
	movl	%eax, -8(%ebp)
	cmpl	$1, -8(%ebp)
	jne	.L157
	movl	-16(%ebp), %eax
	movl	%eax, %edx
	movzbl	-9(%ebp), %eax
	movb	%al, (%edx)
	leal	-16(%ebp), %eax
	incl	(%eax)
	cmpb	$10, -9(%ebp)
	jne	.L155
	jmp	.L154
.L157:
	cmpl	$0, -8(%ebp)
	jne	.L160
	cmpl	$1, -4(%ebp)
	jne	.L154
	movl	$0, -20(%ebp)
	jmp	.L152
.L160:
	movl	$-1, -20(%ebp)
	jmp	.L152
.L155:
	leal	-4(%ebp), %eax
	incl	(%eax)
	jmp	.L153
.L154:
	movl	-16(%ebp), %eax
	movb	$0, (%eax)
	movl	-4(%ebp), %eax
	movl	%eax, -20(%ebp)
.L152:
	movl	-20(%ebp), %eax
	leave
	ret
.Lfe67:
	.size	rio_readlineb,.Lfe67-rio_readlineb
	.section	.rodata
.LC53:
	.string	"Rio_readn error"
	.text
.globl Rio_readn
	.type	Rio_readn,@function
Rio_readn:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_readn
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L165
	movl	$.LC53, (%esp)
	call	unix_error
.L165:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe68:
	.size	Rio_readn,.Lfe68-Rio_readn
	.section	.rodata
.LC54:
	.string	"Rio_writen error"
	.text
.globl Rio_writen
	.type	Rio_writen,@function
Rio_writen:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_writen
	cmpl	16(%ebp), %eax
	je	.L166
	movl	$.LC54, (%esp)
	call	unix_error
.L166:
	leave
	ret
.Lfe69:
	.size	Rio_writen,.Lfe69-Rio_writen
.globl Rio_readinitb
	.type	Rio_readinitb,@function
Rio_readinitb:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_readinitb
	leave
	ret
.Lfe70:
	.size	Rio_readinitb,.Lfe70-Rio_readinitb
	.section	.rodata
.LC55:
	.string	"Rio_readnb error"
	.text
.globl Rio_readnb
	.type	Rio_readnb,@function
Rio_readnb:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_readnb
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L170
	movl	$.LC55, (%esp)
	call	unix_error
.L170:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe71:
	.size	Rio_readnb,.Lfe71-Rio_readnb
	.section	.rodata
.LC56:
	.string	"Rio_readlineb error"
	.text
.globl Rio_readlineb
	.type	Rio_readlineb,@function
Rio_readlineb:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	16(%ebp), %eax
	movl	%eax, 8(%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	rio_readlineb
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L172
	movl	$.LC56, (%esp)
	call	unix_error
.L172:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe72:
	.size	Rio_readlineb,.Lfe72-Rio_readlineb
.globl open_clientfd
	.type	open_clientfd,@function
open_clientfd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$72, %esp
	movl	$0, 8(%esp)
	movl	$1, 4(%esp)
	movl	$2, (%esp)
	call	socket
	movl	%eax, -12(%ebp)
	cmpl	$0, -12(%ebp)
	jns	.L174
	movl	$-1, -44(%ebp)
	jmp	.L173
.L174:
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	gethostbyname
	movl	%eax, -16(%ebp)
	cmpl	$0, -16(%ebp)
	jne	.L175
	movl	$-2, -44(%ebp)
	jmp	.L173
.L175:
	movl	$16, 4(%esp)
	leal	-40(%ebp), %eax
	movl	%eax, (%esp)
	call	bzero
	movw	$2, -40(%ebp)
	movl	-16(%ebp), %eax
	movl	12(%eax), %eax
	movl	%eax, 8(%esp)
	leal	-40(%ebp), %eax
	addl	$4, %eax
	movl	%eax, 4(%esp)
	movl	-16(%ebp), %eax
	movl	16(%eax), %eax
	movl	(%eax), %eax
	movl	%eax, (%esp)
	call	bcopy
	movzwl	12(%ebp), %eax
	movl	%eax, (%esp)
	call	htons
	movw	%ax, -38(%ebp)
	movl	$16, 8(%esp)
	leal	-40(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, (%esp)
	call	connect
	testl	%eax, %eax
	jns	.L176
	movl	$-1, -44(%ebp)
	jmp	.L173
.L176:
	movl	-12(%ebp), %eax
	movl	%eax, -44(%ebp)
.L173:
	movl	-44(%ebp), %eax
	leave
	ret
.Lfe73:
	.size	open_clientfd,.Lfe73-open_clientfd
.globl open_listenfd
	.type	open_listenfd,@function
open_listenfd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$88, %esp
	movl	$1, -16(%ebp)
	movl	$0, 8(%esp)
	movl	$1, 4(%esp)
	movl	$2, (%esp)
	call	socket
	movl	%eax, -12(%ebp)
	cmpl	$0, -12(%ebp)
	jns	.L178
	movl	$-1, -44(%ebp)
	jmp	.L177
.L178:
	movl	$4, 16(%esp)
	leal	-16(%ebp), %eax
	movl	%eax, 12(%esp)
	movl	$2, 8(%esp)
	movl	$1, 4(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, (%esp)
	call	setsockopt
	testl	%eax, %eax
	jns	.L179
	movl	$-1, -44(%ebp)
	jmp	.L177
.L179:
	movl	$16, 4(%esp)
	leal	-40(%ebp), %eax
	movl	%eax, (%esp)
	call	bzero
	movw	$2, -40(%ebp)
	movl	$0, (%esp)
	call	htonl
	movl	%eax, -36(%ebp)
	movzwl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	htons
	movw	%ax, -38(%ebp)
	movl	$16, 8(%esp)
	leal	-40(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, (%esp)
	call	bind
	testl	%eax, %eax
	jns	.L180
	movl	$-1, -44(%ebp)
	jmp	.L177
.L180:
	movl	$1024, 4(%esp)
	movl	-12(%ebp), %eax
	movl	%eax, (%esp)
	call	listen
	testl	%eax, %eax
	jns	.L181
	movl	$-1, -44(%ebp)
	jmp	.L177
.L181:
	movl	-12(%ebp), %eax
	movl	%eax, -44(%ebp)
.L177:
	movl	-44(%ebp), %eax
	leave
	ret
.Lfe74:
	.size	open_listenfd,.Lfe74-open_listenfd
	.section	.rodata
.LC57:
	.string	"Open_clientfd Unix error"
.LC58:
	.string	"Open_clientfd DNS error"
	.text
.globl Open_clientfd
	.type	Open_clientfd,@function
Open_clientfd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	open_clientfd
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L183
	cmpl	$-1, -4(%ebp)
	jne	.L184
	movl	$.LC57, (%esp)
	call	unix_error
	jmp	.L183
.L184:
	movl	$.LC58, (%esp)
	call	dns_error
.L183:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe75:
	.size	Open_clientfd,.Lfe75-Open_clientfd
	.section	.rodata
.LC59:
	.string	"Open_listenfd error"
	.text
.globl Open_listenfd
	.type	Open_listenfd,@function
Open_listenfd:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$8, %esp
	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	call	open_listenfd
	movl	%eax, -4(%ebp)
	cmpl	$0, -4(%ebp)
	jns	.L187
	movl	$.LC59, (%esp)
	call	unix_error
.L187:
	movl	-4(%ebp), %eax
	leave
	ret
.Lfe76:
	.size	Open_listenfd,.Lfe76-Open_listenfd
	.ident	"GCC: (GNU) 3.2.3"
