Function at 0x4053e0
Capabilities:
Access peb ldr_data
Act as tcp client
Check if file exists
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Delete file
Get kernel32 base address
Get socket status
Resolve dns
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x41cd33
mov eax, dword fs:[0]
push eax
sub esp, 0x1a0
mov eax, dword [0x423044]
xor eax, esp
mov dword [esp + 0x198], eax
push ebx
push esi
push edi
mov eax, dword [0x423044]
xor eax, esp
push eax
lea eax, [esp + 0x1b0]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x34], edi
call dword [section..data]
xor esi, esi
mov dword [esp + 0x44], esi
call fcn.00409f20
mov dword [esp + 0x14], eax
mov byte [eax + 0x21], 1
mov eax, dword [esp + 0x14]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x14]
mov dword [eax], eax
mov eax, dword [esp + 0x14]
mov dword [eax + 8], eax
mov dword [esp + 0x18], esi
or eax, 0xffffffff
mov dword [esp + 0x1b8], esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x1c], eax
mov eax, dword [0x424614]
mov edx, dword [eax + 0xc]
mov ecx, 0x424614
call edx
lea esi, [eax + 0x10]
mov dword [esp + 0x2c], esi
lea eax, [esp + 0x30]
lea ebx, [edi + 0x10]
push str.update.cfg
push eax
mov ecx, ebx
mov byte [esp + 0x1c0], 1
call fcn.00408720
add esp, 8
mov byte [esp + 0x1b8], 2
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4054fe
cmp dword [esi + 0xc], 0
jl 0x4054ed
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4054ed
call fcn.00409630
mov dword [esp + 0x28], eax
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4054e0
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x28]
add ecx, 0x10
mov dword [esp + 0x2c], ecx
jmp 0x4054fe
mov edi, dword [ecx - 0xc]
push ecx
lea eax, [esp + 0x30]
call fcn.004094d0
mov edi, dword [esp + 0x34]
mov byte [esp + 0x1b8], 1
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x405526
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x2c]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
mov esi, eax
test esi, esi
jne 0x405541
push connect
jmp 0x405f71
push edi
call fcn.00406130
test eax, eax
jne 0x405555
push connect
jmp 0x405f71
lea ecx, [esp + 0x3c]
push str.KWSUpd
push ecx
mov ecx, ebx
call fcn.00408720
lea edx, [esp + 0x30]
push 0x41fcf4
push edx
mov ecx, eax
mov byte [esp + 0x1c8], 3
call fcn.00408720
lea ecx, [esp + 0x40]
push str.ver.dat
push ecx
mov ecx, eax
mov byte [esp + 0x1d0], 4
call fcn.00408720
mov eax, dword [eax]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileA]
add esp, 0x18
push eax
call esi
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4055c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1b8], 3
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4055ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1b8], 1
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405616
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x38]
push str.KWSUpd
push ecx
mov ecx, ebx
call fcn.00408720
lea edx, [esp + 0x38]
push 0x41fcf4
mov bl, 5
push edx
mov ecx, eax
mov byte [esp + 0x1c8], bl
call fcn.00408720
lea ecx, [esp + 0x4c]
push str.index.dat
push ecx
mov ecx, eax
mov byte [esp + 0x1d0], 6
call fcn.00408720
mov eax, dword [eax]
add esp, 0x18
push eax
call esi
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x405682
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1b8], bl
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4056a9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1b8], 1
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4056d1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [edi + 0x38]
mov edx, dword [ecx]
lea eax, [edi + 0x34]
mov ecx, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
test ecx, ecx
mov esi, dword [eax + 4]
je 0x4056f2
cmp ecx, eax
je 0x4056f7
call fcn.0040ccd6
cmp dword [esp + 0x24], esi
je 0x40591e
push 0
push 1
push 2
call dword [sym.imp.WS2_32.dll_socket]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x405908
mov esi, dword [esp + 0x20]
xor eax, eax
test esi, esi
mov dword [esp + 0x19a], eax
mov dword [esp + 0x19e], eax
mov dword [esp + 0x1a2], eax
mov word [esp + 0x1a6], ax
mov word [esp + 0x198], 2
jne 0x40574e
call fcn.0040ccd6
mov ecx, dword [esp + 0x24]
cmp ecx, dword [esi + 4]
jne 0x40575c
call fcn.0040ccd6
mov edx, dword [esp + 0x24]
mov esi, dword [edx + 0x14]
or edi, 0xffffffff
test esi, esi
je 0x40579c
push esi
call dword [sym.imp.WS2_32.dll_inet_addr]
mov edi, eax
cmp edi, 0xffffffff
jne 0x40579c
push str.255.255.255.255
push esi
call fcn.0040d1f3
add esp, 8
test eax, eax
je 0x40579c
push esi
call dword [sym.imp.WS2_32.dll_gethostbyname]
test eax, eax
je 0x40579c
mov eax, dword [eax + 0xc]
mov ecx, dword [eax]
mov edi, dword [ecx]
push edi
call dword [sym.imp.WS2_32.dll_ntohl]
push eax
call dword [sym.imp.WS2_32.dll_htonl]
cmp eax, 0xffffffff
mov dword [esp + 0x19c], eax
jne 0x4057d3
push ebx
call dword [sym.imp.WS2_32.dll_closesocket]
lea esi, [esp + 0x20]
call fcn.00409cb0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
jmp 0x4056e7
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
cmp esi, dword [edx + 4]
jne 0x4057e5
call fcn.0040ccd6
movzx eax, word [esi + 0x18]
push eax
call dword [sym.imp.WS2_32.dll_htons]
lea ecx, [esp + 0x44]
push ecx
push 0x8004667e
push ebx
mov word [esp + 0x1a6], ax
mov dword [esp + 0x50], 1
call dword [sym.imp.WS2_32.dll_ioctlsocket]
cmp eax, 0xffffffff
mov dword [esp + 0x1c], eax
je 0x405908
push 0x10
lea edx, [esp + 0x19c]
push edx
push ebx
call dword [sym.imp.WS2_32.dll_connect]
mov esi, eax
cmp esi, 0xffffffff
mov dword [esp + 0x1c], esi
jne 0x405846
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov dword [esp + 0x1c], eax
mov esi, eax
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
cmp edi, dword [eax + 4]
jne 0x405858
call fcn.0040ccd6
mov ecx, dword [edi + 0x14]
push esi
push ecx
push str.Connect_to__s_with_retcode__d
call fcn.004023f0
add esp, 0xc
cmp esi, 0x2733
je 0x405882
cmp esi, 0x2734
je 0x405882
test esi, esi
jne 0x405908
mov edx, dword [esp + 0x20]
cmp edi, dword [edx + 4]
jne 0x405890
call fcn.0040ccd6
mov edi, dword [esp + 0x24]
sub esp, 0x10
mov eax, esp
mov dword [esp + 0x60], esp
add edi, 0x10
push eax
call fcn.00406040
push ebx
lea esi, [esp + 0x80]
call fcn.0040a000
add esp, 0x14
mov byte [esp + 0x1b8], 7
mov ecx, dword [eax]
lea edx, [esp + 0x5c]
lea edi, [eax + 4]
push edx
mov dword [esp + 0x5c], ecx
call fcn.00406040
lea eax, [esp + 0x58]
push eax
lea edi, [esp + 0x84]
lea ebx, [esp + 0x14]
mov byte [esp + 0x1bc], 8
call fcn.00408b00
lea esi, [esp + 0x5c]
call fcn.004060c0
lea esi, [esp + 0x70]
mov byte [esp + 0x1b8], 1
call fcn.004060c0
lea esi, [esp + 0x20]
call fcn.00409cb0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x28]
jmp 0x4056e7
cmp dword [esp + 0x18], 0
jne 0x40599a
mov ecx, dword [0x425498]
mov edx, dword [ecx]
mov eax, dword [edx + 0x18]
push ioctlsocket
call eax
mov byte [esp + 0x1b8], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40595f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1b8], 0xffffffff
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push eax
lea ecx, [esp + 0x14]
push ecx
mov esi, ecx
push edx
push esi
lea ecx, [esp + 0x30]
push ecx
mov edi, esi
call fcn.00409ba0
mov edx, dword [esp + 0x14]
push edx
call fcn.0040ab1e
add esp, 4
xor eax, eax
jmp 0x405fda
mov dword [esp + 0x28], 0
cmp byte [0x425490], 0
jne 0x405b33
nop
mov eax, dword [esp + 0x14]
mov dword [esp + 0x8c], 0
mov esi, dword [eax]
lea ebx, [esp + 0x10]
test ebx, ebx
mov edi, dword [esp + 0x14]
je 0x4059d5
lea ecx, [esp + 0x10]
cmp ebx, ecx
je 0x4059da
call fcn.0040ccd6
cmp esi, edi
je 0x405abf
test ebx, ebx
jne 0x4059eb
call fcn.0040ccd6
cmp esi, dword [ebx + 4]
jne 0x4059f5
call fcn.0040ccd6
mov edx, dword [esi + 0xc]
cmp edx, dword [esp + 0x40]
jle 0x405a0f
cmp esi, dword [ebx + 4]
jne 0x405a08
call fcn.0040ccd6
mov eax, dword [esi + 0xc]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x8c]
xor edi, edi
test eax, eax
jbe 0x405a44
lea esp, [esp]
cmp esi, dword [ebx + 4]
jne 0x405a2a
call fcn.0040ccd6
mov ecx, dword [esp + edi*4 + 0x90]
cmp ecx, dword [esi + 0xc]
mov eax, dword [esp + 0x8c]
je 0x405a44
add edi, 1
cmp edi, eax
jb 0x405a20
cmp edi, eax
jne 0x405a69
cmp eax, 0x40
jae 0x405a69
cmp esi, dword [ebx + 4]
jne 0x405a57
call fcn.0040ccd6
mov edx, dword [esi + 0xc]
mov dword [esp + edi*4 + 0x90], edx
add dword [esp + 0x8c], 1
cmp byte [esi + 0x21], 0
je 0x405a79
call fcn.0040ccd6
jmp 0x4059c5
mov eax, dword [esi + 8]
cmp byte [eax + 0x21], 0
jne 0x405a9f
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x21], 0
jne 0x4059c5
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x21], 0
je 0x405a90
jmp 0x4059c5
mov eax, dword [esi + 4]
cmp byte [eax + 0x21], 0
jne 0x405ab8
cmp esi, dword [eax + 8]
jne 0x405ab8
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x21], 0
je 0x405aa8
mov esi, eax
jmp 0x4059c5
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x48]
push eax
push 0
lea ecx, [esp + 0x94]
push ecx
push 0
add edx, 1
push edx
mov dword [esp + 0x5c], 1
mov dword [esp + 0x60], 0
call dword [sym.imp.WS2_32.dll_select]
mov edi, eax
mov dword [esp + 0x1c], edi
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov esi, eax
push esi
push str.Select_socket_ret__d
call fcn.004023f0
add esp, 8
cmp edi, 0xffffffff
jne 0x405b1b
cmp esi, 0x2714
je 0x4059b0
test edi, edi
jg 0x405b33
mov eax, dword [esp + 0x28]
add eax, 1
cmp eax, 0x14
mov dword [esp + 0x28], eax
jb 0x4059a2
cmp dword [esp + 0x1c], 0
jge 0x405b65
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
push eax
push str.Connect_socket_select_failed_with__d
call fcn.004023f0
mov ecx, dword [0x425498]
mov eax, dword [ecx]
mov edx, dword [eax + 0x18]
add esp, 8
push ioctlsocket
call edx
jmp 0x405937
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
lea ecx, [esp + 0x10]
mov ebx, ecx
mov dword [esp + 0x20], ebx
mov edi, eax
mov dword [esp + 0x24], edi
jmp 0x405b80
test ebx, ebx
mov esi, dword [esp + 0x14]
je 0x405b90
lea ecx, [esp + 0x10]
cmp ebx, ecx
je 0x405b95
call fcn.0040ccd6
cmp edi, esi
je 0x405c19
test ebx, ebx
jne 0x405ba6
call fcn.0040ccd6
cmp edi, dword [ebx + 4]
jne 0x405bb0
call fcn.0040ccd6
mov eax, dword [edi + 0xc]
lea edx, [esp + 0x8c]
push edx
push eax
call sub.WS2_32.dll___WSAFDIsSet
test eax, eax
jne 0x405c19
cmp byte [edi + 0x21], al
je 0x405bd1
call fcn.0040ccd6
jmp 0x405b80
mov ecx, dword [edi + 8]
cmp byte [ecx + 0x21], 0
jne 0x405bf0
mov eax, dword [ecx]
cmp byte [eax + 0x21], 0
jne 0x405bec
mov ecx, eax
mov eax, dword [ecx]
cmp byte [eax + 0x21], 0
je 0x405be2
mov edi, ecx
jmp 0x405b77
mov eax, dword [edi + 4]
cmp byte [eax + 0x21], 0
jne 0x405b75
lea ecx, [ecx]
cmp edi, dword [eax + 8]
jne 0x405b75
mov edi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x21], 0
je 0x405c00
jmp 0x405b75
test ebx, ebx
mov esi, dword [esp + 0x14]
je 0x405c29
lea ecx, [esp + 0x10]
cmp ebx, ecx
je 0x405c2e
call fcn.0040ccd6
cmp edi, esi
je 0x405925
mov eax, dword [esp + 0x34]
add eax, 0x18
mov dword [esp + 0x1c], eax
test ebx, ebx
jne 0x405c4a
call fcn.0040ccd6
cmp edi, dword [ebx + 4]
jne 0x405c54
call fcn.0040ccd6
mov ecx, dword [edi + 0xc]
push ecx
call dword [sym.imp.WS2_32.dll_closesocket]
cmp edi, dword [ebx + 4]
jne 0x405c68
call fcn.0040ccd6
mov eax, dword [esp + 0x1c]
mov edx, dword [edi + 0x10]
mov eax, dword [eax]
lea esi, [edx - 0x10]
lea ebx, [eax - 0x10]
cmp esi, ebx
mov dword [esp + 0x28], edx
je 0x405dfb
cmp dword [ebx + 0xc], 0
jl 0x405d15
mov ecx, dword [esi]
cmp ecx, dword [ebx]
jne 0x405d15
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x405cb8
cmp eax, dword [esi]
jne 0x405cb8
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x405cee
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 1
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x405f2c
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
add eax, 1
push eax
add esi, 0x10
push esi
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.0040b073
add esp, 0x10
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x405d07
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [esp + 0x1c]
add edi, 0x10
mov dword [eax], edi
jmp 0x405df7
mov esi, dword [edx - 0xc]
test esi, esi
jne 0x405d7d
cmp dword [ebx + 4], 0
mov esi, dword [ebx]
je 0x405dfb
cmp dword [ebx + 0xc], 0
lea ecx, [ebx + 0xc]
jge 0x405d50
cmp dword [eax - 8], 0
jl 0x405f31
mov ecx, dword [esp + 0x1c]
mov dword [eax - 0xc], 0
mov edx, dword [ecx]
mov byte [edx], 0
jmp 0x405dfb
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x405d66
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov edx, dword [esi]
mov eax, dword [edx + 0xc]
mov ecx, esi
call eax
mov ecx, dword [esp + 0x1c]
add eax, 0x10
mov dword [ecx], eax
jmp 0x405dfb
test edx, edx
je 0x405f31
mov edx, dword [eax - 0xc]
mov edi, dword [esp + 0x28]
sub edi, eax
mov eax, dword [ebx + 8]
mov ecx, 1
sub ecx, dword [ebx + 0xc]
sub eax, esi
or eax, ecx
mov dword [esp + 0x38], edx
jge 0x405dae
mov eax, dword [esp + 0x1c]
mov ecx, esi
call fcn.004095e0
cmp edi, dword [esp + 0x38]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
push esi
ja 0x405dc8
lea ecx, [eax + edi]
push ecx
push esi
push eax
call fcn.0040b018
jmp 0x405dd4
mov edx, dword [esp + 0x2c]
push edx
push esi
push eax
call fcn.0040b073
add esp, 0x10
test esi, esi
jl 0x405f31
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
cmp esi, dword [ecx - 8]
jg 0x405f31
mov dword [ecx - 0xc], esi
mov eax, dword [eax]
mov byte [esi + eax], 0
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi]
push ecx
push str.ver.dat
push str.Try_download__s_from__s
call fcn.004023f0
mov edx, dword [esp + 0x2c]
add esp, 0xc
push edi
push edx
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x1c]
push ecx
call fcn.00408be0
mov edx, dword [esp + 0x34]
mov ebx, dword [edx + 0x1c]
mov esi, dword [esi]
push 0
mov ecx, str.ver.dat
call fcn.00406880
test eax, eax
je 0x405f06
mov eax, dword [esp + 0x14]
mov esi, dword [eax]
lea eax, [esp + 0x10]
mov edi, eax
test edi, edi
mov ebx, dword [esp + 0x14]
je 0x405e62
lea ecx, [esp + 0x10]
cmp edi, ecx
je 0x405e67
call fcn.0040ccd6
cmp esi, ebx
je 0x405ed7
test edi, edi
jne 0x405e74
call fcn.0040ccd6
cmp esi, dword [edi + 4]
jne 0x405e7e
call fcn.0040ccd6
mov edx, dword [esi + 0xc]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
cmp byte [esi + 0x21], 0
je 0x405e95
call fcn.0040ccd6
jmp 0x405e52
mov eax, dword [esi + 8]
cmp byte [eax + 0x21], 0
jne 0x405eb4
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x21], 0
jne 0x405e52
mov esi, eax
mov eax, dword [esi]
cmp byte [eax + 0x21], 0
je 0x405ea8
jmp 0x405e52
mov eax, dword [esi + 4]
cmp byte [eax + 0x21], 0
jne 0x405ed0
lea ecx, [ecx]
cmp esi, dword [eax + 8]
jne 0x405ed0
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x21], 0
je 0x405ec0
mov esi, eax
jmp 0x405e52
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 4]
push ecx
lea ecx, [esp + 0x14]
call fcn.00409120
mov eax, dword [esp + 0x14]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], 0
mov dword [eax], eax
mov eax, dword [esp + 0x14]
mov dword [eax + 8], eax
jmp 0x405f18
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
lea ecx, [esp + 0x10]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
cmp dword [esp + 0x18], 0
je 0x405f3b
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
jmp 0x405c41
jmp fcn.00409ee0
push 0x80070057
call fcn.004045b0
push str.index.dat
push str.and_download__s_from_the_above_server
call fcn.004023f0
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x3c]
mov esi, dword [ecx]
mov ebx, dword [eax + 0x1c]
add esp, 8
push 0
mov ecx, str.index.dat
call fcn.00406880
mov esi, eax
test esi, esi
jne 0x405f7e
push connect
mov ecx, dword [0x425498]
mov edx, dword [ecx]
mov eax, dword [edx + 0x18]
call eax
mov byte [esp + 0x1b8], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405fa6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1b8], 0xffffffff
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
push eax
lea ecx, [esp + 0x14]
push ecx
mov edi, ecx
push edx
push edi
lea ecx, [esp + 0x30]
push ecx
call fcn.00409ba0
mov edx, dword [esp + 0x14]
push edx
call fcn.0040ab1e
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x1b0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x198]
xor ecx, esp
call fcn.0040af86
mov esp, ebp
pop ebp
ret