Function at 0x435cf0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
push esi
push edi
mov edi, ecx
xor ecx, ecx
cmp byte [esp + 0x14], cl
je 0x435ec8
sar edx, 1
lea ebx, [edi + edx*2]
mov dword [esp + 0xc], ebx
test edx, edx
jle 0x435f49
cmp edx, 0x10
jb 0x435e87
lea eax, [edx - 1]
lea eax, [ebx + eax*2]
lea esi, [edx - 1]
lea esi, [edi + esi*2]
cmp edi, eax
ja 0x435d34
cmp esi, ebx
jae 0x435e87
mov eax, edx
push ebp
and eax, 0x8000000f
jns 0x435d43
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm2, xmmword [0x4e2d60]
mov esi, edx
sub esi, eax
mov ebp, ebx
mov eax, 1
sub ebp, edi
movd xmm3, eax
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
lea eax, [edi + 8]
mov ebx, dword [esp + 0x18]
nop dword [eax]
movq xmm0, qword [eax - 8]
lea eax, [eax + 0x20]
movq xmm1, qword [ebx - 0x18]
lea ebx, [ebx + 0x20]
punpcklwd xmm0, xmm0
add ecx, 0x10
psrad xmm0, 0x10
punpcklwd xmm1, xmm1
psrad xmm1, 0x10
pxor xmm0, xmm2
pxor xmm1, xmm2
paddd xmm1, xmm0
psrad xmm1, xmm3
pshuflw xmm0, xmm1, 0xd8
movq xmm1, qword [eax + ebp - 0x20]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [eax - 0x28], xmm0
movq xmm0, qword [eax - 0x20]
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
psrad xmm0, 0x10
psrad xmm1, 0x10
pxor xmm0, xmm2
pxor xmm1, xmm2
paddd xmm1, xmm0
psrad xmm1, xmm3
pshuflw xmm0, xmm1, 0xd8
movq xmm1, qword [ebx - 0x28]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [eax - 0x20], xmm0
movq xmm0, qword [eax - 0x18]
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
psrad xmm0, 0x10
psrad xmm1, 0x10
pxor xmm0, xmm2
pxor xmm1, xmm2
paddd xmm1, xmm0
psrad xmm1, xmm3
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [eax - 0x18], xmm0
movq xmm1, qword [eax - 0x10]
movq xmm0, qword [ebx - 0x20]
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
psrad xmm0, 0x10
psrad xmm1, 0x10
pxor xmm0, xmm2
pxor xmm1, xmm2
paddd xmm1, xmm0
psrad xmm1, xmm3
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
movq qword [eax - 0x10], xmm0
cmp ecx, esi
jl 0x435d70
mov ebx, dword [esp + 0x10]
pop ebp
cmp ecx, edx
jge 0x435f49
sub ebx, edi
lea esi, [edi + ecx*2]
sub edx, ecx
nop word [eax + eax]
movsx ecx, word [esi + ebx]
lea esi, [esi + 2]
movsx eax, word [esi - 2]
xor ecx, 0xffff8000
xor eax, 0xffff8000
add ecx, eax
sar ecx, 1
mov word [esi - 2], cx
sub edx, 1
jne 0x435ea0
pop edi
pop esi
pop ebx
pop ecx
ret
test edx, edx
jle 0x435f49
cmp edx, 0x20
jb 0x435f33
mov eax, edx
xor ecx, ecx
and eax, 0x8000001f
jns 0x435ee1
dec eax
or eax, 0xffffffe0
inc eax
movaps xmm2, xmmword [0x4e2d40]
mov esi, edx
sub esi, eax
lea eax, [edi + 0x20]
nop
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x20
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax - 0x60], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x50]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
pxor xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, esi
jl 0x435ef0
cmp ecx, edx
jge 0x435f49
mov eax, 0xffff8000
nop dword [eax]
xor word [edi + ecx*2], ax
inc ecx
cmp ecx, edx
jl 0x435f40
pop edi
pop esi
pop ebx
pop ecx
ret