Function at 0x404ec0
Capabilities:
Allocate or change rwx memory
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
mov esi, ecx
xor ebx, ebx
push edi
mov edi, edx
mov dword [ebp - 0x18], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x4890b0], eax
je 0x404eee
pop edi
pop esi
mov eax, 0x10dd
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [0x4890b4]
test eax, eax
jne 0x405239
test esi, esi
je 0x404f17
mov esi, dword [esi]
test esi, esi
jne 0x404f25
mov eax, dword [ebp - 0x18]
mov dword [0x4890b4], 6
mov dword [0x4890b8], eax
pop edi
pop esi
mov eax, 6
pop ebx
mov esp, ebp
pop ebp
ret 0xc
xor eax, eax
cmp byte [esi], 0xff
mov dword [ebp - 0x10], eax
jne 0x404f4d
cmp byte [esi + 1], 0x25
jne 0x404f4d
mov eax, dword [esi + 2]
mov ecx, esi
mov edx, eax
mov dword [ebp - 0x1c], eax
call fcn.00404510
test al, al
je 0x404f4d
mov esi, dword [ebp - 0x1c]
mov esi, dword [esi]
cmp byte [esi], 0xeb
jne 0x404f8e
movsx eax, byte [esi + 1]
add eax, 2
add esi, eax
mov cl, byte [esi]
lea eax, [esi + 1]
cmp cl, 0xff
jne 0x404f84
cmp byte [eax], 0x25
jne 0x404f84
mov eax, dword [esi + 2]
mov ecx, esi
mov edx, eax
mov dword [ebp - 0x1c], eax
call fcn.00404510
test al, al
je 0x404f8e
mov esi, dword [ebp - 0x1c]
mov esi, dword [esi]
jmp 0x404f8e
cmp cl, 0xe9
jne 0x404f8e
add esi, 5
add esi, dword [eax]
test edi, edi
je 0x404ff6
cmp byte [edi], 0xff
jne 0x404fb5
cmp byte [edi + 1], 0x25
jne 0x404fb5
mov eax, dword [edi + 2]
mov ecx, edi
mov edx, eax
mov dword [ebp - 0x1c], eax
call fcn.00404510
test al, al
je 0x404fb5
mov edi, dword [ebp - 0x1c]
mov edi, dword [edi]
cmp byte [edi], 0xeb
jne 0x404ff6
movsx eax, byte [edi + 1]
add eax, 2
add edi, eax
mov cl, byte [edi]
lea eax, [edi + 1]
cmp cl, 0xff
jne 0x404fec
cmp byte [eax], 0x25
jne 0x404fec
mov eax, dword [edi + 2]
mov ecx, edi
mov edx, eax
mov dword [ebp - 0x1c], eax
call fcn.00404510
test al, al
je 0x404ff6
mov edi, dword [ebp - 0x1c]
mov edi, dword [edi]
jmp 0x404ff6
cmp cl, 0xe9
jne 0x404ff6
add edi, 5
add edi, dword [eax]
cmp edi, esi
jne 0x40500d
cmp dword [0x488f50], ebx
jne 0x40522f
xor eax, eax
jmp 0x4051e7
push 0x18
call fcn.00466317
add esp, 4
mov dword [ebp - 0x10], eax
mov ecx, esi
call fcn.004047a0
mov dword [ebp - 0xc], eax
test eax, eax
jne 0x405030
lea ebx, [eax + 8]
jmp 0x4051e7
xorps xmm0, xmm0
mov ecx, eax
movq qword [eax + 0x38], xmm0
mov edx, esi
add eax, 0x1e
mov dword [ebp - 8], ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x14], eax
nop dword [eax + eax]
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push eax
push 0
push edx
lea eax, [ebp - 0x14]
mov ebx, edx
push eax
push ecx
mov dword [ebp - 0x24], ebx
call fcn.00401000
mov ecx, dword [ebp - 8]
mov edx, eax
mov eax, dword [ebp - 0x1c]
sub eax, ebx
mov ebx, edx
add eax, edx
sub ebx, esi
add ecx, eax
mov al, bl
mov dword [ebp - 8], ecx
and al, 7
sub cl, byte [ebp - 0xc]
mov byte [ebp - 1], cl
shl cl, 3
or cl, al
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x38], cl
mov ecx, dword [ebp - 0x24]
mov al, byte [ecx]
cmp al, 0xeb
je 0x4050f0
cmp al, 0xe9
je 0x4050f0
cmp al, 0xe0
je 0x4050f0
cmp al, 0xc2
je 0x4050f0
cmp al, 0xc3
je 0x4050f0
cmp al, 0xcc
je 0x4050f0
cmp al, 0xff
jne 0x4050be
cmp byte [ecx + 1], 0x25
jmp 0x4050e0
cmp al, 0x26
je 0x4050d6
cmp al, 0x2e
je 0x4050d6
cmp al, 0x36
je 0x4050d6
cmp al, 0xe3
je 0x4050d6
cmp al, 0x64
je 0x4050d6
cmp al, 0x65
jne 0x4050e2
cmp byte [ecx + 1], 0xff
jne 0x4050e2
cmp byte [ecx + 2], 0x25
je 0x4050f0
mov ecx, dword [ebp - 8]
cmp ebx, 5
jb 0x405050
jmp 0x4050f3
mov ecx, dword [ebp - 8]
cmp ebx, 5
jae 0x405113
nop dword [eax + eax]
cmp byte [edx], 0x90
jne 0x4051d6
inc edx
mov ebx, edx
sub ebx, esi
cmp ebx, 5
jb 0x405100
cmp ecx, dword [ebp - 0x14]
jbe 0x405119
int3
mov ecx, dword [ebp - 0x28]
mov al, byte [ebp - 1]
push ebx
push esi
mov byte [ecx], al
mov eax, dword [ebp - 0xc]
mov byte [eax + 0x36], bl
add eax, 0x20
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [ebp - 0xc]
add esp, 0xc
cmp ebx, 0x19
jbe 0x405147
mov ebx, 6
jmp 0x4051e7
movzx ecx, byte [eax + 0x1e]
lea edx, [esi + ebx]
add ecx, eax
mov dword [eax + 0x40], edx
mov dword [eax + 0x44], edi
xor edi, edi
lea eax, [ecx + 5]
mov byte [ecx], 0xe9
sub edx, eax
mov dword [ecx + 1], edx
lea edx, [ecx + 5]
mov ecx, dword [ebp - 0x14]
sub ecx, edx
cmp edx, dword [ebp - 0x14]
cmova ecx, edi
test ecx, ecx
je 0x405184
push ecx
push 0xcc
push edx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], edi
push eax
push 0x40
push ebx
push esi
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x4051a3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
jmp 0x4051e4
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0xc]
mov dword [ecx + 0x10], eax
mov dword [ecx + 4], edi
mov dword [ecx + 0xc], esi
mov eax, dword [ebp - 0x20]
pop edi
mov dword [ecx + 0x14], eax
mov eax, dword [0x4890c0]
pop esi
mov dword [ecx], eax
xor eax, eax
mov dword [0x4890c0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp dword [0x488f50], 0
mov ebx, 9
jne 0x4051f9
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x10]
mov dword [ebp - 0xc], eax
mov dword [0x4890b4], ebx
test eax, eax
je 0x405220
jmp 0x4051ff
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x10]
push 0x48
mov esi, eax
push 0
push eax
and esi, 0xffff0000
call sub.VCRUNTIME140.dll_memset
mov ecx, dword [ebp - 0xc]
add esp, 0xc
mov eax, dword [esi + 8]
mov dword [ecx + 0x40], eax
mov dword [esi + 8], ecx
test edi, edi
je 0x40522f
push 0x18
push edi
call fcn.004662e6
add esp, 8
mov eax, dword [ebp - 0x18]
mov dword [0x4890b8], eax
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc