Function at 0x180055c60
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push r13
mov rbp, rsp
sub rsp, 0x30
movzx r8d, byte [rcx + 0x45c8]
lea rax, [rcx + 0x45b8]
movzx r11d, byte [rcx + 0x45b9]
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 0x180055cb5
nop
mov rcx, qword [rax + r9*8 + 8]
not rcx
xor qword [rbp + r9*8 + 0x20], rcx
inc r9
cmp r9, r11
jb 0x180055ca0
movzx r9d, byte [rax + 2]
mov ebx, 8
movdqa xmm2, xmmword [0x180064ea0]
mov qword [rsp + 0x58], rsi
mov qword [rsp + 0x60], rdi
test r9b, r9b
je 0x180055df8
mov ecx, ebx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180055dcf
cmp r9, 0x40
jb 0x180055dd4
lea rsi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea rdi, [rsi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x180055d1a
lea rcx, [rbp + 0x27]
cmp rcx, rdi
jae 0x180055dd4
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 0x180055d50
mov r15, qword [rsp + 0x20]
mov r12, qword [rsp + 0x68]
cmp r8, rbx
jae 0x180055df8
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 0x180055de0
mov qword [rbp + 0x20], r14
mov rdx, r10
mov r14, qword [rsp + 0x28]
test r11, r11
je 0x180055e25
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 0x180055e10
test r9b, r9b
je 0x180055f49
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180055f13
cmp r9, 0x40
jb 0x180055f18
lea rdi, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [rdi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x180055e6f
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x180055f18
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 0x180055ea0
cmp r8, rbx
jae 0x180055f49
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 0x180055f30
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 0x180055f85
mov rcx, qword [rax + r10*8 + 8]
not rcx
xor qword [rbp + r10*8 + 0x20], rcx
inc r10
cmp r10, rdx
jb 0x180055f70
movzx r9d, byte [rax + 2]
test r9b, r9b
je 0x1800560a8
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180056077
cmp r9, 0x40
jb 0x18005607d
lea r10, [rcx + rax]
lea rdx, [rbp + 0x20]
add rdx, rcx
lea r11, [r10 + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x180055fd4
lea rcx, [rbp + 0x27]
cmp rcx, r11
jae 0x18005607d
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 0x180056000
cmp r8, 8
jae 0x1800560a8
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 0x180056090
mov ecx, dword [0x18006f358]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov ecx, dword [rdx + rax]
cmp dword [0x18006fcb4], ecx
jle 0x180056101
lea rcx, [0x18006fcb4]
call fcn.180056a94
cmp dword [0x18006fcb4], 0xffffffff
jne 0x180056101
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
add rax, 0x915190
lea rcx, [0x18006fcb4]
mov qword [0x18006fcc0], rax
call fcn.180056a34
mov rbx, qword [0x18006fcc0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rcx, qword [rbp + 0x20]
mov rdx, r13
mov r8, qword [rax + 0x1939708]
add r8, 0x270
call rbx
mov rax, r13
add rsp, 0x30
pop r13
pop rbx
pop rbp
ret