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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x4d8
mov eax, dword [0x60f074]
xor eax, esp
mov dword [esp + 0x4d4], eax
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
push 0x61ac94
mov dword [esp + 0x28], esi
mov dword [esp + 0x30], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov al, byte [esi + 0x30]
mov byte [esp + 0x13], al
cmp al, 4
je 0x4ab793
test al, al
je 0x4ab793
lea eax, [esi + 0x50]
mov dword [esp + 0x70], 0
push eax
push 0
push 0
lea eax, [esp + 0x6c]
xorps xmm0, xmm0
push eax
push 0x86
push dword [edi + 0x10]
movaps xmmword [esp + 0x78], xmm0
push dword [esi + 0x78]
call dword [sym.imp.GDI32.dll_GetGlyphOutlineW]
mov dword [esp + 0x2c], eax
cmp eax, 0xffffffff
je 0x4abce5
test eax, eax
je 0x4abce5
lea ecx, [esp + 0xd4]
mov dword [esp + 0xd0], ecx
cmp eax, 0x400
ja 0x4ab6fb
mov eax, ecx
mov dword [esp + 0x14], eax
lea ecx, [esi + 0x50]
mov dword [esp + 0xd0], eax
push ecx
push eax
push dword [esp + 0x34]
lea eax, [esp + 0x6c]
push eax
push 0x86
push dword [edi + 0x10]
push dword [esi + 0x78]
call dword [sym.imp.GDI32.dll_GetGlyphOutlineW]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
add ecx, 3
mov esi, dword [edi]
and ecx, 0xfffffffc
sub edx, 1
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
js 0x4ab767
mov eax, edx
imul eax, ecx
add eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
nop dword [eax]
xor ecx, ecx
cmp dword [esp + 0x60], ecx
jbe 0x4ab722
mov edx, eax
sub edx, esi
nop dword [eax]
mov al, byte [edx + esi]
cmp al, 0x3f
jbe 0x4ab715
or al, 0xff
jmp 0x4ab718
push eax
call fcn.005768de
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
je 0x4abd06
jmp 0x4ab689
shl al, 2
mov byte [esi], al
inc ecx
inc esi
cmp ecx, dword [esp + 0x60]
jb 0x4ab6f0
mov ecx, edi
call fcn.004aaac0
movzx ecx, word [edi + 0x14]
sub eax, ecx
push eax
push 0
push esi
call fcn.0056f6e0
add esp, 0xc
mov ecx, edi
call fcn.004aaac0
movzx ecx, word [edi + 0x14]
mov edx, dword [esp + 0x20]
sub eax, ecx
add esi, eax
dec edx
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], eax
test edx, edx
jns 0x4ab6e0
mov eax, dword [esp + 0xd0]
lea ecx, [esp + 0xd4]
cmp eax, ecx
je 0x4abce5
test eax, eax
je 0x4abce5
push eax
call fcn.005725ba
add esp, 4
jmp 0x4abce5
push 0
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov cl, byte [esp + 0x13]
mov edx, eax
movzx esi, word [edi + 0x14]
mov dword [esp + 0x30], edx
mov dword [esp + 0x20], 0
test cl, cl
jne 0x4ab7bb
add esi, 0x1f
and esi, 0xffffffe0
mov dword [esp + 0xac], 0
xorps xmm0, xmm0
movlpd qword [esp + 0x94], xmm0
movlpd qword [esp + 0x9c], xmm0
movlpd qword [esp + 0xa4], xmm0
test cl, cl
jne 0x4ab80e
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], 0xffffff
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xac], eax
movzx eax, word [edi + 0x16]
test cl, cl
mov dword [esp + 0x88], eax
mov eax, 1
mov dword [esp + 0x28], eax
mov word [esp + 0x8c], ax
mov eax, 0x20
cmove eax, dword [esp + 0x28]
mov word [esp + 0x8e], ax
mov eax, dword [esp + 0xa0]
push 0
mov dword [esp + 0x2c], 2
cmove eax, dword [esp + 0x2c]
push 0
mov dword [esp + 0xa8], eax
lea eax, [esp + 0x28]
push eax
push 0
lea eax, [esp + 0x90]
mov dword [esp + 0x90], 0x28
push eax
push edx
mov dword [esp + 0x9c], esi
mov dword [esp + 0xa8], 0
call dword [sym.imp.GDI32.dll_CreateDIBSection]
push eax
push dword [esp + 0x34]
mov dword [esp + 0x44], eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov cl, byte [esp + 0x13]
test cl, cl
jne 0x4ab8ac
shr esi, 3
jmp 0x4ab8b3
movzx esi, word [edi + 0x14]
shl esi, 2
movzx eax, word [edi + 0x16]
xor edx, edx
imul eax, esi
test cl, cl
mov dword [esp + 0x1c], esi
push eax
mov eax, 0xff
cmove eax, edx
push eax
push dword [esp + 0x28]
call fcn.0056f6e0
mov esi, dword [esp + 0x3c]
add esp, 0xc
push 2
push esi
call dword [sym.imp.GDI32.dll_SetGraphicsMode]
push 1
push esi
call dword [sym.imp.GDI32.dll_SetBkMode]
push 0x18
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov esi, dword [esp + 0x24]
movsx eax, word [edi + 0x1a]
neg eax
movups xmm0, xmmword [esi + 0x60]
movups xmmword [esp + 0xb0], xmm0
movq xmm0, qword [esi + 0x70]
movq qword [esp + 0xc0], xmm0
movd xmm0, eax
movsx eax, word [edi + 0x18]
cvtdq2ps xmm0, xmm0
neg eax
movss dword [esp + 0xc0], xmm0
movd xmm0, eax
lea eax, [esp + 0xb0]
cvtdq2ps xmm0, xmm0
push eax
push dword [esp + 0x34]
movss dword [esp + 0xcc], xmm0
call dword [sym.imp.GDI32.dll_SetWorldTransform]
push dword [esi + 0x80]
mov esi, dword [esp + 0x34]
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
xor eax, eax
mov ecx, 0xffffff
cmp byte [esp + 0x13], al
cmove eax, ecx
push eax
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
movzx eax, word [edi + 0x10]
push 0
push 1
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x3c]
push eax
push 0
push 0x10
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
call dword [sym.imp.GDI32.dll_GdiFlush]
movzx ecx, word [edi + 0x14]
mov dl, byte [edi + 0x1c]
mov eax, ecx
mov dword [esp + 0x24], ecx
test dl, dl
jne 0x4ab9b9
add eax, 7
shr eax, 3
jmp 0x4ab9df
cmp dl, 3
je 0x4ab9dc
cmp dl, 5
je 0x4ab9dc
cmp dl, 4
jne 0x4ab9d4
lea eax, [eax*2 + 2]
and eax, 0xfffffffc
jmp 0x4ab9df
add eax, 3
and eax, 0xfffffffc
jmp 0x4ab9df
shl eax, 2
movzx edx, word [edi + 0x16]
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x18], eax
mov dword [esp + 0x38], edx
lea edi, [edx - 1]
imul edi, eax
add edi, dword [esi]
cmp byte [esp + 0x13], 0
jne 0x4aba4b
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], 0
test edx, edx
je 0x4abcd1
push eax
push ecx
push edi
call fcn.0056ebe0
mov edx, dword [esp + 0x30]
add esp, 0xc
mov ecx, dword [esp + 0x14]
inc edx
movzx eax, word [esi + 0x16]
add ecx, dword [esp + 0x1c]
sub edi, dword [esp + 0x18]
cmp edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], edx
jl 0x4aba16
jmp 0x4abcd1
cmp dword [esp + 0x38], 0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], 0
jbe 0x4abcd1
xor esi, esi
test ecx, ecx
je 0x4abc5c
cmp ecx, 8
jb 0x4abc5c
lea eax, [ecx - 1]
lea eax, [edx + eax*4]
cmp edi, eax
ja 0x4aba91
lea eax, [ecx - 1]
lea eax, [edi + eax*2]
cmp eax, edx
jae 0x4abc5c
movaps xmm7, xmmword [0x5e32a0]
mov eax, ecx
movaps xmm5, xmmword [0x5e31e0]
mov ecx, 0x10
movaps xmm6, xmmword [0x5e3180]
and eax, 0xfffffff8
movd xmm1, ecx
mov ecx, 8
movups xmmword [esp + 0x40], xmm1
movd xmm2, ecx
movaps xmmword [esp + 0x50], xmm2
nop word [eax + eax]
movups xmm3, xmmword [edx + esi*4]
mov ecx, 8
movq xmm4, xmm7
movaps xmm0, xmm3
psrld xmm0, xmm1
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm5
pand xmm1, xmm0
movq xmm0, xmm2
psllw xmm1, xmm0
movq xmm0, qword [0x5e3270]
movq xmm2, xmm5
psubw xmm4, xmm1
movd xmm1, ecx
pand xmm4, xmm0
mov ecx, 3
movaps xmm0, xmm3
psrld xmm0, xmm1
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm5
pand xmm1, xmm0
movd xmm0, ecx
psubw xmm2, xmm1
movaps xmm1, xmm6
psllw xmm2, xmm0
movq xmm0, qword [0x5e3280]
por xmm4, xmm2
movq xmm2, xmm5
pand xmm4, xmm0
movaps xmm0, xmm6
pand xmm0, xmm3
psubd xmm1, xmm0
movd xmm0, ecx
psrld xmm1, xmm0
movups xmm3, xmmword [edx + esi*4 + 0x10]
mov ecx, 8
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
por xmm4, xmm0
movaps xmm0, xmm3
psrld xmm0, xmmword [esp + 0x40]
movq qword [edi + esi*2], xmm4
movq xmm4, xmm7
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm5
pand xmm1, xmm0
movq xmm0, qword [esp + 0x50]
psllw xmm1, xmm0
movq xmm0, qword [0x5e3270]
psubw xmm4, xmm1
movd xmm1, ecx
pand xmm4, xmm0
mov ecx, 3
movaps xmm0, xmm3
pand xmm3, xmm6
psrld xmm0, xmm1
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
movq xmm0, xmm5
pand xmm1, xmm0
movd xmm0, ecx
psubw xmm2, xmm1
movd xmm1, ecx
psllw xmm2, xmm0
movq xmm0, qword [0x5e3280]
por xmm4, xmm2
pand xmm4, xmm0
movaps xmm0, xmm6
psubd xmm0, xmm3
psrld xmm0, xmm1
pshuflw xmm0, xmm0, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movups xmm1, xmmword [esp + 0x40]
mov ecx, dword [esp + 0x24]
movaps xmm2, xmmword [esp + 0x50]
por xmm4, xmm0
movq qword [edi + esi*2 + 8], xmm4
add esi, 8
cmp esi, eax
jl 0x4abad0
cmp esi, ecx
jge 0x4abcac
mov ecx, dword [edx + esi*4]
mov eax, ecx
shr eax, 8
mov edx, 0xff
movzx eax, al
sub edx, eax
mov eax, ecx
shr eax, 0x10
shl eax, 8
shl edx, 3
not eax
and eax, 0xf81f
or edx, eax
movzx eax, cl
mov ecx, 0xff
and edx, 0xffe0
sub ecx, eax
shr ecx, 3
or edx, ecx
mov ecx, dword [esp + 0x24]
mov word [edi + esi*2], dx
inc esi
mov edx, dword [esp + 0x14]
cmp esi, ecx
jl 0x4abc60
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
add edx, dword [esp + 0x1c]
inc esi
sub edi, dword [esp + 0x18]
movzx eax, word [eax + 0x16]
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], esi
cmp esi, eax
jl 0x4aba66
push dword [esp + 0x30]
call dword [sym.imp.GDI32.dll_DeleteDC]
push dword [esp + 0x3c]
call dword [sym.imp.GDI32.dll_DeleteObject]
push 0x61ac94
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x4dc]
pop edi
pop esi
xor ecx, esp
call fcn.00550156
mov esp, ebp
pop ebp
ret 4
call fcn.004a5560
int3