Function at 0x404f60
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x490478
mov eax, dword fs:[0]
push eax
sub esp, 0x8c4
mov eax, dword [0x4ad440]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x4cc], 0
xor edi, edi
nop dword [eax]
mov ecx, edi
mov eax, edi
shr ecx, 1
mov edx, ecx
xor edx, 0xedb88320
test al, 1
cmove edx, ecx
mov eax, edx
shr eax, 1
mov ecx, eax
xor ecx, 0xedb88320
test dl, 1
cmove ecx, eax
mov eax, ecx
shr eax, 1
mov edx, eax
xor edx, 0xedb88320
test cl, 1
cmove edx, eax
mov eax, edx
shr eax, 1
mov ecx, eax
xor ecx, 0xedb88320
test dl, 1
cmove ecx, eax
mov eax, ecx
shr eax, 1
mov edx, eax
xor edx, 0xedb88320
test cl, 1
cmove edx, eax
mov eax, edx
shr eax, 1
mov ecx, eax
xor ecx, 0xedb88320
test dl, 1
cmove ecx, eax
mov eax, ecx
shr eax, 1
mov edx, eax
xor edx, 0xedb88320
test cl, 1
cmove edx, eax
mov ecx, edx
shr ecx, 1
mov eax, ecx
xor eax, 0xedb88320
test dl, 1
cmove eax, ecx
mov dword [ebp + edi*4 - 0x8d0], eax
inc edi
cmp edi, 0x100
jb 0x404fa0
push 0xb8
lea eax, [ebp - 0x4c8]
push 0
push eax
call fcn.00467a40
add esp, 0xc
mov edi, esi
cmp dword [esi + 0x14], 0xf
jbe 0x405064
mov edi, dword [esi]
lea ecx, [ebp - 0x458]
mov dword [ebp - 0x4c8], 0x4a8350
call fcn.004094e0
mov dword [ebp - 4], 0
xorps xmm0, xmm0
mov eax, dword [ebp - 0x4c8]
push 0
mov dword [ebp - 0x4cc], 1
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_istream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x4c8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x18]
mov dword [ebp + ecx - 0x4cc], eax
lea ecx, [ebp - 0x4c8]
mov eax, dword [ebp - 0x4c8]
movlpd qword [ebp - 0x4c0], xmm0
add ecx, dword [eax + 4]
lea eax, [ebp - 0x4b8]
push eax
call fcn.0040a820
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0x4c8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x4c8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x70]
mov dword [ebp + ecx - 0x4cc], eax
lea ecx, [ebp - 0x4b8]
call fcn.0040a140
push ecx
push 0x21
push edi
lea ecx, [ebp - 0x4b8]
mov byte [ebp - 4], 3
call fcn.00409f90
test eax, eax
jne 0x405152
mov eax, dword [ebp - 0x4c8]
lea ecx, [ebp - 0x4c8]
push 0
add ecx, dword [eax + 4]
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push eax
call fcn.00402200
mov eax, dword [ebp - 0x4c8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x4c8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x70]
mov dword [ebp + ecx - 0x4cc], eax
mov dword [ebp - 4], 4
mov eax, dword [ebp - 0x4c8]
mov eax, dword [eax + 4]
test byte [ebp + eax - 0x4bc], 6
je 0x4051c7
mov edx, str.Failed_to_open_the_file:
mov ecx, 0x4ae8e0
call fcn.0040af90
cmp dword [esi + 0x14], 0xf
mov ecx, dword [esi + 0x10]
jbe 0x4051ad
mov esi, dword [esi]
push ecx
mov edx, esi
mov ecx, eax
call fcn.0040dde0
push eax
call fcn.0040b280
add esp, 8
xor esi, esi
jmp 0x4052c9
sub esp, 8
lea eax, [ebp - 0x410]
lea ecx, [ebp - 0x4c8]
or esi, 0xffffffff
push eax
call fcn.004069b0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [ecx + eax + 0xc], 6
jne 0x405268
nop dword [eax + eax]
mov ebx, dword [ebp - 0x4bc]
xorps xmm0, xmm0
movlpd qword [ebp - 0x4d0], xmm0
test ebx, ebx
jl 0x405247
mov edi, dword [ebp - 0x4c0]
jg 0x405211
test edi, edi
je 0x405247
mov edx, dword [ebp - 0x4cc]
mov ecx, dword [ebp - 0x4d0]
nop dword [eax]
movzx eax, byte [ebp + ecx - 0x410]
xor eax, esi
shr esi, 8
movzx eax, al
xor esi, dword [ebp + eax*4 - 0x8d0]
add ecx, 1
adc edx, 0
cmp edx, ebx
jl 0x405220
jg 0x405247
cmp ecx, edi
jb 0x405220
sub esp, 8
lea eax, [ebp - 0x410]
lea ecx, [ebp - 0x4c8]
push eax
call fcn.004069b0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
test byte [ecx + eax + 0xc], 6
je 0x4051f0
mov ebx, dword [ebp - 0x4bc]
xorps xmm0, xmm0
movlpd qword [ebp - 0x4d0], xmm0
test ebx, ebx
jl 0x4052c7
mov edi, dword [ebp - 0x4c0]
jg 0x405289
test edi, edi
je 0x4052c7
mov edx, dword [ebp - 0x4cc]
mov ecx, dword [ebp - 0x4d0]
nop word [eax + eax]
movzx eax, byte [ebp + ecx - 0x410]
xor eax, esi
shr esi, 8
movzx eax, al
xor esi, dword [ebp + eax*4 - 0x8d0]
add ecx, 1
adc edx, 0
cmp edx, ebx
jl 0x4052a0
jg 0x4052c7
cmp ecx, edi
jb 0x4052a0
not esi
mov eax, dword [ebp - 0x4c8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x4c8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x70]
mov dword [ebp + ecx - 0x4cc], eax
lea ecx, [ebp - 0x4b8]
call fcn.00406810
mov eax, dword [ebp - 0x4c8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_istream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x4c8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x18]
mov dword [ebp + ecx - 0x4cc], eax
lea eax, [ebp - 0x458]
mov dword [ebp - 4], 6
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00465878
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00466003
mov esp, ebp
pop ebp
ret