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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x14
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
test edx, edx
je 0x45e3b0
mov dword [esp + 0x10], 1
mov eax, dword [esp + 0x28]
not eax
test ecx, ecx
jne 0x45e145
jmp 0x45e3a5
mov bl, byte [edx]
xor ebx, eax
movzx ebx, bl
shr eax, 8
xor eax, dword [ebx*4 + 0x59ee80]
inc edx
dec ecx
je 0x45e3a5
test dl, 3
jne 0x45e12c
cmp ecx, 0x1f
jbe 0x45e32c
mov ebx, ecx
mov esi, edx
mov dword [esp], edx
nop
xor eax, dword [esi]
movzx ebp, ah
mov edx, eax
shr edx, 0x10
and edx, 0xff
movzx edi, al
shr eax, 0x18
mov edi, dword [edi*4 + 0x59fa80]
xor edi, dword [eax*4 + 0x59ee80]
xor edi, dword [esi + 4]
xor edi, dword [ebp*4 + 0x59f680]
xor edi, dword [edx*4 + 0x59f280]
mov eax, edi
movzx edx, ah
shr eax, 0x10
and eax, 0xff
mov ebp, edi
and ebp, 0xff
shr edi, 0x18
mov ebp, dword [ebp*4 + 0x59fa80]
xor ebp, dword [edi*4 + 0x59ee80]
xor ebp, dword [esi + 8]
xor ebp, dword [edx*4 + 0x59f680]
xor ebp, dword [eax*4 + 0x59f280]
mov eax, ebp
movzx edx, ah
shr eax, 0x10
and eax, 0xff
mov edi, ebp
and edi, 0xff
shr ebp, 0x18
mov edi, dword [edi*4 + 0x59fa80]
xor edi, dword [ebp*4 + 0x59ee80]
xor edi, dword [esi + 0xc]
xor edi, dword [edx*4 + 0x59f680]
xor edi, dword [eax*4 + 0x59f280]
mov eax, edi
movzx edx, ah
shr eax, 0x10
and eax, 0xff
mov ebp, edi
and ebp, 0xff
shr edi, 0x18
mov ebp, dword [ebp*4 + 0x59fa80]
xor ebp, dword [edi*4 + 0x59ee80]
xor ebp, dword [esi + 0x10]
xor ebp, dword [edx*4 + 0x59f680]
xor ebp, dword [eax*4 + 0x59f280]
mov eax, ebp
movzx edx, ah
shr eax, 0x10
and eax, 0xff
mov edi, ebp
and edi, 0xff
shr ebp, 0x18
mov edi, dword [edi*4 + 0x59fa80]
xor edi, dword [ebp*4 + 0x59ee80]
xor edi, dword [esi + 0x14]
xor edi, dword [edx*4 + 0x59f680]
xor edi, dword [eax*4 + 0x59f280]
mov eax, edi
movzx edx, ah
shr eax, 0x10
and eax, 0xff
mov ebp, edi
and ebp, 0xff
shr edi, 0x18
mov ebp, dword [ebp*4 + 0x59fa80]
xor ebp, dword [edi*4 + 0x59ee80]
xor ebp, dword [esi + 0x18]
xor ebp, dword [edx*4 + 0x59f680]
xor ebp, dword [eax*4 + 0x59f280]
mov eax, ebp
movzx edi, ah
shr eax, 0x10
and eax, 0xff
mov edx, ebp
and edx, 0xff
shr ebp, 0x18
mov edx, dword [edx*4 + 0x59fa80]
xor edx, dword [ebp*4 + 0x59ee80]
xor edx, dword [esi + 0x1c]
xor edx, dword [edi*4 + 0x59f680]
xor edx, dword [eax*4 + 0x59f280]
add esi, 0x20
mov edi, edx
shr edi, 0x10
and edi, 0xff
mov eax, edx
shr eax, 0x18
movzx ebp, dl
mov eax, dword [eax*4 + 0x59ee80]
xor eax, dword [ebp*4 + 0x59fa80]
movzx edx, dh
xor eax, dword [edx*4 + 0x59f680]
xor eax, dword [edi*4 + 0x59f280]
sub ebx, 0x20
cmp ebx, 0x1f
ja 0x45e15c
mov edx, dword [esp]
lea ebx, [ecx - 0x20]
and ebx, 0xffffffe0
lea edx, [edx + ebx + 0x20]
and ecx, 0x1f
cmp ecx, 3
jbe 0x45e389
mov edi, ecx
mov esi, edx
mov dword [esp], edx
mov edx, dword [esi]
xor edx, eax
add esi, 4
mov ebx, edx
shr ebx, 0x10
and ebx, 0xff
mov eax, edx
shr eax, 0x18
movzx ebp, dl
mov eax, dword [eax*4 + 0x59ee80]
xor eax, dword [ebp*4 + 0x59fa80]
movzx edx, dh
xor eax, dword [edx*4 + 0x59f680]
xor eax, dword [ebx*4 + 0x59f280]
sub edi, 4
cmp edi, 3
ja 0x45e338
mov edx, dword [esp]
lea ebx, [ecx - 4]
shr ebx, 2
lea edx, [edx + ebx*4 + 4]
and ecx, 3
test ecx, ecx
je 0x45e3a5
lea esi, [esi]
mov bl, byte [edx]
xor ebx, eax
movzx ebx, bl
shr eax, 8
xor eax, dword [ebx*4 + 0x59ee80]
inc edx
dec ecx
jne 0x45e390
not eax
add esp, 0x14
pop ebx
pop esi
pop edi
pop ebp
ret
xor eax, eax
add esp, 0x14
pop ebx
pop esi
pop edi
pop ebp
ret