Function at 0x4a3080
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov eax, dword [0x5c1040]
xor eax, ebp
mov dword [ebp - 0x10], eax
movzx eax, word [ebp + 0xc]
mov edx, dword [ecx + 0x18]
test eax, 0x180
je 0x4a318b
bt edx, 0xb
mov eax, dword [ecx + 0x10]
mov edi, dword [ecx + 0x14]
jae 0x4a357b
mov dword [ebp - 0x24], eax
mov esi, dword [0x5c5cf4]
mov ebx, dword [0x5c5cf0]
mov eax, dword [0x5c5ce8]
or eax, dword [0x5c5cec]
jne 0x4a30d7
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
xor ebx, dword [ebp - 0x24]
xor esi, edi
mov eax, dword [ebp + 8]
cmp dword [eax + 8], 0
jne 0x4a353e
lea eax, [ebp - 0x1e]
xor ecx, ecx
dec ecx
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov word [eax + 0xc], 0xffff
mov byte [eax - 1], 0x40
cmp ebx, 0x80
mov ecx, esi
sbb ecx, 0
lea ecx, [ebp - 0x1f]
jae 0x4a315c
mov edx, ecx
mov byte [eax], bl
add edx, 2
mov edi, edx
sub edi, ecx
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov eax, dword [esi + 0xc]
lea ebx, [eax + edi]
cmp ebx, dword [esi + 8]
ja 0x4a351c
cmp edx, ecx
je 0x4a313f
push edi
push ecx
push eax
call fcn.004f53a0
add esp, 0xc
mov dword [esi + 0xc], ebx
mov eax, dword [ebp + 8]
add dword [eax + 0x10], edi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004f1eb0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 8
mov edi, esi
mov edx, ebx
mov ecx, edx
or cl, 0x80
mov ebx, esi
shld ebx, edx, 0x19
mov byte [eax], cl
shr edi, 7
inc eax
mov ecx, 0x3fff
cmp ecx, edx
mov ecx, 0
sbb ecx, esi
mov esi, edi
jb 0x4a315e
lea edx, [eax - 1]
lea ecx, [ebp - 0x1f]
jmp 0x4a3113
and edx, 0x1802
mov edi, dword [ecx + 0x14]
mov esi, dword [ecx]
mov eax, dword [ecx + 0x10]
test esi, esi
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x2c], edx
je 0x4a3330
cmp edx, 0x1000
je 0x4a3330
mov ebx, eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], eax
and eax, 0xff
xor eax, 0x84222325
mov edx, 0x1b3
mov ecx, eax
mul edx
imul ecx, ecx, 0x100
or ecx, edx
mov dword [ebp - 0x28], ecx
shr ebx, 8
and ebx, 0xff
xor ebx, eax
mov eax, ebx
mov ecx, 0x1b3
mul ecx
mov ecx, 0xcbf29ce4
imul ecx, ecx, 0x1b3
add ecx, dword [ebp - 0x28]
imul ebx, ebx, 0x100
add ebx, edx
imul ecx, ecx, 0x1b3
add ecx, ebx
mov dword [ebp - 0x28], ecx
mov ebx, dword [ebp - 0x30]
shr ebx, 0x10
and ebx, 0xff
xor ebx, eax
mov eax, ebx
mov ecx, 0x1b3
mul ecx
mov ecx, eax
imul eax, ebx, 0x100
add eax, edx
imul edx, dword [ebp - 0x28], 0x1b3
add edx, eax
mov dword [ebp - 0x28], edx
mov eax, dword [ebp - 0x34]
shr eax, 0x18
xor ecx, eax
mov eax, ecx
mov edx, 0x1b3
mul edx
imul ecx, ecx, 0x100
add ecx, edx
mov dword [ebp - 0x38], ecx
mov ebx, edi
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x34], edi
and edi, 0xff
xor edi, eax
mov eax, edi
mov ecx, 0x1b3
mul ecx
mov dword [ebp - 0x3c], eax
imul ecx, dword [ebp - 0x28], 0x1b3
mov eax, dword [ebp - 0x38]
add eax, ecx
imul edi, edi, 0x100
add edi, edx
imul ecx, eax, 0x1b3
add edi, ecx
shr ebx, 8
and ebx, 0xff
xor ebx, dword [ebp - 0x3c]
mov eax, ebx
mov ecx, 0x1b3
mul ecx
imul ecx, ebx, 0x100
add ecx, edx
imul edx, edi, 0x1b3
add ecx, edx
mov edx, dword [ebp - 0x30]
shr edx, 0x10
and edx, 0xff
xor edx, eax
mov eax, edx
mov ebx, edx
mov edx, 0x1b3
mul edx
mov edi, eax
imul ebx, ebx, 0x100
add ebx, edx
mov edx, dword [ebp - 0x34]
shr edx, 0x18
imul eax, ecx, 0x1b3
add ebx, eax
xor edi, edx
mov eax, edi
mov ecx, 0x1b3
mul ecx
imul edi, edi, 0x100
add edi, edx
imul ecx, ebx, 0x1b3
add edi, ecx
mov cl, byte [esi]
test cl, cl
je 0x4a3330
inc esi
mov ebx, 0x1b3
nop dword [eax]
movzx ecx, cl
xor ecx, eax
mov eax, ecx
mul ebx
imul edi, ebx
add edi, edx
mov edx, 0x100
imul ecx, edx
add edi, ecx
movzx ecx, byte [esi]
inc esi
test cl, cl
jne 0x4a3310
mov esi, eax
mov eax, dword [ebp - 0x2c]
cmp eax, 0x800
jne 0x4a34a9
mov eax, dword [ebp + 8]
cmp dword [eax + 8], 0
jne 0x4a354b
lea eax, [ebp - 0x1e]
xor ecx, ecx
dec ecx
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov word [eax + 0xc], 0xffff
mov byte [eax - 1], 0x50
mov ecx, esi
cmp esi, 0x80
mov ecx, edi
sbb ecx, 0
lea ebx, [ebp - 0x1f]
jae 0x4a3477
mov edx, ebx
mov ecx, esi
mov byte [eax], cl
add edx, 2
mov edi, edx
sub edi, ebx
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov eax, dword [esi + 0xc]
lea ebx, [eax + edi]
cmp ebx, dword [esi + 8]
ja 0x4a352d
lea ecx, [ebp - 0x1f]
cmp edx, ecx
je 0x4a33ae
push edi
push ecx
push eax
call fcn.004f53a0
add esp, 0xc
mov dword [esi + 0xc], ebx
mov eax, dword [ebp + 8]
add dword [eax + 0x10], edi
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0
je 0x4a3148
mov ebx, esp
push eax
sub esp, 8
mov esi, esp
mov edi, dword [eax]
test edi, edi
je 0x4a356c
push edi
call fcn.0050d550
add esp, 4
cmp eax, 0x7ffffff8
jae 0x4a3565
mov ecx, eax
mov dword [ebp - 0x24], ebx
cmp eax, 0xa
jbe 0x4a3470
mov ebx, ecx
or ebx, 7
inc ebx
push ebx
mov dword [ebp - 0x2c], ecx
call fcn.004f190e
mov ecx, dword [ebp - 0x2c]
add esp, 4
mov dword [esi], eax
or ebx, 0x80000000
mov dword [esi + 8], ebx
mov dword [esi + 4], ecx
lea edx, [eax + ecx]
cmp eax, edi
ja 0x4a3425
cmp edx, edi
ja 0x4a358c
test ecx, ecx
mov ebx, dword [ebp - 0x24]
je 0x4a343b
push ecx
push edi
push eax
mov edi, edx
call fcn.004f53a0
mov edx, edi
add esp, 0xc
mov byte [edx], 0
movsx eax, byte [esi + 0xb]
mov edx, esi
test eax, eax
jns 0x4a344d
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, dword [ebp + 8]
push eax
push edx
push 7
call fcn.0049b0d0
cmp byte [esi + 0xb], 0
jns 0x4a3469
push dword [esi]
call fcn.004f193e
add esp, 4
mov esp, ebx
jmp 0x4a3148
mov byte [esi + 0xb], cl
mov eax, esi
jmp 0x4a3416
mov ebx, edi
mov edx, esi
mov ecx, edx
or cl, 0x80
mov esi, edi
shld esi, edx, 0x19
mov byte [eax], cl
shr ebx, 7
inc eax
mov ecx, 0x3fff
cmp ecx, edx
mov ecx, 0
sbb ecx, edi
mov edi, ebx
jb 0x4a3479
lea edx, [eax - 1]
lea ebx, [ebp - 0x1f]
jmp 0x4a337d
cmp eax, 2
jne 0x4a359b
mov eax, dword [ebp + 8]
cmp dword [eax + 8], 0
jne 0x4a3558
lea eax, [ebp - 0x1e]
xor ecx, ecx
dec ecx
mov dword [eax + 8], ecx
mov dword [eax + 4], ecx
mov dword [eax], ecx
mov word [eax + 0xc], 0xffff
mov byte [eax - 1], 0x30
mov ecx, esi
cmp esi, 0x80
mov ecx, edi
sbb ecx, 0
lea ebx, [ebp - 0x1f]
jb 0x4a337b
mov edx, edi
mov ebx, esi
mov ecx, ebx
mov dword [ebp - 0x2c], esi
or cl, 0x80
mov ebx, edi
shld ebx, esi, 0x19
mov esi, ebx
mov byte [eax], cl
shr edx, 7
inc eax
mov ecx, 0x3fff
cmp ecx, dword [ebp - 0x2c]
mov ecx, 0
sbb ecx, edi
mov edi, edx
jae 0x4a349e
jmp 0x4a34ef
lea eax, [ebp - 0x1f]
mov ecx, esi
push edi
push eax
call fcn.0049be50
jmp 0x4a3142
lea eax, [ebp - 0x1f]
mov ecx, esi
push edi
push eax
call fcn.0049be50
jmp 0x4a33b1
mov ecx, dword [ebp + 8]
call fcn.0049b220
jmp 0x4a30e9
mov ecx, dword [ebp + 8]
call fcn.0049b220
jmp 0x4a334d
mov ecx, dword [ebp + 8]
call fcn.0049b220
jmp 0x4a34bf
mov ecx, esi
call fcn.005221b0
push str....._third_partylibc_srcinclude_string:973:_assertion___s___nullptr_failed:_basic_string_const_char__detected_nullptr_n
push 0x59a9a3
call fcn.00523170
mov ecx, dword [ebp + 8]
push edi
push eax
push 8
call fcn.004a2030
jmp 0x4a3148
push str....._third_partylibc_srcinclude__stringchar_traits.h:146:_assertion__std::__is_pointer_in_range___s1____s1____n____s2__failed:_char_traits::copy:_source_and_destination_ranges_overlap_n
push 0x59a9a3
call fcn.00523170
cmp eax, 0x1000
mov eax, dword [ebp - 0x24]
jne 0x4a33ba
mov ebx, eax
mov ecx, dword [ebp + 8]
push edi
push esi
push 0xb
call fcn.004a2030
mov eax, ebx
jmp 0x4a33ba