Function at 0x40e1c0
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov edi, dword [edx + 0x10488b08]
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
sub eax, dword [edx + 0xc]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x20]
shr ecx, 0xf
jbe 0x40e230
in al, dx
mov edx, dword [ebp - 0x14]
imul edx, edx, 0x204
mov eax, dword [ebp - 0x2c]
lea ecx, [eax + edx + 0x144]
mov dword [ebp - 0x28], ecx
mov ebp, dword [edx + 0x4ea830c]
mov dword [ebp - 0x18], edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
sub ecx, 1
mov dword [ebp - 0x3c], ecx
mov edx, dword [ebp - 0x3c]
and edx, 1
je 0x40e210
les eax, [ebx - 0x58bfe1e]
jmp 0x40e774
dec eax
cld
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x34]
and edx, 1
jne 0x40e359
mov eax, dword [ebp - 0x34]
sar eax, 4
sub eax, 0xfffffffe
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0x3f
jbe 0x40e25a
mov dword [ebp - 0x10], 0x3f
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 8]
mov eax, dword [ecx + 4]
les eax, [edx + 8]
jne 0x40e332
or byte [edi], cl
test esi, eax
add byte [eax], al
add byte [ebx + 0x7320f07d], al
pop edx
cmp dword [ebp - 0x10], 0x20
jae 0x40e2cc
mov edx, 0x80000000
mov ecx, dword [ebp - 0x10]
shr edx, cl
imul dword [0x8bec458b]
dec ebp
aam 0x23
push esp
add dword [ebx + ecx*4 + 0x45], 0xd44d8bec
mov dword [ecx + eax*4 + 0x44], edx
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp + 0xf]
mov al, byte [edx + 4]
sub al, 1
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 0x10]
mov byte [ecx + 4], al
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x10]
movsx eax, byte [edx + 4]
test dword [edi], edi
jne 0x40e2ca
mov edx, 0x80000000
mov ecx, dword [ebp - 0x10]
shr edx, cl
not edx
mov eax, dword [ebp + 8]
and edx, dword [eax]
mov ecx, dword [ebp + 8]
mov dword [ecx], edx
jmp 0x40e265
mov ecx, dword [ebp - 0x10]
sub ecx, 0x20
mov edx, 0x80000000
shr edx, cl
not edx
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
and edx, dword [ecx + eax*4 + 0xffc4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + eax*4 + 0xc4], edx
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x10]
mov al, byte [edx + 4]
sub al, 0xfe
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 0x10]
mov byte [ecx + 4], al
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x10]
movsx eax, byte [edx + 4]
test eax, eax
jne 0x40e332
mov ecx, dword [ebp + 0xf]
sub ecx, 0x20
mov edx, 0x80000000
shr edx, cl
not edx
mov eax, dword [ebp + 8]
and edx, dword [eax + 4]
mov ecx, dword [ebp + 8]
mov dword [ecx + 4], edx
mov ebp, dword [edx + 0x8428bf8]
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 4]
mov edx, dword [ebp - 8]
mov eax, dword [edx + 8]
jbe 0x40e390
or byte [ebx + 0x4d03c44d], cl
int3
mov edx, dword [ebp - 0x3c]
sar edx, 4
sub edx, 1
mov dword [ebp - 0x38], edx
cmp dword [ebp + 0x37], 0x3f
jbe 0x40e372
mov dword [ebp - 0x38], 0x3f
mov eax, dword [ebp - 0x1c]
and eax, 1
jne 0x40e4cb
mov ecx, dword [ebp - 0x18]
aam 0x4d
in al, 0x89
dec ebp
hlt
mov dword [ebp - 0x30], edx
cmp dword [ebp - 0x30], 0x3f
jbe 0x40e3a0
mov dword [ebp + 0x2f], 0x3f
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x3c]
sar ecx, 4
sub ecx, 1
mov dword [ebp - 0x38], ecx
jl 0x40e434
enter 0x763f, 7
mov dword [ebp - 0x38], 0x3f
mov edx, dword [ebp - 0x30]
cmp edx, dword [ebp - 0x38]
je 0x40e4c5
mov edi, dword [edx - 0xbb2740c]
mov edx, dword [eax + 4]
cmp edx, dword [ecx + 8]
jne 0x40e4a7
cmp dword [ebp - 0x30], 0x20
jae 0x40e441
mov eax, 0x80ff0000
mov ecx, dword [ebp - 0x30]
shr eax, cl
not eax
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x2c]
and eax, dword [edx + ecx*4 + 0x44]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x2c]
mov dword [ebx + 0x458b448a], edi
aam 3
inc ebp
ror byte [edx - 0x167ffbb8], 1
add dword [ebx + 0x5503d455], ecx
ror byte [eax + 0x458b044a], 1
sub eax, dword [ebx]
inc ebp
ror byte [edi], 1
mov esi, 0xc9850448
jne 0x40e43f
mov edx, 0x80000000
mov ecx, dword [ebp - 0x30]
shr edx, cl
not edx
mov eax, dword [ebp - 9]
and edx, dword [eax]
ror byte [ebx + 0x1023f745], cl
mov ecx, dword [ebp + 8]
mov dword [ecx], edx
jmp 0x40e4a7
mov ecx, dword [ebp - 0x30]
sub ecx, 0x20
mov edx, 0x80000000
shr edx, cl
not edx
mov edi, dword [edx - 0x2bb27414]
and edx, dword [ecx + eax*4 + 0xc4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + eax*4 + 0xc4], edx
mov ebp, dword [edx - 0x2faafc2c]
mov al, byte [edx + 4]
sub al, 1
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 0x30]
mov byte [ecx + 4], al
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x30]
cmovno eax, dword [edx + 4]
test eax, eax
jne 0x40e4a7
mov ecx, dword [ebp - 0x30]
sub ecx, 0x20
mov edx, 0x80000000
shr edx, cl
not edx
mov eax, dword [ebp + 8]
and ebp, dword [edi + 0x84d8b04]
mov dword [ecx + 4], edx
mov edx, dword [ebp - 0xc]
mov eax, dword [edx + 8]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov eax, dword [ebp - 0xc]
je 0x40e503
add al, 0x8b
push ebp
hlt
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x1c]
and edx, 1
jne 0x40e4df
je 0x40e51a
sar byte [ebx], 1
inc ebp
enter 0xffffffffffff840f, 8
add dword [eax], eax
add byte [ebx + 0x558bc84d], cl
fmul dword [ebp + 0x4589ca04]
fmul qword [ebx + 0x558b174d]
fmul qword [ebx + 0x41890442]
add al, 0x8b
dec ebp
call 0x8a1d3a89
push ecx
or byte [ebx + 0x4d8bdc45], cl
call 0x8b459c93
push ebp
call 0x8b45279b
dec ebp
call 0x8b492d9f
push ebp
call 0x8c292aa7
dec edx
add al, 0x3b
mov ecx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x28]
lea eax, [edx + ecx*8]
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp + 0x17]
mov edx, dword [ebp - 0x24]
mov eax, dword [edx + 4]
mov dword [ecx + 4], eax
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x24]
mov dword [ecx + 8], edx
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
mov dword [edi - 0x17aa74fc], esi
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x18]
mov dword [eax + 8], ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov ecx, dword [edx + 4]
cmp ecx, dword [eax + 8]
invalid
call 0x3b452faa
dec eax
or al, dh
test eax, eax
add byte [eax], al
add byte [ebx + 0x7320c87d], al
push edi
mov edx, dword [ebp - 0x2c]
add edx, dword [ebp - 0x38]
movsx eax, byte [edx + 4]
mov ecx, dword [ebp - 0x2c]
add esi, dword [edx + 0x4518ac8]
add dl, 1
mov ecx, dword [ebp - 0x2c]
add ecx, dword [ebp - 0x38]
mov byte [ecx + 4], dl
test eax, eax
jne 0x40e564
mov edx, 0x80000000
je 0x40e5a4
enter 0xffffffffffffead3, 0xffffffffffffff8b
inc ebp
or byte [ebx], cl
adc byte [ebx + 0x1189084d], cl
mov edx, 0x80000000
mov ecx, dword [ebp - 0x38]
shr edx, cl
mov edi, dword [edx - 0x2bb27414]
or edx, dword [ecx + eax*4 + 0x44]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + eax*4 + 0x44], edx
jmp 0x40e5e7
sal byte [ebp + 0x19], 0x8b
dec ebp
enter 0xffffffffffffe983, 0x20
mov edx, 0x80000000
shr edx, cl
mov eax, dword [ebp + 8]
or edx, dword [eax + 4]
mov ecx, dword [ebp + 8]
jbe 0x40e610
add al, 0x8b
dec ebp
enter 0xffffffffffffe983, 0x20
mov edx, 0x80000000
shr edx, cl
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
or edx, dword [ecx + eax*4 + 0xffc4]
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
mov dword [ecx + eax*4 + 0xc4], edx
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x3c]
mov dword [edx], eax
mov ecx, dword [ebp + 0x17]
add ecx, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x3c]
mov dword [ecx - 4], edx
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax]
sub ecx, 1
mov edx, dword [ebp - 0x28]
mov dword [edx], ecx
mov eax, dword [ebp - 0x28]
jl 0x40e645
add byte [edi], cl
test dword [eax + 1], esp
add byte [eax], al
cmp dword [0x46a08c], 0
pushal
add dword [eax], eax
add byte [ebx + 0x46a08c3d], al
add byte [eax], al
je 0x40e763
mov ecx, dword [0xb9b618]
shl ecx, 0xf
mov edx, dword [0x46a08c]
add ecx, dword [edx + 0xc]
mov dword [ebp - 4], ecx
push 0x4000
push 0xff008000
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
adc eax, sym.imp.KERNEL32.dll_VirtualFree
mov edx, 0x80000000
mov ecx, dword [0x46b618]
shr edx, cl
mov eax, dword [0x465f8c]
or edx, dword [eax + 8]
mov ecx, dword [0x46a08c]
mov dword [ecx + 8], edx
mov edx, dword [0x46a08c]
mov eax, dword [edx + 0x10]
mov ecx, dword [0x46b6e7]
mov dword [eax + ecx*4 + 0xc4], 0
mov edx, dword [0x46a08c]
mov eax, dword [edx + 0x10]
mov cl, byte [eax - 0x44]
sub cl, 1
mov edx, dword [0x46a08c]
mov eax, dword [edx + 0x10]
mov byte [eax + 0x43], cl
mov ecx, dword [0x46a08c]
mov edx, dword [ecx + 0x10]
cmovno eax, dword [edx + 0x43]
test eax, eax
jne 0x40e6c2
mov ecx, dword [0x46a08c]
mov edx, dword [ecx + 4]
and edx, 0xfffffffe
mov eax, dword [0x46a08c]
mov dword [eax - 5], edx
mov ecx, dword [0x46a08c]
cmp dword [ecx + 8], 0xffffffff
jne 0x40e763
push 0x8000
push 0
mov edx, dword [0x46a073]
mov eax, dword [edx + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
mov ecx, dword [0x46a08c]
mov edx, dword [ecx + 0x10]
push edx
push 0
pop esi
test byte [eax - 0xafffba], ah
adc eax, sym.imp.KERNEL32.dll_HeapFree
mov ecx, dword [0x46b604]
imul ecx, ecx, 0x14
add ecx, dword [0xff46b608]
mov edx, dword [0x46a08c]
add edx, 0x14
sub ecx, edx
push ecx
mov eax, dword [0x46a08c]
add eax, 0x14
push eax
mov ecx, dword [0xb9a08c]
push ecx
call fcn.00417f10
add esp, 0xc
mov edx, dword [0x46b604]
sub edx, 1
mov dword [0x46b604], edx
je 0x40e78a
or byte [ebx], bh
add eax, 0x46a08c
jbe 0x40e757
mov ecx, dword [ebp + 8]
sub ecx, 0x14
mov dword [ebp + 8], ecx
mov edx, dword [0x46b608]
jbe 0x40e774
adc byte [esi + 0x458b0046], dh
or byte [ebx + 0x46a08c], ah
mov eax, dword [ebp + 8]
mov dword [0x46a08c], eax
mov ecx, dword [ebp - 0x14]
mov dword [0x46b618], ecx
mov esp, ebp
pop ebp
cmp al, 0xcc
int3
inc esi
add byte [ebx - 0x40], ch
adc al, 3
add eax, 0x46b6f7