Function at 0x14049bba0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
movdqa xmmword [rsp + 0x50], xmm6
mov qword [rsp + 0x38], r9
mov rsi, qword [rdx + 0xa0]
movzx eax, word [rcx]
rol ax, 8
test ax, ax
je 0x14049bcdd
mov r15, r8
mov rbx, rdx
mov r14, rcx
movzx ecx, word [r8]
rol cx, 8
movzx edx, word [r8 + 2]
movzx ebp, cx
mov ecx, ebp
shr ecx, 1
and ecx, 0x5555
mov r8d, ebp
sub r8d, ecx
mov ecx, r8d
and ecx, 0x33333333
shr r8d, 2
and r8d, 0x33333333
add r8d, ecx
mov ecx, r8d
shr ecx, 4
add ecx, r8d
and ecx, 0xf0f0f0f
imul edi, ecx, 0x1010101
shr edi, 0x18
rol dx, 8
lea rcx, [r15 + 2]
mov qword [rsp + 0x48], rcx
movzx edx, dx
mov ecx, edx
shr ecx, 1
and ecx, 0x5555
mov dword [rsp + 0x44], edx
sub edx, ecx
mov ecx, edx
and ecx, 0x33333333
shr edx, 2
and edx, 0x33333333
add edx, ecx
mov ecx, edx
shr ecx, 4
add ecx, edx
and ecx, 0xf0f0f0f
imul ecx, ecx, 0x1010101
shr ecx, 0x18
add ecx, edi
add ecx, ecx
add ecx, 2
movzx edx, ax
lea rax, [r14 + 2]
mov r8d, dword [rsp + 0x38]
mov r9, qword [rsi + 0x68]
lea r12, [r8 + r8*4]
dec edx
mov r8d, dword [r9 + r12*4]
xor r9d, r9d
jmp 0x14049bcab
dec r10d
mov edx, r10d
cmp r9d, edx
jg 0x14049bcdd
lea r10d, [rdx + r9]
shr r10d, 1
mov r11, r10
imul r11, rcx
lea r13, [rax + r11]
movzx r11d, word [rax + r11]
rol r11w, 8
movzx r11d, r11w
cmp r11d, r8d
ja 0x14049bca0
je 0x14049bcee
inc r10d
mov r9d, r10d
cmp r9d, edx
jle 0x14049bcab
test byte [rsi + 0x18], 0x40
jne 0x14049c247
xor eax, eax
jmp 0x14049c231
cmp qword [rsi + 0xc0], 0
je 0x14049bd1b
mov rcx, rsi
mov r9d, dword [rsi + 0x54]
mov rdx, qword [rbx + 0x90]
mov rax, qword [rsp + 0x38]
mov dword [rsp + 0x20], eax
lea r8, str.try_kerning_glyphs_at__u__u
call fcn.140420f90
test ebp, ebp
je 0x14049bd7a
mov eax, dword [rsi + 0x54]
lea rax, [rax + rax*4]
shl rax, 2
add rax, qword [rsi + 0x78]
lea r9, [r13 + 2]
mov qword [rsp + 0x20], rax
mov rcx, r15
mov rdx, rbx
mov r8, r14
call fcn.14049b5b0
mov ebp, eax
cmp dword [rsp + 0x44], 0
je 0x14049bd83
shl r12, 2
add r12, qword [rsi + 0x78]
mov eax, edi
lea r9, [rax*2 + 2]
add r9, r13
mov qword [rsp + 0x20], r12
mov rcx, qword [rsp + 0x48]
mov rdx, rbx
mov r8, r14
call fcn.14049b5b0
jmp 0x14049bd85
xor ebp, ebp
cmp dword [rsp + 0x44], 0
jne 0x14049bd4e
xor eax, eax
mov rdi, qword [rsp + 0x38]
or bpl, al
cmp bpl, 1
jne 0x14049bdbf
mov rcx, qword [rbx + 0xa0]
cmp qword [rcx + 0xc0], 0
je 0x14049bdbf
mov r9d, dword [rcx + 0x54]
mov rdx, qword [rbx + 0x90]
mov dword [rsp + 0x20], edi
lea r8, str.kerned_glyphs_at__u__u
call fcn.140420f90
mov rcx, qword [rbx + 0xa0]
cmp qword [rcx + 0xc0], 0
je 0x14049bdeb
mov r9d, dword [rcx + 0x54]
mov rdx, qword [rbx + 0x90]
mov dword [rsp + 0x20], edi
lea r8, str.tried_kerning_glyphs_at__u__u
call fcn.140420f90
test bpl, bpl
je 0x14049c006
lea r9d, [rdi + 1]
mov eax, dword [rsi + 0x58]
cmp eax, r9d
cmovb r9d, eax
mov r8d, dword [rsi + 0x54]
mov eax, r9d
sub eax, r8d
cmp eax, 2
jb 0x14049c006
or byte [rsi + 0xb4], 0x20
mov rdx, qword [rsi + 0x68]
mov r10d, 0xffffffff
cmp r9d, r8d
je 0x14049bff1
cmp dword [rsi + 0x1c], 2
jne 0x14049bfd5
cmp r9d, r8d
jbe 0x14049bff1
mov eax, r9d
mov r11, rax
sub r11, r8
mov rcx, r8
cmp r11, 9
jb 0x14049bfae
mov ecx, r11d
and ecx, 7
mov r10d, 8
cmovne r10, rcx
sub r11, r10
mov rcx, r11
add rcx, r8
add r10, r8
sub r10, rax
lea r11, [r8 + r8*4]
lea r11, [rdx + r11*4]
add r11, 0x94
pcmpeqd xmm1, xmm1
movdqa xmm0, xmmword [0x140599730]
pcmpeqd xmm2, xmm2
nop word cs:[rax + rax]
movd xmm3, dword [r11 - 0x50]
movd xmm4, dword [r11 - 0x64]
punpckldq xmm4, xmm3
movd xmm3, dword [r11 - 0x78]
movd xmm5, dword [r11 - 0x8c]
punpckldq xmm5, xmm3
punpcklqdq xmm5, xmm4
movd xmm3, dword [r11]
movd xmm4, dword [r11 - 0x14]
punpckldq xmm4, xmm3
movd xmm3, dword [r11 - 0x28]
movd xmm6, dword [r11 - 0x3c]
punpckldq xmm6, xmm3
punpcklqdq xmm6, xmm4
movdqa xmm3, xmm1
movdqa xmm4, xmm5
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm4, xmm1
pand xmm3, xmm4
pandn xmm4, xmm5
movdqa xmm1, xmm4
por xmm1, xmm3
movdqa xmm3, xmm2
movdqa xmm4, xmm6
pxor xmm4, xmm0
pxor xmm2, xmm0
pcmpgtd xmm4, xmm2
pand xmm3, xmm4
pandn xmm4, xmm6
movdqa xmm2, xmm4
por xmm2, xmm3
add r11, 0xa0
add r10, 8
jne 0x14049bea0
movdqa xmm3, xmm1
pxor xmm3, xmm0
movdqa xmm4, xmm2
pxor xmm4, xmm0
pcmpgtd xmm4, xmm3
pand xmm1, xmm4
pandn xmm4, xmm2
por xmm4, xmm1
pshufd xmm1, xmm4, 0xee
movdqa xmm2, xmm4
pxor xmm2, xmm0
movdqa xmm3, xmm1
pxor xmm3, xmm0
pcmpgtd xmm3, xmm2
pand xmm4, xmm3
pandn xmm3, xmm1
por xmm3, xmm4
pshufd xmm1, xmm3, 0x55
movdqa xmm2, xmm3
pxor xmm2, xmm0
pxor xmm0, xmm1
pcmpgtd xmm0, xmm2
pand xmm3, xmm0
pandn xmm0, xmm1
por xmm0, xmm3
movd r10d, xmm0
sub rax, rcx
lea rcx, [rcx + rcx*4]
lea rcx, [rdx + rcx*4]
add rcx, 8
nop dword [rax]
mov r11d, dword [rcx]
cmp r10d, r11d
cmovae r10d, r11d
add rcx, 0x14
dec rax
jne 0x14049bfc0
jmp 0x14049bff1
lea eax, [r9 - 1]
lea rax, [rax + rax*4]
lea rcx, [r8 + r8*4]
mov ecx, dword [rdx + rcx*4 + 8]
mov r10d, dword [rdx + rax*4 + 8]
cmp ecx, r10d
cmovb r10d, ecx
mov dword [rsp + 0x20], r10d
mov dword [rsp + 0x28], 3
mov rcx, rsi
call fcn.14034bed0
cmp dword [rsp + 0x44], 0
je 0x14049c1f5
lea ebx, [rdi + 1]
add edi, 2
mov eax, dword [rsi + 0x58]
cmp eax, edi
cmovb edi, eax
mov r8d, dword [rsi + 0x54]
mov eax, edi
sub eax, r8d
cmp eax, 2
jb 0x14049c22c
or byte [rsi + 0xb4], 0x20
mov rdx, qword [rsi + 0x68]
mov r9d, 0xffffffff
cmp edi, r8d
je 0x14049c214
cmp dword [rsi + 0x1c], 2
jne 0x14049c1f9
cmp edi, r8d
jbe 0x14049c214
mov eax, edi
mov r10, rax
sub r10, r8
mov rcx, r8
cmp r10, 9
jb 0x14049c1ce
mov ecx, r10d
and ecx, 7
mov r9d, 8
cmovne r9, rcx
sub r10, r9
mov rcx, r10
add rcx, r8
add r9, r8
sub r9, rax
lea r10, [r8 + r8*4]
lea r10, [rdx + r10*4]
add r10, 0x94
pcmpeqd xmm1, xmm1
movdqa xmm0, xmmword [0x140599730]
pcmpeqd xmm2, xmm2
nop word cs:[rax + rax]
movd xmm3, dword [r10 - 0x50]
movd xmm4, dword [r10 - 0x64]
punpckldq xmm4, xmm3
movd xmm3, dword [r10 - 0x78]
movd xmm5, dword [r10 - 0x8c]
punpckldq xmm5, xmm3
punpcklqdq xmm5, xmm4
movd xmm3, dword [r10]
movd xmm4, dword [r10 - 0x14]
punpckldq xmm4, xmm3
movd xmm3, dword [r10 - 0x28]
movd xmm6, dword [r10 - 0x3c]
punpckldq xmm6, xmm3
punpcklqdq xmm6, xmm4
movdqa xmm3, xmm1
movdqa xmm4, xmm5
pxor xmm4, xmm0
pxor xmm1, xmm0
pcmpgtd xmm4, xmm1
pand xmm3, xmm4
pandn xmm4, xmm5
movdqa xmm1, xmm4
por xmm1, xmm3
movdqa xmm3, xmm2
movdqa xmm4, xmm6
pxor xmm4, xmm0
pxor xmm2, xmm0
pcmpgtd xmm4, xmm2
pand xmm3, xmm4
pandn xmm4, xmm6
movdqa xmm2, xmm4
por xmm2, xmm3
add r10, 0xa0
add r9, 8
jne 0x14049c0c0
movdqa xmm3, xmm1
pxor xmm3, xmm0
movdqa xmm4, xmm2
pxor xmm4, xmm0
pcmpgtd xmm4, xmm3
pand xmm1, xmm4
pandn xmm4, xmm2
por xmm4, xmm1
pshufd xmm1, xmm4, 0xee
movdqa xmm2, xmm4
pxor xmm2, xmm0
movdqa xmm3, xmm1
pxor xmm3, xmm0
pcmpgtd xmm3, xmm2
pand xmm4, xmm3
pandn xmm3, xmm1
por xmm3, xmm4
pshufd xmm1, xmm3, 0x55
movdqa xmm2, xmm3
pxor xmm2, xmm0
pxor xmm0, xmm1
pcmpgtd xmm0, xmm2
pand xmm3, xmm0
pandn xmm0, xmm1
por xmm0, xmm3
movd r9d, xmm0
sub rax, rcx
lea rcx, [rcx + rcx*4]
lea rcx, [rdx + rcx*4]
add rcx, 8
nop dword [rax]
mov r10d, dword [rcx]
cmp r9d, r10d
cmovae r9d, r10d
add rcx, 0x14
dec rax
jne 0x14049c1e0
jmp 0x14049c214
mov ebx, edi
jmp 0x14049c22c
lea eax, [rdi - 1]
lea rax, [rax + rax*4]
lea rcx, [r8 + r8*4]
mov ecx, dword [rdx + rcx*4 + 8]
mov r9d, dword [rdx + rax*4 + 8]
cmp ecx, r9d
cmovb r9d, ecx
mov dword [rsp + 0x20], r9d
mov dword [rsp + 0x28], 3
mov rcx, rsi
mov r9d, edi
call fcn.14034bed0
mov dword [rsi + 0x54], ebx
mov al, 1
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r8d, dword [rsi + 0x54]
mov r9, qword [rsp + 0x38]
inc r9d
mov byte [rsp + 0x28], 0
mov byte [rsp + 0x20], 1
mov rcx, rsi
mov edx, 2
call fcn.140487aa0
jmp 0x14049bce7