Function at 0x830560
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
test ecx, ecx
mov dword [rsp + 0x6c], ecx
setle bl
test rdx, rdx
mov qword [rsp + 0x70], rdx
sete al
or ebx, eax
cmp byte [0x00869364], 0
je 0x830b58
mov ecx, 5
call qword [0x008693d0]
mov qword [rsp + 0x78], rax
test rax, rax
je 0x830b58
mov rcx, rax
call qword [0x008693e0]
test bl, bl
jne 0x8309b8
mov ebx, dword [0x00869580]
test ebx, ebx
je 0x8309e8
movzx edx, byte [0x00869600]
mov rax, rdx
cmp dword [rsp + 0x6c], edx
jle 0x830aa0
test dl, dl
jne 0x83096c
nop word [rax + rax]
mov edx, dword [0x00869598]
mov ecx, dword [0x00869594]
mov eax, dword [0x008695b0]
mov r13d, dword [0x00869580]
mov esi, dword [0x00869584]
mov dword [rsp + 0x24], ecx
mov ecx, edx
mov dword [rsp + 0x68], edx
mov r10d, dword [0x00869588]
add eax, 1
mov ebx, dword [0x0086958c]
mov edi, dword [0x00869590]
mov dword [rsp + 0x3c], eax
mov r15d, dword [0x0086959c]
mov r9d, dword [0x008695a0]
mov dword [0x008695b0], eax
mov ebp, dword [0x008695ac]
mov r11d, dword [0x008695a4]
mov dword [rsp + 0x48], r13d
mov r12d, dword [0x008695a8]
mov r8d, dword [0x008695b4]
mov dword [rsp + 0x44], esi
mov edx, dword [0x008695b8]
mov r14d, dword [0x008695bc]
mov dword [rsp + 0x38], r10d
mov dword [rsp + 0x34], ebx
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x54], r9d
mov dword [rsp + 0x5c], r11d
mov dword [rsp + 0x40], r12d
mov dword [rsp + 0x58], ebp
mov dword [rsp + 0x50], r8d
mov dword [rsp + 0x4c], edx
mov dword [rsp + 0x64], r14d
mov dword [rsp + 0x28], ecx
mov ecx, dword [rsp + 0x24]
mov dword [rsp + 0x2c], 0xa
mov dword [rsp + 0x20], ecx
mov ecx, dword [rsp + 0x28]
nop dword [rax + rax]
add r13d, edi
add r10d, ecx
xor eax, r13d
xor edx, r10d
rol eax, 0x10
rol edx, 0x10
add r9d, eax
add r12d, edx
xor edi, r9d
xor ecx, r12d
rol edi, 0xc
rol ecx, 0xc
add r13d, edi
add r10d, ecx
xor eax, r13d
xor edx, r10d
rol eax, 8
add r9d, eax
xor edi, r9d
mov dword [rsp + 0x28], r9d
mov r9d, dword [rsp + 0x20]
rol edi, 7
add esi, r9d
xor r8d, esi
rol r8d, 0x10
add r11d, r8d
xor r9d, r11d
rol r9d, 0xc
add esi, r9d
xor r8d, esi
rol r8d, 8
add r11d, r8d
xor r9d, r11d
rol r9d, 7
rol edx, 8
add ebx, r15d
xor r14d, ebx
add r13d, r9d
add r12d, edx
rol r14d, 0x10
xor ecx, r12d
add ebp, r14d
rol ecx, 7
xor r15d, ebp
add esi, ecx
rol r15d, 0xc
xor eax, esi
add ebx, r15d
rol eax, 0x10
xor r14d, ebx
rol r14d, 8
add ebp, r14d
xor r14d, r13d
rol r14d, 0x10
xor r15d, ebp
add ebp, eax
add r12d, r14d
rol r15d, 7
xor r9d, r12d
rol r9d, 0xc
add r13d, r9d
xor r14d, r13d
rol r14d, 8
add r12d, r14d
xor r9d, r12d
rol r9d, 7
xor ecx, ebp
add r10d, r15d
add ebx, edi
xor r8d, r10d
xor edx, ebx
mov dword [rsp + 0x20], r9d
mov r9d, dword [rsp + 0x28]
rol r8d, 0x10
rol edx, 0x10
add r9d, r8d
add r11d, edx
rol ecx, 0xc
xor r15d, r9d
xor edi, r11d
add esi, ecx
rol r15d, 0xc
rol edi, 0xc
xor eax, esi
add r10d, r15d
add ebx, edi
rol eax, 8
xor r8d, r10d
xor edx, ebx
add ebp, eax
rol r8d, 8
rol edx, 8
xor ecx, ebp
add r9d, r8d
add r11d, edx
rol ecx, 7
xor r15d, r9d
xor edi, r11d
rol r15d, 7
rol edi, 7
sub dword [rsp + 0x2c], 1
jne 0x8306c8
movd xmm4, dword [rsp + 0x44]
movd xmm0, dword [rsp + 0x48]
movd xmm5, ebx
movd xmm2, r10d
movd xmm3, dword [rsp + 0x34]
movd xmm1, dword [rsp + 0x38]
punpckldq xmm2, xmm5
mov byte [0x00869600], 0x40
punpckldq xmm0, xmm4
movd xmm5, dword [rsp + 0x24]
movd xmm4, r15d
cmp dword [rsp + 0x6c], 0x40
punpckldq xmm1, xmm3
movdqu xmm3, xmm0
movd xmm0, r13d
punpcklqdq xmm3, xmm1
movdqu xmm1, xmm3
movd xmm3, esi
punpckldq xmm0, xmm3
movd xmm3, dword [rsp + 0x60]
punpcklqdq xmm0, xmm2
movd xmm2, dword [rsp + 0x68]
paddd xmm0, xmm1
movd xmm1, ecx
movups xmmword [0x008695c0], xmm0
punpckldq xmm1, xmm4
punpckldq xmm2, xmm3
movd xmm0, dword [rsp + 0x30]
movd xmm3, r11d
punpckldq xmm0, xmm5
movd xmm5, ebp
movdqu xmm4, xmm0
movd xmm0, edi
punpcklqdq xmm4, xmm1
movdqu xmm1, xmm4
movd xmm4, dword [rsp + 0x20]
punpckldq xmm0, xmm4
movd xmm4, dword [rsp + 0x58]
punpcklqdq xmm0, xmm2
movd xmm2, dword [rsp + 0x54]
paddd xmm0, xmm1
movd xmm1, dword [rsp + 0x40]
movups xmmword [0x008695d0], xmm0
movd xmm0, r9d
punpckldq xmm1, xmm5
movd xmm5, dword [rsp + 0x5c]
punpckldq xmm0, xmm3
movd xmm3, r14d
punpcklqdq xmm0, xmm1
movd xmm1, r12d
punpckldq xmm2, xmm5
punpckldq xmm1, xmm4
movd xmm4, dword [rsp + 0x50]
movdqu xmm5, xmm2
movd xmm2, edx
punpcklqdq xmm5, xmm1
movd xmm1, dword [rsp + 0x4c]
paddd xmm0, xmm5
movd xmm5, dword [rsp + 0x64]
movups xmmword [0x008695e0], xmm0
movd xmm0, dword [rsp + 0x3c]
punpckldq xmm1, xmm3
movd xmm3, r8d
punpckldq xmm2, xmm5
punpckldq xmm0, xmm4
punpcklqdq xmm0, xmm1
movd xmm1, eax
punpckldq xmm1, xmm3
punpcklqdq xmm1, xmm2
paddd xmm0, xmm1
movups xmmword [0x008695f0], xmm0
jle 0x830b48
mov eax, 0x40
lea rsi, [0x008695c0]
cmp eax, 8
jae 0x830b08
test al, 4
jne 0x830bf0
test eax, eax
je 0x83099e
movzx edx, byte [0x008695c0]
mov rbx, qword [rsp + 0x70]
mov byte [rbx], dl
test al, 2
jne 0x830cab
movzx edx, byte [0x00869600]
sub dword [rsp + 0x6c], edx
add qword [rsp + 0x70], rdx
jmp 0x8305f0
mov dword [0x00869580], 0
mov rcx, qword [rsp + 0x78]
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp qword [0x008693f0]
call fcn.0082e1a0
test eax, eax
jne 0x830c0a
cmp byte [0x00869364], 0
mov rsi, qword [0x00869810]
je 0x830a38
mov ecx, 2
call qword [0x008693d0]
mov rsi, qword [0x00869810]
mov r12, rax
test rax, rax
je 0x830a38
mov rcx, rax
call qword [0x008693e0]
mov rsi, qword [0x00869810]
mov rcx, r12
call qword [0x008693f0]
movdqu xmm4, xmmword [str.expand_32_byte_kcume_dist]
movups xmmword [0x00869580], xmm4
test rsi, rsi
je 0x830c19
mov eax, dword [0x00869510]
test eax, eax
jne 0x830c5f
lea r8, [0x00869590]
mov edx, 0x2c
mov rcx, rsi
call qword [rsi + 0x68]
mov ebx, dword [0x008695b0]
mov eax, dword [rsp + 0x6c]
mov dword [0x008695bc], ebx
xor edx, edx
mov dword [0x008695b0], 0
mov byte [0x00869600], 0
test eax, eax
jg 0x8305f0
nop dword [rax + rax]
movsxd rax, dword [rsp + 0x6c]
lea rcx, [0x00869580]
sub edx, eax
movsxd rdx, edx
lea rsi, [rcx + rdx + 0x40]
cmp rax, 8
jae 0x830b80
test al, 4
jne 0x830cbf
test rax, rax
jne 0x830bb8
movzx eax, byte [rsp + 0x6c]
sub byte [0x00869600], al
mov rax, qword [rsp + 0x78]
mov rcx, rax
test rax, rax
jne 0x8309c7
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rbx, qword [rsp + 0x70]
mov rdx, qword [0x008695c0]
lea rdi, [rbx + 8]
mov qword [rbx], rdx
mov rdx, qword [rsi + rax - 8]
and rdi, 0xfffffffffffffff8
mov qword [rbx + rax - 8], rdx
sub rbx, rdi
mov rcx, rbx
sub rsi, rbx
add ecx, eax
mov eax, ecx
shr eax, 3
mov ecx, eax
rep movsq qword [rdi], qword [rsi]
jmp 0x83099e
mov edx, 0x40
jmp 0x830aa0
test bl, bl
jne 0x830be0
mov qword [rsp + 0x78], 0
mov ebx, dword [0x00869580]
test ebx, ebx
jne 0x8305ce
jmp 0x8309e8
mov rdx, qword [rsi]
mov rbx, qword [rsp + 0x70]
mov qword [rbx], rdx
lea rdi, [rbx + 8]
mov rdx, qword [rsi + rax - 8]
and rdi, 0xfffffffffffffff8
mov qword [rbx + rax - 8], rdx
sub rbx, rdi
lea rcx, [rax + rbx]
sub rsi, rbx
shr rcx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x830ad1
movzx edx, byte [rsi]
mov rbx, qword [rsp + 0x70]
mov byte [rbx], dl
test al, 2
je 0x830ad1
movzx edx, word [rsi + rax - 2]
mov rsi, qword [rsp + 0x70]
mov word [rsi + rax - 2], dx
jmp 0x830ad1
mov dword [0x00869580], 0
jmp 0x830aed
mov edx, dword [0x008695c0]
mov rbx, qword [rsp + 0x70]
mov dword [rbx], edx
mov edx, dword [rsi + rax - 4]
mov dword [rbx + rax - 4], edx
jmp 0x83099e
movdqu xmm5, xmmword [str.expand_32_byte_kcume_dist]
movups xmmword [0x00869580], xmm5
mov qword [0x00869590], 0
mov qword [0x00869598], 0
mov qword [0x008695a0], 0
mov qword [0x008695a8], 0
mov qword [0x008695b0], 0
mov dword [0x008695b8], 0
jmp 0x830a76
mov qword [0x00869590], 0
mov qword [0x00869598], 0
mov qword [0x008695a0], 0
mov qword [0x008695a8], 0
mov qword [0x008695b0], 0
mov dword [0x008695b8], 0
mov dword [0x00869590], eax
jmp 0x830a76
movzx edx, word [rsi + rax - 2]
mov rsi, qword [rsp + 0x70]
mov word [rsi + rax - 2], dx
jmp 0x83099e
mov edx, dword [rsi]
mov rbx, qword [rsp + 0x70]
mov dword [rbx], edx
mov edx, dword [rsi + rax - 4]
mov dword [rbx + rax - 4], edx
jmp 0x830ad1