Function at 0x458880
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 + 0x74], edi
jne 0x4588b3
mov edx, str.Fast
mov ecx, esi
call fcn.004b13c0
mov byte [esp + 0x11], 0
test eax, eax
je 0x4588b8
mov byte [esp + 0x11], 1
mov edx, 0x4ee534
mov ecx, esi
call fcn.004b13c0
mov ebx, dword [ebp + 0x18]
movzx edx, bx
shr edx, 8
movzx ecx, bl
shl ecx, 8
or edx, ecx
mov dword [esp + 0x4c], eax
mov ecx, ebx
shl edx, 8
shr ecx, 0x10
movzx ecx, cl
or edx, ecx
test eax, eax
je 0x4588f5
mov dword [esp + 0x34], ebx
mov ebx, edx
mov dword [ebp + 0x18], ebx
jmp 0x4588f9
mov dword [esp + 0x34], edx
cmp byte [ebp + 0x24], 0
mov eax, dword [0x4fd228]
mov dword [esp + 0x30], eax
je 0x45890c
xor ebx, ebx
jmp 0x458919
mov cl, 1
cmp cl, byte [edi + 1]
sbb ebx, ebx
and ebx, dword [0x4fd22c]
mov dword [esp + 0x70], ebx
test eax, eax
je 0x458930
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, eax
call fcn.004b55f0
test ebx, ebx
je 0x458943
push 1
push 0
push 0xffffffffffffffff
push 0
mov ecx, ebx
call fcn.004b55f0
xorps xmm0, xmm0
lea edx, [esp + 0x5c]
push 0
lea ecx, [esp + 0x5c]
movlpd qword [esp + 0x5c], xmm0
call fcn.004b2430
mov ebx, dword [ebp + 8]
add esp, 4
mov edx, dword [esp + 0x58]
add ebx, edx
add edx, dword [ebp + 0x10]
mov esi, ebx
mov ecx, dword [ebp + 0xc]
mov eax, edx
add ecx, dword [esp + 0x5c]
mov edi, dword [ebp + 0x14]
add edi, dword [esp + 0x5c]
cmp ebx, edx
mov dword [esp + 0x48], ebx
cmovle eax, ebx
mov dword [esp + 0x3c], ecx
cmovle esi, edx
mov dword [esp + 0x68], eax
cmp ecx, edi
mov dword [esp + 0x54], edx
mov ebx, ecx
mov eax, edi
cmovle eax, ecx
cmovle ebx, edi
xor ecx, ecx
mov dword [esp + 0x6c], eax
mov eax, dword [ebp + 0x1c]
test eax, eax
cmovns ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, 0xff
jle 0x4589cc
mov dword [esp + 0x20], 0xff
mov dword [esp + 0x14], 0xff
jmp 0x4589d4
mov dword [esp + 0x14], ecx
test ecx, ecx
jle 0x4589eb
mov ecx, dword [ebp + 0x18]
mov eax, ecx
shr eax, 8
mov dword [esp + 0x18], eax
mov eax, ecx
mov byte [esp + 0x10], cl
shr eax, 0x10
jmp 0x4589ff
mov al, byte [esp + 0x12]
mov byte [esp + 0x10], al
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x12]
push 0
mov dword [esp + 0x3c], eax
call dword [sym.imp.USER32.dll_GetDC]
mov edx, eax
mov dword [esp + 0x24], edx
test edx, edx
je 0x459202
cmp byte [esp + 0x11], 0
mov byte [esp + 0x13], 0
je 0x458f98
sub esi, dword [esp + 0x68]
xor ecx, ecx
sub ebx, dword [esp + 0x6c]
xor eax, eax
push edx
mov dword [esp + 0x48], ecx
inc esi
mov dword [esp + 0x30], ecx
inc ebx
mov dword [esp + 0x20], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [esp + 0x40], eax
test eax, eax
je 0x458e89
push ebx
push esi
push dword [esp + 0x2c]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esp + 0x44], eax
test eax, eax
je 0x458e89
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x458e89
push 0xcc0020
push dword [esp + 0x70]
push dword [esp + 0x70]
push dword [esp + 0x30]
push ebx
mov ebx, dword [esp + 0x54]
push esi
push 0
push 0
push ebx
call dword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x458e89
mov ecx, dword [esp + 0x44]
lea eax, [esp + 0x11]
push 8
push eax
lea eax, [esp + 0x30]
mov edx, ebx
push eax
lea eax, [esp + 0x70]
push eax
call fcn.00458680
add esp, 0x10
mov dword [esp + 0x2c], eax
test eax, eax
je 0x458e89
mov ebx, dword [esp + 0x64]
mov edx, ebx
imul edx, dword [esp + 0x28]
cmp byte [esp + 0x11], 0
mov dword [esp + 0x60], edx
je 0x458b6e
xor esi, esi
test edx, edx
jle 0x458b72
cmp edx, 0x10
jb 0x458b60
mov eax, edx
and eax, reloc.WSOCK32.dll_ntohs
jns 0x458b09
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm1, xmmword [0x4f30b0]
mov ecx, edx
sub ecx, eax
mov eax, dword [esp + 0x2c]
add eax, 0x20
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x20]
add esi, 0x10
lea eax, [eax + 0x40]
andps xmm0, xmm1
movups xmmword [eax - 0x60], xmm0
movups xmm0, xmmword [eax - 0x50]
andps xmm0, xmm1
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
andps xmm0, xmm1
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
andps xmm0, xmm1
movups xmmword [eax - 0x30], xmm0
cmp esi, ecx
jl 0x458b20
mov eax, dword [esp + 0x2c]
cmp esi, edx
jge 0x458b72
nop
and dword [eax + esi*4], 0xf8f8f8f8
inc esi
cmp esi, edx
jl 0x458b60
jmp 0x458b72
mov esi, dword [esp + 0x28]
cmp byte [ebp + 0x24], 0
je 0x458bfc
mov edx, dword [eax]
and edx, 0xffffff
cmp dword [esp + 0x4c], 0
jne 0x458ba1
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 + 0x7c]
push str.0x_06X
push eax
call fcn.00406810
mov edi, dword [esp + 0x3c]
lea eax, [esp + 0x84]
add esp, 0xc
mov ecx, edi
push 1
push 0
push 0xffffffffffffffff
push eax
call fcn.004b55f0
push dword [esp + 0x24]
mov byte [esp + 0x17], 1
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x1c]
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x40]
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x458efb
cmp dword [esp + 0x20], 1
jge 0x458cf0
cmp byte [esp + 0x11], 0
je 0x458c16
and dword [esp + 0x34], 0xf8f8f8f8
xor ecx, ecx
test edx, edx
jle 0x458cc2
dec edx
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x54]
jle 0x458c52
cmp dword [esp + 0x3c], edi
jle 0x458c39
mov esi, edx
jmp 0x458c71
mov eax, ecx
cdq
idiv ebx
lea esi, [eax + 1]
mov eax, ecx
cdq
idiv ebx
imul esi, ebx
sub esi, edx
mov edx, dword [esp + 0x18]
dec esi
jmp 0x458c71
cmp dword [esp + 0x3c], edi
jle 0x458c6f
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 + 0x18]
jmp 0x458c71
mov esi, ecx
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + esi*4]
and eax, 0xffffff
cmp eax, dword [esp + 0x34]
je 0x458cbd
inc ecx
dec edx
mov dword [esp + 0x18], edx
cmp ecx, dword [esp + 0x60]
jl 0x458c25
push dword [esp + 0x24]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x30]
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x40]
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x458efb
mov byte [esp + 0x13], 1
push dword [esp + 0x24]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x30]
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x40]
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x458efb
cmp byte [esp + 0x11], 0
mov al, byte [esp + 0x10]
mov ecx, dword [esp + 0x18]
je 0x458d11
and al, 0xf8
and ecx, 0xfffffff8
and byte [esp + 0x38], 0xf8
mov byte [esp + 0x10], al
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 0x20]
movzx ebx, al
cmp edx, ebx
jle 0x458d23
mov byte [esp + 0x11], 0
jmp 0x458d35
sub al, dl
mov edx, dword [esp + 0x20]
mov byte [esp + 0x11], al
mov al, byte [esp + 0x20]
mov dword [esp + 0x14], eax
movzx eax, cl
mov dword [esp + 0x28], eax
mov al, cl
sub al, byte [esp + 0x14]
xor ecx, ecx
cmp edx, dword [esp + 0x28]
movzx eax, al
cmovle ecx, eax
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0x38]
mov dword [esp + 0x50], ecx
movzx ecx, al
sub al, byte [esp + 0x14]
cmp edx, ecx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x34]
movzx eax, al
cmovle ecx, eax
mov dword [esp + 0x34], ecx
mov ecx, 0xff
mov eax, ecx
sub eax, ebx
mov ebx, dword [esp + 0x20]
cmp ebx, eax
jle 0x458d94
mov byte [esp + 0x10], cl
jmp 0x458d9c
add byte [esp + 0x10], dl
mov ebx, dword [esp + 0x20]
mov eax, ecx
sub eax, dword [esp + 0x28]
cmp ebx, eax
jle 0x458dac
mov byte [esp + 0x12], cl
jmp 0x458db6
mov ebx, dword [esp + 0x18]
add ebx, edx
mov byte [esp + 0x12], bl
sub ecx, dword [esp + 0x4c]
cmp dword [esp + 0x20], ecx
jle 0x458dc7
mov byte [esp + 0x14], 0xff
jmp 0x458dcf
add dl, byte [esp + 0x38]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x60]
xor ecx, ecx
mov ebx, dword [esp + 0x64]
test edx, edx
jle 0x458e91
lea eax, [edx - 1]
mov dword [esp + 0x28], eax
nop dword [eax + eax]
mov edx, dword [esp + 0x48]
cmp edx, dword [esp + 0x54]
jle 0x458e19
cmp dword [esp + 0x3c], edi
jle 0x458e04
mov esi, eax
jmp 0x458e32
mov eax, ecx
cdq
idiv ebx
lea esi, [eax + 1]
mov eax, ecx
cdq
idiv ebx
imul esi, ebx
sub esi, edx
dec esi
jmp 0x458e32
cmp dword [esp + 0x3c], edi
jle 0x458e30
cdq
idiv ebx
mov esi, eax
mov eax, ecx
cdq
idiv ebx
imul esi, ebx
add esi, edx
jmp 0x458e32
mov esi, ecx
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + esi*4]
mov edx, eax
shr edx, 0x10
shr eax, 8
cmp dl, byte [esp + 0x11]
jb 0x458e70
cmp dl, byte [esp + 0x10]
ja 0x458e70
cmp al, byte [esp + 0x50]
jb 0x458e70
cmp al, byte [esp + 0x12]
ja 0x458e70
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + esi*4]
cmp al, byte [esp + 0x34]
jb 0x458e70
cmp al, byte [esp + 0x14]
jbe 0x458cbd
mov eax, dword [esp + 0x28]
inc ecx
dec eax
mov dword [esp + 0x28], eax
cmp ecx, dword [esp + 0x60]
jl 0x458df0
jmp 0x458cc2
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x28]
push dword [esp + 0x24]
mov eax, dword [esp + 0x20]
push 0
mov dword [esp + 0x24], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp dword [esp + 0x40], 0
je 0x458ef7
mov al, byte [esp + 0x13]
mov byte [esp + 0x13], al
mov eax, dword [esp + 0x44]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x458ee7
mov edi, dword [esp + 0x30]
push eax
push dword [esp + 0x44]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x40]
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x458efb
push dword [esp + 0x40]
mov edi, dword [esp + 0x34]
call dword [sym.imp.GDI32.dll_DeleteDC]
jmp 0x458efb
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x458f0a
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x459202
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
cmp byte [ebp + 0x24], 0
jne 0x458f6b
cmp byte [esp + 0x13], 0
je 0x458f6b
test edi, edi
je 0x458f4c
mov eax, esi
mov ecx, edi
cdq
idiv ebx
push 0x18
sub edx, dword [esp + 0x5c]
add edx, dword [esp + 0x6c]
mov eax, edx
cdq
push edx
push eax
call fcn.00401470
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x458f6b
mov eax, esi
cdq
idiv ebx
push 0x18
sub eax, dword [esp + 0x60]
add eax, dword [esp + 0x70]
cdq
push edx
push eax
call fcn.00401470
cmp byte [esp + 0x13], 0
mov ecx, 0x4e613c
push 1
push 0
mov eax, 0x4cfcf8
cmove eax, ecx
mov ecx, dword [0x4fb9e4]
push 0xffffffffffffffff
push eax
call fcn.004b55f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x459084
mov dl, byte [esp + 0x10]
movzx esi, dl
cmp eax, esi
jle 0x458fb6
mov byte [esp + 0x11], 0
jmp 0x458fc2
mov dh, dl
mov byte [esp + 0x14], al
sub dh, al
mov byte [esp + 0x11], dh
mov ebx, dword [esp + 0x18]
mov al, bl
sub al, byte [esp + 0x14]
movzx ecx, bl
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x50], ecx
movzx eax, al
mov dword [esp + 0x18], 0
mov ecx, dword [esp + 0x18]
cmovle ecx, eax
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], ecx
movzx ecx, al
sub al, byte [esp + 0x14]
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x1c]
movzx eax, al
cmovle ecx, eax
mov dword [esp + 0x1c], ecx
mov ecx, 0xff
mov eax, ecx
sub eax, esi
cmp dword [esp + 0x20], eax
jle 0x45902b
mov byte [esp + 0x10], cl
jmp 0x459035
mov al, byte [esp + 0x14]
add al, dl
mov byte [esp + 0x10], al
mov edx, dword [esp + 0x20]
mov eax, ecx
sub eax, dword [esp + 0x50]
cmp edx, eax
jle 0x459049
mov byte [esp + 0x13], cl
jmp 0x459053
mov al, byte [esp + 0x14]
add al, bl
mov byte [esp + 0x13], al
sub ecx, dword [esp + 0x4c]
cmp edx, ecx
mov edx, dword [esp + 0x24]
jle 0x459066
mov byte [esp + 0x14], 0xff
jmp 0x4590b4
mov eax, dword [esp + 0x14]
add al, byte [esp + 0x38]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
jmp 0x4590b4
mov al, byte [esp + 0x12]
mov byte [esp + 0x11], al
mov al, byte [esp + 0x12]
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x12]
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x12]
mov byte [esp + 0x10], al
mov al, byte [esp + 0x12]
mov byte [esp + 0x13], al
mov al, byte [esp + 0x12]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
mov ebx, eax
mov ecx, dword [esp + 0x54]
nop
cmp eax, ecx
jle 0x4590cd
xor eax, eax
cmp ebx, ecx
setge al
jmp 0x4590d4
xor eax, eax
cmp ebx, ecx
setle al
test eax, eax
je 0x4591da
mov eax, dword [esp + 0x3c]
mov esi, eax
cmp eax, edi
jle 0x4590ef
xor eax, eax
cmp esi, edi
setge al
jmp 0x4590f6
xor eax, eax
cmp esi, edi
setle al
test eax, eax
je 0x4591c0
push esi
push ebx
push edx
call dword [sym.imp.GDI32.dll_GetPixel]
cmp dword [esp + 0x20], 1
jge 0x459174
cmp eax, dword [ebp + 0x18]
jne 0x4591a6
push dword [esp + 0x24]
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov edi, dword [esp + 0x30]
test edi, edi
je 0x45913d
sub ebx, dword [esp + 0x58]
mov ecx, edi
push 0x18
mov eax, ebx
cdq
push edx
push eax
call fcn.00401470
mov ecx, dword [esp + 0x70]
test ecx, ecx
je 0x459155
sub esi, dword [esp + 0x5c]
push 0x18
mov eax, esi
cdq
push edx
push eax
call fcn.00401470
mov ecx, dword [0x4fb9e4]
push 1
push 0
push 0xffffffffffffffff
push 0x4cfcf8
call fcn.004b55f0
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 + 0x11]
jb 0x4591a6
cmp al, byte [esp + 0x10]
ja 0x4591a6
cmp cl, byte [esp + 0x18]
jb 0x4591a6
cmp cl, byte [esp + 0x13]
ja 0x4591a6
cmp dl, byte [esp + 0x1c]
jb 0x4591a6
cmp dl, byte [esp + 0x14]
jbe 0x459117
mov edx, dword [esp + 0x24]
xor eax, eax
cmp dword [esp + 0x3c], edi
setle al
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x3c]
dec esi
jmp 0x4590e2
mov ecx, dword [esp + 0x54]
xor eax, eax
cmp dword [esp + 0x48], ecx
setle al
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x48]
dec ebx
jmp 0x4590c0
push edx
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
mov ecx, dword [0x4fb9e4]
push 1
push 0
push 0xffffffffffffffff
push 0x4e613c
call fcn.004b55f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
cmp byte [ebp + 0x24], 0
mov ecx, 0x4e613c
mov eax, 0x4e6674
cmove ecx, eax
cmp word [ecx], 0x30
jne 0x459220
cmp word [ecx + 2], 0
je 0x45922e
mov eax, dword [0x4f90f4]
test byte [eax + 0x100], 1
jne 0x459249
push 1
push 0
push 0xffffffffffffffff
push ecx
mov ecx, dword [0x4fb9e4]
call fcn.004b55f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
push 0x4cfc30
push 0
push ecx
mov ecx, dword [esp + 0x80]
call fcn.0044e0b0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20