Function at 0x42094a
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5c
push ebx
xor ebx, ebx
cmp byte [ebp + 0x28], bl
push esi
push edi
jne 0x42096e
mov ecx, dword [ebp + 0x24]
mov eax, str.Fast
call fcn.004388e8
test eax, eax
mov byte [ebp - 1], bl
je 0x420972
mov byte [ebp - 1], 1
mov ecx, dword [ebp + 0x24]
mov eax, 0x45700c
call fcn.004388e8
test eax, eax
setne byte [ebp - 3]
cmp byte [ebp - 3], 0
je 0x4209a6
mov eax, dword [ebp + 0x1c]
movzx ecx, ah
mov ch, al
mov dword [ebp - 0x1c], eax
shr eax, 0x10
movzx eax, al
shl ecx, 8
or ecx, eax
mov dword [ebp + 0x1c], ecx
jmp 0x4209be
movzx eax, byte [ebp + 0x1d]
mov ah, byte [ebp + 0x1c]
mov ecx, dword [ebp + 0x1c]
shr ecx, 0x10
movzx ecx, cl
shl eax, 8
or eax, ecx
mov dword [ebp - 0x1c], eax
cmp byte [ebp + 0x28], 0
mov esi, dword [0x45d970]
mov dword [ebp - 0x18], esi
jne 0x4209e0
mov eax, dword [ebp + 8]
cmp byte [eax + 1], 1
jbe 0x4209e0
mov eax, dword [0x45d974]
mov dword [ebp - 0xc], eax
jmp 0x4209ee
cmp byte [ebp + 0x28], 0
mov dword [ebp - 0xc], ebx
mov eax, 0x454094
jne 0x4209f3
mov eax, 0x453e70
mov ecx, dword [0x45e2f0]
push 1
push ebx
push 0xffffffffffffffff
push eax
call fcn.0040161c
cmp esi, ebx
je 0x420a15
push 1
push ebx
push 0xffffffffffffffff
push ebx
mov ecx, esi
call fcn.0040161c
cmp dword [ebp - 0xc], ebx
je 0x420a28
mov ecx, dword [ebp - 0xc]
push 1
push ebx
push 0xffffffffffffffff
push ebx
call fcn.0040161c
xor eax, eax
mov dword [ebp - 0x3c], ebx
lea edi, [ebp - 0x38]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [0x45b170]
test byte [eax + 0xc8], 1
jne 0x420a70
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_GetForegroundWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
test eax, eax
je 0x420d49
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
mov edi, dword [ebp + 0x18]
add dword [ebp + 0xc], ecx
add dword [ebp + 0x10], eax
add dword [ebp + 0x14], ecx
add edi, eax
jmp 0x420a73
mov edi, dword [ebp + 0x18]
cmp dword [ebp + 0x20], ebx
jge 0x420a7b
mov dword [ebp + 0x20], ebx
mov eax, 0xff
cmp dword [ebp + 0x20], eax
jle 0x420a88
mov dword [ebp + 0x20], eax
cmp dword [ebp + 0x20], ebx
jle 0x420a9c
mov eax, dword [ebp + 0x1c]
mov byte [ebp + 0x1b], al
mov byte [ebp + 0xb], ah
shr eax, 0x10
mov byte [ebp - 2], al
push ebx
call dword [sym.imp.USER32.dll_GetDC]
cmp eax, ebx
mov dword [ebp - 0x14], eax
je 0x420d49
cmp byte [ebp - 1], 0
mov byte [ebp + 0x27], 0
je 0x420d95
mov esi, dword [ebp + 0x14]
sub esi, dword [ebp + 0xc]
sub edi, dword [ebp + 0x10]
push dword [ebp - 0x14]
xor eax, eax
inc esi
inc edi
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x20], eax
mov ebx, edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
test eax, eax
mov dword [ebp + 0x14], eax
je 0x420cf8
push ebx
push esi
push dword [ebp - 0x14]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov edi, eax
test edi, edi
mov dword [ebp - 0x24], edi
je 0x420cf8
push edi
push dword [ebp + 0x14]
call dword [sym.imp.GDI32.dll_SelectObject]
test eax, eax
mov dword [ebp - 0x20], eax
je 0x420cf8
push 0xcc0020
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp - 0x14]
push ebx
push esi
push 0
push 0
push dword [ebp + 0x14]
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x420cf8
push 8
lea eax, [ebp + 0x1f]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp + 0x14]
lea esi, [ebp - 0x28]
push edi
call fcn.0042076d
add esp, 0x14
test eax, eax
mov dword [ebp - 0x10], eax
je 0x420cf8
mov edi, dword [ebp - 0x28]
imul edi, dword [ebp - 0x2c]
cmp byte [ebp + 0x1f], 0
mov eax, 0xf8f8f8f8
je 0x420b85
xor esi, esi
test edi, edi
jle 0x420b88
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx + esi*4]
and dword [ecx], eax
inc esi
cmp esi, edi
jl 0x420b76
jmp 0x420b88
mov esi, dword [ebp + 0x28]
cmp byte [ebp + 0x28], 0
je 0x420bdc
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
and eax, 0xffffff
cmp byte [ebp - 3], 0
jne 0x420bae
movzx ecx, ah
mov ch, al
shr eax, 0x10
movzx eax, al
shl ecx, 8
or eax, ecx
push eax
lea eax, [ebp - 0x5c]
push str.0x_06X
push eax
call dword [sym.imp.MSVCR71.dll_sprintf]
mov ecx, dword [ebp - 0x18]
add esp, 0xc
push 1
push 0
push 0xffffffffffffffff
lea eax, [ebp - 0x5c]
push eax
call fcn.0040161c
mov byte [ebp + 0x27], 1
jmp 0x420cfb
mov ebx, dword [ebp + 0x20]
cmp ebx, 1
jge 0x420c11
cmp byte [ebp + 0x1f], 0
je 0x420bed
and dword [ebp - 0x1c], eax
xor esi, esi
test edi, edi
jle 0x420ce0
mov eax, dword [ebp - 0x10]
mov eax, dword [eax + esi*4]
and eax, 0xffffff
cmp eax, dword [ebp - 0x1c]
je 0x420bd3
inc esi
cmp esi, edi
jl 0x420bf7
jmp 0x420ce0
cmp byte [ebp + 0x1f], 0
je 0x420c23
and byte [ebp + 0x1b], 0xf8
and byte [ebp + 0xb], 0xf8
and byte [ebp - 2], 0xf8
movzx edx, byte [ebp + 0x1b]
cmp ebx, edx
mov dword [ebp - 0x1c], edx
jle 0x420c34
mov byte [ebp + 0x1b], 0
jmp 0x420c3b
mov al, dl
sub al, bl
mov byte [ebp + 0x1b], al
movzx ecx, byte [ebp + 0xb]
cmp ebx, ecx
jle 0x420c49
mov byte [ebp + 0xb], 0
jmp 0x420c51
mov al, cl
sub al, byte [ebp + 0x20]
mov byte [ebp + 0xb], al
movzx eax, byte [ebp - 2]
cmp dword [ebp + 0x20], eax
jle 0x420c60
mov byte [ebp - 2], 0
jmp 0x420c6b
mov dl, al
sub dl, byte [ebp + 0x20]
mov byte [ebp - 2], dl
mov edx, dword [ebp - 0x1c]
mov esi, 0xff
sub esi, edx
cmp dword [ebp + 0x20], esi
jle 0x420c7c
or dl, 0xff
jmp 0x420c7f
add dl, byte [ebp + 0x20]
mov esi, 0xff
sub esi, ecx
cmp dword [ebp + 0x20], esi
jle 0x420c91
mov byte [ebp - 1], 0xff
jmp 0x420c97
add cl, byte [ebp + 0x20]
mov byte [ebp - 1], cl
mov ebx, 0xff
mov ecx, ebx
sub ecx, eax
cmp dword [ebp + 0x20], ecx
jg 0x420caa
add al, byte [ebp + 0x20]
mov bl, al
xor esi, esi
test edi, edi
jle 0x420ce0
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + esi*4]
mov eax, ecx
shr eax, 0x10
cmp al, byte [ebp + 0x1b]
jb 0x420cdb
cmp al, dl
ja 0x420cdb
cmp ch, byte [ebp + 0xb]
jb 0x420cdb
cmp ch, byte [ebp - 1]
ja 0x420cdb
cmp cl, byte [ebp - 2]
jb 0x420cdb
cmp cl, bl
jbe 0x420bd3
inc esi
cmp esi, edi
jl 0x420cb0
mov ecx, dword [0x45e2f0]
push 1
push 0
push 0xffffffffffffffff
push 0x454094
call fcn.0040161c
jmp 0x420cfb
mov esi, dword [ebp + 0x28]
push dword [ebp - 0x14]
xor edi, edi
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [ebp + 0x14], edi
je 0x420d26
cmp dword [ebp - 0x20], edi
je 0x420d1d
push dword [ebp - 0x20]
push dword [ebp + 0x14]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [ebp + 0x14]
call dword [sym.imp.GDI32.dll_DeleteDC]
cmp dword [ebp - 0x24], edi
je 0x420d34
push dword [ebp - 0x24]
call dword [sym.imp.GDI32.dll_DeleteObject]
cmp dword [ebp - 0x10], edi
je 0x420d43
push dword [ebp - 0x10]
call dword [sym.imp.MSVCR71.dll_free]
pop ecx
cmp byte [ebp + 0x27], 0
jne 0x420d51
xor eax, eax
inc eax
jmp 0x420f3e
cmp byte [ebp + 0x28], 0
jne 0x420f29
cmp dword [ebp - 0x18], edi
je 0x420d7b
mov eax, esi
cdq
idiv dword [ebp - 0x28]
push 0x18
mov eax, edx
sub eax, dword [ebp - 0x3c]
add eax, dword [ebp + 0xc]
cdq
push edx
push eax
mov eax, dword [ebp - 0x18]
call fcn.004019da
cmp dword [ebp - 0xc], edi
je 0x420f29
mov eax, esi
cdq
idiv dword [ebp - 0x28]
sub eax, dword [ebp - 0x38]
add eax, dword [ebp + 0x10]
jmp 0x420f1c
mov eax, dword [ebp + 0x14]
cmp dword [ebp + 0xc], eax
setg byte [ebp - 5]
cmp dword [ebp + 0x10], edi
setg byte [ebp - 4]
cmp dword [ebp + 0x20], ebx
jle 0x420e3e
movzx edx, byte [ebp + 0x1b]
cmp dword [ebp + 0x20], edx
mov dword [ebp - 0x1c], edx
jle 0x420dc1
mov byte [ebp + 0x1b], 0
jmp 0x420dc9
mov al, dl
sub al, byte [ebp + 0x20]
mov byte [ebp + 0x1b], al
movzx ecx, byte [ebp + 0xb]
cmp dword [ebp + 0x20], ecx
jle 0x420dd8
mov byte [ebp + 0xb], 0
jmp 0x420de0
mov al, cl
sub al, byte [ebp + 0x20]
mov byte [ebp + 0xb], al
movzx eax, byte [ebp - 2]
cmp dword [ebp + 0x20], eax
jle 0x420def
mov byte [ebp - 2], 0
jmp 0x420dfa
mov dl, al
sub dl, byte [ebp + 0x20]
mov byte [ebp - 2], dl
mov edx, dword [ebp - 0x1c]
mov esi, 0xff
sub esi, edx
cmp dword [ebp + 0x20], esi
jle 0x420e0c
mov byte [ebp + 0x2b], 0xff
jmp 0x420e12
add dl, byte [ebp + 0x20]
mov byte [ebp + 0x2b], dl
mov edx, dword [ebp + 0x20]
mov ebx, 0xff
mov esi, ebx
sub esi, ecx
cmp edx, esi
jle 0x420e27
mov byte [ebp - 1], bl
jmp 0x420e2c
add cl, dl
mov byte [ebp - 1], cl
mov ecx, ebx
sub ecx, eax
cmp edx, ecx
jle 0x420e39
mov byte [ebp - 3], bl
jmp 0x420e3e
add al, dl
mov byte [ebp - 3], al
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x28]
xor eax, eax
cmp byte [ebp - 5], al
je 0x420e53
cmp esi, dword [ebp + 0x14]
setge al
jmp 0x420e59
cmp esi, dword [ebp + 0x14]
setle al
test eax, eax
je 0x420e91
mov ebx, dword [ebp + 0x10]
xor eax, eax
cmp byte [ebp - 4], al
je 0x420e6e
cmp ebx, edi
setge al
jmp 0x420e73
cmp ebx, edi
setle al
test eax, eax
je 0x420ee8
push ebx
push esi
push dword [ebp - 0x14]
call dword [sym.imp.GDI32.dll_GetPixel]
cmp dword [ebp + 0x20], 1
jge 0x420eb2
cmp eax, dword [ebp + 0x1c]
jne 0x420ed5
mov byte [ebp + 0x27], 1
push dword [ebp - 0x14]
xor edi, edi
push edi
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [ebp + 0x27], 0
jne 0x420efb
push 1
push edi
push 0xffffffffffffffff
push 0x454094
jmp 0x420f33
mov ecx, eax
shr ecx, 0x10
cmp al, byte [ebp + 0x1b]
jb 0x420ed5
cmp al, byte [ebp + 0x2b]
ja 0x420ed5
cmp ah, byte [ebp + 0xb]
jb 0x420ed5
cmp ah, byte [ebp - 1]
ja 0x420ed5
cmp cl, byte [ebp - 2]
jb 0x420ed5
cmp cl, byte [ebp - 3]
jbe 0x420e8d
xor eax, eax
cmp byte [ebp - 4], al
sete al
lea eax, [eax + eax - 1]
add ebx, eax
jmp 0x420e60
xor eax, eax
cmp byte [ebp - 5], al
sete al
lea eax, [eax + eax - 1]
add esi, eax
jmp 0x420e44
cmp dword [ebp - 0x18], edi
je 0x420f12
mov eax, esi
sub eax, dword [ebp - 0x3c]
push 0x18
cdq
push edx
push eax
mov eax, dword [ebp - 0x18]
call fcn.004019da
cmp dword [ebp - 0xc], edi
je 0x420f29
mov eax, ebx
sub eax, dword [ebp - 0x38]
cdq
push 0x18
push edx
push eax
mov eax, dword [ebp - 0xc]
call fcn.004019da
push 1
push edi
push 0xffffffffffffffff
push 0x452954
mov ecx, dword [0x45e2f0]
call fcn.0040161c
pop edi
pop esi
pop ebx
leave
ret 0x24