	.file	"571829.c"
	.intel_syntax noprefix
	.text
	.section	.rodata
	.align 8
.LC0:
	.string	"$Id: connect.c 100 2007-07-03 10:48:26Z gotoh $"
	.section	.data.rel.local,"aw"
	.align 8
	.type	vcid, @object
	.size	vcid, 8
vcid:
	.quad	.LC0
	.section	.rodata
	.align 8
.LC1:
	.string	"usage: %s [-dnhst45] [-p local-port][-R resolve] [-w timeout] \n          [-H proxy-server[:port]] [-S [user@]socks-server[:port]] \n          [-T proxy-server[:port]]\n          [-c telnet-proxy-command]\n          host port\n"
	.section	.data.rel.local
	.align 8
	.type	usage, @object
	.size	usage, 8
usage:
	.quad	.LC1
	.globl	progname
	.bss
	.align 8
	.type	progname, @object
	.size	progname, 8
progname:
	.zero	8
	.globl	progdesc
	.section	.rodata
	.align 8
.LC2:
	.string	"connect --- simple relaying command via proxy."
	.section	.data.rel.local
	.align 8
	.type	progdesc, @object
	.size	progdesc, 8
progdesc:
	.quad	.LC2
	.globl	rcs_revstr
	.section	.rodata
.LC3:
	.string	"$Revision: 100 $"
	.section	.data.rel.local
	.align 8
	.type	rcs_revstr, @object
	.size	rcs_revstr, 8
rcs_revstr:
	.quad	.LC3
	.globl	revstr
	.bss
	.align 8
	.type	revstr, @object
	.size	revstr, 8
revstr:
	.zero	8
	.globl	major_version
	.data
	.align 4
	.type	major_version, @object
	.size	major_version, 4
major_version:
	.long	1
	.globl	minor_version
	.bss
	.align 4
	.type	minor_version, @object
	.size	minor_version, 4
minor_version:
	.zero	4
	.globl	digits
	.section	.rodata
.LC4:
	.string	"0123456789"
	.section	.data.rel.local
	.align 8
	.type	digits, @object
	.size	digits, 8
digits:
	.quad	.LC4
	.globl	dotdigits
	.section	.rodata
.LC5:
	.string	"0123456789."
	.section	.data.rel.local
	.align 8
	.type	dotdigits, @object
	.size	dotdigits, 8
dotdigits:
	.quad	.LC5
	.globl	f_debug
	.bss
	.align 4
	.type	f_debug, @object
	.size	f_debug, 4
f_debug:
	.zero	4
	.globl	f_report
	.data
	.align 4
	.type	f_report, @object
	.size	f_report, 4
f_report:
	.long	1
	.globl	connect_timeout
	.bss
	.align 4
	.type	connect_timeout, @object
	.size	connect_timeout, 4
connect_timeout:
	.zero	4
	.globl	local_type_names
	.section	.rodata
.LC6:
	.string	"stdio"
.LC7:
	.string	"socket"
	.section	.data.rel.local
	.align 16
	.type	local_type_names, @object
	.size	local_type_names, 16
local_type_names:
	.quad	.LC6
	.quad	.LC7
	.globl	local_type
	.bss
	.align 4
	.type	local_type, @object
	.size	local_type, 4
local_type:
	.zero	4
	.globl	local_port
	.align 2
	.type	local_port, @object
	.size	local_port, 2
local_port:
	.zero	2
	.globl	f_hold_session
	.align 4
	.type	f_hold_session, @object
	.size	f_hold_session, 4
f_hold_session:
	.zero	4
	.globl	telnet_command
	.section	.rodata
.LC8:
	.string	"telnet %h %p"
	.section	.data.rel.local
	.align 8
	.type	telnet_command, @object
	.size	telnet_command, 8
telnet_command:
	.quad	.LC8
	.globl	method_names
	.section	.rodata
.LC9:
	.string	"UNDECIDED"
.LC10:
	.string	"DIRECT"
.LC11:
	.string	"SOCKS"
.LC12:
	.string	"HTTP"
.LC13:
	.string	"TELNET"
	.section	.data.rel.local
	.align 32
	.type	method_names, @object
	.size	method_names, 40
method_names:
	.quad	.LC9
	.quad	.LC10
	.quad	.LC11
	.quad	.LC12
	.quad	.LC13
	.globl	relay_method
	.bss
	.align 4
	.type	relay_method, @object
	.size	relay_method, 4
relay_method:
	.zero	4
	.globl	relay_host
	.align 8
	.type	relay_host, @object
	.size	relay_host, 8
relay_host:
	.zero	8
	.globl	relay_port
	.align 2
	.type	relay_port, @object
	.size	relay_port, 2
relay_port:
	.zero	2
	.globl	relay_user
	.align 8
	.type	relay_user, @object
	.size	relay_user, 8
relay_user:
	.zero	8
	.globl	dest_host
	.align 8
	.type	dest_host, @object
	.size	dest_host, 8
dest_host:
	.zero	8
	.globl	dest_addr
	.align 16
	.type	dest_addr, @object
	.size	dest_addr, 16
dest_addr:
	.zero	16
	.globl	dest_port
	.align 2
	.type	dest_port, @object
	.size	dest_port, 2
dest_port:
	.zero	2
	.globl	socks5_rep_names
	.section	.rodata
.LC14:
	.string	"succeeded"
.LC15:
	.string	"general SOCKS server failure"
	.align 8
.LC16:
	.string	"connection not allowed by ruleset"
.LC17:
	.string	"Network unreachable"
.LC18:
	.string	"Host unreachable"
.LC19:
	.string	"connection refused"
.LC20:
	.string	"TTL expired"
.LC21:
	.string	"Command not supported"
.LC22:
	.string	"Address not supported"
.LC23:
	.string	"Invalid address"
	.section	.data.rel.local
	.align 32
	.type	socks5_rep_names, @object
	.size	socks5_rep_names, 176
socks5_rep_names:
	.long	0
	.zero	4
	.quad	.LC14
	.long	1
	.zero	4
	.quad	.LC15
	.long	2
	.zero	4
	.quad	.LC16
	.long	3
	.zero	4
	.quad	.LC17
	.long	4
	.zero	4
	.quad	.LC18
	.long	5
	.zero	4
	.quad	.LC19
	.long	6
	.zero	4
	.quad	.LC20
	.long	7
	.zero	4
	.quad	.LC21
	.long	8
	.zero	4
	.quad	.LC22
	.long	9
	.zero	4
	.quad	.LC23
	.long	-1
	.zero	4
	.quad	0
	.globl	socks4_rep_names
	.section	.rodata
.LC24:
	.string	"request granted (succeeded)"
.LC25:
	.string	"request rejected or failed"
.LC26:
	.string	"cannot connect identd"
.LC27:
	.string	"user id not matched"
	.section	.data.rel.local
	.align 32
	.type	socks4_rep_names, @object
	.size	socks4_rep_names, 80
socks4_rep_names:
	.long	90
	.zero	4
	.quad	.LC24
	.long	91
	.zero	4
	.quad	.LC25
	.long	92
	.zero	4
	.quad	.LC26
	.long	93
	.zero	4
	.quad	.LC27
	.long	-1
	.zero	4
	.quad	0
	.globl	resolve_names
	.section	.rodata
.LC28:
	.string	"UNKNOWN"
.LC29:
	.string	"LOCAL"
.LC30:
	.string	"REMOTE"
.LC31:
	.string	"BOTH"
	.section	.data.rel.local
	.align 32
	.type	resolve_names, @object
	.size	resolve_names, 32
resolve_names:
	.quad	.LC28
	.quad	.LC29
	.quad	.LC30
	.quad	.LC31
	.globl	socks_version
	.data
	.align 4
	.type	socks_version, @object
	.size	socks_version, 4
socks_version:
	.long	5
	.globl	socks_resolve
	.bss
	.align 4
	.type	socks_resolve, @object
	.size	socks_resolve, 4
socks_resolve:
	.zero	4
	.globl	socks_ns
	.align 16
	.type	socks_ns, @object
	.size	socks_ns, 16
socks_ns:
	.zero	16
	.globl	socks5_auth
	.align 8
	.type	socks5_auth, @object
	.size	socks5_auth, 8
socks5_auth:
	.zero	8
	.globl	proxy_auth_type
	.align 4
	.type	proxy_auth_type, @object
	.size	proxy_auth_type, 4
proxy_auth_type:
	.zero	4
	.section	.rodata
.LC32:
	.string	"DEBUG: "
	.text
	.globl	debug
	.type	debug, @function
debug:
.LFB6:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L2
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L2:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR f_debug[rip]
	test	eax, eax
	je	.L5
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 7
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
.L5:
	nop
	mov	rax, QWORD PTR -184[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L4
	call	__stack_chk_fail@PLT
.L4:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	debug, .-debug
	.globl	debug_
	.type	debug_, @function
debug_:
.LFB7:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L7
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L7:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR f_debug[rip]
	test	eax, eax
	je	.L10
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
.L10:
	nop
	mov	rax, QWORD PTR -184[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L9
	call	__stack_chk_fail@PLT
.L9:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE7:
	.size	debug_, .-debug_
	.section	.rodata
.LC33:
	.string	"ERROR: "
	.text
	.globl	error
	.type	error, @function
error:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L12
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L12:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 7
	mov	esi, 1
	lea	rdi, .LC33[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
	nop
	mov	rax, QWORD PTR -184[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L13
	call	__stack_chk_fail@PLT
.L13:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	error, .-error
	.section	.rodata
.LC34:
	.string	"FATAL: "
	.text
	.globl	fatal
	.type	fatal, @function
fatal:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	QWORD PTR -216[rbp], rdi
	mov	QWORD PTR -168[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L15
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L15:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 8
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 7
	mov	esi, 1
	lea	rdi, .LC34[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rdx, -208[rbp]
	mov	rcx, QWORD PTR -216[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	vfprintf@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE9:
	.size	fatal, .-fatal
	.section	.rodata
	.align 8
.LC35:
	.string	"Cannot allocate memory: %d bytes.\n"
	.text
	.globl	xmalloc
	.type	xmalloc, @function
xmalloc:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L18
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	fatal
.L18:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	xmalloc, .-xmalloc
	.globl	downcase
	.type	downcase, @function
downcase:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L21
.L23:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 256
	test	eax, eax
	je	.L22
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	add	eax, 32
	mov	edx, eax
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], dl
.L22:
	add	QWORD PTR -8[rbp], 1
.L21:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L23
	mov	rax, QWORD PTR -24[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	downcase, .-downcase
	.section	.rodata
.LC36:
	.string	"%d"
.LC37:
	.string	"the_stack_data/571829.c"
.LC38:
	.string	"strlen(buf) < len"
	.text
	.globl	expand_host_and_port
	.type	expand_host_and_port, @function
expand_host_and_port:
.LFB12:
	.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, 72
	.cfi_offset 3, -24
	mov	QWORD PTR -56[rbp], rdi
	mov	QWORD PTR -64[rbp], rsi
	mov	DWORD PTR -68[rbp], edx
	mov	rax, QWORD PTR -56[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -64[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, rbx
	add	rax, 20
	mov	QWORD PTR -32[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	xmalloc
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -48[rbp], rax
	jmp	.L26
.L38:
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 37
	jne	.L27
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	cmp	eax, 104
	je	.L28
	cmp	eax, 112
	je	.L29
	jmp	.L41
.L28:
	mov	rdx, QWORD PTR -64[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	add	QWORD PTR -48[rbp], 2
	jmp	.L31
.L29:
	mov	edx, DWORD PTR -68[rbp]
	mov	rsi, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	ecx, edx
	lea	rdx, .LC36[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	add	QWORD PTR -48[rbp], 2
	jmp	.L31
.L41:
	add	QWORD PTR -48[rbp], 1
	nop
.L31:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	QWORD PTR -40[rbp], rax
	jmp	.L32
.L27:
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 92
	jne	.L33
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 1
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	cmp	eax, 116
	je	.L34
	cmp	eax, 116
	jg	.L35
	cmp	eax, 110
	je	.L36
	cmp	eax, 114
	jne	.L35
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -40[rbp], rdx
	mov	BYTE PTR [rax], 13
	add	QWORD PTR -48[rbp], 2
	jmp	.L32
.L36:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -40[rbp], rdx
	mov	BYTE PTR [rax], 10
	add	QWORD PTR -48[rbp], 2
	jmp	.L32
.L34:
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -40[rbp], rdx
	mov	BYTE PTR [rax], 9
	add	QWORD PTR -48[rbp], 2
	jmp	.L32
.L35:
	add	QWORD PTR -48[rbp], 1
	jmp	.L32
.L33:
	mov	rdx, QWORD PTR -48[rbp]
	lea	rax, 1[rdx]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	lea	rcx, 1[rax]
	mov	QWORD PTR -40[rbp], rcx
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
.L32:
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR [rax], 0
.L26:
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L38
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	QWORD PTR -32[rbp], rax
	ja	.L39
	lea	rcx, __PRETTY_FUNCTION__.16[rip]
	mov	edx, 594
	lea	rsi, .LC37[rip]
	lea	rdi, .LC38[rip]
	call	__assert_fail@PLT
.L39:
	mov	rax, QWORD PTR -24[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	expand_host_and_port, .-expand_host_and_port
	.section	.rodata
.LC39:
	.string	"both"
.LC40:
	.string	"remote"
.LC41:
	.string	"local"
	.text
	.globl	lookup_resolve
	.type	lookup_resolve, @function
lookup_resolve:
.LFB13:
	.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, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	downcase
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC39[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L43
	mov	DWORD PTR -28[rbp], 3
	jmp	.L44
.L43:
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC40[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L45
	mov	DWORD PTR -28[rbp], 2
	jmp	.L44
.L45:
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC41[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L46
	mov	DWORD PTR -28[rbp], 1
	jmp	.L44
.L46:
	mov	rdx, QWORD PTR dotdigits[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strspn@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jne	.L47
	mov	DWORD PTR -28[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	inet_addr@PLT
	mov	DWORD PTR socks_ns[rip+4], eax
	mov	WORD PTR socks_ns[rip], 2
	jmp	.L44
.L47:
	mov	DWORD PTR -28[rbp], 0
.L44:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, DWORD PTR -28[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	lookup_resolve, .-lookup_resolve
	.section	.rodata
	.align 8
.LC42:
	.string	"getpwuid() failed for uid: %d\n"
	.text
	.globl	getusername
	.type	getusername, @function
getusername:
.LFB14:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 16
	call	getuid@PLT
	mov	edi, eax
	call	getpwuid@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L50
	call	getuid@PLT
	mov	esi, eax
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	fatal
.L50:
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE14:
	.size	getusername, .-getusername
	.globl	expect
	.type	expect, @function
expect:
.LFB15:
	.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, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -20[rbp], eax
	jmp	.L53
.L56:
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	mov	ebx, eax
	mov	rax, QWORD PTR -48[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	cmp	ebx, eax
	je	.L54
	mov	eax, 0
	jmp	.L55
.L54:
	add	QWORD PTR -40[rbp], 1
	add	QWORD PTR -48[rbp], 1
.L53:
	mov	eax, DWORD PTR -20[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -20[rbp], edx
	test	eax, eax
	jg	.L56
	mov	eax, 1
.L55:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE15:
	.size	expect, .-expect
	.globl	parameter_table
	.section	.rodata
.LC43:
	.string	"SOCKS_SERVER"
.LC44:
	.string	"SOCKS5_SERVER"
.LC45:
	.string	"SOCKS4_SERVER"
.LC46:
	.string	"SOCKS_RESOLVE"
.LC47:
	.string	"SOCKS5_RESOLVE"
.LC48:
	.string	"SOCKS4_RESOLVE"
.LC49:
	.string	"SOCKS5_USER"
.LC50:
	.string	"SOCKS5_PASSWD"
.LC51:
	.string	"SOCKS5_PASSWORD"
.LC52:
	.string	"HTTP_PROXY"
.LC53:
	.string	"HTTP_PROXY_USER"
.LC54:
	.string	"HTTP_PROXY_PASSWORD"
.LC55:
	.string	"CONNECT_USER"
.LC56:
	.string	"CONNECT_PASSWORD"
.LC57:
	.string	"SSH_ASKPASS"
.LC58:
	.string	"SOCKS5_DIRECT"
.LC59:
	.string	"SOCKS4_DIRECT"
.LC60:
	.string	"SOCKS_DIRECT"
.LC61:
	.string	"HTTP_DIRECT"
.LC62:
	.string	"CONNECT_DIRECT"
.LC63:
	.string	"SOCKS5_AUTH"
	.section	.data.rel.local
	.align 32
	.type	parameter_table, @object
	.size	parameter_table, 352
parameter_table:
	.quad	.LC43
	.quad	0
	.quad	.LC44
	.quad	0
	.quad	.LC45
	.quad	0
	.quad	.LC46
	.quad	0
	.quad	.LC47
	.quad	0
	.quad	.LC48
	.quad	0
	.quad	.LC49
	.quad	0
	.quad	.LC50
	.quad	0
	.quad	.LC51
	.quad	0
	.quad	.LC52
	.quad	0
	.quad	.LC53
	.quad	0
	.quad	.LC54
	.quad	0
	.quad	.LC55
	.quad	0
	.quad	.LC56
	.quad	0
	.quad	.LC57
	.quad	0
	.quad	.LC58
	.quad	0
	.quad	.LC59
	.quad	0
	.quad	.LC60
	.quad	0
	.quad	.LC61
	.quad	0
	.quad	.LC62
	.quad	0
	.quad	.LC63
	.quad	0
	.quad	0
	.quad	0
	.text
	.globl	find_parameter_item
	.type	find_parameter_item, @function
find_parameter_item:
.LFB16:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L58
.L61:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, parameter_table[rip]
	mov	rdx, QWORD PTR [rdx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L59
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, parameter_table[rip]
	add	rax, rdx
	jmp	.L60
.L59:
	add	DWORD PTR -4[rbp], 1
.L58:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, parameter_table[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L61
	mov	eax, 0
.L60:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE16:
	.size	find_parameter_item, .-find_parameter_item
	.section	.rodata
.LC64:
	.string	"r"
.LC65:
	.string	"Reading parameter file(%s)\n"
.LC66:
	.string	"%s:%d: buffer overflow\n"
.LC67:
	.string	"%s:%d: missing equal sign\n"
	.align 8
.LC68:
	.string	"%s:%d: unknown parameter `%s'\n"
	.align 8
.LC69:
	.string	"Parameter `%s' is set to `%s'\n"
	.text
	.globl	read_parameter_file_1
	.type	read_parameter_file_1, @function
read_parameter_file_1:
.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, 1120
	mov	QWORD PTR -1112[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR -1112[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	fopen@PLT
	mov	QWORD PTR -1072[rbp], rax
	cmp	QWORD PTR -1072[rbp], 0
	je	.L91
	mov	rax, QWORD PTR -1112[rbp]
	mov	rsi, rax
	lea	rdi, .LC65[rip]
	mov	eax, 0
	call	debug
	mov	DWORD PTR -1092[rbp], 1
	jmp	.L64
.L89:
	lea	rax, -1040[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -1088[rbp], rax
	cmp	QWORD PTR -1088[rbp], 0
	jne	.L65
	mov	edx, DWORD PTR -1092[rbp]
	mov	rax, QWORD PTR -1112[rbp]
	mov	rsi, rax
	lea	rdi, .LC66[rip]
	mov	eax, 0
	call	fatal
.L65:
	mov	rax, QWORD PTR -1088[rbp]
	mov	BYTE PTR [rax], 0
	lea	rax, -1040[rbp]
	mov	esi, 35
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -1088[rbp], rax
	cmp	QWORD PTR -1088[rbp], 0
	je	.L66
	mov	rax, QWORD PTR -1088[rbp]
	mov	BYTE PTR [rax], 0
.L66:
	lea	rax, -1040[rbp]
	mov	QWORD PTR -1088[rbp], rax
	jmp	.L67
.L70:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L68
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L92
.L68:
	add	QWORD PTR -1088[rbp], 1
.L67:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L70
	jmp	.L69
.L92:
	nop
.L69:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L93
	mov	rax, QWORD PTR -1088[rbp]
	mov	QWORD PTR -1064[rbp], rax
	mov	rax, QWORD PTR -1088[rbp]
	mov	esi, 61
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -1088[rbp], rax
	cmp	QWORD PTR -1088[rbp], 0
	jne	.L73
	mov	edx, DWORD PTR -1092[rbp]
	mov	rax, QWORD PTR -1112[rbp]
	mov	rsi, rax
	lea	rdi, .LC67[rip]
	mov	eax, 0
	call	error
	jmp	.L72
.L73:
	mov	rax, QWORD PTR -1088[rbp]
	sub	rax, 1
	mov	QWORD PTR -1080[rbp], rax
	jmp	.L74
.L77:
	mov	rax, QWORD PTR -1080[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L75
	mov	rax, QWORD PTR -1080[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L94
.L75:
	sub	QWORD PTR -1080[rbp], 1
.L74:
	lea	rax, -1040[rbp]
	cmp	QWORD PTR -1080[rbp], rax
	jnb	.L77
	jmp	.L76
.L94:
	nop
.L76:
	add	QWORD PTR -1080[rbp], 1
	mov	rax, QWORD PTR -1080[rbp]
	mov	BYTE PTR [rax], 0
	add	QWORD PTR -1088[rbp], 1
	jmp	.L78
.L81:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L79
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L95
.L79:
	add	QWORD PTR -1088[rbp], 1
.L78:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L81
	jmp	.L80
.L95:
	nop
.L80:
	mov	rax, QWORD PTR -1088[rbp]
	mov	QWORD PTR -1056[rbp], rax
	jmp	.L82
.L83:
	add	QWORD PTR -1088[rbp], 1
.L82:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L83
	sub	QWORD PTR -1088[rbp], 1
	jmp	.L84
.L87:
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L85
	mov	rax, QWORD PTR -1088[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L96
.L85:
	sub	QWORD PTR -1088[rbp], 1
.L84:
	lea	rax, -1040[rbp]
	cmp	QWORD PTR -1088[rbp], rax
	jnb	.L87
	jmp	.L86
.L96:
	nop
.L86:
	add	QWORD PTR -1088[rbp], 1
	mov	rax, QWORD PTR -1088[rbp]
	mov	BYTE PTR [rax], 0
	cmp	QWORD PTR -1064[rbp], 0
	je	.L72
	cmp	QWORD PTR -1056[rbp], 0
	je	.L72
	mov	rax, QWORD PTR -1064[rbp]
	mov	rdi, rax
	call	find_parameter_item
	mov	QWORD PTR -1048[rbp], rax
	cmp	QWORD PTR -1048[rbp], 0
	jne	.L88
	mov	rcx, QWORD PTR -1064[rbp]
	mov	edx, DWORD PTR -1092[rbp]
	mov	rax, QWORD PTR -1112[rbp]
	mov	rsi, rax
	lea	rdi, .LC68[rip]
	mov	eax, 0
	call	error
	jmp	.L72
.L88:
	mov	rax, QWORD PTR -1056[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1048[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rdx, QWORD PTR -1056[rbp]
	mov	rax, QWORD PTR -1064[rbp]
	mov	rsi, rax
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	debug
	jmp	.L72
.L93:
	nop
.L72:
	add	DWORD PTR -1092[rbp], 1
.L64:
	mov	rdx, QWORD PTR -1072[rbp]
	lea	rax, -1040[rbp]
	mov	esi, 1024
	mov	rdi, rax
	call	fgets@PLT
	test	rax, rax
	jne	.L89
.L91:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L90
	call	__stack_chk_fail@PLT
.L90:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE17:
	.size	read_parameter_file_1, .-read_parameter_file_1
	.section	.rodata
.LC70:
	.string	"/etc/connectrc"
	.text
	.globl	read_parameter_file
	.type	read_parameter_file, @function
read_parameter_file:
.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, 16
	lea	rdi, .LC70[rip]
	call	read_parameter_file_1
	call	getuid@PLT
	mov	edi, eax
	call	getpwuid@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L98
	call	getuid@PLT
	mov	esi, eax
	lea	rdi, .LC42[rip]
	mov	eax, 0
	call	fatal
.L98:
	mov	rax, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR 32[rax]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, 12
	mov	rdi, rax
	call	xmalloc
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	mov	rdx, QWORD PTR 32[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, rdx
	movabs	rcx, 7162252202996870703
	mov	QWORD PTR [rax], rcx
	mov	DWORD PTR 8[rax], 6517364
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	read_parameter_file_1
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE18:
	.size	read_parameter_file, .-read_parameter_file
	.globl	getparam
	.type	getparam, @function
getparam:
.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, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	getenv@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L100
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	find_parameter_item
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L100
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 8[rax]
	mov	QWORD PTR -16[rbp], rax
.L100:
	mov	rax, QWORD PTR -16[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE19:
	.size	getparam, .-getparam
	.globl	direct_addr_list
	.bss
	.align 32
	.type	direct_addr_list, @object
	.size	direct_addr_list, 6144
direct_addr_list:
	.zero	6144
	.globl	n_direct_addr_list
	.align 4
	.type	n_direct_addr_list, @object
	.size	n_direct_addr_list, 4
n_direct_addr_list:
	.zero	4
	.text
	.globl	mask_addr
	.type	mask_addr, @function
mask_addr:
.LFB20:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -36[rbp], edx
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L103
.L104:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	movzx	ecx, BYTE PTR [rax]
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -16[rbp], rdx
	movzx	edx, BYTE PTR [rax]
	and	edx, ecx
	mov	BYTE PTR [rax], dl
.L103:
	mov	eax, DWORD PTR -36[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -36[rbp], edx
	test	eax, eax
	jg	.L104
	nop
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE20:
	.size	mask_addr, .-mask_addr
	.section	.rodata
	.align 8
.LC71:
	.string	"direct address table is full!\n"
.LC72:
	.string	"!"
.LC73:
	.string	""
	.align 8
.LC74:
	.string	"adding direct addr entry: %s%s/%s\n"
	.text
	.globl	add_direct_addr
	.type	add_direct_addr, @function
add_direct_addr:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -52[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	cmp	eax, 255
	jle	.L106
	lea	rdi, .LC71[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L110
.L106:
	mov	rax, QWORD PTR -40[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR -20[rbp], eax
	mov	rcx, QWORD PTR -48[rbp]
	lea	rax, -20[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	mask_addr
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	edi, DWORD PTR [rax]
	call	inet_ntoa@PLT
	mov	rcx, rax
	cmp	DWORD PTR -52[rbp], 0
	je	.L108
	lea	rax, .LC72[rip]
	jmp	.L109
.L108:
	lea	rax, .LC73[rip]
.L109:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC74[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, direct_addr_list[rip]
	add	rdx, rax
	mov	eax, DWORD PTR -20[rbp]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, direct_addr_list[rip]
	add	rax, rdx
	lea	rdx, 4[rax]
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR [rax]
	mov	DWORD PTR [rdx], eax
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+8]
	mov	QWORD PTR [rdx+rax], 0
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rcx, rax
	lea	rdx, direct_addr_list[rip+16]
	mov	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR [rcx+rdx], eax
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	add	eax, 1
	mov	DWORD PTR n_direct_addr_list[rip], eax
	mov	eax, 0
.L110:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L111
	call	__stack_chk_fail@PLT
.L111:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE21:
	.size	add_direct_addr, .-add_direct_addr
	.section	.rodata
	.align 8
.LC75:
	.string	"adding direct name entry: %s%s\n"
	.text
	.globl	add_direct_host
	.type	add_direct_host, @function
add_direct_host:
.LFB22:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	DWORD PTR -28[rbp], esi
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	cmp	eax, 255
	jle	.L113
	lea	rdi, .LC71[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L114
.L113:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 42
	jne	.L115
	add	QWORD PTR -24[rbp], 1
.L115:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L116
	add	QWORD PTR -24[rbp], 1
.L116:
	cmp	DWORD PTR -28[rbp], 0
	je	.L117
	lea	rax, .LC72[rip]
	jmp	.L118
.L117:
	lea	rax, .LC73[rip]
.L118:
	mov	rdx, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC75[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	ebx, DWORD PTR n_direct_addr_list[rip]
	mov	rdi, rax
	call	downcase
	mov	rdx, rax
	movsx	rcx, ebx
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 3
	mov	rcx, rax
	lea	rax, direct_addr_list[rip+8]
	mov	QWORD PTR [rcx+rax], rdx
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rcx, rax
	lea	rdx, direct_addr_list[rip+16]
	mov	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR [rcx+rdx], eax
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	add	eax, 1
	mov	DWORD PTR n_direct_addr_list[rip], eax
	mov	eax, 0
.L114:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE22:
	.size	add_direct_host, .-add_direct_host
	.section	.rodata
.LC76:
	.string	"str != NULL"
	.text
	.globl	parse_addr_pair
	.type	parse_addr_pair, @function
parse_addr_pair:
.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, 64
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	QWORD PTR -56[rbp], rdx
	cmp	QWORD PTR -40[rbp], 0
	jne	.L120
	lea	rcx, __PRETTY_FUNCTION__.15[rip]
	mov	edx, 872
	lea	rsi, .LC37[rip]
	lea	rdi, .LC76[rip]
	call	__assert_fail@PLT
.L120:
	mov	rax, QWORD PTR -48[rbp]
	mov	DWORD PTR [rax], 0
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR [rax], 0
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -32[rbp], 0
	jmp	.L121
.L130:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L148
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L124
	mov	eax, -1
	jmp	.L125
.L124:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	ecx, eax
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -16[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], -1
	jmp	.L126
.L127:
	add	QWORD PTR -24[rbp], 1
.L126:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L127
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L149
	add	QWORD PTR -24[rbp], 1
	add	DWORD PTR -32[rbp], 1
.L121:
	cmp	DWORD PTR -32[rbp], 3
	jle	.L130
	jmp	.L123
.L148:
	nop
	jmp	.L123
.L149:
	nop
.L123:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L131
	mov	eax, 0
	jmp	.L125
.L131:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 47
	je	.L132
	mov	eax, -1
	jmp	.L125
.L132:
	add	QWORD PTR -24[rbp], 1
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR [rax], 0
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 46
	mov	rdi, rax
	call	strchr@PLT
	test	rax, rax
	je	.L133
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR -8[rbp], rax
	mov	DWORD PTR -32[rbp], 0
	jmp	.L134
.L141:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L135
	mov	eax, -1
	jmp	.L125
.L135:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	ecx, eax
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	jmp	.L136
.L137:
	add	QWORD PTR -24[rbp], 1
.L136:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L137
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L150
	add	QWORD PTR -24[rbp], 1
	add	DWORD PTR -32[rbp], 1
.L134:
	cmp	DWORD PTR -32[rbp], 3
	jle	.L141
	jmp	.L142
.L133:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L143
	mov	eax, -1
	jmp	.L125
.L143:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR -28[rbp], eax
	cmp	DWORD PTR -28[rbp], 0
	js	.L144
	cmp	DWORD PTR -28[rbp], 32
	jle	.L145
.L144:
	mov	eax, -1
	jmp	.L125
.L145:
	cmp	DWORD PTR -28[rbp], 0
	je	.L146
	mov	eax, 32
	sub	eax, DWORD PTR -28[rbp]
	mov	edx, 4294967295
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	mov	edi, eax
	call	htonl@PLT
	jmp	.L147
.L146:
	mov	eax, 0
.L147:
	mov	rdx, QWORD PTR -56[rbp]
	mov	DWORD PTR [rdx], eax
	jmp	.L142
.L150:
	nop
.L142:
	mov	eax, 0
.L125:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE23:
	.size	parse_addr_pair, .-parse_addr_pair
	.section	.rodata
	.align 8
.LC77:
	.string	"making direct addr list from: '%s'\n"
.LC78:
	.string	"too many entries in %s"
	.text
	.globl	initialize_direct_addr
	.type	initialize_direct_addr, @function
initialize_direct_addr:
.LFB24:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -40[rbp], 0
	mov	QWORD PTR -16[rbp], 0
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L152
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 5
	jne	.L153
	lea	rax, .LC58[rip]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L154
.L153:
	lea	rax, .LC59[rip]
	mov	QWORD PTR -16[rbp], rax
.L154:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	getparam
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], 0
	jne	.L155
	lea	rdi, .LC60[rip]
	call	getparam
	mov	QWORD PTR -40[rbp], rax
	jmp	.L155
.L152:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 3
	jne	.L155
	lea	rdi, .LC61[rip]
	call	getparam
	mov	QWORD PTR -40[rbp], rax
.L155:
	cmp	QWORD PTR -40[rbp], 0
	jne	.L156
	lea	rdi, .LC62[rip]
	call	getparam
	mov	QWORD PTR -40[rbp], rax
.L156:
	cmp	QWORD PTR -40[rbp], 0
	je	.L170
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC77[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -32[rbp], rax
	mov	DWORD PTR -44[rbp], 0
.L167:
	cmp	DWORD PTR -44[rbp], 255
	jle	.L159
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC78[rip]
	mov	eax, 0
	call	error
	jmp	.L160
.L159:
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 44
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L161
	mov	rax, QWORD PTR -24[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -24[rbp], rdx
	mov	BYTE PTR [rax], 0
.L161:
	mov	DWORD PTR -56[rbp], 0
	mov	DWORD PTR -52[rbp], 0
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 33
	jne	.L162
	mov	DWORD PTR -48[rbp], 1
	add	QWORD PTR -32[rbp], 1
	jmp	.L163
.L162:
	mov	DWORD PTR -48[rbp], 0
.L163:
	lea	rdx, -52[rbp]
	lea	rcx, -56[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	parse_addr_pair
	test	eax, eax
	jne	.L164
	mov	edx, DWORD PTR -48[rbp]
	lea	rcx, -52[rbp]
	lea	rax, -56[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	add_direct_addr
	jmp	.L165
.L164:
	mov	edx, DWORD PTR -48[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	add_direct_host
.L165:
	cmp	QWORD PTR -24[rbp], 0
	je	.L166
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -32[rbp], rax
.L166:
	cmp	QWORD PTR -24[rbp], 0
	jne	.L167
.L160:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L151
.L170:
	nop
.L151:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L169
	call	__stack_chk_fail@PLT
.L169:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE24:
	.size	initialize_direct_addr, .-initialize_direct_addr
	.globl	cmp_addr
	.type	cmp_addr, @function
cmp_addr:
.LFB25:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rcx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcmp@PLT
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE25:
	.size	cmp_addr, .-cmp_addr
	.section	.rodata
.LC79:
	.string	" (negative)"
.LC80:
	.string	"match with: %s/%s%s\n"
	.align 8
.LC81:
	.string	"not matched, addr to be relayed: %s\n"
	.text
	.globl	is_direct_address
	.type	is_direct_address, @function
is_direct_address:
.LFB26:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 64
	mov	DWORD PTR -52[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -32[rbp], 0
	jmp	.L174
.L180:
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+8]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L183
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+16]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR -28[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	mov	DWORD PTR -36[rbp], eax
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, direct_addr_list[rip]
	add	rax, rdx
	lea	rcx, 4[rax]
	lea	rax, -36[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	mask_addr
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	lea	rdx, direct_addr_list[rip]
	lea	rcx, [rax+rdx]
	lea	rax, -36[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	rdi, rax
	call	cmp_addr
	test	eax, eax
	jne	.L176
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip]
	mov	eax, DWORD PTR [rdx+rax]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -32[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+4]
	mov	eax, DWORD PTR [rdx+rax]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	DWORD PTR -28[rbp], 0
	je	.L177
	lea	rax, .LC79[rip]
	jmp	.L178
.L177:
	lea	rax, .LC73[rip]
.L178:
	mov	rdx, QWORD PTR -16[rbp]
	mov	rsi, QWORD PTR -24[rbp]
	mov	rcx, rax
	lea	rdi, .LC80[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	free@PLT
	cmp	DWORD PTR -28[rbp], 0
	sete	al
	movzx	eax, al
	jmp	.L181
.L183:
	nop
.L176:
	add	DWORD PTR -32[rbp], 1
.L174:
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	cmp	DWORD PTR -32[rbp], eax
	jl	.L180
	mov	eax, DWORD PTR -52[rbp]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rsi, rax
	lea	rdi, .LC81[rip]
	mov	eax, 0
	call	debug
	mov	eax, 0
.L181:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L182
	call	__stack_chk_fail@PLT
.L182:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE26:
	.size	is_direct_address, .-is_direct_address
	.globl	domain_match
	.type	domain_match, @function
domain_match:
.LFB27:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -24[rbp], eax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L185
	cmp	DWORD PTR -24[rbp], 0
	je	.L185
	cmp	DWORD PTR -20[rbp], 0
	jne	.L186
.L185:
	mov	eax, 0
	jmp	.L187
.L186:
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR -20[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -48[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	jmp	.L188
.L191:
	sub	QWORD PTR -16[rbp], 1
	mov	rax, QWORD PTR -16[rbp]
	movzx	edx, BYTE PTR [rax]
	sub	QWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	dl, al
	jne	.L195
	sub	DWORD PTR -24[rbp], 1
	sub	DWORD PTR -20[rbp], 1
.L188:
	cmp	DWORD PTR -24[rbp], 0
	jle	.L190
	cmp	DWORD PTR -20[rbp], 0
	jg	.L191
	jmp	.L190
.L195:
	nop
.L190:
	cmp	DWORD PTR -20[rbp], 0
	je	.L192
	mov	eax, 0
	jmp	.L187
.L192:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -40[rbp]
	je	.L193
	mov	rax, QWORD PTR -16[rbp]
	sub	rax, 1
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L194
.L193:
	mov	eax, 1
	jmp	.L187
.L194:
	mov	eax, 0
.L187:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE27:
	.size	domain_match, .-domain_match
	.section	.rodata
.LC82:
	.string	"checking %s is for direct?\n"
.LC83:
	.string	"match with: %s%s\n"
	.text
	.globl	is_direct_name
	.type	is_direct_name, @function
is_direct_name:
.LFB28:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC82[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	rdi, rax
	call	downcase
	mov	QWORD PTR -40[rbp], rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -24[rbp], eax
	cmp	DWORD PTR -24[rbp], 0
	jg	.L197
	mov	eax, 0
	jmp	.L198
.L197:
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -40[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	DWORD PTR -28[rbp], 0
	jmp	.L199
.L205:
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+8]
	mov	rax, QWORD PTR [rdx+rax]
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L206
	mov	eax, DWORD PTR -28[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 3
	mov	rdx, rax
	lea	rax, direct_addr_list[rip+16]
	mov	eax, DWORD PTR [rdx+rax]
	mov	DWORD PTR -20[rbp], eax
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	domain_match
	test	eax, eax
	je	.L201
	cmp	DWORD PTR -20[rbp], 0
	je	.L202
	lea	rax, .LC79[rip]
	jmp	.L203
.L202:
	lea	rax, .LC73[rip]
.L203:
	mov	rcx, QWORD PTR -8[rbp]
	mov	rdx, rax
	mov	rsi, rcx
	lea	rdi, .LC83[rip]
	mov	eax, 0
	call	debug
	cmp	DWORD PTR -20[rbp], 0
	je	.L204
	mov	eax, 0
	jmp	.L198
.L204:
	mov	eax, 1
	jmp	.L198
.L206:
	nop
.L201:
	add	DWORD PTR -28[rbp], 1
.L199:
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	cmp	DWORD PTR -28[rbp], eax
	jl	.L205
	mov	eax, 0
.L198:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE28:
	.size	is_direct_name, .-is_direct_name
	.section	.rodata
.LC84:
	.string	"%s is for direct.\n"
.LC85:
	.string	"%s is for not direct.\n"
	.text
	.globl	check_direct
	.type	check_direct, @function
check_direct:
.LFB29:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	inet_addr@PLT
	mov	DWORD PTR -4[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	cmp	eax, -1
	je	.L208
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	is_direct_address
	test	eax, eax
	je	.L209
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC84[rip]
	mov	eax, 0
	call	debug
	mov	eax, 1
	jmp	.L211
.L208:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	is_direct_name
	test	eax, eax
	je	.L209
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC84[rip]
	mov	eax, 0
	call	debug
	mov	eax, 1
	jmp	.L211
.L209:
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC85[rip]
	mov	eax, 0
	call	debug
	mov	eax, 0
.L211:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE29:
	.size	check_direct, .-check_direct
	.globl	intr_flag
	.bss
	.align 4
	.type	intr_flag, @object
	.size	intr_flag, 4
intr_flag:
	.zero	4
	.text
	.globl	intr_handler
	.type	intr_handler, @function
intr_handler:
.LFB30:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	mov	DWORD PTR intr_flag[rip], 1
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE30:
	.size	intr_handler, .-intr_handler
	.globl	tty_change_echo
	.type	tty_change_echo, @function
tty_change_echo:
.LFB31:
	.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	DWORD PTR -8[rbp], esi
	mov	eax, DWORD PTR disabled.14[rip]
	test	eax, eax
	je	.L214
	cmp	DWORD PTR -8[rbp], 0
	je	.L214
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, otio.13[rip]
	mov	esi, 0
	mov	edi, eax
	call	tcsetattr@PLT
	mov	DWORD PTR disabled.14[rip], 0
	mov	edx, 0
	lea	rsi, oset.12[rip]
	mov	edi, 2
	call	sigprocmask@PLT
	mov	edx, 0
	lea	rsi, osa.11[rip]
	mov	edi, 2
	call	sigaction@PLT
	mov	eax, DWORD PTR intr_flag[rip]
	test	eax, eax
	je	.L216
	call	getpid@PLT
	mov	esi, 2
	mov	edi, eax
	call	kill@PLT
	lea	rdi, nset.10[rip]
	call	sigemptyset@PLT
	lea	rdi, nset.10[rip]
	call	sigsuspend@PLT
	mov	DWORD PTR intr_flag[rip], 0
	jmp	.L216
.L214:
	mov	eax, DWORD PTR disabled.14[rip]
	test	eax, eax
	jne	.L218
	cmp	DWORD PTR -8[rbp], 0
	jne	.L218
	lea	rdi, nset.10[rip]
	call	sigemptyset@PLT
	mov	esi, 20
	lea	rdi, nset.10[rip]
	call	sigaddset@PLT
	lea	rdx, oset.12[rip]
	lea	rsi, nset.10[rip]
	mov	edi, 0
	call	sigprocmask@PLT
	mov	DWORD PTR intr_flag[rip], 0
	mov	edx, 152
	mov	esi, 0
	lea	rdi, nsa.9[rip]
	call	memset@PLT
	lea	rax, intr_handler[rip]
	mov	QWORD PTR nsa.9[rip], rax
	lea	rdx, osa.11[rip]
	lea	rsi, nsa.9[rip]
	mov	edi, 2
	call	sigaction@PLT
	mov	eax, DWORD PTR -4[rbp]
	lea	rsi, otio.13[rip]
	mov	edi, eax
	call	tcgetattr@PLT
	test	eax, eax
	jne	.L218
	mov	eax, DWORD PTR otio.13[rip+12]
	and	eax, 8
	test	eax, eax
	je	.L218
	mov	DWORD PTR disabled.14[rip], 1
	mov	rax, QWORD PTR otio.13[rip]
	mov	rdx, QWORD PTR otio.13[rip+8]
	mov	QWORD PTR ntio.8[rip], rax
	mov	QWORD PTR ntio.8[rip+8], rdx
	mov	rax, QWORD PTR otio.13[rip+16]
	mov	rdx, QWORD PTR otio.13[rip+24]
	mov	QWORD PTR ntio.8[rip+16], rax
	mov	QWORD PTR ntio.8[rip+24], rdx
	mov	rax, QWORD PTR otio.13[rip+32]
	mov	rdx, QWORD PTR otio.13[rip+40]
	mov	QWORD PTR ntio.8[rip+32], rax
	mov	QWORD PTR ntio.8[rip+40], rdx
	mov	rax, QWORD PTR otio.13[rip+48]
	mov	QWORD PTR ntio.8[rip+48], rax
	mov	eax, DWORD PTR otio.13[rip+56]
	mov	DWORD PTR ntio.8[rip+56], eax
	mov	eax, DWORD PTR ntio.8[rip+12]
	and	eax, -121
	mov	DWORD PTR ntio.8[rip+12], eax
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, ntio.8[rip]
	mov	esi, 0
	mov	edi, eax
	call	tcsetattr@PLT
.L216:
	nop
.L218:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE31:
	.size	tty_change_echo, .-tty_change_echo
	.section	.rodata
.LC86:
	.string	"/dev/tty"
.LC87:
	.string	"Unable to open %s\n"
.LC88:
	.string	"\n"
	.text
	.globl	tty_readpass
	.type	tty_readpass, @function
tty_readpass:
.LFB32:
	.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	QWORD PTR -40[rbp], rdx
	mov	DWORD PTR -8[rbp], 0
	mov	esi, 2
	lea	rdi, .LC86[rip]
	mov	eax, 0
	call	open@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], 0
	jns	.L220
	lea	rsi, .LC86[rip]
	lea	rdi, .LC87[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L221
.L220:
	cmp	QWORD PTR -40[rbp], 0
	jne	.L222
	mov	eax, -1
	jmp	.L221
.L222:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rcx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	BYTE PTR [rax], 0
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 0
	mov	edi, eax
	call	tty_change_echo
	mov	rax, QWORD PTR -40[rbp]
	lea	rdx, -1[rax]
	mov	rcx, QWORD PTR -32[rbp]
	mov	eax, DWORD PTR -4[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, 1
	mov	edi, eax
	call	tty_change_echo
	mov	eax, DWORD PTR -4[rbp]
	mov	edx, 1
	lea	rsi, .LC88[rip]
	mov	edi, eax
	call	write@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	close@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 10
	mov	rdi, rax
	call	strchr@PLT
	test	rax, rax
	jne	.L223
	mov	eax, -1
	jmp	.L221
.L223:
	cmp	DWORD PTR -8[rbp], 0
	jle	.L224
	mov	eax, DWORD PTR -8[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
.L224:
	mov	eax, DWORD PTR -8[rbp]
.L221:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE32:
	.size	tty_readpass, .-tty_readpass
	.section	.rodata
.LC89:
	.string	"SOCKS4_USER"
.LC90:
	.string	"SOCKS_USER"
	.text
	.globl	determine_relay_user
	.type	determine_relay_user, @function
determine_relay_user:
.LFB33:
	.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	QWORD PTR -8[rbp], 0
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L226
	cmp	QWORD PTR -8[rbp], 0
	jne	.L227
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 5
	jne	.L227
	lea	rdi, .LC49[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L227:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L228
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 4
	jne	.L228
	lea	rdi, .LC89[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L228:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L229
	lea	rdi, .LC90[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
	jmp	.L229
.L226:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 3
	jne	.L229
	cmp	QWORD PTR -8[rbp], 0
	jne	.L229
	lea	rdi, .LC53[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L229:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L230
	lea	rdi, .LC55[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L230:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L231
	call	getusername
	mov	QWORD PTR -8[rbp], rax
.L231:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE33:
	.size	determine_relay_user, .-determine_relay_user
	.globl	determine_relay_password
	.type	determine_relay_password, @function
determine_relay_password:
.LFB34:
	.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	QWORD PTR -8[rbp], 0
	cmp	QWORD PTR -8[rbp], 0
	jne	.L234
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 3
	jne	.L234
	lea	rdi, .LC54[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L234:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L235
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L235
	lea	rdi, .LC50[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L235:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L236
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L236
	lea	rdi, .LC51[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L236:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L237
	lea	rdi, .LC56[rip]
	call	getparam
	mov	QWORD PTR -8[rbp], rax
.L237:
	mov	rax, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE34:
	.size	determine_relay_password, .-determine_relay_password
	.section	.rodata
	.align 8
.LC91:
	.string	"No direct address are specified.\n"
.LC92:
	.string	"%d direct address entries.\n"
	.align 8
.LC93:
	.string	"Failed to determine SOCKS server.\n"
.LC94:
	.string	"Invalid resolve method: %s\n"
	.align 8
.LC95:
	.string	"You must specify http proxy server\n"
.LC96:
	.string	"TELNET_PROXY"
	.align 8
.LC97:
	.string	"You must specify telnet proxy server\n"
.LC98:
	.string	"http://"
.LC99:
	.string	"/"
	.text
	.globl	set_relay
	.type	set_relay, @function
set_relay:
.LFB35:
	.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	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	mov	eax, DWORD PTR -36[rbp]
	mov	DWORD PTR relay_method[rip], eax
	call	read_parameter_file
	call	initialize_direct_addr
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	test	eax, eax
	jne	.L240
	lea	rdi, .LC91[rip]
	mov	eax, 0
	call	debug
	jmp	.L241
.L240:
	mov	eax, DWORD PTR n_direct_addr_list[rip]
	mov	esi, eax
	lea	rdi, .LC92[rip]
	mov	eax, 0
	call	debug
.L241:
	cmp	DWORD PTR -36[rbp], 4
	je	.L242
	cmp	DWORD PTR -36[rbp], 4
	jg	.L243
	cmp	DWORD PTR -36[rbp], 3
	je	.L244
	cmp	DWORD PTR -36[rbp], 3
	jg	.L243
	cmp	DWORD PTR -36[rbp], 1
	je	.L245
	cmp	DWORD PTR -36[rbp], 2
	je	.L246
	jmp	.L243
.L245:
	mov	eax, -1
	jmp	.L247
.L246:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L269
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 4
	je	.L249
	cmp	eax, 5
	jne	.L248
	lea	rdi, .LC44[rip]
	call	getparam
	mov	QWORD PTR -48[rbp], rax
	jmp	.L248
.L249:
	lea	rdi, .LC45[rip]
	call	getparam
	mov	QWORD PTR -48[rbp], rax
	jmp	.L248
.L269:
	nop
.L248:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L250
	lea	rdi, .LC43[rip]
	call	getparam
	mov	QWORD PTR -48[rbp], rax
.L250:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L251
	lea	rdi, .LC93[rip]
	mov	eax, 0
	call	fatal
.L251:
	mov	WORD PTR relay_port[rip], 1080
	mov	eax, DWORD PTR socks_resolve[rip]
	test	eax, eax
	jne	.L270
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 5
	jne	.L253
	lea	rdi, .LC47[rip]
	call	getparam
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L254
.L253:
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 4
	jne	.L255
	lea	rdi, .LC48[rip]
	call	getparam
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jne	.L254
.L255:
	lea	rdi, .LC46[rip]
	call	getparam
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	je	.L256
.L254:
	mov	rax, QWORD PTR -16[rbp]
	mov	rdi, rax
	call	lookup_resolve
	mov	DWORD PTR socks_resolve[rip], eax
	mov	eax, DWORD PTR socks_resolve[rip]
	test	eax, eax
	jne	.L252
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rax
	lea	rdi, .LC94[rip]
	mov	eax, 0
	call	fatal
	jmp	.L252
.L256:
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 5
	jne	.L258
	mov	DWORD PTR socks_resolve[rip], 2
	jmp	.L270
.L258:
	mov	DWORD PTR socks_resolve[rip], 1
	jmp	.L270
.L252:
	jmp	.L270
.L244:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L259
	lea	rdi, .LC52[rip]
	call	getparam
	mov	QWORD PTR -48[rbp], rax
.L259:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L260
	lea	rdi, .LC95[rip]
	mov	eax, 0
	call	fatal
.L260:
	mov	WORD PTR relay_port[rip], 80
	jmp	.L243
.L242:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L261
	lea	rdi, .LC96[rip]
	call	getparam
	mov	QWORD PTR -48[rbp], rax
.L261:
	cmp	QWORD PTR -48[rbp], 0
	jne	.L262
	lea	rdi, .LC97[rip]
	mov	eax, 0
	call	fatal
.L262:
	mov	WORD PTR relay_port[rip], 23
	jmp	.L243
.L270:
	nop
.L243:
	mov	rax, QWORD PTR -48[rbp]
	lea	rsi, .LC98[rip]
	mov	rdi, rax
	call	expect
	test	eax, eax
	je	.L263
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 7
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -24[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	lea	rsi, .LC99[rip]
	mov	rdi, rax
	call	strcspn@PLT
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	jmp	.L264
.L263:
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -24[rbp], rax
.L264:
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -48[rbp], rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 64
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	je	.L265
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR relay_user[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	QWORD PTR -48[rbp], rax
.L265:
	mov	rax, QWORD PTR relay_user[rip]
	test	rax, rax
	jne	.L266
	mov	eax, 0
	call	determine_relay_user
	mov	QWORD PTR relay_user[rip], rax
.L266:
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 58
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L267
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR relay_host[rip], rax
	jmp	.L268
.L267:
	mov	rax, QWORD PTR -8[rbp]
	add	rax, 1
	mov	rdi, rax
	call	atoi@PLT
	mov	WORD PTR relay_port[rip], ax
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR relay_host[rip], rax
.L268:
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, 0
.L247:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE35:
	.size	set_relay, .-set_relay
	.section	.rodata
.LC100:
	.string	"Unknown service, '%s'\n"
.LC101:
	.string	"service: %s => %d\n"
	.text
	.globl	resolve_port
	.type	resolve_port, @function
resolve_port:
.LFB36:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	rdx, QWORD PTR digits[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strspn@PLT
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L272
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR -12[rbp], eax
	jmp	.L273
.L272:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	getservbyname@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L274
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC100[rip]
	mov	eax, 0
	call	debug
	mov	DWORD PTR -12[rbp], 0
	jmp	.L273
.L274:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	movzx	eax, ax
	mov	edi, eax
	call	ntohs@PLT
	movzx	eax, ax
	mov	DWORD PTR -12[rbp], eax
	mov	edx, DWORD PTR -12[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC101[rip]
	mov	eax, 0
	call	debug
.L273:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE36:
	.size	resolve_port, .-resolve_port
	.section	.rodata
.LC102:
	.string	": "
.LC103:
	.string	"unknown"
.LC104:
	.string	"%d.%d"
	.text
	.globl	make_revstr
	.type	make_revstr, @function
make_revstr:
.LFB37:
	.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	rax, QWORD PTR rcs_revstr[rip]
	lea	rsi, .LC102[rip]
	mov	rdi, rax
	call	strstr@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jne	.L277
	lea	rdi, .LC103[rip]
	call	strdup@PLT
	mov	QWORD PTR revstr[rip], rax
	jmp	.L276
.L277:
	add	QWORD PTR -8[rbp], 2
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR minor_version[rip], eax
	mov	edi, 20
	call	xmalloc
	mov	QWORD PTR revstr[rip], rax
	mov	ecx, DWORD PTR minor_version[rip]
	mov	edx, DWORD PTR major_version[rip]
	mov	rax, QWORD PTR revstr[rip]
	mov	r8d, ecx
	mov	ecx, edx
	lea	rdx, .LC104[rip]
	mov	esi, 20
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
.L276:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE37:
	.size	make_revstr, .-make_revstr
	.section	.rodata
.LC105:
	.string	"option '-%c' needs argument.\n"
.LC106:
	.string	"option '%c' needs argument.\n"
.LC107:
	.string	"%s\nVersion %s\n"
.LC108:
	.string	"unknown option '-%c'\n"
.LC109:
	.string	"connect-"
.LC110:
	.string	"."
	.align 8
.LC111:
	.string	"You must specify the destination port correctly.\n"
.LC112:
	.string	"Invalid relay port: %d\n"
.LC113:
	.string	"relay_method = %s (%d)\n"
.LC114:
	.string	"relay_host=%s\n"
.LC115:
	.string	"relay_port=%d\n"
.LC116:
	.string	"relay_user=%s\n"
.LC117:
	.string	"socks_version=%d\n"
.LC118:
	.string	"socks_resolve=%s (%d)\n"
.LC119:
	.string	"local_type=%s\n"
.LC120:
	.string	"local_port=%d\n"
	.align 8
.LC121:
	.string	"  with holding remote session.\n"
.LC122:
	.string	"dest_host=%s\n"
.LC123:
	.string	"dest_port=%d\n"
	.text
	.globl	getarg
	.type	getarg, @function
getarg:
.LFB38:
	.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	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	mov	DWORD PTR -32[rbp], 0
	mov	QWORD PTR -16[rbp], 0
	mov	DWORD PTR -28[rbp], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR progname[rip], rax
	sub	DWORD PTR -36[rbp], 1
	add	QWORD PTR -48[rbp], 8
	jmp	.L280
.L320:
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	add	rax, 1
	mov	QWORD PTR -24[rbp], rax
	jmp	.L281
.L318:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	sub	eax, 52
	cmp	eax, 67
	ja	.L282
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L284[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L284[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L284:
	.long	.L300-.L284
	.long	.L299-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L298-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L297-.L284
	.long	.L282-.L284
	.long	.L296-.L284
	.long	.L295-.L284
	.long	.L294-.L284
	.long	.L282-.L284
	.long	.L293-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L292-.L284
	.long	.L282-.L284
	.long	.L291-.L284
	.long	.L290-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L289-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L288-.L284
	.long	.L282-.L284
	.long	.L287-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L286-.L284
	.long	.L285-.L284
	.long	.L282-.L284
	.long	.L282-.L284
	.long	.L283-.L284
	.text
.L286:
	mov	DWORD PTR -28[rbp], 2
	jmp	.L301
.L288:
	mov	DWORD PTR -28[rbp], 1
	jmp	.L301
.L289:
	mov	DWORD PTR -28[rbp], 3
	jmp	.L301
.L285:
	mov	DWORD PTR -28[rbp], 4
	jmp	.L301
.L295:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L302
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	DWORD PTR -28[rbp], 2
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L301
.L302:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L298:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L304
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	DWORD PTR -28[rbp], 3
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L301
.L304:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L294:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L306
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	DWORD PTR -28[rbp], 4
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -16[rbp], rax
	jmp	.L301
.L306:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L291:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L308
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR telnet_command[rip], rax
	jmp	.L301
.L308:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC106[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L297:
	mov	DWORD PTR f_hold_session[rip], 1
.L287:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L310
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	DWORD PTR local_type[rip], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	resolve_port
	mov	WORD PTR local_port[rip], ax
	jmp	.L301
.L310:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L283:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L312
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR connect_timeout[rip], eax
	jmp	.L301
.L312:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L300:
	mov	DWORD PTR socks_version[rip], 4
	jmp	.L301
.L299:
	mov	DWORD PTR socks_version[rip], 5
	jmp	.L301
.L292:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L314
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR socks5_auth[rip], rax
	jmp	.L301
.L314:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L296:
	cmp	DWORD PTR -36[rbp], 1
	jle	.L316
	add	QWORD PTR -48[rbp], 8
	sub	DWORD PTR -36[rbp], 1
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	lookup_resolve
	mov	DWORD PTR socks_resolve[rip], eax
	jmp	.L301
.L316:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC105[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L301
.L293:
	mov	rcx, QWORD PTR revstr[rip]
	mov	rdx, QWORD PTR progdesc[rip]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC107[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 0
	call	exit@PLT
.L290:
	mov	eax, DWORD PTR f_debug[rip]
	add	eax, 1
	mov	DWORD PTR f_debug[rip], eax
	jmp	.L301
.L282:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC108[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
.L301:
	add	QWORD PTR -24[rbp], 1
.L281:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L318
	sub	DWORD PTR -36[rbp], 1
	add	QWORD PTR -48[rbp], 8
.L280:
	cmp	DWORD PTR -36[rbp], 0
	jle	.L319
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 45
	je	.L320
.L319:
	cmp	DWORD PTR -32[rbp], 0
	jg	.L335
	mov	rdx, QWORD PTR -16[rbp]
	mov	eax, DWORD PTR -28[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	set_relay
	cmp	DWORD PTR -36[rbp], 0
	jne	.L323
	mov	rcx, QWORD PTR revstr[rip]
	mov	rdx, QWORD PTR progdesc[rip]
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC107[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rdx, QWORD PTR progname[rip]
	mov	rcx, QWORD PTR usage[rip]
	mov	rax, QWORD PTR stderr[rip]
	mov	rsi, rcx
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 0
	call	exit@PLT
.L323:
	mov	rax, QWORD PTR -48[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR dest_host[rip], rax
	mov	rax, QWORD PTR progname[rip]
	mov	esi, 47
	mov	rdi, rax
	call	strrchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L324
	mov	rax, QWORD PTR progname[rip]
	mov	esi, 92
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L325
.L324:
	add	QWORD PTR -24[rbp], 1
	jmp	.L326
.L325:
	mov	rax, QWORD PTR progname[rip]
	mov	QWORD PTR -24[rbp], rax
.L326:
	movzx	eax, WORD PTR dest_port[rip]
	test	ax, ax
	jne	.L327
	cmp	DWORD PTR -36[rbp], 1
	jle	.L328
	mov	rax, QWORD PTR -48[rbp]
	add	rax, 8
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	resolve_port
	mov	WORD PTR dest_port[rip], ax
	jmp	.L327
.L328:
	mov	rax, QWORD PTR -24[rbp]
	mov	edx, 8
	lea	rsi, .LC109[rip]
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L327
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mov	rdi, rax
	call	strdup@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	lea	rsi, .LC110[rip]
	mov	rdi, rax
	call	strcspn@PLT
	mov	rdx, QWORD PTR -8[rbp]
	add	rax, rdx
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	resolve_port
	mov	WORD PTR dest_port[rip], ax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
.L327:
	movzx	eax, WORD PTR dest_port[rip]
	test	ax, ax
	jne	.L329
	lea	rdi, .LC111[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L322
.L329:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 1
	je	.L336
	movzx	eax, WORD PTR relay_port[rip]
	test	ax, ax
	jne	.L336
	movzx	eax, WORD PTR dest_port[rip]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC112[rip]
	mov	eax, 0
	call	error
	add	DWORD PTR -32[rbp], 1
	jmp	.L322
.L335:
	nop
	jmp	.L322
.L336:
	nop
.L322:
	mov	edx, DWORD PTR relay_method[rip]
	mov	eax, DWORD PTR relay_method[rip]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, method_names[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rax
	lea	rdi, .LC113[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 1
	je	.L330
	mov	rax, QWORD PTR relay_host[rip]
	mov	rsi, rax
	lea	rdi, .LC114[rip]
	mov	eax, 0
	call	debug
	movzx	eax, WORD PTR relay_port[rip]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC115[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR relay_user[rip]
	mov	rsi, rax
	lea	rdi, .LC116[rip]
	mov	eax, 0
	call	debug
.L330:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L331
	mov	eax, DWORD PTR socks_version[rip]
	mov	esi, eax
	lea	rdi, .LC117[rip]
	mov	eax, 0
	call	debug
	mov	edx, DWORD PTR socks_resolve[rip]
	mov	eax, DWORD PTR socks_resolve[rip]
	cdqe
	lea	rcx, 0[0+rax*8]
	lea	rax, resolve_names[rip]
	mov	rax, QWORD PTR [rcx+rax]
	mov	rsi, rax
	lea	rdi, .LC118[rip]
	mov	eax, 0
	call	debug
.L331:
	mov	eax, DWORD PTR local_type[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	lea	rax, local_type_names[rip]
	mov	rax, QWORD PTR [rdx+rax]
	mov	rsi, rax
	lea	rdi, .LC119[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L332
	movzx	eax, WORD PTR local_port[rip]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC120[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR f_hold_session[rip]
	test	eax, eax
	je	.L332
	lea	rdi, .LC121[rip]
	mov	eax, 0
	call	debug
.L332:
	mov	rax, QWORD PTR dest_host[rip]
	mov	rsi, rax
	lea	rdi, .LC122[rip]
	mov	eax, 0
	call	debug
	movzx	eax, WORD PTR dest_port[rip]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC123[rip]
	mov	eax, 0
	call	debug
	cmp	DWORD PTR -32[rbp], 0
	jle	.L333
	mov	rdx, QWORD PTR progname[rip]
	mov	rcx, QWORD PTR usage[rip]
	mov	rax, QWORD PTR stderr[rip]
	mov	rsi, rcx
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	edi, 1
	call	exit@PLT
.L333:
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	getarg, .-getarg
	.section	.rodata
.LC124:
	.string	"timed out\n"
	.text
	.globl	sig_timeout
	.type	sig_timeout, @function
sig_timeout:
.LFB39:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	esi, 1
	mov	edi, 14
	call	signal@PLT
	mov	edi, 0
	call	alarm@PLT
	lea	rdi, .LC124[rip]
	mov	eax, 0
	call	error
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE39:
	.size	sig_timeout, .-sig_timeout
	.section	.rodata
.LC125:
	.string	"clearing timeout\n"
.LC126:
	.string	"setting timeout: %d seconds\n"
	.text
	.globl	set_timeout
	.type	set_timeout, @function
set_timeout:
.LFB40:
	.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
	cmp	DWORD PTR -4[rbp], 0
	jne	.L339
	lea	rdi, .LC125[rip]
	mov	eax, 0
	call	debug
	mov	esi, 1
	mov	edi, 14
	call	signal@PLT
	mov	edi, 0
	call	alarm@PLT
	jmp	.L341
.L339:
	mov	eax, DWORD PTR -4[rbp]
	mov	esi, eax
	lea	rdi, .LC126[rip]
	mov	eax, 0
	call	debug
	lea	rsi, sig_timeout[rip]
	mov	edi, 14
	call	signal@PLT
	mov	eax, DWORD PTR -4[rbp]
	mov	edi, eax
	call	alarm@PLT
.L341:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	set_timeout, .-set_timeout
	.section	.rodata
.LC127:
	.string	"Using nameserver at %s\n"
	.text
	.globl	switch_ns
	.type	switch_ns, @function
switch_ns:
.LFB41:
	.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	QWORD PTR -8[rbp], rdi
	call	__res_init@PLT
	call	__res_state@PLT
	lea	rcx, 20[rax]
	mov	rax, QWORD PTR -8[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR [rcx], rax
	mov	QWORD PTR 8[rcx], rdx
	call	__res_state@PLT
	mov	DWORD PTR 16[rax], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rsi, rax
	lea	rdi, .LC127[rip]
	mov	eax, 0
	call	debug
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	switch_ns, .-switch_ns
	.section	.rodata
.LC128:
	.string	"resolving host by name: %s\n"
.LC129:
	.string	"resolved: %s (%s)\n"
.LC130:
	.string	"failed to resolve locally.\n"
	.text
	.globl	local_resolve
	.type	local_resolve, @function
local_resolve:
.LFB42:
	.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, 40
	.cfi_offset 3, -24
	mov	QWORD PTR -40[rbp], rdi
	mov	QWORD PTR -48[rbp], rsi
	mov	rdx, QWORD PTR dotdigits[rip]
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strspn@PLT
	mov	rbx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jne	.L344
	mov	rax, QWORD PTR -48[rbp]
	mov	WORD PTR [rax], 2
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	inet_addr@PLT
	mov	rdx, QWORD PTR -48[rbp]
	mov	DWORD PTR 4[rdx], eax
	jmp	.L345
.L344:
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC128[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	gethostbyname@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	je	.L346
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 20[rax]
	movsx	rdx, eax
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rax, QWORD PTR [rax]
	mov	rcx, QWORD PTR -48[rbp]
	add	rcx, 4
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -48[rbp]
	mov	WORD PTR [rax], dx
	mov	rax, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -40[rbp]
	mov	rsi, rax
	lea	rdi, .LC129[rip]
	mov	eax, 0
	call	debug
	jmp	.L345
.L346:
	lea	rdi, .LC130[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L347
.L345:
	mov	eax, 0
.L347:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	local_resolve, .-local_resolve
	.section	.rodata
.LC131:
	.string	"can't resolve hostname: %s\n"
.LC132:
	.string	"connecting to %s:%u\n"
.LC133:
	.string	"connect() failed.\n"
	.text
	.globl	open_connection
	.type	open_connection, @function
open_connection:
.LFB43:
	.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, 72
	.cfi_offset 3, -24
	mov	QWORD PTR -72[rbp], rdi
	mov	eax, esi
	mov	WORD PTR -76[rbp], ax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	lea	rdx, -48[rbp]
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	local_resolve
	test	eax, eax
	jns	.L349
	mov	rax, QWORD PTR -72[rbp]
	mov	rsi, rax
	lea	rdi, .LC131[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L352
.L349:
	movzx	eax, WORD PTR -76[rbp]
	mov	edi, eax
	call	htons@PLT
	mov	WORD PTR -46[rbp], ax
	movzx	ebx, WORD PTR -76[rbp]
	mov	eax, DWORD PTR -44[rbp]
	mov	edi, eax
	call	inet_ntoa@PLT
	mov	edx, ebx
	mov	rsi, rax
	lea	rdi, .LC132[rip]
	mov	eax, 0
	call	debug
	mov	edx, 0
	mov	esi, 1
	mov	edi, 2
	call	socket@PLT
	mov	DWORD PTR -52[rbp], eax
	lea	rcx, -48[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	edx, 16
	mov	rsi, rcx
	mov	edi, eax
	call	connect@PLT
	cmp	eax, -1
	jne	.L351
	lea	rdi, .LC133[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L352
.L351:
	mov	eax, DWORD PTR -52[rbp]
.L352:
	mov	rcx, QWORD PTR -24[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L353
	call	__stack_chk_fail@PLT
.L353:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE43:
	.size	open_connection, .-open_connection
	.section	.rodata
.LC134:
	.string	"%s \""
.LC135:
	.string	"\\x%02X"
.LC136:
	.string	"%s"
.LC137:
	.string	"\"\n"
	.text
	.globl	report_text
	.type	report_text, @function
report_text:
.LFB44:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	eax, DWORD PTR f_debug[rip]
	test	eax, eax
	je	.L370
	mov	eax, DWORD PTR f_report[rip]
	test	eax, eax
	je	.L371
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC134[rip]
	mov	eax, 0
	call	debug
	jmp	.L358
.L369:
	mov	edx, 1024
	mov	esi, 0
	lea	rdi, work.7[rip]
	call	memset@PLT
	lea	rax, work.7[rip]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L359
.L368:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	cmp	eax, 92
	je	.L360
	cmp	eax, 92
	jg	.L361
	cmp	eax, 13
	je	.L362
	cmp	eax, 13
	jg	.L361
	cmp	eax, 9
	je	.L363
	cmp	eax, 10
	je	.L364
	jmp	.L361
.L363:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 92
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 116
	jmp	.L365
.L362:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 92
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 114
	jmp	.L365
.L364:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 92
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 110
	jmp	.L365
.L360:
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 92
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	BYTE PTR [rax], 92
	jmp	.L365
.L361:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 16384
	test	eax, eax
	je	.L366
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	mov	rdx, QWORD PTR -32[rbp]
	movzx	edx, BYTE PTR [rdx]
	mov	BYTE PTR [rax], dl
	jmp	.L365
.L366:
	lea	rdx, work.7[rip]
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rdx
	mov	DWORD PTR -12[rbp], eax
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	mov	ecx, 1024
	sub	rcx, rax
	mov	rsi, rcx
	mov	rax, QWORD PTR -8[rbp]
	mov	ecx, edx
	lea	rdx, .LC135[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	QWORD PTR -8[rbp], rax
.L365:
	add	QWORD PTR -32[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
.L359:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L367
	lea	rdx, work.7[rip]
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, rdx
	cmp	rax, 1018
	jle	.L368
.L367:
	lea	rsi, work.7[rip]
	lea	rdi, .LC136[rip]
	mov	eax, 0
	call	debug_
.L358:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L369
	lea	rdi, .LC137[rip]
	mov	eax, 0
	call	debug_
	jmp	.L354
.L370:
	nop
	jmp	.L354
.L371:
	nop
.L354:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	report_text, .-report_text
	.section	.rodata
.LC138:
	.string	" %02x"
	.text
	.globl	report_bytes
	.type	report_bytes, @function
report_bytes:
.LFB45:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -8[rbp], rdi
	mov	QWORD PTR -16[rbp], rsi
	mov	DWORD PTR -20[rbp], edx
	mov	eax, DWORD PTR f_debug[rip]
	test	eax, eax
	je	.L377
	mov	rax, QWORD PTR -8[rbp]
	mov	rsi, rax
	lea	rdi, .LC136[rip]
	mov	eax, 0
	call	debug
	jmp	.L375
.L376:
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	edx, al
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC138[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	add	QWORD PTR -16[rbp], 1
	sub	DWORD PTR -20[rbp], 1
.L375:
	cmp	DWORD PTR -20[rbp], 0
	jg	.L376
	mov	rax, QWORD PTR stderr[rip]
	mov	rsi, rax
	mov	edi, 10
	call	fputc@PLT
	jmp	.L372
.L377:
	nop
.L372:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	report_bytes, .-report_bytes
	.section	.rodata
.LC139:
	.string	"buf != NULL"
.LC140:
	.string	"0<=size"
	.align 8
.LC141:
	.string	"atomic_out() failed to send(), %d\n"
.LC142:
	.string	"atomic_out()  [some bytes]\n"
.LC143:
	.string	">>> xx xx xx xx ...\n"
.LC144:
	.string	"atomic_out()  [%d bytes]\n"
.LC145:
	.string	">>>"
	.text
	.globl	atomic_out
	.type	atomic_out, @function
atomic_out:
.LFB46:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -24[rbp], edx
	cmp	QWORD PTR -32[rbp], 0
	jne	.L379
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 1855
	lea	rsi, .LC37[rip]
	lea	rdi, .LC139[rip]
	call	__assert_fail@PLT
.L379:
	cmp	DWORD PTR -24[rbp], 0
	jns	.L380
	lea	rcx, __PRETTY_FUNCTION__.6[rip]
	mov	edx, 1856
	lea	rsi, .LC37[rip]
	lea	rdi, .LC140[rip]
	call	__assert_fail@PLT
.L380:
	mov	DWORD PTR -8[rbp], 0
	jmp	.L381
.L383:
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -8[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	lea	rsi, [rcx+rax]
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	send@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L382
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC141[rip]
	mov	eax, 0
	call	fatal
.L382:
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -24[rbp], eax
.L381:
	cmp	DWORD PTR -24[rbp], 0
	jg	.L383
	mov	eax, DWORD PTR f_report[rip]
	test	eax, eax
	jne	.L384
	lea	rdi, .LC142[rip]
	mov	eax, 0
	call	debug
	lea	rdi, .LC143[rip]
	mov	eax, 0
	call	debug
	jmp	.L385
.L384:
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC144[rip]
	mov	eax, 0
	call	debug
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, .LC145[rip]
	call	report_bytes
.L385:
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	atomic_out, .-atomic_out
	.section	.rodata
	.align 8
.LC146:
	.string	"atomic_in() failed to recv(), %d\n"
.LC147:
	.string	"Connection closed by peer.\n"
.LC148:
	.string	"atomic_in()  [some bytes]\n"
.LC149:
	.string	"<<< xx xx xx xx ...\n"
.LC150:
	.string	"atomic_in() [%d bytes]\n"
.LC151:
	.string	"<<<"
	.text
	.globl	atomic_in
	.type	atomic_in, @function
atomic_in:
.LFB47:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -24[rbp], edx
	cmp	QWORD PTR -32[rbp], 0
	jne	.L388
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 1881
	lea	rsi, .LC37[rip]
	lea	rdi, .LC139[rip]
	call	__assert_fail@PLT
.L388:
	cmp	DWORD PTR -24[rbp], 0
	jns	.L389
	lea	rcx, __PRETTY_FUNCTION__.5[rip]
	mov	edx, 1882
	lea	rsi, .LC37[rip]
	lea	rdi, .LC140[rip]
	call	__assert_fail@PLT
.L389:
	mov	DWORD PTR -8[rbp], 0
	jmp	.L390
.L393:
	mov	eax, DWORD PTR -24[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -8[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -32[rbp]
	lea	rsi, [rcx+rax]
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	recv@PLT
	mov	DWORD PTR -4[rbp], eax
	cmp	DWORD PTR -4[rbp], -1
	jne	.L391
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC146[rip]
	mov	eax, 0
	call	fatal
	jmp	.L392
.L391:
	cmp	DWORD PTR -4[rbp], 0
	jne	.L392
	lea	rdi, .LC147[rip]
	mov	eax, 0
	call	fatal
.L392:
	mov	eax, DWORD PTR -4[rbp]
	add	DWORD PTR -8[rbp], eax
	mov	eax, DWORD PTR -4[rbp]
	sub	DWORD PTR -24[rbp], eax
.L390:
	cmp	DWORD PTR -24[rbp], 0
	jg	.L393
	mov	eax, DWORD PTR f_report[rip]
	test	eax, eax
	jne	.L394
	lea	rdi, .LC148[rip]
	mov	eax, 0
	call	debug
	lea	rdi, .LC149[rip]
	mov	eax, 0
	call	debug
	jmp	.L395
.L394:
	mov	eax, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC150[rip]
	mov	eax, 0
	call	debug
	mov	edx, DWORD PTR -8[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, .LC151[rip]
	call	report_bytes
.L395:
	mov	eax, DWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	atomic_in, .-atomic_in
	.section	.rodata
.LC152:
	.string	"recv() error\n"
	.text
	.globl	line_input
	.type	line_input, @function
line_input:
.LFB48:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	DWORD PTR -20[rbp], edi
	mov	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -24[rbp], edx
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR -8[rbp], rax
	cmp	DWORD PTR -24[rbp], 0
	jne	.L398
	mov	eax, 0
	jmp	.L399
.L398:
	sub	DWORD PTR -24[rbp], 1
	jmp	.L400
.L406:
	mov	rsi, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR -20[rbp]
	mov	ecx, 0
	mov	edx, 1
	mov	edi, eax
	call	recv@PLT
	cmp	rax, -1
	je	.L401
	test	rax, rax
	je	.L402
	jmp	.L407
.L401:
	lea	rdi, .LC152[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L399
.L402:
	mov	DWORD PTR -24[rbp], 0
	jmp	.L400
.L407:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 10
	jne	.L404
	mov	DWORD PTR -24[rbp], 0
	jmp	.L405
.L404:
	sub	DWORD PTR -24[rbp], 1
.L405:
	add	QWORD PTR -8[rbp], 1
.L400:
	cmp	DWORD PTR -24[rbp], 0
	jg	.L406
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	rax, QWORD PTR -32[rbp]
	mov	rsi, rax
	lea	rdi, .LC151[rip]
	call	report_text
	mov	eax, 0
.L399:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	line_input, .-line_input
	.globl	cut_token
	.type	cut_token, @function
cut_token:
.LFB49:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcspn@PLT
	mov	rdx, QWORD PTR -24[rbp]
	add	rax, rdx
	mov	QWORD PTR -16[rbp], rax
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -16[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strspn@PLT
	mov	rdx, QWORD PTR -16[rbp]
	add	rax, rdx
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jne	.L411
	mov	eax, 0
	jmp	.L410
.L412:
	mov	rax, QWORD PTR -16[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -16[rbp], rdx
	mov	BYTE PTR [rax], 0
.L411:
	mov	rax, QWORD PTR -16[rbp]
	cmp	rax, QWORD PTR -8[rbp]
	jb	.L412
	mov	rax, QWORD PTR -16[rbp]
.L410:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	cut_token, .-cut_token
	.section	.rodata
.LC153:
	.string	"(unknown)"
	.text
	.globl	lookup
	.type	lookup, @function
lookup:
.LFB50:
	.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	QWORD PTR -32[rbp], rsi
	mov	DWORD PTR -4[rbp], 0
	jmp	.L414
.L417:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	cmp	DWORD PTR -20[rbp], eax
	jne	.L415
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR 8[rax]
	jmp	.L416
.L415:
	add	DWORD PTR -4[rbp], 1
.L414:
	mov	eax, DWORD PTR -4[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	jns	.L417
	lea	rax, .LC153[rip]
.L416:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	lookup, .-lookup
	.section	.rodata
.LC154:
	.string	"DISPLAY"
.LC155:
	.string	"%s \"%s\""
.LC156:
	.string	"\r\n"
	.text
	.globl	readpass
	.type	readpass, @function
readpass:
.LFB51:
	.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, 264
	.cfi_offset 3, -24
	mov	QWORD PTR -264[rbp], rdi
	mov	QWORD PTR -184[rbp], rsi
	mov	QWORD PTR -176[rbp], rdx
	mov	QWORD PTR -168[rbp], rcx
	mov	QWORD PTR -160[rbp], r8
	mov	QWORD PTR -152[rbp], r9
	test	al, al
	je	.L419
	movaps	XMMWORD PTR -144[rbp], xmm0
	movaps	XMMWORD PTR -128[rbp], xmm1
	movaps	XMMWORD PTR -112[rbp], xmm2
	movaps	XMMWORD PTR -96[rbp], xmm3
	movaps	XMMWORD PTR -80[rbp], xmm4
	movaps	XMMWORD PTR -64[rbp], xmm5
	movaps	XMMWORD PTR -48[rbp], xmm6
	movaps	XMMWORD PTR -32[rbp], xmm7
.L419:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -200[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -224[rbp], 8
	mov	DWORD PTR -220[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -216[rbp], rax
	lea	rax, -192[rbp]
	mov	QWORD PTR -208[rbp], rax
	lea	rdx, -224[rbp]
	mov	rax, QWORD PTR -264[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	mov	esi, 1000
	lea	rdi, buf.4[rip]
	call	vsnprintf@PLT
	lea	rdi, .LC57[rip]
	call	getparam
	test	rax, rax
	je	.L420
	lea	rdi, .LC154[rip]
	call	getenv@PLT
	test	rax, rax
	je	.L420
	lea	rdi, .LC57[rip]
	call	getparam
	mov	QWORD PTR -248[rbp], rax
	mov	rax, QWORD PTR -248[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	ebx, eax
	lea	rdi, buf.4[rip]
	call	strlen@PLT
	add	eax, ebx
	add	eax, 4
	mov	DWORD PTR -252[rbp], eax
	mov	eax, DWORD PTR -252[rbp]
	cdqe
	mov	rdi, rax
	call	xmalloc
	mov	QWORD PTR -240[rbp], rax
	mov	eax, DWORD PTR -252[rbp]
	movsx	rsi, eax
	mov	rdx, QWORD PTR -248[rbp]
	mov	rax, QWORD PTR -240[rbp]
	lea	r8, buf.4[rip]
	mov	rcx, rdx
	lea	rdx, .LC155[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rax, QWORD PTR -240[rbp]
	lea	rsi, .LC64[rip]
	mov	rdi, rax
	call	popen@PLT
	mov	QWORD PTR -232[rbp], rax
	mov	rax, QWORD PTR -240[rbp]
	mov	rdi, rax
	call	free@PLT
	cmp	QWORD PTR -232[rbp], 0
	jne	.L421
	mov	eax, 0
	jmp	.L425
.L421:
	mov	BYTE PTR buf.4[rip], 0
	mov	rax, QWORD PTR -232[rbp]
	mov	rdx, rax
	mov	esi, 1000
	lea	rdi, buf.4[rip]
	call	fgets@PLT
	test	rax, rax
	jne	.L423
	mov	eax, 0
	jmp	.L425
.L423:
	mov	rax, QWORD PTR -232[rbp]
	mov	rdi, rax
	call	fclose@PLT
	jmp	.L424
.L420:
	mov	edx, 1000
	lea	rsi, buf.4[rip]
	lea	rdi, buf.4[rip]
	call	tty_readpass
.L424:
	lea	rsi, .LC156[rip]
	lea	rdi, buf.4[rip]
	call	strcspn@PLT
	lea	rdx, buf.4[rip]
	mov	BYTE PTR [rax+rdx], 0
	lea	rax, buf.4[rip]
.L425:
	mov	rbx, QWORD PTR -200[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L426
	call	__stack_chk_fail@PLT
.L426:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	readpass, .-readpass
	.section	.rodata
.LC157:
	.string	"cannot determine user name.\n"
	.align 8
.LC158:
	.string	"Enter SOCKS5 password for %s@%s: "
	.align 8
.LC159:
	.string	"Cannot get password for user: %s\n"
	.text
	.type	socks5_do_auth_userpass, @function
socks5_do_auth_userpass:
.LFB52:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1088
	mov	DWORD PTR -1076[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	QWORD PTR -1056[rbp], 0
	mov	rax, QWORD PTR relay_user[rip]
	test	rax, rax
	jne	.L428
	lea	rdi, .LC157[rip]
	mov	eax, 0
	call	fatal
.L428:
	mov	eax, 0
	call	determine_relay_password
	mov	QWORD PTR -1056[rbp], rax
	cmp	QWORD PTR -1056[rbp], 0
	jne	.L429
	mov	rdx, QWORD PTR relay_host[rip]
	mov	rax, QWORD PTR relay_user[rip]
	mov	rsi, rax
	lea	rdi, .LC158[rip]
	mov	eax, 0
	call	readpass
	mov	QWORD PTR -1056[rbp], rax
	cmp	QWORD PTR -1056[rbp], 0
	jne	.L429
	mov	rax, QWORD PTR relay_user[rip]
	mov	rsi, rax
	lea	rdi, .LC159[rip]
	mov	eax, 0
	call	fatal
.L429:
	lea	rax, -1040[rbp]
	mov	QWORD PTR -1048[rbp], rax
	mov	rax, QWORD PTR -1048[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -1048[rbp], rdx
	mov	BYTE PTR [rax], 1
	mov	rax, QWORD PTR relay_user[rip]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -1060[rbp], eax
	mov	rax, QWORD PTR -1048[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -1048[rbp], rdx
	mov	edx, DWORD PTR -1060[rbp]
	mov	BYTE PTR [rax], dl
	mov	rdx, QWORD PTR relay_user[rip]
	mov	rax, QWORD PTR -1048[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	eax, DWORD PTR -1060[rbp]
	cdqe
	add	QWORD PTR -1048[rbp], rax
	mov	rax, QWORD PTR -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -1060[rbp], eax
	mov	rax, QWORD PTR -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rcx, rax
	mov	rax, QWORD PTR -1048[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -1048[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	rdx, QWORD PTR -1056[rbp]
	mov	rax, QWORD PTR -1048[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	eax, DWORD PTR -1060[rbp]
	cdqe
	add	QWORD PTR -1048[rbp], rax
	mov	rax, QWORD PTR -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -1056[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	DWORD PTR f_report[rip], 0
	lea	rdx, -1040[rbp]
	mov	rax, QWORD PTR -1048[rbp]
	sub	rax, rdx
	mov	edx, eax
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_out
	mov	DWORD PTR f_report[rip], 1
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	edx, 2
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	movzx	eax, BYTE PTR -1039[rbp]
	test	al, al
	jne	.L430
	mov	eax, 0
	jmp	.L432
.L430:
	mov	eax, -1
.L432:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L433
	call	__stack_chk_fail@PLT
.L433:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE52:
	.size	socks5_do_auth_userpass, .-socks5_do_auth_userpass
	.section	.rodata
.LC160:
	.string	"REJECTED"
.LC161:
	.string	"NO-AUTH"
.LC162:
	.string	"GSSAPI"
.LC163:
	.string	"USERPASS"
.LC164:
	.string	"CHAP"
.LC165:
	.string	"EAP"
.LC166:
	.string	"MAF"
	.text
	.type	socks5_getauthname, @function
socks5_getauthname:
.LFB53:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR -4[rbp], edi
	cmp	DWORD PTR -4[rbp], 8
	jg	.L435
	cmp	DWORD PTR -4[rbp], 0
	js	.L436
	cmp	DWORD PTR -4[rbp], 8
	ja	.L436
	mov	eax, DWORD PTR -4[rbp]
	lea	rdx, 0[0+rax*4]
	lea	rax, .L438[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L438[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L438:
	.long	.L443-.L438
	.long	.L442-.L438
	.long	.L441-.L438
	.long	.L440-.L438
	.long	.L436-.L438
	.long	.L439-.L438
	.long	.L436-.L438
	.long	.L436-.L438
	.long	.L437-.L438
	.text
.L435:
	cmp	DWORD PTR -4[rbp], 255
	jne	.L436
	lea	rax, .LC160[rip]
	jmp	.L444
.L443:
	lea	rax, .LC161[rip]
	jmp	.L444
.L442:
	lea	rax, .LC162[rip]
	jmp	.L444
.L441:
	lea	rax, .LC163[rip]
	jmp	.L444
.L440:
	lea	rax, .LC164[rip]
	jmp	.L444
.L439:
	lea	rax, .LC165[rip]
	jmp	.L444
.L437:
	lea	rax, .LC166[rip]
	jmp	.L444
.L436:
	lea	rax, .LC153[rip]
.L444:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE53:
	.size	socks5_getauthname, .-socks5_getauthname
	.globl	socks5_auth_table
	.section	.rodata
.LC167:
	.string	"none"
.LC168:
	.string	"gssapi"
.LC169:
	.string	"userpass"
.LC170:
	.string	"chap"
	.section	.data.rel.local
	.align 32
	.type	socks5_auth_table, @object
	.size	socks5_auth_table, 80
socks5_auth_table:
	.quad	.LC167
	.byte	0
	.zero	7
	.quad	.LC168
	.byte	1
	.zero	7
	.quad	.LC169
	.byte	2
	.zero	7
	.quad	.LC170
	.byte	3
	.zero	7
	.quad	0
	.byte	-1
	.zero	7
	.section	.rodata
.LC171:
	.string	"Unknown auth method: %s\n"
	.text
	.globl	socks5_auth_parse_1
	.type	socks5_auth_parse_1, @function
socks5_auth_parse_1:
.LFB54:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 32
	mov	QWORD PTR -24[rbp], rdi
	mov	QWORD PTR -32[rbp], rsi
	jmp	.L446
.L449:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L447
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	jne	.L458
.L447:
	add	QWORD PTR -24[rbp], 1
.L446:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L449
	jmp	.L448
.L458:
	nop
.L448:
	sub	QWORD PTR -32[rbp], 1
	jmp	.L450
.L453:
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 32
	je	.L451
	mov	rax, QWORD PTR -32[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 9
	je	.L451
	add	QWORD PTR -32[rbp], 1
	jmp	.L452
.L451:
	sub	QWORD PTR -32[rbp], 1
.L450:
	mov	rax, QWORD PTR -32[rbp]
	cmp	rax, QWORD PTR -24[rbp]
	jnb	.L453
.L452:
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR -4[rbp], eax
	mov	DWORD PTR -8[rbp], 0
	jmp	.L454
.L457:
	mov	eax, DWORD PTR -4[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rcx, rax
	lea	rax, socks5_auth_table[rip]
	mov	rcx, QWORD PTR [rcx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	strncmp@PLT
	test	eax, eax
	jne	.L455
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, socks5_auth_table[rip+8]
	movzx	eax, BYTE PTR [rdx+rax]
	movzx	eax, al
	jmp	.L456
.L455:
	add	DWORD PTR -8[rbp], 1
.L454:
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	sal	rax, 4
	mov	rdx, rax
	lea	rax, socks5_auth_table[rip]
	mov	rax, QWORD PTR [rdx+rax]
	test	rax, rax
	jne	.L457
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rax
	lea	rdi, .LC171[rip]
	mov	eax, 0
	call	fatal
	mov	eax, -1
.L456:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE54:
	.size	socks5_auth_parse_1, .-socks5_auth_parse_1
	.section	.rodata
.LC172:
	.string	"Too much auth method.\n"
	.text
	.globl	socks5_auth_parse
	.type	socks5_auth_parse, @function
socks5_auth_parse:
.LFB55:
	.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	DWORD PTR -12[rbp], 0
	jmp	.L460
.L462:
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 44
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L461
	cmp	QWORD PTR -8[rbp], 0
	je	.L461
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	socks5_auth_parse_1
	mov	ecx, eax
	mov	eax, DWORD PTR -12[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -12[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	add	QWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	QWORD PTR -24[rbp], rax
.L460:
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jl	.L462
.L461:
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L463
	mov	eax, DWORD PTR -12[rbp]
	cmp	eax, DWORD PTR -36[rbp]
	jge	.L463
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L464
.L465:
	add	QWORD PTR -8[rbp], 1
.L464:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L465
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	socks5_auth_parse_1
	mov	ecx, eax
	mov	eax, DWORD PTR -12[rbp]
	lea	edx, 1[rax]
	mov	DWORD PTR -12[rbp], edx
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	jmp	.L466
.L463:
	lea	rdi, .LC172[rip]
	mov	eax, 0
	call	fatal
.L466:
	mov	eax, DWORD PTR -12[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE55:
	.size	socks5_auth_parse, .-socks5_auth_parse
	.section	.rodata
.LC173:
	.string	"begin_socks_relay()\n"
	.align 8
.LC174:
	.string	"available auth method[%d] = %s (0x%02x)\n"
.LC175:
	.string	"No auth method accepted.\n"
.LC176:
	.string	"auth method: %s\n"
	.align 8
.LC177:
	.string	"No acceptable authentication method\n"
	.align 8
.LC178:
	.string	"Unsupported authentication method: %s\n"
.LC179:
	.string	"Authentication failed.\n"
	.align 8
.LC180:
	.string	"Got error response from SOCKS server: %d (%s).\n"
	.text
	.globl	begin_socks5_relay
	.type	begin_socks5_relay, @function
begin_socks5_relay:
.LFB56:
	.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, 344
	.cfi_offset 3, -24
	mov	DWORD PTR -340[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	rax, QWORD PTR socks5_auth[rip]
	mov	QWORD PTR -312[rbp], rax
	mov	BYTE PTR -334[rbp], 0
	lea	rdi, .LC173[rip]
	mov	eax, 0
	call	debug
	lea	rax, -288[rbp]
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 5
	cmp	QWORD PTR -312[rbp], 0
	jne	.L469
	lea	rdi, .LC63[rip]
	call	getparam
	mov	QWORD PTR -312[rbp], rax
.L469:
	cmp	QWORD PTR -312[rbp], 0
	jne	.L470
	movzx	eax, BYTE PTR -334[rbp]
	lea	edx, 1[rax]
	mov	BYTE PTR -334[rbp], dl
	movzx	eax, al
	cdqe
	mov	BYTE PTR -298[rbp+rax], 0
	movzx	eax, BYTE PTR -334[rbp]
	lea	edx, 1[rax]
	mov	BYTE PTR -334[rbp], dl
	movzx	eax, al
	cdqe
	mov	BYTE PTR -298[rbp+rax], 2
	jmp	.L471
.L470:
	lea	rcx, -298[rbp]
	mov	rax, QWORD PTR -312[rbp]
	mov	edx, 10
	mov	rsi, rcx
	mov	rdi, rax
	call	socks5_auth_parse
	mov	BYTE PTR -334[rbp], al
.L471:
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	movzx	edx, BYTE PTR -334[rbp]
	mov	BYTE PTR [rax], dl
	mov	DWORD PTR -328[rbp], 0
	jmp	.L472
.L473:
	mov	eax, DWORD PTR -328[rbp]
	cdqe
	movzx	eax, BYTE PTR -298[rbp+rax]
	movzx	ebx, al
	mov	eax, DWORD PTR -328[rbp]
	cdqe
	movzx	eax, BYTE PTR -298[rbp+rax]
	movzx	eax, al
	mov	edi, eax
	call	socks5_getauthname
	mov	rdx, rax
	mov	eax, DWORD PTR -328[rbp]
	mov	ecx, ebx
	mov	esi, eax
	lea	rdi, .LC174[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	edx, DWORD PTR -328[rbp]
	movsx	rdx, edx
	movzx	edx, BYTE PTR -298[rbp+rdx]
	mov	BYTE PTR [rax], dl
	add	DWORD PTR -328[rbp], 1
.L472:
	movzx	eax, BYTE PTR -334[rbp]
	cmp	DWORD PTR -328[rbp], eax
	jl	.L473
	lea	rdx, -288[rbp]
	mov	rax, QWORD PTR -320[rbp]
	sub	rax, rdx
	mov	edx, eax
	lea	rcx, -288[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_out
	lea	rcx, -288[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	edx, 2
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	movzx	eax, BYTE PTR -288[rbp]
	cmp	al, 5
	jne	.L474
	movzx	eax, BYTE PTR -287[rbp]
	cmp	al, -1
	jne	.L475
.L474:
	lea	rdi, .LC175[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L490
.L475:
	movzx	eax, BYTE PTR -287[rbp]
	mov	BYTE PTR -333[rbp], al
	movzx	eax, BYTE PTR -333[rbp]
	mov	edi, eax
	call	socks5_getauthname
	mov	rsi, rax
	lea	rdi, .LC176[rip]
	mov	eax, 0
	call	debug
	movzx	eax, BYTE PTR -333[rbp]
	cmp	eax, 255
	je	.L477
	cmp	eax, 255
	jg	.L478
	test	eax, eax
	je	.L479
	cmp	eax, 2
	je	.L480
	jmp	.L478
.L477:
	lea	rdi, .LC177[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L490
.L479:
	mov	DWORD PTR -332[rbp], 0
	jmp	.L481
.L480:
	mov	eax, DWORD PTR -340[rbp]
	mov	edi, eax
	call	socks5_do_auth_userpass
	mov	DWORD PTR -332[rbp], eax
	jmp	.L481
.L478:
	movzx	eax, BYTE PTR -333[rbp]
	mov	edi, eax
	call	socks5_getauthname
	mov	rsi, rax
	lea	rdi, .LC178[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L490
.L481:
	cmp	DWORD PTR -332[rbp], 0
	je	.L482
	lea	rdi, .LC179[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L490
.L482:
	lea	rax, -288[rbp]
	mov	QWORD PTR -320[rbp], rax
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 5
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 1
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 0
	mov	eax, DWORD PTR dest_addr[rip+4]
	test	eax, eax
	jne	.L483
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 3
	mov	rax, QWORD PTR dest_host[rip]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -324[rbp], eax
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	edx, DWORD PTR -324[rbp]
	mov	BYTE PTR [rax], dl
	mov	eax, DWORD PTR -324[rbp]
	movsx	rdx, eax
	mov	rcx, QWORD PTR dest_host[rip]
	mov	rax, QWORD PTR -320[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	eax, DWORD PTR -324[rbp]
	cdqe
	add	QWORD PTR -320[rbp], rax
	jmp	.L484
.L483:
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	BYTE PTR [rax], 1
	mov	edx, DWORD PTR dest_addr[rip+4]
	mov	rax, QWORD PTR -320[rbp]
	mov	DWORD PTR [rax], edx
	add	QWORD PTR -320[rbp], 4
.L484:
	movzx	eax, WORD PTR dest_port[rip]
	shr	ax, 8
	mov	ecx, eax
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	ecx, WORD PTR dest_port[rip]
	mov	rax, QWORD PTR -320[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -320[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	lea	rdx, -288[rbp]
	mov	rax, QWORD PTR -320[rbp]
	sub	rax, rdx
	mov	edx, eax
	lea	rcx, -288[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_out
	lea	rcx, -288[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	edx, 4
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	movzx	eax, BYTE PTR -287[rbp]
	test	al, al
	je	.L485
	movzx	eax, BYTE PTR -287[rbp]
	movzx	eax, al
	lea	rsi, socks5_rep_names[rip]
	mov	edi, eax
	call	lookup
	mov	rdx, rax
	movzx	eax, BYTE PTR -287[rbp]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC180[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L490
.L485:
	lea	rax, -288[rbp]
	add	rax, 4
	mov	QWORD PTR -320[rbp], rax
	movzx	eax, BYTE PTR -285[rbp]
	movzx	eax, al
	cmp	eax, 4
	je	.L486
	cmp	eax, 4
	jg	.L487
	cmp	eax, 1
	je	.L488
	cmp	eax, 3
	je	.L489
	jmp	.L487
.L488:
	mov	rcx, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	edx, 6
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	jmp	.L487
.L489:
	mov	rcx, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	edx, 1
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	mov	rax, QWORD PTR -320[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	lea	edx, 2[rax]
	mov	rax, QWORD PTR -320[rbp]
	lea	rcx, 1[rax]
	mov	eax, DWORD PTR -340[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	jmp	.L487
.L486:
	mov	rcx, QWORD PTR -320[rbp]
	mov	eax, DWORD PTR -340[rbp]
	mov	edx, 18
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	nop
.L487:
	mov	eax, 0
.L490:
	mov	rbx, QWORD PTR -24[rbp]
	sub	rbx, QWORD PTR fs:40
	je	.L491
	call	__stack_chk_fail@PLT
.L491:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE56:
	.size	begin_socks5_relay, .-begin_socks5_relay
	.section	.rodata
.LC181:
	.string	"Cannot determine user name.\n"
	.align 8
.LC182:
	.string	"Got error response: %d: '%s'.\n"
	.text
	.globl	begin_socks4_relay
	.type	begin_socks4_relay, @function
begin_socks4_relay:
.LFB57:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 304
	mov	DWORD PTR -292[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC173[rip]
	mov	eax, 0
	call	debug
	lea	rax, -272[rbp]
	mov	QWORD PTR -280[rbp], rax
	mov	rax, QWORD PTR -280[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -280[rbp], rdx
	mov	BYTE PTR [rax], 4
	mov	rax, QWORD PTR -280[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -280[rbp], rdx
	mov	BYTE PTR [rax], 1
	movzx	eax, WORD PTR dest_port[rip]
	shr	ax, 8
	mov	ecx, eax
	mov	rax, QWORD PTR -280[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -280[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	movzx	ecx, WORD PTR dest_port[rip]
	mov	rax, QWORD PTR -280[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -280[rbp], rdx
	mov	edx, ecx
	mov	BYTE PTR [rax], dl
	mov	edx, DWORD PTR dest_addr[rip+4]
	mov	rax, QWORD PTR -280[rbp]
	mov	DWORD PTR [rax], edx
	add	QWORD PTR -280[rbp], 4
	mov	eax, DWORD PTR dest_addr[rip+4]
	test	eax, eax
	jne	.L493
	mov	rax, QWORD PTR -280[rbp]
	sub	rax, 1
	mov	BYTE PTR [rax], 1
.L493:
	mov	rax, QWORD PTR relay_user[rip]
	test	rax, rax
	jne	.L494
	lea	rdi, .LC181[rip]
	mov	eax, 0
	call	fatal
.L494:
	mov	rdx, QWORD PTR relay_user[rip]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	rax, QWORD PTR relay_user[rip]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, 1
	add	QWORD PTR -280[rbp], rax
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 4
	jne	.L495
	mov	eax, DWORD PTR dest_addr[rip+4]
	test	eax, eax
	jne	.L495
	mov	rdx, QWORD PTR dest_host[rip]
	mov	rax, QWORD PTR -280[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcpy@PLT
	mov	rax, QWORD PTR dest_host[rip]
	mov	rdi, rax
	call	strlen@PLT
	add	rax, 1
	add	QWORD PTR -280[rbp], rax
.L495:
	lea	rdx, -272[rbp]
	mov	rax, QWORD PTR -280[rbp]
	sub	rax, rdx
	mov	edx, eax
	lea	rcx, -272[rbp]
	mov	eax, DWORD PTR -292[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_out
	lea	rcx, -272[rbp]
	mov	eax, DWORD PTR -292[rbp]
	mov	edx, 8
	mov	rsi, rcx
	mov	edi, eax
	call	atomic_in
	movzx	eax, BYTE PTR -271[rbp]
	cmp	al, 90
	je	.L496
	movzx	eax, BYTE PTR -271[rbp]
	movzx	eax, al
	lea	rsi, socks4_rep_names[rip]
	mov	edi, eax
	call	lookup
	mov	rdx, rax
	movzx	eax, BYTE PTR -271[rbp]
	movzx	eax, al
	mov	esi, eax
	lea	rdi, .LC182[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L498
.L496:
	mov	eax, 0
.L498:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L499
	call	__stack_chk_fail@PLT
.L499:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE57:
	.size	begin_socks4_relay, .-begin_socks4_relay
	.section	.rodata
	.align 8
.LC183:
	.string	"failed to send http request. errno=%d\n"
	.text
	.globl	sendf
	.type	sendf, @function
sendf:
.LFB58:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 224
	mov	DWORD PTR -212[rbp], edi
	mov	QWORD PTR -224[rbp], rsi
	mov	QWORD PTR -160[rbp], rdx
	mov	QWORD PTR -152[rbp], rcx
	mov	QWORD PTR -144[rbp], r8
	mov	QWORD PTR -136[rbp], r9
	test	al, al
	je	.L501
	movaps	XMMWORD PTR -128[rbp], xmm0
	movaps	XMMWORD PTR -112[rbp], xmm1
	movaps	XMMWORD PTR -96[rbp], xmm2
	movaps	XMMWORD PTR -80[rbp], xmm3
	movaps	XMMWORD PTR -64[rbp], xmm4
	movaps	XMMWORD PTR -48[rbp], xmm5
	movaps	XMMWORD PTR -32[rbp], xmm6
	movaps	XMMWORD PTR -16[rbp], xmm7
.L501:
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -184[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -208[rbp], 16
	mov	DWORD PTR -204[rbp], 48
	lea	rax, 16[rbp]
	mov	QWORD PTR -200[rbp], rax
	lea	rax, -176[rbp]
	mov	QWORD PTR -192[rbp], rax
	lea	rdx, -208[rbp]
	mov	rax, QWORD PTR -224[rbp]
	mov	rcx, rdx
	mov	rdx, rax
	mov	esi, 10240
	lea	rdi, buf.3[rip]
	call	vsnprintf@PLT
	lea	rsi, buf.3[rip]
	lea	rdi, .LC145[rip]
	call	report_text
	lea	rdi, buf.3[rip]
	call	strlen@PLT
	mov	rdx, rax
	mov	eax, DWORD PTR -212[rbp]
	mov	ecx, 0
	lea	rsi, buf.3[rip]
	mov	edi, eax
	call	send@PLT
	cmp	rax, -1
	jne	.L502
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC183[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L504
.L502:
	mov	eax, 0
.L504:
	mov	rcx, QWORD PTR -184[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L505
	call	__stack_chk_fail@PLT
.L505:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE58:
	.size	sendf, .-sendf
	.globl	base64_table
	.section	.rodata
	.align 8
.LC184:
	.string	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
	.section	.data.rel.local
	.align 8
	.type	base64_table, @object
	.size	base64_table, 8
base64_table:
	.quad	.LC184
	.text
	.globl	make_base64_string
	.type	make_base64_string, @function
make_base64_string:
.LFB59:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 48
	mov	QWORD PTR -40[rbp], rdi
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	DWORD PTR -20[rbp], eax
	mov	eax, DWORD PTR -20[rbp]
	add	eax, 2
	movsx	rdx, eax
	imul	rdx, rdx, 1431655766
	shr	rdx, 32
	sar	eax, 31
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	sal	eax, 2
	mov	DWORD PTR -24[rbp], eax
	mov	eax, DWORD PTR -24[rbp]
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	xmalloc
	mov	QWORD PTR buf.2[rip], rax
	mov	DWORD PTR -28[rbp], 0
	mov	eax, DWORD PTR -28[rbp]
	mov	DWORD PTR -32[rbp], eax
	mov	rax, QWORD PTR -40[rbp]
	mov	QWORD PTR -16[rbp], rax
	mov	rax, QWORD PTR buf.2[rip]
	mov	QWORD PTR -8[rbp], rax
	jmp	.L507
.L509:
	cmp	DWORD PTR -32[rbp], 5
	jg	.L508
	mov	eax, DWORD PTR -28[rbp]
	sal	eax, 8
	mov	edx, eax
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	movzx	eax, al
	or	eax, edx
	mov	DWORD PTR -28[rbp], eax
	add	DWORD PTR -32[rbp], 8
	mov	rax, QWORD PTR -16[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L508
	add	QWORD PTR -16[rbp], 1
.L508:
	mov	rsi, QWORD PTR base64_table[rip]
	mov	eax, DWORD PTR -32[rbp]
	sub	eax, 6
	mov	edx, DWORD PTR -28[rbp]
	mov	ecx, eax
	sar	edx, cl
	mov	eax, edx
	cdqe
	and	eax, 63
	lea	rcx, [rsi+rax]
	mov	rax, QWORD PTR -8[rbp]
	lea	rdx, 1[rax]
	mov	QWORD PTR -8[rbp], rdx
	movzx	edx, BYTE PTR [rcx]
	mov	BYTE PTR [rax], dl
	sub	DWORD PTR -32[rbp], 6
.L507:
	mov	eax, DWORD PTR -24[rbp]
	lea	edx, -1[rax]
	mov	DWORD PTR -24[rbp], edx
	test	eax, eax
	jne	.L509
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 0
	mov	edx, DWORD PTR -20[rbp]
	movsx	rax, edx
	imul	rax, rax, 1431655766
	shr	rax, 32
	mov	ecx, edx
	sar	ecx, 31
	sub	eax, ecx
	mov	ecx, eax
	add	ecx, ecx
	add	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	cmp	eax, 1
	je	.L510
	cmp	eax, 2
	je	.L511
	jmp	.L512
.L510:
	sub	QWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 61
.L511:
	sub	QWORD PTR -8[rbp], 1
	mov	rax, QWORD PTR -8[rbp]
	mov	BYTE PTR [rax], 61
.L512:
	mov	rax, QWORD PTR buf.2[rip]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE59:
	.size	make_base64_string, .-make_base64_string
	.section	.rodata
	.align 8
.LC185:
	.string	"Cannot decide username for proxy authentication."
	.align 8
.LC186:
	.string	"Enter proxy authentication password for %s@%s: "
	.align 8
.LC187:
	.string	"Cannot decide password for proxy authentication."
.LC188:
	.string	"%s:%s"
	.align 8
.LC189:
	.string	"Proxy-Authorization: Basic %s\r\n"
	.align 8
.LC190:
	.string	"Proxy-Authorization: Basic xxxxx\r\n"
	.text
	.globl	basic_auth
	.type	basic_auth, @function
basic_auth:
.LFB60:
	.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, 72
	.cfi_offset 3, -24
	mov	DWORD PTR -68[rbp], edi
	mov	rax, QWORD PTR relay_user[rip]
	mov	QWORD PTR -40[rbp], rax
	mov	QWORD PTR -48[rbp], 0
	cmp	QWORD PTR -40[rbp], 0
	jne	.L515
	lea	rdi, .LC185[rip]
	mov	eax, 0
	call	fatal
.L515:
	mov	eax, 0
	call	determine_relay_password
	mov	QWORD PTR -48[rbp], rax
	cmp	QWORD PTR -48[rbp], 0
	jne	.L516
	mov	rdx, QWORD PTR relay_host[rip]
	mov	rax, QWORD PTR relay_user[rip]
	mov	rsi, rax
	lea	rdi, .LC186[rip]
	mov	eax, 0
	call	readpass
	mov	QWORD PTR -48[rbp], rax
	cmp	QWORD PTR -48[rbp], 0
	jne	.L516
	lea	rdi, .LC187[rip]
	mov	eax, 0
	call	fatal
.L516:
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	ebx, eax
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	eax, ebx
	add	eax, 1
	mov	DWORD PTR -56[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	cdqe
	mov	rdi, rax
	call	xmalloc
	mov	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	movsx	rsi, eax
	mov	rcx, QWORD PTR -48[rbp]
	mov	rdx, QWORD PTR -40[rbp]
	mov	rax, QWORD PTR -32[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	lea	rdx, .LC188[rip]
	mov	rdi, rax
	mov	eax, 0
	call	snprintf@PLT
	mov	rax, QWORD PTR -48[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -48[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -32[rbp]
	mov	rdi, rax
	call	make_base64_string
	mov	QWORD PTR -24[rbp], rax
	mov	eax, DWORD PTR -56[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	DWORD PTR f_report[rip], 0
	mov	rdx, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR -68[rbp]
	lea	rsi, .LC189[rip]
	mov	edi, eax
	mov	eax, 0
	call	sendf
	mov	DWORD PTR -52[rbp], eax
	mov	DWORD PTR f_report[rip], 1
	lea	rsi, .LC190[rip]
	lea	rdi, .LC145[rip]
	call	report_text
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, DWORD PTR -52[rbp]
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE60:
	.size	basic_auth, .-basic_auth
	.section	.rodata
.LC191:
	.string	"begin_http_relay()\n"
.LC192:
	.string	"CONNECT %s:%d HTTP/1.0\r\n"
	.align 8
.LC193:
	.string	"failed to read http response.\n"
	.align 8
.LC194:
	.string	"Unexpected http response: '%s'.\n"
	.align 8
.LC195:
	.string	"connected, start user session.\n"
.LC196:
	.string	"Location: "
.LC197:
	.string	"//"
.LC198:
	.string	":"
.LC199:
	.string	"WWW-Authenticate:"
.LC200:
	.string	"Proxy-Authenticate:"
.LC201:
	.string	" "
.LC202:
	.string	"Invalid format of %s field."
.LC203:
	.string	"basic"
	.align 8
.LC204:
	.string	"Unsupported authentication type: %s"
	.align 8
.LC205:
	.string	"Can't find %s in response header."
.LC206:
	.string	"http proxy is not allowed.\n"
.LC207:
	.string	"Can't skip response headers\n"
	.text
	.globl	begin_http_relay
	.type	begin_http_relay, @function
begin_http_relay:
.LFB61:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1088
	mov	DWORD PTR -1076[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC191[rip]
	mov	eax, 0
	call	debug
	movzx	eax, WORD PTR dest_port[rip]
	movzx	ecx, ax
	mov	rdx, QWORD PTR dest_host[rip]
	mov	eax, DWORD PTR -1076[rbp]
	lea	rsi, .LC192[rip]
	mov	edi, eax
	mov	eax, 0
	call	sendf
	test	eax, eax
	jns	.L519
	mov	eax, -1
	jmp	.L545
.L519:
	mov	eax, DWORD PTR proxy_auth_type[rip]
	cmp	eax, 1
	jne	.L521
	mov	eax, DWORD PTR -1076[rbp]
	mov	edi, eax
	call	basic_auth
	test	eax, eax
	jns	.L521
	mov	eax, -1
	jmp	.L545
.L521:
	mov	eax, DWORD PTR -1076[rbp]
	lea	rsi, .LC156[rip]
	mov	edi, eax
	mov	eax, 0
	call	sendf
	test	eax, eax
	jns	.L522
	mov	eax, -1
	jmp	.L545
.L522:
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	edx, 1024
	mov	rsi, rcx
	mov	edi, eax
	call	line_input
	test	eax, eax
	jns	.L523
	lea	rdi, .LC193[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L545
.L523:
	lea	rax, -1040[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	strchr@PLT
	test	rax, rax
	jne	.L524
	lea	rax, -1040[rbp]
	mov	rsi, rax
	lea	rdi, .LC194[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L545
.L524:
	lea	rax, -1040[rbp]
	mov	esi, 32
	mov	rdi, rax
	call	strchr@PLT
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR -1068[rbp], eax
	cmp	DWORD PTR -1068[rbp], 407
	je	.L525
	cmp	DWORD PTR -1068[rbp], 407
	jg	.L526
	cmp	DWORD PTR -1068[rbp], 401
	je	.L525
	cmp	DWORD PTR -1068[rbp], 401
	jg	.L526
	cmp	DWORD PTR -1068[rbp], 200
	je	.L527
	cmp	DWORD PTR -1068[rbp], 302
	je	.L528
	jmp	.L526
.L527:
	lea	rdi, .LC195[rip]
	mov	eax, 0
	call	debug
	jmp	.L529
.L548:
	nop
.L528:
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	edx, 1024
	mov	rsi, rcx
	mov	edi, eax
	call	line_input
	test	eax, eax
	jne	.L547
	lea	rax, -1040[rbp]
	mov	rdi, rax
	call	downcase
	lea	rax, -1040[rbp]
	lea	rsi, .LC196[rip]
	mov	rdi, rax
	call	expect
	test	eax, eax
	je	.L532
	lea	rax, -1040[rbp]
	lea	rsi, .LC197[rip]
	mov	rdi, rax
	call	cut_token
	mov	QWORD PTR relay_host[rip], rax
	lea	rax, -1040[rbp]
	lea	rsi, .LC99[rip]
	mov	rdi, rax
	call	cut_token
	lea	rax, -1040[rbp]
	lea	rsi, .LC198[rip]
	mov	rdi, rax
	call	cut_token
	mov	rdi, rax
	call	atoi@PLT
	mov	WORD PTR relay_port[rip], ax
.L532:
	lea	rax, -1040[rbp]
	lea	rsi, .LC156[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L548
	jmp	.L531
.L547:
	nop
.L531:
	mov	eax, 1
	jmp	.L545
.L525:
	mov	eax, DWORD PTR proxy_auth_type[rip]
	test	eax, eax
	je	.L533
	lea	rdi, .LC179[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L545
.L533:
	cmp	DWORD PTR -1068[rbp], 401
	jne	.L534
	lea	rax, .LC199[rip]
	jmp	.L535
.L534:
	lea	rax, .LC200[rip]
.L535:
	mov	QWORD PTR -1064[rbp], rax
.L542:
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	edx, 1024
	mov	rsi, rcx
	mov	edi, eax
	call	line_input
	test	eax, eax
	jne	.L549
	lea	rax, -1040[rbp]
	mov	rdi, rax
	call	downcase
	mov	rdx, QWORD PTR -1064[rbp]
	lea	rax, -1040[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	expect
	test	eax, eax
	je	.L538
	lea	rax, -1040[rbp]
	lea	rsi, .LC201[rip]
	mov	rdi, rax
	call	cut_token
	mov	QWORD PTR -1056[rbp], rax
	mov	rax, QWORD PTR -1056[rbp]
	lea	rsi, .LC201[rip]
	mov	rdi, rax
	call	cut_token
	mov	QWORD PTR -1048[rbp], rax
	cmp	QWORD PTR -1056[rbp], 0
	je	.L539
	cmp	QWORD PTR -1048[rbp], 0
	jne	.L540
.L539:
	mov	rax, QWORD PTR -1064[rbp]
	mov	rsi, rax
	lea	rdi, .LC202[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L545
.L540:
	mov	rax, QWORD PTR -1056[rbp]
	lea	rsi, .LC203[rip]
	mov	rdi, rax
	call	expect
	test	eax, eax
	je	.L541
	mov	DWORD PTR proxy_auth_type[rip], 1
	jmp	.L538
.L541:
	mov	rax, QWORD PTR -1056[rbp]
	mov	rsi, rax
	lea	rdi, .LC204[rip]
	mov	eax, 0
	call	debug
.L538:
	lea	rax, -1040[rbp]
	lea	rsi, .LC156[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L542
	jmp	.L537
.L549:
	nop
.L537:
	mov	eax, DWORD PTR proxy_auth_type[rip]
	test	eax, eax
	jne	.L543
	mov	rax, QWORD PTR -1064[rbp]
	mov	rsi, rax
	lea	rdi, .LC205[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L545
.L543:
	mov	eax, 1
	jmp	.L545
.L526:
	lea	rdi, .LC206[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L545
.L550:
	nop
.L529:
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1076[rbp]
	mov	edx, 1024
	mov	rsi, rcx
	mov	edi, eax
	call	line_input
	test	eax, eax
	je	.L544
	lea	rdi, .LC207[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L545
.L544:
	lea	rax, -1040[rbp]
	lea	rsi, .LC156[rip]
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L550
	mov	eax, 0
.L545:
	mov	rdx, QWORD PTR -8[rbp]
	sub	rdx, QWORD PTR fs:40
	je	.L546
	call	__stack_chk_fail@PLT
.L546:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE61:
	.size	begin_http_relay, .-begin_http_relay
	.section	.rodata
.LC208:
	.string	"connected to"
.LC209:
	.string	" failed"
.LC210:
	.string	" refused"
.LC211:
	.string	" rejected"
.LC212:
	.string	" closed"
.LC213:
	.string	"begin_telnet_relay()\n"
.LC214:
	.string	"good phrase: '%s'\n"
.LC215:
	.string	"bad phrases"
.LC216:
	.string	"%c '%s'"
.LC217:
	.string	"%s\r\n"
	.align 8
.LC218:
	.string	"good phrase is detected: '%s'\n"
.LC219:
	.string	"bad phrase is detected: '%s'\n"
	.align 8
.LC220:
	.string	"error reading from telnet proxy\n"
	.text
	.globl	begin_telnet_relay
	.type	begin_telnet_relay, @function
begin_telnet_relay:
.LFB62:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 1120
	mov	DWORD PTR -1108[rbp], edi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, .LC208[rip]
	mov	QWORD PTR -1088[rbp], rax
	lea	rax, .LC209[rip]
	mov	QWORD PTR -1072[rbp], rax
	lea	rax, .LC210[rip]
	mov	QWORD PTR -1064[rbp], rax
	lea	rax, .LC211[rip]
	mov	QWORD PTR -1056[rbp], rax
	lea	rax, .LC212[rip]
	mov	QWORD PTR -1048[rbp], rax
	mov	BYTE PTR -1093[rbp], 32
	lea	rdi, .LC213[rip]
	mov	eax, 0
	call	debug
	mov	rax, QWORD PTR -1088[rbp]
	mov	rsi, rax
	lea	rdi, .LC214[rip]
	mov	eax, 0
	call	debug
	lea	rdi, .LC215[rip]
	mov	eax, 0
	call	debug
	mov	BYTE PTR -1093[rbp], 58
	mov	DWORD PTR -1092[rbp], 0
	jmp	.L552
.L553:
	mov	eax, DWORD PTR -1092[rbp]
	cdqe
	mov	rdx, QWORD PTR -1072[rbp+rax*8]
	movsx	eax, BYTE PTR -1093[rbp]
	mov	esi, eax
	lea	rdi, .LC216[rip]
	mov	eax, 0
	call	debug_
	mov	BYTE PTR -1093[rbp], 44
	add	DWORD PTR -1092[rbp], 1
.L552:
	mov	eax, DWORD PTR -1092[rbp]
	cmp	eax, 3
	jbe	.L553
	lea	rdi, .LC88[rip]
	mov	eax, 0
	call	debug_
	movzx	eax, WORD PTR dest_port[rip]
	movzx	edx, ax
	mov	rcx, QWORD PTR dest_host[rip]
	mov	rax, QWORD PTR telnet_command[rip]
	mov	rsi, rcx
	mov	rdi, rax
	call	expand_host_and_port
	mov	QWORD PTR -1080[rbp], rax
	mov	rdx, QWORD PTR -1080[rbp]
	mov	eax, DWORD PTR -1108[rbp]
	lea	rsi, .LC217[rip]
	mov	edi, eax
	mov	eax, 0
	call	sendf
	test	eax, eax
	jns	.L554
	mov	rax, QWORD PTR -1080[rbp]
	mov	rdi, rax
	call	free@PLT
	mov	eax, -1
	jmp	.L563
.L554:
	mov	rax, QWORD PTR -1080[rbp]
	mov	rdi, rax
	call	free@PLT
	jmp	.L556
.L562:
	lea	rax, -1040[rbp]
	mov	rdi, rax
	call	downcase
	mov	rdx, QWORD PTR -1088[rbp]
	lea	rax, -1040[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strstr@PLT
	test	rax, rax
	je	.L557
	mov	rax, QWORD PTR -1088[rbp]
	mov	rsi, rax
	lea	rdi, .LC218[rip]
	mov	eax, 0
	call	debug
	mov	eax, 0
	jmp	.L563
.L557:
	mov	DWORD PTR -1092[rbp], 0
	jmp	.L558
.L560:
	mov	eax, DWORD PTR -1092[rbp]
	cdqe
	mov	rdx, QWORD PTR -1072[rbp+rax*8]
	lea	rax, -1040[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strstr@PLT
	test	rax, rax
	je	.L559
	mov	eax, DWORD PTR -1092[rbp]
	cdqe
	mov	rax, QWORD PTR -1072[rbp+rax*8]
	mov	rsi, rax
	lea	rdi, .LC219[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
	jmp	.L563
.L559:
	add	DWORD PTR -1092[rbp], 1
.L558:
	mov	eax, DWORD PTR -1092[rbp]
	cmp	eax, 3
	jbe	.L560
.L556:
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -1108[rbp]
	mov	edx, 1024
	mov	rsi, rcx
	mov	edi, eax
	call	line_input
	test	eax, eax
	jne	.L561
	movzx	eax, BYTE PTR -1040[rbp]
	test	al, al
	jne	.L562
.L561:
	lea	rdi, .LC220[rip]
	mov	eax, 0
	call	debug
	mov	eax, -1
.L563:
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L564
	call	__stack_chk_fail@PLT
.L564:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE62:
	.size	begin_telnet_relay, .-begin_telnet_relay
	.section	.rodata
.LC221:
	.string	"select() failed, %d\n"
.LC222:
	.string	"closed"
.LC223:
	.string	"reset"
.LC224:
	.string	"connection %s by peer\n"
.LC225:
	.string	"recv() failed, %d\n"
.LC226:
	.string	"recv %d bytes\n"
.LC227:
	.string	"local input is EOF\n"
.LC228:
	.string	"failed to read from local\n"
.LC229:
	.string	"recv() failed, errno = %d\n"
.LC230:
	.string	"send() failed, %d\n"
.LC231:
	.string	"sent %d bytes\n"
.LC232:
	.string	"0 <= lbuf_len"
	.align 8
.LC233:
	.string	"output (local) failed, errno=%d\n"
.LC234:
	.string	"0 <= rbuf_len"
	.align 8
.LC235:
	.string	"closing local port without disconnecting from remote\n"
	.text
	.globl	do_repeater
	.type	do_repeater, @function
do_repeater:
.LFB63:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 2400
	mov	DWORD PTR -2388[rbp], edi
	mov	DWORD PTR -2392[rbp], esi
	mov	DWORD PTR -2396[rbp], edx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -2356[rbp], -2
	mov	eax, DWORD PTR -2396[rbp]
	cmp	DWORD PTR -2388[rbp], eax
	cmovge	eax, DWORD PTR -2388[rbp]
	add	eax, 1
	mov	DWORD PTR -2348[rbp], eax
	mov	DWORD PTR -2368[rbp], 1
	mov	DWORD PTR -2360[rbp], 1
	mov	DWORD PTR -2372[rbp], 0
	mov	DWORD PTR -2364[rbp], 0
	jmp	.L566
.L595:
	mov	eax, 0
	mov	ecx, 16
	lea	rdx, -2320[rbp]
	mov	rdi, rdx
#APP
# 2640 "the_stack_data/571829.c" 1
	cld; rep; stosq
# 0 "" 2
#NO_APP
	mov	eax, edi
	mov	edx, ecx
	mov	DWORD PTR -2344[rbp], edx
	mov	DWORD PTR -2340[rbp], eax
	mov	eax, 0
	mov	ecx, 16
	lea	rdx, -2192[rbp]
	mov	rdi, rdx
#APP
# 2641 "the_stack_data/571829.c" 1
	cld; rep; stosq
# 0 "" 2
#NO_APP
	mov	eax, edi
	mov	edx, ecx
	mov	DWORD PTR -2336[rbp], edx
	mov	DWORD PTR -2332[rbp], eax
	mov	QWORD PTR -2328[rbp], 0
	cmp	DWORD PTR -2368[rbp], 0
	je	.L567
	cmp	DWORD PTR -2372[rbp], 1023
	jg	.L567
	mov	eax, DWORD PTR -2388[rbp]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -2320[rbp+rax*8]
	mov	eax, DWORD PTR -2388[rbp]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	or	rdi, rax
	mov	rdx, rdi
	movsx	rax, esi
	mov	QWORD PTR -2320[rbp+rax*8], rdx
.L567:
	cmp	DWORD PTR -2360[rbp], 0
	je	.L568
	cmp	DWORD PTR -2364[rbp], 1023
	jg	.L568
	mov	eax, DWORD PTR -2396[rbp]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -2320[rbp+rax*8]
	mov	eax, DWORD PTR -2396[rbp]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	or	rdi, rax
	mov	rdx, rdi
	movsx	rax, esi
	mov	QWORD PTR -2320[rbp+rax*8], rdx
.L568:
	mov	rcx, QWORD PTR -2328[rbp]
	lea	rdx, -2192[rbp]
	lea	rsi, -2320[rbp]
	mov	eax, DWORD PTR -2348[rbp]
	mov	r8, rcx
	mov	ecx, 0
	mov	edi, eax
	call	select@PLT
	cmp	eax, -1
	jne	.L569
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC221[rip]
	mov	eax, 0
	call	error
	mov	eax, -1
	jmp	.L596
.L569:
	mov	eax, DWORD PTR -2396[rbp]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -2320[rbp+rax*8]
	mov	eax, DWORD PTR -2396[rbp]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	and	rax, rsi
	test	rax, rax
	je	.L571
	cmp	DWORD PTR -2364[rbp], 1023
	jg	.L571
	mov	eax, DWORD PTR -2364[rbp]
	cdqe
	mov	edx, 1024
	sub	rdx, rax
	mov	eax, DWORD PTR -2364[rbp]
	cdqe
	lea	rcx, -1040[rbp]
	lea	rsi, [rcx+rax]
	mov	eax, DWORD PTR -2396[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	recv@PLT
	mov	DWORD PTR -2352[rbp], eax
	cmp	DWORD PTR -2352[rbp], 0
	je	.L572
	cmp	DWORD PTR -2352[rbp], -1
	jne	.L573
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	cmp	eax, 104
	jne	.L573
.L572:
	cmp	DWORD PTR -2352[rbp], 0
	jne	.L574
	lea	rax, .LC222[rip]
	jmp	.L575
.L574:
	lea	rax, .LC223[rip]
.L575:
	mov	rsi, rax
	lea	rdi, .LC224[rip]
	mov	eax, 0
	call	debug
	mov	DWORD PTR -2356[rbp], 1
	mov	DWORD PTR -2360[rbp], 0
	mov	DWORD PTR -2368[rbp], 0
	jmp	.L571
.L573:
	cmp	DWORD PTR -2352[rbp], -1
	jne	.L576
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC225[rip]
	mov	eax, 0
	call	fatal
	jmp	.L571
.L576:
	mov	eax, DWORD PTR -2352[rbp]
	mov	esi, eax
	lea	rdi, .LC226[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR f_debug[rip]
	cmp	eax, 1
	jle	.L577
	mov	eax, DWORD PTR -2364[rbp]
	cdqe
	lea	rdx, -1040[rbp]
	lea	rcx, [rdx+rax]
	mov	eax, DWORD PTR -2352[rbp]
	mov	edx, eax
	mov	rsi, rcx
	lea	rdi, .LC151[rip]
	call	report_bytes
.L577:
	mov	eax, DWORD PTR -2352[rbp]
	add	DWORD PTR -2364[rbp], eax
.L571:
	mov	eax, DWORD PTR -2388[rbp]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -2320[rbp+rax*8]
	mov	eax, DWORD PTR -2388[rbp]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	and	rax, rsi
	test	rax, rax
	je	.L578
	cmp	DWORD PTR -2372[rbp], 1023
	jg	.L578
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L579
	mov	eax, DWORD PTR -2372[rbp]
	cdqe
	mov	edx, 1024
	sub	rdx, rax
	mov	eax, DWORD PTR -2372[rbp]
	cdqe
	lea	rcx, -2064[rbp]
	lea	rsi, [rcx+rax]
	mov	eax, DWORD PTR -2388[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	recv@PLT
	mov	DWORD PTR -2352[rbp], eax
	jmp	.L580
.L579:
	mov	eax, DWORD PTR -2372[rbp]
	cdqe
	mov	edx, 1024
	sub	rdx, rax
	mov	eax, DWORD PTR -2372[rbp]
	cdqe
	lea	rcx, -2064[rbp]
	add	rcx, rax
	mov	eax, DWORD PTR -2388[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	read@PLT
	mov	DWORD PTR -2352[rbp], eax
.L580:
	cmp	DWORD PTR -2352[rbp], 0
	jne	.L581
	lea	rdi, .LC227[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR f_hold_session[rip]
	test	eax, eax
	jne	.L582
	mov	eax, DWORD PTR -2396[rbp]
	mov	esi, 1
	mov	edi, eax
	call	shutdown@PLT
.L582:
	mov	DWORD PTR -2368[rbp], 0
	mov	DWORD PTR -2356[rbp], 0
	jmp	.L578
.L581:
	cmp	DWORD PTR -2352[rbp], -1
	jne	.L583
	mov	eax, DWORD PTR f_hold_session[rip]
	test	eax, eax
	je	.L584
	lea	rdi, .LC228[rip]
	mov	eax, 0
	call	debug
	mov	DWORD PTR -2368[rbp], 0
	mov	DWORD PTR -2356[rbp], 0
	jmp	.L578
.L584:
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC229[rip]
	mov	eax, 0
	call	fatal
	jmp	.L578
.L583:
	mov	eax, DWORD PTR -2352[rbp]
	add	DWORD PTR -2372[rbp], eax
.L578:
	cmp	DWORD PTR -2372[rbp], 0
	jle	.L585
	mov	eax, DWORD PTR -2372[rbp]
	movsx	rdx, eax
	lea	rsi, -2064[rbp]
	mov	eax, DWORD PTR -2396[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	send@PLT
	mov	DWORD PTR -2352[rbp], eax
	cmp	DWORD PTR -2352[rbp], -1
	jne	.L586
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC230[rip]
	mov	eax, 0
	call	fatal
	jmp	.L585
.L586:
	cmp	DWORD PTR -2352[rbp], 0
	jle	.L585
	mov	eax, DWORD PTR f_debug[rip]
	cmp	eax, 1
	jle	.L587
	mov	edx, DWORD PTR -2352[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rax
	lea	rdi, .LC145[rip]
	call	report_bytes
.L587:
	mov	eax, DWORD PTR -2352[rbp]
	mov	esi, eax
	lea	rdi, .LC231[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR -2352[rbp]
	sub	DWORD PTR -2372[rbp], eax
	cmp	DWORD PTR -2372[rbp], 0
	jle	.L588
	mov	eax, DWORD PTR -2372[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -2352[rbp]
	cdqe
	lea	rcx, -2064[rbp]
	add	rcx, rax
	lea	rax, -2064[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
.L588:
	cmp	DWORD PTR -2372[rbp], 0
	jns	.L585
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 2741
	lea	rsi, .LC37[rip]
	lea	rdi, .LC232[rip]
	call	__assert_fail@PLT
.L585:
	cmp	DWORD PTR -2364[rbp], 0
	jle	.L589
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L590
	mov	eax, DWORD PTR -2364[rbp]
	movsx	rdx, eax
	lea	rsi, -1040[rbp]
	mov	eax, DWORD PTR -2392[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	send@PLT
	mov	DWORD PTR -2352[rbp], eax
	jmp	.L591
.L590:
	mov	eax, DWORD PTR -2364[rbp]
	movsx	rdx, eax
	lea	rcx, -1040[rbp]
	mov	eax, DWORD PTR -2392[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	mov	DWORD PTR -2352[rbp], eax
.L591:
	cmp	DWORD PTR -2352[rbp], -1
	jne	.L592
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC233[rip]
	mov	eax, 0
	call	fatal
.L592:
	mov	eax, DWORD PTR -2352[rbp]
	sub	DWORD PTR -2364[rbp], eax
	mov	eax, DWORD PTR -2352[rbp]
	cmp	eax, DWORD PTR -2364[rbp]
	jge	.L593
	mov	eax, DWORD PTR -2364[rbp]
	movsx	rdx, eax
	mov	eax, DWORD PTR -2352[rbp]
	cdqe
	lea	rcx, -1040[rbp]
	add	rcx, rax
	lea	rax, -1040[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
.L593:
	cmp	DWORD PTR -2364[rbp], 0
	jns	.L589
	lea	rcx, __PRETTY_FUNCTION__.1[rip]
	mov	edx, 2757
	lea	rsi, .LC37[rip]
	lea	rdi, .LC234[rip]
	call	__assert_fail@PLT
.L589:
	cmp	DWORD PTR -2368[rbp], 0
	jne	.L566
	mov	eax, DWORD PTR f_hold_session[rip]
	test	eax, eax
	je	.L566
	lea	rdi, .LC235[rip]
	mov	eax, 0
	call	debug
	mov	DWORD PTR -2360[rbp], 0
	mov	eax, DWORD PTR -2392[rbp]
	mov	esi, 2
	mov	edi, eax
	call	shutdown@PLT
	mov	eax, DWORD PTR -2392[rbp]
	mov	edi, eax
	call	close@PLT
	jmp	.L594
.L566:
	cmp	DWORD PTR -2368[rbp], 0
	jne	.L595
	cmp	DWORD PTR -2360[rbp], 0
	jne	.L595
.L594:
	mov	eax, DWORD PTR -2356[rbp]
.L596:
	mov	rsi, QWORD PTR -8[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L597
	call	__stack_chk_fail@PLT
.L597:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE63:
	.size	do_repeater, .-do_repeater
	.section	.rodata
	.align 8
.LC236:
	.string	"Creating source port to forward.\n"
.LC237:
	.string	"socket() failed, errno=%d\n"
.LC238:
	.string	"bind() failed, errno=%d\n"
.LC239:
	.string	"listen() failed, errno=%d\n"
	.align 8
.LC240:
	.string	"waiting new connection at port %d (socket=%d)\n"
	.align 8
.LC241:
	.string	"Give-up waiting port because stdin is closed."
.LC242:
	.string	"accept() failed, errno=%d\n"
	.text
	.globl	accept_connection
	.type	accept_connection, @function
accept_connection:
.LFB64:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 240
	mov	eax, edi
	mov	WORD PTR -228[rbp], ax
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rdi, .LC236[rip]
	mov	eax, 0
	call	debug
	mov	edx, 0
	mov	esi, 1
	mov	edi, 2
	call	socket@PLT
	mov	DWORD PTR sock.0[rip], eax
	mov	eax, DWORD PTR sock.0[rip]
	test	eax, eax
	jns	.L599
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC237[rip]
	mov	eax, 0
	call	fatal
.L599:
	mov	DWORD PTR -208[rbp], 1
	mov	eax, DWORD PTR sock.0[rip]
	lea	rdx, -208[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 2
	mov	esi, 1
	mov	edi, eax
	call	setsockopt@PLT
	mov	WORD PTR -176[rbp], 2
	movzx	eax, WORD PTR -228[rbp]
	mov	edi, eax
	call	htons@PLT
	mov	WORD PTR -174[rbp], ax
	mov	edi, 0
	call	htonl@PLT
	mov	DWORD PTR -172[rbp], eax
	mov	eax, DWORD PTR sock.0[rip]
	lea	rcx, -176[rbp]
	mov	edx, 16
	mov	rsi, rcx
	mov	edi, eax
	call	bind@PLT
	test	eax, eax
	jns	.L600
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC238[rip]
	mov	eax, 0
	call	fatal
.L600:
	mov	eax, DWORD PTR sock.0[rip]
	mov	esi, 1
	mov	edi, eax
	call	listen@PLT
	test	eax, eax
	jns	.L601
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC239[rip]
	mov	eax, 0
	call	fatal
.L601:
	mov	edx, DWORD PTR sock.0[rip]
	movzx	eax, WORD PTR -228[rbp]
	mov	esi, eax
	lea	rdi, .LC240[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR sock.0[rip]
	add	eax, 1
	mov	DWORD PTR -204[rbp], eax
.L606:
	mov	QWORD PTR -184[rbp], 0
	mov	eax, 0
	mov	ecx, 16
	lea	rdx, -144[rbp]
	mov	rdi, rdx
#APP
# 2814 "the_stack_data/571829.c" 1
	cld; rep; stosq
# 0 "" 2
#NO_APP
	mov	eax, edi
	mov	edx, ecx
	mov	DWORD PTR -200[rbp], edx
	mov	DWORD PTR -196[rbp], eax
	mov	eax, DWORD PTR sock.0[rip]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -144[rbp+rax*8]
	mov	eax, DWORD PTR sock.0[rip]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	or	rdi, rax
	mov	rdx, rdi
	movsx	rax, esi
	mov	QWORD PTR -144[rbp+rax*8], rdx
	mov	rax, QWORD PTR -144[rbp]
	or	rax, 1
	mov	QWORD PTR -144[rbp], rax
	mov	rdx, QWORD PTR -184[rbp]
	lea	rsi, -144[rbp]
	mov	eax, DWORD PTR -204[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	edi, eax
	call	select@PLT
	mov	DWORD PTR -192[rbp], eax
	cmp	DWORD PTR -192[rbp], -1
	jne	.L602
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC221[rip]
	mov	eax, 0
	call	fatal
	mov	edi, 1
	call	exit@PLT
.L602:
	cmp	DWORD PTR -192[rbp], 0
	jle	.L606
	mov	rax, QWORD PTR -144[rbp]
	and	eax, 1
	test	rax, rax
	je	.L604
	call	getchar@PLT
	test	eax, eax
	jg	.L604
	lea	rdi, .LC241[rip]
	mov	eax, 0
	call	debug
	mov	edi, 0
	call	exit@PLT
.L604:
	mov	eax, DWORD PTR sock.0[rip]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -144[rbp+rax*8]
	mov	eax, DWORD PTR sock.0[rip]
	cdq
	shr	edx, 26
	add	eax, edx
	and	eax, 63
	sub	eax, edx
	mov	edx, 1
	mov	ecx, eax
	sal	rdx, cl
	mov	rax, rdx
	and	rax, rsi
	test	rax, rax
	jne	.L611
	jmp	.L606
.L611:
	nop
	mov	DWORD PTR -212[rbp], 16
	mov	eax, DWORD PTR sock.0[rip]
	lea	rdx, -212[rbp]
	lea	rcx, -160[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	accept@PLT
	mov	DWORD PTR -188[rbp], eax
	cmp	DWORD PTR -188[rbp], 0
	jns	.L607
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC242[rip]
	mov	eax, 0
	call	fatal
.L607:
	mov	eax, DWORD PTR -188[rbp]
	mov	rcx, QWORD PTR -8[rbp]
	sub	rcx, QWORD PTR fs:40
	je	.L609
	call	__stack_chk_fail@PLT
.L609:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE64:
	.size	accept_connection, .-accept_connection
	.section	.rodata
.LC243:
	.string	"Program is $Revision: 100 $\n"
	.align 8
.LC244:
	.string	"Unable to connect to destination host, errno=%d\n"
	.align 8
.LC245:
	.string	"Unable to connect to relay host, errno=%d\n"
.LC246:
	.string	"Unknown host: %s"
	.align 8
.LC247:
	.string	"failed to begin relaying via SOCKS.\n"
	.align 8
.LC248:
	.string	"failed to begin relaying via HTTP.\n"
	.align 8
.LC249:
	.string	"failed to begin relaying via telnet.\n"
.LC250:
	.string	"connected\n"
.LC251:
	.string	"start relaying.\n"
.LC252:
	.string	"relaying done.\n"
.LC253:
	.string	"re-waiting at local port %d\n"
.LC254:
	.string	"re-start relaying\n"
.LC255:
	.string	"that's all, bye.\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB65:
	.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	DWORD PTR -36[rbp], edi
	mov	QWORD PTR -48[rbp], rsi
	call	make_revstr
	mov	rdx, QWORD PTR -48[rbp]
	mov	eax, DWORD PTR -36[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	getarg
	lea	rdi, .LC243[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L613
	movzx	eax, WORD PTR local_port[rip]
	movzx	eax, ax
	mov	edi, eax
	call	accept_connection
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -16[rbp], eax
	jmp	.L632
.L613:
	mov	DWORD PTR -16[rbp], 0
	mov	DWORD PTR -12[rbp], 1
.L614:
.L632:
	mov	eax, DWORD PTR connect_timeout[rip]
	test	eax, eax
	jle	.L615
	mov	eax, DWORD PTR connect_timeout[rip]
	mov	edi, eax
	call	set_timeout
.L615:
	mov	rax, QWORD PTR dest_host[rip]
	mov	rdi, rax
	call	check_direct
	test	eax, eax
	je	.L616
	mov	DWORD PTR relay_method[rip], 1
.L616:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 1
	jne	.L617
	movzx	eax, WORD PTR dest_port[rip]
	movzx	edx, ax
	mov	rax, QWORD PTR dest_host[rip]
	mov	esi, edx
	mov	rdi, rax
	call	open_connection
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], -1
	jne	.L618
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC244[rip]
	mov	eax, 0
	call	fatal
	jmp	.L618
.L617:
	movzx	eax, WORD PTR relay_port[rip]
	movzx	edx, ax
	mov	rax, QWORD PTR relay_host[rip]
	mov	esi, edx
	mov	rdi, rax
	call	open_connection
	mov	DWORD PTR -20[rbp], eax
	cmp	DWORD PTR -20[rbp], -1
	jne	.L618
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	esi, eax
	lea	rdi, .LC245[rip]
	mov	eax, 0
	call	fatal
.L618:
	mov	eax, DWORD PTR socks_ns[rip+4]
	test	eax, eax
	je	.L619
	lea	rdi, socks_ns[rip]
	call	switch_ns
.L619:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 2
	jne	.L620
	mov	eax, DWORD PTR socks_resolve[rip]
	cmp	eax, 1
	jne	.L620
	mov	rax, QWORD PTR dest_host[rip]
	lea	rsi, dest_addr[rip]
	mov	rdi, rax
	call	local_resolve
	test	eax, eax
	jns	.L620
	mov	rax, QWORD PTR dest_host[rip]
	mov	rsi, rax
	lea	rdi, .LC246[rip]
	mov	eax, 0
	call	fatal
.L620:
	mov	eax, DWORD PTR relay_method[rip]
	cmp	eax, 4
	je	.L621
	cmp	eax, 4
	jg	.L622
	cmp	eax, 2
	je	.L623
	cmp	eax, 3
	je	.L624
	jmp	.L622
.L623:
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 5
	jne	.L625
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	begin_socks5_relay
	test	eax, eax
	js	.L626
.L625:
	mov	eax, DWORD PTR socks_version[rip]
	cmp	eax, 4
	jne	.L639
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	begin_socks4_relay
	test	eax, eax
	jns	.L639
.L626:
	lea	rdi, .LC247[rip]
	mov	eax, 0
	call	fatal
	jmp	.L639
.L624:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	begin_http_relay
	mov	DWORD PTR -8[rbp], eax
	cmp	DWORD PTR -8[rbp], 1
	je	.L628
	cmp	DWORD PTR -8[rbp], 1
	jg	.L640
	cmp	DWORD PTR -8[rbp], -1
	je	.L630
	cmp	DWORD PTR -8[rbp], 0
	je	.L641
	jmp	.L640
.L630:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	close@PLT
	lea	rdi, .LC248[rip]
	mov	eax, 0
	call	fatal
	jmp	.L641
.L628:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	close@PLT
	jmp	.L632
.L641:
	nop
	jmp	.L640
.L621:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	begin_telnet_relay
	test	eax, eax
	jns	.L642
	lea	rdi, .LC249[rip]
	mov	eax, 0
	call	fatal
	jmp	.L642
.L639:
	nop
	jmp	.L622
.L640:
	nop
	jmp	.L622
.L642:
	nop
.L622:
	lea	rdi, .LC250[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR connect_timeout[rip]
	test	eax, eax
	jle	.L634
	mov	edi, 0
	call	set_timeout
.L634:
	lea	rdi, .LC251[rip]
	mov	eax, 0
	call	debug
.L635:
	mov	edx, DWORD PTR -20[rbp]
	mov	ecx, DWORD PTR -12[rbp]
	mov	eax, DWORD PTR -16[rbp]
	mov	esi, ecx
	mov	edi, eax
	call	do_repeater
	mov	DWORD PTR -4[rbp], eax
	lea	rdi, .LC252[rip]
	mov	eax, 0
	call	debug
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L636
	cmp	DWORD PTR -4[rbp], 0
	jne	.L636
	mov	eax, DWORD PTR f_hold_session[rip]
	test	eax, eax
	je	.L636
	movzx	eax, WORD PTR local_port[rip]
	movzx	eax, ax
	mov	esi, eax
	lea	rdi, .LC253[rip]
	mov	eax, 0
	call	debug
	movzx	eax, WORD PTR local_port[rip]
	movzx	eax, ax
	mov	edi, eax
	call	accept_connection
	mov	DWORD PTR -12[rbp], eax
	mov	eax, DWORD PTR -12[rbp]
	mov	DWORD PTR -16[rbp], eax
	lea	rdi, .LC254[rip]
	mov	eax, 0
	call	debug
	jmp	.L635
.L636:
	mov	eax, DWORD PTR -20[rbp]
	mov	edi, eax
	call	close@PLT
	mov	eax, DWORD PTR local_type[rip]
	cmp	eax, 1
	jne	.L637
	mov	eax, DWORD PTR -16[rbp]
	mov	edi, eax
	call	close@PLT
.L637:
	lea	rdi, .LC255[rip]
	mov	eax, 0
	call	debug
	mov	eax, 0
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE65:
	.size	main, .-main
	.section	.rodata
	.align 16
	.type	__PRETTY_FUNCTION__.16, @object
	.size	__PRETTY_FUNCTION__.16, 21
__PRETTY_FUNCTION__.16:
	.string	"expand_host_and_port"
	.align 16
	.type	__PRETTY_FUNCTION__.15, @object
	.size	__PRETTY_FUNCTION__.15, 16
__PRETTY_FUNCTION__.15:
	.string	"parse_addr_pair"
	.local	disabled.14
	.comm	disabled.14,4,4
	.local	otio.13
	.comm	otio.13,60,32
	.local	oset.12
	.comm	oset.12,128,32
	.local	osa.11
	.comm	osa.11,152,32
	.local	nset.10
	.comm	nset.10,128,32
	.local	nsa.9
	.comm	nsa.9,152,32
	.local	ntio.8
	.comm	ntio.8,60,32
	.local	work.7
	.comm	work.7,1024,32
	.align 8
	.type	__PRETTY_FUNCTION__.6, @object
	.size	__PRETTY_FUNCTION__.6, 11
__PRETTY_FUNCTION__.6:
	.string	"atomic_out"
	.align 8
	.type	__PRETTY_FUNCTION__.5, @object
	.size	__PRETTY_FUNCTION__.5, 10
__PRETTY_FUNCTION__.5:
	.string	"atomic_in"
	.local	buf.4
	.comm	buf.4,1000,32
	.local	buf.3
	.comm	buf.3,10240,32
	.local	buf.2
	.comm	buf.2,8,8
	.align 8
	.type	__PRETTY_FUNCTION__.1, @object
	.size	__PRETTY_FUNCTION__.1, 12
__PRETTY_FUNCTION__.1:
	.string	"do_repeater"
	.data
	.align 4
	.type	sock.0, @object
	.size	sock.0, 4
sock.0:
	.long	-1
	.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	"571829.c"
	.section	.rodata
	.align	2
.LC0:
	.ascii	" failed\000"
	.align	2
.LC1:
	.ascii	" refused\000"
	.align	2
.LC2:
	.ascii	" rejected\000"
	.align	2
.LC3:
	.ascii	" closed\000"
	.text
	.section	.rodata
	.align	2
.LC5:
	.ascii	"$Id: connect.c 100 2007-07-03 10:48:26Z gotoh $\000"
	.data
	.align	2
	.type	vcid, %object
	.size	vcid, 4
vcid:
	.word	.LC5
	.section	.rodata
	.align	2
.LC6:
	.ascii	"usage: %s [-dnhst45] [-p local-port][-R resolve] [-"
	.ascii	"w timeout] \012          [-H proxy-server[:port]] ["
	.ascii	"-S [user@]socks-server[:port]] \012          [-T pr"
	.ascii	"oxy-server[:port]]\012          [-c telnet-proxy-co"
	.ascii	"mmand]\012          host port\012\000"
	.data
	.align	2
	.type	usage, %object
	.size	usage, 4
usage:
	.word	.LC6
	.global	progname
	.bss
	.align	2
	.type	progname, %object
	.size	progname, 4
progname:
	.space	4
	.global	progdesc
	.section	.rodata
	.align	2
.LC7:
	.ascii	"connect --- simple relaying command via proxy.\000"
	.data
	.align	2
	.type	progdesc, %object
	.size	progdesc, 4
progdesc:
	.word	.LC7
	.global	rcs_revstr
	.section	.rodata
	.align	2
.LC8:
	.ascii	"$Revision: 100 $\000"
	.data
	.align	2
	.type	rcs_revstr, %object
	.size	rcs_revstr, 4
rcs_revstr:
	.word	.LC8
	.global	revstr
	.bss
	.align	2
	.type	revstr, %object
	.size	revstr, 4
revstr:
	.space	4
	.global	major_version
	.data
	.align	2
	.type	major_version, %object
	.size	major_version, 4
major_version:
	.word	1
	.global	minor_version
	.bss
	.align	2
	.type	minor_version, %object
	.size	minor_version, 4
minor_version:
	.space	4
	.global	digits
	.section	.rodata
	.align	2
.LC9:
	.ascii	"0123456789\000"
	.data
	.align	2
	.type	digits, %object
	.size	digits, 4
digits:
	.word	.LC9
	.global	dotdigits
	.section	.rodata
	.align	2
.LC10:
	.ascii	"0123456789.\000"
	.data
	.align	2
	.type	dotdigits, %object
	.size	dotdigits, 4
dotdigits:
	.word	.LC10
	.global	f_debug
	.bss
	.align	2
	.type	f_debug, %object
	.size	f_debug, 4
f_debug:
	.space	4
	.global	f_report
	.data
	.align	2
	.type	f_report, %object
	.size	f_report, 4
f_report:
	.word	1
	.global	connect_timeout
	.bss
	.align	2
	.type	connect_timeout, %object
	.size	connect_timeout, 4
connect_timeout:
	.space	4
	.global	local_type_names
	.section	.rodata
	.align	2
.LC11:
	.ascii	"stdio\000"
	.align	2
.LC12:
	.ascii	"socket\000"
	.data
	.align	2
	.type	local_type_names, %object
	.size	local_type_names, 8
local_type_names:
	.word	.LC11
	.word	.LC12
	.global	local_type
	.bss
	.align	2
	.type	local_type, %object
	.size	local_type, 4
local_type:
	.space	4
	.global	local_port
	.align	1
	.type	local_port, %object
	.size	local_port, 2
local_port:
	.space	2
	.global	f_hold_session
	.align	2
	.type	f_hold_session, %object
	.size	f_hold_session, 4
f_hold_session:
	.space	4
	.global	telnet_command
	.section	.rodata
	.align	2
.LC13:
	.ascii	"telnet %h %p\000"
	.data
	.align	2
	.type	telnet_command, %object
	.size	telnet_command, 4
telnet_command:
	.word	.LC13
	.global	method_names
	.section	.rodata
	.align	2
.LC14:
	.ascii	"UNDECIDED\000"
	.align	2
.LC15:
	.ascii	"DIRECT\000"
	.align	2
.LC16:
	.ascii	"SOCKS\000"
	.align	2
.LC17:
	.ascii	"HTTP\000"
	.align	2
.LC18:
	.ascii	"TELNET\000"
	.data
	.align	2
	.type	method_names, %object
	.size	method_names, 20
method_names:
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.global	relay_method
	.bss
	.align	2
	.type	relay_method, %object
	.size	relay_method, 4
relay_method:
	.space	4
	.global	relay_host
	.align	2
	.type	relay_host, %object
	.size	relay_host, 4
relay_host:
	.space	4
	.global	relay_port
	.align	1
	.type	relay_port, %object
	.size	relay_port, 2
relay_port:
	.space	2
	.global	relay_user
	.align	2
	.type	relay_user, %object
	.size	relay_user, 4
relay_user:
	.space	4
	.global	dest_host
	.align	2
	.type	dest_host, %object
	.size	dest_host, 4
dest_host:
	.space	4
	.comm	dest_addr,16,4
	.global	dest_port
	.align	1
	.type	dest_port, %object
	.size	dest_port, 2
dest_port:
	.space	2
	.global	socks5_rep_names
	.section	.rodata
	.align	2
.LC19:
	.ascii	"succeeded\000"
	.align	2
.LC20:
	.ascii	"general SOCKS server failure\000"
	.align	2
.LC21:
	.ascii	"connection not allowed by ruleset\000"
	.align	2
.LC22:
	.ascii	"Network unreachable\000"
	.align	2
.LC23:
	.ascii	"Host unreachable\000"
	.align	2
.LC24:
	.ascii	"connection refused\000"
	.align	2
.LC25:
	.ascii	"TTL expired\000"
	.align	2
.LC26:
	.ascii	"Command not supported\000"
	.align	2
.LC27:
	.ascii	"Address not supported\000"
	.align	2
.LC28:
	.ascii	"Invalid address\000"
	.data
	.align	2
	.type	socks5_rep_names, %object
	.size	socks5_rep_names, 88
socks5_rep_names:
	.word	0
	.word	.LC19
	.word	1
	.word	.LC20
	.word	2
	.word	.LC21
	.word	3
	.word	.LC22
	.word	4
	.word	.LC23
	.word	5
	.word	.LC24
	.word	6
	.word	.LC25
	.word	7
	.word	.LC26
	.word	8
	.word	.LC27
	.word	9
	.word	.LC28
	.word	-1
	.word	0
	.global	socks4_rep_names
	.section	.rodata
	.align	2
.LC29:
	.ascii	"request granted (succeeded)\000"
	.align	2
.LC30:
	.ascii	"request rejected or failed\000"
	.align	2
.LC31:
	.ascii	"cannot connect identd\000"
	.align	2
.LC32:
	.ascii	"user id not matched\000"
	.data
	.align	2
	.type	socks4_rep_names, %object
	.size	socks4_rep_names, 40
socks4_rep_names:
	.word	90
	.word	.LC29
	.word	91
	.word	.LC30
	.word	92
	.word	.LC31
	.word	93
	.word	.LC32
	.word	-1
	.word	0
	.global	resolve_names
	.section	.rodata
	.align	2
.LC33:
	.ascii	"UNKNOWN\000"
	.align	2
.LC34:
	.ascii	"LOCAL\000"
	.align	2
.LC35:
	.ascii	"REMOTE\000"
	.align	2
.LC36:
	.ascii	"BOTH\000"
	.data
	.align	2
	.type	resolve_names, %object
	.size	resolve_names, 16
resolve_names:
	.word	.LC33
	.word	.LC34
	.word	.LC35
	.word	.LC36
	.global	socks_version
	.align	2
	.type	socks_version, %object
	.size	socks_version, 4
socks_version:
	.word	5
	.global	socks_resolve
	.bss
	.align	2
	.type	socks_resolve, %object
	.size	socks_resolve, 4
socks_resolve:
	.space	4
	.comm	socks_ns,16,4
	.global	socks5_auth
	.align	2
	.type	socks5_auth, %object
	.size	socks5_auth, 4
socks5_auth:
	.space	4
	.global	proxy_auth_type
	.align	2
	.type	proxy_auth_type, %object
	.size	proxy_auth_type, 4
proxy_auth_type:
	.space	4
	.section	.rodata
	.align	2
.LC37:
	.ascii	"DEBUG: \000"
	.align	2
.LC38:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	debug
	.syntax unified
	.arm
	.fpu softvfp
	.type	debug, %function
debug:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L5
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L5+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L4
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L5+8
	ldr	r3, [r3]
	mov	r2, #7
	mov	r1, #1
	ldr	r0, .L5+12
	bl	fwrite
	ldr	r3, .L5+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
.L4:
	nop
	ldr	r3, .L5
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L3
	bl	__stack_chk_fail
.L3:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L6:
	.align	2
.L5:
	.word	.LC38
	.word	f_debug
	.word	stderr
	.word	.LC37
	.size	debug, .-debug
	.section	.rodata
	.align	2
.LC39:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	debug_
	.syntax unified
	.arm
	.fpu softvfp
	.type	debug_, %function
debug_:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L11
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L11+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L10
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L11+8
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
.L10:
	nop
	ldr	r3, .L11
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L9
	bl	__stack_chk_fail
.L9:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L12:
	.align	2
.L11:
	.word	.LC39
	.word	f_debug
	.word	stderr
	.size	debug_, .-debug_
	.section	.rodata
	.align	2
.LC40:
	.ascii	"ERROR: \000"
	.align	2
.LC41:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	error
	.syntax unified
	.arm
	.fpu softvfp
	.type	error, %function
error:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L15
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L15+4
	ldr	r3, [r3]
	mov	r2, #7
	mov	r1, #1
	ldr	r0, .L15+8
	bl	fwrite
	ldr	r3, .L15+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
	nop
	ldr	r3, .L15
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L14
	bl	__stack_chk_fail
.L14:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #16
	bx	lr
.L16:
	.align	2
.L15:
	.word	.LC41
	.word	stderr
	.word	.LC40
	.size	error, .-error
	.section	.rodata
	.align	2
.LC42:
	.ascii	"FATAL: \000"
	.align	2
.LC43:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	fatal
	.syntax unified
	.arm
	.fpu softvfp
	.type	fatal, %function
fatal:
	@ args = 4, pretend = 16, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, [fp, #4]
	str	r3, [fp, #-16]
	ldr	r3, .L19
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-12]
	ldr	r3, .L19+4
	ldr	r3, [r3]
	mov	r2, #7
	mov	r1, #1
	ldr	r0, .L19+8
	bl	fwrite
	ldr	r3, .L19+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	mov	r0, r3
	bl	vfprintf
	mov	r0, #1
	bl	exit
.L20:
	.align	2
.L19:
	.word	.LC43
	.word	stderr
	.word	.LC42
	.size	fatal, .-fatal
	.section	.rodata
	.align	2
.LC44:
	.ascii	"Cannot allocate memory: %d bytes.\012\000"
	.text
	.align	2
	.global	xmalloc
	.syntax unified
	.arm
	.fpu softvfp
	.type	xmalloc, %function
xmalloc:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L22
	ldr	r1, [fp, #-16]
	ldr	r0, .L24
	bl	fatal
.L22:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L25:
	.align	2
.L24:
	.word	.LC44
	.size	xmalloc, .-xmalloc
	.align	2
	.global	downcase
	.syntax unified
	.arm
	.fpu softvfp
	.type	downcase, %function
downcase:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-8]
	b	.L27
.L29:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #256
	cmp	r3, #0
	beq	.L28
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r3, #32
	and	r2, r3, #255
	ldr	r3, [fp, #-8]
	strb	r2, [r3]
.L28:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L27:
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L29
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	downcase, .-downcase
	.section	.rodata
	.align	2
.LC45:
	.ascii	"%d\000"
	.align	2
.LC46:
	.ascii	"the_stack_data/571829.c\000"
	.align	2
.LC47:
	.ascii	"strlen(buf) < len\000"
	.text
	.align	2
	.global	expand_host_and_port
	.syntax unified
	.arm
	.fpu softvfp
	.type	expand_host_and_port, %function
expand_host_and_port:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r4, r0
	ldr	r0, [fp, #-36]
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	add	r3, r3, #20
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-20]
	bl	xmalloc
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-28]
	b	.L32
.L44:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #37
	bne	.L33
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #104
	beq	.L34
	cmp	r3, #112
	beq	.L35
	b	.L47
.L34:
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-24]
	bl	strcpy
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	str	r3, [fp, #-28]
	b	.L37
.L35:
	ldr	r3, [fp, #-40]
	ldr	r2, .L48
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	snprintf
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	str	r3, [fp, #-28]
	b	.L37
.L47:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
	nop
.L37:
	ldr	r0, [fp, #-16]
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-24]
	b	.L38
.L33:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #92
	bne	.L39
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #116
	beq	.L40
	cmp	r3, #116
	bgt	.L41
	cmp	r3, #110
	beq	.L42
	cmp	r3, #114
	bne	.L41
	ldr	r3, [fp, #-24]
	add	r2, r3, #1
	str	r2, [fp, #-24]
	mov	r2, #13
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	str	r3, [fp, #-28]
	b	.L38
.L42:
	ldr	r3, [fp, #-24]
	add	r2, r3, #1
	str	r2, [fp, #-24]
	mov	r2, #10
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	str	r3, [fp, #-28]
	b	.L38
.L40:
	ldr	r3, [fp, #-24]
	add	r2, r3, #1
	str	r2, [fp, #-24]
	mov	r2, #9
	strb	r2, [r3]
	ldr	r3, [fp, #-28]
	add	r3, r3, #2
	str	r3, [fp, #-28]
	b	.L38
.L41:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
	b	.L38
.L39:
	ldr	r2, [fp, #-28]
	add	r3, r2, #1
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
.L38:
	ldr	r3, [fp, #-24]
	mov	r2, #0
	strb	r2, [r3]
.L32:
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L44
	ldr	r0, [fp, #-16]
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-20]
	cmp	r3, r2
	bhi	.L45
	ldr	r3, .L48+4
	ldr	r2, .L48+8
	ldr	r1, .L48+12
	ldr	r0, .L48+16
	bl	__assert_fail
.L45:
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L49:
	.align	2
.L48:
	.word	.LC45
	.word	__PRETTY_FUNCTION__.7894
	.word	594
	.word	.LC46
	.word	.LC47
	.size	expand_host_and_port, .-expand_host_and_port
	.section	.rodata
	.align	2
.LC48:
	.ascii	"both\000"
	.align	2
.LC49:
	.ascii	"remote\000"
	.align	2
.LC50:
	.ascii	"local\000"
	.text
	.align	2
	.global	lookup_resolve
	.syntax unified
	.arm
	.fpu softvfp
	.type	lookup_resolve, %function
lookup_resolve:
	@ 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]
	ldr	r0, [fp, #-24]
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	downcase
	ldr	r1, .L57
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L51
	mov	r3, #3
	str	r3, [fp, #-20]
	b	.L52
.L51:
	ldr	r1, .L57+4
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L53
	mov	r3, #2
	str	r3, [fp, #-20]
	b	.L52
.L53:
	ldr	r1, .L57+8
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L54
	mov	r3, #1
	str	r3, [fp, #-20]
	b	.L52
.L54:
	ldr	r3, .L57+12
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strspn
	mov	r4, r0
	ldr	r0, [fp, #-16]
	bl	strlen
	mov	r3, r0
	cmp	r4, r3
	bne	.L55
	mov	r3, #1
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	inet_addr
	mov	r3, r0
	ldr	r2, .L57+16
	str	r3, [r2, #4]
	ldr	r3, .L57+16
	mov	r2, #2
	strh	r2, [r3]	@ movhi
	b	.L52
.L55:
	mov	r3, #0
	str	r3, [fp, #-20]
.L52:
	ldr	r0, [fp, #-16]
	bl	free
	ldr	r3, [fp, #-20]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L58:
	.align	2
.L57:
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	dotdigits
	.word	socks_ns
	.size	lookup_resolve, .-lookup_resolve
	.section	.rodata
	.align	2
.LC51:
	.ascii	"getpwuid() failed for uid: %d\012\000"
	.text
	.align	2
	.global	getusername
	.syntax unified
	.arm
	.fpu softvfp
	.type	getusername, %function
getusername:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	bl	getuid
	mov	r3, r0
	mov	r0, r3
	bl	getpwuid
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L60
	bl	getuid
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L62
	bl	fatal
.L60:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L63:
	.align	2
.L62:
	.word	.LC51
	.size	getusername, .-getusername
	.align	2
	.global	expect
	.syntax unified
	.arm
	.fpu softvfp
	.type	expect, %function
expect:
	@ 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	strlen
	mov	r3, r0
	str	r3, [fp, #-16]
	b	.L65
.L68:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r4, r0
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r3, r0
	cmp	r4, r3
	beq	.L66
	mov	r3, #0
	b	.L67
.L66:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L65:
	ldr	r3, [fp, #-16]
	sub	r2, r3, #1
	str	r2, [fp, #-16]
	cmp	r3, #0
	bgt	.L68
	mov	r3, #1
.L67:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
	.size	expect, .-expect
	.global	parameter_table
	.section	.rodata
	.align	2
.LC52:
	.ascii	"SOCKS_SERVER\000"
	.align	2
.LC53:
	.ascii	"SOCKS5_SERVER\000"
	.align	2
.LC54:
	.ascii	"SOCKS4_SERVER\000"
	.align	2
.LC55:
	.ascii	"SOCKS_RESOLVE\000"
	.align	2
.LC56:
	.ascii	"SOCKS5_RESOLVE\000"
	.align	2
.LC57:
	.ascii	"SOCKS4_RESOLVE\000"
	.align	2
.LC58:
	.ascii	"SOCKS5_USER\000"
	.align	2
.LC59:
	.ascii	"SOCKS5_PASSWD\000"
	.align	2
.LC60:
	.ascii	"SOCKS5_PASSWORD\000"
	.align	2
.LC61:
	.ascii	"HTTP_PROXY\000"
	.align	2
.LC62:
	.ascii	"HTTP_PROXY_USER\000"
	.align	2
.LC63:
	.ascii	"HTTP_PROXY_PASSWORD\000"
	.align	2
.LC64:
	.ascii	"CONNECT_USER\000"
	.align	2
.LC65:
	.ascii	"CONNECT_PASSWORD\000"
	.align	2
.LC66:
	.ascii	"SSH_ASKPASS\000"
	.align	2
.LC67:
	.ascii	"SOCKS5_DIRECT\000"
	.align	2
.LC68:
	.ascii	"SOCKS4_DIRECT\000"
	.align	2
.LC69:
	.ascii	"SOCKS_DIRECT\000"
	.align	2
.LC70:
	.ascii	"HTTP_DIRECT\000"
	.align	2
.LC71:
	.ascii	"CONNECT_DIRECT\000"
	.align	2
.LC72:
	.ascii	"SOCKS5_AUTH\000"
	.data
	.align	2
	.type	parameter_table, %object
	.size	parameter_table, 176
parameter_table:
	.word	.LC52
	.word	0
	.word	.LC53
	.word	0
	.word	.LC54
	.word	0
	.word	.LC55
	.word	0
	.word	.LC56
	.word	0
	.word	.LC57
	.word	0
	.word	.LC58
	.word	0
	.word	.LC59
	.word	0
	.word	.LC60
	.word	0
	.word	.LC61
	.word	0
	.word	.LC62
	.word	0
	.word	.LC63
	.word	0
	.word	.LC64
	.word	0
	.word	.LC65
	.word	0
	.word	.LC66
	.word	0
	.word	.LC67
	.word	0
	.word	.LC68
	.word	0
	.word	.LC69
	.word	0
	.word	.LC70
	.word	0
	.word	.LC71
	.word	0
	.word	.LC72
	.word	0
	.word	0
	.word	0
	.text
	.align	2
	.global	find_parameter_item
	.syntax unified
	.arm
	.fpu softvfp
	.type	find_parameter_item, %function
find_parameter_item:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L70
.L73:
	ldr	r2, .L74
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #3]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L71
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r2, .L74
	add	r3, r3, r2
	b	.L72
.L71:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L70:
	ldr	r2, .L74
	ldr	r3, [fp, #-8]
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	bne	.L73
	mov	r3, #0
.L72:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L75:
	.align	2
.L74:
	.word	parameter_table
	.size	find_parameter_item, .-find_parameter_item
	.section	.rodata
	.align	2
.LC73:
	.ascii	"r\000"
	.align	2
.LC74:
	.ascii	"Reading parameter file(%s)\012\000"
	.align	2
.LC75:
	.ascii	"%s:%d: buffer overflow\012\000"
	.align	2
.LC76:
	.ascii	"%s:%d: missing equal sign\012\000"
	.align	2
.LC77:
	.ascii	"%s:%d: unknown parameter `%s'\012\000"
	.align	2
.LC78:
	.ascii	"Parameter `%s' is set to `%s'\012\000"
	.align	2
.LC79:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	read_parameter_file_1
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_parameter_file_1, %function
read_parameter_file_1:
	@ args = 0, pretend = 0, frame = 1072
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1072
	str	r0, [fp, #-1072]
	ldr	r3, .L111
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r1, .L111+4
	ldr	r0, [fp, #-1072]
	bl	fopen
	str	r0, [fp, #-1052]
	ldr	r3, [fp, #-1052]
	cmp	r3, #0
	beq	.L105
	ldr	r1, [fp, #-1072]
	ldr	r0, .L111+8
	bl	debug
	mov	r3, #1
	str	r3, [fp, #-1064]
	b	.L78
.L103:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	mov	r1, #10
	mov	r0, r3
	bl	strchr
	str	r0, [fp, #-1060]
	ldr	r3, [fp, #-1060]
	cmp	r3, #0
	bne	.L79
	ldr	r2, [fp, #-1064]
	ldr	r1, [fp, #-1072]
	ldr	r0, .L111+12
	bl	fatal
.L79:
	ldr	r3, [fp, #-1060]
	mov	r2, #0
	strb	r2, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	mov	r1, #35
	mov	r0, r3
	bl	strchr
	str	r0, [fp, #-1060]
	ldr	r3, [fp, #-1060]
	cmp	r3, #0
	beq	.L80
	ldr	r3, [fp, #-1060]
	mov	r2, #0
	strb	r2, [r3]
.L80:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	str	r3, [fp, #-1060]
	b	.L81
.L84:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L82
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L106
.L82:
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
.L81:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L84
	b	.L83
.L106:
	nop
.L83:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L107
	ldr	r3, [fp, #-1060]
	str	r3, [fp, #-1048]
	mov	r1, #61
	ldr	r0, [fp, #-1060]
	bl	strchr
	str	r0, [fp, #-1060]
	ldr	r3, [fp, #-1060]
	cmp	r3, #0
	bne	.L87
	ldr	r2, [fp, #-1064]
	ldr	r1, [fp, #-1072]
	ldr	r0, .L111+16
	bl	error
	b	.L86
.L87:
	ldr	r3, [fp, #-1060]
	sub	r3, r3, #1
	str	r3, [fp, #-1056]
	b	.L88
.L91:
	ldr	r3, [fp, #-1056]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L89
	ldr	r3, [fp, #-1056]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L108
.L89:
	ldr	r3, [fp, #-1056]
	sub	r3, r3, #1
	str	r3, [fp, #-1056]
.L88:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [fp, #-1056]
	cmp	r2, r3
	bcs	.L91
	b	.L90
.L108:
	nop
.L90:
	ldr	r3, [fp, #-1056]
	add	r3, r3, #1
	str	r3, [fp, #-1056]
	ldr	r3, [fp, #-1056]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
	b	.L92
.L95:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L93
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L109
.L93:
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
.L92:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L95
	b	.L94
.L109:
	nop
.L94:
	ldr	r3, [fp, #-1060]
	str	r3, [fp, #-1044]
	b	.L96
.L97:
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
.L96:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L97
	ldr	r3, [fp, #-1060]
	sub	r3, r3, #1
	str	r3, [fp, #-1060]
	b	.L98
.L101:
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L99
	ldr	r3, [fp, #-1060]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L110
.L99:
	ldr	r3, [fp, #-1060]
	sub	r3, r3, #1
	str	r3, [fp, #-1060]
.L98:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [fp, #-1060]
	cmp	r2, r3
	bcs	.L101
	b	.L100
.L110:
	nop
.L100:
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
	ldr	r3, [fp, #-1060]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-1048]
	cmp	r3, #0
	beq	.L86
	ldr	r3, [fp, #-1044]
	cmp	r3, #0
	beq	.L86
	ldr	r0, [fp, #-1048]
	bl	find_parameter_item
	str	r0, [fp, #-1040]
	ldr	r3, [fp, #-1040]
	cmp	r3, #0
	bne	.L102
	ldr	r3, [fp, #-1048]
	ldr	r2, [fp, #-1064]
	ldr	r1, [fp, #-1072]
	ldr	r0, .L111+20
	bl	error
	b	.L86
.L102:
	ldr	r0, [fp, #-1044]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-1040]
	str	r2, [r3, #4]
	ldr	r2, [fp, #-1044]
	ldr	r1, [fp, #-1048]
	ldr	r0, .L111+24
	bl	debug
	b	.L86
.L107:
	nop
.L86:
	ldr	r3, [fp, #-1064]
	add	r3, r3, #1
	str	r3, [fp, #-1064]
.L78:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldr	r2, [fp, #-1052]
	mov	r1, #1024
	mov	r0, r3
	bl	fgets
	mov	r3, r0
	cmp	r3, #0
	bne	.L103
.L105:
	nop
	ldr	r3, .L111
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L104
	bl	__stack_chk_fail
.L104:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L112:
	.align	2
.L111:
	.word	.LC79
	.word	.LC73
	.word	.LC74
	.word	.LC75
	.word	.LC76
	.word	.LC77
	.word	.LC78
	.size	read_parameter_file_1, .-read_parameter_file_1
	.section	.rodata
	.align	2
.LC80:
	.ascii	"/etc/connectrc\000"
	.align	2
.LC81:
	.ascii	"/.connectrc\000"
	.text
	.align	2
	.global	read_parameter_file
	.syntax unified
	.arm
	.fpu softvfp
	.type	read_parameter_file, %function
read_parameter_file:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	ldr	r0, .L115
	bl	read_parameter_file_1
	bl	getuid
	mov	r3, r0
	mov	r0, r3
	bl	getpwuid
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L114
	bl	getuid
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L115+4
	bl	fatal
.L114:
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r3, #12
	mov	r0, r3
	bl	xmalloc
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-12]
	ldr	r3, [r3, #20]
	mov	r1, r3
	ldr	r0, [fp, #-8]
	bl	strcpy
	ldr	r0, [fp, #-8]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-8]
	add	r3, r3, r2
	ldr	r2, .L115+8
	mov	r0, r3
	mov	r1, r2
	mov	r3, #12
	mov	r2, r3
	bl	memcpy
	ldr	r0, [fp, #-8]
	bl	read_parameter_file_1
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L116:
	.align	2
.L115:
	.word	.LC80
	.word	.LC51
	.word	.LC81
	.size	read_parameter_file, .-read_parameter_file
	.align	2
	.global	getparam
	.syntax unified
	.arm
	.fpu softvfp
	.type	getparam, %function
getparam:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	getenv
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L118
	ldr	r0, [fp, #-16]
	bl	find_parameter_item
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L118
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #4]
	str	r3, [fp, #-12]
.L118:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	getparam, .-getparam
	.comm	direct_addr_list,4096,4
	.global	n_direct_addr_list
	.bss
	.align	2
	.type	n_direct_addr_list, %object
	.size	n_direct_addr_list, 4
n_direct_addr_list:
	.space	4
	.text
	.align	2
	.global	mask_addr
	.syntax unified
	.arm
	.fpu softvfp
	.type	mask_addr, %function
mask_addr:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #28
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-8]
	b	.L121
.L122:
	ldr	r3, [fp, #-8]
	add	r2, r3, #1
	str	r2, [fp, #-8]
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	ldrb	r2, [r3]	@ zero_extendqisi2
	and	r2, r2, r1
	and	r2, r2, #255
	strb	r2, [r3]
.L121:
	ldr	r3, [fp, #-24]
	sub	r2, r3, #1
	str	r2, [fp, #-24]
	cmp	r3, #0
	bgt	.L122
	nop
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
	.size	mask_addr, .-mask_addr
	.section	.rodata
	.align	2
.LC82:
	.ascii	"direct address table is full!\012\000"
	.align	2
.LC83:
	.ascii	"!\000"
	.align	2
.LC84:
	.ascii	"\000"
	.align	2
.LC85:
	.ascii	"adding direct addr entry: %s%s/%s\012\000"
	.align	2
.LC86:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	add_direct_addr
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_direct_addr, %function
add_direct_addr:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #36
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, .L130
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L130+4
	ldr	r3, [r3]
	cmp	r3, #255
	ble	.L124
	ldr	r0, .L130+8
	bl	error
	mvn	r3, #0
	b	.L128
.L124:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	sub	r3, fp, #24
	mov	r2, #4
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	mask_addr
	ldr	r0, [fp, #-24]
	bl	inet_ntoa
	mov	r3, r0
	mov	r0, r3
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-40]
	cmp	r3, #0
	beq	.L126
	ldr	r4, .L130+12
	b	.L127
.L126:
	ldr	r4, .L130+16
.L127:
	ldr	r3, [fp, #-36]
	ldr	r0, [r3]
	bl	inet_ntoa
	mov	r3, r0
	ldr	r2, [fp, #-20]
	mov	r1, r4
	ldr	r0, .L130+20
	bl	debug
	ldr	r0, [fp, #-20]
	bl	free
	ldr	r3, .L130+4
	ldr	r3, [r3]
	lsl	r3, r3, #4
	ldr	r2, .L130+24
	add	r3, r3, r2
	sub	r1, fp, #24
	mov	r2, #4
	mov	r0, r3
	bl	memcpy
	ldr	r3, .L130+4
	ldr	r3, [r3]
	lsl	r3, r3, #4
	ldr	r2, .L130+24
	add	r3, r3, r2
	add	r3, r3, #4
	mov	r2, #4
	ldr	r1, [fp, #-36]
	mov	r0, r3
	bl	memcpy
	ldr	r3, .L130+4
	ldr	r3, [r3]
	ldr	r2, .L130+24
	lsl	r3, r3, #4
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #8]
	ldr	r3, .L130+4
	ldr	r3, [r3]
	ldr	r2, .L130+24
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r2, [fp, #-40]
	str	r2, [r3, #12]
	ldr	r3, .L130+4
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L130+4
	str	r3, [r2]
	mov	r3, #0
.L128:
	ldr	r2, .L130
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L129
	bl	__stack_chk_fail
.L129:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L131:
	.align	2
.L130:
	.word	.LC86
	.word	n_direct_addr_list
	.word	.LC82
	.word	.LC83
	.word	.LC84
	.word	.LC85
	.word	direct_addr_list
	.size	add_direct_addr, .-add_direct_addr
	.section	.rodata
	.align	2
.LC87:
	.ascii	"adding direct name entry: %s%s\012\000"
	.text
	.align	2
	.global	add_direct_host
	.syntax unified
	.arm
	.fpu softvfp
	.type	add_direct_host, %function
add_direct_host:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #12
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L139
	ldr	r3, [r3]
	cmp	r3, #255
	ble	.L133
	ldr	r0, .L139+4
	bl	error
	mvn	r3, #0
	b	.L134
.L133:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #42
	bne	.L135
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L135:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L136
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L136:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L137
	ldr	r3, .L139+8
	b	.L138
.L137:
	ldr	r3, .L139+12
.L138:
	ldr	r2, [fp, #-16]
	mov	r1, r3
	ldr	r0, .L139+16
	bl	debug
	ldr	r0, [fp, #-16]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L139
	ldr	r4, [r3]
	mov	r0, r2
	bl	downcase
	mov	r2, r0
	ldr	r1, .L139+20
	lsl	r3, r4, #4
	add	r3, r1, r3
	str	r2, [r3, #8]
	ldr	r3, .L139
	ldr	r3, [r3]
	ldr	r2, .L139+20
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	str	r2, [r3, #12]
	ldr	r3, .L139
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L139
	str	r3, [r2]
	mov	r3, #0
.L134:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L140:
	.align	2
.L139:
	.word	n_direct_addr_list
	.word	.LC82
	.word	.LC83
	.word	.LC84
	.word	.LC87
	.word	direct_addr_list
	.size	add_direct_host, .-add_direct_host
	.section	.rodata
	.align	2
.LC88:
	.ascii	"str != NULL\000"
	.text
	.align	2
	.global	parse_addr_pair
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_addr_pair, %function
parse_addr_pair:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	str	r2, [fp, #-40]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L142
	ldr	r3, .L173
	mov	r2, #872
	ldr	r1, .L173+4
	ldr	r0, .L173+8
	bl	__assert_fail
.L142:
	ldr	r3, [fp, #-36]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-40]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-36]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L143
.L152:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L170
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L146
	mvn	r3, #0
	b	.L147
.L146:
	ldr	r0, [fp, #-24]
	bl	atoi
	mov	r1, r0
	ldr	r3, [fp, #-20]
	add	r2, r3, #1
	str	r2, [fp, #-20]
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r2, r3, #1
	str	r2, [fp, #-16]
	mvn	r2, #0
	strb	r2, [r3]
	b	.L148
.L149:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L148:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L149
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L171
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L143:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L152
	b	.L145
.L170:
	nop
	b	.L145
.L171:
	nop
.L145:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L153
	mov	r3, #0
	b	.L147
.L153:
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #47
	beq	.L154
	mvn	r3, #0
	b	.L147
.L154:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-40]
	mov	r2, #0
	str	r2, [r3]
	mov	r1, #46
	ldr	r0, [fp, #-24]
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L155
	ldr	r3, [fp, #-40]
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L156
.L163:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L157
	mvn	r3, #0
	b	.L147
.L157:
	ldr	r0, [fp, #-24]
	bl	atoi
	mov	r1, r0
	ldr	r3, [fp, #-16]
	add	r2, r3, #1
	str	r2, [fp, #-16]
	and	r2, r1, #255
	strb	r2, [r3]
	b	.L158
.L159:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L158:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L159
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L172
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L156:
	ldr	r3, [fp, #-12]
	cmp	r3, #3
	ble	.L163
	b	.L164
.L155:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L165
	mvn	r3, #0
	b	.L147
.L165:
	ldr	r0, [fp, #-24]
	bl	atoi
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L166
	ldr	r3, [fp, #-8]
	cmp	r3, #32
	ble	.L167
.L166:
	mvn	r3, #0
	b	.L147
.L167:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L168
	ldr	r3, [fp, #-8]
	rsb	r3, r3, #32
	mvn	r2, #0
	lsl	r3, r2, r3
	mov	r0, r3
	bl	htonl
	mov	r3, r0
	b	.L169
.L168:
	mov	r3, #0
.L169:
	ldr	r2, [fp, #-40]
	str	r3, [r2]
	b	.L164
.L172:
	nop
.L164:
	mov	r3, #0
.L147:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L174:
	.align	2
.L173:
	.word	__PRETTY_FUNCTION__.8002
	.word	.LC46
	.word	.LC88
	.size	parse_addr_pair, .-parse_addr_pair
	.section	.rodata
	.align	2
.LC89:
	.ascii	"making direct addr list from: '%s'\012\000"
	.align	2
.LC90:
	.ascii	"too many entries in %s\000"
	.align	2
.LC91:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	initialize_direct_addr
	.syntax unified
	.arm
	.fpu softvfp
	.type	initialize_direct_addr, %function
initialize_direct_addr:
	@ args = 0, pretend = 0, frame = 40
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #40
	ldr	r3, .L195
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-28]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r3, .L195+4
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L176
	ldr	r3, .L195+8
	ldr	r3, [r3]
	cmp	r3, #5
	bne	.L177
	ldr	r3, .L195+12
	str	r3, [fp, #-16]
	b	.L178
.L177:
	ldr	r3, .L195+16
	str	r3, [fp, #-16]
.L178:
	ldr	r0, [fp, #-16]
	bl	getparam
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L179
	ldr	r0, .L195+20
	bl	getparam
	str	r0, [fp, #-28]
	b	.L179
.L176:
	ldr	r3, .L195+4
	ldr	r3, [r3]
	cmp	r3, #3
	bne	.L179
	ldr	r0, .L195+24
	bl	getparam
	str	r0, [fp, #-28]
.L179:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L180
	ldr	r0, .L195+28
	bl	getparam
	str	r0, [fp, #-28]
.L180:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L194
	ldr	r1, [fp, #-28]
	ldr	r0, .L195+32
	bl	debug
	ldr	r0, [fp, #-28]
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-12]
.L191:
	ldr	r3, [fp, #-12]
	cmp	r3, #255
	ble	.L183
	ldr	r1, [fp, #-16]
	ldr	r0, .L195+36
	bl	error
	b	.L184
.L183:
	mov	r1, #44
	ldr	r0, [fp, #-24]
	bl	strchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L185
	ldr	r3, [fp, #-20]
	add	r2, r3, #1
	str	r2, [fp, #-20]
	mov	r2, #0
	strb	r2, [r3]
.L185:
	mov	r3, #0
	str	r3, [fp, #-40]
	mov	r3, #0
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #33
	bne	.L186
	mov	r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L187
.L186:
	mov	r3, #0
	str	r3, [fp, #-32]
.L187:
	sub	r2, fp, #36
	sub	r3, fp, #40
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	parse_addr_pair
	mov	r3, r0
	cmp	r3, #0
	bne	.L188
	sub	r1, fp, #36
	sub	r3, fp, #40
	ldr	r2, [fp, #-32]
	mov	r0, r3
	bl	add_direct_addr
	b	.L189
.L188:
	ldr	r1, [fp, #-32]
	ldr	r0, [fp, #-24]
	bl	add_direct_host
.L189:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L190
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-24]
.L190:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L191
.L184:
	ldr	r0, [fp, #-28]
	bl	free
	b	.L175
.L194:
	nop
.L175:
	ldr	r3, .L195
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L193
	bl	__stack_chk_fail
.L193:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L196:
	.align	2
.L195:
	.word	.LC91
	.word	relay_method
	.word	socks_version
	.word	.LC67
	.word	.LC68
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	.LC89
	.word	.LC90
	.size	initialize_direct_addr, .-initialize_direct_addr
	.align	2
	.global	cmp_addr
	.syntax unified
	.arm
	.fpu softvfp
	.type	cmp_addr, %function
cmp_addr:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, [fp, #-16]
	mov	r2, r3
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-8]
	bl	memcmp
	mov	r3, r0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	cmp_addr, .-cmp_addr
	.section	.rodata
	.align	2
.LC92:
	.ascii	" (negative)\000"
	.align	2
.LC93:
	.ascii	"match with: %s/%s%s\012\000"
	.align	2
.LC94:
	.ascii	"not matched, addr to be relayed: %s\012\000"
	.align	2
.LC95:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	is_direct_address
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_direct_address, %function
is_direct_address:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r3, .L210
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L200
.L206:
	ldr	r2, .L210+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r3, [r3, #8]
	cmp	r3, #0
	bne	.L209
	ldr	r2, .L210+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r3, [r3, #12]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	ldr	r2, .L210+4
	add	r3, r3, r2
	add	r1, r3, #4
	sub	r3, fp, #28
	mov	r2, #4
	mov	r0, r3
	bl	mask_addr
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	ldr	r2, .L210+4
	add	r1, r3, r2
	sub	r3, fp, #28
	mov	r2, #4
	mov	r0, r3
	bl	cmp_addr
	mov	r3, r0
	cmp	r3, #0
	bne	.L202
	ldr	r2, .L210+4
	ldr	r3, [fp, #-24]
	ldr	r0, [r2, r3, lsl #4]
	bl	inet_ntoa
	mov	r3, r0
	mov	r0, r3
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r2, .L210+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r0, [r3, #4]
	bl	inet_ntoa
	mov	r3, r0
	mov	r0, r3
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L203
	ldr	r3, .L210+8
	b	.L204
.L203:
	ldr	r3, .L210+12
.L204:
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, .L210+16
	bl	debug
	ldr	r0, [fp, #-16]
	bl	free
	ldr	r0, [fp, #-12]
	bl	free
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	b	.L207
.L209:
	nop
.L202:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L200:
	ldr	r3, .L210+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L206
	ldr	r0, [fp, #-32]
	bl	inet_ntoa
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L210+24
	bl	debug
	mov	r3, #0
.L207:
	ldr	r2, .L210
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L208
	bl	__stack_chk_fail
.L208:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L211:
	.align	2
.L210:
	.word	.LC95
	.word	direct_addr_list
	.word	.LC92
	.word	.LC84
	.word	.LC93
	.word	n_direct_addr_list
	.word	.LC94
	.size	is_direct_address, .-is_direct_address
	.align	2
	.global	domain_match
	.syntax unified
	.arm
	.fpu softvfp
	.type	domain_match, %function
domain_match:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r0, [fp, #-24]
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r0, [fp, #-28]
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	blt	.L213
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L213
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L214
.L213:
	mov	r3, #0
	b	.L215
.L214:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	b	.L216
.L219:
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	ldrb	r2, [r3]	@ zero_extendqisi2
	ldr	r3, [fp, #-8]
	sub	r3, r3, #1
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r2, r3
	bne	.L223
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	str	r3, [fp, #-16]
.L216:
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	ble	.L218
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bgt	.L219
	b	.L218
.L223:
	nop
.L218:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L220
	mov	r3, #0
	b	.L215
.L220:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	beq	.L221
	ldr	r3, [fp, #-12]
	sub	r3, r3, #1
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L222
.L221:
	mov	r3, #1
	b	.L215
.L222:
	mov	r3, #0
.L215:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	domain_match, .-domain_match
	.section	.rodata
	.align	2
.LC96:
	.ascii	"checking %s is for direct?\012\000"
	.align	2
.LC97:
	.ascii	"match with: %s%s\012\000"
	.text
	.align	2
	.global	is_direct_name
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_direct_name, %function
is_direct_name:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r1, [fp, #-32]
	ldr	r0, .L235
	bl	debug
	ldr	r0, [fp, #-32]
	bl	strdup
	mov	r3, r0
	mov	r0, r3
	bl	downcase
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bgt	.L225
	mov	r3, #0
	b	.L226
.L225:
	ldr	r3, [fp, #-20]
	ldr	r2, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L227
.L233:
	ldr	r2, .L235+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r3, [r3, #8]
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L234
	ldr	r2, .L235+4
	ldr	r3, [fp, #-24]
	lsl	r3, r3, #4
	add	r3, r2, r3
	ldr	r3, [r3, #12]
	str	r3, [fp, #-8]
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-32]
	bl	domain_match
	mov	r3, r0
	cmp	r3, #0
	beq	.L229
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L230
	ldr	r3, .L235+8
	b	.L231
.L230:
	ldr	r3, .L235+12
.L231:
	mov	r2, r3
	ldr	r1, [fp, #-12]
	ldr	r0, .L235+16
	bl	debug
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L232
	mov	r3, #0
	b	.L226
.L232:
	mov	r3, #1
	b	.L226
.L234:
	nop
.L229:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L227:
	ldr	r3, .L235+20
	ldr	r3, [r3]
	ldr	r2, [fp, #-24]
	cmp	r2, r3
	blt	.L233
	mov	r3, #0
.L226:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L236:
	.align	2
.L235:
	.word	.LC96
	.word	direct_addr_list
	.word	.LC92
	.word	.LC84
	.word	.LC97
	.word	n_direct_addr_list
	.size	is_direct_name, .-is_direct_name
	.section	.rodata
	.align	2
.LC98:
	.ascii	"%s is for direct.\012\000"
	.align	2
.LC99:
	.ascii	"%s is for not direct.\012\000"
	.text
	.align	2
	.global	check_direct
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_direct, %function
check_direct:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r0, [fp, #-16]
	bl	inet_addr
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	beq	.L238
	ldr	r0, [fp, #-8]
	bl	is_direct_address
	mov	r3, r0
	cmp	r3, #0
	beq	.L239
	ldr	r1, [fp, #-16]
	ldr	r0, .L242
	bl	debug
	mov	r3, #1
	b	.L241
.L238:
	ldr	r0, [fp, #-16]
	bl	is_direct_name
	mov	r3, r0
	cmp	r3, #0
	beq	.L239
	ldr	r1, [fp, #-16]
	ldr	r0, .L242
	bl	debug
	mov	r3, #1
	b	.L241
.L239:
	ldr	r1, [fp, #-16]
	ldr	r0, .L242+4
	bl	debug
	mov	r3, #0
.L241:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L243:
	.align	2
.L242:
	.word	.LC98
	.word	.LC99
	.size	check_direct, .-check_direct
	.global	intr_flag
	.bss
	.align	2
	.type	intr_flag, %object
	.size	intr_flag, 4
intr_flag:
	.space	4
	.text
	.align	2
	.global	intr_handler
	.syntax unified
	.arm
	.fpu softvfp
	.type	intr_handler, %function
intr_handler:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, .L245
	mov	r2, #1
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L246:
	.align	2
.L245:
	.word	intr_flag
	.size	intr_handler, .-intr_handler
	.align	2
	.global	tty_change_echo
	.syntax unified
	.arm
	.fpu softvfp
	.type	tty_change_echo, %function
tty_change_echo:
	@ 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]
	str	r1, [fp, #-12]
	ldr	r3, .L253
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L248
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L248
	ldr	r2, .L253+4
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	tcsetattr
	ldr	r3, .L253
	mov	r2, #0
	str	r2, [r3]
	mov	r2, #0
	ldr	r1, .L253+8
	mov	r0, #2
	bl	sigprocmask
	mov	r2, #0
	ldr	r1, .L253+12
	mov	r0, #2
	bl	sigaction
	ldr	r3, .L253+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L250
	bl	getpid
	mov	r3, r0
	mov	r1, #2
	mov	r0, r3
	bl	kill
	ldr	r0, .L253+20
	bl	sigemptyset
	ldr	r0, .L253+20
	bl	sigsuspend
	ldr	r3, .L253+16
	mov	r2, #0
	str	r2, [r3]
	b	.L250
.L248:
	ldr	r3, .L253
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L252
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L252
	ldr	r0, .L253+20
	bl	sigemptyset
	mov	r1, #20
	ldr	r0, .L253+20
	bl	sigaddset
	ldr	r2, .L253+8
	ldr	r1, .L253+20
	mov	r0, #0
	bl	sigprocmask
	ldr	r3, .L253+16
	mov	r2, #0
	str	r2, [r3]
	mov	r2, #140
	mov	r1, #0
	ldr	r0, .L253+24
	bl	memset
	ldr	r3, .L253+24
	ldr	r2, .L253+28
	str	r2, [r3]
	ldr	r2, .L253+12
	ldr	r1, .L253+24
	mov	r0, #2
	bl	sigaction
	ldr	r1, .L253+4
	ldr	r0, [fp, #-8]
	bl	tcgetattr
	mov	r3, r0
	cmp	r3, #0
	bne	.L252
	ldr	r3, .L253+4
	ldr	r3, [r3, #12]
	and	r3, r3, #8
	cmp	r3, #0
	beq	.L252
	ldr	r3, .L253
	mov	r2, #1
	str	r2, [r3]
	ldr	r2, .L253+32
	ldr	r3, .L253+4
	mov	ip, r2
	mov	lr, r3
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldmia	lr!, {r0, r1, r2, r3}
	stmia	ip!, {r0, r1, r2, r3}
	ldm	lr, {r0, r1, r2}
	stm	ip, {r0, r1, r2}
	ldr	r3, .L253+32
	ldr	r3, [r3, #12]
	bic	r3, r3, #120
	ldr	r2, .L253+32
	str	r3, [r2, #12]
	ldr	r2, .L253+32
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	tcsetattr
.L250:
	nop
.L252:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L254:
	.align	2
.L253:
	.word	disabled.8089
	.word	otio.8084
	.word	oset.8086
	.word	osa.8088
	.word	intr_flag
	.word	nset.8085
	.word	nsa.8087
	.word	intr_handler
	.word	ntio.8083
	.size	tty_change_echo, .-tty_change_echo
	.section	.rodata
	.align	2
.LC100:
	.ascii	"/dev/tty\000"
	.align	2
.LC101:
	.ascii	"Unable to open %s\012\000"
	.align	2
.LC102:
	.ascii	"\012\000"
	.text
	.align	2
	.global	tty_readpass
	.syntax unified
	.arm
	.fpu softvfp
	.type	tty_readpass, %function
tty_readpass:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r1, #2
	ldr	r0, .L261
	bl	open
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L256
	ldr	r1, .L261
	ldr	r0, .L261+4
	bl	error
	mvn	r3, #0
	b	.L257
.L256:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L258
	mvn	r3, #0
	b	.L257
.L258:
	ldr	r0, [fp, #-16]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-8]
	bl	write
	ldr	r3, [fp, #-20]
	mov	r2, #0
	strb	r2, [r3]
	mov	r1, #0
	ldr	r0, [fp, #-8]
	bl	tty_change_echo
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	mov	r2, r3
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-8]
	bl	read
	str	r0, [fp, #-12]
	mov	r1, #1
	ldr	r0, [fp, #-8]
	bl	tty_change_echo
	mov	r2, #1
	ldr	r1, .L261+8
	ldr	r0, [fp, #-8]
	bl	write
	ldr	r0, [fp, #-8]
	bl	close
	mov	r1, #10
	ldr	r0, [fp, #-20]
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L259
	mvn	r3, #0
	b	.L257
.L259:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	ble	.L260
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3]
.L260:
	ldr	r3, [fp, #-12]
.L257:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L262:
	.align	2
.L261:
	.word	.LC100
	.word	.LC101
	.word	.LC102
	.size	tty_readpass, .-tty_readpass
	.section	.rodata
	.align	2
.LC103:
	.ascii	"SOCKS4_USER\000"
	.align	2
.LC104:
	.ascii	"SOCKS_USER\000"
	.text
	.align	2
	.global	determine_relay_user
	.syntax unified
	.arm
	.fpu softvfp
	.type	determine_relay_user, %function
determine_relay_user:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, .L271
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L264
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L265
	ldr	r3, .L271+4
	ldr	r3, [r3]
	cmp	r3, #5
	bne	.L265
	ldr	r0, .L271+8
	bl	getparam
	str	r0, [fp, #-8]
.L265:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L266
	ldr	r3, .L271+4
	ldr	r3, [r3]
	cmp	r3, #4
	bne	.L266
	ldr	r0, .L271+12
	bl	getparam
	str	r0, [fp, #-8]
.L266:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L267
	ldr	r0, .L271+16
	bl	getparam
	str	r0, [fp, #-8]
	b	.L267
.L264:
	ldr	r3, .L271
	ldr	r3, [r3]
	cmp	r3, #3
	bne	.L267
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L267
	ldr	r0, .L271+20
	bl	getparam
	str	r0, [fp, #-8]
.L267:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L268
	ldr	r0, .L271+24
	bl	getparam
	str	r0, [fp, #-8]
.L268:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L269
	bl	getusername
	str	r0, [fp, #-8]
.L269:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L272:
	.align	2
.L271:
	.word	relay_method
	.word	socks_version
	.word	.LC58
	.word	.LC103
	.word	.LC104
	.word	.LC62
	.word	.LC64
	.size	determine_relay_user, .-determine_relay_user
	.align	2
	.global	determine_relay_password
	.syntax unified
	.arm
	.fpu softvfp
	.type	determine_relay_password, %function
determine_relay_password:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #8
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L274
	ldr	r3, .L279
	ldr	r3, [r3]
	cmp	r3, #3
	bne	.L274
	ldr	r0, .L279+4
	bl	getparam
	str	r0, [fp, #-8]
.L274:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L275
	ldr	r3, .L279
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L275
	ldr	r0, .L279+8
	bl	getparam
	str	r0, [fp, #-8]
.L275:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L276
	ldr	r3, .L279
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L276
	ldr	r0, .L279+12
	bl	getparam
	str	r0, [fp, #-8]
.L276:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L277
	ldr	r0, .L279+16
	bl	getparam
	str	r0, [fp, #-8]
.L277:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L280:
	.align	2
.L279:
	.word	relay_method
	.word	.LC63
	.word	.LC59
	.word	.LC60
	.word	.LC65
	.size	determine_relay_password, .-determine_relay_password
	.section	.rodata
	.align	2
.LC105:
	.ascii	"No direct address are specified.\012\000"
	.align	2
.LC106:
	.ascii	"%d direct address entries.\012\000"
	.align	2
.LC107:
	.ascii	"Failed to determine SOCKS server.\012\000"
	.align	2
.LC108:
	.ascii	"Invalid resolve method: %s\012\000"
	.align	2
.LC109:
	.ascii	"You must specify http proxy server\012\000"
	.align	2
.LC110:
	.ascii	"TELNET_PROXY\000"
	.align	2
.LC111:
	.ascii	"You must specify telnet proxy server\012\000"
	.align	2
.LC112:
	.ascii	"http://\000"
	.align	2
.LC113:
	.ascii	"/\000"
	.text
	.align	2
	.global	set_relay
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_relay, %function
set_relay:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-24]
	str	r1, [fp, #-28]
	ldr	r2, .L314
	ldr	r3, [fp, #-24]
	str	r3, [r2]
	bl	read_parameter_file
	bl	initialize_direct_addr
	ldr	r3, .L314+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L282
	ldr	r0, .L314+8
	bl	debug
	b	.L283
.L282:
	ldr	r3, .L314+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L314+12
	bl	debug
.L283:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	cmp	r3, #3
	ldrls	pc, [pc, r3, asl #2]
	b	.L284
.L286:
	.word	.L289
	.word	.L288
	.word	.L287
	.word	.L285
.L289:
	mvn	r3, #0
	b	.L290
.L288:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L312
	ldr	r3, .L314+16
	ldr	r3, [r3]
	cmp	r3, #4
	beq	.L292
	cmp	r3, #5
	bne	.L291
	ldr	r0, .L314+20
	bl	getparam
	str	r0, [fp, #-28]
	b	.L291
.L292:
	ldr	r0, .L314+24
	bl	getparam
	str	r0, [fp, #-28]
	b	.L291
.L312:
	nop
.L291:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L293
	ldr	r0, .L314+28
	bl	getparam
	str	r0, [fp, #-28]
.L293:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L294
	ldr	r0, .L314+32
	bl	fatal
.L294:
	ldr	r3, .L314+36
	ldr	r2, .L314+40
	strh	r2, [r3]	@ movhi
	ldr	r3, .L314+44
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L313
	ldr	r3, .L314+16
	ldr	r3, [r3]
	cmp	r3, #5
	bne	.L296
	ldr	r0, .L314+48
	bl	getparam
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L297
.L296:
	ldr	r3, .L314+16
	ldr	r3, [r3]
	cmp	r3, #4
	bne	.L298
	ldr	r0, .L314+52
	bl	getparam
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L297
.L298:
	ldr	r0, .L314+56
	bl	getparam
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L299
.L297:
	ldr	r0, [fp, #-12]
	bl	lookup_resolve
	mov	r3, r0
	ldr	r2, .L314+44
	str	r3, [r2]
	ldr	r3, .L314+44
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L295
	ldr	r1, [fp, #-12]
	ldr	r0, .L314+60
	bl	fatal
	b	.L295
.L299:
	ldr	r3, .L314+16
	ldr	r3, [r3]
	cmp	r3, #5
	bne	.L301
	ldr	r3, .L314+44
	mov	r2, #2
	str	r2, [r3]
	b	.L313
.L301:
	ldr	r3, .L314+44
	mov	r2, #1
	str	r2, [r3]
	b	.L313
.L295:
	b	.L313
.L287:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L302
	ldr	r0, .L314+64
	bl	getparam
	str	r0, [fp, #-28]
.L302:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L303
	ldr	r0, .L314+68
	bl	fatal
.L303:
	ldr	r3, .L314+36
	mov	r2, #80
	strh	r2, [r3]	@ movhi
	b	.L284
.L285:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L304
	ldr	r0, .L314+72
	bl	getparam
	str	r0, [fp, #-28]
.L304:
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	bne	.L305
	ldr	r0, .L314+76
	bl	fatal
.L305:
	ldr	r3, .L314+36
	mov	r2, #23
	strh	r2, [r3]	@ movhi
	b	.L284
.L313:
	nop
.L284:
	ldr	r1, .L314+80
	ldr	r0, [fp, #-28]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	beq	.L306
	ldr	r3, [fp, #-28]
	add	r3, r3, #7
	mov	r0, r3
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-16]
	ldr	r1, .L314+84
	ldr	r0, [fp, #-16]
	bl	strcspn
	mov	r2, r0
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	b	.L307
.L306:
	ldr	r0, [fp, #-28]
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-16]
.L307:
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-28]
	mov	r1, #64
	ldr	r0, [fp, #-28]
	bl	strchr
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	beq	.L308
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r0, [fp, #-28]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L314+88
	str	r2, [r3]
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L308:
	ldr	r3, .L314+88
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L309
	bl	determine_relay_user
	mov	r3, r0
	ldr	r2, .L314+88
	str	r3, [r2]
.L309:
	mov	r1, #58
	ldr	r0, [fp, #-28]
	bl	strchr
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L310
	ldr	r0, [fp, #-28]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L314+92
	str	r2, [r3]
	b	.L311
.L310:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	ldr	r2, .L314+36
	strh	r3, [r2]	@ movhi
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r0, [fp, #-28]
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L314+92
	str	r2, [r3]
.L311:
	ldr	r0, [fp, #-16]
	bl	free
	mov	r3, #0
.L290:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L315:
	.align	2
.L314:
	.word	relay_method
	.word	n_direct_addr_list
	.word	.LC105
	.word	.LC106
	.word	socks_version
	.word	.LC53
	.word	.LC54
	.word	.LC52
	.word	.LC107
	.word	relay_port
	.word	1080
	.word	socks_resolve
	.word	.LC56
	.word	.LC57
	.word	.LC55
	.word	.LC108
	.word	.LC61
	.word	.LC109
	.word	.LC110
	.word	.LC111
	.word	.LC112
	.word	.LC113
	.word	relay_user
	.word	relay_host
	.size	set_relay, .-set_relay
	.section	.rodata
	.align	2
.LC114:
	.ascii	"Unknown service, '%s'\012\000"
	.align	2
.LC115:
	.ascii	"service: %s => %d\012\000"
	.text
	.align	2
	.global	resolve_port
	.syntax unified
	.arm
	.fpu softvfp
	.type	resolve_port, %function
resolve_port:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	ldr	r3, .L321
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strspn
	mov	r2, r0
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L317
	ldr	r0, [fp, #-16]
	bl	atoi
	str	r0, [fp, #-12]
	b	.L318
.L317:
	mov	r1, #0
	ldr	r0, [fp, #-16]
	bl	getservbyname
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L319
	ldr	r1, [fp, #-16]
	ldr	r0, .L321+4
	bl	debug
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L318
.L319:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r0, r3
	bl	ntohs
	mov	r3, r0
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-16]
	ldr	r0, .L321+8
	bl	debug
.L318:
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L322:
	.align	2
.L321:
	.word	digits
	.word	.LC114
	.word	.LC115
	.size	resolve_port, .-resolve_port
	.section	.rodata
	.align	2
.LC116:
	.ascii	": \000"
	.align	2
.LC117:
	.ascii	"unknown\000"
	.align	2
.LC118:
	.ascii	"%d.%d\000"
	.text
	.align	2
	.global	make_revstr
	.syntax unified
	.arm
	.fpu softvfp
	.type	make_revstr, %function
make_revstr:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	ldr	r3, .L326
	ldr	r3, [r3]
	ldr	r1, .L326+4
	mov	r0, r3
	bl	strstr
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L324
	ldr	r0, .L326+8
	bl	strdup
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L326+12
	str	r2, [r3]
	b	.L323
.L324:
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	str	r3, [fp, #-8]
	ldr	r0, [fp, #-8]
	bl	atoi
	mov	r3, r0
	ldr	r2, .L326+16
	str	r3, [r2]
	mov	r0, #20
	bl	xmalloc
	mov	r3, r0
	ldr	r2, .L326+12
	str	r3, [r2]
	ldr	r3, .L326+12
	ldr	r0, [r3]
	ldr	r3, .L326+20
	ldr	r2, [r3]
	ldr	r3, .L326+16
	ldr	r3, [r3]
	str	r3, [sp]
	mov	r3, r2
	ldr	r2, .L326+24
	mov	r1, #20
	bl	snprintf
.L323:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L327:
	.align	2
.L326:
	.word	rcs_revstr
	.word	.LC116
	.word	.LC117
	.word	revstr
	.word	minor_version
	.word	major_version
	.word	.LC118
	.size	make_revstr, .-make_revstr
	.section	.rodata
	.align	2
.LC119:
	.ascii	"option '-%c' needs argument.\012\000"
	.align	2
.LC120:
	.ascii	"option '%c' needs argument.\012\000"
	.align	2
.LC121:
	.ascii	"%s\012Version %s\012\000"
	.align	2
.LC122:
	.ascii	"unknown option '-%c'\012\000"
	.align	2
.LC123:
	.ascii	"connect-\000"
	.align	2
.LC124:
	.ascii	".\000"
	.align	2
.LC125:
	.ascii	"You must specify the destination port correctly.\012"
	.ascii	"\000"
	.align	2
.LC126:
	.ascii	"Invalid relay port: %d\012\000"
	.align	2
.LC127:
	.ascii	"relay_method = %s (%d)\012\000"
	.align	2
.LC128:
	.ascii	"relay_host=%s\012\000"
	.align	2
.LC129:
	.ascii	"relay_port=%d\012\000"
	.align	2
.LC130:
	.ascii	"relay_user=%s\012\000"
	.align	2
.LC131:
	.ascii	"socks_version=%d\012\000"
	.align	2
.LC132:
	.ascii	"socks_resolve=%s (%d)\012\000"
	.align	2
.LC133:
	.ascii	"local_type=%s\012\000"
	.align	2
.LC134:
	.ascii	"local_port=%d\012\000"
	.align	2
.LC135:
	.ascii	"  with holding remote session.\012\000"
	.align	2
.LC136:
	.ascii	"dest_host=%s\012\000"
	.align	2
.LC137:
	.ascii	"dest_port=%d\012\000"
	.text
	.align	2
	.global	getarg
	.syntax unified
	.arm
	.fpu softvfp
	.type	getarg, %function
getarg:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	mov	r3, #0
	str	r3, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	ldr	r2, .L386
	str	r3, [r2]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	b	.L329
.L369:
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L330
.L367:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r3, r3, #52
	cmp	r3, #67
	ldrls	pc, [pc, r3, asl #2]
	b	.L331
.L333:
	.word	.L349
	.word	.L348
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L347
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L346
	.word	.L331
	.word	.L345
	.word	.L344
	.word	.L343
	.word	.L331
	.word	.L342
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L341
	.word	.L331
	.word	.L340
	.word	.L339
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L338
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L331
	.word	.L337
	.word	.L331
	.word	.L336
	.word	.L331
	.word	.L331
	.word	.L335
	.word	.L334
	.word	.L331
	.word	.L331
	.word	.L332
.L335:
	mov	r3, #2
	str	r3, [fp, #-12]
	b	.L350
.L337:
	mov	r3, #1
	str	r3, [fp, #-12]
	b	.L350
.L338:
	mov	r3, #3
	str	r3, [fp, #-12]
	b	.L350
.L334:
	mov	r3, #4
	str	r3, [fp, #-12]
	b	.L350
.L344:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L351
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	mov	r3, #2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	b	.L350
.L351:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L347:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L353
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	mov	r3, #3
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	b	.L350
.L353:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L343:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L355
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	mov	r3, #4
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	b	.L350
.L355:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L340:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L357
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	ldr	r2, .L386+8
	str	r3, [r2]
	b	.L350
.L357:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+12
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L346:
	ldr	r3, .L386+16
	mov	r2, #1
	str	r2, [r3]
.L336:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L359
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, .L386+20
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r0, r3
	bl	resolve_port
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L386+24
	strh	r2, [r3]	@ movhi
	b	.L350
.L359:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L332:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L361
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L386+28
	str	r3, [r2]
	b	.L350
.L361:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L349:
	ldr	r3, .L386+32
	mov	r2, #4
	str	r2, [r3]
	b	.L350
.L348:
	ldr	r3, .L386+32
	mov	r2, #5
	str	r2, [r3]
	b	.L350
.L341:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L363
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	ldr	r2, .L386+36
	str	r3, [r2]
	b	.L350
.L363:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L345:
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L365
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	mov	r0, r3
	bl	lookup_resolve
	mov	r3, r0
	ldr	r2, .L386+40
	str	r3, [r2]
	b	.L350
.L365:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+4
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L350
.L342:
	ldr	r3, .L386+44
	ldr	r0, [r3]
	ldr	r3, .L386+48
	ldr	r2, [r3]
	ldr	r3, .L386+52
	ldr	r3, [r3]
	ldr	r1, .L386+56
	bl	fprintf
	mov	r0, #0
	bl	exit
.L339:
	ldr	r3, .L386+60
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L386+60
	str	r3, [r2]
	b	.L350
.L331:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L386+64
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L350:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L330:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L367
	ldr	r3, [fp, #-32]
	sub	r3, r3, #1
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	str	r3, [fp, #-36]
.L329:
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	ble	.L368
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #45
	beq	.L369
.L368:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bgt	.L384
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-12]
	bl	set_relay
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L372
	ldr	r3, .L386+44
	ldr	r0, [r3]
	ldr	r3, .L386+48
	ldr	r2, [r3]
	ldr	r3, .L386+52
	ldr	r3, [r3]
	ldr	r1, .L386+56
	bl	fprintf
	ldr	r3, .L386+44
	ldr	r3, [r3]
	ldr	r2, .L386+68
	ldr	r1, [r2]
	ldr	r2, .L386
	ldr	r2, [r2]
	mov	r0, r3
	bl	fprintf
	mov	r0, #0
	bl	exit
.L372:
	ldr	r3, [fp, #-36]
	ldr	r3, [r3]
	ldr	r2, .L386+72
	str	r3, [r2]
	ldr	r3, .L386
	ldr	r3, [r3]
	mov	r1, #47
	mov	r0, r3
	bl	strrchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L373
	ldr	r3, .L386
	ldr	r3, [r3]
	mov	r1, #92
	mov	r0, r3
	bl	strchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	beq	.L374
.L373:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L375
.L374:
	ldr	r3, .L386
	ldr	r3, [r3]
	str	r3, [fp, #-20]
.L375:
	ldr	r3, .L386+76
	ldrh	r3, [r3]
	cmp	r3, #0
	bne	.L376
	ldr	r3, [fp, #-32]
	cmp	r3, #1
	ble	.L377
	ldr	r3, [fp, #-36]
	add	r3, r3, #4
	ldr	r3, [r3]
	mov	r0, r3
	bl	resolve_port
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L386+76
	strh	r2, [r3]	@ movhi
	b	.L376
.L377:
	mov	r2, #8
	ldr	r1, .L386+80
	ldr	r0, [fp, #-20]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L376
	ldr	r3, [fp, #-20]
	add	r3, r3, #8
	mov	r0, r3
	bl	strdup
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r1, .L386+84
	ldr	r0, [fp, #-8]
	bl	strcspn
	mov	r2, r0
	ldr	r3, [fp, #-8]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	ldr	r0, [fp, #-8]
	bl	resolve_port
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L386+76
	strh	r2, [r3]	@ movhi
	ldr	r0, [fp, #-8]
	bl	free
.L376:
	ldr	r3, .L386+76
	ldrh	r3, [r3]
	cmp	r3, #0
	bne	.L378
	ldr	r0, .L386+88
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L371
.L378:
	ldr	r3, .L386+92
	ldr	r3, [r3]
	cmp	r3, #1
	beq	.L385
	ldr	r3, .L386+96
	ldrh	r3, [r3]
	cmp	r3, #0
	bne	.L385
	ldr	r3, .L386+76
	ldrh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+100
	bl	error
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L371
.L384:
	nop
	b	.L371
.L385:
	nop
.L371:
	ldr	r3, .L386+92
	ldr	r3, [r3]
	ldr	r2, .L386+104
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, .L386+92
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L386+108
	bl	debug
	ldr	r3, .L386+92
	ldr	r3, [r3]
	cmp	r3, #1
	beq	.L379
	ldr	r3, .L386+112
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+116
	bl	debug
	ldr	r3, .L386+96
	ldrh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+120
	bl	debug
	ldr	r3, .L386+124
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+128
	bl	debug
.L379:
	ldr	r3, .L386+92
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L380
	ldr	r3, .L386+32
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+132
	bl	debug
	ldr	r3, .L386+40
	ldr	r3, [r3]
	ldr	r2, .L386+136
	ldr	r3, [r2, r3, lsl #2]
	ldr	r2, .L386+40
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L386+140
	bl	debug
.L380:
	ldr	r3, .L386+20
	ldr	r3, [r3]
	ldr	r2, .L386+144
	ldr	r3, [r2, r3, lsl #2]
	mov	r1, r3
	ldr	r0, .L386+148
	bl	debug
	ldr	r3, .L386+20
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L381
	ldr	r3, .L386+24
	ldrh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+152
	bl	debug
	ldr	r3, .L386+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L381
	ldr	r0, .L386+156
	bl	debug
.L381:
	ldr	r3, .L386+72
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+160
	bl	debug
	ldr	r3, .L386+76
	ldrh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L386+164
	bl	debug
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	ble	.L382
	ldr	r3, .L386+44
	ldr	r3, [r3]
	ldr	r2, .L386+68
	ldr	r1, [r2]
	ldr	r2, .L386
	ldr	r2, [r2]
	mov	r0, r3
	bl	fprintf
	mov	r0, #1
	bl	exit
.L382:
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L387:
	.align	2
.L386:
	.word	progname
	.word	.LC119
	.word	telnet_command
	.word	.LC120
	.word	f_hold_session
	.word	local_type
	.word	local_port
	.word	connect_timeout
	.word	socks_version
	.word	socks5_auth
	.word	socks_resolve
	.word	stderr
	.word	progdesc
	.word	revstr
	.word	.LC121
	.word	f_debug
	.word	.LC122
	.word	usage
	.word	dest_host
	.word	dest_port
	.word	.LC123
	.word	.LC124
	.word	.LC125
	.word	relay_method
	.word	relay_port
	.word	.LC126
	.word	method_names
	.word	.LC127
	.word	relay_host
	.word	.LC128
	.word	.LC129
	.word	relay_user
	.word	.LC130
	.word	.LC131
	.word	resolve_names
	.word	.LC132
	.word	local_type_names
	.word	.LC133
	.word	.LC134
	.word	.LC135
	.word	.LC136
	.word	.LC137
	.size	getarg, .-getarg
	.section	.rodata
	.align	2
.LC138:
	.ascii	"timed out\012\000"
	.text
	.align	2
	.global	sig_timeout
	.syntax unified
	.arm
	.fpu softvfp
	.type	sig_timeout, %function
sig_timeout:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	mov	r1, #1
	mov	r0, #14
	bl	signal
	mov	r0, #0
	bl	alarm
	ldr	r0, .L389
	bl	error
	mov	r0, #1
	bl	exit
.L390:
	.align	2
.L389:
	.word	.LC138
	.size	sig_timeout, .-sig_timeout
	.section	.rodata
	.align	2
.LC139:
	.ascii	"clearing timeout\012\000"
	.align	2
.LC140:
	.ascii	"setting timeout: %d seconds\012\000"
	.text
	.align	2
	.global	set_timeout
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_timeout, %function
set_timeout:
	@ 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	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L392
	ldr	r0, .L395
	bl	debug
	mov	r1, #1
	mov	r0, #14
	bl	signal
	mov	r0, #0
	bl	alarm
	b	.L394
.L392:
	ldr	r1, [fp, #-8]
	ldr	r0, .L395+4
	bl	debug
	ldr	r1, .L395+8
	mov	r0, #14
	bl	signal
	ldr	r3, [fp, #-8]
	mov	r0, r3
	bl	alarm
.L394:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L396:
	.align	2
.L395:
	.word	.LC139
	.word	.LC140
	.word	sig_timeout
	.size	set_timeout, .-set_timeout
	.section	.rodata
	.align	2
.LC141:
	.ascii	"Using nameserver at %s\012\000"
	.text
	.align	2
	.global	switch_ns
	.syntax unified
	.arm
	.fpu softvfp
	.type	switch_ns, %function
switch_ns:
	@ 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]
	bl	__res_init
	bl	__res_state
	mov	r3, r0
	add	r3, r3, #16
	mov	r2, #16
	ldr	r1, [fp, #-8]
	mov	r0, r3
	bl	memcpy
	bl	__res_state
	mov	r3, r0
	mov	r2, #1
	str	r2, [r3, #12]
	ldr	r3, [fp, #-8]
	ldr	r0, [r3, #4]
	bl	inet_ntoa
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L398
	bl	debug
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L399:
	.align	2
.L398:
	.word	.LC141
	.size	switch_ns, .-switch_ns
	.section	.rodata
	.align	2
.LC142:
	.ascii	"resolving host by name: %s\012\000"
	.align	2
.LC143:
	.ascii	"resolved: %s (%s)\012\000"
	.align	2
.LC144:
	.ascii	"failed to resolve locally.\012\000"
	.text
	.align	2
	.global	local_resolve
	.syntax unified
	.arm
	.fpu softvfp
	.type	local_resolve, %function
local_resolve:
	@ 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	r3, .L405
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-24]
	bl	strspn
	mov	r4, r0
	ldr	r0, [fp, #-24]
	bl	strlen
	mov	r3, r0
	cmp	r4, r3
	bne	.L401
	ldr	r3, [fp, #-28]
	mov	r2, #2
	strh	r2, [r3]	@ movhi
	ldr	r0, [fp, #-24]
	bl	inet_addr
	mov	r2, r0
	ldr	r3, [fp, #-28]
	str	r2, [r3, #4]
	b	.L402
.L401:
	ldr	r1, [fp, #-24]
	ldr	r0, .L405+4
	bl	debug
	ldr	r0, [fp, #-24]
	bl	gethostbyname
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	beq	.L403
	ldr	r3, [fp, #-28]
	add	r0, r3, #4
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #16]
	ldr	r1, [r3]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	mov	r2, r3
	bl	memcpy
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #8]
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-28]
	strh	r2, [r3]	@ movhi
	ldr	r3, [fp, #-28]
	ldr	r0, [r3, #4]
	bl	inet_ntoa
	mov	r3, r0
	mov	r2, r3
	ldr	r1, [fp, #-24]
	ldr	r0, .L405+8
	bl	debug
	b	.L402
.L403:
	ldr	r0, .L405+12
	bl	debug
	mvn	r3, #0
	b	.L404
.L402:
	mov	r3, #0
.L404:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L406:
	.align	2
.L405:
	.word	dotdigits
	.word	.LC142
	.word	.LC143
	.word	.LC144
	.size	local_resolve, .-local_resolve
	.section	.rodata
	.align	2
.LC145:
	.ascii	"can't resolve hostname: %s\012\000"
	.align	2
.LC146:
	.ascii	"connecting to %s:%u\012\000"
	.align	2
.LC147:
	.ascii	"connect() failed.\012\000"
	.align	2
.LC148:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	open_connection
	.syntax unified
	.arm
	.fpu softvfp
	.type	open_connection, %function
open_connection:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	mov	r3, r1
	strh	r3, [fp, #-34]	@ movhi
	ldr	r3, .L413
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	sub	r3, fp, #24
	mov	r1, r3
	ldr	r0, [fp, #-32]
	bl	local_resolve
	mov	r3, r0
	cmp	r3, #0
	bge	.L408
	ldr	r1, [fp, #-32]
	ldr	r0, .L413+4
	bl	error
	mvn	r3, #0
	b	.L411
.L408:
	ldrh	r3, [fp, #-34]
	mov	r0, r3
	bl	htons
	mov	r3, r0
	strh	r3, [fp, #-22]	@ movhi
	ldr	r0, [fp, #-20]
	bl	inet_ntoa
	mov	r1, r0
	ldrh	r3, [fp, #-34]
	mov	r2, r3
	ldr	r0, .L413+8
	bl	debug
	mov	r2, #0
	mov	r1, #1
	mov	r0, #2
	bl	socket
	str	r0, [fp, #-28]
	sub	r3, fp, #24
	mov	r2, #16
	mov	r1, r3
	ldr	r0, [fp, #-28]
	bl	connect
	mov	r3, r0
	cmn	r3, #1
	bne	.L410
	ldr	r0, .L413+12
	bl	debug
	mvn	r3, #0
	b	.L411
.L410:
	ldr	r3, [fp, #-28]
.L411:
	ldr	r2, .L413
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L412
	bl	__stack_chk_fail
.L412:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L414:
	.align	2
.L413:
	.word	.LC148
	.word	.LC145
	.word	.LC146
	.word	.LC147
	.size	open_connection, .-open_connection
	.section	.rodata
	.align	2
.LC149:
	.ascii	"%s \"\000"
	.align	2
.LC150:
	.ascii	"\\x%02X\000"
	.align	2
.LC151:
	.ascii	"%s\000"
	.align	2
.LC152:
	.ascii	"\"\012\000"
	.text
	.align	2
	.global	report_text
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_text, %function
report_text:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r3, .L433
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L431
	ldr	r3, .L433+4
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L432
	ldr	r1, [fp, #-16]
	ldr	r0, .L433+8
	bl	debug
	b	.L419
.L430:
	mov	r2, #1024
	mov	r1, #0
	ldr	r0, .L433+12
	bl	memset
	ldr	r3, .L433+12
	str	r3, [fp, #-12]
	b	.L420
.L429:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #92
	beq	.L421
	cmp	r3, #92
	bgt	.L422
	cmp	r3, #13
	beq	.L423
	cmp	r3, #13
	bgt	.L422
	cmp	r3, #9
	beq	.L424
	cmp	r3, #10
	beq	.L425
	b	.L422
.L424:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #92
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #116
	strb	r2, [r3]
	b	.L426
.L423:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #92
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #114
	strb	r2, [r3]
	b	.L426
.L425:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #92
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #110
	strb	r2, [r3]
	b	.L426
.L421:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #92
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #92
	strb	r2, [r3]
	b	.L426
.L422:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #16384
	cmp	r3, #0
	beq	.L427
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	ldr	r2, [fp, #-20]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	b	.L426
.L427:
	ldr	r3, [fp, #-12]
	ldr	r2, .L433+12
	sub	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	rsb	r1, r3, #1024
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	ldr	r2, .L433+16
	ldr	r0, [fp, #-12]
	bl	snprintf
	ldr	r0, [fp, #-12]
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-12]
.L426:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3]
.L420:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L428
	ldr	r3, [fp, #-12]
	ldr	r2, .L433+12
	sub	r3, r3, r2
	ldr	r2, .L433+20
	cmp	r3, r2
	ble	.L429
.L428:
	ldr	r1, .L433+12
	ldr	r0, .L433+24
	bl	debug_
.L419:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L430
	ldr	r0, .L433+28
	bl	debug_
	b	.L415
.L431:
	nop
	b	.L415
.L432:
	nop
.L415:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L434:
	.align	2
.L433:
	.word	f_debug
	.word	f_report
	.word	.LC149
	.word	work.8187
	.word	.LC150
	.word	1018
	.word	.LC151
	.word	.LC152
	.size	report_text, .-report_text
	.section	.rodata
	.align	2
.LC153:
	.ascii	" %02x\000"
	.text
	.align	2
	.global	report_bytes
	.syntax unified
	.arm
	.fpu softvfp
	.type	report_bytes, %function
report_bytes:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-8]
	str	r1, [fp, #-12]
	str	r2, [fp, #-16]
	ldr	r3, .L441
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L440
	ldr	r1, [fp, #-8]
	ldr	r0, .L441+4
	bl	debug
	b	.L438
.L439:
	ldr	r3, .L441+8
	ldr	r0, [r3]
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r3
	ldr	r1, .L441+12
	bl	fprintf
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-16]
	sub	r3, r3, #1
	str	r3, [fp, #-16]
.L438:
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bgt	.L439
	ldr	r3, .L441+8
	ldr	r3, [r3]
	mov	r1, r3
	mov	r0, #10
	bl	fputc
	b	.L435
.L440:
	nop
.L435:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L442:
	.align	2
.L441:
	.word	f_debug
	.word	.LC151
	.word	stderr
	.word	.LC153
	.size	report_bytes, .-report_bytes
	.section	.rodata
	.align	2
.LC154:
	.ascii	"buf != NULL\000"
	.align	2
.LC155:
	.ascii	"0<=size\000"
	.align	2
.LC156:
	.ascii	"atomic_out() failed to send(), %d\012\000"
	.align	2
.LC157:
	.ascii	"atomic_out()  [some bytes]\012\000"
	.align	2
.LC158:
	.ascii	">>> xx xx xx xx ...\012\000"
	.align	2
.LC159:
	.ascii	"atomic_out()  [%d bytes]\012\000"
	.align	2
.LC160:
	.ascii	">>>\000"
	.text
	.align	2
	.global	atomic_out
	.syntax unified
	.arm
	.fpu softvfp
	.type	atomic_out, %function
atomic_out:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L444
	ldr	r3, .L452
	ldr	r2, .L452+4
	ldr	r1, .L452+8
	ldr	r0, .L452+12
	bl	__assert_fail
.L444:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L445
	ldr	r3, .L452
	mov	r2, #1856
	ldr	r1, .L452+8
	ldr	r0, .L452+16
	bl	__assert_fail
.L445:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L446
.L448:
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	add	r1, r2, r3
	ldr	r2, [fp, #-24]
	mov	r3, #0
	ldr	r0, [fp, #-16]
	bl	send
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L447
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L452+20
	bl	fatal
.L447:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-8]
	sub	r3, r2, r3
	str	r3, [fp, #-24]
.L446:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bgt	.L448
	ldr	r3, .L452+24
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L449
	ldr	r0, .L452+28
	bl	debug
	ldr	r0, .L452+32
	bl	debug
	b	.L450
.L449:
	ldr	r1, [fp, #-12]
	ldr	r0, .L452+36
	bl	debug
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, .L452+40
	bl	report_bytes
.L450:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L453:
	.align	2
.L452:
	.word	__PRETTY_FUNCTION__.8217
	.word	1855
	.word	.LC46
	.word	.LC154
	.word	.LC155
	.word	.LC156
	.word	f_report
	.word	.LC157
	.word	.LC158
	.word	.LC159
	.word	.LC160
	.size	atomic_out, .-atomic_out
	.section	.rodata
	.align	2
.LC161:
	.ascii	"atomic_in() failed to recv(), %d\012\000"
	.align	2
.LC162:
	.ascii	"Connection closed by peer.\012\000"
	.align	2
.LC163:
	.ascii	"atomic_in()  [some bytes]\012\000"
	.align	2
.LC164:
	.ascii	"<<< xx xx xx xx ...\012\000"
	.align	2
.LC165:
	.ascii	"atomic_in() [%d bytes]\012\000"
	.align	2
.LC166:
	.ascii	"<<<\000"
	.text
	.align	2
	.global	atomic_in
	.syntax unified
	.arm
	.fpu softvfp
	.type	atomic_in, %function
atomic_in:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L455
	ldr	r3, .L464
	ldr	r2, .L464+4
	ldr	r1, .L464+8
	ldr	r0, .L464+12
	bl	__assert_fail
.L455:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bge	.L456
	ldr	r3, .L464
	ldr	r2, .L464+16
	ldr	r1, .L464+8
	ldr	r0, .L464+20
	bl	__assert_fail
.L456:
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L457
.L460:
	ldr	r3, [fp, #-12]
	ldr	r2, [fp, #-20]
	add	r1, r2, r3
	ldr	r2, [fp, #-24]
	mov	r3, #0
	ldr	r0, [fp, #-16]
	bl	recv
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmn	r3, #1
	bne	.L458
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L464+24
	bl	fatal
	b	.L459
.L458:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L459
	ldr	r0, .L464+28
	bl	fatal
.L459:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r2, [fp, #-24]
	ldr	r3, [fp, #-8]
	sub	r3, r2, r3
	str	r3, [fp, #-24]
.L457:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bgt	.L460
	ldr	r3, .L464+32
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L461
	ldr	r0, .L464+36
	bl	debug
	ldr	r0, .L464+40
	bl	debug
	b	.L462
.L461:
	ldr	r1, [fp, #-12]
	ldr	r0, .L464+44
	bl	debug
	ldr	r2, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, .L464+48
	bl	report_bytes
.L462:
	ldr	r3, [fp, #-12]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L465:
	.align	2
.L464:
	.word	__PRETTY_FUNCTION__.8228
	.word	1881
	.word	.LC46
	.word	.LC154
	.word	1882
	.word	.LC155
	.word	.LC161
	.word	.LC162
	.word	f_report
	.word	.LC163
	.word	.LC164
	.word	.LC165
	.word	.LC166
	.size	atomic_in, .-atomic_in
	.section	.rodata
	.align	2
.LC167:
	.ascii	"recv() error\012\000"
	.text
	.align	2
	.global	line_input
	.syntax unified
	.arm
	.fpu softvfp
	.type	line_input, %function
line_input:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	ldr	r3, [fp, #-20]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bne	.L467
	mov	r3, #0
	b	.L468
.L467:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L469
.L475:
	mov	r3, #0
	mov	r2, #1
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	recv
	mov	r3, r0
	cmn	r3, #1
	beq	.L470
	cmp	r3, #0
	beq	.L471
	b	.L476
.L470:
	ldr	r0, .L477
	bl	error
	mvn	r3, #0
	b	.L468
.L471:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L469
.L476:
	ldr	r3, [fp, #-8]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #10
	bne	.L473
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L474
.L473:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
.L474:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L469:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	bgt	.L475
	ldr	r3, [fp, #-8]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r1, [fp, #-20]
	ldr	r0, .L477+4
	bl	report_text
	mov	r3, #0
.L468:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L478:
	.align	2
.L477:
	.word	.LC167
	.word	.LC166
	.size	line_input, .-line_input
	.align	2
	.global	cut_token
	.syntax unified
	.arm
	.fpu softvfp
	.type	cut_token, %function
cut_token:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-16]
	bl	strcspn
	mov	r2, r0
	ldr	r3, [fp, #-16]
	add	r3, r3, r2
	str	r3, [fp, #-12]
	ldr	r1, [fp, #-20]
	ldr	r0, [fp, #-12]
	bl	strspn
	mov	r2, r0
	ldr	r3, [fp, #-12]
	add	r3, r3, r2
	str	r3, [fp, #-8]
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bne	.L482
	mov	r3, #0
	b	.L481
.L483:
	ldr	r3, [fp, #-12]
	add	r2, r3, #1
	str	r2, [fp, #-12]
	mov	r2, #0
	strb	r2, [r3]
.L482:
	ldr	r2, [fp, #-12]
	ldr	r3, [fp, #-8]
	cmp	r2, r3
	bcc	.L483
	ldr	r3, [fp, #-12]
.L481:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	cut_token, .-cut_token
	.section	.rodata
	.align	2
.LC168:
	.ascii	"(unknown)\000"
	.text
	.align	2
	.global	lookup
	.syntax unified
	.arm
	.fpu softvfp
	.type	lookup, %function
lookup:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #20
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L485
.L488:
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	bne	.L486
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3, #4]
	b	.L487
.L486:
	ldr	r3, [fp, #-8]
	add	r3, r3, #1
	str	r3, [fp, #-8]
.L485:
	ldr	r3, [fp, #-8]
	lsl	r3, r3, #3
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L488
	ldr	r3, .L489
.L487:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L490:
	.align	2
.L489:
	.word	.LC168
	.size	lookup, .-lookup
	.section	.rodata
	.align	2
.LC169:
	.ascii	"DISPLAY\000"
	.align	2
.LC170:
	.ascii	"%s \"%s\"\000"
	.align	2
.LC171:
	.ascii	"\015\012\000"
	.align	2
.LC172:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	readpass
	.syntax unified
	.arm
	.fpu softvfp
	.type	readpass, %function
readpass:
	@ args = 4, pretend = 16, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r0, r1, r2, r3}
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #44
	ldr	r3, [fp, #4]
	str	r3, [fp, #-40]
	ldr	r3, .L499
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-40]
	mov	r1, #1000
	ldr	r0, .L499+4
	bl	vsnprintf
	ldr	r0, .L499+8
	bl	getparam
	mov	r3, r0
	cmp	r3, #0
	beq	.L492
	ldr	r0, .L499+12
	bl	getenv
	mov	r3, r0
	cmp	r3, #0
	beq	.L492
	ldr	r0, .L499+8
	bl	getparam
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r4, r0
	ldr	r0, .L499+4
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	add	r3, r3, #4
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	mov	r0, r3
	bl	xmalloc
	str	r0, [fp, #-24]
	ldr	r1, [fp, #-28]
	ldr	r3, .L499+4
	str	r3, [sp]
	ldr	r3, [fp, #-32]
	ldr	r2, .L499+16
	ldr	r0, [fp, #-24]
	bl	snprintf
	ldr	r1, .L499+20
	ldr	r0, [fp, #-24]
	bl	popen
	str	r0, [fp, #-20]
	ldr	r0, [fp, #-24]
	bl	free
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L493
	mov	r3, #0
	b	.L497
.L493:
	ldr	r3, .L499+4
	mov	r2, #0
	strb	r2, [r3]
	ldr	r2, [fp, #-20]
	mov	r1, #1000
	ldr	r0, .L499+4
	bl	fgets
	mov	r3, r0
	cmp	r3, #0
	bne	.L495
	mov	r3, #0
	b	.L497
.L495:
	ldr	r0, [fp, #-20]
	bl	fclose
	b	.L496
.L492:
	mov	r2, #1000
	ldr	r1, .L499+4
	ldr	r0, .L499+4
	bl	tty_readpass
.L496:
	ldr	r1, .L499+24
	ldr	r0, .L499+4
	bl	strcspn
	mov	r3, r0
	ldr	r2, .L499+4
	mov	r1, #0
	strb	r1, [r2, r3]
	ldr	r3, .L499+4
.L497:
	ldr	r2, .L499
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L498
	bl	__stack_chk_fail
.L498:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, lr}
	add	sp, sp, #16
	bx	lr
.L500:
	.align	2
.L499:
	.word	.LC172
	.word	buf.8265
	.word	.LC66
	.word	.LC169
	.word	.LC170
	.word	.LC73
	.word	.LC171
	.size	readpass, .-readpass
	.section	.rodata
	.align	2
.LC173:
	.ascii	"cannot determine user name.\012\000"
	.align	2
.LC174:
	.ascii	"Enter SOCKS5 password for %s@%s: \000"
	.align	2
.LC175:
	.ascii	"Cannot get password for user: %s\012\000"
	.align	2
.LC176:
	.word	__stack_chk_guard
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	socks5_do_auth_userpass, %function
socks5_do_auth_userpass:
	@ args = 0, pretend = 0, frame = 1048
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1040
	sub	sp, sp, #8
	str	r0, [fp, #-1048]
	ldr	r3, .L508
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-1044]
	ldr	r3, .L508+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L502
	ldr	r0, .L508+8
	bl	fatal
.L502:
	bl	determine_relay_password
	str	r0, [fp, #-1044]
	ldr	r3, [fp, #-1044]
	cmp	r3, #0
	bne	.L503
	ldr	r3, .L508+4
	ldr	r3, [r3]
	ldr	r2, .L508+12
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L508+16
	bl	readpass
	str	r0, [fp, #-1044]
	ldr	r3, [fp, #-1044]
	cmp	r3, #0
	bne	.L503
	ldr	r3, .L508+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L508+20
	bl	fatal
.L503:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	str	r3, [fp, #-1040]
	ldr	r3, [fp, #-1040]
	add	r2, r3, #1
	str	r2, [fp, #-1040]
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, .L508+4
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-1036]
	ldr	r3, [fp, #-1040]
	add	r2, r3, #1
	str	r2, [fp, #-1040]
	ldr	r2, [fp, #-1036]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L508+4
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-1040]
	bl	strcpy
	ldr	r3, [fp, #-1036]
	ldr	r2, [fp, #-1040]
	add	r3, r2, r3
	str	r3, [fp, #-1040]
	ldr	r0, [fp, #-1044]
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-1036]
	ldr	r0, [fp, #-1044]
	bl	strlen
	mov	r1, r0
	ldr	r3, [fp, #-1040]
	add	r2, r3, #1
	str	r2, [fp, #-1040]
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r1, [fp, #-1044]
	ldr	r0, [fp, #-1040]
	bl	strcpy
	ldr	r3, [fp, #-1036]
	ldr	r2, [fp, #-1040]
	add	r3, r2, r3
	str	r3, [fp, #-1040]
	ldr	r0, [fp, #-1044]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-1044]
	bl	memset
	ldr	r3, .L508+24
	mov	r2, #0
	str	r2, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [fp, #-1040]
	sub	r2, r2, r3
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-1048]
	bl	atomic_out
	ldr	r3, .L508+24
	mov	r2, #1
	str	r2, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #2
	mov	r1, r3
	ldr	r0, [fp, #-1048]
	bl	atomic_in
	ldrb	r3, [fp, #-1031]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L504
	mov	r3, #0
	b	.L506
.L504:
	mvn	r3, #0
.L506:
	ldr	r2, .L508
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L507
	bl	__stack_chk_fail
.L507:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L509:
	.align	2
.L508:
	.word	.LC176
	.word	relay_user
	.word	.LC173
	.word	relay_host
	.word	.LC174
	.word	.LC175
	.word	f_report
	.size	socks5_do_auth_userpass, .-socks5_do_auth_userpass
	.section	.rodata
	.align	2
.LC177:
	.ascii	"REJECTED\000"
	.align	2
.LC178:
	.ascii	"NO-AUTH\000"
	.align	2
.LC179:
	.ascii	"GSSAPI\000"
	.align	2
.LC180:
	.ascii	"USERPASS\000"
	.align	2
.LC181:
	.ascii	"CHAP\000"
	.align	2
.LC182:
	.ascii	"EAP\000"
	.align	2
.LC183:
	.ascii	"MAF\000"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	socks5_getauthname, %function
socks5_getauthname:
	@ args = 0, pretend = 0, frame = 8
	@ frame_needed = 1, uses_anonymous_args = 0
	@ link register save eliminated.
	str	fp, [sp, #-4]!
	add	fp, sp, #0
	sub	sp, sp, #12
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #8
	bgt	.L511
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	blt	.L512
	ldr	r3, [fp, #-8]
	cmp	r3, #8
	ldrls	pc, [pc, r3, asl #2]
	b	.L512
.L514:
	.word	.L519
	.word	.L518
	.word	.L517
	.word	.L516
	.word	.L512
	.word	.L515
	.word	.L512
	.word	.L512
	.word	.L513
.L511:
	ldr	r3, [fp, #-8]
	cmp	r3, #255
	bne	.L512
	ldr	r3, .L521
	b	.L520
.L519:
	ldr	r3, .L521+4
	b	.L520
.L518:
	ldr	r3, .L521+8
	b	.L520
.L517:
	ldr	r3, .L521+12
	b	.L520
.L516:
	ldr	r3, .L521+16
	b	.L520
.L515:
	ldr	r3, .L521+20
	b	.L520
.L513:
	ldr	r3, .L521+24
	b	.L520
.L512:
	ldr	r3, .L521+28
.L520:
	mov	r0, r3
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L522:
	.align	2
.L521:
	.word	.LC177
	.word	.LC178
	.word	.LC179
	.word	.LC180
	.word	.LC181
	.word	.LC182
	.word	.LC183
	.word	.LC168
	.size	socks5_getauthname, .-socks5_getauthname
	.global	socks5_auth_table
	.section	.rodata
	.align	2
.LC184:
	.ascii	"none\000"
	.align	2
.LC185:
	.ascii	"gssapi\000"
	.align	2
.LC186:
	.ascii	"userpass\000"
	.align	2
.LC187:
	.ascii	"chap\000"
	.data
	.align	2
	.type	socks5_auth_table, %object
	.size	socks5_auth_table, 40
socks5_auth_table:
	.word	.LC184
	.byte	0
	.space	3
	.word	.LC185
	.byte	1
	.space	3
	.word	.LC186
	.byte	2
	.space	3
	.word	.LC187
	.byte	3
	.space	3
	.word	0
	.byte	-1
	.space	3
	.section	.rodata
	.align	2
.LC188:
	.ascii	"Unknown auth method: %s\012\000"
	.text
	.align	2
	.global	socks5_auth_parse_1
	.syntax unified
	.arm
	.fpu softvfp
	.type	socks5_auth_parse_1, %function
socks5_auth_parse_1:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #16
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	b	.L524
.L527:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L525
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	bne	.L536
.L525:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L524:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L527
	b	.L526
.L536:
	nop
.L526:
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L528
.L531:
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #32
	beq	.L529
	ldr	r3, [fp, #-20]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #9
	beq	.L529
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	b	.L530
.L529:
	ldr	r3, [fp, #-20]
	sub	r3, r3, #1
	str	r3, [fp, #-20]
.L528:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	cmp	r2, r3
	bcs	.L531
.L530:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-16]
	sub	r3, r2, r3
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-12]
	b	.L532
.L535:
	ldr	r2, .L537
	ldr	r3, [fp, #-12]
	ldr	r3, [r2, r3, lsl #3]
	ldr	r2, [fp, #-8]
	mov	r1, r3
	ldr	r0, [fp, #-16]
	bl	strncmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L533
	ldr	r2, .L537
	ldr	r3, [fp, #-12]
	lsl	r3, r3, #3
	add	r3, r2, r3
	ldrb	r3, [r3, #4]	@ zero_extendqisi2
	b	.L534
.L533:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L532:
	ldr	r2, .L537
	ldr	r3, [fp, #-12]
	ldr	r3, [r2, r3, lsl #3]
	cmp	r3, #0
	bne	.L535
	ldr	r1, [fp, #-16]
	ldr	r0, .L537+4
	bl	fatal
	mvn	r3, #0
.L534:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L538:
	.align	2
.L537:
	.word	socks5_auth_table
	.word	.LC188
	.size	socks5_auth_parse_1, .-socks5_auth_parse_1
	.section	.rodata
	.align	2
.LC189:
	.ascii	"Too much auth method.\012\000"
	.text
	.align	2
	.global	socks5_auth_parse
	.syntax unified
	.arm
	.fpu softvfp
	.type	socks5_auth_parse, %function
socks5_auth_parse:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	str	r1, [fp, #-20]
	str	r2, [fp, #-24]
	mov	r3, #0
	str	r3, [fp, #-8]
	b	.L540
.L542:
	mov	r1, #44
	ldr	r0, [fp, #-16]
	bl	strchr
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L541
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L541
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	socks5_auth_parse_1
	mov	r1, r0
	ldr	r3, [fp, #-8]
	add	r2, r3, #1
	str	r2, [fp, #-8]
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	str	r3, [fp, #-16]
.L540:
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L542
.L541:
	ldr	r3, [fp, #-16]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L543
	ldr	r2, [fp, #-8]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bge	.L543
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-12]
	b	.L544
.L545:
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
.L544:
	ldr	r3, [fp, #-12]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L545
	ldr	r1, [fp, #-12]
	ldr	r0, [fp, #-16]
	bl	socks5_auth_parse_1
	mov	r1, r0
	ldr	r3, [fp, #-8]
	add	r2, r3, #1
	str	r2, [fp, #-8]
	mov	r2, r3
	ldr	r3, [fp, #-20]
	add	r3, r3, r2
	and	r2, r1, #255
	strb	r2, [r3]
	b	.L546
.L543:
	ldr	r0, .L548
	bl	fatal
.L546:
	ldr	r3, [fp, #-8]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L549:
	.align	2
.L548:
	.word	.LC189
	.size	socks5_auth_parse, .-socks5_auth_parse
	.section	.rodata
	.align	2
.LC190:
	.ascii	"begin_socks_relay()\012\000"
	.align	2
.LC191:
	.ascii	"available auth method[%d] = %s (0x%02x)\012\000"
	.align	2
.LC192:
	.ascii	"No auth method accepted.\012\000"
	.align	2
.LC193:
	.ascii	"auth method: %s\012\000"
	.align	2
.LC194:
	.ascii	"No acceptable authentication method\012\000"
	.align	2
.LC195:
	.ascii	"Unsupported authentication method: %s\012\000"
	.align	2
.LC196:
	.ascii	"Authentication failed.\012\000"
	.align	2
.LC197:
	.ascii	"Got error response from SOCKS server: %d (%s).\012\000"
	.align	2
.LC198:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	begin_socks5_relay
	.syntax unified
	.arm
	.fpu softvfp
	.type	begin_socks5_relay, %function
begin_socks5_relay:
	@ args = 0, pretend = 0, frame = 304
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #308
	str	r0, [fp, #-312]
	ldr	r3, .L574
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r3, .L574+4
	ldr	r3, [r3]
	str	r3, [fp, #-300]
	mov	r3, #0
	strb	r3, [fp, #-306]
	ldr	r0, .L574+8
	bl	debug
	sub	r3, fp, #272
	str	r3, [fp, #-304]
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-300]
	cmp	r3, #0
	bne	.L551
	ldr	r0, .L574+12
	bl	getparam
	str	r0, [fp, #-300]
.L551:
	ldr	r3, [fp, #-300]
	cmp	r3, #0
	bne	.L552
	ldrb	r3, [fp, #-306]	@ zero_extendqisi2
	add	r2, r3, #1
	strb	r2, [fp, #-306]
	sub	r2, fp, #12
	add	r3, r2, r3
	mov	r2, #0
	strb	r2, [r3, #-272]
	ldrb	r3, [fp, #-306]	@ zero_extendqisi2
	add	r2, r3, #1
	strb	r2, [fp, #-306]
	sub	r2, fp, #12
	add	r3, r2, r3
	mov	r2, #2
	strb	r2, [r3, #-272]
	b	.L553
.L552:
	sub	r3, fp, #284
	mov	r2, #10
	mov	r1, r3
	ldr	r0, [fp, #-300]
	bl	socks5_auth_parse
	mov	r3, r0
	strb	r3, [fp, #-306]
.L553:
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	ldrb	r2, [fp, #-306]
	strb	r2, [r3]
	mov	r3, #0
	str	r3, [fp, #-292]
	b	.L554
.L555:
	sub	r2, fp, #284
	ldr	r3, [fp, #-292]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	socks5_getauthname
	mov	r1, r0
	sub	r2, fp, #284
	ldr	r3, [fp, #-292]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r2, r1
	ldr	r1, [fp, #-292]
	ldr	r0, .L574+16
	bl	debug
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	sub	r1, fp, #284
	ldr	r2, [fp, #-292]
	add	r2, r1, r2
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-292]
	add	r3, r3, #1
	str	r3, [fp, #-292]
.L554:
	ldrb	r3, [fp, #-306]	@ zero_extendqisi2
	ldr	r2, [fp, #-292]
	cmp	r2, r3
	blt	.L555
	sub	r3, fp, #272
	ldr	r2, [fp, #-304]
	sub	r2, r2, r3
	sub	r3, fp, #272
	mov	r1, r3
	ldr	r0, [fp, #-312]
	bl	atomic_out
	sub	r3, fp, #272
	mov	r2, #2
	mov	r1, r3
	ldr	r0, [fp, #-312]
	bl	atomic_in
	ldrb	r3, [fp, #-272]	@ zero_extendqisi2
	cmp	r3, #5
	bne	.L556
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	cmp	r3, #255
	bne	.L557
.L556:
	ldr	r0, .L574+20
	bl	error
	mvn	r3, #0
	b	.L572
.L557:
	ldrb	r3, [fp, #-271]
	strb	r3, [fp, #-305]
	ldrb	r3, [fp, #-305]	@ zero_extendqisi2
	mov	r0, r3
	bl	socks5_getauthname
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L574+24
	bl	debug
	ldrb	r3, [fp, #-305]	@ zero_extendqisi2
	cmp	r3, #255
	beq	.L559
	cmp	r3, #255
	bgt	.L560
	cmp	r3, #0
	beq	.L561
	cmp	r3, #2
	beq	.L562
	b	.L560
.L559:
	ldr	r0, .L574+28
	bl	error
	mvn	r3, #0
	b	.L572
.L561:
	mov	r3, #0
	str	r3, [fp, #-296]
	b	.L563
.L562:
	ldr	r0, [fp, #-312]
	bl	socks5_do_auth_userpass
	str	r0, [fp, #-296]
	b	.L563
.L560:
	ldrb	r3, [fp, #-305]	@ zero_extendqisi2
	mov	r0, r3
	bl	socks5_getauthname
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L574+32
	bl	error
	mvn	r3, #0
	b	.L572
.L563:
	ldr	r3, [fp, #-296]
	cmp	r3, #0
	beq	.L564
	ldr	r0, .L574+36
	bl	error
	mvn	r3, #0
	b	.L572
.L564:
	sub	r3, fp, #272
	str	r3, [fp, #-304]
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #5
	strb	r2, [r3]
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L574+40
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L565
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #3
	strb	r2, [r3]
	ldr	r3, .L574+44
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-288]
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	ldr	r2, [fp, #-288]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L574+44
	ldr	r3, [r3]
	ldr	r2, [fp, #-288]
	mov	r1, r3
	ldr	r0, [fp, #-304]
	bl	memcpy
	ldr	r3, [fp, #-288]
	ldr	r2, [fp, #-304]
	add	r3, r2, r3
	str	r3, [fp, #-304]
	b	.L566
.L565:
	ldr	r3, [fp, #-304]
	add	r2, r3, #1
	str	r2, [fp, #-304]
	mov	r2, #1
	strb	r2, [r3]
	mov	r2, #4
	ldr	r1, .L574+48
	ldr	r0, [fp, #-304]
	bl	memcpy
	ldr	r3, [fp, #-304]
	add	r3, r3, #4
	str	r3, [fp, #-304]
.L566:
	ldr	r3, .L574+52
	ldrh	r3, [r3]
	lsr	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-304]
	add	r1, r3, #1
	str	r1, [fp, #-304]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L574+52
	ldrh	r2, [r3]
	ldr	r3, [fp, #-304]
	add	r1, r3, #1
	str	r1, [fp, #-304]
	and	r2, r2, #255
	strb	r2, [r3]
	sub	r3, fp, #272
	ldr	r2, [fp, #-304]
	sub	r2, r2, r3
	sub	r3, fp, #272
	mov	r1, r3
	ldr	r0, [fp, #-312]
	bl	atomic_out
	sub	r3, fp, #272
	mov	r2, #4
	mov	r1, r3
	ldr	r0, [fp, #-312]
	bl	atomic_in
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L567
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	mov	r4, r3
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	ldr	r1, .L574+56
	mov	r0, r3
	bl	lookup
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L574+60
	bl	error
	mvn	r3, #0
	b	.L572
.L567:
	sub	r3, fp, #272
	add	r3, r3, #4
	str	r3, [fp, #-304]
	ldrb	r3, [fp, #-269]	@ zero_extendqisi2
	cmp	r3, #4
	beq	.L568
	cmp	r3, #4
	bgt	.L569
	cmp	r3, #1
	beq	.L570
	cmp	r3, #3
	beq	.L571
	b	.L569
.L570:
	mov	r2, #6
	ldr	r1, [fp, #-304]
	ldr	r0, [fp, #-312]
	bl	atomic_in
	b	.L569
.L571:
	mov	r2, #1
	ldr	r1, [fp, #-304]
	ldr	r0, [fp, #-312]
	bl	atomic_in
	ldr	r3, [fp, #-304]
	add	r1, r3, #1
	ldr	r3, [fp, #-304]
	ldrb	r3, [r3]	@ zero_extendqisi2
	add	r3, r3, #2
	mov	r2, r3
	ldr	r0, [fp, #-312]
	bl	atomic_in
	b	.L569
.L568:
	mov	r2, #18
	ldr	r1, [fp, #-304]
	ldr	r0, [fp, #-312]
	bl	atomic_in
	nop
.L569:
	mov	r3, #0
.L572:
	ldr	r2, .L574
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L573
	bl	__stack_chk_fail
.L573:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L575:
	.align	2
.L574:
	.word	.LC198
	.word	socks5_auth
	.word	.LC190
	.word	.LC72
	.word	.LC191
	.word	.LC192
	.word	.LC193
	.word	.LC194
	.word	.LC195
	.word	.LC196
	.word	dest_addr
	.word	dest_host
	.word	dest_addr+4
	.word	dest_port
	.word	socks5_rep_names
	.word	.LC197
	.size	begin_socks5_relay, .-begin_socks5_relay
	.section	.rodata
	.align	2
.LC199:
	.ascii	"Cannot determine user name.\012\000"
	.align	2
.LC200:
	.ascii	"Got error response: %d: '%s'.\012\000"
	.align	2
.LC201:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	begin_socks4_relay
	.syntax unified
	.arm
	.fpu softvfp
	.type	begin_socks4_relay, %function
begin_socks4_relay:
	@ args = 0, pretend = 0, frame = 272
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #276
	str	r0, [fp, #-280]
	ldr	r3, .L584
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r0, .L584+4
	bl	debug
	sub	r3, fp, #272
	str	r3, [fp, #-276]
	ldr	r3, [fp, #-276]
	add	r2, r3, #1
	str	r2, [fp, #-276]
	mov	r2, #4
	strb	r2, [r3]
	ldr	r3, [fp, #-276]
	add	r2, r3, #1
	str	r2, [fp, #-276]
	mov	r2, #1
	strb	r2, [r3]
	ldr	r3, .L584+8
	ldrh	r3, [r3]
	lsr	r3, r3, #8
	lsl	r3, r3, #16
	lsr	r2, r3, #16
	ldr	r3, [fp, #-276]
	add	r1, r3, #1
	str	r1, [fp, #-276]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, .L584+8
	ldrh	r2, [r3]
	ldr	r3, [fp, #-276]
	add	r1, r3, #1
	str	r1, [fp, #-276]
	and	r2, r2, #255
	strb	r2, [r3]
	mov	r2, #4
	ldr	r1, .L584+12
	ldr	r0, [fp, #-276]
	bl	memcpy
	ldr	r3, [fp, #-276]
	add	r3, r3, #4
	str	r3, [fp, #-276]
	ldr	r3, .L584+16
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L577
	ldr	r3, [fp, #-276]
	sub	r3, r3, #1
	mov	r2, #1
	strb	r2, [r3]
.L577:
	ldr	r3, .L584+20
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L578
	ldr	r0, .L584+24
	bl	fatal
.L578:
	ldr	r3, .L584+20
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-276]
	bl	strcpy
	ldr	r3, .L584+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r3, #1
	ldr	r2, [fp, #-276]
	add	r3, r2, r3
	str	r3, [fp, #-276]
	ldr	r3, .L584+28
	ldr	r3, [r3]
	cmp	r3, #4
	bne	.L579
	ldr	r3, .L584+16
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L579
	ldr	r3, .L584+32
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, [fp, #-276]
	bl	strcpy
	ldr	r3, .L584+32
	ldr	r3, [r3]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r3, #1
	ldr	r2, [fp, #-276]
	add	r3, r2, r3
	str	r3, [fp, #-276]
.L579:
	sub	r3, fp, #272
	ldr	r2, [fp, #-276]
	sub	r2, r2, r3
	sub	r3, fp, #272
	mov	r1, r3
	ldr	r0, [fp, #-280]
	bl	atomic_out
	sub	r3, fp, #272
	mov	r2, #8
	mov	r1, r3
	ldr	r0, [fp, #-280]
	bl	atomic_in
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	cmp	r3, #90
	beq	.L580
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	mov	r4, r3
	ldrb	r3, [fp, #-271]	@ zero_extendqisi2
	ldr	r1, .L584+36
	mov	r0, r3
	bl	lookup
	mov	r3, r0
	mov	r2, r3
	mov	r1, r4
	ldr	r0, .L584+40
	bl	error
	mvn	r3, #0
	b	.L582
.L580:
	mov	r3, #0
.L582:
	ldr	r2, .L584
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L583
	bl	__stack_chk_fail
.L583:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L585:
	.align	2
.L584:
	.word	.LC201
	.word	.LC190
	.word	dest_port
	.word	dest_addr+4
	.word	dest_addr
	.word	relay_user
	.word	.LC199
	.word	socks_version
	.word	dest_host
	.word	socks4_rep_names
	.word	.LC200
	.size	begin_socks4_relay, .-begin_socks4_relay
	.section	.rodata
	.align	2
.LC202:
	.ascii	"failed to send http request. errno=%d\012\000"
	.align	2
.LC203:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	sendf
	.syntax unified
	.arm
	.fpu softvfp
	.type	sendf, %function
sendf:
	@ args = 4, pretend = 12, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 1
	push	{r1, r2, r3}
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #20
	str	r0, [fp, #-20]
	ldr	r3, [fp, #4]
	str	r3, [fp, #-24]
	ldr	r3, .L591
	ldr	r3, [r3]
	str	r3, [fp, #-12]
	mov	r3,#0
	add	r3, fp, #8
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r2, [fp, #-24]
	mov	r1, #10240
	ldr	r0, .L591+4
	bl	vsnprintf
	ldr	r1, .L591+4
	ldr	r0, .L591+8
	bl	report_text
	ldr	r0, .L591+4
	bl	strlen
	mov	r2, r0
	mov	r3, #0
	ldr	r1, .L591+4
	ldr	r0, [fp, #-20]
	bl	send
	mov	r3, r0
	cmn	r3, #1
	bne	.L587
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L591+12
	bl	debug
	mvn	r3, #0
	b	.L589
.L587:
	mov	r3, #0
.L589:
	ldr	r2, .L591
	ldr	r1, [r2]
	ldr	r2, [fp, #-12]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L590
	bl	__stack_chk_fail
.L590:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, lr}
	add	sp, sp, #12
	bx	lr
.L592:
	.align	2
.L591:
	.word	.LC203
	.word	buf.8355
	.word	.LC160
	.word	.LC202
	.size	sendf, .-sendf
	.global	base64_table
	.section	.rodata
	.align	2
.LC204:
	.ascii	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxy"
	.ascii	"z0123456789+/\000"
	.data
	.align	2
	.type	base64_table, %object
	.size	base64_table, 4
base64_table:
	.word	.LC204
	.text
	.align	2
	.global	make_base64_string
	.syntax unified
	.arm
	.fpu softvfp
	.type	make_base64_string, %function
make_base64_string:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r3, r0
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	add	r3, r3, #2
	ldr	r2, .L601
	smull	r1, r2, r3, r2
	asr	r3, r3, #31
	sub	r3, r2, r3
	lsl	r3, r3, #2
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	mov	r0, r3
	bl	xmalloc
	mov	r3, r0
	ldr	r2, .L601+4
	str	r3, [r2]
	mov	r3, #0
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-32]
	str	r3, [fp, #-28]
	ldr	r3, .L601+4
	ldr	r3, [r3]
	str	r3, [fp, #-24]
	b	.L594
.L596:
	ldr	r3, [fp, #-20]
	cmp	r3, #5
	bgt	.L595
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #8
	ldr	r2, [fp, #-28]
	ldrb	r2, [r2]	@ zero_extendqisi2
	orr	r3, r3, r2
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-20]
	add	r3, r3, #8
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-28]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L595
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L595:
	ldr	r3, .L601+8
	ldr	r2, [r3]
	ldr	r3, [fp, #-20]
	sub	r3, r3, #6
	ldr	r1, [fp, #-16]
	asr	r3, r1, r3
	and	r3, r3, #63
	add	r2, r2, r3
	ldr	r3, [fp, #-24]
	add	r1, r3, #1
	str	r1, [fp, #-24]
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-20]
	sub	r3, r3, #6
	str	r3, [fp, #-20]
.L594:
	ldr	r3, [fp, #-12]
	sub	r2, r3, #1
	str	r2, [fp, #-12]
	cmp	r3, #0
	bne	.L596
	ldr	r3, [fp, #-24]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r1, [fp, #-8]
	ldr	r3, .L601
	smull	r0, r2, r3, r1
	asr	r3, r1, #31
	sub	r3, r2, r3
	mov	r2, r3
	lsl	r2, r2, #1
	add	r2, r2, r3
	sub	r3, r1, r2
	cmp	r3, #1
	beq	.L597
	cmp	r3, #2
	beq	.L598
	b	.L599
.L597:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r2, #61
	strb	r2, [r3]
.L598:
	ldr	r3, [fp, #-24]
	sub	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-24]
	mov	r2, #61
	strb	r2, [r3]
.L599:
	ldr	r3, .L601+4
	ldr	r3, [r3]
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L602:
	.align	2
.L601:
	.word	1431655766
	.word	buf.8361
	.word	base64_table
	.size	make_base64_string, .-make_base64_string
	.section	.rodata
	.align	2
.LC205:
	.ascii	"Cannot decide username for proxy authentication.\000"
	.align	2
.LC206:
	.ascii	"Enter proxy authentication password for %s@%s: \000"
	.align	2
.LC207:
	.ascii	"Cannot decide password for proxy authentication.\000"
	.align	2
.LC208:
	.ascii	"%s:%s\000"
	.align	2
.LC209:
	.ascii	"Proxy-Authorization: Basic %s\015\012\000"
	.align	2
.LC210:
	.ascii	"Proxy-Authorization: Basic xxxxx\015\012\000"
	.text
	.align	2
	.global	basic_auth
	.syntax unified
	.arm
	.fpu softvfp
	.type	basic_auth, %function
basic_auth:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #44
	str	r0, [fp, #-40]
	ldr	r3, .L607
	ldr	r3, [r3]
	str	r3, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-36]
	ldr	r3, [fp, #-32]
	cmp	r3, #0
	bne	.L604
	ldr	r0, .L607+4
	bl	fatal
.L604:
	bl	determine_relay_password
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L605
	ldr	r3, .L607
	ldr	r3, [r3]
	ldr	r2, .L607+8
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L607+12
	bl	readpass
	str	r0, [fp, #-36]
	ldr	r3, [fp, #-36]
	cmp	r3, #0
	bne	.L605
	ldr	r0, .L607+16
	bl	fatal
.L605:
	ldr	r0, [fp, #-32]
	bl	strlen
	mov	r4, r0
	ldr	r0, [fp, #-36]
	bl	strlen
	mov	r3, r0
	add	r3, r4, r3
	add	r3, r3, #1
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	mov	r0, r3
	bl	xmalloc
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	mov	r1, r3
	ldr	r3, [fp, #-36]
	str	r3, [sp]
	ldr	r3, [fp, #-32]
	ldr	r2, .L607+20
	ldr	r0, [fp, #-24]
	bl	snprintf
	ldr	r0, [fp, #-36]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-36]
	bl	memset
	ldr	r0, [fp, #-24]
	bl	make_base64_string
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-28]
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-24]
	bl	memset
	ldr	r3, .L607+24
	mov	r2, #0
	str	r2, [r3]
	ldr	r2, [fp, #-20]
	ldr	r1, .L607+28
	ldr	r0, [fp, #-40]
	bl	sendf
	str	r0, [fp, #-16]
	ldr	r3, .L607+24
	mov	r2, #1
	str	r2, [r3]
	ldr	r1, .L607+32
	ldr	r0, .L607+36
	bl	report_text
	ldr	r0, [fp, #-20]
	bl	strlen
	mov	r3, r0
	mov	r2, r3
	mov	r1, #0
	ldr	r0, [fp, #-20]
	bl	memset
	ldr	r0, [fp, #-20]
	bl	free
	ldr	r3, [fp, #-16]
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L608:
	.align	2
.L607:
	.word	relay_user
	.word	.LC205
	.word	relay_host
	.word	.LC206
	.word	.LC207
	.word	.LC208
	.word	f_report
	.word	.LC209
	.word	.LC210
	.word	.LC160
	.size	basic_auth, .-basic_auth
	.section	.rodata
	.align	2
.LC211:
	.ascii	"begin_http_relay()\012\000"
	.align	2
.LC212:
	.ascii	"CONNECT %s:%d HTTP/1.0\015\012\000"
	.align	2
.LC213:
	.ascii	"failed to read http response.\012\000"
	.align	2
.LC214:
	.ascii	"Unexpected http response: '%s'.\012\000"
	.align	2
.LC215:
	.ascii	"connected, start user session.\012\000"
	.align	2
.LC216:
	.ascii	"Location: \000"
	.align	2
.LC217:
	.ascii	"//\000"
	.align	2
.LC218:
	.ascii	":\000"
	.align	2
.LC219:
	.ascii	"WWW-Authenticate:\000"
	.align	2
.LC220:
	.ascii	"Proxy-Authenticate:\000"
	.align	2
.LC221:
	.ascii	" \000"
	.align	2
.LC222:
	.ascii	"Invalid format of %s field.\000"
	.align	2
.LC223:
	.ascii	"basic\000"
	.align	2
.LC224:
	.ascii	"Unsupported authentication type: %s\000"
	.align	2
.LC225:
	.ascii	"Can't find %s in response header.\000"
	.align	2
.LC226:
	.ascii	"http proxy is not allowed.\012\000"
	.align	2
.LC227:
	.ascii	"Can't skip response headers\012\000"
	.align	2
.LC228:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	begin_http_relay
	.syntax unified
	.arm
	.fpu softvfp
	.type	begin_http_relay, %function
begin_http_relay:
	@ args = 0, pretend = 0, frame = 1056
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1056
	str	r0, [fp, #-1056]
	ldr	r3, .L642
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L642+4
	bl	debug
	ldr	r3, .L642+8
	ldr	r2, [r3]
	ldr	r3, .L642+12
	ldrh	r3, [r3]
	ldr	r1, .L642+16
	ldr	r0, [fp, #-1056]
	bl	sendf
	mov	r3, r0
	cmp	r3, #0
	bge	.L610
	mvn	r3, #0
	b	.L636
.L610:
	ldr	r3, .L642+20
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L612
	ldr	r0, [fp, #-1056]
	bl	basic_auth
	mov	r3, r0
	cmp	r3, #0
	bge	.L612
	mvn	r3, #0
	b	.L636
.L612:
	ldr	r1, .L642+24
	ldr	r0, [fp, #-1056]
	bl	sendf
	mov	r3, r0
	cmp	r3, #0
	bge	.L613
	mvn	r3, #0
	b	.L636
.L613:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #1024
	mov	r1, r3
	ldr	r0, [fp, #-1056]
	bl	line_input
	mov	r3, r0
	cmp	r3, #0
	bge	.L614
	ldr	r0, .L642+28
	bl	debug
	mvn	r3, #0
	b	.L636
.L614:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, #32
	mov	r0, r3
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	bne	.L615
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, .L642+32
	bl	error
	mvn	r3, #0
	b	.L636
.L615:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, #32
	mov	r0, r3
	bl	strchr
	mov	r3, r0
	mov	r0, r3
	bl	atoi
	str	r0, [fp, #-1048]
	ldr	r3, [fp, #-1048]
	ldr	r2, .L642+36
	cmp	r3, r2
	beq	.L616
	ldr	r3, [fp, #-1048]
	cmp	r3, #408
	bge	.L617
	ldr	r3, [fp, #-1048]
	ldr	r2, .L642+40
	cmp	r3, r2
	beq	.L616
	ldr	r3, [fp, #-1048]
	ldr	r2, .L642+40
	cmp	r3, r2
	bgt	.L617
	ldr	r3, [fp, #-1048]
	cmp	r3, #200
	beq	.L618
	ldr	r3, [fp, #-1048]
	ldr	r2, .L642+44
	cmp	r3, r2
	beq	.L619
	b	.L617
.L618:
	ldr	r0, .L642+48
	bl	debug
	b	.L620
.L639:
	nop
.L619:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #1024
	mov	r1, r3
	ldr	r0, [fp, #-1056]
	bl	line_input
	mov	r3, r0
	cmp	r3, #0
	bne	.L638
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	downcase
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+52
	mov	r0, r3
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	beq	.L623
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+56
	mov	r0, r3
	bl	cut_token
	mov	r3, r0
	ldr	r2, .L642+60
	str	r3, [r2]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+64
	mov	r0, r3
	bl	cut_token
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+68
	mov	r0, r3
	bl	cut_token
	mov	r3, r0
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	ldr	r2, .L642+72
	strh	r3, [r2]	@ movhi
.L623:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+24
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L639
	b	.L622
.L638:
	nop
.L622:
	mov	r3, #1
	b	.L636
.L616:
	ldr	r3, .L642+20
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L624
	ldr	r0, .L642+76
	bl	error
	mvn	r3, #0
	b	.L636
.L624:
	ldr	r3, [fp, #-1048]
	ldr	r2, .L642+40
	cmp	r3, r2
	bne	.L625
	ldr	r3, .L642+80
	b	.L626
.L625:
	ldr	r3, .L642+84
.L626:
	str	r3, [fp, #-1044]
.L633:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #1024
	mov	r1, r3
	ldr	r0, [fp, #-1056]
	bl	line_input
	mov	r3, r0
	cmp	r3, #0
	bne	.L640
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	downcase
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, [fp, #-1044]
	mov	r0, r3
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	beq	.L629
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+88
	mov	r0, r3
	bl	cut_token
	str	r0, [fp, #-1040]
	ldr	r1, .L642+88
	ldr	r0, [fp, #-1040]
	bl	cut_token
	str	r0, [fp, #-1036]
	ldr	r3, [fp, #-1040]
	cmp	r3, #0
	beq	.L630
	ldr	r3, [fp, #-1036]
	cmp	r3, #0
	bne	.L631
.L630:
	ldr	r1, [fp, #-1044]
	ldr	r0, .L642+92
	bl	debug
	mvn	r3, #0
	b	.L636
.L631:
	ldr	r1, .L642+96
	ldr	r0, [fp, #-1040]
	bl	expect
	mov	r3, r0
	cmp	r3, #0
	beq	.L632
	ldr	r3, .L642+20
	mov	r2, #1
	str	r2, [r3]
	b	.L629
.L632:
	ldr	r1, [fp, #-1040]
	ldr	r0, .L642+100
	bl	debug
.L629:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+24
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L633
	b	.L628
.L640:
	nop
.L628:
	ldr	r3, .L642+20
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L634
	ldr	r1, [fp, #-1044]
	ldr	r0, .L642+104
	bl	debug
	mvn	r3, #0
	b	.L636
.L634:
	mov	r3, #1
	b	.L636
.L617:
	ldr	r0, .L642+108
	bl	debug
	mvn	r3, #0
	b	.L636
.L641:
	nop
.L620:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #1024
	mov	r1, r3
	ldr	r0, [fp, #-1056]
	bl	line_input
	mov	r3, r0
	cmp	r3, #0
	beq	.L635
	ldr	r0, .L642+112
	bl	debug
	mvn	r3, #0
	b	.L636
.L635:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L642+24
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L641
	mov	r3, #0
.L636:
	ldr	r2, .L642
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L637
	bl	__stack_chk_fail
.L637:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L643:
	.align	2
.L642:
	.word	.LC228
	.word	.LC211
	.word	dest_host
	.word	dest_port
	.word	.LC212
	.word	proxy_auth_type
	.word	.LC171
	.word	.LC213
	.word	.LC214
	.word	407
	.word	401
	.word	302
	.word	.LC215
	.word	.LC216
	.word	.LC217
	.word	relay_host
	.word	.LC113
	.word	.LC218
	.word	relay_port
	.word	.LC196
	.word	.LC219
	.word	.LC220
	.word	.LC221
	.word	.LC222
	.word	.LC223
	.word	.LC224
	.word	.LC225
	.word	.LC226
	.word	.LC227
	.size	begin_http_relay, .-begin_http_relay
	.section	.rodata
	.align	2
.LC229:
	.ascii	"connected to\000"
	.align	2
.LC231:
	.ascii	"begin_telnet_relay()\012\000"
	.align	2
.LC232:
	.ascii	"good phrase: '%s'\012\000"
	.align	2
.LC233:
	.ascii	"bad phrases\000"
	.align	2
.LC234:
	.ascii	"%c '%s'\000"
	.align	2
.LC235:
	.ascii	"%s\015\012\000"
	.align	2
.LC236:
	.ascii	"good phrase is detected: '%s'\012\000"
	.align	2
.LC237:
	.ascii	"bad phrase is detected: '%s'\012\000"
	.align	2
.LC238:
	.ascii	"error reading from telnet proxy\012\000"
	.align	2
.LC230:
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.align	2
.LC239:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	begin_telnet_relay
	.syntax unified
	.arm
	.fpu softvfp
	.type	begin_telnet_relay, %function
begin_telnet_relay:
	@ args = 0, pretend = 0, frame = 1072
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #1072
	str	r0, [fp, #-1072]
	ldr	r3, .L658
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r3, .L658+4
	str	r3, [fp, #-1056]
	ldr	r3, .L658+8
	sub	ip, fp, #1040
	sub	ip, ip, #4
	sub	ip, ip, #4
	ldm	r3, {r0, r1, r2, r3}
	stm	ip, {r0, r1, r2, r3}
	mov	r3, #32
	strb	r3, [fp, #-1061]
	ldr	r0, .L658+12
	bl	debug
	ldr	r1, [fp, #-1056]
	ldr	r0, .L658+16
	bl	debug
	ldr	r0, .L658+20
	bl	debug
	mov	r3, #58
	strb	r3, [fp, #-1061]
	mov	r3, #0
	str	r3, [fp, #-1060]
	b	.L645
.L646:
	ldrb	r1, [fp, #-1061]	@ zero_extendqisi2
	ldr	r3, [fp, #-1060]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-1044]
	mov	r2, r3
	ldr	r0, .L658+24
	bl	debug_
	mov	r3, #44
	strb	r3, [fp, #-1061]
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
.L645:
	ldr	r3, [fp, #-1060]
	cmp	r3, #3
	bls	.L646
	ldr	r0, .L658+28
	bl	debug_
	ldr	r3, .L658+32
	ldr	r3, [r3]
	ldr	r2, .L658+36
	ldr	r1, [r2]
	ldr	r2, .L658+40
	ldrh	r2, [r2]
	mov	r0, r3
	bl	expand_host_and_port
	str	r0, [fp, #-1052]
	ldr	r2, [fp, #-1052]
	ldr	r1, .L658+44
	ldr	r0, [fp, #-1072]
	bl	sendf
	mov	r3, r0
	cmp	r3, #0
	bge	.L647
	ldr	r0, [fp, #-1052]
	bl	free
	mvn	r3, #0
	b	.L656
.L647:
	ldr	r0, [fp, #-1052]
	bl	free
	b	.L649
.L655:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	downcase
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, [fp, #-1056]
	mov	r0, r3
	bl	strstr
	mov	r3, r0
	cmp	r3, #0
	beq	.L650
	ldr	r1, [fp, #-1056]
	ldr	r0, .L658+48
	bl	debug
	mov	r3, #0
	b	.L656
.L650:
	mov	r3, #0
	str	r3, [fp, #-1060]
	b	.L651
.L653:
	ldr	r3, [fp, #-1060]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-1044]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strstr
	mov	r3, r0
	cmp	r3, #0
	beq	.L652
	ldr	r3, [fp, #-1060]
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r3, [r3, #-1044]
	mov	r1, r3
	ldr	r0, .L658+52
	bl	debug
	mvn	r3, #0
	b	.L656
.L652:
	ldr	r3, [fp, #-1060]
	add	r3, r3, #1
	str	r3, [fp, #-1060]
.L651:
	ldr	r3, [fp, #-1060]
	cmp	r3, #3
	bls	.L653
.L649:
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r2, #1024
	mov	r1, r3
	ldr	r0, [fp, #-1072]
	bl	line_input
	mov	r3, r0
	cmp	r3, #0
	bne	.L654
	ldrb	r3, [fp, #-1032]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L655
.L654:
	ldr	r0, .L658+56
	bl	debug
	mvn	r3, #0
.L656:
	ldr	r2, .L658
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L657
	bl	__stack_chk_fail
.L657:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L659:
	.align	2
.L658:
	.word	.LC239
	.word	.LC229
	.word	.LC230
	.word	.LC231
	.word	.LC232
	.word	.LC233
	.word	.LC234
	.word	.LC102
	.word	telnet_command
	.word	dest_host
	.word	dest_port
	.word	.LC235
	.word	.LC236
	.word	.LC237
	.word	.LC238
	.size	begin_telnet_relay, .-begin_telnet_relay
	.section	.rodata
	.align	2
.LC240:
	.ascii	"select() failed, %d\012\000"
	.align	2
.LC241:
	.ascii	"closed\000"
	.align	2
.LC242:
	.ascii	"reset\000"
	.align	2
.LC243:
	.ascii	"connection %s by peer\012\000"
	.align	2
.LC244:
	.ascii	"recv() failed, %d\012\000"
	.align	2
.LC245:
	.ascii	"recv %d bytes\012\000"
	.align	2
.LC246:
	.ascii	"local input is EOF\012\000"
	.align	2
.LC247:
	.ascii	"failed to read from local\012\000"
	.align	2
.LC248:
	.ascii	"recv() failed, errno = %d\012\000"
	.align	2
.LC249:
	.ascii	"send() failed, %d\012\000"
	.align	2
.LC250:
	.ascii	"sent %d bytes\012\000"
	.align	2
.LC251:
	.ascii	"0 <= lbuf_len\000"
	.align	2
.LC252:
	.ascii	"output (local) failed, errno=%d\012\000"
	.align	2
.LC253:
	.ascii	"0 <= rbuf_len\000"
	.align	2
.LC254:
	.ascii	"closing local port without disconnecting from remot"
	.ascii	"e\012\000"
	.align	2
.LC255:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	do_repeater
	.syntax unified
	.arm
	.fpu softvfp
	.type	do_repeater, %function
do_repeater:
	@ args = 0, pretend = 0, frame = 2376
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #2384
	str	r0, [fp, #-2368]
	str	r1, [fp, #-2372]
	str	r2, [fp, #-2376]
	ldr	r3, .L697
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mvn	r3, #1
	str	r3, [fp, #-2344]
	ldr	r2, [fp, #-2368]
	ldr	r3, [fp, #-2376]
	cmp	r2, r3
	movge	r3, r2
	movlt	r3, r3
	add	r3, r3, #1
	str	r3, [fp, #-2328]
	mov	r3, #1
	str	r3, [fp, #-2356]
	mov	r3, #1
	str	r3, [fp, #-2348]
	mov	r3, #0
	str	r3, [fp, #-2360]
	mov	r3, #0
	str	r3, [fp, #-2352]
	b	.L661
.L694:
	sub	r3, fp, #2304
	sub	r3, r3, #4
	sub	r3, r3, #4
	str	r3, [fp, #-2324]
	mov	r3, #0
	str	r3, [fp, #-2336]
	b	.L662
.L663:
	ldr	r3, [fp, #-2324]
	ldr	r2, [fp, #-2336]
	mov	r1, #0
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-2336]
	add	r3, r3, #1
	str	r3, [fp, #-2336]
.L662:
	ldr	r3, [fp, #-2336]
	cmp	r3, #31
	bls	.L663
	sub	r3, fp, #2176
	sub	r3, r3, #4
	sub	r3, r3, #4
	str	r3, [fp, #-2320]
	mov	r3, #0
	str	r3, [fp, #-2332]
	b	.L664
.L665:
	ldr	r3, [fp, #-2320]
	ldr	r2, [fp, #-2332]
	mov	r1, #0
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-2332]
	add	r3, r3, #1
	str	r3, [fp, #-2332]
.L664:
	ldr	r3, [fp, #-2332]
	cmp	r3, #31
	bls	.L665
	mov	r3, #0
	str	r3, [fp, #-2316]
	ldr	r3, [fp, #-2356]
	cmp	r3, #0
	beq	.L666
	ldr	r3, [fp, #-2360]
	cmp	r3, #1024
	bge	.L666
	ldr	r3, [fp, #-2368]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	mov	r2, r3
	lsl	r3, r2, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r1, [r3, #-2308]
	ldr	r3, [fp, #-2368]
	rsbs	r0, r3, #0
	and	r3, r3, #31
	and	r0, r0, #31
	rsbpl	r3, r0, #0
	mov	r0, #1
	lsl	r3, r0, r3
	orr	r1, r1, r3
	lsl	r3, r2, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	str	r1, [r3, #-2308]
.L666:
	ldr	r3, [fp, #-2348]
	cmp	r3, #0
	beq	.L667
	ldr	r3, [fp, #-2352]
	cmp	r3, #1024
	bge	.L667
	ldr	r3, [fp, #-2376]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	mov	r2, r3
	lsl	r3, r2, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r1, [r3, #-2308]
	ldr	r3, [fp, #-2376]
	rsbs	r0, r3, #0
	and	r3, r3, #31
	and	r0, r0, #31
	rsbpl	r3, r0, #0
	mov	r0, #1
	lsl	r3, r0, r3
	orr	r1, r1, r3
	lsl	r3, r2, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	str	r1, [r3, #-2308]
.L667:
	sub	r2, fp, #2176
	sub	r2, r2, #4
	sub	r2, r2, #4
	sub	r1, fp, #2304
	sub	r1, r1, #4
	sub	r1, r1, #4
	ldr	r3, [fp, #-2316]
	str	r3, [sp]
	mov	r3, #0
	ldr	r0, [fp, #-2328]
	bl	select
	mov	r3, r0
	cmn	r3, #1
	bne	.L668
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L697+4
	bl	error
	mvn	r3, #0
	b	.L695
.L668:
	ldr	r3, [fp, #-2376]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-2308]
	ldr	r3, [fp, #-2376]
	rsbs	r1, r3, #0
	and	r3, r3, #31
	and	r1, r1, #31
	rsbpl	r3, r1, #0
	mov	r1, #1
	lsl	r3, r1, r3
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L670
	ldr	r3, [fp, #-2352]
	cmp	r3, #1024
	bge	.L670
	ldr	r2, [fp, #-2352]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r1, r3, r2
	ldr	r3, [fp, #-2352]
	rsb	r2, r3, #1024
	mov	r3, #0
	ldr	r0, [fp, #-2376]
	bl	recv
	str	r0, [fp, #-2340]
	ldr	r3, [fp, #-2340]
	cmp	r3, #0
	beq	.L671
	ldr	r3, [fp, #-2340]
	cmn	r3, #1
	bne	.L672
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	cmp	r3, #104
	bne	.L672
.L671:
	ldr	r3, [fp, #-2340]
	cmp	r3, #0
	bne	.L673
	ldr	r3, .L697+8
	b	.L674
.L673:
	ldr	r3, .L697+12
.L674:
	mov	r1, r3
	ldr	r0, .L697+16
	bl	debug
	mov	r3, #1
	str	r3, [fp, #-2344]
	mov	r3, #0
	str	r3, [fp, #-2348]
	mov	r3, #0
	str	r3, [fp, #-2356]
	b	.L670
.L672:
	ldr	r3, [fp, #-2340]
	cmn	r3, #1
	bne	.L675
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L697+20
	bl	fatal
	b	.L670
.L675:
	ldr	r1, [fp, #-2340]
	ldr	r0, .L697+24
	bl	debug
	ldr	r3, .L697+28
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L676
	ldr	r2, [fp, #-2352]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r3, r3, r2
	ldr	r2, [fp, #-2340]
	mov	r1, r3
	ldr	r0, .L697+32
	bl	report_bytes
.L676:
	ldr	r2, [fp, #-2352]
	ldr	r3, [fp, #-2340]
	add	r3, r2, r3
	str	r3, [fp, #-2352]
.L670:
	ldr	r3, [fp, #-2368]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-2308]
	ldr	r3, [fp, #-2368]
	rsbs	r1, r3, #0
	and	r3, r3, #31
	and	r1, r1, #31
	rsbpl	r3, r1, #0
	mov	r1, #1
	lsl	r3, r1, r3
	and	r3, r3, r2
	cmp	r3, #0
	beq	.L677
	ldr	r3, [fp, #-2360]
	cmp	r3, #1024
	bge	.L677
	ldr	r3, .L697+36
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L678
	ldr	r2, [fp, #-2360]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r1, r3, r2
	ldr	r3, [fp, #-2360]
	rsb	r2, r3, #1024
	mov	r3, #0
	ldr	r0, [fp, #-2368]
	bl	recv
	str	r0, [fp, #-2340]
	b	.L679
.L678:
	ldr	r2, [fp, #-2360]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r1, r3, r2
	ldr	r3, [fp, #-2360]
	rsb	r3, r3, #1024
	mov	r2, r3
	ldr	r0, [fp, #-2368]
	bl	read
	str	r0, [fp, #-2340]
.L679:
	ldr	r3, [fp, #-2340]
	cmp	r3, #0
	bne	.L680
	ldr	r0, .L697+40
	bl	debug
	ldr	r3, .L697+44
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L681
	mov	r1, #1
	ldr	r0, [fp, #-2376]
	bl	shutdown
.L681:
	mov	r3, #0
	str	r3, [fp, #-2356]
	mov	r3, #0
	str	r3, [fp, #-2344]
	b	.L677
.L680:
	ldr	r3, [fp, #-2340]
	cmn	r3, #1
	bne	.L682
	ldr	r3, .L697+44
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L683
	ldr	r0, .L697+48
	bl	debug
	mov	r3, #0
	str	r3, [fp, #-2356]
	mov	r3, #0
	str	r3, [fp, #-2344]
	b	.L677
.L683:
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L697+52
	bl	fatal
	b	.L677
.L682:
	ldr	r2, [fp, #-2360]
	ldr	r3, [fp, #-2340]
	add	r3, r2, r3
	str	r3, [fp, #-2360]
.L677:
	ldr	r3, [fp, #-2360]
	cmp	r3, #0
	ble	.L684
	ldr	r2, [fp, #-2360]
	sub	r1, fp, #2048
	sub	r1, r1, #4
	sub	r1, r1, #4
	mov	r3, #0
	ldr	r0, [fp, #-2376]
	bl	send
	str	r0, [fp, #-2340]
	ldr	r3, [fp, #-2340]
	cmn	r3, #1
	bne	.L685
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L697+56
	bl	fatal
	b	.L684
.L685:
	ldr	r3, [fp, #-2340]
	cmp	r3, #0
	ble	.L684
	ldr	r3, .L697+28
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L686
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [fp, #-2340]
	mov	r1, r3
	ldr	r0, .L697+60
	bl	report_bytes
.L686:
	ldr	r1, [fp, #-2340]
	ldr	r0, .L697+64
	bl	debug
	ldr	r2, [fp, #-2360]
	ldr	r3, [fp, #-2340]
	sub	r3, r2, r3
	str	r3, [fp, #-2360]
	ldr	r3, [fp, #-2360]
	cmp	r3, #0
	ble	.L687
	ldr	r2, [fp, #-2340]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r1, r3, r2
	ldr	r2, [fp, #-2360]
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	memcpy
.L687:
	ldr	r3, [fp, #-2360]
	cmp	r3, #0
	bge	.L684
	ldr	r3, .L697+68
	ldr	r2, .L697+72
	ldr	r1, .L697+76
	ldr	r0, .L697+80
	bl	__assert_fail
.L684:
	ldr	r3, [fp, #-2352]
	cmp	r3, #0
	ble	.L688
	ldr	r3, .L697+36
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L689
	ldr	r2, [fp, #-2352]
	sub	r1, fp, #1024
	sub	r1, r1, #4
	sub	r1, r1, #4
	mov	r3, #0
	ldr	r0, [fp, #-2372]
	bl	send
	str	r0, [fp, #-2340]
	b	.L690
.L689:
	ldr	r2, [fp, #-2352]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, [fp, #-2372]
	bl	write
	str	r0, [fp, #-2340]
.L690:
	ldr	r3, [fp, #-2340]
	cmn	r3, #1
	bne	.L691
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L697+84
	bl	fatal
.L691:
	ldr	r2, [fp, #-2352]
	ldr	r3, [fp, #-2340]
	sub	r3, r2, r3
	str	r3, [fp, #-2352]
	ldr	r2, [fp, #-2340]
	ldr	r3, [fp, #-2352]
	cmp	r2, r3
	bge	.L692
	ldr	r2, [fp, #-2340]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	add	r1, r3, r2
	ldr	r2, [fp, #-2352]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	memcpy
.L692:
	ldr	r3, [fp, #-2352]
	cmp	r3, #0
	bge	.L688
	ldr	r3, .L697+68
	ldr	r2, .L697+88
	ldr	r1, .L697+76
	ldr	r0, .L697+92
	bl	__assert_fail
.L688:
	ldr	r3, [fp, #-2356]
	cmp	r3, #0
	bne	.L661
	ldr	r3, .L697+44
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L661
	ldr	r0, .L697+96
	bl	debug
	mov	r3, #0
	str	r3, [fp, #-2348]
	mov	r1, #2
	ldr	r0, [fp, #-2372]
	bl	shutdown
	ldr	r0, [fp, #-2372]
	bl	close
	b	.L693
.L661:
	ldr	r3, [fp, #-2356]
	cmp	r3, #0
	bne	.L694
	ldr	r3, [fp, #-2348]
	cmp	r3, #0
	bne	.L694
.L693:
	ldr	r3, [fp, #-2344]
.L695:
	ldr	r2, .L697
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L696
	bl	__stack_chk_fail
.L696:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L698:
	.align	2
.L697:
	.word	.LC255
	.word	.LC240
	.word	.LC241
	.word	.LC242
	.word	.LC243
	.word	.LC244
	.word	.LC245
	.word	f_debug
	.word	.LC166
	.word	local_type
	.word	.LC246
	.word	f_hold_session
	.word	.LC247
	.word	.LC248
	.word	.LC249
	.word	.LC160
	.word	.LC250
	.word	__PRETTY_FUNCTION__.8447
	.word	2741
	.word	.LC46
	.word	.LC251
	.word	.LC252
	.word	2757
	.word	.LC253
	.word	.LC254
	.size	do_repeater, .-do_repeater
	.section	.rodata
	.align	2
.LC256:
	.ascii	"Creating source port to forward.\012\000"
	.align	2
.LC257:
	.ascii	"socket() failed, errno=%d\012\000"
	.align	2
.LC258:
	.ascii	"bind() failed, errno=%d\012\000"
	.align	2
.LC259:
	.ascii	"listen() failed, errno=%d\012\000"
	.align	2
.LC260:
	.ascii	"waiting new connection at port %d (socket=%d)\012\000"
	.align	2
.LC261:
	.ascii	"Give-up waiting port because stdin is closed.\000"
	.align	2
.LC262:
	.ascii	"accept() failed, errno=%d\012\000"
	.align	2
.LC263:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	accept_connection
	.syntax unified
	.arm
	.fpu softvfp
	.type	accept_connection, %function
accept_connection:
	@ args = 0, pretend = 0, frame = 208
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #216
	mov	r3, r0
	strh	r3, [fp, #-206]	@ movhi
	ldr	r3, .L715
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r0, .L715+4
	bl	debug
	mov	r2, #0
	mov	r1, #1
	mov	r0, #2
	bl	socket
	mov	r3, r0
	ldr	r2, .L715+8
	str	r3, [r2]
	ldr	r3, .L715+8
	ldr	r3, [r3]
	cmp	r3, #0
	bge	.L700
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L715+12
	bl	fatal
.L700:
	mov	r3, #1
	str	r3, [fp, #-196]
	ldr	r3, .L715+8
	ldr	r0, [r3]
	sub	r3, fp, #196
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #2
	mov	r1, #1
	bl	setsockopt
	mov	r3, #2
	strh	r3, [fp, #-168]	@ movhi
	ldrh	r3, [fp, #-206]
	mov	r0, r3
	bl	htons
	mov	r3, r0
	strh	r3, [fp, #-166]	@ movhi
	mov	r0, #0
	bl	htonl
	mov	r3, r0
	str	r3, [fp, #-164]
	ldr	r3, .L715+8
	ldr	r3, [r3]
	sub	r1, fp, #168
	mov	r2, #16
	mov	r0, r3
	bl	bind
	mov	r3, r0
	cmp	r3, #0
	bge	.L701
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L715+16
	bl	fatal
.L701:
	ldr	r3, .L715+8
	ldr	r3, [r3]
	mov	r1, #1
	mov	r0, r3
	bl	listen
	mov	r3, r0
	cmp	r3, #0
	bge	.L702
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L715+20
	bl	fatal
.L702:
	ldrh	r3, [fp, #-206]
	ldr	r2, .L715+8
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L715+24
	bl	debug
	ldr	r3, .L715+8
	ldr	r3, [r3]
	add	r3, r3, #1
	str	r3, [fp, #-188]
.L709:
	mov	r3, #0
	str	r3, [fp, #-184]
	sub	r3, fp, #136
	str	r3, [fp, #-180]
	mov	r3, #0
	str	r3, [fp, #-192]
	b	.L703
.L704:
	ldr	r3, [fp, #-180]
	ldr	r2, [fp, #-192]
	mov	r1, #0
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-192]
	add	r3, r3, #1
	str	r3, [fp, #-192]
.L703:
	ldr	r3, [fp, #-192]
	cmp	r3, #31
	bls	.L704
	ldr	r3, .L715+8
	ldr	r3, [r3]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	mov	r2, r3
	lsl	r3, r2, #2
	sub	r1, fp, #4
	add	r3, r1, r3
	ldr	r1, [r3, #-132]
	ldr	r3, .L715+8
	ldr	r3, [r3]
	rsbs	r0, r3, #0
	and	r3, r3, #31
	and	r0, r0, #31
	rsbpl	r3, r0, #0
	mov	r0, #1
	lsl	r3, r0, r3
	orr	r1, r1, r3
	lsl	r3, r2, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	str	r1, [r3, #-132]
	ldr	r3, [fp, #-136]
	orr	r3, r3, #1
	str	r3, [fp, #-136]
	sub	r1, fp, #136
	ldr	r3, [fp, #-184]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	ldr	r0, [fp, #-188]
	bl	select
	str	r0, [fp, #-176]
	ldr	r3, [fp, #-176]
	cmn	r3, #1
	bne	.L705
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L715+28
	bl	fatal
	mov	r0, #1
	bl	exit
.L705:
	ldr	r3, [fp, #-176]
	cmp	r3, #0
	ble	.L709
	ldr	r3, [fp, #-136]
	and	r3, r3, #1
	cmp	r3, #0
	beq	.L707
	bl	getchar
	mov	r3, r0
	cmp	r3, #0
	bgt	.L707
	ldr	r0, .L715+32
	bl	debug
	mov	r0, #0
	bl	exit
.L707:
	ldr	r3, .L715+8
	ldr	r3, [r3]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #4
	add	r3, r2, r3
	ldr	r2, [r3, #-132]
	ldr	r3, .L715+8
	ldr	r3, [r3]
	rsbs	r1, r3, #0
	and	r3, r3, #31
	and	r1, r1, #31
	rsbpl	r3, r1, #0
	mov	r1, #1
	lsl	r3, r1, r3
	and	r3, r3, r2
	cmp	r3, #0
	bne	.L714
	b	.L709
.L714:
	nop
	mov	r3, #16
	str	r3, [fp, #-200]
	ldr	r3, .L715+8
	ldr	r3, [r3]
	sub	r2, fp, #200
	sub	r1, fp, #152
	mov	r0, r3
	bl	accept
	str	r0, [fp, #-172]
	ldr	r3, [fp, #-172]
	cmp	r3, #0
	bge	.L710
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L715+36
	bl	fatal
.L710:
	ldr	r3, [fp, #-172]
	ldr	r2, .L715
	ldr	r1, [r2]
	ldr	r2, [fp, #-8]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L712
	bl	__stack_chk_fail
.L712:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L716:
	.align	2
.L715:
	.word	.LC263
	.word	.LC256
	.word	sock.8454
	.word	.LC257
	.word	.LC258
	.word	.LC259
	.word	.LC260
	.word	.LC240
	.word	.LC261
	.word	.LC262
	.size	accept_connection, .-accept_connection
	.section	.rodata
	.align	2
.LC264:
	.ascii	"Program is $Revision: 100 $\012\000"
	.align	2
.LC265:
	.ascii	"Unable to connect to destination host, errno=%d\012"
	.ascii	"\000"
	.align	2
.LC266:
	.ascii	"Unable to connect to relay host, errno=%d\012\000"
	.align	2
.LC267:
	.ascii	"Unknown host: %s\000"
	.align	2
.LC268:
	.ascii	"failed to begin relaying via SOCKS.\012\000"
	.align	2
.LC269:
	.ascii	"failed to begin relaying via HTTP.\012\000"
	.align	2
.LC270:
	.ascii	"failed to begin relaying via telnet.\012\000"
	.align	2
.LC271:
	.ascii	"connected\012\000"
	.align	2
.LC272:
	.ascii	"start relaying.\012\000"
	.align	2
.LC273:
	.ascii	"relaying done.\012\000"
	.align	2
.LC274:
	.ascii	"re-waiting at local port %d\012\000"
	.align	2
.LC275:
	.ascii	"re-start relaying\012\000"
	.align	2
.LC276:
	.ascii	"that's all, bye.\012\000"
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 32
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #32
	str	r0, [fp, #-32]
	str	r1, [fp, #-36]
	bl	make_revstr
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	getarg
	ldr	r0, .L748
	bl	debug
	ldr	r3, .L748+4
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L718
	ldr	r3, .L748+8
	ldrh	r3, [r3]
	mov	r0, r3
	bl	accept_connection
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-20]
	b	.L737
.L718:
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #1
	str	r3, [fp, #-16]
.L719:
.L737:
	ldr	r3, .L748+12
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L720
	ldr	r3, .L748+12
	ldr	r3, [r3]
	mov	r0, r3
	bl	set_timeout
.L720:
	ldr	r3, .L748+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	check_direct
	mov	r3, r0
	cmp	r3, #0
	beq	.L721
	ldr	r3, .L748+20
	mov	r2, #1
	str	r2, [r3]
.L721:
	ldr	r3, .L748+20
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L722
	ldr	r3, .L748+16
	ldr	r3, [r3]
	ldr	r2, .L748+24
	ldrh	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	open_connection
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmn	r3, #1
	bne	.L723
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L748+28
	bl	fatal
	b	.L723
.L722:
	ldr	r3, .L748+32
	ldr	r3, [r3]
	ldr	r2, .L748+36
	ldrh	r2, [r2]
	mov	r1, r2
	mov	r0, r3
	bl	open_connection
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmn	r3, #1
	bne	.L723
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L748+40
	bl	fatal
.L723:
	ldr	r3, .L748+44
	ldr	r3, [r3, #4]
	cmp	r3, #0
	beq	.L724
	ldr	r0, .L748+44
	bl	switch_ns
.L724:
	ldr	r3, .L748+20
	ldr	r3, [r3]
	cmp	r3, #2
	bne	.L725
	ldr	r3, .L748+48
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L725
	ldr	r3, .L748+16
	ldr	r3, [r3]
	ldr	r1, .L748+52
	mov	r0, r3
	bl	local_resolve
	mov	r3, r0
	cmp	r3, #0
	bge	.L725
	ldr	r3, .L748+16
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L748+56
	bl	fatal
.L725:
	ldr	r3, .L748+20
	ldr	r3, [r3]
	cmp	r3, #4
	beq	.L726
	cmp	r3, #4
	bgt	.L727
	cmp	r3, #2
	beq	.L728
	cmp	r3, #3
	beq	.L729
	b	.L727
.L728:
	ldr	r3, .L748+60
	ldr	r3, [r3]
	cmp	r3, #5
	bne	.L730
	ldr	r0, [fp, #-24]
	bl	begin_socks5_relay
	mov	r3, r0
	cmp	r3, #0
	blt	.L731
.L730:
	ldr	r3, .L748+60
	ldr	r3, [r3]
	cmp	r3, #4
	bne	.L744
	ldr	r0, [fp, #-24]
	bl	begin_socks4_relay
	mov	r3, r0
	cmp	r3, #0
	bge	.L744
.L731:
	ldr	r0, .L748+64
	bl	fatal
	b	.L744
.L729:
	ldr	r0, [fp, #-24]
	bl	begin_http_relay
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #1
	beq	.L733
	ldr	r3, [fp, #-12]
	cmp	r3, #1
	bgt	.L745
	ldr	r3, [fp, #-12]
	cmn	r3, #1
	beq	.L735
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	beq	.L746
	b	.L745
.L735:
	ldr	r0, [fp, #-24]
	bl	close
	ldr	r0, .L748+68
	bl	fatal
	b	.L746
.L733:
	ldr	r0, [fp, #-24]
	bl	close
	b	.L737
.L746:
	nop
	b	.L745
.L726:
	ldr	r0, [fp, #-24]
	bl	begin_telnet_relay
	mov	r3, r0
	cmp	r3, #0
	bge	.L747
	ldr	r0, .L748+72
	bl	fatal
	b	.L747
.L744:
	nop
	b	.L727
.L745:
	nop
	b	.L727
.L747:
	nop
.L727:
	ldr	r0, .L748+76
	bl	debug
	ldr	r3, .L748+12
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L739
	mov	r0, #0
	bl	set_timeout
.L739:
	ldr	r0, .L748+80
	bl	debug
.L740:
	ldr	r2, [fp, #-24]
	ldr	r1, [fp, #-16]
	ldr	r0, [fp, #-20]
	bl	do_repeater
	str	r0, [fp, #-8]
	ldr	r0, .L748+84
	bl	debug
	ldr	r3, .L748+4
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L741
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L741
	ldr	r3, .L748+88
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L741
	ldr	r3, .L748+8
	ldrh	r3, [r3]
	mov	r1, r3
	ldr	r0, .L748+92
	bl	debug
	ldr	r3, .L748+8
	ldrh	r3, [r3]
	mov	r0, r3
	bl	accept_connection
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	str	r3, [fp, #-20]
	ldr	r0, .L748+96
	bl	debug
	b	.L740
.L741:
	ldr	r0, [fp, #-24]
	bl	close
	ldr	r3, .L748+4
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L742
	ldr	r0, [fp, #-20]
	bl	close
.L742:
	ldr	r0, .L748+100
	bl	debug
	mov	r3, #0
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L749:
	.align	2
.L748:
	.word	.LC264
	.word	local_type
	.word	local_port
	.word	connect_timeout
	.word	dest_host
	.word	relay_method
	.word	dest_port
	.word	.LC265
	.word	relay_host
	.word	relay_port
	.word	.LC266
	.word	socks_ns
	.word	socks_resolve
	.word	dest_addr
	.word	.LC267
	.word	socks_version
	.word	.LC268
	.word	.LC269
	.word	.LC270
	.word	.LC271
	.word	.LC272
	.word	.LC273
	.word	f_hold_session
	.word	.LC274
	.word	.LC275
	.word	.LC276
	.size	main, .-main
	.section	.rodata
	.align	2
	.type	__PRETTY_FUNCTION__.7894, %object
	.size	__PRETTY_FUNCTION__.7894, 21
__PRETTY_FUNCTION__.7894:
	.ascii	"expand_host_and_port\000"
	.align	2
	.type	__PRETTY_FUNCTION__.8002, %object
	.size	__PRETTY_FUNCTION__.8002, 16
__PRETTY_FUNCTION__.8002:
	.ascii	"parse_addr_pair\000"
	.local	disabled.8089
	.comm	disabled.8089,4,4
	.local	otio.8084
	.comm	otio.8084,60,4
	.local	oset.8086
	.comm	oset.8086,128,4
	.local	osa.8088
	.comm	osa.8088,140,4
	.local	nset.8085
	.comm	nset.8085,128,4
	.local	nsa.8087
	.comm	nsa.8087,140,4
	.local	ntio.8083
	.comm	ntio.8083,60,4
	.local	work.8187
	.comm	work.8187,1024,4
	.align	2
	.type	__PRETTY_FUNCTION__.8217, %object
	.size	__PRETTY_FUNCTION__.8217, 11
__PRETTY_FUNCTION__.8217:
	.ascii	"atomic_out\000"
	.align	2
	.type	__PRETTY_FUNCTION__.8228, %object
	.size	__PRETTY_FUNCTION__.8228, 10
__PRETTY_FUNCTION__.8228:
	.ascii	"atomic_in\000"
	.local	buf.8265
	.comm	buf.8265,1000,4
	.local	buf.8355
	.comm	buf.8355,10240,4
	.local	buf.8361
	.comm	buf.8361,4,4
	.align	2
	.type	__PRETTY_FUNCTION__.8447, %object
	.size	__PRETTY_FUNCTION__.8447, 12
__PRETTY_FUNCTION__.8447:
	.ascii	"do_repeater\000"
	.data
	.align	2
	.type	sock.8454, %object
	.size	sock.8454, 4
sock.8454:
	.word	-1
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
