Function at 0x67323360
Capabilities:
Check if file exists
Create process on windows
Delete file
Get file attributes

Disassembly:
push 0xffffffffffffffff
push 0x6740bf3f
mov eax, dword fs:[0]
push eax
sub esp, 0x8c0
mov eax, dword [0x67460ecc]
xor eax, esp
mov dword [esp + 0x8bc], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x67460ecc]
xor eax, esp
push eax
lea eax, [esp + 0x8d4]
mov dword fs:[0], eax
xor esi, esi
mov dword [esp + 0x18], esi
lea eax, [esp + 0x14]
push eax
push 1
push esi
push str.SoftwareMicrosoftWindowsCurrentVersionApp_Paths_firefox.exe
mov dword [esp + 0x8ec], esi
push reloc.ImNtUtilU.dll_Ordinal_2
mov dword [esp + 0x28], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, esi
jne 0x6732362d
mov ebp, dword [esp + 0x14]
push 0x81e
lea ecx, [esp + 0xb6]
push esi
push ecx
mov dword [esp + 0x24], ebp
mov word [esp + 0xbc], si
call sub.MSVCR80.dll_memset
add esp, 0xc
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0xb4]
push eax
push esi
lea ecx, [esp + 0x24]
mov dword [esp + 0x28], 0x820
call fcn.67321340
cmp eax, esi
jne 0x673235fe
lea ecx, [esp + 0x94]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
lea ecx, [esp + 0x78]
mov byte [esp + 0x8dc], 1
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov bl, 2
lea edi, [esp + 0x94]
mov byte [esp + 0x8dc], bl
call fcn.6734f030
push str.parent.lock
mov ecx, edi
push ecx
lea edx, [esp + 0x64]
push edx
call dword [sym.imp.MSVCP80.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::operator_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___wchar_t_const__]
add esp, 0xc
push eax
lea ecx, [esp + 0x7c]
mov byte [esp + 0x8e0], 3
call dword [0x67411c90]
lea ecx, [esp + 0x5c]
mov byte [esp + 0x8dc], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, dword [esp + 0x98]
xor bl, bl
xor edi, edi
cmp dword [esp + 0xac], 8
jae 0x673234a3
lea eax, [esp + 0x98]
push 1
push esi
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstChangeNotificationW]
mov esi, eax
cmp esi, 0xffffffff
je 0x67323523
mov ebp, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea ebx, [ebx]
test bl, bl
jne 0x6732351f
mov eax, edi
add edi, 1
cmp eax, 0xa
jae 0x6732351f
push 0x64
push esi
call ebp
cmp dword [esp + 0x90], 8
mov eax, dword [esp + 0x7c]
jae 0x673234e5
lea eax, [esp + 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x673234f5
mov bl, 1
jmp 0x673234c0
cmp dword [esp + 0x90], 8
mov eax, dword [esp + 0x7c]
jae 0x67323507
lea eax, [esp + 0x7c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
je 0x67323516
mov bl, 1
jmp 0x673234c0
push esi
call dword [sym.imp.KERNEL32.dll_FindNextChangeNotification]
jmp 0x673234c0
mov ebp, dword [esp + 0x14]
test esi, esi
je 0x6732352e
push esi
call dword [sym.imp.KERNEL32.dll_FindCloseChangeNotification]
push 0x38
lea ecx, [esp + 0x28]
push 0
push ecx
call sub.MSVCR80.dll_memset
add esp, 0xc
lea eax, [esp + 0x20]
lea edx, [esp + 0xb0]
push eax
mov dword [esp + 0x24], 0x3c
mov dword [esp + 0x28], 0x440
mov dword [esp + 0x34], edx
mov dword [esp + 0x40], 1
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x673235a4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._MyStartMgmt_______RewritePrefsFile__Failed_to_execute_Firefox_after_update._Error_0x_X
push 1
push str.Dec_25_2011
push 0x319
push 0xffffffffffffffff
call fcn.6734bae0
mov edx, str..SearchAssetBase.cpp
mov ecx, 1
mov ebx, eax
call fcn.6734ca70
add esp, 0x18
lea ecx, [esp + 0x78]
mov byte [esp + 0x8dc], 1
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x94]
mov byte [esp + 0x8dc], 0
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
test ebp, ebp
je 0x673235d6
push ebp
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x8d4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x8bc]
xor ecx, esp
call fcn.673f06fa
add esp, 0x8cc
ret
push eax
push str._MyStartMgmt_______RewritePrefsFile__Failed_to_read_Firefox_application_path_from_registry._Error_0x_X
push 1
push str.Dec_25_2011
push 0x31e
push 0xffffffffffffffff
call fcn.6734bae0
mov edx, str..SearchAssetBase.cpp
mov ecx, 1
mov ebx, eax
call fcn.6734ca70
add esp, 0x18
jmp 0x673235cb
push eax
push str._MyStartMgmt_______RewritePrefsFile__Firefox__App_Paths__registry_key_could_not_be_read._Error_0x_X
push 1
push str.Dec_25_2011
push 0x323
push 0xffffffffffffffff
call fcn.6734bae0
mov edx, str..SearchAssetBase.cpp
mov ecx, 1
mov ebx, eax
call fcn.6734ca70
add esp, 0x18
jmp 0x673235d6