Function at 0x140042520
Capabilities:
Capture screenshot

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rdi
push r12
push r14
push r15
sub rsp, 0xf8
movzx edi, byte [rsp + 0x170]
mov r15d, r9d
mov rbx, qword [rsp + 0x168]
mov r12d, r8d
mov ebp, edx
mov r14, rcx
test dil, dil
jne 0x140042571
lea rdx, str.Fast
mov rcx, rbx
call fcn.140087b90
mov byte [rsp + 0x138], dil
test rax, rax
je 0x140042579
mov byte [rsp + 0x138], 1
mov qword [rsp + 0xf0], rsi
lea rdx, [0x1400e70c8]
mov rcx, rbx
mov qword [rsp + 0xe8], r13
call fcn.140087b90
test rax, rax
setne al
mov byte [rsp + 0x148], al
test al, al
je 0x1400425d6
mov esi, dword [rsp + 0x158]
movzx eax, si
shr ax, 8
movzx r13d, al
mov eax, esi
shr eax, 0x10
movzx ecx, al
shl r13d, 8
movzx eax, sil
or r13d, ecx
shl eax, 0x10
or r13d, eax
jmp 0x140042600
mov r13d, dword [rsp + 0x158]
movzx eax, r13w
shr ax, 8
movzx esi, al
mov eax, r13d
shr eax, 0x10
movzx ecx, al
shl esi, 8
movzx eax, r13b
or esi, ecx
shl eax, 0x10
or esi, eax
mov rax, qword [0x140105130]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x5c], r13d
test dil, dil
je 0x14004261c
xor edi, edi
mov ebx, edi
jmp 0x14004262d
xor edi, edi
cmp byte [r14 + 1], 1
mov ebx, edi
cmova rbx, qword [0x140105138]
or rcx, 0xffffffffffffffff
mov qword [rsp + 0x80], rbx
test rax, rax
je 0x140042657
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rax
xor r9d, r9d
xor edx, edx
call fcn.14008ac50
or rcx, 0xffffffffffffffff
test rbx, rbx
je 0x140042671
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rbx
xor r9d, r9d
xor edx, edx
call fcn.14008ac50
xor r8d, r8d
mov qword [rsp + 0x68], 0
lea rdx, [rsp + 0x6c]
lea rcx, [rsp + 0x68]
call fcn.140088de0
add r15d, dword [rsp + 0x68]
mov r14d, 0xff
add ebp, dword [rsp + 0x68]
add r12d, dword [rsp + 0x6c]
mov dword [rsp + 0x58], r15d
mov r15d, dword [rsp + 0x150]
add r15d, dword [rsp + 0x6c]
mov dword [rsp + 0x54], ebp
mov ebp, dword [rsp + 0x160]
mov dword [rsp + 0x140], r12d
test ebp, ebp
jns 0x1400428c2
mov ebp, edi
movzx ebx, byte [rsp + 0x170]
movzx r13d, byte [rsp + 0x170]
movzx r12d, byte [rsp + 0x170]
xor ecx, ecx
mov byte [rsp + 0x150], bl
call qword [sym.imp.USER32.dll_GetDC]
mov qword [rsp + 0x70], rax
mov r9, rax
test rax, rax
je 0x140042e5a
cmp byte [rsp + 0x138], 0
mov byte [rsp + 0x51], 0
je 0x140042bb1
mov eax, dword [rsp + 0x58]
mov rcx, r9
sub eax, dword [rsp + 0x54]
mov r14, rdi
sub r15d, dword [rsp + 0x140]
inc eax
mov dword [rsp + 0x58], eax
inc r15d
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x88], rdi
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rsp + 0x90], rax
mov rbx, rax
test rax, rax
je 0x140042aa8
mov edx, dword [rsp + 0x58]
mov r8d, r15d
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov qword [rsp + 0x78], rax
test rax, rax
je 0x140042aa8
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x88], rax
test rax, rax
je 0x140042aa8
mov eax, dword [rsp + 0x140]
xor r8d, r8d
mov r9d, dword [rsp + 0x58]
xor edx, edx
mov dword [rsp + 0x40], 0xcc0020
mov rcx, rbx
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0x54]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r15d
call qword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x140042aa8
mov rcx, qword [rsp + 0x78]
lea rax, [rsp + 0x160]
mov dword [rsp + 0x28], 8
lea r9, [rsp + 0x5c]
lea r8, [rsp + 0x138]
mov qword [rsp + 0x20], rax
mov rdx, rbx
call fcn.1400422b0
mov r14, rax
test rax, rax
je 0x140042aa8
mov edx, dword [rsp + 0x138]
imul edx, dword [rsp + 0x5c]
movzx r9d, byte [rsp + 0x160]
movsxd r8, edx
test r9b, r9b
je 0x1400428ea
mov ebx, edi
test edx, edx
jle 0x1400428a0
cmp edx, 8
jb 0x1400428a0
mov eax, edx
and eax, 0x80000007
jge 0x14004285b
dec eax
or eax, 0xfffffff8
inc eax
movdqa xmm1, xmmword [0x1400ea460]
sub edx, eax
nop word [rax + rax]
movsxd rax, ebx
movdqu xmm0, xmmword [r14 + rax*4]
pand xmm0, xmm1
movdqu xmmword [r14 + rax*4], xmm0
lea eax, [rbx + 4]
add ebx, 8
movsxd rcx, eax
movdqu xmm0, xmmword [r14 + rcx*4]
pand xmm0, xmm1
movdqu xmmword [r14 + rcx*4], xmm0
cmp ebx, edx
jl 0x140042870
movsxd rcx, ebx
cmp rcx, r8
jge 0x1400428f1
mov eax, r8d
sub eax, ecx
add ebx, eax
nop
and dword [r14 + rcx*4], 0xf8f8f8f8
inc rcx
cmp rcx, r8
jl 0x1400428b0
jmp 0x1400428f1
cmp ebp, r14d
jle 0x1400428cc
mov ebp, r14d
jmp 0x1400428d4
test ebp, ebp
jle 0x1400426cf
movzx r12d, r13w
movzx ebx, r13b
shr r12w, 8
shr r13d, 0x10
jmp 0x1400426e9
mov ebx, dword [rsp + 0x170]
movzx r15d, byte [rsp + 0x170]
test r15b, r15b
je 0x140042977
mov r8d, dword [r14]
and r8d, 0xffffff
cmp byte [rsp + 0x148], 0
jne 0x140042937
movzx eax, r8w
shr ax, 8
movzx edx, al
mov eax, r8d
shr eax, 0x10
shl edx, 8
movzx r8d, r8b
movzx ecx, al
or edx, ecx
shl r8d, 0x10
or r8d, edx
lea rdx, str.0x_06X
lea rcx, [rsp + 0xa0]
call fcn.140004c90
mov rbp, qword [rsp + 0x60]
lea rdx, [rsp + 0xa0]
or r12, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
mov r8, r12
mov rcx, rbp
xor r9d, r9d
call fcn.14008ac50
mov sil, 1
jmp 0x140042ac4
cmp ebp, 1
jge 0x1400429b6
test r9b, r9b
je 0x140042987
and esi, 0xf8f8f8f8
mov ebx, edi
test r8, r8
jle 0x140042ab8
mov eax, dword [r14 + rdi*4]
and eax, 0xffffff
cmp eax, esi
je 0x1400429ae
inc ebx
inc rdi
cmp rdi, r8
jl 0x140042992
jmp 0x140042ab8
mov sil, 1
jmp 0x140042abb
movzx ecx, byte [rsp + 0x150]
test r9b, r9b
je 0x1400429ce
and cl, 0xf8
and r12b, 0xf8
and r13b, 0xf8
movzx r9d, cl
cmp ebp, r9d
jle 0x1400429e1
mov byte [rsp + 0x150], 0
jmp 0x1400429ee
movzx eax, cl
sub al, bpl
mov byte [rsp + 0x150], al
movzx r11d, r12b
cmp ebp, r11d
jle 0x1400429fc
xor r15b, r15b
jmp 0x140042a03
movzx r15d, r12b
sub r15b, bpl
movzx ebx, r13b
cmp ebp, ebx
jle 0x140042a10
xor sil, sil
jmp 0x140042a17
movzx esi, r13b
sub sil, bpl
mov edx, 0xff
mov eax, edx
sub eax, r9d
cmp ebp, eax
jle 0x140042a2b
movzx r10d, dl
jmp 0x140042a2f
lea r10d, [rcx + rbp]
mov eax, edx
sub eax, r11d
cmp ebp, eax
jle 0x140042a3e
movzx r9d, dl
jmp 0x140042a42
lea r9d, [r12 + rbp]
sub edx, ebx
cmp ebp, edx
jle 0x140042a4d
mov bpl, 0xff
jmp 0x140042a50
add bpl, r13b
mov ebx, edi
test r8, r8
jle 0x140042aaf
movzx r11d, byte [rsp + 0x150]
mov edx, dword [r14 + rdi*4]
mov ecx, edx
movzx eax, dx
shr ecx, 0x10
shr ax, 8
cmp cl, r11b
jb 0x140042a8e
cmp cl, r10b
ja 0x140042a8e
cmp al, r15b
jb 0x140042a8e
cmp al, r9b
ja 0x140042a8e
cmp dl, sil
jb 0x140042a8e
cmp dl, bpl
jbe 0x140042a9a
inc ebx
inc rdi
cmp rdi, r8
jl 0x140042a60
jmp 0x140042aaf
movzx r15d, byte [rsp + 0x170]
mov sil, 1
jmp 0x140042abb
mov ebx, dword [rsp + 0x170]
movzx r15d, byte [rsp + 0x170]
xor sil, sil
mov rbp, qword [rsp + 0x60]
or r12, 0xffffffffffffffff
mov rdx, qword [rsp + 0x70]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rdi, qword [rsp + 0x90]
test rdi, rdi
je 0x140042b00
mov rax, qword [rsp + 0x88]
test rax, rax
je 0x140042af7
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, rdi
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rax, qword [rsp + 0x78]
test rax, rax
je 0x140042b13
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
test r14, r14
je 0x140042e5e
mov rcx, r14
call fcn.1400aba10
test r15b, r15b
jne 0x140042b7d
test sil, sil
je 0x140042b7d
mov edi, dword [rsp + 0x138]
test rbp, rbp
je 0x140042b55
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
mov rcx, rbp
idiv edi
sub edx, dword [rsp + 0x68]
add edx, dword [rsp + 0x54]
movsxd rdx, edx
call fcn.140001460
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x140042b7d
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
idiv edi
sub eax, dword [rsp + 0x6c]
add eax, dword [rsp + 0x140]
movsxd rdx, eax
call fcn.140001460
mov rcx, qword [0x140100ee0]
lea rdx, [0x1400cc0a4]
test sil, sil
mov byte [rsp + 0x20], 1
lea rax, [0x1400df6c0]
mov r8, r12
cmovne rax, rdx
xor r9d, r9d
mov rdx, rax
call fcn.14008ac50
jmp 0x140042ec5
mov ecx, dword [rsp + 0x54]
mov edx, dword [rsp + 0x58]
cmp ecx, edx
mov r10d, dword [rsp + 0x140]
setg r8b
cmp r10d, r15d
mov byte [rsp + 0x50], r8b
setg sil
test ebp, ebp
jle 0x140042c86
movzx ecx, bl
cmp ebp, ecx
jle 0x140042be6
xor al, al
jmp 0x140042bec
movzx eax, bl
sub al, bpl
movzx edx, r12b
mov byte [rsp + 0x150], al
cmp ebp, edx
jle 0x140042bff
xor al, al
jmp 0x140042c06
movzx eax, r12b
sub al, bpl
movzx r8d, r13b
mov byte [rsp + 0x138], al
cmp ebp, r8d
jle 0x140042c1a
xor al, al
jmp 0x140042c21
movzx eax, r13b
sub al, bpl
mov byte [rsp + 0x148], al
mov eax, r14d
sub eax, ecx
cmp ebp, eax
jle 0x140042c3b
mov byte [rsp + 0x160], r14b
jmp 0x140042c45
lea eax, [rbx + rbp]
mov byte [rsp + 0x160], al
mov eax, r14d
sub eax, edx
cmp ebp, eax
jle 0x140042c58
mov byte [rsp + 0x170], r14b
jmp 0x140042c63
lea eax, [r12 + rbp]
mov byte [rsp + 0x170], al
mov ecx, dword [rsp + 0x54]
sub r14d, r8d
mov edx, dword [rsp + 0x58]
movzx r8d, byte [rsp + 0x50]
cmp ebp, r14d
jle 0x140042c7e
mov r12b, 0xff
jmp 0x140042ccb
mov r12d, r13d
add r12d, ebp
jmp 0x140042ccb
movzx eax, byte [rsp + 0x170]
movzx r12d, byte [rsp + 0x170]
mov byte [rsp + 0x150], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x138], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x148], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x160], al
movzx r13d, byte [rsp + 0x170]
mov ebx, dword [rsp + 0x170]
mov r14d, dword [rsp + 0x5c]
mov eax, edi
test r8b, r8b
je 0x140042cee
cmp ecx, edx
setge al
jmp 0x140042cf3
cmp ecx, edx
setle al
test eax, eax
je 0x140042d3f
mov ebx, r10d
or rdx, 0xffffffffffffffff
nop
mov eax, edi
test sil, sil
je 0x140042d0f
cmp ebx, r15d
setge al
jmp 0x140042d15
cmp ebx, r15d
setle al
test eax, eax
je 0x140042dd5
mov edx, ecx
mov r8d, ebx
mov rcx, r9
call qword [sym.imp.GDI32.dll_GetPixel]
cmp ebp, 1
jge 0x140042d79
cmp eax, r14d
jne 0x140042db3
mov r9, qword [rsp + 0x70]
mov byte [rsp + 0x51], 1
mov rdx, r9
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [rsp + 0x51], 0
jne 0x140042dfd
mov rcx, qword [0x140100ee0]
lea rdx, [0x1400df6c0]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008ac50
jmp 0x140042ec5
movzx ecx, ax
mov edx, eax
shr cx, 8
shr edx, 0x10
cmp al, byte [rsp + 0x150]
jb 0x140042db3
cmp al, byte [rsp + 0x160]
ja 0x140042db3
cmp cl, byte [rsp + 0x138]
jb 0x140042db3
cmp cl, r13b
ja 0x140042db3
cmp dl, byte [rsp + 0x148]
jb 0x140042db3
cmp dl, r12b
jbe 0x140042d35
mov ecx, dword [rsp + 0x54]
test sil, sil
mov r9, qword [rsp + 0x70]
mov eax, 1
mov rdx, 0xffffffffffffffff
cmovne eax, edx
add ebx, eax
jmp 0x140042d00
movzx r8d, byte [rsp + 0x50]
mov eax, 1
mov r10d, dword [rsp + 0x140]
test r8b, r8b
cmovne eax, edx
mov edx, dword [rsp + 0x58]
add ecx, eax
mov dword [rsp + 0x54], ecx
jmp 0x140042ce0
mov rbp, qword [rsp + 0x60]
test rbp, rbp
je 0x140042e1d
mov eax, dword [rsp + 0x54]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
sub eax, dword [rsp + 0x68]
mov rcx, rbp
movsxd rdx, eax
call fcn.140001460
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x140042e39
sub ebx, dword [rsp + 0x6c]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
movsxd rdx, ebx
call fcn.140001460
mov rcx, qword [0x140100ee0]
lea rdx, [0x1400cc0a4]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.14008ac50
jmp 0x140042ec5
or r12, 0xffffffffffffffff
cmp byte [rsp + 0x170], 0
lea rax, [0x1400df6c0]
lea rdx, [0x1400df9b4]
cmovne rdx, rax
cmp word [rdx], 0x30
jne 0x140042e85
cmp word [rdx + 2], 0
je 0x140042e95
mov rax, qword [0x1400fcaa8]
cmp byte [rax + 0x150], 0
jne 0x140042eae
mov rcx, qword [0x140100ee0]
xor r9d, r9d
mov r8, r12
mov byte [rsp + 0x20], 1
call fcn.14008ac50
jmp 0x140042ec5
mov rcx, qword [rsp + 0x130]
lea r9, [0x1400e8120]
xor r8d, r8d
call fcn.140035600
mov r13, qword [rsp + 0xe8]
mov rsi, qword [rsp + 0xf0]
add rsp, 0xf8
pop r15
pop r14
pop r12
pop rdi
pop rbp
pop rbx
ret