Function at 0x552bd0
Capabilities:
Encode data using xor
Hash data using murmur2

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov dword [ebp - 0x14], ecx
mov edi, dword [ebp + 0xc]
movzx ebx, byte [edi + 0xb]
test bl, bl
jns 0x552bec
mov ebx, dword [edi + 4]
mov edi, dword [edi]
mov eax, ebx
mov ecx, edi
mov edx, ebx
mov dword [ebp - 0x1c], ebx
cmp ebx, 4
jb 0x552c27
mov eax, dword [ebp - 0x1c]
mov edx, eax
mov ecx, edi
imul esi, dword [ecx], 0x5bd1e995
mov ebx, esi
shr ebx, 0x18
xor ebx, esi
imul esi, ebx, 0x5bd1e995
imul eax, eax, 0x5bd1e995
xor eax, esi
add ecx, 4
add edx, 0xfffffffc
cmp edx, 3
ja 0x552c01
cmp edx, 1
je 0x552c48
cmp edx, 2
je 0x552c3f
cmp edx, 3
jne 0x552c53
movzx edx, byte [ecx + 2]
shl edx, 0x10
xor eax, edx
movzx edx, byte [ecx + 1]
shl edx, 8
xor eax, edx
movzx ecx, byte [ecx]
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul eax, ecx, 0x5bd1e995
mov esi, eax
shr esi, 0xf
xor esi, eax
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax + 4]
test ebx, ebx
mov dword [ebp - 0x10], esi
je 0x552d71
mov ecx, ebx
shr ecx, 1
and ecx, 0x55555555
mov eax, ebx
sub eax, ecx
mov ecx, 0x33333333
mov edx, eax
and edx, ecx
shr eax, 2
and eax, ecx
add eax, edx
mov ecx, eax
shr ecx, 4
add ecx, eax
and ecx, 0xf0f0f0f
imul eax, ecx, 0x1010101
shr eax, 0x18
mov dword [ebp - 0x28], eax
cmp eax, 1
ja 0x552e6b
lea ecx, [ebx - 1]
and ecx, esi
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
test eax, eax
mov dword [ebp - 0x18], ecx
je 0x552d77
mov esi, dword [eax]
test esi, esi
je 0x552d77
lea eax, [ebx - 1]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], ebx
mov eax, dword [esi + 4]
cmp eax, dword [ebp - 0x10]
je 0x552cf8
cmp dword [ebp - 0x28], 1
ja 0x552d35
and eax, dword [ebp - 0x20]
cmp eax, ecx
jne 0x552d77
movzx ecx, byte [esi + 0x13]
mov eax, ecx
test cl, cl
jns 0x552d05
mov eax, dword [esi + 0xc]
cmp eax, dword [ebp - 0x1c]
jne 0x552d5f
lea eax, [esi + 8]
mov edx, dword [eax]
test cl, cl
cmovs eax, edx
js 0x552d41
xor ebx, ebx
test ecx, ecx
je 0x552e09
dec ecx
cmp dl, byte [edi + ebx]
jne 0x552d5f
cmp ecx, ebx
je 0x552ee2
mov dl, byte [esi + ebx + 9]
inc ebx
jmp 0x552d21
cmp eax, ebx
jb 0x552cf4
xor edx, edx
div ebx
mov eax, edx
jmp 0x552cf4
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
je 0x552ee2
push ecx
push edi
push eax
call fcn.005065ad
add esp, 0xc
test eax, eax
je 0x552ee2
mov esi, dword [esi]
test esi, esi
mov ebx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x18]
jne 0x552ce3
jmp 0x552d77
xor eax, eax
dec eax
mov dword [ebp - 0x18], eax
mov edi, dword [ebp + 0x10]
push 0x18
call fcn.00503d75
add esp, 4
mov esi, eax
mov eax, dword [edi + 8]
mov dword [esi + 0x10], eax
movsd xmm0, qword [edi]
movsd qword [esi + 8], xmm0
xor eax, eax
mov dword [edi + 8], eax
mov dword [edi], eax
mov dword [edi + 4], eax
mov ecx, dword [edi + 0xc]
mov dword [esi + 0x14], ecx
mov ecx, dword [ebp - 0x10]
mov dword [esi + 4], ecx
mov dword [esi], eax
mov edi, dword [ebp - 0x14]
mov eax, dword [edi + 0xc]
inc eax
movd xmm0, eax
movq xmm1, qword [0x5d82d0]
por xmm0, xmm1
subsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
movd xmm2, ebx
por xmm2, xmm1
subsd xmm2, xmm1
cvtsd2ss xmm2, xmm2
movss xmm1, dword [edi + 0x10]
mulss xmm2, xmm1
ucomiss xmm0, xmm2
ja 0x552e1b
test ebx, ebx
je 0x552e1b
mov edx, dword [ebp - 0x18]
mov eax, dword [edi]
mov ecx, dword [eax + edx*4]
test ecx, ecx
je 0x552e82
mov eax, dword [ecx]
mov dword [esi], eax
mov dword [ecx], esi
inc dword [edi + 0xc]
mov bl, 1
mov eax, dword [ebp + 8]
mov dword [eax], esi
mov byte [eax + 4], bl
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
divss xmm0, xmm1
cvtss2sd xmm0, xmm0
sub esp, 8
movsd qword [esp], xmm0
call fcn.00532ba0
add esp, 8
fstp dword [ebp - 0x2c]
movss xmm0, dword [ebp - 0x2c]
cvttss2si ecx, xmm0
mov edx, ecx
sar edx, 0x1f
subss xmm0, dword [0x5c9708]
cvttss2si eax, xmm0
and eax, edx
or eax, ecx
lea ecx, [ebx + ebx]
cmp ebx, 3
jb 0x552eb0
lea edi, [ebx - 1]
xor edx, edx
test ebx, edi
mov edi, dword [ebp - 0x14]
setne dl
jmp 0x552eb3
mov ecx, esi
cmp esi, ebx
jb 0x552cbd
mov eax, esi
xor edx, edx
div ebx
mov ecx, edx
jmp 0x552cbd
mov ecx, dword [edi + 8]
mov dword [esi], ecx
lea ecx, [edi + 8]
mov dword [edi + 8], esi
mov dword [eax + edx*4], ecx
mov eax, dword [esi]
test eax, eax
je 0x552e04
mov eax, dword [eax + 4]
lea ecx, [ebx - 1]
test ebx, ecx
jne 0x552ef2
and eax, ecx
mov ecx, dword [edi]
mov dword [ecx + eax*4], esi
jmp 0x552e04
xor edx, edx
inc edx
or edx, ecx
cmp edx, eax
cmovb edx, eax
mov ecx, edi
push edx
call fcn.00455850
mov ebx, dword [edi + 4]
lea edx, [ebx - 1]
test ebx, edx
jne 0x552ed4
and edx, dword [ebp - 0x10]
jmp 0x552df1
mov eax, dword [ebp - 0x10]
cmp eax, ebx
jae 0x552ee9
mov edx, eax
jmp 0x552df1
xor ebx, ebx
jmp 0x552e09
xor edx, edx
div ebx
jmp 0x552df1
cmp eax, ebx
jb 0x552ea6
xor edx, edx
div ebx
mov eax, edx
jmp 0x552ea6