Function at 0x403c00
Capabilities:
Check for time delay via gettickcount
Read file on windows
Receive data
Receive data on socket

Disassembly:
sub esp, 0x41c
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x430]
mov esi, 0x46f304
lea ebx, [edi + 0xf4]
mov eax, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403c42
test cl, cl
je 0x403c3e
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403c42
add eax, 2
add esi, 2
test cl, cl
jne 0x403c1e
xor eax, eax
jmp 0x403c47
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40416f
mov esi, 0x46f2cc
mov eax, ebx
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403c7a
test cl, cl
je 0x403c76
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403c7a
add eax, 2
add esi, 2
test cl, cl
jne 0x403c56
xor eax, eax
jmp 0x403c7f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403c9b
mov eax, dword [edi + 0x114]
cmp eax, 2
je 0x40416f
cmp eax, 3
je 0x40416f
mov eax, dword [edi + 0x2c]
mov ebp, dword [esp + 0x43c]
cmp eax, 0x960
ja 0x403cb2
add ebp, 0x1f4
mov al, byte [edi + 0x34]
test al, al
je 0x403daf
add edi, 0xf9
mov esi, str.COM1
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403cee
test cl, cl
je 0x403cea
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403cee
add eax, 2
add esi, 2
test cl, cl
jne 0x403cca
xor eax, eax
jmp 0x403cf3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403cfe
mov dx, 0x3fc
mov al, 8
out dx, al
mov esi, str.COM2
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403d29
test cl, cl
je 0x403d25
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403d29
add eax, 2
add esi, 2
test cl, cl
jne 0x403d05
xor eax, eax
jmp 0x403d2e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403d39
mov dx, 0x2fc
mov al, 8
out dx, al
mov esi, str.COM3
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403d64
test cl, cl
je 0x403d60
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403d64
add eax, 2
add esi, 2
test cl, cl
jne 0x403d40
xor eax, eax
jmp 0x403d69
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403d74
mov dx, 0x3ef
mov al, 1
out dx, al
mov esi, str.COM4
mov eax, edi
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403d9f
test cl, cl
je 0x403d9b
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403d9f
add eax, 2
add esi, 2
test cl, cl
jne 0x403d7b
xor eax, eax
jmp 0x403da4
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403daf
mov dx, 0x2ef
mov al, 1
out dx, al
mov esi, 0x46f2cc
mov eax, ebx
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x403dde
test cl, cl
je 0x403dda
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x403dde
add eax, 2
add esi, 2
test cl, cl
jne 0x403db6
xor eax, eax
jmp 0x403de3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403ded
add ebp, 0x1388
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebx, ebx
call esi
lea edi, [eax + ebp]
mov dword [esp + 0x14], edi
call esi
mov ebp, dword [esp + 0x434]
cmp eax, edi
ja 0x403f0c
mov edi, dword [esp + 0x438]
mov edx, dword [esp + 0x430]
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x20]
mov eax, dword [edx]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_ClearCommError]
mov ecx, dword [esp + 0x24]
test ecx, ecx
jbe 0x403ef4
mov eax, edi
sub eax, ebx
cmp ecx, eax
jae 0x403e46
mov eax, ecx
mov ecx, dword [esp + 0x430]
lea edx, [esp + 0x10]
mov dword [esp + 0x10], eax
lea esi, [ecx + 0x18]
mov ecx, dword [ecx]
push esi
push edx
push eax
lea eax, [ebx + ebp]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x403ec3
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x403ec3
mov edx, dword [esp + 0x430]
push 0x3e8
mov eax, dword [edx + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x403e9d
mov dword [esp + 0x10], 0
jmp 0x403ec3
mov edx, dword [esp + 0x430]
lea ecx, [esp + 0x10]
push 0
push ecx
mov eax, dword [edx]
push esi
push eax
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
mov eax, dword [esp + 0x430]
mov ecx, dword [esp + 0x10]
add dword [eax + 0x20], ecx
mov esi, dword [esp + 0x10]
add ebx, esi
mov esi, dword [esp + 0x430]
push ebx
push ebp
push esi
call fcn.00405ef0
add esp, 0xc
test eax, eax
je 0x403eee
mov al, byte [esi + 0x33]
test al, al
je 0x403f3a
cmp ebx, dword [0x60b8adc]
ja 0x403f13
cmp ebx, edi
je 0x403f13
jmp 0x403efc
push 0x14
call dword [sym.imp.KERNEL32.dll_Sleep]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, dword [esp + 0x14]
jbe 0x403e16
mov esi, dword [esp + 0x430]
mov al, byte [esi + 0x33]
test al, al
je 0x403f3a
mov eax, dword [0x60b8adc]
xor esi, esi
cmp eax, ebx
jae 0x403f31
mov dl, byte [eax + ebp]
inc eax
mov byte [esi + ebp], dl
inc esi
cmp eax, ebx
jb 0x403f25
mov ebx, esi
mov esi, dword [esp + 0x430]
push ebp
push esi
call fcn.00405e20
add esp, 8
test eax, eax
jne 0x403f57
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push ebx
push ebp
push esi
call fcn.00405ef0
add esp, 0xc
test eax, eax
jne 0x403f75
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push ebp
push esi
call fcn.00405fe0
add esp, 8
test eax, eax
jne 0x403f92
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push 0
push ebx
push ebp
push esi
call fcn.00406450
add esp, 0x10
test eax, eax
jne 0x403fb2
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
mov eax, dword [esi + 0x318b8]
test eax, eax
je 0x404471
cmp byte [ebp], 1
jne 0x404471
cmp byte [ebx + ebp - 1], 0xd
jne 0x404471
lea eax, [ebp + 4]
push eax
mov dword [esp + 0x18], eax
call fcn.00406090
add esp, 4
cmp eax, 0xfc
jne 0x404471
cmp ebx, 0x29
jb 0x404471
lea eax, [ebx + 7]
test al, 0xf
jne 0x404471
lea ecx, [ebx - 9]
mov esi, 0
shr ecx, 1
mov dword [esp + 0x10], ecx
je 0x404030
lea edi, [ebp + 6]
push edi
call fcn.00406090
add esp, 4
mov byte [esp + esi + 0x2c], al
mov eax, dword [esp + 0x10]
inc esi
add edi, 2
cmp esi, eax
jb 0x404017
push 0x10000051
push 0x60b8a40
push 0x60b8a00
lea edx, [esp + 0x38]
push 0x60b8a30
push edx
push 0x60b8a28
call fcn.00407fc0
mov eax, dword [0x60b8a28]
mov ecx, dword [0x60b8a2c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
add esp, 0x18
xor edi, edi
test eax, eax
mov dword [esp + 0x30], ecx
jbe 0x4040b6
push 0x51
push 0x60b8a40
lea esi, [esp + edi + 0x3c]
push 0x60b8a00
push 0x60b8a30
push esi
push 0x60b8a28
call fcn.00407fc0
mov ecx, dword [0x60b8a28]
mov eax, dword [esp + 0x28]
mov edx, dword [0x60b8a2c]
add edi, 8
add esp, 0x18
mov dword [esi], ecx
cmp edi, eax
mov dword [esi + 4], edx
jb 0x404073
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x31]
and ecx, 0xff
and eax, 0xff
shl eax, 8
add eax, ecx
mov dword [esp + 0x10], eax
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00406380
mov ecx, dword [esp + 0x3b]
mov esi, dword [esp + 0x3a]
mov edx, ecx
and esi, 0xff
and edx, 0xff
and eax, 0xffff
shl edx, 8
add edx, esi
add esp, 8
cmp edx, eax
jne 0x404471
mov eax, dword [esp + 0x10]
cmp eax, 1
jne 0x40412c
cmp ch, 6
je 0x404117
cmp ch, 0x15
jne 0x40412c
mov ebx, 6
pop edi
mov byte [ebp + 3], ch
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x41c
ret
xor esi, esi
test eax, eax
jbe 0x40446d
mov edi, dword [esp + 0x14]
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
xor eax, eax
mov al, byte [esp + esi + 0x34]
push eax
push str._02X
push edi
call ebx
mov eax, dword [esp + 0x1c]
add esp, 0xc
inc esi
add edi, 2
cmp esi, eax
jb 0x404140
lea ebx, [eax + eax + 7]
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x41c
ret
mov edi, dword [esp + 0x43c]
mov esi, 0x46f2cc
add edi, 0x1f4
mov eax, ebx
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x4041ab
test cl, cl
je 0x4041a7
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x4041ab
add eax, 2
add esi, 2
test cl, cl
jne 0x404183
xor eax, eax
jmp 0x4041b0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4041ba
add edi, 0x1388
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebx, ebx
call esi
add edi, eax
mov dword [esp + 0x14], edi
call esi
mov ebp, dword [esp + 0x434]
cmp eax, edi
mov edi, dword [esp + 0x430]
ja 0x404250
mov ecx, dword [edi + 0x38]
lea eax, [esp + 0x18]
push eax
push 0x4004667f
push ecx
call sub.WSOCK32.dll_ioctlsocket
test eax, eax
je 0x4041f9
push 0x14
jmp 0x404242
mov ecx, dword [esp + 0x18]
test ecx, ecx
jbe 0x404240
mov eax, dword [esp + 0x438]
sub eax, ebx
cmp ecx, eax
jae 0x404210
mov eax, ecx
push 0
mov dword [esp + 0x14], eax
push eax
mov eax, dword [edi + 0x38]
lea edx, [ebx + ebp]
push edx
push eax
call sub.WSOCK32.dll_recv
add ebx, dword [esp + 0x10]
push ebx
push ebp
push edi
call fcn.00405ef0
add esp, 0xc
test eax, eax
jne 0x404250
cmp ebx, dword [esp + 0x438]
je 0x404250
push 1
call dword [sym.imp.KERNEL32.dll_Sleep]
call esi
cmp eax, dword [esp + 0x14]
jbe 0x4041de
push ebp
push edi
call fcn.00405e20
add esp, 8
test eax, eax
jne 0x40426d
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push ebx
push ebp
push edi
call fcn.00405ef0
add esp, 0xc
test eax, eax
jne 0x40428b
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push ebp
push edi
call fcn.00405fe0
add esp, 8
test eax, eax
jne 0x4042a8
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
push 0
push ebx
push ebp
push edi
call fcn.00406450
add esp, 0x10
test eax, eax
jne 0x4042c8
pop edi
mov eax, ebx
pop esi
pop ebp
neg eax
pop ebx
add esp, 0x41c
ret
mov eax, dword [edi + 0x318b8]
test eax, eax
je 0x404471
cmp byte [ebp], 1
jne 0x404471
cmp byte [ebx + ebp - 1], 0xd
jne 0x404471
lea eax, [ebp + 4]
push eax
mov dword [esp + 0x18], eax
call fcn.00406090
add esp, 4
cmp eax, 0xfc
jne 0x404471
cmp ebx, 0x29
jb 0x404471
lea ecx, [ebx + 7]
test cl, 0xf
jne 0x404471
lea edx, [ebx - 9]
mov esi, 0
shr edx, 1
mov dword [esp + 0x10], edx
je 0x404347
lea edi, [ebp + 6]
push edi
call fcn.00406090
add esp, 4
mov byte [esp + esi + 0x2c], al
mov eax, dword [esp + 0x10]
inc esi
add edi, 2
cmp esi, eax
jb 0x40432e
push 0x10000051
push 0x60b8a40
push 0x60b8a00
lea eax, [esp + 0x38]
push 0x60b8a30
push eax
push 0x60b8a28
call fcn.00407fc0
mov ecx, dword [0x60b8a28]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x44], ecx
mov ecx, dword [0x60b8a2c]
add esp, 0x18
xor edi, edi
test eax, eax
mov dword [esp + 0x30], ecx
jbe 0x4043cd
push 0x51
push 0x60b8a40
lea esi, [esp + edi + 0x3c]
push 0x60b8a00
push 0x60b8a30
push esi
push 0x60b8a28
call fcn.00407fc0
mov edx, dword [0x60b8a28]
mov eax, dword [0x60b8a2c]
mov dword [esi], edx
mov dword [esi + 4], eax
mov eax, dword [esp + 0x28]
add edi, 8
add esp, 0x18
cmp edi, eax
jb 0x40438b
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x31]
and ecx, 0xff
and eax, 0xff
shl eax, 8
add eax, ecx
lea ecx, [esp + 0x34]
push eax
push ecx
mov dword [esp + 0x18], eax
call fcn.00406380
mov ecx, dword [esp + 0x3b]
mov esi, dword [esp + 0x3a]
mov edx, ecx
and esi, 0xff
and edx, 0xff
and eax, 0xffff
shl edx, 8
add edx, esi
add esp, 8
cmp edx, eax
jne 0x404471
mov eax, dword [esp + 0x10]
cmp eax, 1
jne 0x40443f
cmp ch, 6
je 0x40442a
cmp ch, 0x15
jne 0x40443f
mov ebx, 6
pop edi
mov byte [ebp + 3], ch
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x41c
ret
xor esi, esi
test eax, eax
jbe 0x40446d
mov edi, dword [esp + 0x14]
mov ebx, dword [sym.imp.USER32.dll_wsprintfA]
xor eax, eax
mov al, byte [esp + esi + 0x34]
push eax
push str._02X
push edi
call ebx
mov eax, dword [esp + 0x1c]
add esp, 0xc
inc esi
add edi, 2
cmp esi, eax
jb 0x40444f
lea ebx, [eax + eax + 7]
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x41c
ret