Function at 0x46a8e0
Capabilities:
Encode data using xor
Hash data using djb2
Hash data using jshash
Hash data using rshash

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x4fca20]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov dword [ebp - 0x44], ecx
mov ebx, eax
test eax, eax
jne 0x46a903
xor esi, esi
jmp 0x46a944
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jg 0x46a940
lea edi, [eax + eax]
mov eax, edi
call fcn.00480b20
mov esi, esp
test esi, esi
je 0x46a940
push 0
push 0
push edi
push esi
push 0xffffffffffffffff
push ebx
push 0
push 3
mov byte [esi], 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
neg eax
sbb eax, eax
and eax, esi
jmp 0x46a942
xor eax, eax
mov esi, eax
xor edx, edx
cmp byte [esi], dl
je 0x46a957
lea ebx, [ebx]
inc edx
cmp byte [edx + esi], 0
jne 0x46a950
xor ecx, ecx
mov edi, esi
mov eax, 0xf8c9
test edx, edx
je 0x46a976
movsx ebx, byte [edi]
imul ecx, eax
imul eax, eax, 0x5c6b7
add ecx, ebx
inc edi
dec edx
jne 0x46a964
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
cmp byte [esi], cl
je 0x46a987
nop
inc ecx
cmp byte [ecx + esi], 0
jne 0x46a980
mov edx, esi
mov eax, 0x4e67c6a7
test ecx, ecx
je 0x46a9a9
mov edi, eax
mov ebx, eax
shl edi, 5
shr ebx, 2
add edi, ebx
movsx ebx, byte [edx]
add edi, ebx
xor eax, edi
inc edx
dec ecx
jne 0x46a992
xor ecx, ecx
mov dword [ebp - 0x38], eax
cmp byte [esi], cl
je 0x46a9b9
inc ecx
cmp byte [ecx + esi], 0
jne 0x46a9b2
mov edx, esi
call fcn.0046a720
mov dword [ebp - 0x34], eax
xor eax, eax
cmp byte [esi], al
je 0x46a9d7
lea esp, [esp]
inc eax
cmp byte [eax + esi], 0
jne 0x46a9d0
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x46a9ef
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x83
add ecx, edi
inc edx
dec eax
jne 0x46a9e0
xor edi, edi
cmp byte [esi], 0
mov dword [ebp - 0x30], ecx
je 0x46aa07
lea esp, [esp]
inc edi
cmp byte [edi + esi], 0
jne 0x46aa00
mov eax, esi
call fcn.0046a760
xor ecx, ecx
mov dword [ebp - 0x2c], eax
cmp byte [esi], cl
je 0x46aa1e
inc ecx
cmp byte [ecx + esi], 0
jne 0x46aa17
mov edx, esi
mov eax, 0x1505
test ecx, ecx
je 0x46aa40
lea esp, [esp]
mov edi, eax
shl edi, 5
add edi, eax
movsx eax, byte [edx]
add eax, edi
inc edx
dec ecx
jne 0x46aa30
mov dword [ebp - 0x28], eax
xor eax, eax
cmp byte [esi], al
je 0x46aa57
lea esp, [esp]
inc eax
cmp byte [eax + esi], 0
jne 0x46aa50
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x46aa6f
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x1003f
add ecx, edi
inc edx
dec eax
jne 0x46aa60
mov dword [ebp - 0x24], ecx
xor ecx, ecx
cmp byte [esi], cl
je 0x46aa7f
inc ecx
cmp byte [ecx + esi], 0
jne 0x46aa78
mov edx, esi
call fcn.0046a7b0
cmp byte [esi], 0
mov dword [ebp - 0x20], eax
je 0x46aa96
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x46aa90
call fcn.0046a7f0
mov bl, byte [esi]
mov dword [ebp - 0x1c], eax
test bl, bl
je 0x46aaac
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x46aaa6
xor ecx, ecx
mov edx, esi
lea edi, [ecx + 1]
movsx eax, bl
test bl, bl
je 0x46aad7
lea ebx, [ebx]
imul eax, edi
add ecx, eax
inc edx
lea ecx, [ecx + eax*2]
movsx eax, byte [edx]
inc edi
test eax, eax
jne 0x46aac0
test ecx, ecx
jns 0x46aad7
neg ecx
mov dword [ebp - 0x18], ecx
test bl, bl
je 0x46aae6
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x46aae0
xor eax, eax
mov edx, esi
test bl, bl
je 0x46ab04
mov cl, bl
mov edi, eax
shl edi, 5
sub edi, eax
movzx eax, cl
mov cl, byte [edx + 1]
inc edx
add eax, edi
test cl, cl
jne 0x46aaf0
mov dword [ebp - 0x14], eax
xor eax, eax
test bl, bl
je 0x46ab17
lea ecx, [ecx]
inc eax
cmp byte [eax + esi], 0
jne 0x46ab10
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x46ab2f
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x811c9dc5
xor ecx, edi
inc edx
dec eax
jne 0x46ab20
xor eax, eax
mov dword [ebp - 0x10], ecx
test bl, bl
je 0x46ab3f
inc eax
cmp byte [eax + esi], 0
jne 0x46ab38
mov ecx, esi
test eax, eax
je 0x46ab5a
mov edx, eax
mov edi, eax
shl eax, 5
shr edi, 0x1b
xor edi, eax
movsx eax, byte [ecx]
xor eax, edi
inc ecx
dec edx
jne 0x46ab47
xor ecx, ecx
mov dword [ebp - 0xc], eax
test bl, bl
je 0x46ab6a
inc ecx
cmp byte [ecx + esi], 0
jne 0x46ab63
xor eax, eax
test ecx, ecx
je 0x46ab7c
movsx edx, byte [esi]
shl eax, 7
xor eax, edx
inc esi
dec ecx
jne 0x46ab70
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x44]
mov edi, dword [eax + 0x5c]
mov ebx, dword [eax + 0x58]
add edi, edi
add edi, edi
xor esi, esi
mov dword [ebp - 0x40], 0
add edi, edi
mov eax, dword [ebp + esi*4 - 0x3c]
xor edx, edx
div edi
mov ecx, 7
mov eax, edx
and eax, 7
sub ecx, eax
shr edx, 3
movsx edx, byte [edx + ebx]
mov eax, 1
shl eax, cl
and edx, eax
sar edx, cl
test edx, edx
je 0x46abc4
inc dword [ebp - 0x40]
mov eax, dword [ebp + esi*4 - 0x38]
xor edx, edx
div edi
mov ecx, 7
mov eax, edx
and eax, 7
sub ecx, eax
shr edx, 3
movsx edx, byte [edx + ebx]
mov eax, 1
shl eax, cl
and edx, eax
sar edx, cl
test edx, edx
je 0x46abf1
inc dword [ebp - 0x40]
add esi, 2
cmp esi, 0xe
jl 0x46ab97
mov eax, dword [ebp + 8]
xor ecx, ecx
cmp dword [ebp - 0x40], 0xe
sete cl
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov esi, ecx
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46ac23
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
lea esp, [ebp - 0x50]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0047e4d2
mov esp, ebp
pop ebp
ret 4