Function at 0x449070
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x14
mov esi, dword [ebp + 0x10]
mov ebx, esi
test esi, esi
jbe 0x449270
cmp esi, 8
jb 0x4492b4
mov edi, esi
xor edx, edx
movdqu xmm2, xmmword [0x4c3a40]
movd xmm0, esi
mov eax, dword [ebp + 0xc]
and edi, 0xfffffff8
pxor xmm3, xmm3
pcmpeqd xmm1, xmm1
movd xmm4, dword [eax]
movdqa xmm6, xmm2
movd xmm5, dword [eax + 4]
movdqa xmm7, xmm2
punpcklbw xmm4, xmm3
add edx, 8
punpcklwd xmm4, xmm3
add eax, 8
punpcklbw xmm5, xmm3
pcmpgtd xmm6, xmm4
punpcklwd xmm5, xmm3
pxor xmm6, xmm1
pcmpgtd xmm7, xmm5
psubd xmm0, xmm6
pxor xmm7, xmm1
psubd xmm0, xmm7
cmp edx, edi
jb 0x4490b0
movdqa xmm1, xmm0
psrldq xmm1, 8
paddd xmm0, xmm1
movdqa xmm2, xmm0
psrlq xmm2, 0x20
paddd xmm0, xmm2
movd ebx, xmm0
lea eax, [edi + 1]
cmp eax, esi
ja 0x4491a1
mov edx, esi
sub edx, edi
cmp edx, 4
jb 0x4492ad
movd xmm3, ebx
mov ecx, edx
mov ebx, dword [ebp + 0xc]
and ecx, 0xfffffffc
movdqu xmm1, xmmword [0x4c3a40]
pxor xmm2, xmm2
xor eax, eax
pcmpeqd xmm0, xmm0
add ebx, edi
movd xmm4, dword [eax + ebx]
movdqa xmm5, xmm1
punpcklbw xmm4, xmm2
add eax, 4
punpcklwd xmm4, xmm2
pcmpgtd xmm5, xmm4
pxor xmm5, xmm0
psubd xmm3, xmm5
cmp eax, ecx
jb 0x449149
movdqa xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movdqa xmm1, xmm3
psrlq xmm1, 0x20
paddd xmm3, xmm1
movd ebx, xmm3
cmp ecx, edx
jae 0x4491a1
add edi, dword [ebp + 0xc]
cmp byte [ecx + edi], 0x80
lea eax, [ebx + 1]
cmovae ebx, eax
inc ecx
cmp ecx, edx
jb 0x449192
lea edi, [ebx + 1]
push edi
push dword [ebp + 8]
call fcn.00449a30
add esp, 8
test eax, eax
je 0x44929c
mov eax, dword [ebp + 8]
mov edx, esi
shr edx, 1
mov eax, dword [eax]
je 0x4492a6
mov dword [esp], edi
xor ecx, ecx
mov dword [esp + 4], ebx
mov esi, dword [ebp + 0xc]
movzx ebx, byte [esi + ecx*2]
cmp ebx, 0x80
jge 0x4491e4
mov byte [eax], bl
inc eax
jmp 0x4491fc
shr ebx, 6
add ebx, 0xffffffc0
mov byte [eax], bl
movzx ebx, byte [esi + ecx*2]
and ebx, 0x3f
add ebx, 0xffffff80
mov byte [eax + 1], bl
add eax, 2
movzx ebx, byte [esi + ecx*2 + 1]
cmp ebx, 0x80
jge 0x44920e
mov byte [eax], bl
inc eax
jmp 0x449227
shr ebx, 6
add ebx, 0xffffffc0
mov byte [eax], bl
movzx ebx, byte [esi + ecx*2 + 1]
and ebx, 0x3f
add ebx, 0xffffff80
mov byte [eax + 1], bl
add eax, 2
inc ecx
cmp ecx, edx
jb 0x4491d3
mov edi, dword [esp]
lea ecx, [ecx + ecx + 1]
mov ebx, dword [esp + 4]
mov esi, dword [ebp + 0x10]
lea edx, [ecx - 1]
cmp edx, esi
jae 0x449283
mov edx, dword [ebp + 0xc]
movzx edx, byte [ecx + edx - 1]
cmp edx, 0x80
jge 0x449255
mov byte [eax], dl
jmp 0x449283
mov esi, dword [ebp + 0xc]
shr edx, 6
add edx, 0xffffffc0
mov byte [eax], dl
movzx edx, byte [ecx + esi - 1]
and edx, 0x3f
add edx, 0xffffff80
mov byte [eax + 1], dl
jmp 0x449283
lea edi, [esi + 1]
push edi
push dword [ebp + 8]
call fcn.00449a30
add esp, 8
test eax, eax
je 0x44929c
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov byte [eax + ebx], 0
mov eax, dword [ebp + 8]
mov dword [eax + 8], edi
add esp, 0x14
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
add esp, 0x14
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
mov ecx, 1
jmp 0x44923a
xor ecx, ecx
jmp 0x44918b
xor edi, edi
jmp 0x449111