Function at 0x14004de20
Capabilities:
Capture screenshot

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xf0
movzx edi, byte [rsp + 0x170]
mov ebp, r9d
mov rbx, qword [rsp + 0x168]
mov r15d, r8d
mov r12d, edx
mov r13, rcx
test dil, dil
jne 0x14004de71
lea rdx, str.Fast
mov rcx, rbx
call fcn.1400a6ae0
test rax, rax
jne 0x14004de71
xor r14b, r14b
jmp 0x14004de74
mov r14b, 1
lea rdx, [0x140115c98]
mov qword [rsp + 0xe8], rsi
mov rcx, rbx
call fcn.1400a6ae0
test rax, rax
setne al
mov byte [rsp + 0x138], al
test al, al
je 0x14004dec5
mov esi, dword [rsp + 0x158]
movzx eax, si
shr ax, 8
movzx edx, al
mov eax, esi
shr eax, 0x10
movzx ecx, al
shl edx, 8
movzx eax, sil
or edx, ecx
shl eax, 0x10
or edx, eax
jmp 0x14004deeb
mov edx, dword [rsp + 0x158]
movzx eax, dx
shr ax, 8
movzx esi, al
mov eax, edx
shr eax, 0x10
movzx ecx, al
shl esi, 8
movzx eax, dl
or esi, ecx
shl eax, 0x10
or esi, eax
mov rax, qword [0x1401386c0]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x70], edx
test dil, dil
je 0x14004df06
xor edi, edi
mov ebx, edi
jmp 0x14004df17
xor edi, edi
cmp byte [r13 + 1], 1
mov ebx, edi
cmova rbx, qword [0x1401386c8]
or rcx, 0xffffffffffffffff
mov qword [rsp + 0x80], rbx
test rax, rax
je 0x14004df41
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rax
xor r9d, r9d
xor edx, edx
call fcn.1400ab090
or rcx, 0xffffffffffffffff
test rbx, rbx
je 0x14004df5b
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rbx
xor r9d, r9d
xor edx, edx
call fcn.1400ab090
xor r8d, r8d
mov qword [rsp + 0x68], 0
lea rdx, [rsp + 0x6c]
lea rcx, [rsp + 0x68]
call fcn.1400a7d10
mov edx, dword [rsp + 0x68]
mov ebx, 0xff
mov ecx, dword [rsp + 0x6c]
lea eax, [rdx + r12]
mov dword [rsp + 0x58], eax
lea eax, [rcx + r15]
mov dword [rsp + 0x50], eax
lea eax, [rdx + rbp]
mov ebp, dword [rsp + 0x150]
add ebp, ecx
mov dword [rsp + 0x54], eax
mov eax, dword [rsp + 0x160]
test eax, eax
jns 0x14004e1b2
mov dword [rsp + 0x160], edi
movzx r13d, byte [rsp + 0x170]
movzx r15d, byte [rsp + 0x170]
movzx r12d, byte [rsp + 0x170]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov qword [rsp + 0x78], rax
mov r9, rax
test rax, rax
je 0x14004e748
mov byte [rsp + 0x148], 0
test r14b, r14b
je 0x14004e4bc
mov eax, dword [rsp + 0x54]
mov rcx, r9
sub eax, dword [rsp + 0x58]
mov r14, rdi
sub ebp, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x54], eax
inc ebp
mov qword [rsp + 0x70], 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 0x14004e3b7
mov edx, dword [rsp + 0x54]
mov r8d, ebp
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov qword [rsp + 0x70], rax
test rax, rax
je 0x14004e3b7
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0x88], rax
test rax, rax
je 0x14004e3b7
mov eax, dword [rsp + 0x50]
xor r8d, r8d
mov r9d, dword [rsp + 0x54]
xor edx, edx
mov dword [rsp + 0x40], 0xcc0020
mov rcx, rbx
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ebp
call qword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x14004e3b7
mov rcx, qword [rsp + 0x70]
lea rax, [rsp + 0x150]
mov dword [rsp + 0x28], 8
lea r9, [rsp + 0x148]
lea r8, [rsp + 0x140]
mov qword [rsp + 0x20], rax
mov rdx, rbx
call fcn.14004dba0
mov r14, rax
test rax, rax
je 0x14004e3b7
mov ecx, dword [rsp + 0x140]
imul ecx, dword [rsp + 0x148]
movzx r9d, byte [rsp + 0x150]
movsxd r8, ecx
test r9b, r9b
je 0x14004e1e4
mov ebx, edi
test ecx, ecx
jle 0x14004e186
cmp ecx, 8
jb 0x14004e186
mov eax, ecx
and eax, 0x80000007
jge 0x14004e13a
dec eax
or eax, 0xfffffff8
inc eax
movdqa xmm2, xmmword [0x14011bce0]
sub ecx, eax
movsxd rdx, ecx
mov rax, rdi
nop word [rax + rax]
movdqu xmm0, xmmword [r14 + rax*4]
add ebx, 8
movdqa xmm1, xmm2
pand xmm1, xmm0
movdqu xmmword [r14 + rax*4], xmm1
movdqu xmm0, xmmword [r14 + rax*4 + 0x10]
movdqa xmm1, xmm2
pand xmm1, xmm0
movdqu xmmword [r14 + rax*4 + 0x10], xmm1
add rax, 8
cmp rax, rdx
jl 0x14004e150
movsxd rcx, ebx
cmp rcx, r8
jge 0x14004e1eb
mov eax, r8d
sub eax, ecx
add ebx, eax
nop word [rax + rax]
and dword [r14 + rcx*4], 0xf8f8f8f8
inc rcx
cmp rcx, r8
jl 0x14004e1a0
jmp 0x14004e1eb
cmp eax, ebx
jle 0x14004e1bf
mov dword [rsp + 0x160], ebx
jmp 0x14004e1c7
test eax, eax
jle 0x14004dfb9
mov eax, dword [rsp + 0x70]
movzx r15d, ax
shr r15w, 8
mov r13d, eax
shr r13d, 0x10
movzx r12d, al
jmp 0x14004dfd4
mov ebx, dword [rsp + 0x170]
movzx ebp, byte [rsp + 0x170]
test bpl, bpl
je 0x14004e270
mov r8d, dword [r14]
and r8d, 0xffffff
cmp byte [rsp + 0x138], 0
jne 0x14004e230
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.140004f10
mov r15, qword [rsp + 0x60]
lea rdx, [rsp + 0xa0]
or r12, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
mov r8, r12
mov rcx, r15
xor r9d, r9d
call fcn.1400ab090
mov sil, 1
jmp 0x14004e3d2
cmp dword [rsp + 0x160], 1
jge 0x14004e2b4
test r9b, r9b
je 0x14004e285
and esi, 0xf8f8f8f8
mov ebx, edi
test r8, r8
jle 0x14004e3c6
mov eax, dword [r14 + rdi*4]
and eax, 0xffffff
cmp eax, esi
je 0x14004e2ac
inc ebx
inc rdi
cmp rdi, r8
jl 0x14004e290
jmp 0x14004e3c6
mov sil, 1
jmp 0x14004e3c9
test r9b, r9b
je 0x14004e2c5
and r12b, 0xf8
and r15b, 0xf8
and r13b, 0xf8
mov r9d, dword [rsp + 0x160]
movzx ecx, r12b
cmp r9d, ecx
jle 0x14004e2e0
mov byte [rsp + 0x150], 0
jmp 0x14004e2ee
movzx eax, r12b
sub al, r9b
mov byte [rsp + 0x150], al
movzx edx, r15b
cmp r9d, edx
jle 0x14004e2fc
xor bpl, bpl
jmp 0x14004e303
movzx ebp, r15b
sub bpl, r9b
movzx r11d, r13b
cmp r9d, r11d
jle 0x14004e311
xor sil, sil
jmp 0x14004e318
movzx esi, r13b
sub sil, r9b
mov ebx, 0xff
mov eax, ebx
sub eax, ecx
cmp r9d, eax
jle 0x14004e32c
movzx r10d, bl
jmp 0x14004e330
lea r10d, [r12 + r9]
mov eax, ebx
sub eax, edx
cmp r9d, eax
jle 0x14004e33f
movzx r9d, bl
jmp 0x14004e342
add r9b, r15b
mov r15d, dword [rsp + 0x160]
sub ebx, r11d
cmp r15d, ebx
jle 0x14004e357
mov r15b, 0xff
jmp 0x14004e35a
add r15b, r13b
mov ebx, edi
test r8, r8
jle 0x14004e3be
movzx r11d, byte [rsp + 0x150]
nop word [rax + rax]
mov edx, dword [r14 + rdi*4]
mov ecx, edx
movzx eax, dx
shr ecx, 0x10
shr ax, 8
cmp cl, r11b
jb 0x14004e39e
cmp cl, r10b
ja 0x14004e39e
cmp al, bpl
jb 0x14004e39e
cmp al, r9b
ja 0x14004e39e
cmp dl, sil
jb 0x14004e39e
cmp dl, r15b
jbe 0x14004e3aa
inc ebx
inc rdi
cmp rdi, r8
jl 0x14004e370
jmp 0x14004e3be
movzx ebp, byte [rsp + 0x170]
mov sil, 1
jmp 0x14004e3c9
mov ebx, dword [rsp + 0x170]
movzx ebp, byte [rsp + 0x170]
xor sil, sil
mov r15, qword [rsp + 0x60]
or r12, 0xffffffffffffffff
mov rdx, qword [rsp + 0x78]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rdi, qword [rsp + 0x90]
test rdi, rdi
je 0x14004e40e
mov rax, qword [rsp + 0x88]
test rax, rax
je 0x14004e405
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 + 0x70]
test rax, rax
je 0x14004e421
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
test r14, r14
je 0x14004e74c
mov rcx, r14
call fcn.1400cc1a0
test bpl, bpl
jne 0x14004e488
test sil, sil
je 0x14004e488
mov edi, dword [rsp + 0x140]
test r15, r15
je 0x14004e463
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
mov rcx, r15
idiv edi
sub edx, dword [rsp + 0x68]
add edx, dword [rsp + 0x58]
movsxd rdx, edx
call fcn.140001380
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x14004e488
mov eax, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
idiv edi
sub eax, dword [rsp + 0x6c]
add eax, dword [rsp + 0x50]
movsxd rdx, eax
call fcn.140001380
mov rcx, qword [0x140134400]
lea rdx, [0x1400ee234]
test sil, sil
mov byte [rsp + 0x20], 1
lea rax, [0x14010c7dc]
mov r8, r12
cmovne rax, rdx
xor r9d, r9d
mov rdx, rax
call fcn.1400ab090
jmp 0x14004e7b3
mov esi, dword [rsp + 0x160]
test esi, esi
jle 0x14004e564
movzx ecx, r12b
cmp esi, ecx
jle 0x14004e4d7
xor al, al
jmp 0x14004e4de
movzx eax, r12b
sub al, sil
movzx edx, r15b
mov byte [rsp + 0x160], al
cmp esi, edx
jle 0x14004e4f1
xor al, al
jmp 0x14004e4f8
movzx eax, r15b
sub al, sil
movzx r8d, r13b
mov byte [rsp + 0x138], al
cmp esi, r8d
jle 0x14004e50c
xor al, al
jmp 0x14004e513
movzx eax, r13b
sub al, sil
mov byte [rsp + 0x140], al
mov eax, ebx
sub eax, ecx
cmp esi, eax
jle 0x14004e52b
mov byte [rsp + 0x150], bl
jmp 0x14004e536
lea ecx, [r12 + rsi]
mov byte [rsp + 0x150], cl
mov eax, ebx
sub eax, edx
cmp esi, eax
jle 0x14004e547
mov byte [rsp + 0x170], bl
jmp 0x14004e552
lea eax, [r15 + rsi]
mov byte [rsp + 0x170], al
sub ebx, r8d
cmp esi, ebx
jle 0x14004e55e
mov r12b, 0xff
jmp 0x14004e5a9
lea r12d, [rsi + r13]
jmp 0x14004e5a9
movzx eax, byte [rsp + 0x170]
movzx r12d, byte [rsp + 0x170]
mov byte [rsp + 0x160], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x138], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x140], al
movzx eax, byte [rsp + 0x170]
mov byte [rsp + 0x150], al
mov edx, dword [rsp + 0x58]
or r8, 0xffffffffffffffff
movzx r13d, byte [rsp + 0x170]
mov r14d, edx
mov ebx, dword [rsp + 0x170]
mov r15d, dword [rsp + 0x70]
mov ecx, dword [rsp + 0x54]
nop dword [rax]
mov eax, edi
cmp edx, ecx
jle 0x14004e5de
cmp r14d, ecx
setge al
jmp 0x14004e5e4
cmp r14d, ecx
setle al
test eax, eax
je 0x14004e634
mov eax, dword [rsp + 0x50]
mov ebx, eax
nop
cmp eax, ebp
mov eax, edi
jle 0x14004e5fd
cmp ebx, ebp
setge al
jmp 0x14004e602
cmp ebx, ebp
setle al
test eax, eax
je 0x14004e6d3
mov r8d, ebx
mov edx, r14d
mov rcx, r9
call qword [sym.imp.GDI32.dll_GetPixel]
cmp esi, 1
jge 0x14004e671
cmp eax, r15d
jne 0x14004e6af
mov r9, qword [rsp + 0x78]
mov byte [rsp + 0x148], 1
mov rdx, r9
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [rsp + 0x148], 0
jne 0x14004e6ee
mov rcx, qword [0x140134400]
lea rdx, [0x14010c7dc]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.1400ab090
jmp 0x14004e7b3
movzx ecx, ax
mov edx, eax
shr cx, 8
shr edx, 0x10
cmp al, byte [rsp + 0x160]
jb 0x14004e6af
cmp al, byte [rsp + 0x150]
ja 0x14004e6af
cmp cl, byte [rsp + 0x138]
jb 0x14004e6af
cmp cl, r13b
ja 0x14004e6af
cmp dl, byte [rsp + 0x140]
jb 0x14004e6af
cmp dl, r12b
jbe 0x14004e627
cmp dword [rsp + 0x50], ebp
mov eax, 1
mov r9, qword [rsp + 0x78]
mov r8, 0xffffffffffffffff
cmovg eax, r8d
add ebx, eax
mov eax, dword [rsp + 0x50]
jmp 0x14004e5f0
mov ecx, dword [rsp + 0x54]
mov eax, 1
mov edx, dword [rsp + 0x58]
cmp edx, ecx
cmovg eax, r8d
add r14d, eax
jmp 0x14004e5d0
mov r15, qword [rsp + 0x60]
test r15, r15
je 0x14004e70b
sub r14d, dword [rsp + 0x68]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
movsxd rdx, r14d
mov rcx, r15
call fcn.140001380
mov rcx, qword [rsp + 0x80]
test rcx, rcx
je 0x14004e727
sub ebx, dword [rsp + 0x6c]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
movsxd rdx, ebx
call fcn.140001380
mov rcx, qword [0x140134400]
lea rdx, [0x1400ee234]
xor r9d, r9d
mov byte [rsp + 0x20], 1
or r8, 0xffffffffffffffff
call fcn.1400ab090
jmp 0x14004e7b3
or r12, 0xffffffffffffffff
cmp byte [rsp + 0x170], 0
lea rax, [0x14010c7dc]
lea rdx, [0x14010cac4]
cmovne rdx, rax
cmp word [rdx], 0x30
jne 0x14004e773
cmp word [rdx + 2], 0
je 0x14004e783
mov rax, qword [0x14012fa58]
cmp byte [rax + 0x150], 0
jne 0x14004e79c
mov rcx, qword [0x140134400]
xor r9d, r9d
mov r8, r12
mov byte [rsp + 0x20], 1
call fcn.1400ab090
jmp 0x14004e7b3
mov rcx, qword [rsp + 0x130]
lea r9, [0x140117ad8]
xor r8d, r8d
call fcn.140040a70
mov rsi, qword [rsp + 0xe8]
add rsp, 0xf0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rbp
pop rbx
ret