Function at 0x10004090
Capabilities:
Check for software breakpoints

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
mov eax, dword [0x10021040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
mov byte [ebp - 0x54], 0xe8
xor dl, dl
mov dword [ebp - 0x58], edi
xor dh, dh
mov dword [ebp - 0x53], 0
mov byte [ebp - 0x44], 0xe9
mov dword [ebp - 0x43], 0
mov word [ebp - 0x4c], 0x800f
mov dword [ebp - 0x4a], 0
mov byte [ebp - 0x21], dl
mov byte [ebp - 0x29], dh
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x3c], 0
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0
xor eax, eax
movzx ecx, dh
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov eax, dword [edi + 8]
movzx esi, dl
add eax, ecx
add esi, dword [edi]
lea edx, [ebp - 0x20]
mov dword [ebp - 0x5c], ecx
mov ecx, esi
mov dword [ebp - 0x34], eax
call fcn.100010a0
test dword [ebp - 8], 0x1000
mov ebx, eax
mov dword [ebp - 0x38], ebx
jne 0x10004439
cmp byte [ebp - 0x21], 5
mov ecx, esi
mov dword [ebp - 0x30], ecx
jb 0x10004161
mov eax, esi
mov dword [ebp - 0x3c], 1
sub eax, dword [ebp - 0x34]
lea ecx, [ebp - 0x44]
sub eax, 5
mov ebx, 5
mov dword [ebp - 0x43], eax
mov eax, dword [ebp - 0x28]
jmp 0x100041d2
mov dl, byte [ebp - 0x1a]
cmp dl, 0xe8
jne 0x1000418a
mov edx, dword [ebp - 0x20]
lea ecx, [ebp - 0x54]
movzx eax, dl
mov ebx, 5
sub eax, dword [ebp - 0x34]
add eax, 0xfffffffb
add eax, dword [ebp - 0x10]
add eax, esi
mov dword [ebp - 0x53], eax
mov eax, dword [ebp - 0x28]
jmp 0x100041d5
mov al, dl
and al, 0xfd
cmp al, 0xe9
jne 0x100042c5
mov eax, dword [ebp - 0x20]
movzx ecx, al
add ecx, esi
cmp dl, 0xeb
jne 0x100041ab
movsx eax, byte [ebp - 0x10]
add ecx, eax
jmp 0x100041ae
add ecx, dword [ebp - 0x10]
mov eax, dword [edi]
cmp eax, ecx
ja 0x100042a4
add eax, 5
cmp ecx, eax
jae 0x100042a4
mov eax, dword [ebp - 0x28]
cmp eax, ecx
jae 0x100041cf
mov eax, ecx
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x20]
cmp esi, eax
jae 0x100041e4
movzx eax, dl
cmp ebx, eax
jne 0x10004439
mov esi, dword [ebp - 0x5c]
mov eax, esi
cdq
add eax, ebx
adc edx, 0
test edx, edx
ja 0x10004439
jb 0x10004202
cmp eax, 0x20
ja 0x10004439
mov eax, dword [edi + 0x10]
cmp eax, 8
jae 0x10004439
mov dl, byte [ebp - 0x21]
mov dh, byte [ebp - 0x29]
mov byte [eax + edi + 0x14], dl
mov eax, dword [edi + 0x10]
mov byte [eax + edi + 0x1c], dh
add dh, bl
inc dword [edi + 0x10]
mov edi, dword [edi + 8]
add edi, esi
mov byte [ebp - 0x29], dh
mov esi, ecx
mov ecx, ebx
rep movsb byte es:[edi], byte [esi]
add dl, byte [ebp - 0x20]
cmp dword [ebp - 0x3c], 0
mov edi, dword [ebp - 0x58]
mov byte [ebp - 0x21], dl
je 0x100040f1
cmp dl, 5
jae 0x10004423
mov ebx, dword [ebp - 0x58]
movzx edi, dl
mov edx, dword [ebx]
add edx, edi
mov cl, byte [edx]
test cl, cl
je 0x1000426c
cmp cl, 0x90
je 0x1000426c
cmp cl, 0xcc
jne 0x10004382
mov esi, 5
mov eax, 1
sub esi, edi
cmp esi, eax
jbe 0x10004423
cmp byte [edx + eax], cl
jne 0x10004382
inc eax
cmp eax, esi
jb 0x10004280
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1000444c
mov esp, ebp
pop ebp
ret
sub ecx, dword [ebp - 0x34]
mov ebx, 5
mov eax, dword [ebp - 0x28]
sub ecx, 5
cmp esi, eax
mov dword [ebp - 0x43], ecx
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x3c], ecx
lea ecx, [ebp - 0x44]
jmp 0x100041d2
mov dh, byte [ebp - 0x19]
mov bl, dl
and bl, 0xf0
cmp bl, 0x70
je 0x10004307
mov al, dl
and al, 0xfc
cmp al, 0xe0
je 0x10004307
mov al, dh
and al, 0xf0
cmp al, 0x80
je 0x10004307
mov ebx, dword [ebp - 0x38]
and dl, 0xfe
mov eax, dword [ebp - 0x28]
cmp dl, 0xc2
mov edx, dword [ebp - 0x20]
jne 0x100041d5
cmp esi, eax
sbb ecx, ecx
inc ecx
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x30]
jmp 0x100041d5
mov eax, dword [ebp - 0x20]
movzx ecx, al
add ecx, esi
cmp bl, 0x70
je 0x10004321
mov al, dl
and al, 0xfc
cmp al, 0xe0
je 0x10004321
add ecx, dword [ebp - 0x10]
jmp 0x10004327
movsx eax, byte [ebp - 0x10]
add ecx, eax
mov eax, dword [edi]
cmp eax, ecx
ja 0x1000434d
add eax, 5
cmp ecx, eax
jae 0x1000434d
mov ebx, dword [ebp - 0x38]
mov edx, dword [ebp - 0x20]
cmp dword [ebp - 0x28], ecx
jae 0x10004342
mov dword [ebp - 0x28], ecx
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x30]
jmp 0x100041d5
mov al, dl
and al, 0xfc
cmp al, 0xe0
je 0x10004439
cmp dl, 0xf
jne 0x10004360
mov dl, dh
sub ecx, dword [ebp - 0x34]
and dl, 0xf
mov eax, dword [ebp - 0x28]
or dl, 0x80
sub ecx, 6
mov byte [ebp - 0x4b], dl
mov dword [ebp - 0x4a], ecx
mov ebx, 6
lea ecx, [ebp - 0x4c]
jmp 0x100041d2
cmp byte [ebp - 0x21], 2
jae 0x100043be
test cl, cl
je 0x1000439a
cmp cl, 0x90
je 0x1000439a
cmp cl, 0xcc
jne 0x10004439
mov esi, 2
mov eax, 1
sub esi, edi
cmp esi, eax
jbe 0x100043be
lea ebx, [ebx]
cmp byte [edx + eax], cl
jne 0x10004439
inc eax
cmp eax, esi
jb 0x100043b0
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
lea eax, [ebp - 0x20]
push 0x1c
push eax
mov eax, dword [ebx]
add eax, 0xfffffffb
push eax
call dword [sym.imp.KERNEL32.dll_VirtualQuery]
cmp dword [ebp - 0x10], 0x1000
jne 0x10004439
test byte [ebp - 0xc], 0xf0
je 0x10004439
mov edx, dword [ebx]
mov cl, byte [edx - 5]
test cl, cl
je 0x10004409
cmp cl, 0x90
je 0x10004409
cmp cl, 0xcc
jne 0x10004439
mov eax, 1
mov edi, edi
cmp byte [edx + eax - 5], cl
jne 0x10004439
inc eax
cmp eax, 5
jb 0x10004410
mov dword [ebx + 0xc], 1
pop edi
pop esi
mov eax, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1000444c
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1000444c
mov esp, ebp
pop ebp
ret