	.file	"45451563.c"
	.intel_syntax noprefix
	.text
	.globl	socketfd
	.bss
	.align 4
	.type	socketfd, @object
	.size	socketfd, 4
socketfd:
	.zero	4
	.globl	socket_info
	.align 16
	.type	socket_info, @object
	.size	socket_info, 16
socket_info:
	.zero	16
	.globl	ipv4_address
	.align 16
	.type	ipv4_address, @object
	.size	ipv4_address, 16
ipv4_address:
	.zero	16
	.globl	port
	.align 4
	.type	port, @object
	.size	port, 4
port:
	.zero	4
	.globl	is_connected
	.align 4
	.type	is_connected, @object
	.size	is_connected, 4
is_connected:
	.zero	4
	.globl	choice
	.align 4
	.type	choice, @object
	.size	choice, 4
choice:
	.zero	4
	.globl	thread_machine_no
	.align 8
	.type	thread_machine_no, @object
	.size	thread_machine_no, 8
thread_machine_no:
	.zero	8
	.section	.rodata
	.align 8
.LC0:
	.string	"--------------------------------------------------------------------------------\n"
	.align 8
.LC1:
	.string	"| Error:                Wrong IPv4 address. Please enter again.                |\n"
	.align 8
.LC2:
	.string	"--------------------------------------------------------------------------------\n\n"
	.text
	.globl	check_ipv4_address
	.type	check_ipv4_address, @function
check_ipv4_address:
.LFB6:
	.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, 88
	.cfi_offset 3, -24
	mov	QWORD PTR -88[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -60[rbp], -1
	mov	DWORD PTR -56[rbp], -1
	mov	DWORD PTR -52[rbp], -1
	mov	DWORD PTR -72[rbp], 0
	mov	DWORD PTR -68[rbp], 0
	jmp	.L2
.L7:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	cmp	al, 46
	jne	.L3
	cmp	DWORD PTR -72[rbp], 3
	jne	.L4
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	eax, 0
	jmp	.L22
.L4:
	mov	eax, DWORD PTR -72[rbp]
	cdqe
	mov	edx, DWORD PTR -68[rbp]
	mov	DWORD PTR -60[rbp+rax*4], edx
	add	DWORD PTR -72[rbp], 1
	jmp	.L6
.L3:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -68[rbp]
	movsx	rcx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rcx
	movzx	eax, BYTE PTR [rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L6
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	eax, 0
	jmp	.L22
.L6:
	add	DWORD PTR -68[rbp], 1
.L2:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rbx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L7
	mov	DWORD PTR -68[rbp], 0
	jmp	.L8
.L10:
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	mov	eax, DWORD PTR -60[rbp+rax*4]
	cmp	eax, -1
	jne	.L9
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	eax, 0
	jmp	.L22
.L9:
	add	DWORD PTR -68[rbp], 1
.L8:
	cmp	DWORD PTR -68[rbp], 2
	jle	.L10
	lea	rax, -48[rbp]
	mov	edx, 16
	mov	esi, 0
	mov	rdi, rax
	call	memset@PLT
	mov	eax, DWORD PTR -60[rbp]
	sub	eax, 1
	mov	DWORD PTR -64[rbp], eax
	mov	DWORD PTR -68[rbp], 0
	jmp	.L11
.L12:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ebx, -48[rax]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR .LC3[rip]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	call	pow@PLT
	cvttsd2si	eax, xmm0
	imul	ebx, eax
	mov	edx, ebx
	mov	eax, DWORD PTR -48[rbp]
	add	eax, edx
	mov	DWORD PTR -48[rbp], eax
	sub	DWORD PTR -64[rbp], 1
	add	DWORD PTR -68[rbp], 1
.L11:
	mov	eax, DWORD PTR -60[rbp]
	cmp	DWORD PTR -68[rbp], eax
	jl	.L12
	mov	eax, DWORD PTR -56[rbp]
	mov	edx, DWORD PTR -60[rbp]
	sub	eax, edx
	sub	eax, 2
	mov	DWORD PTR -64[rbp], eax
	mov	eax, DWORD PTR -60[rbp]
	add	eax, 1
	mov	DWORD PTR -68[rbp], eax
	jmp	.L13
.L14:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ebx, -48[rax]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR .LC3[rip]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	call	pow@PLT
	cvttsd2si	eax, xmm0
	imul	ebx, eax
	mov	edx, ebx
	mov	eax, DWORD PTR -44[rbp]
	add	eax, edx
	mov	DWORD PTR -44[rbp], eax
	sub	DWORD PTR -64[rbp], 1
	add	DWORD PTR -68[rbp], 1
.L13:
	mov	eax, DWORD PTR -56[rbp]
	cmp	DWORD PTR -68[rbp], eax
	jl	.L14
	mov	eax, DWORD PTR -52[rbp]
	mov	edx, DWORD PTR -56[rbp]
	sub	eax, edx
	sub	eax, 2
	mov	DWORD PTR -64[rbp], eax
	mov	eax, DWORD PTR -56[rbp]
	add	eax, 1
	mov	DWORD PTR -68[rbp], eax
	jmp	.L15
.L16:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ebx, -48[rax]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR .LC3[rip]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	call	pow@PLT
	cvttsd2si	eax, xmm0
	imul	ebx, eax
	mov	edx, ebx
	mov	eax, DWORD PTR -40[rbp]
	add	eax, edx
	mov	DWORD PTR -40[rbp], eax
	sub	DWORD PTR -64[rbp], 1
	add	DWORD PTR -68[rbp], 1
.L15:
	mov	eax, DWORD PTR -52[rbp]
	cmp	DWORD PTR -68[rbp], eax
	jl	.L16
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	strlen@PLT
	mov	edx, eax
	mov	eax, DWORD PTR -52[rbp]
	mov	ecx, eax
	mov	eax, edx
	sub	eax, ecx
	sub	eax, 2
	mov	DWORD PTR -64[rbp], eax
	mov	eax, DWORD PTR -52[rbp]
	add	eax, 1
	mov	DWORD PTR -68[rbp], eax
	jmp	.L17
.L18:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rdx, eax
	mov	rax, QWORD PTR -88[rbp]
	add	rax, rdx
	movzx	eax, BYTE PTR [rax]
	movsx	eax, al
	lea	ebx, -48[rax]
	pxor	xmm0, xmm0
	cvtsi2sd	xmm0, DWORD PTR -64[rbp]
	mov	rax, QWORD PTR .LC3[rip]
	movapd	xmm1, xmm0
	movq	xmm0, rax
	call	pow@PLT
	cvttsd2si	eax, xmm0
	imul	ebx, eax
	mov	edx, ebx
	mov	eax, DWORD PTR -36[rbp]
	add	eax, edx
	mov	DWORD PTR -36[rbp], eax
	sub	DWORD PTR -64[rbp], 1
	add	DWORD PTR -68[rbp], 1
.L17:
	mov	eax, DWORD PTR -68[rbp]
	movsx	rbx, eax
	mov	rax, QWORD PTR -88[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L18
	mov	DWORD PTR -68[rbp], 0
	jmp	.L19
.L21:
	mov	eax, DWORD PTR -68[rbp]
	cdqe
	mov	eax, DWORD PTR -48[rbp+rax*4]
	cmp	eax, 255
	jle	.L20
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC1[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	eax, 0
	jmp	.L22
.L20:
	add	DWORD PTR -68[rbp], 1
.L19:
	cmp	DWORD PTR -68[rbp], 3
	jle	.L21
	mov	eax, 1
.L22:
	mov	rsi, QWORD PTR -24[rbp]
	sub	rsi, QWORD PTR fs:40
	je	.L23
	call	__stack_chk_fail@PLT
.L23:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE6:
	.size	check_ipv4_address, .-check_ipv4_address
	.section	.rodata
.LC4:
	.string	"%8s"
	.align 8
.LC5:
	.string	"\n| Received message from %.2d: %s |\n"
.LC6:
	.string	"\n"
	.align 8
.LC7:
	.string	"| Error:                             Receive error.                            |\n"
	.text
	.globl	receive_messages
	.type	receive_messages, @function
receive_messages:
.LFB7:
	.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, 2136
	.cfi_offset 3, -24
	mov	QWORD PTR -2136[rbp], rdi
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	movabs	rax, 6872302069691866975
	mov	QWORD PTR -2116[rbp], rax
	mov	BYTE PTR -2108[rbp], 0
	movabs	rax, 2750105369607808126
	mov	QWORD PTR -2107[rbp], rax
	mov	BYTE PTR -2099[rbp], 0
	movabs	rax, 6872306403531710303
	mov	QWORD PTR -2098[rbp], rax
	mov	BYTE PTR -2090[rbp], 0
	movabs	rax, 2604864281621113379
	mov	QWORD PTR -2089[rbp], rax
	mov	BYTE PTR -2081[rbp], 0
	jmp	.L25
.L37:
	lea	rdx, -1056[rbp]
	lea	rax, -2080[rbp]
	lea	rsi, .LC4[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	lea	rdx, -2116[rbp]
	lea	rax, -1056[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcmp@PLT
	test	eax, eax
	jne	.L26
	mov	DWORD PTR -2128[rbp], 8
	jmp	.L27
.L28:
	mov	eax, DWORD PTR -2128[rbp]
	cdqe
	movzx	edx, BYTE PTR -2080[rbp+rax]
	mov	eax, DWORD PTR -2128[rbp]
	sub	eax, 8
	cdqe
	mov	BYTE PTR -1056[rbp+rax], dl
	add	DWORD PTR -2128[rbp], 1
.L27:
	mov	eax, DWORD PTR -2128[rbp]
	movsx	rbx, eax
	lea	rax, -2080[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L28
	mov	eax, DWORD PTR -2128[rbp]
	cdqe
	mov	BYTE PTR -1056[rbp+rax], 0
	mov	rdx, QWORD PTR stderr[rip]
	lea	rax, -1056[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fputs@PLT
	jmp	.L25
.L26:
	mov	DWORD PTR -2128[rbp], 18
	jmp	.L29
.L30:
	mov	eax, DWORD PTR -2128[rbp]
	cdqe
	movzx	edx, BYTE PTR -2080[rbp+rax]
	mov	eax, DWORD PTR -2128[rbp]
	sub	eax, 18
	cdqe
	mov	BYTE PTR -1056[rbp+rax], dl
	add	DWORD PTR -2128[rbp], 1
.L29:
	mov	eax, DWORD PTR -2128[rbp]
	movsx	rbx, eax
	lea	rax, -2080[rbp]
	mov	rdi, rax
	call	strlen@PLT
	sub	rax, 8
	cmp	rbx, rax
	jb	.L30
	mov	eax, DWORD PTR -2128[rbp]
	cdqe
	mov	BYTE PTR -1056[rbp+rax], 0
	movzx	eax, BYTE PTR -2072[rbp]
	cmp	al, 45
	jne	.L31
	movzx	eax, BYTE PTR -2071[rbp]
	cmp	al, 49
	jne	.L31
	mov	rdx, QWORD PTR stdout[rip]
	lea	rax, -1056[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	fputs@PLT
	jmp	.L25
.L31:
	movzx	eax, BYTE PTR -2072[rbp]
	movzx	eax, al
	lea	edx, -48[rax]
	mov	eax, edx
	sal	eax, 2
	add	eax, edx
	add	eax, eax
	mov	edx, eax
	movzx	eax, BYTE PTR -2071[rbp]
	movzx	eax, al
	sub	eax, 48
	add	eax, edx
	mov	DWORD PTR -2124[rbp], eax
	lea	rax, -1056[rbp]
	mov	rdi, rax
	call	strlen@PLT
	add	eax, 30
	mov	DWORD PTR -2120[rbp], eax
	mov	DWORD PTR -2128[rbp], 0
	jmp	.L33
.L34:
	mov	edi, 45
	call	putchar@PLT
	add	DWORD PTR -2128[rbp], 1
.L33:
	mov	eax, DWORD PTR -2128[rbp]
	cmp	eax, DWORD PTR -2120[rbp]
	jl	.L34
	mov	rax, QWORD PTR stdout[rip]
	lea	rcx, -1056[rbp]
	mov	edx, DWORD PTR -2124[rbp]
	lea	rsi, .LC5[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	DWORD PTR -2128[rbp], 0
	jmp	.L35
.L36:
	mov	edi, 45
	call	putchar@PLT
	add	DWORD PTR -2128[rbp], 1
.L35:
	mov	eax, DWORD PTR -2128[rbp]
	cmp	eax, DWORD PTR -2120[rbp]
	jl	.L36
	lea	rdi, .LC6[rip]
	call	puts@PLT
.L25:
	mov	eax, DWORD PTR socketfd[rip]
	lea	rsi, -2080[rbp]
	mov	ecx, 0
	mov	edx, 1024
	mov	edi, eax
	call	recv@PLT
	cmp	rax, -1
	jne	.L37
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC7[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	edi, 0
	call	pthread_exit@PLT
	.cfi_endproc
.LFE7:
	.size	receive_messages, .-receive_messages
	.section	.rodata
	.align 8
.LC8:
	.string	"--------------------------------------------------------------------------------"
	.align 8
.LC9:
	.string	"|                        Please input the IPv4 address:                        |"
.LC10:
	.string	"%16s"
	.align 8
.LC11:
	.string	"\n--------------------------------------------------------------------------------"
	.align 8
.LC12:
	.string	"|                            Please input the port:                            |"
	.align 8
.LC13:
	.string	"|                       Notice: The default port is 8888.                      |"
.LC14:
	.string	"%5s"
.LC15:
	.string	"char = %c\n"
	.align 8
.LC16:
	.string	"\n--------------------------------------------------------------------------------\n"
	.align 8
.LC17:
	.string	"| Error:                    Wrong port. Please input again.                    |\n"
	.align 8
.LC18:
	.string	"| Error:       Failed to create a socket. Exit the program with status 1.      |\n"
	.align 8
.LC19:
	.string	"| Info:                     Successfully create the socket.                    |\n"
	.align 8
.LC20:
	.string	"| Error:   Failed to connect. Please input IPv4 address and port from start.   |\n"
	.align 8
.LC21:
	.string	"| Error:      It has been failed %d times. Exit the program with status 1.     |\n"
	.align 8
.LC22:
	.string	"| Info:                          Connect successfully.                         |\n"
	.align 8
.LC23:
	.string	"| Error:     Failed to create child thread. Exit the program with status 1.    |\n"
	.text
	.globl	Connect
	.type	Connect, @function
Connect:
.LFB8:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	push	rbx
	sub	rsp, 40
	.cfi_offset 3, -24
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -24[rbp], rax
	xor	eax, eax
	mov	DWORD PTR -44[rbp], 0
.L42:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC9[rip]
	call	puts@PLT
	lea	rdi, .LC0[rip]
	call	puts@PLT
	lea	rsi, ipv4_address[rip]
	lea	rdi, .LC10[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	lea	rdi, ipv4_address[rip]
	call	check_ipv4_address
	cmp	eax, 1
	jne	.L42
.L41:
	lea	rdi, .LC11[rip]
	call	puts@PLT
	lea	rdi, .LC12[rip]
	call	puts@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC13[rip]
	call	puts@PLT
	lea	rdi, .LC0[rip]
	call	puts@PLT
	lea	rax, -30[rbp]
	mov	rsi, rax
	lea	rdi, .LC14[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	DWORD PTR -36[rbp], 1
	mov	DWORD PTR -40[rbp], 0
	jmp	.L43
.L46:
	call	__ctype_b_loc@PLT
	mov	rdx, QWORD PTR [rax]
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	movzx	eax, BYTE PTR -30[rbp+rax]
	movsx	rax, al
	add	rax, rax
	add	rax, rdx
	movzx	eax, WORD PTR [rax]
	movzx	eax, ax
	and	eax, 2048
	test	eax, eax
	jne	.L44
	mov	eax, DWORD PTR -40[rbp]
	cdqe
	movzx	eax, BYTE PTR -30[rbp+rax]
	movsx	eax, al
	mov	esi, eax
	lea	rdi, .LC15[rip]
	mov	eax, 0
	call	printf@PLT
	mov	DWORD PTR -36[rbp], 0
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC16[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC17[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L45
.L44:
	add	DWORD PTR -40[rbp], 1
.L43:
	mov	eax, DWORD PTR -40[rbp]
	movsx	rbx, eax
	lea	rax, -30[rbp]
	mov	rdi, rax
	call	strlen@PLT
	cmp	rbx, rax
	jb	.L46
.L45:
	cmp	DWORD PTR -36[rbp], 1
	jne	.L41
	lea	rax, -30[rbp]
	mov	rdi, rax
	call	atoi@PLT
	mov	DWORD PTR port[rip], eax
	mov	edx, 0
	mov	esi, 1
	mov	edi, 2
	call	socket@PLT
	mov	DWORD PTR socketfd[rip], eax
	mov	eax, DWORD PTR socketfd[rip]
	cmp	eax, -1
	je	.L48
	jmp	.L56
.L48:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC16[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC18[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L56:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC16[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC19[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	QWORD PTR socket_info[rip], 0
	mov	QWORD PTR socket_info[rip+8], 0
	mov	WORD PTR socket_info[rip], 2
	lea	rdi, ipv4_address[rip]
	call	inet_addr@PLT
	mov	DWORD PTR socket_info[rip+4], eax
	mov	eax, DWORD PTR port[rip]
	movzx	eax, ax
	mov	edi, eax
	call	htons@PLT
	mov	WORD PTR socket_info[rip+2], ax
	mov	eax, DWORD PTR socketfd[rip]
	mov	edx, 16
	lea	rsi, socket_info[rip]
	mov	edi, eax
	call	connect@PLT
	cmp	eax, -1
	jne	.L50
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC20[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	add	DWORD PTR -44[rbp], 1
	cmp	DWORD PTR -44[rbp], 9
	jg	.L51
	jmp	.L42
.L51:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	edx, 10
	lea	rsi, .LC21[rip]
	mov	rdi, rax
	mov	eax, 0
	call	fprintf@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L50:
	mov	DWORD PTR is_connected[rip], 1
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC22[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	ecx, 0
	lea	rdx, receive_messages[rip]
	mov	esi, 0
	lea	rdi, thread_machine_no[rip]
	call	pthread_create@PLT
	test	eax, eax
	je	.L57
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC23[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	mov	edi, 1
	call	exit@PLT
.L57:
	nop
	nop
	mov	rax, QWORD PTR -24[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L54
	call	__stack_chk_fail@PLT
.L54:
	mov	rbx, QWORD PTR -8[rbp]
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE8:
	.size	Connect, .-Connect
	.section	.rodata
	.align 8
.LC24:
	.string	"| Warning:                       There is no connection.                       |\n"
	.align 8
.LC25:
	.string	"| Error:                    Failed to terminate the thread.                    |\n"
	.align 8
.LC26:
	.string	"| Info:                   Successfully terminate the thread.                   |\n"
	.align 8
.LC27:
	.string	"| Error:                      Failed to close the socket.                      |\n"
	.align 8
.LC28:
	.string	"| Info:                     Successfully close the socket.                     |\n"
	.text
	.globl	Disconnect
	.type	Disconnect, @function
Disconnect:
.LFB9:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR is_connected[rip]
	test	eax, eax
	jne	.L59
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC24[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L58
.L59:
	mov	rax, QWORD PTR thread_machine_no[rip]
	mov	rdi, rax
	call	pthread_cancel@PLT
	test	eax, eax
	je	.L61
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC25[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L62
.L61:
	mov	rax, QWORD PTR thread_machine_no[rip]
	mov	esi, 0
	mov	rdi, rax
	call	pthread_join@PLT
	test	eax, eax
	jne	.L63
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC26[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L62
.L63:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC25[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
.L62:
	mov	eax, DWORD PTR socketfd[rip]
	mov	edi, eax
	call	close@PLT
	cmp	eax, -1
	jne	.L64
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC27[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L65
.L64:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC28[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
.L65:
	mov	DWORD PTR is_connected[rip], 0
	nop
.L58:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE9:
	.size	Disconnect, .-Disconnect
	.section	.rodata
	.align 8
.LC29:
	.string	"| Warning:            There is NO connection. Please connect first.            |\n"
.LC30:
	.string	"%s"
	.align 8
.LC31:
	.string	"|                   Please input the client you want to send:                  |"
.LC32:
	.string	"%d"
.LC33:
	.string	"%.2d"
	.align 8
.LC34:
	.string	"|                  Please input the message you want to send:                  |"
.LC35:
	.string	"%997s"
	.align 8
.LC36:
	.string	"| Error:                              Send error.                              |\n"
	.align 8
.LC37:
	.string	"| Info:                           Send successfully.                           |\n"
	.text
	.globl	SendMessages
	.type	SendMessages, @function
SendMessages:
.LFB10:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	sub	rsp, 2144
	mov	rax, QWORD PTR fs:40
	mov	QWORD PTR -8[rbp], rax
	xor	eax, eax
	movabs	rax, 6872285581381230431
	mov	QWORD PTR -2127[rbp], rax
	mov	BYTE PTR -2119[rbp], 0
	movabs	rax, 6872287754635730783
	mov	QWORD PTR -2118[rbp], rax
	mov	BYTE PTR -2110[rbp], 0
	movabs	rax, 6872287754501119839
	mov	QWORD PTR -2109[rbp], rax
	mov	BYTE PTR -2101[rbp], 0
	movabs	rax, 6872298719770402655
	mov	QWORD PTR -2100[rbp], rax
	mov	BYTE PTR -2092[rbp], 0
	movabs	rax, 6855682955866751009
	mov	QWORD PTR -2091[rbp], rax
	mov	BYTE PTR -2083[rbp], 0
	movabs	rax, 6872304273011793759
	mov	QWORD PTR -2082[rbp], rax
	mov	BYTE PTR -2074[rbp], 0
	movabs	rax, 3052956020505977951
	mov	QWORD PTR -2073[rbp], rax
	mov	BYTE PTR -2065[rbp], 0
	mov	eax, DWORD PTR is_connected[rip]
	test	eax, eax
	jne	.L68
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC29[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L67
.L68:
	mov	eax, DWORD PTR choice[rip]
	cmp	eax, 6
	ja	.L70
	mov	eax, eax
	lea	rdx, 0[0+rax*4]
	lea	rax, .L72[rip]
	mov	eax, DWORD PTR [rdx+rax]
	cdqe
	lea	rdx, .L72[rip]
	add	rax, rdx
	notrack jmp	rax
	.section	.rodata
	.align 4
	.align 4
.L72:
	.long	.L70-.L72
	.long	.L70-.L72
	.long	.L76-.L72
	.long	.L75-.L72
	.long	.L74-.L72
	.long	.L73-.L72
	.long	.L71-.L72
	.text
.L76:
	lea	rdx, -2064[rbp]
	lea	rax, -2127[rbp]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	jmp	.L70
.L75:
	lea	rdx, -2064[rbp]
	lea	rax, -2118[rbp]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	jmp	.L70
.L74:
	lea	rdx, -2064[rbp]
	lea	rax, -2109[rbp]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	jmp	.L70
.L73:
	lea	rdx, -2064[rbp]
	lea	rax, -2100[rbp]
	lea	rsi, .LC30[rip]
	mov	rdi, rax
	mov	eax, 0
	call	__isoc99_sscanf@PLT
	jmp	.L70
.L71:
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC31[rip]
	mov	eax, 0
	call	printf@PLT
	lea	rdi, .LC0[rip]
	call	puts@PLT
	lea	rax, -2132[rbp]
	mov	rsi, rax
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	lea	rdx, -2091[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	mov	edx, DWORD PTR -2132[rbp]
	lea	rax, -1040[rbp]
	lea	rsi, .LC33[rip]
	mov	rdi, rax
	mov	eax, 0
	call	sprintf@PLT
	lea	rdx, -1040[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC34[rip]
	call	puts@PLT
	lea	rdi, .LC0[rip]
	call	puts@PLT
	lea	rax, -1040[rbp]
	mov	rsi, rax
	lea	rdi, .LC35[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	lea	rdx, -2082[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	lea	rdx, -1040[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	lea	rdx, -2073[rbp]
	lea	rax, -2064[rbp]
	mov	rsi, rdx
	mov	rdi, rax
	call	strcat@PLT
	nop
.L70:
	lea	rax, -2064[rbp]
	mov	rdi, rax
	call	strlen@PLT
	lea	rdx, 1[rax]
	mov	eax, DWORD PTR socketfd[rip]
	lea	rsi, -2064[rbp]
	mov	ecx, 0
	mov	edi, eax
	call	send@PLT
	cmp	rax, -1
	jne	.L77
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC36[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L81
.L77:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC37[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
.L81:
	nop
.L67:
	mov	rax, QWORD PTR -8[rbp]
	sub	rax, QWORD PTR fs:40
	je	.L80
	call	__stack_chk_fail@PLT
.L80:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE10:
	.size	SendMessages, .-SendMessages
	.section	.rodata
	.align 8
.LC38:
	.string	"| Info:                           Quit successfully.                           |\n"
	.text
	.globl	Quit
	.type	Quit, @function
Quit:
.LFB11:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	eax, DWORD PTR is_connected[rip]
	cmp	eax, 1
	jne	.L83
	mov	rax, QWORD PTR thread_machine_no[rip]
	mov	rdi, rax
	call	pthread_cancel@PLT
	test	eax, eax
	je	.L84
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC25[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L85
.L84:
	mov	rax, QWORD PTR thread_machine_no[rip]
	mov	esi, 0
	mov	rdi, rax
	call	pthread_join@PLT
	test	eax, eax
	jne	.L86
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC26[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L85
.L86:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC25[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
.L85:
	mov	eax, DWORD PTR socketfd[rip]
	mov	edi, eax
	call	close@PLT
	cmp	eax, -1
	jne	.L87
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC27[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L82
.L87:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC28[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	jmp	.L82
.L83:
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC38[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stdout[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	nop
.L82:
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE11:
	.size	Quit, .-Quit
	.section	.rodata
	.align 8
.LC39:
	.string	"|                                     Menu                                     |"
	.align 8
.LC40:
	.string	"| Service <1>:                             Connect                             |"
	.align 8
.LC41:
	.string	"| Service <2>:                            Disconnect                           |"
	.align 8
.LC42:
	.string	"| Service <3>:                        Show current time                        |"
	.align 8
.LC43:
	.string	"| Service <4>:                      Show the server's name                     |"
	.align 8
.LC44:
	.string	"| Service <5>:              Show the Info of each connected client             |"
	.align 8
.LC45:
	.string	"| Service <6>:    Send messages (Must know the No. of the sent client first)   |"
	.align 8
.LC46:
	.string	"| Service <7>:                               Quit                              |"
	.align 8
.LC47:
	.string	"| Notice: You can <Quit> without <Disconnect> in advance.                      |"
	.align 8
.LC48:
	.string	"|             Please input one service (ONLY the number) each time:            |"
	.align 8
.LC49:
	.string	"| Error:      The service that you input is incorrect. Please input again.     |\n"
	.text
	.globl	UserInterface
	.type	UserInterface, @function
UserInterface:
.LFB12:
	.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 choice[rip], 0
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC39[rip]
	call	puts@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC40[rip]
	call	puts@PLT
	lea	rdi, .LC41[rip]
	call	puts@PLT
	lea	rdi, .LC42[rip]
	call	puts@PLT
	lea	rdi, .LC43[rip]
	call	puts@PLT
	lea	rdi, .LC44[rip]
	call	puts@PLT
	lea	rdi, .LC45[rip]
	call	puts@PLT
	lea	rdi, .LC46[rip]
	call	puts@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC47[rip]
	call	puts@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	mov	edi, 10
	call	putchar@PLT
	lea	rdi, .LC8[rip]
	call	puts@PLT
	lea	rdi, .LC48[rip]
	call	puts@PLT
	lea	rdi, .LC0[rip]
	call	puts@PLT
	jmp	.L91
.L97:
	lea	rsi, choice[rip]
	lea	rdi, .LC32[rip]
	mov	eax, 0
	call	__isoc99_scanf@PLT
	mov	edi, 10
	call	putchar@PLT
	mov	eax, DWORD PTR choice[rip]
	cmp	eax, 7
	je	.L92
	cmp	eax, 7
	jg	.L93
	cmp	eax, 6
	jg	.L93
	cmp	eax, 3
	jge	.L94
	cmp	eax, 1
	je	.L95
	cmp	eax, 2
	je	.L96
	jmp	.L93
.L95:
	mov	eax, 0
	call	Connect
	jmp	.L91
.L96:
	mov	eax, 0
	call	Disconnect
	call	SendMessages
	jmp	.L91
.L94:
	call	SendMessages
	jmp	.L91
.L92:
	mov	eax, 0
	call	Quit
	jmp	.L91
.L93:
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC0[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 81
	mov	esi, 1
	lea	rdi, .LC49[rip]
	call	fwrite@PLT
	mov	rax, QWORD PTR stderr[rip]
	mov	rcx, rax
	mov	edx, 82
	mov	esi, 1
	lea	rdi, .LC2[rip]
	call	fwrite@PLT
	nop
.L91:
	mov	eax, DWORD PTR choice[rip]
	cmp	eax, 7
	jne	.L97
	nop
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE12:
	.size	UserInterface, .-UserInterface
	.globl	main
	.type	main, @function
main:
.LFB13:
	.cfi_startproc
	endbr64
	push	rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	mov	rbp, rsp
	.cfi_def_cfa_register 6
	mov	DWORD PTR is_connected[rip], 0
	call	UserInterface
	mov	eax, 0
	pop	rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE13:
	.size	main, .-main
	.section	.rodata
	.align 8
.LC3:
	.long	0
	.long	1076101120
	.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	"45451563.c"
	.text
	.comm	socketfd,4,4
	.comm	socket_info,16,4
	.comm	ipv4_address,16,4
	.comm	port,4,4
	.comm	is_connected,4,4
	.comm	choice,4,4
	.comm	thread_machine_no,4,4
	.section	.rodata
	.align	2
.LC1:
	.ascii	"---------------------------------------------------"
	.ascii	"-----------------------------\012\000"
	.align	2
.LC2:
	.ascii	"| Error:                Wrong IPv4 address. Please "
	.ascii	"enter again.                |\012\000"
	.align	2
.LC3:
	.ascii	"---------------------------------------------------"
	.ascii	"-----------------------------\012\012\000"
	.global	__aeabi_i2d
	.global	__aeabi_d2iz
	.align	2
.LC0:
	.word	-1
	.word	-1
	.word	-1
	.align	2
.LC4:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	check_ipv4_address
	.syntax unified
	.arm
	.fpu softvfp
	.type	check_ipv4_address, %function
check_ipv4_address:
	@ args = 0, pretend = 0, frame = 56
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #60
	str	r0, [fp, #-64]
	ldr	r3, .L24
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r2, .L24+4
	sub	r3, fp, #44
	ldm	r2, {r0, r1, r2}
	stm	r3, {r0, r1, r2}
	mov	r3, #0
	str	r3, [fp, #-56]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L2
.L7:
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	cmp	r3, #46
	bne	.L3
	ldr	r3, [fp, #-56]
	cmp	r3, #3
	bne	.L4
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+12
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+16
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L24+20
	bl	fwrite
	mov	r3, #0
	b	.L22
.L4:
	ldr	r3, [fp, #-56]
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r2, [fp, #-52]
	str	r2, [r3, #-32]
	ldr	r3, [fp, #-56]
	add	r3, r3, #1
	str	r3, [fp, #-56]
	b	.L6
.L3:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	ldr	r3, [fp, #-52]
	ldr	r1, [fp, #-64]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L6
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+12
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+16
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L24+20
	bl	fwrite
	mov	r3, #0
	b	.L22
.L6:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L2:
	ldr	r0, [fp, #-64]
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	bhi	.L7
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L8
.L10:
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r3, [r3, #-32]
	cmn	r3, #1
	bne	.L9
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+12
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+16
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L24+20
	bl	fwrite
	mov	r3, #0
	b	.L22
.L9:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L8:
	ldr	r3, [fp, #-52]
	cmp	r3, #2
	ble	.L10
	sub	r3, fp, #32
	mov	r2, #16
	mov	r1, #0
	mov	r0, r3
	bl	memset
	ldr	r3, [fp, #-44]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L11
.L12:
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r4, r3, #48
	ldr	r0, [fp, #-48]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	ldr	r1, .L24+24
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2iz
	mov	r3, r0
	mul	r2, r3, r4
	ldr	r3, [fp, #-32]
	add	r3, r2, r3
	str	r3, [fp, #-32]
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L11:
	ldr	r3, [fp, #-44]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	blt	.L12
	ldr	r2, [fp, #-40]
	ldr	r3, [fp, #-44]
	sub	r3, r2, r3
	sub	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-44]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	b	.L13
.L14:
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r4, r3, #48
	ldr	r0, [fp, #-48]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	ldr	r1, .L24+24
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2iz
	mov	r3, r0
	mul	r2, r3, r4
	ldr	r3, [fp, #-28]
	add	r3, r2, r3
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L13:
	ldr	r3, [fp, #-40]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	blt	.L14
	ldr	r2, [fp, #-36]
	ldr	r3, [fp, #-40]
	sub	r3, r2, r3
	sub	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-40]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	b	.L15
.L16:
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r4, r3, #48
	ldr	r0, [fp, #-48]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	ldr	r1, .L24+24
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2iz
	mov	r3, r0
	mul	r2, r3, r4
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	str	r3, [fp, #-24]
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L15:
	ldr	r3, [fp, #-36]
	ldr	r2, [fp, #-52]
	cmp	r2, r3
	blt	.L16
	ldr	r0, [fp, #-64]
	bl	strlen
	mov	r3, r0
	ldr	r2, [fp, #-36]
	sub	r3, r3, r2
	sub	r3, r3, #2
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-36]
	add	r3, r3, #1
	str	r3, [fp, #-52]
	b	.L17
.L18:
	ldr	r3, [fp, #-52]
	ldr	r2, [fp, #-64]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	sub	r4, r3, #48
	ldr	r0, [fp, #-48]
	bl	__aeabi_i2d
	mov	r2, r0
	mov	r3, r1
	mov	r0, #0
	ldr	r1, .L24+24
	bl	pow
	mov	r2, r0
	mov	r3, r1
	mov	r0, r2
	mov	r1, r3
	bl	__aeabi_d2iz
	mov	r3, r0
	mul	r2, r3, r4
	ldr	r3, [fp, #-20]
	add	r3, r2, r3
	str	r3, [fp, #-20]
	ldr	r3, [fp, #-48]
	sub	r3, r3, #1
	str	r3, [fp, #-48]
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L17:
	ldr	r0, [fp, #-64]
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-52]
	cmp	r2, r3
	bhi	.L18
	mov	r3, #0
	str	r3, [fp, #-52]
	b	.L19
.L21:
	ldr	r3, [fp, #-52]
	lsl	r3, r3, #2
	sub	r2, fp, #12
	add	r3, r2, r3
	ldr	r3, [r3, #-20]
	cmp	r3, #255
	ble	.L20
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+12
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L24+16
	bl	fwrite
	ldr	r3, .L24+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L24+20
	bl	fwrite
	mov	r3, #0
	b	.L22
.L20:
	ldr	r3, [fp, #-52]
	add	r3, r3, #1
	str	r3, [fp, #-52]
.L19:
	ldr	r3, [fp, #-52]
	cmp	r3, #3
	ble	.L21
	mov	r3, #1
.L22:
	ldr	r2, .L24
	ldr	r1, [r2]
	ldr	r2, [fp, #-16]
	eors	r1, r2, r1
	mov	r2, #0
	beq	.L23
	bl	__stack_chk_fail
.L23:
	mov	r0, r3
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L25:
	.align	2
.L24:
	.word	.LC4
	.word	.LC0
	.word	stderr
	.word	.LC1
	.word	.LC2
	.word	.LC3
	.word	1076101120
	.size	check_ipv4_address, .-check_ipv4_address
	.section	.rodata
	.align	2
.LC9:
	.ascii	"%8s\000"
	.align	2
.LC10:
	.ascii	"\012| Received message from %.2d: %s |\012\000"
	.align	2
.LC11:
	.ascii	"\012\000"
	.align	2
.LC12:
	.ascii	"| Error:                             Receive error."
	.ascii	"                            |\012\000"
	.align	2
.LC5:
	.ascii	"__*ERR__\000"
	.align	2
.LC6:
	.ascii	"~$^RCV*&\000"
	.align	2
.LC7:
	.ascii	"__&RCV__\000"
	.align	2
.LC8:
	.ascii	"#*!RCV&$\000"
	.align	2
.LC13:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	receive_messages
	.syntax unified
	.arm
	.fpu softvfp
	.type	receive_messages, %function
receive_messages:
	@ args = 0, pretend = 0, frame = 2120
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #2112
	sub	sp, sp, #8
	str	r0, [fp, #-2120]
	ldr	r3, .L41
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	ldr	r2, .L41+4
	sub	r3, fp, #2096
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L41+8
	sub	r3, fp, #2080
	sub	r3, r3, #4
	sub	r3, r3, #8
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L41+12
	sub	r3, fp, #2064
	sub	r3, r3, #4
	sub	r3, r3, #12
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L41+16
	sub	r3, fp, #2064
	sub	r3, r3, #4
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	b	.L27
.L39:
	sub	r2, fp, #1024
	sub	r2, r2, #4
	sub	r2, r2, #4
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, .L41+20
	mov	r0, r3
	bl	__isoc99_sscanf
	sub	r2, fp, #2096
	sub	r2, r2, #4
	sub	r2, r2, #4
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcmp
	mov	r3, r0
	cmp	r3, #0
	bne	.L28
	mov	r3, #8
	str	r3, [fp, #-2116]
	b	.L29
.L30:
	ldr	r3, [fp, #-2116]
	sub	r2, r3, #8
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, [fp, #-2116]
	add	r3, r3, r1
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r3, fp, #4
	add	r3, r3, r2
	mov	r2, r1
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-2116]
	add	r3, r3, #1
	str	r3, [fp, #-2116]
.L29:
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-2116]
	cmp	r2, r3
	bhi	.L30
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [fp, #-2116]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	ldr	r3, .L41+24
	ldr	r2, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	fputs
	b	.L27
.L28:
	mov	r3, #18
	str	r3, [fp, #-2116]
	b	.L31
.L32:
	ldr	r3, [fp, #-2116]
	sub	r2, r3, #18
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r1, [fp, #-2116]
	add	r3, r3, r1
	ldrb	r1, [r3]	@ zero_extendqisi2
	sub	r3, fp, #4
	add	r3, r3, r2
	mov	r2, r1
	strb	r2, [r3, #-1028]
	ldr	r3, [fp, #-2116]
	add	r3, r3, #1
	str	r3, [fp, #-2116]
.L31:
	sub	r3, fp, #2048
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	sub	r2, r3, #8
	ldr	r3, [fp, #-2116]
	cmp	r2, r3
	bhi	.L32
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [fp, #-2116]
	add	r3, r3, r2
	mov	r2, #0
	strb	r2, [r3]
	ldrb	r3, [fp, #-2048]	@ zero_extendqisi2
	cmp	r3, #45
	bne	.L33
	ldrb	r3, [fp, #-2047]	@ zero_extendqisi2
	cmp	r3, #49
	bne	.L33
	ldr	r3, .L41+28
	ldr	r2, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	fputs
	b	.L27
.L33:
	ldrb	r3, [fp, #-2048]	@ zero_extendqisi2
	sub	r2, r3, #48
	mov	r3, r2
	lsl	r3, r3, #2
	add	r3, r3, r2
	lsl	r3, r3, #1
	mov	r2, r3
	ldrb	r3, [fp, #-2047]	@ zero_extendqisi2
	sub	r3, r3, #48
	add	r3, r2, r3
	str	r3, [fp, #-2112]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r3, r3, #30
	str	r3, [fp, #-2108]
	mov	r3, #0
	str	r3, [fp, #-2116]
	b	.L35
.L36:
	mov	r0, #45
	bl	putchar
	ldr	r3, [fp, #-2116]
	add	r3, r3, #1
	str	r3, [fp, #-2116]
.L35:
	ldr	r2, [fp, #-2116]
	ldr	r3, [fp, #-2108]
	cmp	r2, r3
	blt	.L36
	ldr	r3, .L41+28
	ldr	r0, [r3]
	sub	r3, fp, #1024
	sub	r3, r3, #4
	sub	r3, r3, #4
	ldr	r2, [fp, #-2112]
	ldr	r1, .L41+32
	bl	fprintf
	mov	r3, #0
	str	r3, [fp, #-2116]
	b	.L37
.L38:
	mov	r0, #45
	bl	putchar
	ldr	r3, [fp, #-2116]
	add	r3, r3, #1
	str	r3, [fp, #-2116]
.L37:
	ldr	r2, [fp, #-2116]
	ldr	r3, [fp, #-2108]
	cmp	r2, r3
	blt	.L38
	ldr	r0, .L41+36
	bl	puts
.L27:
	ldr	r3, .L41+40
	ldr	r0, [r3]
	sub	r1, fp, #2048
	sub	r1, r1, #4
	sub	r1, r1, #4
	mov	r3, #0
	mov	r2, #1024
	bl	recv
	mov	r3, r0
	cmn	r3, #1
	bne	.L39
	ldr	r3, .L41+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L41+44
	bl	fwrite
	ldr	r3, .L41+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L41+48
	bl	fwrite
	ldr	r3, .L41+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L41+52
	bl	fwrite
	mov	r0, #0
	bl	pthread_exit
.L42:
	.align	2
.L41:
	.word	.LC13
	.word	.LC5
	.word	.LC6
	.word	.LC7
	.word	.LC8
	.word	.LC9
	.word	stderr
	.word	stdout
	.word	.LC10
	.word	.LC11
	.word	socketfd
	.word	.LC1
	.word	.LC12
	.word	.LC3
	.size	receive_messages, .-receive_messages
	.section	.rodata
	.align	2
.LC14:
	.ascii	"---------------------------------------------------"
	.ascii	"-----------------------------\000"
	.align	2
.LC15:
	.ascii	"|                        Please input the IPv4 addr"
	.ascii	"ess:                        |\000"
	.align	2
.LC16:
	.ascii	"%16s\000"
	.align	2
.LC17:
	.ascii	"\012-----------------------------------------------"
	.ascii	"---------------------------------\000"
	.align	2
.LC18:
	.ascii	"|                            Please input the port:"
	.ascii	"                            |\000"
	.align	2
.LC19:
	.ascii	"|                       Notice: The default port is"
	.ascii	" 8888.                      |\000"
	.align	2
.LC20:
	.ascii	"%5s\000"
	.align	2
.LC21:
	.ascii	"char = %c\012\000"
	.align	2
.LC22:
	.ascii	"\012-----------------------------------------------"
	.ascii	"---------------------------------\012\000"
	.align	2
.LC23:
	.ascii	"| Error:                    Wrong port. Please inpu"
	.ascii	"t again.                    |\012\000"
	.align	2
.LC24:
	.ascii	"| Error:       Failed to create a socket. Exit the "
	.ascii	"program with status 1.      |\012\000"
	.align	2
.LC25:
	.ascii	"| Info:                     Successfully create the"
	.ascii	" socket.                    |\012\000"
	.align	2
.LC26:
	.ascii	"| Error:   Failed to connect. Please input IPv4 add"
	.ascii	"ress and port from start.   |\012\000"
	.align	2
.LC27:
	.ascii	"| Error:      It has been failed %d times. Exit the"
	.ascii	" program with status 1.     |\012\000"
	.align	2
.LC28:
	.ascii	"| Info:                          Connect successful"
	.ascii	"ly.                         |\012\000"
	.align	2
.LC29:
	.ascii	"| Error:     Failed to create child thread. Exit th"
	.ascii	"e program with status 1.    |\012\000"
	.align	2
.LC30:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	Connect
	.syntax unified
	.arm
	.fpu softvfp
	.type	Connect, %function
Connect:
	@ args = 0, pretend = 0, frame = 24
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	sub	sp, sp, #24
	ldr	r3, .L62
	ldr	r3, [r3]
	str	r3, [fp, #-8]
	mov	r3,#0
	mov	r3, #0
	str	r3, [fp, #-28]
.L46:
	ldr	r0, .L62+4
	bl	puts
	ldr	r0, .L62+8
	bl	puts
	ldr	r0, .L62+12
	bl	puts
	ldr	r1, .L62+16
	ldr	r0, .L62+20
	bl	__isoc99_scanf
	ldr	r0, .L62+16
	bl	check_ipv4_address
	mov	r3, r0
	cmp	r3, #1
	bne	.L46
.L45:
	ldr	r0, .L62+24
	bl	puts
	ldr	r0, .L62+28
	bl	puts
	ldr	r0, .L62+4
	bl	puts
	ldr	r0, .L62+32
	bl	puts
	ldr	r0, .L62+12
	bl	puts
	sub	r3, fp, #16
	mov	r1, r3
	ldr	r0, .L62+36
	bl	__isoc99_scanf
	mov	r3, #1
	str	r3, [fp, #-20]
	mov	r3, #0
	str	r3, [fp, #-24]
	b	.L47
.L50:
	bl	__ctype_b_loc
	mov	r3, r0
	ldr	r2, [r3]
	sub	r1, fp, #16
	ldr	r3, [fp, #-24]
	add	r3, r1, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	lsl	r3, r3, #1
	add	r3, r2, r3
	ldrh	r3, [r3]
	and	r3, r3, #2048
	cmp	r3, #0
	bne	.L48
	sub	r2, fp, #16
	ldr	r3, [fp, #-24]
	add	r3, r2, r3
	ldrb	r3, [r3]	@ zero_extendqisi2
	mov	r1, r3
	ldr	r0, .L62+40
	bl	printf
	mov	r3, #0
	str	r3, [fp, #-20]
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+48
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+52
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	b	.L49
.L48:
	ldr	r3, [fp, #-24]
	add	r3, r3, #1
	str	r3, [fp, #-24]
.L47:
	sub	r3, fp, #16
	mov	r0, r3
	bl	strlen
	mov	r2, r0
	ldr	r3, [fp, #-24]
	cmp	r2, r3
	bhi	.L50
.L49:
	ldr	r3, [fp, #-20]
	cmp	r3, #1
	bne	.L45
	sub	r3, fp, #16
	mov	r0, r3
	bl	atoi
	mov	r3, r0
	ldr	r2, .L62+60
	str	r3, [r2]
	mov	r2, #0
	mov	r1, #1
	mov	r0, #2
	bl	socket
	mov	r3, r0
	ldr	r2, .L62+64
	str	r3, [r2]
	ldr	r3, .L62+64
	ldr	r3, [r3]
	cmn	r3, #1
	beq	.L52
	b	.L60
.L52:
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+48
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+68
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	mov	r0, #1
	bl	exit
.L60:
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+48
	bl	fwrite
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+76
	bl	fwrite
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	ldr	r3, .L62+80
	mov	r2, r3
	mov	r3, #0
	str	r3, [r2]
	str	r3, [r2, #4]
	str	r3, [r2, #8]
	str	r3, [r2, #12]
	ldr	r3, .L62+80
	mov	r2, #2
	strh	r2, [r3]	@ movhi
	ldr	r0, .L62+16
	bl	inet_addr
	mov	r3, r0
	ldr	r2, .L62+80
	str	r3, [r2, #4]
	ldr	r3, .L62+60
	ldr	r3, [r3]
	lsl	r3, r3, #16
	lsr	r3, r3, #16
	mov	r0, r3
	bl	htons
	mov	r3, r0
	mov	r2, r3
	ldr	r3, .L62+80
	strh	r2, [r3, #2]	@ movhi
	ldr	r3, .L62+64
	ldr	r3, [r3]
	mov	r2, #16
	ldr	r1, .L62+80
	mov	r0, r3
	bl	connect
	mov	r3, r0
	cmn	r3, #1
	bne	.L54
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+12
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+84
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	ldr	r3, [fp, #-28]
	add	r3, r3, #1
	str	r3, [fp, #-28]
	ldr	r3, [fp, #-28]
	cmp	r3, #9
	bgt	.L55
	b	.L46
.L55:
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+12
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #10
	ldr	r1, .L62+88
	mov	r0, r3
	bl	fprintf
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	mov	r0, #1
	bl	exit
.L54:
	ldr	r3, .L62+92
	mov	r2, #1
	str	r2, [r3]
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+12
	bl	fwrite
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+96
	bl	fwrite
	ldr	r3, .L62+72
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	mov	r3, #0
	ldr	r2, .L62+100
	mov	r1, #0
	ldr	r0, .L62+104
	bl	pthread_create
	mov	r3, r0
	cmp	r3, #0
	beq	.L61
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+12
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L62+108
	bl	fwrite
	ldr	r3, .L62+44
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L62+56
	bl	fwrite
	mov	r0, #1
	bl	exit
.L61:
	nop
	nop
	ldr	r3, .L62
	ldr	r2, [r3]
	ldr	r3, [fp, #-8]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L58
	bl	__stack_chk_fail
.L58:
	sub	sp, fp, #4
	@ sp needed
	pop	{fp, pc}
.L63:
	.align	2
.L62:
	.word	.LC30
	.word	.LC14
	.word	.LC15
	.word	.LC1
	.word	ipv4_address
	.word	.LC16
	.word	.LC17
	.word	.LC18
	.word	.LC19
	.word	.LC20
	.word	.LC21
	.word	stderr
	.word	.LC22
	.word	.LC23
	.word	.LC3
	.word	port
	.word	socketfd
	.word	.LC24
	.word	stdout
	.word	.LC25
	.word	socket_info
	.word	.LC26
	.word	.LC27
	.word	is_connected
	.word	.LC28
	.word	receive_messages
	.word	thread_machine_no
	.word	.LC29
	.size	Connect, .-Connect
	.section	.rodata
	.align	2
.LC31:
	.ascii	"| Warning:                       There is no connec"
	.ascii	"tion.                       |\012\000"
	.align	2
.LC32:
	.ascii	"| Error:                    Failed to terminate the"
	.ascii	" thread.                    |\012\000"
	.align	2
.LC33:
	.ascii	"| Info:                   Successfully terminate th"
	.ascii	"e thread.                   |\012\000"
	.align	2
.LC34:
	.ascii	"| Error:                      Failed to close the s"
	.ascii	"ocket.                      |\012\000"
	.align	2
.LC35:
	.ascii	"| Info:                     Successfully close the "
	.ascii	"socket.                     |\012\000"
	.text
	.align	2
	.global	Disconnect
	.syntax unified
	.arm
	.fpu softvfp
	.type	Disconnect, %function
Disconnect:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L73
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L65
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+12
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
	pop	{fp, pc}
.L65:
	ldr	r3, .L73+20
	ldr	r3, [r3]
	mov	r0, r3
	bl	pthread_cancel
	mov	r3, r0
	cmp	r3, #0
	beq	.L67
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+28
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
	b	.L68
.L67:
	ldr	r3, .L73+20
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	pthread_join
	mov	r3, r0
	cmp	r3, #0
	bne	.L69
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+32
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
	b	.L68
.L69:
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+28
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
.L68:
	ldr	r3, .L73+36
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	mov	r3, r0
	cmn	r3, #1
	bne	.L70
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+40
	bl	fwrite
	ldr	r3, .L73+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
	b	.L71
.L70:
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+8
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L73+44
	bl	fwrite
	ldr	r3, .L73+4
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L73+16
	bl	fwrite
.L71:
	ldr	r3, .L73
	mov	r2, #0
	str	r2, [r3]
	nop
	pop	{fp, pc}
.L74:
	.align	2
.L73:
	.word	is_connected
	.word	stdout
	.word	.LC1
	.word	.LC31
	.word	.LC3
	.word	thread_machine_no
	.word	stderr
	.word	.LC32
	.word	.LC33
	.word	socketfd
	.word	.LC34
	.word	.LC35
	.size	Disconnect, .-Disconnect
	.section	.rodata
	.align	2
.LC43:
	.ascii	"| Warning:            There is NO connection. Pleas"
	.ascii	"e connect first.            |\012\000"
	.align	2
.LC44:
	.ascii	"%s\000"
	.align	2
.LC45:
	.ascii	"|                   Please input the client you wan"
	.ascii	"t to send:                  |\000"
	.align	2
.LC46:
	.ascii	"%d\000"
	.align	2
.LC47:
	.ascii	"%.2d\000"
	.align	2
.LC48:
	.ascii	"|                  Please input the message you wan"
	.ascii	"t to send:                  |\000"
	.align	2
.LC49:
	.ascii	"%997s\000"
	.align	2
.LC50:
	.ascii	"| Error:                              Send error.  "
	.ascii	"                            |\012\000"
	.align	2
.LC51:
	.ascii	"| Info:                           Send successfully"
	.ascii	".                           |\012\000"
	.align	2
.LC36:
	.ascii	"__DISC__\000"
	.align	2
.LC37:
	.ascii	"__TIME__\000"
	.align	2
.LC38:
	.ascii	"__NAME__\000"
	.align	2
.LC39:
	.ascii	"__INFO__\000"
	.align	2
.LC40:
	.ascii	"!@#MSG$_\000"
	.align	2
.LC41:
	.ascii	"__DEST__\000"
	.align	2
.LC42:
	.ascii	"_$&MSG^*\000"
	.align	2
.LC52:
	.word	__stack_chk_guard
	.text
	.align	2
	.global	SendMessages
	.syntax unified
	.arm
	.fpu softvfp
	.type	SendMessages, %function
SendMessages:
	@ args = 0, pretend = 0, frame = 2144
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{r4, fp, lr}
	add	fp, sp, #8
	sub	sp, sp, #2144
	sub	sp, sp, #4
	ldr	r3, .L90
	ldr	r3, [r3]
	str	r3, [fp, #-16]
	mov	r3,#0
	ldr	r2, .L90+4
	sub	r3, fp, #2128
	sub	r3, r3, #12
	sub	r3, r3, #8
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+8
	sub	r3, fp, #2112
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+12
	sub	r3, fp, #2112
	sub	r3, r3, #12
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+16
	sub	r3, fp, #2096
	sub	r3, r3, #12
	sub	r3, r3, #4
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+20
	sub	r3, fp, #2080
	sub	r3, r3, #12
	sub	r3, r3, #8
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+24
	sub	r3, fp, #2064
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r2, .L90+28
	sub	r3, fp, #2064
	sub	r3, r3, #12
	ldm	r2, {r0, r1, r2}
	stmia	r3!, {r0, r1}
	strb	r2, [r3]
	ldr	r3, .L90+32
	ldr	r3, [r3]
	cmp	r3, #0
	bne	.L76
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+40
	bl	fwrite
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+44
	bl	fwrite
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L90+48
	bl	fwrite
	b	.L75
.L76:
	ldr	r3, .L90+52
	ldr	r3, [r3]
	sub	r3, r3, #2
	cmp	r3, #4
	ldrls	pc, [pc, r3, asl #2]
	b	.L78
.L80:
	.word	.L84
	.word	.L83
	.word	.L82
	.word	.L81
	.word	.L79
.L84:
	sub	r2, fp, #2048
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #2128
	sub	r3, r3, #12
	sub	r3, r3, #8
	ldr	r1, .L90+56
	mov	r0, r3
	bl	__isoc99_sscanf
	b	.L78
.L83:
	sub	r2, fp, #2048
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #2112
	sub	r3, r3, #12
	sub	r3, r3, #12
	ldr	r1, .L90+56
	mov	r0, r3
	bl	__isoc99_sscanf
	b	.L78
.L82:
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	sub	r0, fp, #2112
	sub	r0, r0, #12
	mov	r2, r3
	ldr	r1, .L90+56
	bl	__isoc99_sscanf
	b	.L78
.L81:
	sub	r2, fp, #2048
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #2096
	sub	r3, r3, #12
	sub	r3, r3, #4
	ldr	r1, .L90+56
	mov	r0, r3
	bl	__isoc99_sscanf
	b	.L78
.L79:
	ldr	r0, .L90+60
	bl	puts
	ldr	r0, .L90+64
	bl	printf
	ldr	r0, .L90+40
	bl	puts
	sub	r3, fp, #2128
	sub	r3, r3, #12
	sub	r3, r3, #12
	mov	r1, r3
	ldr	r0, .L90+68
	bl	__isoc99_scanf
	sub	r2, fp, #2080
	sub	r2, r2, #12
	sub	r2, r2, #8
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	ldr	r2, [fp, #-2152]
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	ldr	r1, .L90+72
	mov	r0, r3
	bl	sprintf
	sub	r2, fp, #1024
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	ldr	r0, .L90+60
	bl	puts
	ldr	r0, .L90+76
	bl	puts
	ldr	r0, .L90+40
	bl	puts
	sub	r3, fp, #1024
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r3
	ldr	r0, .L90+80
	bl	__isoc99_scanf
	sub	r2, fp, #2064
	sub	r2, r2, #12
	sub	r2, r2, #12
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	sub	r2, fp, #1024
	sub	r2, r2, #12
	sub	r2, r2, #4
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	sub	r2, fp, #2064
	sub	r2, r2, #12
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r1, r2
	mov	r0, r3
	bl	strcat
	nop
.L78:
	ldr	r3, .L90+84
	ldr	r4, [r3]
	sub	r3, fp, #2048
	sub	r3, r3, #12
	sub	r3, r3, #4
	mov	r0, r3
	bl	strlen
	mov	r3, r0
	add	r2, r3, #1
	sub	r1, fp, #2048
	sub	r1, r1, #12
	sub	r1, r1, #4
	mov	r3, #0
	mov	r0, r4
	bl	send
	mov	r3, r0
	cmn	r3, #1
	bne	.L85
	ldr	r3, .L90+88
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+40
	bl	fwrite
	ldr	r3, .L90+88
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+92
	bl	fwrite
	ldr	r3, .L90+88
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L90+48
	bl	fwrite
	b	.L89
.L85:
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+40
	bl	fwrite
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L90+96
	bl	fwrite
	ldr	r3, .L90+36
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L90+48
	bl	fwrite
.L89:
	nop
.L75:
	ldr	r3, .L90
	ldr	r2, [r3]
	ldr	r3, [fp, #-16]
	eors	r2, r3, r2
	mov	r3, #0
	beq	.L88
	bl	__stack_chk_fail
.L88:
	sub	sp, fp, #8
	@ sp needed
	pop	{r4, fp, pc}
.L91:
	.align	2
.L90:
	.word	.LC52
	.word	.LC36
	.word	.LC37
	.word	.LC38
	.word	.LC39
	.word	.LC40
	.word	.LC41
	.word	.LC42
	.word	is_connected
	.word	stdout
	.word	.LC1
	.word	.LC43
	.word	.LC3
	.word	choice
	.word	.LC44
	.word	.LC14
	.word	.LC45
	.word	.LC46
	.word	.LC47
	.word	.LC48
	.word	.LC49
	.word	socketfd
	.word	stderr
	.word	.LC50
	.word	.LC51
	.size	SendMessages, .-SendMessages
	.section	.rodata
	.align	2
.LC53:
	.ascii	"| Info:                           Quit successfully"
	.ascii	".                           |\012\000"
	.text
	.align	2
	.global	Quit
	.syntax unified
	.arm
	.fpu softvfp
	.type	Quit, %function
Quit:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L100
	ldr	r3, [r3]
	cmp	r3, #1
	bne	.L93
	ldr	r3, .L100+4
	ldr	r3, [r3]
	mov	r0, r3
	bl	pthread_cancel
	mov	r3, r0
	cmp	r3, #0
	beq	.L94
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+16
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
	b	.L95
.L94:
	ldr	r3, .L100+4
	ldr	r3, [r3]
	mov	r1, #0
	mov	r0, r3
	bl	pthread_join
	mov	r3, r0
	cmp	r3, #0
	bne	.L96
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+28
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
	b	.L95
.L96:
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+16
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
.L95:
	ldr	r3, .L100+32
	ldr	r3, [r3]
	mov	r0, r3
	bl	close
	mov	r3, r0
	cmn	r3, #1
	bne	.L97
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+36
	bl	fwrite
	ldr	r3, .L100+8
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
	pop	{fp, pc}
.L97:
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+40
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
	pop	{fp, pc}
.L93:
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+12
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L100+44
	bl	fwrite
	ldr	r3, .L100+24
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L100+20
	bl	fwrite
	nop
	pop	{fp, pc}
.L101:
	.align	2
.L100:
	.word	is_connected
	.word	thread_machine_no
	.word	stderr
	.word	.LC1
	.word	.LC32
	.word	.LC3
	.word	stdout
	.word	.LC33
	.word	socketfd
	.word	.LC34
	.word	.LC35
	.word	.LC53
	.size	Quit, .-Quit
	.section	.rodata
	.align	2
.LC54:
	.ascii	"|                                     Menu         "
	.ascii	"                            |\000"
	.align	2
.LC55:
	.ascii	"| Service <1>:                             Connect "
	.ascii	"                            |\000"
	.align	2
.LC56:
	.ascii	"| Service <2>:                            Disconnec"
	.ascii	"t                           |\000"
	.align	2
.LC57:
	.ascii	"| Service <3>:                        Show current "
	.ascii	"time                        |\000"
	.align	2
.LC58:
	.ascii	"| Service <4>:                      Show the server"
	.ascii	"'s name                     |\000"
	.align	2
.LC59:
	.ascii	"| Service <5>:              Show the Info of each c"
	.ascii	"onnected client             |\000"
	.align	2
.LC60:
	.ascii	"| Service <6>:    Send messages (Must know the No. "
	.ascii	"of the sent client first)   |\000"
	.align	2
.LC61:
	.ascii	"| Service <7>:                               Quit  "
	.ascii	"                            |\000"
	.align	2
.LC62:
	.ascii	"| Notice: You can <Quit> without <Disconnect> in ad"
	.ascii	"vance.                      |\000"
	.align	2
.LC63:
	.ascii	"|             Please input one service (ONLY the nu"
	.ascii	"mber) each time:            |\000"
	.align	2
.LC64:
	.ascii	"| Error:      The service that you input is incorre"
	.ascii	"ct. Please input again.     |\012\000"
	.text
	.align	2
	.global	UserInterface
	.syntax unified
	.arm
	.fpu softvfp
	.type	UserInterface, %function
UserInterface:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L112
	mov	r2, #0
	str	r2, [r3]
	ldr	r0, .L112+4
	bl	puts
	ldr	r0, .L112+8
	bl	puts
	ldr	r0, .L112+4
	bl	puts
	ldr	r0, .L112+12
	bl	puts
	ldr	r0, .L112+16
	bl	puts
	ldr	r0, .L112+20
	bl	puts
	ldr	r0, .L112+24
	bl	puts
	ldr	r0, .L112+28
	bl	puts
	ldr	r0, .L112+32
	bl	puts
	ldr	r0, .L112+36
	bl	puts
	ldr	r0, .L112+4
	bl	puts
	ldr	r0, .L112+40
	bl	puts
	ldr	r0, .L112+4
	bl	puts
	mov	r0, #10
	bl	putchar
	ldr	r0, .L112+4
	bl	puts
	ldr	r0, .L112+44
	bl	puts
	ldr	r0, .L112+48
	bl	puts
	b	.L103
.L110:
	ldr	r1, .L112
	ldr	r0, .L112+52
	bl	__isoc99_scanf
	mov	r0, #10
	bl	putchar
	ldr	r3, .L112
	ldr	r3, [r3]
	sub	r3, r3, #1
	cmp	r3, #6
	ldrls	pc, [pc, r3, asl #2]
	b	.L104
.L106:
	.word	.L109
	.word	.L108
	.word	.L107
	.word	.L107
	.word	.L107
	.word	.L107
	.word	.L105
.L109:
	bl	Connect
	b	.L103
.L108:
	bl	Disconnect
	bl	SendMessages
	b	.L103
.L107:
	bl	SendMessages
	b	.L103
.L105:
	bl	Quit
	b	.L103
.L104:
	ldr	r3, .L112+56
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L112+48
	bl	fwrite
	ldr	r3, .L112+56
	ldr	r3, [r3]
	mov	r2, #81
	mov	r1, #1
	ldr	r0, .L112+60
	bl	fwrite
	ldr	r3, .L112+56
	ldr	r3, [r3]
	mov	r2, #82
	mov	r1, #1
	ldr	r0, .L112+64
	bl	fwrite
	nop
.L103:
	ldr	r3, .L112
	ldr	r3, [r3]
	cmp	r3, #7
	bne	.L110
	nop
	pop	{fp, pc}
.L113:
	.align	2
.L112:
	.word	choice
	.word	.LC14
	.word	.LC54
	.word	.LC55
	.word	.LC56
	.word	.LC57
	.word	.LC58
	.word	.LC59
	.word	.LC60
	.word	.LC61
	.word	.LC62
	.word	.LC63
	.word	.LC1
	.word	.LC46
	.word	stderr
	.word	.LC64
	.word	.LC3
	.size	UserInterface, .-UserInterface
	.align	2
	.global	main
	.syntax unified
	.arm
	.fpu softvfp
	.type	main, %function
main:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 1, uses_anonymous_args = 0
	push	{fp, lr}
	add	fp, sp, #4
	ldr	r3, .L116
	mov	r2, #0
	str	r2, [r3]
	bl	UserInterface
	mov	r3, #0
	mov	r0, r3
	pop	{fp, pc}
.L117:
	.align	2
.L116:
	.word	is_connected
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
