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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1041b007
mov eax, dword fs:[0]
push eax
sub esp, 0x12c
push ebx
push esi
push edi
mov eax, dword [0x104c5878]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x38], ebx
push 0x1f4
mov dword [ebp - 0x10], 0
push dword [ebx + 0x8c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebx + 0x8c]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
cmp byte [ebx + 0x84], 0
jne 0x1038139f
mov eax, dword [ebx + 0x90]
cmp eax, 1
jne 0x103806aa
lea esi, [ebx + 0x40]
mov dword [ebx + 0x90], 0
lea eax, [esi + 8]
mov dword [ebp - 0xdc], esi
push eax
mov dword [ebp - 0x1c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea edi, [esi + 4]
cmp dword [esi], eax
jne 0x10380631
inc dword [edi]
jmp 0x1038063f
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov dword [edi], 1
mov dword [ebp - 4], 0
xor ecx, ecx
cmp dword [ebx + 0x64], ecx
jbe 0x10380682
nop dword [eax]
mov eax, dword [ebx + 0x60]
mov edx, dword [eax + ecx*4]
mov eax, dword [edx + 0x3c]
cmp eax, 0x3e8
ja 0x10380665
cmp eax, 1
jne 0x10380676
mov dword [edx + 0x3c], 0
mov eax, dword [ebx + 0xa4]
inc eax
mov dword [edx + 0x44], eax
inc ecx
cmp ecx, dword [ebx + 0x64]
jb 0x10380650
mov esi, dword [ebp - 0xdc]
lock inc dword [ebx + 0xa4]
mov dword [ebp - 4], 0xffffffff
add dword [edi], 0xffffffff
jne 0x1038069b
mov dword [esi], 0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebx + 0x90]
cmp eax, 2
jne 0x1038087d
mov edx, dword [ebx + 0x3c]
xor ecx, ecx
mov dword [ebx + 0x90], 0
test edx, edx
je 0x103806f2
xor eax, eax
nop dword [eax + eax]
mov edx, dword [ebx + 0x38]
cmp dword [eax + edx + 0x28c], 0xffffffff
jle 0x103806e5
mov byte [eax + edx + 0x218], 1
mov edx, dword [ebx + 0x3c]
inc ecx
add eax, 0x290
cmp ecx, edx
jb 0x103806d0
xor eax, eax
mov dword [ebp - 0x28], eax
test edx, edx
je 0x103807f9
xor edi, edi
mov esi, dword [ebx + 0x38]
cmp dword [edi + esi + 0x28c], 0xffffffff
jle 0x103807e6
mov eax, dword [edi + esi + 0x214]
cmp eax, 4
jae 0x1038072f
test eax, eax
je 0x1038072f
push 0xfa
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x10380712
lea esi, [ebx + 0x40]
lea eax, [esi + 8]
mov dword [ebp - 0x12c], esi
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi], eax
jne 0x10380751
inc dword [esi + 4]
jmp 0x10380760
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov dword [esi + 4], 1
mov dword [ebp - 4], 1
xor ecx, ecx
cmp dword [ebx + 0x64], ecx
jbe 0x1038079a
mov eax, dword [ebx + 0x38]
mov edx, dword [ebx + 0x60]
mov eax, dword [edi + eax + 0x28c]
mov dword [ebp - 0x1c], eax
nop
mov eax, dword [edx]
mov esi, dword [ebp - 0x1c]
cmp dword [eax + 0x38], esi
lea esi, [ebx + 0x40]
je 0x1038081b
inc ecx
add edx, 4
cmp ecx, dword [ebx + 0x64]
jb 0x10380780
xor eax, eax
mov dword [eax + 0x48], 0xffffffff
mov dword [eax + 0x3c], 1
mov eax, dword [ebx + 0x38]
mov dword [eax + edi + 0x214], 0
mov eax, dword [ebx + 0x38]
mov dword [edi + eax + 0x28c], 0xffffffff
mov dword [ebp - 4], 0xffffffff
add dword [esi + 4], 0xffffffff
jne 0x103807d9
mov dword [esi], 0
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x28]
inc eax
add edi, 0x290
mov dword [ebp - 0x28], eax
cmp eax, dword [ebx + 0x3c]
jb 0x10380701
lea esi, [ebx + 0x40]
lea edi, [esi + 8]
mov dword [ebp - 0x130], esi
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi], eax
jne 0x10380826
inc dword [esi + 4]
jmp 0x10380835
mov eax, dword [ebx + 0x60]
mov eax, dword [eax + ecx*4]
jmp 0x1038079c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov dword [esi + 4], 1
mov dword [ebp - 4], 2
xor ecx, ecx
cmp dword [ebx + 0x64], ecx
jbe 0x1038085c
mov eax, dword [ebx + 0x60]
mov eax, dword [eax + ecx*4]
cmp dword [eax + 0x3c], 0
jne 0x10380856
mov dword [eax + 0x3c], 1
inc ecx
cmp ecx, dword [ebx + 0x64]
jb 0x10380843
lock inc dword [ebx + 0xa4]
mov dword [ebp - 4], 0xffffffff
add dword [esi + 4], 0xffffffff
jne 0x10380876
mov dword [esi], 0
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [ebx + 0x94], 0
je 0x103808ff
lea esi, [ebx + 0x40]
lea edi, [esi + 8]
mov dword [ebp - 0x134], esi
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [esi], eax
jne 0x103808ac
inc dword [esi + 4]
jmp 0x103808bb
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov dword [esi + 4], 1
mov dword [ebp - 4], 3
mov ecx, ebx
push dword [ebx + 0x94]
call fcn.103822e0
push dword [ebx + 0x98]
mov dword [ebx + 0x94], 0
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov dword [ebp - 4], 0xffffffff
add dword [esi + 4], 0xffffffff
jne 0x103808f8
mov dword [esi], 0
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebx + 0x3c]
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x2c], ecx
test eax, eax
je 0x10381027
imul eax, ecx, 0x290
mov byte [ebp - 0x11], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x38]
mov edi, dword [ebp - 0x18]
cmp dword [edi + eax + 0x214], 0
je 0x10381004
lea esi, [ebx + 0x40]
lea eax, [esi + 8]
mov dword [ebp - 0xb4], esi
push eax
mov dword [ebp - 0x1c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea ecx, [esi + 4]
mov dword [ebp - 0x28], ecx
cmp dword [esi], eax
jne 0x10380966
inc dword [ecx]
jmp 0x10380977
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov eax, dword [ebp - 0x28]
mov dword [eax], 1
mov dword [ebp - 4], 4
xor ecx, ecx
cmp dword [ebx + 0x64], ecx
jbe 0x103809a2
mov eax, dword [ebx + 0x38]
mov edx, dword [ebx + 0x60]
mov edi, dword [edi + eax + 0x28c]
mov eax, dword [edx]
cmp dword [eax + 0x38], edi
je 0x103809c8
inc ecx
add edx, 4
cmp ecx, dword [ebx + 0x64]
jb 0x10380992
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x28]
add dword [eax], 0xffffffff
jne 0x103809b7
mov dword [esi], 0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0x2c]
jmp 0x10381015
mov eax, dword [ebx + 0x60]
mov edi, dword [eax + ecx*4]
mov dword [ebp - 0x20], edi
test edi, edi
je 0x103809a2
mov ecx, dword [ebx + 0x38]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x30], ecx
mov eax, dword [edx + ecx + 0x214]
cmp eax, 3
jbe 0x10380c1a
cmp eax, 4
jne 0x103809ff
mov dword [edi + 0x3c], 1
jmp 0x10380bda
cmp eax, 5
jne 0x10380a18
push edi
mov ecx, ebx
call fcn.103835e0
mov byte [ebp - 0x11], 1
mov dword [ebp - 0x34], edi
jmp 0x10380bda
cmp eax, 0x64
jbe 0x10380bda
add eax, 0x3e9
cmp dword [edi + 0x4c], 0
mov dword [edi + 0x3c], eax
jne 0x10380bda
mov byte [ebp - 4], 5
mov esi, dword [ebx + 0x2c]
mov dword [ebp - 0xf0], esi
mov edx, dword [ebx + 0x30]
mov dword [ebp - 0xec], edx
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0xe8], ecx
mov eax, dword [edi + 0x24]
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0xf4], 0xffffffff
mov dword [ebp - 0xe4], eax
mov byte [ebp - 4], 5
or dword [ebp - 0x10], 1
mov byte [ebp - 4], 7
lea ebx, [ebp - 0x58]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0xffffffff
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0xffffffff
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], eax
mov byte [ebp - 4], 9
mov eax, dword [str..dlc_parts]
mov dword [ebp - 0x40], eax
mov eax, dword [0x104c657c]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 4], 7
or dword [ebp - 0x10], 2
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x10380acf
dec ecx
jmp 0x10380ad1
xor ecx, ecx
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x10380adb
dec eax
jmp 0x10380add
xor eax, eax
add ecx, eax
mov dword [ebp - 0x54], ecx
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x10380aec
dec eax
jmp 0x10380aee
xor eax, eax
add ecx, eax
mov dword [ebp - 0x5c], ecx
inc ecx
call fcn.103675e0
mov dword [ebp - 0x60], eax
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x30], eax
test ecx, ecx
je 0x10380b09
dec ecx
jmp 0x10380b0b
xor ecx, ecx
push ecx
push dword [ebp - 0x50]
push eax
call fcn.103ce0b0
mov eax, dword [ebp - 0x4c]
add esp, 0xc
test eax, eax
je 0x10380b24
lea esi, [eax - 1]
jmp 0x10380b26
xor esi, esi
mov eax, dword [ebp - 0x44]
test eax, eax
je 0x10380b30
dec eax
jmp 0x10380b32
xor eax, eax
push eax
push dword [ebp - 0x48]
mov eax, dword [ebp - 0x30]
add eax, esi
push eax
call fcn.103ce0b0
mov eax, dword [ebp - 0x44]
add esp, 0xc
test eax, eax
je 0x10380b4e
dec eax
jmp 0x10380b50
xor eax, eax
lea ecx, [eax + esi]
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x10380b5d
dec eax
jmp 0x10380b5f
xor eax, eax
push eax
push dword [ebp - 0x40]
mov eax, dword [ebp - 0x30]
add eax, ecx
push eax
call fcn.103ce0b0
mov ecx, dword [ebp - 0x60]
add esp, 0xc
mov eax, dword [ebp - 0x5c]
mov byte [eax + ecx], 0
mov ecx, dword [ebp - 0x60]
call fcn.10365380
mov esi, dword [ebp - 0x10]
and esi, 0xfffffffd
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x60]
call fcn.10367720
mov dword [ebp - 0x60], 0
mov byte [ebp - 4], 5
lea eax, [ebp - 0x58]
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x58]
call fcn.10367720
and esi, 0xfffffffe
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x10], esi
mov byte [ebp - 4], 4
xor ecx, ecx
call fcn.10367720
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0xf8], 0
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x48], 0xffffffff
mov eax, dword [ebx + 0x38]
mov dword [eax + ecx + 0x214], 0
mov eax, dword [ebx + 0x38]
mov dword [ecx + eax + 0x28c], 0xffffffff
lea ecx, [ebx + 0xa4]
mov eax, dword [ecx]
inc eax
mov dword [edi + 0x44], eax
lock inc dword [ecx]
mov esi, dword [ebp - 0xb4]
jmp 0x10380fbd
cmp eax, 2
jne 0x10380c73
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x18]
mov ecx, dword [ecx + edx + 0x224]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x1047c750]
mov ecx, dword [ebp - 0x18]
sub eax, dword [ecx + edx + 0x228]
cvtpd2ps xmm1, xmm0
inc eax
movd xmm0, eax
mulss xmm1, dword [0x1047c0e0]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [ecx + edx + 0x21c], xmm1
jmp 0x10380c7f
movss xmm1, dword [edx + ecx + 0x21c]
mov ecx, dword [ebp - 0x18]
movss dword [edi + 0x54], xmm1
mov eax, dword [ebx + 0x38]
mov eax, dword [ecx + eax + 0x220]
mov dword [edi + 0x4c], eax
mov eax, dword [ebx + 0x38]
add eax, ecx
mov ecx, dword [eax + 0x1e4]
cmp ecx, 0xffffffff
jne 0x10380caf
mov eax, dword [eax + 0x19c]
xor ecx, ecx
cmp eax, 0xffffffff
cmovne ecx, eax
cmp ecx, dword [edi + 0x50]
je 0x10380fbd
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xbc], 0
mov dword [edi + 0x50], ecx
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xbc], 0
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0xc0]
push eax
mov ecx, edi
call fcn.10384460
mov dword [ebp - 0xd8], 0x104771c4
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0xd8], vtable.os::File.0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0xcc], 0
mov dword [ebp - 0xc8], 0
mov byte [ebp - 4], 0x10
mov dword [ebp - 0xd4], 0
mov byte [ebp - 0xd0], 0
mov byte [ebp - 4], 0x12
mov edi, dword [ebx + 0x2c]
mov dword [ebp - 0x108], edi
mov edx, dword [ebx + 0x30]
mov dword [ebp - 0x104], edx
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x110], 0
mov dword [ebp - 0x10c], 0xffffffff
mov ecx, dword [eax + 0x20]
mov dword [ebp - 0x100], ecx
mov eax, dword [eax + 0x24]
mov dword [ebp - 0xfc], eax
mov byte [ebp - 4], 0x12
mov ebx, dword [ebp - 0x10]
or ebx, 4
mov dword [ebp - 0x10], ebx
mov byte [ebp - 4], 0x14
lea esi, [ebp - 0x80]
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x84], 0xffffffff
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x7c], 0xffffffff
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x6c], eax
mov byte [ebp - 4], 0x16
mov eax, dword [str..dlc_info]
mov dword [ebp - 0x68], eax
mov eax, dword [0x104c6584]
mov dword [ebp - 0x64], eax
mov byte [ebp - 4], 0x14
or ebx, 8
mov dword [ebp - 0x10], ebx
mov ecx, dword [ebp - 0x74]
test ecx, ecx
je 0x10380e06
dec ecx
jmp 0x10380e08
xor ecx, ecx
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x10380e12
dec eax
jmp 0x10380e14
xor eax, eax
add ecx, eax
mov dword [ebp - 0x7c], ecx
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x10380e23
dec eax
jmp 0x10380e25
xor eax, eax
add ecx, eax
mov dword [ebp - 0x84], ecx
inc ecx
call fcn.103675e0
mov ebx, eax
mov dword [ebp - 0x88], ebx
mov ecx, dword [ebp - 0x74]
test ecx, ecx
je 0x10380e45
dec ecx
jmp 0x10380e47
xor ecx, ecx
push ecx
push dword [ebp - 0x78]
push ebx
call fcn.103ce0b0
mov eax, dword [ebp - 0x74]
add esp, 0xc
test eax, eax
je 0x10380e60
lea edi, [eax - 1]
jmp 0x10380e62
xor edi, edi
mov eax, dword [ebp - 0x6c]
test eax, eax
je 0x10380e6c
dec eax
jmp 0x10380e6e
xor eax, eax
push eax
push dword [ebp - 0x70]
lea eax, [edi + ebx]
push eax
call fcn.103ce0b0
mov eax, dword [ebp - 0x6c]
add esp, 0xc
test eax, eax
je 0x10380e88
dec eax
jmp 0x10380e8a
xor eax, eax
lea ecx, [eax + edi]
mov eax, dword [ebp - 0x64]
test eax, eax
je 0x10380e97
dec eax
jmp 0x10380e99
xor eax, eax
push eax
push dword [ebp - 0x68]
lea eax, [ebx + ecx]
push eax
call fcn.103ce0b0
mov ecx, dword [ebp - 0x88]
add esp, 0xc
mov eax, dword [ebp - 0x84]
push 0
mov byte [eax + ecx], 0
lea ecx, [ebp - 0xd8]
push 0x1047718c
push dword [ebp - 0x88]
call fcn.10364690
mov edi, dword [ebp - 0x10]
mov bl, al
and edi, 0xfffffff7
mov dword [ebp - 0x10], edi
mov byte [ebp - 4], 0x19
mov ecx, dword [ebp - 0x88]
call fcn.10367720
mov dword [ebp - 0x88], 0
mov byte [ebp - 4], 0x12
lea eax, [ebp - 0x80]
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 0x12
mov ecx, dword [ebp - 0x80]
call fcn.10367720
and edi, 0xfffffffb
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x10], edi
mov byte [ebp - 4], 0x11
xor ecx, ecx
call fcn.10367720
mov edi, dword [ebp - 0xc0]
mov esi, dword [ebp - 0xb4]
mov dword [ebp - 0x110], 0
test bl, bl
je 0x10380f5d
mov eax, dword [ebp - 0xbc]
test eax, eax
je 0x10380f4a
dec eax
jmp 0x10380f4c
xor eax, eax
push eax
mov eax, dword [ebp - 0xd8]
lea ecx, [ebp - 0xd8]
push edi
call dword [eax + 4]
mov byte [ebp - 4], 0xf
mov dword [ebp - 0xd8], vtable.os::File.0
mov byte [ebp - 4], 0x1c
mov eax, dword [ebp - 0xd4]
test eax, eax
je 0x10380f8c
push eax
call fcn.103d309b
add esp, 4
mov dword [ebp - 0xd4], 0
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0xcc]
call fcn.10367720
mov dword [ebp - 0xcc], 0
mov byte [ebp - 4], 4
mov ecx, edi
call fcn.10367720
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0xc0], 0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x28]
add dword [eax], 0xffffffff
jne 0x10380fd2
mov dword [esi], 0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp byte [ebp - 0x11], 0
je 0x10380ffb
mov eax, dword [ebx + 0x9c]
test eax, eax
je 0x10380ffb
push dword [ebp - 0x34]
push 1
push dword [ebx + 0xa0]
call eax
add esp, 0xc
mov edi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebx + 0x38]
cmp dword [edi + eax + 0x28c], 0xffffffff
jle 0x10381015
inc edx
mov dword [ebp - 0x24], edx
mov eax, dword [ebx + 0x3c]
inc ecx
mov edx, dword [ebp - 0x24]
mov dword [ebp - 0x2c], ecx
cmp ecx, eax
jb 0x10380914
cmp edx, eax
jae 0x10381375
lea esi, [ebx + 0x40]
lea eax, [esi + 8]
mov dword [ebp - 0xe0], esi
push eax
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea edi, [esi + 4]
mov dword [ebp - 0x28], edi
cmp dword [esi], eax
jne 0x10381059
inc dword [edi]
jmp 0x10381067
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi], eax
mov dword [edi], 1
mov dword [ebp - 4], 0x1d
xor ecx, ecx
mov dword [ebp - 0x34], ecx
cmp dword [ebx + 0x64], ecx
jbe 0x1038135a
nop dword [eax]
mov eax, dword [ebx + 0x60]
mov edi, dword [eax + ecx*4]
cmp dword [edi + 0x3c], 0
jne 0x10381344
mov ecx, ebx
call fcn.1038e030
mov esi, eax
mov dword [edi + 0x3c], 2
mov dword [edi + 0x48], esi
mov dword [edi + 0x54], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [edi + 0x40], eax
mov ecx, dword [ebx + 0xa4]
inc ecx
mov dword [edi + 0x44], ecx
mov eax, dword [ebx + 0x9c]
test eax, eax
je 0x103810d5
push edi
push 3
push dword [ebx + 0xa0]
call eax
add esp, 0xc
mov ecx, dword [ebx + 0x38]
mov eax, dword [edi + 0x38]
imul edx, esi, 0x290
mov dword [ebp - 0x30], edx
mov dword [edx + ecx + 0x28c], eax
mov byte [ebp - 4], 0x1e
mov esi, dword [ebx + 0x2c]
mov dword [ebp - 0x120], esi
mov edx, dword [ebx + 0x30]
mov dword [ebp - 0x11c], edx
mov ecx, dword [edi + 0x20]
mov dword [ebp - 0x118], ecx
mov eax, dword [edi + 0x24]
mov dword [ebp - 0x128], 0
mov dword [ebp - 0x124], 0xffffffff
mov dword [ebp - 0x114], eax
mov byte [ebp - 4], 0x1e
or dword [ebp - 0x10], 0x10
mov byte [ebp - 4], 0x20
lea ebx, [ebp - 0xa8]
mov dword [ebp - 0xb0], 0
mov dword [ebp - 0xac], 0xffffffff
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0xa4], 0xffffffff
mov dword [ebp - 0xa0], esi
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0x94], eax
mov byte [ebp - 4], 0x22
mov eax, dword [str..dlc_parts]
mov dword [ebp - 0x90], eax
mov eax, dword [0x104c657c]
mov dword [ebp - 0x8c], eax
mov byte [ebp - 4], 0x20
or dword [ebp - 0x10], 0x20
mov ecx, dword [ebp - 0x9c]
mov eax, dword [edi + 0x2c]
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0x20], eax
test ecx, ecx
je 0x103811b4
dec ecx
jmp 0x103811b6
xor ecx, ecx
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x103811c3
dec eax
jmp 0x103811c5
xor eax, eax
add ecx, eax
mov dword [ebp - 0xa4], ecx
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x103811da
dec eax
jmp 0x103811dc
xor eax, eax
add ecx, eax
mov dword [ebp - 0xac], ecx
inc ecx
call fcn.103675e0
mov dword [ebp - 0xb0], eax
mov ecx, dword [ebp - 0x9c]
mov dword [ebp - 0x1c], eax
test ecx, ecx
je 0x10381200
dec ecx
jmp 0x10381202
xor ecx, ecx
push ecx
push dword [ebp - 0xa0]
push eax
call fcn.103ce0b0
mov eax, dword [ebp - 0x9c]
add esp, 0xc
test eax, eax
je 0x10381221
lea esi, [eax - 1]
jmp 0x10381223
xor esi, esi
mov eax, dword [ebp - 0x94]
test eax, eax
je 0x10381230
dec eax
jmp 0x10381232
xor eax, eax
push eax
push dword [ebp - 0x98]
mov eax, dword [ebp - 0x1c]
add eax, esi
push eax
call fcn.103ce0b0
mov eax, dword [ebp - 0x94]
add esp, 0xc
test eax, eax
je 0x10381254
dec eax
jmp 0x10381256
xor eax, eax
lea ecx, [esi + eax]
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x10381266
dec eax
jmp 0x10381268
xor eax, eax
push eax
push dword [ebp - 0x90]
mov eax, dword [ebp - 0x1c]
add eax, ecx
push eax
call fcn.103ce0b0
mov ecx, dword [ebp - 0xb0]
add esp, 8
mov eax, dword [ebp - 0xac]
mov esi, dword [ebp - 0x30]
push dword [ebp - 0x20]
mov byte [eax + ecx], 0
push dword [ebp - 0xb0]
mov ecx, dword [ebx + 0x38]
push dword [edi + 8]
add ecx, esi
call fcn.1035b480
mov edi, dword [ebp - 0x10]
and edi, 0xffffffdf
mov dword [ebp - 0x10], edi
mov byte [ebp - 4], 0x25
mov ecx, dword [ebp - 0xb0]
call fcn.10367720
mov dword [ebp - 0xb0], 0
mov byte [ebp - 4], 0x1e
lea eax, [ebp - 0xa8]
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 0x1e
mov ecx, dword [ebp - 0xa8]
call fcn.10367720
and edi, 0xffffffef
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x10], edi
mov byte [ebp - 4], 0x1d
xor ecx, ecx
call fcn.10367720
mov eax, dword [ebx + 0x38]
mov dword [ebp - 0x128], 0
push dword [eax + esi + 0x270]
mov byte [eax + esi + 0x218], 0
mov dword [eax + esi + 0x214], 1
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov ecx, dword [ebp - 0x24]
lea eax, [ebx + 0xa4]
inc ecx
mov dword [ebp - 0x24], ecx
lock inc dword [eax]
cmp ecx, dword [ebx + 0x3c]
je 0x10381351
mov ecx, dword [ebp - 0x34]
inc ecx
mov dword [ebp - 0x34], ecx
cmp ecx, dword [ebx + 0x64]
jb 0x10381080
mov esi, dword [ebp - 0xe0]
mov edi, dword [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
add dword [edi], 0xffffffff
jne 0x1038136c
mov dword [esi], 0
push dword [ebp - 0x2c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x1f4
push dword [ebx + 0x8c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push dword [ebx + 0x8c]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
cmp byte [ebx + 0x84], 0
je 0x103805f1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret