Function at 0x180054400
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push r13
mov rbp, rsp
sub rsp, 0x30
movzx r8d, byte [rcx + 0x46f0]
lea rax, [rcx + 0x46e0]
movzx r11d, byte [rcx + 0x46e1]
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 0x180054455
nop
mov rcx, qword [rax + r9*8 + 8]
not rcx
xor qword [rbp + r9*8 + 0x20], rcx
inc r9
cmp r9, r11
jb 0x180054440
movzx r9d, byte [rax + 2]
mov ebx, 8
movdqa xmm2, xmmword [0x180062d60]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rdi
test r9b, r9b
je 0x180054598
mov ecx, ebx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x18005456f
cmp r9, 0x40
jb 0x180054574
lea rsi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea rdi, [rsi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x1800544ba
lea rcx, [rbp + 0x27]
cmp rcx, rdi
jae 0x180054574
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 0x1800544f0
mov r15, qword [rsp + 0x20]
mov r12, qword [rsp + 0x68]
cmp r8, rbx
jae 0x180054598
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 0x180054580
mov qword [rbp + 0x20], r14
mov rdx, r10
mov r14, qword [rsp + 0x28]
test r11, r11
je 0x1800545c5
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 0x1800545b0
test r9b, r9b
je 0x1800546e9
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x1800546b3
cmp r9, 0x40
jb 0x1800546b8
lea rdi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [rdi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x18005460f
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x1800546b8
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 0x180054640
cmp r8, rbx
jae 0x1800546e9
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 0x1800546d0
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 0x180054725
mov rcx, qword [rax + r10*8 + 8]
not rcx
xor qword [rbp + r10*8 + 0x20], rcx
inc r10
cmp r10, rdx
jb 0x180054710
movzx r9d, byte [rax + 2]
test r9b, r9b
je 0x180054848
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180054817
cmp r9, 0x40
jb 0x18005481d
lea r10, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [r10 + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x180054774
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x18005481d
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 0x1800547a0
cmp r8, 8
jae 0x180054848
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 0x180054830
mov ecx, dword [0x18006c358]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov ecx, dword [rdx + rax]
cmp dword [0x18006ccb4], ecx
jle 0x1800548a1
lea rcx, [0x18006ccb4]
call fcn.180055234
cmp dword [0x18006ccb4], 0xffffffff
jne 0x1800548a1
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
add rax, 0x8fc930
lea rcx, [0x18006ccb4]
mov qword [0x18006ccc0], rax
call fcn.1800551d4
mov rbx, qword [0x18006ccc0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rcx, qword [rbp + 0x20]
mov rdx, r13
mov r8, qword [rax + 0x1937688]
add r8, 0x270
call rbx
mov rax, r13
add rsp, 0x30
pop r13
pop rbx
pop rbp
ret