Function at 0x180012240
Capabilities:
Check if file exists

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0xf8]
sub rsp, 0x1d0
mov qword [rsp + 0x48], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1801548a8]
xor rax, rsp
mov qword [rbp + 0xc0], rax
mov r15, rdx
xor r12d, r12d
lea rdx, [rsp + 0x30]
call fcn.180011e50
nop
call fcn.18000a5b0
mov rcx, rax
test rax, rax
je 0x180012b7c
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
mov rdi, qword [rsp + 0x30]
mov ecx, 1
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x104
or eax, ecx
jge 0x1800122de
mov edx, 0x104
lea rcx, [rsp + 0x40]
call fcn.18000b290
mov rbx, qword [rsp + 0x40]
cmp dword [rbx - 0xc], 0x104
jl 0x180012b87
mov dword [rbx - 0x10], 0x104
mov word [rbx + 0x208], r12w
lea r8, str.prefs.js
mov rdx, rdi
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathCombineW]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1800c96c0
test eax, eax
js 0x180012b71
cmp eax, dword [rbx - 0xc]
jg 0x180012b71
mov dword [rbx - 0x10], eax
cdqe
mov word [rbx + rax*2], r12w
cmp dword [rbx - 0x10], 0
je 0x180012af4
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x180012af4
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x180012af4
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rsp + 0x60], xmm0
mov byte [rsp + 0x50], al
lea rdx, [rsp + 0x50]
mov rcx, rbx
call fcn.18005e780
test eax, eax
jne 0x18001241d
mov rdx, qword [rsp + 0x68]
cmp rdx, 0x10
jb 0x1800123c4
inc rdx
mov rcx, qword [rsp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800123bf
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012b92
call fcn.1800965cc
movdqa xmm0, xmmword [0x180100240]
mov byte [rsp + 0x50], 0
movdqu xmmword [rsp + 0x60], xmm0
mov rsi, 0xffffffffffffffff
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1800123f8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x180012b32
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
jmp 0x180012b32
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rbp - 0x80], xmm0
mov byte [rsp + 0x70], 0
lea r13, [rsp + 0x50]
mov rsi, qword [rsp + 0x50]
mov r14, qword [rsp + 0x68]
cmp r14, 0x10
cmovae r13, rsi
mov rax, qword [rsp + 0x60]
cmp rax, 0x1b
jb 0x1800124b9
add rax, 0xffffffffffffffe6
add rax, r13
mov qword [rsp + 0x38], rax
mov r8, rax
sub r8, r13
mov edx, 0x22
mov rcx, r13
call fcn.1800c6620
mov rdi, rax
test rax, rax
je 0x1800124b9
nop dword [rax + rax]
mov r8d, 0x1b
lea rdx, str._browser.startup.homepage__
mov rcx, rdi
call fcn.1800c5c60
test eax, eax
je 0x180012507
inc rdi
mov r8, qword [rsp + 0x38]
sub r8, rdi
mov edx, 0x22
mov rcx, rdi
call fcn.1800c6620
mov rdi, rax
test rax, rax
jne 0x180012480
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rbp - 0x80], xmm0
mov byte [rsp + 0x70], 0
cmp r14, 0x10
jb 0x1800123c4
lea rdx, [r14 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x180012aec
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012b6b
jmp 0x180012aec
sub rdi, r13
cmp rdi, 0xffffffffffffffff
je 0x1800124b9
add rdi, 0x1b
lea r13, [rsp + 0x50]
cmp r14, 0x10
cmovae r13, rsi
mov rax, qword [rsp + 0x60]
cmp rdi, rax
jae 0x180012aab
sub rax, rdi
mov qword [rsp + 0x38], rax
lea rcx, [rdi + r13]
mov r8, rax
mov edx, 0x29
call fcn.1800c6620
mov r8, rax
test rax, rax
je 0x180012aab
sub r8, r13
cmp r8, 0xffffffffffffffff
je 0x180012aab
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rbp - 0x60], xmm0
mov byte [rbp - 0x70], 0
cmp qword [rsp + 0x60], rdi
jb 0x180012b98
sub r8, rdi
cmp qword [rsp + 0x38], r8
cmovb r8, qword [rsp + 0x38]
lea rdx, [rsp + 0x50]
cmp r14, 0x10
cmovae rdx, rsi
add rdx, rdi
lea rcx, [rbp - 0x70]
call fcn.18000c340
mov rdx, qword [rbp - 0x78]
cmp rdx, 0x10
jb 0x1800125e0
inc rdx
mov rcx, qword [rsp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1800125db
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012b9e
call fcn.1800965cc
movups xmm0, xmmword [rbp - 0x70]
movups xmmword [rsp + 0x70], xmm0
movdqu xmm1, xmmword [rbp - 0x60]
movups xmmword [rbp - 0x80], xmm1
lea r13, [rsp + 0x70]
movq rcx, xmm0
psrldq xmm1, 8
movq rax, xmm1
cmp rax, 0x10
cmovae r13, rcx
lea rax, [rbp - 0x48]
mov qword [rbp - 0x50], rax
mov rsi, 0xffffffffffffffff
test r13, r13
jne 0x18001262e
mov rdx, r12
mov qword [rbp - 0x50], rdx
jmp 0x1800126ed
mov r14, rsi
inc r14
cmp byte [r14 + r13], 0
jne 0x180012631
inc r14d
mov r9d, 0x80
lea r8, [rbp - 0x48]
mov edx, r14d
lea rcx, [rbp - 0x50]
call fcn.180007540
mov dword [rsp + 0x28], r14d
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x20], rax
mov r9d, r14d
mov r8, r13
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, r12d
test eax, eax
sete dil
test eax, eax
jne 0x1800126e1
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x1800126e1
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
mov r9d, r14d
mov r8, r13
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
mov r9d, 0x80
lea r8, [rbp - 0x48]
mov edx, eax
lea rcx, [rbp - 0x50]
call fcn.180007540
mov dword [rsp + 0x28], edi
mov rax, qword [rbp - 0x50]
mov qword [rsp + 0x20], rax
mov r9d, r14d
mov r8, r13
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, r12d
test eax, eax
sete dil
test edi, edi
jne 0x180012ba4
mov rdx, qword [rbp - 0x50]
test rdx, rdx
jne 0x1800126f7
mov eax, r12d
jmp 0x18001270a
mov rax, rsi
nop word [rax + rax]
inc rax
cmp word [rdx + rax*2], 0
jne 0x180012700
mov r8d, eax
mov rcx, r15
call fcn.18000b4d0
nop
lea rax, [rbp - 0x48]
mov rcx, qword [rbp - 0x50]
cmp rcx, rax
je 0x180012728
call fcn.1800c8ed8
mov r14, qword [r15]
mov rdi, r12
movzx eax, word [r14]
test ax, ax
je 0x1800127ad
movzx ecx, ax
call fcn.1800c9480
test eax, eax
je 0x180012752
mov rax, r14
test rdi, rdi
cmovne rax, rdi
mov rdi, rax
jmp 0x180012755
mov rdi, r12
add r14, 2
movzx eax, word [r14]
test ax, ax
jne 0x180012737
test rdi, rdi
je 0x1800127ad
mov rdx, qword [r15]
sub rdi, rdx
sar rdi, 1
test edi, edi
js 0x180012bbd
mov ecx, 1
sub ecx, dword [rdx - 8]
mov eax, dword [rdx - 0xc]
sub eax, edi
or eax, ecx
jge 0x180012796
mov edx, edi
mov rcx, r15
call fcn.18000b290
mov rdx, qword [r15]
cmp edi, dword [rdx - 0xc]
jg 0x180012bd3
mov dword [rdx - 0x10], edi
movsxd rcx, edi
mov rax, qword [r15]
mov word [rax + rcx*2], r12w
mov rdi, qword [r15]
movzx ecx, word [rdi]
call fcn.1800c9480
test eax, eax
je 0x1800127d0
nop dword [rax]
add rdi, 2
movzx ecx, word [rdi]
call fcn.1800c9480
test eax, eax
jne 0x1800127c0
mov r14, qword [r15]
cmp rdi, r14
je 0x180012880
sub rdi, r14
sar rdi, 1
mov edx, dword [r14 - 0x10]
test edx, edx
js 0x180012bc8
mov ecx, 1
sub ecx, dword [r14 - 8]
mov eax, dword [r14 - 0xc]
sub eax, edx
or eax, ecx
jge 0x18001280c
mov rcx, r15
call fcn.18000b290
mov r14, qword [r15]
movsxd rax, edi
lea rdx, [r14 + rax*2]
mov ecx, dword [r14 - 0x10]
mov r13d, ecx
sub r13d, edi
lea eax, [r13 + 1]
movsxd r8, eax
add r8, r8
je 0x180012858
test rdx, rdx
jne 0x18001283e
call fcn.1800c9544
mov dword [rax], 0x16
jmp 0x180012be9
lea eax, [rcx + 1]
movsxd rcx, eax
add rcx, rcx
cmp rcx, r8
jb 0x180012bde
mov rcx, r14
call fcn.1800c5d60
test r13d, r13d
js 0x180012bf9
mov rax, qword [r15]
cmp r13d, dword [rax - 0xc]
jg 0x180012bf9
mov dword [rax - 0x10], r13d
movsxd rcx, r13d
mov rax, qword [r15]
mov word [rax + rcx*2], r12w
mov r14, qword [r15]
mov rdi, r12
movzx eax, word [r14]
test ax, ax
je 0x18001290e
movzx edx, ax
lea rcx, [0x180100ebc]
call fcn.1800c6360
test rax, rax
je 0x1800128b3
mov rax, r14
test rdi, rdi
cmovne rax, rdi
mov rdi, rax
jmp 0x1800128b6
mov rdi, r12
add r14, 2
movzx eax, word [r14]
test ax, ax
jne 0x180012890
test rdi, rdi
je 0x18001290e
mov rdx, qword [r15]
sub rdi, rdx
sar rdi, 1
test edi, edi
js 0x180012c04
mov ecx, 1
sub ecx, dword [rdx - 8]
mov eax, dword [rdx - 0xc]
sub eax, edi
or eax, ecx
jge 0x1800128f7
mov edx, edi
mov rcx, r15
call fcn.18000b290
mov rdx, qword [r15]
cmp edi, dword [rdx - 0xc]
jg 0x180012c1a
mov dword [rdx - 0x10], edi
movsxd rcx, edi
mov rax, qword [r15]
mov word [rax + rcx*2], r12w
mov rdi, qword [r15]
movzx eax, word [rdi]
test ax, ax
je 0x180012940
nop dword [rax]
movzx edx, ax
lea rcx, [0x180100ebc]
call fcn.1800c6360
test rax, rax
je 0x180012940
add rdi, 2
movzx eax, word [rdi]
test ax, ax
jne 0x180012920
mov r9, qword [r15]
cmp rdi, r9
je 0x180012a02
sub rdi, r9
sar rdi, 1
mov edx, dword [r9 - 0x10]
test edx, edx
js 0x180012c0f
mov ecx, 1
sub ecx, dword [r9 - 8]
mov eax, dword [r9 - 0xc]
sub eax, edx
or eax, ecx
jge 0x18001297c
mov rcx, r15
call fcn.18000b290
mov r9, qword [r15]
movsxd rax, edi
lea rdx, [r9 + rax*2]
mov ecx, dword [r9 - 0x10]
mov r14d, ecx
sub r14d, edi
lea eax, [r14 + 1]
movsxd r8, eax
add r8, r8
je 0x1800129dd
test r9, r9
jne 0x1800129ae
call fcn.1800c9544
mov dword [rax], 0x16
jmp 0x180012c30
test rdx, rdx
jne 0x1800129c3
call fcn.1800c9544
mov dword [rax], 0x16
jmp 0x180012c30
lea eax, [rcx + 1]
movsxd rcx, eax
add rcx, rcx
cmp rcx, r8
jb 0x180012c25
mov rcx, r9
call fcn.1800c5d60
test r14d, r14d
js 0x180012c46
mov rax, qword [r15]
cmp r14d, dword [rax - 0xc]
jg 0x180012c46
mov dword [rax - 0x10], r14d
movsxd rcx, r14d
mov rax, qword [r15]
mov word [rax + rcx*2], r12w
mov r12d, 1
mov rdx, qword [rbp - 0x78]
cmp rdx, 0x10
jb 0x180012a44
inc rdx
mov rcx, qword [rsp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180012a3f
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012c40
call fcn.1800965cc
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rbp - 0x80], xmm0
mov byte [rsp + 0x70], 0
mov rdx, qword [rsp + 0x68]
cmp rdx, 0x10
jb 0x180012a93
inc rdx
mov rcx, qword [rsp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x180012a8e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012c51
call fcn.1800965cc
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rsp + 0x60], xmm0
mov byte [rsp + 0x50], 0
jmp 0x1800123de
movdqa xmm0, xmmword [0x180100240]
movdqu xmmword [rbp - 0x80], xmm0
mov byte [rsp + 0x70], 0
cmp r14, 0x10
jb 0x1800123c4
lea rdx, [r14 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x180012aec
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180012b65
mov rcx, rsi
jmp 0x1800123bf
lea rdx, [rbx - 0x18]
mov rsi, 0xffffffffffffffff
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x180012b15
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + 8]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x180012b32
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [r8 + 8]
mov eax, r12d
mov rcx, qword [rbp + 0xc0]
xor rcx, rsp
call fcn.180096b80
lea r11, [rsp + 0x1d0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1800c9338
nop
call fcn.1800c9338
int3
mov ecx, 0x80070057
call fcn.180009b50
nop
mov ecx, 0x80004005
call fcn.180009b50
nop
mov ecx, 0x80070057
call fcn.180009b50
int3
call fcn.1800c9338
nop
call fcn.18000c020
int3
call fcn.1800c9338
int3
mov r8d, 0x80
lea rdx, [rbp - 0x48]
mov rcx, qword [rbp - 0x50]
call fcn.1800075d0
call fcn.180009b80
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
call fcn.1800c9544
mov dword [rax], 0x22
call fcn.1800c9318
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
mov ecx, 0x80070057
call fcn.180009b50
int3
call fcn.1800c9544
mov dword [rax], 0x22
call fcn.1800c9318
mov ecx, 0x80070057
call fcn.180009b50
nop
call fcn.1800c9338
nop
mov ecx, 0x80070057
call fcn.180009b50
nop
call fcn.1800c9338
int3