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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
push ebx
push esi
xor esi, esi
mov ebx, ecx
push esi
push esi
push 0x86f
push dword [0x4930dc]
mov dword [ebp - 0x10], ebx
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
je 0x404c66
push 3
push 0x490b88
push 0x480674
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
jne 0x404c5d
mov ecx, ebx
call fcn.00404ec4
jmp 0x404c66
cmp eax, 2
je 0x404ec0
cmp dword [0x494974], esi
jne 0x404c81
push 0x4949b0
call dword [sym.imp.COMDLG32.dll_GetOpenFileNameW]
test eax, eax
je 0x404ec0
push 0x40
push 0x480fe4
push 0x4945c0
mov dword [0x494974], esi
call fcn.0045c905
add esp, 0xc
mov dword [0x494a14], eax
test eax, eax
je 0x404ec0
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
push esi
push esi
push 0x7d4
push dword [0x4930dc]
call ebx
mov ax, word [0x4945c0]
mov edx, esi
mov ecx, esi
test ax, ax
je 0x404ce2
movzx eax, ax
movzx eax, ax
xor edx, eax
movzx eax, word [ecx*2 + 0x4945c2]
inc ecx
test ax, ax
jne 0x404ccf
push edi
push 0xe
pop ecx
mov esi, str.SOFTWARESkylonManager____
lea edi, [ebp - 0x4c]
rep movsd dword es:[edi], dword [esi]
push edx
lea eax, [ebp - 0x1c]
push str._.4hx
push eax
movsw word es:[edi], word [esi]
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [ebp - 4]
xor edi, edi
push eax
push 0xf003f
push edi
lea eax, [ebp - 0x4c]
push eax
push connect
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ecx, dword [ebp - 4]
mov edx, str.Position
push edi
push 0x494cdc
call fcn.004012e2
mov ecx, dword [ebp - 4]
mov edx, str.Visible
push edi
push 0x494a08
call fcn.004012e2
push dword [0x494a14]
xor esi, esi
push 3
inc esi
push esi
push 0x4941b8
call fcn.0045ed9d
push dword [0x494a14]
push 0x400
push esi
push 0x4941b8
call fcn.0045ed9d
add esp, 0x30
jmp 0x404da3
push 0x4941b8
push eax
push 0x8ea
push dword [0x4930dc]
call ebx
push dword [0x494a14]
push 0x400
push esi
push 0x4941b8
call fcn.0045ed9d
add esp, 0x10
mov dword [0x494cf0], eax
test eax, eax
jne 0x404d77
push dword [0x494a14]
call fcn.0045ca35
pop ecx
push edi
push 0x15
push dword [0x4930e8]
mov dword [0x4930cc], esi
mov esi, dword [sym.imp.USER32.dll_CheckMenuItem]
mov dword [0x494958], edi
mov dword [0x4930d0], edi
call esi
push edi
push 0x1d
push dword [0x49496c]
call esi
push 0x61
pop esi
push 0x1f
push edi
push 0x7f8
push dword [0x4930dc]
mov dword [ebp - 8], esi
call ebx
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0xc]
push 0xffffffffffffffff
push eax
lea edx, [ebp - 8]
mov word [ebp - 8], si
call fcn.004012e2
cmp dword [ebp - 0xc], 0xffffffff
pop ecx
pop ecx
je 0x404e2a
push edi
push dword [ebp - 0xc]
push 0x7fb
push dword [0x4930dc]
call ebx
inc esi
cmp esi, 0x7a
jle 0x404dfc
call fcn.00405686
push edi
push 4
mov esi, 0x401
push esi
push dword [0x4949a4]
call ebx
push edi
push 5
push esi
push dword [0x4949a4]
call ebx
push 0x4945c0
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_SetWindowTextW]
push edi
push edi
push 0x7de
push dword [0x4930dc]
call ebx
push edi
push edi
push 0x87f
push dword [0x4930dc]
call ebx
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [sym.imp.USER32.dll_ShowWindow]
push edi
push dword [0x494cec]
call esi
push edi
push dword [0x494ce0]
call esi
push 1
push dword [0x4930dc]
call esi
cmp dword [0x494a08], 0x3e8
pop edi
jge 0x404ec0
mov dword [0x490b84], 2
pop esi
pop ebx
leave
ret