Function at 0x403a70
Capabilities:
Receive data
Receive data on socket

Disassembly:
sub esp, 0x2c
mov eax, dword [str.AUTEKEND]
mov ecx, dword [0x409310]
mov dl, byte [0x409314]
push ebx
push ebp
push esi
push edi
push 1
push 0x2801
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov byte [esp + 0x28], dl
call dword [sym.imp.MSVCRT.dll_calloc]
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x403ae5
cmp dword [esp + 0x50], 0x14
jle 0x403f3d
mov edi, 0x409380
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
xor eax, eax
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
mov edi, str.DATAERROR
or ecx, 0xffffffff
xor eax, eax
mov esi, dword [esp + 0x44]
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea edi, [esp + 0x18]
add esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x44], esi
not ecx
dec ecx
cmp esi, eax
mov edi, ecx
mov dword [esp + 0x10], edi
jne 0x403c45
mov edi, dword [sym.imp.USER32.dll_PeekMessageA]
mov ebx, dword [sym.imp.USER32.dll_GetMessageA]
mov ecx, dword fs:[0x2c]
mov edx, dword [0x40a428]
mov eax, dword [ecx + edx*4]
mov ecx, dword [eax + 0xf8c0]
test ecx, ecx
je 0x403b6e
push 2
push 0
lea esi, [eax + 0xf8c8]
push 0
push 0
push esi
call edi
test eax, eax
je 0x403b6e
push 0
push 0
push 0
push esi
call ebx
push esi
call dword [sym.imp.USER32.dll_TranslateMessage]
push esi
call dword [sym.imp.USER32.dll_DispatchMessageA]
push 0x2800
push ebp
call fcn.00402ca0
test eax, eax
jl 0x403b99
je 0x403b28
cmp byte [ebp], 0
jne 0x403b28
cmp byte [ebp + 1], 1
jne 0x403b28
cmp byte [ebp + 4], 1
jne 0x403b28
cmp byte [ebp + 5], 5
je 0x403bdf
jmp 0x403b28
cmp dword [esp + 0x50], 0xc
jle 0x403ec0
mov edi, 0x409374
or ecx, 0xffffffff
xor eax, eax
push ebp
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x50]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
mov eax, dword [esp + 0x50]
xor ecx, ecx
mov cl, byte [ebp + 8]
xor edx, edx
mov dl, byte [ebp + 9]
shl ecx, 8
add ecx, edx
cmp eax, ecx
jle 0x403fb4
mov esi, dword [esp + 0x4c]
xor eax, eax
test ecx, ecx
jle 0x403fb0
mov dl, byte [eax + ebp + 0xa]
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jl 0x403c08
mov byte [eax + esi], 0
mov al, byte [ebp + 6]
test al, al
jne 0x403f33
mov al, byte [ebp + 7]
test al, al
jne 0x403f33
push ebp
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x40]
sub edx, edi
mov ecx, esi
cmp esi, edx
mov dword [esp + 0x14], edx
jg 0x403c8e
xor eax, eax
test edi, edi
jle 0x403c81
lea esi, [ecx + ebx]
movsx ebx, byte [esp + eax + 0x18]
xor edx, edx
mov dl, byte [eax + esi]
cmp edx, ebx
jne 0x403c75
inc eax
cmp eax, edi
jl 0x403c62
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x44]
cmp eax, edi
je 0x403f49
inc ecx
cmp ecx, edx
jle 0x403c59
mov edi, dword [esp + 0x48]
xor eax, eax
sub edi, esi
test edi, edi
mov dword [esp + 0x44], edi
jle 0x403cac
lea ecx, [esi + ebx]
mov dl, byte [eax + ecx]
mov byte [eax + ebp], dl
inc eax
cmp eax, edi
jl 0x403ca1
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.MSVCRT.dll__ftime]
mov esi, dword [esp + 0x48]
mov ecx, dword [0x40a428]
mov edx, dword fs:[0x2c]
add esp, 4
mov ebx, 0x2800
lea eax, [esi + ebp]
mov edi, dword [edx + ecx*4]
sub ebx, esi
push 0
push ebx
mov dword [esp + 0x48], eax
push eax
mov eax, dword [edi + 0xf8e4]
push eax
call sub.WSOCK32.dll_recv
cmp eax, 0xffffffff
jne 0x403e09
call sub.WSOCK32.dll_WSAGetLastError
cmp eax, 0x2733
jne 0x403dca
mov eax, dword [edi + 0xf8c0]
test eax, eax
je 0x403d43
push 2
push 0
lea esi, [edi + 0xf8c8]
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x403d43
push 0
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_GetMessageA]
push esi
call dword [sym.imp.USER32.dll_TranslateMessage]
push esi
call dword [sym.imp.USER32.dll_DispatchMessageA]
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.MSVCRT.dll__ftime]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
add esp, 4
push edx
push eax
call dword [sym.imp.MSVCRT.dll_difftime]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
mov eax, dword [0x409020]
and ecx, 0xffff
and edx, 0xffff
add esp, 8
sub edx, ecx
mov dword [esp + 0x48], edx
fild dword [esp + 0x48]
cdq
fmul dword [0x4080d0]
sub eax, edx
sar eax, 1
fsubp st(1)
mov dword [esp + 0x48], eax
fild dword [esp + 0x48]
fxch st(1)
fcompp
fnstsw ax
test ah, 1
je 0x403df9
mov eax, dword [esp + 0x40]
mov ecx, dword [edi + 0xf8e4]
push 0
push ebx
push eax
push ecx
call sub.WSOCK32.dll_recv
cmp eax, 0xffffffff
je 0x403cf5
mov esi, dword [esp + 0x44]
jmp 0x403e09
cmp dword [esp + 0x50], 0x14
jle 0x403f33
mov edi, 0x409380
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x403f2e
cmp dword [esp + 0x50], 0x14
jle 0x403f33
jmp 0x403f0f
mov ecx, dword [esp + 0x10]
add eax, esi
mov edx, eax
xor esi, esi
sub edx, ecx
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], edx
js 0x403f08
mov edi, dword [esp + 0x10]
xor ecx, ecx
test edi, edi
jle 0x403e44
add esi, ebp
movsx ebx, byte [esp + ecx + 0x18]
xor edx, edx
mov dl, byte [ecx + esi]
cmp edx, ebx
jne 0x403e4a
inc ecx
cmp ecx, edi
jl 0x403e2f
jmp 0x403e4a
mov edi, dword [esp + 0x10]
jmp 0x403e52
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
cmp ecx, edi
je 0x403e64
inc esi
cmp esi, edx
mov dword [esp + 0x44], esi
jle 0x403e23
jmp 0x403f08
mov byte [eax + ebp], 0
mov al, byte [ebp]
test al, al
jne 0x403ee0
cmp byte [ebp + 1], 1
jne 0x403ee0
cmp byte [ebp + 4], 1
jne 0x403ed7
cmp byte [ebp + 5], 5
jne 0x403ed7
xor ecx, ecx
xor eax, eax
mov cl, byte [ebp + 8]
mov al, byte [ebp + 9]
shl ecx, 8
add ecx, eax
mov eax, dword [esp + 0x50]
cmp eax, ecx
jle 0x403eb2
mov esi, dword [esp + 0x4c]
xor eax, eax
test ecx, ecx
jle 0x403eae
mov dl, byte [eax + ebp + 0xa]
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jl 0x403ea2
mov byte [eax + esi], 0
mov al, byte [ebp + 6]
test al, al
jne 0x403f33
mov al, byte [ebp + 7]
test al, al
jne 0x403f33
push ebp
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
cmp dword [esp + 0x50], 0x14
jle 0x403f33
jmp 0x403f0f
cmp dword [esp + 0x50], 0x14
jle 0x403f33
mov edi, 0x409380
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, dword [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
jmp 0x403f2e
cmp dword [esp + 0x50], 0x14
jle 0x403f33
mov edi, 0x409380
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebp
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
sub ecx, esi
xor eax, eax
test ecx, ecx
jle 0x403f5e
add esi, ebx
mov dl, byte [eax + esi]
mov byte [eax + ebp], dl
inc eax
cmp eax, ecx
jl 0x403f53
mov byte [eax + ebp], 0
mov al, byte [ebp]
test al, al
jne 0x403dca
cmp byte [ebp + 1], 1
jne 0x403dca
cmp byte [ebp + 4], 1
jne 0x403fe1
cmp byte [ebp + 5], 5
jne 0x403fe1
xor ecx, ecx
xor eax, eax
mov cl, byte [ebp + 8]
mov al, byte [ebp + 9]
shl ecx, 8
add ecx, eax
mov eax, dword [esp + 0x50]
cmp eax, ecx
jle 0x403fb4
mov esi, dword [esp + 0x4c]
xor eax, eax
test ecx, ecx
jle 0x403fb0
mov dl, byte [eax + ebp + 0xa]
mov byte [eax + esi], dl
inc eax
cmp eax, ecx
jl 0x403fa4
mov byte [eax + esi], 0
mov al, byte [ebp + 6]
test al, al
jne 0x403f33
mov al, byte [ebp + 7]
test al, al
jne 0x403f33
push ebp
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret 0x14
cmp dword [esp + 0x50], 0x14
jle 0x403f33
jmp 0x403f0f