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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 4
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x43ee03
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
test ebx, ebx
not eax
je 0x43eb8f
test cl, 3
je 0x43eba4
mov edx, dword [esp + 0x20]
jmp 0x43eb75
test cl, 3
je 0x43eba0
movzx ebx, byte [ecx]
add ecx, 1
xor ebx, eax
movzx ebx, bl
shr eax, 8
xor eax, dword [ebx*4 + 0x46e980]
sub edx, 1
jne 0x43eb70
add esp, 4
not eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x20], edx
cmp dword [esp + 0x20], 0x1f
jbe 0x43ed7c
mov esi, dword [esp + 0x20]
mov ebx, ecx
mov dword [esp], ecx
xor eax, dword [ebx]
mov edx, eax
movzx edi, al
shr edx, 0x10
movzx ebp, ah
mov ecx, dword [edi*4 + 0x46f580]
and edx, 0xff
shr eax, 0x18
xor ecx, dword [eax*4 + 0x46e980]
xor ecx, dword [ebx + 4]
xor ecx, dword [ebp*4 + 0x46f180]
xor ecx, dword [edx*4 + 0x46ed80]
mov eax, ecx
movzx ebp, cl
shr eax, 0x10
mov edi, ecx
movzx edx, ch
and eax, 0xff
mov ecx, dword [ebp*4 + 0x46f580]
shr edi, 0x18
xor ecx, dword [edi*4 + 0x46e980]
xor ecx, dword [ebx + 8]
xor ecx, dword [edx*4 + 0x46f180]
xor ecx, dword [eax*4 + 0x46ed80]
mov eax, ecx
movzx edi, cl
shr eax, 0x10
mov ebp, ecx
movzx edx, ch
and eax, 0xff
mov ecx, dword [edi*4 + 0x46f580]
shr ebp, 0x18
xor ecx, dword [ebp*4 + 0x46e980]
xor ecx, dword [ebx + 0xc]
xor ecx, dword [edx*4 + 0x46f180]
xor ecx, dword [eax*4 + 0x46ed80]
mov eax, ecx
movzx ebp, cl
shr eax, 0x10
mov edi, ecx
movzx edx, ch
and eax, 0xff
mov ecx, dword [ebp*4 + 0x46f580]
shr edi, 0x18
xor ecx, dword [edi*4 + 0x46e980]
xor ecx, dword [ebx + 0x10]
xor ecx, dword [edx*4 + 0x46f180]
xor ecx, dword [eax*4 + 0x46ed80]
mov eax, ecx
mov ebp, ecx
shr eax, 0x10
movzx edi, cl
movzx edx, ch
and eax, 0xff
mov ecx, dword [edi*4 + 0x46f580]
shr ebp, 0x18
sub esi, 0x20
xor ecx, dword [ebp*4 + 0x46e980]
xor ecx, dword [ebx + 0x14]
xor ecx, dword [edx*4 + 0x46f180]
xor ecx, dword [eax*4 + 0x46ed80]
mov eax, ecx
movzx ebp, cl
shr eax, 0x10
mov edi, ecx
movzx edx, ch
and eax, 0xff
mov ecx, dword [ebp*4 + 0x46f580]
shr edi, 0x18
xor ecx, dword [edi*4 + 0x46e980]
xor ecx, dword [ebx + 0x18]
xor ecx, dword [edx*4 + 0x46f180]
xor ecx, dword [eax*4 + 0x46ed80]
mov eax, ecx
movzx edx, cl
shr eax, 0x10
mov ebp, ecx
mov edx, dword [edx*4 + 0x46f580]
and eax, 0xff
movzx edi, ch
shr ebp, 0x18
xor edx, dword [ebp*4 + 0x46e980]
xor edx, dword [ebx + 0x1c]
add ebx, 0x20
xor edx, dword [edi*4 + 0x46f180]
xor edx, dword [eax*4 + 0x46ed80]
mov edi, edx
mov eax, edx
shr edi, 0x10
movzx ebp, dl
shr eax, 0x18
and edi, 0xff
mov eax, dword [eax*4 + 0x46e980]
movzx edx, dh
xor eax, dword [ebp*4 + 0x46f580]
xor eax, dword [edx*4 + 0x46f180]
xor eax, dword [edi*4 + 0x46ed80]
cmp esi, 0x1f
ja 0x43ebb8
mov edx, dword [esp + 0x20]
mov ecx, dword [esp]
and dword [esp + 0x20], 0x1f
sub edx, 0x20
and edx, 0xffffffe0
lea ecx, [ecx + edx + 0x20]
cmp dword [esp + 0x20], 3
jbe 0x43edd3
mov edx, dword [esp + 0x20]
sub edx, 4
shr edx, 2
lea esi, [ecx + edx*4 + 4]
mov edx, dword [ecx]
add ecx, 4
xor edx, eax
mov ebx, edx
mov eax, edx
shr ebx, 0x10
movzx edi, dl
shr eax, 0x18
and ebx, 0xff
mov eax, dword [eax*4 + 0x46e980]
movzx edx, dh
xor eax, dword [edi*4 + 0x46f580]
xor eax, dword [edx*4 + 0x46f180]
xor eax, dword [ebx*4 + 0x46ed80]
cmp ecx, esi
jne 0x43ed91
and dword [esp + 0x20], 3
mov edx, dword [esp + 0x20]
test edx, edx
je 0x43eb8f
mov ebx, dword [esp + 0x20]
add ebx, ecx
movzx edx, byte [ecx]
add ecx, 1
xor edx, eax
movzx edx, dl
shr eax, 8
xor eax, dword [edx*4 + 0x46e980]
cmp ecx, ebx
jne 0x43ede5
jmp 0x43eb8f
add esp, 4
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret