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

Disassembly:
sub esp, 0x14
push ebx
push ebp
push esi
mov esi, eax
cmp dword [esi + 0xc], 0xffffffff
push edi
jne 0x441219
cmp dword [esi + 0x10], 0
je 0x4412a5
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
cmp edi, dword [esi + 0x1c]
ja 0x441234
jb 0x44122d
cmp ebp, dword [esi + 0x18]
ja 0x441234
cmp dword [esp + 0x30], 0
je 0x4412a5
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
sub eax, dword [0x4fe464]
cmp eax, 0x1388
jbe 0x441255
call ebx
mov dword [0x4fe464], eax
call fcn.00441000
lea eax, [esi + 0xe0]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [esp + 0x34], 0
je 0x4412b1
cmp byte [esi + 4], 0
jne 0x4412b1
mov ecx, dword [esp + 0x30]
xor eax, eax
add ecx, ebp
adc eax, edi
cmp eax, dword [esi + 0x1c]
jb 0x441307
ja 0x44128d
cmp ecx, dword [esi + 0x18]
jbe 0x441307
push eax
push ecx
mov ebx, esi
call fcn.004410e0
test al, al
jne 0x441307
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 0x10
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x18]
cmp edi, eax
jb 0x4412ec
ja 0x4412c1
cmp ebp, ecx
jb 0x4412ec
mov ebx, dword [esp + 0x30]
xor edx, edx
add ebx, ebp
adc edx, edi
cmp edx, eax
jb 0x4412ec
ja 0x4412d5
cmp ebx, ecx
jbe 0x4412ec
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 0x10
sub ecx, ebp
sbb eax, edi
xor edx, edx
cmp edx, eax
jb 0x441307
ja 0x4412fe
cmp dword [esp + 0x30], ecx
jbe 0x441307
mov eax, dword [esi + 0x18]
sub eax, ebp
mov dword [esp + 0x30], eax
mov eax, dword [esi + 8]
lea ecx, [eax - 1]
and ecx, ebp
sub ebp, ecx
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x30]
sbb edi, 0
neg eax
lea ecx, [edx + ecx - 1]
and ecx, eax
cmp byte [esi + 4], 0
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ecx
je 0x441350
xor eax, eax
add ecx, ebp
adc eax, edi
cmp eax, dword [esi + 0x1c]
jb 0x441350
ja 0x441347
cmp ecx, dword [esi + 0x18]
jbe 0x441350
mov eax, dword [esi + 0x18]
sub eax, ebp
mov dword [esp + 0x30], eax
or ebx, 0xffffffff
mov eax, 0xffffffd8
mov ecx, 0xffffffe0
sub eax, esi
mov dword [esp + 0x18], ebx
mov byte [esp + 0x34], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], ecx
lea edx, [esi + 0x28]
mov dword [esp + 0x20], eax
jmp 0x441380
mov eax, dword [edx + 4]
mov edi, dword [edx]
cmp dword [esp + 0x2c], eax
jb 0x4413bc
ja 0x441391
cmp ebp, edi
jb 0x4413bc
mov ebx, dword [edx + 8]
xor ecx, ecx
add ebx, edi
mov edi, dword [esp + 0x30]
adc ecx, eax
xor eax, eax
add edi, ebp
adc eax, dword [esp + 0x2c]
cmp eax, ecx
jb 0x441411
ja 0x4413b0
cmp edi, ebx
jbe 0x441411
mov ecx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x18]
cmp dword [edx + 0xc], 0
jne 0x4413fa
cmp ebx, 0xffffffff
je 0x4413e7
cmp dword [edx - 4], 0
jne 0x4413d4
cmp dword [ecx + esi + 0x24], 0
jne 0x4413e7
mov eax, dword [esi + 0xfc]
mov edi, eax
sub edi, dword [ecx + esi + 0x38]
sub eax, dword [edx + 0x10]
cmp eax, edi
jbe 0x4413fa
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
lea ecx, [eax + edx]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x14]
inc eax
add edx, 0x20
mov dword [esp + 0x14], eax
cmp eax, 6
jb 0x441380
jmp 0x44141e
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x28]
mov byte [esp + 0x34], 1
test ebx, ebx
jge 0x44144f
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebp
call fcn.0049f8b3
call eax
add esp, 4
push 0x4ef808
lea edx, [esp + 0x38]
push edx
mov dword [esp + 0x3c], 8
call fcn.004a2fab
lea edi, [ebx + 1]
shl edi, 5
add edi, esi
lea eax, [edi + 0x14]
push eax
mov dword [esp + 0x20], eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
cmp byte [esp + 0x34], 0
je 0x441487
inc dword [esi + 0xfc]
mov esi, dword [esi + 0xfc]
mov dword [edi + 0x18], esi
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret 0x10
mov eax, dword [edi + 4]
test eax, eax
je 0x441495
push eax
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov dword [edi + 8], ebp
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], ebx
inc dword [esi + 0xfc]
mov eax, dword [esi + 0xfc]
mov dword [edi + 0x18], eax
xor eax, eax
cmp byte [esi + 4], al
push ebx
setne al
push ebp
push ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x10]
mov byte [esp + 0x40], 1
mov dword [esp + 0x38], 0
lea eax, [eax + eax + 2]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [edi + 4], eax
test eax, eax
jne 0x44151d
cmp byte [esp + 0x34], 0
je 0x44151d
mov byte [esp + 0x34], 0
call fcn.00441000
mov edx, dword [esp + 0x28]
mov ecx, dword [esi + 0x10]
xor eax, eax
cmp byte [esi + 4], al
push ebx
setne al
push ebp
push edx
lea eax, [eax + eax + 2]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [edi + 4], eax
test eax, eax
je 0x4414e7
mov eax, dword [edi + 4]
test eax, eax
jne 0x44155c
mov edx, dword [esp + 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebx
call fcn.0049f8b3
call eax
add esp, 4
push 0x4ef808
lea ecx, [esp + 0x38]
push ecx
mov dword [esp + 0x3c], 8
call fcn.004a2fab
cmp dword [esi], 0
je 0x44147b
push 4
push 0x1000
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov ecx, dword [edi + 4]
cmp eax, ecx
je 0x44147b
push ecx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov edx, dword [esp + 0x1c]
xor eax, eax
push edx
mov dword [edi + 4], eax
mov dword [edi + 0x10], eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x14
ret 0x10