Function at 0x100045c0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Create tcp socket
Initialize winsock library
Receive data
Receive data on socket
Resolve dns
Send data
Send data on socket
Send http request
Send http request with host header

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x1008211c
push eax
mov eax, 0x296c
mov dword fs:[0], esp
call fcn.1002c9f0
push ebx
push ebp
mov ebp, dword [esp + 0x2990]
push esi
push edi
mov ebx, ecx
mov edi, dword [ebp + 4]
mov dword [esp + 0x58], ebx
test edi, edi
jne 0x100045fd
mov edi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov esi, ecx
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_4
push esi
lea eax, [esp + 0x14]
push 0x10099b60
push eax
mov dword [esp + 0x2990], 0
call sub.MFC42.DLL_CString::Format
mov cl, byte [esp + 0x23]
add esp, 0xc
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x18]
push 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, 0x1009fd90
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x1009fd90
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
mov edi, 0x10099b64
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x2984], 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x10099b64
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, dword [esp + 0x2994]
mov eax, dword [edx]
push eax
push 0
push ecx
lea ecx, [esp + 0x24]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edi, str.___HTTP_1.0_r_nFrom:___local_r_nUser_Agent:___post_test_1.0_r_nContent_Type:___application_x_www_form_urlencoded_r_n
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.___HTTP_1.0_r_nFrom:___local_r_nUser_Agent:___post_test_1.0_r_nContent_Type:___application_x_www_form_urlencoded_r_n
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov edx, dword [ebx + 4]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov edi, 0x10099adc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push 0x10099adc
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
mov esi, dword [esp + 0x298c]
push 0x10099a94
lea edx, [esp + 0x70]
push esi
push edx
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__
add esp, 0xc
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [esp + 0x2984], 2
mov edx, dword [ecx]
lea ecx, [esp + 0x18]
push edx
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [esp + 0x70]
mov byte [esp + 0x2988], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x54]
push eax
push str.Content_Length:
push ecx
call sub.MFC42.DLL_operator_1
push str._r_n_r_n
lea edx, [esp + 0x54]
push eax
push edx
mov byte [esp + 0x2990], 3
call sub.MFC42.DLL_operator_2
mov edx, dword [eax]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0x2984], 4
push ecx
push edx
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_char_const___unsigned_int_]
lea ecx, [esp + 0x50]
mov byte [esp + 0x2984], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x54]
mov byte [esp + 0x2984], 1
call sub.MFC42.DLL_CString::CString
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, dword [eax]
push ecx
push 0
push ebp
lea ecx, [esp + 0x24]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
lea edx, [esp + 0x7c]
push edx
push 0x101
call dword [sym.imp.WS2_32.dll_WSAStartup]
test eax, eax
je 0x10004809
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x2988], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dword [esp + 0x2984], 0xffffffff
jmp 0x10004c86
mov esi, dword [esi + 4]
test esi, esi
jne 0x10004816
mov esi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push esi
call dword [sym.imp.WS2_32.dll_gethostbyname]
mov esi, eax
test esi, esi
jne 0x1000484d
call dword [sym.imp.WS2_32.dll_WSACleanup]
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x2988], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dword [esp + 0x2984], 0xffffffff
jmp 0x10004c86
push 6
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov ebp, eax
mov eax, dword [esp + 0x2990]
push eax
mov word [esp + 0x60], 2
call dword [sym.imp.WS2_32.dll_htons]
mov word [esp + 0x5e], ax
mov ecx, dword [esi + 0xc]
push 0x10
mov edx, dword [ecx]
lea ecx, [esp + 0x60]
push ecx
push ebp
mov eax, dword [edx]
mov dword [esp + 0x6c], eax
call dword [sym.imp.WS2_32.dll_connect]
or esi, 0xffffffff
cmp eax, esi
jne 0x100048bb
push ebp
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x2988], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x10004c7f
mov dl, byte [esp + 0x18]
push 0
lea ecx, [esp + 0x34]
mov byte [esp + 0x34], dl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea edx, [esp + 0x18]
mov ecx, dword [eax]
push ecx
push 0
push edx
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edx, dword [esp + 0x34]
mov byte [esp + 0x2984], 5
test edx, edx
jne 0x100048fe
mov edx, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov edi, edx
mov ecx, esi
xor eax, eax
push 0
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
push ebp
call dword [sym.imp.WS2_32.dll_send]
cmp eax, esi
jne 0x10004952
push ebp
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0x2988], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x2988], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x10004c7f
lea eax, [esp + 0x20c]
mov ecx, ebx
push eax
push ebp
call fcn.10003e50
test eax, eax
jne 0x10004993
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0x2988], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x1c]
mov byte [esp + 0x2988], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x10004c7f
lea ecx, [esp + 0x20c]
push ecx
mov ecx, ebx
call fcn.10003cc0
cmp eax, 0x12c
jae 0x10004c31
cmp eax, 0xc8
jb 0x10004c31
lea edx, [esp + 0x20c]
mov ecx, ebx
push edx
mov dword [esp + 0x30], 0
call fcn.10007220
push 0x1009fd90
lea ecx, [esp + 0x2c]
mov ebx, eax
call sub.MFC42.DLL_CString::CString_3
mov byte [esp + 0x2984], 6
mov ecx, 0x8db
xor eax, eax
lea edi, [esp + 0x60c]
push 0
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
lea eax, [esp + 0x610]
push 0x236d
push eax
push ebp
call dword [sym.imp.WS2_32.dll_recv]
mov esi, eax
cmp esi, 0xffffffff
je 0x10004b02
mov edi, dword [esp + 0x2c]
lea ecx, [esp + 0x60c]
add edi, esi
push ecx
lea ecx, [esp + 0x2c]
mov dword [esp + 0x30], edi
call sub.MFC42.DLL_CString::operator
test ebx, ebx
jbe 0x10004a3e
mov eax, edi
cmp eax, ebx
jae 0x10004a42
test esi, esi
jg 0x100049e7
mov dl, byte [esp + 0x17]
xor eax, eax
mov byte [esp + 0x40], dl
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x28]
mov byte [esp + 0x2984], 7
mov eax, dword [eax - 8]
inc eax
push eax
call sub.MFC42.DLL_operatornew
mov edi, dword [esp + 0x2c]
mov ebx, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 4
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea eax, [esp + 0x40]
mov edx, ecx
mov esi, edi
mov edi, ebx
push eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x60]
call fcn.10003a60
push ebx
call sub.MFC42.DLL_operatordelete
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
add esp, 4
xor esi, esi
lea eax, [esp + 0x40]
mov edx, dword [ecx]
mov ecx, dword [esp + 0x299c]
push edx
push esi
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push ebp
call dword [sym.imp.WS2_32.dll_closesocket]
call dword [sym.imp.WS2_32.dll_WSACleanup]
mov eax, dword [esp + 0x44]
cmp eax, esi
je 0x10004b97
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004b8e
cmp al, 0xff
je 0x10004b8e
dec al
mov byte [ecx], al
jmp 0x10004b97
push ebp
call dword [sym.imp.WS2_32.dll_closesocket]
lea ecx, [esp + 0x28]
mov byte [esp + 0x2984], 5
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x34]
xor esi, esi
cmp eax, esi
je 0x10004b41
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004b38
cmp al, 0xff
je 0x10004b38
dec al
mov byte [ecx], al
jmp 0x10004b41
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x34], esi
cmp eax, esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], esi
je 0x10004b72
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004b69
cmp al, 0xff
je 0x10004b69
dec al
mov byte [ecx], al
jmp 0x10004b72
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x2984], 0xffffffff
jmp 0x10004c86
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
lea ecx, [esp + 0x28]
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov byte [esp + 0x2984], 5
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x34]
cmp eax, esi
je 0x10004bd9
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004bd0
cmp al, 0xff
je 0x10004bd0
dec al
mov byte [ecx], al
jmp 0x10004bd9
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x34], esi
cmp eax, esi
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], esi
je 0x10004c0a
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004c01
cmp al, 0xff
je 0x10004c01
dec al
mov byte [ecx], al
jmp 0x10004c0a
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
lea ecx, [esp + 0x10]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x2984], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x10004c91
push ebp
call dword [sym.imp.WS2_32.dll_closesocket]
push 1
lea ecx, [esp + 0x34]
mov byte [esp + 0x2988], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [esp + 0x1c]
xor edi, edi
cmp eax, edi
je 0x10004c73
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x10004c6a
cmp al, 0xff
je 0x10004c6a
dec al
mov byte [ecx], al
jmp 0x10004c73
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x2984], esi
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x297c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x2978
ret 0x18