Function at 0x4a74c0
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x5125ff
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 0x4a6f6f
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.00432f90
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x114]
add esp, 8
call fcn.00461de0
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 0x4a7406
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.0x4a6fa1
movzx eax, byte [eax + 0x4a7420]
jmp dword [eax*4 + 0x4a740c]
mov ebx, 1
jmp 0x4a6fc9
mov ebx, 2
jmp 0x4a6fc9
mov ebx, 3
jmp 0x4a6fc9
mov ebx, 4
jmp 0x4a6fc9
mov ebx, 5
cmp dword [ebp + 0x10], ebx
jae 0x4a706f
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.004a5ed0
add esp, 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [eax + 0x10]
mov byte [ebp - 4], 2
jb 0x4a700a
mov eax, dword [eax]
mov esi, dword [ebp + 0xc]
push ecx
push eax
push esi
call fcn.004333b0
push str._requires_version
push esi
call fcn.00432f90
add esp, 0x14
mov ecx, esi
push ebx
call fcn.0045d450
push str.__but_parsed_version_is
push esi
call fcn.00432f90
add esp, 8
mov ecx, esi
push dword [ebp + 0x10]
call fcn.0045d450
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x24]
call fcn.004016b0
lea ecx, [ebp - 0x114]
call fcn.00461de0
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 + 0x4a7498]
jmp dword [eax*4 + 0x4a7448]
push dword [ebp + 0x10]
push esi
push edi
call 0x4a74c0
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.004a6300
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.004a6170
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.004a6510
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.00461750
nop
test al, 0x6f
dec edx
add byte [edi - 0x49ffb591], ch
outsd dx, dword [esi]
dec edx
add byte [ebp - 0x3bffb591], bh
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, 130
jo 4879509
add byte [eax - 0x44ffb590], ah
jo 0x4a749d
add dh, dl
jo 0x4a74a1
add cl, dh
jo 0x4a74a5
add byte [ecx + esi*2], cl
dec edx
add byte [edi], ah
jno 0x4a74ad
add byte [edx + 0x71], al
dec edx
add byte [ecx + esi*2 + 0x7267004a], al
dec edx
add byte [edx - 0x62ffb58e], al
jb 0x4a74c1
add byte [eax + 0x36004a72], bh
jae 0x4a74c9
add byte [ecx + 0x73], dl
dec edx
add byte [ebx + esi*2 + 0x4a], ch
add byte [edi - 0x5dffb58d], al
jae 0x4a74d9
add byte [ebp - 0x27ffb58d], bh
jae 0x4a74e1
add byte [eax], al
add dword [edx], eax
add al, byte [ebx]
add eax, dword [edx + eax]
add al, byte [edx]
add eax, 0x8070606
add al, byte [0x8070606]
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 [eax], cl
or byte [ecx], cl
or dword [edx], ecx
or ecx, dword [esp + eax]
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
mov ebp, esp
push 0xffffffffffffffff
push 0x512693
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
in al, dx
xor al, 1
add byte [eax], al
push ebx
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x24]
push esi
push edi
or byte [ebp + 0x5756dc45], cl
mov edi, dword [ebp + 0xc]
push edi
push ebx
push eax
call fcn.004a5ed0
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 0x4a7a0e
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 0x4a755e
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.004333b0
push str._does_not_reference_a_function
jmp 0x4a75b1
mov eax, dword [ebx + 0x11c]
mov ecx, dword [ebx + 0x120]
cmp eax, ecx
je 0x4a7580
mov edx, dword [ebp + 0xc]
cmp dword [eax], edx
je 0x4a7602
add eax, 4
cmp eax, ecx
jne 0x4a7571
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.004333b0
push str._does_not_reference_an_entry_point
push esi
call fcn.00432f90
add esp, 0x14
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x140]
call fcn.00461de0
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jb 0x4a79fb
mov ecx, dword [ebp - 0x24]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4a79f1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4a7a13
jmp 0x4a79f1
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.0045c060
mov eax, dword [eax + 4]
test eax, eax
jne 0x4a7664
mov eax, dword [ebx + 0x278]
cmp eax, dword [ebx + 0x278]
je 0x4a79d5
add eax, 0xc
je 0x4a79d5
cmp dword [eax + 4], 0
je 0x4a79d5
mov eax, dword [eax]
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
jne 0x4a76e2
lea ecx, [ecx]
cmp dword [eax + 0x10], 5
jne 0x4a7819
mov ecx, dword [eax + 8]
cmp byte [ecx + 0xd], 0
je 0x4a76c4
mov ecx, dword [eax + 4]
cmp byte [ecx + 0xd], 0
jne 0x4a76c0
lea esp, [esp]
cmp eax, dword [ecx + 8]
jne 0x4a76c0
mov eax, ecx
mov ecx, dword [ecx + 4]
cmp byte [ecx + 0xd], 0
je 0x4a76b0
mov eax, ecx
jmp 0x4a76dc
mov eax, ecx
mov edx, dword [eax]
cmp byte [edx + 0xd], 0
jne 0x4a76dc
mov edi, edi
mov ecx, dword [edx]
mov eax, edx
mov edx, ecx
cmp byte [ecx + 0xd], 0
je 0x4a76d0
cmp byte [eax + 0xd], 0
je 0x4a7690
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 5
jbe 0x4a7a0e
movzx ecx, word [ecx + 0x50]
mov eax, dword [edi]
push dword [eax + ecx*4]
mov ecx, ebx
call fcn.004dab90
test eax, eax
je 0x4a79ab
cmp word [eax + 0x1e], 7
jne 0x4a79ab
push 1
lea ecx, [ebp - 0x48]
push ecx
mov ecx, eax
call fcn.0046a150
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.0045c060
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x4a7a18
mov esi, dword [eax + 0xc]
cmp esi, dword [eax + 0x10]
je 0x4a7798
lea esp, [esp]
cmp dword [esi + 0x14], 0x10
mov ecx, esi
jb 0x4a776a
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 0x4a784f
mov eax, dword [ebp - 0x28]
add esi, 0x24
cmp esi, dword [eax + 0x10]
jne 0x4a7760
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.00432f90
add esp, 8
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x140]
call fcn.00461de0
mov edx, dword [ebp - 0x34]
cmp edx, 0x10
jb 0x4a7802
mov ecx, dword [ebp - 0x48]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4a77f8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4a7a13
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 0x4a75cb
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.004333b0
push str._must_refer_only_to_GLCompute_entry_points
jmp 0x4a75b1
mov esi, dword [edi + 0x10]
mov eax, dword [edi + 0xc]
sub esi, eax
sar esi, 4
cmp esi, 6
jbe 0x4a7902
cmp dword [ebp + 0x10], 5
jae 0x4a78cb
push edi
push 0xfffffffffffffff6
lea eax, [ebp - 0x140]
mov ecx, ebx
push eax
call fcn.004e0a50
mov esi, eax
push 0x56d9f0
push esi
mov byte [ebp - 4], 8
call fcn.00432f90
add esp, 8
mov ecx, esi
push dword [ebp + 0x10]
call fcn.0045d450
push str._of_the
push esi
call fcn.00432f90
cmp dword [ebp - 0x10], 0x10
lea eax, [ebp - 0x24]
push dword [ebp - 0x14]
cmovae eax, dword [ebp - 0x24]
push eax
push esi
call fcn.004333b0
push str._instruction_can_only_have_2_additional_operands
push esi
call fcn.00432f90
add esp, 0x1c
jmp 0x4a77bd
movzx ecx, word [eax + 0x60]
mov eax, dword [edi]
push dword [eax + ecx*4]
push ebx
call fcn.004a5e60
add esp, 8
test al, al
jne 0x4a7902
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 0x4a77b4
cmp esi, 7
jbe 0x4a7952
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 7
jbe 0x4a7a0e
movzx ecx, word [ecx + 0x70]
mov eax, dword [edi]
push dword [eax + ecx*4]
push ebx
call fcn.004a5e60
add esp, 8
test al, al
jne 0x4a7952
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 0x4a77b4
cmp esi, 8
jbe 0x4a79a4
mov eax, dword [edi + 0x10]
mov ecx, dword [edi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 8
jbe 0x4a7a0e
movzx ecx, word [ecx + 0x80]
mov eax, dword [edi]
push dword [eax + ecx*4]
mov ecx, ebx
call fcn.004daea0
cmp eax, 7
je 0x4a79a4
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 0x4a77b4
xor esi, esi
jmp 0x4a77ce
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.00432f90
add esp, 8
jmp 0x4a75ba
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 0x4a7597
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.00461750
call fcn.004ea5cf
push str.invalid_unordered_map_K__T__key
call fcn.004e3531
int3