Function at 0x40d0e0
Capabilities:
Get common file path
Get program files directory

Disassembly:
push 0xffffffffffffffff
push 0x420d0b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x108
mov eax, dword [esp + 0x118]
push ebx
push ebp
push esi
push edi
mov ebp, ecx
push eax
push 0x69
mov dword [esp + 0x1c], ebp
call sub.MFC42.DLL_CDialog::CDialog
xor ebx, ebx
mov dword [ebp + 0x60], 0x424d74
mov dword [esp + 0x120], ebx
lea esi, [ebp + 0x64]
mov byte [esp + 0x120], 1
mov ecx, esi
call sub.MFC42.DLL_CWnd::CWnd
mov dword [esi], 0x4252a0
lea esi, [ebp + 0xa4]
mov byte [esp + 0x120], 2
mov ecx, esi
call sub.MFC42.DLL_CWnd::CWnd
mov dword [esi], 0x4252a0
lea esi, [ebp + 0xe4]
mov byte [esp + 0x120], 3
mov ecx, esi
call sub.MFC42.DLL_CWnd::CWnd
mov dword [esi], 0x4251e0
lea esi, [ebp + 0x124]
mov byte [esp + 0x120], 4
mov ecx, esi
call sub.MFC42.DLL_CWnd::CWnd
mov dword [esi], 0x4252a0
lea edi, [ebp + 0x164]
mov byte [esp + 0x120], 5
mov ecx, edi
call sub.MFC42.DLL_CString::CString_3
lea ecx, [ebp + 0x16c]
mov byte [esp + 0x120], 6
call sub.MFC42.DLL_CString::CString_3
lea ecx, [ebp + 0x170]
mov byte [esp + 0x120], 7
call sub.MFC42.DLL_CString::CString_3
lea ecx, [ebp + 0x174]
mov byte [esp + 0x120], 8
call sub.MFC42.DLL_CString::CString_3
lea ecx, [ebp + 0x180]
mov byte [esp + 0x120], 9
call sub.MFC42.DLL_CString::CString_3
lea esi, [ebp + 0x184]
mov byte [esp + 0x120], 0xa
mov ecx, esi
mov dword [esp + 0x10], esi
call fcn.0041fb7a
mov dword [esi], 0x424d60
lea ecx, [esi + 0x14]
mov byte [esp + 0x120], 0xb
call fcn.0041fb7a
mov dword [esi + 0x14], 0x424d60
lea ecx, [esi + 0x2c]
mov byte [esp + 0x120], 0xc
mov dword [esi + 0x28], ebx
call fcn.0040d530
xor ecx, ecx
mov dword [esi + 0x190], ebx
mov dword [esi + 0x194], ecx
mov dword [esi + 0x198], ecx
mov dword [esi + 0x19c], ecx
mov dword [esi + 0x1a0], ecx
mov dword [esi + 0x1a4], ecx
mov byte [esi + 0x1a8], bl
mov dword [esi + 0x1ac], ebx
mov dword [esi + 0x1b8], ebx
lea ecx, [ebp + 0x360]
mov byte [esp + 0x120], 0xd
call sub.MFC42.DLL_CStringArray::CStringArray
lea esi, [ebp + 0x3b0]
mov byte [esp + 0x120], 0xe
mov ecx, esi
call fcn.0041fb7a
mov dword [esi], 0x424d60
lea ecx, [ebp + 0x3c4]
mov byte [esp + 0x120], 0xf
call fcn.0041fb7a
lea esi, [ebp + 0x3d8]
mov byte [esp + 0x120], 0x10
mov ecx, esi
call fcn.0041fb7a
mov dword [esi], 0x424d60
lea esi, [ebp + 0x3ec]
mov byte [esp + 0x120], 0x11
mov ecx, esi
call fcn.0041fb7a
mov dword [esi], 0x424d60
lea ecx, [ebp + 0x400]
mov byte [esp + 0x120], 0x12
call sub.MFC42.DLL_CStringArray::CStringArray
lea ecx, [ebp + 0x414]
mov byte [esp + 0x120], 0x13
call sub.MFC42.DLL_CStringArray::CStringArray
push 0x43ee00
mov ecx, edi
mov byte [esp + 0x124], 0x14
mov dword [ebp], 0x425108
mov dword [ebp + 0x60], 0x425100
call fcn.0041f8a4
push 0x43ee00
lea ecx, [ebp + 0x16c]
mov dword [ebp + 0x168], 0xffffffff
call fcn.0041f8a4
push 0x43ee00
lea ecx, [ebp + 0x170]
call fcn.0041f8a4
push 0x43ee00
lea ecx, [ebp + 0x174]
call fcn.0041f8a4
push 0x43ee00
lea ecx, [ebp + 0x180]
mov dword [ebp + 0x178], ebx
mov dword [ebp + 0x17c], ebx
call fcn.0041f8a4
push 1
mov ecx, ebp
mov byte [ebp + 0x344], bl
mov dword [ebp + 0x348], ebx
mov dword [ebp + 0x34c], ebx
mov dword [ebp + 0x350], ebx
mov dword [ebp + 0x354], ebx
mov dword [ebp + 0x358], ebx
mov dword [ebp + 0x35c], ebx
call fcn.0040da60
mov edx, dword [edi]
cmp dword [edx - 8], ebx
jne 0x40d402
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 4]
push 0x43ee00
push str.ROOTDIR
lea ecx, [esp + 0x18]
push str.BROWSER
push ecx
mov ecx, eax
call sub.MFC42.DLL_CWinApp::GetProfileStringA
push eax
mov ecx, edi
mov byte [esp + 0x124], 0x15
call fcn.0041f8b0
lea ecx, [esp + 0x10]
mov byte [esp + 0x120], 0x14
call sub.MFC42.DLL_CString::CString
mov edx, dword [edi]
cmp dword [edx - 8], ebx
jne 0x40d4cb
push edi
mov ecx, ebp
call fcn.00412610
mov eax, dword [edi]
cmp dword [eax - 8], ebx
jne 0x40d4bb
cmp ebp, ebx
jne 0x40d428
xor eax, eax
jmp 0x40d42b
mov eax, dword [ebp + 0x20]
push ebx
lea ecx, [esp + 0x1c]
push 0x26
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
lea edi, [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [esp + ecx + 0x17], 0x5c
je 0x40d47d
mov edi, 0x42b04c
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x18]
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
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.Warcraft_III_
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x18]
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 + 0x18]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp + 0x164]
call fcn.0041f8a4
push str.replay_
lea ecx, [ebp + 0x164]
call sub.MFC42.DLL_CString::operator
lea edx, [ebp + 0x374]
mov ecx, 0x1010101
pop edi
pop esi
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov eax, ecx
mov word [edx + 8], cx
lea ecx, [ebp + 0x384]
mov dword [ebp + 0x380], ebx
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov edx, eax
mov word [ecx + 8], ax
lea eax, [ebp + 0x394]
mov dword [ebp + 0x390], ebx
mov ecx, dword [esp + 0x110]
mov dword [eax], edx
mov dword [eax + 4], edx
mov word [eax + 8], dx
mov dword [ebp + 0x3a0], ebx
mov eax, ebp
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x114
ret 4