Function at 0x404390
Capabilities:
Check for time delay via gettickcount
Generate random numbers via winapi
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x250
mov eax, dword [0x433368]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x203]
push edi
push 0x1ff
push 0
mov bl, 1
mov dword [ebp - 0x20c], esi
push eax
mov byte [ebp - 0x205], bl
mov byte [ebp - 0x204], 0
call fcn.00407240
xor eax, eax
add esp, 0xc
cmp byte [0x4343e7], al
mov dword [ebp - 0x230], eax
sete al
cmp byte [0x4343eb], 0
lea eax, [eax*2 + 1]
mov dword [ebp - 0x250], eax
jne 0x404478
xor esi, esi
movzx edi, al
test al, al
je 0x40446b
mov ebx, dword [sym.imp.KERNEL32.DLL_VirtualAlloc]
lea ebx, [ebx]
push 4
push 0x1000
push 0xa00000
push 0
call ebx
mov ecx, eax
mov dword [esi*4 + 0x4343fc], ecx
test ecx, ecx
je 0x40458a
mov eax, esi
dec eax
je 0x40444d
dec eax
jne 0x404460
push ecx
push 0xa00000
push dword [0x4352a0]
call dword [sym.imp.ADVAPI32.dll_CryptGenRandom]
jmp 0x404460
push 0xa00000
push 0xff
push ecx
call fcn.00407240
add esp, 0xc
inc esi
cmp esi, edi
jb 0x404410
mov bl, byte [ebp - 0x205]
mov esi, dword [ebp - 0x20c]
mov byte [0x4343eb], 1
xor ecx, ecx
mov dword [ebp - 0x228], ecx
cmp dword [0x4330c8], ecx
jbe 0x4048b5
mov edx, dword [ebp + 0xc]
mov edi, dword [sym.imp.KERNEL32.DLL_SetFilePointer]
cmp bl, 1
jne 0x4048b5
test ecx, ecx
je 0x4044c8
mov eax, dword [ebp + 0x10]
neg edx
push 1
adc eax, 0
mov dword [ebp - 0x23c], edx
neg eax
mov dword [ebp - 0x238], eax
lea eax, [ebp - 0x238]
push eax
push edx
push esi
call edi
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x250]
xor eax, eax
movzx ecx, cl
mov dword [ebp - 0x210], eax
mov dword [ebp - 0x234], ecx
test ecx, ecx
je 0x404896
cmp bl, 1
jne 0x404896
test eax, eax
je 0x404525
mov eax, dword [ebp + 0x10]
mov ecx, edx
neg ecx
push 1
adc eax, 0
mov dword [ebp - 0x23c], ecx
neg eax
mov dword [ebp - 0x238], eax
lea eax, [ebp - 0x238]
push eax
push ecx
push esi
call edi
mov eax, dword [ebp - 0x210]
mov ecx, dword [ebp - 0x234]
mov esi, dword [ebp + 0x10]
xorps xmm0, xmm0
mov edx, dword [ebp + 0xc]
movlpd qword [ebp - 0x224], xmm0
test esi, esi
jb 0x404881
ja 0x404548
test edx, edx
je 0x404881
mov ebx, dword [ebp - 0x220]
mov edi, dword [ebp - 0x224]
mov dword [ebp - 0x218], ebx
mov dword [ebp - 0x220], edi
mov ecx, edx
mov eax, esi
sub ecx, edi
sbb eax, ebx
mov dword [ebp - 0x240], eax
jne 0x4045c8
cmp ecx, 0xa00000
ja 0x4045c8
mov ebx, edx
sub ebx, edi
mov dword [ebp - 0x240], ebx
mov ebx, dword [ebp - 0x218]
jmp 0x4045d2
xor edi, edi
test esi, esi
je 0x4045b5
mov ebx, dword [sym.imp.KERNEL32.DLL_VirtualFree]
jmp 0x4045a0
push 0x8000
push 0
push dword [edi*4 + 0x4343fc]
call ebx
inc edi
cmp edi, esi
jb 0x4045a0
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00405d02
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x240], 0xa00000
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
cmp byte [ebp + 0x14], 0
mov esi, eax
je 0x4046aa
mov ecx, dword [ebp - 0x230]
sub eax, ecx
cmp eax, 0x3e8
jbe 0x4046aa
mov eax, dword [ebp - 0x22c]
test ecx, ecx
push 0
push 0x64
push ebx
cmove eax, esi
push edi
mov dword [ebp - 0x22c], eax
call fcn.004075f0
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edx
push eax
call fcn.00407630
push 0x42b7f8
mov ebx, eax
call fcn.004064e2
mov edi, esi
add esp, 4
sub edi, dword [ebp - 0x22c]
je 0x40467f
mov edx, dword [ebp - 0x218]
mov ecx, dword [ebp - 0x220]
call fcn.004079de
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movd xmm0, edi
cvtdq2pd xmm0, xmm0
shr edi, 0x1f
addsd xmm0, qword [edi*8 + 0x42cb50]
cvtpd2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm1, dword [0x42cb48]
mulss xmm1, dword [0x42cb44]
jmp 0x404682
xorps xmm1, xmm1
cvtps2pd xmm0, xmm1
sub esp, 8
movsd qword [esp], xmm0
push ebx
mov ebx, dword [ebp - 0x210]
push ebx
push str._rPass__d_progress:__d_____.2f_MB_s_
call fcn.004064e2
add esp, 0x14
mov dword [ebp - 0x230], esi
jmp 0x4046b0
mov ebx, dword [ebp - 0x210]
cmp byte [0x4343e8], 0
je 0x4047fb
mov ebx, dword [ebp - 0x240]
mov esi, dword [ebp - 0x20c]
lea esp, [esp]
mov edi, dword [sym.imp.KERNEL32.DLL_SetFilePointer]
lea eax, [ebp - 0x248]
push 1
push eax
push 0
push esi
mov dword [ebp - 0x248], 0
call edi
mov dword [ebp - 0x24c], eax
lea ecx, [ebp - 0x214]
mov eax, 0x200
push 0
cmp ebx, eax
push ecx
cmovb eax, ebx
push eax
mov dword [ebp - 0x214], eax
lea eax, [ebp - 0x204]
push eax
push esi
call dword [sym.imp.KERNEL32.DLL_ReadFile]
mov cl, al
mov byte [ebp - 0x205], cl
test cl, cl
je 0x40486c
push 0
lea eax, [ebp - 0x248]
push eax
push dword [ebp - 0x24c]
push esi
call edi
mov eax, dword [ebp - 0x210]
lea ecx, [ebp - 0x204]
mov edi, dword [ebp - 0x214]
mov esi, edi
mov edx, dword [eax*4 + 0x4343fc]
sub esi, 4
jb 0x404771
mov edi, edi
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x404776
add ecx, 4
add edx, 4
sub esi, 4
jae 0x404760
cmp esi, 0xfffffffc
je 0x4047d7
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4047a3
cmp esi, 0xfffffffd
je 0x4047d7
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4047a3
cmp esi, 0xfffffffe
je 0x4047d7
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4047a3
cmp esi, 0xffffffff
je 0x4047d7
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x4047d7
mov esi, dword [ebp - 0x20c]
lea eax, [ebp - 0x214]
push 0
push eax
mov eax, dword [ebp - 0x210]
push edi
push dword [eax*4 + 0x4343fc]
push esi
call dword [sym.imp.KERNEL32.DLL_WriteFile]
mov edi, dword [ebp - 0x214]
mov cl, al
mov byte [ebp - 0x205], cl
jmp 0x4047e3
mov cl, byte [ebp - 0x205]
mov esi, dword [ebp - 0x20c]
mov eax, dword [ebp - 0x21c]
add eax, edi
mov dword [ebp - 0x21c], eax
sub ebx, edi
jne 0x4046d0
jmp 0x40482b
push 0
lea eax, [ebp - 0x21c]
push eax
push dword [ebp - 0x240]
push dword [ebx*4 + 0x4343fc]
push dword [ebp - 0x20c]
call dword [sym.imp.KERNEL32.DLL_WriteFile]
mov cl, al
mov eax, dword [ebp - 0x21c]
mov byte [ebp - 0x205], cl
mov edx, dword [ebp + 0xc]
test cl, cl
je 0x404864
mov edi, dword [ebp - 0x220]
mov ebx, dword [ebp - 0x218]
add edi, eax
mov esi, dword [ebp + 0x10]
adc ebx, 0
mov dword [ebp - 0x220], edi
mov dword [ebp - 0x218], ebx
cmp ebx, esi
jb 0x404560
ja 0x404864
cmp edi, edx
jb 0x404560
mov edi, dword [sym.imp.KERNEL32.DLL_SetFilePointer]
jmp 0x40486f
mov edx, dword [ebp + 0xc]
mov bl, byte [ebp - 0x205]
mov eax, dword [ebp - 0x210]
mov ecx, dword [ebp - 0x234]
mov esi, dword [ebp - 0x20c]
inc eax
mov dword [ebp - 0x210], eax
cmp eax, ecx
jb 0x4044e7
mov ecx, dword [ebp - 0x228]
mov esi, dword [ebp - 0x20c]
inc ecx
mov dword [ebp - 0x228], ecx
cmp ecx, dword [0x4330c8]
jb 0x404495
mov ecx, dword [ebp - 4]
mov al, bl
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00405d02
mov esp, ebp
pop ebp
ret