Function at 0x100239f0
Capabilities:
Allocate or change rwx memory
Check for time delay via gettickcount
Execute shellcode via indirect call

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov eax, dword [0x1008200c]
xor eax, ebp
mov dword [ebp - 4], eax
cmp dword [0x100899f0], 0
push ebx
push esi
push edi
mov ebx, ecx
jne 0x10023a1d
call fcn.10023630
mov dword [0x100899f0], 1
call fcn.1001c280
mov ecx, dword [0x10088810]
test ecx, ecx
jne 0x10023a38
mov dword [0x1008812c], 0x32
jmp 0x10023a6c
cmp ecx, 1
jne 0x10023a49
mov dword [0x1008812c], 6
jmp 0x10023a6c
cmp ecx, 2
jne 0x10023a5a
mov dword [0x1008812c], 5
jmp 0x10023a6c
mov eax, dword [0x1008812c]
xor edx, edx
cmp ecx, 3
cmove eax, edx
mov dword [0x1008812c], eax
call fcn.1001a190
call fcn.10019ec0
mov ecx, ebx
call fcn.1001a300
call fcn.10021600
mov ecx, ebx
call fcn.1001bf30
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x1c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov esi, dword [sym.imp.KERNEL32.dll_VirtualProtect]
cmp dword [eax], 0
je 0x10023b3f
cmp dword [0x10087f44], 0
jne 0x10023b08
cmp dword [0x10084708], 0
jne 0x10023b08
cmp dword [0x10089e38], 0
jne 0x10023b08
cmp dword [0x100890d4], 0
jne 0x10023b08
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0xfc
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023b79
lea eax, [ebp - 0xc]
push eax
push 0x40
push 1
push edi
call esi
lea eax, [ebp - 0xc]
push eax
push dword [ebp - 0xc]
jmp 0x10023b71
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0xfc
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023b79
lea eax, [ebp - 0x10]
push eax
push 0x40
push 1
push edi
call esi
lea eax, [ebp - 0x10]
mov byte [edi], 0xcc
push eax
push dword [ebp - 0x10]
jmp 0x10023b74
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0xfc
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023b79
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
mov byte [edi], 0x55
push 1
push edi
call esi
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x1c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
cmp dword [eax], 0
je 0x10023bd4
cmp dword [0x100887d4], 0
jne 0x10023ba4
cmp dword [0x1008909c], 0
je 0x10023bd4
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x17c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023c0e
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0xcc
jmp 0x10023c02
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x17c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023c0e
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0x6a
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 1
push edi
call esi
mov ecx, ebx
call fcn.1001ea20
mov ecx, ebx
call fcn.1001d8c0
mov ecx, ebx
call fcn.1001e3e0
mov ecx, ebx
call fcn.1001de40
call fcn.1001e080
call fcn.1001e180
call fcn.100209d0
call fcn.10020d70
call fcn.100210a0
call fcn.100208c0
call fcn.10021890
cmp dword [0x10087f78], 0
je 0x10023cfb
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x1c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
cmp dword [eax], 0
je 0x10023cfb
push 0x20
mov dword [0x10088aa4], 0x10011ce0
call fcn.10011ce0
cwde
shr eax, 0x10
test eax, eax
je 0x10023cf4
cmp byte [0x1008a2d0], 0
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
je 0x10023cb5
cmp dword [0x1008a2d4], 0
je 0x10023cfb
call edi
mov ecx, dword [0x1008a2d4]
inc ecx
cmp ecx, eax
ja 0x10023cfb
mov byte [0x1008a2d0], 1
call edi
mov ecx, dword [0x100883cc]
mov dword [0x1008a2d4], eax
mov eax, dword [0x10084760]
add eax, 0x154
mov edx, dword [ecx]
push eax
call dword [edx + 4]
lea edi, [eax + 2]
cmp edi, 0x1000
jbe 0x10023d36
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 3
jmp 0x10023d2a
mov byte [0x1008a2d0], 0
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x154
push eax
mov edx, dword [ecx]
call dword [edx + 4]
lea edi, [eax + 2]
cmp edi, 0x1000
jbe 0x10023d36
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0x44
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 1
push edi
call esi
call fcn.10021210
call fcn.100212c0
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x168
push eax
mov edx, dword [ecx]
call dword [edx + 4]
test eax, eax
je 0x10023ddf
cmp dword [0x10089e04], 1
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
mov edx, dword [ecx]
jne 0x10023db1
add eax, 0x1c
push eax
call dword [edx + 4]
mov ecx, dword [0x100883cc]
cmp dword [eax], 0
mov edx, dword [ecx]
mov eax, dword [0x10084760]
je 0x10023db1
add eax, 0x168
push eax
call dword [edx + 4]
lea edi, [eax + 3]
cmp edi, 0x1000
jbe 0x10023ddf
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0x66
jmp 0x10023dd3
add eax, 0x168
push eax
call dword [edx + 4]
lea edi, [eax + 3]
cmp edi, 0x1000
jbe 0x10023ddf
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0x46
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 1
push edi
call esi
call fcn.10021ca0
call fcn.1001f160
call fcn.1001f0a0
cmp dword [0x10088374], 0
jle 0x10023e40
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x1c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
cmp dword [eax], 0
je 0x10023e40
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x13c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023e7a
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0xcc
jmp 0x10023e6e
mov ecx, dword [0x100883cc]
mov eax, dword [0x10084760]
add eax, 0x13c
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, eax
cmp edi, 0x1000
jbe 0x10023e7a
lea eax, [ebp - 8]
push eax
push 0x40
push 1
push edi
call esi
mov byte [edi], 0x68
lea eax, [ebp - 8]
push eax
push dword [ebp - 8]
push 1
push edi
call esi
call fcn.10021af0
call fcn.1001e280
call fcn.10021be0
call fcn.10021740
call fcn.10021430
call fcn.100214d0
call fcn.10022930
call fcn.10022640
call fcn.10022b80
mov ecx, ebx
call fcn.100229c0
call fcn.10021de0
call fcn.10022520
call fcn.100221c0
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100593b9
mov esp, ebp
pop ebp
ret