Function at 0x14003c5a0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x9a8
movdqa xmmword [rsp + 0x990], xmm13
movdqa xmmword [rsp + 0x980], xmm12
movdqa xmmword [rsp + 0x970], xmm11
movdqa xmmword [rsp + 0x960], xmm10
movdqa xmmword [rsp + 0x950], xmm9
movdqa xmmword [rsp + 0x940], xmm8
movaps xmmword [rsp + 0x930], xmm7
movaps xmmword [rsp + 0x920], xmm6
mov rbx, r8
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x40], rcx
mov rax, qword [0x1403a6f68]
xor rax, rsp
mov qword [rsp + 0x918], rax
movabs rax, 0x7fffffc000000
mov esi, 0x3c
lea r14, [rsp + 0x260]
add rax, 0x3800000
mov qword [rsp + 0x28], rax
mov eax, dword [rbx + rsi - 0x20]
shl rax, 0x14
movzx ecx, byte [rbx + rsi - 0x21]
shl ecx, 0xc
or rcx, rax
movzx r10d, byte [rbx + rsi - 0x22]
shl r10d, 4
or r10, rcx
mov ecx, dword [rbx + rsi - 0x26]
mov qword [rsp + 0x20], rcx
shl rcx, 0x17
movzx eax, byte [rbx + rsi - 0x27]
shl eax, 0xf
mov qword [rsp + 0x30], rax
movzx r15d, byte [rbx + rsi - 0x28]
shl r15d, 7
mov eax, dword [rbx + rsi - 0x3c]
mov r12d, dword [rbx + rsi - 0x2c]
mov r9, r12
shl r9, 0x1a
movzx r13d, byte [rbx + rsi - 0x2d]
shl r13d, 0x12
movzx ebp, byte [rbx + rsi - 0x30]
movzx edi, byte [rbx + rsi - 0x36]
mov rdx, rdi
shl rdx, 0x30
movzx r8d, byte [rbx + rsi - 0x37]
shl r8, 0x28
movabs r11, 0x7000000000000
and rdx, r11
or rdx, r8
mov r8, rbp
shl r8, 0x2d
or rdx, rax
movzx eax, byte [rbx + rsi - 0x38]
shl rax, 0x20
or rdx, rax
movzx eax, byte [rbx + rsi - 0x31]
shl rax, 0x25
movabs r11, 0x7e00000000000
and r8, r11
or r8, rax
movzx eax, byte [rbx + rsi - 0x32]
shl rax, 0x1d
or r8, rax
movzx eax, byte [rbx + rsi - 0x33]
shl eax, 0x15
or r8, rax
movzx eax, byte [rbx + rsi - 0x34]
shl eax, 0xd
or r8, rax
movzx eax, byte [rbx + rsi - 0x35]
shl eax, 5
or r8, rax
movzx eax, byte [rbx + rsi - 0x2e]
shl eax, 0xa
shr edi, 3
or r8, rdi
movzx edi, byte [rbx + rsi - 0x2f]
shr ebp, 6
movabs r11, 0x7fffffc000000
and r9, r11
or r9, r13
or r9, rax
lea rax, [r9 + rdi*4]
or rax, rbp
mov r9, rax
mov qword [rsp + 0x38], rax
shr r12d, 0x19
and rcx, qword [rsp + 0x28]
add rcx, qword [rsp + 0x30]
or rcx, r15
or rcx, r12
mov rax, qword [rsp + 0x20]
shr eax, 0x1c
or rax, r10
mov qword [rsp + 0x20], rax
mov qword [rsp + 0xf0], rdx
mov qword [rsp + 0xf8], r8
mov qword [rsp + 0x100], r9
mov qword [rsp + 0x108], rcx
mov qword [rsp + 0x110], rax
mov eax, dword [rbx + rsi]
shl rax, 0x14
movzx r10d, byte [rbx + rsi - 1]
shl r10d, 0xc
or r10, rax
movzx r11d, byte [rbx + rsi - 2]
shl r11d, 4
or r11, r10
mov edi, dword [rbx + rsi - 6]
mov eax, dword [rbx + rsi - 0x1c]
mov ebp, dword [rbx + rsi - 0xc]
movzx r13d, byte [rbx + rsi - 0x10]
movzx r10d, byte [rbx + rsi - 0x16]
mov r12, r10
shl r12, 0x30
movzx r15d, byte [rbx + rsi - 0x17]
shl r15, 0x28
movabs r9, 0x7000000000000
and r12, r9
or r12, r15
mov r15, r13
shl r15, 0x2d
or r12, rax
movzx eax, byte [rbx + rsi - 0x18]
shl rax, 0x20
or r12, rax
movzx eax, byte [rbx + rsi - 0x11]
shl rax, 0x25
movabs r9, 0x7e00000000000
and r15, r9
or r15, rax
movzx eax, byte [rbx + rsi - 0x12]
shl rax, 0x1d
or r15, rax
movzx eax, byte [rbx + rsi - 0x13]
shl eax, 0x15
or r15, rax
movzx eax, byte [rbx + rsi - 0x14]
shl eax, 0xd
or r15, rax
movzx eax, byte [rbx + rsi - 0x15]
shl eax, 5
or r15, rax
mov rax, rbp
shl rax, 0x1a
shr r10d, 3
or r15, r10
movzx r10d, byte [rbx + rsi - 0xd]
shl r10d, 0x12
movabs r9, 0x7fffffc000000
and rax, r9
or rax, r10
movzx r10d, byte [rbx + rsi - 0xe]
shl r10d, 0xa
or rax, r10
movzx r10d, byte [rbx + rsi - 0xf]
lea rax, [rax + r10*4]
mov r10, rdi
shl r10, 0x17
shr r13d, 6
or rax, r13
movzx r13d, byte [rbx + rsi - 7]
shl r13d, 0xf
and r10, qword [rsp + 0x28]
or r10, r13
movzx r13d, byte [rbx + rsi - 8]
shl r13d, 7
or r10, r13
shr ebp, 0x19
or r10, rbp
movabs r13, 0xffffffffffffe
shr edi, 0x1c
or rdi, r11
lea r11, [r12 + rdx]
mov qword [r14 - 0x50], r11
lea r11, [r15 + r8]
mov qword [r14 - 0x48], r11
mov r9, qword [rsp + 0x38]
lea r11, [rax + r9]
mov qword [r14 - 0x40], r11
lea r11, [r10 + rcx]
mov qword [r14 - 0x38], r11
mov rbp, qword [rsp + 0x20]
lea r11, [rdi + rbp]
mov qword [r14 - 0x30], r11
mov qword [rsp + 0x50], r12
sub r12, rdx
mov qword [rsp + 0x58], r15
sub r15, r8
mov qword [rsp + 0x60], rax
sub rax, r9
mov qword [rsp + 0x68], r10
sub r10, rcx
mov qword [rsp + 0x70], rdi
sub rdi, rbp
lea rcx, [r12 + r13]
add rcx, 0xffffffffffffffdc
mov qword [r14 - 0x28], rcx
add r15, r13
mov qword [r14 - 0x20], r15
add rax, r13
mov qword [r14 - 0x18], rax
add r10, r13
mov qword [r14 - 0x10], r10
add rdi, r13
mov qword [r14 - 8], rdi
mov rcx, r14
lea rdx, [rsp + 0xf0]
lea r8, [rsp + 0x50]
call fcn.140045b60
mov rcx, r14
mov rdx, r14
lea r8, [0x1402ae290]
call fcn.140045b60
add r14, 0x78
add rsi, 0x40
cmp rsi, 0x3fc
jne 0x14003c640
pxor xmm0, xmm0
mov rax, qword [rsp + 0x40]
movdqu xmmword [rax + 0x10], xmm0
movdqu xmmword [rax], xmm0
mov qword [rax + 0x20], 0
lea rcx, [rax + 0x28]
mov qword [rsp + 0x28], rcx
movdqu xmmword [rax + 0x30], xmm0
movdqu xmmword [rax + 0x40], xmm0
mov qword [rax + 0x28], 1
lea rcx, [rax + 0x50]
mov qword [rsp + 0x30], rcx
movdqu xmmword [rax + 0x58], xmm0
movdqu xmmword [rax + 0x68], xmm0
mov qword [rax + 0x50], 1
lea rcx, [rax + 0x78]
mov qword [rsp + 0x38], rcx
movdqu xmmword [rax + 0x78], xmm0
movdqu xmmword [rax + 0x88], xmm0
mov qword [rax + 0x98], 0
mov ecx, 0x3f
movdqa xmm6, xmmword [0x1402ae120]
movdqa xmm7, xmmword [0x1402ae1e0]
mov r15, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x30]
nop
mov eax, ecx
shr eax, 3
mov r10, qword [rsp + 0x48]
movzx edx, byte [r10 + rax]
mov dword [rsp + 0x20], ecx
and cl, 7
movzx ecx, cl
xor r8d, r8d
bt edx, ecx
setb r8b
movzx edx, byte [r10 + rax + 8]
shr rdx, cl
and edx, 1
movzx r9d, byte [r10 + rax + 0x10]
shr r9, cl
lea rdx, [r8 + rdx*2]
and r9d, 1
lea rdx, [rdx + r9*4]
movzx eax, byte [r10 + rax + 0x18]
shr rax, cl
and eax, 1
lea rax, [rdx + rax*8]
mov ecx, 1
lea rdx, [rsp + 0x280]
xor r10d, r10d
movdqa xmm0, xmm7
pxor xmm8, xmm8
movdqa xmm5, xmm6
pxor xmm4, xmm4
pxor xmm2, xmm2
pxor xmm3, xmm3
pxor xmm1, xmm1
nop word cs:[rax + rax]
mov r8, r10
mov r9, rcx
xor r9, rax
dec r9
movq xmm9, r9
sar r9, 0x3f
pshufd xmm9, xmm9, 0x55
psrad xmm9, 0x1f
movdqa xmm10, xmm9
pandn xmm10, xmm0
movdqu xmm0, xmmword [rdx - 0x70]
movdqa xmm11, xmm9
pandn xmm11, xmm8
movdqu xmm8, xmmword [rdx - 0x60]
movdqa xmm12, xmm9
pandn xmm12, xmm5
movdqu xmm5, xmmword [rdx - 0x50]
movdqa xmm13, xmm9
pandn xmm13, xmm4
movdqu xmm4, xmmword [rdx - 0x40]
pand xmm0, xmm9
por xmm0, xmm10
pand xmm8, xmm9
por xmm8, xmm11
pand xmm5, xmm9
por xmm5, xmm12
pand xmm4, xmm9
por xmm4, xmm13
movdqa xmm10, xmm9
pandn xmm10, xmm2
movdqu xmm2, xmmword [rdx - 0x30]
pand xmm2, xmm9
por xmm2, xmm10
movdqa xmm10, xmm9
pandn xmm10, xmm3
movdqu xmm3, xmmword [rdx - 0x20]
pand xmm3, xmm9
por xmm3, xmm10
movdqu xmm10, xmmword [rdx - 0x10]
pand xmm10, xmm9
pandn xmm9, xmm1
movdqa xmm1, xmm9
por xmm1, xmm10
mov r10, qword [rdx]
xor r10, r8
and r10, r9
xor r10, r8
inc rcx
add rdx, 0x78
cmp rcx, 0x10
jne 0x14003cac0
movdqa xmmword [rsp + 0x190], xmm0
movdqa xmmword [rsp + 0x1a0], xmm8
movdqa xmmword [rsp + 0x1b0], xmm5
movdqa xmmword [rsp + 0x1c0], xmm4
movdqa xmmword [rsp + 0x1d0], xmm2
movdqa xmmword [rsp + 0x1e0], xmm3
movdqa xmmword [rsp + 0x1f0], xmm1
mov qword [rsp + 0x200], r10
mov rax, qword [r15 + 0x28]
mov r13, qword [r15]
mov r11, qword [r15 + 8]
lea rbp, [r13 + rax]
mov rcx, qword [r15 + 0x30]
mov rdx, qword [r15 + 0x38]
mov r12, qword [r15 + 0x10]
mov r8, qword [r15 + 0x40]
mov rdi, qword [r15 + 0x18]
mov r9, qword [r15 + 0x48]
mov r10, qword [r15 + 0x20]
mov qword [rsp + 0xf0], rbp
lea rbp, [r11 + rcx]
mov qword [rsp + 0xf8], rbp
lea rbp, [r12 + rdx]
mov qword [rsp + 0x100], rbp
lea rbp, [rdi + r8]
mov qword [rsp + 0x108], rbp
lea rbp, [r10 + r9]
mov qword [rsp + 0x110], rbp
movabs rbp, 0xffffffffffffe
add rax, rbp
sub rax, r13
add rcx, rbp
sub rcx, r11
add rdx, rbp
sub rdx, r12
add r8, rbp
sub r8, rdi
add r9, rbp
sub r9, r10
add rax, 0xffffffffffffffdc
mov qword [rsp + 0x118], rax
mov qword [rsp + 0x120], rcx
mov qword [rsp + 0x128], rdx
mov qword [rsp + 0x130], r8
mov qword [rsp + 0x138], r9
mov rax, qword [rbx + 0x20]
lea rcx, [rsp + 0x140]
mov qword [rcx + 0x20], rax
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbx + 0x10]
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rcx], xmm0
lea rcx, [rsp + 0x168]
mov r12, qword [rsp + 0x38]
mov rdx, r12
lea r8, [0x1402ae290]
call fcn.140045b60
lea r14, [rsp + 0x50]
mov rcx, r14
mov rdx, r15
lea r8, [rsp + 0xf0]
call fcn.14003bf80
mov rcx, r15
mov rdx, r14
lea r13, [rsp + 0xc8]
mov r8, r13
call fcn.140045b60
mov rdi, qword [rsp + 0x28]
mov rcx, rdi
lea rsi, [rsp + 0x78]
mov rdx, rsi
lea rbp, [rsp + 0xa0]
mov r8, rbp
call fcn.140045b60
mov rcx, rbx
mov rdx, rbp
mov r8, r13
call fcn.140045b60
mov rcx, r12
mov rdx, r14
mov r8, rsi
call fcn.140045b60
mov rcx, r14
mov rdx, r15
lea r8, [rsp + 0x190]
call fcn.14003ce20
mov rcx, r15
mov rdx, r14
mov r8, r13
call fcn.140045b60
mov rcx, rdi
mov rdx, rsi
mov r8, rbp
call fcn.140045b60
mov rcx, rbx
mov rdx, rbp
mov r8, r13
call fcn.140045b60
mov rcx, r12
mov rdx, r14
mov r8, rsi
call fcn.140045b60
mov ecx, dword [rsp + 0x20]
dec ecx
cmp ecx, 0x40
jb 0x14003ca30
mov rcx, qword [rsp + 0x918]
xor rcx, rsp
call fcn.140262cb0
movaps xmm6, xmmword [rsp + 0x920]
movaps xmm7, xmmword [rsp + 0x930]
movaps xmm8, xmmword [rsp + 0x940]
movaps xmm9, xmmword [rsp + 0x950]
movaps xmm10, xmmword [rsp + 0x960]
movaps xmm11, xmmword [rsp + 0x970]
movaps xmm12, xmmword [rsp + 0x980]
movaps xmm13, xmmword [rsp + 0x990]
add rsp, 0x9a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret