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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x450
movsxd rbx, dword [rcx + 0x3c]
xor edi, edi
mov rbp, rcx
add rbx, rcx
cmp dword [rbx], 0x4550
je 0x4046b6
movzx eax, word [rcx + 0xa]
mov ecx, 0x111
and ax, 0x11
cmp ax, cx
je 0x4046b6
lea rdx, [0x00401160]
lea rcx, [0x00406020]
call fcn.00405634
lea rdx, [0x004013f0]
jmp 0x404979
mov edx, dword [rbx + 0x50]
xor ecx, ecx
mov r8d, 0x1000
lea r9d, [rcx + 0x40]
call qword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov rsi, rax
cmp rax, rdi
jne 0x40471b
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rdx, [0x00401400]
lea rcx, [rsp + 0x30]
mov ebx, eax
call fcn.00405664
lea rcx, [rsp + 0x30]
mov r8d, 0xa
mov edx, ebx
call fcn.00405504
lea rdx, [0x00401160]
lea rcx, [0x00406020]
call fcn.00405634
lea rdx, [rsp + 0x30]
jmp 0x404979
mov edx, dword [rbx + 0x54]
mov rcx, rax
add rdx, rax
cmp rax, rdx
je 0x40473d
mov r8, rbp
sub r8, rax
mov al, byte [r8 + rcx]
mov byte [rcx], al
inc rcx
cmp rcx, rdx
jne 0x40472f
movzx r9d, word [rbx + 6]
movzx eax, word [rbx + 0x14]
cmp r9d, edi
jbe 0x404798
lea rdx, [rax + rbx + 0x28]
lea rcx, [rax + rbx + 0x2c]
lea r8, [rax + rbx + 0x24]
mov rbx, r9
cmp dword [rcx], edi
je 0x404786
mov r9d, dword [r8]
mov r10d, dword [rcx]
mov r11d, dword [rdx]
add r9, rsi
add r10, rbp
add r11, r9
jmp 0x404781
mov al, byte [r10]
mov byte [r9], al
inc r9
inc r10
cmp r9, r11
jne 0x404775
add r8, 0x28
add rcx, 0x28
add rdx, 0x28
sub rbx, 1
jne 0x40475d
movsxd rbx, dword [rsi + 0x3c]
add rbx, rsi
call fcn.00404528
sub eax, dword [0x00406014]
cmp eax, 0x7fff
jbe 0x4047b8
xor eax, eax
jmp 0x404943
mov edx, dword [rbx + 0xb4]
cmp edx, edi
je 0x404820
mov ecx, dword [rbx + 0xb0]
mov r9, rsi
sub r9, qword [rbx + 0x30]
add rcx, rsi
cmp edx, edi
jbe 0x404820
mov ebp, dword [rcx]
lea r11, [rcx + 4]
lea rcx, [rcx + 8]
mov r8d, dword [r11]
sub r8d, 8
je 0x40481b
movzx r10d, word [rcx]
mov eax, r10d
shr eax, 0xc
cmp eax, edi
je 0x40480e
cmp eax, 0xa
jne 0x404891
and r10d, 0xfff
add r10d, ebp
add qword [r10 + rsi], r9
add r8d, 0xfffffffe
add rcx, 2
cmp r8d, edi
ja 0x4047e9
sub edx, dword [r11]
jne 0x4047d6
cmp dword [rbx + 0x94], edi
je 0x40493d
mov ebx, dword [rbx + 0x90]
add rbx, rsi
je 0x40493d
mov eax, dword [rbx + 0xc]
cmp eax, edi
je 0x40493d
movabs r14, 0x8000000000000000
mov ebp, eax
add rbp, rsi
call fcn.00404528
sub eax, dword [0x00406014]
cmp eax, 0x7fff
ja 0x4047b1
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov r13, rax
cmp rax, rdi
je 0x40498b
mov ebp, dword [rbx]
mov r12d, dword [rbx + 0x10]
add rbp, rsi
add r12, rsi
jmp 0x404925
lea rdx, [0x00401160]
lea rcx, [0x00406020]
call fcn.00405634
lea rdx, [0x00401418]
jmp 0x404979
mov rax, rcx
mov rdx, rdi
movzx r8d, di
and rax, r14
cmp rax, r14
je 0x4048ee
lea rdx, [rcx + rsi + 2]
mov rax, rdi
mov qword [rsp + 0x28], rdx
cmp byte [rdx], dil
je 0x4048dd
inc rax
cmp byte [rax + rdx], dil
jne 0x4048d4
mov word [rsp + 0x20], ax
mov word [rsp + 0x22], ax
lea rdx, [rsp + 0x20]
jmp 0x4048f3
mov r8w, word [rbp]
lea r9, [rsp + 0x480]
mov rcx, r13
mov qword [rsp + 0x480], rdi
call qword [section..data]
mov r11, qword [rsp + 0x480]
cmp r11, rdi
je 0x40495f
mov qword [r12], r11
add rbp, 8
add r12, 8
mov rcx, qword [rbp]
cmp rcx, rdi
jne 0x4048b0
mov eax, dword [rbx + 0x20]
add rbx, 0x14
cmp eax, edi
jne 0x404850
mov rdi, rsi
mov rax, rdi
lea r11, [rsp + 0x450]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsp, r11
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret
lea rdx, [0x00401160]
lea rcx, [0x00406020]
call fcn.00405634
lea rdx, [0x00401438]
lea rcx, [0x00406020]
or r8d, 0xffffffff
call fcn.004055c4
jmp 0x404940
lea rdx, [0x00401160]
lea rcx, [0x00406020]
call fcn.00405634
lea rdx, [0x00401428]
jmp 0x404979