Function at 0x180055270
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push r13
mov rbp, rsp
sub rsp, 0x30
movzx r8d, byte [rcx + 0x39f0]
lea rax, [rcx + 0x39e0]
movzx r11d, byte [rcx + 0x39e1]
xor r10d, r10d
mov qword [rsp + 0x28], r14
mov r13, rdx
mov r9d, r10d
mov r14, qword [rax + r8*8 + 0x18]
mov qword [rbp + 0x20], r14
test r11, r11
je 0x1800552c5
nop
mov rcx, qword [rax + r9*8 + 8]
not rcx
xor qword [rbp + r9*8 + 0x20], rcx
inc r9
cmp r9, r11
jb 0x1800552b0
movzx r9d, byte [rax + 2]
mov ebx, 8
movdqa xmm2, xmmword [0x18007b2b0]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rdi
test r9b, r9b
je 0x180055408
mov ecx, ebx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x1800553df
cmp r9, 0x40
jb 0x1800553e4
lea rsi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea rdi, [rsi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x18005532a
lea rcx, [rbp + 0x27]
cmp rcx, rdi
jae 0x1800553e4
mov rcx, r9
mov qword [rsp + 0x68], r12
and ecx, 0x3f
mov qword [rsp + 0x20], r15
mov rdi, rbx
sub rdi, rcx
lea rdx, [rsi + 0x18]
lea r15, [rbp + 0x20]
lea r12, [rbp + 0x30]
sub r15, rax
lea rcx, [rbp + 0x28]
sub r12, rax
sub rcx, rax
lea rsi, [rbp + 0x38]
sub rsi, rax
movdqu xmm0, xmmword [r15 + rdx - 0x18]
add r8, 0x40
movdqu xmm1, xmmword [rdx - 0x10]
lea rdx, [rdx + 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [r15 + rdx - 0x58], xmm1
movdqu xmm0, xmmword [r12 + rdx - 0x58]
movdqu xmm1, xmmword [rdx - 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [r12 + rdx - 0x58], xmm1
movdqu xmm0, xmmword [rcx + rdx - 0x40]
movdqu xmm1, xmmword [rdx - 0x30]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rcx + rdx - 0x40], xmm1
movdqu xmm0, xmmword [rsi + rdx - 0x40]
movdqu xmm1, xmmword [rdx - 0x20]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rsi + rdx - 0x40], xmm1
cmp r8, rdi
jb 0x180055360
mov r15, qword [rsp + 0x20]
mov r12, qword [rsp + 0x68]
cmp r8, rbx
jae 0x180055408
lea rdx, [rbp + 0x20]
mov rdi, rax
sub rdi, rdx
nop
lea rdx, [rbp + 0x20]
add rdx, r8
inc r8
movzx ecx, byte [rdx + rdi + 8]
not cl
xor byte [rdx], cl
cmp r8, rbx
jb 0x1800553f0
mov qword [rbp + 0x20], r14
mov rdx, r10
mov r14, qword [rsp + 0x28]
test r11, r11
je 0x180055435
nop dword [rax]
mov rcx, qword [rax + rdx*8 + 8]
not rcx
xor qword [rbp + rdx*8 + 0x20], rcx
inc rdx
cmp rdx, r11
jb 0x180055420
test r9b, r9b
je 0x180055559
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180055523
cmp r9, 0x40
jb 0x180055528
lea rdi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [rdi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x18005547f
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x180055528
and r9d, 0x3f
mov r11, rbx
sub r11, r9
lea rdx, [rdi + 0x18]
lea rdi, [rbp + 0x20]
lea rsi, [rbp + 0x30]
sub rdi, rax
lea rcx, [rbp + 0x28]
sub rsi, rax
sub rcx, rax
lea r9, [rbp + 0x38]
sub r9, rax
nop dword [rax]
movdqu xmm0, xmmword [rdx + rdi - 0x18]
add r8, 0x40
movdqu xmm1, xmmword [rdx - 0x10]
lea rdx, [rdx + 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdx + rdi - 0x58], xmm1
movdqu xmm0, xmmword [rdx + rsi - 0x58]
movdqu xmm1, xmmword [rdx - 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdx + rsi - 0x58], xmm1
movdqu xmm0, xmmword [rdx + rcx - 0x40]
movdqu xmm1, xmmword [rdx - 0x30]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdx + rcx - 0x40], xmm1
movdqu xmm0, xmmword [rdx + r9 - 0x40]
movdqu xmm1, xmmword [rdx - 0x20]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdx + r9 - 0x40], xmm1
cmp r8, r11
jb 0x1800554b0
cmp r8, rbx
jae 0x180055559
lea rdx, [rbp + 0x20]
mov r9, rax
sub r9, rdx
nop dword [rax]
nop word [rax + rax]
lea rdx, [rbp + 0x20]
add rdx, r8
inc r8
movzx ecx, byte [rdx + r9 + 8]
not cl
xor byte [rdx], cl
cmp r8, rbx
jb 0x180055540
mov rcx, qword [rbp + 0x20]
mov rdi, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x58]
or dword [rcx + 0x5c], 4
movzx ecx, byte [rax + 0x10]
mov rdx, qword [rax + rcx*8 + 0x18]
mov qword [rbp + 0x20], rdx
movzx edx, byte [rax + 1]
test dl, dl
je 0x180055595
mov rcx, qword [rax + r10*8 + 8]
not rcx
xor qword [rbp + r10*8 + 0x20], rcx
inc r10
cmp r10, rdx
jb 0x180055580
movzx r9d, byte [rax + 2]
test r9b, r9b
je 0x1800556b8
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180055687
cmp r9, 0x40
jb 0x18005568d
lea r10, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [r10 + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x1800555e4
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x18005568d
and r9d, 0x3f
sub rbx, r9
lea rdx, [r10 + 0x18]
lea r10, [rbp + 0x20]
lea r11, [rbp + 0x30]
sub r10, rax
lea rcx, [rbp + 0x28]
sub r11, rax
sub rcx, rax
lea r9, [rbp + 0x38]
sub r9, rax
nop dword [rax + rax]
movdqu xmm0, xmmword [r10 + rdx - 0x18]
add r8, 0x40
movdqu xmm1, xmmword [rdx - 0x10]
lea rdx, [rdx + 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [r10 + rdx - 0x58], xmm1
movdqu xmm0, xmmword [r11 + rdx - 0x58]
movdqu xmm1, xmmword [rdx - 0x40]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [r11 + rdx - 0x58], xmm1
movdqu xmm0, xmmword [rcx + rdx - 0x40]
movdqu xmm1, xmmword [rdx - 0x30]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rcx + rdx - 0x40], xmm1
movdqu xmm0, xmmword [r9 + rdx - 0x40]
movdqu xmm1, xmmword [rdx - 0x20]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [r9 + rdx - 0x40], xmm1
cmp r8, rbx
jb 0x180055610
cmp r8, 8
jae 0x1800556b8
lea rcx, [rbp + 0x20]
sub rax, rcx
lea rdx, [rax + 8]
nop dword [rax + rax]
lea rcx, [rbp + 0x20]
add rcx, r8
inc r8
movzx eax, byte [rcx + rdx]
not al
xor byte [rcx], al
cmp r8, 8
jb 0x1800556a0
mov ecx, dword [0x1800863e8]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov ecx, dword [rdx + rax]
cmp dword [0x180086b64], ecx
jle 0x180055711
lea rcx, [0x180086b64]
call fcn.18006a3ec
cmp dword [0x180086b64], 0xffffffff
jne 0x180055711
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add rax, 0x81eb70
lea rcx, [0x180086b64]
mov qword [0x180086b70], rax
call fcn.18006a38c
mov rbx, qword [0x180086b70]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, qword [rbp + 0x20]
mov rdx, r13
mov r8, qword [rax + 0x21942a8]
add r8, 0x270
call rbx
mov rax, r13
add rsp, 0x30
pop r13
pop rbx
pop rbp
ret