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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov esi, ecx
mov eax, dword [0x597010]
xor eax, ebp
mov dword [esp + 0x78], eax
mov eax, 0x80000000
mov ecx, 1
mov edx, dword [ebp + 0xc]
lea edi, [eax - 1]
mov dword [esp + 0x34], edx
xor edi, edx
mov eax, dword [ebp + 8]
add ecx, 0xfffffffe
mov dword [esp + 0x30], eax
xor ecx, eax
mov dword [esp + 0x38], ecx
mov eax, ecx
mov dword [esp + 0x3c], edi
or eax, edi
mov dword [esp + 0x6c], 4
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x2c], esi
jne 0x45a7eb
mov dword [esp + 0x68], 0xffffffff
jmp 0x45a8c6
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x40], 0xffffffff
mov edx, ecx
or edx, eax
jne 0x45a81e
mov ecx, dword [0x599b40]
call dword [section..00cfg]
lea eax, [esp + 0x40]
mov dword [esp], eax
call ecx
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov ebx, dword [esp + 0x30]
sub ebx, ecx
mov ecx, dword [esp + 0x34]
sbb ecx, eax
seto al
mov edi, ecx
sar edi, 0x1f
test al, al
cmovne ebx, edi
add edi, 0x80000000
test al, al
cmove edi, ecx
mov eax, ebx
mov ecx, 1
add eax, ecx
mov ecx, edi
mov edx, 0x80000000
adc ecx, edx
cmp eax, 2
sbb ecx, 0
jb 0x45a8ab
mov dword [esp + 4], edi
mov dword [esp], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x3e8
call fcn.0054bd30
sub esp, 0x10
mov dword [esp + 0x24], eax
mov ecx, edx
mov edx, 0x3e8
mov eax, dword [esp + 0x24]
mul edx
imul esi, ecx, 0x3e8
add esi, edx
cmp eax, ebx
sbb esi, edi
mov esi, dword [esp + 0x2c]
setl al
movzx ebx, al
add ebx, dword [esp + 0x24]
adc ecx, 0
mov edi, ecx
xor eax, eax
test edi, edi
setns cl
je 0x45a8ba
mov al, cl
neg eax
mov ebx, eax
mov dword [esp + 0x68], ebx
test ebx, ebx
je 0x45abed
mov eax, dword [esi + 8]
mov edi, dword [eax]
mov eax, dword [edi]
mov ebx, dword [eax + 0xc]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, edi
call ebx
lea eax, [esp + 0x68]
mov dword [esp], eax
call fcn.0042a7c0
lea eax, [esp + 0x6c]
mov dword [esp], eax
call fcn.0042a7c0
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x10], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0x1cff
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjectsEx]
sub esp, 0x14
test eax, eax
jne 0x45a9c6
mov eax, dword [esi + 8]
mov edi, dword [eax]
mov eax, dword [edi]
mov ebx, dword [eax + 0x10]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, edi
call ebx
test byte [0x599254], 0x19
jne 0x45aaa3
mov dword [esp], 0x40
call dword [sym.imp.USER32.dll_GetQueueStatus]
sub esp, 4
test eax, 0x400000
jne 0x45abd8
pcmpeqd xmm0, xmm0
movdqu xmmword [esp + 0x4c], xmm0
movdqa xmmword [esp + 0x40], xmm0
test byte [0x599254], 0x19
jne 0x45ab3d
pxor xmm0, xmm0
movdqu xmmword [esp + 4], xmm0
lea eax, [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_PeekMessageW]
sub esp, 0x14
test eax, eax
jne 0x45abd8
mov dword [esp + 0x6c], 0
test edi, edi
je 0x45a9c6
mov eax, dword [edi]
mov ebx, dword [eax + 0x14]
mov ecx, ebx
call dword [section..00cfg]
mov ecx, edi
call ebx
mov ebx, 0xffffffff
mov eax, dword [esp + 0x38]
or eax, dword [esp + 0x3c]
je 0x45a8ba
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x40], 0xffffffff
mov ecx, dword [0x599b40]
call dword [section..00cfg]
lea eax, [esp + 0x40]
mov dword [esp], eax
call ecx
mov ebx, dword [esp + 0x30]
sub ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
sbb eax, dword [esp + 0x44]
seto cl
mov esi, eax
sar esi, 0x1f
test cl, cl
cmovne ebx, esi
add esi, 0x80000000
test cl, cl
cmove esi, eax
mov eax, ebx
mov ecx, 1
add eax, ecx
mov ecx, esi
mov edx, 0x80000000
adc ecx, edx
cmp eax, 2
sbb ecx, 0
jb 0x45aa89
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x3e8
call fcn.0054bd30
sub esp, 0x10
mov edi, eax
mov ecx, edx
mov edx, 0x3e8
mul edx
mov dword [esp + 0x24], eax
imul eax, ecx, 0x3e8
add eax, edx
cmp dword [esp + 0x24], ebx
sbb eax, esi
setl al
movzx ebx, al
add ebx, edi
adc ecx, 0
mov esi, ecx
xor eax, eax
test esi, esi
setns cl
jne 0x45aa9b
mov esi, dword [esp + 0x2c]
jmp 0x45a8ba
mov al, cl
neg eax
mov ebx, eax
jmp 0x45aa92
pxor xmm0, xmm0
movdqu xmmword [esp + 0xc], xmm0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 8], str.MessagePumpForUI::WaitForWork_GetQueueStatus
mov dword [esp + 4], 0x599254
mov dword [esp], 0x58
call fcn.00433aa0
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
mov dword [esp], 0x40
call dword [sym.imp.USER32.dll_GetQueueStatus]
sub esp, 4
mov ebx, eax
cmp byte [0x599254], 0
je 0x45ab2c
mov eax, dword [esp + 0x24]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x44], eax
movq xmm0, qword [esp + 0x40]
movq qword [esp + 8], xmm0
mov dword [esp + 4], str.MessagePumpForUI::WaitForWork_GetQueueStatus
mov dword [esp], 0x599254
call fcn.00453b60
test ebx, 0x400000
je 0x45a96a
jmp 0x45abd8
pxor xmm0, xmm0
movdqu xmmword [esp + 0xc], xmm0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 8], str.MessagePumpForUI::WaitForWork_PeekMessage
mov dword [esp + 4], 0x599254
mov dword [esp], 0x58
call fcn.00433aa0
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
pxor xmm0, xmm0
movdqu xmmword [esp + 4], xmm0
lea eax, [esp + 0x40]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_PeekMessageW]
sub esp, 0x14
mov ebx, eax
cmp byte [0x599254], 0
je 0x45abd0
mov eax, dword [esp + 0x24]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x74], eax
movq xmm0, qword [esp + 0x70]
movq qword [esp + 8], xmm0
mov dword [esp + 4], str.MessagePumpForUI::WaitForWork_PeekMessage
mov dword [esp], 0x599254
call fcn.00453b60
test ebx, ebx
je 0x45a9a9
test edi, edi
je 0x45abed
mov eax, dword [edi]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [section..00cfg]
mov ecx, edi
call esi
mov ecx, dword [esp + 0x78]
xor ecx, ebp
call fcn.00528e13
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret