Function at 0x4a9940
Capabilities:
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x20c]
sub esp, 0x20c
push 0xffffffffffffffff
push 0x4da0c4
mov eax, dword fs:[0]
push eax
sub esp, 0x10
mov eax, dword [0x520b38]
xor eax, ebp
mov dword [ebp + 0x208], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x218]
mov esi, dword [ebp + 0x214]
mov dword [ebp - 0x18], eax
mov eax, dword [0x530c30]
test eax, eax
jne 0x4a99a3
lea ecx, [ebp - 0x14]
call fcn.0043b920
mov dword [ebp - 0x14], eax
mov eax, dword [0x530c30]
jmp 0x4a99a6
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 0
test eax, eax
jne 0x4a99b9
lea ecx, [ebp - 0x10]
call fcn.0043b920
mov dword [ebp - 0x10], eax
push 0x531fe0
xor ebx, ebx
mov dword [ebp - 0x1c], 0x531fe0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [esi*4 + 0x531ff8]
lea edi, [esi*4 + 0x531ff8]
xor ecx, ecx
mov byte [ebp - 4], 2
test eax, eax
je 0x4a99eb
mov ecx, dword [eax - 0xc]
test ecx, ecx
lea eax, [ecx - 1]
cmove eax, ecx
test eax, eax
jne 0x4a9b65
cmp esi, 0x15
ja case.0x4a9a04.17
jmp dword [esi*4 + 0x4a9bd4]
mov esi, 0x8030
jmp 0x4a9ab8
mov esi, 0x801a
jmp 0x4a9ab8
mov esi, 0x8023
jmp 0x4a9ab8
mov esi, 0x802e
jmp 0x4a9ab8
mov esi, 0x8021
jmp 0x4a9ab8
mov esi, 0x8022
jmp 0x4a9ab8
mov esi, 0x8020
jmp 0x4a9ab8
mov esi, 0x801c
jmp 0x4a9ab8
mov esi, 0x8027
jmp 0x4a9ab8
mov esi, 0x8005
jmp 0x4a9ab8
mov esi, 0x8026
jmp 0x4a9ab8
mov esi, 0x802b
jmp 0x4a9ab8
mov esi, 0x8025
jmp 0x4a9ab8
mov esi, 0x8024
jmp 0x4a9ab8
xor esi, esi
call fcn.004a98d0
jmp 0x4a9aaf
mov esi, 0x802e
push str.IntuitQuickBooksCompany_Files_
jmp 0x4a9ab0
xor esi, esi
push 0x4e1b99
jmp 0x4a9ab0
lea eax, [ebp]
mov byte [ebp], 0
push eax
push 0x208
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x10]
call fcn.0043aab0
push 0x208
lea eax, [ebp]
push 0
push eax
call fcn.004c5552
add esp, 0xc
test esi, esi
je 0x4a9ae6
lea eax, [ebp]
push eax
push 0
push 0
push esi
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov ebx, eax
test ebx, ebx
js 0x4a9b65
lea eax, [ebp]
push eax
lea ecx, [ebp - 0x14]
call fcn.0043aab0
mov eax, dword [ebp - 0x14]
xor edx, edx
test eax, eax
je 0x4a9afe
mov edx, dword [eax - 0xc]
test edx, edx
lea ecx, [edx - 1]
cmove ecx, edx
test ecx, ecx
je 0x4a9b34
xor edx, edx
test eax, eax
je 0x4a9b13
mov edx, dword [eax - 0xc]
test edx, edx
lea ecx, [edx - 1]
cmove ecx, edx
cmp byte [ecx + eax - 1], 0x5c
je 0x4a9b34
mov eax, dword [ebp - 0x10]
cmp byte [eax], 0x5c
je 0x4a9b34
push 0x5c
lea ecx, [ebp - 0x14]
call int.0043acd0
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x14]
call fcn.0043fe60
mov esi, dword [ebp - 0x14]
cmp dword [edi], esi
je 0x4a9b65
mov ecx, edi
call fcn.0043b730
test esi, esi
je 0x4a9b5c
test byte [esi - 0xe], 8
jne 0x4a9b5c
inc word [esi - 0x10]
mov dword [edi], esi
jmp 0x4a9b65
mov ebx, 0x80004005
mov esi, dword [ebp - 0x18]
mov eax, dword [esi]
cmp eax, dword [edi]
je 0x4a9b89
mov ecx, esi
call fcn.0043b730
mov eax, dword [edi]
test eax, eax
je 0x4a9b85
test byte [eax - 0xe], 8
jne 0x4a9b85
inc word [eax - 0x10]
mov eax, dword [edi]
mov dword [esi], eax
push 0x531fe0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 3
call fcn.0043b730
lea ecx, [ebp - 0x14]
mov dword [ebp - 4], 4
call fcn.0043b730
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 + 0x208]
xor ecx, ebp
call fcn.004c35dc
lea esp, [ebp + 0x20c]
pop ebp
ret