Function at 0x100901d3
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor ebx, ebx
lea eax, [esi + 0x48]
push eax
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [esi + 0x1c], ebx
jne 0x100901f6
xor esi, esi
jmp 0x100903d2
cmp byte [esi + 1], 0
mov ebp, dword [esp + 0x18]
je 0x10090237
cmp byte [esi + 4], 0
je 0x10090237
mov ecx, dword [esi + ebp*4 + 0x30]
cmp ecx, ebx
je 0x10090226
cmp ebp, 1
jne 0x1009022d
and byte [esi + 4], 0
mov ecx, dword [esi + 0x34]
call fcn.1007d278
mov esi, eax
jmp 0x100903d2
mov ecx, dword [esi + 0x30]
cmp ecx, ebx
je 0x1009023b
call fcn.1007d076
mov dword [esi + 0x2c], eax
jmp 0x1009023b
and byte [esi + 4], 0
cmp byte [esi + 1], 0
je 0x10090251
cmp byte [esi + 2], 0
jne 0x10090251
cmp ebp, 2
jne 0x100901ef
cmp dword [esi + 0x34], ebx
jne 0x100901ef
cmp dword [esi + ebp*4 + 0x30], 0
lea edi, [esi + ebp*4 + 0x30]
je 0x100901ef
cmp ebp, 1
jne 0x100902f4
cmp dword [esi + 0x34], 0
je 0x1009028a
cmp dword [esi + 0x24], 0xffffffff
jne 0x1009028a
call dword [sym.imp.WINMM.dll_timeGetTime]
and eax, 0x7fffffff
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x34]
call fcn.1007d076
mov dword [esi + 0x28], eax
mov edi, dword [esi + 0x34]
test edi, edi
je 0x100901ef
mov ecx, esi
call fcn.10090566
mov ecx, edi
mov ebp, eax
call fcn.1007d076
cmp eax, ebp
jge 0x100902e7
test ebx, ebx
je 0x100902bb
mov ecx, ebx
call fcn.1007d151
push ebx
call fcn.1006efe7
pop ecx
mov ebx, dword [esi + 0x34]
mov eax, dword [ebx]
test eax, eax
je 0x100902c9
mov dword [esi + 0x34], eax
jmp 0x100902d1
and dword [esi + 0x40], 0
and dword [esi + 0x34], 0
test ebx, ebx
je 0x100902e0
mov eax, dword [ebx + 0x14]
mov al, byte [eax]
and al, 0xf0
cmp al, 0x30
jne 0x100902e7
mov edi, dword [esi + 0x34]
test edi, edi
jne 0x10090295
test ebx, ebx
jne 0x1009039b
jmp 0x100901ef
cmp ebp, 2
jne 0x10090332
cmp dword [esi + 0x24], 0xffffffff
jne 0x10090318
call dword [sym.imp.WINMM.dll_timeGetTime]
and eax, 0x7fffffff
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x38]
call fcn.1007d076
mov dword [esi + 0x28], eax
mov ecx, dword [esi + 0x38]
call fcn.1007d076
mov ecx, esi
mov ebx, eax
call fcn.10090566
cmp ebx, eax
jl 0x10090387
jmp 0x100901ef
test ebp, ebp
jne 0x10090387
cmp byte [esi + 6], 0
je 0x10090387
mov ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x10]
xor edx, edx
sub eax, dword [ecx + 0x100]
mov ecx, dword [esi + 0x7c]
sar ecx, 2
and ecx, 3
mov ecx, dword [ecx*4 + 0x100b543c]
shl eax, cl
mov ecx, 0x1b9
div ecx
mov ecx, dword [esi + 0x30]
lea ebp, [eax + eax*4]
shl ebp, 1
call fcn.1007d076
mov ecx, esi
mov ebx, eax
call fcn.10090566
add eax, ebp
cmp ebx, eax
jg 0x100901ef
mov ebp, dword [esp + 0x18]
mov ebx, dword [edi]
mov eax, dword [ebx]
test eax, eax
je 0x10090393
mov dword [edi], eax
jmp 0x1009039b
and dword [esi + ebp*4 + 0x3c], 0
and dword [edi], 0
mov ecx, esi
call fcn.1008ffb2
test eax, eax
jne 0x100903c2
call dword [sym.imp.WINMM.dll_timeGetTime]
and eax, 0x7fffffff
cmp dword [esi + 0x78], 0
mov dword [esi + 0x14], eax
mov byte [esi + 1], 1
jne 0x100903c2
or dword [esi + 0x24], 0xffffffff
test ebx, ebx
je 0x100903d0
mov ecx, ebx
call fcn.1007d076
mov dword [esi + 0x2c], eax
mov esi, ebx
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 4