Function at 0x18001db40
Capabilities:
Check if file exists

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x230]
sub rsp, 0x330
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rsp + 0x388], rbx
mov rax, qword [0x180146748]
xor rax, rsp
mov qword [rbp + 0x220], rax
mov qword [rsp + 0x50], r8
mov r15, rdx
mov qword [rsp + 0x48], rdx
mov rsi, rcx
xor r12d, r12d
mov r14d, r12d
mov rdi, qword [rdx + 8]
mov rbx, qword [rdx]
lea r13, [r12 - 1]
cmp rbx, rdi
je 0x18001dbd9
nop dword [rax]
nop dword [rax + rax]
mov rdx, qword [rbx]
sub rdx, 0x18
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x18001dbcd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
add rbx, 8
cmp rbx, rdi
jne 0x18001dbb0
mov rbx, qword [r15]
mov qword [r15 + 8], rbx
lea rdx, [rsp + 0x40]
mov rcx, rsi
call fcn.18001d9f0
nop
call fcn.18000a3f0
mov rcx, rax
test rax, rax
je 0x18001e61a
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
mov rdi, qword [rsi + 0x68]
mov rsi, qword [rsp + 0x40]
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x104
or eax, ecx
jge 0x18001dc3c
mov edx, 0x104
lea rcx, [rsp + 0x38]
call fcn.18000b0d0
mov rbx, qword [rsp + 0x38]
cmp dword [rbx - 0xc], 0x104
jl 0x18001e625
mov dword [rbx - 0x10], 0x104
mov word [rbx + 0x208], r12w
mov r8, rdi
mov rdx, rsi
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1800bf270
test eax, eax
js 0x18001e60f
cmp eax, dword [rbx - 0xc]
jg 0x18001e60f
mov dword [rbx - 0x10], eax
cdqe
mov word [rbx + rax*2], r12w
cmp dword [rbx - 0x10], 0
je 0x18001e5a2
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x18001e5a2
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x18001e5a2
mov dword [rsp + 0x20], 1
lea r9d, [rax + 0x40]
lea r8d, [rax + 1]
mov rdx, rbx
lea rcx, [rsp + 0x60]
call fcn.18001c930
nop
mov qword [rbp + 0xb8], r12
mov qword [rbp + 0xc0], 0xf
mov byte [rbp + 0xa8], 0
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
test byte [rsp + rcx + 0x70], 6
jne 0x18001e439
nop word [rax + rax]
lea rax, [rsp + 0x60]
add rcx, rax
mov dl, 0xa
call fcn.18001fb10
movzx r8d, al
lea rdx, [rbp + 0xa8]
lea rcx, [rsp + 0x60]
call fcn.18001c390
lea rbx, [rbp + 0xa8]
mov r15, qword [rbp + 0xc0]
cmp r15, 0x10
mov r12, qword [rbp + 0xa8]
cmovae rbx, r12
mov r14, qword [rbp + 0xb8]
cmp r14, 0xb
jb 0x18001ddbc
lea rsi, [rbx + r14]
lea r8, [rsi - 0xa]
sub r8, rbx
mov edx, 0x68
mov rcx, rbx
call fcn.1800bc1d0
mov rdi, rax
test rax, rax
je 0x18001ddbc
nop
mov r8d, 0xb
lea rdx, str.homepages_
mov rcx, rdi
call fcn.1800bb810
test eax, eax
je 0x18001de3d
inc rdi
lea r8, [rsi - 0xa]
sub r8, rdi
mov edx, 0x68
mov rcx, rdi
call fcn.1800bc1d0
mov rdi, rax
test rax, rax
jne 0x18001dd80
lea rbx, [rbp + 0xa8]
cmp r15, 0x10
cmovae rbx, r12
cmp r14, 0xa
jb 0x18001de55
lea rsi, [rbx + r14]
lea r8, [rsi - 9]
sub r8, rbx
mov edx, 0x68
mov rcx, rbx
call fcn.1800bc1d0
mov rdi, rax
test rax, rax
je 0x18001de38
nop word [rax + rax]
mov r8d, 0xa
lea rdx, str.homepage_
mov rcx, rdi
call fcn.1800bb810
test eax, eax
je 0x18001de50
inc rdi
lea r8, [rsi - 9]
sub r8, rdi
mov edx, 0x68
mov rcx, rdi
call fcn.1800bc1d0
mov rdi, rax
test rax, rax
jne 0x18001de00
mov rdi, r13
jmp 0x18001de66
sub rdi, rbx
cmp rdi, 0xffffffffffffffff
je 0x18001ddbc
add rdi, 0xb
jmp 0x18001de66
sub rdi, rbx
jmp 0x18001de58
mov rdi, r13
cmp rdi, 0xffffffffffffffff
je 0x18001e236
add rdi, 0xa
cmp rdi, 0xffffffffffffffff
je 0x18001e236
lea r15, [rbp + 0xa8]
cmp qword [rbp + 0xc0], 0x10
cmovae r15, r12
cmp r14, 1
jb 0x18001def6
lea rax, [r14 - 1]
cmp rdi, rax
ja 0x18001def6
lea r12, [r15 + r14]
lea rcx, [r15 + rdi]
mov r8, r12
sub r8, rcx
mov edx, 0x22
call fcn.1800bc1d0
mov rsi, rax
test rax, rax
je 0x18001deef
movzx ebx, word [0x1800f6f94]
nop dword [rax]
cmp byte [rsi], bl
jne 0x18001dec8
xor eax, eax
jmp 0x18001decd
sbb eax, eax
or eax, 1
test eax, eax
je 0x18001df4a
inc rsi
mov r8, r12
sub r8, rsi
mov edx, 0x22
mov rcx, rsi
call fcn.1800bc1d0
mov rsi, rax
test rax, rax
jne 0x18001dec0
mov r12, qword [rbp + 0xa8]
mov rsi, r13
lea r15, [rbp + 0xa8]
cmp qword [rbp + 0xc0], 0x10
cmovae r15, r12
cmp r14, 1
jb 0x18001df85
lea rax, [r14 - 1]
cmp rdi, rax
ja 0x18001df85
lea r12, [r15 + r14]
lea rcx, [r15 + rdi]
mov r8, r12
sub r8, rcx
mov edx, 9
call fcn.1800bc1d0
mov rcx, rax
test rax, rax
je 0x18001df7e
movzx ebx, word [0x1800f6f98]
cmp byte [rcx], bl
jne 0x18001df56
xor eax, eax
jmp 0x18001df5b
sub rsi, r15
mov r12, qword [rbp + 0xa8]
jmp 0x18001def9
sbb eax, eax
or eax, 1
test eax, eax
je 0x18001e028
inc rcx
mov r8, r12
sub r8, rcx
mov edx, 9
call fcn.1800bc1d0
mov rcx, rax
test rax, rax
jne 0x18001df42
mov r12, qword [rbp + 0xa8]
mov rcx, r13
cmp rcx, rsi
cmovae rcx, rsi
cmp rcx, 0xffffffffffffffff
cmove rcx, r14
xor r15d, r15d
mov qword [rbp + 0xd8], r15
mov qword [rbp + 0xe0], 0xf
mov byte [rbp + 0xc8], r15b
cmp r14, rdi
jb 0x18001e660
sub rcx, rdi
sub r14, rdi
cmp r14, rcx
cmovb rcx, r14
lea rdx, [rbp + 0xa8]
cmp qword [rbp + 0xc0], 0x10
cmovae rdx, r12
add rdx, rdi
mov r8, rcx
lea rcx, [rbp + 0xc8]
call fcn.18000c180
nop
lea rsi, [rbp + 0xc8]
cmp qword [rbp + 0xe0], 0x10
cmovae rsi, qword [rbp + 0xc8]
lea rax, [rbp + 0x118]
mov qword [rbp + 0x110], rax
test rsi, rsi
jne 0x18001e037
mov ebx, r15d
mov qword [rbp + 0x110], rbx
jmp 0x18001e114
sub rcx, r15
mov r12, qword [rbp + 0xa8]
jmp 0x18001df88
mov rdi, r13
nop word [rax + rax]
inc rdi
cmp byte [rsi + rdi], 0
jne 0x18001e040
inc edi
mov r9d, 0x80
lea r8, [rbp + 0x118]
mov edx, edi
lea rcx, [rbp + 0x110]
call fcn.180007380
mov dword [rsp + 0x28], edi
mov rax, qword [rbp + 0x110]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov r8, rsi
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, r15d
test eax, eax
sete bl
test eax, eax
jne 0x18001e105
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x18001e105
mov dword [rsp + 0x28], r15d
mov qword [rsp + 0x20], r15
mov r9d, edi
mov r8, rsi
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
mov r9d, 0x80
lea r8, [rbp + 0x118]
mov edx, eax
lea rcx, [rbp + 0x110]
call fcn.180007380
mov dword [rsp + 0x28], ebx
mov rax, qword [rbp + 0x110]
mov qword [rsp + 0x20], rax
mov r9d, edi
mov r8, rsi
xor edx, edx
mov ecx, 0xfde9
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, r15d
test eax, eax
sete bl
test ebx, ebx
jne 0x18001e641
mov rbx, qword [rbp + 0x110]
call fcn.18000a3f0
test rax, rax
je 0x18001e636
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
test rbx, rbx
je 0x18001e160
cmp rbx, 0x10000
jae 0x18001e151
movzx edx, bx
lea rcx, [rsp + 0x30]
call fcn.18000af40
jmp 0x18001e174
mov rax, r13
inc rax
cmp word [rbx + rax*2], 0
jne 0x18001e154
jmp 0x18001e163
mov eax, r15d
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x30]
call fcn.18000b310
nop
lea rax, [rbp + 0x118]
mov rcx, qword [rbp + 0x110]
cmp rcx, rax
je 0x18001e18c
call fcn.1800bea88
mov rsi, qword [rsp + 0x48]
mov rdi, qword [rsi + 8]
cmp qword [rsi + 0x10], rdi
je 0x18001e1b7
mov rbx, qword [rsp + 0x30]
lea rcx, [rbx - 0x18]
call fcn.1800099e0
add rax, 0x18
mov qword [rdi], rax
add qword [rsi + 8], 8
jmp 0x18001e1cc
lea r8, [rsp + 0x30]
mov rdx, rdi
mov rcx, rsi
call fcn.1800074e0
mov rbx, qword [rsp + 0x30]
lea rdx, [rbx - 0x18]
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x18001e1e7
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rbp + 0xe0]
cmp rdx, 0x10
jb 0x18001e228
inc rdx
mov rcx, qword [rbp + 0xc8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001e223
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18001e630
call fcn.18008c16c
mov r12, qword [rbp + 0xa8]
mov r14, qword [rbp + 0xb8]
lea rdi, [rbp + 0xa8]
cmp qword [rbp + 0xc0], 0x10
cmovae rdi, r12
cmp r14, 0x10
jb 0x18001e41d
lea rsi, [rdi + r14]
lea r8, [rsi - 0xf]
sub r8, rdi
mov edx, 0x68
mov rcx, rdi
call fcn.1800bc1d0
mov rbx, rax
test rax, rax
je 0x18001e41d
nop word [rax + rax]
mov r8d, 0x10
lea rdx, str.homepagetype50_
mov rcx, rbx
call fcn.1800bb810
test eax, eax
je 0x18001e2bd
inc rbx
lea r8, [rsi - 0xf]
sub r8, rbx
mov edx, 0x68
mov rcx, rbx
call fcn.1800bc1d0
mov rbx, rax
test rax, rax
jne 0x18001e280
jmp 0x18001e41d
sub rbx, rdi
cmp rbx, 0xffffffffffffffff
je 0x18001e41d
lea r15, [rbx + 0x10]
lea rdi, [rbp + 0xa8]
mov rdx, qword [rbp + 0xc0]
cmp rdx, 0x10
cmovae rdi, r12
cmp r14, 1
jb 0x18001e357
lea rax, [r14 - 1]
cmp r15, rax
ja 0x18001e357
lea rsi, [rdi + r14]
lea rcx, [rdi + r15]
mov r8, rsi
sub r8, rcx
mov edx, 0x22
call fcn.1800bc1d0
mov rcx, rax
test rax, rax
je 0x18001e350
movzx ebx, word [0x1800f6f94]
nop word [rax + rax]
cmp byte [rcx], bl
jne 0x18001e328
xor eax, eax
jmp 0x18001e32d
sbb eax, eax
or eax, 1
test eax, eax
je 0x18001e48c
inc rcx
mov r8, rsi
sub r8, rcx
mov edx, 0x22
call fcn.1800bc1d0
mov rcx, rax
test rax, rax
jne 0x18001e320
mov rdx, qword [rbp + 0xc0]
mov rcx, r13
cmp rcx, 0xffffffffffffffff
je 0x18001e41d
mov qword [rbp + 0xf8], 0
mov qword [rbp + 0x100], 0xf
mov byte [rbp + 0xe8], 0
cmp r14, r15
jb 0x18001e66c
sub rcx, r15
sub r14, r15
cmp r14, rcx
cmovb rcx, r14
lea rax, [rbp + 0xa8]
cmp rdx, 0x10
cmovae rax, r12
lea rdx, [rax + r15]
mov r8, rcx
lea rcx, [rbp + 0xe8]
call fcn.18000c180
lea rcx, [rbp + 0xe8]
cmp qword [rbp + 0x100], 0x10
cmovae rcx, qword [rbp + 0xe8]
call fcn.1800c3fac
mov rcx, qword [rsp + 0x50]
mov dword [rcx], eax
mov rdx, qword [rbp + 0x100]
cmp rdx, 0x10
jb 0x18001e41d
inc rdx
mov rcx, qword [rbp + 0xe8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001e418
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18001e666
call fcn.18008c16c
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
test byte [rsp + rcx + 0x70], 6
je 0x18001dd10
mov rbx, qword [rsp + 0x38]
xor r12d, r12d
lea rcx, [rsp + 0x70]
call fcn.18001ee30
test rax, rax
jne 0x18001e49b
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
mov eax, 6
mov edx, 2
cmp qword [rbp + rcx - 0x58], 0
cmovne eax, edx
or eax, dword [rsp + rcx + 0x70]
and eax, 0x17
mov dword [rsp + rcx + 0x70], eax
mov edx, dword [rsp + rcx + 0x74]
and edx, eax
je 0x18001e49b
test dl, 4
je 0x18001e672
lea rbx, str.ios_base::badbit_set
jmp 0x18001e687
sub rcx, rdi
mov rdx, qword [rbp + 0xc0]
jmp 0x18001e35a
mov r14d, 1
mov rdx, qword [rbp + 0xc0]
cmp rdx, 0x10
jb 0x18001e4e2
inc rdx
mov rcx, qword [rbp + 0xa8]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18001e4dd
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18001e609
call fcn.18008c16c
mov qword [rbp + 0xb8], r12
mov qword [rbp + 0xc0], 0xf
mov byte [rbp + 0xa8], 0
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x60], rax
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rsp + rcx + 0x5c], edx
lea rcx, [rsp + 0x70]
call fcn.18001cd80
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rsp + rcx + 0x60], rax
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rsp + rcx + 0x5c], edx
lea rax, vtable.std::ios_base.0
mov qword [rbp + 0x10], rax
lea rcx, [rbp + 0x10]
call fcn.180061208
nop
lea rdx, [rbx - 0x18]
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x18001e582
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r13d
sub r13d, 1
jg 0x18001e5dc
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
jmp 0x18001e5dc
lea rdx, [rbx - 0x18]
mov eax, r13d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x18001e5bd
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsp + 0x40]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r13d
sub r13d, 1
jg 0x18001e5dc
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [r8 + 8]
mov eax, r14d
mov rcx, qword [rbp + 0x220]
xor rcx, rsp
call fcn.18008c720
mov rbx, qword [rsp + 0x388]
add rsp, 0x330
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call fcn.1800beee8
nop
mov ecx, 0x80070057
call fcn.180009990
nop
mov ecx, 0x80004005
call fcn.180009990
nop
mov ecx, 0x80070057
call fcn.180009990
nop
call fcn.1800beee8
nop
mov ecx, 0x80004005
call fcn.180009990
nop
mov r8d, 0x80
lea rdx, [rbp + 0x118]
mov rcx, qword [rbp + 0x110]
call fcn.180007410
call fcn.1800099c0
nop
call fcn.18000be60
int3
call fcn.1800beee8
int3
call fcn.18000be60
int3
test dl, 2
lea rbx, str.ios_base::failbit_set
lea rax, str.ios_base::eofbit_set
cmove rbx, rax
mov edx, 1
lea rcx, [rbp + 0x70]
call fcn.18000ca20
mov r8, rax
mov rdx, rbx
lea rcx, [rbp + 0x80]
call fcn.180008930
lea rdx, [0x180140490]
lea rcx, [rbp + 0x80]
call fcn.1800bb740
int3