Function at 0x4a6460
Capabilities:
Encode data using xor
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54e03d
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x24
call fcn.004a6680
call fcn.004a6940
push eax
mov dword [ebp - 0x30], eax
call fcn.00516465
add esp, 4
test eax, eax
jne 0x4a6679
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
push edi
push esi
mov dword [ebp - 4], eax
call fcn.004a6240
add esp, 8
mov dword [ebp - 0x14], edx
mov ecx, eax
or eax, edx
je 0x4a64be
mov esi, ecx
jmp 0x4a6659
cmp dword [0x5f7bd8], 0x400
jne 0x4a64e0
xorps xmm0, xmm0
movlpd qword [ebp - 0x2c], xmm0
mov eax, dword [ebp - 0x28]
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x14], eax
jmp 0x4a6659
push dword [ebp + 0x14]
push esi
call fcn.004a6300
movzx edx, ax
xor esi, esi
mov eax, dword [0x5f7bd8]
add esp, 8
movzx ecx, ax
inc eax
mov dword [0x5f7bd8], eax
movzx eax, dx
add eax, 0x10
mov dword [ebp - 0x20], edx
mov edx, ecx
bts esi, eax
xor ecx, ecx
mov dword [ebp - 0x24], edx
cmp eax, 0x20
cmovae ecx, esi
xor esi, ecx
cmp eax, 0x40
mov eax, edx
cmovae ecx, esi
cdq
or ecx, edx
or esi, eax
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp - 0x20]
movzx eax, cx
imul ecx, eax, 0x5c
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x1c], ecx
mov edx, dword [ecx + 0x5f8358]
inc edx
mov dword [ecx + 0x5f8358], edx
mov ecx, edi
lea eax, [ecx + 1]
mov dword [ebp - 0x28], eax
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4a6550
sub ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 0x5f835c]
cmp eax, ecx
cmova ecx, eax
mov eax, dword [ebp - 0x1c]
mov dword [eax + 0x5f835c], ecx
cmp dword [0x5f7c68], edx
mov eax, dword [ebp - 0x24]
cmova edx, dword [0x5f7c68]
mov dword [0x5f7c68], edx
lea ecx, [eax + eax*2]
mov eax, dword [ebp - 0x14]
shl ecx, 5
mov dword [ebp - 0x28], ecx
mov dword [ecx + 0x5f9450], esi
mov esi, edi
mov dword [ecx + 0x5f9454], eax
lea edx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4a65a4
sub esi, edx
mov eax, 0x3f
cmp esi, eax
cmova esi, eax
lea eax, [ecx + 0x5f9460]
push esi
push edi
push eax
call fcn.00518310
mov eax, dword [ebp + 0x10]
add esp, 0xc
cmp eax, 0xffffffff
jne 0x4a661f
mov edx, dword [ebp + 8]
mov eax, 0x1505
mov cl, byte [edx]
mov byte [ebp - 0xd], cl
test cl, cl
je 0x4a65fa
mov ecx, eax
lea edx, [edx + 1]
shl eax, 5
add eax, ecx
movsx ecx, byte [ebp - 0xd]
xor eax, ecx
mov cl, byte [edx]
mov byte [ebp - 0xd], cl
test cl, cl
jne 0x4a65e1
mov dl, byte [edi]
test dl, dl
je 0x4a6615
mov ecx, eax
lea edi, [edi + 1]
shl eax, 5
add eax, ecx
movsx ecx, dl
mov dl, byte [edi]
xor eax, ecx
test dl, dl
jne 0x4a6600
and eax, 0x1f
mov eax, dword [eax*4 + 0x58af68]
mov ecx, dword [ebp - 0x28]
and eax, 0xffffff
mov edx, dword [ebp - 0x20]
mov byte [ecx + esi + 0x5f9460], 0
mov dword [ecx + 0x5f94a4], eax
movzx eax, dx
mov dword [ecx + 0x5f945c], eax
mov eax, dword [ebp - 0x24]
mov dword [ecx + 0x5f94a0], esi
mov esi, dword [ebp - 0x18]
mov dword [ecx + 0x5f9458], eax
mov byte [eax + 0x611450], dl
push dword [ebp - 0x30]
call fcn.005164c0
mov ecx, dword [ebp - 0xc]
add esp, 4
mov edx, dword [ebp - 0x14]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push eax
call fcn.00516821
int3