Function at 0x401cf8
Capabilities:
Get file size
Read file on windows
Read file via mapping
Write file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffff0
push ebx
push ecx
push edx
push esi
push edi
push 0x402167
push dword fs:[0]
mov dword [0x404371], esp
mov dword [0x404375], ebp
mov dword [0x404379], ebx
mov dword [0x40437d], esi
mov dword [0x404381], edi
mov dword [0x404385], 0x402149
mov dword fs:[0], esp
push 0x104
push 0x40455d
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_GetDlgItemTextA
push 0x10
push 0x404765
push 0xbba
push dword [0x40438d]
call sub.user32.dll_GetDlgItemTextA
push 0x10
push 0x404775
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_GetDlgItemTextA
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
push 0x40455d
call sub.kernel32.dll_CreateFileA
cmp eax, 0xffffffff
jne 0x401de8
push 0x10
push str.Protector__by_iiiila_
push 0x403144
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_GetDlgItem
push eax
call sub.user32.dll_SetFocus
push 0xffffffffffffffff
push 0
push 0xb1
push eax
call sub.user32.dll_SendMessageA
jmp 0x402154
mov dword [0x40426d], eax
push 0x404765
call sub.kernel32.dll_lstrlenA
or eax, eax
jne 0x401e2d
push 0x10
push str.Protector__by_iiiila_
push 0x403153
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0xbba
push dword [0x40438d]
call sub.user32.dll_GetDlgItem
push eax
call sub.user32.dll_SetFocus
jmp 0x402149
mov dword [ebp - 8], eax
push dword [ebp - 8]
push 0x404765
call fcn.00401114
mov eax, dword [eax]
mov dword [ebp - 0x10], eax
push 0x404775
push 0x404765
call sub.kernel32.dll_lstrcmpA
or eax, eax
je 0x401e95
push 0x10
push str.Protector__by_iiiila_
push 0x403162
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0
push 0xbba
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
jmp 0x402149
push 0
push esp
push 0x40
push 0x4043fd
push dword [0x40426d]
call sub.kernel32.dll_ReadFile
cmp word [0x4043fd], 0x5a4d
jne 0x401ed1
push 0x10
push str.Protector__by_iiiila_
push 0x403185
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
jmp 0x402149
push 0
push dword [0x40426d]
call sub.kernel32.dll_GetFileSize
or eax, eax
jne 0x401f59
push 0x10
push str.Protector__by_iiiila_
push 0x4031a2
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbba
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_GetDlgItem
push eax
call sub.user32.dll_SetFocus
push 0xffffffffffffffff
push 0
push 0xb1
push eax
call sub.user32.dll_SendMessageA
jmp 0x402149
cmp eax, 0x20
jae 0x401fb0
push 0x10
push str.Protector__by_iiiila_
push 0x4031b1
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbba
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
jmp 0x402149
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], eax
sub dword [ebp - 0xc], 0x20
push 0
push 0
push 0
push 4
push 0
push dword [0x40426d]
call sub.kernel32.dll_CreateFileMappingA
mov dword [0x405ba9], eax
push 0
push 0
push 0
push 6
push dword [0x405ba9]
call sub.kernel32.dll_MapViewOfFile
mov dword [0x405bad], eax
push 0
push 0
push dword [ebp - 0xc]
push dword [0x40426d]
call sub.kernel32.dll_SetFilePointer
mov esi, eax
add esi, dword [0x405bad]
lodsd eax, dword [esi]
cmp eax, dword [ebp - 0x10]
je 0x40204c
push 0x10
push str.Protector__by_iiiila_
push 0x4031d8
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0
push 0xbba
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
jmp 0x402133
sub dword [ebp - 4], 0x20
mov esi, dword [0x405bad]
xor ecx, ecx
xor edx, edx
mov edi, 0x404765
mov al, byte [ecx + esi]
mov ah, byte [edx + edi]
ror al, 3
xor al, ah
mov byte [ecx + esi], al
inc ecx
inc edx
cmp edx, dword [ebp - 8]
jbe 0x402076
xor edx, edx
cmp ecx, dword [ebp - 4]
jbe 0x40205f
push 0
push 0
push 0
push dword [0x40426d]
call sub.kernel32.dll_SetFilePointer
push 0
push 0x405bb1
push dword [ebp - 4]
push dword [0x405bad]
push dword [0x40426d]
call sub.kernel32.dll_WriteFile
push dword [0x405bad]
call sub.kernel32.dll_UnmapViewOfFile
push dword [0x405ba9]
call sub.kernel32.dll_CloseHandle
mov dword [0x405ba9], 0
push 0
push 0
push dword [ebp - 4]
push dword [0x40426d]
call sub.kernel32.dll_SetFilePointer
push dword [0x40426d]
call sub.kernel32.dll_SetEndOfFile
push 0x40
push str.Protector__by_iiiila_
push 0x4031f5
push dword [0x40438d]
call sub.user32.dll_MessageBoxA
push 0
push 0xbb9
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbba
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
push 0
push 0xbc2
push dword [0x40438d]
call sub.user32.dll_SetDlgItemTextA
jmp 0x402149
push dword [0x405bad]
call sub.kernel32.dll_UnmapViewOfFile
push dword [0x405ba9]
call sub.kernel32.dll_CloseHandle
push dword [0x40426d]
call sub.kernel32.dll_CloseHandle
xor eax, eax
pop dword fs:[0]
add esp, 4
pop edi
pop esi
pop edx
pop ecx
pop ebx
leave
ret