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

Disassembly:
mov qword [rsp + 0x18], rbx
push rsi
push rdi
push r14
sub rsp, 0x40
mov eax, dword [rcx + 4]
mov r14d, edx
mov rbx, rcx
test al, 0x40
je 0x1401c2801
test al, 0x10
jne 0x1401c2801
test al, 2
je 0x1401c29d0
movups xmm0, xmmword [rcx + 0xc0]
mov edx, dword [rcx + 0x8c]
mov ecx, dword [rcx + 0x88]
neg edx
movups xmmword [rsp + 0x30], xmm0
mov r8d, dword [rsp + 0x38]
neg ecx
mov esi, dword [rsp + 0x34]
add r8d, ecx
mov r9d, dword [rsp + 0x3c]
sub esi, edx
movd edi, xmm0
add r9d, edx
sub edi, ecx
test r14d, r14d
je 0x1401c27f8
mov rcx, qword [rbx + 0x28]
sub r9d, esi
sub r8d, edi
mov edx, 1
call qword [sym.imp.USER32.dll_CreateCaret]
mov edx, esi
mov ecx, edi
jmp 0x1401c29ca
mov rsi, qword [rcx + 0x110]
xor edi, edi
mov qword [rsp + 0x60], rbp
mov qword [rsp + 0x68], r15
test rsi, rsi
jne 0x1401c2845
mov edx, dword [rcx + 0x4c]
mov r9d, 1
sub edx, dword [rcx + 0x44]
mov r8d, r9d
mov ecx, dword [rcx + 0x48]
sub ecx, dword [rbx + 0x40]
mov qword [rsp + 0x20], rdi
call qword [sym.imp.GDI32.dll_CreateBitmap]
mov rsi, rax
mov qword [rbx + 0x110], rax
jmp 0x1401c289b
bt eax, 0x12
jae 0x1401c28a2
mov edx, dword [rcx + 0x4c]
mov r9d, 1
sub edx, dword [rcx + 0x44]
mov r8d, r9d
mov ecx, dword [rcx + 0x48]
sub ecx, dword [rbx + 0x40]
mov qword [rsp + 0x20], rdi
call qword [sym.imp.GDI32.dll_CreateBitmap]
test byte [rbx + 4], 2
mov rsi, rax
je 0x1401c2887
mov rcx, qword [rbx + 0x28]
xor r9d, r9d
xor r8d, r8d
mov rdx, rax
call qword [sym.imp.USER32.dll_CreateCaret]
mov rcx, qword [rbx + 0x110]
call qword [sym.imp.GDI32.dll_DeleteObject]
mov qword [rbx + 0x110], rsi
and dword [rbx + 4], 0xfffbffff
mov rbp, qword [0x140698d58]
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
test dword [rbx], 0x800
mov ecx, 0x2711
mov rsi, rax
je 0x1401c28cc
call sym.ErrorReportClient.exe_SfGetUIBrush
jmp 0x1401c28d2
call qword [sym.imp.USER32.dll_GetSysColorBrush]
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [rbx + 0x4c]
xor r8d, r8d
sub ecx, dword [rbx + 0x44]
xor edx, edx
mov r9d, dword [rbx + 0x48]
mov r15, rax
sub r9d, dword [rbx + 0x40]
mov dword [rsp + 0x28], 0x42
mov dword [rsp + 0x20], ecx
mov rcx, rbp
call qword [sym.imp.GDI32.dll_PatBlt]
cmp dword [rbx + 0x1c], edi
jbe 0x1401c297a
nop
mov eax, dword [rbx + 0x108]
bt eax, edi
jae 0x1401c2973
mov r9d, dword [rbx + 0x88]
neg r9d
mov eax, edi
mov dword [rsp + 0x28], 0xf00021
lea rcx, [rax + rax*8]
mov eax, dword [rbx + 0x8c]
movups xmm0, xmmword [rbx + rcx*4 + 0xc0]
neg eax
mov rcx, rbp
movups xmmword [rsp + 0x30], xmm0
mov r8d, dword [rsp + 0x34]
sub r8d, eax
movd edx, xmm0
sub eax, r8d
add eax, dword [rsp + 0x3c]
sub edx, r9d
mov dword [rsp + 0x20], eax
sub r9d, edx
add r9d, dword [rsp + 0x38]
call qword [sym.imp.GDI32.dll_PatBlt]
inc edi
cmp edi, dword [rbx + 0x1c]
jb 0x1401c2910
mov rdx, r15
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
mov rdx, rsi
mov rcx, rbp
call qword [sym.imp.GDI32.dll_SelectObject]
mov r15, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x60]
test r14d, r14d
je 0x1401c29be
test byte [rbx + 4], 2
je 0x1401c29d0
mov rdx, qword [rbx + 0x110]
xor r9d, r9d
mov rcx, qword [rbx + 0x28]
xor r8d, r8d
call qword [sym.imp.USER32.dll_CreateCaret]
test byte [rbx + 4], 2
je 0x1401c29d0
mov edx, dword [rbx + 0x44]
mov ecx, dword [rbx + 0x40]
call qword [sym.imp.USER32.dll_SetCaretPos]
mov rbx, qword [rsp + 0x70]
add rsp, 0x40
pop r14
pop rdi
pop rsi
ret