Function at 0x4016aa
Capabilities:
Delete file
Get file size
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
push edi
mov edi, str._rtf1_ansi_ansicpg1252deff0deflang1031_fonttbl_f0_fmodern_fprq1_fcharset0_MS_Mincho__f1_fswiss_fprq2_fcharset0_Arial__viewkind4uc1pard_tx2272_f0_fs16par
mov esi, ecx
push edi
call fcn.00401d40
push eax
call fcn.00401dbb
mov ebx, eax
push edi
push ebx
call fcn.00401c50
add esp, 0x10
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], ebx
xor ebx, ebx
push eax
push 2
push 0x449
mov dword [ebp - 0x14], ebx
push dword [esi + 5]
mov dword [ebp - 0x10], 0x401b18
push dword [esi + 9]
call dword [sym.imp.USER32.dll_SendDlgItemMessageA]
push str.PatchFX_v1.30_n_n
mov ecx, esi
call fcn.00401abe
push str.opening
mov ecx, esi
call fcn.00401abe
push dword [esi + 0xd]
mov ecx, esi
call fcn.00401abe
push 0x4072b8
mov ecx, esi
call fcn.00401abe
push ebx
push 0x10000080
push 3
push ebx
push ebx
push 0xc0000000
push dword [esi + 0xd]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
je 0x40189b
mov edi, str.OK__n
mov ecx, esi
push edi
call fcn.00401abe
push str.performing_crc_check_.................
mov ecx, esi
call fcn.00401abe
push ebx
push dword [ebp - 4]
call fcn.00401478
cmp dword [esi + 0x11], eax
pop ecx
pop ecx
je 0x401783
cmp byte [esi + 0x15], bl
jne 0x40190d
push str.failed__n
jmp 0x401784
push edi
mov ecx, esi
call fcn.00401abe
push ebx
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_GetFileSize]
push eax
mov dword [esi + 0x37], eax
call fcn.00401dbb
pop ecx
mov dword [esi + 0x3b], eax
lea ecx, [ebp - 0xc]
push ebx
push ecx
push dword [esi + 0x37]
push eax
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [ebp - 0xc]
cmp eax, dword [esi + 0x37]
jne 0x401919
push str.applying_patch_es__...................
mov ecx, esi
call fcn.00401abe
cmp word [esi + 0x17], bx
mov dword [ebp - 8], ebx
jbe 0x4017fb
xor edi, edi
mov eax, dword [esi + 0x1b]
mov ecx, esi
add eax, edi
push eax
call fcn.00401a03
test al, al
je 0x40190d
movzx eax, word [esi + 0x17]
inc dword [ebp - 8]
add edi, 0xc
cmp dword [ebp - 8], eax
jl 0x4017d7
cmp word [esi + 0x19], bx
mov dword [ebp - 8], ebx
jbe 0x40182a
xor edi, edi
mov eax, edi
mov ecx, esi
add eax, dword [esi + 0x1f]
push eax
call fcn.00401a33
test al, al
je 0x40190d
movzx eax, word [esi + 0x19]
inc dword [ebp - 8]
add edi, 0xe
cmp dword [ebp - 8], eax
jl 0x401806
mov edi, str.done__n
mov ecx, esi
push edi
call fcn.00401abe
cmp byte [esi + 0x16], bl
je 0x4018ae
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.creating_backup_file__patchfx.bak__...
mov ecx, esi
call fcn.00401abe
push str.PatchFX.bak
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push str.PatchFX.bak
push dword [esi + 0xd]
call fcn.00402254
pop ecx
test eax, eax
pop ecx
jne 0x40190d
push edi
mov ecx, esi
call fcn.00401abe
push ebx
push 0x10000080
push 1
push ebx
push ebx
push 0xc0000000
push dword [esi + 0xd]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebp - 4], eax
jne 0x4018ba
push str.failed__n_nPATCH_WAS_NOT_APPLIED_
mov ecx, esi
call fcn.00401abe
push str.ERROR:_access_denied._maybe_the_file_is_write_protected._n
jmp 0x401912
push ebx
push ebx
push ebx
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push str.saving_changes_.......................
mov ecx, esi
call fcn.00401abe
lea eax, [ebp - 0xc]
push ebx
push eax
push dword [esi + 0x37]
push dword [esi + 0x3b]
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov eax, dword [ebp - 0xc]
cmp eax, dword [esi + 0x37]
jne 0x40190d
push edi
mov ecx, esi
call fcn.00401abe
push dword [esi + 0x3b]
call fcn.00401dc9
mov ecx, esi
mov dword [esp], str._neverything_went_fine__PATCH_WAS_APPLIED_
call fcn.00401abe
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x40191b
push str.failed__n_nPATCH_WAS_NOT_APPLIED_
mov ecx, esi
call fcn.00401abe
xor al, al
pop edi
pop esi
pop ebx
leave
ret