Function at 0x180003fe0
Capabilities:
Get common file path
Read .ini file

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
push rdi
sub rsp, 0x50
cmp dword [rcx + 0x18], 0
mov rbx, rcx
jne 0x180004085
call fcn.18004b7d8
mov r9d, eax
mov eax, 0x55555556
imul r9d
mov r8d, edx
shr r8d, 0x1f
add edx, r8d
lea ecx, [rdx + rdx*2]
sub r9d, ecx
mov ecx, 1
inc r9d
mov dword [rbx + 0x18], r9d
call fcn.180045900
mov edx, dword [rbx + 0x18]
mov rdi, rax
sub edx, 1
je 0x180004068
sub edx, 1
je 0x180004055
cmp edx, 1
jne 0x180004078
mov edx, 0x3ec0
mov rcx, rax
call fcn.1800055f0
mov qword [rbx + 0x10], rax
jmp 0x180004078
mov edx, 0x3ec0
mov rcx, rdi
call fcn.1800055f0
mov qword [rbx + 8], rax
jmp 0x180004078
mov edx, 0x3ec0
mov rcx, rdi
call fcn.1800055f0
mov qword [rbx], rax
mov edx, 1
mov rcx, rdi
call fcn.180045814
mov edx, dword [0x1800cefa0]
xor esi, esi
cmp edx, 0x62f1b7ea
jne 0x1800041a5
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_DefDlgProcW]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_UnregisterWaitEx]
call qword [sym.imp.KERNEL32.dll_GetOEMCP]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreatePrivateNamespaceW]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_EnumSystemCodePagesW]
call qword [sym.imp.USER32.dll_CloseClipboard]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_HeapUnlock]
mov dword [rsp + 0x40], esi
xor r9d, r9d
mov qword [rsp + 0x38], rsi
xor r8d, r8d
mov dword [rsp + 0x30], esi
xor edx, edx
mov dword [rsp + 0x28], esi
xor ecx, ecx
mov dword [rsp + 0x20], esi
call qword [sym.imp.USER32.dll_DrawIconEx]
mov qword [rsp + 0x30], rsi
xor r9d, r9d
mov qword [rsp + 0x28], rsi
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x20], rsi
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_AddResourceAttributeAce]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThreadpoolWork]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_TzSpecificLocalTimeToSystemTime]
xor ecx, ecx
call qword [sym.imp.USER32.dll_DdeUninitialize]
xor r9d, r9d
mov qword [rsp + 0x20], rsi
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_QueryIdleProcessorCycleTime]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GlobalFree]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MapUserPhysicalPages]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_IsDialogMessageW]
xor r9d, r9d
mov qword [rsp + 0x20], rsi
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_CascadeWindows]
mov edx, dword [0x1800cefa0]
mov ecx, dword [rbx + 0x18]
mov rdi, rsi
sub ecx, 1
je 0x1800041c6
sub ecx, 1
je 0x1800041c0
cmp ecx, 1
jne 0x1800041c9
mov rdi, qword [rbx + 0x10]
jmp 0x1800041c9
mov rdi, qword [rbx + 8]
jmp 0x1800041c9
mov rdi, qword [rbx]
cmp edx, 0x4ab34a0d
jne 0x1800042bb
xor r9d, r9d
mov dword [rsp + 0x20], esi
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_ToAscii]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetProcessPreferredUILanguages]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateThreadpoolWork]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetActiveProcessorCount]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetThreadpoolWaitEx]
xor r9d, r9d
lea rcx, str.jSUqlq2mMHIA17u4eQa6n6UVaJQ1E
xor r8d, r8d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_FindFirstStreamW]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetConsoleActiveScreenBuffer]
call qword [sym.imp.KERNEL32.dll_GetTickCount64]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_SetPropW]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetConsoleAliasExesW]
xor ecx, ecx
call qword [sym.imp.USER32.dll_IsIconic]
xor ecx, ecx
call qword [sym.imp.USER32.dll_GetProcessDefaultLayout]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.USER32.dll_DdeCreateStringHandleW]
xor r9d, r9d
mov dword [rsp + 0x28], esi
xor r8d, r8d
mov dword [rsp + 0x20], esi
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetQueuedCompletionStatusEx]
xor ecx, ecx
call qword [sym.imp.USER32.dll_IsMenu]
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_FindNextFileNameW]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetDllDirectoryW]
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetThreadIOPendingFlag]
mov rbx, qword [rsp + 0x60]
mov rax, rdi
mov rsi, qword [rsp + 0x68]
add rsp, 0x50
pop rdi
ret