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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
test ebx, ebx
je 0x40d355
cmp byte [ebx], 0
je 0x40d355
mov esi, dword [ebp + 8]
test esi, esi
je 0x40d127
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edx, ecx
jmp 0x40d129
xor edx, edx
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [ecx + edx + 1]
cmp eax, 0x100
jge 0x40d355
test esi, esi
push 0xff
jne 0x40d166
lea ecx, [ebp - 0x11c]
push ebx
push ecx
call fcn.00421320
add esp, 0xc
mov byte [ebp - 0x1d], 0
jmp 0x40d1f0
lea edx, [ebp - 0x11c]
push esi
push edx
call fcn.00421320
mov al, byte [esi]
add esp, 0xc
test al, al
mov byte [ebp - 0x1d], 0
je 0x40d1c3
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + esi - 1], 0x5c
je 0x40d1c3
mov edi, 0x43045c
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [ebp - 0x11c]
push 0x8000
push eax
mov dword [ebp + 0xc], 0
call fcn.004293d5
mov edi, eax
add esp, 8
cmp edi, 0xffffffff
mov dword [ebp - 8], edi
je 0x40d33d
push edi
call fcn.0042a416
push 0
lea ecx, [ebp - 0x1c]
push eax
push ecx
push edi
call fcn.0040d000
mov esi, eax
add esp, 0x14
test esi, esi
je 0x40d31c
push 0x800
call fcn.00421288
add esp, 4
mov dword [ebp - 4], eax
test eax, eax
je 0x40d2fb
push 0
push 0
push edi
mov dword [ebp + 8], esi
mov ebx, 0xdeadbeef
call fcn.00427456
add esp, 0xc
jmp 0x40d26b
mov esi, dword [ebp + 8]
cmp esi, 0x800
jbe 0x40d278
mov esi, 0x800
mov edx, dword [ebp - 4]
push esi
push edx
push edi
call fcn.00427b93
add esp, 0xc
cmp eax, esi
jne 0x40d2c9
mov ecx, dword [ebp - 4]
lea eax, [ebp + 0xc]
test eax, eax
je 0x40d2bf
test esi, esi
mov eax, ebx
jbe 0x40d2bd
mov edi, esi
mov edx, eax
xor ebx, ebx
mov bl, byte [ecx]
and edx, 0xff
xor edx, ebx
shr eax, 8
mov edx, dword [edx*4 + 0x430050]
xor eax, edx
inc ecx
dec edi
jne 0x40d29c
mov edi, dword [ebp - 8]
mov ebx, eax
mov eax, dword [ebp + 8]
sub eax, esi
mov dword [ebp + 8], eax
jne 0x40d268
cmp ebx, dword [ebp - 0x11]
je 0x40d2d5
mov dword [ebp + 0xc], 1
mov eax, dword [ebp - 4]
push eax
call fcn.00421240
add esp, 4
push edi
call fcn.00424ea4
mov ecx, dword [ebp + 0xc]
add esp, 4
xor eax, eax
test ecx, ecx
pop edi
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
push edi
mov dword [ebp + 0xc], 3
call fcn.00424ea4
mov ecx, dword [ebp + 0xc]
add esp, 4
xor eax, eax
test ecx, ecx
pop edi
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
push edi
mov dword [ebp + 0xc], 1
call fcn.00424ea4
mov ecx, dword [ebp + 0xc]
add esp, 4
xor eax, eax
test ecx, ecx
pop edi
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp + 0xc], 4
xor eax, eax
mov ecx, dword [ebp + 0xc]
pop edi
test ecx, ecx
pop esi
pop ebx
sete al
mov esp, ebp
pop ebp
ret
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret