Function at 0x10058930
Capabilities:
Encode data using xor
Encrypt data using rc4 prga
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x102de0e5
push eax
mov dword fs:[0], esp
lea eax, [ebp - 0x10]
sub esp, 0x18
push ebx
push esi
push edi
mov esi, ecx
push eax
push esi
call fcn.10058730
test al, al
je 0x100589bb
mov eax, dword [ebp - 0x10]
movzx ebx, word [eax*8 + 0x103bcd9c]
movsx eax, bx
lea eax, [eax + eax*4]
lea edi, [eax*4 + 0x103bc718]
mov eax, dword [edi]
test esi, esi
je 0x10058bfd
test eax, eax
je 0x10058bfd
nop dword [eax + eax]
mov cl, byte [esi]
cmp cl, byte [eax]
jne 0x10058bf4
test cl, cl
je 0x100589b4
mov cl, byte [esi + 1]
cmp cl, byte [eax + 1]
jne 0x10058bf4
add esi, 2
add eax, 2
test cl, cl
jne 0x10058990
xor eax, eax
jmp 0x10058bf9
cmp word [0x103bc710], 0x20
jl 0x10058a0f
mov ecx, 0x103c1be8
mov dword [ebp - 0x18], 0x103c1be8
call fcn.100536a0
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 0
cmp eax, 1
jne 0x100589fe
push 0
push 0x102fe041
push 0x102fe041
push str.s_NextUsingID___USING_MAX
call fcn.1004d850
add esp, 0x10
mov ecx, 0x103c1be8
mov dword [ebp - 4], 0xffffffff
call fcn.100536b0
movzx ebx, word [0x103bc710]
mov edx, 0x103bc998
movzx eax, bx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ebx
lea eax, [ebx + 1]
mov word [0x103bc710], ax
mov eax, dword [0x103bc714]
test eax, eax
cmovne edx, eax
movsx eax, bx
xor ecx, ecx
mov dword [0x103bc714], edx
lea eax, [eax + eax*4]
mov dword [eax*4 + 0x103bc718], edx
mov word [eax*4 + 0x103bc71c], bx
mov word [eax*4 + 0x103bc71e], cx
mov dword [eax*4 + 0x103bc720], 0x10003050
mov word [eax*4 + 0x103bc724], cx
mov dword [eax*4 + 0x103bc728], ecx
test esi, esi
je 0x10058a89
mov ecx, esi
lea edi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10058a80
sub ecx, edi
mov eax, edx
sub eax, 0x103bc998
inc eax
add eax, ecx
cmp eax, 0x400
jle 0x10058aea
mov ecx, 0x103c1be8
mov dword [ebp - 0x20], 0x103c1be8
call fcn.100536a0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 1
cmp eax, 1
jne 0x10058ad3
push 0
push 0x102fe041
push 0x102fe041
push str.s_UsingNamesTail__String::Length_name___1___s_UsingNames___STRINGPOOL_SIZE
call fcn.1004d850
add esp, 0x10
mov ecx, 0x103c1be8
mov dword [ebp - 4], 0xffffffff
call fcn.100536b0
mov edx, dword [0x103bc714]
mov eax, 0x103bcd98
sub eax, edx
je 0x10058b02
test edx, edx
je 0x10058b02
test esi, esi
jne 0x10058bca
mov byte [edx], 0
xor eax, eax
inc eax
add edx, eax
cmp dword [0x103bcf98], 0x40
mov dword [0x103bc714], edx
jb 0x10058b60
mov ecx, 0x103c1be8
mov dword [ebp - 0x20], 0x103c1be8
call fcn.100536a0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 2
cmp eax, 1
jne 0x10058b4f
push 0
push 0x102fe041
push 0x102fe041
push str.m_used___HASH_SIZE
call fcn.1004d850
add esp, 0x10
mov ecx, 0x103c1be8
mov dword [ebp - 4], 0xffffffff
call fcn.100536b0
lea eax, [ebp - 0x10]
push eax
push esi
call fcn.10058730
test al, al
jne 0x10058969
inc dword [0x103bcf98]
mov ecx, esi
mov al, byte [esi]
mov edx, 0x1000193
test al, al
je 0x10058b99
movzx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x10058b85
mov eax, dword [ebp - 0x10]
test edx, edx
mov ecx, 1
cmovne ecx, edx
mov dword [eax*8 + 0x103bcd98], ecx
mov word [eax*8 + 0x103bcd9c], bx
mov eax, dword [ebp - 0x14]
cwde
lea eax, [eax + eax*4]
lea edi, [eax*4 + 0x103bc718]
mov eax, dword [edi]
jmp 0x10058980
lea edi, [eax - 1]
mov ecx, esi
add edi, edx
mov eax, edx
cmp edx, edi
jae 0x10058bea
mov bl, byte [ecx]
lea ecx, [ecx + 1]
test bl, bl
je 0x10058be7
mov byte [eax], bl
inc eax
cmp eax, edi
jb 0x10058bd7
mov ebx, dword [ebp - 0x10]
mov byte [eax], 0
sub eax, edx
jmp 0x10058b04
sbb eax, eax
or eax, 1
test eax, eax
je 0x10058c40
mov ecx, 0x103c1be8
mov dword [ebp - 0x20], 0x103c1be8
call fcn.100536a0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], 3
cmp eax, 1
jne 0x10058c36
push 0
push 0x102fe041
push 0x102fe041
push str.String::Equal_name__use_ID_.name_
call fcn.1004d850
add esp, 0x10
mov ecx, 0x103c1be8
call fcn.100536b0
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret