Function at 0x1400120a0
Capabilities:
Get common file path
Write file on windows

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
sub rsp, 0x470
mov rax, qword [0x14002f318]
xor rax, rsp
mov qword [rsp + 0x460], rax
mov rbx, rcx
mov rsi, rdx
lea rcx, [0x140030c30]
xor edx, edx
mov r8d, 0x98
call fcn.140013900
mov edi, 0x100
lea rcx, [rsp + 0x160]
mov r8, rdi
xor edx, edx
call fcn.140013900
lea rcx, [rsp + 0x260]
mov r8, rdi
xor edx, edx
call fcn.140013900
lea rcx, [rsp + 0x360]
mov r8, rdi
xor edx, edx
call fcn.140013900
lea rcx, [rsp + 0x60]
mov r8, rdi
xor edx, edx
call fcn.140013900
xor edx, edx
lea rcx, [rsp + 0x48]
lea r8d, [rdx + 0xe]
call fcn.140013900
xor ebp, ebp
cmp rsi, rbp
je 0x140012344
lea rdx, [rsp + 0x160]
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov rcx, qword [0x140030a70]
lea r8, [rsp + 0x60]
lea edx, [rbp + 0x67]
mov r9d, edi
mov byte [rsp + 0x260], bpl
call qword [sym.imp.USER32.dll_LoadStringA]
cmp byte [rsp + 0x60], bpl
je 0x14001218c
lea rax, [rsp + 0x60]
cmp byte [rax], 0x7c
jne 0x140012184
mov byte [rax], bpl
inc rax
cmp byte [rax], bpl
jne 0x14001217c
lea rcx, [0x140030c30]
xor edx, edx
mov r8d, 0x98
call fcn.140013900
lea rax, [rsp + 0x60]
lea rcx, [0x140030c30]
mov qword [0x140030c48], rax
lea rax, [rsp + 0x260]
mov dword [0x140030c30], 0x98
mov qword [0x140030c60], rax
lea rax, [rsp + 0x360]
mov qword [0x140030c38], rbx
mov qword [0x140030c70], rax
lea rax, [rsp + 0x160]
mov qword [0x140030c40], rbp
mov qword [0x140030c80], rax
lea rax, [0x140020704]
mov qword [0x140030c50], rbp
mov dword [0x140030c5c], 1
mov dword [0x140030c68], edi
mov dword [0x140030c78], edi
mov qword [0x140030c98], rax
mov qword [0x140030c88], rbp
mov dword [0x140030c90], 0x12
mov word [0x140030c94], bp
mov word [0x140030c96], bp
mov qword [0x140030ca0], rbp
mov qword [0x140030ca8], rbp
mov qword [0x140030cb0], rbp
call qword [sym.imp.COMDLG32.dll_GetSaveFileNameA]
mov rcx, qword [0x140030c60]
mov qword [rsp + 0x30], rbp
xor r9d, r9d
xor r8d, r8d
mov edx, 0x40000000
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 2
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rdi, rax
cmp rax, rbp
je 0x140012344
mov rcx, rsi
call fcn.140012060
mov rbx, rax
cmp rax, rbp
je 0x14001233b
mov eax, 0x4d42
lea r9, [rsp + 0x40]
mov r8d, 0xe
mov word [rsp + 0x48], ax
movzx eax, word [rbx + 0xe]
mov rcx, rdi
mov dword [rsp + 0x40], ebp
mov qword [rsp + 0x20], rbp
imul eax, dword [rbx + 4]
add eax, 0x1f
cdq
and edx, 0x1f
add eax, edx
lea rdx, [rsp + 0x48]
sar eax, 5
imul eax, dword [rbx + 8]
add eax, dword [rbx + 0x20]
mov word [rsp + 0x4e], bp
mov word [rsp + 0x50], bp
lea eax, [rax*4 + 0x36]
mov dword [rsp + 0x4a], eax
mov eax, dword [rbx + 0x20]
lea eax, [rax*4 + 0x36]
mov dword [rsp + 0x52], eax
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov r8d, dword [rsp + 0x4a]
lea r9, [rsp + 0x40]
add r8d, 0xfffffff2
mov rdx, rbx
mov rcx, rdi
mov qword [rsp + 0x20], rbp
call qword [sym.imp.KERNEL32.dll_WriteFile]
mov rcx, rsi
call fcn.140012080
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, qword [rsp + 0x460]
xor rcx, rsp
call fcn.140013bb0
mov rbx, qword [rsp + 0x4a0]
add rsp, 0x470
pop rdi
pop rsi
pop rbp
ret