Function at 0x4ac090
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x563b95
push eax
mov eax, 0xf418
mov dword fs:[0], esp
call fcn.00550140
push ebx
push esi
push edi
call dword [sym.imp.USER32.dll_GetActiveWindow]
push eax
call sub.MFC42.DLL_CWnd::FromHandle
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x10]
call sub.MFC42.DLL_CString::CString_1
mov esi, dword [ebp + 0x10]
xor ebx, ebx
push esi
lea ecx, [ebp - 0x24]
mov dword [ebp - 4], ebx
call sub.MFC42.DLL_CString::CString_1
mov ecx, dword [ebp - 0x10]
mov edi, dword [sym.imp.MSVCRT.dll__mbsicmp]
push str.DT_MEDIAFILE
push ecx
mov byte [ebp - 4], 1
call edi
add esp, 8
test eax, eax
jne 0x4ac7c2
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp + 0x10], ebx
mov edx, dword [0x5d2ac0]
mov esi, 0x5d2ac0
mov ecx, esi
mov byte [ebp - 4], 4
mov dword [ebp - 0x40], ebx
mov dword [ebp + 0xc], esi
call dword [edx + 4]
mov eax, dword [0x5cb048]
mov byte [ebp - 4], 5
cmp eax, ebx
jne 0x4ac185
cmp dword [0x5cb044], ebx
jne 0x4ac185
push 0x380
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x28], eax
cmp eax, ebx
mov byte [ebp - 4], 6
je 0x4ac15b
push ebx
mov ecx, eax
call fcn.00414150
jmp 0x4ac15d
xor eax, eax
mov dword [0x5cb044], eax
mov eax, dword [0x5b4b90]
push eax
push 0x406940
mov ecx, 0x5d0190
mov byte [ebp - 4], 5
call fcn.00406500
mov dword [0x5cb048], 1
mov edx, dword [0x5d2ac0]
mov edi, dword [0x5cb044]
mov ecx, esi
mov byte [ebp - 4], 4
call dword [edx + 8]
mov eax, dword [edi]
lea ecx, [ebp - 0x40]
push ecx
push edi
call dword [eax + 0x8c]
cmp dword [ebp - 0x40], ebx
je 0x4ac1bd
mov ecx, dword [0x5cb258]
cmp ecx, ebx
je 0x4ac1bd
push 1
call fcn.004ea1c0
mov edx, dword [0x5d2a60]
mov ecx, 0x5d2a60
mov dword [ebp + 0xc], ecx
call dword [edx + 4]
mov eax, dword [0x5cb0cc]
mov byte [ebp - 4], 7
cmp eax, ebx
jne 0x4ac22b
cmp dword [0x5cb0c8], ebx
jne 0x4ac22b
push 0xc
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x28], eax
cmp eax, ebx
mov byte [ebp - 4], 8
je 0x4ac201
mov ecx, eax
call fcn.0045e9d0
jmp 0x4ac203
xor eax, eax
mov dword [0x5cb0c8], eax
mov eax, dword [0x5b5c48]
push eax
push 0x41ebd0
mov ecx, 0x5d0190
mov byte [ebp - 4], 7
call fcn.00406500
mov dword [0x5cb0cc], 1
mov edx, dword [0x5d2a60]
mov edi, dword [0x5cb0c8]
mov ecx, 0x5d2a60
mov byte [ebp - 4], 4
call dword [edx + 8]
mov eax, dword [edi]
lea ecx, [ebp - 0x2c]
push ecx
push edi
call dword [eax + 8]
test eax, eax
jl 0x4ac771
mov eax, dword [ebp - 0x2c]
cmp eax, ebx
je 0x4ac771
push 0x5b7820
lea edx, [ebp - 0x48]
push eax
push edx
call fcn.00423a70
mov eax, dword [ebp - 0x2c]
push 0x5b68d0
lea ecx, [ebp + 0x10]
push eax
push ecx
call fcn.00423a70
mov dword [ebp - 0x44], ebx
mov eax, dword [ebp - 0x48]
lea ecx, [ebp - 0x44]
push ecx
push eax
mov edx, dword [eax]
mov byte [ebp - 4], 9
call dword [edx + 0x10]
test eax, eax
jl 0x4ac763
mov dword [ebp + 0xc], ebx
mov edx, dword [0x5d2ac0]
mov ecx, esi
mov byte [ebp - 4], 0xa
mov dword [ebp - 0x28], esi
call dword [edx + 4]
mov eax, dword [0x5cb048]
mov byte [ebp - 4], 0xb
cmp eax, ebx
jne 0x4ac313
cmp dword [0x5cb044], ebx
jne 0x4ac313
push 0x380
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x64], eax
cmp eax, ebx
mov byte [ebp - 4], 0xc
je 0x4ac2e9
push ebx
mov ecx, eax
call fcn.00414150
jmp 0x4ac2eb
xor eax, eax
mov dword [0x5cb044], eax
mov eax, dword [0x5b4b90]
push eax
push 0x406940
mov ecx, 0x5d0190
mov byte [ebp - 4], 0xb
call fcn.00406500
mov dword [0x5cb048], 1
mov edx, dword [0x5d2ac0]
mov edi, dword [0x5cb044]
mov ecx, esi
mov byte [ebp - 4], 0xa
call dword [edx + 8]
mov eax, dword [edi]
lea ecx, [ebp + 0xc]
push ecx
push edi
call dword [eax + 0x78]
mov eax, dword [ebp + 0xc]
mov edx, 0x5cabc0
test edx, edx
jne 0x4ac347
cmp eax, ebx
je 0x4ac3a4
jmp 0x4ac404
cmp eax, ebx
je 0x4ac404
mov eax, 0x5cabc0
test eax, eax
jne 0x4ac35c
xor edi, edi
jmp 0x4ac38d
push 0x5cabc0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.00550140
mov edi, esp
push esi
push edi
push 0xffffffffffffffff
push 0x5cabc0
push ebx
push ebx
mov word [edi], bx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ecx, dword [ebp + 0xc]
push edi
push ecx
call dword [sym.imp.MSVCRT.dll_wcscmp]
add esp, 8
test eax, eax
sete al
test al, al
je 0x4ac404
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x18f]
mov byte [ebp - 0x190], 0
rep stosd dword es:[edi], eax
lea edx, [ebp - 0x20]
mov dword [ebp - 0x20], ebx
stosw word es:[edi], ax
push edx
push 5
push ebx
stosb byte es:[edi], al
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov eax, dword [ebp - 0x20]
cmp eax, ebx
je 0x4ac404
lea ecx, [ebp - 0x190]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x4ac404
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea eax, [ebp - 0x190]
push 0xffffffffffffffff
push eax
call fcn.00406c60
add esp, 8
mov dword [ebp + 0xc], eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x44]
push ecx
push edx
push eax
push 0xa120e
push ebx
push ebx
push 1
lea ecx, [ebp - 0xf424]
call fcn.00446fd0
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 0xd
cmp eax, ebx
je 0x4ac439
mov ecx, dword [eax]
lea edx, [ebp - 0x68]
push edx
push eax
call dword [ecx + 0x24]
lea ecx, [ebp - 0xf424]
call fcn.004470c0
cmp eax, 1
jne 0x4ac74a
push 0x1c
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
mov dword [ebp - 0x28], esi
cmp esi, ebx
mov byte [ebp - 4], 0xe
je 0x4ac484
mov ecx, esi
call fcn.00451a50
mov ecx, 0x5d0510
mov byte [ebp - 4], 0xf
mov dword [esi], vtable.ATL::CComObject_class_CKMPArray_.0
call fcn.0050dcd0
mov dword [ebp - 0x14], esi
jmp 0x4ac489
mov dword [ebp - 0x14], ebx
mov esi, ebx
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0xd
call fcn.00447250
mov edi, dword [0x5cb0b8]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x10]
cmp eax, ebx
je 0x4ac4c5
mov ecx, dword [eax]
lea edx, [ebp - 0x64]
push edx
push eax
call dword [ecx + 0x90]
cmp dword [ebp - 0x64], ebx
je 0x4ac4c5
cmp edi, ebx
je 0x4ac4c5
mov ecx, edi
call fcn.00482ad0
mov dword [ebp - 0x18], ebx
mov eax, dword [edi]
lea ecx, [ebp - 0x18]
push ecx
push edi
mov byte [ebp - 4], 0x10
call dword [eax + 0xc0]
cmp dword [ebp - 0x20], ebx
je 0x4ac69e
lea edx, [ebp - 0x20]
lea ecx, [ebp - 0xf424]
push edx
call fcn.00447260
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov edi, eax
mov dword [ebp - 0x28], edi
push edi
lea ecx, [ebp - 0x78]
mov byte [ebp - 4], 0x11
mov word [ebp - 0x78], bx
call fcn.00479e50
mov eax, dword [esi + 0x10]
lea ecx, [esi + 8]
lea edx, [ebp - 0x78]
mov byte [ebp - 4], 0x12
push edx
push eax
call fcn.004af690
lea eax, [ebp - 0x78]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
cmp dword [ebp - 0x68], ebx
je 0x4ac68a
mov cl, byte [ebp + 0x17]
mov dword [ebp - 0x38], ebx
mov byte [ebp - 0x3c], cl
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0x13
call fcn.0052e7e0
lea edx, [ebp - 0x3c]
lea ecx, [ebp - 0x8c]
push edx
push edi
mov byte [ebp - 4], 0x14
call fcn.0052e850
mov ecx, dword [ebp - 0x38]
cmp ecx, ebx
je 0x4ac63d
mov eax, dword [ebp - 0x34]
sub eax, ecx
sar eax, 4
cmp eax, ebx
jle 0x4ac63d
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov dword [ebp - 0x5c], ebx
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x60], eax
jmp 0x4ac596
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x5c]
mov esi, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
mov eax, dword [eax + ecx + 4]
test eax, eax
je 0x4ac5a9
mov esi, eax
push 0xc
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x1c], eax
test eax, eax
mov byte [ebp - 4], 0x15
je 0x4ac5ca
push esi
mov ecx, eax
call fcn.00412730
mov esi, eax
jmp 0x4ac5cc
xor esi, esi
test esi, esi
mov byte [ebp - 4], 0x14
mov dword [ebp - 0x1c], esi
jne 0x4ac5e1
push 0x8007000e
call fcn.005505fa
test esi, esi
mov byte [ebp - 4], 0x16
je 0x4ac5ed
mov eax, dword [esi]
jmp 0x4ac5ef
xor eax, eax
push eax
lea ecx, [ebp - 0x58]
mov word [ebp - 0x58], 0
call fcn.00479e50
mov eax, dword [ebx + 0x10]
lea ecx, [ebx + 8]
lea edx, [ebp - 0x58]
mov byte [ebp - 4], 0x17
push edx
push eax
call fcn.004af690
lea eax, [ebp - 0x58]
push eax
call edi
test esi, esi
mov byte [ebp - 4], 0x14
je 0x4ac627
mov ecx, esi
call fcn.00412770
mov ecx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x60]
add ecx, 0x10
dec eax
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x60], eax
jne 0x4ac593
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0x13
call fcn.0052e820
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp - 0x38]
cmp esi, edi
mov byte [ebp - 4], 0x11
je 0x4ac670
xor ebx, ebx
push ebx
mov ecx, esi
call fcn.0046dcd0
add esi, 0x10
cmp esi, edi
jne 0x4ac65c
mov esi, dword [ebp - 0x38]
jmp 0x4ac672
xor ebx, ebx
push esi
call sub.MFC42.DLL_operatordelete
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp - 0x28]
add esp, 4
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
push edi
mov byte [ebp - 4], 0x10
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp dword [ebp - 0x20], ebx
jne 0x4ac4e2
cmp dword [ebp - 0x40], ebx
je 0x4ac6b3
mov ecx, dword [0x5cb258]
cmp ecx, ebx
je 0x4ac6b3
push ebx
call fcn.004ea1c0
mov edx, dword [ebp + 0x14]
mov ecx, dword [esi]
push edx
push 0x5bffb0
push esi
call dword [ecx]
mov edi, eax
mov eax, dword [ebp - 0x18]
cmp eax, ebx
mov byte [ebp - 4], 0xd
je 0x4ac6d4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0xa
call fcn.0044d1e0
mov edx, dword [ebp + 0xc]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edx
call esi
mov eax, dword [ebp - 0x44]
push eax
call esi
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x4ac706
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x48]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x4ac717
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x4ac728
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, edi
jmp 0x4acdb6
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0xa
call fcn.0044d1e0
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 4
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp dword [ebp - 0x40], ebx
je 0x4ac786
mov ecx, dword [0x5cb258]
cmp ecx, ebx
je 0x4ac786
push ebx
call fcn.004ea1c0
mov eax, dword [ebp + 0x10]
mov byte [ebp - 4], 3
cmp eax, ebx
je 0x4ac797
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x48]
mov byte [ebp - 4], 2
cmp eax, ebx
je 0x4ac7a8
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [ebp - 0x2c]
mov byte [ebp - 4], 1
cmp eax, ebx
je 0x4acd96
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x4acd96
mov edx, dword [ebp - 0x10]
push str.DT_EQFILE
push edx
call edi
add esp, 8
test eax, eax
jne 0x4aca92
push esi
lea ecx, [ebp + 0xc]
call sub.MFC42.DLL_CString::CString_1
mov eax, dword [ebp + 0xc]
push str.save
push eax
mov byte [ebp - 4], 0x18
call edi
add esp, 8
test eax, eax
push ebx
jne 0x4ac93e
mov ecx, dword [ebp - 0x14]
push ecx
push 0x5b6f98
push 0xa000e
push ebx
push 0x5b6f90
push ebx
lea ecx, [ebp - 0xf424]
call fcn.00446fd0
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0x19
call fcn.004470c0
cmp eax, 1
jne 0x4ac92f
push 0x1c
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
mov dword [ebp - 0x1c], esi
cmp esi, ebx
mov byte [ebp - 4], 0x1a
je 0x4ac868
mov ecx, esi
call fcn.00451a50
mov ecx, 0x5d0510
mov byte [ebp - 4], 0x1b
mov dword [esi], vtable.ATL::CComObject_class_CKMPArray_.0
call fcn.0050dcd0
jmp 0x4ac86a
xor esi, esi
lea ecx, [ebp - 0xf424]
mov dword [ebp - 0x18], esi
mov byte [ebp - 4], 0x19
call fcn.00447250
cmp eax, ebx
mov dword [ebp + 0x10], eax
je 0x4ac8e2
lea edi, [esi + 8]
lea edx, [ebp + 0x10]
lea ecx, [ebp - 0xf424]
push edx
call fcn.00447260
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, eax
mov dword [ebp - 0x1c], esi
push esi
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x1c
mov word [ebp - 0x58], bx
call fcn.00479e50
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x58]
push ecx
push eax
mov ecx, edi
mov byte [ebp - 4], 0x1d
call fcn.004af690
lea edx, [ebp - 0x58]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
push esi
mov byte [ebp - 4], 0x19
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp dword [ebp + 0x10], ebx
jne 0x4ac886
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp + 0x14]
mov eax, dword [esi]
push ecx
push 0x5bffb0
push esi
call dword [eax]
lea ecx, [ebp - 0xf424]
mov esi, eax
mov byte [ebp - 4], 0x18
call fcn.0044d1e0
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, esi
jmp 0x4acdb6
mov byte [ebp - 4], 0x18
lea ecx, [ebp - 0xf424]
jmp 0x4aca7c
mov edx, dword [ebp - 0x14]
lea ecx, [ebp - 0xf424]
push edx
push 0x5b6f98
push 0xa120e
push ebx
push 0x5b6f90
push 1
call fcn.00446fd0
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0x1e
call fcn.004470c0
cmp eax, 1
jne 0x4aca72
push 0x1c
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
mov dword [ebp - 0x1c], esi
cmp esi, ebx
mov byte [ebp - 4], 0x1f
je 0x4ac9ab
mov ecx, esi
call fcn.00451a50
mov ecx, 0x5d0510
mov byte [ebp - 4], 0x20
mov dword [esi], vtable.ATL::CComObject_class_CKMPArray_.0
call fcn.0050dcd0
jmp 0x4ac9ad
xor esi, esi
lea ecx, [ebp - 0xf424]
mov dword [ebp - 0x18], esi
mov byte [ebp - 4], 0x1e
call fcn.00447250
cmp eax, ebx
mov dword [ebp + 0x10], eax
je 0x4aca25
lea edi, [esi + 8]
lea eax, [ebp + 0x10]
lea ecx, [ebp - 0xf424]
push eax
call fcn.00447260
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, eax
mov dword [ebp - 0x1c], esi
push esi
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x21
mov word [ebp - 0x58], bx
call fcn.00479e50
mov eax, dword [edi + 8]
lea ecx, [ebp - 0x58]
push ecx
push eax
mov ecx, edi
mov byte [ebp - 4], 0x22
call fcn.004af690
lea edx, [ebp - 0x58]
push edx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
push esi
mov byte [ebp - 4], 0x1e
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp dword [ebp + 0x10], ebx
jne 0x4ac9c9
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp + 0x14]
mov eax, dword [esi]
push ecx
push 0x5bffb0
push esi
call dword [eax]
lea ecx, [ebp - 0xf424]
mov esi, eax
mov byte [ebp - 4], 0x18
call fcn.0044d1e0
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, esi
jmp 0x4acdb6
mov byte [ebp - 4], 0x18
lea ecx, [ebp - 0xf424]
call fcn.0044d1e0
lea ecx, [ebp + 0xc]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
jmp 0x4acd96
mov edx, dword [ebp - 0x10]
push str.DT_FILE
push edx
call edi
add esp, 8
test eax, eax
jne 0x4acbf5
mov eax, dword [ebp - 0x14]
push ebx
push eax
push ebx
push 0xa120e
push ebx
push ebx
push 1
lea ecx, [ebp - 0xf424]
call fcn.00446fd0
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 0x23
call fcn.004470c0
cmp eax, 1
jne 0x4acbe1
push 0x1c
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
mov dword [ebp + 0x10], esi
cmp esi, ebx
mov byte [ebp - 4], 0x24
je 0x4acb0e
mov ecx, esi
call fcn.00451a50
mov ecx, 0x5d0510
mov byte [ebp - 4], 0x25
mov dword [esi], vtable.ATL::CComObject_class_CKMPArray_.0
call fcn.0050dcd0
jmp 0x4acb10
xor esi, esi
lea ecx, [ebp - 0xf424]
mov dword [ebp + 0x10], esi
mov byte [ebp - 4], 0x23
call fcn.00447250
cmp eax, ebx
mov dword [ebp + 0xc], eax
je 0x4acba0
lea ebx, [esi + 8]
lea ecx, [ebp + 0xc]
push ecx
lea ecx, [ebp - 0xf424]
call fcn.00447260
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov edi, eax
mov dword [ebp - 0x1c], edi
push edi
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x26
mov word [ebp - 0x58], 0
call fcn.00479e50
mov esi, dword [ebx + 8]
push 0xffffffffffffffff
mov ecx, ebx
mov byte [ebp - 4], 0x27
lea edx, [esi + 1]
push edx
call fcn.00451d90
mov eax, dword [ebx + 4]
shl esi, 4
add esi, eax
lea eax, [ebp - 0x58]
mov ecx, esi
push eax
call fcn.004af1c0
lea ecx, [ebp - 0x58]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
push edi
mov byte [ebp - 4], 0x23
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x4acb2c
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
mov edx, dword [esi]
push eax
push 0x5bffb0
push esi
call dword [edx]
lea ecx, [ebp - 0xf424]
mov esi, eax
mov byte [ebp - 4], 1
call fcn.0044d1e0
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, esi
jmp 0x4acdb6
lea ecx, [ebp - 0xf424]
mov byte [ebp - 4], 1
call fcn.0044d1e0
jmp 0x4acd96
mov ecx, dword [ebp - 0x10]
push str.DT_FOLDER
push ecx
call edi
add esp, 8
test eax, eax
jne 0x4acd96
push ebx
push ebx
push ebx
lea ecx, [ebp - 0x3c8]
call fcn.004478d0
lea ecx, [ebp - 0x3c8]
mov byte [ebp - 4], 0x28
call fcn.00447a60
cmp eax, 1
jne 0x4acd87
lea edx, [ebp + 0x10]
lea ecx, [ebp - 0x3c8]
push edx
call fcn.00447ae0
mov eax, dword [eax]
push ebx
push ebx
push 0xffffffffffffffff
push eax
push ebx
push ebx
mov dword [ebp + 0xc], eax
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
dec esi
push esi
push ebx
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov edi, eax
cmp edi, ebx
je 0x4acc73
mov eax, dword [ebp + 0xc]
push esi
push edi
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov dword [ebp - 0x1c], edi
lea ecx, [ebp + 0x10]
mov byte [ebp - 4], 0x29
call sub.MFC42.DLL_CString::CString
push 0x1c
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 4
mov dword [ebp + 0xc], esi
cmp esi, ebx
mov byte [ebp - 4], 0x2a
je 0x4accb9
mov ecx, esi
call fcn.00451a50
mov ecx, 0x5d0510
mov byte [ebp - 4], 0x2b
mov dword [esi], vtable.ATL::CComObject_class_CKMPArray_.0
call fcn.0050dcd0
mov dword [ebp + 0xc], esi
jmp 0x4accbc
mov dword [ebp + 0xc], ebx
lea ecx, [ebp - 0x3c]
mov word [ebp - 0x3c], bx
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
cmp eax, ebx
jge 0x4accd1
mov dword [ebp - 0x34], eax
push edi
mov word [ebp - 0x3c], 8
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
cmp eax, ebx
mov dword [ebp - 0x34], eax
jne 0x4accf6
cmp edi, ebx
je 0x4accf6
mov word [ebp - 0x3c], 0xa
mov dword [ebp - 0x34], 0x8007000e
mov edx, dword [ebp + 0xc]
push 0xffffffffffffffff
mov byte [ebp - 4], 0x2c
mov esi, dword [edx + 0x10]
lea ecx, [edx + 8]
lea eax, [esi + 1]
push eax
call fcn.00451d90
mov ecx, dword [ebp + 0xc]
lea edx, [ebp - 0x3c]
shl esi, 4
lea eax, [ecx + 8]
push edx
add esi, dword [eax + 4]
push esi
call dword [sym.imp.OLEAUT32.dll_VariantCopyInd]
cmp eax, ebx
jge 0x4acd31
mov word [esi], 0xa
mov dword [esi + 8], eax
lea eax, [ebp - 0x3c]
mov byte [ebp - 4], 0x29
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x14]
push edx
push 0x5bffb0
mov ecx, dword [eax]
push eax
call dword [ecx]
push edi
mov esi, eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea ecx, [ebp - 0x3c8]
mov byte [ebp - 4], 1
call fcn.004479d0
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, esi
jmp 0x4acdb6
lea ecx, [ebp - 0x3c8]
mov byte [ebp - 4], 1
call fcn.004479d0
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x10]
mov dword [ebp - 4], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 0x80004005
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xf430]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10