Function at 0x411b40
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x455a29
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x11c
push ebx
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::BeginWaitCursor
xor ebx, ebx
lea ecx, [esp + 8]
mov dword [esp + 0x128], ebx
call fcn.00414c14
mov eax, dword [esp + 0x134]
push ebx
push 0x8002
mov byte [esp + 0x130], 1
mov ecx, dword [eax]
mov dword [esp + 0x24], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x28], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x2c], ecx
lea ecx, [esp + 0x10]
mov edx, dword [eax + 0xc]
mov eax, dword [esp + 0x138]
push eax
mov dword [esp + 0x34], edx
call sub.MFC42.DLL_CFile::Open
test eax, eax
je 0x411ef4
lea ecx, [esp + 8]
call sub.MFC42.DLL_CFile::GetLength
cmp eax, 0x28
jbe 0x411eeb
push ebp
push esi
push edi
push 2
push ebx
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Seek
push 1
push 0xffffffffffffffd8
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Seek
lea ecx, [esp + 0x9c]
push 0x10
push ecx
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Read
lea edx, [esp + 0x38]
push 0x10
push edx
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Read
lea eax, [esp + 0x3c]
push 8
push eax
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Read
lea esi, [esp + 0x3c]
mov eax, 0x4662d8
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x411c52
test cl, cl
je 0x411c4e
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x411c52
add eax, 2
add esi, 2
test cl, cl
jne 0x411c2e
xor eax, eax
jmp 0x411c57
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
je 0x411c69
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CFile::Close
jmp 0x411ea9
lea eax, [esp + 0x44]
push eax
call fcn.00410fa0
mov ebp, dword [esp + 0x148]
lea ecx, [esp + 0x2c]
push ebp
lea edx, [esp + 0x4c]
push ecx
push edx
call fcn.00410fd0
lea eax, [esp + 0x54]
push eax
call fcn.00411080
mov eax, dword [esp + 0x60]
mov ecx, 0x10
lea esi, [esp + 0x58]
lea edi, [esp + 0x100]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x44], eax
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x58]
add esp, 0x14
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x50]
xor eax, eax
mov dword [esp + 0x34], ecx
cmp ebp, ebx
mov dword [esp + 0x2c], edx
mov ecx, 1
jle 0x411d1e
mov dl, byte [esp + eax + 0x28]
cmp dl, byte [esp + eax + 0x9c]
je 0x411ce3
xor ecx, ecx
inc eax
cmp eax, ebp
jl 0x411cd4
cmp ecx, ebx
jne 0x411d1e
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CFile::Close
cmp dword [0x4662e0], ebx
je 0x411d0f
push ebx
push ebx
push 0x465580
call sub.MFC42.DLL_AfxMessageBox
mov dword [0x4662e0], ebx
mov dword [0x4695a4], 1
jmp 0x411ea9
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CFile::GetLength
push 0
push 0
lea ecx, [esp + 0x1c]
mov ebx, eax
call sub.MFC42.DLL_CFile::Seek
lea edx, [ebx - 0x28]
mov ecx, 0x10
mov eax, 0
mov edi, 0x469524
shr edx, 6
rep stosd dword es:[edi], eax
je 0x411e04
mov ebp, edx
push 0x40
push 0x469564
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Read
lea eax, [esp + 0x44]
push eax
call fcn.00410fa0
push 0x40
lea ecx, [esp + 0x4c]
push 0x469564
push ecx
call fcn.00410fd0
lea edx, [esp + 0x54]
push edx
call fcn.00411080
mov ecx, 0x10
lea esi, [esp + 0x58]
lea edi, [esp + 0xc0]
add esp, 0x14
rep movsd dword es:[edi], dword [esi]
xor eax, eax
mov cl, byte [esp + eax + 0xec]
mov dl, byte [eax + 0x469564]
xor cl, dl
mov dl, byte [eax + 0x469524]
xor cl, dl
mov dl, byte [esp + eax + 0xac]
not cl
mov byte [eax + 0x469564], cl
mov byte [eax + 0x469524], dl
inc eax
cmp eax, 0x40
jl 0x411da1
push 1
push 0xffffffffffffffc0
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Seek
push 0x40
push 0x469564
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CFile::Write
mov ecx, dword [0x4690f4]
inc ecx
dec ebp
mov dword [0x4690f4], ecx
jne 0x411d55
mov eax, dword [esp + 0x38]
lea ecx, [eax + ebx - 0x68]
push ecx
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CFile::SetLength
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CFile::Close
mov edx, dword [esp + 0x13c]
lea ecx, [esp + 0x10]
push edx
call fcn.004149aa
lea eax, [esp + 0x10]
lea ecx, [esp + 0x24]
push eax
mov byte [esp + 0x138], 2
call sub.MFC42.DLL_CString::CString_1
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x134], 3
mov eax, dword [ecx - 8]
lea ecx, [esp + 0x24]
lea esi, [eax - 4]
push esi
push 0x4662ec
call sub.MFC42.DLL_CString::Find
cmp eax, 0xffffffff
je 0x411e87
push 4
push esi
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Delete
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
push edx
push eax
call sub.MFC42.DLL_CFile::Rename
lea ecx, [esp + 0x24]
mov byte [esp + 0x134], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x10]
mov byte [esp + 0x134], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov byte [esp + 0x134], 0
call sub.MFC42.DLL_CFile::CFile
mov dword [esp + 0x134], 0xffffffff
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::EndWaitCursor
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x11c]
mov dword fs:[0], ecx
add esp, 0x128
ret
lea ecx, [esp + 8]
call sub.MFC42.DLL_CFile::Close
lea ecx, [esp + 8]
mov byte [esp + 0x128], 0
call sub.MFC42.DLL_CFile::CFile
mov dword [esp + 0x128], 0xffffffff
call sub.MFC42.DLL_AfxGetModuleState
mov ecx, dword [eax + 4]
call sub.MFC42.DLL_CCmdTarget::EndWaitCursor
mov ecx, dword [esp + 0x120]
pop ebx
mov dword fs:[0], ecx
add esp, 0x128
ret