Function at 0x419360
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b5265
mov eax, dword fs:[0]
push eax
mov eax, 0x46b0
call fcn.0059a600
mov eax, dword [0x6319d0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x468c], ecx
call fcn.0046d4f0
xor ebx, ebx
test eax, eax
je 0x419417
push ebx
push str.CInstall::DeletePreviousDeviceAddRemoveEntry_n
push 0x648f88
call fcn.00599ee3
mov eax, dword [str.ENTRY:]
mov ecx, dword [0x5ccf7c]
mov dword [0x648e88], eax
mov eax, 0x648f88
mov dword [0x648e8c], ecx
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4193d3
mov edi, 0x648e88
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4193e4
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d500
push 0x648e88
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
lea ecx, [ebp - 0x9ac]
call fcn.00408110
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x414]
mov dword [ebp - 4], ebx
call fcn.0047aa50
push 0x5dc
lea edx, [ebp - 0x2800]
push 0x4b
push edx
mov dword [ebp - 0x2928], ebx
mov dword [ebp - 0x2920], ebx
mov dword [ebp - 0x291c], ebx
mov dword [ebp - 0x2914], ebx
mov dword [ebp - 0x2804], ebx
call fcn.00599fb0
mov ecx, 0x5dc
xor eax, eax
lea edi, [ebp - 0x2224]
rep stosd dword es:[edi], eax
add esp, 0xc
mov dword [ebp - 0x290c], 0xffffffff
mov byte [ebp - 4], 1
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x4194a1
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x467c], eax
mov dword [ebp - 0x4698], ebx
mov dword [ebp - 0x4690], ebx
push 0x5dc
lea ecx, [ebp - 0x4674]
push 0x4b
push ecx
mov dword [ebp - 0x4678], ebx
call fcn.00599fb0
mov ecx, 0x5dc
xor eax, eax
lea edi, [ebp - 0x4098]
add esp, 0xc
rep stosd dword es:[edi], eax
mov byte [ebp - 4], 4
call fcn.004a8620
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x419508
push 0x80004005
call fcn.00401b60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x4684], ebx
lea ecx, [ebp - 0x4678]
push ecx
xor edi, edi
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
lea ecx, [ebp - 0x414]
mov byte [ebp - 4], 5
mov dword [ebp - 0x4680], edi
call fcn.0047ba10
test eax, eax
je 0x419752
cmp dword [ebp - 0x4678], edi
je 0x419752
lea esi, [ebp - 0x4674]
jmp 0x419560
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea ecx, [ebp - 0x4698]
call fcn.004048c0
test esi, esi
je 0x4195b1
lea edx, [ebp - 0x4674]
sub esi, edx
lea eax, [esi + 1]
lea ecx, [eax - 1]
cmp ecx, 0x5db
ja 0x4195b1
mov edx, dword [ebp - 0x4678]
cmp eax, edx
jae 0x41959d
lea esi, [ebp + eax - 0x4674]
jmp 0x41959f
xor esi, esi
cmp ecx, edx
jae 0x4195b3
cmp ecx, 0xffffffff
je 0x4195b3
mov ecx, dword [ebp + ecx*4 - 0x4098]
jmp 0x4195b5
xor esi, esi
xor ecx, ecx
push ecx
lea ecx, [ebp - 0x4698]
call fcn.00404960
mov edx, dword [ebp - 0x4698]
lea eax, [ebp - 0x4688]
push eax
lea ecx, [ebp - 0x114]
push ecx
push str.UninstallString
push edx
lea ecx, [ebp - 0x414]
mov dword [ebp - 0x4688], 0x104
call fcn.0047b3d0
test eax, eax
je 0x419691
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x419601
sub eax, edx
push eax
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x4684]
call fcn.004026b0
lea ecx, [ebp - 0x4684]
call fcn.004027d0
mov ebx, dword [ebp - 0x4684]
cmp dword [ebx - 0xc], 0
jl 0x419691
push 0x5cedcc
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x419691
sub eax, ebx
cmp eax, 0xffffffff
je 0x419691
cmp dword [ebx - 0xc], 0
jl 0x419691
push 0x5cf5a4
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x419691
sub eax, ebx
cmp eax, 0xffffffff
je 0x419691
cmp dword [ebx - 0xc], 0
jl 0x419691
push 0x5cf5a0
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x419691
sub eax, ebx
cmp eax, 0xffffffff
je 0x419691
inc dword [ebp - 0x4680]
mov eax, dword [ebp - 0x4698]
lea ecx, [ebp - 0x4688]
push ecx
lea edx, [ebp - 0x114]
push edx
push str.DisplayName
push eax
lea ecx, [ebp - 0x414]
mov dword [ebp - 0x4688], 0x104
call fcn.0047b3d0
test eax, eax
je 0x41973c
lea eax, [ebp - 0x114]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4196d0
sub eax, edx
push eax
lea ecx, [ebp - 0x114]
push ecx
lea ecx, [ebp - 0x4684]
call fcn.004026b0
lea ecx, [ebp - 0x4684]
call fcn.004027d0
mov ebx, dword [ebp - 0x4684]
cmp dword [ebx - 0xc], 0
jl 0x41973c
push str.CONEXANT
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x41971c
sub eax, ebx
cmp eax, 0xffffffff
jne 0x41973b
cmp dword [ebx - 0xc], 0
jl 0x41973c
push str.CNXT
push ebx
call fcn.0059a963
add esp, 8
test eax, eax
je 0x41973c
sub eax, ebx
cmp eax, 0xffffffff
je 0x41973c
inc edi
test esi, esi
jne 0x419560
cmp dword [ebp - 0x4680], edi
jbe 0x419752
mov edi, dword [ebp - 0x4680]
mov dword [ebp - 0x4680], edi
test edi, edi
je 0x419b6c
push 0x104
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov eax, dword [ebp - 0x468c]
mov esi, dword [eax + 0x4fd8]
test esi, esi
je 0x419b6c
mov eax, esi
mov esi, dword [esi]
add eax, 8
push eax
lea ecx, [ebp - 0x9ac]
mov dword [ebp - 0x4688], esi
call fcn.0040bbe0
mov eax, dword [ebp - 0x934]
cmp eax, 2
je 0x4197b3
cmp eax, 4
jne 0x419b64
push str.INFOEM.INF
lea ecx, [ebp - 0x46b8]
call fcn.00403380
mov esi, eax
lea ecx, [ebp - 0x218]
push ecx
lea ecx, [ebp - 0x46a8]
mov byte [ebp - 4], 6
call fcn.00403380
push esi
push eax
lea edx, [ebp - 0x46ac]
push edx
mov byte [ebp - 4], 7
call fcn.00402910
add esp, 0xc
mov ecx, dword [eax]
mov esi, dword [ebp - 0x467c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 8
cmp eax, esi
je 0x419857
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x419847
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x419847
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x419836
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x467c], ebx
mov ebx, dword [ebp - 0x4684]
jmp 0x419857
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x467c]
call fcn.004026b0
mov eax, dword [ebp - 0x46ac]
add eax, 0xfffffff0
mov byte [ebp - 4], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41987d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x46a8]
add eax, 0xfffffff0
mov byte [ebp - 4], 6
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4198a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x46b8]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4198c9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x99c]
push ecx
mov ecx, dword [ebp - 0x468c]
lea edx, [ebp - 0x467c]
push edx
call fcn.00418e70
sub dword [ebp - 0x4680], eax
je 0x419b5e
push str.INFDELL.INF
lea ecx, [ebp - 0x469c]
call fcn.00403380
mov esi, eax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x46a4]
mov byte [ebp - 4], 9
call fcn.00403380
push esi
push eax
lea ecx, [ebp - 0x46a0]
push ecx
mov byte [ebp - 4], 0xa
call fcn.00402910
add esp, 0xc
mov ecx, dword [eax]
mov esi, dword [ebp - 0x467c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 0xb
cmp eax, esi
je 0x419992
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x419982
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x419982
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x419971
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x467c], ebx
mov ebx, dword [ebp - 0x4684]
jmp 0x419992
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x467c]
call fcn.004026b0
mov eax, dword [ebp - 0x46a0]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xa
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4199b8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x46a4]
add eax, 0xfffffff0
mov byte [ebp - 4], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4199de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x469c]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x419a04
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x99c]
push ecx
mov ecx, dword [ebp - 0x468c]
lea edx, [ebp - 0x467c]
push edx
call fcn.00418e70
sub dword [ebp - 0x4680], eax
je 0x419b5e
push str.INFMDM.INF
lea ecx, [ebp - 0x46b0]
call fcn.00403380
mov esi, eax
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x46bc]
mov byte [ebp - 4], 0xc
call fcn.00403380
push esi
push eax
lea ecx, [ebp - 0x46b4]
push ecx
mov byte [ebp - 4], 0xd
call fcn.00402910
add esp, 0xc
mov ecx, dword [eax]
mov esi, dword [ebp - 0x467c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
mov byte [ebp - 4], 0xe
cmp eax, esi
je 0x419acd
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x419abd
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x419abd
push eax
call fcn.004022e0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x419aac
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x467c], ebx
mov ebx, dword [ebp - 0x4684]
jmp 0x419acd
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x467c]
call fcn.004026b0
mov eax, dword [ebp - 0x46b4]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x419af3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x46bc]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x419b19
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x46b0]
add eax, 0xfffffff0
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x419b3f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x99c]
push ecx
mov ecx, dword [ebp - 0x468c]
lea edx, [ebp - 0x467c]
push edx
call fcn.00418e70
sub dword [ebp - 0x4680], eax
mov esi, dword [ebp - 0x4688]
test esi, esi
jne 0x419786
call fcn.0046d4f0
test eax, eax
je 0x419bea
push 0
push str.CInstall::DeletePreviousDeviceAddRemoveEntry_n
push 0x648d88
call fcn.00599ee3
mov eax, dword [str.EXIT:]
mov ecx, dword [0x5ccefc]
mov dword [0x648c88], eax
mov eax, 0x648d88
mov dword [0x648c8c], ecx
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x419ba6
mov edi, 0x648c88
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x419bb7
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x648c88
rep movsb byte es:[edi], byte [esi]
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d510
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 4
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x419c0a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor edi, edi
xor esi, esi
mov byte [ebp - 4], 3
cmp dword [ebp - 0x4678], edi
jbe 0x419c44
lea ebx, [ebx]
mov eax, dword [ebp + esi*4 - 0x4098]
cmp eax, edi
je 0x419c3b
push eax
call fcn.004a6dca
add esp, 4
mov dword [ebp + esi*4 - 0x4098], edi
inc esi
cmp esi, dword [ebp - 0x4678]
jb 0x419c20
mov esi, dword [ebp - 0x4698]
mov byte [ebp - 4], 2
cmp esi, edi
je 0x419c67
mov ecx, dword [ebp - 0x4694]
push ecx
call fcn.004a6dca
push esi
call fcn.004a6dca
add esp, 8
mov eax, dword [ebp - 0x467c]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x419c8d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x2928]
mov byte [ebp - 4], 0
call fcn.004339c0
lea ecx, [ebp - 0x9ac]
call fcn.004082d0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00599ed4
mov esp, ebp
pop ebp
ret