Function at 0x140055830
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x140224e80]
mov r9d, ecx
mov r10, rdx
test eax, eax
jne 0x140055870
push rbx
mov eax, 1
cpuid
mov dword [0x140224e80], 1
shr ecx, 0x14
mov rdx, r10
and ecx, 1
test ecx, ecx
mov dword [0x140224e84], ecx
mov ecx, r9d
je 0x140055890
pop rbx
jmp 0x1400558a0
mov ecx, dword [0x140224e84]
test ecx, ecx
mov ecx, r9d
je 0x140055888
jmp 0x1400558a0
jmp 0x140055b90
pop rbx
jmp 0x140055b90
push r14
mov r14, rdx
push rdi
mov edi, ecx
push rsi
mov rsi, r8
push rbx
sub rsp, 0x28
mov eax, dword [0x140224e88]
test eax, eax
je 0x140055b51
mov r8d, edi
not r8d
test rsi, rsi
jne 0x1400558e4
jmp 0x140055b42
crc32 r8, byte [r14]
add r14, 1
sub rsi, 1
je 0x140055b42
test r14b, 7
jne 0x1400558d0
cmp rsi, 0x5fff
jbe 0x1400559c2
lea r9, [r14 + 0x2000]
lea r10, [0x140225ea0]
mov rax, r14
xor edx, edx
xor ecx, ecx
nop dword [rax]
crc32 r8, qword [rax]
crc32 rcx, qword [rax + 0x2000]
crc32 rdx, qword [rax + 0x4000]
add rax, 8
cmp rax, r9
jne 0x140055910
mov r11d, r8d
movzx eax, r8b
sub rsi, 0x6000
add r14, 0x6000
shr r11d, 0x18
mov eax, dword [r10 + rax*4]
add r9, 0x6000
xor eax, dword [r10 + r11*4 + 0xc00]
mov ebx, eax
mov rax, r8
shr r8d, 0x10
movzx eax, ah
movzx r8d, r8b
mov eax, dword [r10 + rax*4 + 0x400]
xor eax, ebx
xor eax, dword [r10 + r8*4 + 0x800]
xor rax, rcx
mov ecx, eax
movzx r8d, al
shr ecx, 0x18
mov r8d, dword [r10 + r8*4]
xor r8d, dword [r10 + rcx*4 + 0xc00]
movzx ecx, ah
shr eax, 0x10
movzx eax, al
xor r8d, dword [r10 + rcx*4 + 0x400]
xor r8d, dword [r10 + rax*4 + 0x800]
xor r8, rdx
cmp rsi, 0x5fff
ja 0x140055905
cmp rsi, 0x2ff
jbe 0x140055aa3
lea r9, [r14 + 0x100]
lea r10, [0x140224ea0]
nop dword [rax]
mov rcx, r14
xor eax, eax
xor edx, edx
nop word [rax + rax]
crc32 r8, qword [rcx]
crc32 rdx, qword [rcx + 0x100]
crc32 rax, qword [rcx + 0x200]
add rcx, 8
cmp rcx, r9
jne 0x1400559f0
mov rbx, r8
mov r11d, r8d
movzx r9d, r8b
shr r8d, 0x10
movzx edi, bh
shr r11d, 0x18
movzx r8d, r8b
mov r9d, dword [r10 + r9*4]
xor r9d, dword [r10 + r11*4 + 0xc00]
xor r9d, dword [r10 + rdi*4 + 0x400]
sub rsi, 0x300
add r14, 0x300
mov edi, r9d
xor edi, dword [r10 + r8*4 + 0x800]
xor rdx, rdi
movzx r8d, dl
mov r9d, edx
movzx ebx, dh
shr edx, 0x10
shr r9d, 0x18
movzx edx, dl
mov r8d, dword [r10 + r8*4]
xor r8d, dword [r10 + r9*4 + 0xc00]
xor r8d, dword [r10 + rbx*4 + 0x400]
lea r9, [rcx + 0x300]
xor r8d, dword [r10 + rdx*4 + 0x800]
xor r8, rax
cmp rsi, 0x2ff
ja 0x1400559e0
mov rdx, rsi
and esi, 7
and rdx, 0xfffffffffffffff8
add rdx, r14
cmp r14, rdx
jae 0x140055ad7
mov rax, r14
crc32 r8, qword [rax]
add rax, 8
cmp rdx, rax
ja 0x140055ab8
lea rax, [rdx - 1]
sub rax, r14
shr rax, 3
lea r14, [r14 + rax*8 + 8]
test rsi, rsi
je 0x140055b42
lea rax, [r14 + 1]
crc32 r8, byte [r14]
cmp rsi, 1
je 0x140055b42
crc32 r8, byte [rax]
lea rax, [r14 + 2]
cmp rsi, 2
je 0x140055b42
crc32 r8, byte [rax]
lea rax, [r14 + 3]
cmp rsi, 3
je 0x140055b42
crc32 r8, byte [rax]
lea rax, [r14 + 4]
cmp rsi, 4
je 0x140055b42
crc32 r8, byte [rax]
lea rax, [r14 + 5]
sub rsi, 5
je 0x140055b42
lea rbx, [r14 + 6]
crc32 r8, byte [rax]
cmp rsi, 1
je 0x140055b42
crc32 r8, byte [rbx]
add rsp, 0x28
mov eax, r8d
pop rbx
not eax
pop rsi
pop rdi
pop r14
ret
lea r10, [0x140225ea0]
mov edx, 0x2000
mov rcx, r10
call fcn.140055fb0
lea r10, [0x140224ea0]
mov edx, 0x100
mov rcx, r10
call fcn.140055fb0
mov dword [0x140224e88], 1
jmp 0x1400558bf
push rbp
mov r9d, ecx
mov r10, rdx
mov rbp, rsp
push rbx
sub rsp, 0x20
mov eax, dword [0x14022aec0]
and rsp, 0xfffffffffffffff0
movaps xmmword [rsp], xmm6
movaps xmmword [rsp + 0x10], xmm7
test eax, eax
je 0x140055d92
mov eax, r9d
not eax
test r8, r8
je 0x140055f9b
lea rcx, [0x14022aee0]
test r10b, 7
jne 0x140055be6
jmp 0x140055c14
test r10b, 7
je 0x140055c14
movzx edx, byte [r10]
add r10, 1
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
sub r8, 1
jne 0x140055be0
not eax
movaps xmm6, xmmword [rsp]
movaps xmm7, xmmword [rsp + 0x10]
mov rbx, qword [rbp - 8]
leave
ret
mov r11, r10
cmp r8, 7
jbe 0x140055cc5
lea rdx, [r8 - 8]
shr rdx, 3
lea r11, [r10 + rdx*8 + 8]
nop
xor rax, qword [r10]
add r10, 8
mov r9, rax
movzx edx, al
movzx ebx, ah
shr r9, 0x38
mov edx, dword [rcx + rdx*4 + 0x1c00]
xor edx, dword [rcx + r9*4]
mov r9, rax
xor edx, dword [rcx + rbx*4 + 0x1800]
shr r9, 0x10
movzx r9d, r9b
xor edx, dword [rcx + r9*4 + 0x1400]
mov r9, rax
shr r9, 0x18
movzx r9d, r9b
xor edx, dword [rcx + r9*4 + 0x1000]
mov r9, rax
shr r9, 0x20
movzx r9d, r9b
xor edx, dword [rcx + r9*4 + 0xc00]
mov r9, rax
shr rax, 0x30
shr r9, 0x28
movzx eax, al
movzx r9d, r9b
xor edx, dword [rcx + r9*4 + 0x800]
xor edx, dword [rcx + rax*4 + 0x400]
mov eax, edx
cmp r10, r11
jne 0x140055c30
and r8d, 7
je 0x140055fa3
movzx edx, byte [r11]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
cmp r8, 1
je 0x140055c03
movzx edx, byte [r11 + 1]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
cmp r8, 2
je 0x140055c03
movzx edx, byte [r11 + 2]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
cmp r8, 3
je 0x140055c03
movzx edx, byte [r11 + 3]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
cmp r8, 4
je 0x140055c03
movzx edx, byte [r11 + 4]
xor edx, eax
shr rax, 8
movzx edx, dl
mov r10d, dword [rcx + rdx*4]
xor rax, r10
sub r8, 5
je 0x140055c03
movzx edx, byte [r11 + 5]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
cmp r8, 1
je 0x140055c03
movzx edx, byte [r11 + 6]
xor edx, eax
shr rax, 8
movzx edx, dl
mov edx, dword [rcx + rdx*4]
xor rax, rdx
jmp 0x140055c03
lea rdx, [0x14022aee0]
movdqa xmm4, xmmword [0x14021a5c0]
movdqa xmm5, xmmword [0x14021a5d0]
pxor xmm1, xmm1
movdqa xmm3, xmmword [0x14021a5e0]
lea r11, [rdx + 0x400]
mov rcx, rdx
mov rax, rdx
movdqa xmm2, xmmword [0x14021a5f0]
nop word [rax + rax]
movdqa xmm0, xmm4
add rax, 0x10
paddd xmm4, xmm5
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movdqa xmm6, xmm0
pand xmm0, xmm3
pcmpeqd xmm0, xmm1
psrld xmm6, 1
movdqa xmm7, xmm6
pxor xmm7, xmm2
pand xmm6, xmm0
pandn xmm0, xmm7
por xmm0, xmm6
movaps xmmword [rax - 0x10], xmm0
cmp r11, rax
jne 0x140055dd0
nop dword [rax]
mov eax, dword [rdx]
add rdx, 4
movzx ebx, al
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0x3fc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0x7fc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0xbfc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0xffc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0x13fc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
movzx ebx, al
mov dword [rdx + 0x17fc], eax
shr eax, 8
xor eax, dword [rcx + rbx*4]
mov dword [rdx + 0x1bfc], eax
cmp r11, rdx
jne 0x140055f18
mov dword [0x14022aec0], 1
jmp 0x140055bba
mov eax, r9d
jmp 0x140055c05
mov eax, edx
not eax
jmp 0x140055c05