Function at 0x18000e410
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x148
mov rax, rdx
mov rsi, rcx
lea rdx, [rcx + 0x90]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0xd8], rax
add rcx, 0x4d8
lea r8, [rsp + 0xd8]
call fcn.180001ee0
test al, al
je 0x18000ebe3
mov byte [rsp + 0x2f], al
movzx eax, byte [rsi + 0x10]
test eax, eax
mov qword [rsp + 0x68], rsi
je 0x18000eb38
cmp eax, 3
jne 0x18000eb22
mov rax, qword [rsp + 0x70]
mov rbx, qword [rax]
movzx eax, byte [rsi + 0x88]
test eax, eax
mov qword [rsp + 0x78], rbx
je 0x18000e4bb
cmp eax, 3
jne 0x18000ed45
movzx eax, byte [rsi + 0x80]
test eax, eax
je 0x18000e4e9
cmp eax, 3
jne 0x18000ed5f
mov rdi, qword [rsi + 0x70]
mov rax, qword [rsi + 0x78]
mov qword [rsp + 0x60], rax
jmp 0x18000e516
mov rax, qword [rsi + 0x20]
mov rcx, qword [rsi + 0x28]
mov qword [rsi + 0x30], rax
lea rdx, [rax + 8]
mov r8, qword [rax]
add rax, 0x18
mov qword [rsi + 0x38], rdx
mov qword [rsi + 0x40], r8
mov qword [rsi + 0x48], rax
mov qword [rsi + 0x50], rcx
mov byte [rsi + 0x80], 0
mov rcx, qword [rsi + 0x38]
lea rdi, [rsi + 0x58]
mov rax, qword [rsi + 0x40]
mov qword [rsi + 0x58], rax
mov rax, qword [rsi + 0x48]
mov qword [rsi + 0x60], rax
mov rax, qword [rsi + 0x50]
mov qword [rsi + 0x68], rax
mov qword [rsi + 0x70], rdi
mov qword [rsp + 0x60], rcx
mov qword [rsi + 0x78], rcx
movabs r14, 0x2d358dccaa6c78a5
movabs r12, 0x8bb84b93962eacc9
mov qword [rsp + 0x88], rdi
jmp 0x18000e575
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.kernel32.dll_ReleaseSRWLockShared]
mov rcx, qword [rsp + 0x60]
mov rdx, rbx
call fcn.18002c170
test al, al
mov rdi, qword [rsp + 0x88]
movabs r12, 0x8bb84b93962eacc9
je 0x18000ebc6
mov r15, qword [rdi + 8]
mov r13, qword [r15]
mov rax, qword [r13 + 0x80]
test rax, rax
je 0x18000e5c0
add r13, 0x100
lea rcx, [rsp + 0x30]
mov rdx, r13
cmp eax, 1
jne 0x18000e600
call fcn.180011d00
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000e660
jmp 0x18000ea28
mov eax, 2
mov ecx, 1
lock cmpxchg qword [r13 + 0x88], rcx
jne 0x18000e613
mov rax, qword [r13 + 0x90]
lock and qword [r13 + 0x88], 0xfffffffffffffffe
mov qword [rsp + 0x38], rax
xor eax, eax
test al, al
jne 0x18000e660
jmp 0x18000ea28
call fcn.1800121c0
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000e660
jmp 0x18000ea28
mov rbp, rax
jmp 0x18000e63c
mov rcx, rbp
and rcx, 0xfffffffffffffffc
or rcx, 1
mov rax, rbp
lock cmpxchg qword [r13 + 0x88], rcx
mov rbp, rax
je 0x18000e5d5
test bpl, 2
je 0x18000e653
test bpl, 1
je 0x18000e620
call sub.kernel32.dll_SwitchToThread
and rbp, 0xfffffffffffffffe
jmp 0x18000e620
mov al, 1
test al, al
je 0x18000ea28
nop dword [rax]
mov rbp, qword [rdi]
mov rax, qword [rbp]
test rax, rax
je 0x18000e6a0
lea rdx, [rbp + 0x80]
lea rcx, [rsp + 0x30]
cmp eax, 1
jne 0x18000e6d0
call fcn.180011d00
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000e730
jmp 0x18000ea2f
mov eax, 2
mov ecx, 1
lock cmpxchg qword [rbp + 8], rcx
jne 0x18000e6e3
mov rax, qword [rbp + 0x10]
lock and qword [rbp + 8], 0xfffffffffffffffe
mov qword [rsp + 0x38], rax
xor eax, eax
test al, al
jne 0x18000e730
jmp 0x18000ea2f
call fcn.1800121c0
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000e730
jmp 0x18000ea2f
mov r13, rax
jmp 0x18000e709
mov rcx, r13
and rcx, 0xfffffffffffffffc
or rcx, 1
mov rax, r13
lock cmpxchg qword [rbp + 8], rcx
mov r13, rax
je 0x18000e6b2
test r13b, 2
je 0x18000e720
test r13b, 1
je 0x18000e6f0
call sub.kernel32.dll_SwitchToThread
and r13, 0xfffffffffffffffe
jmp 0x18000e6f0
mov al, 1
test al, al
je 0x18000ea2f
nop word [rax + rax]
lea r13, [rbp + 0x200]
mov rcx, r13
call qword [sym.imp.kernel32.dll_AcquireSRWLockShared]
movzx eax, byte [rbp + 0x208]
test al, al
jne 0x18000ec63
mov rsi, qword [rbp + 0x220]
mov r10, qword [rdi + 0x10]
mov qword [rsp + 0x90], rsi
test rsi, rsi
je 0x18000ec9f
mov rdi, qword [r10]
lea r11, [rdi + r14]
mov rax, r11
xor rax, r12
mul r11
xor rax, rdx
mul rsi
mov rcx, rdx
mov qword [r10], r11
cmp rax, rsi
mov qword [rsp + 0x80], r13
jae 0x18000e80a
mov r9, rax
mov rax, rsi
neg rax
mov rdx, rax
or rdx, rsi
shr rdx, 0x20
je 0x18000e7b8
xor edx, edx
div rsi
mov r8, rdx
cmp r9, r8
jb 0x18000e7c4
jmp 0x18000e80a
xor edx, edx
div esi
mov r8d, edx
cmp r9, r8
jae 0x18000e80a
movabs rax, 0x5a6b1b9954d8f14a
add rdi, rax
nop word cs:[rax + rax]
mov rax, rdi
xor rax, r12
mul rdi
add r11, r14
xor rdx, rax
mov rax, rsi
imul rax, rdx
add rdi, r14
cmp rax, r8
jb 0x18000e7e0
mov qword [r10], r11
mov rax, rdx
mul rsi
mov rcx, rdx
mov r13, qword [rbp + 0x210]
mov rax, qword [rbp + 0x220]
lea rdi, [rax*8]
add rdi, r13
mov r12, r13
test rcx, rcx
je 0x18000e890
dec rcx
test r13, r13
je 0x18000e860
mov rax, rdi
sub rax, r13
shr rax, 3
cmp rax, rcx
cmovae rax, rcx
sub rcx, rax
jne 0x18000e860
lea r13, [r13 + rax*8]
cmp r13, rdi
je 0x18000e860
add r13, 8
jmp 0x18000e8a0
test r12, r12
je 0x18000e540
mov rax, rdi
sub rax, r12
shr rax, 3
cmp rax, rcx
jbe 0x18000e540
lea r12, [r12 + rcx*8]
add r12, 8
jmp 0x18000e8e9
test r13, r13
je 0x18000e8e0
nop word cs:[rax + rax]
cmp r13, rdi
je 0x18000e8e0
lea rax, [rsi - 1]
mov rcx, qword [r13]
add r13, 8
mov rdx, qword [r15]
cmp rsi, 1
je 0x18000e8c2
mov rsi, rax
cmp rcx, rdx
je 0x18000e8a0
cmp rcx, rdx
je 0x18000e540
lea rcx, [r13 - 8]
mov rsi, rax
jmp 0x18000e927
test r12, r12
je 0x18000e540
mov rax, rsi
nop dword [rax]
cmp r12, rdi
je 0x18000e540
lea rsi, [rax - 1]
mov rcx, qword [r12]
add r12, 8
mov rdx, qword [r15]
cmp rax, 1
je 0x18000e916
mov rax, rsi
cmp rcx, rdx
je 0x18000e8f0
cmp rcx, rdx
je 0x18000e540
lea rcx, [r12 - 8]
xor r13d, r13d
mov rcx, qword [rcx]
sub rcx, 0xffffffffffffff80
sub rdx, 0xffffffffffffff80
call fcn.180011820
mov rbp, qword [r15]
mov rax, qword [rbp + 0x80]
test rax, rax
je 0x18000e971
add rbp, 0x100
lea rcx, [rsp + 0x30]
mov rdx, rbp
cmp eax, 1
jne 0x18000e9a8
call fcn.180011d00
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000ea00
jmp 0x18000ea13
mov eax, 2
mov ecx, 1
lock cmpxchg qword [rbp + 0x88], rcx
jne 0x18000e9b8
mov rax, qword [rbp + 0x90]
lock and qword [rbp + 0x88], 0xfffffffffffffffe
mov qword [rsp + 0x38], rax
xor eax, eax
mov rbx, qword [rsp + 0x78]
test al, al
jne 0x18000ea00
jmp 0x18000ea13
call fcn.1800121c0
movzx eax, byte [rsp + 0x30]
test al, al
jne 0x18000ea00
jmp 0x18000ea13
mov rbx, rax
jmp 0x18000e9dc
mov rcx, rbx
and rcx, 0xfffffffffffffffc
or rcx, 1
mov rax, rbx
lock cmpxchg qword [rbp + 0x88], rcx
mov rbx, rax
je 0x18000e986
test bl, 2
je 0x18000e9f1
test bl, 1
je 0x18000e9c0
call sub.kernel32.dll_SwitchToThread
and rbx, 0xfffffffffffffffe
jmp 0x18000e9c0
mov al, 1
mov rbx, qword [rsp + 0x78]
test al, al
je 0x18000ea13
nop dword [rax]
mov ecx, 0
test rsi, rsi
jne 0x18000e826
jmp 0x18000e540
mov r14, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.kernel32.dll_ReleaseSRWLockShared]
jmp 0x18000ea43
mov r14, qword [rsp + 0x38]
jmp 0x18000ea43
mov r14, qword [rsp + 0x38]
mov rdx, qword [r15]
sub rdx, 0xffffffffffffff80
mov rcx, rbp
call fcn.180011820
mov rsi, qword [rsp + 0x60]
mov rcx, rsi
call fcn.18002c410
mov rsi, qword [rsi]
mov cl, 1
xor eax, eax
lock cmpxchg byte [rsi + 0x2a8], cl
jne 0x18000ead2
lea r15, [rsi + 0x228]
mov rcx, r15
call qword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov rdi, qword [0x1801ec4b0]
mov rax, qword [rdi]
shl rax, 1
xor ebp, ebp
test rax, rax
jne 0x18000ebfb
movzx eax, byte [rsi + 0x230]
test al, al
jne 0x18000ec15
lea rcx, [rsi + 0x238]
call fcn.18002c130
mov rbx, rax
mov r12, rdx
test bpl, bpl
jne 0x18000eabe
mov rax, qword [rdi]
shl rax, 1
test rax, rax
jne 0x18000ec4a
mov rcx, r15
call qword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
test rbx, rbx
je 0x18000ead2
mov rcx, r12
call qword [rbx + 8]
mov rsi, qword [rsp + 0x68]
mov byte [rsi + 0x80], 1
mov rax, qword [rsi + 0x30]
inc qword [rax + 0x20]
mov rax, qword [rsi + 0x30]
test byte [rax + 0x20], 0x3f
jne 0x18000eb00
mov rcx, qword [rax]
mov rdx, qword [rax + 0x18]
sub rdx, 0xffffffffffffff80
call fcn.180011820
mov byte [rsi + 0x88], 1
mov rax, qword [r14]
mov rcx, r14
call qword [rax + 0x28]
mov eax, dword [rsi + 0x18]
mov ecx, dword [rsi + 0x1c]
cmp eax, ecx
jl 0x18000eb51
call fcn.1800101b0
mov byte [rsi + 0x18], al
lea rcx, [rsi + 0x18]
mov rdx, qword [rsp + 0x70]
call fcn.18002d830
test al, al
jne 0x18000ebf7
movabs rax, 0xc800000000
mov qword [rsi + 0x18], rax
xor eax, eax
mov ecx, 0xc8
cmp eax, ecx
jge 0x18000eb1a
inc eax
mov dword [rsi + 0x18], eax
mov rdx, qword [rsi]
mov r8, qword [rsi + 8]
lea rcx, [rsp + 0xd8]
call fcn.18002cb50
movups xmm0, xmmword [rsp + 0x138]
movups xmmword [rsi + 0x80], xmm0
movups xmm0, xmmword [rsp + 0x128]
movups xmmword [rsi + 0x70], xmm0
movups xmm0, xmmword [rsp + 0x118]
movups xmmword [rsi + 0x60], xmm0
movups xmm0, xmmword [rsp + 0xd8]
movups xmm1, xmmword [rsp + 0xe8]
movups xmm2, xmmword [rsp + 0xf8]
movups xmm3, xmmword [rsp + 0x108]
movups xmmword [rsi + 0x50], xmm3
movups xmmword [rsi + 0x40], xmm2
movups xmmword [rsi + 0x30], xmm1
movups xmmword [rsi + 0x20], xmm0
jmp 0x18000e477
mov rsi, qword [rsp + 0x68]
mov byte [rsi + 0x80], 3
mov byte [rsi + 0x88], 3
mov al, 3
mov byte [rsi + 0x10], al
movzx eax, byte [rsp + 0x2f]
add rsp, 0x148
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov al, 4
jmp 0x18000ebdb
call fcn.180130ef0
mov ebp, eax
xor bpl, 1
movzx eax, byte [rsi + 0x230]
test al, al
je 0x18000ea98
mov qword [rsp + 0x30], r15
mov byte [rsp + 0x38], bpl
lea rax, [0x180138958]
mov qword [rsp + 0x20], rax
lea rcx, [0x180138a08]
lea r9, fcn.18000e2d0
lea r8, [rsp + 0x30]
mov edx, 0x2b
call fcn.180132110
ud2
call fcn.180130ef0
test al, al
jne 0x18000eabe
mov byte [rsi + 0x230], 1
jmp 0x18000eabe
add rbp, 0x210
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x38], r13
lea rax, [0x1801389b8]
mov qword [rsp + 0x20], rax
lea rcx, [0x180138a08]
lea r9, [0x180138a38]
lea r8, [rsp + 0x30]
mov edx, 0x2b
call fcn.180132110
ud2
mov qword [rsp + 0xc8], 2
mov qword [rsp + 0x98], 1
lea rax, [rsp + 0x90]
mov qword [rsp + 0xa0], rax
lea rax, [rsp + 0xc8]
mov qword [rsp + 0xa8], rax
lea rax, [0x180012da0]
mov qword [rsp + 0xb0], rax
lea rcx, [rsp + 0x98]
mov qword [rsp + 0xb8], rcx
mov qword [rsp + 0xc0], rax
lea rax, [0x180138ae8]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], 2
mov qword [rsp + 0x50], 0
lea rax, [rsp + 0xa8]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 2
lea rdx, [0x180138b08]
lea rcx, [rsp + 0x30]
call fcn.180131cf0
ud2
lea rcx, [0x180138990]
lea r8, [0x180138970]
mov edx, 0x23
call fcn.180131da0
ud2
lea rcx, [0x180138990]
lea r8, [0x1801389d0]
mov edx, 0x23
call fcn.180131da0
ud2