Function at 0x1001e860
Capabilities:
Check for time delay via gettickcount

Disassembly:
sub esp, 0x23c
mov eax, dword [0x100dd9d4]
xor eax, esp
mov dword [esp + 0x238], eax
mov eax, dword [esp + 0x240]
push ebx
push ebp
push esi
mov esi, ecx
mov ecx, dword [esi + 0x160]
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x164]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 0x128]
imul eax, dword [esi + 0x1cc]
push edi
xor edx, edx
mov edi, eax
and eax, 0x7fffff
shr edi, 0x17
cmp edi, edx
mov ebp, eax
mov dword [esi + 0x168], edx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], edx
jbe 0x1001ec2e
push 0x800000
call sub.MSVCR80.dll_void____cdecl_operator_new___unsigned_int_
push 0x800000
mov ebx, eax
push 0
push ebx
mov dword [esp + 0x34], ebx
call sub.ntdll.dll_memset
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
add esp, 0x10
push 0x800000
lea ecx, [esp + 0x30]
push ecx
push ebp
push 0x200000
push ebx
push edx
mov ecx, esi
call fcn.10017af0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x18c]
cmp eax, 0x3e8
jb 0x1001ea41
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov edx, dword [eax + 0x74]
call edx
test eax, eax
jne 0x1001ec5c
push 0x1fe
push eax
mov word [esp + 0x50], ax
lea eax, [esp + 0x52]
push eax
call sub.ntdll.dll_memset
add esp, 0xc
test ebp, ebp
mov dword [esp + 0x18], ebp
fild dword [esp + 0x18]
jge 0x1001e966
fadd qword [0x100644a0]
test edi, edi
mov dword [esp + 0x18], edi
fild dword [esp + 0x18]
jge 0x1001e978
fadd qword [0x100644a0]
fdivp st(1)
fmul qword [0x10064600]
fnstcw word [esp + 0x20]
movzx eax, word [esp + 0x20]
or eax, 0xc00
mov dword [esp + 0x18], eax
fldcw word [esp + 0x18]
fistp qword [esp + 0x18]
mov edi, dword [esp + 0x18]
cmp edi, 0x64
fldcw word [esp + 0x20]
jbe 0x1001e9ac
mov edi, 0x64
mov ebp, dword [sym.imp.MSVCR80.dll__swprintf]
push edi
lea ecx, [esp + 0x4c]
push str.FAT_Table_Rewriting___d___...
push ecx
call ebp
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov edx, dword [edx + 0x38]
add esp, 0xc
lea eax, [esp + 0x48]
push eax
call edx
push edi
lea eax, [esp + 0x4c]
push str.Status:_d
push eax
call ebp
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov edx, dword [edx + 0x3c]
add esp, 0xc
lea eax, [esp + 0x48]
push eax
call edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp edi, 0x64
mov dword [esi + 0x18c], eax
mov dword [esp + 0x20], edi
jle 0x1001ea0d
mov dword [esp + 0x20], 0x64
fild dword [esp + 0x20]
fmul qword [esi + 0x180]
fiadd dword [esi + 0x188]
call fcn.100594f0
mov ecx, dword [esi + 0x70]
mov edi, eax
mov eax, dword [ecx]
mov edx, dword [eax + 0x4c]
call edx
cmp eax, edi
jge 0x1001ea3d
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov edx, dword [eax + 8]
push edi
call edx
mov ebp, dword [esp + 0x14]
test ebp, ebp
jne 0x1001ea52
mov dword [ebx], 0xffffff8
mov dword [ebx + 4], 0xffffffff
cmp dword [esi + 0x16c], 0
jne 0x1001ea7f
xor eax, eax
lea ecx, [ecx]
cmp dword [ebx + eax*4], 0
je 0x1001ea72
add eax, 1
cmp eax, 0x200000
jb 0x1001ea60
jmp 0x1001ea7f
mov ecx, ebp
shl ecx, 0x15
add ecx, eax
mov dword [esi + 0x16c], ecx
mov ecx, dword [esi + 0x1cc]
mov eax, ebp
shl eax, 0x17
xor edx, edx
div ecx
xor edx, edx
push edx
xor ebp, ebp
mov dword [esp + 0x48], ebp
mov edi, eax
mov eax, 0x800000
div ecx
add edi, dword [esi + 0x12c]
cmp dword [esi + 0x68], ebp
push eax
push ebp
push edi
push ebx
je 0x1001eaff
mov ecx, dword [esi + 0x1c4]
call fcn.1002ad60
test eax, eax
jne 0x1001eb49
call fcn.10059c60
mov ebx, dword [eax]
push 0x927
mov ecx, str..._fatcpyex.cpp
mov dword [esp + 0x1c], eax
add ebx, 8
call fcn.1001dc10
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [ebx]
push str._s:_Failed_to_write_sector.
push edx
call eax
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
add esp, 0x10
push 0x22
call eax
jmp 0x1001eb45
mov ecx, dword [esi + 0x28]
call fcn.1002ad60
test eax, eax
jne 0x1001eb49
call fcn.10059c60
mov ebp, eax
mov ebx, dword [ebp]
push 0x930
mov ecx, str..._fatcpyex.cpp
add ebx, 8
call fcn.1001dc10
mov ecx, dword [ebx]
push eax
push str._s:_Failed_to_write_sector.
push ebp
call ecx
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
add esp, 0x10
push 0x22
call eax
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x24]
cmp dword [esi + 0x144], 2
jne 0x1001ec04
mov ecx, dword [esi + 0x128]
add edi, ecx
adc ebp, 0
xor edx, edx
push edx
mov eax, 0x800000
div dword [esi + 0x1cc]
cmp dword [esi + 0x68], 0
push eax
push ebp
push edi
push ebx
je 0x1001ebbf
mov ecx, dword [esi + 0x1c4]
call fcn.1002ad60
test eax, eax
jne 0x1001ec04
call fcn.10059c60
mov ebx, eax
mov edi, dword [ebx]
push 0x93f
mov ecx, str..._fatcpyex.cpp
add edi, 8
call fcn.1001dc10
mov edx, dword [edi]
push eax
push str._s:_Failed_to_write_sector.
push ebx
call edx
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov edx, dword [eax + 0x20]
add esp, 0x10
push 0x22
call edx
jmp 0x1001ec00
mov ecx, dword [esi + 0x28]
call fcn.1002ad60
test eax, eax
jne 0x1001ec04
call fcn.10059c60
mov ebx, eax
mov edi, dword [ebx]
push 0x948
mov ecx, str..._fatcpyex.cpp
add edi, 8
call fcn.1001dc10
push eax
mov eax, dword [edi]
push str._s:_Failed_to_write_sector.
push ebx
call eax
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
add esp, 0x10
push 0x22
call eax
mov ebx, dword [esp + 0x24]
push ebx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x2c]
add eax, 1
add esp, 4
cmp eax, edi
mov dword [esp + 0x14], eax
jb 0x1001e8d2
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
xor edx, edx
cmp ebp, edx
jbe 0x1001eeb7
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x74]
call eax
test eax, eax
je 0x1001ec98
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
push 0x17
call eax
call fcn.10059c60
push 0x957
jmp 0x1001ec72
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
push 0x17
call eax
call fcn.10059c60
push 0x8fc
mov edi, eax
mov esi, dword [edi]
mov ecx, str..._fatcpyex.cpp
add esi, 8
call fcn.1001dc10
mov ecx, dword [esi]
push eax
push 0x10064608
push edi
call ecx
add esp, 0x10
xor eax, eax
jmp 0x1001eec6
push ebp
call sub.MSVCR80.dll_void____cdecl_operator_new___unsigned_int_
push ebp
mov ebx, eax
push 0
push ebx
call sub.ntdll.dll_memset
add esp, 0x10
push 0x800000
lea edx, [esp + 0x30]
push edx
push edi
mov eax, ebp
shr eax, 2
push eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x40]
push ebx
push eax
mov ecx, esi
call fcn.10017af0
test edi, edi
jne 0x1001ecdf
mov dword [ebx], 0xffffff8
mov dword [ebx + 4], 0xffffffff
cmp dword [esi + 0x16c], 0
jne 0x1001ed0e
mov ecx, dword [esp + 0x10]
xor eax, eax
test ecx, ecx
jbe 0x1001ed0e
cmp dword [ebx + eax*4], 0
je 0x1001ed01
add eax, 1
cmp eax, ecx
jb 0x1001ecf2
jmp 0x1001ed0e
mov ecx, edi
shl ecx, 0x15
add ecx, eax
mov dword [esi + 0x16c], ecx
mov ecx, dword [esi + 0x1cc]
mov eax, edi
shl eax, 0x17
xor edx, edx
div ecx
xor edx, edx
push edx
mov dword [esp + 0x38], 0
mov edi, eax
mov eax, ebp
div ecx
add edi, dword [esi + 0x12c]
cmp dword [esi + 0x68], 0
push eax
je 0x1001ed9a
mov edx, dword [esp + 0x3c]
mov ecx, dword [esi + 0x1c4]
push edx
push edi
push ebx
call fcn.1002ad60
test eax, eax
jne 0x1001edf0
call fcn.10059c60
mov dword [esp + 0x10], eax
mov eax, dword [eax]
add eax, 8
push 0x979
mov ecx, str..._fatcpyex.cpp
mov dword [esp + 0x1c], eax
call fcn.1001dc10
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x18]
push str._s:_Failed_to_write_sector.
push eax
call edx
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov edx, dword [eax + 0x20]
add esp, 0x10
push 0x22
call edx
jmp 0x1001edf0
mov eax, dword [esp + 0x3c]
mov ecx, dword [esi + 0x28]
push eax
push edi
push ebx
call fcn.1002ad60
test eax, eax
jne 0x1001edf0
call fcn.10059c60
mov dword [esp + 0x10], eax
mov eax, dword [eax]
add eax, 8
push 0x982
mov ecx, str..._fatcpyex.cpp
mov dword [esp + 0x1c], eax
call fcn.1001dc10
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [edx]
push str._s:_Failed_to_write_sector.
push ecx
call eax
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
add esp, 0x10
push 0x22
call eax
cmp dword [esi + 0x144], 2
jne 0x1001eeaa
mov ecx, dword [esi + 0x128]
add edi, ecx
mov ecx, dword [esp + 0x34]
adc ecx, 0
xor edx, edx
push edx
mov eax, ebp
div dword [esi + 0x1cc]
cmp dword [esi + 0x68], 0
push eax
push ecx
push edi
push ebx
je 0x1001ee68
mov ecx, dword [esi + 0x1c4]
call fcn.1002ad60
test eax, eax
jne 0x1001eeaa
call fcn.10059c60
mov ebp, eax
mov edi, dword [ebp]
push 0x98f
mov ecx, str..._fatcpyex.cpp
add edi, 8
call fcn.1001dc10
mov edx, dword [edi]
push eax
push str._s:_Failed_to_write_sector.
push ebp
call edx
mov ecx, dword [esi + 0x70]
mov eax, dword [ecx]
mov edx, dword [eax + 0x20]
add esp, 0x10
push 0x22
call edx
jmp 0x1001eeaa
mov ecx, dword [esi + 0x28]
call fcn.1002ad60
test eax, eax
jne 0x1001eeaa
call fcn.10059c60
mov ebp, eax
mov edi, dword [ebp]
push 0x998
mov ecx, str..._fatcpyex.cpp
add edi, 8
call fcn.1001dc10
push eax
mov eax, dword [edi]
push str._s:_Failed_to_write_sector.
push ebp
call eax
mov ecx, dword [esi + 0x70]
mov edx, dword [ecx]
mov eax, dword [edx + 0x20]
add esp, 0x10
push 0x22
call eax
push ebx
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
mov ecx, dword [esp + 0x3c]
add esp, 4
sub ecx, dword [esp + 0x2c]
mov eax, 1
mov dword [esi + 0x168], ecx
mov ecx, dword [esp + 0x248]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10059076
add esp, 0x23c
ret 4