Function at 0x401280
Capabilities:
Get common file path
Set current directory
Write file on windows

Disassembly:
jmp 0x435e00
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x451263
push eax
mov eax, 0x19834
mov dword fs:[0], esp
call fcn.0044d7b0
push ebx
push ebp
mov ebp, ecx
push esi
push edi
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
xor esi, esi
push 0x80
mov dword [esp + 0x19850], esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
mov ebx, dword [esp + 0x19854]
mov eax, dword [ebx + 4]
mov dword [eax + 0x5ec], esi
mov ecx, dword [ebx + 4]
lea eax, [ebp + 0x520]
mov dword [ecx + 0x5f0], esi
push eax
lea ecx, [esp + 0x14]
mov dword [ebp + 0xb9e0], 1
call fcn.0044cea6
push str.model
lea ecx, [esp + 0x14]
mov byte [esp + 0x19850], 1
call fcn.0044d1d0
push 0x460f1c
lea ecx, [esp + 0x14]
call fcn.0044d1d0
lea edx, [ebp + 0x3ec]
lea ecx, [esp + 0x10]
push edx
call sub.MFC42.DLL_CString::operator
push 0x460f1c
lea ecx, [esp + 0x14]
call fcn.0044d1d0
lea eax, [esp + 0x36c]
push eax
push 0x64
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push esi
push str.PIM_Files__.pim___.pim__All_Files__.___._
push 0x80004
push 0x464f78
push esi
push esi
lea ecx, [esp + 0x188]
call sub.MFC42.DLL_CFileDialog::CFileDialog
lea ecx, [esp + 0x170]
mov byte [esp + 0x1984c], 2
call sub.MFC42.DLL_CFileDialog::DoModal
cmp eax, 1
je 0x435f1d
mov byte [esp + 0x1984c], 3
jmp 0x436382
lea edx, [esp + 0x30]
lea ecx, [esp + 0x170]
push edx
call sub.MFC42.DLL_CFileDialog::GetFileName
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x19850], 4
call sub.MFC42.DLL_CString::operator_1
lea ecx, [esp + 0x30]
mov byte [esp + 0x1984c], 2
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x14]
push 0x469398
push eax
call dword [sym.imp.MSVCRT.dll_fopen]
add esp, 8
lea ecx, [esp + 0x60]
mov dword [esp + 0x30], eax
push esi
push esi
call fcn.004015c3
push ebp
lea ecx, [esp + 0x64]
mov byte [esp + 0x19850], 5
call fcn.004010e1
push 5
lea ecx, [esp + 0x64]
call sub.MFC42.DLL_CWnd::ShowWindow
lea ecx, [esp + 0xc4]
mov edi, str.Dp700
mov dword [ebp + 0x3c8], ecx
or ecx, 0xffffffff
xor eax, eax
lea esi, [ebp + 0xba14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Dp700
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x435ff0
mov edi, str.Dp900
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Dp900
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x435ff0
push 0x258
jmp 0x435ff5
push 0xdac
mov ecx, ebp
call fcn.00402185
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 4]
xor esi, esi
mov ecx, ebp
mov dword [eax + 0x120], esi
call fcn.004014a1
test eax, eax
jne 0x43605d
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 7
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 6
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 8
jmp 0x436382
lea ecx, [esp + 0x34]
call fcn.0044cd0e
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1984c], 9
call sub.MFC42.DLL_CException::CException
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0xa
call sub.MFC42.DLL_CString::CString_1
push esi
lea ecx, [esp + 0x30]
mov byte [esp + 0x19850], 0xb
mov dword [esp + 0x20], 0x45802c
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], 0xffffffff
call fcn.0044cfde
lea edi, [ebp + 0x520]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x3d0]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x1984c], 0xc
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x3d0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.group4_8.ram
or ecx, 0xffffffff
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.Dp700
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea esi, [ebp + 0xba14]
push ecx
push str.Dp700
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x436166
mov edi, str.Dp900
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Dp900
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x436166
lea edx, [esp + 0x44]
mov edi, str.3000.bin
jmp 0x43616f
lea edx, [esp + 0x44]
mov edi, str.d900.bin
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x3d0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1c]
xor edi, edi
push ecx
push edi
push edx
lea ecx, [esp + 0x40]
call sub.MFC42.DLL_CFile::Open
test eax, eax
jne 0x43626a
lea eax, [esp + 0x3d0]
lea ecx, [esp + 0x4d4]
push eax
push str.Cant_open__s
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea edx, [esp + 0x4d4]
push edi
push edi
push edx
call sub.MFC42.DLL_AfxMessageBox
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 4]
mov dword [eax + 0x120], 1
mov dword [ebp + 0xb9d8], edi
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0xd
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0xf
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0xe
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x10
jmp 0x436382
lea eax, [esp + 0x113c]
push 0x18708
push eax
lea ecx, [esp + 0x3c]
call sub.MFC42.DLL_CFile::Read
cmp eax, 0x18708
jne 0x4362c4
mov esi, dword [sym.imp.MSVCRT.dll__stricmp]
lea ecx, [esp + 0x44]
lea edx, [esp + 0x113c]
push ecx
push edx
call esi
add esp, 8
test eax, eax
je 0x4363e4
lea eax, [esp + 0x113c]
push 0x18708
push eax
lea ecx, [esp + 0x3c]
call sub.MFC42.DLL_CFile::Read
cmp eax, 0x18708
je 0x43628d
lea eax, [esp + 0x44]
lea ecx, [esp + 0x600]
push eax
push str.Cant_find__s_in_GroupFile
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea edx, [esp + 0x600]
push edi
push edi
push edx
call sub.MFC42.DLL_AfxMessageBox
call sub.MFC42.DLL_AfxGetModuleState
mov eax, dword [eax + 4]
lea ecx, [esp + 0x34]
mov dword [eax + 0x120], 1
mov dword [ebp + 0xb9d8], edi
call sub.MFC42.DLL_CFile::Close
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x11
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x13
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x12
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x14
lea ecx, [esp + 0x220]
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x170]
mov byte [esp + 0x1984c], 1
call fcn.0044cf84
lea ecx, [esp + 0x10]
mov byte [esp + 0x1984c], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x1984c], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x19844]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x19840
ret 4
mov ecx, dword [ebp + 0x5c8]
mov eax, dword [esp + 0x11a0]
cmp ecx, edi
mov dword [ebp + 0x5c4], eax
jne 0x43640f
add eax, 0x100
push eax
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp + 0x5c8], eax
mov ecx, dword [ebp + 0x5c4]
mov eax, dword [ebp + 0x5c8]
lea edx, [esp + 0x11a4]
push ecx
push edx
push eax
call dword [sym.imp.MSVCRT.dll_memmove]
add esp, 0xc
lea ecx, [esp + 0x34]
call sub.MFC42.DLL_CFile::Close
mov esi, 1
mov dword [ebp + 0x5c0], edi
mov dword [ebp + 0x5cc], esi
mov dword [ebp + 0xb9d8], esi
mov ecx, dword [ebx + 4]
push ebx
mov dword [ecx + 0x5ec], edi
mov edx, dword [ebx + 4]
mov ecx, ebp
mov dword [edx + 0x5f0], edi
mov dword [ebp + 0xb9e0], esi
mov dword [ebp + 0xba2c], esi
call fcn.00401d16
mov eax, dword [ebx + 4]
push ebx
mov ecx, ebp
mov dword [eax + 0x5ec], esi
call fcn.004013ed
test eax, eax
jne 0x436511
push edi
push edi
push str.RAM_Writing_fail
call sub.MFC42.DLL_AfxMessageBox
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x15
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x17
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x16
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x18
jmp 0x436382
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x1f4
call edi
mov ecx, dword [ebx + 4]
push ebx
mov dword [ecx + 0x5f0], esi
mov ecx, ebp
call fcn.00402199
test eax, eax
jne 0x4365bb
push eax
push eax
push str.DownLoadGo_fail
call sub.MFC42.DLL_AfxMessageBox
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x19
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x1b
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x1a
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x1c
jmp 0x436382
push 0x3e8
call edi
push 0
push 0x1c200
mov ecx, ebp
call fcn.00402153
mov edi, str.SD86
or ecx, 0xffffffff
xor eax, eax
lea esi, [ebp + 0xba14]
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.SD86
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x43661c
mov edi, str.PLP04
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.PLP04
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
jne 0x436637
cmp dword [ebp + 0xba44], 1
jne 0x436637
mov esi, 0x1dffff
mov dword [esp + 0x18], 0x1c0000
jmp 0x4366d4
mov edi, str.SD84AM
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.SD84AM
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
jne 0x436672
cmp dword [ebp + 0xbaa4], 1
jne 0x436672
mov esi, 0x1cffff
mov dword [esp + 0x18], 0x1b0000
jmp 0x4366d4
mov edi, str.Dp700
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Dp700
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x4366c7
mov edi, str.Dp900
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Dp900
push esi
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
je 0x4366c7
mov esi, 0x1fffff
mov dword [esp + 0x18], 0x1e0000
jmp 0x4366d4
mov esi, 0xbfffff
mov dword [esp + 0x18], 0xb00000
mov edi, dword [sym.imp.MSVCRT.dll_fwrite]
mov ecx, ebp
call fcn.00401370
mov eax, dword [esp + 0x18]
push ebx
mov edx, eax
mov ecx, eax
shr edx, 0x10
mov byte [esp + 0x733], al
mov eax, dword [ebx]
shr ecx, 8
mov byte [esp + 0x731], dl
mov byte [esp + 0x732], cl
lea edx, [esp + 0x730]
add eax, 0x107c
mov ecx, ebp
mov byte [esp + 0x730], 0x44
mov byte [esp + 0x735], 0
mov byte [esp + 0x734], 1
mov dword [ebx + 0x14], 6
mov dword [ebx + 0xc], edx
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x18], 0x1388
call fcn.0040202c
cmp eax, 0x17
je 0x436817
mov ecx, dword [ebx + 4]
mov eax, dword [ecx + 0x5ac]
test eax, eax
je 0x436817
mov eax, dword [ebx]
mov edx, dword [esp + 0x30]
add eax, 0x107c
push edx
push pe_nt_image_headers32
inc eax
push 1
push eax
call edi
mov eax, dword [esp + 0x28]
add esp, 0x10
add eax, 0x100
cmp eax, esi
mov dword [esp + 0x18], eax
jb 0x4366da
push ebx
mov ecx, ebp
call fcn.00401ec4
test eax, eax
jne 0x4368c3
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x21
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x23
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x22
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x24
jmp 0x436382
push 0
push 0
push str.PIM_Read_Failed.._Retry____
call sub.MFC42.DLL_AfxMessageBox
mov eax, dword [ebx + 4]
push 0
push 8
mov ecx, ebp
mov dword [eax + 0x5ec], 0
call fcn.0040168b
push 0
push 0x9600
mov ecx, ebp
call fcn.00402153
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x1d
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x1f
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x1e
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
mov byte [esp + 0x1984c], 0x20
jmp 0x436382
push 0
push 0x9600
mov ecx, ebp
call fcn.00402153
mov ecx, dword [esp + 0x30]
push ecx
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
lea ecx, [esp + 0x60]
call sub.MFC42.DLL_CWnd::DestroyWindow
lea edx, [esp + 0x36c]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov dword [ebp + 0xba2c], 0
mov dword [esp + 0x1c], 0x45802c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1984c], 0x25
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], 0x455288
mov byte [esp + 0x1984c], 5
call sub.MFC42.DLL_CFile::CFile
lea ecx, [esp + 0x130]
mov byte [esp + 0x1984c], 0x27
call sub.MFC42.DLL_CAnimateCtrl::CAnimateCtrl
lea ecx, [esp + 0xc4]
mov byte [esp + 0x1984c], 0x26
call fcn.004018d4
lea ecx, [esp + 0x60]
mov byte [esp + 0x1984c], 2
call fcn.0044cf84
lea ecx, [esp + 0x220]
mov byte [esp + 0x1984c], 0x28
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x170]
mov byte [esp + 0x1984c], 1
call fcn.0044cf84
lea ecx, [esp + 0x10]
mov byte [esp + 0x1984c], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x1984c], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x4363c9