Function at 0x406090
Capabilities:
Get common file path

Disassembly:
push ebx
xor ebx, ebx
mov ecx, str._CSIDL_ADMINTOOLS_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4060c0
test dl, dl
je 0x4060bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4060c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4060a0
xor eax, eax
jmp 0x4060c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4060d3
push edi
push eax
push eax
push 0x30
jmp 0x4064be
mov ecx, str._CSIDL_APPDATA_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406100
test dl, dl
je 0x4060fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406100
add eax, 2
add ecx, 2
test dl, dl
jne 0x4060e0
xor eax, eax
jmp 0x406105
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406113
push edi
push eax
push eax
push 0x1a
jmp 0x4064be
mov ecx, str._CSIDL_COMMON_ADMINTOOLS_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406140
test dl, dl
je 0x40613c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406140
add eax, 2
add ecx, 2
test dl, dl
jne 0x406120
xor eax, eax
jmp 0x406145
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406153
push edi
push eax
push eax
push 0x2f
jmp 0x4064be
mov ecx, str._CSIDL_COMMON_APPDATA_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406180
test dl, dl
je 0x40617c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406180
add eax, 2
add ecx, 2
test dl, dl
jne 0x406160
xor eax, eax
jmp 0x406185
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406193
push edi
push eax
push eax
push 0x23
jmp 0x4064be
mov ecx, str._CSIDL_COMMON_DOCUMENTS_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4061c0
test dl, dl
je 0x4061bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4061c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4061a0
xor eax, eax
jmp 0x4061c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4061d3
push edi
push eax
push eax
push 0x2e
jmp 0x4064be
mov ecx, str._CSIDL_COOKIES_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406200
test dl, dl
je 0x4061fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406200
add eax, 2
add ecx, 2
test dl, dl
jne 0x4061e0
xor eax, eax
jmp 0x406205
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406213
push edi
push eax
push eax
push 0x21
jmp 0x4064be
mov ecx, str._CSIDL_FLAG_CREATE_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406240
test dl, dl
je 0x40623c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406240
add eax, 2
add ecx, 2
test dl, dl
jne 0x406220
xor eax, eax
jmp 0x406245
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406256
push edi
push eax
push eax
push 0x8000
jmp 0x4064be
mov ecx, str._CSIDL_FLAG_DONT_VERIFY_
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406280
test dl, dl
je 0x40627c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406280
add eax, 2
add ecx, 2
test dl, dl
jne 0x406260
xor eax, eax
jmp 0x406285
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406296
push edi
push eax
push eax
push 0x4000
jmp 0x4064be
mov ecx, str._CSIDL_FLAG_DONT_VERIFY_
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4062c0
test dl, dl
je 0x4062bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4062c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4062a0
xor eax, eax
jmp 0x4062c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4062d6
push edi
push eax
push eax
push 0x4000
jmp 0x4064be
mov ecx, str._CSIDL_HISTORY_
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406300
test dl, dl
je 0x4062fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406300
add eax, 2
add ecx, 2
test dl, dl
jne 0x4062e0
xor eax, eax
jmp 0x406305
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406313
push edi
push eax
push eax
push 0x22
jmp 0x4064be
mov ecx, str._CSIDL_INTERNET_CACHE_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406340
test dl, dl
je 0x40633c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406340
add eax, 2
add ecx, 2
test dl, dl
jne 0x406320
xor eax, eax
jmp 0x406345
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406353
push edi
push eax
push eax
push 0x20
jmp 0x4064be
mov ecx, str._CSIDL_LOCAL_APPDATA_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406380
test dl, dl
je 0x40637c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406380
add eax, 2
add ecx, 2
test dl, dl
jne 0x406360
xor eax, eax
jmp 0x406385
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406393
push edi
push eax
push eax
push 0x1c
jmp 0x4064be
mov ecx, str._CSIDL_PROGRAM_FILES_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4063c0
test dl, dl
je 0x4063bc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4063c0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4063a0
xor eax, eax
jmp 0x4063c5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4063d3
push edi
push eax
push eax
push 0x26
jmp 0x4064be
mov ecx, str._CSIDL_PROGRAM_FILES_COMMON_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406400
test dl, dl
je 0x4063fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406400
add eax, 2
add ecx, 2
test dl, dl
jne 0x4063e0
xor eax, eax
jmp 0x406405
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406413
push edi
push eax
push eax
push 0x2b
jmp 0x4064be
mov ecx, str._CSIDL_SYSTEM_
mov eax, esi
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406440
test dl, dl
je 0x40643c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406440
add eax, 2
add ecx, 2
test dl, dl
jne 0x406420
xor eax, eax
jmp 0x406445
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406450
push edi
push eax
push eax
push 0x25
jmp 0x4064be
mov ecx, str._CSIDL_WINDOWS_
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406477
test dl, dl
je 0x406473
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406477
add eax, 2
add ecx, 2
test dl, dl
jne 0x406457
xor eax, eax
jmp 0x40647c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x406487
push edi
push eax
push eax
push 0x24
jmp 0x4064be
mov ecx, str._CSIDL_DESKTOPDIRECTORY_
mov eax, esi
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4064b0
test dl, dl
je 0x4064ac
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4064b0
add eax, 2
add ecx, 2
test dl, dl
jne 0x406490
xor eax, eax
jmp 0x4064b5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4064cf
push edi
push eax
push eax
push 0x10
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
mov eax, 1
jge 0x4064d1
mov eax, ebx
pop ebx
ret