Function at 0x41faa0
Capabilities:
Encode data using xor
Hash data with crc32
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b8ec6
mov eax, dword fs:[0]
push eax
sub esp, 0xf94
mov eax, dword [0x4ebe10]
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
lea eax, [ebp - 0xf98]
mov edi, ecx
push eax
mov dword [ebp - 0xf9c], edi
call fcn.00410160
xor esi, esi
push 0x206
mov dword [ebp - 4], esi
lea edx, [ebp - 0x76e]
xor ecx, ecx
push esi
push edx
mov dword [ebp - 0xf80], esi
mov dword [ebp - 0xf78], esi
mov word [ebp - 0x770], cx
call fcn.00443140
add esp, 0xc
push 0x206
lea ecx, [ebp - 0x566]
xor eax, eax
push esi
push ecx
mov word [ebp - 0x568], ax
call fcn.00443140
add esp, 0xc
push 0x206
lea eax, [ebp - 0x35e]
xor edx, edx
push esi
push eax
mov word [ebp - 0x360], dx
call fcn.00443140
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x770]
push ecx
push esi
push eax
call 0x767081
lea edx, [ebp - 0x770]
push 0x5c
push edx
call fcn.0043e7bd
push 0x103
xor ecx, ecx
add eax, 2
lea edx, [ebp - 0x157]
push esi
mov word [eax], cx
push edx
mov byte [ebp - 0x158], cl
call fcn.00443140
mov ebx, dword [0x4ba328]
add esp, 0x14
push esi
push esi
push esi
push esi
push 0xffffffffffffffff
push edi
push esi
push esi
call ebx
push esi
push esi
push eax
lea eax, [ebp - 0x158]
push eax
push 0xffffffffffffffff
push edi
push esi
push esi
call ebx
lea ecx, [ebp - 0xf98]
push ecx
lea ecx, [ebp - 0x158]
call fcn.0041df40
mov ecx, dword [ebp - 0xf88]
add esp, 4
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
cmp ebx, esi
mov dword [ebp - 0xf74], ebx
jle 0x420003
push 0x5c
push edi
call fcn.0043e7bd
push str._output0.txt
push eax
lea edx, [ebp - 0x770]
push edx
push str._s_s_s
lea edx, [ebp - 0x360]
call fcn.00418fd0
push 0x208
push esi
push 0x4f6b10
call fcn.00443140
add esp, 0x24
lea eax, [ebp - 0x360]
push eax
push 0x104
push 0x4f6b10
call fcn.0043ec76
add esp, 0xc
push 0x5c
push 0x4f6b10
call fcn.0043e7bd
add esp, 8
cmp eax, esi
je 0x41fc5e
xor ecx, ecx
mov word [eax], cx
push 0x4f6b10
push eax
call 0x831ed6
cmp eax, 0xffffffff
je 0x41fc72
test al, 0x10
jne 0x41fc7e
mov esi, 0x4f6b10
call fcn.0041a360
xor esi, esi
lea edx, [ebp - 0x360]
push 0x5c
push edx
call fcn.0043e7bd
xor ecx, ecx
add esp, 8
mov word [eax], cx
test ebx, ebx
jle 0x41ffad
xor edi, edi
mov edi, edi
mov ebx, dword [ebp - 0xf88]
mov ecx, ebx
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jb 0x41fcd0
call fcn.00440345
mov ebx, dword [ebp - 0xf88]
mov ecx, dword [ebp - 0xf8c]
lea eax, [edi + ecx + 4]
lea edx, [eax + 1]
mov dword [ebp - 0xf7c], edx
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x41fce3
sub eax, dword [ebp - 0xf7c]
sub ebx, ecx
mov dword [ebp - 0xf7c], eax
mov eax, 0x92492493
imul ebx
add edx, ebx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jb 0x41fd1a
call fcn.00440345
mov ecx, dword [ebp - 0xf8c]
mov edx, dword [ebp - 0xf7c]
push 0
push 0
inc edx
push edx
lea eax, [edi + ecx + 4]
push eax
push 0
push 0
call dword [0x4ba2cc]
mov ecx, dword [ebp - 0xf88]
sub ecx, dword [ebp - 0xf8c]
mov ebx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp esi, ecx
jb 0x41fd5f
call fcn.00440345
mov eax, dword [ebp - 0xf8c]
push ebx
lea edx, [ebp - 0x50]
push edx
push 0xffffffffffffffff
lea ecx, [edi + eax + 4]
push ecx
push 0
push 0
call dword [0x4ba2cc]
mov eax, dword [ebp - 0xf9c]
lea edx, [ebp - 0x50]
push edx
push eax
push str._s_s
lea edx, [ebp - 0x568]
call fcn.00418fd0
add esp, 0xc
push 0x4e2234
lea ecx, [ebp - 0x568]
push ecx
lea edx, [ebp - 0xf80]
push edx
call fcn.00440a36
mov ecx, dword [ebp - 0xf88]
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0xc
cmp esi, eax
jb 0x41fddc
call fcn.00440345
mov ecx, dword [ebp - 0xf80]
mov edx, dword [ebp - 0xf8c]
mov eax, dword [edi + edx + 0x18]
push ecx
mov ecx, dword [0x4f69d0]
push 1
push eax
push ecx
call fcn.00441043
mov edx, dword [ebp - 0xf80]
push edx
call fcn.004410d7
mov ecx, dword [ebp - 0xf88]
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0x14
mov dword [ebp - 0xf80], 0
cmp esi, eax
jb 0x41fe3d
call fcn.00440345
mov ecx, dword [0x4f69d4]
call fcn.00424e70
mov ecx, dword [0x4f6920]
push eax
call fcn.00424e70
mov ecx, dword [ebp - 0xf8c]
mov edx, dword [edi + ecx + 0x18]
push eax
mov eax, dword [0x4f69d0]
push edx
call fcn.004246e0
add esp, 0xc
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x360]
push ecx
push str._s_s
lea edx, [ebp - 0x568]
call fcn.00418fd0
add esp, 0xc
push 0x4e2444
lea edx, [ebp - 0x568]
push edx
lea eax, [ebp - 0xf78]
push eax
call fcn.00440a36
mov ecx, dword [ebp - 0xf88]
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
add esp, 0xc
cmp esi, ecx
jb 0x41fece
call fcn.00440345
mov edx, dword [ebp - 0xf8c]
mov edx, dword [edi + edx + 0x18]
or eax, 0xffffffff
xor ecx, ecx
mov dword [ebp - 0xf7c], edx
test edx, edx
jbe 0x41ff0e
mov edx, dword [0x4f69d0]
movzx edx, byte [ecx + edx]
mov ebx, eax
and ebx, 0xff
xor edx, ebx
shr eax, 8
xor eax, dword [edx*4 + 0x4ee598]
inc ecx
cmp ecx, dword [ebp - 0xf7c]
jb 0x41fee7
not eax
mov dword [ebp - 0xfa0], eax
mov eax, dword [ebp - 0xf78]
push eax
push 1
lea ecx, [ebp - 0xfa0]
push 4
push ecx
call fcn.0044195e
mov ecx, dword [ebp - 0xf88]
sub ecx, dword [ebp - 0xf8c]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0x10
cmp esi, eax
jb 0x41ff58
call fcn.00440345
mov ecx, dword [ebp - 0xf78]
mov edx, dword [ebp - 0xf8c]
mov eax, dword [edi + edx + 0x18]
push ecx
mov ecx, dword [0x4f69d0]
push 1
push eax
push ecx
call fcn.0044195e
mov edx, dword [ebp - 0xf78]
push edx
call fcn.004410d7
inc esi
add esp, 0x14
add edi, 0x1c
cmp esi, dword [ebp - 0xf74]
mov dword [ebp - 0xf78], 0
jl 0x41fca0
mov ebx, dword [ebp - 0xf74]
mov edi, dword [ebp - 0xf9c]
xor eax, eax
push 0x7fe
push eax
lea ecx, [ebp - 0xf6e]
push ecx
mov word [ebp - 0xf70], ax
call fcn.00443140
add esp, 0xc
lea edx, [ebp - 0x360]
push edx
push edi
push str.Protection_completed._r_n_s_r_n___r_n_s
lea edx, [ebp - 0xf70]
call fcn.00419010
add esp, 0xc
push 0x40
push 0x4e20ec
lea eax, [ebp - 0xf70]
push eax
push 0
call 0x61ea9e
call fcn.0042d661
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x42001d
push 0x80004005
call fcn.00405ad0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0xf74], eax
push edi
push str._s_.
lea edi, [ebp - 0xf74]
mov byte [ebp - 4], 1
call fcn.0041a310
mov ecx, dword [ebp - 0xf74]
mov edx, dword [0x4f6918]
add esp, 8
push 0x30
push 0x4e20ec
push ecx
push edx
call 0x61ecac