Function at 0x455d90
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
sub esp, 0x81c
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push 0x1ff
lea eax, [esp + 0x2d]
push ebx
push eax
mov byte [esp + 0x34], bl
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x1ff
lea ecx, [esp + 0x22d]
push ebx
push ecx
mov byte [esp + 0x234], bl
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x1ff
lea edx, [esp + 0x42d]
push ebx
push edx
mov byte [esp + 0x434], bl
call sub.MSVCR90.dll_memset
mov eax, dword [0x52b40c]
add esp, 0xc
mov ebp, 1
mov dword [eax + 0xfcac], ebp
cmp dword [eax + 0x118ec], ebx
je 0x455e0a
call fcn.0048d6b0
call fcn.00459640
push str.Initializing_stage..._n
call fcn.00444320
mov esi, dword [0x52b40c]
add esp, 4
add esi, 0x1202c
call fcn.00437400
sub dword [esi], eax
call fcn.004570a0
test eax, eax
jne 0x455e45
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x81c
ret
call fcn.00458150
test eax, eax
je 0x455e38
mov esi, dword [0x52b40c]
add esi, 0x1202c
call fcn.00437400
add dword [esi], eax
push str.Stage_initialized_OK
call fcn.00444320
add esp, 4
push 0x49cfa0
call fcn.00444320
add esp, 4
jmp 0x455e80
call fcn.0040f180
mov dword [0x52a9ec], ebx
mov dword [0x52a9e8], ebx
mov dword [0x52adf4], ebx
mov dword [0x52adf0], ebx
call fcn.00411cf0
mov eax, dword [0x52b40c]
lea esi, [eax + 0x4a28]
mov dword [0x52b33c], ebx
mov dword [0x52b338], ebx
mov ecx, esi
mov edx, 2
mov dword [ecx], ebx
add ecx, 0x1adc
sub edx, ebp
jne 0x455ec0
mov ecx, dword [esi]
imul ecx, ecx, 0x5c
lea esi, [ecx + eax + 0x4a34]
lea edi, [eax + 0x7fe0]
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
mov edx, dword [eax + 0x6504]
imul edx, edx, 0x5c
lea esi, [edx + eax + 0x6510]
lea edi, [eax + 0x803c]
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
call fcn.00458740
mov ecx, dword [0x52b40c]
mov eax, dword [ecx + 0x11b88]
lea esi, [eax + eax*4]
add esi, dword [ecx + 0x118b4]
cmp esi, 0xa
jge 0x455f26
mov esi, 0xa
mov eax, dword [0x52b844]
mov ecx, dword [0x52b840]
push ebx
push 2
push eax
push ecx
mov dword [0x52aec0], esi
mov dword [0x52b848], esi
call fcn.0049a610
push ebx
add eax, ebp
push esi
adc edx, ebx
push edx
push eax
call fcn.0049a560
push ebx
push 2
push edx
push eax
call fcn.0049a560
mov dword [0x52aea8], eax
mov dword [0x52aeac], edx
cmp dword [0x52b3cc], ebx
je 0x455f86
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x455f8e
call dword [sym.imp.WINMM.dll_timeGetTime]
xor ecx, ecx
mov esi, dword [0x52b40c]
fild dword [esi + 0x1b90]
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], ebx
sbb ecx, dword [0x52aeb4]
add dword [0x52b3d0], ebp
fstp dword [esp + 0x1c]
fild dword [esi + 0x1b94]
mov dword [0x52b3b8], eax
mov dword [0x52b3bc], ecx
mov dword [0x52b3c4], ebx
fstp dword [esp + 0x18]
fld dword [esp + 0x1c]
fst dword [esi + 0x10ef8]
fst dword [esi + 0x10f08]
call fcn.00499690
fld dword [esp + 0x18]
mov dword [esi + 0x10f00], eax
fst dword [esi + 0x10efc]
fst dword [esi + 0x10f0c]
call fcn.00499690
mov dword [esi + 0x10f04], eax
mov dword [esi + 0x1164c], ebp
mov dword [esi + 0x11648], ebp
cmp dword [esi + 0x11668], ebx
je 0x456023
cmp dword [esi + 0x11680], ebp
jne 0x456095
cmp dword [0x4aa254], ebx
je 0x456095
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_lock]
add esp, 4
call dword [0x4aa278]
mov edx, dword [0x4aa288]
cmp edx, 0x10
jne 0x45605a
push eax
push str.BGM_command_queue_capacity_exceeded_at_time__ld
call fcn.00444320
add esp, 8
jmp 0x456081
lea ecx, [edx + edx*2]
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov dword [ecx + 0x4aa298], 6
add edx, ebp
mov dword [ecx + 0x4aa29c], eax
mov dword [ecx + 0x4aa2a8], ebx
mov dword [0x4aa288], edx
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_unlock]
add esp, 4
mov dword [0x52a444], ebp
push 4
call fcn.00446ea0
add esp, 4
test eax, eax
je 0x455e38
call fcn.00471fc0
cmp dword [0x52b370], ebp
jne 0x4560be
push 0xffffffffffffffff
call sub.SDL_mixer.dll_Mix_HaltChannel
add esp, 4
call fcn.004597c0
call fcn.00458bb0
mov esi, dword [0x52b40c]
cmp dword [esi + 0x117e8], ebx
je 0x4563c2
cmp dword [esi + 0x809c], ebx
jne 0x456313
mov eax, dword [esi + 0x4a14]
cmp eax, ebx
je 0x456313
cmp dword [esi + 0x117e0], eax
je 0x4561c1
cmp dword [0x4aa254], ebx
je 0x45614c
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_lock]
add esp, 4
call dword [0x4aa278]
push ebx
lea edx, [esp + 0x24]
mov edi, 5
mov dword [esp + 0x24], ebp
call fcn.00409c30
add esp, 4
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_unlock]
mov esi, dword [0x52b40c]
add esp, 4
mov dword [0x52a444], ebp
mov dword [esi + 0x809c], ebp
cmp dword [esi + 0x3b08], ebx
je 0x456196
mov eax, dword [esi + 0x10ec8]
call fcn.004598e0
call fcn.0044f470
mov esi, dword [0x52b40c]
mov dword [esi + 0x11808], ebx
cmp eax, ebx
je 0x456196
mov dword [esi + 0x809c], ebx
cmp dword [esi + 0x8098], ebx
jne 0x456313
call fcn.004089b0
jmp 0x455e80
cmp dword [esi + 0x4034], ebx
je 0x456313
lea eax, [esi + 0x4038]
lea edx, [esp + 0x428]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, ebp
cmp cl, bl
jne 0x4561b1
jmp 0x45630d
call fcn.00442c30
mov ecx, dword [esi + 0x1e74]
sub ecx, dword [esi + 0x1e78]
cmp ecx, eax
jg 0x456313
cmp dword [0x4aa254], ebx
je 0x456217
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_lock]
add esp, 4
call dword [0x4aa278]
mov edx, eax
call fcn.00409de0
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_unlock]
mov esi, dword [0x52b40c]
add esp, 4
mov dword [0x52a444], ebp
mov edx, dword [esi + 0x4a14]
mov ecx, dword [esi + 0x1e60]
imul edx, edx, 0x1adc
mov eax, dword [edx + esi + 0x2f68]
imul eax, eax, 0xe64
add eax, ecx
cmp byte [eax + 0xc60], bl
lea edi, [eax + 0xc60]
je 0x4562b4
lea ecx, [eax + 0x40c]
mov eax, edi
lea edx, [esp + 0x628]
call fcn.0040e530
lea edx, [esp + 0x628]
push 0x49ccb0
push edx
call dword [sym.imp.MSVCR90.dll_fopen]
add esp, 8
cmp eax, ebx
je 0x456299
push eax
call dword [sym.imp.MSVCR90.dll_fclose]
add esp, 4
xor eax, eax
mov cl, byte [esp + eax + 0x628]
mov byte [esp + eax + 0x28], cl
add eax, ebp
cmp cl, bl
jne 0x456280
mov esi, dword [0x52b40c]
jmp 0x4562eb
lea edx, [esp + 0x28]
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, ebp
cmp cl, bl
jne 0x4562a1
mov esi, dword [0x52b40c]
jmp 0x4562eb
cmp dword [esi + 0x39a4], ebx
je 0x4562c7
call fcn.004564f0
mov esi, dword [0x52b40c]
cmp dword [esi + 0x37a0], ebx
je 0x4562eb
lea eax, [esi + 0x37a4]
lea edx, [esp + 0x28]
sub edx, eax
jmp 0x4562e0
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, ebp
cmp cl, bl
jne 0x4562e0
cmp dword [esi + 0x359c], ebx
je 0x45630d
lea eax, [esi + 0x35a0]
lea edx, [esp + 0x228]
sub edx, eax
mov cl, byte [eax]
mov byte [eax + edx], cl
add eax, ebp
cmp cl, bl
jne 0x456302
mov dword [esi + 0x3598], ebx
cmp dword [esi + 0x117e8], ebx
je 0x4563c2
cmp dword [esi + 0x809c], ebx
jne 0x4563c2
cmp dword [esi + 0x4a18], ebx
je 0x4563c2
cmp dword [0x4aa254], ebx
je 0x4563af
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_lock]
add esp, 4
call dword [0x4aa278]
mov edx, dword [0x4aa288]
cmp edx, 0x10
jne 0x45636e
push eax
push str.BGM_command_queue_capacity_exceeded_at_time__ld
call fcn.00444320
add esp, 8
jmp 0x456395
lea ecx, [edx + edx*2]
add ecx, ecx
add ecx, ecx
add ecx, ecx
mov dword [ecx + 0x4aa298], 2
add edx, ebp
mov dword [ecx + 0x4aa29c], eax
mov dword [ecx + 0x4aa2a8], ebx
mov dword [0x4aa288], edx
push 0x4aa294
call dword [sym.imp.pthreadVC2.dll_pthread_mutex_unlock]
mov esi, dword [0x52b40c]
add esp, 4
mov dword [0x52a444], ebp
cmp dword [esi + 0x3a54], ebx
je 0x4563c2
call fcn.00456900
mov esi, dword [0x52b40c]
mov eax, dword [esi + 0x80c0]
cmp dword [eax], ebx
je 0x4563fd
call fcn.00471fc0
mov ecx, dword [esi + 0x80c0]
mov edx, dword [ecx]
push edx
call dword [sym.imp.MSVCR90.dll_free]
mov eax, dword [esi + 0x80c0]
mov dword [eax], ebx
mov ecx, dword [esi + 0x80c0]
mov dword [ecx + 8], ebx
mov edx, dword [esi + 0x80c0]
add esp, 4
mov dword [edx + 4], ebx
mov esi, dword [esi + 0x80c0]
xor eax, eax
mov dword [esi], eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
call fcn.00458420
call fcn.00457f30
mov eax, dword [0x52b844]
mov ecx, dword [0x52b840]
push ebx
push 2
push eax
mov esi, 0x3c
push ecx
mov dword [0x52aec0], esi
mov dword [0x52b848], esi
call fcn.0049a610
push ebx
add eax, ebp
push esi
adc edx, ebx
push edx
push eax
call fcn.0049a560
push ebx
push 2
push edx
push eax
call fcn.0049a560
mov dword [0x52aea8], eax
mov dword [0x52aeac], edx
cmp dword [0x52b3cc], ebx
je 0x45647c
lea edx, [esp + 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x456484
call dword [sym.imp.WINMM.dll_timeGetTime]
xor ecx, ecx
sub eax, dword [0x52aeb0]
mov dword [0x52b3c0], ebx
sbb ecx, dword [0x52aeb4]
add dword [0x52b3d0], ebp
mov dword [0x52b3b8], eax
lea eax, [esp + 0x28]
push eax
mov dword [0x52b3bc], ecx
mov dword [0x52b3c4], ebx
call fcn.00459a10
lea ecx, [esp + 0x22c]
add esp, 4
push ecx
call fcn.00459a10
lea edx, [esp + 0x42c]
add esp, 4
push edx
call fcn.00459a10
add esp, 4
call fcn.0048d3f0
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x81c
ret