Function at 0x495120
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Receive data
Receive data on socket
Resolve dns
Send data
Send data on socket

Disassembly:
sub esp, 0x50
mov dword [0x99b7c8], 0
push ebx
push esi
push str.Opening_connection_to_SOCKS_server._n
call fcn.0045b2a0
add esp, 4
mov esi, 2
push 6
push 1
push esi
call dword [sym.imp.WSOCK32.dll_socket]
cmp eax, 0xffffffff
mov dword [0x99a748], eax
jne 0x495175
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.WARNING:_NET_OpenSocks:_socket:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
mov eax, dword [0x99b764]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.WSOCK32.dll_gethostbyname]
test eax, eax
jne 0x4951a7
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.WARNING:_NET_OpenSocks:_gethostbyname:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
cmp word [eax + 8], si
je 0x4951c0
push str.WARNING:_NET_OpenSocks:_gethostbyname:_address_type_was_not_AF_INET_n
call fcn.0045b2a0
add esp, 4
pop esi
pop ebx
add esp, 0x50
ret
mov word [esp + 8], si
mov edx, dword [eax + 0xc]
mov eax, dword [edx]
mov edx, dword [0x99b76c]
mov ecx, dword [eax]
mov dword [esp + 0xc], ecx
mov ax, word [edx + 0x20]
push eax
call dword [sym.imp.WSOCK32.dll_htons]
mov edx, dword [0x99a748]
lea ecx, [esp + 8]
push 0x10
push ecx
push edx
mov word [esp + 0x16], ax
call dword [sym.imp.WSOCK32.dll_connect]
cmp eax, 0xffffffff
jne 0x49521e
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.NET_OpenSocks:_connect:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
mov eax, dword [0x99b750]
mov ecx, dword [eax + 4]
cmp byte [ecx], 0
jne 0x49523d
mov edx, dword [0x99b7c0]
mov eax, dword [edx + 4]
cmp byte [eax], 0
jne 0x49523d
xor ecx, ecx
jmp 0x495242
mov ecx, 1
test ecx, ecx
mov byte [esp + 0x18], 5
je 0x495257
mov byte [esp + 0x19], 2
mov eax, 4
jmp 0x495261
mov byte [esp + 0x19], 1
mov eax, 3
test ecx, ecx
mov byte [esp + 0x1a], 0
je 0x49526f
mov byte [esp + 0x1a], 2
mov edx, dword [0x99a748]
mov ebx, dword [sym.imp.WSOCK32.dll_send]
push 0
lea ecx, [esp + 0x1c]
push eax
push ecx
push edx
call ebx
cmp eax, 0xffffffff
jne 0x4952aa
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.NET_OpenSocks:_send:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
mov ecx, dword [0x99a748]
push 0
lea eax, [esp + 0x1c]
push 0x40
push eax
push ecx
call dword [sym.imp.WSOCK32.dll_recv]
cmp eax, 0xffffffff
je 0x49546d
cmp eax, esi
jne 0x495523
cmp byte [esp + 0x18], 5
jne 0x495523
mov eax, dword [esp + 0x19]
and eax, 0xff
sub eax, 0
je 0x495301
sub eax, esi
je 0x495301
push str.NET_OpenSocks:_request_denied_n
call fcn.0045b2a0
add esp, 4
pop esi
pop ebx
add esp, 0x50
ret
cmp byte [esp + 0x19], 2
jne 0x4953f1
mov esi, dword [0x99b750]
push ebp
push edi
or ecx, 0xffffffff
mov edi, dword [esi + 4]
xor eax, eax
repne scasb al, byte es:[edi]
mov ebp, dword [0x99b7c0]
not ecx
mov edi, dword [ebp + 4]
dec ecx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0x20], 1
test edx, edx
mov eax, ecx
mov byte [esp + 0x21], dl
je 0x495360
mov esi, dword [esi + 4]
mov ecx, edx
mov ebx, ecx
lea edi, [esp + 0x22]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov ebx, dword [sym.imp.WSOCK32.dll_send]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test eax, eax
mov byte [esp + edx + 0x22], al
je 0x49537f
mov esi, dword [ebp + 4]
mov ecx, eax
mov ebp, ecx
lea edi, [esp + edx + 0x23]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x99a748]
lea edx, [eax + edx + 3]
push 0
lea eax, [esp + 0x24]
push edx
push eax
push ecx
call ebx
pop edi
cmp eax, 0xffffffff
pop ebp
je 0x49528b
mov eax, dword [0x99a748]
push 0
lea edx, [esp + 0x1c]
push 0x40
push edx
push eax
call dword [sym.imp.WSOCK32.dll_recv]
cmp eax, 0xffffffff
je 0x49546d
cmp eax, 2
jne 0x495523
cmp byte [esp + 0x18], 1
jne 0x495523
mov al, byte [esp + 0x19]
test al, al
je 0x4953ec
push str.NET_OpenSocks:_authentication_failed_n
call fcn.0045b2a0
add esp, 4
pop esi
pop ebx
add esp, 0x50
ret
mov esi, 2
mov ecx, dword [esp + 0x5c]
mov byte [esp + 0x18], 5
push ecx
mov byte [esp + 0x1d], 3
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1f], 1
mov dword [esp + 0x20], 0
call dword [sym.imp.WSOCK32.dll_htons]
mov word [esp + 0x20], ax
mov eax, dword [0x99a748]
push 0
lea edx, [esp + 0x1c]
push 0xa
push edx
push eax
call ebx
cmp eax, 0xffffffff
jne 0x495452
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.NET_OpenSocks:_send:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
mov edx, dword [0x99a748]
push 0
lea ecx, [esp + 0x1c]
push 0x40
push ecx
push edx
call dword [sym.imp.WSOCK32.dll_recv]
cmp eax, 0xffffffff
jne 0x49548c
call dword [sym.imp.WSOCK32.dll_WSAGetLastError]
call fcn.00494520
push eax
push str.NET_OpenSocks:_recv:__s_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
cmp eax, esi
jl 0x495523
cmp byte [esp + 0x18], 5
jne 0x495523
mov al, byte [esp + 0x19]
test al, al
je 0x4954c4
mov eax, dword [esp + 0x19]
and eax, 0xff
push eax
push str.NET_OpenSocks:_request_denied:__i_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
cmp byte [esp + 0x1b], 1
je 0x4954e9
mov ecx, dword [esp + 0x1b]
and ecx, 0xff
push ecx
push str.NET_OpenSocks:_relay_address_is_not_IPV4:__i_n
call fcn.0045b2a0
add esp, 8
pop esi
pop ebx
add esp, 0x50
ret
mov edx, dword [esp + 0x1c]
mov ax, word [esp + 0x20]
xor ecx, ecx
mov word [0x99b754], si
mov dword [0x99b75c], ecx
pop esi
mov dword [0x99b758], edx
mov word [0x99b756], ax
mov dword [0x99b760], ecx
mov dword [0x99b7c8], 1
pop ebx
add esp, 0x50
ret
push str.NET_OpenSocks:_bad_response_n
call fcn.0045b2a0
add esp, 4
pop esi
pop ebx
add esp, 0x50
ret