Function at 0x450df1
Capabilities:
Encode data using xor

Disassembly:
push 0x28
mov eax, 0x4ba342
call fcn.004b69f6
mov edi, ecx
mov dword [ebp - 0x20], edi
mov ebx, dword [ebp + 0x18]
xor edx, edx
mov byte [edi + 0x10], dl
mov eax, dword [edi]
mov esi, dword [edi + 4]
sub esi, eax
sar esi, 3
mov dword [ebp - 0x14], esi
cmp eax, dword [edi + 4]
je 0x450ee4
cmp ebx, 0x1e
jae 0x450ee4
mov ecx, dword [ebp + 0x14]
movsx eax, byte [ecx]
shl eax, 7
test ebx, ebx
je 0x450e4f
mov edi, ecx
movsx ecx, byte [edx + edi]
imul eax, eax, 0xf4243
xor eax, ecx
inc edx
cmp edx, ebx
jb 0x450e38
mov edi, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x14]
imul eax, eax, 0xf4243
xor edx, edx
xor eax, ebx
imul eax, eax, 0xf4243
xor eax, dword [ebp + 0x10]
mov dword [ebp - 0x1c], eax
div esi
mov eax, dword [edi]
mov esi, edx
mov dword [ebp - 0x14], esi
lea edx, [eax + esi*8]
movzx eax, byte [edx]
cmp eax, dword [ebp + 0x10]
jne 0x450e87
push dword [ebp + 0x1c]
push ebx
push ecx
mov ecx, edx
call fcn.00450d4a
jmp 0x450e89
xor eax, eax
test al, al
jne 0x451063
imul eax, dword [ebp - 0x1c], 0x25
xor edx, edx
mov esi, dword [edi]
mov ecx, dword [edi + 4]
sub ecx, esi
sar ecx, 3
div ecx
mov dword [ebp - 0x1c], edx
lea ecx, [esi + edx*8]
movzx eax, byte [ecx]
cmp eax, dword [ebp + 0x10]
jne 0x450ec2
push dword [ebp + 0x1c]
push ebx
push dword [ebp + 0x14]
call fcn.00450d4a
mov edx, dword [ebp - 0x1c]
jmp 0x450ec4
xor eax, eax
test al, al
jne 0x451063
mov ecx, dword [edi]
mov esi, dword [ebp - 0x14]
mov ax, word [ecx + esi*8 + 2]
cmp ax, word [ecx + edx*8 + 2]
jbe 0x450ee2
mov esi, edx
mov dword [ebp - 0x14], esi
xor edx, edx
cmp ebx, 0x12c
jbe 0x450fb3
fldz
mov dword [ebp - 0x18], edx
mov edx, dword [ebp + 0x1c]
fstp dword [ebp - 0x1c]
test ebx, ebx
je 0x450ffb
imul eax, dword [ebp + 0x10], 0x48
mov edi, dword [ebp + 0x14]
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
mov eax, ebx
sub eax, esi
mov dword [ebp - 0x18], eax
cmp eax, 0x64
jle 0x450f2e
mov ecx, dword [ebp + 0x20]
lea eax, [esi + edi]
push eax
call fcn.00413711
mov edx, dword [ebp + 0x1c]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp + 0xc]
and dword [ebp - 0x30], 0
mov dword [ebp - 0x34], vtable.FontAlias.0
mov ecx, dword [ecx + 0x14]
add ecx, dword [ebp - 0x24]
mov ecx, dword [ecx + 0x44]
mov dword [ebp - 0x30], ecx
xor ecx, ecx
mov dword [ebp - 4], ecx
lea ecx, [edx + esi*4]
mov edx, dword [ebp + 8]
push ecx
push eax
lea eax, [esi + edi]
mov dword [ebp - 0x28], ecx
mov edx, dword [edx]
mov ecx, dword [ebp + 8]
push eax
lea eax, [ebp - 0x34]
push eax
call dword [edx + 0x5c]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x450f87
fld dword [ebp - 0x1c]
mov edx, eax
mov ecx, dword [ebp - 0x28]
fld dword [ecx]
fld st(1)
faddp st(1)
fstp dword [ecx]
add ecx, 4
dec edx
jne 0x450f77
fstp st(0)
mov edx, dword [ebp + 0x1c]
add esi, eax
xor ecx, ecx
fld dword [edx + esi*4 - 4]
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x34], vtable.Font.0
fstp dword [ebp - 0x1c]
cmp esi, ebx
jb 0x450f10
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
jmp 0x450ffd
imul ecx, dword [ebp + 0x10], 0x48
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x2c], vtable.FontAlias.0
add ecx, dword [eax + 0x14]
mov eax, dword [ecx + 0x44]
mov dword [ebp - 0x28], eax
push dword [ebp + 0x1c]
mov ecx, dword [ebp + 8]
lea edx, [ebp - 0x2c]
xor eax, eax
inc eax
push ebx
push dword [ebp + 0x14]
mov dword [ebp - 4], eax
mov eax, dword [ecx]
push edx
call dword [eax + 0x5c]
or dword [ebp - 4], 0xffffffff
xor ecx, ecx
mov edx, dword [ebp + 0x1c]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x2c], vtable.Font.0
jmp 0x450ffd
xor ecx, ecx
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
cmp esi, eax
jae 0x451063
inc dword [edi + 0xc]
cmp dword [edi + 0xc], 0xea60
jbe 0x45104e
mov eax, dword [edi + 4]
sub eax, dword [edi]
sar eax, 3
test eax, eax
je 0x451047
xor edx, edx
xor ebx, ebx
inc edx
mov eax, dword [edi]
cmp word [eax + ecx*8 + 2], bx
jbe 0x451034
mov word [eax + ecx*8 + 2], dx
mov eax, dword [edi + 4]
inc ecx
sub eax, dword [edi]
sar eax, 3
cmp ecx, eax
jb 0x451026
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
mov dword [edi + 0xc], 2
push dword [edi + 0xc]
mov eax, dword [edi]
push edx
push ebx
push dword [ebp + 0x14]
lea ecx, [eax + esi*8]
push dword [ebp + 0x10]
call fcn.00450cbc
call fcn.004b69c4
ret 0x1c