Function at 0x45f840
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 [0x4e0240]
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 0x45f863
xor esi, esi
jmp 0x45f8a4
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jg 0x45f8a0
lea edi, [eax + eax]
mov eax, edi
call fcn.00470aa0
mov esi, esp
test esi, esi
je 0x45f8a0
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 0x45f8a2
xor eax, eax
mov esi, eax
xor edx, edx
cmp byte [esi], dl
je 0x45f8b7
lea ebx, [ebx]
inc edx
cmp byte [edx + esi], 0
jne 0x45f8b0
xor ecx, ecx
mov edi, esi
mov eax, 0xf8c9
test edx, edx
je 0x45f8d6
movsx ebx, byte [edi]
imul ecx, eax
imul eax, eax, 0x5c6b7
add ecx, ebx
inc edi
dec edx
jne 0x45f8c4
mov dword [ebp - 0x3c], ecx
xor ecx, ecx
cmp byte [esi], cl
je 0x45f8e7
nop
inc ecx
cmp byte [ecx + esi], 0
jne 0x45f8e0
mov edx, esi
mov eax, 0x4e67c6a7
test ecx, ecx
je 0x45f909
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 0x45f8f2
xor ecx, ecx
mov dword [ebp - 0x38], eax
cmp byte [esi], cl
je 0x45f919
inc ecx
cmp byte [ecx + esi], 0
jne 0x45f912
mov edx, esi
call fcn.0045f6a0
mov dword [ebp - 0x34], eax
xor eax, eax
cmp byte [esi], al
je 0x45f937
lea esp, [esp]
inc eax
cmp byte [eax + esi], 0
jne 0x45f930
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x45f94f
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x83
add ecx, edi
inc edx
dec eax
jne 0x45f940
xor edi, edi
cmp byte [esi], 0
mov dword [ebp - 0x30], ecx
je 0x45f967
lea esp, [esp]
inc edi
cmp byte [edi + esi], 0
jne 0x45f960
mov eax, esi
call fcn.0045f6e0
xor ecx, ecx
mov dword [ebp - 0x2c], eax
cmp byte [esi], cl
je 0x45f97e
inc ecx
cmp byte [ecx + esi], 0
jne 0x45f977
mov edx, esi
mov eax, 0x1505
test ecx, ecx
je 0x45f9a0
lea esp, [esp]
mov edi, eax
shl edi, 5
add edi, eax
movsx eax, byte [edx]
add eax, edi
inc edx
dec ecx
jne 0x45f990
mov dword [ebp - 0x28], eax
xor eax, eax
cmp byte [esi], al
je 0x45f9b7
lea esp, [esp]
inc eax
cmp byte [eax + esi], 0
jne 0x45f9b0
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x45f9cf
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x1003f
add ecx, edi
inc edx
dec eax
jne 0x45f9c0
mov dword [ebp - 0x24], ecx
xor ecx, ecx
cmp byte [esi], cl
je 0x45f9df
inc ecx
cmp byte [ecx + esi], 0
jne 0x45f9d8
mov edx, esi
call fcn.0045f730
cmp byte [esi], 0
mov dword [ebp - 0x20], eax
je 0x45f9f6
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x45f9f0
call fcn.0045f770
mov bl, byte [esi]
mov dword [ebp - 0x1c], eax
test bl, bl
je 0x45fa0c
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x45fa06
xor ecx, ecx
mov edx, esi
lea edi, [ecx + 1]
movsx eax, bl
test bl, bl
je 0x45fa37
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 0x45fa20
test ecx, ecx
jns 0x45fa37
neg ecx
mov dword [ebp - 0x18], ecx
test bl, bl
je 0x45fa46
mov eax, esi
inc eax
cmp byte [eax], 0
jne 0x45fa40
xor eax, eax
mov edx, esi
test bl, bl
je 0x45fa64
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 0x45fa50
mov dword [ebp - 0x14], eax
xor eax, eax
test bl, bl
je 0x45fa77
lea ecx, [ecx]
inc eax
cmp byte [eax + esi], 0
jne 0x45fa70
xor ecx, ecx
mov edx, esi
test eax, eax
je 0x45fa8f
nop
movsx edi, byte [edx]
imul ecx, ecx, 0x811c9dc5
xor ecx, edi
inc edx
dec eax
jne 0x45fa80
xor eax, eax
mov dword [ebp - 0x10], ecx
test bl, bl
je 0x45fa9f
inc eax
cmp byte [eax + esi], 0
jne 0x45fa98
mov ecx, esi
test eax, eax
je 0x45faba
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 0x45faa7
xor ecx, ecx
mov dword [ebp - 0xc], eax
test bl, bl
je 0x45faca
inc ecx
cmp byte [ecx + esi], 0
jne 0x45fac3
xor eax, eax
test ecx, ecx
je 0x45fadc
movsx edx, byte [esi]
shl eax, 7
xor eax, edx
inc esi
dec ecx
jne 0x45fad0
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 0x45fb24
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 0x45fb51
inc dword [ebp - 0x40]
add esi, 2
cmp esi, 0xe
jl 0x45faf7
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 0x45fb83
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.0046e452
mov esp, ebp
pop ebp
ret 4