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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x28
cmp byte [edx], 0
mov eax, dword [ebp + 0xc]
push esi
mov esi, ecx
mov dword [esp + 0x10], edx
push edi
mov dword [esp + 0xc], esi
mov byte [eax], 1
je 0x40cbdd
movups xmm0, xmmword [esi + 0x3c]
mov eax, dword [esi + 0x54]
lea ecx, [esp + 0x28]
movups xmmword [esi + 0x58], xmm0
movq xmm0, qword [esi + 0x4c]
movq qword [esi + 0x68], xmm0
movups xmm0, xmmword [esi + 0x74]
mov dword [esi + 0x70], eax
mov dword [esi + 0x3c], 0
movups xmmword [esi + 0x8c], xmm0
movq xmm0, qword [esi + 0x84]
movq qword [esi + 0x9c], xmm0
call fcn.00407b90
mov edi, dword [esp + 0x28]
mov ecx, edi
sub ecx, dword [esi + 0x30]
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x2c]
mov eax, esi
push 0
push 0x3e8
sbb eax, dword [edx + 0x34]
push eax
push ecx
call fcn.0048c710
mov ecx, eax
call fcn.0048cd20
divsd xmm0, qword [0x4a96b0]
mov eax, dword [esp + 0xc]
mov dword [eax + 0x30], edi
mov edi, eax
mov dword [edi + 0x34], esi
cvtsd2ss xmm0, xmm0
movss dword [eax + 0x38], xmm0
mov eax, dword [edi + 0x1bc]
cmp eax, 1
jne 0x40bcb4
mov edx, dword [esp + 0x14]
xor esi, esi
cmp byte [edi + 0x1c0], 0
mov dword [esp + 0x20], esi
mov al, byte [edx]
jne 0x40b6b3
cmp al, 0x11
mov esi, 2
mov dword [esp + 0x20], esi
sete cl
jmp 0x40b6c4
cmp al, 1
sete cl
jne 0x40b6c4
test byte [edx + 0x1f], 4
jne 0x40cbdd
test cl, cl
je 0x40cbd5
movzx ecx, byte [esi + edx + 0xe]
movzx eax, byte [esi + edx + 0xd]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x10]
mov dword [esp + 0x24], eax
movzx eax, byte [esi + edx + 0xf]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x12]
mov dword [esp + 0x14], eax
movzx eax, byte [esi + edx + 0x11]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x14]
mov dword [esp + 0x10], eax
movzx eax, byte [esi + edx + 0x13]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x16]
mov dword [esp + 0x18], eax
movzx eax, byte [esi + edx + 0x15]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x18]
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + edx + 0x17]
shl cx, 8
or cx, ax
movzx eax, cx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], eax
or eax, dword [esp + 0x1c]
or eax, dword [esp + 0x18]
or eax, dword [esp + 0x10]
or eax, dword [esp + 0x14]
or eax, ecx
test ax, ax
jne 0x40b77d
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
movsd xmm1, qword [0x4a9610]
movsx eax, cx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x14]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x80], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x10]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x84], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x18]
cwde
mulsd xmm0, xmm1
movsd xmm1, qword [0x4a95c0]
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x88], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x1c]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x74], xmm0
movd xmm0, eax
mov eax, dword [esp + 0x28]
cvtdq2pd xmm0, xmm0
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x78], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [edi + 0xbc]
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x7c], xmm0
movups xmm0, xmmword [edi + 0xa4]
movups xmmword [edi + 0xc0], xmm0
movq xmm0, qword [edi + 0xb4]
movq qword [edi + 0xd0], xmm0
mov dword [edi + 0xd8], eax
movzx eax, byte [esi + edx + 0x23]
and eax, 0x7f
mov dword [edi + 0xa4], eax
movzx eax, byte [esi + edx + 0x27]
and eax, 0x7f
mov dword [edi + 0xa8], eax
mov al, byte [esi + edx + 0x23]
shr al, 7
not al
and al, 1
mov byte [edi + 0xac], al
mov al, byte [esi + edx + 0x27]
shr al, 7
not al
and al, 1
mov byte [edi + 0xad], al
movzx ecx, byte [esi + edx + 0x25]
movzx eax, byte [esi + edx + 0x24]
and ecx, 0xf
shl ecx, 8
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96dc]
movss dword [edi + 0xb0], xmm0
movzx ecx, byte [esi + edx + 0x26]
movzx eax, byte [esi + edx + 0x25]
shl ecx, 4
shr eax, 4
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96d8]
movss dword [edi + 0xb4], xmm0
movzx ecx, byte [esi + edx + 0x29]
movzx eax, byte [esi + edx + 0x28]
and ecx, 0xf
shl ecx, 8
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96dc]
movss dword [edi + 0xb8], xmm0
movzx ecx, byte [esi + edx + 0x29]
movzx eax, byte [esi + edx + 0x2a]
shl eax, 4
shr ecx, 4
or ecx, eax
mov ah, 2
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96d8]
movss dword [edi + 0xbc], xmm0
mov al, byte [esi + edx + 5]
and al, 0xf
cmp al, 6
mov byte [esp + 0xb], al
sbb ecx, ecx
neg ecx
cmp ah, al
sbb eax, eax
neg eax
test eax, ecx
je 0x40b95c
or dword [edi + 0x3c], 2
xor ecx, ecx
cmp byte [esp + 0xb], 7
sete cl
cmp byte [esp + 0xb], 2
sbb eax, eax
neg eax
or ecx, eax
je 0x40b977
or dword [edi + 0x3c], 1
mov al, byte [esp + 0xb]
cmp al, 4
sbb ecx, ecx
xor ah, ah
neg ecx
cmp ah, al
sbb eax, eax
neg eax
test eax, ecx
je 0x40b991
or dword [edi + 0x3c], 8
cmp byte [esp + 0xb], 8
mov eax, dword [edi + 0x3c]
sbb ecx, ecx
mov dword [esp + 0x14], eax
mov ah, 4
neg ecx
cmp ah, byte [esp + 0xb]
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x14]
je 0x40b9b9
or eax, 4
mov dword [edi + 0x3c], eax
movzx ecx, byte [esi + edx + 5]
xorps xmm0, xmm0
and ecx, 0x10
shl ecx, 0xa
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 5]
and eax, 0x80
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 5]
and eax, 0x20
shl eax, 7
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 5]
and eax, 0x40
shl eax, 7
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
and eax, 0x40
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
and eax, 0x80
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
shr eax, 1
and eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
and eax, 0x10
add eax, eax
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
and eax, 2
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 6]
and eax, 1
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 7]
and eax, 1
shl eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 7]
and eax, 2
shl eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 9]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x4a96d4]
comiss xmm1, xmm0
movss dword [edi + 0x44], xmm1
movzx eax, byte [esi + edx + 8]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x4a96d4]
movss dword [edi + 0x40], xmm2
jbe 0x40bab8
or ecx, 0x800
mov dword [edi + 0x3c], ecx
comiss xmm2, xmm0
jbe 0x40bac6
or ecx, 0x400
mov dword [edi + 0x3c], ecx
movzx ecx, byte [esi + edx + 2]
mov edi, 0xff
mov eax, edi
sub esp, 0x10
sub ax, cx
mov ecx, dword [esp + 0x30]
movzx esi, ax
mov al, byte [ecx + edx + 3]
mov byte [esp + 0x1b], al
movzx eax, byte [ecx + edx + 4]
sub di, ax
movzx eax, byte [ecx + edx + 1]
movzx edi, di
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movd xmm0, esi
cvtdq2pd xmm0, xmm0
mov edx, dword [esp + 0x1c]
fstp dword [edx + 0x48]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movzx eax, byte [esp + 0x1b]
mov esi, dword [esp + 0x1c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
fstp dword [esi + 0x4c]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movd xmm0, edi
cvtdq2pd xmm0, xmm0
fstp dword [esi + 0x50]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
add esp, 0x10
cmp byte [esi + 0x1e4], 0
fstp dword [esi + 0x54]
je 0x40bc64
movss xmm1, dword [esi + 0x78]
movss xmm2, dword [esi + 0x74]
movss xmm0, dword [esi + 0x7c]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x40bc15
sqrtsd xmm0, xmm0
jmp 0x40bc1a
call fcn.0048e760
movss xmm3, dword [esi + 0x88]
movss xmm2, dword [esi + 0x84]
movss xmm1, dword [esi + 0x80]
cvtsd2ss xmm0, xmm0
push ecx
mov ecx, esi
movss dword [esp], xmm0
call fcn.00409f70
lea eax, [esi + 0x1f4]
push eax
lea eax, [esi + 0x1f0]
push eax
lea eax, [esi + 0x1ec]
push eax
lea eax, [esi + 0x1e8]
push eax
call fcn.0040a030
movss xmm0, dword [esi + 0x80]
mov al, 1
subss xmm0, dword [esi + 0x1e8]
movss dword [esi + 0x80], xmm0
movss xmm0, dword [esi + 0x84]
subss xmm0, dword [esi + 0x1ec]
movss dword [esi + 0x84], xmm0
movss xmm0, dword [esi + 0x88]
subss xmm0, dword [esi + 0x1f0]
movss dword [esi + 0x88], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x40c2ca
mov edx, dword [esp + 0x14]
xor eax, eax
cmp byte [edi + 0x1c0], al
sete al
inc eax
mov dword [esp + 0x10], eax
mov esi, eax
movzx ecx, byte [eax + edx + 0x10]
movzx eax, byte [eax + edx + 0xf]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x12]
mov dword [esp + 0x28], eax
movzx eax, byte [esi + edx + 0x11]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x14]
mov dword [esp + 0x20], eax
movzx eax, byte [esi + edx + 0x13]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x16]
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + edx + 0x15]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x18]
mov dword [esp + 0x18], eax
movzx eax, byte [esi + edx + 0x17]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + edx + 0x1a]
mov dword [esp + 0x14], eax
movzx eax, byte [esi + edx + 0x19]
shl cx, 8
or cx, ax
movzx eax, cx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
or eax, dword [esp + 0x14]
or eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
or eax, dword [esp + 0x20]
or eax, ecx
test ax, ax
jne 0x40bd84
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
movsd xmm1, qword [0x4a9610]
movsx eax, cx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x20]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x80], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x1c]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x84], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x18]
cwde
mulsd xmm0, xmm1
movsd xmm1, qword [0x4a95c0]
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x88], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [esp + 0x14]
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x74], xmm0
movd xmm0, eax
mov eax, dword [esp + 0x24]
cvtdq2pd xmm0, xmm0
cwde
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x78], xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov eax, dword [edi + 0xbc]
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edi + 0x7c], xmm0
movups xmm0, xmmword [edi + 0xa4]
movups xmmword [edi + 0xc0], xmm0
movq xmm0, qword [edi + 0xb4]
movq qword [edi + 0xd0], xmm0
mov dword [edi + 0xd8], eax
movzx eax, byte [esi + edx + 0x20]
and eax, 0x7f
mov dword [edi + 0xa4], eax
movzx eax, byte [esi + edx + 0x24]
and eax, 0x7f
mov dword [edi + 0xa8], eax
mov al, byte [esi + edx + 0x20]
shr al, 7
not al
and al, 1
mov byte [edi + 0xac], al
mov al, byte [esi + edx + 0x24]
shr al, 7
not al
and al, 1
mov byte [edi + 0xad], al
movzx ecx, byte [esi + edx + 0x22]
movzx eax, byte [esi + edx + 0x21]
and ecx, 0xf
shl ecx, 8
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96dc]
movss dword [edi + 0xb0], xmm0
movzx ecx, byte [esi + edx + 0x23]
movzx eax, byte [esi + edx + 0x22]
shl ecx, 4
shr eax, 4
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96d8]
movss dword [edi + 0xb4], xmm0
movzx ecx, byte [esi + edx + 0x26]
movzx eax, byte [esi + edx + 0x25]
and ecx, 0xf
shl ecx, 8
or ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96dc]
movss dword [edi + 0xb8], xmm0
movzx ecx, byte [esi + edx + 0x27]
movzx eax, byte [esi + edx + 0x26]
shr eax, 4
shl ecx, 4
or ecx, eax
mov ah, 2
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x4a96d8]
movss dword [edi + 0xbc], xmm0
mov al, byte [esi + edx + 7]
and al, 0xf
cmp al, 6
mov byte [esp + 0xb], al
sbb ecx, ecx
neg ecx
cmp ah, al
sbb eax, eax
neg eax
test eax, ecx
je 0x40bf63
or dword [edi + 0x3c], 2
xor ecx, ecx
cmp byte [esp + 0xb], 7
sete cl
cmp byte [esp + 0xb], 2
sbb eax, eax
neg eax
or ecx, eax
je 0x40bf7e
or dword [edi + 0x3c], 1
mov al, byte [esp + 0xb]
cmp al, 4
sbb ecx, ecx
xor ah, ah
neg ecx
cmp ah, al
sbb eax, eax
neg eax
test eax, ecx
je 0x40bf98
or dword [edi + 0x3c], 8
cmp byte [esp + 0xb], 8
mov eax, dword [edi + 0x3c]
sbb ecx, ecx
mov dword [esp + 0x14], eax
mov ah, 4
neg ecx
cmp ah, byte [esp + 0xb]
sbb eax, eax
neg eax
test eax, ecx
mov eax, dword [esp + 0x14]
je 0x40bfc0
or eax, 4
mov dword [edi + 0x3c], eax
movzx ecx, byte [esi + edx + 7]
xorps xmm0, xmm0
and ecx, 0x10
shl ecx, 0xa
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 7]
and eax, 0x80
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 7]
and eax, 0x20
shl eax, 7
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 7]
and eax, 0x40
shl eax, 7
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
and eax, 0x40
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
and eax, 0x80
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
shr eax, 1
and eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
and eax, 0x10
add eax, eax
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
and eax, 2
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 8]
and eax, 1
shl eax, 8
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 9]
and eax, 1
shl eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 9]
and eax, 4
shl eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 9]
and eax, 2
shl eax, 0x10
or ecx, eax
mov dword [edi + 0x3c], ecx
movzx eax, byte [esi + edx + 5]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
divss xmm1, dword [0x4a96d4]
comiss xmm1, xmm0
movss dword [edi + 0x44], xmm1
movzx eax, byte [esi + edx + 4]
movd xmm2, eax
cvtdq2ps xmm2, xmm2
divss xmm2, dword [0x4a96d4]
movss dword [edi + 0x40], xmm2
jbe 0x40c0cf
or ecx, 0x800
mov dword [edi + 0x3c], ecx
comiss xmm2, xmm0
jbe 0x40c0dd
or ecx, 0x400
mov dword [edi + 0x3c], ecx
movzx ecx, byte [esi + edx + 1]
mov edi, 0xff
mov eax, edi
sub esp, 0x10
sub ax, cx
mov ecx, dword [esp + 0x20]
movzx esi, ax
mov al, byte [ecx + edx + 2]
mov byte [esp + 0x1b], al
movzx eax, byte [ecx + edx + 3]
sub di, ax
movzx eax, byte [ecx + edx]
movzx edi, di
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movd xmm0, esi
cvtdq2pd xmm0, xmm0
mov edx, dword [esp + 0x1c]
fstp dword [edx + 0x48]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movzx eax, byte [esp + 0x1b]
mov esi, dword [esp + 0x1c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
fstp dword [esi + 0x4c]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
movd xmm0, edi
cvtdq2pd xmm0, xmm0
fstp dword [esi + 0x50]
subsd xmm0, qword [0x4a9690]
divsd xmm0, qword [0x4a9690]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [0x4a9658]
movsd qword [esp], xmm0
call fcn.00476269
add esp, 0x10
cmp byte [esi + 0x1e4], 0
fstp dword [esi + 0x54]
je 0x40c27a
movss xmm1, dword [esi + 0x78]
movss xmm2, dword [esi + 0x74]
movss xmm0, dword [esi + 0x7c]
mulss xmm2, xmm2
mulss xmm1, xmm1
mulss xmm0, xmm0
addss xmm2, xmm1
xorps xmm1, xmm1
addss xmm2, xmm0
cvtps2pd xmm0, xmm2
ucomisd xmm1, xmm0
ja 0x40c22b
sqrtsd xmm0, xmm0
jmp 0x40c230
call fcn.0048e760
movss xmm3, dword [esi + 0x88]
movss xmm2, dword [esi + 0x84]
movss xmm1, dword [esi + 0x80]
cvtsd2ss xmm0, xmm0
push ecx
mov ecx, esi
movss dword [esp], xmm0
call fcn.00409f70
lea eax, [esi + 0x1f4]
push eax
lea eax, [esi + 0x1f0]
push eax
lea eax, [esi + 0x1ec]
push eax
lea eax, [esi + 0x1e8]
push eax
call fcn.0040a030
movss xmm0, dword [esi + 0x80]
mov al, 1
subss xmm0, dword [esi + 0x1e8]
movss dword [esi + 0x80], xmm0
movss xmm0, dword [esi + 0x84]
subss xmm0, dword [esi + 0x1ec]
movss dword [esi + 0x84], xmm0
movss xmm0, dword [esi + 0x88]
subss xmm0, dword [esi + 0x1f0]
movss dword [esi + 0x88], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x14]
mov al, byte [esi]
mov byte [esp + 0xb], al
cmp al, 0x3f
jne 0x40c2e7
mov al, byte [esi + 3]
mov byte [edi + 0x18c], al
mov al, byte [esi]
mov byte [esp + 0xb], al
movss xmm2, dword [0x4a98a0]
xor edx, edx
mov dword [esp + 0x10], edx
cmp al, 0x21
je 0x40c305
cmp al, 0x30
je 0x40c305
cmp al, 0x31
jne 0x40c8f7
mov ecx, dword [edi + 0x28]
cmp ecx, 1
jne 0x40c329
movzx ecx, byte [esi + 4]
lea edx, [esi + 6]
movzx eax, byte [esi + 5]
shl ecx, 8
or ecx, eax
mov dword [esp + 0xc], edx
mov ah, byte [edx]
mov dword [esp + 0x10], ecx
jmp 0x40c38c
cmp ecx, 2
jne 0x40c347
movzx ecx, byte [esi + 4]
movzx eax, byte [esi + 3]
shl ecx, 8
or ecx, eax
mov al, byte [esp + 0xb]
shl ecx, 0x10
jmp 0x40c3f7
cmp ecx, 3
jne 0x40c3f5
mov edx, dword [esp + 0x14]
movzx esi, byte [esi + 4]
shl si, 8
movzx eax, byte [edx + 3]
movzx edx, byte [edx + 5]
or ax, si
movzx ecx, ax
movzx eax, si
mov esi, dword [esp + 0x14]
or edx, eax
shl ecx, 0x10
or ecx, edx
mov edx, esi
and ecx, 0xd6ffadff
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov ah, byte [esp + 0xb]
mov al, byte [edx + 1]
mov byte [esp + 0xb], al
and al, 0xf
movzx ecx, al
shl cx, 8
movzx eax, ah
or cx, ax
movzx eax, cx
movzx ecx, byte [edx + 2]
mov dword [esp + 0x20], eax
mov al, byte [esp + 0xb]
shr al, 4
shl cx, 4
movzx eax, al
or cx, ax
mov eax, dword [edi + 0x28]
movzx ecx, cx
cmp eax, 1
jne 0x40c41e
lea eax, [edi + 0x412]
push eax
lea eax, [edi + 0x40c]
push eax
push ecx
push dword [esp + 0x2c]
lea eax, [edi + 0x4c]
push eax
lea eax, [edi + 0x48]
push eax
call fcn.0040b340
mov eax, dword [esp + 0xc]
mov al, byte [eax + 1]
jmp 0x40c504
xor ecx, ecx
cmp dword [edi + 0x28], 2
mov edx, esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], esi
mov byte [esp + 0xb], al
jne 0x40c388
mov ah, byte [esi + 9]
lea edx, [esi + 9]
mov dword [esp + 0xc], edx
jmp 0x40c38c
cmp eax, 2
jne 0x40c44f
lea eax, [edi + 0x41e]
push eax
lea eax, [edi + 0x418]
push eax
push ecx
push dword [esp + 0x2c]
lea eax, [edi + 0x54]
push eax
lea eax, [edi + 0x50]
push eax
call fcn.0040b340
mov eax, dword [esp + 0xc]
mov al, byte [eax + 1]
jmp 0x40c504
cmp eax, 3
jne 0x40c500
add edx, 6
lea eax, [edi + 0x412]
push eax
mov dword [esp + 0x10], edx
lea eax, [edi + 0x40c]
push eax
mov eax, dword [esp + 0x14]
mov dl, byte [edx + 1]
movzx ecx, byte [eax + 2]
mov al, dl
shr al, 4
and dl, 0xf
movzx eax, al
shl cx, 4
or cx, ax
movzx eax, cx
push eax
mov eax, dword [esp + 0x18]
movzx ecx, dl
shl cx, 8
movzx eax, byte [eax]
or cx, ax
movzx eax, cx
push eax
lea eax, [edi + 0x4c]
push eax
lea eax, [edi + 0x48]
push eax
call fcn.0040b340
mov ecx, dword [esp + 0xc]
lea eax, [edi + 0x41e]
add ecx, 3
push eax
mov dword [esp + 0x10], ecx
lea eax, [edi + 0x418]
push eax
mov dl, byte [ecx + 1]
movzx ecx, byte [ecx + 2]
mov al, dl
shr al, 4
and dl, 0xf
movzx eax, al
shl cx, 4
or cx, ax
movzx eax, cx
push eax
mov eax, dword [esp + 0x18]
movzx ecx, dl
shl cx, 8
movzx eax, byte [eax]
or cx, ax
movzx eax, cx
push eax
jmp 0x40c436
mov al, byte [esp + 0xb]
shr al, 4
mov byte [edi + 0x18d], al
movzx ecx, byte [esi + 0xe]
movzx eax, byte [esi + 0xd]
shl cx, 8
or cx, ax
movzx eax, byte [esi + 0xf]
movzx edx, cx
movzx ecx, byte [esi + 0x10]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + 0x12]
mov dword [esp + 0x14], eax
movzx eax, byte [esi + 0x11]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + 0x14]
mov dword [esp + 0x20], eax
movzx eax, byte [esi + 0x13]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + 0x16]
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 0x15]
shl cx, 8
or cx, ax
movzx eax, cx
movzx ecx, byte [esi + 0x18]
mov dword [esp + 0x18], eax
movzx eax, byte [esi + 0x17]
shl cx, 8
or cx, ax
movzx eax, cx
mov dword [esp + 0x28], eax
or eax, dword [esp + 0x18]
or eax, dword [esp + 0x1c]
or eax, dword [esp + 0x20]
or eax, dword [esp + 0x14]
or eax, edx
test ax, ax
jne 0x40c5aa
mov eax, dword [ebp + 0xc]
mov byte [eax], 0
movzx ecx, byte [esi + 0x1e]
movzx eax, byte [esi + 0x1d]
shl cx, 8
or cx, ax
movss xmm4, dword [0x4a9688]
movsx eax, cx
movzx ecx, byte [esi + 0x2a]
shl cx, 8
movd xmm7, eax
mov eax, dword [esp + 0x20]
cwde
cvtdq2ps xmm7, xmm7
movd xmm0, eax
movzx eax, byte [esi + 0x29]
or cx, ax
movsx eax, cx
movzx ecx, byte [esi + 0x1a]
cvtdq2ps xmm0, xmm0
shl cx, 8
addss xmm7, xmm0
movd xmm0, eax
movzx eax, byte [esi + 0x19]
or cx, ax
movsx eax, cx
movzx ecx, byte [esi + 0x26]
cvtdq2ps xmm0, xmm0
shl cx, 8
movd xmm5, eax
addss xmm7, xmm0
movsx eax, dx
movsx edx, word [edi + 0x406]
cvtdq2ps xmm5, xmm5
movd xmm0, eax
movzx eax, byte [esi + 0x25]
or cx, ax
cvtdq2ps xmm0, xmm0
movsx eax, cx
divss xmm7, xmm4
addss xmm5, xmm0
movd xmm0, eax
movzx eax, byte [esi + 0x20]
shl ax, 8
movsx ecx, ax
movzx eax, byte [esi + 0x1f]
or ecx, eax
mov eax, dword [esp + 0x1c]
cwde
sub ecx, edx
sub eax, edx
cvtdq2ps xmm0, xmm0
movd xmm6, ecx
addss xmm5, xmm0
movd xmm0, eax
movzx eax, byte [esi + 0x2c]
shl ax, 8
movsx ecx, ax
movzx eax, byte [esi + 0x2b]
or ecx, eax
movzx eax, byte [esi + 0x22]
cvtdq2ps xmm0, xmm0
sub ecx, edx
movsx edx, word [edi + 0x408]
shl ax, 8
cvtdq2ps xmm6, xmm6
divss xmm5, xmm4
addss xmm6, xmm0
movd xmm0, ecx
movsx ecx, ax
movzx eax, byte [esi + 0x21]
cvtdq2ps xmm0, xmm0
or ecx, eax
mov eax, dword [esp + 0x18]
sub ecx, edx
cwde
sub eax, edx
addss xmm6, xmm0
movd xmm3, ecx
movd xmm0, eax
cvtdq2ps xmm3, xmm3
divss xmm6, xmm4
cvtdq2ps xmm0, xmm0
movzx eax, byte [esi + 0x2e]
addss xmm3, xmm0
shl ax, 8
movsx ecx, ax
movzx eax, byte [esi + 0x2d]
or ecx, eax
movzx eax, byte [esi + 0x24]
sub ecx, edx
shl ax, 8
movsx edx, word [edi + 0x40a]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
movsx ecx, ax
movzx eax, byte [esi + 0x23]
or ecx, eax
mov eax, dword [esp + 0x28]
cwde
sub ecx, edx
sub eax, edx
addss xmm3, xmm0
movd xmm2, ecx
movd xmm0, eax
movzx eax, byte [esi + 0x30]
cvtdq2ps xmm0, xmm0
shl ax, 8
movsx ecx, ax
movzx eax, byte [esi + 0x2f]
or ecx, eax
movzx eax, byte [esi + 0x1b]
cvtdq2ps xmm2, xmm2
sub ecx, edx
divss xmm3, xmm4
addss xmm2, xmm0
movd xmm0, ecx
movzx ecx, byte [esi + 0x1c]
cvtdq2ps xmm0, xmm0
shl cx, 8
or cx, ax
movsx eax, cx
movzx ecx, byte [esi + 0x28]
xorps xmm3, xmmword [0x4a98a0]
addss xmm2, xmm0
shl cx, 8
movd xmm1, eax
mov eax, dword [esp + 0x14]
cwde
cvtdq2ps xmm1, xmm1
movd xmm0, eax
movzx eax, byte [esi + 0x27]
cvtdq2ps xmm0, xmm0
or cx, ax
movsx eax, cx
divss xmm2, xmm4
addss xmm1, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm1, xmm0
divss xmm1, xmm4
cvtps2pd xmm0, xmm1
movsd xmm1, qword [0x4a9618]
mulsd xmm0, qword [0x4a96e8]
cvtpd2ps xmm4, xmm0
cvtps2pd xmm0, xmm7
movss dword [edi + 0x74], xmm4
mulsd xmm0, qword [0x4a95d0]
cvtpd2ps xmm7, xmm0
cvtps2pd xmm0, xmm5
movss dword [edi + 0x78], xmm7
mulsd xmm0, qword [0x4a96e8]
cvtpd2ps xmm5, xmm0
xorps xmm0, xmm0
cvtss2sd xmm0, xmm3
movss dword [edi + 0x7c], xmm5
mulsd xmm0, xmm1
cvtpd2ps xmm3, xmm0
cvtps2pd xmm0, xmm2
movss dword [esp + 0x20], xmm3
mulsd xmm0, xmm1
movss dword [edi + 0x80], xmm3
cvtpd2ps xmm2, xmm0
movss dword [esp + 0x24], xmm2
cmp byte [edi + 0x1e4], 0
cvtps2pd xmm0, xmm6
movss dword [edi + 0x84], xmm2
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [esp + 0x28], xmm0
movss dword [edi + 0x88], xmm0
je 0x40c8bb
mulss xmm4, xmm4
mulss xmm7, xmm7
mulss xmm5, xmm5
addss xmm4, xmm7
addss xmm4, xmm5
cvtps2pd xmm0, xmm4
xorps xmm4, xmm4
ucomisd xmm4, xmm0
ja 0x40c85a
sqrtsd xmm0, xmm0
jmp 0x40c85f
call fcn.0048e760
movss xmm3, dword [esp + 0x28]
movss xmm2, dword [esp + 0x24]
movss xmm1, dword [esp + 0x20]
cvtsd2ss xmm0, xmm0
push ecx
mov ecx, edi
movss dword [esp], xmm0
call fcn.00409f70
lea eax, [edi + 0x1f4]
push eax
lea eax, [edi + 0x1f0]
push eax
lea eax, [edi + 0x1ec]
push eax
lea eax, [edi + 0x1e8]
push eax
call fcn.0040a030
movss xmm3, dword [edi + 0x80]
movss xmm2, dword [edi + 0x84]
movss xmm0, dword [edi + 0x88]
subss xmm2, dword [edi + 0x1ec]
subss xmm3, dword [edi + 0x1e8]
subss xmm0, dword [edi + 0x1f0]
mov edx, dword [esp + 0x10]
movss dword [edi + 0x84], xmm2
movss xmm2, dword [0x4a98a0]
movss dword [edi + 0x80], xmm3
movss dword [edi + 0x88], xmm0
mov eax, dword [edi + 0x28]
cmp eax, 1
jne 0x40c99d
mov esi, edx
sar esi, 1
mov ecx, esi
and ecx, eax
mov eax, edx
or ecx, dword [edi + 0x3c]
and eax, 1
add eax, eax
or ecx, eax
mov eax, esi
and eax, 4
or ecx, eax
mov eax, edx
and eax, 4
add eax, eax
or ecx, eax
mov eax, edx
sar eax, 5
and eax, 0x40
or ecx, eax
mov eax, edx
sar eax, 3
and eax, 0x20
or ecx, eax
mov eax, edx
and eax, 0x40
shl eax, 2
or ecx, eax
mov eax, edx
and eax, 0x2000
shl eax, 4
or ecx, eax
mov eax, edx
sar eax, 7
and eax, 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
cvttss2si eax, xmm0
movss dword [edi + 0x40], xmm0
movss xmm0, dword [edi + 0x88]
shl eax, 0xa
xorps xmm0, xmm2
or ecx, eax
movss dword [edi + 0x88], xmm0
mov eax, edx
and eax, 0x20
shl eax, 0xd
or ecx, eax
mov eax, edx
and eax, 0x10
shl eax, 0xf
or eax, ecx
mov dword [edi + 0x3c], eax
jmp 0x40ca9a
cmp eax, 2
jne 0x40ca96
mov esi, dword [esp + 0x10]
mov eax, edx
sar eax, 2
mov ecx, esi
mov edx, eax
sar ecx, 6
and eax, 0x8000
and edx, 0x4000
or edx, dword [edi + 0x3c]
or edx, eax
mov eax, ecx
and eax, 0x1000
and ecx, 0x2000
or edx, eax
mov eax, esi
sar eax, 0x13
or edx, ecx
and eax, 0x80
or edx, eax
mov eax, esi
sar eax, 0x15
and eax, 0x10
or edx, eax
mov eax, esi
sar eax, 0xd
and eax, 0x200
or edx, eax
mov eax, esi
sar eax, 0xc
and eax, 0x10000
or edx, eax
mov eax, esi
sar eax, 0x17
and eax, 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
cvttss2si eax, xmm0
movss dword [edi + 0x44], xmm0
movss xmm0, dword [edi + 0x80]
xorps xmm0, xmm2
shl eax, 0xb
movss dword [edi + 0x80], xmm0
or edx, eax
movss xmm0, dword [edi + 0x84]
mov eax, esi
xorps xmm0, xmm2
sar eax, 3
movss dword [edi + 0x84], xmm0
and eax, 0x40000
movss xmm0, dword [edi + 0x88]
or edx, eax
xorps xmm0, xmm2
sar esi, 1
movss dword [edi + 0x88], xmm0
and esi, 0x80000
movss xmm0, dword [edi + 0x74]
or esi, edx
xorps xmm0, xmm2
mov dword [edi + 0x3c], esi
movss dword [edi + 0x74], xmm0
mov al, 1
movss xmm0, dword [edi + 0x78]
xorps xmm0, xmm2
movss dword [edi + 0x78], xmm0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov esi, edx
sar esi, 1
mov eax, edx
sar eax, 0x17
mov dword [esp + 0xc], eax
mov eax, edx
sar eax, 0xc
mov dword [esp + 0x10], eax
mov eax, edx
sar eax, 0xd
mov dword [esp + 0x14], eax
mov eax, edx
sar eax, 3
mov dword [esp + 0x18], eax
mov eax, edx
sar eax, 0x15
mov dword [esp + 0x1c], eax
mov eax, edx
sar eax, 0x13
mov dword [esp + 0x20], eax
mov eax, edx
sar eax, 6
mov dword [esp + 0x24], eax
mov eax, edx
sar eax, 2
cmp dword [edi + 0x28], 3
mov dword [esp + 0x28], eax
jne 0x40cbd5
mov ecx, esi
mov eax, edx
and eax, 1
and ecx, 1
or ecx, dword [edi + 0x3c]
add eax, eax
or ecx, eax
and esi, 4
or ecx, esi
mov eax, edx
and eax, 4
mov esi, dword [esp + 0x28]
add eax, eax
or ecx, eax
mov eax, esi
and eax, 0x4000
and esi, 0x8000
or ecx, eax
or ecx, esi
mov esi, dword [esp + 0x24]
mov eax, esi
and esi, 0x2000
and eax, 0x1000
or ecx, eax
mov eax, edx
sar eax, 5
or ecx, esi
and eax, 0x40
or ecx, eax
mov eax, dword [esp + 0x20]
and eax, 0x80
or ecx, eax
mov eax, dword [esp + 0x1c]
and eax, 0x10
or ecx, eax
mov eax, dword [esp + 0x18]
and eax, 0x20
or ecx, eax
mov eax, dword [esp + 0x14]
and eax, 0x200
or ecx, eax
mov eax, edx
and eax, 0x40
shl eax, 2
or ecx, eax
mov eax, dword [esp + 0x10]
and eax, 0x10000
or ecx, eax
mov eax, edx
and eax, 0x2000
sar edx, 7
shl eax, 4
and edx, 1
or ecx, eax
mov eax, dword [esp + 0xc]
and eax, 1
movd xmm0, edx
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvttss2si eax, xmm0
cvtdq2ps xmm1, xmm1
shl eax, 0xa
or ecx, eax
movss dword [edi + 0x40], xmm0
movss xmm0, dword [edi + 0x88]
cvttss2si eax, xmm1
xorps xmm0, xmm2
movss dword [edi + 0x44], xmm1
shl eax, 0xb
or eax, ecx
movss dword [edi + 0x88], xmm0
mov dword [edi + 0x3c], eax
mov al, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret
pop edi
xor al, al
pop esi
mov esp, ebp
pop ebp
ret