Function at 0x44a8f0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x4b8b2a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x840
push ebx
push esi
xor esi, esi
push edi
mov dword [esp + 0x30], esi
mov ebx, 1
push 0x4e2868
lea ecx, [esp + 0x1c]
mov dword [esp + 0x858], ebx
call sub.MFC42u.DLL_CString::CString_4
push 0x1404c10
lea ecx, [esp + 0x20]
mov byte [esp + 0x858], 2
call sub.MFC42u.DLL_CString::CString_3
lea eax, [esp + 0x860]
lea ecx, [esp + 0x1c]
push eax
mov byte [esp + 0x858], 3
call fcn.004b0394
mov ecx, 0x1ff
xor eax, eax
lea edi, [esp + 0x4e]
mov word [esp + 0x4c], si
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x20]
stosw word es:[edi], ax
call sub.MFC42u.DLL_CFile::CFile
lea ecx, [esp + 0x38]
mov byte [esp + 0x854], 4
call sub.MFC42u.DLL_CException::CException
lea ecx, [esp + 0x48]
mov byte [esp + 0x854], 5
call sub.MFC42u.DLL_CString::CString_1
mov edi, 0x4bc494
push esi
lea ecx, [esp + 0x4c]
mov byte [esp + 0x858], 6
mov dword [esp + 0x3c], edi
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], 0xffffffff
call fcn.004b0454
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x38]
push ecx
push esi
push edx
lea ecx, [esp + 0x2c]
mov byte [esp + 0x860], 7
call sub.MFC42u.DLL_CFile::Open
test eax, eax
jne 0x44aa68
mov esi, dword [esp + 0x85c]
push 0x4e2868
mov ecx, esi
call sub.MFC42u.DLL_CString::CString_4
mov dword [esp + 0x30], ebx
mov dword [esp + 0x38], edi
lea ecx, [esp + 0x48]
mov byte [esp + 0x854], 8
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x20]
mov dword [esp + 0x38], 0x4bc480
mov byte [esp + 0x854], 3
call fcn.004b0436
lea ecx, [esp + 0x1c]
mov byte [esp + 0x854], 2
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x854], bl
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x860]
mov byte [esp + 0x854], 0
call sub.MFC42u.DLL_CString::CString
mov eax, esi
jmp 0x44ae44
push ebp
lea ecx, [esp + 0x24]
call sub.MFC42u.DLL_CFile::GetLength
mov ebp, eax
mov al, byte [0x5301ac]
test al, al
mov dword [esp + 0x18], ebp
jne 0x44aa9a
mov al, byte [0x5301ad]
test al, al
jne 0x44aa9a
mov eax, dword [esp + 0x24]
push 2
push esi
lea ecx, [esp + 0x2c]
call dword [eax + 0x30]
jmp 0x44aad2
mov eax, dword [0x5301a4]
cmp eax, esi
jl 0x44aac4
cmp eax, ebp
jge 0x44aac4
push esi
push eax
lea ecx, [esp + 0x2c]
call sub.MFC42u.DLL_CFile::Seek
mov edx, dword [0x5301a4]
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x38], edx
jmp 0x44aaea
mov edx, dword [esp + 0x24]
push 2
push esi
lea ecx, [esp + 0x2c]
call dword [edx + 0x30]
mov edx, ebp
xor edi, edi
mov dword [0x5301a4], edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x38], edx
jmp 0x44aaea
mov edi, dword [esp + 0x14]
mov al, byte [0x5301ac]
mov byte [esp + 0x13], 0
test al, al
mov esi, 0x3fc
jne 0x44ab3e
mov al, byte [0x5301ad]
test al, al
je 0x44ab3e
cmp edx, ebp
jl 0x44ab1f
mov esi, edx
mov eax, ebp
sub esi, ebp
mov byte [esp + 0x13], 1
sub eax, esi
mov edx, eax
mov dword [0x5301a4], edx
lea ecx, [edx + esi]
cmp ecx, ebp
jle 0x44ab2a
mov esi, ebp
sub esi, edx
push 0
push edx
lea ecx, [esp + 0x2c]
call sub.MFC42u.DLL_CFile::Seek
add dword [0x5301a4], esi
jmp 0x44ab6b
sub edx, 0x3fc
mov dword [0x5301a4], edx
jns 0x44ab5f
lea esi, [edx + 0x3fc]
xor edx, edx
mov dword [0x5301a4], edx
mov byte [esp + 0x13], 1
push 0
push edx
lea ecx, [esp + 0x2c]
call sub.MFC42u.DLL_CFile::Seek
lea edx, [esp + 0x50]
push esi
push edx
lea ecx, [esp + 0x2c]
xor bl, bl
call sub.MFC42u.DLL_CFile::Read
test eax, eax
je 0x44ad9d
jle 0x44ab9e
lea ecx, [esp + 0x50]
mov edx, eax
mov al, byte [ecx]
add ecx, 2
xor al, 0x16
dec edx
movsx ax, al
mov word [ecx - 2], ax
jne 0x44ab8c
mov al, byte [0x5301ac]
test al, al
jne 0x44ac0f
mov al, byte [0x5301ad]
test al, al
je 0x44ac0f
xor eax, eax
test esi, esi
jle 0x44ac3a
mov edx, dword [0x5301a4]
mov edi, dword [0x4cf6dc]
lea ecx, [esp + 0x50]
cmp word [ecx], 3
jne 0x44abf1
mov ebp, dword [esp + 0x14]
inc ebp
cmp ebp, edi
mov dword [esp + 0x14], ebp
je 0x44abfb
lea ebp, [esi - 1]
cmp eax, ebp
jne 0x44abed
lea ebp, [edx + esi]
cmp ebp, dword [esp + 0x18]
jge 0x44abfb
mov ebp, dword [esp + 0x18]
inc eax
add ecx, 2
cmp eax, esi
jl 0x44abca
jmp 0x44ac40
mov ebp, dword [esp + 0x18]
sub eax, esi
mov bl, 1
lea edx, [edx + eax + 1]
mov dword [0x5301a4], edx
jmp 0x44ac40
lea eax, [esi - 1]
test eax, eax
jl 0x44ac3a
mov edx, dword [0x4cf6dc]
lea ecx, [esp + eax*2 + 0x50]
cmp word [ecx], 3
jne 0x44ac2e
inc edi
lea esi, [edx + 1]
cmp edi, esi
je 0x44ac7a
dec eax
sub ecx, 2
test eax, eax
jge 0x44ac20
mov dword [esp + 0x14], edi
mov edx, dword [0x5301a4]
mov ecx, 0x100
xor eax, eax
lea edi, [esp + 0x50]
test bl, bl
rep stosd dword es:[edi], eax
jne 0x44ac5d
mov al, byte [esp + 0x13]
test al, al
je 0x44aae6
mov al, byte [0x5301ac]
test al, al
jne 0x44ac92
mov al, byte [0x5301ad]
test al, al
je 0x44ac92
mov eax, dword [esp + 0x14]
mov dword [0x5301a8], eax
jmp 0x44aca5
mov ecx, dword [0x5301a4]
mov dword [esp + 0x14], edi
mov bl, 1
lea edx, [ecx + eax + 1]
mov dword [0x5301a4], edx
jmp 0x44ac40
test edx, edx
jne 0x44ac9a
inc dword [esp + 0x14]
mov ecx, dword [esp + 0x14]
dec ecx
mov dword [0x5301a8], ecx
mov ebp, dword [esp + 0x38]
mov eax, edx
sub eax, ebp
cdq
mov esi, eax
xor esi, edx
sub esi, edx
inc esi
push esi
call sub.MFC42u.DLL_operatornew
mov ecx, esi
mov ebp, eax
mov edx, ecx
xor eax, eax
mov edi, ebp
add esp, 4
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
push 0
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x5301a4]
mov edi, dword [esp + 0x3c]
cmp eax, edi
jge 0x44ace6
push eax
jmp 0x44ace7
push edi
lea ecx, [esp + 0x2c]
call sub.MFC42u.DLL_CFile::Seek
lea eax, [esi - 1]
lea ecx, [esp + 0x24]
push eax
push ebp
call sub.MFC42u.DLL_CFile::Read
lea edx, [esi - 1]
xor eax, eax
test edx, edx
jle 0x44ad15
mov cl, byte [eax + ebp]
xor cl, 0x16
mov byte [eax + ebp], cl
inc eax
cmp eax, edx
jl 0x44ad07
push ebp
lea ecx, [esp + 0x20]
call fcn.004b03dc
push ebp
call sub.MFC42u.DLL_operatordelete
mov esi, dword [0x5301a4]
add esp, 4
cmp esi, edi
mov eax, esi
jl 0x44ad36
mov eax, edi
cmp esi, edi
jg 0x44ad3c
mov esi, edi
mov edi, dword [esp + 0x18]
test eax, eax
mov al, byte [0x5301ad]
lea ecx, [edi - 1]
setle byte [0x4cf6d8]
cmp esi, ecx
setge byte [0x4cf6d9]
test al, al
je 0x44ad89
mov edx, dword [esp + 0x864]
push str.keywndlog.cfg
push edx
call dword [sym.imp.MSVCRT.dll_wcsstr]
add esp, 8
test eax, eax
je 0x44ad89
add esi, 0x800
cmp esi, edi
jle 0x44ad89
mov byte [0x4cf6d9], 1
mov al, byte [0x4cf6d8]
test al, al
je 0x44adb5
mov al, byte [0x4cf6d9]
test al, al
je 0x44adb5
jmp 0x44adab
mov byte [0x4cf6d8], 1
mov byte [0x4cf6d9], 1
mov dword [0x5301a4], 0xffffffff
lea ecx, [esp + 0x24]
call sub.MFC42u.DLL_CFile::Close
mov esi, dword [esp + 0x860]
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call sub.MFC42u.DLL_CString::CString_3
mov dword [esp + 0x34], 1
mov dword [esp + 0x3c], 0x4bc494
lea ecx, [esp + 0x4c]
mov byte [esp + 0x858], 9
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x24]
mov dword [esp + 0x3c], 0x4bc480
mov byte [esp + 0x858], 3
call fcn.004b0436
lea ecx, [esp + 0x20]
mov byte [esp + 0x858], 2
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov byte [esp + 0x858], 1
call sub.MFC42u.DLL_CString::CString
lea ecx, [esp + 0x864]
mov byte [esp + 0x858], 0
call sub.MFC42u.DLL_CString::CString
mov eax, esi
pop ebp
mov ecx, dword [esp + 0x84c]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x84c
ret