Function at 0x140a56320
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 0x140a566fe
mov rcx, qword [0x140a8ccc8]
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 0x140a563a6
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 0x140a56380
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 + 0x15fa9a0]
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 0x140a56553
mov rcx, qword [0x140a8ccc8]
mov qword [rbp + 0x20], rcx
test cl, cl
jne 0x140a56427
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 0x140a56401
mov eax, dword [rbp + 0x24]
xor edx, edx
mov r8d, 0xe8
mov byte [rbp + 0x20], 1
mov rcx, rdi
call qword [r14 + rax*8 + 0x15fa900]
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, [0x140a55320]
mov dword [rdi + 0xe0], esi
mov qword [rdi + 0x68], rax
lea rax, [0x140a55330]
mov qword [rdi + 0x70], rax
lea rax, [0x140a55350]
mov qword [rdi + 0x78], rax
lea rax, [0x140002c50]
mov qword [rdi + 0x80], rax
lea rax, [0x140a553e0]
mov qword [rdi + 0x88], rax
lea rax, [0x140a553f0]
mov qword [rdi + 0x90], rax
lea rax, [0x140a55400]
mov qword [rdi + 0x98], rax
lea rax, [0x140a55410]
mov qword [rdi + 0xa0], rax
lea rax, [0x140a55700]
mov qword [rdi + 0xa8], rax
lea rax, [0x140a55820]
mov qword [rdi + 0xb0], rax
lea rax, [0x140a556a0]
mov qword [rdi + 0xd8], rax
lea rax, [0x140a55950]
mov qword [rdi + 0xb8], rax
lea rax, [0x140a55aa0]
mov qword [rdi + 0xc0], rax
lea rax, [fcn.140a55b40]
mov qword [rdi + 0xc8], rax
lea rax, [0x140a55be0]
mov qword [rdi + 0xd0], rax
mov qword [rbx], rdi
call fcn.140a56120
mov qword [rbx + 8], rax
call fcn.140a54450
lea rcx, [rbx + 0x10]
mov qword [rbx + 0x38], rax
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov rax, qword [0x140a8cdb0]
mov rdi, qword [rsp + 0x58]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140a565b6
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 0x140a56590
mov eax, dword [rbp + 0x24]
lea r8, [0x140a55ca0]
mov rcx, qword [rbx + 0x38]
mov edx, 1
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0x15fb590]
mov rax, qword [0x140a8cd10]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140a56616
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 0x140a565f0
mov eax, dword [rbp + 0x24]
lea r8, [0x140a55e40]
mov rcx, qword [rbx + 0x38]
mov edx, 2
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0x15fb400]
mov rax, qword [0x140a8ca80]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140a56676
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 0x140a56650
mov eax, dword [rbp + 0x24]
lea r8, [0x140a55f80]
mov rcx, qword [rbx + 0x38]
mov edx, 3
mov byte [rbp + 0x20], 1
call qword [r14 + rax*8 + 0x15fafa0]
mov rax, qword [0x140a8cce8]
mov qword [rbp + 0x20], rax
test al, al
jne 0x140a566d6
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 0x140a566b0
mov eax, dword [rbp + 0x24]
lea r8, [0x140a560d0]
mov rcx, qword [rbx + 0x38]
mov edx, 5
call qword [r14 + rax*8 + 0x15fafa0]
mov r14, qword [rsp + 0x20]
mov rax, rbx
mov rsi, qword [rsp + 0x50]
add rsp, 0x28
pop rbx
pop rbp
ret