Function at 0x479430
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5bbd35
mov eax, dword fs:[0]
push eax
sub esp, 0x128
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 eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov ebx, ecx
mov dword [ebp - 0x128], ebx
mov dword [ebp - 0x12c], esi
mov dword [ebp - 0x130], eax
call fcn.0046d4f0
test eax, eax
je 0x4794f7
mov ecx, dword [esi]
push ecx
push str.CPrepareUninstall_::_GetUninstallDeviceList_:_csDeviceID___s_n
push 0x69fcd0
call fcn.00599ee3
mov eax, dword [0x5ccf7c]
mov edx, dword [str.ENTRY:]
mov dword [0x69fbd4], eax
mov eax, 0x69fcd0
add esp, 0xc
mov dword [0x69fbd0], edx
mov ecx, eax
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4794b3
mov edi, 0x69fbd0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x4794c4
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 0x69fbd0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x479511
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 - 0x124], eax
mov dword [ebp - 4], 0
call fcn.004a8620
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x479544
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 - 0x120], eax
push 0x104
lea ecx, [ebp - 0x114]
push ecx
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edx, dword [ebx + 4]
mov ecx, dword [edx + 0xce4]
and ecx, 0x8000
xor eax, eax
or eax, ecx
je 0x479628
mov edx, dword [edx + 0x5c]
cmp dword [edx - 0xc], 0
je 0x479628
push 0x5cd28c
lea ecx, [ebp - 0x118]
call fcn.00403380
mov esi, dword [ebp - 0x128]
push eax
mov eax, dword [esi + 4]
add eax, 0x5c
push eax
lea ecx, [ebp - 0x134]
mov bl, 2
push ecx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 3
call fcn.00402af0
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4795f9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4796ed
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x4796ed
push str.INF_
lea ecx, [ebp - 0x11c]
call fcn.00403380
mov esi, eax
lea ecx, [ebp - 0x114]
push ecx
lea ecx, [ebp - 0x134]
mov byte [ebp - 4], 4
call fcn.00403380
push esi
push eax
lea edx, [ebp - 0x118]
mov bl, 5
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 6
call fcn.00402af0
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47969b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x134]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4796c1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4796e7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0x128]
call fcn.0046d4f0
test eax, eax
je 0x479720
mov ecx, dword [ebp - 0x124]
push ecx
push str.csINFPath___s_n
push 0x69fad0
call fcn.00599ee3
add esp, 0xc
push 0x69fad0
call fcn.0046d6a0
mov ecx, eax
call fcn.0046d9d0
mov eax, dword [esi + 4]
mov ecx, dword [eax + 0xce4]
and ecx, 0x8000
xor eax, eax
or eax, ecx
lea ecx, [ebp - 0x118]
je 0x479767
push str..INF
call fcn.00403380
push eax
lea edx, [ebp - 0x124]
push edx
lea eax, [ebp - 0x11c]
mov bl, 7
push eax
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
mov byte [ebp - 4], 8
jmp 0x479791
push str.OEM.INF
call fcn.00403380
push eax
lea ecx, [ebp - 0x124]
push ecx
lea edx, [ebp - 0x11c]
mov bl, 9
push edx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
mov byte [ebp - 4], 0xa
push eax
lea ecx, [ebp - 0x120]
call fcn.00402af0
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], bl
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4797c2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4797e8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esi + 4]
mov eax, dword [eax + 0xce0]
mov edx, dword [ebp - 0x12c]
xor ecx, ecx
and eax, 0x800000
or eax, ecx
mov ecx, dword [ebp - 0x130]
push ecx
lea eax, [ebp - 0x120]
push edx
mov ecx, esi
push eax
je 0x4798f4
call fcn.00477f60
mov ebx, eax
test ebx, ebx
jne 0x4799ce
mov esi, dword [ebp - 0x128]
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0xce0]
mov eax, dword [ecx + 0xce4]
not eax
and eax, 0x8000
xor ecx, ecx
or ecx, eax
je 0x4799ce
push str..INF
lea ecx, [ebp - 0x118]
call fcn.00403380
push eax
lea eax, [ebp - 0x124]
push eax
lea ecx, [ebp - 0x11c]
mov bl, 0xb
push ecx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x120]
mov byte [ebp - 4], 0xc
call fcn.00402af0
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4798ad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4798d3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x130]
mov edx, dword [ebp - 0x12c]
push ecx
push edx
lea eax, [ebp - 0x120]
push eax
mov ecx, esi
call fcn.00477f60
jmp 0x4799cc
call fcn.00478a20
mov ebx, eax
test ebx, ebx
jne 0x4799ce
mov esi, dword [ebp - 0x128]
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0xce0]
mov eax, dword [ecx + 0xce4]
not eax
and eax, 0x8000
xor ecx, ecx
or ecx, eax
je 0x4799ce
push str..INF
lea ecx, [ebp - 0x118]
call fcn.00403380
push eax
lea eax, [ebp - 0x124]
push eax
lea ecx, [ebp - 0x11c]
mov bl, 0xd
push ecx
mov byte [ebp - 4], bl
call fcn.00402910
add esp, 0xc
push eax
lea ecx, [ebp - 0x120]
mov byte [ebp - 4], 0xe
call fcn.00402af0
mov eax, dword [ebp - 0x11c]
add eax, 0xfffffff0
mov byte [ebp - 4], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x47998a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x118]
add eax, 0xfffffff0
mov byte [ebp - 4], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4799b0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x130]
mov edx, dword [ebp - 0x12c]
push ecx
push edx
lea eax, [ebp - 0x120]
push eax
mov ecx, esi
call fcn.00478a20
mov ebx, eax
call fcn.0046d4f0
test eax, eax
je 0x479a54
push ebx
push str.CPrepareUninstall_::_GetUninstallDeviceList_:_bRetVal___d_n
push 0x69f9d0
call fcn.00599ee3
mov ecx, dword [str.EXIT:]
mov edx, dword [0x5ccefc]
mov eax, 0x69f9d0
mov dword [0x69f8d0], ecx
add esp, 0xc
mov dword [0x69f8d4], edx
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x479a10
mov edi, 0x69f8d0
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x479a21
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0x69f8d0
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
mov eax, dword [ebp - 0x120]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479a7a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x124]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x479aa3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, ebx
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 8