Function at 0x45eb80
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
cmp dword [0x50dd68], 0
jne 0x45ef90
push 0x8000
call fcn.004cec6f
add esp, 4
mov dword [esp + 8], eax
mov dword [0x50dd68], eax
push 0x4100
call fcn.004cec6f
add esp, 4
mov dword [esp + 4], eax
mov dword [0x50dd6c], eax
push 0x20000
call fcn.004cec6f
add esp, 4
mov dword [0x50dd64], eax
mov edi, 1
xor ecx, ecx
xor eax, eax
mov dword [esp], 0
nop word cs:[eax + eax]
nop dword [eax]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp]
nop dword [eax + eax]
mov eax, dword [0x50dd64]
mov word [eax + edi*2], cx
test cl, 7
jne 0x45ec1b
mov eax, ecx
sar eax, 3
mov edx, dword [esp + 4]
mov word [edx + eax*2], di
add ecx, 1
mov dword [esp], ecx
mov eax, edi
add eax, edi
mov ecx, eax
xor ecx, 0x1100b
cmp eax, 0xffff
cmovle ecx, eax
mov eax, dword [esp]
mov edx, 0x55555556
imul edx
mov ebp, edx
mov esi, edx
mov eax, dword [esp]
mov edx, 0x66666667
imul edx
mov ebx, edx
shr esi, 0x1f
add esi, ebp
mov ebp, edx
shr ebp, 0x1f
sar ebx, 1
mov eax, dword [esp]
mov edx, 0x78787879
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 3
add edx, eax
mov edi, edx
shl edi, 4
add edi, edx
mov eax, dword [esp]
sub eax, edi
mov edi, ecx
mov ecx, dword [esp]
imul edx, ecx, 0xff00ff01
add edx, 0x7f807f
cmp edx, 0xff00ff
jb 0x45ec00
add ebx, ebp
lea esi, [esi + esi*2]
mov edx, ecx
sub edx, esi
test eax, eax
je 0x45ec00
lea esi, [ebx + ebx*4]
mov eax, ecx
sub eax, esi
test edx, edx
je 0x45ec00
test eax, eax
je 0x45ec00
mov eax, ecx
mov ecx, dword [esp + 0x10]
add eax, ecx
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov byte [edx + esi], al
mov eax, esi
add eax, 1
add ecx, 0xfffffffe
cmp eax, 0x8000
jne 0x45ebf0
mov eax, dword [0x50dd64]
mov ecx, dword [esp]
mov word [eax + edi*2], cx
movdqa xmm6, xmmword [0x4e8530]
movdqa xmm3, xmmword [0x4e78b0]
xor eax, eax
movdqa xmm5, xmmword [0x4ea290]
mov edi, dword [esp + 4]
movdqa xmm0, xmm6
movdqa xmm2, xmmword [0x4ea270]
pand xmm0, xmm2
movdqa xmm1, xmm3
pand xmm1, xmm2
pxor xmm2, xmm2
pcmpeqd xmm1, xmm2
pcmpeqd xmm0, xmm2
movdqa xmm2, xmm6
pslld xmm2, 0xb
movdqa xmm7, xmm2
movdqa xmm4, xmmword [0x4ea280]
pxor xmm7, xmm4
pand xmm2, xmm0
pandn xmm0, xmm7
movdqa xmm7, xmm3
pslld xmm7, 0xb
por xmm0, xmm2
movdqa xmm2, xmm7
pxor xmm2, xmm4
pand xmm7, xmm1
pandn xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
paddd xmm0, xmm0
movdqa xmm7, xmm2
pandn xmm7, xmm0
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
paddd xmm1, xmm1
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
paddd xmm0, xmm0
movdqa xmm7, xmm2
pandn xmm7, xmm0
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
paddd xmm1, xmm1
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
paddd xmm0, xmm0
movdqa xmm7, xmm2
pandn xmm7, xmm0
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
paddd xmm1, xmm1
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
paddd xmm0, xmm0
movdqa xmm7, xmm2
pandn xmm7, xmm0
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
paddd xmm1, xmm1
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
paddd xmm0, xmm0
movdqa xmm7, xmm2
pandn xmm7, xmm0
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
paddd xmm1, xmm1
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
movdqa xmm2, xmm0
pcmpgtd xmm2, xmm5
movdqa xmm7, xmm2
pandn xmm7, xmm0
movdqa xmm4, xmmword [0x4ea2a0]
pxor xmm0, xmm4
pand xmm0, xmm2
movdqa xmm2, xmm1
pcmpgtd xmm2, xmm5
por xmm0, xmm7
movdqa xmm7, xmm2
pandn xmm7, xmm1
pxor xmm1, xmm4
pand xmm1, xmm2
por xmm1, xmm7
pslld xmm1, 0x10
psrad xmm1, 0x10
pslld xmm0, 0x10
psrad xmm0, 0x10
packssdw xmm1, xmm0
movdqu xmmword [edi + eax*2 + 0x4000], xmm1
add eax, 8
movdqa xmm0, xmmword [str._b_b_b_b]
paddd xmm3, xmm0
paddd xmm6, xmm0
cmp eax, 0x80
jne 0x45ed10
mov eax, dword [0x50dd64]
mov word [eax + 2], 0xffff
mov eax, 1
nop word cs:[eax + eax]
nop
mov edx, dword [0x50dd64]
movzx ecx, word [edx + eax*2]
not ecx
mov esi, ecx
shr esi, 2
and esi, 0x3ffe
movzx esi, word [edi + esi]
and cl, 7
shl esi, cl
mov ecx, esi
shr ecx, 0xf
or ecx, 0x4000
and ecx, 0xfffffffe
xor si, word [edi + ecx]
mov word [edx + eax*2], si
add eax, 1
cmp eax, 0x10000
jne 0x45ef50
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret