Function at 0x52d910
Capabilities:
Encode data using xor
Hash data using crc32b

Disassembly:
sub esp, 8
mov eax, dword fs:[0x2c]
push ebx
push esi
mov ebx, ecx
mov esi, dword [eax]
mov eax, dword [0x6160f8]
push edi
mov edi, edx
mov dword [esp + 0x10], ebx
cmp eax, dword [esi + 4]
jle 0x52db17
push 0x6160f8
call fcn.00592b09
add esp, 4
cmp dword [0x6160f8], 0xffffffff
jne 0x52db17
xor ecx, ecx
mov dword [esp + 0xc], ecx
xor eax, eax
test cl, 1
je 0x52d962
bts eax, 7
shr ecx, 1
test cl, 1
je 0x52d96d
bts eax, 6
shr ecx, 1
test cl, 1
je 0x52d978
bts eax, 5
shr ecx, 1
test cl, 1
je 0x52d983
bts eax, 4
shr ecx, 1
test cl, 1
je 0x52d98e
bts eax, 3
shr ecx, 1
test cl, 1
je 0x52d999
bts eax, 2
shr ecx, 1
test cl, 1
je 0x52d9a4
bts eax, 1
test cl, 2
je 0x52d9ad
bts eax, 0
shl eax, 0x18
mov ecx, eax
add eax, eax
sar ecx, 0x1f
and ecx, 0x4c11db7
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov edx, ecx
sar edx, 0x1f
and edx, 0x4c11db7
lea eax, [ecx + ecx]
xor edx, eax
mov ecx, edx
sar ecx, 0x1f
and ecx, 0x4c11db7
lea eax, [edx + edx]
xor ecx, eax
mov ebx, ecx
sar ebx, 0x1f
and ebx, 0x4c11db7
lea eax, [ecx + ecx]
xor ebx, eax
xor edx, edx
lea ecx, [edx + 1]
test bl, 1
je 0x52da43
mov eax, 0x20
sub eax, ecx
bts edx, eax
inc ecx
shr ebx, 1
cmp ecx, 0x21
jl 0x52da34
mov ecx, dword [esp + 0xc]
mov dword [ecx*4 + 0x613ef8], edx
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0xff
jle 0x52d957
mov edx, 0x6146f8
nop dword [eax]
mov ecx, dword [edx - 0x800]
movzx eax, cl
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx - 0x400], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx + 0x400], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx + 0x800], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx + 0xc00], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, cl
mov dword [edx + 0x1000], ecx
shr ecx, 8
xor ecx, dword [eax*4 + 0x613ef8]
mov dword [edx + 0x1400], ecx
add edx, 4
cmp edx, 0x614af4
jle 0x52da70
push 0x6160f8
call fcn.00592abf
mov ebx, dword [esp + 0x14]
add esp, 4
mov edx, dword [esp + 0x18]
not ebx
cmp edx, 8
jb 0x52dbc1
mov esi, edx
shr esi, 3
nop dword [eax + eax]
movzx ecx, byte [edi + 3]
sub edx, 8
movzx eax, byte [edi + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi]
shl ecx, 8
or ecx, eax
xor ebx, ecx
mov eax, ebx
shr eax, 0x10
movzx ecx, al
mov eax, ebx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x6152f8]
xor ecx, dword [eax*4 + 0x6156f8]
mov eax, ebx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x614ef8]
movzx eax, byte [edi + 6]
xor ecx, dword [eax*4 + 0x6142f8]
movzx eax, byte [edi + 5]
xor ecx, dword [eax*4 + 0x6146f8]
movzx eax, byte [edi + 7]
xor ecx, dword [eax*4 + 0x613ef8]
movzx eax, byte [edi + 4]
add edi, 8
xor ecx, dword [eax*4 + 0x614af8]
movzx eax, bl
xor ecx, dword [eax*4 + 0x615af8]
mov ebx, ecx
sub esi, 1
jne 0x52db30
test edx, edx
je 0x52dbdf
movzx eax, byte [edi]
lea edi, [edi + 1]
movzx ecx, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [ecx*4 + 0x613ef8]
sub edx, 1
jne 0x52dbc5
pop edi
not ebx
pop esi
mov eax, ebx
pop ebx
add esp, 8
ret