Function at 0x140001669
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket

Disassembly:
push rbp
mov eax, 0x1070
call fcn.14000c0f0
sub rsp, rax
lea rbp, [rsp + 0x80]
call dbg.__main
mov r8d, 0
mov edx, 1
mov ecx, 2
mov rax, qword [sym.imp.WS2_32.dll_socket]
call rax
mov dword [rbp + 0xfec], eax
mov word [rbp + 0xfd0], 2
mov ecx, 0x1f90
mov rax, qword [sym.imp.WS2_32.dll_htons]
call rax
mov word [rbp + 0xfd2], ax
lea rcx, str.127.0.0.1
mov rax, qword [sym.imp.WS2_32.dll_inet_addr]
call rax
mov dword [rbp + 0xfd4], eax
mov eax, dword [rbp + 0xfec]
cdqe
lea rdx, [rbp + 0xfd0]
mov r8d, 0x10
mov rcx, rax
mov rax, qword [sym.imp.WS2_32.dll_connect]
call rax
shr eax, 0x1f
test al, al
je 0x14000172b
lea rdx, str.Failed_to_connect_to_TCP_server
mov rcx, qword [0x1400c1460]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov eax, 0xffffffff
jmp 0x140001ad2
lea rdx, str.Connected_to_TCP_server_on_port
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov edx, 0x1f90
mov rcx, rax
call method.std::ostream.operator___int_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov r8d, 0
mov edx, 2
mov ecx, 2
mov rax, qword [sym.imp.WS2_32.dll_socket]
call rax
mov dword [rbp + 0xfe8], eax
mov word [rbp + 0xfc0], 2
mov ecx, 0x1f91
mov rax, qword [sym.imp.WS2_32.dll_htons]
call rax
mov word [rbp + 0xfc2], ax
lea rcx, str.127.0.0.1
mov rax, qword [sym.imp.WS2_32.dll_inet_addr]
call rax
mov dword [rbp + 0xfc4], eax
lea rdx, str.Menu:
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.1._Split_text__basic_encoding_
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.2._Merge_text__basic_encoding_
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.3._Split_text__advanced_encoding_
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.4._Merge_text__advanced_encoding_
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.5._Quit
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
lea rdx, str.Enter_your_choice__1_5_:
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
lea rax, [rbp + 0x7bc]
mov rdx, rax
mov rcx, qword [0x1400c1450]
call method.std::istream.operator___int_
mov eax, dword [rbp + 0x7bc]
cmp eax, 4
jg 0x1400018b6
test eax, eax
jg 0x1400018c4
jmp 0x140001aab
cmp eax, 5
je 0x140001a5a
jmp 0x140001aab
lea rdx, str.Enter_the_text:
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, qword [0x1400c1450]
call method.std::istream.ignore__
lea rax, [rbp - 0x50]
mov r8d, 0x400
mov rdx, rax
mov rcx, qword [0x1400c1450]
call method.std::istream.getline_char__long_long_
mov eax, dword [rbp + 0x7bc]
cmp eax, 1
je 0x140001916
mov eax, dword [rbp + 0x7bc]
cmp eax, 3
jne 0x1400019eb
lea rdx, [rbp - 0x50]
mov eax, dword [rbp + 0xfec]
mov ecx, eax
call sym.sendTCP_int__char_const_
lea rdx, [rbp + 0x3b0]
mov eax, dword [rbp + 0xfec]
mov ecx, eax
call sym.receiveTCP_int__char_
lea rdx, str.Received_from_server:
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, rax
lea rax, [rbp + 0x3b0]
mov rdx, rax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov rax, qword [rbp + 0xfc0]
mov rdx, qword [rbp + 0xfc8]
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
lea rcx, [rbp - 0x60]
lea rdx, [rbp - 0x50]
mov eax, dword [rbp + 0xfe8]
mov r8, rcx
mov ecx, eax
call sym.sendUDP_int__char_const__sockaddr_in_
lea rdx, [rbp + 0x3b0]
mov eax, dword [rbp + 0xfe8]
mov ecx, eax
call sym.receiveUDP_int__char_
lea rdx, str.Received_from_server:
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rcx, rax
lea rax, [rbp + 0x3b0]
mov rdx, rax
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
nop
jmp 0x140001acd
lea rdx, [rbp + 0xbc0]
mov eax, dword [rbp + 0xfec]
mov ecx, eax
call sym.sendTCP_int__char_const_
mov rax, qword [rbp + 0xfc0]
mov rdx, qword [rbp + 0xfc8]
mov qword [rbp - 0x60], rax
mov qword [rbp - 0x58], rdx
lea rcx, [rbp - 0x60]
lea rdx, [rbp + 0x7c0]
mov eax, dword [rbp + 0xfe8]
mov r8, rcx
mov ecx, eax
call sym.sendUDP_int__char_const__sockaddr_in_
lea rdx, [rbp + 0x3b0]
mov eax, dword [rbp + 0xfec]
mov ecx, eax
call sym.receiveTCP_int__char_
lea rdx, [rbp + 0x3b0]
mov eax, dword [rbp + 0xfe8]
mov ecx, eax
call sym.receiveUDP_int__char_
jmp 0x140001acd
mov eax, dword [rbp + 0xfec]
cdqe
mov rcx, rax
mov rax, qword [sym.imp.WS2_32.dll_closesocket]
call rax
mov eax, dword [rbp + 0xfe8]
cdqe
mov rcx, rax
mov rax, qword [sym.imp.WS2_32.dll_closesocket]
call rax
lea rdx, str.Exiting_the_program._Goodbye_
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
mov eax, 0
jmp 0x140001ad2
lea rdx, str.Invalid_choice._Please_enter_a_number_between_1_and_5.
mov rcx, qword [0x1400c1480]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____char_const_
mov rdx, qword [method.std::basic_ostream_char__std::char_traits_char____std::endl_char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char____]
mov rcx, rax
call method.std::ostream.operator___std::ostream____std::ostream__
jmp 0x1400017ad
add rsp, 0x1070
pop rbp
ret