Function at 0x4c5220
Capabilities:
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51871a
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2e8
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x38], 0
push ebx
push esi
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0xc]
sub eax, ecx
sar eax, 4
push edi
test eax, eax
je 0x4c6514
mov eax, dword [edx]
movzx ecx, word [ecx]
mov edi, dword [ebp + 0x10]
mov esi, dword [eax + ecx*4]
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0xc]
sub eax, edx
sar eax, 4
cmp eax, 2
jbe 0x4c6514
mov ecx, dword [edi]
movzx eax, word [edx + 0x20]
mov ebx, dword [ebp + 8]
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x30], eax
movzx eax, word [edx]
push dword [ecx + eax*4]
mov ecx, ebx
call fcn.004de540
mov ecx, dword [eax + 0x10]
mov edx, dword [eax + 0xc]
sub ecx, edx
sar ecx, 4
cmp ecx, 2
jbe 0x4c6514
movzx ecx, word [edx + 0x20]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov ecx, ebx
push eax
mov dword [ebp - 0x14], eax
call fcn.004de540
push dword [edi + 0x28]
mov ecx, dword [ebp + 8]
xor bl, bl
mov dword [ebp - 0x10], eax
xor bh, bh
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov byte [ebp - 0x16], bl
mov dword [ebp - 0x2c], 0
mov byte [ebp - 0x15], bl
mov byte [ebp - 0x18], bl
mov byte [ebp - 0x17], bl
call fcn.004bb350
mov eax, dword [eax]
mov eax, dword [eax]
cmp byte [eax + 0xd], bl
jne 0x4c5426
mov ecx, dword [eax + 0x10]
cmp ecx, 0x1e
jne 0x4c532d
test bh, bh
je 0x4c531e
mov ecx, dword [eax + 0x14]
mov edi, dword [ebp - 0x24]
cmp dword [ecx], edi
mov edi, dword [ebp + 0x10]
jne 0x4c5466
mov ecx, dword [eax + 0x14]
mov bh, 1
mov ecx, dword [ecx]
mov dword [ebp - 0x24], ecx
jmp 0x4c53d9
cmp ecx, 0x1f
jne 0x4c5353
test bl, bl
je 0x4c5344
mov ecx, dword [eax + 0x14]
mov edx, dword [ebp - 0x20]
cmp dword [ecx], edx
jne 0x4c54b3
mov ecx, dword [eax + 0x14]
mov bl, 1
mov ecx, dword [ecx]
mov dword [ebp - 0x20], ecx
jmp 0x4c53d9
cmp ecx, 0x20
jne 0x4c538d
cmp dword [ebp - 0x30], 3
jne 0x4c54f7
cmp esi, 4
jne 0x4c54f7
cmp byte [ebp - 0x16], 0
je 0x4c537f
mov ecx, dword [eax + 0x14]
mov edx, dword [ebp - 0x2c]
cmp dword [ecx], edx
jne 0x4c54d5
mov ecx, dword [eax + 0x14]
mov byte [ebp - 0x16], 1
mov ecx, dword [ecx]
mov dword [ebp - 0x2c], ecx
jmp 0x4c53d9
cmp ecx, 0xb
je 0x4c55fb
cmp ecx, 0xf
jne 0x4c53a1
mov byte [ebp - 0x15], 1
jmp 0x4c53d9
cmp ecx, 0x1499
jne 0x4c53af
mov byte [ebp - 0x18], 1
jmp 0x4c53d9
cmp ecx, 0x14a5
jne 0x4c53d9
cmp esi, 4
jne 0x4c555d
mov ecx, dword [ebp - 0x10]
movzx ecx, word [ecx + 0x1e]
cmp ecx, 0x1c
je 0x4c53d5
cmp ecx, 0x1d
jne 0x4c551c
mov byte [ebp - 0x17], 1
mov ecx, dword [eax + 8]
cmp byte [ecx + 0xd], 0
je 0x4c5404
mov ecx, dword [eax + 4]
cmp byte [ecx + 0xd], 0
jne 0x4c5400
jmp 0x4c53f0
cmp eax, dword [ecx + 8]
jne 0x4c5400
mov eax, ecx
mov ecx, dword [ecx + 4]
cmp byte [ecx + 0xd], 0
je 0x4c53f0
mov eax, ecx
jmp 0x4c541c
mov eax, ecx
mov edx, dword [eax]
cmp byte [edx + 0xd], 0
jne 0x4c541c
mov edi, edi
mov ecx, dword [edx]
mov eax, edx
mov edx, ecx
cmp byte [ecx + 0xd], 0
je 0x4c5410
cmp byte [eax + 0xd], 0
je 0x4c5301
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0xc]
sub eax, ecx
sar eax, 4
test eax, eax
je 0x4c6514
movzx ecx, word [ecx]
mov eax, dword [edx]
mov eax, dword [eax + ecx*4]
cmp eax, 0x1494
ja case.default.0x4c545f
je 0x4c561c
dec eax
cmp eax, 3
ja case.default.0x4c545f
jmp dword [eax*4 + 0x4c6538]
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov dword [ebp - 4], 0
push str.Variable_has_conflicting_location_decorations
push esi
call fcn.00433f60
mov esi, dword [esi + 0xe8]
add esp, 8
lea ecx, [ebp - 0x204]
call fcn.00463850
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov dword [ebp - 4], 1
push str.Variable_has_conflicting_component_decorations
jmp 0x4c5486
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov dword [ebp - 4], 3
push str.Variable_has_conflicting_index_decorations
jmp 0x4c5486
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov dword [ebp - 4], 2
push str.Index_can_only_be_applied_to_Fragment_output_variables
jmp 0x4c5486
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push 0
push 0x1a7a
push eax
mov dword [ebp - 4], 6
call fcn.004e0d20
push eax
mov ecx, esi
mov byte [ebp - 4], 7
call fcn.00472e10
push str.PerVertexKHR_must_be_declared_as_arrays
jmp 0x4c559c
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push edi
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push 0
push 0x1a79
push eax
mov dword [ebp - 4], 4
call fcn.004e0d20
push eax
mov ecx, esi
mov byte [ebp - 4], 5
call fcn.00472e10
push str.PerVertexKHR_can_only_be_applied_to_Fragment_Execution_Models
mov esi, eax
push esi
call fcn.00433f60
mov esi, dword [esi + 0xe8]
lea ecx, [ebp - 0x5c]
add esp, 8
call fcn.00401790
jmp 0x4c5495
cmp byte [ebp - 0x15], 0
sete al
jmp 0x4c55d6
cmp dword [ebp - 0x30], 3
je case.default.0x4c545f
cmp byte [ebp - 0x15], 0
jmp 0x4c5626
cmp dword [ebp - 0x30], 3
setne al
test al, al
jne 0x4c5628
mov eax, dword [ebp - 0x10]
movzx esi, word [eax + 0x1e]
cmp esi, 0x1e
jne 0x4c5670
mov ecx, dword [ebp + 8]
push 0xb
push dword [ebp - 0x14]
call fcn.004c6550
test al, al
je 0x4c5670
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x30], 3
je case.default.0x4c545f
cmp byte [ebp - 0x17], 0
je case.default.0x4c545f
jmp 0x4c5628
cmp dword [ebp - 0x30], 3
jne case.default.0x4c545f
cmp byte [ebp - 0x18], 0
jne case.default.0x4c545f
mov eax, dword [ebp - 0x10]
movzx eax, word [eax + 0x1e]
cmp eax, 0x1c
je 0x4c5639
cmp eax, 0x1d
jne case.default.0x4c545f
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
sub eax, ecx
sar eax, 4
cmp eax, 1
jbe 0x4c6514
mov eax, dword [ebp - 0x10]
movzx ecx, word [ecx + 0x10]
mov eax, dword [eax]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp + 8]
push eax
mov dword [ebp - 0x14], eax
call fcn.004de540
mov dword [ebp - 0x10], eax
jmp 0x4c55dd
mov ecx, dword [ebp + 8]
push 2
push dword [ebp - 0x14]
call fcn.004c6550
test bh, bh
jne 0x4c573b
test al, al
jne 0x4c573b
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
xor ebx, ebx
cmp esi, 0x1e
push edi
push 0xfffffffffffffff2
sete bl
push eax
add ebx, 0x1334
call fcn.004e4840
mov esi, eax
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x5c]
push 0
push ebx
push eax
mov dword [ebp - 4], 8
call fcn.004e0d20
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
mov byte [ebp - 4], 9
jbe 0x4c56d4
mov eax, dword [eax]
push ecx
push eax
push esi
call fcn.00434480
push str.Variable_must_be_decorated_with_a_location
push esi
call fcn.00433f60
mov ecx, dword [ebp - 0x48]
add esp, 0x14
mov esi, dword [esi + 0xe8]
cmp ecx, 0xf
jbe 0x4c5724
mov edx, dword [ebp - 0x5c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c571a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c650f
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
jmp 0x4c5495
cmp dword [ebp - 0x30], 3
mov eax, str.input
mov edx, str.output
cmovne edx, eax
xor eax, eax
mov ecx, edx
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
lea esi, [ecx + 1]
mov dword [ebp - 0x70], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c5768
sub ecx, esi
push ecx
push edx
lea ecx, [ebp - 0x84]
call fcn.004011f0
mov dword [ebp - 4], 0xa
test bh, bh
je 0x4c5a5c
mov esi, dword [ebp - 0x10]
mov edi, 1
mov dword [ebp - 0x14], edi
cmp word [esi + 0x1e], 0x1c
jne 0x4c580f
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 2
jbe 0x4c6514
movzx ecx, word [ecx + 0x20]
mov eax, dword [esi]
mov ebx, dword [ebp + 8]
push dword [eax + ecx*4]
lea eax, [ebp - 0x50]
mov ecx, ebx
push eax
call fcn.004de450
cmp byte [eax + 8], 0
mov edi, dword [eax]
mov dl, byte [eax + 4]
mov dword [ebp - 0x14], edi
je 0x4c57dc
test dl, dl
jne 0x4c57e4
mov edi, 1
mov dword [ebp - 0x14], edi
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0xc]
sub eax, ecx
sar eax, 4
cmp eax, 1
jbe 0x4c6519
movzx ecx, word [ecx + 0x10]
mov eax, dword [esi]
push dword [eax + ecx*4]
mov ecx, ebx
call fcn.004de540
mov esi, eax
mov dword [ebp - 0x10], esi
jmp 0x4c5812
mov ebx, dword [ebp + 8]
lea eax, [ebp - 0x28]
mov dword [ebp - 0x28], 0
push eax
push esi
push ebx
call fcn.004c6730
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4c60f5
push dword [ebp - 0x10]
push ebx
call fcn.004c6600
add esp, 8
mov dword [ebp - 0x1c], eax
xor ebx, ebx
test edi, edi
je 0x4c60f3
mov edx, dword [ebp - 0x28]
lea ecx, [ecx]
mov eax, ebx
imul eax, edx
add eax, dword [ebp - 0x24]
lea edi, [eax*4]
mov ecx, edi
cmp ecx, 0x4000
jae 0x4c60f3
lea esi, [eax + edx]
mov eax, dword [ebp - 0x1c]
shl esi, 2
test eax, eax
je 0x4c5883
add ecx, dword [ebp - 0x20]
lea esi, [edi + eax]
add esi, dword [ebp - 0x20]
cmp byte [ebp - 0x16], 0
mov edi, dword [ebp + 0x14]
je 0x4c5894
cmp dword [ebp - 0x2c], 1
cmove edi, dword [ebp + 0x18]
mov dword [ebp - 0x10], ecx
cmp ecx, esi
jae 0x4c58c3
jmp 0x4c58a0
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004672c0
cmp byte [ebp - 0x68], 0
je 0x4c58ce
mov eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
cmp eax, esi
jb 0x4c58a0
mov edx, dword [ebp - 0x28]
inc ebx
cmp ebx, dword [ebp - 0x14]
jb 0x4c5850
jmp 0x4c60f3
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x204]
mov ebx, dword [ebp + 8]
mov ecx, ebx
push edx
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov edi, eax
cmp dword [ebp - 0x30], 3
mov ecx, ebx
mov byte [ebp - 4], 0xb
push 0
jne 0x4c5911
push 0x2212
lea eax, [ebp - 0x9c]
push eax
call fcn.004e0d20
mov byte [ebp - 4], 0xc
mov ebx, 1
jmp 0x4c592b
push 0x2211
lea eax, [ebp - 0x5c]
push eax
call fcn.004e0d20
mov dword [ebp - 4], 0xd
mov ebx, 2
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x38], ebx
jbe 0x4c5939
mov eax, dword [eax]
push ecx
push eax
push edi
call fcn.00434480
push str.Entry_point_has_conflicting
push edi
call fcn.00433f60
cmp dword [ebp - 0x70], 0xf
lea eax, [ebp - 0x84]
push dword [ebp - 0x74]
cmova eax, dword [ebp - 0x84]
push eax
push edi
call fcn.00434480
push str._location_assignment_at_location
push edi
call fcn.00433f60
mov esi, dword [ebp - 0x10]
add esp, 0x28
mov eax, esi
mov ecx, edi
shr eax, 2
push eax
call fcn.0045f530
push str.__component
push edi
call fcn.00433f60
add esp, 8
and esi, 3
mov ecx, edi
push esi
call fcn.0045f530
mov esi, dword [edi + 0xe8]
test bl, 2
je 0x4c59f2
mov ecx, dword [ebp - 0x48]
and ebx, 0xfffffffd
cmp ecx, 0xf
jbe 0x4c59e0
mov edx, dword [ebp - 0x5c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c59d6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c651e
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
test bl, 1
je 0x4c5a4c
mov ecx, dword [ebp - 0x88]
cmp ecx, 0xf
jbe 0x4c5a31
mov edx, dword [ebp - 0x9c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c5a27
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c651e
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0xf
mov byte [ebp - 0x9c], 0
lea ecx, [ebp - 0x204]
call fcn.00463850
jmp 0x4c60f5
lea ecx, [ebp - 0xbc]
call fcn.0042b8e0
lea ecx, [ebp - 0xf4]
mov byte [ebp - 4], 0xe
call fcn.0042b8e0
push dword [ebp - 0x14]
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xf
call fcn.004bb350
mov esi, dword [eax]
mov esi, dword [esi]
cmp byte [esi + 0xd], 0
jne 0x4c5d76
mov edi, dword [ebp - 0xb8]
lea esp, [esp]
mov eax, dword [esi + 0x10]
cmp eax, 0x1e
jne 0x4c5c87
mov edx, dword [esi + 0x20]
mov eax, edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
mov dword [ebp - 0x1c], edx
imul eax, eax, 0x1000193
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
lea eax, [ebp - 0x1c]
imul ebx, ecx, 0x1000193
lea ecx, [ebp - 0xbc]
push ebx
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.0045db70
mov edx, edi
mov eax, dword [eax + 4]
test eax, eax
cmovne edx, eax
cmp edx, edi
jne 0x4c5c28
mov eax, dword [esi + 0x14]
lea ecx, [ebp - 0xbc]
push ebx
mov eax, dword [eax]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x20]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.0045db70
mov eax, dword [ebp - 0x60]
test eax, eax
jne 0x4c5c17
cmp dword [ebp - 0xb4], 0xfffffff
je 0x4c6523
lea eax, [ebp - 0xb8]
mov dword [ebp - 0x44], eax
push 0x10
mov byte [ebp - 4], 0x10
mov dword [ebp - 0x40], 0
call fcn.004e9663
mov ecx, dword [ebp - 0x2c]
mov edi, eax
add esp, 4
mov dword [ebp - 0x40], edi
mov dword [edi + 8], ecx
mov dword [edi + 0xc], 0
mov eax, dword [ebp - 0xb4]
fld dword [ebp - 0xbc]
add eax, 1
mov dword [ebp - 0x3c], eax
fild dword [ebp - 0x3c]
mov byte [ebp - 4], 0x11
jns 0x4c5ba4
fadd dword [0x51d990]
fstp dword [ebp - 0x1c]
fld dword [ebp - 0x1c]
mov eax, dword [ebp - 0xa0]
fild dword [ebp - 0xa0]
test eax, eax
jns 0x4c5bc0
fadd dword [0x51d990]
fstp dword [ebp - 0x1c]
fdiv dword [ebp - 0x1c]
fcompi st(1)
fstp st(0)
jbe 0x4c5bfb
lea ecx, [ebp - 0xbc]
call fcn.0046b8a0
push ebx
lea eax, [edi + 8]
push eax
lea eax, [ebp - 0xfc]
push eax
lea ecx, [ebp - 0xbc]
call fcn.0045db70
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x60], eax
jmp 0x4c5bfe
mov ecx, dword [ebp - 0x64]
push edi
push ecx
push ebx
lea ecx, [ebp - 0xbc]
mov dword [ebp - 0x40], 0
call fcn.0042c830
mov byte [ebp - 4], 0xf
mov ecx, dword [ebp - 0x24]
mov dword [eax + 0xc], ecx
mov edi, dword [ebp - 0xb8]
jmp 0x4c5d2a
mov ecx, dword [esi + 0x14]
mov eax, dword [edx + 0xc]
cmp eax, dword [ecx]
je 0x4c5d2a
push dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov edi, eax
push str.Member_index
push edi
mov byte [ebp - 4], 0x12
call fcn.00433f60
add esp, 8
mov ecx, edi
push dword [esi + 0x20]
call fcn.0045f340
push str._has_conflicting_location_assignments
push edi
call fcn.00433f60
mov esi, dword [edi + 0xe8]
add esp, 8
lea ecx, [ebp - 0x204]
jmp 0x4c64ef
cmp eax, 0x1f
jne 0x4c5d2a
mov ebx, dword [esi + 0x20]
mov eax, ebx
shr eax, 8
movzx ecx, al
movzx eax, bl
xor eax, 0x811c9dc5
mov dword [ebp - 0x1c], ebx
imul eax, eax, 0x1000193
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
shr eax, 0x10
movzx eax, al
xor ecx, eax
mov eax, ebx
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [ebp - 0xf4]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.0045db70
mov edx, dword [ebp - 0xf0]
mov eax, dword [eax + 4]
test eax, eax
cmovne edx, eax
cmp edx, dword [ebp - 0xf0]
jne 0x4c5d1c
mov eax, dword [esi + 0x14]
lea ecx, [ebp - 0xf4]
mov edi, dword [eax]
lea eax, [ebp - 0x28]
push eax
mov dword [ebp - 0x28], ebx
call fcn.004684d0
mov dword [eax], edi
mov edi, dword [ebp - 0xb8]
jmp 0x4c5d2a
mov ecx, dword [esi + 0x14]
mov eax, dword [edx + 0xc]
cmp eax, dword [ecx]
jne 0x4c5f84
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
je 0x4c5d54
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x4c5d50
lea esp, [esp]
cmp esi, dword [eax + 8]
jne 0x4c5d50
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x4c5d40
mov esi, eax
jmp 0x4c5d6c
mov esi, eax
mov ecx, dword [esi]
cmp byte [ecx + 0xd], 0
jne 0x4c5d6c
mov edi, edi
mov eax, dword [ecx]
mov esi, ecx
mov ecx, eax
cmp byte [eax + 0xd], 0
je 0x4c5d60
cmp byte [esi + 0xd], 0
je 0x4c5aa0
mov eax, dword [ebp - 0x10]
mov ecx, 1
mov dword [ebp - 0x20], ecx
mov esi, dword [eax + 0x10]
mov edi, dword [eax + 0xc]
mov eax, esi
sub eax, edi
sar eax, 4
cmp eax, ecx
jbe 0x4c60dd
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0x2c], 0x10
lea edx, [ecx - 1]
mov eax, edx
mov dword [ebp - 0x1c], edx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor eax, 0x811c9dc5
imul eax, eax, 0x1000193
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, [ebp - 0xbc]
push eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x10c]
push eax
call fcn.0045db70
mov edx, dword [ebp - 0xb8]
mov eax, dword [eax + 4]
test eax, eax
cmovne edx, eax
cmp edx, dword [ebp - 0xb8]
je 0x4c644a
mov eax, dword [edx + 0xc]
sub esi, edi
sar esi, 4
mov dword [ebp - 0x1c], eax
cmp esi, dword [ebp - 0x20]
jbe 0x4c6514
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp + 8]
movzx ecx, word [eax + edi]
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
push dword [eax + ecx*4]
mov ecx, esi
call fcn.004de540
mov edi, eax
mov dword [ebp - 0x28], 0
lea eax, [ebp - 0x28]
mov dword [ebp - 0x60], edi
push eax
push edi
push esi
call fcn.004c6730
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4c64f4
push edi
push dword [ebp + 8]
call fcn.004c6600
mov edi, eax
mov dword [ebp - 0x24], esi
mov eax, dword [ebp - 0x20]
lea ecx, [ebp - 0xf4]
mov esi, dword [ebp - 0x14]
add esp, 8
dec eax
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x34]
push esi
push eax
lea eax, [ebp - 0x114]
push eax
call fcn.0045db70
cmp dword [eax + 4], 0
je 0x4c5fe6
mov eax, dword [ebp - 0x20]
lea ecx, [ebp - 0xf4]
dec eax
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
push esi
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.0045db70
mov eax, dword [ebp - 0x40]
test eax, eax
jne 0x4c5fde
cmp dword [ebp - 0xec], 0xfffffff
je 0x4c6523
lea eax, [ebp - 0xf0]
mov dword [ebp - 0x6c], eax
push 0x10
mov byte [ebp - 4], 0x16
mov dword [ebp - 0x68], 0
call fcn.004e9663
mov ecx, dword [ebp - 0x24]
add esp, 4
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x68], eax
mov dword [eax + 8], ecx
mov dword [eax + 0xc], 0
mov eax, dword [ebp - 0xec]
fld dword [ebp - 0xf4]
add eax, 1
mov dword [ebp - 0x34], eax
fild dword [ebp - 0x34]
mov byte [ebp - 4], 0x17
jns 0x4c5f2d
fadd dword [0x51d990]
fstp dword [ebp - 0x34]
fld dword [ebp - 0x34]
mov eax, dword [ebp - 0xd8]
fild dword [ebp - 0xd8]
test eax, eax
jns 0x4c5f49
fadd dword [0x51d990]
fstp dword [ebp - 0x34]
fdiv dword [ebp - 0x34]
fcompi st(1)
fstp st(0)
jbe 0x4c5fc0
lea ecx, [ebp - 0xf4]
call fcn.0046b8a0
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0xf4]
push esi
add eax, 8
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0045db70
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x40], eax
jmp 0x4c5fc3
push dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x204]
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov edi, eax
push str.Member_index
push edi
mov byte [ebp - 4], 0x13
call fcn.00433f60
add esp, 8
mov ecx, edi
push dword [esi + 0x20]
call fcn.0045f340
push str._has_conflicting_component_assignments
jmp 0x4c5c6d
mov ecx, dword [ebp - 0x44]
push dword [ebp - 0x14]
mov dword [ebp - 0x68], 0
push ecx
push esi
lea ecx, [ebp - 0xf4]
call fcn.0042c830
mov byte [ebp - 4], 0xf
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x24], edx
jmp 0x4c5fe8
xor edx, edx
mov esi, dword [ebp - 0x1c]
lea eax, [esi*4]
mov ecx, eax
mov dword [ebp - 0x34], eax
cmp ecx, 0x4000
jae 0x4c60ba
mov eax, dword [ebp - 0x60]
cmp word [eax + 0x1e], 0x1c
jne 0x4c6076
lea eax, [edi - 1]
cmp eax, 2
ja 0x4c6076
mov ecx, dword [ebp - 0x28]
mov edi, esi
lea eax, [ecx + esi]
cmp esi, eax
jae 0x4c60ba
mov ebx, dword [ebp - 0x3c]
add ebx, edx
lea ebx, [ebx]
mov esi, edx
cmp edx, ebx
jae 0x4c6067
mov ecx, dword [ebp + 0x14]
lea eax, [esi + edi*4]
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0xfc]
push eax
call fcn.004672c0
cmp byte [ebp - 0xf8], 0
je 0x4c6143
inc esi
cmp esi, ebx
jb 0x4c6036
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x1c]
inc edi
add eax, ecx
cmp edi, eax
jb 0x4c6030
mov ebx, dword [ebp + 0x14]
jmp 0x4c60ba
add esi, dword [ebp - 0x28]
shl esi, 2
test edi, edi
je 0x4c6089
mov esi, dword [ebp - 0x34]
add ecx, edx
add esi, edi
add esi, edx
mov dword [ebp - 0x14], ecx
cmp ecx, esi
jae 0x4c60ba
lea eax, [ebp - 0x14]
mov ecx, ebx
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.004672c0
cmp byte [ebp - 0x100], 0
je 0x4c62d1
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, esi
jb 0x4c6090
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
add dword [ebp - 0x2c], 0x10
inc ecx
mov dword [ebp - 0x20], ecx
mov esi, dword [eax + 0x10]
mov edi, dword [eax + 0xc]
mov eax, esi
sub eax, edi
sar eax, 4
cmp ecx, eax
jb 0x4c5da0
lea ecx, [ebp - 0xf4]
call fcn.0042bd60
lea ecx, [ebp - 0xbc]
call fcn.0042bd60
xor esi, esi
mov ecx, dword [ebp - 0x70]
cmp ecx, 0xf
jbe 0x4c54a0
mov edx, dword [ebp - 0x84]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c6126
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c6532
push ecx
push edx
call fcn.004e9693
mov ecx, dword [ebp - 0xc]
add esp, 8
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x204]
mov ebx, dword [ebp + 8]
mov ecx, ebx
push edx
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov dword [ebp + 0xc], eax
cmp dword [ebp - 0x30], 3
mov ecx, ebx
mov byte [ebp - 4], 0x18
push 0
jne 0x4c6184
push 0x2212
lea eax, [ebp - 0x5c]
push eax
call fcn.004e0d20
mov byte [ebp - 4], 0x19
mov ebx, 4
jmp 0x4c61a1
push 0x2211
lea eax, [ebp - 0x9c]
push eax
call fcn.004e0d20
mov dword [ebp - 4], 0x1a
mov ebx, 8
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x38], ebx
jbe 0x4c61af
mov eax, dword [eax]
push ecx
push eax
push dword [ebp + 0xc]
call fcn.00434480
push str.Entry_point_has_conflicting
push dword [ebp + 0xc]
call fcn.00433f60
cmp dword [ebp - 0x70], 0xf
lea eax, [ebp - 0x84]
push dword [ebp - 0x74]
cmova eax, dword [ebp - 0x84]
push eax
push dword [ebp + 0xc]
call fcn.00434480
push str._location_assignment_at_location
push dword [ebp + 0xc]
call fcn.00433f60
add esp, 0x28
push edi
mov edi, dword [ebp + 0xc]
mov ecx, edi
call fcn.0045f530
push str.__component
push edi
call fcn.00433f60
add esp, 8
mov ecx, edi
push esi
call fcn.0045f530
mov esi, dword [edi + 0xe8]
test bl, 8
je 0x4c6277
mov ecx, dword [ebp - 0x88]
and ebx, 0xfffffff7
cmp ecx, 0xf
jbe 0x4c625c
mov edx, dword [ebp - 0x9c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c6252
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c652d
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0xf
mov byte [ebp - 0x9c], 0
test bl, 4
je 0x4c5c7c
mov ecx, dword [ebp - 0x48]
cmp ecx, 0xf
jbe 0x4c62b4
mov edx, dword [ebp - 0x5c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c62aa
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c652d
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x4c], 0
lea ecx, [ebp - 0x204]
mov dword [ebp - 0x48], 0xf
mov byte [ebp - 0x5c], 0
jmp 0x4c64ef
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x2f4]
mov ebx, dword [ebp + 8]
mov ecx, ebx
push edx
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov edi, eax
cmp dword [ebp - 0x30], 3
mov ecx, ebx
mov byte [ebp - 4], 0x1b
push 0
jne 0x4c6314
push 0x2212
lea eax, [ebp - 0xd4]
push eax
call fcn.004e0d20
mov byte [ebp - 4], 0x1c
mov ebx, 0x10
jmp 0x4c6331
push 0x2211
lea eax, [ebp - 0x9c]
push eax
call fcn.004e0d20
mov dword [ebp - 4], 0x1d
mov ebx, 0x20
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x38], ebx
jbe 0x4c633f
mov eax, dword [eax]
push ecx
push eax
push edi
call fcn.00434480
push str.Entry_point_has_conflicting
push edi
call fcn.00433f60
cmp dword [ebp - 0x70], 0xf
lea eax, [ebp - 0x84]
push dword [ebp - 0x74]
cmova eax, dword [ebp - 0x84]
push eax
push edi
call fcn.00434480
push str._location_assignment_at_location
push edi
call fcn.00433f60
mov esi, dword [ebp - 0x14]
add esp, 0x28
mov eax, esi
mov ecx, edi
shr eax, 2
push eax
call fcn.0045f530
push str.__component
push edi
call fcn.00433f60
add esp, 8
and esi, 3
mov ecx, edi
push esi
call fcn.0045f530
mov esi, dword [edi + 0xe8]
test bl, 0x20
je 0x4c6407
mov ecx, dword [ebp - 0x88]
and ebx, 0xffffffdf
cmp ecx, 0xf
jbe 0x4c63ec
mov edx, dword [ebp - 0x9c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c63e2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c6532
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x88], 0xf
mov byte [ebp - 0x9c], 0
test bl, 0x10
je 0x4c64e9
mov ecx, dword [ebp - 0xc0]
cmp ecx, 0xf
jbe 0x4c64ce
mov edx, dword [ebp - 0xd4]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4c64c4
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4c6532
jmp 0x4c64c4
push dword [ebp - 0x10]
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x2f4]
push 0xfffffffffffffff2
push eax
call fcn.004e4840
mov esi, eax
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0xd4]
push 0
push 0x1337
push eax
mov byte [ebp - 4], 0x14
call fcn.004e0d20
cmp dword [eax + 0x14], 0xf
mov ecx, dword [eax + 0x10]
mov byte [ebp - 4], 0x15
jbe 0x4c6489
mov eax, dword [eax]
push ecx
push eax
push esi
call fcn.00434480
push str.Member_index
push esi
call fcn.00433f60
mov eax, dword [ebp - 0x20]
add esp, 0x14
dec eax
mov ecx, esi
push eax
call fcn.0045f530
push str._is_missing_a_location_assignment
push esi
call fcn.00433f60
mov esi, dword [esi + 0xe8]
add esp, 8
jmp 0x4c6410
push ecx
push edx
call fcn.004e9693
add esp, 8
mov dword [ebp - 0xc4], 0
mov byte [ebp - 0xd4], 0
mov dword [ebp - 0xc0], 0xf
lea ecx, [ebp - 0x2f4]
call fcn.00463850
lea ecx, [ebp - 0xf4]
call fcn.0042bd60
lea ecx, [ebp - 0xbc]
call fcn.0042bd60
jmp 0x4c60f5
call fcn.004ee89f
call fcn.00463220
call fcn.00463220
call fcn.004ee89f
push str.unordered_map_set_too_long
call fcn.004e72d1
call fcn.004ee89f
call fcn.004ee89f
nop
mov edx, 0xc3004c55
push ebp
dec esp
add bh, cl
push ebp
dec esp
add byte [esi], cl
push esi
dec esp
add ah, cl
int3