Function at 0x14003b450
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 [0x1403a6f08]
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 rcx, 0xc
or rcx, rax
movzx r10d, byte [rbx + rsi - 0x22]
shl r10, 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 rax, 0xf
mov qword [rsp + 0x30], rax
movzx r12d, byte [rbx + rsi - 0x28]
shl r12, 7
mov edi, dword [rbx + rsi - 0x3c]
mov ebp, dword [rbx + rsi - 0x2c]
mov r9, rbp
shl r9, 0x1a
movzx r15d, byte [rbx + rsi - 0x2d]
shl r15, 0x12
movzx r13d, byte [rbx + rsi - 0x30]
movzx eax, byte [rbx + rsi - 0x36]
mov rdx, rax
shl rdx, 0x30
movzx r8d, byte [rbx + rsi - 0x37]
shl r8, 0x28
movabs r11, 0x7000000000000
and rdx, r11
or rdx, r8
mov r8, r13
shl r8, 0x2d
or rdx, rdi
movzx edi, byte [rbx + rsi - 0x38]
shl rdi, 0x20
or rdx, rdi
movzx edi, byte [rbx + rsi - 0x31]
shl rdi, 0x25
movabs r11, 0x7e00000000000
and r8, r11
or r8, rdi
movzx edi, byte [rbx + rsi - 0x32]
shl rdi, 0x1d
or r8, rdi
movzx edi, byte [rbx + rsi - 0x33]
shl rdi, 0x15
or r8, rdi
movzx edi, byte [rbx + rsi - 0x34]
shl rdi, 0xd
or r8, rdi
movzx edi, byte [rbx + rsi - 0x35]
shl rdi, 5
or r8, rdi
movzx edi, byte [rbx + rsi - 0x2e]
shl rdi, 0xa
shr rax, 3
or r8, rax
movzx eax, byte [rbx + rsi - 0x2f]
shr r13, 6
movabs r11, 0x7fffffc000000
and r9, r11
or r9, r15
or r9, rdi
lea rax, [r9 + rax*4]
or rax, r13
mov r9, rax
mov qword [rsp + 0x38], rax
shr rbp, 0x19
and rcx, qword [rsp + 0x28]
add rcx, qword [rsp + 0x30]
or rcx, r12
or rcx, rbp
mov rax, qword [rsp + 0x20]
shr rax, 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 r10, 0xc
or r10, rax
movzx r11d, byte [rbx + rsi - 2]
shl r11, 4
or r11, r10
mov r10d, dword [rbx + rsi - 6]
mov edi, dword [rbx + rsi - 0x1c]
mov r12d, dword [rbx + rsi - 0xc]
movzx r13d, byte [rbx + rsi - 0x10]
movzx eax, byte [rbx + rsi - 0x16]
mov rbp, rax
shl rbp, 0x30
movzx r15d, byte [rbx + rsi - 0x17]
shl r15, 0x28
movabs r9, 0x7000000000000
and rbp, r9
or rbp, r15
mov r15, r13
shl r15, 0x2d
or rbp, rdi
movzx edi, byte [rbx + rsi - 0x18]
shl rdi, 0x20
or rbp, rdi
movzx edi, byte [rbx + rsi - 0x11]
shl rdi, 0x25
movabs r9, 0x7e00000000000
and r15, r9
or r15, rdi
movzx edi, byte [rbx + rsi - 0x12]
shl rdi, 0x1d
or r15, rdi
movzx edi, byte [rbx + rsi - 0x13]
shl rdi, 0x15
or r15, rdi
movzx edi, byte [rbx + rsi - 0x14]
shl rdi, 0xd
or r15, rdi
movzx edi, byte [rbx + rsi - 0x15]
shl rdi, 5
or r15, rdi
mov rdi, r12
shl rdi, 0x1a
shr rax, 3
or r15, rax
movzx eax, byte [rbx + rsi - 0xd]
shl rax, 0x12
movabs r9, 0x7fffffc000000
and rdi, r9
or rdi, rax
movzx eax, byte [rbx + rsi - 0xe]
shl rax, 0xa
or rdi, rax
movzx eax, byte [rbx + rsi - 0xf]
lea rax, [rdi + rax*4]
mov rdi, r10
shl rdi, 0x17
shr r13, 6
or rax, r13
movzx r13d, byte [rbx + rsi - 7]
shl r13, 0xf
and rdi, qword [rsp + 0x28]
or rdi, r13
movzx r13d, byte [rbx + rsi - 8]
shl r13, 7
or rdi, r13
shr r12, 0x19
or rdi, r12
shr r10, 0x1c
or r10, r11
lea r11, [rdx + rbp]
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, [rdi + rcx]
mov qword [r14 - 0x38], r11
mov r12, qword [rsp + 0x20]
lea r11, [r10 + r12]
mov qword [r14 - 0x30], r11
mov qword [rsp + 0x50], rbp
sub rbp, rdx
mov qword [rsp + 0x58], r15
sub r15, r8
mov qword [rsp + 0x60], rax
sub rax, r9
mov qword [rsp + 0x68], rdi
sub rdi, rcx
mov qword [rsp + 0x70], r10
sub r10, r12
movabs rcx, 0xffffffffffffe
add rcx, rbp
add rcx, 0xffffffffffffffdc
mov qword [r14 - 0x28], rcx
movabs rcx, 0xffffffffffffe
add r15, rcx
mov qword [r14 - 0x20], r15
add rax, rcx
mov qword [r14 - 0x18], rax
movabs rax, 0xffffffffffffe
add rdi, rax
mov qword [r14 - 0x10], rdi
add r10, rax
mov qword [r14 - 8], r10
mov rcx, r14
lea rdx, [rsp + 0xf0]
lea r8, [rsp + 0x50]
call fcn.140044850
mov rcx, r14
mov rdx, r14
lea r8, [0x1402e36e0]
call fcn.140044850
add r14, 0x78
add rsi, 0x40
cmp rsi, 0x3fc
jne 0x14003b4f0
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 [0x1402e35c0]
movdqa xmm7, xmmword [0x1402e3680]
movabs rbp, 0xffffffff00000000
mov rbx, qword [rsp + 0x30]
nop word cs:[rax + rax]
mov eax, ecx
shr rax, 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 r9d, ecx
xor r9d, eax
shl r9, 0x20
add r9, rbp
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 0x14003b9a0
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 rsi, qword [rsp + 0x40]
mov rax, qword [rsi + 0x28]
mov r10, qword [rsi]
mov r11, qword [rsi + 8]
lea rdi, [r10 + rax]
mov rcx, qword [rsi + 0x30]
mov rdx, qword [rsi + 0x38]
mov r13, qword [rsi + 0x10]
mov r8, qword [rsi + 0x40]
mov r12, qword [rsi + 0x18]
mov r9, qword [rsi + 0x48]
mov r15, qword [rsi + 0x20]
mov qword [rsp + 0xf0], rdi
lea rdi, [r11 + rcx]
mov qword [rsp + 0xf8], rdi
lea rdi, [r13 + rdx]
mov qword [rsp + 0x100], rdi
lea rdi, [r12 + r8]
mov qword [rsp + 0x108], rdi
lea rdi, [r15 + r9]
mov qword [rsp + 0x110], rdi
movabs rdi, 0xffffffffffffe
add rax, rdi
sub rax, r10
add rcx, rdi
sub rcx, r11
add rdx, rdi
sub rdx, r13
add r8, rdi
sub r8, r12
add r9, rdi
sub r9, r15
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 r15, qword [rsp + 0x38]
mov rdx, r15
lea r8, [0x1402e36e0]
call fcn.140044850
lea rdi, [rsp + 0x50]
mov rcx, rdi
mov rdx, rsi
lea r8, [rsp + 0xf0]
call fcn.14003ae30
mov rcx, rsi
mov rdx, rdi
lea r12, [rsp + 0xc8]
mov r8, r12
call fcn.140044850
mov rdi, qword [rsp + 0x28]
mov rcx, rdi
lea rdx, [rsp + 0x78]
lea r13, [rsp + 0xa0]
mov r8, r13
call fcn.140044850
mov rcx, rbx
mov rdx, r13
mov r8, r12
call fcn.140044850
mov rcx, r15
lea r14, [rsp + 0x50]
mov rdx, r14
lea r8, [rsp + 0x78]
call fcn.140044850
mov rcx, r14
mov rdx, rsi
lea r8, [rsp + 0x190]
call fcn.14003bd10
mov rcx, rsi
mov rdx, r14
mov r8, r12
call fcn.140044850
mov rcx, rdi
lea rsi, [rsp + 0x78]
mov rdx, rsi
mov r8, r13
call fcn.140044850
mov rcx, rbx
mov rdx, r13
mov r8, r12
call fcn.140044850
mov rcx, r15
mov rdx, r14
mov r8, rsi
call fcn.140044850
mov ecx, dword [rsp + 0x20]
dec ecx
cmp ecx, 0x40
jb 0x14003b910
mov rcx, qword [rsp + 0x918]
xor rcx, rsp
call fcn.140263800
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