Function at 0x180031640
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push r13
mov rbp, rsp
sub rsp, 0x50
mov rax, qword [0x180060010]
xor rax, rsp
mov qword [rbp - 0x28], rax
movzx r10d, byte [rcx + 0x39f1]
lea rax, [rcx + 0x39f0]
xor r9d, r9d
mov qword [rsp + 0x38], r14
mov r13, rdx
movzx edx, byte [rcx + 0x3a00]
mov r8d, r9d
mov r14, qword [rax + rdx*8 + 0x18]
mov qword [rbp - 0x30], r14
test r10, r10
je 0x1800316a5
nop dword [rax]
mov rcx, qword [rax + r8*8 + 8]
not rcx
xor qword [rbp + r8*8 - 0x30], rcx
inc r8
cmp r8, r10
jb 0x180031690
movzx r11d, byte [rax + 2]
mov ebx, 8
movdqa xmm2, xmmword [0x180055dc0]
mov qword [rsp + 0x80], rsi
mov qword [rsp + 0x48], rdi
test r11b, r11b
je 0x1800317f8
mov ecx, ebx
sub rcx, r11
mov r8, rcx
cmp rcx, rbx
jae 0x1800317cf
cmp r11, 0x40
jb 0x1800317d4
lea rsi, [rcx + rax]
lea rdx, [rbp - 0x30]
add rdx, rcx
lea rdi, [rsi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x18003170d
lea rcx, [rbp - 0x29]
cmp rcx, rdi
jae 0x1800317d4
mov rcx, r11
mov qword [rsp + 0x40], r12
and ecx, 0x3f
mov qword [rsp + 0x30], r15
mov rdi, rbx
sub rdi, rcx
lea rdx, [rsi + 0x18]
lea r15, [rbp - 0x30]
lea r12, [rbp - 0x20]
sub r15, rax
lea rcx, [rbp - 0x28]
sub r12, rax
sub rcx, rax
lea rsi, [rbp - 0x18]
sub rsi, rax
nop dword [rax]
nop word [rax + 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 0x180031750
mov r15, qword [rsp + 0x30]
mov r12, qword [rsp + 0x40]
cmp r8, rbx
jae 0x1800317f8
lea rdx, [rbp - 0x30]
mov rdi, rax
sub rdi, rdx
nop
lea rdx, [rbp - 0x30]
add rdx, r8
inc r8
movzx ecx, byte [rdx + rdi + 8]
not cl
xor byte [rdx], cl
cmp r8, rbx
jb 0x1800317e0
mov qword [rbp - 0x30], r14
mov rdx, r9
mov r14, qword [rsp + 0x38]
test r10, r10
je 0x180031825
nop dword [rax]
mov rcx, qword [rax + rdx*8 + 8]
not rcx
xor qword [rbp + rdx*8 - 0x30], rcx
inc rdx
cmp rdx, r10
jb 0x180031810
test r11b, r11b
je 0x180031949
mov rcx, rbx
sub rcx, r11
mov r8, rcx
cmp rcx, rbx
jae 0x180031913
cmp r11, 0x40
jb 0x180031918
lea rdi, [rcx + rax]
lea rdx, [rbp - 0x30]
add rdx, rcx
lea r10, [rdi + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x18003186f
lea rcx, [rbp - 0x29]
cmp rcx, r10
jae 0x180031918
and r11d, 0x3f
mov r10, rbx
sub r10, r11
lea rdx, [rdi + 0x18]
lea rdi, [rbp - 0x30]
lea rsi, [rbp - 0x20]
sub rdi, rax
lea rcx, [rbp - 0x28]
sub rsi, rax
sub rcx, rax
lea r11, [rbp - 0x18]
sub r11, 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 + r11 - 0x40]
movdqu xmm1, xmmword [rdx - 0x20]
pandn xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdx + r11 - 0x40], xmm1
cmp r8, r10
jb 0x1800318a0
cmp r8, rbx
jae 0x180031949
lea rdx, [rbp - 0x30]
mov r10, rax
sub r10, rdx
nop dword [rax]
nop word [rax + rax]
lea rdx, [rbp - 0x30]
add rdx, r8
inc r8
movzx ecx, byte [rdx + r10 + 8]
not cl
xor byte [rdx], cl
cmp r8, rbx
jb 0x180031930
mov rcx, qword [rbp - 0x30]
mov rdi, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x80]
or dword [rcx + 0x5c], 4
movzx ecx, byte [rax + 0x10]
mov rdx, qword [rax + rcx*8 + 0x18]
mov qword [rbp - 0x30], rdx
movzx edx, byte [rax + 1]
test dl, dl
je 0x180031995
nop dword [rax]
nop word [rax + rax]
mov rcx, qword [rax + r9*8 + 8]
not rcx
xor qword [rbp + r9*8 - 0x30], rcx
inc r9
cmp r9, rdx
jb 0x180031980
movzx r9d, byte [rax + 2]
test r9b, r9b
je 0x180031ab8
mov rcx, rbx
sub rcx, r9
mov r8, rcx
cmp rcx, rbx
jae 0x180031a87
cmp r9, 0x40
jb 0x180031a8d
lea r10, [rcx + rax]
lea rdx, [rbp - 0x30]
add rdx, rcx
lea r11, [r10 + 8]
lea rcx, [rax + 0xf]
cmp rdx, rcx
ja 0x1800319e4
lea rcx, [rbp - 0x29]
cmp rcx, r11
jae 0x180031a8d
and r9d, 0x3f
sub rbx, r9
lea rdx, [r10 + 0x18]
lea r10, [rbp - 0x30]
lea r11, [rbp - 0x20]
sub r10, rax
lea rcx, [rbp - 0x28]
sub r11, rax
sub rcx, rax
lea r9, [rbp - 0x18]
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 0x180031a10
cmp r8, 8
jae 0x180031ab8
lea rcx, [rbp - 0x30]
sub rax, rcx
lea rdx, [rax + 8]
nop dword [rax + rax]
lea rcx, [rbp - 0x30]
add rcx, r8
inc r8
movzx eax, byte [rcx + rdx]
not al
xor byte [rcx], al
cmp r8, 8
jb 0x180031aa0
mov ecx, dword [0x180060de8]
mov rax, qword gs:[0x58]
mov edx, 4
mov rax, qword [rax + rcx*8]
mov ecx, dword [rdx + rax]
cmp dword [0x180061070], ecx
jle 0x180031b11
lea rcx, [0x180061070]
call fcn.180046f60
cmp dword [0x180061070], 0xffffffff
jne 0x180031b11
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add rax, 0x8920e0
lea rcx, [0x180061070]
mov qword [0x180061078], rax
call fcn.180046f00
mov rbx, qword [0x180061078]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rcx, qword [rbp - 0x30]
mov rdx, r13
mov r8, qword [rax + 0x21d1340]
add r8, 0x270
call rbx
mov rax, r13
mov rcx, qword [rbp - 0x28]
xor rcx, rsp
call fcn.180046920
add rsp, 0x50
pop r13
pop rbx
pop rbp
ret