Function at 0x140004990
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x38]
sub rsp, 0x110
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
mov rax, qword [0x14004b070]
xor rax, rsp
mov qword [rbp - 0x18], rax
xor r13d, r13d
lea rcx, [rbp - 0x38]
call fcn.140001fb0
nop
mov rcx, qword [rbp - 0x28]
test rcx, rcx
jne 0x140004a17
lea rcx, [0x14004e000]
lea rdx, [0x14004df20]
cmp rcx, rdx
je 0x140004f67
cmp qword [0x14004df38], 0x10
cmovae rdx, qword [0x14004df20]
mov r8, qword [0x14004df30]
call fcn.140009560
jmp 0x140004f67
movabs rdi, 0x7fffffffffffffff
mov rax, rdi
sub rax, rcx
cmp rax, 9
jb 0x140004fdb
lea r9, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae r9, qword [rbp - 0x38]
mov qword [rsp + 0x30], 9
lea rax, str.im30_win
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rbp - 0x58]
call fcn.14000c8f0
nop
lea rcx, [rbp - 0x58]
cmp qword [rbp - 0x40], 0x10
cmovae rcx, qword [rbp - 0x58]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x140004a80
test al, 0x10
jne 0x140004ac9
lea rcx, [rbp - 0x58]
cmp qword [rbp - 0x40], 0x10
cmovae rcx, qword [rbp - 0x58]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x140004ac9
lea rdx, [0x14004df20]
cmp qword [0x14004df38], 0x10
cmovae rdx, qword [0x14004df20]
mov r8, qword [0x14004df30]
lea rcx, [0x14004e000]
call fcn.140009560
jmp 0x140004f1b
mov rax, rdi
mov rcx, qword [rbp - 0x28]
sub rax, rcx
cmp rax, 0x1e
jb 0x140004fe1
lea r9, [rbp - 0x38]
cmp qword [rbp - 0x20], 0x10
cmovae r9, qword [rbp - 0x38]
mov qword [rsp + 0x30], 0x1e
lea rax, str.im30_winlastfortress_install
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rcx
lea rcx, [rsp + 0x68]
call fcn.14000c8f0
nop
lea rcx, [rsp + 0x68]
cmp qword [rbp - 0x80], 0x10
cmovae rcx, qword [rsp + 0x68]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x140004b2f
test al, 0x10
jne 0x140004b7a
lea rcx, [rsp + 0x68]
cmp qword [rbp - 0x80], 0x10
cmovae rcx, qword [rsp + 0x68]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x140004b7a
lea rdx, [0x14004df20]
cmp qword [0x14004df38], 0x10
cmovae rdx, qword [0x14004df20]
mov r8, qword [0x14004df30]
lea rcx, [0x14004e000]
call fcn.140009560
jmp 0x140004ecd
xorps xmm0, xmm0
movups xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r13
mov qword [rbp - 0x60], r13
xor r8d, r8d
lea rdx, [0x140043773]
lea rcx, [rbp - 0x78]
call fcn.14000b870
nop
lea r15, [0x14004dfe0]
mov rbx, qword [0x14004dff8]
mov rcx, r15
mov rsi, qword [0x14004dfe0]
cmp rbx, 0x10
cmovae rcx, rsi
mov r14, qword [0x14004dff0]
cmp r14, 0xd
jne 0x140004bf6
mov r8, r14
lea rdx, str.NotGetGlickId
call fcn.1400113a0
test eax, eax
jne 0x140004c06
lea r8d, [r14 + 0xa]
lea rdx, str.LastFortress.PC.tmp.exe
lea rcx, [rbp - 0x78]
call fcn.140009560
jmp 0x140004d8b
mov rax, rdi
sub rax, r14
cmp rax, 0x14
jb 0x140004fe7
cmp rbx, 0x10
cmovae r15, rsi
xorps xmm0, xmm0
movups xmmword [rsp + 0x40], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x50], xmm1
lea r12, [r14 + 0x14]
mov ebx, 0xf
lea rsi, [rsp + 0x40]
cmp r12, rbx
jbe 0x140004cad
mov rbx, r12
or rbx, 0xf
cmp rbx, rdi
jbe 0x140004c43
mov rbx, rdi
jmp 0x140004c4f
mov eax, 0x16
cmp rbx, rax
cmovb rbx, rax
mov rcx, rbx
add rcx, 1
mov rax, 0xffffffffffffffff
cmovb rcx, rax
cmp rcx, 0x1000
jb 0x140004c96
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x140004fed
mov rcx, rax
call fcn.14000ea08
test rax, rax
je 0x140004ff9
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x140004ca8
test rcx, rcx
je 0x140004ca5
call fcn.14000ea08
mov rsi, rax
jmp 0x140004ca8
mov rsi, r13
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x58], rbx
movups xmm0, xmmword [str.LastFortress.PC.tmp_]
movups xmmword [rsi], xmm0
mov eax, dword [0x140043ad8]
mov dword [rsi + 0x10], eax
lea rcx, [rsi + 0x14]
mov r8, r14
mov rdx, r15
call fcn.140010890
mov byte [rsi + r12], 0
mov r8d, 5
lea rdx, str._.exe
lea rcx, [rsp + 0x40]
call fcn.140007d20
movups xmm6, xmmword [rax]
movups xmm7, xmmword [rax + 0x10]
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [rbp - 0x60]
cmp rdx, 0x10
jb 0x140004d46
inc rdx
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004d41
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140004ff3
call fcn.14000ea00
movups xmmword [rbp - 0x78], xmm6
movups xmmword [rbp - 0x68], xmm7
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x140004d8b
inc rdx
mov rcx, qword [rsp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004d86
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140004ff9
call fcn.14000ea00
mov rax, qword [rsp + 0x78]
sub rdi, rax
cmp rdi, 1
jb 0x140004fff
lea r9, [rsp + 0x68]
cmp qword [rbp - 0x80], 0x10
cmovae r9, qword [rsp + 0x68]
mov qword [rsp + 0x30], 1
lea rcx, [0x140043ae0]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x40]
call fcn.14000c8f0
nop
lea rdx, [rbp - 0x78]
cmp qword [rbp - 0x60], 0x10
cmovae rdx, qword [rbp - 0x78]
mov r8, qword [rbp - 0x68]
lea rcx, [rsp + 0x40]
call fcn.140007d20
movups xmm6, xmmword [rax]
movups xmm7, xmmword [rax + 0x10]
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [0x14004e018]
cmp rdx, 0x10
jb 0x140004e45
mov rcx, qword [0x14004e000]
inc rdx
cmp rdx, 0x1000
jb 0x140004e40
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14000500b
mov rcx, r8
call fcn.14000ea00
movups xmmword [0x14004e000], xmm6
movups xmmword [0x14004e010], xmm7
mov rdx, qword [rsp + 0x58]
cmp rdx, 0x10
jb 0x140004e91
inc rdx
mov rcx, qword [rsp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004e8b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140005005
call fcn.14000ea00
nop
mov rdx, qword [rbp - 0x60]
cmp rdx, 0x10
jb 0x140004ecd
inc rdx
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004ec7
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140005011
call fcn.14000ea00
nop
mov rdx, qword [rbp - 0x80]
cmp rdx, 0x10
jb 0x140004f09
inc rdx
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004f04
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140005017
call fcn.14000ea00
mov qword [rsp + 0x78], r13
mov qword [rbp - 0x80], 0xf
mov byte [rsp + 0x68], 0
mov rdx, qword [rbp - 0x40]
cmp rdx, 0x10
jb 0x140004f56
inc rdx
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004f51
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000501d
call fcn.14000ea00
movdqa xmm0, xmmword [0x140043ef0]
movdqu xmmword [rbp - 0x48], xmm0
mov byte [rbp - 0x58], 0
mov rdx, qword [rbp - 0x20]
cmp rdx, 0x10
jb 0x140004f9e
inc rdx
mov rcx, qword [rbp - 0x38]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004f99
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140004fd5
call fcn.14000ea00
mov rcx, qword [rbp - 0x18]
xor rcx, rsp
call fcn.14000e9e0
lea r11, [rsp + 0x110]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.14001a598
nop
call fcn.140001530
nop
call fcn.140001530
nop
call fcn.140001530
int3
call fcn.1400013c0
nop
call fcn.14001a598
nop
call fcn.14001a598
int3
call fcn.140001530
int3
call fcn.14001a598
nop
call fcn.14001a598
nop
call fcn.14001a598
nop
call fcn.14001a598
nop
call fcn.14001a598
int3