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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
sub esp, 0xf4
mov eax, dword [0x58a06c]
xor eax, esp
mov dword [esp + 0xf0], eax
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, ecx
mov dword [esp + 0x50], ebx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x40], edi
cmp dword [esi + 0x8c], 0
je 0x4f3836
mov eax, dword [esi]
call dword [eax + 0x2c]
mov eax, dword [edi + 0xc4]
movsd xmm1, qword [0x56d358]
movsd qword [0x58af08], xmm1
movups xmm0, xmmword [0x58af08]
mov dword [0x58af28], 0x54e450
mov dword [esp + 0x34], eax
movups xmmword [0x58af30], xmm0
mov dword [esp + 0x38], 0
movups xmm0, xmmword [0x58af18]
movups xmmword [0x58af40], xmm0
movq xmm0, qword [0x58af28]
movq qword [0x58af50], xmm0
mov eax, dword [ebx + 0x24]
movsd xmm0, qword [eax]
movaps xmm2, xmm0
movsd qword [esp + 0x48], xmm0
mulsd xmm2, xmm1
movsd xmm1, qword [0x56d3c0]
comisd xmm2, xmm1
movsd qword [0x58af08], xmm2
jbe 0x4f2fd3
movaps xmm2, xmm1
mov eax, 0x9c4
movsd qword [0x58af08], xmm2
jmp 0x4f2fdf
mulsd xmm0, qword [0x56d3d0]
cvttsd2si eax, xmm0
push str.Microsoft_YaHei
push 0
push 1
push 0
push 0
mov dword [esp + 0x74], eax
mov eax, dword [esi + 0x88]
push 0x86
mov dword [esp + 0x40], eax
movzx eax, byte [0x58af26]
push eax
movzx eax, byte [0x58af25]
push eax
movzx eax, byte [0x58af24]
push eax
cvttsd2si eax, qword [0x58af10]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x88], 0
push dword [0x58af1c]
push 0
push 0
push eax
cvttsd2si eax, xmm2
push eax
call dword [sym.imp.GDI32.dll_CreateFontW]
mov edi, dword [0x53e094]
mov dword [esp + 0x24], eax
test eax, eax
je 0x4f30ac
push eax
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x30], eax
test eax, eax
je 0x4f30a6
cmp dword [esp + 0x60], 0
mov ecx, 0x410
push 0
mov eax, 0x400
cmovg eax, ecx
push eax
lea eax, [esp + 0x60]
push eax
push 0xffffffffffffffff
push dword [esp + 0x38]
push dword [ebx]
call dword [sym.imp.USER32.dll_DrawTextExW]
push dword [esp + 0x30]
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x24]
call edi
cmp dword [esi + 0x9c], 0
je 0x4f317c
push dword [0x58af50]
movsd xmm1, qword [0x58af08]
push 0
movaps xmm0, xmm1
mulsd xmm0, qword [0x56d280]
push 1
push 0
push 0
push 0x86
subsd xmm1, xmm0
movsd qword [0x58af30], xmm1
mov eax, dword [esi + 0x98]
mov dword [esp + 0x50], eax
movzx eax, byte [0x58af4e]
push eax
movzx eax, byte [0x58af4d]
push eax
movzx eax, byte [0x58af4c]
push eax
cvttsd2si eax, qword [0x58af38]
push dword [0x58af44]
push 0
push 0
push eax
cvttsd2si eax, xmm1
push eax
call dword [sym.imp.GDI32.dll_CreateFontW]
mov dword [esp + 0x24], eax
test eax, eax
je 0x4f3170
push eax
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x28], eax
test eax, eax
je 0x4f316a
push 0
push 0x400
lea eax, [esp + 0x70]
push eax
push 0xffffffffffffffff
push dword [esp + 0x48]
push dword [ebx]
call dword [sym.imp.USER32.dll_DrawTextExW]
push dword [esp + 0x28]
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x24]
call edi
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x38], eax
push dword [0x58af50]
movzx eax, byte [0x58af4e]
push 0
push 1
push 0
push 0
push 0x86
push eax
movzx eax, byte [0x58af4d]
push eax
movzx eax, byte [0x58af4c]
push eax
cvttsd2si eax, qword [0x58af38]
push dword [0x58af44]
push 0
push 0
push eax
cvttsd2si eax, qword [0x58af30]
push eax
call dword [sym.imp.GDI32.dll_CreateFontW]
mov dword [esp + 0x24], eax
test eax, eax
je 0x4f321d
push eax
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x28], eax
test eax, eax
je 0x4f3217
cmp dword [esp + 0x70], 0
mov ecx, 0x410
push 0
mov eax, 0x400
cmovg eax, ecx
push eax
lea eax, [esp + 0x70]
push eax
push 0xffffffffffffffff
push 0x56cedc
push dword [ebx]
call dword [sym.imp.USER32.dll_DrawTextExW]
push dword [esp + 0x28]
push dword [ebx]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x24]
call edi
mov edx, dword [esp + 0x70]
xorps xmm5, xmm5
sub edx, dword [esp + 0x68]
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
cmp eax, edx
movsd xmm6, qword [0x56d348]
cmovge edx, eax
sub edi, dword [esp + 0x5c]
add edi, dword [esp + 0x38]
mov eax, dword [ebx + 0x24]
movd xmm4, edx
movd xmm0, edi
movsd xmm1, qword [eax]
cvtdq2pd xmm4, xmm4
mov byte [esi + 0x40], 1
cvtdq2pd xmm0, xmm0
divsd xmm6, xmm1
divsd xmm4, xmm1
divsd xmm0, xmm1
movsd xmm1, qword [0x56d2a0]
addsd xmm4, xmm6
addsd xmm0, xmm6
movsd qword [esi + 0x30], xmm4
movsd qword [esi + 0x38], xmm0
cmp byte [esi + 0xde], 0
jne 0x4f3323
mov eax, dword [esi + 0xc8]
xorps xmm3, xmm3
xorps xmm2, xmm2
cmp eax, 7
ja case.default.0x4f32a8
jmp dword [eax*4 + 0x4f3850]
movsd xmm3, qword [esi + 0xb8]
movsd xmm2, qword [esi + 0xc0]
jmp case.default.0x4f32a8
movsd xmm3, qword [esi + 0xb8]
jmp 0x4f3309
mulsd xmm4, xmm1
jmp case.0x4f32a8.1
movsd xmm3, qword [esi + 0xb8]
mulsd xmm0, xmm1
jmp 0x4f3309
mulsd xmm4, xmm1
movsd xmm3, qword [esi + 0xb8]
movsd xmm2, qword [esi + 0xc0]
subsd xmm3, xmm4
jmp case.default.0x4f32a8
mulsd xmm0, xmm1
movsd xmm3, qword [esi + 0xb8]
subsd xmm3, xmm4
movsd xmm2, qword [esi + 0xc0]
subsd xmm2, xmm0
movsd qword [esi + 0x20], xmm3
movsd qword [esi + 0x28], xmm2
mov byte [esi + 0x40], 1
cmp byte [esi + 0xdc], 0
je 0x4f3836
mov eax, dword [ebx + 0x24]
mulsd xmm6, xmm1
movd xmm0, dword [eax + 8]
cvtdq2pd xmm0, xmm0
movaps xmm2, xmm6
addsd xmm2, qword [esi + 0x20]
mulsd xmm2, qword [eax]
addsd xmm2, xmm0
comisd xmm5, xmm2
jbe 0x4f335c
subsd xmm2, xmm1
jmp 0x4f3360
addsd xmm2, xmm1
movsd xmm0, qword [esi + 0x38]
addsd xmm0, qword [esi + 0x28]
cvttsd2si ecx, xmm2
subsd xmm0, xmm6
mov dword [esp + 0x58], ecx
movd xmm2, dword [eax + 0xc]
cvtdq2pd xmm2, xmm2
mulsd xmm0, qword [eax]
subsd xmm2, xmm0
comisd xmm5, xmm2
jbe 0x4f3393
subsd xmm2, xmm1
jmp 0x4f3397
addsd xmm2, xmm1
mov eax, dword [esp + 0x58]
cvttsd2si ecx, xmm2
add eax, edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], ecx
lea eax, [ecx + edi]
add dword [esp + 0x64], eax
cmp byte [esi + 0xdd], 0
je 0x4f3407
movsd xmm0, qword [esp + 0x48]
mov dl, 0xfa
mov ecx, dword [esp + 0x34]
mulsd xmm0, xmm1
mov eax, dword [ecx + 0xe4]
mov ecx, dword [ecx + 0xf8]
comisd xmm5, xmm0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], ecx
jbe 0x4f33e9
subsd xmm0, xmm1
jmp 0x4f33ed
addsd xmm0, xmm1
cvttsd2si edi, xmm0
mov byte [esp + 0x30], dl
mov dword [esp + 0x24], edi
test edi, edi
jg 0x4f3424
mov byte [esp + 0x30], dl
mov dword [esp + 0x28], ecx
jmp 0x4f341a
mov eax, dword [esp + 0x34]
mov byte [esp + 0x30], 0xc8
mov eax, dword [eax + 0xf4]
mov dword [esp + 0x28], eax
xor edi, edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], edi
mov ecx, dword [esp + 0x40]
lea eax, [esi + 0x18]
push eax
mov eax, dword [ecx]
call dword [eax]
mov ecx, eax
call fcn.004f03e0
test al, al
je 0x4f3581
mov eax, dword [ebx + 0x24]
xorps xmm3, xmm3
movsd xmm6, qword [esi + 0x28]
movd xmm4, dword [eax + 0xc]
movsd xmm1, qword [eax]
cvtdq2pd xmm4, xmm4
movaps xmm0, xmm1
mulsd xmm0, xmm6
movaps xmm5, xmm4
subsd xmm5, xmm0
movsd xmm0, qword [0x56d2a0]
comisd xmm3, xmm5
jbe 0x4f3479
subsd xmm5, xmm0
jmp 0x4f347d
addsd xmm5, xmm0
movd xmm2, dword [eax + 8]
movsd xmm7, qword [esi + 0x20]
cvtdq2pd xmm2, xmm2
movsd qword [esp + 0x40], xmm2
movaps xmm2, xmm7
addsd xmm2, qword [esi + 0x30]
mulsd xmm2, xmm1
addsd xmm2, qword [esp + 0x40]
comisd xmm3, xmm2
jbe 0x4f34af
subsd xmm2, xmm0
jmp 0x4f34b3
addsd xmm2, xmm0
addsd xmm6, qword [esi + 0x38]
mulsd xmm6, xmm1
subsd xmm4, xmm6
comisd xmm3, xmm4
jbe 0x4f34cc
subsd xmm4, xmm0
jmp 0x4f34d0
addsd xmm4, xmm0
movd xmm6, dword [eax + 8]
cvtdq2pd xmm6, xmm6
mulsd xmm1, xmm7
addsd xmm1, xmm6
comisd xmm3, xmm1
jbe 0x4f34ed
subsd xmm1, xmm0
jmp 0x4f34f1
addsd xmm1, xmm0
push dword [esp + 0x30]
cvttsd2si eax, xmm5
mov ecx, ebx
push dword [esp + 0x2c]
push 1
push dword [esp + 0x38]
push edi
push 0xa
push eax
cvttsd2si eax, xmm2
push eax
cvttsd2si eax, xmm4
push eax
cvttsd2si eax, xmm1
push eax
call fcn.004e7fe0
cmp dword [esi + 0x9c], 0
je 0x4f354d
push 0x8000
push ecx
lea eax, [esp + 0x60]
mov dword [0x58af48], 0xfa8216
push eax
push dword [esi + 0x98]
mov ecx, ebx
push 0x58af30
call fcn.004e8e90
mov eax, dword [esp + 0x34]
push 0x118
push ecx
mov ecx, ebx
mov eax, dword [eax + 0xfc]
mov dword [0x58af20], eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x64], eax
lea eax, [esp + 0x60]
push eax
push dword [esi + 0x88]
push 0x58af08
call fcn.004e8e90
cmp byte [esi + 0xde], 0
je 0x4f36ff
movsd xmm4, qword [esi + 0x20]
lea ebx, [esp + 0x78]
movsd xmm1, qword [esi + 0x30]
movaps xmm3, xmm4
movsd xmm2, qword [esi + 0x38]
addsd xmm3, xmm1
movsd xmm5, qword [esi + 0x28]
movaps xmm0, xmm2
mulsd xmm1, qword [0x56d2a0]
addsd xmm0, xmm5
xor edi, edi
mulsd xmm2, qword [0x56d2a0]
movsd qword [esp + 0x78], xmm4
addsd xmm1, xmm4
movsd qword [esp + 0x90], xmm0
movsd qword [esp + 0xa0], xmm0
addsd xmm2, xmm5
movsd qword [esp + 0xc0], xmm0
xorps xmm0, xmm0
movsd qword [esp + 0x80], xmm5
movsd qword [esp + 0x88], xmm3
movsd qword [esp + 0x98], xmm4
movsd qword [esp + 0xa8], xmm3
movsd qword [esp + 0xb0], xmm5
movsd qword [esp + 0xb8], xmm1
movsd qword [esp + 0xc8], xmm4
movsd qword [esp + 0xd0], xmm2
movsd qword [esp + 0xd8], xmm1
movsd qword [esp + 0xe0], xmm5
movsd qword [esp + 0xe8], xmm3
movsd qword [esp + 0xf0], xmm2
movsd qword [esp + 0x40], xmm0
movsd xmm0, qword [esi + 0xa8]
subsd xmm0, qword [ebx]
movsd xmm1, qword [0x56d2f8]
call fcn.0052b890
movsd xmm1, qword [0x56d2f8]
movsd qword [esp + 0x38], xmm0
movsd xmm0, qword [esi + 0xb0]
subsd xmm0, qword [ebx + 8]
call fcn.0052b890
addsd xmm0, qword [esp + 0x38]
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x4f36b2
sqrtsd xmm0, xmm0
jmp 0x4f36b7
call fcn.0052c5b0
call fcn.004eb570
movsd xmm1, qword [esp + 0x40]
cvttsd2si eax, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
comisd xmm1, xmm0
ja 0x4f36d8
test edi, edi
jne 0x4f36ee
movsd qword [esp + 0x40], xmm0
movups xmm0, xmmword [ebx]
mov dword [esi + 0xc8], edi
movups xmmword [esi + 0xb8], xmm0
inc edi
add ebx, 0x10
cmp edi, 8
jb 0x4f3664
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x24]
xorps xmm6, xmm6
test edi, edi
jne 0x4f3734
movsd xmm1, qword [esp + 0x48]
mulsd xmm1, qword [0x56d288]
comisd xmm6, xmm1
jbe 0x4f3728
subsd xmm1, qword [0x56d2a0]
jmp 0x4f3730
addsd xmm1, qword [0x56d2a0]
cvttsd2si edi, xmm1
mov eax, dword [ebx + 0x24]
movsd xmm1, qword [0x56d2a0]
movd xmm4, dword [eax + 0xc]
movsd xmm2, qword [eax]
cvtdq2pd xmm4, xmm4
movaps xmm0, xmm2
mulsd xmm0, qword [esi + 0xc0]
movaps xmm5, xmm4
subsd xmm5, xmm0
comisd xmm6, xmm5
jbe 0x4f376a
subsd xmm5, xmm1
jmp 0x4f376e
addsd xmm5, xmm1
movd xmm7, dword [eax + 8]
movaps xmm3, xmm2
mulsd xmm3, qword [esi + 0xb8]
cvtdq2pd xmm7, xmm7
addsd xmm3, xmm7
comisd xmm6, xmm3
jbe 0x4f3792
subsd xmm3, xmm1
jmp 0x4f3796
addsd xmm3, xmm1
movaps xmm0, xmm2
mulsd xmm0, qword [esi + 0xb0]
subsd xmm4, xmm0
comisd xmm6, xmm4
jbe 0x4f37b1
subsd xmm4, xmm1
jmp 0x4f37b5
addsd xmm4, xmm1
mulsd xmm2, qword [esi + 0xa8]
addsd xmm2, xmm7
comisd xmm6, xmm2
jbe 0x4f37cd
subsd xmm2, xmm1
jmp 0x4f37d1
addsd xmm2, xmm1
push ecx
cvttsd2si eax, xmm5
push edi
mov ecx, ebx
push dword [esp + 0x34]
push eax
cvttsd2si eax, xmm3
push eax
cvttsd2si eax, xmm4
push eax
cvttsd2si eax, xmm2
push eax
call fcn.004e7c40
mov eax, dword [ebx + 0x24]
xorps xmm0, xmm0
movsd qword [esp + 0x48], xmm0
sub esp, 8
movd xmm0, edi
cvtdq2pd xmm0, xmm0
divsd xmm0, qword [eax]
lea eax, [esp + 0x50]
movsd qword [esp], xmm0
push 0x96
push ecx
push dword [esp + 0x3c]
mov ecx, ebx
push eax
lea eax, [esi + 0xa8]
push eax
call fcn.004e8580
mov byte [esi + 0xde], 0
mov ecx, dword [esp + 0xfc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.005000f2
mov esp, ebp
pop ebp
ret 0x10