Function at 0x10063170
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xe90
mov eax, dword [0x102d94c0]
xor eax, esp
mov dword [esp + 0xe8c], eax
mov eax, dword [esp + 0xe9c]
push esi
mov esi, dword [esp + 0xe98]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xea4]
push edi
mov edi, dword [esp + 0xeb0]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0xeb4]
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x20]
push edi
mov dword [esp + 0x24], esi
mov dword [esp + 0x4c], edi
mov dword [esp + 0x34], eax
call sym.project.dll_cairo_scaled_font_get_type
add esp, 4
cmp eax, 5
jne 0x10063702
push dword [esp + 0x24]
call fcn.1004e450
add esp, 4
test eax, eax
je 0x10063702
mov eax, dword [esp + 0xea0]
cmp eax, 1
je 0x100631ff
cmp eax, 2
jne 0x10063702
push esi
call fcn.100819b0
add esp, 4
test eax, eax
jne 0x10063229
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x10063220
push eax
push esi
call fcn.1007d0c0
add esp, 8
jmp 0x10063229
push esi
call fcn.1007d270
add esp, 4
push dword [esp + 0xeac]
lea ecx, [esp + 0x60]
mov dword [esp + 0x68], 0
call fcn.10062d20
mov eax, dword [esp + 0x68]
mov ecx, 0x7fffffff
mov edx, dword [esp + 0xeac]
mov esi, dword [esp + 0x70]
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x54], ecx
mov dword [esp + 0x44], eax
test edx, edx
jle 0x1006330d
mov eax, dword [esp + 0x2c]
mov edi, ecx
add eax, 0x10
mov dword [esp + 0x58], edx
mov dword [esp + 0x50], eax
xor esi, esi
nop word [eax + eax]
movsd xmm1, qword [eax - 8]
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
cvttsd2si eax, xmm1
comisd xmm0, xmm1
movd xmm0, esi
cvtdq2pd xmm0, xmm0
cmova ecx, eax
comisd xmm1, xmm0
movd xmm0, edi
cvtdq2pd xmm0, xmm0
cmova esi, eax
mov eax, dword [esp + 0x50]
movsd xmm1, qword [eax]
comisd xmm0, xmm1
cvttsd2si eax, xmm1
cmova edi, eax
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x44]
movd xmm0, edi
cvtdq2pd xmm0, xmm0
comisd xmm1, xmm0
cmova edi, eax
mov eax, dword [esp + 0x50]
add eax, 0x18
mov dword [esp + 0x44], edi
sub dword [esp + 0x58], 1
mov edi, dword [esp + 0x54]
mov dword [esp + 0x50], eax
jne 0x10063290
mov edi, dword [esp + 0x48]
mov eax, esi
mov dword [esp + 0x58], esi
movsd xmm2, qword [edi + 0x28]
movd xmm0, ecx
movaps xmm1, xmm2
cvtdq2pd xmm0, xmm0
movsd xmm3, qword [edi + 0x40]
addsd xmm1, xmm2
subsd xmm0, xmm2
xor edi, edi
cvttsd2si ecx, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mov dword [esp + 0x50], ecx
mov esi, dword [esp + 0x50]
test esi, esi
cmovs esi, edi
mov dword [esp + 0x50], esi
mov dword [esp + 8], esi
addsd xmm1, xmm0
movd xmm0, dword [esp + 0x54]
cvtdq2pd xmm0, xmm0
cvttsd2si eax, xmm1
subsd xmm0, xmm3
movaps xmm1, xmm3
addsd xmm1, xmm3
mov dword [esp + 0x58], eax
cvttsd2si ecx, xmm0
movd xmm0, dword [esp + 0x44]
cvtdq2pd xmm0, xmm0
test ecx, ecx
cmovs ecx, edi
mov dword [esp + 0x44], ecx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x20]
addsd xmm1, xmm0
mov edi, dword [ecx + 0x138]
mov ecx, dword [ecx + 0x134]
cvttsd2si eax, xmm1
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x1c], edi
cmp eax, edi
cmovg eax, edi
cmp ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x48]
cmovg ecx, dword [esp + 0x54]
cmp ecx, esi
jle 0x100636be
cmp eax, dword [esp + 0x44]
jle 0x100636be
cmp ecx, dword [esp + 0x54]
xorps xmm1, xmm1
movsd xmm0, qword [edi + 0x1d0]
cmovg ecx, dword [esp + 0x54]
cmp eax, dword [esp + 0x1c]
mov dword [esp + 0x78], 0
cmovg eax, dword [esp + 0x1c]
ucomisd xmm0, xmm1
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x10], ecx
mov eax, dword [eax + 0x20]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x74], 0
lahf
test ah, 0x44
jp 0x100634f1
movsd xmm0, qword [edi + 0x1c8]
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x100634f1
movsd xmm0, qword [edi + 0x1c0]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jp 0x100634f1
movsd xmm0, qword [edi + 0x1d8]
ucomisd xmm0, xmm3
lahf
test ah, 0x44
jp 0x100634f1
xor ecx, ecx
test edx, edx
jle 0x100634dd
movd xmm1, dword [esp + 0x44]
movd xmm2, dword [esp + 0x50]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x6c]
add edx, 8
cvtdq2pd xmm1, xmm1
cvtdq2pd xmm2, xmm2
nop word [eax + eax]
mov ax, word [edx - 8]
movaps xmm0, xmm1
mov esi, dword [esp + 0x34]
mov word [esi + ecx*2], ax
subsd xmm0, qword [edx + 8]
mov esi, dword [esp + 0x38]
cvtsd2ss xmm0, xmm0
movss dword [esi + ecx*8 + 4], xmm0
movsd xmm0, qword [edx]
add edx, 0x18
subsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
movss dword [esi + ecx*8], xmm0
inc ecx
mov dword [edi], 0
add edi, 4
cmp ecx, dword [esp + 0xeac]
jl 0x10063490
mov edi, dword [esp + 0x48]
movsd xmm0, qword [edi + 0x40]
cvtpd2ps xmm0, xmm0
movss dword [esp + 0x60], xmm0
jmp 0x100635ec
xor esi, esi
mov dword [esp + 0x3c], 1
test edx, edx
jle 0x100635e4
movd xmm1, dword [esp + 0x50]
lea edx, [edi + 0x1f0]
movd xmm2, dword [esp + 0x44]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x6c]
add edi, 0x10
cvtdq2pd xmm1, xmm1
mov dword [esp + 0x30], edx
mov dword [esp + 0x58], eax
cvtdq2pd xmm2, xmm2
movsd qword [esp + 0x4c], xmm1
movsd qword [esp + 0x40], xmm2
nop dword [eax]
mov ecx, dword [esp + 0x34]
mov ax, word [edi - 0x10]
mov word [ecx + esi*2], ax
lea eax, [esp + 0x18]
movsd xmm0, qword [edi - 8]
subsd xmm0, xmm1
push eax
lea eax, [esp + 0x2c]
push eax
push edx
addsd xmm0, qword [0x10235730]
movsd qword [esp + 0x34], xmm0
movsd xmm0, qword [edi]
subsd xmm0, xmm2
movsd qword [esp + 0x24], xmm0
call sym.project.dll_cairo_matrix_transform_point
movsd xmm0, qword [esp + 0x24]
add esp, 0xc
mov eax, dword [esp + 0x38]
add edi, 0x18
cvtpd2ps xmm0, xmm0
mov edx, dword [esp + 0x30]
movsd xmm1, qword [esp + 0x4c]
xorps xmm0, xmmword [0x102c6360]
movsd xmm2, qword [esp + 0x40]
movss dword [eax + esi*8 + 4], xmm0
movsd xmm0, qword [esp + 0x28]
cvtpd2ps xmm0, xmm0
movss dword [eax + esi*8], xmm0
inc esi
mov eax, dword [esp + 0x58]
mov dword [eax], 0
add eax, 4
mov dword [esp + 0x58], eax
cmp esi, dword [esp + 0xeac]
jl 0x10063540
mov edi, dword [esp + 0x48]
mov dword [esp + 0x60], 0x3f800000
movsd xmm0, qword [edi + 0x1c0]
cvtpd2ps xmm0, xmm0
mov edx, dword [esp + 0x24]
movzx ecx, byte [edx + 0x95]
movzx eax, byte [edx + 0x93]
movss dword [esp + 0xe7c], xmm0
movsd xmm0, qword [edi + 0x1c8]
cvtpd2ps xmm0, xmm0
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x91]
shl ecx, 8
or ecx, eax
lea eax, [esp + 8]
push eax
push edi
movss dword [esp + 0xe88], xmm0
lea eax, [esp + 0x64]
movsd xmm0, qword [edi + 0x1d0]
cvtpd2ps xmm0, xmm0
push ecx
push eax
xor ecx, ecx
lea eax, [esp + 0xe8c]
cmp dword [esp + 0x4c], ecx
cmove eax, ecx
movss dword [esp + 0xe94], xmm0
movsd xmm0, qword [edi + 0x1d8]
cvtpd2ps xmm0, xmm0
push eax
push dword [esp + 0x34]
movss dword [esp + 0xea0], xmm0
movsd xmm0, qword [edi + 0x1e0]
cvtpd2ps xmm0, xmm0
movss dword [esp + 0xea4], xmm0
movsd xmm0, qword [edi + 0x1e8]
cvtpd2ps xmm0, xmm0
movss dword [esp + 0xea8], xmm0
call fcn.10062ab0
mov esi, eax
add esp, 0x18
mov eax, dword [esp + 0x68]
jmp 0x100636c4
mov eax, dword [esp + 0x34]
xor esi, esi
cmp dword [esp + 0x64], 0x100
jbe 0x100636e9
push eax
call fcn.101f46ab
push dword [esp + 0x70]
call fcn.101f46ab
push dword [esp + 0x78]
call fcn.101f46ab
add esp, 0xc
pop edi
mov eax, esi
pop esi
mov ecx, dword [esp + 0xe8c]
xor ecx, esp
call fcn.101f469d
add esp, 0xe90
ret
mov ecx, dword [esp + 0xe94]
mov eax, 0x64
pop edi
pop esi
xor ecx, esp
call fcn.101f469d
add esp, 0xe90
ret