Function at 0x4a74a0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5119cf
push eax
mov dword fs:[0], esp
sub esp, 0x2e8
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 8]
mov ecx, edi
push dword [esi + 0x24]
call fcn.004dbda0
test al, al
jne 0x4a6f4f
push esi
push 0xfffffffffffffff6
lea eax, [ebp - 0x114]
mov ecx, edi
push eax
call fcn.004e0a50
mov esi, eax
push str.Return_Type_must_be_OpTypeVoid
push esi
mov dword [ebp - 4], 0
call fcn.00432f60
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x114]
add esp, 8
call fcn.00461eb0
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
sub ecx, edx
sar ecx, 4
cmp ecx, 3
jbe 0x4a73e6
movzx eax, word [edx + 0x30]
push ebx
mov ebx, dword [esi]
mov eax, dword [ebx + eax*4]
dec eax
mov dword [ebp + 0xc], eax
cmp eax, 0x27
ja case.default.0x4a6f81
movzx eax, byte [eax + 0x4a7400]
jmp dword [eax*4 + 0x4a73ec]
mov ebx, 1
jmp 0x4a6fa9
mov ebx, 2
jmp 0x4a6fa9
mov ebx, 3
jmp 0x4a6fa9
mov ebx, 4
jmp 0x4a6fa9
mov ebx, 5
cmp dword [ebp + 0x10], ebx
jae 0x4a704f
push esi
push 0xfffffffffffffff6
lea eax, [ebp - 0x114]
mov ecx, edi
push eax
call fcn.004e0a50
mov dword [ebp + 0xc], eax
push esi
lea eax, [ebp - 0x24]
mov dword [ebp - 4], 1
push edi
push eax
call fcn.004a5eb0
add esp, 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
mov byte [ebp - 4], 2
jb 0x4a6fea
mov eax, dword [eax]
mov esi, dword [ebp + 0xc]
push ecx
push eax
push esi
call fcn.00433380
push str._requires_version
push esi
call fcn.00432f60
add esp, 0x14
mov ecx, esi
push ebx
call fcn.0045d520
push str.__but_parsed_version_is
push esi
call fcn.00432f60
add esp, 8
mov ecx, esi
push dword [ebp + 0x10]
call fcn.0045d520
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x24]
call fcn.004016b0
lea ecx, [ebp - 0x114]
call fcn.00461eb0
pop ebx
pop edi
mov eax, esi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov ebx, dword [esi]
mov eax, dword [ebp + 0xc]
movzx eax, byte [eax + 0x4a7478]
jmp dword [eax*4 + 0x4a7428]
push dword [ebp + 0x10]
push esi
push edi
call 0x4a74a0
add esp, 0xc
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push esi
push edi
call fcn.004a62e0
add esp, 8
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push esi
push edi
call fcn.004a6150
add esp, 8
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push esi
push edi
call fcn.004a64f0
add esp, 8
pop ebx
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0xc]
xor eax, eax
pop ebx
pop edi
pop esi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
call fcn.00461820
nop
mov byte [edi + 0x4a], ch
add byte [edi - 1778365841], cl
outsd dx, dword [esi]
dec edx
add byte [ebp - 0x5bffb591], bl
outsd dx, dword [esi]
dec edx
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add eax, dword [ebx]
add al, 4
add al, 4
add al, 98
jo 4879477
add byte [eax - 0x64ffb590], al
jo 0x4a747d
add byte [esi - 0x2effb590], dh
jo 0x4a7485
add ah, ch
jo 0x4a7489
add byte [edi], al
jno 0x4a748d
add byte [edx], ah
jno 0x4a7491
add byte [ecx + esi*2 + 0x4a], ah
add byte [edi + 0x72], al
dec edx
add byte [edx + 0x72], ah
dec edx
add byte [ebp + 0x72], bh
dec edx
add byte [eax + 0x16004a72], bl
jae 0x4a74a9
add byte [ecx], dh
jae 0x4a74ad
add byte [ebx + esi*2 + 0x4a], cl
add byte [edi + 0x73], ah
dec edx
add byte [edx - 0x62ffb58d], al
jae 0x4a74bd
add byte [eax + 0x4a73], bh
jae 0x4a74c1
add byte [eax], al
add dword [edx], eax
add al, byte [ebx]
add eax, dword [edx + eax]
add al, byte [edx]
add eax, 0x8070606
or byte [eax], cl
pop es
or byte [eax], cl
or byte [eax], cl
or byte [eax], cl
or dword [ecx], ecx
or cl, byte [ebx]
or al, 4
or byte [eax], cl
or byte [ecx], cl
or dword [edx], ecx
or ecx, dword [esp + eax]
add al, 3
or dword [0xf0f0e0e], ecx
add ecx, dword [ecx]
or eax, 0xf0f0e0e
add al, byte [edx]
adc byte [eax], dl
adc dword [edx], edx
adc edx, dword [ebp - 0x75]
in al, dx
push 0xffffffffffffffff
push 0x511a63
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
add byte [ecx], ah
add byte [eax], al
add byte [eax + 0x64], dl
mov dword [0], esp
sub esp, 0x134
push ebx
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x24]
push esi
push edi
add byte [ebx - 0x75], dl
pop ebp
or byte [ebp + 0x5756dc45], cl
mov edi, dword [ebp + 0xc]
push edi
push ebx
push eax
call fcn.004a5eb0
add esp, 0xc
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
mov dword [ebp - 4], 0
cmp eax, 4
jbe 0x4a79ee
movzx ecx, word [ecx + 0x40]
mov eax, dword [edi]
mov eax, dword [eax + ecx*4]
mov ecx, ebx
push eax
mov dword [ebp + 0xc], eax
call fcn.004dab90
cmp word [eax + 0x1e], 0x36
je 0x4a753e
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
cmp dword [ebp - 0x10], 0x10
lea ecx, [ebp - 0x24]
push dword [ebp - 0x14]
cmovae ecx, dword [ebp - 0x24]
push ecx
push esi
mov byte [ebp - 4], 1
call fcn.00433380
push str._does_not_reference_a_function
jmp 0x4a7591
mov eax, dword [ebx + 0x11c]
mov ecx, dword [ebx + 0x120]
cmp eax, ecx
je 0x4a7560
mov edx, dword [ebp + 0xc]
cmp dword [eax], edx
je 0x4a75e2
add eax, 4
cmp eax, ecx
jne 0x4a7551
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 2
cmp dword [ebp - 0x10], 0x10
lea ecx, [ebp - 0x24]
push dword [ebp - 0x14]
cmovae ecx, dword [ebp - 0x24]
push ecx
push esi
call fcn.00433380
push str._does_not_reference_an_entry_point
push esi
call fcn.00432f60
add esp, 0x14
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x140]
call fcn.00461eb0
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x4a79db
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4a79d1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4a79f3
jmp 0x4a79d1
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x30], edx
imul ecx, eax, 0x1000193
mov eax, edx
shr eax, 8
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, edx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [ebx + 0x274]
push eax
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0045c130
mov eax, dword [eax + 4]
test eax, eax
jne 0x4a7644
mov eax, dword [ebx + 0x278]
cmp eax, dword [ebx + 0x278]
je 0x4a79b5
add eax, 0xc
je 0x4a79b5
cmp dword [eax + 4], 0
je 0x4a79b5
mov eax, dword [eax]
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
jne 0x4a76c2
lea ecx, [ecx]
cmp dword [eax + 0x10], 5
jne 0x4a77f9
mov ecx, dword [eax + 8]
cmp byte [ecx + 0xd], 0
je 0x4a76a4
mov ecx, dword [eax + 4]
cmp byte [ecx + 0xd], 0
jne 0x4a76a0
lea esp, [esp]
cmp eax, dword [ecx + 8]
jne 0x4a76a0
mov eax, ecx
mov ecx, dword [ecx + 4]
cmp byte [ecx + 0xd], 0
je 0x4a7690
mov eax, ecx
jmp 0x4a76bc
mov eax, ecx
mov edx, dword [eax]
cmp byte [edx + 0xd], 0
jne 0x4a76bc
mov edi, edi
mov ecx, dword [edx]
mov eax, edx
mov edx, ecx
cmp byte [ecx + 0xd], 0
je 0x4a76b0
cmp byte [eax + 0xd], 0
je 0x4a7670
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 5
jbe 0x4a79ee
movzx ecx, word [ecx + 0x50]
mov eax, dword [edi]
push dword [eax + ecx*4]
mov ecx, ebx
call fcn.004dab90
test eax, eax
je 0x4a798b
cmp word [eax + 0x1e], 7
jne 0x4a798b
push 1
lea ecx, [ebp - 0x48]
push ecx
mov ecx, eax
call fcn.0046a200
mov eax, dword [ebp + 0xc]
lea ecx, [ebx + 0x128]
push dword [ebp - 0x28]
mov dword [ebp + 0xc], eax
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 6
push eax
call fcn.0045c130
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x4a79f8
mov esi, dword [eax + 0xc]
cmp esi, dword [eax + 0x10]
je 0x4a7778
lea esp, [esp]
cmp dword [esi + 0x14], 0x10
mov ecx, esi
jb 0x4a774a
mov ecx, dword [esi]
push dword [esi + 0x10]
cmp dword [ebp - 0x34], 0x10
lea eax, [ebp - 0x48]
push ecx
cmovae eax, dword [ebp - 0x48]
push dword [ebp - 0x38]
push eax
call fcn.00404ad0
add esp, 0x10
test al, al
jne 0x4a782f
mov eax, dword [ebp - 0x28]
add esi, 0x24
cmp esi, dword [eax + 0x10]
jne 0x4a7740
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 7
push str.Name_must_match_an_entry_point_for_Kernel
push esi
call fcn.00432f60
add esp, 8
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x140]
call fcn.00461eb0
mov edx, dword [ebp - 0x34]
cmp edx, 0x10
jb 0x4a77e2
mov ecx, dword [ebp - 0x48]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4a77d8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4a79f3
push edx
push ecx
call fcn.004e5ccb
add esp, 8
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
jmp 0x4a75ab
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
cmp dword [ebp - 0x10], 0x10
lea ecx, [ebp - 0x24]
push dword [ebp - 0x14]
cmovae ecx, dword [ebp - 0x24]
push ecx
push esi
mov byte [ebp - 4], 4
call fcn.00433380
push str._must_refer_only_to_GLCompute_entry_points
jmp 0x4a7591
mov esi, dword [edi + 0x10]
mov eax, dword [edi + 0xc]
sub esi, eax
sar esi, 4
cmp esi, 6
jbe 0x4a78e2
cmp dword [ebp + 0x10], 5
jae 0x4a78ab
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
push 0x56c9f0
push esi
mov byte [ebp - 4], 8
call fcn.00432f60
add esp, 8
mov ecx, esi
push dword [ebp + 0x10]
call fcn.0045d520
push str._of_the
push esi
call fcn.00432f60
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
push dword [ebp - 0x14]
cmovae eax, dword [ebp - 0x24]
push eax
push esi
call fcn.00433380
push str._instruction_can_only_have_2_additional_operands
push esi
call fcn.00432f60
add esp, 0x1c
jmp 0x4a779d
movzx ecx, word [eax + 0x60]
mov eax, dword [edi]
push dword [eax + ecx*4]
push ebx
call fcn.004a5e40
add esp, 8
test al, al
jne 0x4a78e2
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 9
push str.NumArguments_must_be_a_32_bit_unsigned_integer_OpConstant
jmp 0x4a7794
cmp esi, 7
jbe 0x4a7932
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 7
jbe 0x4a79ee
movzx ecx, word [ecx + 0x70]
mov eax, dword [edi]
push dword [eax + ecx*4]
push ebx
call fcn.004a5e40
add esp, 8
test al, al
jne 0x4a7932
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 0xa
push str.Flags_must_be_a_32_bit_unsigned_integer_OpConstant
jmp 0x4a7794
cmp esi, 8
jbe 0x4a7984
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 8
jbe 0x4a79ee
movzx ecx, word [ecx + 0x80]
mov eax, dword [edi]
push dword [eax + ecx*4]
mov ecx, ebx
call fcn.004daea0
cmp eax, 7
je 0x4a7984
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 0xb
push str.Attributes_must_be_an_OpString
jmp 0x4a7794
xor esi, esi
jmp 0x4a77ae
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
push str.Name_must_be_an_OpString
push esi
mov byte [ebp - 4], 5
call fcn.00432f60
add esp, 8
jmp 0x4a759a
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
mov byte [ebp - 4], 3
jmp 0x4a7577
push edx
push ecx
call fcn.004e5ccb
add esp, 8
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
call fcn.00461820
call fcn.004ea5cf
push str.invalid_unordered_map_K__T__key
call fcn.004e3531
int3