Function at 0x474840
Capabilities:
Delete file
Move file
Read file on windows
Set current directory
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x489103
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x708
push ebx
push ebp
push esi
push edi
xor ebp, ebp
mov dword [esp + 0x720], ebp
mov word [esp + 0x54], bp
xor eax, eax
mov ecx, 0x95
lea edi, [esp + 0x56]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x20]
stosw word es:[edi], ax
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_5]
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileW]
push ebp
push 0x80
push 1
push ebp
push 3
push 0xc0000000
push str.HashFile_new
mov byte [esp + 0x73c], 3
mov dword [esp + 0x50], ebp
call esi
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x4748f9
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 4
push str.CreateFile___HashFile_new
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
jmp 0x474fb6
push 0
push 0x80
push 3
push 0
push 3
push SysReAllocString
push str.HashFile
call esi
cmp eax, 0xffffffff
mov dword [esp + 0x1c], eax
jne 0x474943
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 5
push str.OpenFile___HashFile
jmp 0x4748dc
push 0
push 0x80
push 3
push 0
push 3
push SysReAllocString
push str.TOCFile
call esi
mov edi, eax
cmp edi, 0xffffffff
mov dword [esp + 0x30], edi
jne 0x474992
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 6
push str.OpenFile___TOCFile
jmp 0x4748dc
push 0
push 0x80
push 1
push 0
push 3
push 0xc0000000
push str.TOCFile_new
call esi
cmp eax, 0xffffffff
mov dword [esp + 0x10], eax
jne 0x4749df
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 7
push str.CreateFile___TOCFile_new
jmp 0x4748dc
mov esi, dword [sym.imp.KERNEL32.dll_ReadFile]
xor eax, eax
push eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x30], eax
lea eax, [esp + 0x44]
push eax
push 0x262
lea ecx, [esp + 0x2b8]
push ecx
push edi
call esi
test eax, eax
je 0x474b66
mov edi, dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x474b62
push 0
lea ecx, [esp + 0x738]
call dword [sym.imp.MFC71U.DLL_CMapWordToPtr::GetAssocAt]
mov ecx, dword [esp + 0x10]
push 0
lea edx, [esp + 0x40]
push edx
mov word [esp + 0x2b4], ax
push 0x262
lea eax, [esp + 0x2b8]
push eax
push ecx
call edi
test eax, eax
je 0x474e97
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0x2ac]
push edx
push 0x12c
lea eax, [esp + 0x5c]
inc ecx
push eax
mov dword [esp + 0x44], ecx
call fcn.0040120a
lea ecx, [esp + 0x54]
push ecx
call dword [sym.imp.MSVCR71.dll__wcsupr]
lea edx, [esp + 0x58]
push edx
call dword [sym.imp.MSVCR71.dll_wcslen]
push eax
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.00455fa0
mov dx, word [esp + 0x3c]
add esp, 0x14
push 0
lea eax, [esp + 0x18]
push eax
push 6
lea ecx, [esp + 0x58]
mov word [esp + 0x50], dx
mov edx, dword [esp + 0x28]
push ecx
push edx
mov dword [esp + 0x5a], ebp
call esi
push 0
lea eax, [esp + 0x40]
push eax
push 6
lea ecx, [esp + 0x50]
push ecx
push ebx
call edi
test eax, eax
jne 0x474ae5
cmp dword [esp + 0x3c], 6
jne 0x474ec2
mov eax, dword [esp + 0x2c]
mov cx, word [esp + 0x28]
inc eax
mov dword [esp + 0x2c], eax
mov ax, word [esp + 0x4c]
cmp ax, cx
je 0x474b3e
cmp dword [esp + 0x34], 0xa
jg 0x474b3a
movzx edx, cx
mov ecx, dword [esp + 0x2c]
push edx
movzx eax, ax
push eax
push ecx
push str.Index_of_old_hash_file___d__old_Hash_value___d__new_hash_value___d_n
push str.RRU_PDA_LIB
call fcn.004572b0
lea edx, [esp + 0x2c0]
push edx
push str.Full_path___s_n
push str.RRU_PDA_LIB
call fcn.004572b0
add esp, 0x20
inc dword [esp + 0x34]
mov edx, dword [esp + 0x30]
push 0
lea eax, [esp + 0x44]
push eax
push 0x262
lea ecx, [esp + 0x2b8]
push ecx
push edx
inc ebp
call esi
test eax, eax
jne 0x474a13
mov edi, dword [esp + 0x30]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebx
call esi
test eax, eax
jne 0x474bb1
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push str.Close_hHash_new_file_handle_failed
mov byte [esp + 0x72c], 0xa
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
mov eax, dword [esp + 0x1c]
push eax
call esi
test eax, eax
jne 0x474bfa
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
push str.Close_hHash_old_file_handle_failed
mov byte [esp + 0x72c], 0xb
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
mov ecx, dword [esp + 0x10]
push ecx
call esi
test eax, eax
jne 0x474c43
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Close_hTOC_new_file_handle_failed
mov byte [esp + 0x72c], 0xc
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
push edi
call esi
test eax, eax
jne 0x474c88
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Close_hHash_old_file_handle_failed
mov byte [esp + 0x72c], 0xd
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
mov edi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push str.TOCFile
call edi
test eax, eax
jne 0x474cd7
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.Delete_TOCFile_file_handle_failed
mov byte [esp + 0x72c], 0xe
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileW]
push str.TOCFile
push str.TOCFile_new
call esi
test eax, eax
jne 0x474d2b
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.MoveFile_TOCFile_new_to_TOCFile_file_failed
mov byte [esp + 0x72c], 0xf
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
push str.HashFile
call edi
test eax, eax
jne 0x474d74
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.DeleteFile_HashFile_file_failed
mov byte [esp + 0x72c], 0x10
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
push str.HashFile
push str.HashFile_new
call esi
test eax, eax
jne 0x474dc2
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.MoveFile__hHash_new_to_HashFile_file_failed
mov byte [esp + 0x72c], 0x11
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 3
call fcn.00458010
add esp, 0xc
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov edx, dword [esp + 0x34]
push edx
push str.Total_different_hash_entries_between_new_and_old_hash_file_is__d_n
push str.RRU_PDA_LIB
call fcn.004572b0
mov eax, dword [esp + 0x44]
push eax
push str.Total_entry_of_new_TocFile_is__d_n
push str.RRU_PDA_LIB
call fcn.004572b0
mov ecx, dword [esp + 0x44]
push ecx
push str.Total_entry_of_new_Hashfile_is__d_n
push str.RRU_PDA_LIB
call fcn.004572b0
add esp, 0x24
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_5]
lea ecx, [esp + 0x24]
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_5]
mov esi, dword [esp + 0x728]
lea ecx, [esp + 0x730]
push 0
mov byte [esp + 0x724], 0x13
call dword [sym.imp.MFC71U.DLL_CMapWordToPtr::GetAssocAt]
test esi, esi
movzx edx, ax
mov eax, dword [esp + 0x72c]
lea ecx, [esp + 0x18]
push edx
jne 0x474eed
push eax
push str._s_c
push ecx
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Format]
add esp, 0x10
push esi
lea ecx, [esp + 0x738]
call dword [sym.imp.MFC71U.DLL_CMapWordToPtr::GetAssocAt]
movzx edx, ax
mov eax, dword [esp + 0x72c]
push edx
push eax
lea ecx, [esp + 0x2c]
push str._s_c
push ecx
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Format]
add esp, 0x10
jmp 0x474f37
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 8
push str.WriteFile_to_TOCFile_new
jmp 0x4748dc
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x24], esp
mov byte [esp + 0x728], 9
push str.Write_file_to_HashFile_new
jmp 0x4748dc
push esi
push str.Base
push eax
push str._s_s_d_c
push ecx
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Format]
add esp, 0x18
push 0
lea ecx, [esp + 0x738]
call dword [sym.imp.MFC71U.DLL_CMapWordToPtr::GetAssocAt]
movzx edx, ax
mov eax, dword [esp + 0x72c]
push edx
push esi
push str.Base
push eax
lea ecx, [esp + 0x34]
push str._s_s_d_c
push ecx
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::Format]
add esp, 0x18
mov edx, dword [esp + 0x72c]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test eax, eax
jne 0x474fef
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.RRU_PDA_LIB
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.SetCurrentDirecgtory_2_
mov byte [esp + 0x72c], 0x14
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 0x13
call fcn.00458010
mov eax, dword [esp + 0x738]
push eax
push str.SetCurrentDirectory_to__s_fail_n
push str.RRU_PDA_LIB
call fcn.004572b0
add esp, 0x18
lea ecx, [esp + 0x24]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x20]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x72c]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x730]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x734]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
or eax, 0xffffffff
jmp 0x475227
mov ecx, dword [esp + 0x24]
push ecx
call fcn.004579e0
add esp, 4
test eax, eax
je 0x47500d
mov edx, dword [esp + 0x24]
push edx
call fcn.00459020
add esp, 4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
push 8
push eax
push ecx
call esi
test eax, eax
jne 0x475063
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x48b000
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.change__rrbackups_pe_drive_letter__directory_to__rrbackups_window_driver_letter_
mov byte [esp + 0x72c], 0x15
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 0x13
call fcn.00458010
add esp, 0xc
mov eax, dword [esp + 0x738]
test eax, eax
jne 0x4751e0
mov edx, dword [esp + 0x18]
push edx
call fcn.004579e0
add esp, 4
test eax, eax
je 0x475090
mov eax, dword [esp + 0x18]
push eax
call fcn.00459020
add esp, 4
push 0x48affc
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x18]
push edx
call fcn.00401441
mov ecx, dword [esp + 0x24]
mov eax, dword [eax]
add esp, 0xc
push 8
push ecx
push eax
call esi
mov ebx, eax
neg ebx
sbb bl, bl
lea ecx, [esp + 0x10]
inc bl
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
test bl, bl
je 0x475107
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push 0x48b000
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push str.change__rrbackups_pe_drive_letter__directory_to__rrbackups_window_driver_letter_
mov byte [esp + 0x72c], 0x16
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push 0
mov byte [esp + 0x72c], 0x13
call fcn.00458010
add esp, 0xc
push 0x48affc
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.00401441
mov ecx, dword [eax]
push ecx
push str.do_hash_pe_back_dir_0___s_n
lea edx, [esp + 0x524]
push 0x208
push edx
call fcn.00403fa3
add esp, 0x1c
lea ecx, [esp + 0x10]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
push 0
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x48affc
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
lea eax, [esp + 0x51c]
mov ecx, esp
mov dword [esp + 0x1c], esp
push eax
mov byte [esp + 0x730], 0x17
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
mov byte [esp + 0x72c], 0x13
call fcn.00457810
mov ecx, dword [esp + 0x24]
push ecx
push str.do_hash_pe_back_dir___s_n
lea edx, [esp + 0x524]
push 0x208
push edx
call fcn.00403fa3
add esp, 0x1c
push 0
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x48affc
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
push ecx
lea eax, [esp + 0x51c]
mov ecx, esp
mov dword [esp + 0x1c], esp
push eax
mov byte [esp + 0x730], 0x18
call dword [sym.imp.MFC71U.DLL_ATL::CStringT::CStringT_6]
mov byte [esp + 0x72c], 0x13
call fcn.00457810
add esp, 0xc
lea ecx, [esp + 0x24]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x18]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x20]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x72c]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x730]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
lea ecx, [esp + 0x734]
call dword [sym.imp.MFC71U.DLL_ATL::CSimpleStringT::CSimpleStringT]
xor eax, eax
mov ecx, dword [esp + 0x718]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x714
ret