Function at 0x140015628
Capabilities:
Capture screenshot

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x98
mov rdi, qword [rcx + 0x18]
mov r13, rcx
lea rbx, [rdi + 0x118]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop dword [rax + rax]
movups xmm0, xmmword [rdi]
mov rcx, rbx
movdqu xmmword [rsp + 0x80], xmm0
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop dword [rax + rax]
xor r12d, r12d
lea r15, [r13 + 0x38]
mov rcx, r15
mov qword [rsp + 0x68], r12
mov ebx, r12d
mov qword [rsp + 0x70], r12
mov edi, r12d
mov qword [rsp + 0x78], r12
mov esi, r12d
mov ebp, r12d
mov r14d, r12d
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop dword [rax + rax]
xor eax, eax
cmp dword [r13 + 0x20], eax
jne 0x140015a30
cmp dword [r13 + 0xc], eax
jne 0x1400156c3
lea r12d, [r14 + 1]
jmp 0x140015a30
mov rcx, qword [r13]
call qword [sym.imp.USER32.dll_GetDC]
nop dword [rax + rax]
mov rbx, rax
test rax, rax
jne 0x140015717
xor r13d, r13d
mov ebx, r13d
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop dword [rax + rax]
test eax, eax
jne 0x1400156f9
mov r12d, 0x80004005
jmp 0x14001570a
movzx r12d, ax
or r12d, 0x80070000
test eax, eax
cmovle r12d, eax
mov ecx, r12d
call fcn.140012d04
jmp 0x140015a30
mov rcx, rbx
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
nop dword [rax + rax]
mov rdi, rax
test rax, rax
jne 0x140015736
xor r13d, r13d
mov edi, r13d
jmp 0x1400156e1
mov rdx, qword [r13 + 0x10]
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov qword [rsp + 0x68], rax
mov rcx, rbx
mov eax, dword [rsp + 0x8c]
mov r14, rbx
mov dword [rsp + 0xe8], eax
mov r8d, eax
mov eax, dword [rsp + 0x88]
mov edx, eax
mov dword [rsp + 0xe0], eax
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
nop dword [rax + rax]
mov rdx, rax
mov rcx, rbx
mov rbp, rax
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov rcx, rbx
mov qword [rsp + 0x70], rax
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
nop dword [rax + rax]
mov ecx, dword [rsp + 0x84]
mov rsi, rax
mov edx, dword [rsp + 0x80]
mov eax, dword [rsp + 0xe8]
sub eax, ecx
mov dword [rsp + 0xf8], ecx
mov ecx, dword [rsp + 0xe0]
mov r8d, eax
sub ecx, edx
mov dword [rsp + 0x60], edx
mov dword [rsp + 0xe0], ecx
mov edx, ecx
mov rcx, rbx
mov dword [rsp + 0xe8], eax
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
nop dword [rax + rax]
mov rdx, rax
mov rcx, rsi
mov r14, rax
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov ecx, dword [rsp + 0xe8]
xor r8d, r8d
mov r9d, dword [rsp + 0xe0]
xor edx, edx
mov dword [rsp + 0x40], 0x42
mov qword [rsp + 0x78], rax
xor eax, eax
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov rcx, rsi
call qword [sym.imp.GDI32.dll_BitBlt]
nop dword [rax + rax]
xor edx, edx
mov r10d, 0xff
mov eax, r10d
div dword [r13 + 0xc]
cmp dword [r13 + 8], 1
mov r9d, eax
jne 0x140015913
movzx r8d, byte [r13 + 0x30]
movzx edx, r9b
add edx, r8d
cmp edx, r10d
jae 0x140015884
lea r10d, [r9 + r8]
mov rcx, r13
mov byte [r13 + 0x30], r10b
call fcn.140015b20
xor ecx, ecx
test eax, eax
je 0x14001598c
mov eax, dword [rsp + 0xe8]
mov r9d, dword [rsp + 0xe0]
mov r8d, dword [rsp + 0xf8]
mov edx, dword [rsp + 0x60]
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], ecx
mov rcx, rbx
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], eax
call qword [sym.imp.GDI32.dll_BitBlt]
nop dword [rax + rax]
mov dword [r13 + 0x24], 1
mov rdx, qword [r13 + 0x28]
xor r9d, r9d
mov rcx, qword [r13]
mov r8d, 0x1f4
call qword [sym.imp.USER32.dll_SetTimer]
nop dword [rax + rax]
xor r13d, r13d
test rax, rax
jne 0x140015a30
jmp 0x1400156e1
cmp dword [r13 + 8], 2
jne 0x14001598a
mov al, byte [r13 + 0x30]
cmp al, r9b
ja 0x140015927
xor eax, eax
jmp 0x14001592a
sub al, r9b
mov rcx, r13
mov byte [r13 + 0x30], al
call fcn.140015b20
xor ecx, ecx
test eax, eax
je 0x14001598c
mov eax, dword [rsp + 0xe8]
mov r9d, dword [rsp + 0xe0]
mov r8d, dword [rsp + 0xf8]
mov edx, dword [rsp + 0x60]
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], ecx
mov rcx, rbx
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], eax
call qword [sym.imp.GDI32.dll_BitBlt]
nop dword [rax + rax]
xor eax, eax
mov dword [r13 + 0x24], eax
jmp 0x1400158e5
xor ecx, ecx
mov al, byte [r13 + 0x30]
xor r8d, r8d
mov r13d, dword [rsp + 0xe8]
xor edx, edx
mov byte [rsp + 0xf2], al
mov byte [rsp + 0xf0], cl
mov byte [rsp + 0xf3], cl
mov eax, dword [rsp + 0xf0]
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0xe0]
mov r9d, eax
mov dword [rsp + 0x48], r13d
mov dword [rsp + 0x40], eax
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x30], ecx
mov rcx, rsi
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], r13d
call qword [sym.imp.GDI32.dll_GdiAlphaBlend]
nop dword [rax + rax]
mov r9d, dword [rsp + 0xe0]
xor eax, eax
mov r8d, dword [rsp + 0xf8]
mov rcx, rbx
mov edx, dword [rsp + 0x60]
mov dword [rsp + 0x40], 0xcc0020
mov dword [rsp + 0x38], eax
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], r13d
call qword [sym.imp.GDI32.dll_BitBlt]
nop dword [rax + rax]
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x140015a4c
mov rdx, rax
mov rcx, rdi
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov rax, qword [rsp + 0x70]
test rax, rax
je 0x140015a68
mov rdx, rax
mov rcx, rbx
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov rax, qword [rsp + 0x78]
test rax, rax
je 0x140015a84
mov rdx, rax
mov rcx, rsi
call qword [sym.imp.GDI32.dll_SelectObject]
nop dword [rax + rax]
mov ecx, r12d
call fcn.140012d24
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop dword [rax + rax]
test r14, r14
je 0x140015aaf
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteObject]
nop dword [rax + rax]
test rbp, rbp
je 0x140015ac3
mov rcx, rbp
call qword [sym.imp.GDI32.dll_DeleteObject]
nop dword [rax + rax]
test rsi, rsi
je 0x140015ad7
mov rcx, rsi
call qword [sym.imp.GDI32.dll_DeleteDC]
nop dword [rax + rax]
test rdi, rdi
je 0x140015aeb
mov rcx, rdi
call qword [sym.imp.GDI32.dll_DeleteDC]
nop dword [rax + rax]
test rbx, rbx
je 0x140015aff
mov rcx, rbx
call qword [sym.imp.GDI32.dll_DeleteDC]
nop dword [rax + rax]
mov eax, r12d
add rsp, 0x98
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret