	.file	"989491.c"
	.intel_syntax noprefix
	.text
	.globl	now
	.bss
	.align 8
	.type	now, @object
	.size	now, 8
now:
	.zero	8
	.globl	lsock
	.align 4
	.type	lsock, @object
	.size	lsock, 4
lsock:
	.zero	4
	.globl	family
	.align 4
	.type	family, @object
	.size	family, 4
family:
	.zero	4
	.globl	tcp
	.align 4
	.type	tcp, @object
	.size	tcp, 4
tcp:
	.zero	4
	.globl	lport
	.align 8
	.type	lport, @object
	.size	lport, 8
lport:
	.zero	8
	.globl	rhost
	.align 8
	.type	rhost, @object
	.size	rhost, 8
rhost:
	.zero	8
	.globl	rport
	.align 8
	.type	rport, @object
	.size	rport, 8
rport:
	.zero	8
	.globl	rules
	.align 4
	.type	rules, @object
	.size	rules, 4
rules:
	.zero	4
	.globl	rule
	.align 8
	.type	rule, @object
	.size	rule, 8
rule:
	.zero	8
	.globl	rule_live
	.align 8
	.type	rule_live, @object
	.size	rule_live, 8
rule_live:
	.zero	8
	.globl	connections
	.align 8
	.type	connections, @object
	.size	connections, 8
connections:
	.zero	8
	.globl	stop
	.align 4
	.type	stop, @object
	.size	stop, 4
stop:
	.zero	4
	.globl	all_dir
	.align 4
	.type	all_dir, @object
	.size	all_dir, 4
all_dir:
	.zero	4
	.globl	changes
	.align 4
	.type	changes, @object
	.size	changes, 4
changes:
	.zero	4
	.section	.rodata
.LC0:
	.string	"Error: %s\n\n"
	.align 8
.LC1:
	.string	"Usage: netsed [option] proto lport rhost rport rule1 [ rule2 ... ]\n\n"
	.align 8
.LC2:
	.string	"  use netsed -h for more information on usage.\n"
	.text
	.globl	short_usage_hints
	.type	short_usage_hints, @function
short_usage_hints:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	je	.L2
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L2:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 68
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 47
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE36:
	.size	short_usage_hints, .-short_usage_hints
	.section	.rodata
	.align 8
.LC3:
	.string	"  options - can be --ipv4 or -4 to force address resolution in IPv4,\n"
	.align 8
.LC4:
	.string	"            --ipv6 or -6 to force address resolution in IPv6,\n"
	.align 8
.LC5:
	.string	"            --ipany to resolve the address in either IPv4 or IPv6.\n"
	.align 8
.LC6:
	.string	"          - --help or -h to display this usage information.\n"
	.align 8
.LC7:
	.string	"  proto   - protocol specification (tcp or udp)\n"
	.align 8
.LC8:
	.string	"  lport   - local port to listen on (see README for transparent\n"
	.align 8
.LC9:
	.string	"            traffic intercepting on some systems)\n"
	.align 8
.LC10:
	.string	"  rhost   - where connection should be forwarded (0 = use destination\n"
	.align 8
.LC11:
	.string	"            address of incoming connection, see README)\n"
	.align 8
.LC12:
	.string	"  rport   - destination port (0 = dst port of incoming connection)\n"
	.align 8
.LC13:
	.string	"  ruleN   - replacement rules (see below)\n\n"
	.align 8
.LC14:
	.string	"General syntax of replacement rules: s/pat1/pat2[/expire]\n\n"
	.align 8
.LC15:
	.string	"This will replace all occurrences of pat1 with pat2 in any matching packet.\n"
	.align 8
.LC16:
	.string	"An additional parameter, 'expire' of the form [CHAR][NUM], can be used to\n"
	.align 8
.LC17:
	.string	"expire a rule after NUM successful substitutions during a given connection.\n"
	.align 8
.LC18:
	.string	"The character CHAR is one of \"iIoO\", with the effect of restricting the rule\n"
	.align 8
.LC19:
	.string	"to apply to incoming (\"iI\") or to outgoing (\"oO\") packets only, as seen from\n"
	.align 8
.LC20:
	.string	"the client's perspective. Both of CHAR and NUM are optional.\n\n"
	.align 8
.LC21:
	.string	"Eight-bit characters, including NULL and '/', can be applied using HTTP-like\n"
	.align 8
.LC22:
	.string	"hex escape sequences (e.g. CRLF as %%0a%%0d).\n"
	.align 8
.LC23:
	.string	"A match on '%%' can be achieved by specifying '%%%%'.\n\nExamples:\n"
	.align 8
.LC24:
	.string	"  's/andrew/mike/1'     - replace 'andrew' with 'mike' (only first time)\n"
	.align 8
.LC25:
	.string	"  's/andrew/mike'       - replace all occurrences of 'andrew' with 'mike'\n"
	.align 8
.LC26:
	.string	"  's/andrew/mike%%00%%00' - replace 'andrew' with 'mike\\x00\\x00'\n"
	.align 8
.LC27:
	.string	"                          (manually padding to keep original size)\n"
	.align 8
.LC28:
	.string	"  's/%%%%/%%2f/20'         - replace the 20 first occurrence of '%%' with '/'\n"
	.align 8
.LC29:
	.string	"  's/andrew/mike/o'     - the server will always see 'mike', never 'andrew'\n\n"
	.align 8
.LC30:
	.string	"  's/Rilke/Proust/o s/Proust/Rilke/i'\n"
	.align 8
.LC31:
	.string	"                        - let Rilke travel incognito as Proust\n\n"
	.align 8
.LC32:
	.string	"Rules are not active across packet boundaries, and they are evaluated\n"
	.align 8
.LC33:
	.string	"from first to last, not yet expired rule, as stated on the command line.\n"
	.text
	.globl	usage_hints
	.type	usage_hints, @function
usage_hints:
.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	QWORD PTR -8[rbp], rdi
	cmp	QWORD PTR -8[rbp], 0
	je	.L4
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC0[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L4:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 68
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 69
	mov	esi, 1
	lea	rdi, .LC3[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 62
	mov	esi, 1
	lea	rdi, .LC4[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 67
	mov	esi, 1
	lea	rdi, .LC5[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 60
	mov	esi, 1
	lea	rdi, .LC6[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 48
	mov	esi, 1
	lea	rdi, .LC7[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 64
	mov	esi, 1
	lea	rdi, .LC8[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 50
	mov	esi, 1
	lea	rdi, .LC9[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 70
	mov	esi, 1
	lea	rdi, .LC10[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 56
	mov	esi, 1
	lea	rdi, .LC11[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 67
	mov	esi, 1
	lea	rdi, .LC12[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 43
	mov	esi, 1
	lea	rdi, .LC13[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 59
	mov	esi, 1
	lea	rdi, .LC14[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 76
	mov	esi, 1
	lea	rdi, .LC15[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 74
	mov	esi, 1
	lea	rdi, .LC16[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 76
	mov	esi, 1
	lea	rdi, .LC17[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 77
	mov	esi, 1
	lea	rdi, .LC18[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 77
	mov	esi, 1
	lea	rdi, .LC19[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 62
	mov	esi, 1
	lea	rdi, .LC20[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 77
	mov	esi, 1
	lea	rdi, .LC21[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC22[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC23[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 73
	mov	esi, 1
	lea	rdi, .LC24[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 74
	mov	esi, 1
	lea	rdi, .LC25[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC26[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 67
	mov	esi, 1
	lea	rdi, .LC27[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC28[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 77
	mov	esi, 1
	lea	rdi, .LC29[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 38
	mov	esi, 1
	lea	rdi, .LC30[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 64
	mov	esi, 1
	lea	rdi, .LC31[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 70
	mov	esi, 1
	lea	rdi, .LC32[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 73
	mov	esi, 1
	lea	rdi, .LC33[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
	.cfi_endproc
.LFE37:
	.size	usage_hints, .-usage_hints
	.globl	freetracker
	.type	freetracker, @function
freetracker:
.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, 16
	mov	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L6
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR [rax]
	mov	rdi, rax
	call	free@PLT
	jmp	.L7
.L6:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 12[rax]
	mov	edi, eax
	call	close@PLT
.L7:
	mov	rax, QWORD PTR -8[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	edi, eax
	call	close@PLT
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	free@PLT
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE38:
	.size	freetracker, .-freetracker
	.globl	clean_socks
	.type	clean_socks, @function
clean_socks:
.LFB39:
	.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	eax, DWORD PTR lsock[rip]
	mov	edi, eax
	call	close@PLT
	jmp	.L9
.L10:
	mov	rax, QWORD PTR connections[rip]
	mov	QWORD PTR -8[rbp], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR connections[rip], rax
	mov	rax, QWORD PTR -8[rbp]
	mov	rdi, rax
	call	freetracker
.L9:
	mov	rax, QWORD PTR connections[rip]
	test	rax, rax
	jne	.L10
	nop
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE39:
	.size	clean_socks, .-clean_socks
	.globl	get_port
	.type	get_port, @function
get_port:
.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	QWORD PTR -8[rbp], rdi
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	cmp	eax, 2
	je	.L12
	cmp	eax, 10
	je	.L13
	jmp	.L16
.L12:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	mov	edi, eax
	call	ntohs@PLT
	jmp	.L15
.L13:
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR 2[rax]
	movzx	eax, ax
	mov	edi, eax
	call	ntohs@PLT
	jmp	.L15
.L16:
	mov	eax, 0
.L15:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE40:
	.size	get_port, .-get_port
	.globl	set_port
	.type	set_port, @function
set_port:
.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
	mov	eax, esi
	mov	WORD PTR -12[rbp], ax
	mov	rax, QWORD PTR -8[rbp]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	cmp	eax, 2
	je	.L18
	cmp	eax, 10
	je	.L19
	jmp	.L22
.L18:
	movzx	eax, WORD PTR -12[rbp]
	mov	edi, eax
	call	htons@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	WORD PTR 2[rdx], ax
	jmp	.L21
.L19:
	movzx	eax, WORD PTR -12[rbp]
	mov	edi, eax
	call	htons@PLT
	mov	rdx, QWORD PTR -8[rbp]
	mov	WORD PTR 2[rdx], ax
.L22:
	nop
.L21:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE41:
	.size	set_port, .-set_port
	.globl	is_addr_any
	.type	is_addr_any, @function
is_addr_any:
.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, 24
	.cfi_offset 3, -24
	mov	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	cmp	eax, 2
	je	.L24
	cmp	eax, 10
	je	.L25
	jmp	.L28
.L24:
	mov	rax, QWORD PTR -24[rbp]
	mov	ebx, DWORD PTR 4[rax]
	mov	edi, 0
	call	htonl@PLT
	cmp	ebx, eax
	sete	al
	movzx	eax, al
	jmp	.L27
.L25:
	mov	rax, QWORD PTR -24[rbp]
	add	rax, 8
	mov	edx, 16
	lea	rsi, in6addr_any[rip]
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	sete	al
	movzx	eax, al
	jmp	.L27
.L28:
	mov	eax, 0
.L27:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE42:
	.size	is_addr_any, .-is_addr_any
	.section	.rodata
.LC34:
	.string	"[-] Error: %s\n"
.LC35:
	.string	"netsed: exiting.\n"
	.text
	.globl	error
	.type	error, @function
error:
.LFB43:
	.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
	mov	rax, QWORD PTR stderr[rip]
	mov	rdx, QWORD PTR -8[rbp]
	lea	rsi, .LC34[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 17
	mov	esi, 1
	lea	rdi, .LC35[rip]
	call	fwrite@PLT
	call	clean_socks
	mov	edi, 2
	call	exit@PLT
	.cfi_endproc
.LFE43:
	.size	error, .-error
	.globl	hex
	.data
	.align 16
	.type	hex, @object
	.size	hex, 17
hex:
	.string	"0123456789ABCDEF"
	.section	.rodata
	.align 8
.LC36:
	.string	"shrink_to_binary: unable to malloc() buffers"
	.align 8
.LC37:
	.string	"shrink_to_binary: src pattern: unexpected end."
	.align 8
.LC38:
	.string	"shrink_to_binary: src pattern: non-hex sequence."
	.align 8
.LC39:
	.string	"shrink_to_binary: dst pattern: unexpected end."
	.align 8
.LC40:
	.string	"shrink_to_binary: dst pattern: non-hex sequence."
	.text
	.globl	shrink_to_binary
	.type	shrink_to_binary, @function
shrink_to_binary:
.LFB44:
	.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, 56
	.cfi_offset 3, -24
	mov	QWORD PTR -56[rbp], rdi
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	strlen@PLT
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -56[rbp]
	mov	QWORD PTR 8[rax], rdx
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	je	.L31
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 8[rax]
	test	rax, rax
	jne	.L32
.L31:
	lea	rdi, .LC36[rip]
	call	error
.L32:
	mov	DWORD PTR -44[rbp], 0
	jmp	.L33
.L41:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 37
	jne	.L34
	add	DWORD PTR -44[rbp], 1
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 37
	jne	.L35
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 37
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 32[rax], edx
	jmp	.L36
.L35:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L37
	lea	rdi, .LC37[rip]
	call	error
.L37:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L38
	lea	rdi, .LC37[rip]
	call	error
.L38:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	mov	esi, eax
	lea	rdi, hex[rip]
	call	strchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L39
	lea	rdi, .LC38[rip]
	call	error
.L39:
	lea	rdx, hex[rip]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, rdx
	sal	eax, 4
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	mov	esi, eax
	lea	rdi, hex[rip]
	call	strchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L40
	lea	rdi, .LC38[rip]
	call	error
.L40:
	lea	rdx, hex[rip]
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, rdx
	mov	edx, eax
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	mov	DWORD PTR -36[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	cdqe
	add	rax, rdx
	mov	edx, DWORD PTR -36[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 32[rax], edx
	add	DWORD PTR -44[rbp], 1
	jmp	.L36
.L34:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 16[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR [rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	cdqe
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 32[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 32[rax], edx
.L36:
	add	DWORD PTR -44[rbp], 1
.L33:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rbx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 16[rax]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L41
	mov	DWORD PTR -44[rbp], 0
	jmp	.L42
.L50:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 37
	jne	.L43
	add	DWORD PTR -44[rbp], 1
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 37
	jne	.L44
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	cdqe
	add	rax, rdx
	mov	BYTE PTR [rax], 37
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 36[rax], edx
	jmp	.L45
.L44:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L46
	lea	rdi, .LC39[rip]
	call	error
.L46:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	test	al, al
	jne	.L47
	lea	rdi, .LC39[rip]
	call	error
.L47:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	mov	esi, eax
	lea	rdi, hex[rip]
	call	strchr@PLT
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	jne	.L48
	lea	rdi, .LC40[rip]
	call	error
.L48:
	lea	rdx, hex[rip]
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, rdx
	sal	eax, 4
	mov	DWORD PTR -40[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	add	rax, 1
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	edi, eax
	call	toupper@PLT
	mov	esi, eax
	lea	rdi, hex[rip]
	call	strchr@PLT
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	jne	.L49
	lea	rdi, .LC40[rip]
	call	error
.L49:
	lea	rdx, hex[rip]
	mov	rax, QWORD PTR -32[rbp]
	sub	rax, rdx
	mov	edx, eax
	mov	eax, DWORD PTR -40[rbp]
	add	eax, edx
	mov	DWORD PTR -40[rbp], eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	cdqe
	add	rax, rdx
	mov	edx, DWORD PTR -40[rbp]
	mov	BYTE PTR [rax], dl
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 36[rax], edx
	add	DWORD PTR -44[rbp], 1
	jmp	.L45
.L43:
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rcx, [rdx+rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	rdx, QWORD PTR 8[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	cdqe
	add	rdx, rax
	movzx	eax, BYTE PTR [rcx]
	mov	BYTE PTR [rdx], al
	mov	rax, QWORD PTR -56[rbp]
	mov	eax, DWORD PTR 36[rax]
	lea	edx, 1[rax]
	mov	rax, QWORD PTR -56[rbp]
	mov	DWORD PTR 36[rax], edx
.L45:
	add	DWORD PTR -44[rbp], 1
.L42:
	mov	eax, DWORD PTR -44[rbp]
	movsx	rbx, eax
	mov	rax, QWORD PTR -56[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L50
	nop
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE44:
	.size	shrink_to_binary, .-shrink_to_binary
	.section	.rodata
	.align 8
.LC41:
	.string	"unsupported optional parameter"
.LC42:
	.string	"46h"
.LC43:
	.string	"not enough parameters"
.LC44:
	.string	"tcp"
.LC45:
	.string	"udp"
.LC46:
	.string	"incorrect protocol"
.LC47:
	.string	"[*] Parsing rule %s...\n"
.LC48:
	.string	"missing first '/' in rule"
.LC49:
	.string	"missing second '/' in rule"
.LC50:
	.string	"iIoO"
.LC51:
	.string	"All dir: %d\n"
.LC52:
	.string	"s"
.LC53:
	.string	""
.LC54:
	.string	"[+] Loaded %d rule%s...\n"
	.text
	.globl	parse_params
	.type	parse_params, @function
parse_params:
.LFB45:
	.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, 56
	.cfi_offset 3, -24
	mov	DWORD PTR -52[rbp], edi
	mov	QWORD PTR -64[rbp], rsi
	jmp	.L52
.L58:
	cmp	DWORD PTR -44[rbp], 104
	je	.L53
	cmp	DWORD PTR -44[rbp], 104
	jg	.L54
	cmp	DWORD PTR -44[rbp], 54
	je	.L55
	cmp	DWORD PTR -44[rbp], 54
	jg	.L54
	cmp	DWORD PTR -44[rbp], 0
	je	.L52
	cmp	DWORD PTR -44[rbp], 52
	je	.L57
	jmp	.L54
.L57:
	mov	DWORD PTR family[rip], 2
	jmp	.L52
.L55:
	mov	DWORD PTR family[rip], 10
	jmp	.L52
.L53:
	mov	edi, 0
	call	usage_hints
.L54:
	lea	rdi, .LC41[rip]
	call	usage_hints
.L52:
	mov	rsi, QWORD PTR -64[rbp]
	mov	eax, DWORD PTR -52[rbp]
	mov	r8d, 0
	lea	rcx, long_options.0[rip]
	lea	rdx, .LC42[rip]
	mov	edi, eax
	call	getopt_long@PLT
	mov	DWORD PTR -44[rbp], eax
	cmp	DWORD PTR -44[rbp], -1
	jne	.L58
	mov	eax, DWORD PTR optind[rip]
	add	eax, 4
	cmp	DWORD PTR -52[rbp], eax
	jg	.L59
	lea	rdi, .LC43[rip]
	call	short_usage_hints
.L59:
	mov	eax, DWORD PTR optind[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC44[rip]
	mov	rdi, rax
	call	strcasecmp@PLT
	mov	ebx, eax
	mov	eax, DWORD PTR optind[rip]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	lea	rsi, .LC45[rip]
	mov	rdi, rax
	call	strcasecmp@PLT
	imul	eax, ebx
	test	eax, eax
	je	.L60
	lea	rdi, .LC46[rip]
	call	short_usage_hints
.L60:
	mov	eax, DWORD PTR optind[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR optind[rip], edx
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	edx, 3
	lea	rsi, .LC45[rip]
	mov	rdi, rax
	call	strncasecmp@PLT
	mov	DWORD PTR tcp[rip], eax
	mov	eax, DWORD PTR optind[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR optind[rip], edx
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR lport[rip], rax
	mov	eax, DWORD PTR optind[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR optind[rip], edx
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR rhost[rip], rax
	mov	eax, DWORD PTR optind[rip]
	lea	edx, 1[rax]
	mov	DWORD PTR optind[rip], edx
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR rport[rip], rax
	mov	edx, DWORD PTR optind[rip]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, edx
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR rule[rip], rax
	mov	edx, DWORD PTR optind[rip]
	mov	eax, DWORD PTR -52[rbp]
	sub	eax, edx
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	QWORD PTR rule_live[rip], rax
	mov	eax, DWORD PTR optind[rip]
	mov	DWORD PTR -44[rbp], eax
	jmp	.L61
.L71:
	mov	QWORD PTR -32[rbp], 0
	mov	QWORD PTR -24[rbp], 0
	mov	QWORD PTR -40[rbp], 0
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rcx+rax]
	mov	DWORD PTR 36[rdx], 0
	mov	rsi, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	lea	rcx, [rsi+rax]
	mov	eax, DWORD PTR 36[rdx]
	mov	DWORD PTR 32[rcx], eax
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	rsi, rax
	lea	rdi, .LC47[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -44[rbp]
	cdqe
	lea	rdx, 0[0+rax*8]
	mov	rax, QWORD PTR -64[rbp]
	add	rax, rdx
	mov	rax, QWORD PTR [rax]
	mov	esi, 47
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -32[rbp], rax
	cmp	QWORD PTR -32[rbp], 0
	jne	.L62
	lea	rdi, .LC48[rip]
	call	error
.L62:
	add	QWORD PTR -32[rbp], 1
	mov	rax, QWORD PTR -32[rbp]
	mov	esi, 47
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -24[rbp], rax
	cmp	QWORD PTR -24[rbp], 0
	jne	.L63
	lea	rdi, .LC49[rip]
	call	error
.L63:
	mov	rax, QWORD PTR -24[rbp]
	mov	BYTE PTR [rax], 0
	add	QWORD PTR -24[rbp], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	esi, 47
	mov	rdi, rax
	call	strchr@PLT
	mov	QWORD PTR -40[rbp], rax
	cmp	QWORD PTR -40[rbp], 0
	je	.L64
	mov	rax, QWORD PTR -40[rbp]
	mov	BYTE PTR [rax], 0
	add	QWORD PTR -40[rbp], 1
.L64:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -32[rbp]
	mov	QWORD PTR 16[rdx], rax
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	lea	rdx, [rcx+rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rdx], rax
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	DWORD PTR 40[rax], 0
	cmp	QWORD PTR -40[rbp], 0
	je	.L65
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L65
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC50[rip]
	call	strchr@PLT
	test	rax, rax
	je	.L65
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 105
	je	.L66
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	cmp	al, 73
	jne	.L67
.L66:
	mov	ecx, 1
	jmp	.L68
.L67:
	mov	ecx, 2
.L68:
	mov	rsi, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rsi
	mov	DWORD PTR 40[rax], ecx
	add	QWORD PTR -40[rbp], 1
.L65:
	cmp	QWORD PTR -40[rbp], 0
	je	.L69
	mov	rax, QWORD PTR -40[rbp]
	movzx	eax, BYTE PTR [rax]
	test	al, al
	je	.L69
	mov	rdx, QWORD PTR rule_live[rip]
	mov	eax, DWORD PTR rules[rip]
	cdqe
	sal	rax, 2
	lea	rbx, [rdx+rax]
	mov	rax, QWORD PTR -40[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR [rbx], eax
	jmp	.L70
.L69:
	mov	rdx, QWORD PTR rule_live[rip]
	mov	eax, DWORD PTR rules[rip]
	cdqe
	sal	rax, 2
	add	rax, rdx
	mov	DWORD PTR [rax], -1
.L70:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR rules[rip]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdi, rax
	call	shrink_to_binary
	mov	eax, DWORD PTR rules[rip]
	add	eax, 1
	mov	DWORD PTR rules[rip], eax
	add	DWORD PTR -44[rbp], 1
.L61:
	mov	eax, DWORD PTR -44[rbp]
	cmp	eax, DWORD PTR -52[rbp]
	jl	.L71
	mov	eax, DWORD PTR rules[rip]
	test	eax, eax
	jle	.L72
	mov	rax, QWORD PTR rule[rip]
	mov	eax, DWORD PTR 40[rax]
	mov	DWORD PTR all_dir[rip], eax
	mov	DWORD PTR -44[rbp], 1
	jmp	.L73
.L75:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -44[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	edx, DWORD PTR 40[rax]
	mov	eax, DWORD PTR all_dir[rip]
	cmp	edx, eax
	je	.L74
	mov	DWORD PTR all_dir[rip], 0
.L74:
	add	DWORD PTR -44[rbp], 1
.L73:
	mov	eax, DWORD PTR rules[rip]
	cmp	DWORD PTR -44[rbp], eax
	jl	.L75
.L72:
	mov	eax, DWORD PTR all_dir[rip]
	mov	esi, eax
	lea	rdi, .LC51[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR rules[rip]
	cmp	eax, 1
	jle	.L76
	lea	rax, .LC52[rip]
	jmp	.L77
.L76:
	lea	rax, .LC53[rip]
.L77:
	mov	ecx, DWORD PTR rules[rip]
	mov	rdx, rax
	mov	esi, ecx
	lea	rdi, .LC54[rip]
	mov	eax, 0
	call	printf@PLT
	nop
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE45:
	.size	parse_params, .-parse_params
	.section	.rodata
.LC55:
	.string	"getaddrinfo(): %s\n"
	.align 8
.LC56:
	.string	"Impossible to resolve listening port."
	.align 8
.LC57:
	.string	"    Failed to unset IPV6_V6ONLY: %s.\n"
.LC58:
	.string	"bind(): %s"
.LC59:
	.string	"Listening socket failed."
	.text
	.globl	bind_and_listen
	.type	bind_and_listen, @function
bind_and_listen:
.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, 112
	mov	DWORD PTR -100[rbp], edi
	mov	DWORD PTR -104[rbp], esi
	mov	QWORD PTR -112[rbp], rdx
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	lea	rax, -64[rbp]
	mov	edx, 48
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	eax, DWORD PTR -100[rbp]
	mov	DWORD PTR -60[rbp], eax
	mov	DWORD PTR -64[rbp], 1
	cmp	DWORD PTR -104[rbp], 0
	je	.L79
	mov	eax, 1
	jmp	.L80
.L79:
	mov	eax, 2
.L80:
	mov	DWORD PTR -56[rbp], eax
	lea	rcx, -80[rbp]
	lea	rdx, -64[rbp]
	mov	rax, QWORD PTR -112[rbp]
	mov	rsi, rax
	mov	edi, 0
	call	getaddrinfo@PLT
	mov	DWORD PTR -84[rbp], eax
	cmp	DWORD PTR -84[rbp], 0
	je	.L81
	mov	eax, DWORD PTR -84[rbp]
	mov	edi, eax
	call	gai_strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	lea	rdi, .LC56[rip]
	call	error
.L81:
	mov	rax, QWORD PTR -80[rbp]
	mov	QWORD PTR -72[rbp], rax
	jmp	.L82
.L90:
	mov	DWORD PTR -92[rbp], 1
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	ecx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	esi, ecx
	mov	edi, eax
	call	socket@PLT
	mov	DWORD PTR lsock[rip], eax
	mov	eax, DWORD PTR lsock[rip]
	test	eax, eax
	js	.L93
	mov	eax, DWORD PTR lsock[rip]
	lea	rdx, -92[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 2
	mov	esi, 1
	mov	edi, eax
	call	setsockopt@PLT
	mov	eax, DWORD PTR family[rip]
	test	eax, eax
	setne	al
	movzx	eax, al
	mov	DWORD PTR -92[rbp], eax
	mov	rax, QWORD PTR -72[rbp]
	mov	eax, DWORD PTR 4[rax]
	cmp	eax, 10
	jne	.L85
	mov	eax, DWORD PTR lsock[rip]
	lea	rdx, -92[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 26
	mov	esi, 41
	mov	edi, eax
	call	setsockopt@PLT
	test	eax, eax
	je	.L85
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rsi, rax
	lea	rdi, .LC57[rip]
	mov	eax, 0
	call	printf@PLT
.L85:
	mov	rax, QWORD PTR -72[rbp]
	mov	edx, DWORD PTR 16[rax]
	mov	rax, QWORD PTR -72[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	eax, DWORD PTR lsock[rip]
	mov	rsi, rcx
	mov	edi, eax
	call	bind@PLT
	test	eax, eax
	jns	.L86
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC58[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	eax, DWORD PTR lsock[rip]
	mov	edi, eax
	call	close@PLT
	jmp	.L84
.L86:
	cmp	DWORD PTR -104[rbp], 0
	je	.L87
	mov	eax, DWORD PTR lsock[rip]
	mov	esi, 16
	mov	edi, eax
	call	listen@PLT
	test	eax, eax
	jns	.L94
	mov	eax, DWORD PTR lsock[rip]
	mov	edi, eax
	call	close@PLT
	jmp	.L84
.L87:
	mov	DWORD PTR -88[rbp], 1
	mov	eax, DWORD PTR lsock[rip]
	lea	rdx, -88[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 10
	mov	esi, 1
	mov	edi, eax
	call	setsockopt@PLT
	jmp	.L89
.L93:
	nop
.L84:
	mov	rax, QWORD PTR -72[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -72[rbp], rax
.L82:
	cmp	QWORD PTR -72[rbp], 0
	jne	.L90
	jmp	.L89
.L94:
	nop
.L89:
	mov	rax, QWORD PTR -80[rbp]
	mov	rdi, rax
	call	freeaddrinfo@PLT
	cmp	QWORD PTR -72[rbp], 0
	jne	.L95
	lea	rdi, .LC59[rip]
	call	error
.L95:
	nop
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L92
	call	__stack_chk_fail@PLT
.L92:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE46:
	.size	bind_and_listen, .-bind_and_listen
	.globl	buf
	.bss
	.align 32
	.type	buf, @object
	.size	buf, 100000
buf:
	.zero	100000
	.globl	b2
	.align 32
	.type	b2, @object
	.size	b2, 100000
b2:
	.zero	100000
	.section	.rodata
	.align 8
.LC60:
	.string	"[*] Forwarding untouched packet of size %d.\n"
.LC61:
	.string	"    Applying rule s/%s/%s...\n"
.LC62:
	.string	"    (rule just expired)"
	.align 8
.LC63:
	.string	"[*] Done %d replacements, forwarding packet of size %d (orig %d).\n"
	.text
	.globl	sed_the_buffer
	.type	sed_the_buffer, @function
sed_the_buffer:
.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
	mov	DWORD PTR -16[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	mov	DWORD PTR -8[rbp], 0
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR changes[rip], 0
	mov	eax, DWORD PTR all_dir[rip]
	cmp	DWORD PTR -24[rbp], eax
	je	.L97
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC60[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -20[rbp]
	jmp	.L98
.L97:
	mov	DWORD PTR -16[rbp], 0
	jmp	.L99
.L106:
	mov	DWORD PTR -4[rbp], 0
	mov	DWORD PTR -12[rbp], 0
	jmp	.L100
.L105:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 40[rax]
	test	eax, eax
	je	.L101
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 40[rax]
	cmp	DWORD PTR -24[rbp], eax
	jne	.L109
.L101:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 32[rax]
	movsx	rdx, eax
	mov	rsi, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	add	rax, rsi
	mov	rax, QWORD PTR [rax]
	mov	ecx, DWORD PTR -16[rbp]
	movsx	rcx, ecx
	lea	rsi, buf[rip]
	add	rcx, rsi
	mov	rsi, rax
	mov	rdi, rcx
	call	memcmp@PLT
	test	eax, eax
	jne	.L102
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	je	.L102
	mov	eax, DWORD PTR changes[rip]
	add	eax, 1
	mov	DWORD PTR changes[rip], eax
	mov	DWORD PTR -4[rbp], 1
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	rdx, QWORD PTR 24[rax]
	mov	rsi, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	add	rax, rsi
	mov	rax, QWORD PTR 16[rax]
	mov	rsi, rax
	lea	rdi, .LC61[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	edx, DWORD PTR [rax]
	sub	edx, 1
	mov	DWORD PTR [rax], edx
	mov	eax, DWORD PTR -12[rbp]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rax, QWORD PTR -32[rbp]
	add	rax, rdx
	mov	eax, DWORD PTR [rax]
	test	eax, eax
	jne	.L103
	lea	rdi, .LC62[rip]
	call	puts@PLT
.L103:
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 36[rax]
	movsx	rdx, eax
	mov	rsi, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rcx, eax
	mov	rax, rcx
	add	rax, rax
	add	rax, rcx
	sal	rax, 4
	add	rax, rsi
	mov	rax, QWORD PTR 8[rax]
	mov	ecx, DWORD PTR -8[rbp]
	movsx	rcx, ecx
	lea	rsi, b2[rip]
	add	rcx, rsi
	mov	rsi, rax
	mov	rdi, rcx
	call	memcpy@PLT
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 36[rax]
	add	DWORD PTR -8[rbp], eax
	mov	rcx, QWORD PTR rule[rip]
	mov	eax, DWORD PTR -12[rbp]
	movsx	rdx, eax
	mov	rax, rdx
	add	rax, rax
	add	rax, rdx
	sal	rax, 4
	add	rax, rcx
	mov	eax, DWORD PTR 32[rax]
	add	DWORD PTR -16[rbp], eax
	jmp	.L104
.L109:
	nop
.L102:
	add	DWORD PTR -12[rbp], 1
.L100:
	mov	eax, DWORD PTR rules[rip]
	cmp	DWORD PTR -12[rbp], eax
	jl	.L105
.L104:
	cmp	DWORD PTR -4[rbp], 0
	jne	.L99
	mov	eax, DWORD PTR -16[rbp]
	cdqe
	lea	rdx, buf[rip]
	movzx	edx, BYTE PTR [rax+rdx]
	mov	eax, DWORD PTR -8[rbp]
	cdqe
	lea	rcx, b2[rip]
	mov	BYTE PTR [rax+rcx], dl
	add	DWORD PTR -8[rbp], 1
	add	DWORD PTR -16[rbp], 1
.L99:
	mov	eax, DWORD PTR -16[rbp]
	cmp	eax, DWORD PTR -20[rbp]
	jl	.L106
	mov	eax, DWORD PTR changes[rip]
	test	eax, eax
	jne	.L107
	mov	eax, DWORD PTR -20[rbp]
	mov	esi, eax
	lea	rdi, .LC60[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L108
.L107:
	mov	eax, DWORD PTR changes[rip]
	mov	ecx, DWORD PTR -20[rbp]
	mov	edx, DWORD PTR -8[rbp]
	mov	esi, eax
	lea	rdi, .LC63[rip]
	mov	eax, 0
	call	printf@PLT
.L108:
	mov	eax, DWORD PTR -8[rbp]
.L98:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE47:
	.size	sed_the_buffer, .-sed_the_buffer
	.section	.rodata
	.align 8
.LC64:
	.string	"[+] Caught server -> client packet."
	.text
	.globl	server2client_sed
	.type	server2client_sed, @function
server2client_sed:
.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	QWORD PTR -24[rbp], rdi
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	edx, 100000
	lea	rsi, buf[rip]
	mov	edi, eax
	call	read@PLT
	mov	QWORD PTR -16[rbp], rax
	cmp	QWORD PTR -16[rbp], 0
	jns	.L111
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	cmp	eax, 11
	je	.L111
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L111:
	cmp	QWORD PTR -16[rbp], 0
	jne	.L112
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L112:
	cmp	QWORD PTR -16[rbp], 0
	jle	.L116
	lea	rdi, .LC64[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	ecx, edx
	mov	edx, 1
	mov	rsi, rax
	mov	edi, ecx
	call	sed_the_buffer
	cdqe
	mov	QWORD PTR -16[rbp], rax
	mov	eax, DWORD PTR changes[rip]
	test	eax, eax
	jne	.L114
	lea	rax, buf[rip]
	jmp	.L115
.L114:
	lea	rax, b2[rip]
.L115:
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR now[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 1
	mov	rax, QWORD PTR -24[rbp]
	mov	edi, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -24[rbp]
	mov	rcx, QWORD PTR [rax]
	mov	rdx, QWORD PTR -16[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 12[rax]
	mov	rsi, QWORD PTR -8[rbp]
	mov	r9d, edi
	mov	r8, rcx
	mov	ecx, 0
	mov	edi, eax
	call	sendto@PLT
	test	rax, rax
	jg	.L116
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L116:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE48:
	.size	server2client_sed, .-server2client_sed
	.globl	client2server_sed
	.type	client2server_sed, @function
client2server_sed:
.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	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 12[rax]
	mov	edx, 100000
	lea	rsi, buf[rip]
	mov	edi, eax
	call	read@PLT
	mov	QWORD PTR -8[rbp], rax
	cmp	QWORD PTR -8[rbp], 0
	jns	.L118
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	cmp	eax, 11
	je	.L118
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L118:
	cmp	QWORD PTR -8[rbp], 0
	jne	.L119
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L119:
	mov	rdx, QWORD PTR -8[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	b2server_sed
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE49:
	.size	client2server_sed, .-client2server_sed
	.section	.rodata
	.align 8
.LC65:
	.string	"[+] Caught client -> server packet."
	.text
	.globl	b2server_sed
	.type	b2server_sed, @function
b2server_sed:
.LFB50:
	.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
	cmp	QWORD PTR -32[rbp], 0
	jle	.L124
	lea	rdi, .LC65[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -24[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rdx, QWORD PTR -32[rbp]
	mov	ecx, edx
	mov	edx, 2
	mov	rsi, rax
	mov	edi, ecx
	call	sed_the_buffer
	cdqe
	mov	QWORD PTR -32[rbp], rax
	mov	eax, DWORD PTR changes[rip]
	test	eax, eax
	jne	.L122
	lea	rax, buf[rip]
	jmp	.L123
.L122:
	lea	rax, b2[rip]
.L123:
	mov	QWORD PTR -8[rbp], rax
	mov	rdx, QWORD PTR now[rip]
	mov	rax, QWORD PTR -24[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	rdx, QWORD PTR -32[rbp]
	mov	rax, QWORD PTR -24[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	rcx, QWORD PTR -8[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	write@PLT
	test	rax, rax
	jg	.L124
	mov	rax, QWORD PTR -24[rbp]
	mov	DWORD PTR 32[rax], 2
.L124:
	nop
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE50:
	.size	b2server_sed, .-b2server_sed
	.globl	sig_int
	.type	sig_int, @function
sig_int:
.LFB51:
	.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 stop[rip], 1
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE51:
	.size	sig_int, .-sig_int
	.section	.rodata
	.align 8
.LC66:
	.string	"netsed 1.2 by Julien VdG <julien@silicone.homelinux.org>\n      based on 0.01c from Michal Zalewski <lcamtuf@ids.pl>"
	.align 8
.LC67:
	.string	"Impossible to resolve remote address or port."
	.align 8
.LC68:
	.string	"Failed in resolving remote host."
	.align 8
.LC69:
	.string	"[+] Using fixed forwarding to %s,%s.\n"
	.align 8
.LC70:
	.string	"[+] Using dynamic (transparent proxy) forwarding with fixed port %s.\n"
	.align 8
.LC71:
	.string	"[+] Using dynamic (transparent proxy) forwarding with fixed addr %s.\n"
	.align 8
.LC72:
	.string	"[+] Using dynamic (transparent proxy) forwarding."
.LC73:
	.string	"[+] Listening on port %s/%s.\n"
.LC74:
	.string	"netsed: sigaction() failed"
.LC75:
	.string	"recvfrom(): %s"
	.align 8
.LC76:
	.string	"[+] Got incoming connection from %s,%s"
	.align 8
.LC77:
	.string	"netsed: unable to malloc() connection tracker struct"
	.align 8
.LC78:
	.string	"netsed: unable to malloc() connection tracker sockaddr struct"
.LC79:
	.string	" to %s,%s\n"
	.align 8
.LC80:
	.string	"[*] Forwarding connection to %s,%s\n"
	.align 8
.LC81:
	.string	"[!] Cannot connect to remote server, dropping connection."
	.text
	.globl	main
	.type	main, @function
main:
.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, 928
	mov	DWORD PTR -916[rbp], edi
	mov	QWORD PTR -928[rbp], rsi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	mov	WORD PTR -908[rbp], 0
	lea	rax, -752[rbp]
	mov	edx, 128
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	lea	rdi, .LC66[rip]
	call	puts@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	edx, 0
	mov	esi, 0
	mov	rdi, rax
	call	setbuffer@PLT
	mov	rdx, QWORD PTR -928[rbp]
	mov	eax, DWORD PTR -916[rbp]
	mov	rsi, rdx
	mov	edi, eax
	call	parse_params
	lea	rax, -800[rbp]
	mov	edx, 48
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	eax, DWORD PTR family[rip]
	mov	DWORD PTR -796[rbp], eax
	mov	DWORD PTR -800[rbp], 2
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L127
	mov	eax, 1
	jmp	.L128
.L127:
	mov	eax, 2
.L128:
	mov	DWORD PTR -792[rbp], eax
	mov	rsi, QWORD PTR rport[rip]
	mov	rax, QWORD PTR rhost[rip]
	lea	rcx, -864[rbp]
	lea	rdx, -800[rbp]
	mov	rdi, rax
	call	getaddrinfo@PLT
	mov	DWORD PTR -884[rbp], eax
	cmp	DWORD PTR -884[rbp], 0
	je	.L129
	mov	eax, DWORD PTR -884[rbp]
	mov	edi, eax
	call	gai_strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC55[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	lea	rdi, .LC67[rip]
	call	error
.L129:
	mov	rax, QWORD PTR -864[rbp]
	mov	QWORD PTR -856[rbp], rax
	jmp	.L130
.L134:
	mov	DWORD PTR -880[rbp], -1
	mov	rax, QWORD PTR -856[rbp]
	mov	edx, DWORD PTR 12[rax]
	mov	rax, QWORD PTR -856[rbp]
	mov	ecx, DWORD PTR 8[rax]
	mov	rax, QWORD PTR -856[rbp]
	mov	eax, DWORD PTR 4[rax]
	mov	esi, ecx
	mov	edi, eax
	call	socket@PLT
	mov	DWORD PTR -880[rbp], eax
	cmp	DWORD PTR -880[rbp], 0
	jns	.L131
	mov	rax, QWORD PTR -856[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	QWORD PTR -856[rbp], rax
	jmp	.L130
.L131:
	mov	rax, QWORD PTR -856[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	get_port
	mov	WORD PTR -908[rbp], ax
	mov	rax, QWORD PTR -856[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	rdi, rax
	call	is_addr_any
	test	eax, eax
	jne	.L132
	mov	rax, QWORD PTR -856[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	edx, eax
	mov	rax, QWORD PTR -856[rbp]
	mov	rcx, QWORD PTR 24[rax]
	lea	rax, -752[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
.L132:
	mov	eax, DWORD PTR -880[rbp]
	mov	edi, eax
	call	close@PLT
	jmp	.L133
.L130:
	cmp	QWORD PTR -856[rbp], 0
	jne	.L134
.L133:
	mov	rax, QWORD PTR -864[rbp]
	mov	rdi, rax
	call	freeaddrinfo@PLT
	cmp	QWORD PTR -856[rbp], 0
	jne	.L135
	lea	rdi, .LC68[rip]
	call	error
.L135:
	movzx	eax, WORD PTR -752[rbp]
	test	ax, ax
	je	.L136
	cmp	WORD PTR -908[rbp], 0
	je	.L136
	mov	rdx, QWORD PTR rport[rip]
	mov	rax, QWORD PTR rhost[rip]
	mov	rsi, rax
	lea	rdi, .LC69[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L137
.L136:
	cmp	WORD PTR -908[rbp], 0
	je	.L138
	mov	rax, QWORD PTR rport[rip]
	mov	rsi, rax
	lea	rdi, .LC70[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L137
.L138:
	movzx	eax, WORD PTR -752[rbp]
	test	ax, ax
	je	.L139
	mov	rax, QWORD PTR rhost[rip]
	mov	rsi, rax
	lea	rdi, .LC71[rip]
	mov	eax, 0
	call	printf@PLT
	jmp	.L137
.L139:
	lea	rdi, .LC72[rip]
	call	puts@PLT
.L137:
	mov	rdx, QWORD PTR lport[rip]
	mov	ecx, DWORD PTR tcp[rip]
	movzx	eax, WORD PTR -752[rbp]
	movzx	eax, ax
	mov	esi, ecx
	mov	edi, eax
	call	bind_and_listen
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L140
	lea	rax, .LC44[rip]
	jmp	.L141
.L140:
	lea	rax, .LC45[rip]
.L141:
	mov	rcx, QWORD PTR lport[rip]
	mov	rdx, rax
	mov	rsi, rcx
	lea	rdi, .LC73[rip]
	mov	eax, 0
	call	printf@PLT
	mov	esi, 1
	mov	edi, 13
	call	signal@PLT
	mov	DWORD PTR -104[rbp], 0
	lea	rax, -240[rbp]
	add	rax, 8
	mov	rdi, rax
	call	sigemptyset@PLT
	lea	rax, sig_int[rip]
	mov	QWORD PTR -240[rbp], rax
	lea	rax, -240[rbp]
	mov	edx, 0
	mov	rsi, rax
	mov	edi, 2
	call	sigaction@PLT
	cmp	eax, -1
	jne	.L143
	lea	rdi, .LC74[rip]
	call	error
	jmp	.L143
.L180:
	mov	DWORD PTR -904[rbp], 128
	mov	eax, DWORD PTR lsock[rip]
	mov	DWORD PTR -896[rbp], eax
	mov	eax, 0
	mov	ecx, 16
	lea	rdx, -368[rbp]
	mov	rdi, rdx
#APP
# 808 "the_stack_data/989491.c" 1
	cld; rep; stosq
# 0 "" 2
#NO_APP
	mov	eax, edi
	mov	edx, ecx
	mov	DWORD PTR -876[rbp], edx
	mov	DWORD PTR -872[rbp], eax
	mov	eax, DWORD PTR lsock[rip]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -368[rbp+rax*8]
	mov	eax, DWORD PTR lsock[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 -368[rbp+rax*8], rdx
	mov	QWORD PTR -816[rbp], 31
	mov	QWORD PTR -808[rbp], 0
	mov	QWORD PTR -840[rbp], 0
	mov	rax, QWORD PTR connections[rip]
	mov	QWORD PTR -848[rbp], rax
	jmp	.L144
.L149:
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L145
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -368[rbp+rax*8]
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	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 -368[rbp+rax*8], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	cmp	DWORD PTR -896[rbp], eax
	jge	.L146
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	mov	DWORD PTR -896[rbp], eax
	jmp	.L146
.L145:
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 24[rax]
	mov	edx, eax
	mov	rax, QWORD PTR now[rip]
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	add	eax, 30
	mov	DWORD PTR -892[rbp], eax
	cmp	DWORD PTR -892[rbp], 0
	jns	.L147
	mov	DWORD PTR -892[rbp], 0
.L147:
	mov	rdx, QWORD PTR -816[rbp]
	mov	eax, DWORD PTR -892[rbp]
	cdqe
	cmp	rdx, rax
	jle	.L146
	mov	eax, DWORD PTR -892[rbp]
	cdqe
	mov	QWORD PTR -816[rbp], rax
	lea	rax, -816[rbp]
	mov	QWORD PTR -840[rbp], rax
.L146:
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	mov	esi, eax
	movsx	rax, esi
	mov	rdi, QWORD PTR -368[rbp+rax*8]
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	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 -368[rbp+rax*8], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	cmp	DWORD PTR -896[rbp], eax
	jge	.L148
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	mov	DWORD PTR -896[rbp], eax
.L148:
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -848[rbp], rax
.L144:
	cmp	QWORD PTR -848[rbp], 0
	jne	.L149
	mov	eax, DWORD PTR -896[rbp]
	lea	edi, 1[rax]
	mov	rdx, QWORD PTR -840[rbp]
	lea	rax, -368[rbp]
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 0
	mov	rsi, rax
	call	select@PLT
	mov	DWORD PTR -868[rbp], eax
	lea	rdi, now[rip]
	call	time@PLT
	mov	eax, DWORD PTR stop[rip]
	test	eax, eax
	jne	.L182
	cmp	DWORD PTR -868[rbp], 0
	js	.L183
	mov	eax, DWORD PTR lsock[rip]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -368[rbp+rax*8]
	mov	eax, DWORD PTR lsock[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
	je	.L153
	mov	DWORD PTR -888[rbp], -1
	mov	QWORD PTR -832[rbp], -1
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L154
	mov	eax, DWORD PTR lsock[rip]
	lea	rdx, -904[rbp]
	lea	rcx, -624[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	accept@PLT
	mov	DWORD PTR -888[rbp], eax
	jmp	.L155
.L154:
	mov	eax, DWORD PTR lsock[rip]
	lea	rcx, -904[rbp]
	lea	rdx, -624[rbp]
	mov	r9, rcx
	mov	r8, rdx
	mov	ecx, 0
	mov	edx, 100000
	lea	rsi, buf[rip]
	mov	edi, eax
	call	recvfrom@PLT
	mov	QWORD PTR -832[rbp], rax
	cmp	QWORD PTR -832[rbp], 0
	js	.L156
	mov	rax, QWORD PTR connections[rip]
	mov	QWORD PTR -848[rbp], rax
	jmp	.L157
.L160:
	mov	rax, QWORD PTR -848[rbp]
	mov	edx, DWORD PTR 8[rax]
	mov	eax, DWORD PTR -904[rbp]
	cmp	edx, eax
	jne	.L158
	mov	eax, DWORD PTR -904[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -848[rbp]
	mov	rcx, QWORD PTR [rax]
	lea	rax, -624[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcmp@PLT
	test	eax, eax
	je	.L184
.L158:
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -848[rbp], rax
.L157:
	cmp	QWORD PTR -848[rbp], 0
	jne	.L160
	jmp	.L159
.L184:
	nop
.L159:
	cmp	QWORD PTR -848[rbp], 0
	jne	.L155
	mov	eax, DWORD PTR lsock[rip]
	mov	DWORD PTR -888[rbp], eax
	jmp	.L155
.L156:
	call	__errno_location@PLT
	mov	eax, DWORD PTR [rax]
	mov	edi, eax
	call	strerror@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR stderr[rip]
	lea	rsi, .LC75[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
.L155:
	cmp	DWORD PTR -888[rbp], 0
	js	.L161
	mov	DWORD PTR -900[rbp], 1
	mov	esi, DWORD PTR -904[rbp]
	lea	rcx, -76[rbp]
	lea	rdx, -64[rbp]
	lea	rax, -624[rbp]
	sub	rsp, 8
	push	3
	mov	r9d, 12
	mov	r8, rcx
	mov	ecx, 46
	mov	rdi, rax
	call	getnameinfo@PLT
	add	rsp, 16
	lea	rdx, -76[rbp]
	lea	rax, -64[rbp]
	mov	rsi, rax
	lea	rdi, .LC76[rip]
	mov	eax, 0
	call	printf@PLT
	mov	edi, 56
	call	malloc@PLT
	mov	QWORD PTR -848[rbp], rax
	cmp	QWORD PTR -848[rbp], 0
	jne	.L162
	lea	rdi, .LC77[rip]
	call	error
.L162:
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L163
	lea	rdx, -900[rbp]
	mov	eax, DWORD PTR -888[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 10
	mov	esi, 1
	mov	edi, eax
	call	setsockopt@PLT
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR [rax], 0
	mov	rax, QWORD PTR -848[rbp]
	mov	DWORD PTR 8[rax], 0
	mov	rax, QWORD PTR -848[rbp]
	mov	DWORD PTR 32[rax], 1
	jmp	.L164
.L163:
	mov	eax, DWORD PTR -904[rbp]
	mov	eax, eax
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR [rax]
	test	rax, rax
	jne	.L165
	lea	rdi, .LC78[rip]
	call	error
.L165:
	mov	eax, DWORD PTR -904[rbp]
	mov	edx, eax
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR [rax]
	lea	rcx, -624[rbp]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	edx, DWORD PTR -904[rbp]
	mov	rax, QWORD PTR -848[rbp]
	mov	DWORD PTR 8[rax], edx
	mov	rax, QWORD PTR -848[rbp]
	mov	DWORD PTR 32[rax], 0
.L164:
	mov	rax, QWORD PTR -848[rbp]
	mov	edx, DWORD PTR -888[rbp]
	mov	DWORD PTR 12[rax], edx
	mov	rdx, QWORD PTR now[rip]
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR 24[rax], rdx
	mov	eax, DWORD PTR rules[rip]
	cdqe
	sal	rax, 2
	mov	rdi, rax
	call	malloc@PLT
	mov	rdx, rax
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR 40[rax], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 40[rax]
	test	rax, rax
	jne	.L166
	lea	rdi, .LC78[rip]
	call	error
.L166:
	mov	eax, DWORD PTR rules[rip]
	cdqe
	lea	rdx, 0[0+rax*4]
	mov	rcx, QWORD PTR rule_live[rip]
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 40[rax]
	mov	rsi, rcx
	mov	rdi, rax
	call	memcpy@PLT
	mov	DWORD PTR -904[rbp], 128
	lea	rcx, -904[rbp]
	lea	rdx, -624[rbp]
	mov	eax, DWORD PTR -888[rbp]
	mov	r8, rcx
	mov	rcx, rdx
	mov	edx, 80
	mov	esi, 0
	mov	edi, eax
	call	getsockopt@PLT
	mov	esi, DWORD PTR -904[rbp]
	lea	rcx, -76[rbp]
	lea	rdx, -64[rbp]
	lea	rax, -624[rbp]
	sub	rsp, 8
	push	3
	mov	r9d, 12
	mov	r8, rcx
	mov	ecx, 46
	mov	rdi, rax
	call	getnameinfo@PLT
	add	rsp, 16
	lea	rdx, -76[rbp]
	lea	rax, -64[rbp]
	mov	rsi, rax
	lea	rdi, .LC79[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rax, -624[rbp]
	mov	rdi, rax
	call	get_port
	mov	WORD PTR -906[rbp], ax
	mov	rax, QWORD PTR -624[rbp]
	mov	rdx, QWORD PTR -616[rbp]
	mov	QWORD PTR -496[rbp], rax
	mov	QWORD PTR -488[rbp], rdx
	mov	rax, QWORD PTR -608[rbp]
	mov	rdx, QWORD PTR -600[rbp]
	mov	QWORD PTR -480[rbp], rax
	mov	QWORD PTR -472[rbp], rdx
	mov	rax, QWORD PTR -592[rbp]
	mov	rdx, QWORD PTR -584[rbp]
	mov	QWORD PTR -464[rbp], rax
	mov	QWORD PTR -456[rbp], rdx
	mov	rax, QWORD PTR -576[rbp]
	mov	rdx, QWORD PTR -568[rbp]
	mov	QWORD PTR -448[rbp], rax
	mov	QWORD PTR -440[rbp], rdx
	mov	rax, QWORD PTR -560[rbp]
	mov	rdx, QWORD PTR -552[rbp]
	mov	QWORD PTR -432[rbp], rax
	mov	QWORD PTR -424[rbp], rdx
	mov	rax, QWORD PTR -544[rbp]
	mov	rdx, QWORD PTR -536[rbp]
	mov	QWORD PTR -416[rbp], rax
	mov	QWORD PTR -408[rbp], rdx
	mov	rax, QWORD PTR -528[rbp]
	mov	rdx, QWORD PTR -520[rbp]
	mov	QWORD PTR -400[rbp], rax
	mov	QWORD PTR -392[rbp], rdx
	mov	rax, QWORD PTR -512[rbp]
	mov	rdx, QWORD PTR -504[rbp]
	mov	QWORD PTR -384[rbp], rax
	mov	QWORD PTR -376[rbp], rdx
	cmp	WORD PTR -908[rbp], 0
	je	.L167
	movzx	eax, WORD PTR -908[rbp]
	mov	WORD PTR -906[rbp], ax
.L167:
	movzx	eax, WORD PTR -752[rbp]
	test	ax, ax
	je	.L168
	mov	rax, QWORD PTR -752[rbp]
	mov	rdx, QWORD PTR -744[rbp]
	mov	QWORD PTR -496[rbp], rax
	mov	QWORD PTR -488[rbp], rdx
	mov	rax, QWORD PTR -736[rbp]
	mov	rdx, QWORD PTR -728[rbp]
	mov	QWORD PTR -480[rbp], rax
	mov	QWORD PTR -472[rbp], rdx
	mov	rax, QWORD PTR -720[rbp]
	mov	rdx, QWORD PTR -712[rbp]
	mov	QWORD PTR -464[rbp], rax
	mov	QWORD PTR -456[rbp], rdx
	mov	rax, QWORD PTR -704[rbp]
	mov	rdx, QWORD PTR -696[rbp]
	mov	QWORD PTR -448[rbp], rax
	mov	QWORD PTR -440[rbp], rdx
	mov	rax, QWORD PTR -688[rbp]
	mov	rdx, QWORD PTR -680[rbp]
	mov	QWORD PTR -432[rbp], rax
	mov	QWORD PTR -424[rbp], rdx
	mov	rax, QWORD PTR -672[rbp]
	mov	rdx, QWORD PTR -664[rbp]
	mov	QWORD PTR -416[rbp], rax
	mov	QWORD PTR -408[rbp], rdx
	mov	rax, QWORD PTR -656[rbp]
	mov	rdx, QWORD PTR -648[rbp]
	mov	QWORD PTR -400[rbp], rax
	mov	QWORD PTR -392[rbp], rdx
	mov	rax, QWORD PTR -640[rbp]
	mov	rdx, QWORD PTR -632[rbp]
	mov	QWORD PTR -384[rbp], rax
	mov	QWORD PTR -376[rbp], rdx
.L168:
	mov	rax, QWORD PTR -496[rbp]
	mov	rdx, QWORD PTR -488[rbp]
	mov	QWORD PTR -624[rbp], rax
	mov	QWORD PTR -616[rbp], rdx
	mov	rax, QWORD PTR -480[rbp]
	mov	rdx, QWORD PTR -472[rbp]
	mov	QWORD PTR -608[rbp], rax
	mov	QWORD PTR -600[rbp], rdx
	mov	rax, QWORD PTR -464[rbp]
	mov	rdx, QWORD PTR -456[rbp]
	mov	QWORD PTR -592[rbp], rax
	mov	QWORD PTR -584[rbp], rdx
	mov	rax, QWORD PTR -448[rbp]
	mov	rdx, QWORD PTR -440[rbp]
	mov	QWORD PTR -576[rbp], rax
	mov	QWORD PTR -568[rbp], rdx
	mov	rax, QWORD PTR -432[rbp]
	mov	rdx, QWORD PTR -424[rbp]
	mov	QWORD PTR -560[rbp], rax
	mov	QWORD PTR -552[rbp], rdx
	mov	rax, QWORD PTR -416[rbp]
	mov	rdx, QWORD PTR -408[rbp]
	mov	QWORD PTR -544[rbp], rax
	mov	QWORD PTR -536[rbp], rdx
	mov	rax, QWORD PTR -400[rbp]
	mov	rdx, QWORD PTR -392[rbp]
	mov	QWORD PTR -528[rbp], rax
	mov	QWORD PTR -520[rbp], rdx
	mov	rax, QWORD PTR -384[rbp]
	mov	rdx, QWORD PTR -376[rbp]
	mov	QWORD PTR -512[rbp], rax
	mov	QWORD PTR -504[rbp], rdx
	movzx	edx, WORD PTR -906[rbp]
	lea	rax, -624[rbp]
	mov	esi, edx
	mov	rdi, rax
	call	set_port
	mov	esi, DWORD PTR -904[rbp]
	lea	rcx, -76[rbp]
	lea	rdx, -64[rbp]
	lea	rax, -624[rbp]
	sub	rsp, 8
	push	3
	mov	r9d, 12
	mov	r8, rcx
	mov	ecx, 46
	mov	rdi, rax
	call	getnameinfo@PLT
	add	rsp, 16
	lea	rdx, -76[rbp]
	lea	rax, -64[rbp]
	mov	rsi, rax
	lea	rdi, .LC80[rip]
	mov	eax, 0
	call	printf@PLT
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L169
	mov	ecx, 1
	jmp	.L170
.L169:
	mov	ecx, 2
.L170:
	movzx	eax, WORD PTR -624[rbp]
	movzx	eax, ax
	mov	edx, 0
	mov	esi, ecx
	mov	edi, eax
	call	socket@PLT
	mov	rdx, QWORD PTR -848[rbp]
	mov	DWORD PTR 16[rdx], eax
	mov	edx, DWORD PTR -904[rbp]
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	rcx, -624[rbp]
	mov	rsi, rcx
	mov	edi, eax
	call	connect@PLT
	test	eax, eax
	je	.L171
	lea	rdi, .LC81[rip]
	call	puts@PLT
	mov	rax, QWORD PTR -848[rbp]
	mov	rdi, rax
	call	freetracker
	mov	QWORD PTR -848[rbp], 0
	jmp	.L161
.L171:
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	rdx, -900[rbp]
	mov	r8d, 4
	mov	rcx, rdx
	mov	edx, 10
	mov	esi, 1
	mov	edi, eax
	call	setsockopt@PLT
	mov	rdx, QWORD PTR connections[rip]
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR 48[rax], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	QWORD PTR connections[rip], rax
.L161:
	cmp	QWORD PTR -832[rbp], 0
	js	.L153
	cmp	QWORD PTR -848[rbp], 0
	je	.L153
	mov	rdx, QWORD PTR -832[rbp]
	mov	rax, QWORD PTR -848[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	b2server_sed
.L153:
	mov	rax, QWORD PTR connections[rip]
	mov	QWORD PTR -848[rbp], rax
	lea	rax, connections[rip]
	mov	QWORD PTR -824[rbp], rax
	jmp	.L173
.L178:
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	je	.L174
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -368[rbp+rax*8]
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 12[rax]
	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	.L174
	mov	rax, QWORD PTR -848[rbp]
	mov	rdi, rax
	call	client2server_sed
.L174:
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	lea	edx, 63[rax]
	test	eax, eax
	cmovs	eax, edx
	sar	eax, 6
	cdqe
	mov	rsi, QWORD PTR -368[rbp+rax*8]
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 16[rax]
	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	.L175
	mov	rax, QWORD PTR -848[rbp]
	mov	rdi, rax
	call	server2client_sed
.L175:
	mov	eax, DWORD PTR tcp[rip]
	test	eax, eax
	jne	.L176
	mov	rdx, QWORD PTR now[rip]
	mov	rax, QWORD PTR -848[rbp]
	mov	rcx, QWORD PTR 24[rax]
	mov	rax, rdx
	sub	rax, rcx
	cmp	rax, 29
	jle	.L176
	mov	rax, QWORD PTR -848[rbp]
	mov	DWORD PTR 32[rax], 3
.L176:
	mov	rax, QWORD PTR -848[rbp]
	mov	eax, DWORD PTR 32[rax]
	cmp	eax, 1
	jbe	.L177
	mov	rax, QWORD PTR -848[rbp]
	mov	rdx, QWORD PTR 48[rax]
	mov	rax, QWORD PTR -824[rbp]
	mov	QWORD PTR [rax], rdx
	mov	rax, QWORD PTR -848[rbp]
	mov	rdi, rax
	call	freetracker
	mov	rax, QWORD PTR -824[rbp]
	mov	rax, QWORD PTR [rax]
	mov	QWORD PTR -848[rbp], rax
	jmp	.L173
.L177:
	mov	rax, QWORD PTR -848[rbp]
	add	rax, 48
	mov	QWORD PTR -824[rbp], rax
	mov	rax, QWORD PTR -848[rbp]
	mov	rax, QWORD PTR 48[rax]
	mov	QWORD PTR -848[rbp], rax
.L173:
	cmp	QWORD PTR -848[rbp], 0
	jne	.L178
.L143:
	mov	eax, DWORD PTR stop[rip]
	test	eax, eax
	je	.L180
	jmp	.L179
.L182:
	nop
	jmp	.L179
.L183:
	nop
.L179:
	call	clean_socks
	mov	edi, 0
	call	exit@PLT
	.cfi_endproc
.LFE52:
	.size	main, .-main
	.section	.rodata
.LC82:
	.string	"ipv4"
.LC83:
	.string	"ipv6"
.LC84:
	.string	"help"
.LC85:
	.string	"ipany"
	.section	.data.rel.local,"aw"
	.align 32
	.type	long_options.0, @object
	.size	long_options.0, 160
long_options.0:
	.quad	.LC82
	.long	0
	.zero	4
	.quad	0
	.long	52
	.zero	4
	.quad	.LC83
	.long	0
	.zero	4
	.quad	0
	.long	54
	.zero	4
	.quad	.LC84
	.long	0
	.zero	4
	.quad	0
	.long	104
	.zero	4
	.quad	.LC85
	.long	0
	.zero	4
	.quad	family
	.long	0
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.quad	0
	.long	0
	.zero	4
	.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	"989491.c"
	.text
	.comm	now,4,4
	.comm	lsock,4,4
	.global	family
	.bss
	.align	2
	.type	family, %object
	.size	family, 4
family:
	.space	4
	.comm	tcp,4,4
	.comm	lport,4,4
	.comm	rhost,4,4
	.comm	rport,4,4
	.global	rules
	.align	2
	.type	rules, %object
	.size	rules, 4
rules:
	.space	4
	.comm	rule,4,4
	.comm	rule_live,4,4
	.global	connections
	.align	2
	.type	connections, %object
	.size	connections, 4
connections:
	.space	4
	.global	stop
	.align	2
	.type	stop, %object
	.size	stop, 4
stop:
	.space	4
	.global	all_dir
	.align	2
	.type	all_dir, %object
	.size	all_dir, 4
all_dir:
	.space	4
	.global	changes
	.align	2
	.type	changes, %object
	.size	changes, 4
changes:
	.space	4
	.section	.rodata
	.align	2
.LC0:
	.ascii	"Error: %s\012\012\000"
	.align	2
.LC1:
	.ascii	"Usage: netsed [option] proto lport rhost rport rule"
	.ascii	"1 [ rule2 ... ]\012\012\000"
	.align	2
.LC2:
	.ascii	"  use netsed -h for more information on usage.\012\000"
	.text
	.align	2
	.global	short_usage_hints
	.syntax unified
	.arm
	.fpu softvfp
	.type	short_usage_hints, %function
short_usage_hints:
	@ 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
	beq	.L2
	ldr	r3, .L3
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r1, .L3+4
	mov	r0, r3
	bl	fprintf
.L2:
	ldr	r3, .L3
	ldr	r3, [r3]
	mov	r2, #68
	mov	r1, #1
	ldr	r0, .L3+8
	bl	fwrite
	ldr	r3, .L3
	ldr	r3, [r3]
	mov	r2, #47
	mov	r1, #1
	ldr	r0, .L3+12
	bl	fwrite
	mov	r0, #1
	bl	exit
.L4:
	.align	2
.L3:
	.word	stderr
	.word	.LC0
	.word	.LC1
	.word	.LC2
	.size	short_usage_hints, .-short_usage_hints
	.section	.rodata
	.align	2
.LC3:
	.ascii	"  options - can be --ipv4 or -4 to force address re"
	.ascii	"solution in IPv4,\012\000"
	.align	2
.LC4:
	.ascii	"            --ipv6 or -6 to force address resolutio"
	.ascii	"n in IPv6,\012\000"
	.align	2
.LC5:
	.ascii	"            --ipany to resolve the address in eithe"
	.ascii	"r IPv4 or IPv6.\012\000"
	.align	2
.LC6:
	.ascii	"          - --help or -h to display this usage info"
	.ascii	"rmation.\012\000"
	.align	2
.LC7:
	.ascii	"  proto   - protocol specification (tcp or udp)\012"
	.ascii	"\000"
	.align	2
.LC8:
	.ascii	"  lport   - local port to listen on (see README for"
	.ascii	" transparent\012\000"
	.align	2
.LC9:
	.ascii	"            traffic intercepting on some systems)\012"
	.ascii	"\000"
	.align	2
.LC10:
	.ascii	"  rhost   - where connection should be forwarded (0"
	.ascii	" = use destination\012\000"
	.align	2
.LC11:
	.ascii	"            address of incoming connection, see REA"
	.ascii	"DME)\012\000"
	.align	2
.LC12:
	.ascii	"  rport   - destination port (0 = dst port of incom"
	.ascii	"ing connection)\012\000"
	.align	2
.LC13:
	.ascii	"  ruleN   - replacement rules (see below)\012\012\000"
	.align	2
.LC14:
	.ascii	"General syntax of replacement rules: s/pat1/pat2[/e"
	.ascii	"xpire]\012\012\000"
	.align	2
.LC15:
	.ascii	"This will replace all occurrences of pat1 with pat2"
	.ascii	" in any matching packet.\012\000"
	.align	2
.LC16:
	.ascii	"An additional parameter, 'expire' of the form [CHAR"
	.ascii	"][NUM], can be used to\012\000"
	.align	2
.LC17:
	.ascii	"expire a rule after NUM successful substitutions du"
	.ascii	"ring a given connection.\012\000"
	.align	2
.LC18:
	.ascii	"The character CHAR is one of \"iIoO\", with the eff"
	.ascii	"ect of restricting the rule\012\000"
	.align	2
.LC19:
	.ascii	"to apply to incoming (\"iI\") or to outgoing (\"oO\""
	.ascii	") packets only, as seen from\012\000"
	.align	2
.LC20:
	.ascii	"the client's perspective. Both of CHAR and NUM are "
	.ascii	"optional.\012\012\000"
	.align	2
.LC21:
	.ascii	"Eight-bit characters, including NULL and '/', can b"
	.ascii	"e applied using HTTP-like\012\000"
	.align	2
.LC22:
	.ascii	"hex escape sequences (e.g. CRLF as %%0a%%0d).\012\000"
	.align	2
.LC23:
	.ascii	"A match on '%%' can be achieved by specifying '%%%%"
	.ascii	"'.\012\012Examples:\012\000"
	.align	2
.LC24:
	.ascii	"  's/andrew/mike/1'     - replace 'andrew' with 'mi"
	.ascii	"ke' (only first time)\012\000"
	.align	2
.LC25:
	.ascii	"  's/andrew/mike'       - replace all occurrences o"
	.ascii	"f 'andrew' with 'mike'\012\000"
	.align	2
.LC26:
	.ascii	"  's/andrew/mike%%00%%00' - replace 'andrew' with '"
	.ascii	"mike\\x00\\x00'\012\000"
	.align	2
.LC27:
	.ascii	"                          (manually padding to keep"
	.ascii	" original size)\012\000"
	.align	2
.LC28:
	.ascii	"  's/%%%%/%%2f/20'         - replace the 20 first o"
	.ascii	"ccurrence of '%%' with '/'\012\000"
	.align	2
.LC29:
	.ascii	"  's/andrew/mike/o'     - the server will always se"
	.ascii	"e 'mike', never 'andrew'\012\012\000"
	.align	2
.LC30:
	.ascii	"  's/Rilke/Proust/o s/Proust/Rilke/i'\012\000"
	.align	2
.LC31:
	.ascii	"                        - let Rilke travel incognit"
	.ascii	"o as Proust\012\012\000"
	.align	2
.LC32:
	.ascii	"Rules are not active across packet boundaries, and "
	.ascii	"they are evaluated\012\000"
	.align	2
.LC33:
	.ascii	"from first to last, not yet expired rule, as stated"
	.ascii	" on the command line.\012\000"
	.text
	.align	2
	.global	usage_hints
	.syntax unified
	.arm
	.fpu softvfp
	.type	usage_hints, %function
usage_hints:
	@ 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
	beq	.L6
	ldr	r3, .L7
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r1, .L7+4
	mov	r0, r3
	bl	fprintf
.L6:
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #68
	mov	r1, #1
	ldr	r0, .L7+8
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #69
	mov	r1, #1
	ldr	r0, .L7+12
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #62
	mov	r1, #1
	ldr	r0, .L7+16
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #67
	mov	r1, #1
	ldr	r0, .L7+20
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #60
	mov	r1, #1
	ldr	r0, .L7+24
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #48
	mov	r1, #1
	ldr	r0, .L7+28
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #64
	mov	r1, #1
	ldr	r0, .L7+32
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #50
	mov	r1, #1
	ldr	r0, .L7+36
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #70
	mov	r1, #1
	ldr	r0, .L7+40
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #56
	mov	r1, #1
	ldr	r0, .L7+44
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #67
	mov	r1, #1
	ldr	r0, .L7+48
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #43
	mov	r1, #1
	ldr	r0, .L7+52
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #59
	mov	r1, #1
	ldr	r0, .L7+56
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #76
	mov	r1, #1
	ldr	r0, .L7+60
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #74
	mov	r1, #1
	ldr	r0, .L7+64
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #76
	mov	r1, #1
	ldr	r0, .L7+68
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #77
	mov	r1, #1
	ldr	r0, .L7+72
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #77
	mov	r1, #1
	ldr	r0, .L7+76
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #62
	mov	r1, #1
	ldr	r0, .L7+80
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #77
	mov	r1, #1
	ldr	r0, .L7+84
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	ldr	r1, .L7+88
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L7
	ldr	r3, [r3]
	ldr	r1, .L7+92
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #73
	mov	r1, #1
	ldr	r0, .L7+96
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #74
	mov	r1, #1
	ldr	r0, .L7+100
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	ldr	r1, .L7+104
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #67
	mov	r1, #1
	ldr	r0, .L7+108
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	ldr	r1, .L7+112
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #77
	mov	r1, #1
	ldr	r0, .L7+116
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #38
	mov	r1, #1
	ldr	r0, .L7+120
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #64
	mov	r1, #1
	ldr	r0, .L7+124
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #70
	mov	r1, #1
	ldr	r0, .L7+128
	bl	fwrite
	ldr	r3, .L7
	ldr	r3, [r3]
	mov	r2, #73
	mov	r1, #1
	ldr	r0, .L7+132
	bl	fwrite
	mov	r0, #1
	bl	exit
.L8:
	.align	2
.L7:
	.word	stderr
	.word	.LC0
	.word	.LC1
	.word	.LC3
	.word	.LC4
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	.LC10
	.word	.LC11
	.word	.LC12
	.word	.LC13
	.word	.LC14
	.word	.LC15
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	.LC22
	.word	.LC23
	.word	.LC24
	.word	.LC25
	.word	.LC26
	.word	.LC27
	.word	.LC28
	.word	.LC29
	.word	.LC30
	.word	.LC31
	.word	.LC32
	.word	.LC33
	.size	usage_hints, .-usage_hints
	.align	2
	.global	freetracker
	.syntax unified
	.arm
	.fpu softvfp
	.type	freetracker, %function
freetracker:
	@ 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]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L10
	ldr	r3, [fp, #-8]
	ldr	r3, [r3]
	mov	r0, r3
	bl	free
	b	.L11
.L10:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	close
.L11:
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #12]
	mov	r0, r3
	bl	close
	ldr	r0, [fp, #-8]
	bl	free
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	freetracker, .-freetracker
	.align	2
	.global	clean_socks
	.syntax unified
	.arm
	.fpu softvfp
	.type	clean_socks, %function
clean_socks:
	@ 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	r3, .L15
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	b	.L13
.L14:
	ldr	r3, .L15+4
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-8]
	ldr	r3, [r3, #28]
	ldr	r2, .L15+4
	str	r3, [r2]
	ldr	r0, [fp, #-8]
	bl	freetracker
.L13:
	ldr	r3, .L15+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L14
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L16:
	.align	2
.L15:
	.word	lsock
	.word	connections
	.size	clean_socks, .-clean_socks
	.align	2
	.global	get_port
	.syntax unified
	.arm
	.fpu softvfp
	.type	get_port, %function
get_port:
	@ 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]
	ldrh	r3, [r3]
	cmp	r3, #2
	beq	.L18
	cmp	r3, #10
	beq	.L19
	b	.L22
.L18:
	ldr	r3, [fp, #-8]
	ldrh	r3, [r3, #2]
	mov	r0, r3
	bl	ntohs
	mov	r3, r0
	b	.L21
.L19:
	ldr	r3, [fp, #-8]
	ldrh	r3, [r3, #2]
	mov	r0, r3
	bl	ntohs
	mov	r3, r0
	b	.L21
.L22:
	mov	r3, #0
.L21:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	get_port, .-get_port
	.align	2
	.global	set_port
	.syntax unified
	.arm
	.fpu softvfp
	.type	set_port, %function
set_port:
	@ 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]
	mov	r3, r1
	strh	r3, [fp, #-10]	@ movhi
	ldr	r3, [fp, #-8]
	ldrh	r3, [r3]
	cmp	r3, #2
	beq	.L24
	cmp	r3, #10
	beq	.L25
	b	.L28
.L24:
	ldrh	r3, [fp, #-10]
	mov	r0, r3
	bl	htons
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-8]
	strh	r2, [r3, #2]	@ movhi
	b	.L27
.L25:
	ldrh	r3, [fp, #-10]
	mov	r0, r3
	bl	htons
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-8]
	strh	r2, [r3, #2]	@ movhi
.L28:
	nop
.L27:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
	.size	set_port, .-set_port
	.align	2
	.global	is_addr_any
	.syntax unified
	.arm
	.fpu softvfp
	.type	is_addr_any, %function
is_addr_any:
	@ 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]
	ldr	r3, [fp, #-16]
	ldrh	r3, [r3]
	cmp	r3, #2
	beq	.L30
	cmp	r3, #10
	beq	.L31
	b	.L34
.L30:
	ldr	r3, [fp, #-16]
	ldr	r4, [r3, #4]
	mov	r0, #0
	bl	htonl
	mov	r3, r0
	cmp	r4, r3
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	b	.L33
.L31:
	ldr	r3, [fp, #-16]
	add	r3, r3, #8
	mov	r2, #16
	ldr	r1, .L35
	mov	r0, r3
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	moveq	r3, #1
	movne	r3, #0
	and	r3, r3, #255
	b	.L33
.L34:
	mov	r3, #0
.L33:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L36:
	.align	2
.L35:
	.word	in6addr_any
	.size	is_addr_any, .-is_addr_any
	.section	.rodata
	.align	2
.LC34:
	.ascii	"[-] Error: %s\012\000"
	.align	2
.LC35:
	.ascii	"netsed: exiting.\012\000"
	.text
	.align	2
	.global	error
	.syntax unified
	.arm
	.fpu softvfp
	.type	error, %function
error:
	@ 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, .L38
	ldr	r3, [r3]
	ldr	r2, [fp, #-8]
	ldr	r1, .L38+4
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L38
	ldr	r3, [r3]
	mov	r2, #17
	mov	r1, #1
	ldr	r0, .L38+8
	bl	fwrite
	bl	clean_socks
	mov	r0, #2
	bl	exit
.L39:
	.align	2
.L38:
	.word	stderr
	.word	.LC34
	.word	.LC35
	.size	error, .-error
	.global	hex
	.data
	.align	2
	.type	hex, %object
	.size	hex, 17
hex:
	.ascii	"0123456789ABCDEF\000"
	.section	.rodata
	.align	2
.LC36:
	.ascii	"shrink_to_binary: unable to malloc() buffers\000"
	.align	2
.LC37:
	.ascii	"shrink_to_binary: src pattern: unexpected end.\000"
	.align	2
.LC38:
	.ascii	"shrink_to_binary: src pattern: non-hex sequence.\000"
	.align	2
.LC39:
	.ascii	"shrink_to_binary: dst pattern: unexpected end.\000"
	.align	2
.LC40:
	.ascii	"shrink_to_binary: dst pattern: non-hex sequence.\000"
	.text
	.align	2
	.global	shrink_to_binary
	.syntax unified
	.arm
	.fpu softvfp
	.type	shrink_to_binary, %function
shrink_to_binary:
	@ 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, [fp, #-32]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #12]
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-32]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L41
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	cmp	r3, #0
	bne	.L42
.L41:
	ldr	r0, .L61
	bl	error
.L42:
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L43
.L51:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #37
	bne	.L44
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #37
	bne	.L45
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #16]
	add	r3, r3, r2
	mov	r2, #37
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #16]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #16]
	b	.L46
.L45:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L47
	ldr	r0, .L61+4
	bl	error
.L47:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L48
	ldr	r0, .L61+4
	bl	error
.L48:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L61+8
	bl	strchr
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L49
	ldr	r0, .L61+12
	bl	error
.L49:
	ldr	r3, [fp, #-12]
	ldr	r2, .L61+8
	sub	r3, r3, r2
	lsl	r3, r3, #4
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L61+8
	bl	strchr
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L50
	ldr	r0, .L61+12
	bl	error
.L50:
	ldr	r3, [fp, #-12]
	ldr	r2, .L61+8
	sub	r3, r3, r2
	ldr	r2, [fp, #-8]
	add	r3, r2, r3
	str	r3, [fp, #-8]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #16]
	add	r3, r3, r2
	ldr	r2, [fp, #-8]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #16]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L46
.L44:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #8]
	ldr	r3, [fp, #-24]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3]
	ldr	r1, [fp, #-32]
	ldr	r1, [r1, #16]
	add	r3, r3, r1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #16]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #16]
.L46:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L43:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #8]
	mov	r0, r3
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bhi	.L51
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L52
.L60:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #37
	bne	.L53
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #37
	bne	.L54
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #20]
	add	r3, r3, r2
	mov	r2, #37
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #20]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #20]
	b	.L55
.L54:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L56
	ldr	r0, .L61+16
	bl	error
.L56:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	bne	.L57
	ldr	r0, .L61+16
	bl	error
.L57:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L61+8
	bl	strchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L58
	ldr	r0, .L61+20
	bl	error
.L58:
	ldr	r3, [fp, #-20]
	ldr	r2, .L61+8
	sub	r3, r3, r2
	lsl	r3, r3, #4
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r0, r3
	bl	toupper
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L61+8
	bl	strchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L59
	ldr	r0, .L61+20
	bl	error
.L59:
	ldr	r3, [fp, #-20]
	ldr	r2, .L61+8
	sub	r3, r3, r2
	ldr	r2, [fp, #-16]
	add	r3, r2, r3
	str	r3, [fp, #-16]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	ldr	r2, [fp, #-32]
	ldr	r2, [r2, #20]
	add	r3, r3, r2
	ldr	r2, [fp, #-16]
	and	r2, r2, #255
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #20]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #20]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
	b	.L55
.L53:
	ldr	r3, [fp, #-32]
	ldr	r2, [r3, #12]
	ldr	r3, [fp, #-24]
	add	r2, r2, r3
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #4]
	ldr	r1, [fp, #-32]
	ldr	r1, [r1, #20]
	add	r3, r3, r1
	ldrb	r2, [r2]	@ zero_extendqisi2
	strb	r2, [r3]
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #20]
	add	r2, r3, #1
	ldr	r3, [fp, #-32]
	str	r2, [r3, #20]
.L55:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L52:
	ldr	r3, [fp, #-32]
	ldr	r3, [r3, #12]
	mov	r0, r3
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bhi	.L60
	nop
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L62:
	.align	2
.L61:
	.word	.LC36
	.word	.LC37
	.word	hex
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.size	shrink_to_binary, .-shrink_to_binary
	.section	.rodata
	.align	2
.LC41:
	.ascii	"unsupported optional parameter\000"
	.align	2
.LC42:
	.ascii	"46h\000"
	.align	2
.LC43:
	.ascii	"not enough parameters\000"
	.align	2
.LC44:
	.ascii	"tcp\000"
	.align	2
.LC45:
	.ascii	"udp\000"
	.align	2
.LC46:
	.ascii	"incorrect protocol\000"
	.align	2
.LC47:
	.ascii	"[*] Parsing rule %s...\012\000"
	.align	2
.LC48:
	.ascii	"missing first '/' in rule\000"
	.align	2
.LC49:
	.ascii	"missing second '/' in rule\000"
	.align	2
.LC50:
	.ascii	"iIoO\000"
	.align	2
.LC51:
	.ascii	"All dir: %d\012\000"
	.align	2
.LC52:
	.ascii	"s\000"
	.align	2
.LC53:
	.ascii	"\000"
	.align	2
.LC54:
	.ascii	"[+] Loaded %d rule%s...\012\000"
	.text
	.align	2
	.global	parse_params
	.syntax unified
	.arm
	.fpu softvfp
	.type	parse_params, %function
parse_params:
	@ args = 0, pretend = 0, frame = 24
	@ 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]
	b	.L64
.L70:
	ldr	r3, [fp, #-28]
	cmp	r3, #104
	beq	.L65
	ldr	r3, [fp, #-28]
	cmp	r3, #104
	bgt	.L66
	ldr	r3, [fp, #-28]
	cmp	r3, #54
	beq	.L67
	ldr	r3, [fp, #-28]
	cmp	r3, #54
	bgt	.L66
	ldr	r3, [fp, #-28]
	cmp	r3, #0
	beq	.L64
	ldr	r3, [fp, #-28]
	cmp	r3, #52
	beq	.L69
	b	.L66
.L69:
	ldr	r3, .L90
	mov	r2, #2
	str	r2, [r3]
	b	.L64
.L67:
	ldr	r3, .L90
	mov	r2, #10
	str	r2, [r3]
	b	.L64
.L65:
	mov	r0, #0
	bl	usage_hints
.L66:
	ldr	r0, .L90+4
	bl	usage_hints
.L64:
	mov	r3, #0
	str	r3, [sp]
	ldr	r3, .L90+8
	ldr	r2, .L90+12
	ldr	r1, [fp, #-36]
	ldr	r0, [fp, #-32]
	bl	getopt_long
	str	r0, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmn	r3, #1
	bne	.L70
	ldr	r3, .L90+16
	ldr	r3, [r3]
	add	r3, r3, #4
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	bgt	.L71
	ldr	r0, .L90+20
	bl	short_usage_hints
.L71:
	ldr	r3, .L90+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, .L90+24
	mov	r0, r3
	bl	strcasecmp
	mov	r4, r0
	ldr	r3, .L90+16
	ldr	r3, [r3]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r1, .L90+28
	mov	r0, r3
	bl	strcasecmp
	mov	r3, r0
	mul	r3, r4, r3
	cmp	r3, #0
	beq	.L72
	ldr	r0, .L90+32
	bl	short_usage_hints
.L72:
	ldr	r3, .L90+16
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L90+16
	str	r2, [r1]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r2, #3
	ldr	r1, .L90+28
	mov	r0, r3
	bl	strncasecmp
	mov	r3, r0
	ldr	r2, .L90+36
	str	r3, [r2]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L90+16
	str	r2, [r1]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, .L90+40
	str	r3, [r2]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L90+16
	str	r2, [r1]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, .L90+44
	str	r3, [r2]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	add	r2, r3, #1
	ldr	r1, .L90+16
	str	r2, [r1]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	ldr	r2, .L90+48
	str	r3, [r2]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	sub	r3, r2, r3
	mov	r2, r3
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L90+52
	str	r2, [r3]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	sub	r3, r2, r3
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L90+56
	str	r2, [r3]
	ldr	r3, .L90+16
	ldr	r3, [r3]
	str	r3, [fp, #-28]
	b	.L73
.L83:
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-24]
	ldr	r3, .L90+52
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r2, r2, r3
	mov	r3, #0
	str	r3, [r2, #20]
	ldr	r3, .L90+52
	ldr	r1, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r0, r3
	mov	r3, r0
	lsl	r3, r3, #3
	sub	r3, r3, r0
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r2, #20]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L90+64
	bl	printf
	ldr	r3, [fp, #-28]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-36]
	add	r3, r2, r3
	ldr	r3, [r3]
	mov	r1, #47
	mov	r0, r3
	bl	strchr
	str	r0, [fp, #-20]
	ldr	r3, [fp, #-20]
	cmp	r3, #0
	bne	.L74
	ldr	r0, .L90+68
	bl	error
.L74:
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
	mov	r1, #47
	ldr	r0, [fp, #-20]
	bl	strchr
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	cmp	r3, #0
	bne	.L75
	ldr	r0, .L90+72
	bl	error
.L75:
	ldr	r3, [fp, #-16]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
	mov	r1, #47
	ldr	r0, [fp, #-16]
	bl	strchr
	str	r0, [fp, #-24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L76
	ldr	r3, [fp, #-24]
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L76:
	ldr	r3, .L90+52
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-20]
	str	r2, [r3, #8]
	ldr	r3, .L90+52
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	ldr	r2, [fp, #-16]
	str	r2, [r3, #12]
	ldr	r3, .L90+52
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r2, #0
	str	r2, [r3, #24]
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L77
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L77
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L90+76
	bl	strchr
	mov	r3, r0
	cmp	r3, #0
	beq	.L77
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #105
	beq	.L78
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #73
	bne	.L79
.L78:
	mov	r2, #1
	b	.L80
.L79:
	mov	r2, #2
.L80:
	ldr	r3, .L90+52
	ldr	r1, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r0, r3
	mov	r3, r0
	lsl	r3, r3, #3
	sub	r3, r3, r0
	lsl	r3, r3, #2
	add	r3, r1, r3
	str	r2, [r3, #24]
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L77:
	ldr	r3, [fp, #-24]
	cmp	r3, #0
	beq	.L81
	ldr	r3, [fp, #-24]
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #0
	beq	.L81
	ldr	r3, .L90+56
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	lsl	r3, r3, #2
	add	r4, r2, r3
	ldr	r0, [fp, #-24]
	bl	atoi
	mov	r3, r0
	str	r3, [r4]
	b	.L82
.L81:
	ldr	r3, .L90+56
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	lsl	r3, r3, #2
	add	r3, r2, r3
	mvn	r2, #0
	str	r2, [r3]
.L82:
	ldr	r3, .L90+52
	ldr	r2, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	mov	r1, r3
	mov	r3, r1
	lsl	r3, r3, #3
	sub	r3, r3, r1
	lsl	r3, r3, #2
	add	r3, r2, r3
	mov	r0, r3
	bl	shrink_to_binary
	ldr	r3, .L90+60
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L90+60
	str	r3, [r2]
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L73:
	ldr	r2, [fp, #-28]
	ldr	r3, [fp, #-32]
	cmp	r2, r3
	blt	.L83
	ldr	r3, .L90+60
	ldr	r3, [r3]
	cmp	r3, #0
	ble	.L84
	ldr	r3, .L90+52
	ldr	r3, [r3]
	ldr	r3, [r3, #24]
	ldr	r2, .L90+80
	str	r3, [r2]
	mov	r3, #1
	str	r3, [fp, #-28]
	b	.L85
.L87:
	ldr	r3, .L90+52
	ldr	r1, [r3]
	ldr	r2, [fp, #-28]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r2, [r3, #24]
	ldr	r3, .L90+80
	ldr	r3, [r3]
	cmp	r2, r3
	beq	.L86
	ldr	r3, .L90+80
	mov	r2, #0
	str	r2, [r3]
.L86:
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
.L85:
	ldr	r3, .L90+60
	ldr	r3, [r3]
	ldr	r2, [fp, #-28]
	cmp	r2, r3
	blt	.L87
.L84:
	ldr	r3, .L90+80
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L90+84
	bl	printf
	ldr	r3, .L90+60
	ldr	r1, [r3]
	ldr	r3, .L90+60
	ldr	r3, [r3]
	cmp	r3, #1
	ble	.L88
	ldr	r3, .L90+88
	b	.L89
.L88:
	ldr	r3, .L90+92
.L89:
	mov	r2, r3
	ldr	r0, .L90+96
	bl	printf
	nop
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L91:
	.align	2
.L90:
	.word	family
	.word	.LC41
	.word	long_options.7490
	.word	.LC42
	.word	optind
	.word	.LC43
	.word	.LC44
	.word	.LC45
	.word	.LC46
	.word	tcp
	.word	lport
	.word	rhost
	.word	rport
	.word	rule
	.word	rule_live
	.word	rules
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	.LC50
	.word	all_dir
	.word	.LC51
	.word	.LC52
	.word	.LC53
	.word	.LC54
	.size	parse_params, .-parse_params
	.section	.rodata
	.align	2
.LC55:
	.ascii	"getaddrinfo(): %s\012\000"
	.align	2
.LC56:
	.ascii	"Impossible to resolve listening port.\000"
	.align	2
.LC57:
	.ascii	"    Failed to unset IPV6_V6ONLY: %s.\012\000"
	.align	2
.LC58:
	.ascii	"bind(): %s\000"
	.align	2
.LC59:
	.ascii	"Listening socket failed.\000"
	.align	2
.LC60:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	bind_and_listen
	.syntax unified
	.arm
	.fpu softvfp
	.type	bind_and_listen, %function
bind_and_listen:
	@ args = 0, pretend = 0, frame = 72
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #84
	str	r0, [fp, #-72]
	str	r1, [fp, #-76]
	str	r2, [fp, #-80]
	ldr	r3, .L110
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #48
	mov	r2, #32
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, [fp, #-72]
	str	r3, [fp, #-44]
	mov	r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	beq	.L93
	mov	r3, #1
	b	.L94
.L93:
	mov	r3, #2
.L94:
	str	r3, [fp, #-40]
	sub	r3, fp, #68
	sub	r2, fp, #48
	ldr	r1, [fp, #-80]
	mov	r0, #0
	bl	getaddrinfo
	str	r0, [fp, #-52]
	ldr	r3, [fp, #-52]
	cmp	r3, #0
	beq	.L95
	ldr	r3, .L110+4
	ldr	r4, [r3]
	ldr	r0, [fp, #-52]
	bl	gai_strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L110+8
	mov	r0, r4
	bl	fprintf
	ldr	r0, .L110+12
	bl	error
.L95:
	ldr	r3, [fp, #-68]
	str	r3, [fp, #-56]
	b	.L96
.L104:
	mov	r3, #1
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-56]
	ldr	r0, [r3, #4]
	ldr	r3, [fp, #-56]
	ldr	r1, [r3, #8]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #12]
	mov	r2, r3
	bl	socket
	mov	r3, r0
	ldr	r2, .L110+16
	str	r3, [r2]
	ldr	r3, .L110+16
	ldr	r3, [r3]
	cmp	r3, #0
	blt	.L107
	ldr	r3, .L110+16
	ldr	r0, [r3]
	sub	r3, fp, #64
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #2
	mov	r1, #1
	bl	setsockopt
	ldr	r3, .L110+20
	ldr	r3, [r3]
	cmp	r3, #0
	movne	r3, #1
	moveq	r3, #0
	and	r3, r3, #255
	str	r3, [fp, #-64]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #4]
	cmp	r3, #10
	bne	.L99
	ldr	r3, .L110+16
	ldr	r0, [r3]
	sub	r3, fp, #64
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #26
	mov	r1, #41
	bl	setsockopt
	mov	r3, r0
	cmp	r3, #0
	beq	.L99
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r1, r3
	ldr	r0, .L110+24
	bl	printf
.L99:
	ldr	r3, .L110+16
	ldr	r0, [r3]
	ldr	r3, [fp, #-56]
	ldr	r1, [r3, #20]
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #16]
	mov	r2, r3
	bl	bind
	mov	r3, r0
	cmp	r3, #0
	bge	.L100
	ldr	r3, .L110+4
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L110+28
	mov	r0, r4
	bl	fprintf
	ldr	r3, .L110+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	b	.L98
.L100:
	ldr	r3, [fp, #-76]
	cmp	r3, #0
	beq	.L101
	ldr	r3, .L110+16
	ldr	r3, [r3]
	mov	r1, #16
	mov	r0, r3
	bl	listen
	mov	r3, r0
	cmp	r3, #0
	bge	.L108
	ldr	r3, .L110+16
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	b	.L98
.L101:
	mov	r3, #1
	str	r3, [fp, #-60]
	ldr	r3, .L110+16
	ldr	r0, [r3]
	sub	r3, fp, #60
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #10
	mov	r1, #1
	bl	setsockopt
	b	.L103
.L107:
	nop
.L98:
	ldr	r3, [fp, #-56]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-56]
.L96:
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L104
	b	.L103
.L108:
	nop
.L103:
	ldr	r3, [fp, #-68]
	mov	r0, r3
	bl	freeaddrinfo
	ldr	r3, [fp, #-56]
	cmp	r3, #0
	bne	.L109
	ldr	r0, .L110+32
	bl	error
.L109:
	nop
	ldr	r3, .L110
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L106
	bl	__stack_chk_fail
.L106:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L111:
	.align	2
.L110:
	.word	.LC60
	.word	stderr
	.word	.LC55
	.word	.LC56
	.word	lsock
	.word	family
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.size	bind_and_listen, .-bind_and_listen
	.comm	buf,100000,4
	.comm	b2,100000,4
	.section	.rodata
	.align	2
.LC61:
	.ascii	"[*] Forwarding untouched packet of size %d.\012\000"
	.align	2
.LC62:
	.ascii	"    Applying rule s/%s/%s...\012\000"
	.align	2
.LC63:
	.ascii	"    (rule just expired)\000"
	.align	2
.LC64:
	.ascii	"[*] Done %d replacements, forwarding packet of size"
	.ascii	" %d (orig %d).\012\000"
	.text
	.align	2
	.global	sed_the_buffer
	.syntax unified
	.arm
	.fpu softvfp
	.type	sed_the_buffer, %function
sed_the_buffer:
	@ 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, #-24]
	str	r1, [fp, #-28]
	str	r2, [fp, #-32]
	mov	r3, #0
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-16]
	mov	r3, #0
	str	r3, [fp, #-12]
	mov	r3, #0
	str	r3, [fp, #-8]
	ldr	r3, .L126
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, .L126+4
	ldr	r3, [r3]
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	beq	.L113
	ldr	r1, [fp, #-24]
	ldr	r0, .L126+8
	bl	printf
	ldr	r3, [fp, #-24]
	b	.L114
.L113:
	mov	r3, #0
	str	r3, [fp, #-20]
	b	.L115
.L122:
	mov	r3, #0
	str	r3, [fp, #-8]
	mov	r3, #0
	str	r3, [fp, #-16]
	b	.L116
.L121:
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #24]
	cmp	r3, #0
	beq	.L117
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #24]
	ldr	r2, [fp, #-32]
	cmp	r2, r3
	bne	.L125
.L117:
	ldr	r3, [fp, #-20]
	ldr	r2, .L126+16
	add	r0, r3, r2
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	ip, [r3]
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #16]
	mov	r2, r3
	mov	r1, ip
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L118
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L118
	ldr	r3, .L126
	ldr	r3, [r3]
	add	r3, r3, #1
	ldr	r2, .L126
	str	r3, [r2]
	mov	r3, #1
	str	r3, [fp, #-8]
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r0, [r3, #8]
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #12]
	mov	r2, r3
	mov	r1, r0
	ldr	r0, .L126+20
	bl	printf
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r2, [r3]
	sub	r2, r2, #1
	str	r2, [r3]
	ldr	r3, [fp, #-16]
	lsl	r3, r3, #2
	ldr	r2, [fp, #-28]
	add	r3, r2, r3
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L119
	ldr	r0, .L126+24
	bl	puts
.L119:
	ldr	r3, [fp, #-12]
	ldr	r2, .L126+28
	add	r0, r3, r2
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	ip, [r3, #4]
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #20]
	mov	r2, r3
	mov	r1, ip
	bl	memcpy
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #20]
	ldr	r2, [fp, #-12]
	add	r3, r2, r3
	str	r3, [fp, #-12]
	ldr	r3, .L126+12
	ldr	r1, [r3]
	ldr	r2, [fp, #-16]
	mov	r3, r2
	lsl	r3, r3, #3
	sub	r3, r3, r2
	lsl	r3, r3, #2
	add	r3, r1, r3
	ldr	r3, [r3, #16]
	ldr	r2, [fp, #-20]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	b	.L120
.L125:
	nop
.L118:
	ldr	r3, [fp, #-16]
	add	r3, r3, #1
	str	r3, [fp, #-16]
.L116:
	ldr	r3, .L126+32
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	cmp	r2, r3
	blt	.L121
.L120:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L115
	ldr	r2, .L126+16
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	ldrb	r1, [r3]	@ zero_extendqisi2
	ldr	r2, .L126+28
	ldr	r3, [fp, #-12]
	add	r3, r2, r3
	mov	r2, r1
	strb	r2, [r3]
	ldr	r3, [fp, #-12]
	add	r3, r3, #1
	str	r3, [fp, #-12]
	ldr	r3, [fp, #-20]
	add	r3, r3, #1
	str	r3, [fp, #-20]
.L115:
	ldr	r2, [fp, #-20]
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	blt	.L122
	ldr	r3, .L126
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L123
	ldr	r1, [fp, #-24]
	ldr	r0, .L126+8
	bl	printf
	b	.L124
.L123:
	ldr	r3, .L126
	ldr	r1, [r3]
	ldr	r3, [fp, #-24]
	ldr	r2, [fp, #-12]
	ldr	r0, .L126+36
	bl	printf
.L124:
	ldr	r3, [fp, #-12]
.L114:
	mov	r0, r3
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L127:
	.align	2
.L126:
	.word	changes
	.word	all_dir
	.word	.LC61
	.word	rule
	.word	buf
	.word	.LC62
	.word	.LC63
	.word	b2
	.word	rules
	.word	.LC64
	.size	sed_the_buffer, .-sed_the_buffer
	.section	.rodata
	.align	2
.LC65:
	.ascii	"[+] Caught server -> client packet.\000"
	.text
	.align	2
	.global	server2client_sed
	.syntax unified
	.arm
	.fpu softvfp
	.type	server2client_sed, %function
server2client_sed:
	@ args = 0, pretend = 0, frame = 16
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	str	r0, [fp, #-16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, .L135
	ldr	r1, .L135+4
	mov	r0, r3
	bl	read
	str	r0, [fp, #-12]
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bge	.L129
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	cmp	r3, #11
	beq	.L129
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L129:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	bne	.L130
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L130:
	ldr	r3, [fp, #-12]
	cmp	r3, #0
	ble	.L134
	ldr	r0, .L135+8
	bl	puts
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #24]
	mov	r2, #1
	mov	r1, r3
	ldr	r0, [fp, #-12]
	bl	sed_the_buffer
	str	r0, [fp, #-12]
	ldr	r3, .L135+12
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L132
	ldr	r3, .L135+4
	b	.L133
.L132:
	ldr	r3, .L135+16
.L133:
	str	r3, [fp, #-8]
	ldr	r3, .L135+20
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	mov	r2, #1
	str	r2, [r3, #20]
	ldr	r3, [fp, #-16]
	ldr	r0, [r3, #8]
	ldr	r1, [fp, #-12]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3]
	ldr	r2, [fp, #-16]
	ldr	r2, [r2, #4]
	str	r2, [sp, #4]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, r1
	ldr	r1, [fp, #-8]
	bl	sendto
	mov	r3, r0
	cmp	r3, #0
	bgt	.L134
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L134:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L136:
	.align	2
.L135:
	.word	100000
	.word	buf
	.word	.LC65
	.word	changes
	.word	b2
	.word	now
	.size	server2client_sed, .-server2client_sed
	.align	2
	.global	client2server_sed
	.syntax unified
	.arm
	.fpu softvfp
	.type	client2server_sed, %function
client2server_sed:
	@ 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]
	ldr	r3, [r3, #8]
	ldr	r2, .L140
	ldr	r1, .L140+4
	mov	r0, r3
	bl	read
	str	r0, [fp, #-8]
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bge	.L138
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	cmp	r3, #11
	beq	.L138
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L138:
	ldr	r3, [fp, #-8]
	cmp	r3, #0
	bne	.L139
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L139:
	ldr	r1, [fp, #-8]
	ldr	r0, [fp, #-16]
	bl	b2server_sed
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L141:
	.align	2
.L140:
	.word	100000
	.word	buf
	.size	client2server_sed, .-client2server_sed
	.section	.rodata
	.align	2
.LC66:
	.ascii	"[+] Caught client -> server packet.\000"
	.text
	.align	2
	.global	b2server_sed
	.syntax unified
	.arm
	.fpu softvfp
	.type	b2server_sed, %function
b2server_sed:
	@ 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, [fp, #-20]
	cmp	r3, #0
	ble	.L146
	ldr	r0, .L147
	bl	puts
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #24]
	mov	r2, #2
	mov	r1, r3
	ldr	r0, [fp, #-20]
	bl	sed_the_buffer
	str	r0, [fp, #-20]
	ldr	r3, .L147+4
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L144
	ldr	r3, .L147+8
	b	.L145
.L144:
	ldr	r3, .L147+12
.L145:
	str	r3, [fp, #-8]
	ldr	r3, .L147+16
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	str	r2, [r3, #16]
	ldr	r3, [fp, #-16]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-20]
	ldr	r1, [fp, #-8]
	mov	r0, r3
	bl	write
	mov	r3, r0
	cmp	r3, #0
	bgt	.L146
	ldr	r3, [fp, #-16]
	mov	r2, #2
	str	r2, [r3, #20]
.L146:
	nop
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L148:
	.align	2
.L147:
	.word	.LC66
	.word	changes
	.word	buf
	.word	b2
	.word	now
	.size	b2server_sed, .-b2server_sed
	.align	2
	.global	sig_int
	.syntax unified
	.arm
	.fpu softvfp
	.type	sig_int, %function
sig_int:
	@ 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, .L150
	mov	r2, #1
	str	r2, [r3]
	nop
	add	sp, fp, #0
	@ sp needed
	ldr	fp, [sp], #4
	bx	lr
.L151:
	.align	2
.L150:
	.word	stop
	.size	sig_int, .-sig_int
	.section	.rodata
	.align	2
.LC67:
	.ascii	"netsed 1.2 by Julien VdG <julien@silicone.homelinux"
	.ascii	".org>\012      based on 0.01c from Michal Zalewski "
	.ascii	"<lcamtuf@ids.pl>\000"
	.align	2
.LC68:
	.ascii	"Impossible to resolve remote address or port.\000"
	.align	2
.LC69:
	.ascii	"Failed in resolving remote host.\000"
	.align	2
.LC70:
	.ascii	"[+] Using fixed forwarding to %s,%s.\012\000"
	.align	2
.LC71:
	.ascii	"[+] Using dynamic (transparent proxy) forwarding wi"
	.ascii	"th fixed port %s.\012\000"
	.align	2
.LC72:
	.ascii	"[+] Using dynamic (transparent proxy) forwarding wi"
	.ascii	"th fixed addr %s.\012\000"
	.align	2
.LC73:
	.ascii	"[+] Using dynamic (transparent proxy) forwarding.\000"
	.align	2
.LC74:
	.ascii	"[+] Listening on port %s/%s.\012\000"
	.align	2
.LC75:
	.ascii	"netsed: sigaction() failed\000"
	.align	2
.LC76:
	.ascii	"recvfrom(): %s\000"
	.align	2
.LC77:
	.ascii	"[+] Got incoming connection from %s,%s\000"
	.align	2
.LC78:
	.ascii	"netsed: unable to malloc() connection tracker struc"
	.ascii	"t\000"
	.align	2
.LC79:
	.ascii	"netsed: unable to malloc() connection tracker socka"
	.ascii	"ddr struct\000"
	.align	2
.LC80:
	.ascii	" to %s,%s\012\000"
	.align	2
.LC81:
	.ascii	"[*] Forwarding connection to %s,%s\012\000"
	.align	2
.LC82:
	.ascii	"[!] Cannot connect to remote server, dropping conne"
	.ascii	"ction.\000"
	.align	2
.LC83:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 832
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #852
	str	r0, [fp, #-840]
	str	r1, [fp, #-844]
	ldr	r3, .L213
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	sub	r3, fp, #12
	sub	r3, r3, #824
	mov	r2, #0
	strh	r2, [r3]	@ movhi
	sub	r3, fp, #728
	mov	r2, #128
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r0, .L213+4
	bl	puts
	ldr	r3, .L213+8
	ldr	r3, [r3]
	mov	r2, #0
	mov	r1, #0
	mov	r0, r3
	bl	setbuffer
	ldr	r1, [fp, #-844]
	ldr	r0, [fp, #-840]
	bl	parse_params
	sub	r3, fp, #760
	mov	r2, #32
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, .L213+12
	ldr	r3, [r3]
	str	r3, [fp, #-756]
	mov	r3, #2
	str	r3, [fp, #-760]
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L153
	mov	r3, #1
	b	.L154
.L153:
	mov	r3, #2
.L154:
	str	r3, [fp, #-752]
	ldr	r3, .L213+20
	ldr	r0, [r3]
	ldr	r3, .L213+24
	ldr	r1, [r3]
	sub	r3, fp, #832
	sub	r2, fp, #760
	bl	getaddrinfo
	str	r0, [fp, #-784]
	ldr	r3, [fp, #-784]
	cmp	r3, #0
	beq	.L155
	ldr	r3, .L213+28
	ldr	r4, [r3]
	ldr	r0, [fp, #-784]
	bl	gai_strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L213+32
	mov	r0, r4
	bl	fprintf
	ldr	r0, .L213+36
	bl	error
.L155:
	ldr	r3, [fp, #-832]
	str	r3, [fp, #-820]
	b	.L156
.L160:
	mvn	r3, #0
	str	r3, [fp, #-780]
	ldr	r3, [fp, #-820]
	ldr	r0, [r3, #4]
	ldr	r3, [fp, #-820]
	ldr	r1, [r3, #8]
	ldr	r3, [fp, #-820]
	ldr	r3, [r3, #12]
	mov	r2, r3
	bl	socket
	str	r0, [fp, #-780]
	ldr	r3, [fp, #-780]
	cmp	r3, #0
	bge	.L157
	ldr	r3, [fp, #-820]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-820]
	b	.L156
.L157:
	ldr	r3, [fp, #-820]
	ldr	r3, [r3, #20]
	sub	r2, fp, #12
	sub	r4, r2, #824
	mov	r0, r3
	bl	get_port
	mov	r3, r0
	strh	r3, [r4]	@ movhi
	ldr	r3, [fp, #-820]
	ldr	r3, [r3, #20]
	mov	r0, r3
	bl	is_addr_any
	mov	r3, r0
	cmp	r3, #0
	bne	.L158
	ldr	r3, [fp, #-820]
	ldr	r1, [r3, #20]
	ldr	r3, [fp, #-820]
	ldr	r2, [r3, #16]
	sub	r3, fp, #728
	mov	r0, r3
	bl	memcpy
.L158:
	ldr	r0, [fp, #-780]
	bl	close
	b	.L159
.L156:
	ldr	r3, [fp, #-820]
	cmp	r3, #0
	bne	.L160
.L159:
	ldr	r3, [fp, #-832]
	mov	r0, r3
	bl	freeaddrinfo
	ldr	r3, [fp, #-820]
	cmp	r3, #0
	bne	.L161
	ldr	r0, .L213+40
	bl	error
.L161:
	sub	r3, fp, #12
	sub	r3, r3, #716
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L162
	sub	r3, fp, #12
	sub	r3, r3, #824
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L162
	ldr	r3, .L213+20
	ldr	r3, [r3]
	ldr	r2, .L213+24
	ldr	r2, [r2]
	mov	r1, r3
	ldr	r0, .L213+44
	bl	printf
	b	.L163
.L162:
	sub	r3, fp, #12
	sub	r3, r3, #824
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L164
	ldr	r3, .L213+24
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L213+48
	bl	printf
	b	.L163
.L164:
	sub	r3, fp, #12
	sub	r3, r3, #716
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L165
	ldr	r3, .L213+20
	ldr	r3, [r3]
	mov	r1, r3
	ldr	r0, .L213+52
	bl	printf
	b	.L163
.L165:
	ldr	r0, .L213+56
	bl	puts
.L163:
	sub	r3, fp, #12
	sub	r3, r3, #716
	ldrh	r3, [r3]
	mov	r0, r3
	ldr	r3, .L213+16
	ldr	r3, [r3]
	ldr	r2, .L213+60
	ldr	r2, [r2]
	mov	r1, r3
	bl	bind_and_listen
	ldr	r3, .L213+60
	ldr	r1, [r3]
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L166
	ldr	r3, .L213+64
	b	.L167
.L166:
	ldr	r3, .L213+68
.L167:
	mov	r2, r3
	ldr	r0, .L213+72
	bl	printf
	mov	r1, #1
	mov	r0, #13
	bl	signal
	mov	r3, #0
	str	r3, [fp, #-84]
	sub	r3, fp, #216
	add	r3, r3, #4
	mov	r0, r3
	bl	sigemptyset
	ldr	r3, .L213+76
	str	r3, [fp, #-216]
	sub	r3, fp, #216
	mov	r2, #0
	mov	r1, r3
	mov	r0, #2
	bl	sigaction
	mov	r3, r0
	cmn	r3, #1
	bne	.L169
	ldr	r0, .L213+80
	bl	error
	b	.L169
.L208:
	mov	r3, #128
	str	r3, [fp, #-828]
	ldr	r3, .L213+84
	ldr	r3, [r3]
	str	r3, [fp, #-808]
	sub	r3, fp, #344
	str	r3, [fp, #-776]
	mov	r3, #0
	str	r3, [fp, #-804]
	b	.L170
.L171:
	ldr	r3, [fp, #-776]
	ldr	r2, [fp, #-804]
	mov	r1, #0
	str	r1, [r3, r2, lsl #2]
	ldr	r3, [fp, #-804]
	add	r3, r3, #1
	str	r3, [fp, #-804]
.L170:
	ldr	r3, [fp, #-804]
	cmp	r3, #31
	bls	.L171
	ldr	r3, .L213+84
	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, #12
	add	r3, r1, r3
	ldr	r1, [r3, #-332]
	ldr	r3, .L213+84
	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, #12
	add	r3, r2, r3
	str	r1, [r3, #-332]
	mov	r3, #31
	str	r3, [fp, #-768]
	mov	r3, #0
	str	r3, [fp, #-764]
	mov	r3, #0
	str	r3, [fp, #-812]
	ldr	r3, .L213+88
	ldr	r3, [r3]
	str	r3, [fp, #-816]
	b	.L172
.L177:
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L173
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	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, #12
	add	r3, r1, r3
	ldr	r1, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	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, #12
	add	r3, r2, r3
	str	r1, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	ldr	r2, [fp, #-808]
	cmp	r2, r3
	bge	.L174
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	str	r3, [fp, #-808]
	b	.L174
.L173:
	ldr	r3, .L213+92
	ldr	r2, [r3]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #16]
	sub	r3, r2, r3
	rsb	r3, r3, #30
	str	r3, [fp, #-800]
	ldr	r3, [fp, #-800]
	cmp	r3, #0
	bge	.L175
	mov	r3, #0
	str	r3, [fp, #-800]
.L175:
	ldr	r3, [fp, #-768]
	ldr	r2, [fp, #-800]
	cmp	r2, r3
	bge	.L174
	ldr	r3, [fp, #-800]
	str	r3, [fp, #-768]
	sub	r3, fp, #768
	str	r3, [fp, #-812]
.L174:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	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, #12
	add	r3, r1, r3
	ldr	r1, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	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, #12
	add	r3, r2, r3
	str	r1, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-808]
	cmp	r2, r3
	bge	.L176
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	str	r3, [fp, #-808]
.L176:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-816]
.L172:
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	bne	.L177
	ldr	r3, [fp, #-808]
	add	r0, r3, #1
	sub	r1, fp, #344
	ldr	r3, [fp, #-812]
	str	r3, [sp]
	mov	r3, #0
	mov	r2, #0
	bl	select
	str	r0, [fp, #-772]
	ldr	r0, .L213+92
	bl	time
	ldr	r3, .L213+96
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L210
	ldr	r3, [fp, #-772]
	cmp	r3, #0
	blt	.L211
	ldr	r3, .L213+84
	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, #12
	add	r3, r2, r3
	ldr	r2, [r3, #-332]
	ldr	r3, .L213+84
	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
	beq	.L181
	mvn	r3, #0
	str	r3, [fp, #-796]
	mvn	r3, #0
	str	r3, [fp, #-792]
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L182
	ldr	r3, .L213+84
	ldr	r3, [r3]
	sub	r2, fp, #828
	sub	r1, fp, #600
	mov	r0, r3
	bl	accept
	str	r0, [fp, #-796]
	b	.L183
.L182:
	ldr	r3, .L213+84
	ldr	r0, [r3]
	sub	r3, fp, #828
	str	r3, [sp, #4]
	sub	r3, fp, #600
	str	r3, [sp]
	mov	r3, #0
	ldr	r2, .L213+100
	ldr	r1, .L213+104
	bl	recvfrom
	str	r0, [fp, #-792]
	ldr	r3, [fp, #-792]
	cmp	r3, #0
	blt	.L184
	ldr	r3, .L213+88
	ldr	r3, [r3]
	str	r3, [fp, #-816]
	b	.L185
.L188:
	ldr	r3, [fp, #-816]
	ldr	r2, [r3, #4]
	ldr	r3, [fp, #-828]
	cmp	r2, r3
	bne	.L186
	ldr	r3, [fp, #-816]
	ldr	r1, [r3]
	ldr	r2, [fp, #-828]
	sub	r3, fp, #600
	mov	r0, r3
	bl	memcmp
	mov	r3, r0
	cmp	r3, #0
	beq	.L212
.L186:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-816]
.L185:
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	bne	.L188
	b	.L187
.L212:
	nop
.L187:
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	bne	.L183
	ldr	r3, .L213+84
	ldr	r3, [r3]
	str	r3, [fp, #-796]
	b	.L183
.L184:
	ldr	r3, .L213+28
	ldr	r4, [r3]
	bl	__errno_location
	mov	r3, r0
	ldr	r3, [r3]
	mov	r0, r3
	bl	strerror
	mov	r3, r0
	mov	r2, r3
	ldr	r1, .L213+108
	mov	r0, r4
	bl	fprintf
.L183:
	ldr	r3, [fp, #-796]
	cmp	r3, #0
	blt	.L189
	mov	r3, #1
	str	r3, [fp, #-824]
	ldr	r1, [fp, #-828]
	sub	r2, fp, #64
	sub	r0, fp, #600
	mov	r3, #3
	str	r3, [sp, #8]
	mov	r3, #12
	str	r3, [sp, #4]
	sub	r3, fp, #76
	str	r3, [sp]
	mov	r3, #46
	bl	getnameinfo
	sub	r2, fp, #76
	sub	r3, fp, #64
	mov	r1, r3
	ldr	r0, .L213+112
	bl	printf
	mov	r0, #32
	bl	malloc
	mov	r3, r0
	str	r3, [fp, #-816]
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	bne	.L190
	ldr	r0, .L213+116
	bl	error
.L190:
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L191
	sub	r3, fp, #824
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #10
	mov	r1, #1
	ldr	r0, [fp, #-796]
	bl	setsockopt
	ldr	r3, [fp, #-816]
	mov	r2, #0
	str	r2, [r3]
	ldr	r3, [fp, #-816]
	mov	r2, #0
	str	r2, [r3, #4]
	ldr	r3, [fp, #-816]
	mov	r2, #1
	str	r2, [r3, #20]
	b	.L192
.L191:
	ldr	r3, [fp, #-828]
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-816]
	str	r2, [r3]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L193
	ldr	r0, .L213+120
	bl	error
.L193:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3]
	ldr	r2, [fp, #-828]
	sub	r1, fp, #600
	mov	r0, r3
	bl	memcpy
	ldr	r2, [fp, #-828]
	ldr	r3, [fp, #-816]
	str	r2, [r3, #4]
	ldr	r3, [fp, #-816]
	mov	r2, #0
	str	r2, [r3, #20]
.L192:
	ldr	r3, [fp, #-816]
	ldr	r2, [fp, #-796]
	str	r2, [r3, #8]
	ldr	r3, .L213+92
	ldr	r2, [r3]
	ldr	r3, [fp, #-816]
	str	r2, [r3, #16]
	ldr	r3, .L213+124
	ldr	r3, [r3]
	lsl	r3, r3, #2
	mov	r0, r3
	bl	malloc
	mov	r3, r0
	mov	r2, r3
	ldr	r3, [fp, #-816]
	str	r2, [r3, #24]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #24]
	cmp	r3, #0
	bne	.L194
	ldr	r0, .L213+120
	bl	error
.L194:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #24]
	ldr	r2, .L213+128
	ldr	r1, [r2]
	ldr	r2, .L213+124
	ldr	r2, [r2]
	lsl	r2, r2, #2
	mov	r0, r3
	bl	memcpy
	mov	r3, #128
	str	r3, [fp, #-828]
	sub	r2, fp, #600
	sub	r3, fp, #828
	str	r3, [sp]
	mov	r3, r2
	mov	r2, #80
	mov	r1, #0
	ldr	r0, [fp, #-796]
	bl	getsockopt
	ldr	r1, [fp, #-828]
	sub	r2, fp, #64
	sub	r0, fp, #600
	mov	r3, #3
	str	r3, [sp, #8]
	mov	r3, #12
	str	r3, [sp, #4]
	sub	r3, fp, #76
	str	r3, [sp]
	mov	r3, #46
	bl	getnameinfo
	sub	r2, fp, #76
	sub	r3, fp, #64
	mov	r1, r3
	ldr	r0, .L213+132
	bl	printf
	sub	r3, fp, #12
	sub	r4, r3, #820
	sub	r4, r4, #2
	sub	r3, fp, #600
	mov	r0, r3
	bl	get_port
	mov	r3, r0
	strh	r3, [r4]	@ movhi
	sub	r3, fp, #472
	sub	r1, fp, #600
	mov	r2, #128
	mov	r0, r3
	bl	memcpy
	sub	r3, fp, #12
	sub	r3, r3, #824
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L195
	sub	r3, fp, #12
	sub	r3, r3, #820
	sub	r3, r3, #2
	sub	r2, fp, #12
	sub	r2, r2, #824
	ldrh	r2, [r2]	@ movhi
	strh	r2, [r3]	@ movhi
.L195:
	sub	r3, fp, #12
	sub	r3, r3, #716
	ldrh	r3, [r3]
	cmp	r3, #0
	beq	.L196
	sub	r3, fp, #472
	sub	r1, fp, #728
	mov	r2, #128
	mov	r0, r3
	bl	memcpy
.L196:
	sub	r3, fp, #600
	sub	r1, fp, #472
	mov	r2, #128
	mov	r0, r3
	bl	memcpy
	sub	r3, fp, #12
	sub	r3, r3, #820
	sub	r3, r3, #2
	ldrh	r2, [r3]
	sub	r3, fp, #600
	mov	r1, r2
	mov	r0, r3
	bl	set_port
	ldr	r1, [fp, #-828]
	sub	r2, fp, #64
	sub	r0, fp, #600
	mov	r3, #3
	str	r3, [sp, #8]
	mov	r3, #12
	str	r3, [sp, #4]
	sub	r3, fp, #76
	str	r3, [sp]
	mov	r3, #46
	bl	getnameinfo
	sub	r2, fp, #76
	sub	r3, fp, #64
	mov	r1, r3
	ldr	r0, .L213+136
	bl	printf
	sub	r3, fp, #12
	sub	r3, r3, #588
	ldrh	r3, [r3]
	mov	r0, r3
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L197
	mov	r3, #1
	b	.L198
.L197:
	mov	r3, #2
.L198:
	mov	r2, #0
	mov	r1, r3
	bl	socket
	mov	r2, r0
	ldr	r3, [fp, #-816]
	str	r2, [r3, #12]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	ldr	r2, [fp, #-828]
	sub	r1, fp, #600
	mov	r0, r3
	bl	connect
	mov	r3, r0
	cmp	r3, #0
	beq	.L199
	ldr	r0, .L213+140
	bl	puts
	ldr	r0, [fp, #-816]
	bl	freetracker
	mov	r3, #0
	str	r3, [fp, #-816]
	b	.L189
.L199:
	ldr	r3, [fp, #-816]
	ldr	r0, [r3, #12]
	sub	r3, fp, #824
	mov	r2, #4
	str	r2, [sp]
	mov	r2, #10
	mov	r1, #1
	bl	setsockopt
	ldr	r3, .L213+88
	ldr	r2, [r3]
	ldr	r3, [fp, #-816]
	str	r2, [r3, #28]
	ldr	r2, .L213+88
	ldr	r3, [fp, #-816]
	str	r3, [r2]
.L189:
	ldr	r3, [fp, #-792]
	cmp	r3, #0
	blt	.L181
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	beq	.L181
	ldr	r1, [fp, #-792]
	ldr	r0, [fp, #-816]
	bl	b2server_sed
.L181:
	ldr	r3, .L213+88
	ldr	r3, [r3]
	str	r3, [fp, #-816]
	ldr	r3, .L213+88
	str	r3, [fp, #-788]
	b	.L201
.L206:
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L202
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #8]
	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	.L202
	ldr	r0, [fp, #-816]
	bl	client2server_sed
.L202:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	add	r2, r3, #31
	cmp	r3, #0
	movlt	r3, r2
	movge	r3, r3
	asr	r3, r3, #5
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, [r3, #-332]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #12]
	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	.L203
	ldr	r0, [fp, #-816]
	bl	server2client_sed
.L203:
	ldr	r3, .L213+16
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L204
	ldr	r3, .L213+92
	ldr	r2, [r3]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #16]
	sub	r3, r2, r3
	cmp	r3, #29
	ble	.L204
	ldr	r3, [fp, #-816]
	mov	r2, #3
	str	r2, [r3, #20]
.L204:
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #20]
	cmp	r3, #1
	bls	.L205
	ldr	r3, [fp, #-816]
	ldr	r2, [r3, #28]
	ldr	r3, [fp, #-788]
	str	r2, [r3]
	ldr	r0, [fp, #-816]
	bl	freetracker
	ldr	r3, [fp, #-788]
	ldr	r3, [r3]
	str	r3, [fp, #-816]
	b	.L201
.L205:
	ldr	r3, [fp, #-816]
	add	r3, r3, #28
	str	r3, [fp, #-788]
	ldr	r3, [fp, #-816]
	ldr	r3, [r3, #28]
	str	r3, [fp, #-816]
.L201:
	ldr	r3, [fp, #-816]
	cmp	r3, #0
	bne	.L206
.L169:
	ldr	r3, .L213+96
	ldr	r3, [r3]
	cmp	r3, #0
	beq	.L208
	b	.L207
.L210:
	nop
	b	.L207
.L211:
	nop
.L207:
	bl	clean_socks
	mov	r0, #0
	bl	exit
.L214:
	.align	2
.L213:
	.word	.LC83
	.word	.LC67
	.word	stdout
	.word	family
	.word	tcp
	.word	rhost
	.word	rport
	.word	stderr
	.word	.LC55
	.word	.LC68
	.word	.LC69
	.word	.LC70
	.word	.LC71
	.word	.LC72
	.word	.LC73
	.word	lport
	.word	.LC44
	.word	.LC45
	.word	.LC74
	.word	sig_int
	.word	.LC75
	.word	lsock
	.word	connections
	.word	now
	.word	stop
	.word	100000
	.word	buf
	.word	.LC76
	.word	.LC77
	.word	.LC78
	.word	.LC79
	.word	rules
	.word	rule_live
	.word	.LC80
	.word	.LC81
	.word	.LC82
	.size	main, .-main
	.section	.rodata
	.align	2
.LC84:
	.ascii	"ipv4\000"
	.align	2
.LC85:
	.ascii	"ipv6\000"
	.align	2
.LC86:
	.ascii	"help\000"
	.align	2
.LC87:
	.ascii	"ipany\000"
	.data
	.align	2
	.type	long_options.7490, %object
	.size	long_options.7490, 80
long_options.7490:
	.word	.LC84
	.word	0
	.word	0
	.word	52
	.word	.LC85
	.word	0
	.word	0
	.word	54
	.word	.LC86
	.word	0
	.word	0
	.word	104
	.word	.LC87
	.word	0
	.word	family
	.word	0
	.word	0
	.word	0
	.word	0
	.word	0
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
