Function at 0x43e840
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x8c
cmp byte [ebp + 0x24], 0
push ebx
push esi
mov esi, dword [ebp + 0x20]
push edi
mov edi, ecx
mov dword [esp + 0x54], edi
jne 0x43e873
mov edx, str.Fast
mov ecx, esi
call fcn.004786c0
mov byte [esp + 0x11], 0
test eax, eax
je 0x43e878
mov byte [esp + 0x11], 1
mov edx, 0x4d0194
mov ecx, esi
call fcn.004786c0
test eax, eax
setne al
mov byte [esp + 0x14], al
test al, al
je 0x43e8b3
mov ebx, dword [ebp + 0x18]
mov eax, ebx
shr eax, 8
movzx ecx, al
movzx eax, bl
shl eax, 8
or ecx, eax
mov eax, ebx
shr eax, 0x10
shl ecx, 8
movzx eax, al
or ecx, eax
jmp 0x43e8d3
mov ecx, dword [ebp + 0x18]
mov eax, ecx
shr eax, 8
movzx ebx, al
movzx eax, cl
shl eax, 8
or ebx, eax
mov eax, ecx
shr eax, 0x10
shl ebx, 8
movzx eax, al
or ebx, eax
cmp byte [ebp + 0x24], 0
mov eax, dword [0x4ddf18]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x48], eax
je 0x43e8ea
xor esi, esi
jmp 0x43e8f7
mov cl, 1
cmp cl, byte [edi + 1]
sbb esi, esi
and esi, dword [0x4ddf1c]
mov dword [esp + 0x4c], esi
test eax, eax
je 0x43e90e
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, eax
call fcn.0047b2f0
test esi, esi
je 0x43e921
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, esi
call fcn.0047b2f0
push 0
lea edx, [esp + 0x44]
mov dword [esp + 0x40], 0
lea ecx, [esp + 0x40]
mov dword [esp + 0x44], 0
call fcn.00479620
mov eax, dword [ebp + 8]
add esp, 4
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov esi, dword [ebp + 0x10]
add esi, dword [esp + 0x3c]
mov edx, dword [ebp + 0x1c]
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0xc]
add eax, ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x14]
lea edi, [ecx + eax]
mov dword [esp + 0x2c], edi
test edx, edx
jns 0x43eafe
mov dword [ebp + 0x1c], 0
mov al, byte [esp + 0x11]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x11]
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x11]
push 0
mov dword [esp + 0x24], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edx, eax
mov dword [esp + 0x24], edx
test edx, edx
je 0x43efcd
cmp byte [esp + 0x11], 0
mov byte [esp + 0x13], 0
je 0x43ed9c
sub esi, dword [esp + 0x34]
xor ecx, ecx
inc esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], esi
xor edi, edi
mov esi, dword [esp + 0x2c]
sub esi, dword [esp + 0x30]
push edx
mov dword [esp + 0x54], ecx
inc esi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [esp + 0x44], eax
test eax, eax
je 0x43ed93
push esi
push dword [esp + 0x1c]
push dword [esp + 0x2c]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esp + 0x28], eax
test eax, eax
je 0x43ed93
push eax
push dword [esp + 0x48]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x50], eax
test eax, eax
je 0x43ed93
push 0xcc0020
push dword [esp + 0x34]
push dword [esp + 0x3c]
push dword [esp + 0x30]
push esi
push dword [esp + 0x2c]
mov esi, dword [esp + 0x5c]
push edi
push edi
push esi
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x43ed93
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x11]
push 8
push eax
lea eax, [esp + 0x40]
mov edx, esi
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0043e640
mov edx, eax
add esp, 0x10
mov dword [esp + 0x18], edx
test edx, edx
je 0x43ed8f
mov edi, dword [esp + 0x2c]
mov al, byte [esp + 0x11]
imul edi, dword [esp + 0x38]
test al, al
je 0x43eb32
xor esi, esi
test edi, edi
jle 0x43eb36
cmp edi, 8
jb 0x43eaeb
mov eax, edi
and eax, reloc.OLEAUT32.dll_VariantInit
jns 0x43eaad
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm2, xmmword [0x4d3250]
mov ecx, edi
sub ecx, eax
nop dword [eax + eax]
movups xmm0, xmmword [edx + esi*4]
movaps xmm1, xmm2
pand xmm1, xmm0
movups xmmword [edx + esi*4], xmm1
movups xmm0, xmmword [edx + esi*4 + 0x10]
movaps xmm1, xmm2
pand xmm1, xmm0
movups xmmword [edx + esi*4 + 0x10], xmm1
add esi, 8
cmp esi, ecx
jl 0x43eac0
mov al, byte [esp + 0x11]
cmp esi, edi
jge 0x43eb36
nop
and dword [edx + esi*4], 0xf8f8f8f8
inc esi
cmp esi, edi
jl 0x43eaf0
jmp 0x43eb36
cmp edx, 0xff
jle 0x43eb0f
mov dword [ebp + 0x1c], 0xff
jmp 0x43eb17
test edx, edx
jle 0x43e982
mov ecx, dword [esp + 0x28]
mov eax, ecx
shr eax, 8
mov dword [esp + 0x1c], eax
mov eax, ecx
mov byte [esp + 0x12], cl
shr eax, 0x10
jmp 0x43e996
mov esi, dword [esp + 0x38]
cmp byte [ebp + 0x24], 0
je 0x43ec4e
mov eax, dword [edx]
and eax, 0xffffff
cmp byte [esp + 0x14], 0
jne 0x43eb55
mov ecx, eax
call fcn.00436cb0
push eax
lea eax, [esp + 0x5c]
push str.0x_06X
push eax
call fcn.00404b00
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x64]
add esp, 0xc
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.0047b2f0
mov byte [esp + 0x13], 1
mov edi, dword [esp + 0x18]
push dword [esp + 0x24]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x43ebb0
mov eax, dword [esp + 0x50]
test eax, eax
je 0x43eba9
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
push ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x28]
test eax, eax
je 0x43ebbf
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
test edi, edi
je 0x43efcd
push edi
call fcn.00495d53
add esp, 4
cmp byte [ebp + 0x24], 0
jne 0x43ec21
cmp byte [esp + 0x13], 0
je 0x43ec21
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x2c]
test ecx, ecx
je 0x43ec02
mov eax, esi
cdq
idiv ebx
push 0x18
sub edx, dword [esp + 0x40]
add edx, dword [esp + 0x38]
mov eax, edx
cdq
push edx
push eax
call fcn.00401330
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x43ec21
mov eax, esi
cdq
idiv ebx
push 0x18
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x34]
cdq
push edx
push eax
call fcn.00401330
cmp byte [esp + 0x13], 0
mov ecx, 0x4c8740
push 1
push 0
mov eax, 0x4b41e8
cmove eax, ecx
mov ecx, dword [0x4db768]
push 0xffffffffffffffff
push eax
call fcn.0047b2f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp dword [ebp + 0x1c], 1
jge 0x43ec8a
test al, al
je 0x43ec5e
and ebx, 0xf8f8f8f8
xor esi, esi
test edi, edi
jle 0x43eb81
nop dword [eax + eax]
mov eax, dword [edx + esi*4]
and eax, 0xffffff
cmp eax, ebx
je 0x43eb7c
inc esi
cmp esi, edi
jl 0x43ec70
jmp 0x43eb81
mov ecx, dword [esp + 0x1c]
test al, al
mov al, byte [esp + 0x12]
je 0x43eca8
and al, 0xf8
and ecx, 0xfffffff8
and byte [esp + 0x20], 0xf8
mov byte [esp + 0x12], al
mov dword [esp + 0x1c], ecx
mov ebx, dword [ebp + 0x1c]
movzx esi, al
cmp ebx, esi
jle 0x43ecb9
mov byte [esp + 0x14], 0
jmp 0x43ecbf
sub al, bl
mov byte [esp + 0x14], al
mov eax, dword [ebp + 0x1c]
movzx ebx, cl
cmp eax, ebx
jle 0x43ecd0
mov byte [esp + 0x16], 0
jmp 0x43ecd6
sub cl, al
mov byte [esp + 0x16], cl
mov ecx, dword [esp + 0x20]
movzx eax, cl
mov dword [esp + 0x38], eax
cmp dword [ebp + 0x1c], eax
jle 0x43eced
mov byte [esp + 0x15], 0
jmp 0x43ecf6
mov al, cl
sub al, byte [ebp + 0x1c]
mov byte [esp + 0x15], al
mov ecx, 0xff
mov eax, ecx
sub eax, esi
cmp dword [ebp + 0x1c], eax
jle 0x43ed0a
mov byte [esp + 0x11], cl
jmp 0x43ed15
mov ah, byte [ebp + 0x1c]
add ah, byte [esp + 0x12]
mov byte [esp + 0x11], ah
mov eax, ecx
sub eax, ebx
mov ebx, dword [ebp + 0x1c]
cmp ebx, eax
jle 0x43ed24
or bl, cl
jmp 0x43ed2a
mov eax, dword [esp + 0x1c]
add bl, al
sub ecx, dword [esp + 0x38]
mov eax, dword [ebp + 0x1c]
cmp eax, ecx
jle 0x43ed3b
mov byte [ebp + 0x1c], 0xff
jmp 0x43ed42
add al, byte [esp + 0x20]
mov dword [ebp + 0x1c], eax
xor esi, esi
test edi, edi
jle 0x43eb81
mov bh, byte [esp + 0x11]
mov edx, dword [edx + esi*4]
mov ecx, edx
mov eax, edx
shr ecx, 0x10
shr eax, 8
cmp cl, byte [esp + 0x14]
jb 0x43ed80
cmp cl, bh
ja 0x43ed80
cmp al, byte [esp + 0x16]
jb 0x43ed80
cmp al, bl
ja 0x43ed80
cmp dl, byte [esp + 0x15]
jb 0x43ed80
cmp dl, byte [ebp + 0x1c]
jbe 0x43eb7c
inc esi
cmp esi, edi
jge 0x43eb81
mov edx, dword [esp + 0x18]
jmp 0x43ed50
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x38]
jmp 0x43eb85
mov ecx, dword [ebp + 0x1c]
test ecx, ecx
jle 0x43ee4e
mov bl, byte [esp + 0x12]
movzx edx, bl
cmp ecx, edx
jle 0x43edb9
mov byte [esp + 0x12], 0
jmp 0x43edc1
mov bh, bl
sub bh, cl
mov byte [esp + 0x12], bh
mov eax, dword [esp + 0x1c]
movzx esi, al
cmp ecx, esi
jle 0x43edd3
mov byte [esp + 0x15], 0
jmp 0x43eddb
mov bh, al
sub bh, cl
mov byte [esp + 0x15], bh
mov eax, dword [esp + 0x20]
movzx edi, al
cmp ecx, edi
jle 0x43eded
mov byte [esp + 0x14], 0
jmp 0x43edf5
mov bh, al
sub bh, cl
mov byte [esp + 0x14], bh
mov ecx, 0xff
mov eax, ecx
sub eax, edx
mov edx, dword [ebp + 0x1c]
cmp edx, eax
jle 0x43ee0b
mov byte [esp + 0x17], cl
jmp 0x43ee13
mov bh, dl
add bh, bl
mov byte [esp + 0x17], bh
mov eax, ecx
sub eax, esi
cmp edx, eax
jle 0x43ee21
mov byte [esp + 0x16], cl
jmp 0x43ee2d
mov eax, dword [esp + 0x1c]
mov bl, dl
add bl, al
mov byte [esp + 0x16], bl
sub ecx, edi
mov edi, dword [esp + 0x2c]
cmp edx, ecx
jle 0x43ee42
mov edx, dword [esp + 0x24]
mov byte [esp + 0x11], 0xff
jmp 0x43ee7e
mov al, dl
mov edx, dword [esp + 0x24]
add al, byte [esp + 0x20]
jmp 0x43ee7a
mov al, byte [esp + 0x11]
mov byte [esp + 0x12], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x15], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x14], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x17], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x16], al
mov al, byte [esp + 0x11]
mov byte [esp + 0x11], al
mov eax, dword [esp + 0x34]
mov ebx, eax
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x18]
nop dword [eax]
cmp eax, ecx
jle 0x43ee9d
xor eax, eax
cmp ebx, ecx
setge al
jmp 0x43eea4
xor eax, eax
cmp ebx, ecx
setle al
test eax, eax
je 0x43eee6
mov eax, dword [esp + 0x30]
mov esi, eax
nop
cmp eax, edi
jle 0x43eebd
xor eax, eax
cmp esi, edi
setge al
jmp 0x43eec4
xor eax, eax
cmp esi, edi
setle al
test eax, eax
je 0x43ef64
push esi
push ebx
push edx
call dword [sym.imp.GDI32.dll_GetPixel]
cmp dword [ebp + 0x1c], 1
jge 0x43ef1c
cmp eax, dword [esp + 0x28]
jne 0x43ef4a
mov byte [esp + 0x13], 1
push dword [esp + 0x24]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [esp + 0x13], 0
jne 0x43ef7e
mov ecx, dword [0x4db768]
push 1
push 0
push 0xffffffffffffffff
push 0x4c8740
call fcn.0047b2f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov ecx, eax
mov edx, eax
shr ecx, 8
shr edx, 0x10
cmp al, byte [esp + 0x12]
jb 0x43ef4a
cmp al, byte [esp + 0x17]
ja 0x43ef4a
cmp cl, byte [esp + 0x15]
jb 0x43ef4a
cmp cl, byte [esp + 0x16]
ja 0x43ef4a
cmp dl, byte [esp + 0x14]
jb 0x43ef4a
cmp dl, byte [esp + 0x11]
jbe 0x43eee1
mov edx, dword [esp + 0x24]
xor eax, eax
cmp dword [esp + 0x30], edi
setle al
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x30]
dec esi
jmp 0x43eeb0
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp dword [esp + 0x34], ecx
setle al
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x34]
dec ebx
jmp 0x43ee90
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x43ef96
sub ebx, dword [esp + 0x3c]
push 0x18
mov eax, ebx
cdq
push edx
push eax
call fcn.00401330
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x43efae
sub esi, dword [esp + 0x40]
push 0x18
mov eax, esi
cdq
push edx
push eax
call fcn.00401330
mov ecx, dword [0x4db768]
push 1
push 0
push 0xffffffffffffffff
push 0x4b41e8
call fcn.0047b2f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [ebp + 0x24], 0
mov ecx, 0x4c8740
mov eax, 0x4c8a14
cmove ecx, eax
cmp word [ecx], 0x30
jne 0x43efeb
cmp word [ecx + 2], 0
je 0x43eff9
mov eax, dword [0x4d89c0]
test byte [eax + 0x100], 1
jne 0x43f014
push 1
push 0
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4db768]
call fcn.0047b2f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
push 0x4c602c
push 0
push ecx
mov ecx, dword [esp + 0x60]
call fcn.00434ec0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20