Function at 0x180031f00
Capabilities:
Get common file path
Get file size
Read file on windows

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x540]
sub rsp, 0x640
mov rax, qword [0x18009a1f0]
xor rax, rsp
mov qword [rbp + 0x530], rax
mov r14d, dword [rbp + 0x5a8]
mov r13, r9
mov r10, qword [rbp + 0x5a0]
mov r9, r8
mov r11, qword [rbp - 0x80]
xor ebx, ebx
mov r15, qword [rbp + 0x5b0]
mov r12d, r14d
mov rdi, qword [rsp + 0x70]
imul esi, r14d, 0x138
mov qword [rbp - 0x70], r8
mov r8, rdx
mov qword [rsp + 0x78], rdx
mov rdx, rcx
mov qword [rbp - 0x60], rcx
mov rcx, qword [rbp - 0x80]
mov dword [rsp + 0x68], esi
cmp r14d, esi
mov qword [rsp + 0x60], r10
mov qword [rsp + 0x58], rcx
mov qword [rbp - 0x68], r11
ja 0x180032310
mov eax, 0x25
cmp r12d, 0x21a6
ja 0x1800320b9
je 0x18003209d
cmp r12d, 0xb86
ja 0x180032067
je 0x18003204d
mov eax, r12d
sub eax, 2
je 0x180032005
sub eax, 0x74
je 0x180031fe4
cmp eax, 0x57
jne 0x180032242
test r15, r15
jne 0x180032242
mov rax, rbx
jmp 0x18003214e
lea eax, [r14 + r14*2]
mov dword [rbp + 0x2f0], 0x730025
lea r12d, [r12 + rax*8]
mov dword [rbp + 0x2f4], 0x20002c
cmp r12d, esi
jmp 0x180031f8c
mov ecx, ebx
cmp dword [r15], ebx
jle 0x18003223d
mov eax, ecx
imul eax, dword [rdx]
cdqe
movsd xmm0, qword [r10 + rax*8]
mov eax, dword [r8]
mulsd xmm0, qword [r13]
imul eax, ecx
inc ecx
cdqe
movsd qword [r9 + rax*8], xmm0
cmp ecx, dword [r15]
jl 0x180032010
mov rcx, qword [rsp + 0x58]
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
lea eax, [r14 + r14*2]
mov dword [rbp + 0x2f8], 0x64006d
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
cmp r12d, 0x1405
je 0x1800321e6
cmp r12d, 0x1696
jne 0x180032242
mov eax, 0x35
mov word [rbp + 0x2fc], ax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
mov eax, 0x28
mov word [rbp + 0x2fe], ax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
cmp r12d, 0x42d6
ja 0x180032282
je 0x180032252
cmp r12d, 0x273d
je 0x18003212f
cmp r12d, 0x2cb6
je 0x180032102
cmp r12d, 0x37c6
jne 0x180032242
mov word [rbp + 0x308], ax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
mov word [rbp + 0x300], ax
mov eax, 0x73
mov word [rbp + 0x306], ax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
mov dword [rbp + 0x302], 0x250073
cmp r12d, esi
jmp 0x180031f8c
mov r14d, 0xc9
cmp r14d, 0xc9
je 0x180032178
cmp r14d, 0x8c8b
jne 0x1800321c7
mov rax, rdi
mov rcx, qword [rbp + 0x530]
xor rcx, rsp
call fcn.180082e70
mov rbx, qword [rsp + 0x680]
add rsp, 0x640
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
cmp byte [r10], bl
je 0x1800321bf
mov esi, 0x89
mov eax, esi
sub eax, 0x89
je 0x180032192
cmp eax, 1
je case.0x1800323bb.0
jmp 0x1800321b0
xor r9d, r9d
mov qword [rsp + 0x28], rbx
mov r8, r15
mov qword [rsp + 0x20], rbx
xor ecx, ecx
lea edx, [r9 + 0x54]
call fcn.18006b8d0
mov rdi, rbx
inc esi
cmp esi, 0x8b
jb 0x180032182
mov r10, qword [rsp + 0x60]
mov rdi, r15
mov qword [rsp + 0x70], r15
add r14d, 0x8bc2
cmp r14d, 0x11784
jbe 0x180032135
mov esi, dword [rsp + 0x68]
mov r14d, dword [rbp + 0x5a8]
mov r8, qword [r15]
test r8, r8
je 0x180032206
xor r9d, r9d
mov qword [rsp + 0x28], rbx
xor ecx, ecx
mov qword [rsp + 0x20], rbx
lea edx, [r9 + 0x54]
call fcn.18006b8d0
mov r8, qword [r15 + 0x28]
test r8, r8
je 0x180032227
xor r9d, r9d
mov qword [rsp + 0x28], rbx
xor ecx, ecx
mov qword [rsp + 0x20], rbx
lea edx, [r9 + 0x54]
call fcn.18006b8d0
mov r11, qword [rbp - 0x68]
mov r10, qword [rsp + 0x60]
mov r9, qword [rbp - 0x70]
mov r8, qword [rsp + 0x78]
mov rdx, qword [rbp - 0x60]
mov rcx, qword [rsp + 0x58]
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
mov eax, 0x73
mov dword [rbp + 0x30c], 0x200029
mov word [rbp + 0x30a], ax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
mov dword [rbp + 0x310], 0x3e003d
cmp r12d, esi
jmp 0x180031f8c
cmp r12d, 0x4de6
je 0x1800322f9
cmp r12d, 0x58f6
jne 0x180032242
cmp qword [r15 + 0x18], 8
mov rcx, r15
jb 0x1800322a1
mov rcx, qword [r15]
xor r9d, r9d
mov qword [rsp + 0x30], rbx
mov dword [rsp + 0x28], 0x80
mov edx, 0x80000000
mov dword [rsp + 0x20], 3
lea r8d, [r9 + 3]
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rdx, qword [rbp - 0x60]
mov r11, rbx
mov r8, qword [rsp + 0x78]
mov rcx, rax
mov r9, qword [rbp - 0x70]
mov r10, qword [rsp + 0x60]
mov qword [rsp + 0x58], rax
lea eax, [r14 + r14*2]
lea r12d, [r12 + rax*8]
mov qword [rbp - 0x68], rbx
cmp r12d, esi
jmp 0x180031f8c
lea eax, [r14 + r14*2]
mov word [rbp + 0x314], bx
lea r12d, [r12 + rax*8]
cmp r12d, esi
jmp 0x180031f8c
imul eax, r14d, 0x60c
mov r15d, r14d
mov dword [rsp + 0x78], eax
cmp r14d, eax
ja case.0x1800323bb.0
mov r13, qword [rbp - 0x20]
mov r12d, dword [rsp + 0x78]
mov r14d, dword [rsp + 0x54]
lea rdx, [0x180000000]
cmp r15d, 0x1653a
ja 0x1800325d4
je 0x1800325bf
cmp r15d, 0xb2d8
ja 0x1800324c3
je 0x1800324a1
cmp r15d, 0x76
je 0x180032397
cmp r15d, 0x3bec
je 0x18003238a
cmp r15d, 0x7762
jne 0x1800327d5
mov dword [rbp - 0x48], 0x36
jmp 0x1800327d5
mov byte [rsp + 0x50], 1
mov dword [rbp - 0x74], ebx
jmp 0x1800327d5
cmp rcx, 0xffffffffffffffff
jne 0x1800327d5
mov esi, 8
cmp esi, 8
ja case.default.0x1800323bb
mov eax, esi
mov ecx, dword [rdx + rax*4 + 0x32824]
add rcx, rdx
jmp rcx
mov dword [rbp - 0x78], ebx
mov dword [rbp - 0x58], ebx
jmp case.default.0x1800323bb
cmp byte [rsp + 0x53], bl
je 0x1800323df
mov r8d, dword [rsp + 0x68]
mov edx, dword [rbp - 0x78]
mov rcx, qword [rbp - 0x38]
call sub.IMM32.dll_ImmSetConversionStatus
mov r8d, dword [rbp - 0x54]
lea rax, [rbp - 0x30]
mov qword [rsp + 0x40], rax
xor r9d, r9d
lea rax, [rbp - 0x60]
xor edx, edx
mov qword [rsp + 0x38], rax
xor ecx, ecx
lea rax, [rbp - 0x18]
mov qword [rsp + 0x30], rax
mov eax, dword [rbp - 0x58]
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], eax
call qword [sym.imp.ADVAPI32.dll_BuildSecurityDescriptorA]
mov dword [rbp - 0x50], eax
jmp case.default.0x1800323bb
mov rcx, qword [rbp - 0x38]
lea r8, [rsp + 0x68]
lea rdx, [rbp - 0x78]
call sub.IMM32.dll_ImmGetConversionStatus
xor ecx, ecx
xorps xmm0, xmm0
mov qword [rbp + 8], rcx
movups xmmword [rbp - 0x18], xmm0
movups xmmword [rbp - 8], xmm0
test eax, eax
jne case.default.0x1800323bb
mov byte [rsp + 0x53], cl
jmp case.default.0x1800323bb
mov qword [rbp - 0x30], rbx
jmp case.default.0x1800323bb
mov qword [rbp - 0x38], rbx
mov dword [rbp - 0x54], ebx
jmp case.default.0x1800323bb
cmp dword [rbp - 0x50], ebx
jne 0x180032467
mov rcx, qword [rbp - 0x30]
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov byte [rsp + 0x70], bl
mov rdi, qword [rsp + 0x70]
jmp case.default.0x1800323bb
mov byte [rsp + 0x53], 1
jmp case.default.0x1800323bb
mov dword [rsp + 0x68], ebx
dec esi
lea rdx, [0x180000000]
lea eax, [rsi + 0x7a]
cmp eax, 0x79
ja 0x1800323a6
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
xor edx, edx
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov r10, qword [rsp + 0x60]
mov r14d, eax
mov rcx, qword [rsp + 0x58]
mov dword [rsp + 0x54], eax
mov qword [rbp - 0x20], rbx
jmp 0x1800327d5
cmp r15d, 0xee4e
je 0x18003250a
cmp r15d, 0x129c4
jne 0x1800327d5
cmp qword [r10 + 0x18], 0x10
mov rdx, r10
jb 0x1800324e6
mov rdx, qword [r10]
lea r9, [rbp - 0x74]
mov qword [rsp + 0x20], rbx
mov r8d, r14d
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
mov dword [rbp - 0x4c], ebx
jmp 0x1800327d5
call qword [sym.imp.WINMM.dll_joyGetNumDevs]
mov r10, qword [rsp + 0x60]
mov ecx, dword [rsp + 0x54]
mov r13d, eax
mov rdx, qword [r10 + 0x10]
cmp rcx, rdx
ja 0x180032548
mov qword [r10 + 0x10], rcx
mov rax, r10
cmp qword [r10 + 0x18], 0x10
jb 0x180032536
mov rax, qword [r10]
mov r14d, dword [rsp + 0x54]
mov byte [rax + rcx], bl
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
mov r8, qword [r10 + 0x18]
mov r14, rcx
mov rax, r8
sub r14, rdx
sub rax, rdx
cmp r14, rax
ja 0x180032596
mov qword [r10 + 0x10], rcx
mov rax, r10
cmp r8, 0x10
jb 0x18003256d
mov rax, qword [r10]
lea rsi, [rax + rdx]
mov r8, r14
mov rcx, rsi
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
mov byte [r14 + rsi], bl
mov r14d, dword [rsp + 0x54]
jmp 0x1800327d5
mov r9, r14
mov byte [rsp + 0x20], bl
xor r8d, r8d
mov rdx, r14
mov rcx, r10
call fcn.18001e490
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
mov r14d, dword [rsp + 0x54]
jmp 0x1800327d5
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
cmp r15d, 0x1a0b0
je 0x1800327d2
cmp r15d, 0x1dc26
je 0x1800326c7
cmp r15d, 0x2179c
je 0x18003263c
cmp r15d, 0x25312
je 0x18003261c
cmp r15d, 0x28e88
jne 0x1800327d5
mov byte [rsp + 0x70], 1
mov rax, qword [rsp + 0x70]
jmp 0x18003214e
lea rdx, [rbp - 0x3c]
lea rcx, [rbp + 0x2f0]
call qword [sym.imp.SHELL32.dll_SHIsFileAvailableOffline]
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
mov r9d, dword [rbp - 0x4c]
lea rax, [rbp + 0x320]
mov r8, qword [rbp - 0x20]
mov rcx, r11
mov edx, dword [rbp - 0x48]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathAndSubDirW]
cmp byte [rsp + 0x50], bl
je 0x1800326b8
mov esi, 0x9d
nop dword [rax]
mov eax, esi
sub eax, 0x9b
je 0x18003269e
sub eax, 1
je 0x180032696
cmp eax, 1
jne 0x1800326ae
xor edx, edx
lea rcx, [rbp + 0x10]
mov r8d, 0x2d8
call sub.VCRUNTIME140.dll_memset
jmp 0x1800326ae
mov r12d, 0x2d8
jmp 0x1800326ae
mov r8d, r12d
lea rdx, [rbp + 0x10]
mov rcx, r13
call qword [sym.imp.WINMM.dll_joyGetDevCapsW]
dec esi
cmp esi, 0x9a
ja 0x180032670
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
movzx eax, byte [rsp + 0x50]
cmp r13, 0xf
mov ecx, ebx
cmovbe ecx, eax
mov eax, dword [rsp + 0x54]
mov byte [rsp + 0x50], cl
cmp eax, dword [rbp - 0x74]
je 0x1800327c1
mov esi, ebx
nop dword [rax + rax]
cmp esi, 7
ja case.default.0x180032705
mov eax, esi
mov ecx, dword [rdx + rax*4 + 0x32848]
add rcx, rdx
jmp rcx
movzx eax, byte [rsp + 0x52]
mov ecx, ebx
cmp dword [rbp - 0x44], ebx
cmovne ecx, eax
mov byte [rsp + 0x52], cl
jmp case.default.0x180032705
mov rcx, qword [rbp - 0x80]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.dbghelp.dll_SymInitialize]
mov edx, dword [rbp - 0x40]
lea r8, [rbp - 0x18]
mov rcx, qword [rbp - 0x28]
xorps xmm0, xmm0
movups xmmword [rbp - 0x18], xmm0
mov dword [rbp - 0x44], eax
movups xmmword [rbp - 8], xmm0
call sub.IMM32.dll_ImmGetCandidateWindow
mov dword [rbp - 0x70], eax
jmp 0x1800327a7
mov qword [r10 + 0x10], rbx
mov rax, r10
cmp qword [r10 + 0x18], 0x10
jb 0x180032760
mov rax, qword [r10]
mov byte [rax], bl
jmp case.default.0x180032705
mov dword [rbp - 0x40], ebx
mov qword [rbp - 0x80], 0xffffffffffffffff
jmp case.default.0x180032705
mov byte [rsp + 0x51], 1
mov byte [rsp + 0x52], 1
mov qword [rbp - 0x28], rbx
jmp case.default.0x180032705
movzx eax, byte [rsp + 0x51]
mov ecx, ebx
cmp dword [rbp - 0x70], ebx
cmovne ecx, eax
mov byte [rsp + 0x51], cl
jmp case.default.0x180032705
cmp byte [rsp + 0x51], bl
je case.default.0x180032705
mov rcx, qword [rbp - 0x28]
lea rdx, [rbp - 0x18]
call sub.IMM32.dll_ImmSetCandidateWindow
lea rdx, [0x180000000]
mov r10, qword [rsp + 0x60]
inc esi
lea eax, [rsi + 0x52]
cmp eax, 0x5a
jb 0x1800326f0
mov r14d, dword [rsp + 0x54]
mov r10, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
jmp 0x1800327d5
mov dword [rbp - 0x3c], ebx
imul eax, dword [rbp + 0x5a8], 0x81
add r15d, eax
cmp r15d, dword [rsp + 0x78]
ja case.0x1800323bb.0
mov r11, qword [rbp - 0x68]
jmp 0x180032335
cmp byte [rsp + 0x52], bl
je 0x180032815
mov rcx, qword [rbp - 0x80]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.dbghelp.dll_SymRegisterFunctionEntryCallback64]
mov rcx, qword [rbp - 0x80]
call qword [sym.imp.dbghelp.dll_SymCleanup]
mov byte [rsp + 0x70], bl
mov rax, qword [rsp + 0x70]
jmp 0x18003214e