Function at 0x14003d194
Capabilities:
Check if file exists
Create directory

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x68]
sub rsp, 0x140
mov r15, r8
mov r14, rdx
mov r12, rcx
xor edi, edi
test rdx, rdx
je 0x14003db84
test r8, r8
je 0x14003db84
test r9, r9
je 0x14003db84
mov rsi, qword [rbp + 0x90]
test rsi, rsi
je 0x14003db84
mov r13, qword [rbp + 0xa8]
test r13, r13
je 0x14003db84
mov word [r13], di
mov rdx, r9
lea rcx, [rsp + 0x70]
call fcn.140009580
nop
lea rbx, [r12 + 0x10]
lea rdx, [rsp + 0x70]
mov rcx, rbx
call fcn.140009900
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d242
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rcx, qword [rbx]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x14003db7d
mov rcx, qword [rbx]
call qword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x14003db7d
mov rdi, qword [rbx]
mov rcx, rdi
call qword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
xor ecx, ecx
cmp word [rax], cx
je 0x14003db7d
sub rax, rdi
sar rax, 1
cmp eax, 0xffffffff
je 0x14003db7d
mov rcx, qword [rbx]
mov r9d, dword [rcx - 0x10]
sub r9d, eax
mov r8d, eax
lea rdx, [rsp + 0x50]
mov rcx, rbx
call fcn.140009428
nop
lea rdx, str..config
or rax, 0xffffffffffffffff
xor ecx, ecx
inc rax
cmp word [rdx + rax*2], cx
jne 0x14003d2b2
mov r8d, eax
lea rcx, [rsp + 0x50]
call fcn.1400097e8
lea rdi, [r12 + 0x18]
mov rdx, rbx
mov rcx, rdi
call fcn.140009900
mov rcx, rdi
call fcn.140009184
test eax, eax
jne 0x14003d2ee
mov esi, 0x8000ffff
jmp 0x14003db59
mov rcx, qword [rdi]
sub rcx, 0x18
call fcn.14000a2b4
lea rbx, [rax + 0x18]
mov qword [rbp - 0x60], rbx
lea rdx, [rbp - 0x60]
lea rcx, [0x140092288]
call fcn.140009900
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d32d
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsp + 0x50]
mov rcx, rdi
call fcn.140009210
test eax, eax
jne 0x14003d348
mov esi, 0x8007000e
jmp 0x14003db59
mov qword [r12], r14
mov al, byte [rbp + 0x98]
mov byte [r12 + 0x28], al
mov al, byte [rbp + 0xa0]
mov byte [r12 + 0x29], al
or rax, 0xffffffffffffffff
xor r14d, r14d
inc rax
cmp word [rsi + rax*2], r14w
jne 0x14003d369
mov r8d, eax
mov rdx, rsi
lea rcx, [r12 + 8]
call fcn.14000a350
call fcn.140002dfc
mov rcx, rax
test rax, rax
je 0x14003dbb5
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
cmp byte [r12 + 0x29], r14b
je 0x14003d3df
lea r8, [rsp + 0x30]
mov rdx, qword [rsp + 0x50]
mov rcx, r12
call fcn.14003e710
mov esi, eax
xor r15d, r15d
test eax, eax
js 0x14003db39
xor r8d, r8d
xor edx, edx
lea rcx, str.Configuration_is_Volatile.
call fcn.1400320c8
jmp 0x14003d471
mov qword [rsp + 0x60], r14
lea r8, [rsp + 0x60]
mov rdx, r15
mov ecx, 0x1c
call fcn.14005de40
mov esi, eax
xor r15d, r15d
test eax, eax
js 0x14003d456
mov rdx, qword [rsp + 0x60]
lea rcx, [rsp + 0x78]
call fcn.140009580
nop
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x30]
call fcn.140009900
nop
mov rdx, qword [rsp + 0x78]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d43e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsp + 0x50]
lea rcx, [rsp + 0x30]
call fcn.140009210
test eax, eax
jne 0x14003d466
mov esi, 0x8007000e
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x14003db39
mov rcx, qword [rsp + 0x60]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, [0x140073508]
lea rcx, [rbp - 0x80]
call fcn.140009580
nop
lea rdx, [rbp - 0x80]
lea rcx, [r12 + 8]
call fcn.140037d04
nop
mov rdx, qword [rbp - 0x80]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d4af
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov r14d, r15d
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x14003d510
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x14003d510
cmp byte [r12 + 0x28], r15b
jne 0x14003d510
lea rax, [rbp - 0x50]
mov qword [rsp + 0x20], rax
mov rdx, rbx
call fcn.14003e5b8
test al, al
je 0x14003d64a
lea rax, [rbp - 0x58]
mov qword [rsp + 0x20], rax
mov rdx, qword [rdi]
call fcn.14003e5b8
test al, al
je 0x14003d64a
mov rax, qword [rbp - 0x58]
cmp qword [rbp - 0x50], rax
jae 0x14003d64a
mov rcx, r12
call fcn.14003e62c
mov esi, eax
test eax, eax
js 0x14003db39
mov rcx, r12
call fcn.14003dbc0
mov esi, eax
test eax, eax
js 0x14003db39
mov rcx, r12
call fcn.14003e134
mov esi, eax
test eax, eax
js 0x14003db39
mov rcx, r12
call fcn.14003e270
mov esi, eax
test eax, eax
js 0x14003db39
mov esi, 0x8000ffff
cmp qword [rsp + 0x30], r15
jne 0x14003d56f
mov r14d, 0x80070057
jmp 0x14003d60f
mov qword [rbp + 0x78], r15
lea rax, [rbp + 0x78]
mov qword [rsp + 0x20], rax
lea r9, [0x14007c060]
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [0x14007c050]
call qword [sym.imp.ole32.dll_CoCreateInstance]
mov r14d, eax
test eax, eax
js 0x14003d600
mov rbx, qword [rbp + 0x78]
mov qword [rbp - 0x20], rbx
test rbx, rbx
je 0x14003d5b4
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rcx, str.UTF_8
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rdi, rax
mov qword [rbp - 0x18], rax
test rax, rax
je 0x14003dbaa
mov rax, qword [rbx]
or edx, 0xffffffff
mov rcx, rbx
call qword [rax + 0x68]
mov r14d, eax
test eax, eax
jns 0x14003d6a9
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
lea rdi, [r12 + 0x18]
mov rcx, qword [rbp + 0x78]
test rcx, rcx
je 0x14003d60f
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov r8, qword [rsp + 0x30]
mov edx, r14d
lea rcx, str.Error_merging_configuration_file
call fcn.140032190
lea r8, [rsp + 0x30]
mov rdx, qword [rsp + 0x50]
mov rcx, r12
call fcn.14003e710
test eax, eax
jns 0x14003d55d
mov rdx, rdi
lea rcx, [rsp + 0x30]
call fcn.140009900
lea rax, [r12 + 0x20]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r15
xor r9d, r9d
lea edx, [r9 + 0x40]
lea r8d, [rdx + 0x40]
mov rbx, qword [rsp + 0x30]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_SHCreateStreamOnFileEx]
mov dword [rbp + 0xb0], eax
mov r8, rbx
xor edx, edx
lea rcx, str.Configuration_file_to_be_used_for_CLR_initialization
call fcn.1400320c8
movsxd r8, dword [rbx - 0x10]
cmp r8, 0x7ffffffe
jbe 0x14003dae0
mov esi, 0x80070057
mov word [r13], r15w
jmp 0x14003db39
mov rax, qword [rbx]
mov rdx, rdi
mov rcx, rbx
call qword [rax + 0x48]
mov r14d, eax
mov rcx, rdi
test eax, eax
js 0x14003d5eb
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov qword [rsp + 0x40], r15
lea rax, [r12 + 0x60]
mov qword [rbp - 0x48], rax
lea rax, [r12 + 0x30]
mov qword [rbp - 0x40], rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x20], rax
lea r8, [rbp - 0x48]
lea rdx, [rbp - 0x40]
lea rcx, [rbp + 0x78]
call fcn.14003f1cc
mov r14d, eax
test eax, eax
jns 0x14003d735
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003d71d
mov rdx, qword [rcx]
call qword [rdx + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rbp + 0x78]
test rcx, rcx
je 0x14003d84e
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003d84e
mov qword [rsp + 0x38], r15
mov rdi, qword [rsp + 0x40]
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
lea r9, [0x14007c080]
xor edx, edx
lea r8d, [rdx + 1]
lea rcx, [0x14007c070]
call qword [sym.imp.ole32.dll_CoCreateInstance]
mov r14d, eax
test eax, eax
js 0x14003d7a4
mov rbx, qword [rsp + 0x38]
mov qword [rbp - 0x10], rbx
test rbx, rbx
je 0x14003d782
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
test rdi, rdi
je 0x14003d7ce
mov rax, qword [rbx]
mov rdx, rdi
mov rcx, rbx
call qword [rax + 0x50]
mov r14d, eax
test eax, eax
jns 0x14003d7ce
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14003d7b5
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003d71d
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003d71d
test rbx, rbx
je 0x14003d7dc
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov rdx, qword [rsp + 0x30]
lea rcx, [rsp + 0x68]
call fcn.140009580
nop
lea rcx, [rsp + 0x68]
call fcn.140009184
test eax, eax
jne 0x14003d858
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d81a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14003d82b
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003d83c
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rbp + 0x78]
test rcx, rcx
je 0x14003d84b
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
mov r14d, esi
lea rdi, [r12 + 0x18]
jmp 0x14003d60f
mov rbx, qword [rsp + 0x68]
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
test eax, eax
je 0x14003d870
lea rdx, [rbx - 0x18]
jmp 0x14003d803
mov rcx, rbx
call qword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x14003d8c4
xor r8d, r8d
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
movzx r14d, ax
or r14d, 0x80070000
test eax, eax
cmovle r14d, eax
test r14d, r14d
jns 0x14003d8c4
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d7a4
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
jmp 0x14003d7a4
mov qword [rsp + 0x48], r15
lea rax, [rsp + 0x48]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r15
mov edx, 0x1022
mov r9d, 1
lea r8d, [r9 + 0x7f]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.SHLWAPI.dll_SHCreateStreamOnFileEx]
mov r14d, eax
test eax, eax
jns 0x14003d90b
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003d8a1
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003d8a1
mov eax, SafeArrayGetDim
mov word [rbp - 0x78], ax
mov rcx, qword [rsp + 0x48]
mov qword [rbp - 0x70], rcx
test rcx, rcx
je 0x14003d929
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
movups xmm0, xmmword [rbp - 0x78]
movaps xmmword [rbp], xmm0
movsd xmm1, qword [rbp - 0x68]
movsd qword [rbp + 0x10], xmm1
mov rcx, qword [rbp + 0x78]
mov rax, qword [rcx]
lea rdx, [rbp]
call qword [rax + 0x38]
mov r14d, eax
test eax, eax
jns 0x14003d95c
lea rcx, [rbp - 0x78]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x14003d8f9
mov qword [rsp + 0x58], r15
lea rax, [rsp + 0x58]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], r15
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rdi, [r12 + 0x18]
mov rcx, qword [rdi]
call qword [sym.imp.SHLWAPI.dll_SHCreateStreamOnFileEx]
mov r14d, eax
test eax, eax
jns 0x14003d9ff
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x14003d99e
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
lea rcx, [rbp - 0x78]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003d9ba
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003d9d5
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14003d9e6
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003d600
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003d600
mov eax, SafeArrayGetDim
mov word [rbp - 0x38], ax
mov rcx, qword [rsp + 0x58]
mov qword [rbp - 0x30], rcx
test rcx, rcx
je 0x14003da1d
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
movups xmm0, xmmword [rbp - 0x38]
movaps xmmword [rbp + 0x20], xmm0
movsd xmm1, qword [rbp - 0x28]
movsd qword [rbp + 0x30], xmm1
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rbp + 0x20]
call qword [rax + 0x98]
mov r14d, eax
lea rcx, [rbp - 0x38]
test eax, eax
jns 0x14003da57
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
jmp 0x14003d98d
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x14003da6f
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
lea rcx, [rbp - 0x78]
call qword [sym.imp.OLEAUT32.dll_VariantCopy]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003da8b
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
lea rdx, [rbx - 0x18]
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003daa6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14003dab7
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x14003dac8
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
nop
mov rcx, qword [rbp + 0x78]
test rcx, rcx
je 0x14003d64a
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
jmp 0x14003d64a
mov ecx, 0x104
mov rdx, qword [rsp + 0x30]
sub rdx, r13
lea rax, [r8 - 0x104]
add rax, rcx
je 0x14003db12
movzx eax, word [rdx + r13]
test ax, ax
je 0x14003db12
mov word [r13], ax
add r13, 2
sub rcx, 1
jne 0x14003daed
lea rax, [r13 - 2]
test rcx, rcx
cmovne rax, r13
mov word [rax], r15w
mov rax, rcx
neg rax
sbb esi, esi
not esi
and esi, 0x8007007a
test rcx, rcx
je 0x14003db39
mov esi, r14d
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
or eax, 0xffffffff
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14003db59
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
or ecx, 0xffffffff
lock xadd dword [rdx + 0x10], ecx
sub ecx, 1
jg 0x14003db79
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, esi
jmp 0x14003db89
mov eax, 0x80070057
jmp 0x14003db89
mov eax, 0x80004003
lea r11, [rsp + 0x140]
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
mov ecx, 0x8007000e
call fcn.140002fa4
nop
mov ecx, 0x80004005
call fcn.140002fa4
int3