Function at 0x180009cf0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Query or enumerate registry value

Disassembly:
mov rax, rsp
push rbp
push rdi
push r12
push r13
push r14
lea rbp, [rax - 0x238]
sub rsp, 0x310
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov rax, qword [0x18003f390]
xor rax, rsp
mov qword [rbp + 0x200], rax
mov rdi, rcx
xor r14d, r14d
mov dword [rcx + 0x2ec], r14d
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rdi + 0x3fc], eax
lea r8, [rdi + 0x80]
lea rdx, [0x180032068]
lea rcx, [rsp + 0x50]
call fcn.180007120
mov qword [rbp - 0x30], r14
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rcx, qword [rbp - 0x30]
test rcx, rcx
je 0x180009d83
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x180009d83
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov qword [rbp - 0x30], r14
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
lea r11, [rbp - 0x30]
mov qword [rsp + 0x20], r11
mov r9d, 0x20019
xor r8d, r8d
lea rdx, str.SoftwareCenterToolsTraceLog
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
nop
mov r12d, 1
mov rcx, qword [rbp - 0x30]
test rcx, rcx
je 0x18000a152
mov dword [rsp + 0x34], r14d
mov dword [rsp + 0x30], 4
mov dword [rsp + 0x38], r14d
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x34]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x38]
xor r8d, r8d
lea rdx, str.RotateTime
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x180009e1a
cmp dword [rsp + 0x38], 4
jne 0x180009e1a
cmp dword [rsp + 0x30], 4
mov eax, dword [rsp + 0x34]
je 0x180009e1d
mov eax, r14d
mov dword [rdi + 0x408], eax
mov ebx, dword [rdi + 0x404]
xor r8d, r8d
lea rdx, str.Enabled
lea rcx, [rsp + 0x50]
call fcn.1800074e0
test eax, eax
je 0x180009e65
test ebx, ebx
je 0x180009e60
mov r8d, 0x121
lea rdx, str.Context
lea rcx, [rsp + 0x50]
call fcn.1800074e0
test ebx, eax
je 0x180009e65
mov eax, r12d
jmp 0x180009e68
mov eax, r14d
movzx eax, al
mov dword [rdi + 0x2ec], eax
mov r8d, r12d
lea rdx, str.Append
lea rcx, [rsp + 0x50]
call fcn.1800074e0
mov dword [rdi + 0x2f0], eax
mov r8d, 0x1900000
lea rdx, str.MaxSize
lea rcx, [rsp + 0x50]
call fcn.1800074e0
mov dword [rdi + 0x2f4], eax
mov r8d, 5
lea rdx, str.LogLevel
lea rcx, [rsp + 0x50]
call fcn.1800074e0
mov dword [rdi + 0x50], eax
cmp eax, 7
jbe 0x180009ece
mov dword [rdi + 0x50], 7
mov byte [rdi + 0x1e8], 0
mov dword [rsp + 0x30], 0xa
mov dword [rsp + 0x34], 4
mov dword [rsp + 0x38], r14d
lea rax, [rsp + 0x34]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x38]
xor r8d, r8d
lea rdx, str.ExtMaxFiles
mov rcx, qword [rbp - 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea rsi, [0x180031722]
mov rdx, rsi
lea rcx, [rbp + 0xf0]
call fcn.180007180
xor r9d, r9d
xor r8d, r8d
lea rdx, str.ExtMaxSize
lea rcx, [rbp + 0xf0]
call fcn.1800054e0
mov dword [rsp + 0x34], r14d
mov dword [rsp + 0x30], 0x63
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rbp + 0x190]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x34]
xor r8d, r8d
lea rdx, [rbp + 0xf0]
mov rcx, qword [rbp - 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x180009f9d
cmp dword [rsp + 0x34], r12d
jne 0x180009f9d
mov eax, dword [rsp + 0x30]
inc eax
mov byte [rbp + rax + 0x190], 0
jmp 0x180009fed
mov byte [rbp + 0x190], 0
mov edx, 0x64
lea rcx, [rbp + 0x190]
lea r8, str.16MB
lea rax, [rbp + 0x190]
sub r8, rax
lea rax, [rdx + 0x7fffff9a]
test rax, rax
je 0x180009fe2
movzx eax, byte [r8 + rcx]
test al, al
je 0x180009fe2
mov byte [rcx], al
inc rcx
dec rdx
jne 0x180009fc1
jmp 0x180009fe7
test rdx, rdx
jne 0x180009fea
dec rcx
mov byte [rcx], 0
mov dword [rsp + 0x38], r14d
mov dword [rsp + 0x30], 4
mov dword [rsp + 0x34], r14d
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
lea r9, [rsp + 0x34]
xor r8d, r8d
lea rdx, str.EventNamesEnabled
mov rcx, qword [rbp - 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x18000a042
cmp dword [rsp + 0x34], 4
jne 0x18000a042
cmp dword [rsp + 0x30], 4
mov eax, dword [rsp + 0x38]
je 0x18000a045
mov eax, r14d
cmp eax, r12d
sete al
mov byte [rdi + 0xd], al
mov byte [rbp - 0x20], 0
mov ebx, 0x104
mov edx, ebx
lea rcx, [rbp - 0x20]
lea rax, [rbp - 0x20]
sub rsi, rax
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x18000a084
movzx eax, byte [rsi + rcx]
test al, al
je 0x18000a084
mov byte [rcx], al
inc rcx
dec rdx
jne 0x18000a064
jmp 0x18000a089
test rdx, rdx
jne 0x18000a08c
dec rcx
mov byte [rcx], 0
lea rdx, [rbp - 0x20]
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
mov r11, rbx
lea rax, [rbp - 0x20]
cmp byte [rax], 0
je 0x18000a0b1
inc rax
dec r11
jne 0x18000a0a2
jmp 0x18000a0f6
test r11, r11
je 0x18000a0f6
mov rsi, rbx
sub rsi, r11
je 0x18000a0f6
cmp rsi, 3
jb 0x18000a0f6
lea rcx, [rbp - 0x20]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x18000a0f6
test al, 0x10
je 0x18000a0f6
cmp byte [rbp + rsi - 0x21], 0x5c
je 0x18000a13b
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x1800320a8]
lea rcx, [rbp - 0x20]
call fcn.180005710
jmp 0x18000a13b
lea rcx, [rbp - 0x20]
lea rdx, [0x180032378]
lea rax, [rbp - 0x20]
sub rdx, rax
nop dword [rax + rax]
lea rax, [rbx + 0x7ffffefa]
test rax, rax
je 0x18000a130
movzx eax, byte [rdx + rcx]
test al, al
je 0x18000a130
mov byte [rcx], al
inc rcx
dec rbx
jne 0x18000a110
jmp 0x18000a135
test rbx, rbx
jne 0x18000a138
dec rcx
mov byte [rcx], 0
lea r8, [rdi + 0x2f8]
lea rdx, [rbp - 0x20]
lea rcx, [rsp + 0x50]
call fcn.180007cd0
jmp 0x18000a159
mov dword [rdi + 0x2ec], r14d
cmp qword [rdi + 0x38], 0
jne 0x18000a17a
cmp dword [rdi + 0x2ec], 0
je 0x18000a17a
lea rcx, str.DlExtLog.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rdi + 0x38], rax
mov rcx, qword [rdi + 0x38]
test rcx, rcx
je 0x18000a23c
cmp dword [rdi + 0x2ec], 0
je 0x18000a206
lea rdx, str.InitializeLogging
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x10], rax
lea rdx, [0x180032348]
mov rcx, qword [rdi + 0x38]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x18], rax
lea rdx, str.DestroyLogging
mov rcx, qword [rdi + 0x38]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x20], rax
lea rdx, str.ConfigureLog
mov rcx, qword [rdi + 0x38]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0x28], rax
mov rax, qword [rdi + 0x10]
test rax, rax
je 0x18000a23c
cmp qword [rdi + 0x30], 0
jne 0x18000a23c
lea rdx, [rdi + 0x2f8]
lea rcx, [rdi + 0x80]
call rax
mov qword [rdi + 0x30], rax
jmp 0x18000a23c
mov rax, qword [rdi + 0x20]
test rax, rax
je 0x18000a21a
mov rcx, qword [rdi + 0x30]
test rcx, rcx
je 0x18000a21a
call rax
mov qword [rdi + 0x30], r14
mov qword [rdi + 0x10], r14
mov qword [rdi + 0x18], r14
mov qword [rdi + 0x20], r14
mov qword [rdi + 0x28], r14
mov rcx, qword [rdi + 0x38]
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [rdi + 0x38], r14
cmp qword [rdi + 0x38], 0
jne 0x18000a25f
lea rcx, [rdi + 0x58]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rcx, rdi
call fcn.180009810
lea rcx, [rdi + 0x58]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp qword [rdi + 0x40], 0xffffffffffffffff
jne 0x18000a270
cmp qword [rdi + 0x30], 0
jne 0x18000a270
mov r12d, r14d
mov byte [rdi + 0xc], r12b
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
mov rcx, qword [rbp - 0x30]
test rcx, rcx
je 0x18000a29b
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
je 0x18000a297
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov qword [rbp - 0x30], r14
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rcx, qword [rbp + 0x200]
xor rcx, rsp
call fcn.180014930
lea r11, [rsp + 0x310]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r14
pop r13
pop r12
pop rdi
pop rbp
ret