Function at 0x140083560
Capabilities:
Capture screenshot

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x100a0]
mov eax, 0x101a0
call fcn.14009b900
sub rsp, rax
mov qword [rbp - 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x101f0], rbx
movaps xmmword [rsp + 0x10190], xmm6
movaps xmmword [rsp + 0x10180], xmm7
mov rax, qword [0x14013f130]
xor rax, rsp
mov qword [rbp + 0x10070], rax
movaps xmm7, xmm1
mov rbx, rcx
mov qword [rbp - 0x78], rcx
mov eax, dword [rcx + 8]
mov dword [rsp + 0x70], eax
mov r12d, dword [rcx + 0x88]
mov r13d, dword [rcx + 0x8c]
mov eax, dword [rcx + 0x90]
sub eax, r12d
mov ecx, dword [rcx + 0x94]
sub ecx, r13d
test eax, eax
jle 0x140083c9c
test ecx, ecx
jle 0x140083c9c
mov r15d, dword [rbx + 0xc]
mov dword [rbp - 0x80], r15d
mov r14d, dword [rbx + 0x10]
test r15d, r15d
jle 0x140083c98
test r14d, r14d
jle 0x140083c98
movd xmm6, r15d
cvtdq2ps xmm6, xmm6
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm6, xmm0
xor eax, eax
mov qword [rbp - 0x50], rax
mov qword [rbp - 0x48], rax
mov qword [rbp - 0x40], rax
mov dword [rbp - 0x50], 0x18
lea rcx, [rbp - 0x50]
call qword [sym.imp.USER32.dll_GetCursorInfo]
test eax, eax
je 0x140083c98
mov rcx, qword [rbp - 0x48]
test rcx, rcx
je 0x140083c98
xor eax, eax
mov qword [rbp - 0x38], rax
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x28], rax
mov qword [rbp - 0x20], rax
lea rdx, [rbp - 0x38]
call qword [sym.imp.USER32.dll_GetIconInfo]
test eax, eax
je 0x140083c98
lea rax, [rbp - 0x38]
mov qword [rbp - 0x60], rax
lea r8, [rbp + 0x48]
mov edx, 0x20
mov rcx, qword [rbp - 0x28]
call qword [sym.imp.GDI32.dll_GetObjectW]
cmp eax, 0x20
je 0x1400836a3
xor bl, bl
jmp 0x140083c75
mov eax, dword [rbp + 0x4c]
mov dword [rsp + 0x68], eax
mov esi, dword [rbp + 0x50]
cmp qword [rbp - 0x20], 0
jne 0x1400836bd
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov esi, eax
call fcn.140029f70
mov rdi, rax
call fcn.140040bc0
test eax, eax
jle 0x1400836d5
call fcn.140040cf0
jmp 0x1400836d8
mov eax, dword [rdi + 0x24]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, dword [0x14010a488]
divss xmm7, xmm0
movss xmm1, dword [0x14010a45c]
movaps xmm3, xmm1
minss xmm3, xmm7
movaps xmm2, xmm6
minss xmm2, xmm1
movd xmm0, dword [rsp + 0x68]
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm2
mulss xmm0, xmm3
cvttss2si edi, xmm0
mov dword [rsp + 0x50], edi
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm2
mulss xmm0, xmm3
cvttss2si esi, xmm0
mov dword [rsp + 0x54], esi
mov eax, dword [rbp - 0x34]
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
mulss xmm0, xmm3
cvttss2si eax, xmm0
mov edx, dword [rbp - 0x40]
sub edx, eax
mov eax, dword [rbp - 0x30]
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
mulss xmm0, xmm3
cvttss2si eax, xmm0
mov rcx, qword [rbp - 0x40]
shr rcx, 0x20
sub ecx, eax
sub ecx, r13d
sub edx, r12d
js 0x140083c73
test ecx, ecx
js 0x140083c73
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm6
cvttss2si r10d, xmm0
mov dword [rsp + 0x58], r10d
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm6
cvttss2si r13d, xmm1
mov dword [rsp + 0x68], r13d
cmp r10d, r15d
jge 0x140083c73
cmp r13d, r14d
jge 0x140083c73
lea eax, [r10 + rdi]
mov ecx, r15d
sub ecx, r10d
cmp eax, r15d
cmovle ecx, edi
mov dword [rsp + 0x5c], ecx
lea eax, [rsi + r13]
mov r15d, r14d
sub r15d, r13d
cmp eax, r14d
cmovle r15d, esi
mov dword [rsp + 0x60], r15d
cmp dword [rsp + 0x70], 8
je 0x1400837f5
sub r14d, r15d
sub r14d, r13d
mov r13d, r14d
mov dword [rsp + 0x68], r14d
lea rdx, [rbp + 0x70]
mov qword [rsp + 0x78], rdx
xor r12d, r12d
mov qword [rbp - 0x68], r12
mov eax, esi
imul eax, edi
shl eax, 2
movsxd r8, eax
cmp r8, 0x10000
jbe 0x140083836
mov rcx, r8
call fcn.14009b190
mov qword [rbp - 0x68], rax
mov rdx, rax
mov qword [rsp + 0x78], rax
mov r10d, dword [rsp + 0x58]
mov ecx, dword [rsp + 0x5c]
cmp dword [rbx + 8], 8
jne 0x140083917
and r10d, 0xfffffffe
mov dword [rsp + 0x58], r10d
and r13d, 0xfffffffe
mov ecx, esi
sub ecx, r15d
imul ecx, edi
shl ecx, 2
movsxd r14, ecx
add r14, rdx
mov r9, qword [rbx + 0x50]
mov r15d, dword [rbx + 0x14]
mov eax, r15d
imul eax, r13d
add eax, r10d
cdqe
movsxd rsi, dword [rbx + 0x24]
add rax, r9
add rsi, rax
mov edi, dword [rbx + 0x18]
mov eax, edi
imul eax, r13d
add eax, r10d
cdq
sub eax, edx
sar eax, 1
cdqe
movsxd r8, dword [rbx + 0x28]
add rax, r9
add r8, rax
mov ebx, dword [rbx + 0x1c]
mov eax, r13d
imul eax, ebx
add eax, r10d
cdq
sub eax, edx
sar eax, 1
cdqe
mov r10, qword [rbp - 0x78]
movsxd r11, dword [r10 + 0x2c]
add rax, r9
add r11, rax
mov r10d, dword [rsp + 0x60]
mov eax, r10d
neg eax
cmp dword [rsp + 0x70], 8
cmove r10d, eax
mov eax, dword [rsp + 0x50]
lea eax, [rax*4]
mov dword [rsp + 0x48], r10d
mov ecx, dword [rsp + 0x5c]
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x38], eax
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], ebx
mov qword [rsp + 0x20], r11
mov r9d, edi
mov edx, r15d
mov rcx, rsi
call fcn.14008f440
mov r15d, dword [rsp + 0x60]
mov rbx, qword [rbp - 0x78]
mov esi, dword [rsp + 0x54]
jmp 0x1400839b4
mov r14d, r12d
test r15d, r15d
jle 0x1400839b8
lea eax, [r10*4]
movsxd r8, eax
mov qword [rbp - 0x70], r8
lea eax, [rcx*4]
movsxd r9, eax
mov qword [rsp + 0x60], r9
mov eax, dword [rbp - 0x80]
lea ecx, [rax*4]
mov dword [rsp + 0x54], ecx
mov edi, r13d
imul edi, eax
shl edi, 2
mov r12d, dword [rsp + 0x50]
mov r13, qword [rsp + 0x78]
nop dword [rax]
nop word [rax + rax]
movsxd rdx, edi
add rdx, qword [rbx + 0x50]
add rdx, r8
mov eax, r14d
sub eax, r15d
add eax, esi
imul eax, r12d
shl eax, 2
movsxd rcx, eax
add rcx, r13
mov r8, r9
call fcn.1400b8f60
inc r14d
add edi, dword [rsp + 0x54]
cmp r14d, r15d
mov r8, qword [rbp - 0x70]
mov r9, qword [rsp + 0x60]
jl 0x140083970
xor r12d, r12d
mov r13d, dword [rsp + 0x68]
mov edi, dword [rsp + 0x50]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov r14, rax
mov qword [rbp - 0x70], rax
mov rcx, rax
call qword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov qword [rsp + 0x68], rax
mov r8d, esi
mov edx, edi
mov rcx, r14
call qword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov qword [rsp + 0x60], rax
mov qword [rbp + 0x2c], r12
mov qword [rbp + 0x34], 0
mov qword [rbp + 0x3c], r12
mov dword [rbp + 0x18], 0x28
mov qword [rbp + 0x24], 0x200001
mov dword [rbp + 0x1c], edi
mov dword [rbp + 0x20], esi
mov dword [rsp + 0x30], r12d
lea rcx, [rbp + 0x18]
mov qword [rsp + 0x28], rcx
mov r14, qword [rsp + 0x78]
mov qword [rsp + 0x20], r14
mov r9d, esi
xor r8d, r8d
mov rdx, rax
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.GDI32.dll_SetDIBits]
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.GDI32.dll_SelectObject]
mov qword [rbp - 0x60], rax
mov dword [rsp + 0x40], 3
mov qword [rsp + 0x38], r12
mov dword [rsp + 0x30], r12d
mov dword [rsp + 0x28], esi
mov dword [rsp + 0x20], edi
mov r9, qword [rbp - 0x48]
xor r8d, r8d
xor edx, edx
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.USER32.dll_DrawIconEx]
test eax, eax
je 0x140083c2d
xor eax, eax
mov qword [rbp - 0x14], rax
mov qword [rbp - 4], rax
mov qword [rbp + 4], rax
mov qword [rbp + 0xc], rax
mov dword [rbp - 0x18], 0x28
mov dword [rbp - 0x14], edi
mov dword [rbp - 0x10], esi
mov qword [rbp - 0xc], 0x200001
mov dword [rbp + 8], r12d
mov dword [rsp + 0x30], r12d
lea rax, [rbp - 0x18]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r14
mov r9d, esi
xor r8d, r8d
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.GDI32.dll_GetDIBits]
test eax, eax
je 0x140083c2d
cmp dword [rbx + 8], 8
jne 0x140083ba5
sub esi, r15d
imul esi, edi
shl esi, 2
movsxd r14, esi
add r14, qword [rsp + 0x78]
mov r8, qword [rbx + 0x50]
mov r9d, dword [rbx + 0x14]
mov eax, r9d
imul eax, r13d
mov r12d, dword [rsp + 0x58]
add eax, r12d
cdqe
movsxd rsi, dword [rbx + 0x24]
add rax, r8
add rsi, rax
mov edi, dword [rbx + 0x18]
mov eax, edi
imul eax, r13d
add eax, r12d
cdq
sub eax, edx
sar eax, 1
movsxd rcx, eax
movsxd rbx, dword [rbx + 0x28]
add rcx, r8
add rbx, rcx
mov r10, qword [rbp - 0x78]
mov r11d, dword [r10 + 0x1c]
imul r13d, r11d
lea eax, [r12 + r13]
cdq
sub eax, edx
sar eax, 1
cdqe
movsxd r10, dword [r10 + 0x2c]
add rax, r8
add r10, rax
mov eax, r15d
neg eax
cmp dword [rsp + 0x70], 8
cmove r15d, eax
mov eax, dword [rsp + 0x50]
lea edx, [rax*4]
mov dword [rsp + 0x48], r15d
mov eax, dword [rsp + 0x5c]
mov dword [rsp + 0x40], eax
mov dword [rsp + 0x38], r11d
mov qword [rsp + 0x30], r10
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rbx
mov r8, rsi
mov rcx, r14
call fcn.14008f240
mov bl, 1
jmp 0x140083c2f
test r15d, r15d
jle 0x140083c29
mov eax, dword [rsp + 0x58]
lea eax, [rax*4]
movsxd rdx, eax
mov qword [rbp - 0x78], rdx
mov eax, dword [rsp + 0x5c]
lea eax, [rax*4]
movsxd r8, eax
mov qword [rsp + 0x78], r8
mov eax, dword [rbp - 0x80]
lea ecx, [rax*4]
mov dword [rsp + 0x54], ecx
imul r13d, eax
shl r13d, 2
nop word [rax + rax]
movsxd rcx, r13d
add rcx, qword [rbx + 0x50]
add rcx, rdx
mov eax, r12d
sub eax, r15d
add eax, esi
imul eax, edi
shl eax, 2
movsxd rdx, eax
add rdx, r14
call fcn.1400b8f60
inc r12d
add r13d, dword [rsp + 0x54]
cmp r12d, r15d
mov rdx, qword [rbp - 0x78]
mov r8, qword [rsp + 0x78]
jl 0x140083bf0
mov bl, 1
jmp 0x140083c2f
xor bl, bl
mov rdx, qword [rbp - 0x60]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.GDI32.dll_SelectObject]
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.GDI32.dll_DeleteDC]
mov rdx, qword [rbp - 0x70]
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
mov rax, qword [rbp - 0x68]
test rax, rax
je 0x140083c75
mov rcx, rax
call fcn.14009ab24
jmp 0x140083c75
mov bl, 1
mov rcx, qword [rbp - 0x28]
test rcx, rcx
je 0x140083c84
call qword [sym.imp.GDI32.dll_DeleteObject]
mov rcx, qword [rbp - 0x20]
test rcx, rcx
je 0x140083c93
call qword [sym.imp.GDI32.dll_DeleteObject]
movzx eax, bl
jmp 0x140083c9e
xor al, al
jmp 0x140083c9e
mov al, 1
mov rcx, qword [rbp + 0x10070]
xor rcx, rsp
call fcn.14009ab00
lea r11, [rsp + 0x101a0]
mov rbx, qword [r11 + 0x50]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret