Function at 0x404d90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
mov qword [rsp + 0x130], rcx
test edx, edx
jle 0x4053d2
mov rax, qword [rcx + 0x28]
mov rbx, qword [rcx + 0x18]
mov rdi, qword [rcx + 0x68]
mov rbp, qword [rcx + 0x88]
mov r9, qword [rcx]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 0x50]
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x60], rdi
mov rbx, qword [rcx + 0x40]
mov r15, r9
mov qword [rsp + 0x48], rax
mov rax, qword [rcx + 0x78]
mov rdi, qword [rcx + 0x90]
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x68], rax
mov rax, qword [rcx + 8]
mov r10, qword [rcx + 0xa0]
mov r13, qword [rcx + 0xa8]
mov qword [rsp + 8], rax
mov rax, qword [rcx + 0x30]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 0x58]
mov qword [rsp + 0x50], rax
mov rax, qword [rcx + 0x80]
mov qword [rsp + 0x70], rax
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x10], rax
mov rax, qword [rcx + 0x38]
mov qword [rsp + 0x38], rax
mov rax, qword [rcx + 0x60]
mov qword [rsp + 0x58], rax
mov rax, qword [rcx + 0xb0]
mov qword [rsp + 0x78], rdi
mov rsi, qword [rcx + 0xc0]
mov rbx, qword [rcx + 0x20]
mov r12, qword [rcx + 0x48]
mov qword [rsp + 0x88], rbp
mov rbp, rax
mov qword [rsp + 0x80], rsi
lea rsi, [0x0087c200]
mov rdi, qword [rcx + 0xb8]
mov qword [rsp + 0x20], rbx
mov r11, qword [rcx + 0x98]
mov r14, r12
mov rbx, qword [rcx + 0x70]
lea ecx, [rdx - 1]
lea rdx, [rsi + 8]
mov qword [rsp + 0x98], rsi
lea rsi, [rdx + rcx*8]
mov qword [rsp + 0xd8], rsi
nop word [rax + rax]
mov rax, qword [rsp + 0x20]
mov r8, qword [rsp + 8]
mov rcx, qword [rsp + 0x10]
xor r8, qword [rsp + 0x30]
xor rax, r14
xor r8, qword [rsp + 0x50]
xor rcx, qword [rsp + 0x38]
xor r8, qword [rsp + 0x70]
xor rcx, qword [rsp + 0x58]
xor rcx, qword [rsp + 0x88]
xor r8, r13
mov rsi, qword [rsp + 0x28]
mov r9, rcx
mov rcx, rax
mov rax, r8
mov rdx, qword [rsp + 0x18]
xor rcx, rbx
rol rax, 1
xor rdx, qword [rsp + 0x40]
xor rdx, qword [rsp + 0x60]
xor rcx, r11
xor rdx, qword [rsp + 0x78]
xor r9, rbp
xor rsi, r15
xor rcx, qword [rsp + 0x80]
mov r12, rdx
xor rsi, qword [rsp + 0x48]
xor rax, rcx
xor r12, rdi
xor rsi, qword [rsp + 0x68]
rol rcx, 1
xor r15, rax
xor rsi, r10
mov rdx, r12
xor rcx, r9
mov qword [rsp], r15
mov r15, r9
rol rdx, 1
mov r9, rbp
rol r15, 1
xor r8, rdx
xor r15, rsi
rol rsi, 1
mov rdx, rsi
xor rdx, r12
mov r12, qword [rsp + 0x30]
xor r12, r15
ror r12, 0x14
xor r14, rdx
xor r10, rax
xor rdi, rcx
mov qword [rsp + 0x30], r12
mov r12, qword [rsp + 0x58]
xor rbx, rdx
xor r13, r15
rol r14, 0x14
rol r10, 0x12
xor r11, rdx
xor r9, r8
xor r12, r8
ror rdi, 8
mov qword [rsp + 0xa0], r14
mov rbp, r12
mov qword [rsp + 0xb0], r10
mov r10, qword [rsp + 0x10]
ror rbx, 0x19
ror rbp, 0x15
mov qword [rsp + 0xc0], rdi
mov rdi, qword [rsp + 0x68]
rol r13, 2
mov r14, rbp
mov rbp, qword [rsp + 0x20]
xor r10, r8
mov r12, qword [rsp + 0x60]
xor rdi, rax
ror r10, 2
mov qword [rsp + 0xa8], rbx
ror rdi, 0x17
xor rbp, rdx
xor r12, rcx
ror r9, 3
mov rsi, rbp
mov qword [rsp + 0xb8], r10
rol r12, 0x19
rol rsi, 0x1b
mov qword [rsp + 0xc8], rdi
rol r11, 8
mov qword [rsp + 0x68], rsi
xor rdx, qword [rsp + 0x80]
mov rbx, qword [rsp + 0x28]
mov qword [rsp + 0x80], r13
rol rdx, 0xe
mov r13, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x50]
mov qword [rsp + 0x90], r14
xor rbx, rax
mov rdi, qword [rsp + 0x88]
xor r13, rcx
mov rsi, rbx
mov rbx, qword [rsp + 0x18]
ror r13, 9
mov qword [rsp + 0xd0], r13
mov r13, qword [rsp + 0x70]
xor r13, r15
ror r13, 0x13
ror rsi, 0x1c
xor rbx, rcx
xor rbp, r15
xor r15, qword [rsp + 8]
xor rcx, qword [rsp + 0x78]
mov r10, rbx
xor rdi, r8
rol rcx, 0x15
mov rbx, r15
mov r15, r14
mov r14, qword [rsp + 0x30]
not r15
xor rax, qword [rsp + 0x48]
xor r8, qword [rsp + 0x38]
rol rbx, 1
rol rax, 3
and r15, rcx
rol r10, 0x1c
rol r8, 6
xor r14, r15
rol rdi, 0xf
mov qword [rsp + 8], r14
mov r14, rcx
rol rbp, 0xa
not r14
mov r15, r14
mov r14, qword [rsp + 0x90]
and r15, rdx
xor r14, r15
mov r15, qword [rsp]
mov qword [rsp + 0x10], r14
mov r14, rdx
not r14
and r15, r14
mov r14, r15
mov r15, qword [rsp + 0x30]
xor r14, rcx
mov rcx, qword [rsp]
mov qword [rsp + 0x18], r14
not rcx
and rcx, r15
not r15
xor rcx, rdx
mov qword [rsp + 0x20], rcx
mov rcx, qword [rsp + 0xa0]
mov r14, rcx
not r14
mov rdx, r14
and rdx, rax
mov r14, rdx
xor r14, r10
mov qword [rsp + 0x28], r14
mov r14, rax
not r14
mov rdx, r14
and rdx, r13
mov r14, rdx
xor r14, rcx
mov qword [rsp + 0x30], r14
mov r14, r13
not r14
mov rdx, r14
and rdx, r9
mov r14, rdx
mov rdx, qword [rsp + 0xb0]
xor r14, rax
mov rax, r9
not rax
mov qword [rsp + 0x38], r14
and rax, r10
not r10
xor rax, r13
and rcx, r10
mov qword [rsp + 0x40], rax
mov rax, r8
mov r14, rcx
mov rcx, rdi
not rax
xor r14, r9
not rcx
and rax, r12
xor rax, rbx
mov qword [rsp + 0x48], rax
mov rax, r12
not rax
and rax, r11
xor rax, r8
mov qword [rsp + 0x50], rax
mov rax, r11
not rax
and rax, rdx
xor rax, r12
mov r12, rdx
not r12
mov qword [rsp + 0x58], rax
mov rax, rsi
and r12, rbx
not rax
not rbx
xor r12, r11
and rax, rbp
and rbx, r8
mov qword [rsp + 0x60], r12
mov r9, qword [rsp + 0xc0]
xor rbx, rdx
mov r11, qword [rsp + 0x68]
mov r12, qword [rsp + 0xd0]
and rcx, r9
mov r8, qword [rsp + 0x80]
mov rdx, qword [rsp + 0xb8]
xor rcx, rbp
xor rax, r11
mov r10, r12
and r15, qword [rsp + 0x90]
mov qword [rsp + 0x88], rcx
mov rcx, r9
not r10
mov qword [rsp + 0x68], rax
not rcx
mov rax, rbp
and rcx, r11
not rax
not r11
and r11, rsi
mov r13, rax
xor rcx, rdi
and r13, rdi
xor r11, r9
mov rdi, r8
mov qword [rsp + 0x78], rcx
mov r9, qword [rsp + 0xc8]
mov rax, r13
not rdi
xor rax, rsi
mov rsi, qword [rsp + 0xa8]
and rdi, rdx
mov rbp, r9
mov qword [rsp + 0x70], rax
xor rdi, r9
mov rax, qword [rsp]
not rbp
and r10, rsi
mov r13, rsi
and rbp, r8
xor r10, rdx
not r13
not rdx
xor rbp, rsi
mov rsi, qword [rsp + 0x98]
and r13, r9
and rdx, r12
xor rdx, r8
xor r13, r12
xor rax, qword [rsi]
add rsi, 8
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x98], rsi
xor r15, rax
cmp rsi, qword [rsp + 0xd8]
jne 0x404ec0
mov rsi, qword [rsp + 0x130]
movq xmm0, r15
movq xmm1, r14
mov rax, rbp
movhps xmm0, qword [rsp + 8]
movq xmm3, r11
movq xmm4, r13
mov rbp, qword [rsp + 0x88]
movups xmmword [rsi], xmm0
movq xmm0, qword [rsp + 0x10]
movq xmm5, rdi
movq xmm2, rbp
mov qword [rsi + 0xc0], rdx
movhps xmm0, qword [rsp + 0x18]
movups xmmword [rsi + 0x10], xmm0
movq xmm0, qword [rsp + 0x20]
movhps xmm0, qword [rsp + 0x28]
movups xmmword [rsi + 0x20], xmm0
movq xmm0, qword [rsp + 0x30]
movhps xmm0, qword [rsp + 0x38]
movups xmmword [rsi + 0x30], xmm0
movq xmm0, qword [rsp + 0x40]
punpcklqdq xmm0, xmm1
movups xmmword [rsi + 0x40], xmm0
movq xmm0, qword [rsp + 0x48]
movhps xmm0, qword [rsp + 0x50]
movups xmmword [rsi + 0x50], xmm0
movq xmm0, qword [rsp + 0x58]
movhps xmm0, qword [rsp + 0x60]
movups xmmword [rsi + 0x60], xmm0
movq xmm0, rbx
movhps xmm0, qword [rsp + 0x68]
movups xmmword [rsi + 0x70], xmm0
movq xmm0, qword [rsp + 0x70]
punpcklqdq xmm0, xmm2
movups xmmword [rsi + 0x80], xmm0
movq xmm0, rcx
punpcklqdq xmm0, xmm3
movups xmmword [rsi + 0x90], xmm0
movq xmm0, r10
punpcklqdq xmm0, xmm4
movups xmmword [rsi + 0xa0], xmm0
movq xmm0, rax
punpcklqdq xmm0, xmm5
movups xmmword [rsi + 0xb0], xmm0
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret