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

Disassembly:
sub esp, 0xdc
mov eax, dword [0x4ef400]
xor eax, esp
mov dword [esp + 0xd4], eax
push ebx
mov ebx, dword [0x4f0690]
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x20], edx
mov ecx, dword [esp + 0xf0]
mov edx, 1
push edi
mov edi, dword [esp + 0xf0]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x20], ebx
mov bl, byte [ebx + 0xb3]
push str.Foreground
mov dword [esp + 0x2c], esi
mov dword [esp + 0x18], edi
call fcn.00406fd0
mov ecx, dword [edi + 0x2c]
add esp, 4
movss xmm7, dword [0x4e68f8]
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], 1
cmp dword [esi + 0x2c], ecx
je 0x41f82d
test bl, bl
jne 0x41f831
push str.Foreground
mov edx, 1
call fcn.00406fd0
movss xmm7, dword [0x4e68f8]
add esp, 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x4c], 2
movss xmm1, dword [0x4e68e8]
mov ecx, 0x26
call fcn.00404de0
mov ebp, eax
mov ecx, 0x26
test bl, bl
je 0x41f836
movss xmm1, dword [0x4e6924]
call fcn.00404de0
movss xmm1, dword [0x4e693c]
mov ecx, 0x26
mov dword [esp + 0x64], eax
call fcn.00404de0
movss xmm7, dword [0x4e6918]
jmp 0x41f859
test bl, bl
je 0x41f7e3
movaps xmm1, xmm7
jmp 0x41f7eb
movss xmm1, dword [0x4e6904]
call fcn.00404de0
movss xmm1, dword [0x4e6934]
mov ecx, 0x26
mov dword [esp + 0x64], eax
call fcn.00404de0
movaps xmm1, xmm7
mov dword [esp + 0x60], eax
mov ecx, 0x34
call fcn.00404de0
mov ecx, dword [edi + 0x378]
mov dword [esp + 0x48], eax
test ecx, ecx
je 0x41f882
cmp dword [ecx + 0x24], 0
jg 0x41f882
xor bl, bl
jmp 0x41f884
mov bl, 1
mov edx, dword [esp + 0x2c]
cmp byte [edx + 0xa0], 0
je 0x41f956
cmp dword [edx + 0xa8], 0xffffffff
movss xmm0, dword [edx + 0x34]
movss xmm1, dword [edx + 0x38]
movss dword [esp + 0xc4], xmm0
addss xmm0, dword [edx + 0x3c]
movss dword [esp + 0xc8], xmm1
movss dword [esp + 0xcc], xmm0
movaps xmm0, xmm1
addss xmm0, dword [edx + 0x40]
movss dword [esp + 0xd0], xmm0
jne 0x41f90d
mov edi, dword [0x4f0690]
test bl, bl
je 0x41f904
movss xmm0, dword [edi + 0x15e0]
addss xmm0, xmm0
addss xmm0, dword [edi + 0x19e4]
addss xmm0, xmm1
movss dword [esp + 0xc8], xmm0
cmp byte [edx + 0xa1], 0
je 0x41f95c
mov edi, dword [esp + 0x28]
xor esi, esi
nop dword [eax]
nop word [eax + eax]
movss xmm0, dword [edi + 0x78]
lea eax, [esp + 0xcc]
push 0
push ecx
mov ecx, dword [esp + esi*4 + 0x58]
movss dword [esp], xmm0
push ebp
push eax
lea eax, [esp + 0xd4]
push eax
call fcn.0042eb30
inc esi
cmp esi, dword [esp + 0x4c]
jl 0x41f920
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
mov edi, dword [0x4f0690]
cmp byte [edx + 0xa0], 0
je 0x41fe6d
test bl, bl
je 0x41fe6d
cmp dword [edx + 0xa8], 0xffffffff
jne 0x41fe6d
cmp byte [edx + 0xa1], 0
je 0x41fe6d
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0xd4]
push 0
xorps xmm0, xmm0
xor edx, edx
push 0
push eax
movups xmmword [esp + 0xe0], xmm0
call fcn.0041ede0
movups xmm0, xmmword [esp + 0xe0]
mov ebx, dword [esp + 0x30]
add esp, 0xc
movss dword [esp + 0x1c], xmm0
movss dword [esp + 0x18], xmm0
test ebx, ebx
je 0x41fa3f
mov edx, dword [ebx + 0x30]
test edx, edx
je 0x41fa3f
mov ecx, dword [ebx + 0x10]
mov eax, ecx
shr eax, 0xd
test al, 1
jne 0x41fa04
shr ecx, 0xc
test cl, 1
jne 0x41fa04
mov ebp, dword [esp + 0x20]
movss xmm1, dword [edx + 0x40]
addss xmm1, dword [ebp + 0x15f4]
addss xmm1, xmm0
movss dword [esp + 0x1c], xmm1
jmp 0x41fa83
mov eax, dword [ebx + 0x2c]
mov eax, dword [eax]
mov cl, byte [eax + 0xc8]
mov edx, dword [eax]
push ecx
lea ecx, [esp + 0xc8]
call fcn.00444ea0
mov ebp, dword [esp + 0x24]
add esp, 4
movss xmm1, dword [ebp + 0x15f4]
addss xmm1, dword [eax]
addss xmm1, dword [esp + 0x18]
movss dword [esp + 0x1c], xmm1
jmp 0x41fa83
test dword [esi + 8], 0x20000000
jne 0x41fa7f
movzx eax, byte [esi + 0xc8]
lea ecx, [esp + 0xc4]
mov edx, dword [esi]
push eax
call fcn.00444ea0
mov ebp, dword [esp + 0x24]
add esp, 4
movss xmm0, dword [ebp + 0x15f4]
addss xmm0, dword [eax]
addss xmm0, dword [esp + 0x18]
movss dword [esp + 0x1c], xmm0
jmp 0x41fa83
mov ebp, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x378]
test eax, eax
je 0x41fab3
mov eax, dword [eax + 0x30]
mov dword [esp + 0x18], eax
test eax, eax
je 0x41fab9
mov ecx, dword [eax]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], eax
test ecx, ecx
jg 0x41fac2
mov edx, dword [esp + 0x2c]
jmp 0x41fe71
xor eax, eax
mov dword [esp + 0x18], eax
mov ecx, 1
mov dword [esp + 0x40], ecx
xor ebx, ebx
mov dword [esp + 0x3c], ebx
test eax, eax
je 0x41fae1
mov eax, dword [eax + 8]
mov ebx, dword [eax + ebx + 8]
mov dword [esp + 0x58], ebx
test ebx, ebx
je 0x41fe45
jmp 0x41fae7
mov ebx, edx
mov dword [esp + 0x58], edx
mov ecx, dword [esi + 0x378]
test ecx, ecx
je 0x41fb14
mov eax, dword [ecx + 0x10]
shr eax, 0xa
test al, 1
je 0x41fb0f
mov ax, word [ebx + 0xce]
cmp ax, word [esi + 0xce]
jl 0x41fe41
add ecx, 0x50
jmp 0x41fb17
lea ecx, [esi + 0x10]
mov eax, dword [ebx + 0x10]
mov edx, dword [ecx]
cmp edx, eax
je 0x41fb4a
test edx, edx
je 0x41fb30
cmp byte [ecx + 0x19], 0
je 0x41fb30
test eax, eax
jne 0x41fb38
jmp 0x41fb4a
test eax, eax
je 0x41fe3d
cmp byte [ebx + 0x29], 0
je 0x41fe3d
test edx, edx
jne 0x41fe3d
movzx eax, byte [ebx + 0xc8]
lea ecx, [esp + 0x68]
mov edx, dword [ebx]
push eax
call fcn.00444ea0
movss xmm3, dword [esp + 0x20]
add esp, 4
movss xmm0, dword [esp + 0x68]
movaps xmm2, xmm3
movss xmm1, dword [esp + 0xd8]
addss xmm2, xmm0
addss xmm0, dword [ebp + 0x15f4]
mov esi, dword [ebx + 0x35c]
movss dword [esp + 0xc8], xmm1
addss xmm1, dword [esp + 0x6c]
movss dword [esp + 0xc4], xmm3
addss xmm3, xmm0
movss dword [esp + 0x34], xmm2
movss xmm0, dword [0x4e6934]
movss dword [esp + 0xcc], xmm2
movss dword [esp + 0x38], xmm1
movss dword [esp + 0xd0], xmm1
movss xmm1, dword [edi + 0x15a0]
comiss xmm1, xmm0
movss dword [esp + 0x1c], xmm3
movss dword [esp + 0x30], xmm1
jae 0x41fc24
mov eax, esi
shr eax, 0x18
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4e70d0]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
call fcn.004cb150
movss xmm1, dword [esp + 0x30]
and esi, 0xffffff
movss xmm0, dword [0x4e6934]
shl eax, 0x18
or esi, eax
comiss xmm1, xmm0
mov ebp, dword [ebx + 0x368]
mov dword [esp + 0x30], ebp
jae 0x41fc68
mov eax, ebp
shr eax, 0x18
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4e70d0]
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm1
call fcn.004cb150
shl eax, 0x18
and ebp, 0xffffff
or ebp, eax
mov dword [esp + 0x30], ebp
mov edx, esi
call fcn.00404ec0
movss xmm1, dword [esp + 0xc4]
xor ebp, ebp
nop word [eax + eax]
mov edi, dword [ebx + 8]
movups xmm0, xmmword [esp + 0xd4]
shr edi, 0x14
movss xmm3, dword [esp + 0xdc]
and edi, 1
or edi, 0x800000
comiss xmm1, xmm0
movss xmm1, dword [esp + 0xd8]
jb 0x41fcca
comiss xmm1, xmm1
jb 0x41fcca
comiss xmm3, dword [esp + 0x34]
jb 0x41fcca
movss xmm2, dword [esp + 0xe0]
comiss xmm2, dword [esp + 0x38]
jae 0x41fd46
mov esi, dword [esp + ebp*4 + 0x50]
movss dword [esp + 0x70], xmm0
maxss xmm0, xmm3
movss dword [esp + 0x74], xmm1
mov ecx, dword [esi + 0x40]
mov ebx, dword [esi + 0x3c]
movss dword [esp + 0x78], xmm0
movaps xmm0, xmm1
maxss xmm0, dword [esp + 0xe0]
movss dword [esp + 0x7c], xmm0
cmp ebx, ecx
jne 0x41fd23
inc ebx
test ecx, ecx
je 0x41fd10
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x41fd15
mov eax, 8
cmp eax, ebx
lea ecx, [esi + 0x3c]
cmovg ebx, eax
push ebx
call fcn.00423d80
mov eax, dword [esi + 0x3c]
mov ecx, esi
mov edx, dword [esi + 0x44]
add eax, eax
movups xmm0, xmmword [esp + 0x70]
movups xmmword [edx + eax*8], xmm0
inc dword [esi + 0x3c]
movups xmmword [ecx + 0x60], xmm0
call fcn.0042c6f0
mov ebx, dword [esp + 0x58]
push dword [esp + 0x30]
mov esi, dword [esp + ebp*4 + 0x54]
lea edx, [esp + 0xc8]
push edi
mov ecx, esi
call fcn.00444fa0
mov eax, dword [esp + 0x28]
lea edx, [esp + 0xcc]
mov ecx, esi
push dword [eax + 0x15e0]
push dword [eax + 0x15dc]
push 0
push 0
push 0
push 0
push 0
push dword [ebx]
push edi
call fcn.00445440
movups xmm0, xmmword [esp + 0x100]
add esp, 0x2c
movss xmm1, dword [esp + 0xc4]
comiss xmm1, xmm0
jb 0x41fdcf
movss xmm0, dword [esp + 0xd8]
comiss xmm0, xmm0
jb 0x41fdcf
movss xmm0, dword [esp + 0xdc]
comiss xmm0, dword [esp + 0x34]
jb 0x41fdcf
movss xmm0, dword [esp + 0xe0]
comiss xmm0, dword [esp + 0x38]
jae 0x41fe04
mov ecx, dword [esi + 0x3c]
sub ecx, 1
mov dword [esi + 0x3c], ecx
jne 0x41fde2
mov eax, dword [esi + 0x2c]
add eax, 0x18
jmp 0x41fded
mov eax, dword [esi + 0x44]
shl ecx, 4
add eax, 0xfffffff0
add eax, ecx
movups xmm0, xmmword [eax]
mov ecx, esi
movups xmmword [esi + 0x60], xmm0
call fcn.0042c6f0
movss xmm1, dword [esp + 0xc4]
inc ebp
cmp ebp, dword [esp + 0x4c]
jl 0x41fc80
mov edi, dword [0x4f0690]
mov eax, dword [edi + 0x1db4]
mov ecx, dword [edi + 0x1dbc]
lea edx, [eax + eax*4]
mov eax, dword [ecx + edx*4 - 0x14]
movups xmm0, xmmword [ecx + edx*4 - 0x10]
add eax, eax
movups xmmword [edi + eax*8 + 0x1668], xmm0
dec dword [edi + 0x1db4]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x28]
add ebx, 0x2c
mov eax, dword [esp + 0x18]
sub ecx, 1
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ecx
jne 0x41fac8
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
lea eax, [edx + 0xb0]
movss xmm5, dword [0x4e6988]
or ebp, 0xffffffff
movss xmm4, dword [0x4e6a98]
movss xmm6, dword [0x4e6968]
maxss xmm5, dword [ecx + 0x15e4]
movss xmm1, dword [0x4e68f0]
mov dword [esp + 0x34], eax
movss dword [esp + 0x14], xmm5
movss xmm0, dword [eax]
comiss xmm0, dword [eax + 8]
ja 0x4201a7
movss xmm0, dword [eax + 4]
comiss xmm0, dword [eax + 0xc]
ja 0x4201a7
movups xmm2, xmmword [eax]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x90], xmm2
subss xmm2, xmm4
movss xmm3, dword [esp + 0x94]
subss xmm3, xmm4
movss xmm4, dword [esp + 0x9c]
subss xmm4, xmm6
movups xmmword [esp + 0xb4], xmm0
movss xmm0, dword [esp + 0x98]
subss xmm0, xmm6
movss dword [esp + 0x28], xmm3
movups xmmword [esp + 0xa0], xmm2
movss dword [esp + 0x18], xmm4
movss dword [esp + 0x1c], xmm0
cmp dword [edx + 0xa8], ebp
jne 0x41ff3d
cmp byte [edx + 0xa3], 0
mov ecx, dword [esp + 0x60]
jne 0x41ff41
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x48]
addss xmm0, xmm2
xor eax, eax
mov dword [esp + 0x38], ecx
and edx, 0xff000000
mov dword [esp + 0x3c], eax
mov dword [esp + 0x30], edx
mulss xmm0, xmm1
cvttss2si esi, xmm0
movaps xmm0, xmm3
addss xmm0, xmm4
mulss xmm0, xmm1
cvttss2si edi, xmm0
nop dword [eax]
nop dword [eax + eax]
mov ebx, dword [esp + eax*4 + 0x50]
lea eax, [esp + 0xbc]
push 0
push ecx
movss dword [esp], xmm5
push ecx
push eax
lea eax, [esp + 0xc4]
mov ecx, ebx
push eax
call fcn.0042eb30
cmp dword [esp + 0x30], 0
je 0x42009c
test byte [ebx + 0x24], 1
mov ecx, ebx
movss xmm0, dword [esp + 0x1c]
movss xmm3, dword [esp + 0x14]
push 0
je 0x420015
movss xmm1, dword [0x4e68f0]
lea eax, [esp + 0x6c]
subss xmm0, xmm1
push eax
lea eax, [esp + 0x60]
movss dword [esp + 0x70], xmm0
movss xmm0, dword [esp + 0x20]
subss xmm0, xmm1
movss dword [esp + 0x74], xmm0
movss xmm0, dword [esp + 0xa8]
addss xmm0, xmm1
movss dword [esp + 0x60], xmm0
movss xmm0, dword [esp + 0x30]
addss xmm0, xmm1
movss dword [esp + 0x64], xmm0
jmp 0x420074
subss xmm0, dword [0x4e68ec]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x88]
movss dword [esp + 0x48], xmm0
movss xmm0, dword [esp + 0x20]
subss xmm0, dword [0x4e68ec]
movss dword [esp + 0x4c], xmm0
movss xmm0, dword [esp + 0xa8]
addss xmm0, dword [0x4e68f0]
movss dword [esp + 0x88], xmm0
movss xmm0, dword [esp + 0x30]
addss xmm0, dword [0x4e68f0]
movss dword [esp + 0x8c], xmm0
push eax
call fcn.0042e460
push ecx
mov dword [esp], 0x3f800000
mov ecx, ebx
push 1
push dword [esp + 0x50]
push dword [ebx + 0x54]
push dword [ebx + 0x5c]
call fcn.0042caf0
mov dword [ebx + 0x54], 0
test ebp, ebp
je 0x4200a5
cmp ebp, 1
jne 0x4200fc
movss xmm0, dword [esp + 0x18]
lea eax, [esp + 0x88]
push ecx
mov dword [esp], 0x3f800000
mov ecx, ebx
push dword [esp + 0x4c]
movd xmm1, esi
cvtdq2ps xmm1, xmm1
push eax
lea eax, [esp + 0x7c]
push eax
movss dword [esp + 0x9c], xmm0
movss xmm0, dword [esp + 0x38]
movss dword [esp + 0x98], xmm1
movss dword [esp + 0x80], xmm1
movss dword [esp + 0x84], xmm0
call fcn.0042e910
cmp ebp, 2
je 0x420106
cmp ebp, 3
jne 0x420162
movss xmm0, dword [esp + 0x1c]
lea eax, [esp + 0xd4]
push ecx
mov dword [esp], 0x3f800000
mov ecx, ebx
push dword [esp + 0x4c]
movd xmm1, edi
cvtdq2ps xmm1, xmm1
push eax
lea eax, [esp + 0xd0]
push eax
movss dword [esp + 0xe4], xmm0
movups xmm0, xmmword [esp + 0xb0]
movss dword [esp + 0xe8], xmm1
movss dword [esp + 0xd4], xmm0
movss dword [esp + 0xd8], xmm1
call fcn.0042e910
mov eax, dword [esp + 0x3c]
movss xmm5, dword [esp + 0x14]
inc eax
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0x4c]
jl 0x41ff80
movss xmm1, dword [0x4e68f0]
movss xmm4, dword [0x4e6a98]
movss xmm6, dword [0x4e6968]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x4201b1
test byte [ebx + 0x10], 0x10
jne 0x4201cb
cmp byte [ecx + 0xb0], 0
jne 0x4201cb
inc ebp
add eax, 0x10
mov dword [esp + 0x34], eax
cmp ebp, 4
jl 0x41feb0
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004ca5c5
add esp, 0xdc
ret