Function at 0x4090a0
Capabilities:
Check for time delay via gettickcount
Get common file path
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x41e618
mov eax, dword fs:[0]
push eax
sub esp, 0xe8
mov eax, dword [0x425e40]
xor eax, esp
mov dword [esp + 0xe0], eax
push ebx
push esi
push edi
mov eax, dword [0x425e40]
xor eax, esp
push eax
lea eax, [esp + 0xf8]
mov dword fs:[0], eax
fldz
xor eax, eax
fst dword [esp + 0x30]
xor ecx, ecx
fldz
xor edx, edx
fst qword [esp + 0x5c]
mov dword [esp + 0x3c], eax
fst qword [esp + 0x6c]
mov dword [esp + 0x40], eax
fxch st(1)
mov dword [esp + 0xa8], 0xf
mov dword [esp + 0x50], eax
mov word [esp + 0x38], cx
fst dword [esp + 0x18]
fstp dword [esp + 0x24]
mov dword [esp + 0xa4], eax
mov byte [esp + 0x94], al
fstp qword [esp + 0x84]
mov word [esp + 0x2c], dx
mov word [esp + 0x28], cx
push 0x118
mov dword [esp + 0x104], eax
call fcn.0040b3f9
push eax
mov dword [esp + 0x80], eax
call fcn.00402380
add esp, 8
lea esp, [esp]
push 0
call fcn.0040b11a
mov esi, dword [esp + 0x44]
add esp, 4
cmp edx, esi
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], edx
jg 0x409193
jl 0x409185
cmp eax, dword [esp + 0x3c]
jae 0x409193
xor esi, esi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], esi
mov ecx, eax
sub ecx, dword [esp + 0x3c]
mov edi, edx
sbb edi, esi
mov dword [esp + 0x20], edi
js 0x409a93
jg 0x4091b5
cmp ecx, 0x708
jbe 0x409a93
fld dword [0x42301c]
mov dword [esp + 0x40], edx
fld dword [0x425d2c]
mov dx, word [esp + 0x38]
movsx ecx, dx
mov dword [esp + 0x34], ecx
mov esi, eax
shr esi, 9
fild dword [esp + 0x34]
push 0x408
lea ebx, [esi + 0x55]
push 0x4236e8
faddp st(1)
mov dword [esp + 0x44], eax
mov dword [esp + 0x3c], 0
mov dword [esp + 0x50], esi
fsub qword [0x41f910]
mov dword [esp + 0x1c], ebx
fsubp st(1)
fstp dword [0x42301c]
fld dword [0x425d2c]
fadd qword [0x41f340]
fstp dword [0x425d2c]
call fcn.00401e60
push 0xd
push 0x424e98
mov dword [esp + 0x78], eax
call fcn.00401e60
mov edi, eax
push 0xaf1
push 0x424050
mov dword [esp + 0x64], edi
call fcn.00401e60
push 0x31e
push str.M8_tS
mov dword [esp + 0x74], eax
call fcn.00401e60
add esp, 0x20
mov dword [esp + 0x58], eax
cmp esi, ebx
je 0x4096a6
lea esp, [esp]
fld dword [0x424f04]
push 0
fsubr qword [0x41f908]
fadd qword [esp + 0x60]
fmul dword [esp + 0x28]
mov edx, dword [0x427640]
push edx
fstp dword [esp + 0x2c]
call fcn.004032a0
add esp, 8
test eax, eax
jne 0x4092b2
mov eax, dword [0x427648]
mov ecx, dword [0x427184]
push eax
push ecx
call fcn.004034a0
add esp, 8
inc dword [esp + 0x2c]
fld qword [esp + 0x6c]
fadd qword [0x41f340]
mov ecx, dword [esp + 0x48]
push ecx
lea ecx, [esp + 0xb0]
fstp qword [esp + 0x70]
fld dword [esp + 0x28]
mov dx, word [esp + 0x30]
movsx eax, dx
mov edx, dword [esp + 0x5c]
add eax, 0x9dba096
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x58]
push edx
fild dword [esp + 0x2c]
push eax
push ecx
fsub qword [esp + 0x7c]
fsubp st(1)
fstp dword [esp + 0x34]
call fcn.00404030
push 0x8b
push 0x424df0
call fcn.00401e60
mov ebx, eax
mov eax, dword [esp + 0x64]
add esp, 0x18
mov esi, eax
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x409320
mov edi, ebx
sub eax, esi
dec edi
lea esp, [esp]
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x409330
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
push 0x2710
push 0
lea edx, [esp + 0x98]
push edx
mov ecx, eax
lea eax, [esp + 0xb8]
and ecx, 3
push ebx
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.00408810
push 0x8b
fldz
push 0
fstp qword [esp + 0x38]
push ebx
mov dword [esp + 0x3c], 0
call fcn.0040b330
push ebx
call fcn.0040b29b
mov eax, dword [esp + 0xb8]
add esp, 0x24
cmp dword [esp + 0xa8], 0x10
jae 0x40939f
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0xa4]
mov edx, dword [esp + 0x68]
push ecx
push eax
push edx
call fcn.00408150
add esp, 0xc
cmp eax, 9
jl 0x409676
mov ecx, dword [esp + 0x94]
mov edi, 0x10
cmp dword [esp + 0xa8], edi
jae 0x4093da
lea ecx, [esp + 0x94]
mov edx, dword [ecx]
xor ecx, ecx
cmp ecx, dword [esp + 0x80]
jl 0x409676
jg 0x4093f7
cmp edx, dword [esp + 0x7c]
jb 0x409676
lea esi, [eax - 1]
cmp esi, dword [esp + 0xa4]
jbe 0x409408
call fcn.0040be43
mov eax, dword [esp + 0x94]
cmp dword [esp + 0xa8], edi
jae 0x40941f
lea eax, [esp + 0x94]
mov byte [eax + esi], 0
mov esi, dword [esp + 0xa8]
mov ebx, dword [esp + 0x94]
mov eax, ebx
cmp esi, edi
jae 0x40943e
lea eax, [esp + 0x94]
lea ecx, [esp + 0xac]
add eax, 8
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x409468
test dl, dl
je 0x409464
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x409468
add eax, 2
add ecx, 2
test dl, dl
jne 0x409448
xor eax, eax
jmp 0x40946d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x409676
cmp esi, edi
jb 0x409551
mov edi, ebx
test ebx, ebx
je 0x4094b0
mov eax, ebx
cmp esi, 0x10
jae 0x409491
lea eax, [esp + 0x94]
cmp eax, edi
ja 0x4094b0
mov eax, ebx
cmp esi, 0x10
jae 0x4094a3
lea eax, [esp + 0x94]
mov ecx, dword [esp + 0xa4]
add eax, ecx
cmp edi, eax
jbe 0x4094bc
call fcn.0040be43
mov ecx, dword [esp + 0xa4]
lea esi, [esp + 0x90]
mov ebx, edi
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x4094df
lea eax, [esp + 0x94]
lea edi, [eax + ecx]
test edi, edi
je 0x409516
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x4094f9
lea eax, [esp + 0x94]
cmp eax, edi
ja 0x409516
mov eax, dword [esp + 0x94]
cmp edx, 0x10
jae 0x409510
lea eax, [esp + 0x94]
add eax, ecx
cmp edi, eax
jbe 0x40951b
call fcn.0040be43
cmp esi, 0xfffffffc
je 0x409534
test esi, esi
je 0x40952f
lea eax, [esp + 0x90]
cmp esi, eax
je 0x409534
call fcn.0040be43
cmp ebx, edi
je 0x4095a8
cmp esi, 0xfffffffc
je 0x40956e
test esi, esi
jne 0x409546
call fcn.0040be43
cmp dword [esi + 0x18], 0x10
jb 0x40955d
mov eax, dword [esi + 4]
jmp 0x409560
lea edi, [esp + 0x94]
jmp 0x409483
lea eax, [esi + 4]
mov ecx, dword [esi + 0x14]
add ecx, eax
cmp ebx, ecx
jb 0x40956e
call fcn.0040be43
mov byte [ebx], 0
cmp esi, 0xfffffffc
je 0x40959b
test esi, esi
jne 0x40957f
call fcn.0040be43
cmp dword [esi + 0x18], 0x10
jb 0x40958a
mov eax, dword [esi + 4]
jmp 0x40958d
lea eax, [esi + 4]
mov edx, dword [esi + 0x14]
add edx, eax
cmp ebx, edx
jb 0x40959b
call fcn.0040be43
mov ecx, dword [esp + 0xa4]
inc ebx
jmp 0x4094c5
push 0x7e
push 0x424df0
call fcn.00401e60
xor ebx, ebx
push ebx
mov esi, eax
push ebx
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0xc0]
push esi
push ecx
call fcn.00408810
fldz
push 0x7e
fstp qword [esp + 0x3c]
push ebx
push esi
mov dword [esp + 0x44], ebx
call fcn.0040b330
push esi
call fcn.0040b29b
push 0xc
push 0x423180
call fcn.00401e60
add esp, 0x34
mov esi, eax
lea ecx, [eax + 1]
lea ecx, [ecx]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409600
sub eax, ecx
push eax
push 0xffffffffffffffff
push esi
lea ecx, [esp + 0x9c]
call fcn.00404c00
fldz
mov edi, eax
fstp qword [esp + 0x1c]
xor eax, eax
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esp + 0x1c], ebx
push esi
mov dword [esi + 8], eax
call fcn.0040b29b
fld qword [0x4235c8]
fsub qword [0x41f900]
add esp, 4
fsub qword [0x41f8f8]
fmul dword [0x425af0]
fstp dword [0x425af0]
fld qword [0x4235c8]
mov edx, dword [esp + 0xa4]
fadd qword [0x41f340]
add edx, 0xfffffff5
fstp qword [0x4235c8]
cmp edi, edx
je 0x40968b
mov eax, dword [esp + 0x48]
inc eax
mov dword [esp + 0x48], eax
cmp eax, dword [esp + 0x14]
jne 0x409270
jmp 0x4096a2
push 0xb
push edi
lea ecx, [esp + 0x98]
call fcn.004068b0
mov dword [esp + 0x34], 1
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fadd qword [esp + 0x6c]
mov cx, word [esp + 0x28]
movsx edx, cx
sub edx, 0x7d3e1c5b
mov dword [esp + 0x14], edx
or ecx, 0xffffffff
fild dword [esp + 0x14]
fsub qword [esp + 0x5c]
fucompp
fnstsw ax
fld qword [esp + 0x5c]
fsub qword [0x41f340]
fstp qword [esp + 0x5c]
add dword [esp + 0x28], ecx
add dword [esp + 0x50], ecx
test ah, 0x44
jp 0x40970e
fld dword [0x4236b4]
fadd dword [esp + 0x18]
fadd dword [0x424f04]
fmul dword [0x4236dc]
fstp dword [0x4236dc]
fldz
mov esi, dword [esp + 0x68]
xor ebx, ebx
fstp qword [esp + 0x1c]
push 0x408
push ebx
mov dword [esp + 0x24], ebx
push esi
call fcn.0040b330
push esi
call fcn.0040b29b
fldz
xor eax, eax
fstp qword [esp + 0x2c]
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [esp + 0x2c], ebx
push edi
mov byte [edi + 0xc], al
call fcn.0040b29b
fldz
mov esi, dword [esp + 0x6c]
fstp qword [esp + 0x30]
push 0x31e
push ebx
mov dword [esp + 0x38], ebx
push esi
call fcn.0040b330
push esi
call fcn.0040b29b
fldz
mov esi, dword [esp + 0x78]
fstp qword [esp + 0x40]
push 0xaf1
push ebx
push esi
mov dword [esp + 0x4c], ebx
call fcn.0040b330
push esi
call fcn.0040b29b
push 0x40
lea eax, [esp + 0xe4]
push ebx
push eax
call fcn.0040b330
add esp, 0x40
cmp dword [esp + 0x34], ebx
je 0x409a93
mov ecx, dword [0x425b08]
mov edx, dword [esp + 0x78]
sub ecx, 0x17847a6a
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
push 0x708
push edx
fstp qword [esp + 0x64]
inc dword [0x425b08]
call fcn.00402af0
add esp, 8
cmp dword [esp + 0xa4], 0x200
jbe 0x409a93
fld dword [esp + 0x18]
push 0x370
fsub qword [0x41f8f0]
fmul dword [0x42310c]
fstp dword [0x42310c]
fld dword [esp + 0x1c]
fsub qword [0x41f340]
fstp dword [esp + 0x1c]
call fcn.0040b3f9
add dword [0x4230f0], 0x8da09b41
add esp, 4
mov ebx, eax
push ebx
push 0xeb
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov eax, dword [0x425b08]
mov ecx, 0xf5668b9b
sub ecx, eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
mov ecx, 0xa7fe8334
fadd dword [esp + 0x30]
mov dx, word [esp + 0x28]
movsx eax, dx
sub ecx, eax
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fcompp
fnstsw ax
fld dword [esp + 0x30]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [esp + 0x30]
test ah, 1
jne 0x4098a2
mov dx, word [esp + 0x2c]
movsx eax, dx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul dword [esp + 0x18]
call fcn.0040b1f0
mov word [esp + 0x2c], ax
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
jmp 0x4098a4
fstp st(0)
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
push ebx
call fcn.00403950
push 3
push 0x4230a8
call fcn.00401e60
mov cx, word [esp + 0x38]
mov esi, eax
mov ax, word [esp + 0x48]
movsx edx, cx
movsx ecx, ax
sub ecx, edx
mov dword [esp + 0x24], ecx
push esi
push ebx
fild dword [esp + 0x2c]
fstp dword [esp + 0x48]
dec dword [esp + 0x50]
call fcn.0040bccf
fldz
mov edi, eax
fstp qword [esp + 0x34]
xor eax, eax
mov word [esi], ax
push esi
mov dword [esp + 0x38], eax
mov byte [esi + 2], al
call fcn.0040b29b
mov eax, dword [esp + 0xb0]
add esp, 0x1c
cmp dword [esp + 0xa8], 0x10
jae 0x40991d
lea eax, [esp + 0x94]
mov edx, dword [esp + 0xa4]
push edi
push 1
push edx
push eax
call fcn.0040bb89
push edi
call fcn.0040b9ab
add esp, 0x14
push 0x104
lea eax, [ebx + 0x104]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x15
push 0x423588
call fcn.00401e60
push 0x20
push 0x4235d0
mov edi, eax
call fcn.00401e60
mov esi, eax
mov eax, dword [0x427640]
push eax
push esi
lea eax, [ebx + 0x104]
push eax
push edi
lea eax, [ebx + 0x208]
push 0x168
push eax
call fcn.0040b835
fldz
xor eax, eax
fstp qword [esp + 0x44]
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esp + 0x44], eax
push esi
mov dword [esi + 0x1c], eax
call fcn.0040b29b
fldz
xor eax, eax
fstp qword [esp + 0x48]
mov dword [edi], eax
mov dword [edi + 4], eax
mov dword [edi + 8], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x10], eax
mov dword [esp + 0x48], 0
push edi
mov byte [edi + 0x14], al
call fcn.0040b29b
mov ecx, dword [0x427640]
push 1
push ecx
call fcn.004032a0
fld dword [0x425b0c]
fmul qword [0x41f8e8]
lea eax, [ebx + 0x208]
push eax
push ebx
fstp dword [0x425b0c]
call fcn.004034a0
add esp, 0x40
push 0x370
push 0
push ebx
call fcn.0040b330
fld qword [esp + 0x90]
mov dx, word [0x423108]
fsub qword [0x41f8e0]
movsx eax, dx
add esp, 0xc
fsub qword [0x41f8d8]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
dec word [0x423108]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x409a7f
mov ecx, dword [0x425bb4]
add ecx, dword [0x424b74]
mov eax, 1
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fld dword [esp + 0x18]
faddp st(1)
fsubr dword [esp + 0x18]
fstp dword [esp + 0x18]
add dword [0x425bb4], eax
add dword [0x424b74], eax
push ebx
call fcn.0040b29b
add esp, 4
push 0x15f90
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [0x427640]
push 0
push edx
call fcn.004032a0
add esp, 8
test eax, eax
jne 0x409160
mov eax, dword [0x427648]
mov ecx, dword [0x427184]
push eax
push ecx
call fcn.004034a0
jmp 0x409159