Function at 0x4143e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
test r9d, r9d
mov qword [rsp + 0x100], rcx
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x110], r8
mov dword [rsp + 0x118], r9d
je 0x414876
mov eax, dword [rcx]
mov esi, dword [rcx + 0x34]
mov dword [rsp + 0x24], eax
mov eax, dword [rcx + 4]
mov dword [rsp + 0x20], esi
mov esi, dword [rcx + 0x38]
mov dword [rsp + 0x28], eax
mov eax, dword [rcx + 8]
mov dword [rsp + 0x54], esi
mov esi, dword [rcx + 0x3c]
mov dword [rsp + 0x2c], eax
mov eax, dword [rcx + 0xc]
mov dword [rsp + 0x68], esi
mov dword [rsp + 0x30], eax
mov eax, dword [rcx + 0x10]
mov dword [rsp + 0x34], eax
mov eax, dword [rcx + 0x14]
mov dword [rsp + 0x38], eax
mov eax, dword [rcx + 0x18]
mov dword [rsp + 0x3c], eax
mov eax, dword [rcx + 0x1c]
mov dword [rsp + 0x40], eax
mov eax, dword [rcx + 0x20]
mov dword [rsp + 0x44], eax
mov eax, dword [rcx + 0x24]
mov dword [rsp + 0x48], eax
mov eax, dword [rcx + 0x28]
mov dword [rsp + 0x4c], eax
mov eax, dword [rcx + 0x2c]
mov dword [rsp + 0x50], eax
mov eax, dword [rcx + 0x30]
mov dword [rsp + 0x6c], eax
mov dword [rsp + 0x18], eax
lea rax, [rsp + 0x70]
mov dword [rsp + 0x1c], r9d
mov qword [rsp + 0x58], rax
mov eax, dword [rsp + 0x1c]
mov qword [rsp + 0x60], 0
cmp eax, 0x3f
jbe 0x4147ba
mov ebx, dword [rsp + 0x50]
mov dword [rsp + 0x14], 0xa
mov r14d, dword [rsp + 0x68]
mov eax, dword [rsp + 0x54]
mov edx, dword [rsp + 0x20]
mov dword [rsp + 8], ebx
mov ecx, dword [rsp + 0x18]
mov r12d, dword [rsp + 0x4c]
mov r9d, dword [rsp + 0x48]
mov r11d, dword [rsp + 0x44]
mov r15d, dword [rsp + 0x40]
mov r8d, dword [rsp + 0x3c]
mov edi, dword [rsp + 0x38]
mov ebp, dword [rsp + 0x34]
mov r10d, dword [rsp + 0x30]
mov ebx, dword [rsp + 0x2c]
mov esi, dword [rsp + 0x28]
mov r13d, dword [rsp + 0x24]
nop dword [rax + rax]
add r13d, ebp
add esi, edi
add ebx, r8d
xor ecx, r13d
xor edx, esi
xor eax, ebx
rol ecx, 0x10
rol edx, 0x10
add r11d, ecx
add r9d, edx
rol eax, 0x10
xor ebp, r11d
xor edi, r9d
add r12d, eax
rol ebp, 0xc
rol edi, 0xc
xor r8d, r12d
add r13d, ebp
add esi, edi
rol r8d, 0xc
xor ecx, r13d
xor edx, esi
add ebx, r8d
rol ecx, 8
rol edx, 8
xor eax, ebx
add r11d, ecx
add r9d, edx
xor ebp, r11d
xor edi, r9d
mov dword [rsp + 0x10], r9d
rol ebp, 7
rol edi, 7
mov dword [rsp + 0xc], r11d
rol eax, 8
add r10d, r15d
add r13d, edi
xor r14d, r10d
add r12d, eax
mov r9d, r14d
mov r14d, dword [rsp + 8]
xor r8d, r12d
rol r9d, 0x10
rol r8d, 7
add esi, r8d
xor ecx, esi
add r14d, r9d
rol ecx, 0x10
xor r15d, r14d
mov r11d, r14d
rol r15d, 0xc
add r10d, r15d
xor r9d, r10d
rol r9d, 8
add r11d, r9d
xor r9d, r13d
rol r9d, 0x10
xor r15d, r11d
add r11d, ecx
add r12d, r9d
rol r15d, 7
xor edi, r12d
rol edi, 0xc
add r13d, edi
xor r9d, r13d
mov r14d, r9d
mov r9d, dword [rsp + 0x10]
rol r14d, 8
add r12d, r14d
xor edi, r12d
rol edi, 7
xor r8d, r11d
add ebx, r15d
rol r8d, 0xc
add r10d, ebp
xor edx, ebx
add esi, r8d
xor eax, r10d
rol edx, 0x10
xor ecx, esi
rol eax, 0x10
rol ecx, 8
add r9d, eax
add r11d, ecx
xor ebp, r9d
xor r8d, r11d
mov dword [rsp + 8], r11d
mov r11d, dword [rsp + 0xc]
rol ebp, 0xc
add r10d, ebp
rol r8d, 7
xor eax, r10d
rol eax, 8
add r11d, edx
add r9d, eax
xor r15d, r11d
xor ebp, r9d
rol r15d, 0xc
rol ebp, 7
add ebx, r15d
xor edx, ebx
rol edx, 8
add r11d, edx
xor r15d, r11d
rol r15d, 7
sub dword [rsp + 0x14], 1
jne 0x414510
add r8d, dword [rsp + 0x3c]
add r10d, dword [rsp + 0x30]
add r13d, dword [rsp + 0x24]
add esi, dword [rsp + 0x28]
mov dword [rsp + 0xc], r8d
mov r8d, dword [rsp + 8]
add r8d, dword [rsp + 0x50]
add ebx, dword [rsp + 0x2c]
add ebp, dword [rsp + 0x34]
add edi, dword [rsp + 0x38]
mov dword [rsp + 0x10], r8d
mov r8, qword [rsp + 0x108]
add r15d, dword [rsp + 0x40]
add r11d, dword [rsp + 0x44]
add r12d, dword [rsp + 0x4c]
xor r10d, dword [r8 + 0xc]
xor r13d, dword [r8]
xor esi, dword [r8 + 4]
xor ebx, dword [r8 + 8]
mov dword [rsp + 0x14], r10d
mov r10, r8
xor ebp, dword [r8 + 0x10]
mov dword [rsp + 8], r13d
mov r13, r10
xor edi, dword [r8 + 0x14]
xor r15d, dword [r10 + 0x1c]
xor r11d, dword [r10 + 0x20]
add ecx, dword [rsp + 0x18]
add edx, dword [rsp + 0x20]
add eax, dword [rsp + 0x54]
add r14d, dword [rsp + 0x68]
add r9d, dword [rsp + 0x48]
mov r8d, dword [rsp + 0xc]
xor r8d, dword [r10 + 0x18]
xor r9d, dword [r10 + 0x24]
xor r12d, dword [r10 + 0x28]
xor ecx, dword [r13 + 0x30]
xor edx, dword [r13 + 0x34]
xor r14d, dword [r13 + 0x3c]
xor eax, dword [r13 + 0x38]
mov r10d, dword [rsp + 0x10]
xor r10d, dword [r13 + 0x2c]
add dword [rsp + 0x18], 1
mov r13d, dword [rsp + 0x18]
mov dword [rsp + 0xc], r10d
mov r10d, dword [rsp + 8]
cmp r13d, 1
mov r13, qword [rsp + 0x110]
adc dword [rsp + 0x20], 0
mov dword [r13], r10d
mov r10d, dword [rsp + 0xc]
mov dword [r13 + 4], esi
mov esi, dword [rsp + 0x14]
mov dword [r13 + 8], ebx
mov dword [r13 + 0x10], ebp
mov dword [r13 + 0x14], edi
mov dword [r13 + 0xc], esi
mov dword [r13 + 0x18], r8d
mov dword [r13 + 0x1c], r15d
mov dword [r13 + 0x20], r11d
mov dword [r13 + 0x24], r9d
mov dword [r13 + 0x28], r12d
mov dword [r13 + 0x2c], r10d
mov dword [r13 + 0x30], ecx
mov dword [r13 + 0x34], edx
mov dword [r13 + 0x38], eax
cmp dword [rsp + 0x1c], 0x40
mov dword [r13 + 0x3c], r14d
jbe 0x414831
sub dword [rsp + 0x1c], 0x40
mov eax, dword [rsp + 0x1c]
add qword [rsp + 0x110], 0x40
add qword [rsp + 0x108], 0x40
cmp eax, 0x3f
ja 0x4144b4
mov rbx, qword [rsp + 0x58]
cmp eax, 8
mov rsi, qword [rsp + 0x108]
mov rdi, rbx
jb 0x4147d7
mov ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
xor eax, eax
test byte [rsp + 0x1c], 4
je 0x4147e9
mov eax, dword [rsi]
mov dword [rdi], eax
mov eax, 4
test byte [rsp + 0x1c], 2
je 0x4147fc
movzx edx, word [rsi + rax]
mov word [rdi + rax], dx
add rax, 2
test byte [rsp + 0x1c], 1
je 0x41480a
movzx edx, byte [rsi + rax]
mov byte [rdi + rax], dl
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x110], rax
mov qword [rsp + 0x108], rax
jmp 0x4144b4
mov eax, dword [rsp + 0x118]
mov r9d, dword [rsp + 0x118]
mov esi, dword [rsp + 0x6c]
mov r10d, dword [rsp + 8]
sub eax, 1
shr eax, 6
mov edx, eax
lea eax, [rax + rsi + 1]
shl edx, 6
sub r9d, edx
cmp r9d, 0x40
jne 0x41488a
mov rsi, qword [rsp + 0x100]
mov dword [rsi + 0x30], eax
mov rax, rsi
mov esi, dword [rsp + 0x20]
mov dword [rax + 0x34], esi
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp r9d, 8
jae 0x4148d0
test r9b, 4
jne 0x414901
test r9d, r9d
je 0x414861
mov rsi, qword [rsp + 0x110]
test r9b, 2
movzx edx, byte [rsi]
mov rsi, qword [rsp + 0x60]
mov byte [rsi], dl
je 0x414861
mov rsi, qword [rsp + 0x110]
movzx edx, word [rsi + r9 - 2]
mov rsi, qword [rsp + 0x60]
mov word [rsi + r9 - 2], dx
jmp 0x414861
mov rsi, qword [rsp + 0x110]
mov edx, r9d
mov rdi, qword [rsp + 0x60]
mov rcx, qword [rsi + rdx - 8]
mov qword [rdi + rdx - 8], rcx
lea ecx, [r9 - 1]
mov rsi, qword [rsp + 0x110]
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x414861
mov rsi, qword [rsp + 0x60]
mov dword [rsi], r10d
mov rbx, qword [rsp + 0x110]
mov edx, dword [rbx + r9 - 4]
mov dword [rsi + r9 - 4], edx
jmp 0x414861