Function at 0x180086750
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x10], rdx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x60
mov eax, dword [rsp + 0xb0]
mov rsi, r8
mov r12, rcx
lea ebx, [rax + 0xd]
mov dword [rsp + 0xb0], ebx
cmp eax, ebx
jae case.0x1800867ee.3
mov rbx, qword [rsp + 0x50]
lea r13d, [rax - 0x102]
movzx r15d, word [rsp + 0xb0]
lea r8, [0x180000000]
movzx r14d, byte [rsp + 0xb0]
mov ebp, dword [rsp + 0xb0]
mov edi, dword [rsp + 0xb0]
mov ecx, dword [rsp + 0xb0]
mov dword [rsp + 0x38], r13d
nop
cmp r13d, 0x29
ja case.default.0x1800867ee
movzx eax, byte [r8 + r13 + 0x86b4c]
mov ecx, dword [r8 + rax*4 + 0x86b1c]
add rcx, r8
jmp rcx
mov dword [rsp + 0x30], 1
jmp case.0x1800867ee.11
mov rax, qword [r12]
xor r8d, r8d
mov ecx, dword [rax + 4]
imul ecx, dword [rax]
mov rax, qword [r12 + 0x18]
mov qword [rsp + 0x48], rax
mov eax, dword [rdx]
lea edx, [r8 + 0x59]
imul eax, ecx
mov dword [rsp + 0x34], ecx
lea rcx, [rsp + 0x50]
mov qword [rsp + 0x50], rax
call fcn.18008a600
mov rbx, rax
test rax, rax
jne 0x180086a89
mov ecx, 0xca
mov eax, ecx
sub eax, 0x2f
je 0x180086ae4
sub eax, 0x9b
je 0x180086ac7
cmp eax, 0xb
je 0x180086ab8
add ecx, 0x71a
cmp ecx, 0x154e
jbe 0x180086841
mov rax, qword [rsp + 0x40]
jmp 0x180086afc
mov edx, dword [rsi]
mov r15d, 0xffff
test edx, edx
je 0x1800868bc
nop dword [rax]
nop dword [rax + rax]
dec dword [rsi]
movzx ecx, byte [r12]
inc r12
mov edx, dword [rsi]
movzx eax, r15w
xor rcx, rax
shr r15w, 8
movzx eax, cl
movzx eax, word [r8 + rax*2 + 0xbf230]
xor r15w, ax
test edx, edx
jne 0x180086890
lea eax, [rdx - 1]
mov dword [rsi], eax
jmp 0x180086a90
not r15w
rol r15w, 8
mov word [rsp + 0x30], r15w
jmp case.0x1800867ee.11
cmp dword [rdx], 3
mov r13, rbx
mov eax, dword [rsp + 0x34]
jne 0x180086951
test eax, eax
je 0x1800869b9
mov r8, qword [rsp + 0x48]
mov r9d, eax
nop word [rax + rax]
mov edx, 0x6d
mov eax, edx
sub eax, 0x6b
je 0x18008693b
sub eax, 1
je 0x180086926
cmp eax, 1
jne 0x18008693f
movzx ebp, byte [r8]
shl ebp, 2
movzx ecx, byte [rbp + rsi]
mov byte [rbx], cl
jmp 0x18008693f
movsxd rcx, ebp
movzx eax, byte [rcx + rsi + 1]
mov byte [rbx + 1], al
movzx eax, byte [rcx + rsi + 2]
mov byte [rbx + 2], al
jmp 0x18008693f
add rbx, 3
dec edx
cmp edx, 0x6a
ja 0x180086905
inc r8
sub r9, 1
jne 0x180086900
jmp 0x1800869b9
test eax, eax
je 0x1800869b9
mov r8, qword [rsp + 0x48]
mov r9, rax
nop dword [rax]
mov edx, 0x23
mov eax, edx
sub eax, 0x23
je 0x1800869a2
sub eax, 1
je 0x180086997
cmp eax, 1
jne 0x1800869a9
movsxd rcx, edi
movzx eax, byte [rcx + rsi + 1]
mov byte [rbx + 1], al
movzx eax, byte [rcx + rsi + 2]
mov byte [rbx + 2], al
movzx eax, byte [rcx + rsi + 3]
mov byte [rbx + 3], al
add rbx, 4
jmp 0x1800869a9
movsxd rax, edi
movzx ecx, byte [rax + rsi]
mov byte [rbx], cl
jmp 0x1800869a9
movzx edi, byte [r8]
shl edi, 2
inc edx
cmp edx, 0x26
jb 0x180086965
inc r8
sub r9, 1
jne 0x180086960
mov rcx, qword [r12 + 0x18]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov qword [r12 + 0x18], r13
mov r13d, dword [rsp + 0x38]
jmp 0x180086a89
movzx eax, word [rsi + 2]
test ax, ax
je case.0x1800867ee.11
mov word [rsp + 0x40], ax
mov r9d, 0x9e
lea rax, [rsp + 0x40]
mov r8, r12
xor edx, edx
mov qword [rsp + 0x20], rax
xor ecx, ecx
call fcn.180071be0
jmp 0x180086a89
mov rdx, r12
mov r8d, 8
nop
movzx ecx, r14b
lea rdx, [rdx + 1]
movzx eax, r14b
shl cl, 7
shr al, 1
lea r14d, [rax + rcx]
add r14b, byte [rdx - 1]
sub r8, 1
jne 0x180086a10
lea rdx, [r12 + 8]
mov r8d, 3
nop word [rax + rax]
movzx ecx, r14b
lea rdx, [rdx + 1]
movzx eax, r14b
shl cl, 7
shr al, 1
lea r14d, [rax + rcx]
add r14b, byte [rdx - 1]
sub r8, 1
jne 0x180086a40
jmp 0x180086a89
xor r14b, r14b
jmp case.0x1800867ee.11
xor edx, edx
mov r8d, 0xe0
mov rcx, r12
call sub.VCRUNTIME140.dll_memset
mov eax, 0x3e8
mov qword [r12 + 0xd8], rsi
mov word [r12 + 0x10], ax
lea r8, [0x180000000]
mov rdx, qword [rsp + 0x98]
mov ecx, dword [rsp + 0xb0]
inc r13d
mov dword [rsp + 0x38], r13d
lea eax, [r13 + 0x102]
cmp eax, ecx
jb 0x1800867d0
jmp case.0x1800867ee.3
lea rcx, str.outofmem
call qword [sym.imp.OPENGL32.dll_wglGetProcAddress]
jmp 0x180086afc
lea rax, str.outofmem
mov dword [rsp + 0x40], 0
mov qword [0x1800bfc20], rax
mov rax, qword [rsp + 0x40]
jmp 0x180086afc
mov dword [rsp + 0x40], 0xc845c548
mov rax, qword [rsp + 0x40]
jmp 0x180086afc
mov byte [rsp + 0x30], r14b
mov eax, dword [rsp + 0x30]
lea r11, [rsp + 0x60]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret