Function at 0x43a9a0
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xac
cmp byte [ebp + 0x24], 0
push ebx
push esi
mov esi, dword [ebp + 0x20]
push edi
mov edi, ecx
mov dword [esp + 0x70], edi
jne 0x43a9d3
mov edx, str.Fast
mov ecx, esi
call fcn.0047cda0
mov byte [esp + 0xc], 0
test eax, eax
je 0x43a9d8
mov byte [esp + 0xc], 1
mov edx, 0x4d1330
mov ecx, esi
call fcn.0047cda0
mov ebx, dword [ebp + 0x18]
mov edx, eax
test edx, edx
movzx esi, bl
movzx ecx, bx
mov eax, ebx
setne byte [esp + 0xf]
shl esi, 8
shr ecx, 8
or esi, ecx
shr eax, 0x10
shl esi, 8
movzx eax, al
or esi, eax
test edx, edx
je 0x43aa1a
mov dword [esp + 0x24], ebx
mov ebx, esi
mov dword [ebp + 0x18], ebx
jmp 0x43aa1e
mov dword [esp + 0x24], esi
cmp byte [ebp + 0x24], 0
mov eax, dword [0x4ddbb0]
mov dword [esp + 0x1c], eax
je 0x43aa31
xor esi, esi
jmp 0x43aa3e
mov cl, 1
cmp cl, byte [edi + 1]
sbb esi, esi
and esi, dword [0x4ddbb4]
mov dword [esp + 0x64], esi
test eax, eax
je 0x43aa55
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, eax
call fcn.0047faa0
test esi, esi
je 0x43aa68
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, esi
call fcn.0047faa0
xorps xmm0, xmm0
lea edx, [esp + 0x50]
push 0
lea ecx, [esp + 0x50]
movlpd qword [esp + 0x50], xmm0
call fcn.0047de10
mov ebx, dword [ebp + 8]
add esp, 4
mov edx, dword [esp + 0x4c]
add ebx, edx
add edx, dword [ebp + 0x10]
mov esi, ebx
mov ecx, dword [ebp + 0xc]
mov eax, edx
add ecx, dword [esp + 0x50]
mov edi, dword [ebp + 0x14]
add edi, dword [esp + 0x50]
cmp ebx, edx
mov dword [esp + 0x3c], ebx
cmovle eax, ebx
mov dword [esp + 0x2c], ecx
cmovle esi, edx
mov dword [esp + 0x5c], eax
cmp ecx, edi
mov dword [esp + 0x48], edx
mov ebx, ecx
mov eax, edi
cmovle eax, ecx
cmovle ebx, edi
xor ecx, ecx
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
cmovns ecx, eax
mov dword [esp + 0x10], ecx
cmp ecx, 0xff
jle 0x43aae9
mov dword [esp + 0x10], 0xff
jmp 0x43aaed
test ecx, ecx
jle 0x43ab04
mov ecx, dword [ebp + 0x18]
mov eax, ecx
shr eax, 8
mov dword [esp + 0x14], eax
mov eax, ecx
mov byte [esp + 0xd], cl
shr eax, 0x10
jmp 0x43ab18
mov al, byte [esp + 0xc]
mov byte [esp + 0xd], al
mov al, byte [esp + 0xc]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0xc]
push 0
mov dword [esp + 0x2c], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edx, eax
mov dword [esp + 0x30], edx
test edx, edx
je 0x43b38e
cmp byte [esp + 0xc], 0
mov byte [esp + 0xe], 0
je 0x43b0a3
sub esi, dword [esp + 0x5c]
xor ecx, ecx
sub ebx, dword [esp + 0x60]
inc esi
push edx
mov dword [esp + 0x5c], ecx
inc ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x70], ecx
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [esp + 0x44], eax
test eax, eax
je 0x43af24
push ebx
push esi
push dword [esp + 0x38]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esp + 0x58], eax
test eax, eax
je 0x43af24
push eax
push dword [esp + 0x48]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x6c], eax
test eax, eax
je 0x43af24
push 0xcc0020
push dword [esp + 0x64]
push dword [esp + 0x64]
push dword [esp + 0x3c]
push ebx
mov ebx, dword [esp + 0x58]
push esi
push 0
push 0
push ebx
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x43af24
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0xc]
push 8
push eax
lea eax, [esp + 0x3c]
mov edx, ebx
push eax
lea eax, [esp + 0x44]
push eax
call fcn.0043a790
mov ecx, eax
add esp, 0x10
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x43af24
mov ebx, dword [esp + 0x38]
mov edx, ebx
imul edx, dword [esp + 0x34]
mov al, byte [esp + 0xc]
mov dword [esp + 0x54], edx
test al, al
je 0x43aca0
xor esi, esi
test edx, edx
jle 0x43aca4
cmp edx, 0x10
jb 0x43ac8e
mov eax, edx
and eax, reloc.OLEAUT32.dll_SafeArrayDestroy
jns 0x43ac2b
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm2, xmmword [0x4d4820]
mov ecx, edx
sub ecx, eax
mov eax, dword [esp + 0x20]
add eax, 0x20
nop dword [eax]
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add esi, 0x10
movaps xmm1, xmm2
pand xmm1, xmm0
movups xmmword [eax - 0x60], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x50]
pand xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x40]
pand xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x30]
pand xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
cmp esi, ecx
jl 0x43ac40
mov al, byte [esp + 0xc]
mov ecx, dword [esp + 0x20]
cmp esi, edx
jge 0x43aca4
and dword [ecx + esi*4], 0xf8f8f8f8
inc esi
cmp esi, edx
jl 0x43ac92
jmp 0x43aca4
mov esi, dword [esp + 0x40]
cmp byte [ebp + 0x24], 0
je 0x43ad05
mov edx, dword [ecx]
and edx, 0xffffff
cmp byte [esp + 0xf], 0
jne 0x43accf
movzx ecx, dl
movzx eax, dx
shl ecx, 8
shr eax, 8
or ecx, eax
shr edx, 0x10
shl ecx, 8
or edx, ecx
push edx
lea eax, [esp + 0x7c]
push str.0x_06X
push eax
call fcn.00405270
mov edi, dword [esp + 0x28]
lea eax, [esp + 0x84]
add esp, 0xc
mov ecx, edi
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.0047faa0
mov byte [esp + 0xe], 1
jmp 0x43af30
cmp dword [esp + 0x10], 1
jge 0x43ada4
test al, al
je 0x43ad1c
and dword [esp + 0x24], 0xf8f8f8f8
xor ecx, ecx
test edx, edx
jle 0x43af2c
dec edx
mov dword [esp + 0x14], edx
nop dword [eax + eax]
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x48]
jle 0x43ad58
cmp dword [esp + 0x2c], edi
jle 0x43ad44
mov esi, edx
jmp 0x43ad77
mov eax, ecx
cdq
idiv ebx
lea esi, [eax + 1]
imul esi, ebx
sub esi, edx
mov edx, dword [esp + 0x14]
dec esi
jmp 0x43ad77
cmp dword [esp + 0x2c], edi
jle 0x43ad75
mov eax, edx
cdq
idiv ebx
mov esi, eax
mov eax, ecx
cdq
idiv ebx
imul esi, ebx
add esi, edx
mov edx, dword [esp + 0x14]
jmp 0x43ad77
mov esi, ecx
mov eax, dword [esp + 0x20]
mov eax, dword [eax + esi*4]
and eax, 0xffffff
cmp eax, dword [esp + 0x24]
je 0x43ad9a
inc ecx
dec edx
mov dword [esp + 0x14], edx
cmp ecx, dword [esp + 0x54]
jl 0x43ad30
jmp 0x43af2c
mov byte [esp + 0xe], 1
jmp 0x43af2c
mov edx, dword [esp + 0x14]
test al, al
mov al, byte [esp + 0xd]
je 0x43adc2
and al, 0xf8
and edx, 0xfffffff8
and dword [esp + 0x28], 0xfffffff8
mov byte [esp + 0xd], al
mov dword [esp + 0x14], edx
movzx ecx, al
xor ebx, ebx
sub al, byte [esp + 0x10]
cmp dword [esp + 0x10], ecx
movzx eax, al
cmovle ebx, eax
mov dword [esp + 0x24], 0
movzx eax, dl
mov dword [esp + 0x34], eax
mov al, dl
xor edx, edx
mov dword [esp + 0x68], ebx
mov ebx, dword [esp + 0x10]
sub al, bl
cmp ebx, dword [esp + 0x34]
movzx eax, al
cmovle edx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x40], edx
movzx edx, al
sub al, bl
cmp ebx, edx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x24]
movzx eax, al
cmovle edx, eax
mov dword [esp + 0x24], edx
mov edx, 0xff
mov eax, edx
sub eax, ecx
cmp ebx, eax
jle 0x43ae30
mov byte [esp + 0xc], dl
jmp 0x43ae3a
mov cl, bl
add cl, byte [esp + 0xd]
mov byte [esp + 0xc], cl
mov eax, edx
sub eax, dword [esp + 0x34]
cmp ebx, eax
jle 0x43ae4a
mov byte [esp + 0xf], dl
jmp 0x43ae56
mov eax, dword [esp + 0x14]
mov cl, bl
add cl, al
mov byte [esp + 0xf], cl
sub edx, dword [esp + 0x74]
cmp ebx, edx
jle 0x43ae65
mov byte [esp + 0x10], 0xff
jmp 0x43ae6f
mov ecx, dword [esp + 0x28]
add bl, cl
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x54]
xor ecx, ecx
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x34], ecx
test eax, eax
jle 0x43af2c
dec eax
mov dword [esp + 0x38], eax
nop word [eax + eax]
mov edx, dword [esp + 0x3c]
cmp edx, dword [esp + 0x48]
jle 0x43aeb4
cmp dword [esp + 0x2c], edi
jle 0x43aea4
mov esi, eax
jmp 0x43aecd
mov eax, ecx
cdq
idiv ebx
lea esi, [eax + 1]
imul esi, ebx
sub esi, edx
dec esi
jmp 0x43aecd
cmp dword [esp + 0x2c], edi
jle 0x43aecb
cdq
idiv ebx
mov esi, eax
mov eax, ecx
cdq
idiv ebx
imul esi, ebx
add esi, edx
jmp 0x43aecd
mov esi, ecx
mov eax, dword [esp + 0x20]
mov edx, dword [eax + esi*4]
mov ecx, edx
mov eax, edx
shr ecx, 0x10
shr eax, 8
cmp cl, byte [esp + 0x68]
jb 0x43af06
cmp cl, byte [esp + 0xc]
ja 0x43af06
cmp al, byte [esp + 0x40]
jb 0x43af06
cmp al, byte [esp + 0xf]
ja 0x43af06
cmp dl, byte [esp + 0x24]
jb 0x43af06
cmp dl, byte [esp + 0x10]
jbe 0x43ad9a
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x38]
inc ecx
dec eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
cmp ecx, dword [esp + 0x54]
jl 0x43ae90
jmp 0x43af2c
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x1c]
push dword [esp + 0x30]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x43af5f
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x43af58
push ecx
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x44]
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x58]
test eax, eax
je 0x43af6e
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x43b38e
push eax
call fcn.0049b8d4
add esp, 4
cmp byte [ebp + 0x24], 0
jne 0x43b076
cmp byte [esp + 0xe], 0
je 0x43b076
test edi, edi
je 0x43b00d
mov eax, esi
cdq
idiv ebx
mov eax, dword [esp + 0x1c]
mov edi, edx
sub edi, dword [esp + 0x4c]
add edi, dword [esp + 0x5c]
cmp byte [eax + 0x17], 0
jne 0x43afbc
mov eax, dword [eax + 0xc]
mov dword [esp + 0x1c], eax
mov cl, byte [eax + 0x15]
test cl, 2
je 0x43afd9
and cl, 0x3d
mov byte [eax + 0x15], cl
mov ecx, dword [eax]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [esp + 0x1c]
mov cl, byte [eax + 0x15]
mov eax, edi
and cl, 0x9b
mov edi, dword [esp + 0x1c]
or cl, 0x18
cdq
mov dword [edi], eax
mov dword [edi + 4], edx
mov byte [edi + 0x15], cl
jge 0x43affd
mov ecx, edi
call fcn.00401330
and byte [edi + 0x15], 0x8f
jmp 0x43b00d
cmp dword [0x4dc430], 0
je 0x43b00d
mov ecx, edi
call fcn.00401330
mov edi, dword [esp + 0x64]
test edi, edi
je 0x43b076
mov eax, esi
cdq
idiv ebx
mov esi, eax
sub esi, dword [esp + 0x50]
add esi, dword [esp + 0x60]
cmp byte [edi + 0x17], 0
jne 0x43b02d
mov edi, dword [edi + 0xc]
mov cl, byte [edi + 0x15]
test cl, 2
je 0x43b046
and cl, 0x3d
mov byte [edi + 0x15], cl
mov ecx, dword [edi]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov cl, byte [edi + 0x15]
mov eax, esi
and cl, 0x9b
cdq
or cl, 0x18
mov dword [edi], eax
mov dword [edi + 4], edx
mov byte [edi + 0x15], cl
jge 0x43b066
mov ecx, edi
call fcn.00401330
and byte [edi + 0x15], 0x8f
jmp 0x43b076
cmp dword [0x4dc430], 0
je 0x43b076
mov ecx, edi
call fcn.00401330
cmp byte [esp + 0xe], 0
mov ecx, 0x4ca34c
push 1
push 0
mov eax, 0x4b716c
cmove eax, ecx
mov ecx, dword [0x4dc408]
push 0xffffffffffffffff
push eax
call fcn.0047faa0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x43b189
mov cl, byte [esp + 0xd]
movzx esi, cl
cmp eax, esi
jle 0x43b0c1
mov byte [esp + 0xd], 0
jmp 0x43b0c9
mov ch, cl
sub ch, al
mov byte [esp + 0xd], ch
mov ebx, dword [esp + 0x14]
mov al, bl
sub al, byte [esp + 0x10]
movzx edx, bl
cmp dword [esp + 0x10], edx
mov dword [esp + 0x40], edx
movzx eax, al
mov dword [esp + 0x14], 0
mov edx, dword [esp + 0x14]
cmovle edx, eax
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], edx
movzx edx, al
sub al, byte [esp + 0x10]
cmp dword [esp + 0x10], edx
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x20]
movzx eax, al
cmovle edx, eax
mov dword [esp + 0x20], edx
mov edx, 0xff
mov eax, edx
sub eax, esi
cmp dword [esp + 0x10], eax
jle 0x43b132
mov byte [esp + 0x1b], dl
jmp 0x43b13c
mov ch, byte [esp + 0x10]
add ch, cl
mov byte [esp + 0x1b], ch
mov eax, edx
sub eax, dword [esp + 0x40]
cmp dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
jle 0x43b152
mov byte [esp + 0xf], dl
jmp 0x43b15a
mov cl, al
add cl, bl
mov byte [esp + 0xf], cl
sub edx, dword [esp + 0x68]
cmp eax, edx
mov edx, dword [esp + 0x30]
jle 0x43b16d
mov byte [esp + 0xc], 0xff
jmp 0x43b1b9
mov ecx, dword [esp + 0x28]
add al, cl
mov ecx, dword [esp + 0x14]
mov byte [esp + 0xc], al
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x20], eax
jmp 0x43b1b9
mov al, byte [esp + 0xc]
mov byte [esp + 0xd], al
mov al, byte [esp + 0xc]
mov dword [esp + 0x14], eax
mov al, byte [esp + 0xc]
mov dword [esp + 0x20], eax
mov al, byte [esp + 0xc]
mov byte [esp + 0x1b], al
mov al, byte [esp + 0xc]
mov byte [esp + 0xf], al
mov al, byte [esp + 0xc]
mov byte [esp + 0xc], al
mov eax, dword [esp + 0x3c]
mov ebx, eax
mov esi, dword [esp + 0x70]
mov ecx, dword [esp + 0x48]
cmp eax, ecx
jle 0x43b1d4
xor eax, eax
cmp ebx, ecx
setge al
jmp 0x43b1db
xor eax, eax
cmp ebx, ecx
setle al
test eax, eax
je 0x43b21b
mov eax, dword [esp + 0x2c]
mov esi, eax
cmp eax, edi
jle 0x43b1f2
xor eax, eax
cmp esi, edi
setge al
jmp 0x43b1f9
xor eax, eax
cmp esi, edi
setle al
test eax, eax
je 0x43b299
push esi
push ebx
push edx
call dword [sym.imp.GDI32.dll_GetPixel]
cmp dword [esp + 0x10], 1
jge 0x43b251
cmp eax, dword [ebp + 0x18]
jne 0x43b27f
mov byte [esp + 0xe], 1
push dword [esp + 0x30]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [esp + 0xe], 0
jne 0x43b2b3
mov ecx, dword [0x4dc408]
push 1
push 0
push 0xffffffffffffffff
push 0x4ca34c
call fcn.0047faa0
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 + 0xd]
jb 0x43b27f
cmp al, byte [esp + 0x1b]
ja 0x43b27f
cmp cl, byte [esp + 0x14]
jb 0x43b27f
cmp cl, byte [esp + 0xf]
ja 0x43b27f
cmp dl, byte [esp + 0x20]
jb 0x43b27f
cmp dl, byte [esp + 0xc]
jbe 0x43b216
mov edx, dword [esp + 0x30]
xor eax, eax
cmp dword [esp + 0x2c], edi
setle al
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x2c]
dec esi
jmp 0x43b1e5
mov ecx, dword [esp + 0x48]
xor eax, eax
cmp dword [esp + 0x3c], ecx
setle al
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x3c]
dec ebx
jmp 0x43b1c7
mov edi, dword [esp + 0x1c]
test edi, edi
je 0x43b311
sub ebx, dword [esp + 0x4c]
cmp byte [edi + 0x17], 0
jne 0x43b2c8
mov edi, dword [edi + 0xc]
mov cl, byte [edi + 0x15]
test cl, 2
je 0x43b2e1
and cl, 0x3d
mov byte [edi + 0x15], cl
mov ecx, dword [edi]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov cl, byte [edi + 0x15]
mov eax, ebx
and cl, 0x9b
cdq
or cl, 0x18
mov dword [edi], eax
mov dword [edi + 4], edx
mov byte [edi + 0x15], cl
jge 0x43b301
mov ecx, edi
call fcn.00401330
and byte [edi + 0x15], 0x8f
jmp 0x43b311
cmp dword [0x4dc430], 0
je 0x43b311
mov ecx, edi
call fcn.00401330
mov ebx, dword [esp + 0x64]
test ebx, ebx
je 0x43b36f
sub esi, dword [esp + 0x50]
cmp byte [ebx + 0x17], 0
jne 0x43b326
mov ebx, dword [ebx + 0xc]
mov cl, byte [ebx + 0x15]
test cl, 2
je 0x43b33f
and cl, 0x3d
mov byte [ebx + 0x15], cl
mov ecx, dword [ebx]
push ecx
mov edx, dword [ecx]
call dword [edx + 8]
mov cl, byte [ebx + 0x15]
mov eax, esi
and cl, 0x9b
cdq
or cl, 0x18
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov byte [ebx + 0x15], cl
jge 0x43b35f
mov ecx, ebx
call fcn.00401330
and byte [ebx + 0x15], 0x8f
jmp 0x43b36f
cmp dword [0x4dc430], 0
je 0x43b36f
mov ecx, ebx
call fcn.00401330
mov ecx, dword [0x4dc408]
push 1
push 0
push 0xffffffffffffffff
push 0x4b716c
call fcn.0047faa0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [ebp + 0x24], 0
mov ecx, 0x4ca34c
mov eax, 0x4ca8a4
cmove ecx, eax
cmp word [ecx], 0x30
jne 0x43b3ac
cmp word [ecx + 2], 0
je 0x43b3ba
mov eax, dword [0x4d98d8]
test byte [eax + 0x100], 1
jne 0x43b3d5
push 1
push 0
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4dc408]
call fcn.0047faa0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
push 0x4b70dc
push 0
push ecx
mov ecx, dword [esp + 0x7c]
call fcn.0042fd40
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20