Function at 0x407290
Capabilities:
Encode data using xor

Disassembly:
mov rcx, qword gs:[0x28]
mov rcx, qword [rcx]
cmp rsp, qword [rcx + 0x10]
jbe 0x407607
sub rsp, 0x28
mov qword [rsp + 0x20], rbp
lea rbp, [rsp + 0x20]
movzx eax, byte [0x008b402e]
test al, al
jne 0x4075d1
mov rax, qword [0x008b43a0]
mov rcx, qword [rsp + 0x40]
imul rax, rcx
mov rdx, qword [rsp + 0x38]
add rax, rdx
mov rbx, qword [rsp + 0x30]
test rcx, rcx
je 0x4073f5
cmp rcx, 4
jb 0x40757c
cmp rcx, 8
jbe 0x407540
cmp rcx, 0x10
jbe 0x4074e6
cmp rcx, 0x20
jbe 0x407429
mov rsi, qword [0x008b43a8]
imul rsi, rdx
mov rdi, qword [0x008b43b0]
imul rdi, rdx
mov r8, qword [0x008b43b8]
imul r8, rdx
cmp rcx, 0x20
jb 0x4073e3
lea r9, [rbx + 8]
test byte [r9], al
lea r9, [rbx + 0x10]
test byte [r9], al
lea r9, [rbx + 0x18]
test byte [r9], al
mov r9, qword [rbx]
xor rax, r9
movabs r9, 0xea38ec9079f01541
imul rax, r9
rol rax, 0x1f
movabs r10, 0x2723a30d96da1399
imul rax, r10
mov r11, 8
mov r12, qword [r11 + rbx]
xor rsi, r12
imul rsi, r10
rol rsi, 0x1f
movabs r12, 0x83cf8eadf876d2d7
imul rsi, r12
mov r13, qword [r11 + rbx + 8]
xor rdi, r13
imul rdi, r12
rol rdi, 0x1f
movabs r13, 0xdbcfc27b643df693
imul rdi, r13
mov r14, qword [r11 + rbx + 0x10]
xor r8, r14
imul r8, r13
rol r8, 0x1f
imul r8, r9
add rbx, 0x20
add rcx, 0xffffffffffffffe0
cmp rcx, 0x20
jae 0x407340
xor rax, rsi
xor rax, rdi
xor rax, r8
test rcx, rcx
jne 0x4072ed
mov rcx, rax
mov rax, rcx
shr rcx, 0x1d
xor rax, rcx
movabs rcx, 0x83cf8eadf876d2d7
imul rcx, rax
mov rax, rcx
shr rcx, 0x20
xor rcx, rax
mov qword [rsp + 0x48], rcx
mov rbp, qword [rsp + 0x20]
add rsp, 0x28
ret
lea rdx, [rbx + 8]
test byte [rdx], al
lea rdx, [rcx + rbx - 0x10]
test byte [rdx], al
lea rdx, [rcx + rbx - 8]
test byte [rdx], al
mov rdx, qword [rbx]
xor rdx, rax
movabs rax, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rdx, 0x2723a30d96da1399
imul rdx, rax
mov rax, 8
mov rax, qword [rax + rbx]
xor rdx, rax
movabs rax, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rdx, 0x2723a30d96da1399
imul rdx, rax
mov rax, qword [rcx + rbx - 0x10]
xor rdx, rax
movabs rax, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rdx, 0x2723a30d96da1399
imul rdx, rax
mov rax, qword [rcx + rbx - 8]
xor rdx, rax
movabs rax, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rcx, 0x2723a30d96da1399
imul rcx, rax
jmp 0x4073f8
lea rdx, [rcx + rbx - 8]
test byte [rdx], al
mov rdx, qword [rbx]
xor rdx, rax
movabs rax, 0xea38ec9079f01541
imul rax, rdx
rol rax, 0x1f
movabs rdx, 0x2723a30d96da1399
imul rdx, rax
mov rcx, qword [rcx + rbx - 8]
xor rcx, rdx
movabs rax, 0xea38ec9079f01541
imul rcx, rax
rol rcx, 0x1f
movabs rax, 0x2723a30d96da1399
imul rcx, rax
jmp 0x4073f8
lea rdx, [rcx + rbx - 4]
test byte [rdx], al
mov edx, dword [rbx]
xor rdx, rax
mov ecx, dword [rcx + rbx - 4]
shl rcx, 0x20
xor rcx, rdx
movabs rax, 0xea38ec9079f01541
imul rcx, rax
rol rcx, 0x1f
movabs rax, 0x2723a30d96da1399
imul rcx, rax
jmp 0x4073f8
mov rdx, rcx
shr rcx, 1
lea rsi, [rcx + rbx]
test byte [rsi], al
lea rsi, [rdx + rbx - 1]
test byte [rsi], al
movzx esi, byte [rbx]
xor rsi, rax
movzx ecx, byte [rcx + rbx]
shl rcx, 8
xor rcx, rsi
movzx eax, byte [rdx + rbx - 1]
shl rax, 0x10
xor rcx, rax
movabs rax, 0xea38ec9079f01541
imul rcx, rax
rol rcx, 0x1f
movabs rax, 0x2723a30d96da1399
imul rcx, rax
jmp 0x4073f8
mov rax, qword [rsp + 0x30]
mov qword [rsp], rax
mov rax, qword [rsp + 0x38]
mov qword [rsp + 8], rax
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x10], rax
call fcn.00453cd0
mov rax, qword [rsp + 0x18]
mov qword [rsp + 0x48], rax
mov rbp, qword [rsp + 0x20]
add rsp, 0x28
ret
call fcn.00452210
jmp fcn.00407290