Function at 0x140046c50
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov rbp, rsp
push r15
push r14
mov r14, r9
push r13
push r12
push rdi
mov rdi, rcx
push rsi
push rbx
and rsp, 0xfffffffffffffff0
sub rsp, 0x60
mov rax, qword [rbp + 0x30]
mov ecx, dword [rbp + 0x38]
mov qword [rbp + 0x18], rdx
mov dword [rbp + 0x20], r8d
mov esi, dword [rax]
mov ebx, dword [rax + 4]
mov eax, r8d
sub eax, 8
bswap esi
bswap ebx
movd xmm0, esi
movd xmm5, ebx
mov dword [rsp + 0x2c], eax
punpckldq xmm0, xmm5
test ecx, ecx
je 0x140046f50
test eax, eax
js 0x140047168
shr eax, 3
mov rsi, rdx
lea r15, [rsp + 0x48]
mov dword [rsp + 0x38], eax
add eax, 1
lea r13, [rax*8]
lea rbx, [rdi + r13]
nop dword [rax]
mov eax, dword [rdi]
mov edx, dword [rdi + 4]
mov rcx, r15
add rsi, 8
add rdi, 8
bswap eax
bswap edx
movd xmm1, eax
movd xmm2, edx
punpckldq xmm1, xmm2
mov rdx, r14
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.1400476f0
movq xmm0, qword [rsp + 0x48]
pshufd xmm3, xmm0, 0xe5
movd eax, xmm3
movd r12d, xmm3
movd r11d, xmm3
shr r12d, 8
movzx eax, al
shr r11d, 0x10
movd r10d, xmm3
movzx r12d, r12b
shl rax, 8
movzx r11d, r11b
movd ecx, xmm0
or rax, r12
shr r10d, 0x18
movd r9d, xmm0
movd edx, xmm0
shl rax, 8
movzx r10d, r10b
movd r8d, xmm0
shr ecx, 0x10
or rax, r11
movzx r9d, r9b
shr r8d, 8
movzx ecx, cl
shl rax, 8
movzx r8d, r8b
shr edx, 0x18
or rax, r10
movzx edx, dl
shl rax, 8
or rax, r9
shl rax, 8
or rax, r8
shl rax, 8
or rax, rcx
shl rax, 8
or rax, rdx
mov qword [rsi - 8], rax
cmp rdi, rbx
jne 0x140046cd0
mov edx, dword [rsp + 0x38]
add qword [rbp + 0x18], r13
mov eax, dword [rbp + 0x20]
neg edx
shl edx, 3
lea ecx, [rax + rdx - 0x10]
add edx, dword [rsp + 0x2c]
movsxd rdx, edx
lea r8, [rsp + 0x50]
test rdx, rdx
je 0x140046ddc
xor eax, eax
movzx r9d, byte [rbx + rax]
mov byte [r8 + rax], r9b
add rax, 1
cmp rax, rdx
jb 0x140046dca
mov eax, dword [rbp + 0x20]
mov dword [rsp + rdx + 0x50], eax
lea edx, [rcx + 0xd]
add ecx, 0xc
neg edx
and edx, 7
je 0x140046e07
movsxd rax, ecx
add r8, rax
xor eax, eax
mov r9d, eax
add eax, 1
mov byte [r8 + r9], 0x10
cmp eax, edx
jb 0x140046df8
lea eax, [rdx + rcx]
mov rcx, r15
mov dword [rsp + 0x20], eax
cdqe
mov byte [rsp + rax + 0x50], dl
mov eax, dword [rsp + 0x50]
mov edx, dword [rsp + 0x54]
bswap eax
movd xmm1, eax
bswap edx
movd xmm5, edx
mov rdx, r14
punpckldq xmm1, xmm5
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.1400476f0
movq xmm0, qword [rsp + 0x48]
pshufd xmm5, xmm0, 0xe5
movd eax, xmm5
movd esi, xmm5
movd r11d, xmm5
shr esi, 8
mov ebx, eax
movzx eax, al
shr r11d, 0x10
shl rax, 8
mov byte [rsp + 0x2c], sil
movzx esi, sil
mov ecx, r11d
or rax, rsi
movd edi, xmm0
movd r10d, xmm5
movzx r11d, r11b
shl rax, 8
shr edi, 0x18
movd edx, xmm0
movd r9d, xmm0
shr r10d, 0x18
or rax, r11
mov dword [rsp + 0x28], edi
mov r13d, edx
shl rax, 8
mov byte [rsp + 0x38], dil
mov edi, r10d
movzx r10d, r10b
or rax, r10
movzx edx, dl
shr r9d, 8
movd r8d, xmm0
shl rax, 8
mov byte [rsp + 0x30], r9b
movzx r9d, r9b
shr r8d, 0x10
or rax, rdx
mov r12d, r8d
movzx r8d, r8b
movzx edx, byte [rsp + 0x28]
shl rax, 8
mov rsi, qword [rbp + 0x18]
or rax, r9
shl rax, 8
or rax, r8
shl rax, 8
or rax, rdx
cmp dword [rsp + 0x20], 0xf
mov qword [rsi], rax
je 0x140047190
mov rax, qword [rbp + 0x30]
movzx esi, byte [rsp + 0x38]
mov byte [rax + 4], dil
movzx edi, byte [rsp + 0x2c]
mov byte [rax], sil
movzx esi, byte [rsp + 0x30]
mov byte [rax + 1], r12b
mov byte [rax + 2], sil
mov byte [rax + 3], r13b
mov byte [rax + 5], cl
mov byte [rax + 6], dil
mov byte [rax + 7], bl
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
test eax, eax
js 0x140047180
shr eax, 3
lea r15, [rsp + 0x48]
mov qword [rbp + 0x10], rdi
mov r12, rdi
mov dword [rsp + 0x28], eax
add eax, 1
mov rdi, qword [rbp + 0x18]
shl rax, 3
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x20], rax
add rax, qword [rbp + 0x18]
mov qword [rsp + 0x38], rax
nop dword [rax]
mov r13d, ebx
mov r15d, esi
mov ebx, dword [r12 + 4]
mov esi, dword [r12]
mov rcx, qword [rsp + 0x30]
mov rdx, r14
add rdi, 8
add r12, 8
bswap esi
bswap ebx
movd xmm0, esi
movd xmm4, ebx
punpckldq xmm0, xmm4
movq qword [rsp + 0x48], xmm0
call fcn.140047280
mov eax, dword [rsp + 0x4c]
mov edx, dword [rsp + 0x48]
xor eax, r13d
xor edx, r15d
mov r13d, eax
mov r10d, eax
mov r11d, eax
movzx eax, al
shr r13d, 8
shl rax, 8
mov ecx, edx
mov r8d, edx
shr r11d, 0x10
movzx r13d, r13b
shr r10d, 0x18
mov r9d, edx
or rax, r13
movzx r11d, r11b
movzx r10d, r10b
movzx edx, dl
shl rax, 8
shr r9d, 8
shr r8d, 0x10
or rax, r11
shr ecx, 0x18
shl rax, 8
or rax, r10
shl rax, 8
or rax, rdx
movzx edx, r9b
shl rax, 8
mov r9, rax
movzx eax, r8b
or r9, rdx
shl r9, 8
mov r8, r9
or r8, rax
movzx eax, cl
mov rcx, r8
shl rcx, 8
or rcx, rax
mov qword [rdi - 8], rcx
cmp rdi, qword [rsp + 0x38]
jne 0x140046f90
mov eax, dword [rsp + 0x28]
mov ecx, dword [rbp + 0x20]
mov rdi, qword [rbp + 0x10]
add rdi, qword [rsp + 0x20]
neg eax
shl eax, 3
lea edx, [rcx + rax - 0x10]
add eax, dword [rsp + 0x2c]
mov dword [rbp + 0x20], eax
cmp edx, 0xfffffff8
je 0x14004712d
mov r12d, dword [rdi]
mov edi, dword [rdi + 4]
mov rdx, r14
lea rcx, [rsp + 0x48]
bswap r12d
bswap edi
movd xmm0, r12d
movd xmm5, edi
punpckldq xmm0, xmm5
movq qword [rsp + 0x48], xmm0
call fcn.140047280
movsxd rdx, dword [rbp + 0x20]
xor esi, dword [rsp + 0x48]
xor ebx, dword [rsp + 0x4c]
add rdx, qword [rsp + 0x38]
cmp dword [rbp + 0x20], 7
ja case.0x1400470e6.0
mov eax, dword [rbp + 0x20]
lea rcx, [0x1403ccfb0]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov byte [rdx - 1], bh
sub rdx, 1
mov eax, ebx
sub rdx, 1
shr eax, 0x10
mov byte [rdx], al
shr ebx, 0x18
lea rax, [rdx - 1]
mov byte [rdx - 1], bl
mov byte [rax - 1], sil
lea rdx, [rax - 1]
mov ebx, esi
lea rax, [rdx - 1]
mov byte [rdx - 1], bh
mov ecx, esi
lea rdx, [rax - 1]
shr ecx, 0x10
mov byte [rax - 1], cl
shr esi, 0x18
mov ebx, edi
mov byte [rdx - 1], sil
mov esi, r12d
mov eax, esi
mov ecx, ebx
mov r13d, esi
shr eax, 0x18
shr ecx, 0x10
mov dword [rsp + 0x38], eax
mov eax, esi
shr eax, 0x10
mov r12d, eax
mov eax, esi
movzx eax, ah
mov dword [rsp + 0x30], eax
mov eax, ebx
shr eax, 0x18
mov edi, eax
movzx eax, bh
mov dword [rsp + 0x2c], eax
jmp 0x140046f09
mov edx, r8d
mov ecx, eax
lea r15, [rsp + 0x48]
mov rbx, rdi
jmp 0x140046dbb
mov edx, eax
mov rax, qword [rbp + 0x18]
mov qword [rsp + 0x38], rax
jmp 0x140047086
mov eax, dword [rsp + 0x58]
mov edx, dword [rsp + 0x5c]
mov rcx, r15
bswap eax
bswap edx
movd xmm1, eax
movd xmm5, edx
punpckldq xmm1, xmm5
mov rdx, r14
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.1400476f0
mov eax, dword [rsp + 0x4c]
mov edx, dword [rsp + 0x48]
mov r9d, eax
mov r10d, eax
mov r8d, eax
mov ebx, eax
shr r9d, 8
movzx eax, al
shr r8d, 0x10
mov r14d, edx
mov byte [rsp + 0x2c], r9b
shl rax, 8
movzx r9d, r9b
mov ecx, r8d
or rax, r9
movzx r8d, r8b
shr r10d, 0x18
mov esi, edx
shl rax, 8
mov r11d, edx
mov r13d, edx
movzx edx, dl
shr r11d, 8
or rax, r8
movzx r8d, r10b
shr esi, 0x10
shl rax, 8
mov r12d, esi
movzx esi, sil
shr r14d, 0x18
or rax, r8
mov byte [rsp + 0x38], r14b
movzx r14d, r14b
mov edi, r10d
shl rax, 8
mov byte [rsp + 0x30], r11b
or rax, rdx
movzx edx, r11b
shl rax, 8
or rax, rdx
shl rax, 8
or rax, rsi
mov rsi, qword [rbp + 0x18]
shl rax, 8
or rax, r14
mov qword [rsi + 8], rax
jmp 0x140046f09
mov rax, rdx
jmp 0x140047115
mov rax, rdx
jmp 0x140047104
mov ebx, edi
mov esi, r12d
jmp 0x14004712d