Function at 0x10017dab
Capabilities:
Check if file exists
Create directory
Query environment variable

Disassembly:
push 0x494
mov eax, 0x100bda0b
call fcn.1008b701
mov edi, ecx
mov esi, str.TxdlService.exe
lea ebx, [edi + 0x3c]
push esi
call fcn.10001a38
pop ecx
push eax
push esi
mov ecx, ebx
call fcn.10001dcf
push 0x100f0494
lea esi, [edi + 0x6c]
call fcn.10001a38
pop ecx
push eax
push 0x100f0494
mov ecx, esi
call fcn.10001dcf
lea ecx, [ebp - 0x428]
call fcn.1001add1
and dword [ebp - 4], 0
lea ecx, [ebp - 0x488]
push dword [eax]
call fcn.100028b0
mov ecx, dword [ebp - 0x428]
lea ecx, [ecx - 0x10]
call fcn.100018e3
and dword [ebp - 0x460], 0
xor eax, eax
mov dword [ebp - 0x45c], 7
mov word [ebp - 0x470], ax
mov byte [ebp - 4], 3
call fcn.10018ae4
add eax, 4
lea edx, [ebp - 0x470]
push 0x100d0a34
push edx
push str.ServiceExeName
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [ebp - 0x460], 0
je 0x10017e75
lea eax, [ebp - 0x470]
cmp ebx, eax
je 0x10017e75
push 0xffffffffffffffff
push 0
push eax
mov ecx, ebx
call fcn.10001b7f
and dword [ebp - 0x448], 0
xor eax, eax
mov dword [ebp - 0x444], 7
mov word [ebp - 0x458], ax
mov byte [ebp - 4], 4
call fcn.10018ae4
add eax, 4
lea edx, [ebp - 0x458]
push 0x100d0a34
push edx
push str.ServiceInstallName
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [ebp - 0x448], 0
je 0x10017ed1
lea eax, [ebp - 0x458]
cmp esi, eax
je 0x10017ed1
push 0xffffffffffffffff
push 0
push eax
mov ecx, esi
call fcn.10001b7f
xor esi, esi
mov dword [ebp - 0x42c], 7
xor eax, eax
mov dword [ebp - 0x430], esi
mov word [ebp - 0x440], ax
mov byte [ebp - 4], 5
call fcn.10018ae4
add eax, 4
lea edx, [ebp - 0x440]
push 0x100d0a34
push edx
push str.ServiceExeDir
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [ebp - 0x430], esi
je 0x10017fd5
mov dword [ebp - 0x428], esi
call fcn.100017c6
push eax
lea ecx, [ebp - 0x428]
call fcn.10001562
push 0x412
lea eax, [ebp - 0x424]
mov byte [ebp - 4], 6
push esi
push eax
call fcn.1008df10
add esp, 0xc
lea ecx, [ebp - 0x424]
cmp dword [ebp - 0x42c], 8
lea eax, [ebp - 0x440]
cmovae eax, dword [ebp - 0x440]
push 0x208
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
lea eax, [ebp - 0x424]
push eax
call esi
test eax, eax
lea eax, [ebp - 0x424]
jne 0x10017fa9
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
lea eax, [ebp - 0x424]
push eax
call esi
test eax, eax
je 0x10017fc3
lea eax, [ebp - 0x424]
push eax
call fcn.10001a38
pop ecx
push eax
lea eax, [ebp - 0x424]
push eax
lea ecx, [ebp - 0x488]
call fcn.10001dcf
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x428]
add ecx, 0xfffffff0
call fcn.100018e3
push ecx
lea edx, [ebp - 0x488]
lea ecx, [ebp - 0x4a0]
call fcn.10016a0e
pop ecx
push eax
lea ecx, [edi + 0x54]
call fcn.1000283a
push 0
push 1
lea ecx, [ebp - 0x4a0]
call fcn.10001f43
push 0xffffffffffffffff
push 0
push ebx
lea ecx, [edi + 0x54]
call fcn.10002a95
xor ebx, ebx
cmp dword [edi + 0x4c], ebx
je 0x10018023
cmp dword [edi + 0x7c], ebx
je 0x10018023
cmp dword [edi + 0x64], ebx
je 0x10018023
xor esi, esi
inc esi
jmp 0x10018025
mov esi, ebx
push ebx
push 1
lea ecx, [ebp - 0x440]
call fcn.10001f43
push ebx
push 1
lea ecx, [ebp - 0x458]
call fcn.10001f43
push ebx
push 1
lea ecx, [ebp - 0x470]
call fcn.10001f43
push ebx
push 1
lea ecx, [ebp - 0x488]
call fcn.10001f43
mov eax, esi
call fcn.1008b6ab
ret