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

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, ecx
push esi
push ebx
sub esp, 0x5c
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.005a62a0
sub esp, 4
mov ebx, eax
cmp byte [edi + 0xcc], 0
jne 0x538fc0
cmp byte [edi + 0xcd], 0
jne 0x538fc0
cmp ebx, 0xa
mov byte [edi + 0xcd], 1
je 0x5390a4
cmp ebx, 0x98
je 0x538e39
mov eax, dword [edi + 0x74]
mov ecx, dword [ebp + 8]
mov edx, dword [eax]
mov edx, dword [edx + 0x78]
mov dword [esp + 0x10], 0x6e03dd
mov dword [esp + 0xc], str.version
mov dword [esp + 8], str.must_be_followed_by_version_number
mov dword [esp + 4], ecx
mov dword [esp], eax
call edx
mov eax, dword [ebp + 8]
add eax, 0x20
mov dword [esp], eax
mov dword [ebp - 0x3c], eax
call sub.msvcrt.dll_atoi
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x44], eax
mov dword [ecx + 0x18], eax
mov eax, dword [ecx + 8]
mov dword [esp], ecx
mov ecx, edi
mov dword [ebp - 0x48], eax
call fcn.005a62a0
sub esp, 4
cmp eax, 0xa
je 0x539070
call fcn.004cb890
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call fcn.005f4b30
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax - 0xc]
mov dword [ebp - 0x38], eax
sub esp, 8
test ecx, ecx
mov ebx, ecx
mov dword [ebp - 0x30], ecx
je 0x5390da
add ebx, eax
mov ecx, 0x811c9dc5
lea esi, [esi]
movsx edx, byte [eax]
add eax, 1
xor edx, ecx
imul ecx, edx, 0x1000193
cmp eax, ebx
jne 0x538eb0
mov eax, dword [edi + 0x24]
xor edx, edx
mov esi, eax
mov eax, ecx
div esi
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x34], esi
mov eax, dword [eax + edx*4]
mov dword [ebp - 0x2c], edx
test eax, eax
je 0x538f0f
mov ebx, dword [eax]
mov dword [ebp - 0x40], edi
mov edi, ecx
mov ecx, dword [ebp - 0x34]
mov esi, dword [ebx + 0x10]
lea esi, [esi]
cmp edi, esi
je 0x538ff7
mov ebx, dword [ebx]
test ebx, ebx
je 0x538f0c
mov esi, dword [ebx + 0x10]
xor edx, edx
mov eax, esi
div ecx
cmp dword [ebp - 0x2c], edx
je 0x538ef0
mov edi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x38]
lock sub dword [eax - 4], 1
mov eax, dword [edi + 0x74]
mov ecx, dword [ebp + 8]
mov edx, dword [eax]
mov edx, dword [edx + 0x78]
mov dword [esp + 0x10], 0x6e03dd
mov dword [esp + 0xc], str.version
mov dword [esp + 8], str.bad_profile_name__use_es__core__or_compatibility
mov dword [esp + 4], ecx
mov dword [esp], eax
call edx
mov ecx, dword [edi + 0x74]
mov esi, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov eax, dword [eax + 0xac]
mov dword [esp + 8], esi
mov esi, dword [ebp - 0x44]
mov dword [esp], ebx
mov dword [esp + 4], esi
call eax
mov eax, dword [ebp + 8]
mov ecx, edi
sub esp, 0xc
mov dword [esp], eax
call fcn.005a62a0
mov ebx, eax
sub esp, 4
cmp ebx, 0xa
mov eax, 0xa
je 0x538fb1
mov eax, dword [edi + 0x74]
mov edi, dword [ebp + 8]
mov edx, dword [eax]
mov edx, dword [edx + 0x78]
mov dword [esp], eax
mov dword [esp + 0x10], 0x6e03dd
mov dword [esp + 0xc], str.version
mov dword [esp + 8], str.bad_tokens_following_profile____expected_newline
mov dword [esp + 4], edi
call edx
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov edx, dword [edi + 0x74]
mov eax, dword [edx]
test byte [edx + 0x48], 0x40
mov eax, dword [eax + 0x78]
mov dword [esp + 0x10], 0x6e03dd
mov dword [esp + 0xc], str.version
je 0x539050
mov ecx, dword [ebp + 8]
mov dword [esp + 8], str.invalid_preprocessor_command
mov dword [esp], edx
mov dword [esp + 4], ecx
call eax
jmp 0x538df5
mov eax, dword [ebx + 8]
mov edx, dword [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov esi, dword [eax - 0xc]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x38]
cmp esi, edx
cmovbe edx, esi
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov ecx, dword [ebp - 0x34]
test eax, eax
jne 0x538ef8
cmp dword [ebp - 0x30], esi
jne 0x538ef8
mov edi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x38]
lock sub dword [eax - 4], 1
mov eax, dword [ebx + 0xc]
sub eax, 0xaf
cmp eax, 2
jbe 0x538f43
jmp 0x538f17
mov ecx, dword [ebp + 8]
mov dword [esp + 8], str.must_occur_first_in_shader
mov dword [esp], edx
mov dword [esp + 4], ecx
call eax
jmp 0x538df5
mov ecx, dword [edi + 0x74]
mov edi, dword [ebp - 0x44]
mov eax, dword [ecx]
mov eax, dword [eax + 0xac]
mov dword [esp + 4], edi
mov edi, dword [ebp - 0x48]
mov dword [esp + 8], 0
mov dword [esp], edi
call eax
mov eax, 0xa
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, dword [edi + 0x74]
mov edi, dword [ebp + 8]
mov edx, dword [eax]
mov edx, dword [edx + 0x78]
mov dword [esp], eax
mov dword [esp + 0x10], 0x6e03dd
mov dword [esp + 0xc], str.version
mov dword [esp + 8], str.must_be_followed_by_version_number
mov dword [esp + 4], edi
call edx
mov eax, 0xa
jmp 0x538fb1
mov ecx, 0x811c9dc5
jmp 0x538ec2