Function at 0x403420
Capabilities:
Get common file path

Disassembly:
sub esp, 0x2d8
push ebx
push ebp
push esi
lea eax, [esp + 0x110]
push edi
push eax
mov dword [esp + 0x118], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [esp + 0x124], 2
jne 0x403515
cmp dword [esp + 0x118], 4
ja 0x403515
mov ebx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [esp + 0x10]
push 0x104
push ecx
call ebx
mov edi, str._system32drivers
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea edx, [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x42158c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
mov ebp, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
and ecx, 3
lea eax, [esp + 0x1a8]
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push eax
push ecx
call ebp
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 0xffffffff
je 0x4035c4
push 0x421578
push str.___s
push 0
call fcn.00401280
lea edx, [esp + 0x1c]
push edx
call fcn.004033a0
add esp, 0x10
jmp 0x4035d8
mov ebx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea eax, [esp + 0x10]
push 0x104
push eax
call ebx
mov edi, str._system32drivers
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea edx, [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x421568
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
mov ebp, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
and ecx, 3
lea eax, [esp + 0x1a8]
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push eax
push ecx
call ebp
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 0xffffffff
je 0x4035c4
push 0x421578
push str.___s
push 0
call fcn.00401280
lea edx, [esp + 0x1c]
push edx
call fcn.004033a0
add esp, 0x10
jmp 0x4035d8
push 0x421554
push str.___s
push 0
call fcn.00401280
add esp, 0xc
cmp dword [esp + 0x124], 2
jne 0x40369d
lea eax, [esp + 0x10]
push 0x104
push eax
call ebx
mov edi, str._system32drivers
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str._sense3.sys
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x1a8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x14]
push ecx
call ebp
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 0xffffffff
je 0x403689
push 0x421534
push str.___s
push 0
call fcn.00401280
lea edx, [esp + 0x1c]
push edx
call fcn.004033a0
add esp, 0x10
jmp 0x40369d
push 0x421520
push str.___s
push 0
call fcn.00401280
add esp, 0xc
cmp dword [esp + 0x124], 1
jne 0x40376d
lea eax, [esp + 0x10]
push 0x104
push eax
call ebx
mov edi, str._system
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x10]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str._sense3.vxd
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x1a8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x14]
push ecx
call ebp
mov esi, eax
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp esi, 0xffffffff
je 0x403759
push 0x421534
push str.___s
push 0
call fcn.00401280
lea edx, [esp + 0x1c]
push edx
call fcn.004033a0
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2d8
ret
push 0x421520
push str.___s
push 0
call fcn.00401280
add esp, 0xc
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2d8
ret