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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0x174
mov eax, dword [0x4fc00c]
xor eax, esp
mov dword [esp + 0x170], eax
xor eax, eax
mov dword [esp + 0x28], 0xb4
xorps xmm0, xmm0
mov word [esp + 0x138], ax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
movzx eax, word [0x4fe454]
movups xmmword [esp + 0x160], xmm0
push ebx
movups xmmword [esp + 0x140], xmm0
push esi
movups xmmword [esp + 0x154], xmm0
xor ebx, ebx
mov byte [esp + 0x1a], 8
movd xmm0, eax
movzx eax, word [0x4fe456]
cvtdq2ps xmm0, xmm0
push edi
mov edi, ecx
mov byte [esp + 0x1f], 0
mov dword [esp + 0x30], edi
mov byte [esp + 0x24], 0
mov dword [esp + 0x20], ebx
movss dword [esp + 0x40], xmm0
movd xmm0, eax
lea eax, [esp + 0x38]
cvtdq2ps xmm0, xmm0
push eax
mov dword [esp + 0x30], ebx
movss dword [esp + 0x48], xmm0
call fcn.00442700
mov ecx, eax
call fcn.00443190
movsd xmm0, qword [0x4f3db8]
lea eax, [esp + 0x160]
push eax
sub esp, 8
movsd qword [esp], xmm0
call fcn.004c0b10
add esp, 0xc
xorps xmm0, xmm0
xor eax, eax
movsd qword [esp + 0x150], xmm0
fstp qword [esp + 0x158]
mov word [esp + 0x144], ax
call fcn.00420dc0
cmp byte [eax + 0x62], 0
je 0x423626
mov byte [edi + 0xc], 1
call fcn.00420dc0
mov esi, eax
mov al, byte [esi + 0x61]
test al, 0xf0
je 0x423664
movzx ecx, al
and ecx, 0xf
push ecx
mov ecx, 0x4fe450
call fcn.00440a60
movzx eax, word [0x4fe456]
push ecx
push eax
movzx eax, word [0x4fe454]
mov ecx, 0x4fe450
push eax
call fcn.004407c0
mov byte [esi + 0x61], 0
cmp byte [esi + 0x60], 0
je 0x423617
call dword [sym.imp.WINMM.dll_timeGetTime]
movsd xmm0, qword [esp + 0x158]
addsd xmm0, qword [esp + 0x150]
movsd xmm1, qword [0x4f3d58]
mov dword [esp + 0x140], eax
xor eax, eax
comisd xmm0, xmm1
movsd qword [esp + 0x150], xmm0
jb 0x4236b4
subsd xmm0, xmm1
mov eax, 1
movsd qword [esp + 0x150], xmm0
movd xmm0, eax
lea ecx, [edi + 0xd]
cvtdq2pd xmm0, xmm0
lea edx, [ecx + 1]
addsd xmm0, qword [esp + 0x160]
movsd qword [esp + 0x148], xmm0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4236d4
mov ax, word [edi + 0xa]
sub ecx, edx
mov edx, dword [esp + 0x24]
cmp ax, word [edi + 8]
mov eax, 1
movzx edx, dl
cmovae edx, eax
mov dword [esp + 0x28], ecx
cmp byte [esp + 0x1e], 0
mov dword [esp + 0x24], edx
jne 0x423738
call fcn.0041e7c0
mov ecx, eax
call fcn.0041e850
lea eax, [esp + 0x64]
push eax
call fcn.0041e7c0
mov ecx, eax
call fcn.0041def0
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
cmp word [eax], 0
je 0x423738
cmp byte [edi + 0xc], 0
jne 0x423738
mov byte [edi + 0xc], 1
test dl, dl
jne 0x423740
test cl, cl
je 0x42377b
mov eax, dword [esp + 0x34]
xor ecx, ecx
cmp byte [edi + 0xc], cl
movzx eax, ax
cmove ecx, eax
movzx eax, cx
test ax, ax
je 0x423761
dec eax
movzx eax, ax
mov dword [esp + 0x34], eax
jmp 0x42377b
mov al, byte [esp + 0x1f]
inc al
mov dword [esp + 0x34], 0
mov byte [esp + 0x1f], al
cmp al, 0x10
ja 0x423d65
mov eax, dword [0x4fe4d8]
push 0x4fe554
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x54]
mov eax, dword [0x4fe4d8]
push 0x4fe56c
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov eax, dword [0x4fe490]
lea edx, [esp + 0x38]
push edx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov eax, dword [eax*4 + 0x4fe498]
mov dword [esp + 0x44], eax
mov eax, dword [0x4fe4d8]
mov dword [esp + 0x48], 0xffffffff
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 4
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x68]
mov eax, dword [0x4fe4d8]
push 0
push 0
push 0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push 1
push dword [0x4fe4c8]
push eax
call dword [ecx + 0xbc]
mov ecx, dword [0x4fe4d8]
lea eax, [esp + 0x16c]
push 0
push 0
push eax
mov eax, dword [0x4fe490]
mov edx, dword [ecx]
push dword [eax*4 + 0x4fe4ac]
push ecx
call dword [edx + 0xc0]
mov eax, dword [0x4fe490]
lea edx, [esp + 0x168]
push 0x4fe4c8
push 1
push edx
mov eax, dword [eax*4 + 0x4fe4ac]
mov dword [esp + 0x174], eax
mov eax, dword [0x4fe4d8]
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0xb8]
call fcn.0042dc50
mov esi, eax
xor edx, edx
cmp byte [esi + 0x474], dl
jbe 0x4238a3
xor ecx, ecx
nop dword [eax]
mov eax, dword [esi + 0x470]
lea ecx, [ecx + 0x260]
xor edi, edi
inc edx
mov word [eax + ecx - 0xc], di
movzx eax, byte [esi + 0x474]
cmp edx, eax
jl 0x423880
mov edi, dword [esp + 0x30]
push 0xffffffffffffffff
sub esp, 0x18
mov dword [esp + 0x14], 0x3f800000
mov dword [esp + 0x10], 0x3f800000
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x44340000
mov dword [esp], 0x44a00000
push 0
call fcn.0042dc50
xorps xmm3, xmm3
xorps xmm2, xmm2
mov ecx, eax
call fcn.0042ed20
cmp byte [esp + 0x24], 0
jne 0x42391e
mov eax, 0xff
cmp bx, ax
jge 0x42390c
add ebx, 0x10
mov dword [esp + 0x20], ebx
cmp bx, ax
jle 0x423947
mov ebx, eax
jmp 0x423943
jle 0x423947
sub ebx, 0x10
mov dword [esp + 0x20], ebx
cmp bx, ax
jge 0x423947
mov ebx, eax
jmp 0x423943
test bx, bx
jns 0x423936
lea ecx, [ebx + 0x20]
xor edx, edx
test cx, cx
movzx eax, cx
cmovle edx, eax
movzx ebx, dx
jmp 0x423943
jle 0x423947
sub ebx, 0x20
xor eax, eax
test bx, bx
cmovs ebx, eax
mov dword [esp + 0x20], ebx
movzx ecx, bx
mov dword [esp + 0x60], ecx
test bx, bx
je 0x423af0
mov edx, dword [esp + 0x2c]
movss xmm0, dword [0x4f40a4]
add edx, 0x14
movsx eax, bx
mov ebx, 0x168
shl eax, 0x18
or eax, 0xffffff
movss dword [esp + 0x28], xmm0
movaps xmm0, xmmword [0x4f44e0]
cmp dx, bx
mov dword [esp + 0x54], eax
lea eax, [edx - 0x168]
movzx ecx, ax
movzx eax, dx
cmovle ecx, eax
mov dword [esp + 0x48], 0x41400000
movups xmmword [esp + 0x38], xmm0
xor ebx, ebx
movzx eax, cx
movaps xmm0, xmmword [0x4f4520]
mov dword [esp + 0x4c], 0x41a00000
mov dword [esp + 0x50], 0x41a00000
movups xmmword [esp + 0x64], xmm0
mov dword [esp + 0x74], 0x43300000
mov dword [esp + 0x78], 0x433c0000
mov dword [esp + 0x7c], 0x43500000
mov dword [esp + 0x5c], eax
movzx ecx, ax
mov dword [esp + 0x2c], 7
nop
add ecx, 0xffffffe2
test cx, cx
lea eax, [ecx + 0x168]
movzx edx, ax
movzx eax, cx
cmovns edx, eax
movzx edi, dx
movsx esi, di
mov ecx, esi
call fcn.00401030
mulss xmm0, dword [0x4f3e58]
xorps xmm1, xmm1
comiss xmm1, xmm0
jbe 0x423a27
xorps xmm2, xmm2
jmp 0x423a39
mov ecx, esi
call fcn.00401030
movaps xmm2, xmm0
mulss xmm2, dword [0x4f3e58]
movss xmm1, dword [esp + ebx + 0x38]
push dword [esp + 0x54]
movaps xmm0, xmm1
mulss xmm0, dword [0x4f3bac]
sub esp, 0x18
mov dword [esp + 0x14], 0x3e000000
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esp + ebx + 0x80]
mulss xmm0, dword [0x4f3bac]
mov dword [esp + 0xc], 0
movss dword [esp + 8], xmm0
movss xmm0, dword [0x4f4044]
subss xmm0, xmm2
mov dword [esp + 4], 0x42000000
movss dword [esp], xmm1
push 1
movss dword [esp + 0x78], xmm0
call fcn.0042dc50
movss xmm3, dword [esp + 0x78]
mov ecx, eax
movss xmm2, dword [esp + 0x48]
call fcn.0042ed20
movss xmm0, dword [esp + ebx + 0x38]
mov ecx, edi
addss xmm0, dword [esp + 0x28]
add ebx, 4
sub dword [esp + 0x2c], 1
movss dword [esp + 0x28], xmm0
jne 0x4239f0
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
movzx eax, ax
mov dword [esp + 0x2c], eax
cmp byte [esp + 0x24], 0
je 0x423b60
mov eax, 0xff
sub eax, ecx
movzx eax, ax
test ax, ax
je 0x423b60
cwde
shl eax, 0x18
or eax, 0xffffff
push eax
sub esp, 0x18
mov dword [esp + 0x14], 0x3e000000
mov dword [esp + 0x10], 0x3f200000
mov dword [esp + 0xc], 0x3e000000
mov dword [esp + 8], 0x3ec00000
mov dword [esp + 4], 0x42000000
mov dword [esp], 0x43200000
push 1
call fcn.0042dc50
movss xmm3, dword [0x4f4044]
mov ecx, eax
movss xmm2, dword [0x4f409c]
call fcn.0042ed20
movzx ecx, byte [esp + 0x1e]
movzx edx, byte [esp + 0x1f]
shl ecx, 5
shl edx, 4
mov eax, ecx
cmp ecx, edx
cmovbe eax, edx
test eax, eax
je 0x423bab
cmp eax, 0xff
jae 0x423ba4
cmp ecx, edx
jbe 0x423b94
movzx eax, byte [esp + 0x1e]
shl ax, 5
movzx eax, ax
jmp 0x423baf
movzx eax, byte [esp + 0x1f]
mov ecx, edx
shl ax, 4
movzx eax, ax
jmp 0x423baf
mov ecx, 0xff
jmp 0x423bb4
xor eax, eax
xor ecx, ecx
test ax, ax
je 0x423bfe
shl ecx, 0x18
push ecx
sub esp, 0x18
mov dword [esp + 0x14], 0x3ea00000
mov dword [esp + 0x10], 0x3ea00000
mov dword [esp + 0xc], 0x3c800000
mov dword [esp + 8], 0x3c800000
mov dword [esp + 4], 0x44340000
mov dword [esp], 0x44a00000
push 1
call fcn.0042dc50
xorps xmm3, xmm3
xorps xmm2, xmm2
mov ecx, eax
call fcn.0042ed20
mov dl, byte [esp + 0x1e]
movzx esi, word [edi + 0x210]
test dl, dl
mov edi, dword [0x4fe4d8]
lea eax, [edx - 1]
movzx ecx, al
movzx eax, dl
cmove ecx, eax
mov byte [esp + 0x1e], cl
call fcn.0042dc50
mov edx, eax
lea ecx, [esp + 0x80]
lea eax, [esp + 0xc0]
push eax
call fcn.0044d350
push ecx
push esi
mov eax, ecx
mov dword [esp + 0xc4], 0x3f800000
push eax
push 0
push 7
push edi
mov ecx, edx
mov dword [esp + 0xc0], 0x3f800000
mov dword [esp + 0xac], 0x3f800000
mov dword [esp + 0x98], 0x3f800000
call fcn.0042f110
mov eax, dword [esp + 0x30]
mov edi, dword [0x4fe4d8]
movzx esi, word [eax + 0x20e]
call fcn.0042dc50
mov edx, eax
lea ecx, [esp + 0x80]
lea eax, [esp + 0x100]
push eax
call fcn.0044d350
push ecx
push esi
mov eax, ecx
mov dword [esp + 0xc4], 0x3f800000
push eax
push 1
push 7
push edi
mov ecx, edx
mov dword [esp + 0xc0], 0x3f800000
mov dword [esp + 0xac], 0x3f800000
mov dword [esp + 0x98], 0x3f800000
call fcn.0042f110
push 0
mov ecx, 0x4fe450
call fcn.004404e0
mov esi, dword [sym.imp.WINMM.dll_timeGetTime]
call esi
sub eax, dword [esp + 0x140]
movsd xmm1, qword [esp + 0x148]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4f44f0]
comisd xmm1, xmm0
ja 0x423d30
divsd xmm0, xmm1
cvttsd2si eax, xmm0
mov word [esp + 0x144], ax
call esi
sub eax, dword [esp + 0x140]
movsd xmm0, qword [esp + 0x148]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x4f44f0]
comisd xmm0, xmm1
ja 0x423d30
mov edi, dword [esp + 0x30]
jmp 0x423617
movzx eax, word [edi + 0x20e]
push eax
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
movzx eax, word [edi + 0x210]
push eax
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
xor eax, eax
mov dword [edi + 0x20e], eax
call fcn.00442700
mov esi, eax
xor ebx, ebx
cmp byte [esi + 0x2f8], bl
jbe 0x423dd2
xor edi, edi
nop dword [eax + eax]
mov ecx, dword [esi + 0x2f4]
push 1
push esi
add ecx, edi
call fcn.004466b0
movzx eax, byte [esi + 0x2f8]
inc ebx
add edi, 0x260
cmp ebx, eax
jl 0x423db0
call fcn.0042dc50
mov esi, eax
xor ebx, ebx
cmp byte [esi + 0x474], bl
jbe 0x423e07
xor edi, edi
mov ecx, dword [esi + 0x470]
push 1
push esi
add ecx, edi
call fcn.004466b0
movzx eax, byte [esi + 0x474]
inc ebx
add edi, 0x260
cmp ebx, eax
jl 0x423de5
mov ecx, dword [esp + 0x17c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0047d312
mov esp, ebp
pop ebp
ret