Function at 0x401b50
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call

Disassembly:
push rsi
push rbx
sub rsp, 0x38
lea rax, [rsp + 0x58]
mov rbx, rcx
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x60], r8
mov qword [rsp + 0x68], r9
mov qword [rsp + 0x28], rax
call sub.msvcrt.dll___iob_func
mov r8d, 0x1b
mov edx, 1
lea r9, [rax + 0x60]
lea rcx, str.Mingw_w64_runtime_failure:_n
call sub.msvcrt.dll_fwrite
mov rsi, qword [rsp + 0x28]
call sub.msvcrt.dll___iob_func
mov rdx, rbx
lea rcx, [rax + 0x60]
mov r8, rsi
call sub.msvcrt.dll_vfprintf
call sub.msvcrt.dll_abort
nop
nop word cs:[rax + rax]
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rsi, rcx
mov ecx, dword [0x00407624]
mov rdi, rdx
mov rbp, r8
test ecx, ecx
jle 0x401c90
mov rax, qword [0x00407628]
xor ebx, ebx
nop dword [rax]
mov r9, qword [rax + 8]
cmp rsi, r9
jb 0x401b9c
mov rdx, qword [rax + 0x10]
mov edx, dword [rdx + 8]
add r9, rdx
cmp rsi, r9
jb 0x401c21
add ebx, 1
add rax, 0x18
cmp ebx, ecx
jne 0x401b80
mov rcx, rsi
call fcn.00402810
test rax, rax
mov r12, rax
je 0x401cb4
movsxd rbx, ebx
lea r13, [rbx + rbx*2]
shl r13, 3
mov rbx, r13
add rbx, qword [0x00407628]
mov qword [rbx + 0x10], rax
mov dword [rbx], 0
call fcn.00402950
mov edx, dword [r12 + 0xc]
mov r8d, 0x30
add rax, rdx
mov qword [rbx + 8], rax
mov rax, qword [0x00407628]
lea rdx, [rsp + 0x20]
mov rcx, qword [rax + r13 + 8]
call qword [sym.imp.KERNEL32.dll_VirtualQuery]
test rax, rax
je 0x401c97
mov eax, dword [rsp + 0x44]
cmp eax, 0x40
jne 0x401c40
add dword [0x00407624], 1
mov r8, rbp
mov rdx, rdi
mov rcx, rsi
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
jmp sub.msvcrt.dll_memcpy
cmp eax, 4
je 0x401c1a
cmp eax, 0x80
je 0x401c1a
cmp eax, 8
je 0x401c1a
mov r9, r13
mov rdx, qword [rsp + 0x38]
mov r8d, 0x40
add r9, qword [0x00407628]
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x401c1a
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.__VirtualProtect_failed_with_code_0x_x
mov edx, eax
call fcn.00401ae0
nop dword [rax]
xor ebx, ebx
jmp 0x401ba7
mov rax, qword [0x00407628]
lea rcx, str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov edx, dword [r12 + 8]
mov r8, qword [rax + r13 + 8]
call fcn.00401ae0
lea rcx, str.Address__p_has_no_image_section
mov rdx, rsi
call fcn.00401ae0
nop
nop word cs:[rax + rax]
push rbp
push r14
push r13
push r12
push rdi
push rsi
push rbx
mov rbp, rsp
sub rsp, 0x60
mov ebx, dword [0x00407620]
test ebx, ebx
je 0x401d00
mov rsp, rbp
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop rbp
ret
mov dword [0x00407620], 1
call fcn.00402860
cdqe
lea rax, [rax + rax*2]
lea rax, [rax*8 + 0x1e]
and rax, 0xfffffffffffffff0
call fcn.00402ab0
lea rsi, [0x00404920]
mov dword [0x00407624], 0
lea rbx, [0x00404920]
sub rsp, rax
lea rax, [rsp + 0x20]
mov qword [0x00407628], rax
mov rax, rsi
sub rax, rbx
cmp rax, 7
jle 0x401ceb
cmp rax, 0xb
jle 0x401d92
mov r11d, dword [0x00404920]
test r11d, r11d
jne 0x401ec0
mov r10d, dword [0x00404924]
test r10d, r10d
jne 0x401ec0
mov r9d, dword [0x00404928]
test r9d, r9d
jne 0x401da9
lea rbx, [0x0040492c]
mov r8d, dword [rbx]
test r8d, r8d
jne 0x401ec0
mov ecx, dword [rbx + 4]
test ecx, ecx
jne 0x401ec0
mov edx, dword [rbx + 8]
cmp edx, 1
jne 0x401fdd
add rbx, 0xc
cmp rbx, rsi
jae 0x401ceb
lea r14, [0x00400000]
movabs r13, 0xffffffff00000000
lea r12, [rbp - 0x30]
mov ecx, dword [rbx + 4]
mov r8d, dword [rbx]
movzx eax, byte [rbx + 8]
add rcx, r14
add r8, r14
cmp eax, 0x10
mov rdx, qword [r8]
je 0x401f3c
jbe 0x401efe
cmp eax, 0x20
je 0x401f8c
cmp eax, 0x40
jne 0x401f76
sub rdx, r8
mov r8d, 8
mov rdi, r12
add rdx, qword [rcx]
mov qword [rbp - 0x30], rdx
mov rdx, r12
call 0x401b50
add rbx, 0xc
cmp rbx, rsi
jb 0x401dd7
nop
mov eax, dword [0x00407624]
xor ebx, ebx
xor esi, esi
test eax, eax
jle 0x401ceb
mov r14, qword [sym.imp.KERNEL32.dll_VirtualQuery]
lea r13, [rbp - 0x34]
mov r12, qword [sym.imp.KERNEL32.dll_VirtualProtect]
jmp 0x401e73
add esi, 1
add rbx, 0x18
cmp esi, dword [0x00407624]
jge 0x401ceb
mov rax, rbx
add rax, qword [0x00407628]
mov edx, dword [rax]
test edx, edx
je 0x401e60
mov rcx, qword [rax + 8]
mov r8d, 0x30
mov rdx, rdi
call r14
test rax, rax
je 0x401fbf
mov rax, qword [0x00407628]
mov r9, r13
mov rdx, qword [rbp - 0x18]
mov rcx, qword [rbp - 0x30]
mov r8d, dword [rax + rbx]
call r12
jmp 0x401e60
cmp rbx, rsi
jae 0x401ceb
lea r12, [0x00400000]
lea rdi, [rbp - 0x30]
mov ecx, dword [rbx + 4]
mov r8d, 4
mov rdx, rdi
add rbx, 8
add rcx, r12
mov eax, dword [rcx]
add eax, dword [rbx - 8]
mov dword [rbp - 0x30], eax
call 0x401b50
cmp rbx, rsi
jb 0x401ed4
jmp 0x401e30
cmp eax, 8
jne 0x401f76
movzx r9d, byte [rcx]
mov rdi, r12
movzx eax, r9b
mov r10, rax
or r10, 0xffffffffffffff00
test r9b, r9b
cmovs rax, r10
sub rax, r8
mov r8d, 1
add rax, rdx
mov rdx, r12
mov qword [rbp - 0x30], rax
call 0x401b50
jmp 0x401e26
movzx r9d, word [rcx]
mov rdi, r12
movzx eax, r9w
mov r10, rax
or r10, 0xffffffffffff0000
test r9w, r9w
cmovs rax, r10
sub rax, r8
mov r8d, 2
add rax, rdx
mov rdx, r12
mov qword [rbp - 0x30], rax
call 0x401b50
jmp 0x401e26
mov edx, eax
mov qword [rbp - 0x30], 0
lea rcx, str.__Unknown_pseudo_relocation_bit_size__d._n
call fcn.00401ae0
mov r9d, dword [rcx]
mov rdi, r12
mov eax, r9d
mov r10, rax
or r10, r13
test r9d, r9d
cmovs rax, r10
sub rax, r8
mov r8d, 4
add rax, rdx
mov rdx, r12
mov qword [rbp - 0x30], rax
call 0x401b50
jmp 0x401e26
add rbx, qword [0x00407628]
lea rcx, str.__VirtualQuery_failed_for__d_bytes_at_address__p
mov rax, qword [rbx + 0x10]
mov r8, qword [rbx + 8]
mov edx, dword [rax + 8]
call fcn.00401ae0
lea rcx, str.__Unknown_pseudo_relocation_protocol_version__d._n
call fcn.00401ae0
nop
nop
nop
nop
nop
nop
nop
push rbx
sub rsp, 0x30
mov eax, dword [rcx]
cmp eax, 0xc0000091
ja 0x402060
cmp eax, 0xc000008d
jae 0x402083
cmp eax, 0xc0000008
je 0x402120
ja 0x402100
cmp eax, 0x80000002
je 0x402120
cmp eax, 0xc0000005
jne 0x40210e
xor edx, edx
mov ecx, 0xb
call sub.msvcrt.dll_signal
cmp rax, 1
je 0x402176
test rax, rax
je 0x402140
mov ecx, 0xb
call rax
xor eax, eax
add rsp, 0x30
pop rbx
ret
cmp eax, 0xc0000094
je 0x402130
ja 0x4020c0
cmp eax, 0xc0000092
je 0x402120
cmp eax, 0xc0000093
jne 0x40210e
mov ebx, 1
xor edx, edx
mov ecx, 8
call sub.msvcrt.dll_signal
cmp rax, 1
mov rdx, rax
je 0x402150
test rdx, rdx
mov eax, 1
je 0x402054
mov ecx, 8
call rdx
xor eax, eax
add rsp, 0x30
pop rbx
ret
cmp eax, 0xc0000095
je 0x402120
cmp eax, 0xc0000096
jne 0x40210e
xor edx, edx
mov ecx, 4
call sub.msvcrt.dll_signal
cmp rax, 1
je 0x40218c
test rax, rax
je 0x402140
mov ecx, 4
call rax
xor eax, eax
jmp 0x402054
cmp eax, 0xc000001d
je 0x4020ce
cmp eax, 0xc000008c
je 0x402120
mov eax, 1
add rsp, 0x30
pop rbx
ret
xor eax, eax
add rsp, 0x30
pop rbx
ret
xor ebx, ebx
jmp 0x402088
mov eax, 4
add rsp, 0x30
pop rbx
ret
mov ecx, 8
call sub.msvcrt.dll_signal
xor eax, eax
test ebx, ebx
je 0x402054
mov dword [rsp + 0x2c], eax
call fcn.00401ab0
mov eax, dword [rsp + 0x2c]
jmp 0x402054
mov edx, 1
mov ecx, 0xb
call sub.msvcrt.dll_signal
xor eax, eax
jmp 0x402054
mov edx, 1
mov ecx, 4
call sub.msvcrt.dll_signal
xor eax, eax
jmp 0x402054