Function at 0x437880
Capabilities:
Capture screenshot

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
push ebx
mov bh, byte [ebp + 0x24]
push esi
mov esi, dword [ebp + 0x20]
push edi
mov edi, ecx
mov dword [esp + 0x58], edi
test bh, bh
jne 0x4378b3
mov edx, str.Fast
mov ecx, esi
call fcn.004730c0
test eax, eax
jne 0x4378b3
xor bl, bl
jmp 0x4378b5
mov bl, 1
mov edx, 0x4c60a0
mov ecx, esi
call fcn.004730c0
mov edx, eax
mov eax, dword [ebp + 0x18]
test edx, edx
movzx esi, al
movzx ecx, ax
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 0x4378f6
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x18], eax
mov dword [ebp + 0x18], esi
jmp 0x4378fa
mov dword [esp + 0x18], esi
mov eax, dword [0x4d3d98]
mov dword [esp + 0x44], eax
test bh, bh
je 0x43790b
xor esi, esi
jmp 0x437918
mov cl, 1
cmp cl, byte [edi + 1]
sbb esi, esi
and esi, dword [0x4d3d9c]
mov dword [esp + 0x48], esi
test eax, eax
je 0x43792f
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, eax
call fcn.00475930
test esi, esi
je 0x437942
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, esi
call fcn.00475930
xorps xmm0, xmm0
lea edx, [esp + 0x3c]
push 0
lea ecx, [esp + 0x3c]
movlpd qword [esp + 0x3c], xmm0
call fcn.00474000
mov eax, dword [ebp + 8]
xor ecx, ecx
add eax, dword [esp + 0x3c]
add esp, 4
mov esi, dword [ebp + 0xc]
add esi, dword [esp + 0x3c]
mov edi, dword [ebp + 0x14]
add edi, dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x10]
add eax, dword [esp + 0x38]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
mov dword [esp + 0x2c], esi
cmovns ecx, eax
mov dword [esp + 0x10], ecx
cmp ecx, 0xff
jle 0x4379a5
mov dword [esp + 0x10], 0xff
jmp 0x4379a9
test ecx, ecx
jle 0x4379c2
mov ecx, dword [ebp + 0x18]
mov eax, ecx
shr eax, 8
mov bh, cl
mov dword [esp + 0x24], eax
mov eax, ecx
mov byte [esp + 0xd], cl
shr eax, 0x10
jmp 0x4379d6
mov bh, byte [esp + 0xc]
mov cl, byte [esp + 0xc]
mov al, byte [esp + 0xc]
mov byte [esp + 0xd], bh
mov dword [esp + 0x24], ecx
push 0
mov dword [esp + 0x2c], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edx, eax
mov dword [esp + 0x34], edx
test edx, edx
je 0x437ff6
mov byte [esp + 0xe], 0
test bl, bl
je 0x437da9
mov eax, dword [esp + 0x1c]
xor ecx, ecx
sub eax, dword [esp + 0x30]
sub edi, esi
inc eax
mov dword [esp + 0x20], ecx
push edx
xor ebx, ebx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x20], eax
inc edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov esi, eax
mov dword [esp + 0x50], esi
test esi, esi
je 0x437cdc
push edi
push dword [esp + 0x20]
push dword [esp + 0x3c]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esp + 0x20], eax
test eax, eax
je 0x437cdc
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x54], eax
test eax, eax
je 0x437cdc
push 0xcc0020
push dword [esp + 0x30]
push dword [esp + 0x38]
push dword [esp + 0x40]
push edi
push dword [esp + 0x30]
push ebx
push ebx
push esi
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x437cdc
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0xc]
push 8
push eax
lea eax, [esp + 0x24]
mov edx, esi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.00437670
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x437cdc
mov edi, dword [esp + 0x40]
mov dl, byte [esp + 0xc]
imul edi, dword [esp + 0x1c]
test dl, dl
je 0x437b32
xor esi, esi
test edi, edi
jle 0x437b36
cmp edi, 0x10
jb 0x437b20
mov eax, edi
and eax, reloc.OLEAUT32.dll_SafeArrayDestroy
jns 0x437ad7
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm2, xmmword [0x4c9710]
mov ecx, edi
sub ecx, eax
lea eax, [ebx + 0x20]
movups xmm0, xmmword [eax - 0x20]
add esi, 0x10
movaps xmm1, xmm2
pand xmm0, xmm2
movups xmmword [eax - 0x20], xmm0
movups xmm0, xmmword [eax - 0x10]
pand xmm1, xmm0
movups xmmword [eax - 0x10], xmm1
movups xmm0, xmmword [eax]
pand xmm0, xmm2
movups xmmword [eax], xmm0
movups xmm0, xmmword [eax + 0x10]
pand xmm0, xmm2
movups xmmword [eax + 0x10], xmm0
add eax, 0x40
cmp esi, ecx
jl 0x437ae5
cmp esi, edi
jge 0x437b36
and dword [ebx + esi*4], 0xf8f8f8f8
inc esi
cmp esi, edi
jl 0x437b24
jmp 0x437b36
mov esi, dword [esp + 0x4c]
cmp byte [ebp + 0x24], 0
je 0x437b92
mov edx, dword [ebx]
and edx, 0xffffff
cmp byte [esp + 0xf], 0
jne 0x437b61
movzx ecx, dx
movzx eax, dl
shr ecx, 8
shl eax, 8
or ecx, eax
shr edx, 0x10
shl ecx, 8
or edx, ecx
push edx
lea eax, [esp + 0x64]
push str.0x_06X
push eax
call fcn.004053a0
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0x6c]
add esp, 0xc
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.00475930
mov byte [esp + 0xe], 1
jmp 0x437ce0
cmp dword [esp + 0x10], 1
jge 0x437bc7
mov ecx, dword [esp + 0x18]
test dl, dl
je 0x437ba7
and ecx, 0xf8f8f8f8
xor esi, esi
test edi, edi
jle 0x437ce0
mov eax, dword [ebx + esi*4]
and eax, 0xffffff
cmp eax, ecx
je 0x437b88
inc esi
cmp esi, edi
jl 0x437bb1
jmp 0x437ce0
mov al, byte [esp + 0xd]
test dl, dl
je 0x437bdf
and dword [esp + 0x24], 0xfffffff8
and al, 0xf8
and dword [esp + 0x28], 0xfffffff8
mov byte [esp + 0xd], al
movzx ecx, al
xor edx, edx
sub al, byte [esp + 0x10]
cmp dword [esp + 0x10], ecx
movzx eax, al
cmovle edx, eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x24]
mov al, dl
sub al, byte [esp + 0x10]
movzx esi, dl
xor edx, edx
cmp dword [esp + 0x10], esi
movzx eax, al
cmovle edx, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x4c], edx
movzx edx, al
sub al, byte [esp + 0x10]
cmp dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x1c]
movzx eax, al
cmovle edx, eax
mov dword [esp + 0x1c], edx
mov edx, 0xff
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, eax
jle 0x437c53
mov byte [esp + 0xc], dl
jmp 0x437c5f
add cl, byte [esp + 0xd]
mov byte [esp + 0xc], cl
mov ecx, dword [esp + 0x10]
mov eax, edx
sub eax, esi
cmp ecx, eax
jle 0x437c6d
mov byte [esp + 0xf], dl
jmp 0x437c79
mov al, cl
mov ecx, dword [esp + 0x24]
add al, cl
mov byte [esp + 0xf], al
sub edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
cmp eax, edx
jle 0x437c8c
mov byte [esp + 0x10], 0xff
jmp 0x437c96
mov ecx, dword [esp + 0x28]
add al, cl
mov dword [esp + 0x10], eax
xor esi, esi
test edi, edi
jle 0x437ce0
nop dword [eax]
mov edx, dword [ebx + esi*4]
mov ecx, edx
mov eax, edx
shr ecx, 0x10
shr eax, 8
cmp cl, byte [esp + 0x5c]
jb 0x437cd5
cmp cl, byte [esp + 0xc]
ja 0x437cd5
cmp al, byte [esp + 0x4c]
jb 0x437cd5
cmp al, byte [esp + 0xf]
ja 0x437cd5
cmp dl, byte [esp + 0x1c]
jb 0x437cd5
cmp dl, byte [esp + 0x10]
jbe 0x437b88
inc esi
cmp esi, edi
jl 0x437ca0
jmp 0x437ce0
mov esi, dword [esp + 0x4c]
push dword [esp + 0x34]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edi, dword [esp + 0x50]
test edi, edi
je 0x437d0b
mov eax, dword [esp + 0x54]
test eax, eax
je 0x437d04
push eax
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, dword [esp + 0x20]
test eax, eax
je 0x437d1a
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
test ebx, ebx
je 0x437ff6
push ebx
call fcn.004914e4
add esp, 4
cmp byte [ebp + 0x24], 0
jne 0x437d7c
cmp byte [esp + 0xe], 0
je 0x437d7c
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
test ecx, ecx
je 0x437d5d
mov eax, esi
cdq
idiv ebx
push 0x18
sub edx, dword [esp + 0x3c]
add edx, dword [esp + 0x34]
mov eax, edx
cdq
push edx
push eax
call fcn.00401ac0
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x437d7c
mov eax, esi
cdq
idiv ebx
push 0x18
sub eax, dword [esp + 0x40]
add eax, dword [esp + 0x30]
cdq
push edx
push eax
call fcn.00401ac0
cmp byte [esp + 0xe], 0
mov ecx, 0x4bf994
push 1
push 0
mov eax, 0x4ac300
cmove eax, ecx
mov ecx, dword [0x4d166c]
push 0xffffffffffffffff
push eax
call fcn.00475930
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov edx, dword [esp + 0x10]
test edx, edx
jle 0x437e7f
movzx ecx, bh
cmp edx, ecx
jle 0x437dc3
mov byte [esp + 0xd], 0
jmp 0x437dcb
mov bl, bh
sub bl, dl
mov byte [esp + 0xd], bl
mov eax, dword [esp + 0x24]
movzx esi, al
sub al, dl
cmp edx, esi
movzx eax, al
mov dword [esp + 0x20], 0
mov edx, dword [esp + 0x20]
cmovle edx, eax
mov dword [esp + 0x18], 0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], edx
movzx edx, al
sub al, byte [esp + 0x10]
cmp dword [esp + 0x10], edx
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x18]
movzx eax, al
cmovle edx, eax
mov dword [esp + 0x18], edx
mov edx, 0xff
mov eax, edx
sub eax, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, eax
jle 0x437e2c
mov byte [esp + 0x17], dl
jmp 0x437e34
mov bl, cl
add bl, bh
mov byte [esp + 0x17], bl
mov eax, edx
sub eax, esi
cmp ecx, eax
jle 0x437e42
mov byte [esp + 0xf], dl
jmp 0x437e52
mov ah, cl
mov ecx, dword [esp + 0x24]
add ah, cl
mov ecx, dword [esp + 0x10]
mov byte [esp + 0xf], ah
sub edx, dword [esp + 0x50]
cmp ecx, edx
jle 0x437e61
mov byte [esp + 0xc], 0xff
jmp 0x437eaf
mov al, cl
mov ecx, dword [esp + 0x28]
add al, cl
mov ecx, dword [esp + 0x20]
mov byte [esp + 0xc], al
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], eax
jmp 0x437eaf
mov al, byte [esp + 0xc]
mov byte [esp + 0xd], al
mov al, byte [esp + 0xc]
mov dword [esp + 0x20], eax
mov al, byte [esp + 0xc]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0xc]
mov byte [esp + 0x17], al
mov al, byte [esp + 0xc]
mov byte [esp + 0xf], al
mov al, byte [esp + 0xc]
mov byte [esp + 0xc], al
mov edx, dword [esp + 0x30]
mov ebx, edx
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
nop dword [eax]
xor eax, eax
cmp edx, ecx
jle 0x437ecd
cmp ebx, ecx
setge al
jmp 0x437ed2
cmp ebx, ecx
setle al
test eax, eax
je 0x437f19
mov eax, dword [esp + 0x2c]
mov esi, eax
nop dword [eax]
cmp eax, edi
jle 0x437eed
xor eax, eax
cmp esi, edi
setge al
jmp 0x437ef4
xor eax, eax
cmp esi, edi
setle al
test eax, eax
je 0x437f8f
push esi
push ebx
push dword [esp + 0x3c]
call dword [sym.imp.GDI32.dll_GetPixel]
cmp dword [esp + 0x10], 1
jge 0x437f4b
cmp eax, dword [ebp + 0x18]
jne 0x437f79
mov byte [esp + 0xe], 1
push dword [esp + 0x34]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [esp + 0xe], 0
jne 0x437fa7
mov ecx, dword [0x4d166c]
push 1
push 0
push 0xffffffffffffffff
push 0x4bf994
call fcn.00475930
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 0x437f79
cmp al, byte [esp + 0x17]
ja 0x437f79
cmp cl, byte [esp + 0x20]
jb 0x437f79
cmp cl, byte [esp + 0xf]
ja 0x437f79
cmp dl, byte [esp + 0x18]
jb 0x437f79
cmp dl, byte [esp + 0xc]
jbe 0x437f14
xor eax, eax
cmp dword [esp + 0x2c], edi
setle al
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x2c]
dec esi
jmp 0x437ee0
mov ecx, dword [esp + 0x1c]
xor eax, eax
mov edx, dword [esp + 0x30]
cmp edx, ecx
setle al
lea ebx, [ebx + eax*2]
dec ebx
jmp 0x437ec0
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x437fbf
sub ebx, dword [esp + 0x38]
push 0x18
mov eax, ebx
cdq
push edx
push eax
call fcn.00401ac0
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x437fd7
sub esi, dword [esp + 0x3c]
push 0x18
mov eax, esi
cdq
push edx
push eax
call fcn.00401ac0
mov ecx, dword [0x4d166c]
push 1
push 0
push 0xffffffffffffffff
push 0x4ac300
call fcn.00475930
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [ebp + 0x24], 0
mov ecx, 0x4bf994
mov eax, 0x4bfc6c
cmove ecx, eax
cmp word [ecx], 0x30
jne 0x438014
cmp word [ecx + 2], 0
je 0x438022
mov eax, dword [0x4ce8c8]
cmp byte [eax + 0x108], 0
jne 0x43803d
push 1
push 0
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4d166c]
call fcn.00475930
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
push 0x4ac22c
push 0
push ecx
mov ecx, dword [esp + 0x64]
call fcn.0042cf00
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20