Function at 0x140720280
Capabilities:
Allocate or change rwx memory
Encode data using xor
Execute shellcode via indirect call

Disassembly:
push rbp
push rbx
mov rbp, rsp
sub rsp, 0x28
mov edx, 0x40
xor ecx, ecx
mov r9d, 4
mov r8d, 0x1000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rbx, rax
test rax, rax
je 0x14072065e
mov rcx, qword [0x140756ca0]
mov qword [rsp + 0x50], rsi
xor esi, esi
mov qword [rsp + 0x58], rdi
mov qword [rsp + 0x20], r14
mov qword [rbp + 0x20], rcx
test cl, cl
jne 0x140720306
mov dword [rbp + 0x18], esi
mov ecx, dword [rbp + 0x18]
nop word [rax + rax]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
add edx, 0x7e
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x1407202e0
mov eax, dword [rbp + 0x24]
lea r14, [0x140000000]
xor edx, edx
mov byte [rbp + 0x20], 1
mov r8d, 0x40
mov rcx, rbx
call qword [r14 + rax*8 + 0xaa3a20]
mov edx, 0xe8
xor ecx, ecx
mov r9d, 4
mov r8d, 0x1000
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rdi, rax
test rax, rax
je 0x1407204b3
mov rcx, qword [0x140756ca0]
mov qword [rbp + 0x20], rcx
test cl, cl
jne 0x140720387
mov dword [rbp + 0x18], esi
mov ecx, dword [rbp + 0x18]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
add edx, 0x7a
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x140720361
mov eax, dword [rbp + 0x24]
xor edx, edx
mov r8d, 0xe8
mov byte [rbp + 0x20], 1
mov rcx, rdi
call qword [r14 + rax*8 + 0xaa3980]
xor r9d, r9d
mov dword [rdi + 0x2c], 0x1388
xor r8d, r8d
mov edx, 1
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateEventW]
xor r9d, r9d
xor r8d, r8d
mov edx, 1
mov qword [rdi + 0x30], rax
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateEventW]
lea rcx, [rdi + 0x40]
mov qword [rdi + 8], rsi
mov qword [rdi + 0x38], rax
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rax, [0x14071f280]
mov dword [rdi + 0xe0], esi
mov qword [rdi + 0x68], rax
lea rax, [0x14071f290]
mov qword [rdi + 0x70], rax
lea rax, [0x14071f2b0]
mov qword [rdi + 0x78], rax
lea rax, [0x140002c40]
mov qword [rdi + 0x80], rax
lea rax, [0x14071f340]
mov qword [rdi + 0x88], rax
lea rax, [0x14071f350]
mov qword [rdi + 0x90], rax
lea rax, [0x14071f360]
mov qword [rdi + 0x98], rax
lea rax, [0x14071f370]
mov qword [rdi + 0xa0], rax
lea rax, [0x14071f660]
mov qword [rdi + 0xa8], rax
lea rax, [0x14071f780]
mov qword [rdi + 0xb0], rax
lea rax, [0x14071f600]
mov qword [rdi + 0xd8], rax
lea rax, [0x14071f8b0]
mov qword [rdi + 0xb8], rax
lea rax, [0x14071fa00]
mov qword [rdi + 0xc0], rax
lea rax, [fcn.14071faa0]
mov qword [rdi + 0xc8], rax
lea rax, [0x14071fb40]
mov qword [rdi + 0xd0], rax
mov qword [rbx], rdi
call fcn.140720080
mov qword [rbx + 8], rax
call fcn.14071e3b0
lea rcx, [rbx + 0x10]
mov qword [rbx + 0x38], rax
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov rax, qword [0x140756d90]
mov rdi, qword [rsp + 0x58]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140720516
mov dword [rbp + 0x18], esi
mov eax, dword [rbp + 0x18]
nop dword [rax]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
add edx, 0x7e
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x1407204f0
mov eax, dword [rbp + 0x24]
lea r8, [0x14071fc00]
mov rcx, qword [rbx + 0x38]
mov edx, 1
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0xaa4520]
mov rax, qword [0x140756cf0]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140720576
mov dword [rbp + 0x18], esi
mov eax, dword [rbp + 0x18]
nop word [rax + rax]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
add edx, 0x7f
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x140720550
mov eax, dword [rbp + 0x24]
lea r8, [0x14071fda0]
mov rcx, qword [rbx + 0x38]
mov edx, 2
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0xaa4340]
mov rax, qword [0x140756b60]
mov qword [rbp + 0x20], rax
test al, al
jne 0x1407205d6
mov dword [rbp + 0x18], esi
mov eax, dword [rbp + 0x18]
nop word [rax + rax]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
add edx, 0xffffff80
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x1407205b0
mov eax, dword [rbp + 0x24]
lea r8, [0x14071fee0]
mov rcx, qword [rbx + 0x38]
mov edx, 3
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0xaa3fd0]
mov rax, qword [0x140756cc8]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140720636
mov dword [rbp + 0x18], esi
mov eax, dword [rbp + 0x18]
nop word [rax + rax]
movsxd rax, dword [rbp + 0x18]
mov edx, dword [rbp + 0x18]
sub edx, 0x7f
xor edx, dword [rbp + rax*4 + 0x24]
movsxd rax, dword [rbp + 0x18]
mov dword [rbp + rax*4 + 0x24], edx
mov eax, dword [rbp + 0x18]
inc eax
mov dword [rbp + 0x18], eax
mov eax, dword [rbp + 0x18]
cmp eax, 1
jb 0x140720610
mov eax, dword [rbp + 0x24]
lea r8, [0x140720030]
mov rcx, qword [rbx + 0x38]
mov edx, 5
call qword [r14 + rax*8 + 0xaa3fd0]
mov r14, qword [rsp + 0x20]
mov rax, rbx
mov rsi, qword [rsp + 0x50]
add rsp, 0x28
pop rbx
pop rbp
ret