Function at 0x40314d
Capabilities:
Check for time delay via gettickcount
Get file size

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x144
mov edi, dword [ebp + 8]
mov dword [ebp - 0x144], 0
call sub.KERNEL32.dll_GetTickCount
push 0x400
push 0x42ec00
add eax, 0x3e8
push 0
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x14c], 0
mov dword [ebp - 0x150], 0
call sub.KERNEL32.dll_GetModuleFileNameA
push 3
push 0x80000000
push 0x42ec00
call fcn.004063fa
mov edx, 0x402f8a
mov ebx, eax
mov dword [0x40a010], eax
cmp eax, 0xffffffff
je 0x4032c9
push 0x42ec00
push 0x42dc00
call fcn.0040678e
push 0x42dc00
call fcn.00406204
push eax
push 0x42f000
call fcn.0040678e
push 0
push ebx
call sub.KERNEL32.dll_GetFileSize
mov dword [0x414cf0], eax
mov ebx, eax
test eax, eax
jle 0x403273
mov eax, dword [0x424d00]
test eax, eax
je 0x4034c1
cmp ebx, 0x7fff
jle 0x4034ba
mov esi, 0x8000
test eax, eax
jne 0x40321f
mov esi, 0x200
push esi
push 0x40ccb0
call fcn.0040381a
test eax, eax
je 0x40349d
cmp dword [0x424d00], 0
je 0x4033f7
test edi, 2
jne 0x40325b
cmp dword [ebp - 0x144], 0
je 0x4033c2
push 0
call fcn.00406cc1
cmp ebx, dword [0x414cf0]
jl 0x4033a6
sub ebx, esi
add dword [0x414d00], esi
test ebx, ebx
jg 0x4031f8
cmp dword [ebp - 0x144], 0
je 0x403287
push dword [ebp - 0x144]
call sub.USER32.dll_DestroyWindow
cmp dword [0x424d00], 0
je 0x4032c4
cmp dword [ebp - 0x150], 0
je 0x4032d5
push dword [0x414d00]
call fcn.00403855
lea eax, [ebp - 0x140]
push 4
push eax
call fcn.0040381a
test eax, eax
je 0x4032c4
mov eax, dword [ebp - 0x14c]
cmp eax, dword [ebp - 0x140]
je 0x4032d5
mov edx, 0x402fb0
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret 4
push dword [ebp - 0x18]
push 0x40
lea ebx, [ebp - 0x13c]
call sub.KERNEL32.dll_GlobalAlloc
mov ecx, 0x414d10
mov esi, eax
call fcn.00406d70
push 0x42e400
push ebx
call fcn.0040642a
push 0
push 0x4000100
push 2
push 0
push 0
push 0xc0000000
push ebx
call sub.KERNEL32.dll_CreateFileA
mov edx, 0x4030f0
mov dword [0x40a014], eax
inc eax
je 0x4032c9
mov eax, dword [0x424d00]
add eax, 0x1c
push eax
call fcn.00403855
mov dword [0x414cd0], eax
add eax, dword [ebp - 0x14]
test byte [ebp - 0x2c], 4
lea edx, [eax - 0x1c]
jne 0x403343
lea edx, [eax - 0x20]
push dword [ebp - 0x18]
push esi
mov dword [0x414ce0], edx
push 0
push 0xffffffffffffffff
call fcn.004036e5
cmp eax, dword [ebp - 0x18]
jne 0x4032c4
mov dword [0x424c90], esi
test byte [ebp - 0x2c], 1
mov eax, dword [esi]
mov dword [0x424ce0], eax
je 0x403378
inc dword [0x424cf0]
mov ebx, 7
add dword [esi + ebx*8 + 4], esi
dec ebx
cmp ebx, 0xffffffff
jne 0x40337d
mov eax, dword [0x414cc0]
mov dword [esi + 0x3c], eax
lea eax, [esi + 4]
push 0x40
push eax
push 0x424ca0
call fcn.004063b1
xor edx, edx
jmp 0x4032c9
push esi
push 0x40ccb0
push dword [ebp - 0x14c]
call fcn.00406cf0
mov dword [ebp - 0x14c], eax
jmp 0x403267
call sub.KERNEL32.dll_GetTickCount
cmp eax, dword [ebp - 0x148]
jbe 0x40325b
push 0x403133
push 0x402eb9
push 0
push 0x6f
push dword [0x424d30]
call sub.USER32.dll_CreateDialogParamA
mov dword [ebp - 0x144], eax
jmp 0x40325b
push 0x1c
lea eax, [ebp - 0x2c]
push 0x40ccb0
push eax
call fcn.004063b1
mov edx, dword [ebp - 0x2c]
test edx, 0xfffffff0
jne 0x40325b
cmp dword [ebp - 0x28], 0xdeadbeef
jne 0x40325b
cmp dword [ebp - 0x1c], 0x74736e49
jne 0x40325b
cmp dword [ebp - 0x20], 0x74666f73
jne 0x40325b
cmp dword [ebp - 0x24], 0x6c6c754e
jne 0x40325b
or edi, edx
mov eax, dword [0x414d00]
mov dword [0x424d00], eax
mov edx, 0x402fb0
mov eax, edi
and eax, 2
or dword [0x424c50], eax
mov eax, dword [ebp - 0x14]
cmp eax, ebx
jg 0x4032c9
test edi, 8
jne 0x403485
test edi, 4
jne 0x403273
lea ebx, [eax - 4]
inc dword [ebp - 0x150]
cmp esi, ebx
jbe 0x40325b
mov esi, ebx
jmp 0x40325b
cmp dword [ebp - 0x144], 0
je 0x4032c4
push dword [ebp - 0x144]
call sub.USER32.dll_DestroyWindow
jmp 0x4032c4
mov esi, ebx
jmp 0x40321f
cmp ebx, 0x1ff
jmp 0x40320b