Function at 0x448e50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x38
mov ebx, dword [ebp + 8]
test bl, 3
jne 0x448f85
cmp ebx, 2
mov edi, ebx
jb 0x448eb8
movzx eax, word [ebx + edx - 2]
pxor xmm1, xmm1
mov edi, ebx
movd xmm0, eax
punpcklbw xmm0, xmm1
movdqa xmm1, xmmword [0x519040]
psubw xmm1, xmm0
paddw xmm0, xmmword [0x519050]
pand xmm0, xmm1
psrlw xmm0, 8
pand xmm0, xmmword [0x519060]
movdqa xmm1, xmm0
psrld xmm1, 0x10
paddw xmm1, xmm0
pextrw eax, xmm1, 0
sub edi, eax
mov eax, ebx
sub eax, edi
jb 0x448f85
test ebx, ebx
je 0x448f7d
cmp eax, 1
jne 0x448f1f
movzx eax, byte [ebx + edx - 1]
mov esi, edx
mov edx, 0x3c
sub edx, eax
add eax, 0x1c2
and eax, edx
xor edx, edx
test eax, 0x100
sete dl
mov dword [ebp - 0x18], edx
cmp edi, ebx
ja 0x449322
mov edx, edi
mov eax, edi
and edx, 3
shr eax, 2
lea ebx, [edx + edx*2]
mov dword [ebp - 0x10], eax
lea eax, [eax + eax*2]
mov dword [ebp - 0x3c], edx
shr ebx, 2
add ebx, eax
cmp ebx, dword [ebp + 0x10]
jbe 0x448f97
mov byte [ecx + 4], 1
jmp 0x448f89
cmp ebx, 2
jb 0x448f7d
test eax, eax
je 0x449311
cmp eax, 2
jne 0x448f85
movzx eax, word [ebx + edx - 2]
movdqa xmm2, xmmword [0x519040]
pxor xmm1, xmm1
mov esi, edx
movd xmm0, eax
punpcklbw xmm0, xmm1
psubw xmm2, xmm0
paddw xmm0, xmmword [0x519050]
pand xmm0, xmm2
psrlw xmm0, 8
pextrw eax, xmm0, 1
movd edx, xmm0
and edx, eax
not edx
and edx, 1
mov dword [ebp - 0x18], edx
cmp edi, ebx
jbe 0x448ef9
jmp 0x449322
test eax, eax
je 0x449311
mov byte [ecx + 4], 0
mov dword [ecx], 0
add esp, 0x38
pop esi
pop edi
pop ebx
pop ebp
ret
and edi, 0xfffffffc
mov edx, 0xaaaaaaab
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x2c], esi
lea eax, [esi + edi]
mov dword [ebp - 0x30], eax
mov eax, ebx
mul edx
shr edx, 1
lea edx, [edx + edx*2]
sub ebx, edx
test edi, edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x38], ebx
lea eax, [edi + edx]
mov dword [ebp - 0x34], eax
je 0x44916a
mov eax, dword [ebp - 0x10]
movdqa xmm3, xmmword [0x519090]
mov ecx, esi
pcmpeqd xmm2, xmm2
shl eax, 2
neg eax
nop word cs:[eax + eax]
nop dword [eax]
sub edx, 3
jb 0x44916a
movd xmm0, dword [ecx]
pxor xmm1, xmm1
movdqa xmm5, xmmword [0x5190e0]
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x10], eax
punpcklbw xmm0, xmm1
movdqa xmm1, xmmword [0x519070]
movdqa xmm6, xmm0
movdqa xmm4, xmm0
movdqa xmm7, xmm0
psubw xmm5, xmm0
paddw xmm6, xmmword [0x519080]
paddw xmm4, xmmword [0x5190b0]
paddw xmm7, xmmword [0x5190f0]
psubw xmm1, xmm0
pand xmm6, xmm1
movdqa xmm1, xmmword [0x5190a0]
psrlw xmm6, 8
pand xmm6, xmm3
psubw xmm1, xmm0
pand xmm4, xmm1
movdqa xmm1, xmm0
paddw xmm1, xmmword [0x5190d0]
psrlw xmm4, 8
pand xmm4, xmmword [0x5190c0]
pand xmm5, xmm1
movdqa xmm1, xmm0
psraw xmm5, 8
paddw xmm1, xmmword [0x519100]
pand xmm7, xmm5
movdqa xmm5, xmmword [0x519110]
psubw xmm5, xmm0
pand xmm5, xmm1
movdqa xmm1, xmm0
paddw xmm1, xmmword [0x519120]
psraw xmm5, 8
pand xmm1, xmm5
movdqa xmm5, xmm3
paddw xmm1, xmm7
psubw xmm5, xmm0
paddw xmm1, xmm4
paddw xmm1, xmm6
movdqa xmm6, xmm0
paddw xmm0, xmmword [0x519140]
paddw xmm6, xmmword [0x519130]
paddw xmm1, xmm2
pand xmm5, xmm6
psraw xmm5, 8
pand xmm0, xmm5
paddw xmm0, xmm1
pextrw edx, xmm0, 1
movd esi, xmm0
pshufd xmm1, xmm0, 0x55
pextrw ecx, xmm0, 2
pextrw eax, xmm0, 3
mov ebx, edx
por xmm1, xmm0
shl esi, 2
shl edx, 4
shr ebx, 4
movdqa xmm0, xmm1
or ebx, esi
psrld xmm0, 0x10
mov byte [edi], bl
mov ebx, ecx
por xmm0, xmm1
shl ecx, 6
shr ebx, 2
movd esi, xmm0
or eax, ecx
mov ecx, dword [ebp - 0x40]
or ebx, edx
shr esi, 8
mov edx, dword [ebp - 0x24]
mov byte [edi + 1], bl
mov byte [edi + 2], al
mov eax, dword [ebp - 0x10]
and esi, 1
add edi, 3
or dword [ebp - 0x18], esi
add ecx, 4
add eax, 4
jne 0x448ff0
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x28], 0x41414141
lea eax, [ebp - 0x28]
push esi
push dword [ebp - 0x30]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movd xmm0, dword [ebp - 0x28]
movdqa xmm4, xmmword [0x5190a0]
movdqa xmm3, xmmword [0x5190b0]
pxor xmm1, xmm1
movdqa xmm6, xmmword [0x5190e0]
movdqa xmm5, xmmword [0x5190f0]
movdqa xmm2, xmmword [0x519080]
movdqa xmm7, xmmword [0x519120]
mov edi, dword [ebp - 0x18]
punpcklbw xmm0, xmm1
movdqa xmm1, xmmword [0x519070]
psubw xmm4, xmm0
paddw xmm3, xmm0
psubw xmm6, xmm0
paddw xmm5, xmm0
paddw xmm2, xmm0
paddw xmm7, xmm0
pand xmm3, xmm4
movdqa xmm4, xmmword [0x5190d0]
psrlw xmm3, 8
psubw xmm1, xmm0
pand xmm3, xmmword [0x5190c0]
pand xmm2, xmm1
movdqa xmm1, xmmword [0x519090]
paddw xmm4, xmm0
psrlw xmm2, 8
pand xmm6, xmm4
movdqa xmm4, xmmword [0x519100]
psraw xmm6, 8
pand xmm5, xmm6
movdqa xmm6, xmmword [0x519110]
pand xmm2, xmm1
psubw xmm1, xmm0
paddw xmm4, xmm0
psubw xmm6, xmm0
pand xmm6, xmm4
psraw xmm6, 8
pand xmm7, xmm6
paddw xmm7, xmm5
paddw xmm7, xmm3
paddw xmm7, xmm2
movdqa xmm2, xmmword [0x519130]
paddw xmm2, xmm0
paddw xmm0, xmmword [0x519140]
pand xmm1, xmm2
psraw xmm1, 8
pand xmm0, xmm1
pcmpeqd xmm1, xmm1
paddw xmm1, xmm7
paddw xmm1, xmm0
pextrw eax, xmm1, 1
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
mov edx, eax
shl ecx, 2
por xmm0, xmm1
shl eax, 4
shr edx, 4
movdqa xmm2, xmm0
or edx, ecx
pextrw ecx, xmm1, 2
psrld xmm2, 0x10
mov byte [ebp - 0x1b], dl
mov edx, ecx
shl ecx, 6
por xmm2, xmm0
shr edx, 2
or edx, eax
pextrw eax, xmm1, 3
or eax, ecx
mov byte [ebp - 0x1a], dl
mov byte [ebp - 0x19], al
xor eax, eax
cmp esi, 1
movd esi, xmm2
sete al
shr esi, 8
or edi, eax
and esi, 1
lea eax, [ebp - 0x1b]
push dword [ebp - 0x38]
push eax
push dword [ebp - 0x34]
call sub.msvcrt.dll_memcpy
add esp, 0xc
or di, si
je 0x449335
mov eax, dword [ebp - 0x14]
mov byte [eax + 4], 0
mov dword [eax], 0
jmp 0x448f8f
mov esi, edx
mov dword [ebp - 0x18], 0
cmp edi, ebx
jbe 0x448ef9
push 0x51964c
push dword [ebp + 8]
push edi
call fcn.00417f20
add esp, 0xc
ud2
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x20]
mov esi, dword [ebp - 0x14]
mov eax, edx
or eax, ecx
jne 0x449351
mov eax, dword [ebp + 0xc]
mov dword [esi], eax
mov dword [esi + 4], ecx
jmp 0x448f8f
mov eax, edx
mov ebx, dword [ebp - 0x2c]
xor edi, edi
mov ecx, edx
sub eax, 1
cmovb eax, edi
and eax, 0xfffffffc
add ebx, eax
sub ecx, eax
cmovb ecx, edi
mov esi, ecx
and esi, 1
cmp eax, edx
cmovbe esi, ecx
cmova ebx, edi
mov edx, esi
jbe 0x449380
and dl, 1
jmp 0x4493b0
mov esi, dword [ebp - 0x20]
mov ecx, 0xaaaaaaab
mov dword [ebp - 0x24], edx
mov eax, esi
sub eax, 1
cmovb eax, edi
mul ecx
mov eax, esi
shr edx, 1
lea ecx, [edx + edx*2]
sub eax, ecx
cmovb eax, edi
mov edx, eax
and edx, 1
cmp ecx, esi
cmovbe edx, eax
jbe 0x4493c1
and dl, 1
mov esi, dword [ebp - 0x14]
mov byte [esi + 4], dl
mov dword [esi], 0
jmp 0x448f8f
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x44], 0
add ecx, eax
lea eax, [ebp - 0x44]
push eax
call fcn.00449540
add esp, 4
mov esi, dword [ebp - 0x14]
test eax, eax
je 0x44952e
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x24]
cmp edx, eax
cmovb eax, edx
test eax, eax
je 0x449526
xor edx, edx
cmp eax, 8
mov edi, eax
mov ecx, 0
mov eax, ebx
jb 0x4494ff
xor edx, edx
cmp edi, 0x20
mov ecx, 0
jb 0x4494a2
mov ecx, edi
mov esi, edi
mov edi, dword [ebp - 0x10]
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
and ecx, 0xffffffe0
movdqu xmm2, xmmword [edi + edx]
movdqu xmm4, xmmword [eax + edx]
movdqu xmm3, xmmword [edi + edx + 0x10]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm4, xmmword [eax + edx + 0x10]
add edx, 0x20
cmp ecx, edx
pxor xmm4, xmm3
por xmm1, xmm4
jne 0x44942f
por xmm1, xmm0
cmp esi, ecx
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd edx, xmm1
je 0x449518
mov eax, esi
mov edi, esi
test al, 0x18
mov eax, ebx
je 0x4494ff
mov esi, ecx
mov ecx, edi
mov ebx, edi
mov edi, eax
mov eax, dword [ebp - 0x10]
movzx edx, dl
and ecx, 0xfffffff8
movd xmm0, edx
movq xmm1, qword [eax + esi]
movq xmm2, qword [edi + esi]
add esi, 8
cmp ecx, esi
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4494b7
pshufd xmm1, xmm0, 0x55
mov eax, edi
mov edi, ebx
cmp ebx, ecx
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd edx, xmm1
je 0x449518
movzx ebx, byte [eax + ecx]
mov esi, eax
mov eax, edi
mov edi, dword [ebp - 0x10]
xor bl, byte [edi + ecx]
mov edi, eax
inc ecx
mov eax, esi
or dl, bl
cmp edi, ecx
jne 0x4494ff
mov esi, dword [ebp - 0x14]
test dl, dl
je 0x449526
xor edx, edx
jmp 0x4493b3
mov ecx, dword [ebp - 0x20]
jmp 0x449344
mov dl, 1
jmp 0x4493b3