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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [0x5811a8]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ecx
mov dword [ebp - 0x50], esi
mov ecx, dword [ebp + 0x14]
movd xmm3, dword [esi + 0x20]
mov dword [esi + 0x18], edi
mov al, byte [edi + 0x78]
mov byte [esi + 0x1c], al
cvtdq2ps xmm3, xmm3
divss xmm3, dword [0x507100]
movss dword [ebp - 0x54], xmm3
test ecx, ecx
jg 0x45d6b5
mov ecx, dword [edi + 0x70]
mov dword [ebp + 0x14], ecx
mov eax, dword [ebp + 0x18]
test eax, eax
jg 0x45d6c2
mov eax, dword [edi + 0x74]
mov dword [ebp + 0x18], eax
cmp dword [esi], 0
mov edx, dword [edi + 0x48]
je 0x45dca2
movss xmm7, dword [0x5066d8]
movss xmm4, dword [0x5066d4]
test edx, edx
je 0x45dae6
movd xmm1, dword [ebp + 0x10]
xorps xmm6, xmm6
movd xmm5, dword [ebp + 0xc]
movaps xmm0, xmmword [0x508980]
mov edx, dword [edi + 0x7c]
movss dword [ebp - 0x68], xmm6
movss dword [ebp - 0x5c], xmm6
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm5, xmm5
movss dword [ebp - 0x54], xmm1
movss dword [ebp - 0x20], xmm1
movaps xmm1, xmm7
movss dword [ebp - 0x60], xmm5
movss dword [ebp - 0x24], xmm5
movss dword [ebp - 0x64], xmm1
movups xmmword [ebp - 0x34], xmm0
test edx, edx
je 0x45d8e4
movss xmm0, dword [edx]
cvtps2pd xmm2, xmm0
comisd xmm2, xmmword [0x509718]
jb 0x45d767
movsd xmm0, qword [0x509710]
comisd xmm0, xmm2
movss dword [ebp - 0x64], xmm1
movss dword [ebp - 0x68], xmm6
movss dword [ebp - 0x5c], xmm6
jae 0x45d8e4
cmp dword [edx + 4], 0
movss xmm1, dword [edx + 8]
movss xmm2, dword [edx + 0xc]
je 0x45d7aa
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm4
addss xmm0, xmm5
addss xmm0, xmm1
movss dword [ebp - 0xc], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm4
addss xmm0, dword [ebp - 0x54]
addss xmm0, xmm2
movss dword [ebp - 8], xmm0
jmp 0x45d7c4
mulss xmm1, xmm3
mulss xmm2, xmm3
addss xmm1, xmm4
addss xmm2, xmm4
movss dword [ebp - 0xc], xmm1
movss dword [ebp - 8], xmm2
push dword [ebp - 8]
movss xmm0, dword [edx]
lea eax, [ebp - 0x4c]
push dword [ebp - 0xc]
push ecx
movss dword [esp], xmm0
push eax
call fcn.00455240
movss xmm2, dword [ebp - 0x28]
add esp, 0x10
movss xmm7, dword [eax + 8]
movss xmm6, dword [eax]
movaps xmm0, xmm7
mulss xmm0, dword [ebp - 0x30]
movaps xmm3, xmm6
mulss xmm3, dword [ebp - 0x34]
movss xmm4, dword [eax + 4]
movss xmm5, dword [eax + 0xc]
addss xmm3, xmm0
movss xmm1, dword [eax + 0x10]
movaps xmm0, xmm5
mulss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x64], xmm3
movaps xmm3, xmm4
mulss xmm3, dword [ebp - 0x34]
addss xmm3, xmm0
movaps xmm0, xmm6
mulss xmm0, dword [ebp - 0x2c]
movss dword [ebp - 0x5c], xmm3
movaps xmm3, xmm2
mulss xmm3, xmm7
mulss xmm2, xmm5
addss xmm3, xmm0
movaps xmm0, xmm4
mulss xmm0, dword [ebp - 0x2c]
addss xmm2, xmm0
movss dword [ebp - 0x68], xmm3
movss xmm0, dword [ebp - 0x24]
movss dword [ebp - 0x60], xmm0
movaps xmm3, xmm0
movss xmm0, dword [ebp - 0x64]
mulss xmm3, xmm4
movss xmm4, dword [ebp - 0x60]
movss dword [ebp - 8], xmm2
movss xmm2, dword [eax + 0x14]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ebp - 0x5c]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [ebp - 0x68]
mulss xmm4, xmm6
movss xmm6, dword [ebp - 0x20]
movss dword [ebp - 0x2c], xmm0
movss xmm0, dword [ebp - 8]
movss dword [ebp - 0x28], xmm0
movaps xmm0, xmm6
mulss xmm6, xmm5
mulss xmm0, xmm7
movss xmm7, dword [ebp - 8]
addss xmm6, xmm3
addss xmm4, xmm0
addss xmm6, xmm2
addss xmm4, xmm1
movss xmm1, dword [ebp - 0x64]
movss dword [ebp - 0x54], xmm6
movss dword [ebp - 0x20], xmm6
xorps xmm6, xmm6
movss dword [ebp - 0x60], xmm4
movss dword [ebp - 0x24], xmm4
cmp dword [edi + 0x68], 0
jle 0x45d9f5
mov edx, dword [edi + 0x6c]
test edx, edx
jle 0x45d9f5
mov ecx, dword [ebp + 0x14]
test ecx, ecx
jle 0x45d9f5
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x45d9f5
cmp dword [edi + 0x68], ecx
jne 0x45d91c
cmp edx, eax
je 0x45d9f5
xorps xmm0, xmm0
xorps xmm2, xmm2
cvtsi2ss xmm0, dword [edi + 0x68]
cvtsi2ss xmm2, ecx
xorps xmm3, xmm3
xorps xmm5, xmm5
divss xmm2, xmm0
xorps xmm0, xmm0
xorps xmm4, xmm4
cvtsi2ss xmm0, edx
cvtsi2ss xmm3, eax
mulss xmm1, xmm2
divss xmm3, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm6
subss xmm5, xmm0
movaps xmm0, xmm3
mulss xmm0, xmm6
subss xmm4, xmm0
movss xmm0, dword [ebp - 0x68]
mulss xmm0, xmm6
addss xmm1, xmm0
movaps xmm0, xmm7
mulss xmm0, xmm6
movss dword [ebp - 0x34], xmm1
movss xmm1, dword [ebp - 0x5c]
mulss xmm1, xmm2
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x64]
mulss xmm0, xmm6
movss dword [ebp - 0x30], xmm1
movss xmm1, dword [ebp - 0x68]
mulss xmm1, xmm3
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x5c]
mulss xmm0, xmm6
movss dword [ebp - 0x2c], xmm1
movaps xmm1, xmm7
mulss xmm1, xmm3
addss xmm1, xmm0
movaps xmm0, xmm5
mulss xmm0, dword [ebp - 0x64]
mulss xmm5, dword [ebp - 0x5c]
movss dword [ebp - 0x28], xmm1
movaps xmm1, xmm4
mulss xmm1, dword [ebp - 0x68]
mulss xmm4, xmm7
addss xmm1, xmm0
addss xmm4, xmm5
addss xmm1, dword [ebp - 0x60]
addss xmm4, dword [ebp - 0x54]
movss dword [ebp - 0x24], xmm1
movss dword [ebp - 0x20], xmm4
mov eax, dword [esi + 4]
lea edx, [ebp - 0x34]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x78]
cmp dword [edi + 0x2c], 0
lea edx, [ebp - 0x14]
movss xmm1, dword [0x508904]
push edx
je 0x45da4a
movzx eax, byte [edi + 0x30]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, byte [edi + 0x31]
divss xmm0, xmm1
movss dword [ebp - 0x14], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, byte [edi + 0x32]
divss xmm0, xmm1
movss dword [ebp - 0x10], xmm0
movd xmm0, eax
movzx eax, byte [edi + 0x33]
jmp 0x45da7e
movzx eax, byte [edi + 0x34]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, byte [edi + 0x35]
divss xmm0, xmm1
movss dword [ebp - 0x14], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movzx eax, byte [edi + 0x36]
divss xmm0, xmm1
movss dword [ebp - 0x10], xmm0
movd xmm0, eax
movzx eax, byte [edi + 0x37]
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
movss dword [ebp - 0xc], xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mov eax, dword [esi + 8]
push eax
divss xmm0, xmm1
movss dword [ebp - 8], xmm0
mov ecx, dword [eax]
call dword [ecx + 0x20]
mov eax, dword [edi + 0x50]
mov edi, dword [edi + 0x4c]
mov dword [ebp - 8], eax
cmp edi, eax
je 0x45dac0
mov ecx, dword [edi]
push esi
mov eax, dword [ecx]
call dword [eax + 8]
add edi, 4
cmp edi, dword [ebp - 8]
jne 0x45dab0
mov eax, dword [esi + 4]
lea edx, [ebp - 0x1c]
movaps xmm0, xmmword [0x508980]
movups xmmword [ebp - 0x1c], xmm0
mov dword [ebp - 0xc], 0
mov dword [ebp - 8], 0
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x78]
cmp dword [0x58db28], 0
je 0x45e034
mov eax, dword [esi + 8]
lea edx, [ebp - 0x14]
movaps xmm0, xmmword [0x508980]
movups xmmword [ebp - 0x14], xmm0
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
mov edi, dword [ebp + 0xc]
movd xmm1, dword [ebp + 0x10]
cvtdq2ps xmm1, xmm1
push 0
lea eax, [edi + 0xa]
movd xmm0, eax
mov eax, dword [esi + 4]
addss xmm1, dword [0x5066d4]
cvtdq2ps xmm0, xmm0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push dword [esi + 8]
movss dword [ebp - 0xc], xmm0
movd xmm0, dword [ebp + 0xc]
movss dword [ebp - 8], xmm1
push dword [ebp - 8]
cvtdq2ps xmm0, xmm0
push dword [ebp - 0xc]
movss dword [ebp - 0x54], xmm1
push dword [ebp - 0x54]
movss dword [ebp - 0x58], xmm0
push dword [ebp - 0x58]
push eax
call dword [ecx + 0x3c]
mov eax, dword [ebp + 0x10]
movd xmm1, dword [ebp + 0xc]
add eax, 0xa
push 0
cvtdq2ps xmm1, xmm1
movd xmm0, eax
mov eax, dword [esi + 4]
addss xmm1, dword [0x5066d4]
cvtdq2ps xmm0, xmm0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push dword [esi + 8]
movss dword [ebp - 8], xmm0
movd xmm0, dword [ebp + 0x10]
push dword [ebp - 8]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0xc], xmm1
push dword [ebp - 0xc]
movss dword [ebp - 0x54], xmm0
push dword [ebp - 0x54]
movss dword [ebp - 0x58], xmm1
push dword [ebp - 0x58]
push eax
call dword [ecx + 0x3c]
mov ecx, dword [ebp + 0x14]
test ecx, ecx
jle 0x45e034
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x45e034
mov esi, dword [ebp + 0x10]
add edi, ecx
mov edx, dword [ebp - 0x50]
add esi, eax
push 0
movd xmm0, edi
cvtdq2ps xmm1, xmm0
lea eax, [esi - 0xa]
movd xmm0, eax
mov eax, dword [edx + 4]
subss xmm1, dword [0x5066d4]
cvtdq2ps xmm0, xmm0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push dword [edx + 8]
movss dword [ebp - 8], xmm0
push dword [ebp - 8]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0xc], xmm1
push dword [ebp - 0xc]
movss dword [ebp - 0x54], xmm0
push dword [ebp - 0x54]
movss dword [ebp - 0x58], xmm1
push dword [ebp - 0x58]
push eax
call dword [ecx + 0x3c]
mov edx, dword [ebp - 0x50]
lea eax, [edi - 0xa]
movd xmm1, esi
movd xmm0, eax
cvtdq2ps xmm1, xmm1
mov eax, dword [edx + 4]
push 0
mov ecx, dword [eax]
subss xmm1, dword [0x5066d4]
push ecx
cvtdq2ps xmm0, xmm0
mov dword [esp], 0x3f800000
push dword [edx + 8]
movss dword [ebp - 0xc], xmm0
movss dword [ebp - 8], xmm1
push dword [ebp - 8]
movd xmm0, edi
push dword [ebp - 0xc]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0x54], xmm1
push dword [ebp - 0x54]
movss dword [ebp - 0x58], xmm0
push dword [ebp - 0x58]
push eax
call dword [ecx + 0x3c]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004c77a6
mov esp, ebp
pop ebp
ret 0x14
test edx, edx
je 0x45df45
mov eax, dword [esi + 0xc]
lea ecx, [ebp - 8]
push ecx
mov dword [ebp - 0x50], eax
mov dword [ebp - 8], 0xffffffff
push dword [eax]
call sub.gdiplus.dll_GdipGetSmoothingMode
mov ecx, eax
test ecx, ecx
je 0x45dcce
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0xc]
push 2
mov dword [ebp - 0x50], eax
push dword [eax]
call sub.gdiplus.dll_GdipSetSmoothingMode
mov ecx, eax
test ecx, ecx
je 0x45dce9
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov eax, dword [edi + 0x7c]
test eax, eax
je 0x45de4e
movss xmm1, dword [eax]
cvtps2pd xmm1, xmm1
comisd xmm1, xmmword [0x509718]
jb 0x45dd17
movsd xmm0, qword [0x509710]
comisd xmm0, xmm1
jae 0x45de4e
cmp dword [eax + 4], 0
movss xmm3, dword [eax + 8]
movss xmm4, dword [eax + 0xc]
je 0x45dd79
mov ecx, dword [ebp + 0x14]
xorps xmm2, xmm2
mov edx, dword [ebp + 0xc]
xorps xmm0, xmm0
mov eax, dword [ebp + 0x18]
cvtsi2ss xmm2, ecx
cvtsi2ss xmm0, edx
mulss xmm2, dword [0x5066d4]
addss xmm2, xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [ebp + 0x10]
addss xmm2, xmm3
movss dword [ebp - 0x5c], xmm2
xorps xmm2, xmm2
cvtsi2ss xmm2, eax
mulss xmm2, dword [0x5066d4]
addss xmm2, xmm0
addss xmm2, xmm4
movss dword [ebp - 0x54], xmm2
jmp 0x45dda3
movaps xmm1, xmm3
mulss xmm1, dword [ebp - 0x54]
addss xmm1, dword [0x5066d4]
movss dword [ebp - 0x5c], xmm1
movaps xmm1, xmm4
mulss xmm1, dword [ebp - 0x54]
addss xmm1, dword [0x5066d4]
movss dword [ebp - 0x54], xmm1
lea eax, [ebp - 0x50]
mov dword [ebp - 0x50], 0
push eax
call sub.gdiplus.dll_GdipCreateMatrix
mov eax, dword [edi + 0x7c]
mov ecx, dword [ebp - 0x50]
push 0
sub esp, 8
mov dword [ebp - 0x60], ecx
movss xmm0, dword [eax]
movss dword [ebp - 0x64], xmm0
movss xmm0, dword [ebp - 0x54]
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x5c]
movss dword [esp], xmm0
push ecx
call sub.gdiplus.dll_GdipTranslateMatrix
movss xmm0, dword [ebp - 0x64]
push 0
push ecx
movss dword [esp], xmm0
push dword [ebp - 0x60]
call sub.gdiplus.dll_GdipRotateMatrix
movss xmm1, dword [ebp - 0x54]
xorps xmm1, xmmword [0x508930]
push 0
sub esp, 8
movss dword [esp + 4], xmm1
movss xmm1, dword [ebp - 0x5c]
xorps xmm1, xmmword [0x508930]
movss dword [esp], xmm1
push dword [ebp - 0x60]
call sub.gdiplus.dll_GdipTranslateMatrix
mov eax, dword [esi + 0xc]
push dword [ebp - 0x60]
mov dword [ebp - 0x54], eax
push dword [eax]
call sub.gdiplus.dll_GdipSetWorldTransform
mov ecx, eax
test ecx, ecx
je 0x45de46
mov eax, dword [ebp - 0x54]
mov dword [eax + 4], ecx
push dword [ebp - 0x60]
call sub.gdiplus.dll_GdipDeleteMatrix
movd xmm0, dword [ebp + 0x10]
mov eax, dword [esi + 0xc]
cvtdq2ps xmm0, xmm0
push 0
sub esp, 8
mov dword [ebp - 0x50], eax
movss dword [esp + 4], xmm0
movd xmm0, dword [ebp + 0xc]
cvtdq2ps xmm0, xmm0
movss dword [esp], xmm0
push dword [eax]
call sub.gdiplus.dll_GdipTranslateWorldTransform
mov ecx, eax
test ecx, ecx
je 0x45de87
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov edx, dword [edi + 0x68]
test edx, edx
jle 0x45defc
cmp dword [edi + 0x6c], 0
jle 0x45defc
mov ecx, dword [ebp + 0x14]
test ecx, ecx
jle 0x45defc
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x45defc
cmp edx, ecx
jne 0x45deab
cmp dword [edi + 0x6c], eax
je 0x45defc
movd xmm0, dword [edi + 0x6c]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
push 0
sub esp, 8
mov edx, dword [esi + 0xc]
mov eax, edx
mov dword [ebp - 0x50], edx
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movd xmm0, dword [edi + 0x68]
movss dword [esp + 4], xmm1
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [esp], xmm1
push dword [eax]
call sub.gdiplus.dll_GdipScaleWorldTransform
mov ecx, eax
test ecx, ecx
je 0x45defc
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov eax, dword [edi + 0x50]
mov edi, dword [edi + 0x4c]
mov dword [ebp - 0x50], eax
cmp edi, eax
je 0x45df20
nop dword [eax]
mov ecx, dword [edi]
push esi
mov eax, dword [ecx]
call dword [eax + 8]
add edi, 4
cmp edi, dword [ebp - 0x50]
jne 0x45df10
mov edi, dword [esi + 0xc]
push dword [ebp - 8]
push dword [edi]
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x45df34
mov dword [edi + 4], eax
mov edi, dword [esi + 0xc]
push dword [edi]
call sub.gdiplus.dll_GdipResetWorldTransform
test eax, eax
je 0x45df45
mov dword [edi + 4], eax
cmp dword [0x58db28], 0
je 0x45e034
mov ecx, dword [esi + 0x14]
push 0xff0000ff
call fcn.0043b100
mov eax, dword [esi + 0x10]
lea ecx, [ebp - 0x58]
push ecx
push 0
push ecx
mov dword [ebp - 0x58], 0
mov dword [esp], 0x3f800000
push dword [eax + 4]
call sub.gdiplus.dll_GdipCreatePen2
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov edx, dword [esi + 0xc]
push edi
mov dword [ebp - 0x54], eax
lea eax, [ecx + 0xa]
push eax
push edi
push ecx
push dword [ebp - 0x58]
mov dword [ebp - 0x50], edx
push dword [edx]
call sub.gdiplus.dll_GdipDrawLineI
mov ecx, eax
test ecx, ecx
je 0x45dfab
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0xc]
lea eax, [edi + 0xa]
push eax
mov eax, dword [ebp + 0xc]
push eax
push edi
push eax
push dword [ebp - 0x58]
mov dword [ebp - 0x50], ecx
push dword [ecx]
call sub.gdiplus.dll_GdipDrawLineI
mov ecx, eax
test ecx, ecx
je 0x45dfd1
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov ecx, dword [ebp + 0x14]
test ecx, ecx
jle 0x45e02c
mov eax, dword [ebp + 0x18]
test eax, eax
jle 0x45e02c
mov edx, dword [ebp + 0xc]
dec eax
add edi, eax
dec edx
add ecx, edx
mov edx, dword [esi + 0xc]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x50], edx
lea eax, [edi - 0xa]
push eax
push ecx
push edi
push ecx
push dword [ebp - 0x58]
push dword [edx]
call sub.gdiplus.dll_GdipDrawLineI
mov ecx, eax
test ecx, ecx
je 0x45e00e
mov eax, dword [ebp - 0x50]
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 8]
mov esi, dword [esi + 0xc]
push edi
lea eax, [ecx - 0xa]
push eax
push edi
push ecx
push dword [ebp - 0x58]
push dword [esi]
call sub.gdiplus.dll_GdipDrawLineI
test eax, eax
je 0x45e02c
mov dword [esi + 4], eax
push dword [ebp - 0x58]
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.004c77a6
mov esp, ebp
pop ebp
ret 0x14