Function at 0x445910
Capabilities:
Delete file
Move file

Disassembly:
sub esp, 0xbd0
mov ecx, dword [0x6562b4]
push ebx
push ebp
push esi
xor esi, esi
push edi
push esi
call sub.MFC42.DLL_CMDIFrameWnd::MDIGetActive
mov ecx, eax
call sub.MFC42.DLL_CFrameWnd::GetActiveView
mov ebx, dword [esp + 0xbe4]
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], esi
mov eax, dword [ebx + 0x14]
lea ebp, [ebx + 0x138]
mov dword [esp + 0x1c], eax
cmp byte [ebp], 0
je 0x445da5
mov edi, dword [esp + 0xbe8]
cmp edi, 0x4e22
je 0x445da5
cmp edi, 0x4e2f
je 0x445da5
cmp word [0x655be4], si
push esi
je 0x445d1c
lea ecx, [esp + 0x3a0]
lea edx, [esp + 0x29c]
push ecx
lea eax, [esp + 0x20]
push edx
push eax
push ebp
call dword [sym.imp.MSVCRT.dll__splitpath]
add esp, 0x14
lea ecx, [esp + 0x9dc]
push str.INXXXXXX
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edi, dword [sym.imp.MSVCRT.dll__makepath]
mov dword [esp + 0x10], esi
mov esi, 1
or eax, 0xffffffff
cmp word [0x655be4], si
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
jb 0x445a80
push esi
lea edx, [esp + 0x164]
push str.B_02d
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x16c]
lea ecx, [esp + 0x3a8]
push eax
lea edx, [esp + 0x2a8]
push ecx
lea eax, [esp + 0x2c]
push edx
lea ecx, [esp + 0x1ac]
push eax
push ecx
call edi
add esp, 0x20
lea edx, [esp + 0x49c]
lea eax, [esp + 0x194]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x445a7c
lea ecx, [esp + 0x20]
lea edx, [esp + 0x4b0]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
test eax, eax
jge 0x445a65
mov eax, dword [esp + 0x4b0]
mov ecx, dword [esp + 0x4b4]
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov edx, dword [0x655be4]
inc esi
and edx, 0xffff
cmp esi, edx
jle 0x4459db
jmp 0x445a80
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x12c]
push eax
push str.B_02d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x138]
lea eax, [esp + 0x3a8]
push edx
lea ecx, [esp + 0x2a8]
push eax
lea edx, [esp + 0x2c]
push ecx
lea eax, [esp + 0x1ac]
push edx
push eax
call edi
lea ecx, [esp + 0x9fc]
push ecx
call dword [sym.imp.MSVCRT.dll__mktemp]
add esp, 0x24
test eax, eax
jne 0x445af1
push 0x19fc
push 0x40
push eax
call fcn.004c8a30
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbd0
ret
lea edx, [esp + 0x5dc]
lea ecx, [esp + 0x6dc]
push edx
push ecx
push 0
push 0
push eax
call dword [sym.imp.MSVCRT.dll__splitpath]
lea edx, [esp + 0x5f0]
lea eax, [esp + 0x6f0]
push edx
lea ecx, [esp + 0x2b0]
push eax
lea edx, [esp + 0x34]
push ecx
lea eax, [esp + 0x48]
push edx
push eax
call edi
add esp, 0x28
lea ecx, [esp + 0x14]
lea edx, [esp + 0x7dc]
lea eax, [esp + 0x28]
push ecx
push 0
push 0x11012
push edx
push eax
mov dword [esp + 0x28], 0
call fcn.00425060
add esp, 8
push eax
call dword [sym.imp.ole32.dll_StgCreateDocfile]
test eax, eax
jge 0x445b74
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xbd0
ret
call dword [sym.imp.USER32.dll_GetCursor]
push 0x7f02
mov ecx, 0x6561a0
mov dword [esp + 0x20], eax
call fcn.00407360
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 0
push str.Creating_Bak_file
push 1
call fcn.004ce9e0
push 0
push 0
push 0x55
push ebx
call fcn.0042f000
mov edx, dword [esp + 0x30]
mov eax, dword [ebx + 0xa1c]
add esp, 0x1c
lea esi, [ebx + 0xa1c]
mov ecx, dword [eax]
push edx
push 0x5038cc
push 0
push 0
push eax
call dword [ecx + 0x1c]
mov edi, eax
push 1
mov dword [esp + 0x14], edi
call fcn.004ceb90
call fcn.004ceb00
push 0
push 0
push 0xffffffffffffffff
call fcn.004ce9e0
add esp, 0x10
test edi, edi
mov edi, dword [sym.imp.MSVCRT.dll_remove]
jl 0x445c11
mov eax, dword [esp + 0x14]
push eax
push ebx
call fcn.004456f0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jge 0x445c27
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea edx, [esp + 0x28]
push edx
call edi
add esp, 4
jmp 0x445c37
mov eax, dword [esp + 0x14]
push 0
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x445d07
mov edx, dword [esp + 0xbe8]
push 0
push ebp
push edx
call fcn.004404a0
mov ecx, dword [ebx + 0xa3c]
add esp, 0xc
call fcn.00419690
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x64]
lea eax, [esp + 0x194]
push eax
call edi
mov ecx, dword [ebx + 0xa3c]
add esp, 4
call fcn.00419690
mov ecx, eax
call fcn.00451210
mov eax, dword [esi]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov edi, dword [sym.imp.MSVCRT.dll_rename]
lea edx, [esp + 0x194]
push edx
push ebp
call edi
add esp, 8
call dword [sym.imp.MSVCRT.dll__errno]
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea edx, [esp + 0x28]
push ebp
push edx
call edi
add esp, 8
call dword [sym.imp.MSVCRT.dll__errno]
push esi
push 0
push 0
push 0x10022
lea eax, [esp + 0x7ec]
push 0
push eax
push ebp
mov dword [esi], 0
call fcn.00425060
add esp, 8
push eax
call dword [sym.imp.ole32.dll_StgOpenStorage]
mov ecx, dword [ebx + 0xa3c]
push ebx
mov dword [esp + 0x14], eax
call fcn.00419690
mov ecx, eax
call fcn.004511f0
call fcn.004ceb00
mov ecx, dword [esp + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_SetCursor]
jmp 0x44613c
push esi
push 0xffffffffffffffff
call fcn.004ce9e0
mov edx, dword [ebx + 0xa1c]
push edx
push ebx
call fcn.004456f0
add esp, 0x14
cmp eax, esi
mov dword [esp + 0x10], eax
jl 0x445d78
mov eax, dword [ebx + 0xa1c]
push 2
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov esi, eax
test esi, esi
mov dword [esp + 0x10], esi
jl 0x445d68
mov ecx, dword [ebx + 0xa3c]
call fcn.00419690
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x64]
push 0
push ebp
push edi
call fcn.004404a0
add esp, 0xc
test esi, esi
jge 0x445d9b
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x28]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.004ceb00
jmp 0x44613c
lea ecx, [esp + 0x39c]
lea edx, [esp + 0x5dc]
push ecx
lea eax, [esp + 0x6e0]
push edx
lea ecx, [esp + 0x2a0]
push eax
push ecx
push ebp
call dword [sym.imp.MSVCRT.dll__splitpath]
or ecx, 0xffffffff
lea edi, [esp + 0x6f0]
xor eax, eax
lea edx, [esp + 0x2ac]
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 edx, [esp + 0x3c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x5f0]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x3c]
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]
lea edi, [esp + 0x3b0]
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
mov eax, dword [0x5038d8]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x655aac]
push 0x184d
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x2b4]
and ecx, 0x12
lea eax, [esp + 0x44]
add ecx, 0x1848
push ecx
mov ecx, dword [esp + 0x3c]
push edx
push eax
push ecx
call fcn.00444e70
mov esi, eax
add esp, 0x2c
mov dword [esp + 0x1c], esi
mov edx, dword [ebx + 0x14]
push edx
call dword [sym.imp.USER32.dll_SetFocus]
test si, si
jne 0x445eb0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xbd0
ret
mov eax, dword [esp + 0xbe8]
cmp eax, 0x4e22
je 0x445ec5
cmp eax, 0x4e2f
jne 0x445ed9
lea eax, [esp + 0x28]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x44617d
push 0
push 0
push 0xffffffffffffffff
call fcn.004ce9e0
add esp, 0xc
lea ecx, [esp + 0x14]
lea edx, [esp + 0x7dc]
lea eax, [esp + 0x28]
push ecx
push 0
push 0x11012
push edx
push eax
call fcn.00425060
add esp, 8
push eax
call dword [sym.imp.ole32.dll_StgCreateDocfile]
test eax, eax
mov dword [esp + 0x10], eax
jl 0x4460fb
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x194]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
cmp word [esp + 0x1c], 1
rep movsb byte es:[edi], byte [esi]
jne 0x445f6c
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x445f70
mov byte [ebp], 0
push 0
push 0
push 0x55
push ebx
call fcn.0042f000
mov edx, dword [esp + 0x24]
mov eax, dword [ebx + 0xa1c]
add esp, 0x10
mov ecx, dword [eax]
push edx
push 0x5038cc
push 0
push 0
push eax
call dword [ecx + 0x1c]
test eax, eax
mov dword [esp + 0x10], eax
jl 0x445fdf
mov eax, dword [esp + 0x14]
push eax
push ebx
call fcn.004456f0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jl 0x445fdf
mov eax, dword [esp + 0x14]
push 2
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
lea edx, [esp + 0x194]
push ebp
push edx
push 0x4e22
mov dword [esp + 0x1c], eax
call fcn.004404a0
add esp, 0xc
jmp 0x44600d
lea edi, [esp + 0x194]
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, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x10]
test eax, eax
jl 0x4460fb
cmp dword [esp + 0xbe8], 0x4e2f
je 0x4460cb
mov ecx, dword [ebx + 0xa3c]
call fcn.00419690
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x64]
lea eax, [esp + 0x49c]
push 0x104
lea ecx, [esp + 0x2c]
push eax
push ecx
call fcn.004461a0
mov ecx, dword [esp + 0x20]
call fcn.00419690
mov edx, dword [eax]
lea ecx, [esp + 0x49c]
push ecx
mov ecx, eax
call dword [edx + 0x58]
lea edi, [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 0xa3c]
call fcn.00419690
mov ecx, eax
call fcn.00451210
mov eax, dword [ebx + 0xa1c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov edx, dword [esp + 0x14]
mov ecx, dword [ebx + 0xa3c]
push ebx
mov dword [ebx + 0xa1c], edx
call fcn.00419690
mov ecx, eax
call fcn.004511f0
jmp 0x446109
lea edi, [esp + 0x194]
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, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [eax]
call dword [ecx + 8]
jmp 0x446109
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.MSVCRT.dll_remove]
add esp, 4
call fcn.004ceb00
lea eax, [esp + 0x18]
push eax
push ebp
call dword [sym.imp.ole32.dll_CreateFileMoniker]
mov ecx, dword [esp + 0x18]
push ecx
push 0
push 0x5c
push ebx
call fcn.0042f000
push ebp
call fcn.004416a0
mov eax, dword [esp + 0x2c]
add esp, 0x14
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov esi, dword [esp + 0x10]
test esi, esi
jge 0x446181
lea ecx, [esi + 0x7148]
lea eax, [esp + 0x28]
and ecx, 0xffff
push eax
shl ecx, 0x10
or ecx, 0x19fa
push ecx
push 0x40
push 0
call fcn.004c8a30
add esp, 0x10
xor eax, eax
test esi, esi
pop edi
pop esi
pop ebp
pop ebx
setge al
add esp, 0xbd0
ret
mov esi, dword [esp + 0x10]
xor eax, eax
pop edi
test esi, esi
pop esi
pop ebp
setge al
pop ebx
add esp, 0xbd0
ret