Function at 0x10004c248
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov rax, rsp
push r12
push r13
push r15
sub rsp, 0x90
mov qword [rsp + 0x88], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov r12, rdx
mov r13, rcx
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetDC]
mov rdi, rax
mov edx, 0x5a
mov rcx, rax
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov ebx, eax
mov rdx, rdi
xor ecx, ecx
call qword [sym.imp.USER32.dll_ReleaseDC]
cmp ebx, 0xc0
setge bpl
and dword [rsp + 0x20], 0
and dword [rsp + 0x24], 0
mov dword [rsp + 0x28], 0x10
and qword [rsp + 0x30], 0
lea r9, [rsp + 0x20]
lea r8, [0x10004c59c]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_EnumDisplayMonitors]
xor edx, edx
lea r8d, [rdx + 0x24]
lea rcx, [rsp + 0x3c]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x38], 0x28
xor ebx, ebx
mov ecx, dword [rsp + 0x20]
test ecx, ecx
je 0x10004c4dd
xor edi, edi
or r15d, 0xffffffff
mov rcx, qword [rsp + 0x30]
lea rdx, [rsp + 0x38]
mov rcx, qword [rdi + rcx]
call qword [sym.imp.USER32.dll_GetMonitorInfoW]
test eax, eax
jne 0x10004c379
mov r8d, ebx
mov rdx, qword [rsp + 0x30]
mov rdx, qword [rdi + rdx]
lea rcx, [0x1000275e0]
call fcn.10006021c
mov r9d, ebx
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp ebx, eax
jae 0x10004c366
mov r8, rdi
mov rcx, qword [rsp + 0x30]
mov rax, qword [r8 + rcx + 8]
mov qword [r8 + rcx], rax
inc r9d
add r8, 8
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp r9d, eax
jb 0x10004c345
add ecx, r15d
mov dword [rsp + 0x20], ecx
add ebx, r15d
sub rdi, 8
jmp 0x10004c4cf
mov al, bpl
neg al
sbb ecx, ecx
and ecx, 0x258
add ecx, 0x258
mov eax, dword [rsp + 0x48]
sub eax, dword [rsp + 0x40]
cmp eax, ecx
jl 0x10004c48f
mov al, bpl
neg al
sbb ecx, ecx
and ecx, 0x320
add ecx, 0x320
mov eax, dword [rsp + 0x44]
sub eax, dword [rsp + 0x3c]
cmp eax, ecx
jl 0x10004c48f
test byte [rsp + 0x5c], 1
je 0x10004c489
test ebx, ebx
je 0x10004c489
mov r8, qword [rsp + 0x30]
mov rsi, qword [rdi + r8]
mov r9d, ebx
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp ebx, eax
jae 0x10004c414
mov rdx, rdi
mov rax, qword [rdx + r8 + 8]
mov qword [rdx + r8], rax
inc r9d
add rdx, 8
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp r9d, eax
jae 0x10004c40f
mov r8, qword [rsp + 0x30]
jmp 0x10004c3ec
mov r8, qword [rsp + 0x30]
mov eax, dword [rsp + 0x24]
cmp ecx, eax
jbe 0x10004c454
add eax, dword [rsp + 0x28]
mov dword [rsp + 0x24], eax
mov edx, eax
shl rdx, 3
mov rcx, r8
call qword [sym.imp.msvcrt.dll_realloc]
mov r8, rax
test rax, rax
jne 0x10004c44b
xor ecx, ecx
call fcn.100170358
mov ecx, dword [rsp + 0x20]
jmp 0x10004c4cf
mov qword [rsp + 0x30], rax
mov ecx, dword [rsp + 0x20]
lea edx, [rcx - 1]
movsxd r9, edx
test edx, edx
je 0x10004c480
shl r9, 3
mov rax, qword [r9 + r8 - 8]
mov qword [r9 + r8], rax
add edx, r15d
lea r9, [r9 - 8]
je 0x10004c47b
mov r8, qword [rsp + 0x30]
jmp 0x10004c462
mov r8, qword [rsp + 0x30]
mov qword [r8], rsi
mov ecx, dword [rsp + 0x20]
jmp 0x10004c4cf
mov ecx, dword [rsp + 0x20]
jmp 0x10004c4cf
mov r9d, ebx
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp ebx, eax
jae 0x10004c4c1
mov r8, rdi
mov rcx, qword [rsp + 0x30]
mov rax, qword [r8 + rcx + 8]
mov qword [r8 + rcx], rax
inc r9d
add r8, 8
mov ecx, dword [rsp + 0x20]
lea eax, [rcx - 1]
cmp r9d, eax
jb 0x10004c4a0
add ecx, r15d
mov dword [rsp + 0x20], ecx
add ebx, r15d
sub rdi, 8
inc ebx
add rdi, 8
cmp ebx, ecx
jb 0x10004c304
test ecx, ecx
jne 0x10004c502
lea rcx, [0x100027650]
call fcn.10006021c
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x10004c4fe
call qword [sym.imp.msvcrt.dll_free]
xor al, al
jmp 0x10004c571
mov rax, qword [rsp + 0x30]
mov rbx, qword [rax]
xor edx, edx
lea r8d, [rdx + 0x24]
lea rcx, [rsp + 0x64]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x60], 0x28
lea rdx, [rsp + 0x60]
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetMonitorInfoW]
mov eax, dword [rsp + 0x7c]
sub eax, dword [rsp + 0x74]
cdq
sub eax, edx
sar eax, 1
sub eax, 0x190
mov dword [r13], eax
mov eax, dword [rsp + 0x80]
sub eax, dword [rsp + 0x78]
cdq
sub eax, edx
sar eax, 1
sub eax, 0xf8
mov dword [r12], eax
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x10004c56f
call qword [sym.imp.msvcrt.dll_free]
mov al, 1
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r13
pop r12
ret