Function at 0x1009a614
Capabilities:
Get local ipv4 addresses
Get socket information
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x968
mov eax, dword [0x10284f40]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
xor dh, dh
xor dl, dl
mov byte [ebp - 0x915], dh
mov byte [ebp - 0x916], dl
push edi
test esi, esi
je case.0x1009a5f7.1
mov eax, dword [esi + 0x98]
cmp eax, 0xb
ja case.default.0x1009a5f7
movzx eax, byte [eax + 0x1009bb54]
jmp dword [eax*4 + 0x1009bb44]
pop edi
pop esi
mov eax, 3
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push esi
call fcn.100a0940
add esp, 4
test eax, eax
js case.0x1009a951.11
je 0x1009baa4
mov dl, byte [ebp - 0x916]
mov dh, dl
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
nop dword [eax]
cmp byte [esi + 0x1fc], 0
je 0x1009a678
mov eax, dword [esi + 0x204]
test eax, eax
je 0x1009a66a
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x1009a66a
mov dh, 1
mov dword [esi + 0x204], eax
mov byte [ebp - 0x915], dh
jmp 0x1009a671
mov byte [esi + 0x1fd], 1
mov byte [esi + 0x1fc], 0
cmp byte [esi + 0x1fd], 0
je 0x1009a896
mov eax, dword [esi + 0xc8]
inc eax
cmp eax, dword [esi + 0xc4]
jge case.0x1009a951.11
mov ecx, dword [esi + 0x200]
lea ebx, [esi + 0x200]
mov dword [esi + 0xc8], eax
test ecx, ecx
je 0x1009a6d3
push ecx
push dword [esi + 0x208]
call fcn.101d20f0
mov eax, dword [esi + 0xc8]
add esp, 8
mov dword [ebx], 0
mov dword [esi + 0x204], 0
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0xcc]
lea edi, [eax + ecx*4]
lea eax, [ebp - 0x964]
mov dword [ebp - 0x924], edi
test al, 3
jne 0x1009a715
mov ecx, eax
lea eax, [ebp - 0x944]
cmp eax, ecx
sbb ecx, ecx
and ecx, 0xfffffff8
add ecx, 8
je 0x1009a726
xor eax, eax
lea edi, [ebp - 0x964]
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x924]
jmp 0x1009a726
xorps xmm0, xmm0
movups xmmword [ebp - 0x964], xmm0
movups xmmword [ebp - 0x954], xmm0
mov dword [ebp - 0x95c], 1
mov dword [ebp - 0x960], 0
mov dword [esi + 0x208], 0
mov eax, dword [edi + 0xc]
test eax, eax
je 0x1009a7a8
cmp byte [eax], 0
je 0x1009a7a8
push str.port
push esi
lea ecx, [ebp - 0x93c]
push ecx
push eax
call fcn.1009fbc0
add esp, 0x10
test al, al
je case.0x1009a951.11
mov eax, dword [ebp - 0x93c]
cmp eax, 1
jl 0x1009a780
cmp eax, 0xffff
jle 0x1009a7b3
push dword [edi + 0xc]
lea eax, [esi + 0x294]
push str.invalid_port_number:___s__n
push eax
call fcn.100a1550
mov dl, byte [ebp - 0x916]
add esp, 0xc
mov dh, byte [ebp - 0x915]
jmp case.0x1009a5f7.2
mov eax, 0x1538
mov dword [ebp - 0x93c], eax
push eax
push 0x101e4be0
lea eax, [ebp - 0x908]
push 0x400
push eax
call fcn.101d4800
mov eax, dword [edi]
add esp, 0x10
sub eax, 0
je 0x1009a834
sub eax, 1
jne 0x1009a856
push ebx
lea eax, [ebp - 0x964]
mov dword [ebp - 0x964], 4
push eax
lea eax, [ebp - 0x908]
push eax
push dword [edi + 8]
call fcn.101d20c0
add esp, 0x10
test eax, eax
jne 0x1009a805
cmp dword [ebx], eax
jne 0x1009a856
push eax
call fcn.101d6d30
push eax
push dword [edi + 8]
lea eax, [esi + 0x294]
push str.could_not_parse_network_address___s_:__s_n
push eax
call fcn.100a1550
mov dl, byte [ebp - 0x916]
add esp, 0x14
mov dh, byte [ebp - 0x915]
jmp case.0x1009a5f7.2
push ebx
lea eax, [ebp - 0x964]
push eax
lea eax, [ebp - 0x908]
push eax
push dword [edi + 4]
call fcn.101d20c0
add esp, 0x10
test eax, eax
jne 0x1009a867
cmp dword [ebx], eax
je 0x1009a867
mov eax, dword [ebx]
mov dword [esi + 0x204], eax
mov byte [esi + 0x1fd], 0
jmp 0x1009a89a
push eax
call fcn.101d6d30
push eax
push dword [edi + 4]
lea eax, [esi + 0x294]
push str.could_not_translate_host_name___s__to_address:__s_n
push eax
call fcn.100a1550
mov dl, byte [ebp - 0x916]
add esp, 0x14
mov dh, byte [ebp - 0x915]
jmp case.0x1009a5f7.2
test dh, dh
je 0x1009a8d0
mov ecx, dword [esi + 0x4c]
mov dword [esi + 0x1e8], 0x30000
mov byte [esi + 0x214], 1
cmp byte [ecx], 0x64
setne al
mov byte [esi + 0x275], al
cmp byte [ecx], 0x61
sete al
mov byte [esi + 0x276], al
xor al, al
mov byte [ebp - 0x915], al
jmp 0x1009a8d4
test dl, dl
je 0x1009a933
push 1
push esi
call fcn.1009c9e0
push esi
call fcn.1009fed0
push esi
mov dword [esi + 0x9c], 0
mov dword [esi + 0xa0], 0
call fcn.10098aa0
mov dh, byte [ebp - 0x915]
add esp, 0x10
xor dl, dl
mov dword [esi + 0x98], 8
mov byte [ebp - 0x916], dl
mov ebx, dword [esi + 0x204]
mov dword [ebp - 0x924], ebx
test ebx, ebx
jne 0x1009a958
mov byte [esi + 0x1fd], 1
jmp case.0x1009a5f7.2
mov ecx, dword [esi + 0x98]
mov byte [ebp - 0x915], dh
mov byte [ebp - 0x916], dl
lea eax, [ecx - 2]
cmp eax, 9
ja case.default.0x1009a951
jmp dword [eax*4 + 0x1009bb60]
push dword [ebx + 0x10]
lea edi, [esi + 0x160]
push dword [ebx + 0x18]
push edi
call fcn.100e6590
mov eax, dword [ebx + 0x10]
add esp, 0xc
mov dword [esi + 0x1e0], eax
mov eax, dword [esi + 0xd0]
test eax, eax
je 0x1009a993
push eax
call fcn.100f385c
add esp, 4
mov dword [esi + 0xd0], 0
movzx eax, word [edi]
cmp eax, 2
jne 0x1009a9b1
push 0x401
lea eax, [ebp - 0x508]
push eax
push 0x20
lea eax, [edi + 4]
push eax
push 2
jmp 0x1009a9cd
cmp eax, 0x17
jne 0x1009a9d9
push 0x401
lea eax, [ebp - 0x508]
push eax
push 0x80
lea eax, [edi + 8]
push eax
push 0x17
call fcn.101d6630
add esp, 0x14
test eax, eax
jne 0x1009a9e0
mov byte [ebp - 0x508], 0
lea ecx, [ebp - 0x508]
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009a9f0
sub ecx, edx
je 0x1009aa10
lea eax, [ebp - 0x508]
push eax
call fcn.100fef59
add esp, 4
mov dword [esi + 0xd0], eax
push 0
push 1
push dword [ebx + 4]
call dword [sym.imp.WS2_32.dll_socket]
mov dword [esi + 0xd4], eax
cmp eax, 0xffffffff
jne 0x1009aa77
cmp dword [ebx + 0x1c], 0
jne 0x1009b5a4
mov eax, dword [esi + 0xc8]
inc eax
cmp eax, dword [esi + 0xc4]
jl 0x1009b5a4
push 0x100
lea eax, [ebp - 0x104]
push eax
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
call fcn.100a8b30
push eax
lea eax, [esi + 0x294]
push str.could_not_create_socket:__s_n
push eax
call fcn.100a1550
add esp, 0x18
jmp case.0x1009a951.11
push 4
lea ecx, [ebp - 0x920]
mov dword [ebp - 0x920], 1
push ecx
push 1
push 6
push eax
lea edi, [esi + 0x294]
call dword [sym.imp.WS2_32.dll_setsockopt]
test eax, eax
jns 0x1009aac1
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
lea eax, [ebp - 0x608]
push 0x100
push eax
call ebx
push eax
call fcn.100a8b30
push eax
push str.could_not_set_socket_to_TCP_no_delay_mode:__s_n
jmp 0x1009aaf3
push dword [esi + 0xd4]
call fcn.101d6010
add esp, 4
test al, al
jne 0x1009ab14
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
lea eax, [ebp - 0x104]
push 0x100
push eax
call ebx
push eax
call fcn.100a8b30
push eax
push str.could_not_set_socket_to_nonblocking_mode:__s_n
push edi
call fcn.100a1550
mov dl, byte [ebp - 0x916]
add esp, 0x18
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp 0x1009a640
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x1009ab53
push 0xa
lea ecx, [ebp - 0x938]
push ecx
push eax
call fcn.100f96ff
mov ecx, dword [ebp - 0x938]
add esp, 0xc
cmp byte [ecx], 0
je 0x1009ab4b
push str.keepalives_parameter_must_be_an_integer_n
push edi
call fcn.100a1660
add esp, 8
jmp 0x1009ac6e
test eax, eax
je 0x1009acaa
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x940], 0
mov dword [ebp - 0x920], 0
test eax, eax
je 0x1009ab96
push str.keepalives_idle
push esi
lea ecx, [ebp - 0x940]
push ecx
push eax
call fcn.1009fbc0
add esp, 0x10
test al, al
je 0x1009ac6e
mov ebx, dword [ebp - 0x940]
test ebx, ebx
jg 0x1009ab9b
mov ebx, 0x1c20
mov eax, dword [esi + 0x44]
test eax, eax
je 0x1009abca
push str.keepalives_interval
push esi
lea ecx, [ebp - 0x920]
push ecx
push eax
call fcn.1009fbc0
add esp, 0x10
test al, al
je 0x1009ac6e
mov ecx, dword [ebp - 0x920]
test ecx, ecx
jg 0x1009abcf
mov ecx, 1
imul eax, ebx, 0x3e8
push 0
push 0
mov dword [ebp - 0x914], 1
mov dword [ebp - 0x910], eax
imul eax, ecx, 0x3e8
mov dword [ebp - 0x90c], eax
lea eax, [ebp - 0x968]
push eax
push 0
push 0
push 0xc
lea eax, [ebp - 0x914]
push eax
push 0x98000004
push dword [esi + 0xd4]
call dword [sym.imp.WS2_32.dll_WSAIoctl]
test eax, eax
je 0x1009ac4d
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
call ebx
push eax
push str.WSAIoctl_SIO_KEEPALIVE_VALS__failed:__ui_n
push edi
call fcn.100a1550
mov dl, byte [ebp - 0x916]
add esp, 0xc
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp 0x1009a640
mov eax, dword [esi + 0x14]
test eax, eax
je 0x1009aca4
push str.tcp_user_timeout
push esi
lea ecx, [ebp - 0x920]
push ecx
push eax
call fcn.1009fbc0
add esp, 0x10
test al, al
jne 0x1009ac8c
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp 0x1009a640
mov al, byte [ebp - 0x915]
mov byte [ebp - 0x915], al
mov al, byte [ebp - 0x916]
mov byte [ebp - 0x916], al
mov ebx, dword [ebp - 0x924]
mov word [esi + 0x1f2], 0
push dword [ebx + 0x10]
push dword [ebx + 0x18]
push dword [esi + 0xd4]
call dword [sym.imp.WS2_32.dll_connect]
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
test eax, eax
jns 0x1009ad1a
call ebx
cmp eax, 0x2734
je 0x1009b5bc
call ebx
cmp eax, 0x2733
je 0x1009b5bc
call ebx
cmp eax, 0x2714
je 0x1009b5bc
call ebx
push eax
push esi
call fcn.1009cf70
mov dl, byte [ebp - 0x916]
add esp, 8
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp 0x1009a640
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
mov dword [esi + 0x98], 2
jmp 0x1009a640
lea eax, [ebp - 0x924]
mov dword [ebp - 0x924], 4
push eax
lea eax, [ebp - 0x944]
push eax
push 0x1007
push 0xffff
push dword [esi + 0xd4]
call dword [sym.imp.WS2_32.dll_getsockopt]
cmp eax, 0xffffffff
je 0x1009b632
mov eax, dword [ebp - 0x944]
test eax, eax
je 0x1009b5dc
push eax
push esi
call fcn.1009cf70
mov dl, byte [ebp - 0x916]
add esp, 8
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp 0x1009a640
cmp byte [esi + 0x274], 0
jne 0x1009adfb
push esi
call fcn.100a0940
add esp, 4
test eax, eax
js case.0x1009a951.11
je 0x1009baa4
lea eax, [ebp - 0x918]
push esi
push eax
call fcn.100a0390
add esp, 8
test eax, eax
js 0x1009baa4
mov al, byte [ebp - 0x918]
cmp al, 0x53
jne 0x1009ae55
mov eax, dword [esi + 0x244]
push esi
mov dword [esi + 0x240], eax
call fcn.100a6c30
add esp, 4
test eax, eax
jne case.0x1009a951.11
push esi
call fcn.100a6c40
add esp, 4
cmp eax, 3
je 0x1009b69d
test eax, eax
jne 0x1009bb31
mov eax, dword [esi + 0x4c]
cmp byte [eax], 0x70
jne case.0x1009a951.11
cmp byte [esi + 0x275], 0
je case.0x1009a951.11
cmp byte [esi + 0x276], 0
jne case.0x1009a951.11
mov dh, byte [ebp - 0x915]
mov dl, 1
mov byte [esi + 0x275], 0
mov byte [ebp - 0x916], dl
jmp 0x1009a640
cmp al, 0x4e
je 0x1009b67d
cmp al, 0x45
jne 0x1009b660
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
mov dword [esi + 0x98], 4
jmp 0x1009a640
mov eax, dword [esi + 0x240]
mov dword [esi + 0x244], eax
lea eax, [ebp - 0x917]
push esi
push eax
call fcn.100a0390
add esp, 8
test eax, eax
jne 0x1009baa4
mov cl, byte [ebp - 0x917]
cmp cl, 0x52
je 0x1009aeb8
cmp cl, 0x45
jne 0x1009b6c7
mov eax, dword [esi + 0x1e8]
and eax, 0xffff0000
cmp eax, 0x30000
jb 0x1009aef2
push esi
lea eax, [ebp - 0x91c]
push 4
push eax
call fcn.100a0680
add esp, 0xc
test eax, eax
jne 0x1009baa4
mov cl, byte [ebp - 0x917]
mov edx, dword [ebp - 0x91c]
jmp 0x1009aefd
mov edx, 8
mov dword [ebp - 0x91c], edx
cmp cl, 0x52
jne 0x1009af5b
lea eax, [edx - 8]
cmp eax, 0x7c8
ja 0x1009b6e4
mov eax, dword [esi + 0x248]
add edx, 0xfffffffc
mov edi, dword [esi + 0x244]
sub eax, edi
mov dword [ebp - 0x91c], edx
cmp eax, edx
jl 0x1009b72a
cmp cl, 0x45
jne 0x1009b113
mov eax, dword [esi + 0x1e8]
and eax, 0xffff0000
cmp eax, 0x30000
jb 0x1009afdc
push 1
push esi
call fcn.100a3890
jmp 0x1009afe9
cmp cl, 0x45
jne 0x1009af10
cmp edx, 8
jl 0x1009af6d
cmp edx, 0x7530
jle 0x1009af10
mov eax, dword [esi + 0x240]
lea edi, [esi + 0x294]
inc eax
push esi
push edi
mov dword [esi + 0x244], eax
call fcn.100a0460
add esp, 8
test eax, eax
jne 0x1009baa4
mov eax, dword [esi + 0x244]
push 0xa
push edi
mov dword [esi + 0x240], eax
call fcn.100a16b0
mov eax, dword [esi + 0x1e8]
add esp, 8
and eax, 0xffff0000
cmp eax, 0x30000
jb case.0x1009a951.11
mov dh, byte [ebp - 0x915]
mov dl, 1
mov dword [esi + 0x1e8], 0x20000
mov byte [ebp - 0x916], dl
jmp 0x1009a640
lea eax, [esi + 0x294]
push esi
push eax
call fcn.100a0460
add esp, 8
test eax, eax
jne 0x1009baa4
cmp byte [esi + 0x1f1], 0
mov eax, dword [esi + 0x244]
mov dword [esi + 0x240], eax
je 0x1009b080
mov eax, dword [esi + 0xc8]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0xcc]
cmp dword [eax + ecx*4 + 0x10], 0
je 0x1009b080
mov eax, dword [esi + 0x268]
test eax, eax
je 0x1009b080
push 0x43
push eax
call fcn.100974f0
add esp, 8
test eax, eax
je 0x1009b080
mov ecx, str.28P01
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009b060
test dl, dl
je 0x1009b05c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009b060
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009b040
xor eax, eax
jmp 0x1009b065
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1009b080
push dword [esi + 0x38]
lea eax, [esi + 0x294]
push str.password_retrieved_from_file___s__n
push eax
call fcn.100a1550
add esp, 0xc
mov eax, dword [esi + 0x4c]
mov al, byte [eax]
cmp al, 0x61
jne 0x1009b0ca
cmp byte [esi + 0x274], 0
jne case.0x1009a951.11
cmp byte [esi + 0x275], 0
je case.0x1009a951.11
cmp byte [esi + 0x276], 0
je case.0x1009a951.11
mov dh, byte [ebp - 0x915]
mov dl, 1
mov byte [esi + 0x276], 0
mov byte [ebp - 0x916], dl
jmp 0x1009a640
cmp al, 0x70
jne case.0x1009a951.11
cmp byte [esi + 0x274], 0
je case.0x1009a951.11
cmp byte [esi + 0x275], 0
je case.0x1009a951.11
cmp byte [esi + 0x276], 0
jne case.0x1009a951.11
mov dh, byte [ebp - 0x915]
mov dl, 1
mov byte [esi + 0x275], 0
mov byte [ebp - 0x916], dl
jmp 0x1009a640
push esi
lea eax, [ebp - 0x928]
mov byte [esi + 0x1f0], 1
push 4
push eax
call fcn.100a0680
add esp, 0xc
test eax, eax
jne 0x1009baa4
mov ecx, dword [ebp - 0x91c]
mov edi, dword [ebp - 0x928]
add ecx, 0xfffffffc
mov dword [ebp - 0x91c], ecx
cmp edi, 5
jne 0x1009b180
mov eax, dword [esi + 0x1e8]
and eax, 0xffff0000
cmp eax, 0x30000
jae 0x1009b180
mov eax, dword [esi + 0x248]
add ecx, 4
mov edx, dword [esi + 0x244]
sub eax, edx
mov dword [ebp - 0x91c], ecx
cmp eax, 4
jl 0x1009b6ff
push esi
push ecx
push edi
call fcn.100a7250
mov ecx, dword [esi + 0x294]
add esp, 0xc
mov edx, eax
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1009b196
mov eax, dword [esi + 0x244]
sub ecx, edi
mov dword [esi + 0x298], ecx
mov dword [esi + 0x240], eax
test edx, edx
jne case.0x1009a951.11
push esi
call fcn.100a0c30
add esp, 4
test eax, eax
jne case.0x1009a951.11
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
cmp dword [ebp - 0x928], eax
jne 0x1009a640
mov dword [esi + 0x98], 5
mov dword [esi + 0x9c], 1
jmp 0x1009a640
push esi
call fcn.10096b70
add esp, 4
test eax, eax
jne 0x1009baa4
push esi
call fcn.10096690
mov edi, eax
add esp, 4
test edi, edi
je 0x1009b775
cmp dword [edi + 0x1c], 7
jne 0x1009b72f
cmp byte [esi + 0x214], 0
je 0x1009b743
cmp dword [esi + 0x20], 0
jne 0x1009b246
cmp dword [esi + 0x24], 0
je 0x1009b743
push 0x43
push edi
call fcn.100974f0
add esp, 8
test eax, eax
je 0x1009b743
mov ecx, str.42704
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009b280
test dl, dl
je 0x1009b27c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009b280
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009b260
xor eax, eax
jmp 0x1009b285
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1009b743
push edi
call fcn.10097dc0
mov dh, byte [ebp - 0x915]
mov dl, 1
add esp, 4
mov byte [esi + 0x214], 0
mov byte [ebp - 0x916], dl
jmp 0x1009a640
push esi
mov dword [esi + 0x98], 0
call fcn.10096bc0
add esp, 4
test eax, eax
je case.0x1009a951.11
push esi
call fcn.10096b70
add esp, 4
test eax, eax
jne 0x1009b84d
push esi
call fcn.10096690
add esp, 4
test eax, eax
je 0x1009b800
push eax
call fcn.10097dc0
mov dl, byte [ebp - 0x916]
add esp, 4
mov dh, byte [ebp - 0x915]
mov dword [esi + 0x98], 0xa
jmp 0x1009a640
lea eax, [ebp - 0x934]
push eax
call fcn.100a1330
push dword [esi + 0x294]
lea edi, [esi + 0x294]
lea eax, [ebp - 0x934]
push eax
call fcn.100a1660
add esp, 0xc
cmp dword [ebp - 0x92c], 0
je 0x1009b86d
push edi
call fcn.100a13f0
push esi
mov dword [esi + 0x98], 0
call fcn.10096bc0
add esp, 8
test eax, eax
je 0x1009ba78
push esi
call fcn.10096b70
add esp, 4
test eax, eax
jne 0x1009ba8a
push esi
call fcn.10096690
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x1009b4e5
push ebx
call fcn.10097410
add esp, 4
cmp eax, 2
jne 0x1009b4dc
push ebx
call fcn.10097520
add esp, 4
cmp eax, 1
jne 0x1009b4dc
push 0
push 0
push ebx
call fcn.10097b50
push 2
push 0x101e3a94
push eax
call fcn.100f97b0
add esp, 0x18
push ebx
test eax, eax
jne 0x1009b4ad
call fcn.10097dc0
push dword [edi]
lea eax, [ebp - 0x934]
push eax
call fcn.100a1660
push edi
call fcn.100a13f0
push dword [ebp - 0x934]
push edi
call fcn.100a1660
add esp, 0x18
cmp dword [ebp - 0x92c], 0
je 0x1009b40b
cmp dword [esi + 0x29c], 0
jne 0x1009b419
push str.out_of_memory_n
push edi
call fcn.100a14d0
add esp, 8
lea eax, [ebp - 0x934]
push eax
call fcn.100a13b0
mov eax, dword [esi + 0xc8]
add esp, 4
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0xcc]
cmp dword [eax + ecx*4], 1
jne 0x1009b443
mov edx, dword [eax + ecx*4 + 8]
jmp 0x1009b447
mov edx, dword [eax + ecx*4 + 4]
mov eax, dword [eax + ecx*4 + 0xc]
test eax, eax
je 0x1009b454
cmp byte [eax], 0
jne 0x1009b459
mov eax, str.5432
push eax
push edx
push str.could_not_make_a_writable_connection_to_server___s:_s__n
push edi
call fcn.100a1550
add esp, 0x10
mov dword [esi + 0x98], 0
cmp dword [esi + 0xd4], 0xffffffff
je 0x1009b495
push esi
push 0
push 0x58
call fcn.100a0800
push esi
call fcn.100a08b0
push esi
call fcn.100a0c30
add esp, 0x14
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fd], 1
jmp case.0x1009a5f7.2
call fcn.10097dc0
lea eax, [ebp - 0x934]
push eax
call fcn.100a13b0
mov dl, byte [ebp - 0x916]
add esp, 8
mov dh, byte [ebp - 0x915]
mov dword [esi + 0x98], 0xa
jmp case.0x1009a5f7.2
push ebx
call fcn.10097dc0
add esp, 4
push dword [edi]
lea eax, [ebp - 0x934]
push eax
call fcn.100a1660
push edi
call fcn.100a13f0
push dword [ebp - 0x934]
push edi
call fcn.100a1660
add esp, 0x14
cmp dword [ebp - 0x92c], 0
je 0x1009b51a
cmp dword [esi + 0x29c], 0
jne 0x1009b528
push str.out_of_memory_n
push edi
call fcn.100a14d0
add esp, 8
lea eax, [ebp - 0x934]
push eax
call fcn.100a13b0
mov eax, dword [esi + 0xc8]
add esp, 4
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0xcc]
cmp dword [eax + ecx*4], 1
jne 0x1009b552
mov edx, dword [eax + ecx*4 + 8]
jmp 0x1009b556
mov edx, dword [eax + ecx*4 + 4]
mov eax, dword [eax + ecx*4 + 0xc]
test eax, eax
je 0x1009b563
cmp byte [eax], 0
jne 0x1009b568
mov eax, str.5432
push eax
push edx
push str.test__SHOW_transaction_read_only__failed_on_server___s:_s__n
push edi
call fcn.100a1550
add esp, 0x10
mov dword [esi + 0x98], 0
cmp dword [esi + 0xd4], 0xffffffff
je 0x1009b5a4
push esi
push 0
push 0x58
call fcn.100a0800
push esi
call fcn.100a08b0
push esi
call fcn.100a0c30
add esp, 0x14
mov dl, byte [ebp - 0x916]
mov dh, byte [ebp - 0x915]
mov byte [esi + 0x1fc], 1
jmp case.0x1009a5f7.2
pop edi
mov dword [esi + 0x98], 2
mov eax, 2
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0x158]
mov dword [eax], 0x80
push eax
lea eax, [esi + 0xd8]
push eax
push dword [esi + 0xd4]
call dword [sym.imp.WS2_32.dll_getsockname]
test eax, eax
jns 0x1009b69d
push 0x100
lea eax, [ebp - 0x104]
push eax
call ebx
push eax
call fcn.100a8b30
push eax
lea eax, [esi + 0x294]
push str.could_not_get_client_address_from_socket:__s_n
push eax
call fcn.100a1550
add esp, 0x18
jmp case.0x1009a951.11
push 0x100
lea eax, [ebp - 0x104]
push eax
call ebx
push eax
call fcn.100a8b30
push eax
lea eax, [esi + 0x294]
push str.could_not_get_socket_error_status:__s_n
push eax
call fcn.100a1550
add esp, 0x18
jmp case.0x1009a951.11
movsx eax, al
push eax
lea eax, [esi + 0x294]
push str.received_invalid_response_to_SSL_negotiation:__c_n
push eax
call fcn.100a1550
add esp, 0xc
jmp case.0x1009a951.11
mov eax, dword [esi + 0x244]
mov dword [esi + 0x240], eax
mov eax, dword [esi + 0x4c]
mov al, byte [eax]
cmp al, 0x72
je 0x1009b6bd
cmp al, 0x76
je 0x1009b6bd
mov byte [esi + 0x275], 0
pop edi
mov dword [esi + 0x98], 3
mov eax, 2
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push str.server_does_not_support_SSL__but_SSL_was_required_n
jmp 0x1009bb16
movsx eax, cl
push eax
lea eax, [esi + 0x294]
push str.expected_authentication_request_from_server__but_received__c_n
push eax
call fcn.100a1550
add esp, 0xc
jmp case.0x1009a951.11
push 0x52
lea eax, [esi + 0x294]
push str.expected_authentication_request_from_server__but_received__c_n
push eax
call fcn.100a1550
add esp, 0xc
jmp case.0x1009a951.11
lea eax, [edx + 4]
push esi
push eax
call fcn.100a0290
add esp, 8
test eax, eax
jne case.0x1009a951.11
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
lea eax, [edi + edx]
jmp 0x1009b702
lea eax, [esi + 0x294]
push str.unexpected_message_from_server_during_startup_n
push eax
call fcn.100a1660
add esp, 8
mov edx, dword [esi + 0x298]
lea ecx, [esi + 0x294]
test edx, edx
je 0x1009b75c
mov eax, dword [ecx]
cmp byte [edx + eax - 1], 0xa
je 0x1009b767
push 0xa
push ecx
call fcn.100a16b0
add esp, 8
push edi
call fcn.10097dc0
add esp, 4
jmp case.0x1009a951.11
mov eax, dword [esi + 0x1e8]
and eax, 0xffff0000
cmp eax, 0x30000
jae 0x1009b7bb
pop edi
mov dword [esi + 0x98], 6
mov eax, 2
mov dword [esi + 0x20c], 0
mov dword [esi + str.PGDATESTYLE], 0x101e4258
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x1ec], 0x11300
jl 0x1009b800
mov eax, dword [esi + 0x74]
test eax, eax
je 0x1009b800
mov ecx, str.read_write
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009b7f3
test dl, dl
je 0x1009b7ef
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009b7f3
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009b7d3
xor eax, eax
jmp 0x1009b7f8
sbb eax, eax
or eax, 1
test eax, eax
je 0x1009ba44
mov eax, dword [esi + 0x200]
test eax, eax
je 0x1009b82d
push eax
push dword [esi + 0x208]
call fcn.101d20f0
add esp, 8
mov dword [esi + 0x200], 0
mov dword [esi + 0x204], 0
pop edi
mov dword [esi + 0x98], 0
mov eax, 3
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x98], 0xa
mov eax, 1
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push str.out_of_memory_n
push edi
call fcn.100a14d0
jmp 0x1009bb22
cmp byte [esi + 0x275], 0
je 0x1009b90c
cmp byte [esi + 0x276], 0
jne 0x1009b90c
cmp byte [esi + 0x274], 0
jne 0x1009b90c
push 4
lea eax, [ebp - 0x938]
mov dword [ebp - 0x938], 0x2f16d204
push eax
push 0
push esi
call fcn.1009cae0
add esp, 0x10
test eax, eax
je 0x1009b8ec
push 0x100
lea eax, [ebp - 0x104]
push eax
call ebx
push eax
call fcn.100a8b30
push eax
lea eax, [esi + 0x294]
push str.could_not_send_SSL_negotiation_packet:__s_n
push eax
call fcn.100a1550
add esp, 0x18
jmp case.0x1009a951.11
pop edi
mov dword [esi + 0x98], 7
mov eax, 1
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x1e8]
and eax, 0xffff0000
push 0x101e4258
cmp eax, 0x30000
lea eax, [ebp - 0x928]
push eax
push esi
jb 0x1009b932
call fcn.100a3040
jmp 0x1009b937
call fcn.100a1cf0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x1009b956
lea eax, [esi + 0x294]
push str.out_of_memory_n
push eax
call fcn.100a14d0
jmp 0x1009bb22
push dword [ebp - 0x928]
push edi
push 0
push esi
call fcn.1009cae0
add esp, 0x10
test eax, eax
je 0x1009b9a0
push 0x100
lea eax, [ebp - 0x104]
push eax
call ebx
push eax
call fcn.100a8b30
push eax
lea eax, [esi + 0x294]
push str.could_not_send_startup_packet:__s_n
push eax
call fcn.100a1550
push edi
call fcn.100f385c
add esp, 0x1c
jmp case.0x1009a951.11
push edi
call fcn.100f385c
add esp, 4
mov dword [esi + 0x98], 4
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push esi
mov dword [esi + 0x98], 0
call fcn.100a1860
add esp, 4
sub eax, 1
je 0x1009bada
sub eax, 1
je 0x1009baba
sub eax, 1
jne case.0x1009a951.11
cmp dword [esi + 0x1ec], 0x11300
jl 0x1009b800
mov eax, dword [esi + 0x74]
test eax, eax
je 0x1009b800
mov ecx, str.read_write
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x1009ba37
test dl, dl
je 0x1009ba33
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x1009ba37
add eax, 2
add ecx, 2
test dl, dl
jne 0x1009ba17
xor eax, eax
jmp 0x1009ba3c
sbb eax, eax
or eax, 1
test eax, eax
jne 0x1009b800
lea eax, [ebp - 0x934]
push eax
push esi
call fcn.100a00e0
add esp, 8
test al, al
je case.0x1009a951.11
push str.SHOW_transaction_read_only
push esi
mov dword [esi + 0x98], 0
call fcn.100961b0
add esp, 8
test eax, eax
jne 0x1009ba8a
lea eax, [ebp - 0x934]
push eax
push esi
call fcn.100a0080
jmp 0x1009bb22
lea eax, [ebp - 0x934]
mov dword [esi + 0x98], 9
push eax
push esi
call fcn.100a0080
add esp, 8
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x98], 6
mov eax, 2
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
pop edi
mov dword [esi + 0x98], 6
mov eax, 1
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100e40d6
mov esp, ebp
pop ebp
ret
push ecx
lea eax, [esi + 0x294]
push str.invalid_connection_state__d__probably_indicative_of_memory_corruption_n
push eax
call fcn.100a1550
add esp, 0xc
jmp case.0x1009a951.11
push str.invalid_connection_state__probably_indicative_of_memory_corruption_n
lea eax, [esi + 0x294]
push eax
call fcn.100a1660
add esp, 8
mov dword [esi + 0x98], 1
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100e40d6
mov esp, ebp
pop ebp
ret