Function at 0x417c50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov eax, edx
mov dword [ebp - 0xc], 0
mov edx, dword [0x44f640]
mov dword [ebp - 4], eax
push esi
mov esi, ecx
mov ecx, dword [0x44f640]
push edi
lea edi, [eax - 0xb]
mov dword [ebp - 0x18], esi
mov eax, dword [ebp + 0xc]
cmp eax, edi
mov dword [ebp - 0x14], edi
cmova eax, edi
mov dword [ebp - 8], eax
movzx eax, byte [esi]
xor edx, eax
movzx eax, byte [esi + 1]
xor ecx, eax
mov eax, dword [0x44f640]
xor eax, ecx
mov ecx, dword [0x44f640]
xor eax, 2
xor ecx, eax
mov eax, edx
shr eax, 1
mov ebx, ecx
shr ebx, 1
neg eax
neg ebx
neg edx
neg ecx
or eax, edx
or ebx, ecx
shr eax, 0x1f
shr ebx, 0x1f
neg eax
neg ebx
mov edx, 2
or ebx, eax
mov dword [ebp - 0x10], ebx
mov ebx, dword [0x44f640]
cmp dword [ebp - 4], edx
jbe 0x417d20
xor edi, edi
nop dword [eax]
movzx eax, byte [edx + esi]
inc edx
mov ecx, dword [0x44f640]
xor ecx, eax
mov eax, dword [0x44f640]
xor eax, ecx
mov ecx, dword [0x44f640]
xor ecx, eax
mov eax, ecx
neg ecx
shr eax, 1
neg eax
or eax, ecx
shr eax, 0x1f
dec eax
or ebx, eax
mov eax, ebx
not eax
and eax, 1
add edi, eax
cmp edx, dword [ebp - 4]
jb 0x417ce0
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x14]
mov esi, dword [0x44f640]
not ebx
mov edx, dword [0x44f640]
xor esi, dword [ebp - 0xc]
xor edx, 8
mov eax, edx
xor eax, esi
sub esi, edx
shr eax, 0x1f
xor eax, dword [0x44f640]
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
mov eax, dword [0x44f640]
shr ecx, 0x1f
neg ecx
xor eax, ecx
and ecx, edx
not eax
mov edx, dword [ebp - 4]
and esi, eax
sub edx, dword [ebp - 0xc]
mov eax, dword [0x44f640]
or esi, ecx
shr esi, 0x1f
sub edx, 3
xor eax, esi
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
mov eax, dword [0x44f640]
mov esi, dword [0x44f640]
shr ecx, 0x1f
xor esi, dword [ebp - 8]
neg ecx
or ecx, ebx
mov ebx, dword [ebp - 0x10]
or ebx, ecx
xor eax, ebx
not eax
and edx, eax
mov eax, ebx
and eax, dword [ebp - 8]
or edx, eax
mov dword [ebp - 0x10], edx
mov edx, dword [0x44f640]
xor edx, dword [ebp - 0x10]
mov eax, edx
xor eax, esi
sub esi, edx
shr eax, 0x1f
xor eax, dword [0x44f640]
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
mov eax, dword [0x44f640]
shr ecx, 0x1f
neg ecx
xor eax, ecx
and ecx, edx
not eax
and esi, eax
mov eax, dword [0x44f640]
mov edx, dword [0x44f640]
or esi, ecx
shr esi, 0x1f
xor eax, esi
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
shr ecx, 0x1f
neg ecx
mov dword [ebp - 0x1c], ecx
mov esi, dword [ebp - 0x18]
xor edx, ebx
not edx
mov eax, ebx
and edx, ecx
and eax, 0x4100
and edx, 0x4400
or edx, eax
mov eax, ecx
neg edx
or eax, ebx
not eax
mov dword [ebp - 0x14], edx
xor ecx, ecx
mov dword [ebp - 0xc], eax
lea edx, [esi + 0xb]
cmp edi, 4
jb 0x417e49
mov ebx, 0xfffffff9
sub ebx, esi
and dword [edx], eax
lea edx, [edx + 4]
lea eax, [ebx + edx]
add ecx, 4
cmp eax, edi
mov eax, dword [ebp - 0xc]
jbe 0x417e37
mov edx, edi
sub edx, ecx
cmp ecx, edi
jae 0x417ecc
cmp edx, 0x40
jb 0x417eb9
movsx eax, al
and edx, 0x3f
mov ebx, edi
sub ebx, edx
movd xmm0, eax
lea eax, [esi + 0x2b]
punpcklbw xmm0, xmm0
add eax, ecx
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x40
movaps xmm1, xmm2
mov edx, ecx
pand xmm1, xmm0
movups xmmword [eax - 0x60], xmm1
movups xmm0, xmmword [eax - 0x50]
pand xmm0, xmm2
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
pand xmm0, xmm2
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
pand xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, ebx
jb 0x417e76
cmp edx, edi
jae 0x417ecc
mov edx, dword [ebp - 0xc]
nop dword [eax]
and byte [ecx + esi + 0xb], dl
lea eax, [ecx + esi]
inc ecx
cmp ecx, edi
jb 0x417ec0
mov eax, dword [ebp - 0x1c]
mov edi, esi
mov ebx, dword [0x44f640]
xor ecx, ecx
mov edx, dword [ebp - 8]
xor ebx, eax
not ebx
and eax, edx
and ebx, dword [ebp - 0x10]
sub edi, edx
add edi, dword [ebp - 4]
or ebx, eax
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x10], ecx
test edx, edx
je 0x417fc6
mov eax, dword [ebp - 4]
dec eax
add eax, esi
mov dword [ebp - 0x18], eax
nop dword [eax]
nop word [eax + eax]
mov esi, dword [0x44f640]
mov edx, dword [0x44f640]
xor esi, ecx
xor edx, ebx
mov eax, edx
xor eax, esi
sub esi, edx
shr eax, 0x1f
xor eax, dword [0x44f640]
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
mov eax, dword [0x44f640]
shr ecx, 0x1f
neg ecx
xor eax, ecx
and ecx, edx
mov edx, dword [ebp - 8]
not eax
and esi, eax
mov eax, dword [0x44f640]
or esi, ecx
shr esi, 0x1f
xor eax, esi
lea esi, [edx - 1]
mov ecx, eax
neg eax
shr ecx, 1
neg ecx
or ecx, eax
xor eax, eax
shr ecx, 0x1f
neg ecx
mov dword [ebp - 0xc], ecx
test esi, esi
je 0x417fad
nop word [eax + eax]
mov dl, byte [eax + edi]
mov cl, byte [eax + edi + 1]
mov ebx, dword [0x44f640]
xor ebx, dword [ebp - 0xc]
not ebx
and bl, cl
movzx ecx, byte [ebp - 0xc]
and cl, dl
or bl, cl
mov byte [eax + edi], bl
inc eax
cmp eax, esi
jb 0x417f80
mov ecx, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 8]
mov esi, dword [ebp - 0x18]
movzx eax, byte [esi]
and al, cl
mov ecx, dword [ebp - 0x10]
inc ecx
mov byte [esi], al
mov dword [ebp - 0x10], ecx
cmp ecx, edx
jb 0x417f10
cmp dword [ebp + 0xc], 0
je 0x417fe8
push edx
push edi
push dword [ebp + 8]
call fcn.0042b1a0
mov ecx, dword [ebp + 0x10]
add esp, 0xc
mov eax, dword [ebp - 0x14]
pop edi
pop esi
mov dword [ecx], ebx
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
pop edi
pop esi
mov dword [eax], ebx
mov eax, dword [ebp - 0x14]
pop ebx
mov esp, ebp
pop ebp
ret