Function at 0x140054540
Capabilities:
Capture screenshot

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xf8
movzx esi, byte [rsp + 0x180]
mov edi, r9d
mov rbx, qword [rsp + 0x178]
mov ebp, r8d
mov r14d, edx
mov r15, rcx
test sil, sil
jne 0x140054595
lea rdx, str.Fast
mov rcx, rbx
call fcn.1400ad3f0
mov byte [rsp + 0x148], sil
test rax, rax
je 0x14005459d
mov byte [rsp + 0x148], 1
lea rdx, [0x1400e99a8]
mov rcx, rbx
call fcn.1400ad3f0
mov r12d, dword [rsp + 0x168]
test rax, rax
mov ecx, r12d
movzx r8d, r12w
setne byte [rsp + 0x158]
shr ecx, 0x10
movzx edx, cl
and r8d, 0xffffff00
or r8d, edx
movzx ecx, r12b
shl ecx, 0x10
or r8d, ecx
test rax, rax
je 0x1400545f7
mov dword [rsp + 0x58], r12d
mov r12d, r8d
mov dword [rsp + 0x168], r8d
jmp 0x1400545fc
mov dword [rsp + 0x58], r8d
mov rax, qword [0x140104ae0]
mov qword [rsp + 0x68], rax
test sil, sil
je 0x140054613
xor esi, esi
mov ebx, esi
jmp 0x140054624
xor esi, esi
cmp byte [r15 + 1], 1
mov ebx, esi
cmova rbx, qword [0x140104ae8]
mov qword [rsp + 0xa0], rbx
mov rcx, 0xffffffffffffffff
test rax, rax
je 0x140054654
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rax
xor r9d, r9d
xor edx, edx
call fcn.1400b1f60
mov rcx, 0xffffffffffffffff
test rbx, rbx
je 0x14005466e
mov r8, rcx
mov byte [rsp + 0x20], 1
mov rcx, rbx
xor r9d, r9d
xor edx, edx
call fcn.1400b1f60
xor r8d, r8d
mov qword [rsp + 0x80], rsi
lea rdx, [rsp + 0x84]
lea rcx, [rsp + 0x80]
call fcn.1400ae6e0
mov r8d, dword [rsp + 0x84]
mov r13d, 0xff
mov rbx, qword [rsp + 0x80]
lea r15d, [r8 + rbp]
mov ebp, dword [rsp + 0x160]
add ebp, r8d
lea edx, [rbx + r14]
lea ecx, [rbx + rdi]
mov dword [rsp + 0x64], edx
cmp edx, ecx
mov dword [rsp + 0x60], ecx
mov eax, ecx
mov edi, edx
cmovle eax, edx
cmovle edi, ecx
cmp r15d, ebp
mov dword [rsp + 0x70], eax
mov eax, ebp
mov r14d, r15d
cmovle eax, r15d
cmovle r14d, ebp
mov dword [rsp + 0x54], eax
mov ecx, esi
mov eax, dword [rsp + 0x170]
test eax, eax
cmovns ecx, eax
mov dword [rsp + 0x50], ecx
cmp ecx, r13d
jle 0x14005471a
mov eax, dword [rsp + 0x168]
mov byte [rsp + 0x160], r12b
shr r12w, 8
shr eax, 0x10
mov dword [rsp + 0x50], r13d
jmp 0x140054757
test ecx, ecx
jle 0x140054737
mov eax, dword [rsp + 0x168]
mov byte [rsp + 0x160], r12b
shr r12w, 8
shr eax, 0x10
jmp 0x140054757
movzx eax, byte [rsp + 0x180]
movzx r12d, byte [rsp + 0x180]
mov byte [rsp + 0x160], al
movzx eax, byte [rsp + 0x180]
xor ecx, ecx
mov dword [rsp + 0x5c], eax
call qword [sym.imp.USER32.dll_GetDC]
mov qword [rsp + 0x78], rax
mov r9, rax
test rax, rax
je 0x140055028
cmp byte [rsp + 0x148], 0
mov byte [rsp + 0x150], 0
je 0x140054d4e
sub r14d, dword [rsp + 0x54]
mov rcx, rax
sub edi, dword [rsp + 0x70]
inc r14d
mov qword [rsp + 0x90], rsi
mov qword [rsp + 0x98], rsi
mov qword [rsp + 0xa8], rsi
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rsp + 0x88], rax
test rax, rax
je 0x140054c39
mov rcx, qword [rsp + 0x78]
lea edx, [rdi + 1]
mov r8d, r14d
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov qword [rsp + 0x90], rax
test rax, rax
je 0x140054c39
mov rcx, qword [rsp + 0x88]
mov rdx, rax
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rsp + 0xa8], rax
test rax, rax
je 0x140054c39
mov eax, dword [rsp + 0x54]
lea r9d, [rdi + 1]
mov rdi, qword [rsp + 0x88]
xor r8d, r8d
mov dword [rsp + 0x40], 0xcc0020
xor edx, edx
mov dword [rsp + 0x38], eax
mov rcx, rdi
mov eax, dword [rsp + 0x70]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x78]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r14d
call qword [sym.imp.GDI32.dll_BitBlt]
test eax, eax
je 0x140054c39
mov rcx, qword [rsp + 0x90]
lea rax, [rsp + 0x170]
mov dword [rsp + 0x28], 8
lea r9, [rsp + 0x150]
lea r8, [rsp + 0x148]
mov qword [rsp + 0x20], rax
mov rdx, rdi
call fcn.1400542c0
mov qword [rsp + 0x98], rax
mov r10, rax
test rax, rax
je 0x140054c39
mov r14d, dword [rsp + 0x148]
mov r9d, r14d
imul r9d, dword [rsp + 0x150]
movzx r8d, byte [rsp + 0x170]
test r8b, r8b
je 0x140054982
mov edi, esi
test r9d, r9d
jle 0x140054950
cmp r9d, 0x10
jb 0x140054950
mov ecx, r9d
and ecx, 0x8000000f
jge 0x1400548e7
dec ecx
or ecx, 0xfffffff0
inc ecx
movdqa xmm2, xmmword [0x1400efae0]
mov eax, r9d
sub eax, ecx
mov rcx, rsi
movsxd rdx, eax
lea rax, [r10 + 0x20]
nop
movdqu xmm0, xmmword [rax - 0x20]
lea rax, [rax + 0x40]
add edi, 0x10
movdqa xmm1, xmm2
add rcx, 0x10
pand xmm1, xmm0
movdqu xmmword [rax - 0x60], xmm1
movdqa xmm1, xmm2
movdqu xmm0, xmmword [rax - 0x50]
pand xmm0, xmm2
movdqu xmmword [rax - 0x50], xmm0
movdqu xmm0, xmmword [rax - 0x40]
pand xmm1, xmm0
movdqu xmmword [rax - 0x40], xmm1
movdqu xmm0, xmmword [rax - 0x30]
pand xmm0, xmm2
movdqu xmmword [rax - 0x30], xmm0
cmp rcx, rdx
jl 0x140054900
movsxd rcx, edi
movsxd rdx, r9d
cmp rcx, rdx
jge 0x140054989
mov eax, edx
sub eax, ecx
add edi, eax
nop dword [rax]
nop word [rax + rax]
and dword [r10 + rcx*4], 0xf8f8f8f8
inc rcx
cmp rcx, rdx
jl 0x140054970
jmp 0x140054989
mov edi, dword [rsp + 0x180]
cmp byte [rsp + 0x180], 0
je 0x140054a04
mov r8d, dword [r10]
and r8d, 0xffffff
cmp byte [rsp + 0x158], 0
jne 0x1400549c1
movzx ecx, r8w
movzx eax, r8b
and ecx, 0xffffff00
shl eax, 0x10
or ecx, eax
shr r8d, 0x10
or r8d, ecx
lea rdx, str.0x_06X
lea rcx, [rsp + 0xb0]
call fcn.140005cd0
mov r15, qword [rsp + 0x68]
lea rdx, [rsp + 0xb0]
mov r12, 0xffffffffffffffff
mov byte [rsp + 0x20], 1
mov r8, r12
mov rcx, r15
xor r9d, r9d
call fcn.1400b1f60
mov bpl, 1
jmp 0x140054c57
mov r11d, dword [rsp + 0x50]
cmp r11d, 1
jge 0x140054aa9
mov r11d, dword [rsp + 0x58]
test r8b, r8b
je 0x140054a24
and r11d, 0xf8f8f8f8
test r9d, r9d
jle 0x140054c48
mov r12d, dword [rsp + 0x60]
lea r8d, [r9 - 1]
mov r13d, dword [rsp + 0x64]
nop dword [rax + rax]
cmp r13d, r12d
jle 0x140054a62
cmp r15d, ebp
jle 0x140054a4f
mov edi, r8d
jmp 0x140054a80
mov eax, esi
cdq
idiv r14d
lea edi, [rax + 1]
imul edi, r14d
sub edi, edx
dec edi
jmp 0x140054a80
cmp r15d, ebp
jle 0x140054a7e
mov eax, r8d
cdq
idiv r14d
mov edi, eax
mov eax, esi
cdq
imul edi, r14d
idiv r14d
add edi, edx
jmp 0x140054a80
mov edi, esi
movsxd rax, edi
mov ecx, dword [r10 + rax*4]
and ecx, 0xffffff
cmp ecx, r11d
je 0x140054aa1
inc esi
dec r8d
cmp esi, r9d
jl 0x140054a40
jmp 0x140054c48
mov bpl, 1
jmp 0x140054c4b
movzx edx, byte [rsp + 0x160]
test r8b, r8b
mov r8d, dword [rsp + 0x5c]
je 0x140054ac6
and dl, 0xf8
and r12b, 0xf8
and r8b, 0xf8
mov ebx, dword [rsp + 0x50]
movzx eax, dl
sub al, r11b
movzx ecx, dl
movzx eax, al
cmp r11d, ecx
mov r10d, esi
movzx r11d, r12b
cmovle r10d, eax
mov dword [rsp + 0x148], esi
movzx eax, r12b
mov dword [rsp + 0x158], r10d
sub al, bl
mov r10d, esi
movzx eax, al
cmp ebx, r11d
cmovle r10d, eax
movzx eax, r8b
mov dword [rsp + 0x150], eax
movzx eax, r8b
sub al, bl
mov dword [rsp + 0x58], r10d
cmp ebx, dword [rsp + 0x150]
mov ebx, esi
movzx eax, al
cmovle ebx, eax
mov eax, r13d
sub eax, ecx
mov dword [rsp + 0x148], ebx
mov ecx, dword [rsp + 0x50]
cmp ecx, eax
jle 0x140054b49
mov byte [rsp + 0x160], r13b
jmp 0x140054b52
add cl, dl
mov byte [rsp + 0x160], cl
mov eax, r13d
sub eax, r11d
mov r11d, dword [rsp + 0x50]
cmp r11d, eax
jle 0x140054b68
movzx r12d, r13b
jmp 0x140054b6b
add r12d, r11d
sub r13d, dword [rsp + 0x150]
cmp r11d, r13d
jle 0x140054b7d
mov r11b, 0xff
jmp 0x140054b80
add r11b, r8b
mov rbx, qword [rsp + 0x80]
mov r10, qword [rsp + 0x98]
test r9d, r9d
jle 0x140054c48
movzx r13d, byte [rsp + 0x160]
lea r8d, [r9 - 1]
mov eax, dword [rsp + 0x64]
cmp eax, dword [rsp + 0x60]
jle 0x140054bcd
cmp r15d, ebp
jle 0x140054bba
mov edi, r8d
jmp 0x140054beb
mov eax, esi
cdq
idiv r14d
lea edi, [rax + 1]
imul edi, r14d
sub edi, edx
dec edi
jmp 0x140054beb
cmp r15d, ebp
jle 0x140054be9
mov eax, r8d
cdq
idiv r14d
mov edi, eax
mov eax, esi
cdq
imul edi, r14d
idiv r14d
add edi, edx
jmp 0x140054beb
mov edi, esi
movsxd rax, edi
mov edx, dword [r10 + rax*4]
mov ecx, edx
movzx eax, dx
shr ecx, 0x10
shr ax, 8
cmp cl, byte [rsp + 0x158]
jb 0x140054c29
cmp cl, r13b
ja 0x140054c29
cmp al, byte [rsp + 0x58]
jb 0x140054c29
cmp al, r12b
ja 0x140054c29
cmp dl, byte [rsp + 0x148]
jb 0x140054c29
cmp dl, r11b
jbe 0x140054aa1
inc esi
dec r8d
cmp esi, r9d
jl 0x140054ba6
jmp 0x140054c48
mov r14d, dword [rsp + 0x148]
mov edi, dword [rsp + 0x180]
xor bpl, bpl
mov r15, qword [rsp + 0x68]
mov r12, 0xffffffffffffffff
mov rdx, qword [rsp + 0x78]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rsi, qword [rsp + 0x88]
test rsi, rsi
je 0x140054c93
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x140054c8a
mov rdx, rax
mov rcx, rsi
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, rsi
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rax, qword [rsp + 0x90]
test rax, rax
je 0x140054ca9
mov rcx, rax
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rax, qword [rsp + 0x98]
test rax, rax
je 0x14005502f
mov rcx, rax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
cmp byte [rsp + 0x180], 0
jne 0x140054d1a
test bpl, bpl
je 0x140054d1a
test r15, r15
je 0x140054cf1
mov eax, edi
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
mov rcx, r15
idiv r14d
sub edx, ebx
add edx, dword [rsp + 0x70]
movsxd rdx, edx
call fcn.1400014c0
mov rcx, qword [rsp + 0xa0]
test rcx, rcx
je 0x140054d1a
mov eax, edi
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
cdq
idiv r14d
sub eax, dword [rsp + 0x84]
add eax, dword [rsp + 0x54]
movsxd rdx, eax
call fcn.1400014c0
mov rcx, qword [0x140102760]
lea rdx, [0x1400cc6d4]
test bpl, bpl
mov byte [rsp + 0x20], 1
lea rax, [0x1400e1d2c]
mov r8, r12
cmovne rax, rdx
xor r9d, r9d
mov rdx, rax
call fcn.1400b1f60
jmp 0x140055096
mov r11d, dword [rsp + 0x50]
test r11d, r11d
jle 0x140054e2e
movzx ecx, byte [rsp + 0x160]
mov r8d, ecx
cmp r11d, ecx
jle 0x140054d76
mov byte [rsp + 0x180], 0
jmp 0x140054d83
movzx eax, cl
sub al, r11b
mov byte [rsp + 0x180], al
mov edx, dword [rsp + 0x5c]
movzx eax, r12b
sub al, r11b
movzx r9d, r12b
movzx eax, al
cmp r11d, r9d
mov r14d, esi
movzx r10d, dl
cmovle r14d, eax
mov edi, esi
movzx eax, dl
mov dword [rsp + 0x158], r14d
sub al, r11b
movzx eax, al
cmp r11d, r10d
cmovle edi, eax
mov eax, r13d
sub eax, r8d
mov dword [rsp + 0x54], edi
cmp r11d, eax
jle 0x140054dd5
mov byte [rsp + 0x160], r13b
jmp 0x140054de0
lea eax, [rcx + r11]
mov byte [rsp + 0x160], al
mov eax, r13d
sub eax, r9d
cmp r11d, eax
jle 0x140054df5
mov byte [rsp + 0x170], r13b
jmp 0x140054e00
lea ecx, [r12 + r11]
mov byte [rsp + 0x170], cl
mov r12d, dword [rsp + 0x50]
sub r13d, r10d
mov r9, qword [rsp + 0x78]
cmp r12d, r13d
jle 0x140054e1c
mov byte [rsp + 0x148], 0xff
jmp 0x140054e8a
lea eax, [rdx + r12]
mov dword [rsp + 0x158], r14d
mov dword [rsp + 0x54], edi
jmp 0x140054e83
movzx eax, byte [rsp + 0x180]
mov r12d, dword [rsp + 0x50]
mov byte [rsp + 0x180], al
movzx eax, byte [rsp + 0x180]
mov dword [rsp + 0x158], eax
movzx eax, byte [rsp + 0x180]
mov dword [rsp + 0x54], eax
movzx eax, byte [rsp + 0x180]
mov byte [rsp + 0x160], al
movzx eax, byte [rsp + 0x180]
mov byte [rsp + 0x170], al
movzx eax, byte [rsp + 0x180]
mov byte [rsp + 0x148], al
mov edx, dword [rsp + 0x64]
mov r8, 0xffffffffffffffff
mov edi, dword [rsp + 0x180]
mov r14d, edx
mov r13d, dword [rsp + 0x168]
mov ecx, dword [rsp + 0x60]
nop dword [rax + rax]
mov eax, esi
cmp edx, ecx
jle 0x140054ebe
cmp r14d, ecx
setge al
jmp 0x140054ec4
cmp r14d, ecx
setle al
test eax, eax
je 0x140054f11
mov edi, r15d
nop dword [rax + rax]
mov eax, esi
cmp r15d, ebp
jle 0x140054ede
cmp edi, ebp
setge al
jmp 0x140054ee3
cmp edi, ebp
setle al
test eax, eax
je 0x140054fb2
mov r8d, edi
mov edx, r14d
mov rcx, r9
call qword [sym.imp.GDI32.dll_GetPixel]
cmp r12d, 1
jge 0x140054f50
cmp eax, r13d
jne 0x140054f93
mov byte [rsp + 0x150], 1
mov rdx, qword [rsp + 0x78]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
cmp byte [rsp + 0x150], 0
jne 0x140054fcd
mov rcx, qword [0x140102760]
lea rdx, [0x1400e1d2c]
xor r9d, r9d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400b1f60
jmp 0x140055096
movzx ecx, ax
mov edx, eax
shr cx, 8
shr edx, 0x10
cmp al, byte [rsp + 0x180]
jb 0x140054f93
cmp al, byte [rsp + 0x160]
ja 0x140054f93
cmp cl, byte [rsp + 0x158]
jb 0x140054f93
cmp cl, byte [rsp + 0x170]
ja 0x140054f93
cmp dl, byte [rsp + 0x54]
jb 0x140054f93
cmp dl, byte [rsp + 0x148]
jbe 0x140054f09
mov r9, qword [rsp + 0x78]
cmp r15d, ebp
mov eax, 1
mov r8, 0xffffffffffffffff
cmovg eax, r8d
add edi, eax
jmp 0x140054ed0
mov ecx, dword [rsp + 0x60]
mov eax, 1
mov edx, dword [rsp + 0x64]
cmp edx, ecx
cmovg eax, r8d
add r14d, eax
jmp 0x140054eb0
mov r15, qword [rsp + 0x68]
test r15, r15
je 0x140054fe8
sub r14d, ebx
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
movsxd rdx, r14d
mov rcx, r15
call fcn.1400014c0
mov rcx, qword [rsp + 0xa0]
test rcx, rcx
je 0x140055007
sub edi, dword [rsp + 0x84]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
movsxd rdx, edi
call fcn.1400014c0
mov rcx, qword [0x140102760]
lea rdx, [0x1400cc6d4]
xor r9d, r9d
mov byte [rsp + 0x20], 1
lea r8, [r9 - 1]
call fcn.1400b1f60
jmp 0x140055096
mov r12, 0xffffffffffffffff
cmp byte [rsp + 0x180], 0
lea rax, [0x1400e1d2c]
lea rdx, [0x1400e2294]
cmovne rdx, rax
cmp word [rdx], 0x30
jne 0x140055056
cmp word [rdx + 2], 0
je 0x140055066
mov rax, qword [0x1400ff050]
test byte [rax + 0x140], 1
jne 0x14005507f
mov rcx, qword [0x140102760]
xor r9d, r9d
mov r8, r12
mov byte [rsp + 0x20], 1
call fcn.1400b1f60
jmp 0x140055096
mov rcx, qword [rsp + 0x140]
lea r9, [0x1400cc644]
xor r8d, r8d
call fcn.140047870
add rsp, 0xf8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret