Function at 0x409edf
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
mov eax, 0x40f6d4
call fcn.0040ea50
sub esp, 0xc8
push ebx
push esi
mov esi, ecx
push edi
lea ecx, [ebp - 0x18]
call sub.MFC42u.DLL_CString::CString
mov eax, dword [esi + 0x710]
and dword [ebp - 4], 0
mov edi, str.Linux
cmp byte [eax + 0x3d], 0
jne 0x409f16
mov edi, str.Windows
lea eax, [ebp - 0x14]
push 0x9c
push eax
call fcn.00403db7
mov ecx, dword [eax]
mov eax, dword [esi + 0x710]
mov byte [ebp - 4], 1
movzx edx, byte [eax + 0x3e]
push edx
push edi
movzx edx, byte [eax + 0x3c]
movzx eax, byte [eax + 0x3b]
push edx
push eax
lea eax, [ebp - 0x18]
push ecx
push eax
call sub.MFC42u.DLL_CString::Format
and byte [ebp - 4], 0
add esp, 0x20
lea ecx, [ebp - 0x14]
call fcn.0040e5c2
mov ecx, dword [0x41a768]
push 2
push dword [ebp - 0x18]
call fcn.004047be
cmp dword [esi + 0x718], 0x810
jb 0x40a191
mov eax, dword [esi + 0x710]
mov ax, word [eax + 0x3b]
push eax
call dword [sym.imp.WSOCK32.dll_ntohs]
cmp ax, 0x238
jb 0x40a191
lea eax, [esi + 0x104]
push 0x41a540
push eax
call dword [sym.imp.MSVCRT.dll__wfopen]
mov ebx, eax
pop ecx
test ebx, ebx
pop ecx
je 0x409fe7
push dword [esi + 0x71c]
call dword [sym.imp.MSVCRT.dll_malloc]
push ebx
push 1
push dword [esi + 0x718]
mov edi, eax
mov dword [ebp - 0x14], edi
push edi
call dword [sym.imp.MSVCRT.dll_fread]
add esp, 0x14
cmp eax, 1
push ebx
jae 0x40a026
call dword [sym.imp.MSVCRT.dll_fclose]
push edi
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
pop ecx
and dword [esi + 0xfc], 0
lea eax, [ebp + 8]
push 0x97
push eax
call fcn.00403db7
pop ecx
pop ecx
mov eax, dword [eax]
mov ecx, dword [0x41a768]
push 2
push eax
mov byte [ebp - 4], 5
call fcn.004047be
and byte [ebp - 4], 0
lea ecx, [ebp + 8]
call fcn.0040e5c2
or esi, 0xffffffff
jmp 0x40a1c3
call dword [sym.imp.MSVCRT.dll_fclose]
pop ecx
push 0x10
pop ecx
cmp dword [esi + 0x718], ecx
mov dword [ebp - 0x10], ecx
jbe 0x40a05c
xor eax, eax
add ecx, edi
mov dl, byte [eax + edi]
xor byte [ecx + eax], dl
inc eax
cmp eax, 0x10
jb 0x40a03f
mov ecx, dword [ebp - 0x10]
add ecx, 0x10
cmp ecx, dword [esi + 0x718]
mov dword [ebp - 0x10], ecx
jb 0x40a03b
mov eax, dword [esi + 0x718]
mov ecx, dword [esi + 0x71c]
sub ecx, eax
add eax, edi
push ecx
push 0
push eax
call sub.MSVCRT.dll_memset
mov eax, dword [ebp + 8]
mov edi, dword [esi + 0x71c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x14]
sub edi, 0x10
add esp, 0xc
shr edi, 3
lea ebx, [ebp - 0xd3]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], 8
push 0x10
push dword [ebp + 8]
push dword [ebp - 0x1c]
call sub.MSVCRT.dll_memcpy
lea eax, [edi + 0x10]
push eax
push dword [ebp - 0x1c]
call fcn.004030df
mov ecx, dword [ebp - 0x10]
push 0x10
push eax
push ebx
mov cl, byte [ecx]
mov byte [ebx - 1], cl
call sub.MSVCRT.dll_memcpy
mov eax, dword [ebp - 0x10]
add dword [ebp - 0x1c], edi
add dword [ebp - 0x10], 2
add esp, 0x20
mov al, byte [eax + 1]
mov byte [ebx + 0x10], al
add ebx, 0x12
dec dword [ebp - 0x20]
jne 0x40a09d
push dword [ebp - 0x14]
call dword [sym.imp.MSVCRT.dll_free]
lea eax, [ebp - 0xd4]
push 0x90
push eax
call fcn.004030df
add esp, 0xc
mov dword [ebp + 8], eax
xor edi, edi
lea ebx, [ebp - 0x44]
mov eax, dword [ebp + 8]
movzx eax, byte [eax + edi]
push eax
push str._02x
push ebx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
inc edi
inc ebx
inc ebx
cmp edi, 0x10
jb 0x40a107
lea eax, [ebp - 0x44]
lea ecx, [ebp - 0x18]
push eax
call sub.MFC42u.DLL_CString::operator_2
lea eax, [ebp - 0x14]
push 0x9e
push eax
call fcn.00403db7
pop ecx
pop ecx
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 3
push ecx
push eax
lea eax, [ebp + 8]
push eax
call sub.MFC42u.DLL_operator_1
mov eax, dword [eax]
mov ecx, dword [0x41a768]
push 2
push eax
mov byte [ebp - 4], 4
call fcn.004047be
lea ecx, [ebp + 8]
mov byte [ebp - 4], 3
call fcn.0040e5c2
and byte [ebp - 4], 0
lea ecx, [ebp - 0x14]
call fcn.0040e5c2
lea eax, [ebp - 0x44]
push 0x20
push eax
push 0x17
mov ecx, esi
call fcn.00409b74
jmp 0x40a1c1
lea eax, [ebp + 8]
push 0x9d
push eax
call fcn.00403db7
pop ecx
pop ecx
mov eax, dword [eax]
mov ecx, dword [0x41a768]
push 2
push eax
mov byte [ebp - 4], 2
call fcn.004047be
and byte [ebp - 4], 0
lea ecx, [ebp + 8]
call fcn.0040e5c2
xor esi, esi
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x18]
call fcn.0040e5c2
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 4