Function at 0x49fe40
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:
push ebp
mov ebp, esp
sub esp, 0x1a0
mov eax, dword [0x535b70]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
test esi, esi
je 0x4a12f5
cmp dword [esi + 4], 0
je 0x4a12f5
mov eax, dword [0x542098]
push edi
mov edi, dword [0x54209c]
test eax, eax
jne 0x49fe7c
mov edi, dword [esi + 8]
test edi, edi
mov ecx, 0x15
push ebx
cmove edi, ecx
lea ebx, [esi + 0x18]
xorps xmm0, xmm0
movups xmmword [ebx], xmm0
test eax, eax
je 0x49fe97
push eax
jmp 0x49fe9a
push dword [esi + 4]
call dword [sym.imp.WS2_32.dll_gethostbyname]
mov ecx, eax
test ecx, ecx
jne 0x49feca
push str.gethostbyname_failed
push eax
push 9
call fcn.0048b8c0
add esp, 0xc
or eax, 0xffffffff
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
cmp word [ecx + 0xa], 4
jbe 0x49fef6
push str.gethostbyname_address_mismatch
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
or eax, 0xffffffff
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
mov eax, 2
mov word [ebx], ax
movsx eax, word [ecx + 0xa]
push eax
mov eax, dword [ecx + 0xc]
push dword [eax]
lea eax, [esi + 0x1c]
push eax
call fcn.004bd0f0
add esp, 0xc
push edi
call dword [sym.imp.WS2_32.dll_htons]
push 0
push 1
push 2
mov word [esi + 0x1a], ax
call dword [sym.imp.WS2_32.dll_socket]
mov dword [esi + 0x2c], eax
cmp eax, 0xffffffff
jne 0x49ff58
push str.socket_failed
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
or eax, 0xffffffff
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
push 0x10
push ebx
push eax
call dword [sym.imp.WS2_32.dll_connect]
test eax, eax
jns 0x49ff7c
push str.Failed_to_create_a_connection
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
jmp 0x4a12d1
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a12d1
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a12d1
cmp ecx, eax
jg 0x4a12d1
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a0002
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a000f
xor eax, eax
jmp 0x4a0046
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a12b0
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [ecx + esi + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a0052
test eax, eax
je 0x4a12d1
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x49ff86
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a00c2
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a00c2
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a00c2
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a00c2
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a00e7
cmp byte [edx], 0xa
je 0x4a00dd
inc edx
cmp edx, edi
jb 0x4a00c2
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x49ff86
inc edx
cmp edx, edi
jb 0x4a0068
jmp 0x49ff86
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a010a
nop dword [eax + eax]
cmp byte [edx], 0xa
je 0x4a010a
inc edx
cmp edx, edi
jb 0x4a0100
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a0115
mov bl, byte [edx + 1]
inc edx
cmp bl, 0xd
lea eax, [edx + 1]
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
lea eax, [ecx - 0xc8]
cmp eax, 0x64
jae 0x4a12d1
cmp dword [0x542098], 0
mov ebx, dword [sym.imp.WS2_32.dll_send]
je 0x4a0894
mov eax, dword [0x5420a0]
test eax, eax
je 0x4a05cb
push eax
push str.USER__s_r_n
lea eax, [ebp - 0x194]
push 0x190
push eax
call fcn.0044ad40
lea ecx, [ebp - 0x194]
mov byte [ebp - 5], 0
add esp, 0x10
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a0180
push 0
sub ecx, edx
lea eax, [ebp - 0x194]
push ecx
push eax
push dword [esi + 0x2c]
call ebx
mov edi, eax
test edi, edi
js 0x4a0bc4
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0657
nop dword [eax]
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0657
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a0657
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a0657
cmp ecx, eax
jg 0x4a0657
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a022c
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a0239
xor eax, eax
jmp 0x4a0270
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a0614
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [ecx + esi + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a027c
test eax, eax
je 0x4a0657
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a01b0
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a02f0
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a02f0
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a02f0
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a02f0
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0315
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a030b
inc edx
cmp edx, edi
jb 0x4a02f0
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a01b0
inc edx
cmp edx, edi
jb 0x4a0292
jmp 0x4a01b0
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a033a
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a033a
inc edx
cmp edx, edi
jb 0x4a0330
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a0345
mov bl, byte [edx + 1]
inc edx
lea eax, [edx + 1]
cmp bl, 0xd
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, 1
je 0x4a05c5
sub eax, 1
je 0x4a03a5
sub eax, 1
jne 0x4a0657
mov eax, dword [0x5420a4]
test eax, eax
jne 0x4a03b2
push str.PASS_anonymous__r_n
lea eax, [ebp - 0x194]
push 0x190
push eax
call fcn.0044ad40
add esp, 0xc
jmp 0x4a03cc
mov eax, dword [0x5420a4]
test eax, eax
je 0x4a05c5
push eax
push str.PASS__s_r_n
lea eax, [ebp - 0x194]
push 0x190
push eax
call fcn.0044ad40
add esp, 0x10
lea ecx, [ebp - 0x194]
mov byte [ebp - 5], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a03e0
mov ebx, dword [sym.imp.WS2_32.dll_send]
lea eax, [ebp - 0x194]
push 0
sub ecx, edx
push ecx
push eax
push dword [esi + 0x2c]
call ebx
mov edi, eax
test edi, edi
js 0x4a0bc4
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a05cb
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a05c5
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a05c5
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a05c5
cmp ecx, eax
jg 0x4a05c5
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a048e
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a049b
xor eax, eax
jmp 0x4a04d2
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a05ef
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [ecx + esi + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a04de
test eax, eax
je 0x4a05c5
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a0412
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a0550
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a0550
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a0550
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a0550
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0575
nop
cmp byte [edx], 0xa
je 0x4a056b
inc edx
cmp edx, edi
jb 0x4a0550
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a0412
inc edx
cmp edx, edi
jb 0x4a04f4
jmp 0x4a0412
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a059a
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a059a
inc edx
cmp edx, edi
jb 0x4a0590
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a05a5
mov bl, byte [edx + 1]
inc edx
cmp bl, 0xd
lea eax, [edx + 1]
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
cmp ecx, 0x190
jge 0x4a12d1
mov ebx, dword [sym.imp.WS2_32.dll_send]
mov eax, dword [0x5420a8]
test eax, eax
js 0x4a12d1
cmp eax, 1
jle 0x4a067d
cmp eax, 2
je 0x4a0901
jmp 0x4a12d1
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
mov edi, dword [sym.imp.WS2_32.dll_closesocket]
add esp, 0xc
push dword [esi + 0x2c]
call edi
mov dword [esi + 0x2c], 0xffffffff
jmp 0x4a05c5
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
mov edi, dword [sym.imp.WS2_32.dll_closesocket]
add esp, 0xc
push dword [esi + 0x2c]
call edi
mov dword [esi + 0x2c], 0xffffffff
push dword [esi + 0x2c]
call edi
pop ebx
pop edi
mov dword [esi + 0x2c], 0xffffffff
or eax, 0xffffffff
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
mov edi, dword [sym.imp.WS2_32.dll_closesocket]
push dword [esi + 0x2c]
call edi
pop ebx
pop edi
mov dword [esi + 0x2c], 0xffffffff
or eax, 0xffffffff
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
push dword [esi + 4]
lea eax, [ebp - 0x194]
push str.SITE__s_r_n
push 0x190
push eax
call fcn.0044ad40
lea ecx, [ebp - 0x194]
mov byte [ebp - 5], 0
add esp, 0x10
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a06a6
push 0
sub ecx, edx
lea eax, [ebp - 0x194]
push ecx
push eax
push dword [esi + 0x2c]
call ebx
mov edi, eax
test edi, edi
js 0x4a0bc4
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a08ee
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a08e8
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a08e8
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a08e8
cmp ecx, eax
jg 0x4a08e8
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a074e
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a075b
xor eax, eax
jmp 0x4a0792
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a08bd
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [esi + ecx + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a079e
test eax, eax
je 0x4a08e8
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a06d2
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a0810
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a0810
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a0810
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a0810
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0835
nop
cmp byte [edx], 0xa
je 0x4a082b
inc edx
cmp edx, edi
jb 0x4a0810
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a06d2
inc edx
cmp edx, edi
jb 0x4a07b4
jmp 0x4a06d2
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a085a
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a085a
inc edx
cmp edx, edi
jb 0x4a0850
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a0865
mov bl, byte [edx + 1]
inc edx
cmp bl, 0xd
lea eax, [edx + 1]
mov ebx, dword [sym.imp.WS2_32.dll_send]
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
lea eax, [ecx - 0xc8]
cmp eax, 0x64
jae 0x4a08ee
mov dword [0x5420a8], 1
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x4a0e31
push str.USER_anonymous_r_n
lea eax, [ebp - 0xcc]
push 0xc8
push eax
call fcn.0044ad40
add esp, 0xc
jmp 0x4a0e4b
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
mov edi, dword [sym.imp.WS2_32.dll_closesocket]
add esp, 0xc
push dword [esi + 0x2c]
call edi
mov ebx, dword [sym.imp.WS2_32.dll_send]
mov dword [esi + 0x2c], 0xffffffff
jmp 0x4a08f4
mov ebx, dword [sym.imp.WS2_32.dll_send]
mov edi, dword [sym.imp.WS2_32.dll_closesocket]
cmp dword [0x5420a8], 1
je 0x4a065d
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x10]
push eax
lea eax, [ebp - 0x194]
test ecx, ecx
jne 0x4a0927
push str.USER_anonymous__s_r_n
push 0x190
push eax
call fcn.0044ad40
add esp, 0x10
jmp 0x4a093b
push ecx
push str.USER__s__s_r_n
push 0x190
push eax
call fcn.0044ad40
add esp, 0x14
lea ecx, [ebp - 0x194]
mov byte [ebp - 5], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a0948
push 0
sub ecx, edx
lea eax, [ebp - 0x194]
push ecx
push eax
push dword [esi + 0x2c]
call ebx
mov edi, eax
test edi, edi
js 0x4a0bc4
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0b5d
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0b57
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a0b57
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a0b57
cmp ecx, eax
jg 0x4a0b57
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a09f0
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a09fd
xor eax, eax
jmp 0x4a0a34
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a0b36
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [esi + ecx + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a0a40
test eax, eax
je 0x4a0b57
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a0974
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a0ab0
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a0ab0
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a0ab0
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a0ab0
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0ad5
cmp byte [edx], 0xa
je 0x4a0acb
inc edx
cmp edx, edi
jb 0x4a0ab0
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a0974
inc edx
cmp edx, edi
jb 0x4a0a56
jmp 0x4a0974
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a0afa
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a0afa
inc edx
cmp edx, edi
jb 0x4a0af0
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a0b05
mov bl, byte [edx + 1]
inc edx
cmp bl, 0xd
lea eax, [edx + 1]
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
lea eax, [ecx - 0x64]
cmp eax, 0x64
jb 0x4a0dbc
lea eax, [ecx - 0xc8]
cmp eax, 0x64
jb 0x4a0dbc
jmp 0x4a0b57
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi + 0x2c], 0xffffffff
mov ebx, dword [sym.imp.WS2_32.dll_send]
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x4a0b7f
push str.PASS_anonymous__r_n
lea eax, [ebp - 0x194]
push 0x190
push eax
call fcn.0044ad40
add esp, 0xc
jmp 0x4a0b99
push eax
push str.PASS__s_r_n
lea eax, [ebp - 0x194]
push 0x190
push eax
call fcn.0044ad40
add esp, 0x10
lea ecx, [ebp - 0x194]
mov byte [ebp - 5], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a0ba6
push 0
sub ecx, edx
lea eax, [ebp - 0x194]
push ecx
push eax
push dword [esi + 0x2c]
call ebx
mov edi, eax
test edi, edi
jns 0x4a0bf8
push str.send_failed
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_closesocket]
pop ebx
mov eax, edi
mov dword [esi + 0x2c], 0xffffffff
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0dfe
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a0dfe
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a0dfe
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a0dfe
cmp ecx, eax
jg 0x4a0dfe
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a0c7e
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a0c8b
xor eax, eax
jmp 0x4a0cc2
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a0dd9
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [esi + ecx + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a0cce
test eax, eax
je 0x4a0dfe
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a0c02
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a0d40
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a0d40
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a0d40
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a0d40
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0d65
nop
cmp byte [edx], 0xa
je 0x4a0d5b
inc edx
cmp edx, edi
jb 0x4a0d40
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a0c02
inc edx
cmp edx, edi
jb 0x4a0ce4
jmp 0x4a0c02
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a0d8a
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a0d8a
inc edx
cmp edx, edi
jb 0x4a0d80
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a0d95
mov bl, byte [edx + 1]
inc edx
cmp bl, 0xd
lea eax, [edx + 1]
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
lea eax, [ecx - 0x64]
cmp eax, 0x64
jb 0x4a0dbc
lea eax, [ecx - 0xc8]
cmp eax, 0x64
jae 0x4a0dfe
mov dword [0x5420a8], 2
pop ebx
pop edi
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
mov ebx, dword [sym.imp.WS2_32.dll_closesocket]
add esp, 0xc
push dword [esi + 0x2c]
call ebx
mov dword [esi + 0x2c], 0xffffffff
jmp 0x4a0e04
mov ebx, dword [sym.imp.WS2_32.dll_closesocket]
cmp dword [0x5420a8], 2
jne 0x4a12d1
push dword [esi + 0x2c]
call ebx
pop ebx
pop edi
mov dword [esi + 0x2c], 0xffffffff
or eax, 0xffffffff
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
push eax
push str.USER__s_r_n
lea eax, [ebp - 0xcc]
push 0xc8
push eax
call fcn.0044ad40
add esp, 0x10
lea ecx, [ebp - 0xcc]
mov byte [ebp - 5], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a0e58
push 0
sub ecx, edx
lea eax, [ebp - 0xcc]
push ecx
push eax
push dword [esi + 0x2c]
call ebx
test eax, eax
js 0x4a10b5
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a12d1
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a12d1
cmp ecx, eax
jg 0x4a12d1
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a0efe
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a0f0b
xor eax, eax
jmp 0x4a0f42
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a12b0
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [esi + ecx + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a0f4e
test eax, eax
je 0x4a12d1
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a0e82
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a0fc0
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a0fc0
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a0fc0
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a0fc0
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
test ecx, ecx
jg 0x4a0fe5
nop
cmp byte [edx], 0xa
je 0x4a0fdb
inc edx
cmp edx, edi
jb 0x4a0fc0
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a0e82
inc edx
cmp edx, edi
jb 0x4a0f64
jmp 0x4a0e82
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a100a
nop dword [eax]
cmp byte [edx], 0xa
je 0x4a100a
inc edx
cmp edx, edi
jb 0x4a1000
mov bl, byte [edx]
cmp bl, 0xa
jne 0x4a1015
mov bl, byte [edx + 1]
inc edx
lea eax, [edx + 1]
cmp bl, 0xd
cmovne eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x440], eax
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
sub eax, 2
je 0x4a0dc6
sub eax, 1
jne 0x4a12d1
mov eax, dword [esi + 0x14]
test eax, eax
jne 0x4a106e
push str.PASS_anonymous__r_n
lea eax, [ebp - 0xcc]
push 0xc8
push eax
call fcn.0044ad40
add esp, 0xc
jmp 0x4a1088
push eax
push str.PASS__s_r_n
lea eax, [ebp - 0xcc]
push 0xc8
push eax
call fcn.0044ad40
add esp, 0x10
lea ecx, [ebp - 0xcc]
mov byte [ebp - 5], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a1095
push 0
sub ecx, edx
lea eax, [ebp - 0xcc]
push ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_send]
test eax, eax
jns 0x4a10cb
push str.send_failed
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
jmp 0x4a12d1
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
cmp dword [esi + 0x2c], 0xffffffff
je 0x4a12d1
mov ecx, dword [esi + 0x440]
cmp ecx, 0x400
ja 0x4a12d1
mov eax, dword [esi + 0x444]
cmp eax, 0x400
ja 0x4a12d1
cmp ecx, eax
jg 0x4a12d1
mov ebx, eax
mov dword [ebp - 0x19c], ebx
test ecx, ecx
jle 0x4a1151
sub eax, ecx
push eax
lea eax, [ecx + 0x3c]
add eax, esi
push eax
lea eax, [esi + 0x3c]
push eax
call fcn.004bd670
mov eax, dword [esi + 0x440]
add esp, 0xc
sub dword [esi + 0x444], eax
xor ecx, ecx
mov eax, dword [esi + 0x444]
mov ebx, eax
mov dword [esi + 0x440], 0
mov dword [ebp - 0x19c], eax
mov edx, 0x400
sub edx, eax
jne 0x4a115e
xor eax, eax
jmp 0x4a1195
push 0
push edx
lea eax, [esi + 0x3c]
add eax, ecx
push eax
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
js 0x4a12b0
add dword [esi + 0x444], eax
mov ecx, dword [esi + 0x444]
mov byte [esi + ecx + 0x3c], 0
mov ebx, dword [esi + 0x444]
mov dword [ebp - 0x19c], ebx
test ebx, ebx
jne 0x4a11a1
test eax, eax
je 0x4a12d1
lea edx, [esi + 0x3c]
add edx, dword [esi + 0x440]
lea edi, [esi + 0x3c]
add edi, ebx
cmp edx, edi
jae 0x4a10d5
mov eax, edi
sub eax, edx
cmp eax, 3
jl 0x4a1217
mov cl, byte [edx]
mov al, cl
sub al, 0x30
cmp al, 9
ja 0x4a1217
mov ah, byte [edx + 1]
mov al, ah
movsx ecx, cl
sub al, 0x30
cmp al, 9
ja 0x4a1217
mov al, byte [edx + 2]
mov byte [ebp - 0x195], al
sub al, 0x30
cmp al, 9
ja 0x4a1217
movsx eax, ah
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*2]
lea ecx, [eax + eax*4]
movsx eax, byte [ebp - 0x195]
lea eax, [eax + ecx*2]
add eax, 0xffffeb30
mov ecx, eax
neg ecx
cmp byte [edx + 3], 0x2d
cmovne ecx, eax
mov dword [ebp - 0x1a0], ecx
test ecx, ecx
jg 0x4a123c
cmp byte [edx], 0xa
je 0x4a1232
inc edx
cmp edx, edi
jb 0x4a1217
mov eax, dword [ebp - 0x19c]
mov dword [esi + 0x440], eax
jmp 0x4a10d5
inc edx
cmp edx, edi
jb 0x4a11b7
jmp 0x4a10d5
add edx, 3
mov eax, edx
sub eax, esi
sub eax, 0x3c
mov dword [esi + 0x448], eax
cmp edx, edi
jae 0x4a125a
cmp byte [edx], 0xa
je 0x4a125a
inc edx
cmp edx, edi
jb 0x4a1250
mov al, byte [edx]
cmp al, 0xa
jne 0x4a1264
mov al, byte [edx + 1]
inc edx
cmp al, 0xd
lea ecx, [edx + 1]
mov eax, 0x51eb851f
cmovne ecx, edx
imul dword [ebp - 0x1a0]
sub ecx, esi
sar edx, 5
sub ecx, 0x3c
mov eax, edx
mov dword [esi + 0x440], ecx
shr eax, 0x1f
add eax, edx
sub eax, 2
je 0x4a0dc6
sub eax, 1
jne 0x4a12d1
push str.FTP_server_asking_for_ACCNT_on_anonymous_n
push 0x7d2
push 9
call fcn.0048b8c0
add esp, 0xc
jmp 0x4a12d1
push str.recv_failed
push 0
push 9
call fcn.0048b8c0
add esp, 0xc
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi + 0x2c], 0xffffffff
push dword [esi + 0x2c]
call dword [sym.imp.WS2_32.dll_closesocket]
pop ebx
pop edi
mov dword [esi + 0x2c], 0xffffffff
or eax, 0xffffffff
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004a55ed
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
or eax, 0xffffffff
xor ecx, ebp
pop esi
call fcn.004a55ed
mov esp, ebp
pop ebp
ret