Function at 0x10013880
Capabilities:
Check if file exists
Enumerate files on windows
Get common file path
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x1004f7ce
mov eax, dword fs:[0]
push eax
sub esp, 0x83c
mov eax, dword [0x1006b2c8]
xor eax, esp
mov dword [esp + 0x838], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x1006b2c8]
xor eax, esp
push eax
lea eax, [esp + 0x850]
mov dword fs:[0], eax
mov eax, dword [esp + 0x86c]
mov ebp, dword [esp + 0x860]
mov esi, dword [esp + 0x864]
mov edi, dword [esp + 0x868]
xor ebx, ebx
push 0x206
mov dword [esp + 0x3c], ecx
lea ecx, [esp + 0x64a]
push ebx
push ecx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x68], 1
mov dword [esp + 0x6c], 2
mov dword [esp + 0x38], ebx
mov word [esp + 0x650], bx
call fcn.100376a0
push 0x206
lea edx, [esp + 0x44e]
push ebx
push edx
mov word [esp + 0x454], bx
call fcn.100376a0
add esp, 0x18
push ebx
push 0x100533f4
lea ecx, [esp + 0x98]
mov dword [esp + 0xb0], 7
mov dword [esp + 0xac], ebx
mov word [esp + 0x9c], bx
call fcn.100017e0
push ebx
push 0x100533f4
lea ecx, [esp + 0xb4]
mov dword [esp + 0x860], ebx
mov dword [esp + 0xcc], 7
mov dword [esp + 0xc8], ebx
mov word [esp + 0xb8], bx
call fcn.100017e0
push ebx
push 0x100533f4
lea ecx, [esp + 0xd0]
mov byte [esp + 0x860], 1
mov dword [esp + 0xe8], 7
mov dword [esp + 0xe4], ebx
mov word [esp + 0xd4], bx
call fcn.100017e0
push ebx
push 0x100533f4
lea ecx, [esp + 0x7c]
mov byte [esp + 0x860], 2
mov dword [esp + 0x94], 7
mov dword [esp + 0x90], ebx
mov word [esp + 0x80], bx
call fcn.100017e0
lea eax, [esp + 0x64]
push eax
push edi
push esi
push ebp
mov byte [esp + 0x868], 3
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
lea edi, [ebx + 8]
je 0x1001429a
lea ecx, [esp + 0x138]
call fcn.1000fdc0
push esi
push ebp
lea ecx, [esp + 0x140]
mov byte [esp + 0x860], 4
call fcn.10012890
cmp eax, ebx
jne 0x10013b22
mov ecx, dword [esp + 0x138]
mov dword [esp + 0x34], ecx
xor ebx, ebx
mov dword [esp + 0xfc], 7
mov dword [esp + 0xf8], ebx
mov word [esp + 0xe8], bx
lea eax, [esp + 0xe4]
push eax
lea ecx, [esp + 0x68]
push ecx
mov byte [esp + 0x860], 5
call fcn.10010340
add esp, 8
cmp eax, ebx
mov dword [esp + 0x3c], eax
jne 0x1001425f
push 0x2c
lea edx, [esp + 0xe8]
push edx
lea ecx, [esp + 0x50]
call fcn.10035f10
mov esi, dword [esp + 0x4c]
cmp esi, dword [esp + 0x50]
mov byte [esp + 0x858], 6
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], ebx
jbe 0x10013acb
call fcn.100370ab
lea eax, [esp + 0x48]
mov ebp, eax
mov edi, dword [esp + 0x50]
cmp dword [esp + 0x4c], edi
jbe 0x10013ae0
call fcn.100370ab
test ebp, ebp
je 0x10013aec
lea eax, [esp + 0x48]
cmp ebp, eax
je 0x10013af1
call fcn.100370ab
cmp esi, edi
je 0x10013bf0
test ebx, ebx
jne 0x10013b6d
test ebp, ebp
jne 0x10013b06
call fcn.100370ab
cmp esi, dword [ebp + 8]
jb 0x10013b10
call fcn.100370ab
cmp dword [esi + 0x18], 8
jb 0x10013b64
mov ecx, dword [esi + 4]
mov dword [esp + 0x24], ecx
jmp 0x10013bd2
push str.DefaultDestDir
push ebp
lea ecx, [esp + 0x140]
call fcn.10012890
cmp eax, ebx
mov dword [esp + 0x3c], eax
jne 0x10013b4c
mov edx, dword [esp + 0x138]
mov dword [esp + 0x34], edx
jmp 0x10013a50
push 0x5c8
push str.._sourceInfFile.cpp
push eax
call fcn.10034250
add esp, 0xc
jmp 0x10014279
lea edx, [esi + 4]
mov dword [esp + 0x24], edx
jmp 0x10013bd2
cmp ebx, 1
jne 0x10013b9d
test ebp, ebp
jne 0x10013b7b
call fcn.100370ab
cmp esi, dword [ebp + 8]
jb 0x10013b85
call fcn.100370ab
cmp dword [esi + 0x18], 8
jb 0x10013b94
mov eax, dword [esi + 4]
mov dword [esp + 0x20], eax
jmp 0x10013bd2
lea ecx, [esi + 4]
mov dword [esp + 0x20], ecx
jmp 0x10013bd2
cmp ebx, 2
jne 0x10013bcd
test ebp, ebp
jne 0x10013bab
call fcn.100370ab
cmp esi, dword [ebp + 8]
jb 0x10013bb5
call fcn.100370ab
cmp dword [esi + 0x18], 8
jb 0x10013bc4
mov edx, dword [esi + 4]
mov dword [esp + 0x30], edx
jmp 0x10013bd2
lea eax, [esi + 4]
mov dword [esp + 0x30], eax
jmp 0x10013bd2
cmp ebx, 3
jne 0x10013bf0
test ebp, ebp
jne 0x10013bdb
call fcn.100370ab
cmp esi, dword [ebp + 8]
jb 0x10013be5
call fcn.100370ab
add esi, 0x1c
add ebx, 1
jmp 0x10013ad1
xor esi, esi
push esi
push 0x100533f4
lea ecx, [esp + 0x98]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], esi
call fcn.100017e0
push esi
push 0x100533f4
lea ecx, [esp + 0xb4]
call fcn.100017e0
push esi
push 0x100533f4
lea ecx, [esp + 0x7c]
call fcn.100017e0
mov edi, dword [esp + 0x20]
cmp edi, esi
je 0x10013c4d
mov eax, edi
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x10013c40
jmp 0x10013c6b
mov edi, dword [esp + 0x24]
cmp edi, esi
je 0x10013c7d
mov eax, edi
lea edx, [eax + 2]
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x10013c60
sub eax, edx
sar eax, 1
push eax
push edi
lea ecx, [esp + 0x98]
call fcn.100017e0
cmp dword [esp + 0xa4], esi
mov ebp, 8
je 0x1001418e
cmp dword [esp + 0xa8], ebp
mov eax, dword [esp + 0x94]
jae 0x10013ca6
lea eax, [esp + 0x94]
mov ebx, dword [esp + 0x28]
mov edi, dword [sym.imp.SETUPAPI.dll_SetupGetSourceFileLocationW]
lea ecx, [esp + 0x14]
push ecx
push esi
push esi
lea edx, [esp + 0x28]
push edx
push eax
push esi
push ebx
call edi
cmp eax, esi
je 0x1001418e
mov eax, dword [esp + 0x14]
lea ecx, [eax + eax]
push ecx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, eax
test esi, esi
je 0x10013d36
cmp dword [esp + 0xa8], ebp
mov eax, dword [esp + 0x94]
jae 0x10013cf6
lea eax, [esp + 0x94]
mov edx, dword [esp + 0x14]
push 0
push edx
push esi
lea ecx, [esp + 0x28]
push ecx
push eax
push 0
push ebx
call edi
test eax, eax
je 0x10013d2f
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x10013d12
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [esp + 0xb4]
call fcn.100017e0
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [esp + 0x870], 0
je 0x1001418e
cmp dword [esp + 0xdc], 0
jne 0x10013f60
call fcn.10034d20
mov edx, dword [eax + 0x120]
shr edx, 0xa
test dl, 1
je 0x10013ec7
push 0x208
lea eax, [esp + 0x440]
push 0
push eax
call fcn.100376a0
add esp, 0xc
push 0x208
lea ecx, [esp + 0x440]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x10013eb8
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea edx, [esp + 0x43c]
push edx
call ebx
push str.DriverStoreFileRepository_
lea eax, [esp + 0x440]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
mov eax, dword [esp + 0x38]
cmp dword [eax + 0x108], ebp
jb 0x10013dd2
mov eax, dword [eax + 0xf4]
jmp 0x10013dd7
add eax, 0xf4
push eax
lea ecx, [esp + 0x440]
push ecx
lea edx, [esp + 0x64c]
push str._s_s_
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
lea eax, [esp + 0x1ec]
push eax
lea ecx, [esp + 0x648]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x10013f60
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpW]
mov ebp, dword [sym.imp.KERNEL32.dll_FindNextFileW]
test byte [esp + 0x1ec], 0x10
je 0x10013e53
push 0x100576ec
lea edx, [esp + 0x21c]
push edx
call edi
test eax, eax
je 0x10013e53
push 0x10058648
lea eax, [esp + 0x21c]
push eax
call edi
test eax, eax
jne 0x10013e73
lea ecx, [esp + 0x1ec]
push ecx
push esi
call ebp
test eax, eax
jne 0x10013e23
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebp, 8
jmp 0x10013f60
lea edx, [esp + 0x218]
push edx
lea eax, [esp + 0x440]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
lea ecx, [esp + 0x43c]
push ecx
call ebx
lea edx, [esp + 0x43c]
push edx
lea ecx, [esp + 0xcc]
call fcn.10001930
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebp, 8
jmp 0x10013f60
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp + 0x18], eax
jmp 0x10013f60
lea eax, [esp + 0x2c]
push eax
push 0x20019
push 0
push str.SOFTWAREMicrosoftWindowsCurrentVersionSetup
push SysStringLen
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x1001418e
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x648]
push edx
lea eax, [esp + 0x48]
push eax
push 0
push str.DriverCachePath
push ecx
mov dword [esp + 0x58], 1
mov dword [esp + 0x2c], 0x104
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
mov dword [esp + 0x18], eax
jne 0x10013f55
lea edx, [esp + 0x644]
push edx
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
lea eax, [esp + 0xc8]
push eax
lea ecx, [esp + 0x648]
push ecx
call fcn.10035b00
add esp, 8
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x2c]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [esp + 0x18], 0
jne 0x1001418e
push 0xffffffffffffffff
push 0
lea eax, [esp + 0xd0]
push eax
lea ecx, [esp + 0x80]
call fcn.100016f0
mov ebx, dword [sym.imp.SETUPAPI.dll_SetupGetSourceInfoW]
xor ebp, ebp
mov esi, dword [esp + ebp*4 + 0x5c]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x14]
push ecx
push 0
push 0
push esi
push edx
push eax
call ebx
test eax, eax
je 0x1001415d
mov ecx, dword [esp + 0x14]
lea edx, [ecx + ecx]
push edx
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edi, eax
test edi, edi
je 0x1001415d
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
push 0
push eax
push edi
push esi
push ecx
push edx
call ebx
test eax, eax
je 0x10014156
push 0x100533f4
lea ecx, [esp + 0x104]
call fcn.100018f0
mov eax, edi
mov byte [esp + 0x858], 7
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x10014002
sub eax, edx
sar eax, 1
push eax
push edi
lea ecx, [esp + 0x108]
call fcn.100017e0
cmp ebp, 1
jne 0x10014108
call fcn.10034d20
mov eax, dword [eax + 0x120]
shr eax, 8
test al, 1
je 0x10014108
cmp dword [esp + 0x118], 8
mov eax, dword [esp + 0x104]
jae 0x10014056
lea eax, [esp + 0x104]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
push str.DRIVER.CAB
push eax
call esi
test eax, eax
jne 0x10014108
mov eax, dword [esp + 0x38]
cmp dword [eax + 0x108], 8
jb 0x10014081
mov eax, dword [eax + 0xf4]
jmp 0x10014086
add eax, 0xf4
push str.NTPRINT.inf
push eax
call esi
test eax, eax
jne 0x10014108
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x120]
call fcn.10003630
push str.SP4.CAB
lea ecx, [esp + 0x120]
mov byte [esp + 0x85c], 8
call fcn.100018c0
cmp dword [esp + 0x134], 8
mov eax, dword [esp + 0x120]
jae 0x100140d8
lea eax, [esp + 0x120]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x100140f4
push str.SP4.CAB
lea ecx, [esp + 0x104]
call fcn.10001930
lea ecx, [esp + 0x11c]
mov byte [esp + 0x858], 7
call fcn.10001400
push 0xffffffffffffffff
push 0
lea edx, [esp + 0x108]
push edx
lea ecx, [esp + 0x80]
call fcn.10001430
test ebp, ebp
jne 0x10014134
push 1
push 0x10053f94
lea ecx, [esp + 0x7c]
call fcn.100015f0
cmp dword [esp + 0x118], 8
mov byte [esp + 0x858], 6
jb 0x10014156
mov eax, dword [esp + 0x104]
push eax
call fcn.10036ea6
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFree]
add ebp, 1
cmp ebp, 2
jb 0x10013f8b
cmp dword [esp + 0x8c], 8
mov eax, dword [esp + 0x78]
jae 0x1001417b
lea eax, [esp + 0x78]
push eax
push str.CInfInstallSection::GetCopyFilesHelper___Inbox_Path:__s
call fcn.10034080
add esp, 8
mov ebp, 8
cmp dword [esp + 0x8c], ebp
mov ecx, dword [esp + 0x78]
jae 0x1001419f
lea ecx, [esp + 0x78]
cmp dword [esp + 0xc4], ebp
mov eax, dword [esp + 0xb0]
jae 0x100141b6
lea eax, [esp + 0xb0]
mov edx, dword [esp + 0x20]
push 0
push ecx
mov ecx, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push eax
push ecx
lea ecx, [esp + 0x174]
call fcn.100101c0
mov ecx, dword [esp + 0x44]
lea edx, [esp + 0x158]
push edx
mov byte [esp + 0x85c], 9
call fcn.100131c0
lea ecx, [esp + 0x158]
mov byte [esp + 0x858], 6
call fcn.1000fea0
lea ecx, [esp + 0x48]
mov byte [esp + 0x858], 5
call fcn.10008ec0
lea eax, [esp + 0x64]
push eax
mov ecx, eax
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
je 0x1001424c
cmp dword [esp + 0xfc], ebp
jb 0x10013a50
mov edx, dword [esp + 0xe8]
push edx
call fcn.10036ea6
add esp, 4
jmp 0x10013a50
cmp dword [esp + 0xfc], ebp
jb 0x10014279
mov eax, dword [esp + 0xe8]
push eax
jmp 0x10014271
cmp dword [esp + 0xfc], 8
jb 0x10014279
mov ecx, dword [esp + 0xe8]
push ecx
call fcn.10036ea6
add esp, 4
lea ecx, [esp + 0x138]
mov byte [esp + 0x858], 3
call fcn.1000fe20
mov ebp, dword [esp + 0x3c]
mov edi, 8
xor ebx, ebx
jmp 0x100142a2
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
cmp dword [esp + 0x8c], edi
mov esi, 7
jb 0x100142bd
mov edx, dword [esp + 0x78]
push edx
call fcn.10036ea6
add esp, 4
cmp dword [esp + 0xe0], edi
mov dword [esp + 0x8c], esi
mov dword [esp + 0x88], ebx
mov word [esp + 0x78], bx
jb 0x100142e9
mov eax, dword [esp + 0xcc]
push eax
call fcn.10036ea6
add esp, 4
cmp dword [esp + 0xc4], edi
mov dword [esp + 0xe0], esi
mov dword [esp + 0xdc], ebx
mov word [esp + 0xcc], bx
jb 0x10014318
mov ecx, dword [esp + 0xb0]
push ecx
call fcn.10036ea6
add esp, 4
cmp dword [esp + 0xa8], edi
mov dword [esp + 0xc4], esi
mov dword [esp + 0xc0], ebx
mov word [esp + 0xb0], bx
jb 0x10014347
mov edx, dword [esp + 0x94]
push edx
call fcn.10036ea6
add esp, 4
mov eax, ebp
mov ecx, dword [esp + 0x850]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x838]
xor ecx, esp
call fcn.1003754f
add esp, 0x848
ret 0x14