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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x54f9dc
mov ebx, dword [ebp + 8]
cmp esi, 0x40
jb 0x54f4c8
cmp dword [0x65c684], 0
jne 0x54f507
not ebx
cmp esi, 0x17
jae 0x54f5dc
cmp esi, 8
jae 0x54f539
test esi, esi
je 0x54f9d5
xor eax, eax
mov edi, ebx
xor bl, byte [edx + eax]
shr edi, 8
movzx ecx, bl
xor edi, dword [ecx*4 + 0x636878]
inc eax
mov ebx, edi
cmp esi, eax
jne 0x54f4e4
not edi
mov eax, edi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, esi
and edi, 0xfffffff0
not ebx
push ebx
push edi
push edx
call fcn.0054fa00
add esp, 0xc
mov ebx, eax
xor eax, eax
mov edx, esi
and edx, 0xf
cmovne eax, edi
and esi, 0xf
je 0x54f533
mov ecx, dword [ebp + 0xc]
add ecx, eax
mov edx, ecx
jmp 0x54f4d3
not ebx
mov edi, ebx
jmp 0x54f4fd
mov eax, ebx
xor bl, byte [edx]
shr eax, 8
movzx ecx, bl
xor eax, dword [ecx*4 + 0x636878]
mov ecx, eax
xor al, byte [edx + 1]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
xor cl, byte [edx + 2]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x636878]
mov ecx, eax
xor al, byte [edx + 3]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
xor cl, byte [edx + 4]
shr eax, 8
movzx ecx, cl
xor eax, dword [ecx*4 + 0x636878]
add esi, 0xfffffff8
mov ecx, eax
xor al, byte [edx + 5]
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
shr eax, 8
xor cl, byte [edx + 6]
movzx ecx, cl
xor eax, dword [ecx*4 + 0x636878]
mov ebx, eax
shr ebx, 8
xor al, byte [edx + 7]
add edx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x636878]
cmp esi, 7
jbe 0x54f4d8
jmp 0x54f539
test dl, 3
mov dword [ebp - 0x28], edx
jne 0x54f7a8
mov edx, 0xcccccccd
mov eax, esi
mul edx
shr edx, 4
lea eax, [edx*4]
lea eax, [eax + eax*4]
mov dword [ebp - 0x30], eax
xor eax, eax
dec edx
jne 0x54f7e1
xor edi, edi
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov edx, dword [ebp - 0x28]
xor ebx, dword [edx]
mov ecx, ebx
shr ecx, 8
and ebx, 0xff
xor ecx, dword [ebx*4 + 0x636878]
mov ebx, edx
mov edx, ecx
shr edx, 8
and ecx, 0xff
xor edx, dword [ecx*4 + 0x636878]
mov ecx, edx
shr ecx, 8
and edx, 0xff
xor ecx, dword [edx*4 + 0x636878]
mov edx, ecx
and ecx, 0xff
xor eax, dword [ecx*4 + 0x636878]
xor eax, dword [ebx + 4]
shr edx, 8
xor eax, edx
mov edx, ebx
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x636878]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
and ecx, 0xff
xor edi, dword [ecx*4 + 0x636878]
xor edi, dword [ebx + 8]
shr eax, 8
xor edi, eax
mov eax, edi
shr eax, 8
and edi, 0xff
xor eax, dword [edi*4 + 0x636878]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x636878]
mov ecx, eax
and eax, 0xff
mov edi, dword [ebp - 0x10]
xor edi, dword [eax*4 + 0x636878]
xor edi, dword [ebx + 0xc]
shr ecx, 8
xor edi, ecx
mov eax, edi
shr eax, 8
and edi, 0xff
xor eax, dword [edi*4 + 0x636878]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x636878]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x636878]
mov ecx, eax
and eax, 0xff
mov edi, dword [ebp - 0x14]
xor edi, dword [eax*4 + 0x636878]
xor edi, dword [ebx + 0x10]
shr ecx, 8
xor edi, ecx
mov eax, edi
shr eax, 8
and edi, 0xff
xor eax, dword [edi*4 + 0x636878]
mov ecx, eax
shr ecx, 8
and eax, 0xff
xor ecx, dword [eax*4 + 0x636878]
sub esi, dword [ebp - 0x30]
mov eax, ecx
shr eax, 8
and ecx, 0xff
xor eax, dword [ecx*4 + 0x636878]
mov ebx, eax
shr ebx, 8
and eax, 0xff
xor ebx, dword [eax*4 + 0x636878]
add edx, 0x14
jmp 0x54f4d3
lea ecx, [edx + 1]
mov edx, esi
dec esi
mov edi, ebx
shr edi, 8
mov eax, dword [ebp - 0x28]
xor bl, byte [eax]
inc eax
mov dword [ebp - 0x28], eax
movzx eax, bl
mov ebx, edi
xor ebx, dword [eax*4 + 0x636878]
cmp edx, 1
je 0x54f5e8
mov eax, ecx
and eax, 3
inc ecx
test eax, eax
je 0x54f5e8
jmp 0x54f7ab
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x10], 0
xor edi, edi
xor eax, eax
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x3c], edx
xor ebx, dword [ecx]
mov ecx, ebx
mov edx, 0xff
and ecx, edx
mov dword [ebp - 0x20], ecx
mov ecx, ebx
shr ecx, 8
and ecx, edx
mov ecx, dword [ecx*4 + 0x637078]
mov edx, dword [ebp - 0x20]
xor ecx, dword [edx*4 + 0x636c78]
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x24]
xor eax, dword [ecx + 4]
mov ecx, eax
mov edx, 0xff
and ecx, edx
mov dword [ebp - 0x1c], ecx
mov edx, eax
shr edx, 8
mov ecx, 0xff
and edx, ecx
mov edx, dword [edx*4 + 0x637078]
mov ecx, dword [ebp - 0x1c]
xor edx, dword [ecx*4 + 0x636c78]
mov dword [ebp - 0x2c], edx
mov ecx, dword [ebp - 0x24]
xor edi, dword [ecx + 8]
mov dword [ebp - 0x34], edi
mov edx, edi
mov ecx, 0xff
and edx, ecx
mov dword [ebp - 0x1c], edx
mov edx, edi
shr edx, 8
and edx, ecx
mov edx, dword [edx*4 + 0x637078]
mov ecx, dword [ebp - 0x1c]
xor edx, dword [ecx*4 + 0x636c78]
mov dword [ebp - 0x1c], edx
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x24]
xor edx, dword [ecx + 0xc]
mov dword [ebp - 0x10], edx
mov ecx, edx
mov edx, 0xff
and ecx, edx
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 0x10]
shr edx, 8
mov ecx, 0xff
and edx, ecx
mov edx, dword [edx*4 + 0x637078]
mov ecx, dword [ebp - 0x18]
xor edx, dword [ecx*4 + 0x636c78]
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x24]
xor edx, dword [ecx + 0x10]
mov dword [ebp - 0x14], edx
mov ecx, 0xff
and edx, ecx
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x14]
shr edx, 8
and edx, ecx
mov edx, dword [edx*4 + 0x637078]
mov ecx, dword [ebp - 0x18]
xor edx, dword [ecx*4 + 0x636c78]
mov dword [ebp - 0x18], edx
mov ecx, ebx
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
mov edx, dword [ebp - 0x20]
xor edx, dword [ecx + 0x637478]
mov dword [ebp - 0x20], edx
mov ecx, eax
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
mov edx, dword [ebp - 0x2c]
xor edx, dword [ecx + 0x637478]
mov dword [ebp - 0x2c], edx
mov ecx, edi
shr ecx, 0xe
mov edx, 0x3fc
and ecx, edx
mov edx, dword [ebp - 0x1c]
xor edx, dword [ecx + 0x637478]
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebp - 0x10]
shr ecx, 0xe
mov edi, 0x3fc
and ecx, edi
mov edx, dword [ebp - 0x38]
xor edx, dword [ecx + 0x637478]
mov ecx, dword [ebp - 0x14]
shr ecx, 0xe
and ecx, edi
mov edi, dword [ebp - 0x18]
xor edi, dword [ecx + 0x637478]
mov dword [ebp - 0x18], edi
mov ecx, ebx
shr ecx, 0x18
mov ebx, dword [ebp - 0x20]
xor ebx, dword [ecx*4 + 0x637878]
mov ecx, eax
shr ecx, 0x18
mov eax, dword [ebp - 0x2c]
xor eax, dword [ecx*4 + 0x637878]
mov ecx, dword [ebp - 0x34]
shr ecx, 0x18
mov edi, dword [ebp - 0x1c]
xor edi, dword [ecx*4 + 0x637878]
mov ecx, dword [ebp - 0x10]
shr ecx, 0x18
xor edx, dword [ecx*4 + 0x637878]
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x14]
shr ecx, 0x18
mov edx, dword [ebp - 0x18]
xor edx, dword [ecx*4 + 0x637878]
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x3c]
add ecx, 0x14
dec edx
jne 0x54f7f6
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x30]
add edx, ecx
add edx, 0xffffffec
jmp 0x54f61d
mov edi, ebx
jmp 0x54f4fb
xor edi, edi
test esi, esi
jne 0x54f4fd
xor edi, edi
push edi
push edi
push 0x5033c0
push 0x65c688
call dword [sym.imp.KERNEL32.dll_InitOnceExecuteOnce]
jmp 0x54f4fd