Function at 0x1003f480
Capabilities:
Check if file exists
Get file attributes
Get session user name
Link many functions at runtime
Query environment variable

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1830
call fcn.1007ef50
push esi
push edi
push ecx
lea edi, [ebp - 0x1830]
mov ecx, 0x60c
mov eax, 0xcccccccc
rep stosd dword es:[edi], eax
pop ecx
mov eax, dword [0x10159140]
xor eax, ebp
mov dword [ebp - 4], eax
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 8]
cmp dword [eax], 0
jne 0x1003f4bf
xor eax, eax
jmp 0x1003fab3
mov esi, esp
push 0x1000
lea ecx, [ebp - 0x100c]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
cmp esi, esp
call fcn.1007e7c0
test eax, eax
jbe 0x1003f613
push str..local
lea edx, [ebp - 0x100c]
push edx
call fcn.1003ea10
add esp, 8
mov esi, esp
lea eax, [ebp - 0x100c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp esi, esp
call fcn.1007e7c0
cmp eax, 0xffffffff
jne 0x1003f613
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x2d0], 0
jne 0x1003f595
mov esi, esp
push 0x1000
lea edx, [ebp - 0x100c]
push edx
push str.ProgramFiles
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
cmp esi, esp
call fcn.1007e7c0
test eax, eax
jbe 0x1003f595
push str.Debugging_Tools_for_Windows__x86_dbghelp.dll
lea eax, [ebp - 0x100c]
push eax
call fcn.1003ea10
add esp, 8
mov esi, esp
lea ecx, [ebp - 0x100c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp esi, esp
call fcn.1007e7c0
cmp eax, 0xffffffff
je 0x1003f595
mov esi, esp
lea edx, [ebp - 0x100c]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp esi, esp
call fcn.1007e7c0
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x2d0], eax
mov edx, dword [ebp - 8]
cmp dword [edx + 0x2d0], 0
jne 0x1003f613
mov esi, esp
push 0x1000
lea eax, [ebp - 0x100c]
push eax
push str.ProgramFiles
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
cmp esi, esp
call fcn.1007e7c0
test eax, eax
jbe 0x1003f613
push str.Debugging_Tools_for_Windowsdbghelp.dll
lea ecx, [ebp - 0x100c]
push ecx
call fcn.1003ea10
add esp, 8
mov esi, esp
lea edx, [ebp - 0x100c]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp esi, esp
call fcn.1007e7c0
cmp eax, 0xffffffff
je 0x1003f613
mov esi, esp
lea eax, [ebp - 0x100c]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp esi, esp
call fcn.1007e7c0
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x2d0], eax
mov edx, dword [ebp - 8]
cmp dword [edx + 0x2d0], 0
jne 0x1003f63c
mov esi, esp
push str.dbghelp.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp esi, esp
call fcn.1007e7c0
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x2d0], eax
mov edx, dword [ebp - 8]
cmp dword [edx + 0x2d0], 0
jne 0x1003f64f
xor eax, eax
jmp 0x1003fab3
mov esi, esp
push str.SymInitialize
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2f4], eax
mov esi, esp
push str.SymCleanup
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2d8], eax
mov esi, esp
push str.StackWalk64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x300], eax
mov esi, esp
push str.SymGetOptions
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2ec], eax
mov esi, esp
push str.SymSetOptions
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2fc], eax
mov esi, esp
push str.SymFunctionTableAccess64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2dc], eax
mov esi, esp
push str.SymGetLineFromAddr64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2e0], eax
mov esi, esp
push str.SymGetModuleBase64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2e4], eax
mov esi, esp
push str.SymGetModuleInfo64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2e8], eax
mov esi, esp
push str.SymGetSymFromAddr64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2f0], eax
mov esi, esp
push str.UnDecorateSymbolName
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x304], eax
mov esi, esp
push str.SymLoadModule64
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2f8], eax
mov esi, esp
push str.SymGetSearchPath
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2d0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp esi, esp
call fcn.1007e7c0
mov edx, dword [ebp - 8]
mov dword [edx + 0x308], eax
mov eax, dword [ebp - 8]
cmp dword [eax + 0x2d8], 0
je 0x1003f8ce
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x2dc], 0
je 0x1003f8ce
mov edx, dword [ebp - 8]
cmp dword [edx + 0x2e4], 0
je 0x1003f8ce
mov eax, dword [ebp - 8]
cmp dword [eax + 0x2e8], 0
je 0x1003f8ce
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x2ec], 0
je 0x1003f8ce
mov edx, dword [ebp - 8]
cmp dword [edx + 0x2f0], 0
je 0x1003f8ce
mov eax, dword [ebp - 8]
cmp dword [eax + 0x2f4], 0
je 0x1003f8ce
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x2fc], 0
je 0x1003f8ce
mov edx, dword [ebp - 8]
cmp dword [edx + 0x300], 0
je 0x1003f8ce
mov eax, dword [ebp - 8]
cmp dword [eax + 0x304], 0
je 0x1003f8ce
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x2f8], 0
jne 0x1003f908
mov esi, esp
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x2d0]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp esi, esp
call fcn.1007e7c0
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x2d0], 0
mov edx, dword [ebp - 8]
mov dword [edx + 0x2d8], 0
xor eax, eax
jmp 0x1003fab3
mov esi, esp
push 0
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x2d4]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2f4]
call ecx
cmp esi, esp
call fcn.1007e7c0
test eax, eax
jne 0x1003f963
mov esi, esp
push 0
push 0
mov edi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp edi, esp
call fcn.1007e7c0
push eax
push str.SymInitialize
mov edx, dword [ebp - 8]
mov eax, dword [edx]
mov ecx, dword [ebp - 8]
mov edx, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp esi, esp
call fcn.1007e7c0
mov ecx, dword [ebp - 8]
mov esi, esp
mov edx, dword [ecx + 0x2ec]
call edx
cmp esi, esp
call fcn.1007e7c0
mov dword [ebp - 0x1014], eax
mov eax, dword [ebp - 0x1014]
or eax, 0x10
mov dword [ebp - 0x1014], eax
mov ecx, dword [ebp - 0x1014]
or ecx, 0x200
mov dword [ebp - 0x1014], ecx
mov esi, esp
mov edx, dword [ebp - 0x1014]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x2fc]
call ecx
cmp esi, esp
call fcn.1007e7c0
mov dword [ebp - 0x1014], eax
push 0x400
push 0
lea edx, [ebp - 0x1418]
push edx
call fcn.100823d0
add esp, 0xc
mov eax, dword [ebp - 8]
cmp dword [eax + 0x308], 0
je 0x1003fa42
mov esi, esp
push 0x400
lea ecx, [ebp - 0x1418]
push ecx
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x2d4]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x308]
call edx
cmp esi, esp
call fcn.1007e7c0
test eax, eax
jne 0x1003fa42
mov esi, esp
push 0
push 0
mov edi, esp
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp edi, esp
call fcn.1007e7c0
push eax
push str.SymGetSearchPath
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
mov edx, dword [ebp - 8]
mov eax, dword [ecx]
mov ecx, dword [edx]
mov edx, dword [eax + 0x10]
call edx
cmp esi, esp
call fcn.1007e7c0
push 0x400
push 0
lea eax, [ebp - 0x1820]
push eax
call fcn.100823d0
add esp, 0xc
mov dword [ebp - 0x182c], 0x400
mov esi, esp
lea ecx, [ebp - 0x182c]
push ecx
lea edx, [ebp - 0x1820]
push edx
call dword [sym.imp.ADVAPI32.dll_GetUserNameA]
cmp esi, esp
call fcn.1007e7c0
mov esi, esp
lea eax, [ebp - 0x1820]
push eax
mov ecx, dword [ebp - 0x1014]
push ecx
lea edx, [ebp - 0x1418]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
mov edx, dword [ebp - 8]
mov eax, dword [ecx]
mov ecx, dword [edx]
mov edx, dword [eax + 4]
call edx
cmp esi, esp
call fcn.1007e7c0
mov eax, 1
push edx
mov ecx, ebp
push eax
lea edx, [0x1003fae4]
call fcn.1007e760
pop eax
pop edx
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1007e0c0
add esp, 0x1830
cmp ebp, esp
call fcn.1007e7c0
mov esp, ebp
pop ebp
ret 4