Function at 0x14016c950
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x78
mov r12, r9
mov rsi, r8
mov rbx, rdx
mov rdi, rcx
xor r14d, r14d
mov dword [rbp - 0x40], r14d
lea rcx, [rbp - 0x38]
call qword [sym.imp.mfc140u.dll_Ordinal_296]
nop
mov dword [rbp - 0x44], r14d
cmp byte [0x1403c5340], r14b
je 0x14016cb18
cmp byte [0x1403c5341], r14b
jne 0x14016cb18
lea rdx, [0x1402ac728]
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__15]
nop
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CMFCPropertyGridProperty::HitTest]
test al, al
jne 0x14016c9df
mov rdx, r12
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_Ordinal_1501]
mov eax, 0x2710
mov byte [rbp - 0x48], 0
mov r15d, dword [rbp + 0x68]
mov r8, 0xffffffffffffffff
mov edx, eax
mov ecx, eax
mov dword [rbp - 0x44], eax
cmp r15d, r8d
jle 0x14016ca11
mov ecx, eax
cmp r15d, eax
jae 0x14016ca11
mov dword [rbp - 0x44], r15d
mov byte [rbp - 0x48], 1
mov rcx, r15
mov eax, 2
mul rcx
cmovo rax, r8
mov rcx, rax
call sub.mfc140u.dll_operator_2
mov r13, rax
mov r8d, dword [rbp - 0x44]
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
lea rcx, [0x1403c5600]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov rsi, rax
mov r14d, dword [rbp - 0x44]
mov rcx, qword [rbp + 0x58]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov rdi, rax
mov rcx, rbx
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov rbx, rax
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov qword [rsp + 0x28], rsi
mov dword [rsp + 0x20], r14d
mov r9, r13
mov r8, rdi
mov rdx, rbx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp byte [rbp - 0x48], 0
jne 0x14016caae
mov ecx, dword [rbp - 0x44]
dec ecx
cmp eax, ecx
jb 0x14016caae
mov rcx, r13
call fcn.14026358e
mov eax, dword [rbp - 0x44]
add eax, eax
mov rbx, qword [rbp + 0x50]
jmp 0x14016c9ec
mov rdx, r13
lea rcx, [rbp - 0x38]
call qword [sym.imp.mfc140u.dll_CMFCControlRendererInfo::CMFCControlRendererInfo]
mov rcx, r13
call fcn.14026358e
mov eax, dword [rbp - 0x44]
add eax, eax
mov dword [rbp - 0x44], eax
lea rdx, [rbp - 0x38]
mov rcx, qword [rbp + 0x48]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
nop
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rcx, [rbp - 0x38]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, qword [rbp + 0x50]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, qword [rbp + 0x58]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
mov rax, qword [rbp + 0x48]
jmp 0x14016cd2e
lea rdx, str.SoftwareDitto
lea rcx, [rbp - 0x28]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__15]
nop
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CMFCPropertyGridProperty::HitTest]
test al, al
jne 0x14016cbdf
lea rdx, [0x1402d9ce4]
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__14]
nop
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CMFCRibbonUndoButton::GetIconSize]
mov rdx, rax
lea rcx, [rbp - 0x20]
call qword [sym.imp.mfc140u.dll_Ordinal_285]
mov dword [rbp - 0x40], 2
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CMFCPropertyGridProperty::GetHierarchyLevel]
mov esi, eax
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov rdi, rax
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CMFCPropertyGridProperty::GetHierarchyLevel]
mov ebx, eax
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov dword [rsp + 0x20], esi
mov r9, rdi
mov r8d, ebx
mov rdx, rax
lea rcx, [rbp - 0x20]
call qword [sym.imp.mfc140u.dll_CMFCTasksPane::CollapseAllGroups_1]
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x28]
call qword [sym.imp.mfc140u.dll_Ordinal_1667]
nop
lea rcx, [rbp - 0x20]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rcx, [rbp - 0x30]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
mov rdi, qword [rbp + 0x48]
mov rbx, qword [rbp + 0x50]
mov rsi, qword [rbp + 0x58]
lea rcx, [rbp - 0x28]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
mov rdx, rax
lea rax, [rbp - 0x18]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
mov rcx, 0xffffffff80000001
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x14016cceb
mov rcx, rbx
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
lea rcx, [rbp - 0x44]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], r14
xor r9d, r9d
xor r8d, r8d
mov rdx, rax
mov rcx, qword [rbp - 0x18]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r14d, eax
test eax, eax
jne 0x14016ccd8
mov ecx, dword [rbp - 0x44]
test ecx, ecx
je 0x14016ccd8
mov edx, dword [rbp + 0x68]
cmp edx, 0xffffffff
jle 0x14016cc60
cmp edx, ecx
cmovb ecx, edx
inc ecx
mov dword [rbp - 0x44], ecx
mov eax, 2
mul rcx
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call sub.mfc140u.dll_operator_2
mov rbx, rax
mov r8d, dword [rbp - 0x44]
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
mov rcx, qword [rbp + 0x50]
call qword [sym.imp.mfc140u.dll_CDumpContext::operator___3]
lea rcx, [rbp - 0x44]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rbx
xor r9d, r9d
xor r8d, r8d
mov rdx, rax
mov rcx, qword [rbp - 0x18]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov r14d, eax
mov rdx, rbx
lea rcx, [rbp - 0x38]
call qword [sym.imp.mfc140u.dll_CMFCControlRendererInfo::CMFCControlRendererInfo]
mov rcx, rbx
call fcn.14026358e
mov rbx, qword [rbp + 0x50]
mov rcx, qword [rbp - 0x18]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test r14d, r14d
lea rdx, [rbp - 0x38]
je 0x14016ccee
mov rdx, rsi
mov rcx, rdi
call qword [sym.imp.mfc140u.dll_ATL::CStringT_wchar_t_StrTraitMFC_DLL_wchar_t_ATL::ChTraitsCRT_wchar_t__8]
nop
lea rcx, [rbp - 0x28]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
lea rcx, [rbp - 0x38]
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, rbx
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, rsi
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
nop
mov rcx, r12
call qword [sym.imp.mfc140u.dll_CMFCRibbonInfo::XElementButtonGallery::XGalleryGroup::XGalleryGroup]
mov rax, rdi
add rsp, 0x78
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret