Function at 0x58e3b0
Capabilities:
Encode data using xor
Hash data using murmur3

Disassembly:
mov edx, dword [0x621b2c]
sub esp, 0x14
push esi
push edi
mov edi, dword [esp + 0x20]
mov esi, dword [edi + 0x10]
lea eax, [edx - 1]
cmp esi, eax
jne 0x58e3d1
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret
mov ecx, dword [esp + 0x24]
cmp dword [edi + 0xc], ecx
ja 0x58e3c9
fld qword [0x5f2160]
push ebp
mov ebp, dword [esi*4 + 0x621b34]
inc esi
mov eax, ebp
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
test eax, eax
jge 0x58e3fd
fadd qword [0x5dae30]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
fmul st(1)
or eax, 0xc00
mov dword [esp + 0x14], eax
fldcw word [esp + 0x14]
fistp qword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
fldcw word [esp + 0xc]
cmp eax, ecx
ja 0x58e42d
cmp esi, edx
jl 0x58e3e1
lea eax, [ebp*4]
fstp st(0)
push ebx
push eax
mov dword [esp + 0x14], esi
call fcn.00581170
mov ebx, eax
add esp, 4
lea eax, [ebp*4]
push eax
test ebx, ebx
je 0x58e4e4
push 0
push ebx
call fcn.004ce490
xor eax, eax
add esp, 0xc
mov dword [esp + 0x14], eax
cmp dword [edi + 4], eax
jbe 0x58e4ce
lea esp, [esp]
mov ecx, dword [edi]
mov esi, dword [ecx + eax*4]
test esi, esi
je 0x58e4c0
lea esp, [esp]
mov ecx, dword [esi + 4]
mov eax, ecx
shr eax, 0x10
xor eax, ecx
imul eax, eax, 0x85ebca6b
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul ecx, ecx, 0xc2b2ae35
mov eax, ecx
shr eax, 0x10
xor eax, ecx
xor edx, edx
div ebp
mov edi, dword [esi]
mov eax, dword [ebx + edx*4]
mov dword [esi], eax
mov dword [ebx + edx*4], esi
mov esi, edi
test edi, edi
jne 0x58e480
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x28]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [edi + 4]
jb 0x58e470
mov esi, dword [esp + 0x10]
mov eax, dword [edi]
test eax, eax
je 0x58e4dd
push eax
call fcn.00581290
add esp, 4
mov dword [edi], ebx
jmp 0x58e59d
mov ecx, dword [edi]
push ecx
call fcn.00581280
mov esi, eax
add esp, 8
mov dword [esp + 0x18], esi
test esi, esi
jne 0x58e504
pop ebx
pop ebp
pop edi
or eax, 0xffffffff
pop esi
add esp, 0x14
ret
mov eax, dword [edi + 4]
mov edx, ebp
sub edx, eax
add edx, edx
add edx, edx
push edx
lea eax, [esi + eax*4]
push 0
push eax
call fcn.004ce490
xor ebx, ebx
add esp, 0xc
cmp dword [edi + 4], ebx
jbe 0x58e597
mov edi, esi
mov dword [esp + 0x14], esi
jmp 0x58e530
mov esi, dword [edi]
test esi, esi
je 0x58e580
mov ecx, dword [esi + 4]
mov eax, ecx
shr eax, 0x10
xor eax, ecx
imul eax, eax, 0x85ebca6b
mov ecx, eax
shr ecx, 0xd
xor ecx, eax
imul ecx, ecx, 0xc2b2ae35
mov eax, ecx
shr eax, 0x10
xor eax, ecx
xor edx, edx
div ebp
cmp edx, ebx
jne 0x58e566
mov edi, esi
jmp 0x58e576
mov ecx, dword [esi]
mov eax, dword [esp + 0x18]
mov dword [edi], ecx
mov ecx, dword [eax + edx*4]
mov dword [esi], ecx
mov dword [eax + edx*4], esi
mov esi, dword [edi]
test esi, esi
jne 0x58e536
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
inc ebx
add edi, 4
mov dword [esp + 0x14], edi
cmp ebx, dword [edx + 4]
jb 0x58e530
mov esi, dword [esp + 0x18]
mov edi, edx
mov dword [edi], esi
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
pop ebx
mov dword [edi + 4], ebp
pop ebp
mov dword [edi + 0x10], esi
mov dword [edi + 0xc], eax
pop edi
xor eax, eax
pop esi
add esp, 0x14
ret