40f8f8:	83 c1 02             	add    $0x2,%ecx
40f8fb:	3b cf                	cmp    %edi,%ecx
40f8fd:	75 f4                	jne    0x40f8f3
40f8ff:	2b ce                	sub    %esi,%ecx
40f901:	d1 f9                	sar    $1,%ecx
40f903:	3b ca                	cmp    %edx,%ecx
40f905:	0f 85 2d 01 00 00    	jne    0x40fa38
40f90b:	8b 45 0c             	mov    0xc(%ebp),%eax
40f90e:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
40f911:	2b c2                	sub    %edx,%eax
40f913:	83 e0 e0             	and    $0xffffffe0,%eax
40f916:	03 c1                	add    %ecx,%eax
40f918:	c5 f1 ef c9          	vpxor  %xmm1,%xmm1,%xmm1
40f91c:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40f91f:	eb 0f                	jmp    0x40f930
40f921:	c5 f5 75 07          	vpcmpeqw (%edi),%ymm1,%ymm0
40f925:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
40f929:	85 c0                	test   %eax,%eax
40f92b:	75 07                	jne    0x40f934
40f92d:	83 c7 20             	add    $0x20,%edi
40f930:	3b f9                	cmp    %ecx,%edi
40f932:	75 ed                	jne    0x40f921
40f934:	8b 45 0c             	mov    0xc(%ebp),%eax
40f937:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40f93a:	3b f9                	cmp    %ecx,%edi
40f93c:	74 0e                	je     0x40f94c
40f93e:	33 c0                	xor    %eax,%eax
40f940:	66 39 07             	cmp    %ax,(%edi)
40f943:	74 07                	je     0x40f94c
40f945:	83 c7 02             	add    $0x2,%edi
40f948:	3b f9                	cmp    %ecx,%edi
40f94a:	75 f4                	jne    0x40f940
40f94c:	8b cf                	mov    %edi,%ecx
40f94e:	2b ce                	sub    %esi,%ecx
40f950:	d1 f9                	sar    $1,%ecx
40f952:	c5 f8 77             	vzeroupper
40f955:	e9 de 00 00 00       	jmp    0x40fa38
40f95a:	83 f8 01             	cmp    $0x1,%eax
40f95d:	0f 8c b4 00 00 00    	jl     0x40fa17
40f963:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f966:	f6 c1 01             	test   $0x1,%cl
40f969:	74 27                	je     0x40f992
40f96b:	8b 45 0c             	mov    0xc(%ebp),%eax
40f96e:	8b f1                	mov    %ecx,%esi
40f970:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40f973:	3b f2                	cmp    %edx,%esi
40f975:	0f 84 4a ff ff ff    	je     0x40f8c5
40f97b:	33 c0                	xor    %eax,%eax
40f97d:	66 39 01             	cmp    %ax,(%ecx)
40f980:	0f 84 3f ff ff ff    	je     0x40f8c5
40f986:	83 c1 02             	add    $0x2,%ecx
40f989:	3b ca                	cmp    %edx,%ecx
40f98b:	75 f0                	jne    0x40f97d
40f98d:	e9 33 ff ff ff       	jmp    0x40f8c5
40f992:	8b d1                	mov    %ecx,%edx
40f994:	83 e2 0f             	and    $0xf,%edx
40f997:	6a 10                	push   $0x10
40f999:	58                   	pop    %eax
40f99a:	2b c2                	sub    %edx,%eax
40f99c:	f7 da                	neg    %edx
40f99e:	1b d2                	sbb    %edx,%edx
40f9a0:	23 d0                	and    %eax,%edx
40f9a2:	8b 45 0c             	mov    0xc(%ebp),%eax
40f9a5:	d1 ea                	shr    $1,%edx
40f9a7:	3b c2                	cmp    %edx,%eax
40f9a9:	73 02                	jae    0x40f9ad
40f9ab:	8b d0                	mov    %eax,%edx
40f9ad:	8b 75 08             	mov    0x8(%ebp),%esi
40f9b0:	8d 3c 51             	lea    (%ecx,%edx,2),%edi
40f9b3:	33 c0                	xor    %eax,%eax
40f9b5:	3b f7                	cmp    %edi,%esi
40f9b7:	74 0c                	je     0x40f9c5
40f9b9:	66 39 01             	cmp    %ax,(%ecx)
40f9bc:	74 07                	je     0x40f9c5
40f9be:	83 c1 02             	add    $0x2,%ecx
40f9c1:	3b cf                	cmp    %edi,%ecx
40f9c3:	75 f4                	jne    0x40f9b9
40f9c5:	2b ce                	sub    %esi,%ecx
40f9c7:	d1 f9                	sar    $1,%ecx
40f9c9:	3b ca                	cmp    %edx,%ecx
40f9cb:	75 6b                	jne    0x40fa38
40f9cd:	8b 45 0c             	mov    0xc(%ebp),%eax
40f9d0:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
40f9d3:	2b c2                	sub    %edx,%eax
40f9d5:	0f 57 c9             	xorps  %xmm1,%xmm1
40f9d8:	83 e0 f0             	and    $0xfffffff0,%eax
40f9db:	03 c1                	add    %ecx,%eax
40f9dd:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40f9e0:	eb 12                	jmp    0x40f9f4
40f9e2:	0f 10 07             	movups (%edi),%xmm0
40f9e5:	66 0f 75 c1          	pcmpeqw %xmm1,%xmm0
40f9e9:	66 0f d7 c0          	pmovmskb %xmm0,%eax
40f9ed:	85 c0                	test   %eax,%eax
40f9ef:	75 07                	jne    0x40f9f8
40f9f1:	83 c7 10             	add    $0x10,%edi
40f9f4:	3b f9                	cmp    %ecx,%edi
40f9f6:	75 ea                	jne    0x40f9e2
40f9f8:	8b 45 0c             	mov    0xc(%ebp),%eax
40f9fb:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40f9fe:	3b f9                	cmp    %ecx,%edi
40fa00:	74 0e                	je     0x40fa10
40fa02:	33 c0                	xor    %eax,%eax
40fa04:	66 39 07             	cmp    %ax,(%edi)
40fa07:	74 07                	je     0x40fa10
40fa09:	83 c7 02             	add    $0x2,%edi
40fa0c:	3b f9                	cmp    %ecx,%edi
40fa0e:	75 f4                	jne    0x40fa04
40fa10:	8b cf                	mov    %edi,%ecx
40fa12:	e9 ae fe ff ff       	jmp    0x40f8c5
40fa17:	8b 55 08             	mov    0x8(%ebp),%edx
40fa1a:	8b ca                	mov    %edx,%ecx
40fa1c:	8b 45 0c             	mov    0xc(%ebp),%eax
40fa1f:	8d 34 42             	lea    (%edx,%eax,2),%esi
40fa22:	3b d6                	cmp    %esi,%edx
40fa24:	74 0e                	je     0x40fa34
40fa26:	33 c0                	xor    %eax,%eax
40fa28:	66 39 01             	cmp    %ax,(%ecx)
40fa2b:	74 07                	je     0x40fa34
40fa2d:	83 c1 02             	add    $0x2,%ecx
40fa30:	3b ce                	cmp    %esi,%ecx
40fa32:	75 f4                	jne    0x40fa28
40fa34:	2b ca                	sub    %edx,%ecx
40fa36:	d1 f9                	sar    $1,%ecx
40fa38:	5f                   	pop    %edi
40fa39:	8b c1                	mov    %ecx,%eax
40fa3b:	5e                   	pop    %esi
40fa3c:	5d                   	pop    %ebp
40fa3d:	c3                   	ret
40fa3e:	8b ff                	mov    %edi,%edi
40fa40:	55                   	push   %ebp
40fa41:	8b ec                	mov    %esp,%ebp
40fa43:	8b 45 08             	mov    0x8(%ebp),%eax
40fa46:	a3 84 47 43 00       	mov    %eax,0x434784
40fa4b:	5d                   	pop    %ebp
40fa4c:	c3                   	ret
40fa4d:	8b ff                	mov    %edi,%edi
40fa4f:	55                   	push   %ebp
40fa50:	8b ec                	mov    %esp,%ebp
40fa52:	56                   	push   %esi
40fa53:	e8 22 00 00 00       	call   0x40fa7a
40fa58:	8b f0                	mov    %eax,%esi
40fa5a:	85 f6                	test   %esi,%esi
40fa5c:	74 17                	je     0x40fa75
40fa5e:	ff 75 08             	push   0x8(%ebp)
40fa61:	8b ce                	mov    %esi,%ecx
40fa63:	ff 15 54 41 42 00    	call   *0x424154
40fa69:	ff d6                	call   *%esi
40fa6b:	59                   	pop    %ecx
40fa6c:	85 c0                	test   %eax,%eax
40fa6e:	74 05                	je     0x40fa75
40fa70:	33 c0                	xor    %eax,%eax
40fa72:	40                   	inc    %eax
40fa73:	eb 02                	jmp    0x40fa77
40fa75:	33 c0                	xor    %eax,%eax
40fa77:	5e                   	pop    %esi
40fa78:	5d                   	pop    %ebp
40fa79:	c3                   	ret
40fa7a:	6a 0c                	push   $0xc
40fa7c:	68 38 16 43 00       	push   $0x431638
40fa81:	e8 3a 85 ff ff       	call   0x407fc0
40fa86:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40fa8a:	6a 00                	push   $0x0
40fa8c:	e8 92 d6 ff ff       	call   0x40d123
40fa91:	59                   	pop    %ecx
40fa92:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40fa96:	8b 35 14 30 43 00    	mov    0x433014,%esi
40fa9c:	8b ce                	mov    %esi,%ecx
40fa9e:	83 e1 1f             	and    $0x1f,%ecx
40faa1:	33 35 84 47 43 00    	xor    0x434784,%esi
40faa7:	d3 ce                	ror    %cl,%esi
40faa9:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40faac:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40fab3:	e8 15 00 00 00       	call   0x40facd
40fab8:	8b c6                	mov    %esi,%eax
40faba:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40fabd:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40fac4:	59                   	pop    %ecx
40fac5:	5f                   	pop    %edi
40fac6:	5e                   	pop    %esi
40fac7:	5b                   	pop    %ebx
40fac8:	c9                   	leave
40fac9:	c3                   	ret
40faca:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40facd:	6a 00                	push   $0x0
40facf:	e8 97 d6 ff ff       	call   0x40d16b
40fad4:	59                   	pop    %ecx
40fad5:	c3                   	ret
40fad6:	8b ff                	mov    %edi,%edi
40fad8:	55                   	push   %ebp
40fad9:	8b ec                	mov    %esp,%ebp
40fadb:	51                   	push   %ecx
40fadc:	53                   	push   %ebx
40fadd:	56                   	push   %esi
40fade:	57                   	push   %edi
40fadf:	e8 46 48 00 00       	call   0x41432a
40fae4:	8b f0                	mov    %eax,%esi
40fae6:	85 f6                	test   %esi,%esi
40fae8:	0f 84 39 01 00 00    	je     0x40fc27
40faee:	8b 16                	mov    (%esi),%edx
40faf0:	33 db                	xor    %ebx,%ebx
40faf2:	8b ca                	mov    %edx,%ecx
40faf4:	8d 82 90 00 00 00    	lea    0x90(%edx),%eax
40fafa:	3b d0                	cmp    %eax,%edx
40fafc:	74 0e                	je     0x40fb0c
40fafe:	8b 7d 08             	mov    0x8(%ebp),%edi
40fb01:	39 39                	cmp    %edi,(%ecx)
40fb03:	74 09                	je     0x40fb0e
40fb05:	83 c1 0c             	add    $0xc,%ecx
40fb08:	3b c8                	cmp    %eax,%ecx
40fb0a:	75 f5                	jne    0x40fb01
40fb0c:	8b cb                	mov    %ebx,%ecx
40fb0e:	85 c9                	test   %ecx,%ecx
40fb10:	0f 84 11 01 00 00    	je     0x40fc27
40fb16:	8b 79 08             	mov    0x8(%ecx),%edi
40fb19:	85 ff                	test   %edi,%edi
40fb1b:	0f 84 06 01 00 00    	je     0x40fc27
40fb21:	83 ff 05             	cmp    $0x5,%edi
40fb24:	75 0b                	jne    0x40fb31
40fb26:	33 c0                	xor    %eax,%eax
40fb28:	89 59 08             	mov    %ebx,0x8(%ecx)
40fb2b:	40                   	inc    %eax
40fb2c:	e9 f8 00 00 00       	jmp    0x40fc29
40fb31:	83 ff 01             	cmp    $0x1,%edi
40fb34:	75 08                	jne    0x40fb3e
40fb36:	83 c8 ff             	or     $0xffffffff,%eax
40fb39:	e9 eb 00 00 00       	jmp    0x40fc29
40fb3e:	8b 46 04             	mov    0x4(%esi),%eax
40fb41:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fb44:	8b 45 0c             	mov    0xc(%ebp),%eax
40fb47:	89 46 04             	mov    %eax,0x4(%esi)
40fb4a:	83 79 04 08          	cmpl   $0x8,0x4(%ecx)
40fb4e:	0f 85 b7 00 00 00    	jne    0x40fc0b
40fb54:	8d 42 24             	lea    0x24(%edx),%eax
40fb57:	8d 50 6c             	lea    0x6c(%eax),%edx
40fb5a:	eb 06                	jmp    0x40fb62
40fb5c:	89 58 08             	mov    %ebx,0x8(%eax)
40fb5f:	83 c0 0c             	add    $0xc,%eax
40fb62:	3b c2                	cmp    %edx,%eax
40fb64:	75 f6                	jne    0x40fb5c
40fb66:	8b 5e 08             	mov    0x8(%esi),%ebx
40fb69:	b8 91 00 00 c0       	mov    $0xc0000091,%eax
40fb6e:	39 01                	cmp    %eax,(%ecx)
40fb70:	77 47                	ja     0x40fbb9
40fb72:	74 3e                	je     0x40fbb2
40fb74:	81 39 8d 00 00 c0    	cmpl   $0xc000008d,(%ecx)
40fb7a:	74 2f                	je     0x40fbab
40fb7c:	81 39 8e 00 00 c0    	cmpl   $0xc000008e,(%ecx)
40fb82:	74 20                	je     0x40fba4
40fb84:	81 39 8f 00 00 c0    	cmpl   $0xc000008f,(%ecx)
40fb8a:	74 11                	je     0x40fb9d
40fb8c:	81 39 90 00 00 c0    	cmpl   $0xc0000090,(%ecx)
40fb92:	8b c3                	mov    %ebx,%eax
40fb94:	75 62                	jne    0x40fbf8
40fb96:	b8 81 00 00 00       	mov    $0x81,%eax
40fb9b:	eb 58                	jmp    0x40fbf5
40fb9d:	b8 86 00 00 00       	mov    $0x86,%eax
40fba2:	eb 51                	jmp    0x40fbf5
40fba4:	b8 83 00 00 00       	mov    $0x83,%eax
40fba9:	eb 4a                	jmp    0x40fbf5
40fbab:	b8 82 00 00 00       	mov    $0x82,%eax
40fbb0:	eb 43                	jmp    0x40fbf5
40fbb2:	b8 84 00 00 00       	mov    $0x84,%eax
40fbb7:	eb 3c                	jmp    0x40fbf5
40fbb9:	81 39 92 00 00 c0    	cmpl   $0xc0000092,(%ecx)
40fbbf:	74 2f                	je     0x40fbf0
40fbc1:	81 39 93 00 00 c0    	cmpl   $0xc0000093,(%ecx)
40fbc7:	74 20                	je     0x40fbe9
40fbc9:	81 39 b4 02 00 c0    	cmpl   $0xc00002b4,(%ecx)
40fbcf:	74 11                	je     0x40fbe2
40fbd1:	81 39 b5 02 00 c0    	cmpl   $0xc00002b5,(%ecx)
40fbd7:	8b c3                	mov    %ebx,%eax
40fbd9:	75 1d                	jne    0x40fbf8
40fbdb:	b8 8d 00 00 00       	mov    $0x8d,%eax
40fbe0:	eb 13                	jmp    0x40fbf5
40fbe2:	b8 8e 00 00 00       	mov    $0x8e,%eax
40fbe7:	eb 0c                	jmp    0x40fbf5
40fbe9:	b8 85 00 00 00       	mov    $0x85,%eax
40fbee:	eb 05                	jmp    0x40fbf5
40fbf0:	b8 8a 00 00 00       	mov    $0x8a,%eax
40fbf5:	89 46 08             	mov    %eax,0x8(%esi)
40fbf8:	50                   	push   %eax
40fbf9:	6a 08                	push   $0x8
40fbfb:	8b cf                	mov    %edi,%ecx
40fbfd:	ff 15 54 41 42 00    	call   *0x424154
40fc03:	ff d7                	call   *%edi
40fc05:	59                   	pop    %ecx
40fc06:	89 5e 08             	mov    %ebx,0x8(%esi)
40fc09:	eb 10                	jmp    0x40fc1b
40fc0b:	ff 71 04             	push   0x4(%ecx)
40fc0e:	89 59 08             	mov    %ebx,0x8(%ecx)
40fc11:	8b cf                	mov    %edi,%ecx
40fc13:	ff 15 54 41 42 00    	call   *0x424154
40fc19:	ff d7                	call   *%edi
40fc1b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40fc1e:	59                   	pop    %ecx
40fc1f:	89 46 04             	mov    %eax,0x4(%esi)
40fc22:	e9 0f ff ff ff       	jmp    0x40fb36
40fc27:	33 c0                	xor    %eax,%eax
40fc29:	5f                   	pop    %edi
40fc2a:	5e                   	pop    %esi
40fc2b:	5b                   	pop    %ebx
40fc2c:	c9                   	leave
40fc2d:	c3                   	ret
40fc2e:	a1 88 47 43 00       	mov    0x434788,%eax
40fc33:	c3                   	ret
40fc34:	8b ff                	mov    %edi,%edi
40fc36:	55                   	push   %ebp
40fc37:	8b ec                	mov    %esp,%ebp
40fc39:	8b 45 08             	mov    0x8(%ebp),%eax
40fc3c:	a3 88 47 43 00       	mov    %eax,0x434788
40fc41:	5d                   	pop    %ebp
40fc42:	c3                   	ret
40fc43:	8b ff                	mov    %edi,%edi
40fc45:	55                   	push   %ebp
40fc46:	8b ec                	mov    %esp,%ebp
40fc48:	a1 14 30 43 00       	mov    0x433014,%eax
40fc4d:	83 e0 1f             	and    $0x1f,%eax
40fc50:	6a 20                	push   $0x20
40fc52:	59                   	pop    %ecx
40fc53:	2b c8                	sub    %eax,%ecx
40fc55:	8b 45 08             	mov    0x8(%ebp),%eax
40fc58:	d3 c8                	ror    %cl,%eax
40fc5a:	33 05 14 30 43 00    	xor    0x433014,%eax
40fc60:	5d                   	pop    %ebp
40fc61:	c3                   	ret
40fc62:	a1 14 30 43 00       	mov    0x433014,%eax
40fc67:	8b c8                	mov    %eax,%ecx
40fc69:	33 05 8c 47 43 00    	xor    0x43478c,%eax
40fc6f:	83 e1 1f             	and    $0x1f,%ecx
40fc72:	d3 c8                	ror    %cl,%eax
40fc74:	85 c0                	test   %eax,%eax
40fc76:	0f 95 c0             	setne  %al
40fc79:	c3                   	ret
40fc7a:	8b ff                	mov    %edi,%edi
40fc7c:	55                   	push   %ebp
40fc7d:	8b ec                	mov    %esp,%ebp
40fc7f:	8b 45 08             	mov    0x8(%ebp),%eax
40fc82:	a3 8c 47 43 00       	mov    %eax,0x43478c
40fc87:	5d                   	pop    %ebp
40fc88:	c3                   	ret
40fc89:	8b ff                	mov    %edi,%edi
40fc8b:	55                   	push   %ebp
40fc8c:	8b ec                	mov    %esp,%ebp
40fc8e:	56                   	push   %esi
40fc8f:	8b 35 14 30 43 00    	mov    0x433014,%esi
40fc95:	8b ce                	mov    %esi,%ecx
40fc97:	33 35 8c 47 43 00    	xor    0x43478c,%esi
40fc9d:	83 e1 1f             	and    $0x1f,%ecx
40fca0:	d3 ce                	ror    %cl,%esi
40fca2:	85 f6                	test   %esi,%esi