Function at 0x439cec
Capabilities:
Allocate or change rwx memory

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x23
push 0
push 0
dec ecx
jne 0x439cf4
push ecx
push ebx
push esi
push edi
mov byte [ebp - 0x81], al
lea eax, [ebp - 0x40]
mov edx, dword [0x41d370]
call fcn.00407b60
lea eax, [ebp - 0x80]
mov edx, dword [0x41d370]
call fcn.00407b60
xor eax, eax
push ebp
push 0x43a4d2
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [0x701690], 0
je 0x439d45
mov eax, dword [0x701690]
cmp eax, dword [0x701694]
jne 0x439db1
push 0x43a4e0
call sub.kernel32.dll_GetModuleHandleW_2
mov ebx, eax
test ebx, ebx
jne 0x439d61
push 0x43a4fc
call sub.kernel32.dll_GetModuleHandleW_2
mov ebx, eax
push 0x43a514
push ebx
call fcn.0040a5cc
mov dword [0x701690], eax
push 0x43a540
push ebx
call fcn.0040a5cc
mov dword [0x701694], eax
push 0x43a594
push ebx
call fcn.0040a5cc
mov dword [0x70169c], eax
push 0x43a5a4
push ebx
call fcn.0040a5cc
mov dword [0x7016a4], eax
push 0x43a5c4
push ebx
call fcn.0040a5cc
mov dword [0x7016a8], eax
cmp dword [0x701690], 0
je 0x43a491
cmp dword [0x701694], 0
je 0x43a491
cmp dword [0x70169c], 0
je 0x43a491
cmp dword [0x7016a4], 0
jne 0x439dee
cmp dword [0x7016a0], 0
je 0x43a491
mov eax, dword [0x722000]
mov edx, dword [0x701698]
mov dword [eax], edx
lea edx, [ebp - 0xb8]
mov eax, dword [0x701690]
call fcn.00421478
lea edx, [ebp - 0x40]
mov eax, dword [0x701690]
call fcn.00422778
mov eax, dword [ebp - 0x20]
call fcn.004087a4
mov esi, eax
dec esi
test esi, esi
jl 0x439ebc
inc esi
xor ebx, ebx
mov edi, ebx
add edi, edi
add edi, edi
add edi, edi
sub edi, ebx
mov eax, dword [ebp - 0x20]
cmp dword [eax + edi*4 + 0xc], 0
je 0x439eb4
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 0xc]
mov edx, dword [ebp - 0x20]
cmp eax, dword [edx + edi*4 + 0x28]
jne 0x439eb4
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edi*4 + 8]
lea edx, [ebp - 0xb8]
call fcn.00421478
cmp word [ebp - 0xb6], 0x8b
jne 0x439eb4
movzx eax, byte [ebp - 0xb4]
sub al, 0x80
je 0x439e8c
sub al, 8
je 0x439e8c
sub al, 8
jne 0x439eb4
mov eax, dword [ebp - 0x9c]
add eax, 2
mov eax, dword [eax]
mov dword [0x701760], eax
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 0xc]
mov dword [0x701764], eax
jmp 0x439ebc
inc ebx
dec esi
jne 0x439e2e
cmp dword [0x701764], 0
je 0x43a228
lea edx, [ebp - 0x40]
mov eax, dword [0x701694]
call fcn.00422778
mov eax, dword [ebp - 0x20]
call fcn.0040879c
dec eax
jne 0x43a228
lea edx, [ebp - 0xf8]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0xc]
call fcn.00422778
lea edx, [ebp - 0xf8]
lea eax, [ebp - 0x40]
mov ecx, dword [0x41d370]
call fcn.00407ec8
mov eax, sub.kernel32.dll_RaiseException_1
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x90]
cmp word [eax], 0x25ff
jne 0x439f35
mov eax, dword [ebp - 0x90]
add eax, 2
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [ebp - 0x90], eax
xor eax, eax
mov dword [ebp - 0x88], eax
mov eax, dword [ebp - 0x20]
call fcn.004087a4
mov esi, eax
test esi, esi
jl 0x43a092
inc esi
xor ebx, ebx
mov edi, ebx
add edi, edi
add edi, edi
add edi, edi
sub edi, ebx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edi*4 + 0xc]
cmp eax, dword [ebp - 0x90]
jne 0x439fd3
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edi*4 + 4]
sub eax, 4
cmp dword [eax], 0xeefface
jne 0x43a08a
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + edi*4 + 4]
lea edx, [ebp - 0xb8]
call fcn.00421478
cmp dword [ebp - 0xa4], 4
jne 0x43a08a
cmp byte [ebp - 0xb1], 0
je 0x43a08a
mov eax, dword [ebp - 0xb0]
mov dword [0x726d20], eax
mov edx, 0x439b0c
sub edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xac]
call fcn.0046026c
jmp 0x43a08a
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 0xc]
lea edx, [ebp - 0xb8]
call fcn.00421478
jmp 0x43a074
mov eax, dword [ebp - 0xb0]
cmp eax, dword [0x70169c]
jne 0x43a04e
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 0xc]
mov dword [ebp - 0x88], eax
cmp dword [ebp - 0xa4], 4
jne 0x43a08a
cmp byte [ebp - 0xb1], 0
je 0x43a08a
mov eax, dword [ebp - 0xb0]
mov dword [0x726d18], eax
mov edx, 0x439998
sub edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xac]
call fcn.0046026c
jmp 0x43a08a
lea edx, [ebp - 0x11c]
mov eax, dword [ebp - 0x98]
call fcn.00421478
push esi
lea esi, [ebp - 0x11c]
lea edi, [ebp - 0xb8]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
pop esi
movzx eax, word [ebp - 0xb6]
add eax, 0xffffff3e
sub ax, 2
jae 0x439ff4
inc ebx
dec esi
jne 0x439f52
cmp dword [ebp - 0x88], 0
je 0x43a228
lea edx, [ebp - 0x40]
mov eax, dword [0x701690]
call fcn.00422778
mov eax, dword [ebp - 0x20]
call fcn.004087a4
mov esi, eax
test esi, esi
jl 0x43a228
inc esi
xor ebx, ebx
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 0xc]
lea edx, [ebp - 0x80]
call fcn.00422778
mov eax, dword [ebp - 0x60]
call fcn.004087a4
mov edi, eax
test edi, edi
jl 0x43a220
inc edi
mov dword [ebp - 0x8c], 0
mov eax, dword [ebp - 0x8c]
mov edx, eax
add eax, eax
add eax, eax
add eax, eax
sub eax, edx
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + eax*4 + 0xc]
cmp eax, dword [ebp - 0x88]
jne 0x43a213
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 8]
lea edx, [ebp - 0xb8]
call fcn.00421478
cmp word [ebp - 0xb6], 0x83
jne 0x43a213
cmp byte [ebp - 0xb4], 0xc4
jne 0x43a213
mov eax, dword [ebp - 0x9c]
movzx eax, byte [eax + 2]
sub al, 0x10
je 0x43a169
sub al, 8
je 0x43a1c2
jmp 0x43a213
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 4]
lea edx, [ebp - 0xb8]
call fcn.00421478
cmp dword [ebp - 0xa4], 4
jne 0x43a220
cmp byte [ebp - 0xb1], 0
je 0x43a220
mov eax, dword [ebp - 0xb0]
mov dword [0x726d1c], eax
mov edx, 0x439a8c
sub edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xac]
call fcn.0046026c
jmp 0x43a220
mov eax, ebx
add eax, eax
add eax, eax
add eax, eax
sub eax, ebx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + eax*4 + 4]
lea edx, [ebp - 0xb8]
call fcn.00421478
cmp dword [ebp - 0xa4], 4
jne 0x43a220
cmp byte [ebp - 0xb1], 0
je 0x43a220
mov eax, dword [ebp - 0xb0]
mov dword [0x726d24], eax
mov edx, 0x439b94
sub edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0xac]
call fcn.0046026c
jmp 0x43a220
inc dword [ebp - 0x8c]
dec edi
jne 0x43a0f7
inc ebx
dec esi
jne 0x43a0c1
cmp byte [ebp - 0x81], 0
je 0x43a3b0
call fcn.00439cd8
lea edx, [ebp - 0xb8]
call fcn.00421478
jmp 0x43a26b
lea edx, [ebp - 0x11c]
mov eax, dword [ebp - 0x98]
call fcn.00421478
lea esi, [ebp - 0x11c]
lea edi, [ebp - 0xb8]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
cmp byte [ebp - 0xb8], 0
je 0x43a2b1
movzx eax, word [ebp - 0xb6]
add eax, 0xffffff3e
sub ax, 2
jb 0x43a2b1
cmp word [ebp - 0xb6], 0x89
jne 0x43a247
mov eax, dword [ebp - 0x9c]
inc eax
cmp dword [eax], 0x24448bc2
jne 0x43a247
mov eax, dword [ebp - 0x9c]
add eax, 5
cmp dword [eax], 0xc488b04
jne 0x43a247
cmp byte [ebp - 0xb8], 0
je 0x43a3b0
movzx eax, word [ebp - 0xb6]
add eax, 0xffffff3e
sub ax, 2
jb 0x43a3b0
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x90], eax
lea edx, [ebp - 0x11c]
mov eax, dword [ebp - 0x98]
call fcn.00421478
lea esi, [ebp - 0x11c]
lea edi, [ebp - 0xb8]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
jmp 0x43a32a
lea edx, [ebp - 0x11c]
mov eax, dword [ebp - 0x98]
call fcn.00421478
lea esi, [ebp - 0x11c]
lea edi, [ebp - 0xb8]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
cmp byte [ebp - 0xb8], 0
je 0x43a370
movzx eax, word [ebp - 0xb6]
add eax, 0xffffff3e
sub ax, 2
jb 0x43a370
cmp word [ebp - 0xb6], 0x89
jne 0x43a306
mov eax, dword [ebp - 0x9c]
inc eax
cmp dword [eax], 0x24448bc2
jne 0x43a306
mov eax, dword [ebp - 0x9c]
add eax, 5
cmp dword [eax], 0xc488b04
jne 0x43a306
cmp byte [ebp - 0xb8], 0
je 0x43a397
movzx eax, word [ebp - 0xb6]
add eax, 0xffffff3e
sub ax, 2
jb 0x43a397
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x90], eax
cmp dword [ebp - 0x90], 0
je 0x43a3b0
mov edx, 0x439c34
mov eax, dword [ebp - 0x90]
call fcn.00460248
cmp dword [0x7016a4], 0
je 0x43a3c6
mov eax, dword [0x7016a4]
mov dword [eax], 0x439c58
jmp 0x43a3d5
mov edx, 0x439c58
mov eax, dword [0x7016a0]
call fcn.00460214
cmp dword [0x7016a8], 0
je 0x43a491
lea edx, [ebp - 0xb8]
mov eax, dword [0x7016a8]
call fcn.00421478
mov ebx, 5
lea edx, [ebp - 0x11c]
mov eax, dword [ebp - 0x98]
call fcn.00421478
lea esi, [ebp - 0x11c]
lea edi, [ebp - 0xb8]
mov ecx, 9
rep movsd dword es:[edi], dword [esi]
dec ebx
jne 0x43a3f7
cmp byte [ebp - 0xb8], 0
je 0x43a491
mov eax, dword [ebp - 0x9c]
cmp word [eax], 0x33ff
jne 0x43a491
mov eax, dword [ebp - 0x98]
add eax, 6
cmp byte [eax], 0x59
jne 0x43a491
lea eax, [ebp - 0x94]
push eax
push 0x40
mov esi, dword [ebp - 0x98]
mov edi, esi
add edi, 7
mov eax, edi
sub eax, dword [0x7016a8]
push eax
mov ebx, dword [ebp - 0x9c]
push ebx
call sub.kernel32.dll_VirtualProtect
mov word [ebx], 0x38b
add esi, 6
mov byte [esi], 0x90
lea eax, [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x94]
push eax
sub edi, dword [0x7016a8]
push edi
push ebx
call sub.kernel32.dll_VirtualProtect
push 0
push 0
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.kernel32.dll_FlushInstructionCache
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x43a4d9
lea eax, [ebp - 0xf8]
mov edx, dword [0x41d370]
call fcn.00407c38
lea eax, [ebp - 0x80]
mov edx, dword [0x41d370]
mov ecx, 2
call fcn.00407c88
ret