Function at 0x140002150
Capabilities:
Capture screenshot

Disassembly:
push rbx
push rbp
push rdi
sub rsp, 0x70
mov rax, qword [0x14000d040]
xor rax, rsp
mov qword [rsp + 0x58], rax
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, 1
mov ebx, eax
call qword [sym.imp.USER32.dll_GetSystemMetrics]
sub ebx, dword [0x14000d0bc]
xor ecx, ecx
mov r8d, eax
mov eax, ebx
sub r8d, dword [0x14000d0bc]
cdq
sub eax, edx
sar eax, 1
mov ebx, eax
mov eax, r8d
cdq
sub eax, edx
sar eax, 1
mov edi, eax
call qword [sym.imp.USER32.dll_GetDC]
mov rbp, rax
test rax, rax
jne 0x1400021d7
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_get_screen_device_context.
call fcn.1400051d0
mov rcx, rax
lea rdx, [0x1400053b0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
jmp 0x140002432
mov rcx, rbp
mov qword [rsp + 0x68], r14
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov r14, rax
test rax, rax
jne 0x140002220
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_create_compatible_device_context.
call fcn.1400051d0
mov rcx, rax
lea rdx, [0x1400053b0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rdx, rbp
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
jmp 0x14000242d
mov edx, dword [0x14000d0bc]
mov rcx, rbp
mov r8d, edx
mov qword [rsp + 0x60], r15
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov r15, rax
test rax, rax
jne 0x14000227b
mov rcx, qword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
lea rdx, str.Failed_to_create_compatible_bitmap.
call fcn.1400051d0
mov rcx, rax
lea rdx, [0x1400053b0]
call qword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______ptr64___cdecl_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64____cdecl___class_std::basic_ostream_char__struct_std::char_traits_char______ptr64_____ptr64]
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rdx, rbp
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
jmp 0x140002428
mov qword [rsp + 0x90], rsi
mov rdx, r15
mov qword [rsp + 0x98], r12
mov rcx, r14
mov qword [rsp + 0xa0], r13
call qword [sym.imp.GDI32.dll_SelectObject]
mov r9d, dword [0x14000d0bc]
xor r8d, r8d
mov dword [rsp + 0x40], 0xcc0020
xor edx, edx
mov dword [rsp + 0x38], edi
mov rcx, r14
mov dword [rsp + 0x30], ebx
mov r13, rax
mov qword [rsp + 0x28], rbp
mov dword [rsp + 0x20], r9d
call qword [sym.imp.GDI32.dll_BitBlt]
lea r8, [rsp + 0x50]
mov qword [rsp + 0x50], 0
xor edx, edx
mov rcx, r15
call qword [sym.imp.gdiplus.dll_GdipCreateBitmapFromHBITMAP]
mov eax, dword [0x14000d0bc]
xor r12b, r12b
mov rsi, qword [rsp + 0x50]
xor edi, edi
test eax, eax
jle 0x1400023c8
xor ebx, ebx
test eax, eax
jle 0x1400023b9
nop dword [rax]
lea r9, [rsp + 0x50]
mov r8d, edi
mov edx, ebx
mov rcx, rsi
call qword [sym.imp.gdiplus.dll_GdipBitmapGetPixel]
test eax, eax
je 0x140002330
mov eax, 0xff000000
xor dl, dl
jmp 0x140002337
mov eax, dword [rsp + 0x50]
movzx edx, al
mov r8d, dword [0x14000d0c4]
mov ecx, eax
mov r9d, dword [0x14000d0b8]
shr ecx, 0x10
movzx ecx, cl
shr eax, 8
movzx eax, al
shl eax, 8
or eax, ecx
movzx ecx, dl
shl ecx, 0x10
or eax, ecx
movzx ecx, r8b
movzx edx, al
sub edx, ecx
mov ecx, edx
neg ecx
cmovs ecx, edx
cmp ecx, r9d
jg 0x1400023a9
movzx edx, ax
shr edx, 8
movzx ecx, r8w
shr ecx, 8
sub edx, ecx
mov ecx, edx
neg ecx
cmovs ecx, edx
cmp ecx, r9d
jg 0x1400023a9
shr r8d, 0x10
shr eax, 0x10
movzx ecx, r8b
sub eax, ecx
mov ecx, eax
neg ecx
cmovs ecx, eax
cmp ecx, r9d
jle 0x1400023c5
mov eax, dword [0x14000d0bc]
inc ebx
cmp ebx, eax
jl 0x140002310
inc edi
cmp edi, eax
jl 0x140002302
jmp 0x1400023c8
mov r12b, 1
mov rdx, r13
mov rcx, r14
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, r15
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, r14
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rdx, rbp
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov r13, qword [rsp + 0xa0]
test r12b, r12b
mov r12, qword [rsp + 0x98]
je 0x140002417
call fcn.140002070
mov ecx, dword [0x14000d0b4]
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rcx, rsi
call qword [sym.imp.gdiplus.dll_GdipDisposeImage]
mov rsi, qword [rsp + 0x90]
mov r15, qword [rsp + 0x60]
mov r14, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x58]
xor rcx, rsp
call fcn.1400063f0
add rsp, 0x70
pop rdi
pop rbp
pop rbx
ret