40c5fb:	0f b6 84 05 fc fe ff 	movzbl -0x104(%ebp,%eax,1),%eax
40c602:	ff
40c603:	8d 8d fb fd ff ff    	lea    -0x205(%ebp),%ecx
40c609:	2b c8                	sub    %eax,%ecx
40c60b:	0f b6 01             	movzbl (%ecx),%eax
40c60e:	eb 02                	jmp    0x40c612
40c610:	33 c0                	xor    %eax,%eax
40c612:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
40c615:	33 c8                	xor    %eax,%ecx
40c617:	03 c9                	add    %ecx,%ecx
40c619:	33 c8                	xor    %eax,%ecx
40c61b:	03 c9                	add    %ecx,%ecx
40c61d:	33 c8                	xor    %eax,%ecx
40c61f:	03 c9                	add    %ecx,%ecx
40c621:	33 c1                	xor    %ecx,%eax
40c623:	8b c8                	mov    %eax,%ecx
40c625:	c1 f9 08             	sar    $0x8,%ecx
40c628:	32 c8                	xor    %al,%cl
40c62a:	80 f1 63             	xor    $0x63,%cl
40c62d:	8d 04 9d 00 00 00 00 	lea    0x0(,%ebx,4),%eax
40c634:	8d 90 a0 6a 43 00    	lea    0x436aa0(%eax),%edx
40c63a:	88 8b c0 7b 43 00    	mov    %cl,0x437bc0(%ebx)
40c640:	88 4a 01             	mov    %cl,0x1(%edx)
40c643:	88 0a                	mov    %cl,(%edx)
40c645:	88 88 a3 6e 43 00    	mov    %cl,0x436ea3(%eax)
40c64b:	88 88 a0 6e 43 00    	mov    %cl,0x436ea0(%eax)
40c651:	88 88 a3 72 43 00    	mov    %cl,0x4372a3(%eax)
40c657:	88 88 a2 72 43 00    	mov    %cl,0x4372a2(%eax)
40c65d:	88 88 a2 76 43 00    	mov    %cl,0x4376a2(%eax)
40c663:	88 88 a1 76 43 00    	mov    %cl,0x4376a1(%eax)
40c669:	74 15                	je     0x40c680
40c66b:	0f b6 d1             	movzbl %cl,%edx
40c66e:	0f b6 94 15 fc fe ff 	movzbl -0x104(%ebp,%edx,1),%edx
40c675:	ff
40c676:	0f b6 94 15 15 fd ff 	movzbl -0x2eb(%ebp,%edx,1),%edx
40c67d:	ff
40c67e:	eb 02                	jmp    0x40c682
40c680:	33 d2                	xor    %edx,%edx
40c682:	88 90 a3 6a 43 00    	mov    %dl,0x436aa3(%eax)
40c688:	88 90 a2 6e 43 00    	mov    %dl,0x436ea2(%eax)
40c68e:	88 90 a1 72 43 00    	mov    %dl,0x4372a1(%eax)
40c694:	88 90 a0 76 43 00    	mov    %dl,0x4376a0(%eax)
40c69a:	84 c9                	test   %cl,%cl
40c69c:	74 15                	je     0x40c6b3
40c69e:	0f b6 c9             	movzbl %cl,%ecx
40c6a1:	0f b6 8c 0d fc fe ff 	movzbl -0x104(%ebp,%ecx,1),%ecx
40c6a8:	ff
40c6a9:	0f b6 8c 0d fd fc ff 	movzbl -0x303(%ebp,%ecx,1),%ecx
40c6b0:	ff
40c6b1:	eb 02                	jmp    0x40c6b5
40c6b3:	33 c9                	xor    %ecx,%ecx
40c6b5:	88 88 a2 6a 43 00    	mov    %cl,0x436aa2(%eax)
40c6bb:	88 88 a1 6e 43 00    	mov    %cl,0x436ea1(%eax)
40c6c1:	88 88 a0 72 43 00    	mov    %cl,0x4372a0(%eax)
40c6c7:	88 88 a3 76 43 00    	mov    %cl,0x4376a3(%eax)
40c6cd:	0f b6 f3             	movzbl %bl,%esi
40c6d0:	8b ce                	mov    %esi,%ecx
40c6d2:	c1 e1 03             	shl    $0x3,%ecx
40c6d5:	33 ce                	xor    %esi,%ecx
40c6d7:	c1 e1 02             	shl    $0x2,%ecx
40c6da:	33 ce                	xor    %esi,%ecx
40c6dc:	03 c9                	add    %ecx,%ecx
40c6de:	8b d1                	mov    %ecx,%edx
40c6e0:	c1 fa 08             	sar    $0x8,%edx
40c6e3:	32 d1                	xor    %cl,%dl
40c6e5:	80 f2 05             	xor    $0x5,%dl
40c6e8:	74 32                	je     0x40c71c
40c6ea:	8b ce                	mov    %esi,%ecx
40c6ec:	c1 e1 03             	shl    $0x3,%ecx
40c6ef:	33 ce                	xor    %esi,%ecx
40c6f1:	c1 e1 02             	shl    $0x2,%ecx
40c6f4:	33 ce                	xor    %esi,%ecx
40c6f6:	03 c9                	add    %ecx,%ecx
40c6f8:	8b d1                	mov    %ecx,%edx
40c6fa:	c1 fa 08             	sar    $0x8,%edx
40c6fd:	0f b6 d2             	movzbl %dl,%edx
40c700:	0f b6 c9             	movzbl %cl,%ecx
40c703:	33 d1                	xor    %ecx,%edx
40c705:	83 f2 05             	xor    $0x5,%edx
40c708:	0f b6 8c 15 fc fe ff 	movzbl -0x104(%ebp,%edx,1),%ecx
40c70f:	ff
40c710:	8d 95 fb fd ff ff    	lea    -0x205(%ebp),%edx
40c716:	2b d1                	sub    %ecx,%edx
40c718:	8a 1a                	mov    (%edx),%bl
40c71a:	eb 02                	jmp    0x40c71e
40c71c:	32 db                	xor    %bl,%bl
40c71e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c721:	88 99 c0 7a 43 00    	mov    %bl,0x437ac0(%ecx)
40c727:	84 db                	test   %bl,%bl
40c729:	74 15                	je     0x40c740
40c72b:	0f b6 cb             	movzbl %bl,%ecx
40c72e:	0f b6 8c 0d fc fe ff 	movzbl -0x104(%ebp,%ecx,1),%ecx
40c735:	ff
40c736:	0f b6 94 0d 64 fd ff 	movzbl -0x29c(%ebp,%ecx,1),%edx
40c73d:	ff
40c73e:	eb 02                	jmp    0x40c742
40c740:	33 d2                	xor    %edx,%edx
40c742:	0f b6 f3             	movzbl %bl,%esi
40c745:	8b ce                	mov    %esi,%ecx
40c747:	c1 e1 02             	shl    $0x2,%ecx
40c74a:	88 90 a2 5a 43 00    	mov    %dl,0x435aa2(%eax)
40c750:	88 90 a1 5e 43 00    	mov    %dl,0x435ea1(%eax)
40c756:	88 90 a0 62 43 00    	mov    %dl,0x4362a0(%eax)
40c75c:	88 90 a3 66 43 00    	mov    %dl,0x4366a3(%eax)
40c762:	88 91 a2 4a 43 00    	mov    %dl,0x434aa2(%ecx)
40c768:	88 91 a1 4e 43 00    	mov    %dl,0x434ea1(%ecx)
40c76e:	88 91 a0 52 43 00    	mov    %dl,0x4352a0(%ecx)
40c774:	88 91 a3 56 43 00    	mov    %dl,0x4356a3(%ecx)
40c77a:	84 db                	test   %bl,%bl
40c77c:	74 12                	je     0x40c790
40c77e:	0f b6 94 35 fc fe ff 	movzbl -0x104(%ebp,%esi,1),%edx
40c785:	ff
40c786:	0f b6 94 15 c3 fd ff 	movzbl -0x23d(%ebp,%edx,1),%edx
40c78d:	ff
40c78e:	eb 02                	jmp    0x40c792
40c790:	33 d2                	xor    %edx,%edx
40c792:	88 90 a0 5a 43 00    	mov    %dl,0x435aa0(%eax)
40c798:	88 90 a3 5e 43 00    	mov    %dl,0x435ea3(%eax)
40c79e:	88 90 a2 62 43 00    	mov    %dl,0x4362a2(%eax)
40c7a4:	88 90 a1 66 43 00    	mov    %dl,0x4366a1(%eax)
40c7aa:	88 91 a0 4a 43 00    	mov    %dl,0x434aa0(%ecx)
40c7b0:	88 91 a3 4e 43 00    	mov    %dl,0x434ea3(%ecx)
40c7b6:	88 91 a2 52 43 00    	mov    %dl,0x4352a2(%ecx)
40c7bc:	88 91 a1 56 43 00    	mov    %dl,0x4356a1(%ecx)
40c7c2:	84 db                	test   %bl,%bl
40c7c4:	74 12                	je     0x40c7d8
40c7c6:	0f b6 94 35 fc fe ff 	movzbl -0x104(%ebp,%esi,1),%edx
40c7cd:	ff
40c7ce:	0f b6 94 15 ea fd ff 	movzbl -0x216(%ebp,%edx,1),%edx
40c7d5:	ff
40c7d6:	eb 02                	jmp    0x40c7da
40c7d8:	33 d2                	xor    %edx,%edx
40c7da:	88 90 a1 5a 43 00    	mov    %dl,0x435aa1(%eax)
40c7e0:	88 90 a0 5e 43 00    	mov    %dl,0x435ea0(%eax)
40c7e6:	88 90 a3 62 43 00    	mov    %dl,0x4362a3(%eax)
40c7ec:	88 90 a2 66 43 00    	mov    %dl,0x4366a2(%eax)
40c7f2:	88 91 a1 4a 43 00    	mov    %dl,0x434aa1(%ecx)
40c7f8:	88 91 a0 4e 43 00    	mov    %dl,0x434ea0(%ecx)
40c7fe:	88 91 a3 52 43 00    	mov    %dl,0x4352a3(%ecx)
40c804:	88 91 a2 56 43 00    	mov    %dl,0x4356a2(%ecx)
40c80a:	84 db                	test   %bl,%bl
40c80c:	74 12                	je     0x40c820
40c80e:	0f b6 94 35 fc fe ff 	movzbl -0x104(%ebp,%esi,1),%edx
40c815:	ff
40c816:	0f b6 94 15 db fd ff 	movzbl -0x225(%ebp,%edx,1),%edx
40c81d:	ff
40c81e:	eb 02                	jmp    0x40c822
40c820:	33 d2                	xor    %edx,%edx
40c822:	ff 45 fc             	incl   -0x4(%ebp)
40c825:	81 7d fc 00 01 00 00 	cmpl   $0x100,-0x4(%ebp)
40c82c:	88 90 a3 5a 43 00    	mov    %dl,0x435aa3(%eax)
40c832:	88 90 a2 5e 43 00    	mov    %dl,0x435ea2(%eax)
40c838:	88 90 a1 62 43 00    	mov    %dl,0x4362a1(%eax)
40c83e:	88 90 a0 66 43 00    	mov    %dl,0x4366a0(%eax)
40c844:	88 91 a3 4a 43 00    	mov    %dl,0x434aa3(%ecx)
40c84a:	88 91 a2 4e 43 00    	mov    %dl,0x434ea2(%ecx)
40c850:	88 91 a1 52 43 00    	mov    %dl,0x4352a1(%ecx)
40c856:	88 91 a0 56 43 00    	mov    %dl,0x4356a0(%ecx)
40c85c:	0f 8c 8f fd ff ff    	jl     0x40c5f1
40c862:	5e                   	pop    %esi
40c863:	5b                   	pop    %ebx
40c864:	c9                   	leave
40c865:	c3                   	ret
40c866:	80 3d c0 7b 43 00 00 	cmpb   $0x0,0x437bc0
40c86d:	56                   	push   %esi
40c86e:	8b f1                	mov    %ecx,%esi
40c870:	75 05                	jne    0x40c877
40c872:	e8 0c fd ff ff       	call   0x40c583
40c877:	c6 46 01 01          	movb   $0x1,0x1(%esi)
40c87b:	8b c6                	mov    %esi,%eax
40c87d:	5e                   	pop    %esi
40c87e:	c3                   	ret
40c87f:	55                   	push   %ebp
40c880:	8b ec                	mov    %esp,%ebp
40c882:	83 ec 24             	sub    $0x24,%esp
40c885:	33 c0                	xor    %eax,%eax
40c887:	40                   	inc    %eax
40c888:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40c88b:	33 c9                	xor    %ecx,%ecx
40c88d:	53                   	push   %ebx
40c88e:	0f a2                	cpuid
40c890:	56                   	push   %esi
40c891:	8d 75 ec             	lea    -0x14(%ebp),%esi
40c894:	89 06                	mov    %eax,(%esi)
40c896:	89 5e 04             	mov    %ebx,0x4(%esi)
40c899:	89 4e 08             	mov    %ecx,0x8(%esi)
40c89c:	89 56 0c             	mov    %edx,0xc(%esi)
40c89f:	8b 45 f4             	mov    -0xc(%ebp),%eax
40c8a2:	8b 75 fc             	mov    -0x4(%ebp),%esi
40c8a5:	c1 e8 19             	shr    $0x19,%eax
40c8a8:	24 01                	and    $0x1,%al
40c8aa:	88 06                	mov    %al,(%esi)
40c8ac:	8b 45 10             	mov    0x10(%ebp),%eax
40c8af:	2d 80 00 00 00       	sub    $0x80,%eax
40c8b4:	74 22                	je     0x40c8d8
40c8b6:	83 e8 40             	sub    $0x40,%eax
40c8b9:	74 11                	je     0x40c8cc
40c8bb:	83 e8 40             	sub    $0x40,%eax
40c8be:	75 24                	jne    0x40c8e4
40c8c0:	6a 20                	push   $0x20
40c8c2:	59                   	pop    %ecx
40c8c3:	c7 46 04 0e 00 00 00 	movl   $0xe,0x4(%esi)
40c8ca:	eb 1b                	jmp    0x40c8e7
40c8cc:	6a 18                	push   $0x18
40c8ce:	59                   	pop    %ecx
40c8cf:	c7 46 04 0c 00 00 00 	movl   $0xc,0x4(%esi)
40c8d6:	eb 0f                	jmp    0x40c8e7
40c8d8:	6a 10                	push   $0x10
40c8da:	59                   	pop    %ecx
40c8db:	c7 46 04 0a 00 00 00 	movl   $0xa,0x4(%esi)
40c8e2:	eb 03                	jmp    0x40c8e7
40c8e4:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c8e7:	33 c0                	xor    %eax,%eax
40c8e9:	85 c9                	test   %ecx,%ecx
40c8eb:	76 1e                	jbe    0x40c90b
40c8ed:	57                   	push   %edi
40c8ee:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c8f1:	8a 1c 18             	mov    (%eax,%ebx,1),%bl
40c8f4:	8b d0                	mov    %eax,%edx
40c8f6:	8b f8                	mov    %eax,%edi
40c8f8:	c1 ea 02             	shr    $0x2,%edx
40c8fb:	83 e7 03             	and    $0x3,%edi
40c8fe:	40                   	inc    %eax
40c8ff:	8d 7c 3d dc          	lea    -0x24(%ebp,%edi,1),%edi
40c903:	88 1c 97             	mov    %bl,(%edi,%edx,4)
40c906:	3b c1                	cmp    %ecx,%eax
40c908:	72 e4                	jb     0x40c8ee
40c90a:	5f                   	pop    %edi
40c90b:	8b 4d 14             	mov    0x14(%ebp),%ecx
40c90e:	85 c9                	test   %ecx,%ecx
40c910:	75 11                	jne    0x40c923
40c912:	6a 10                	push   $0x10
40c914:	51                   	push   %ecx
40c915:	8d 46 08             	lea    0x8(%esi),%eax
40c918:	50                   	push   %eax
40c919:	e8 e2 d8 00 00       	call   0x41a200
40c91e:	83 c4 0c             	add    $0xc,%esp
40c921:	eb 0f                	jmp    0x40c932
40c923:	33 c0                	xor    %eax,%eax
40c925:	8a 14 08             	mov    (%eax,%ecx,1),%dl
40c928:	88 54 06 08          	mov    %dl,0x8(%esi,%eax,1)
40c92c:	40                   	inc    %eax
40c92d:	83 f8 10             	cmp    $0x10,%eax
40c930:	7c f3                	jl     0x40c925
40c932:	8d 45 dc             	lea    -0x24(%ebp),%eax
40c935:	50                   	push   %eax
40c936:	8b ce                	mov    %esi,%ecx
40c938:	e8 ef f9 ff ff       	call   0x40c32c
40c93d:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
40c941:	75 07                	jne    0x40c94a
40c943:	8b ce                	mov    %esi,%ecx
40c945:	e8 a7 fb ff ff       	call   0x40c4f1
40c94a:	5e                   	pop    %esi
40c94b:	5b                   	pop    %ebx
40c94c:	c9                   	leave
40c94d:	c2 10 00             	ret    $0x10
40c950:	55                   	push   %ebp
40c951:	8b ec                	mov    %esp,%ebp
40c953:	8b 45 0c             	mov    0xc(%ebp),%eax
40c956:	83 ec 34             	sub    $0x34,%esp
40c959:	56                   	push   %esi
40c95a:	8b f1                	mov    %ecx,%esi
40c95c:	85 c0                	test   %eax,%eax
40c95e:	0f 86 5d 03 00 00    	jbe    0x40ccc1
40c964:	c1 e8 04             	shr    $0x4,%eax
40c967:	80 3e 00             	cmpb   $0x0,(%esi)
40c96a:	57                   	push   %edi
40c96b:	8b f8                	mov    %eax,%edi
40c96d:	74 11                	je     0x40c980
40c96f:	ff 75 10             	push   0x10(%ebp)
40c972:	57                   	push   %edi
40c973:	ff 75 08             	push   0x8(%ebp)
40c976:	e8 1f f9 ff ff       	call   0x40c29a
40c97b:	e9 40 03 00 00       	jmp    0x40ccc0
40c980:	8d 46 08             	lea    0x8(%esi),%eax
40c983:	6a 10                	push   $0x10
40c985:	50                   	push   %eax
40c986:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c989:	8d 45 cc             	lea    -0x34(%ebp),%eax
40c98c:	50                   	push   %eax
40c98d:	e8 de f2 00 00       	call   0x41bc70
40c992:	83 c4 0c             	add    $0xc,%esp
40c995:	89 7d 0c             	mov    %edi,0xc(%ebp)
40c998:	85 ff                	test   %edi,%edi
40c99a:	0f 86 0f 03 00 00    	jbe    0x40ccaf
40c9a0:	8b 7d 08             	mov    0x8(%ebp),%edi
40c9a3:	53                   	push   %ebx
40c9a4:	8b 5d 10             	mov    0x10(%ebp),%ebx
40c9a7:	8b 46 04             	mov    0x4(%esi),%eax
40c9aa:	c1 e0 04             	shl    $0x4,%eax
40c9ad:	8d 44 30 18          	lea    0x18(%eax,%esi,1),%eax
40c9b1:	50                   	push   %eax
40c9b2:	57                   	push   %edi
40c9b3:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c9b6:	50                   	push   %eax
40c9b7:	e8 ac f8 ff ff       	call   0x40c268
40c9bc:	0f b6 45 ec          	movzbl -0x14(%ebp),%eax
40c9c0:	8b 04 85 a0 66 43 00 	mov    0x4366a0(,%eax,4),%eax
40c9c7:	0f b6 4d f9          	movzbl -0x7(%ebp),%ecx
40c9cb:	33 04 8d a0 62 43 00 	xor    0x4362a0(,%ecx,4),%eax
40c9d2:	0f b6 4d f6          	movzbl -0xa(%ebp),%ecx
40c9d6:	33 04 8d a0 5e 43 00 	xor    0x435ea0(,%ecx,4),%eax
40c9dd:	0f b6 4d f3          	movzbl -0xd(%ebp),%ecx
40c9e1:	33 04 8d a0 5a 43 00 	xor    0x435aa0(,%ecx,4),%eax
40c9e8:	0f b6 4d ed          	movzbl -0x13(%ebp),%ecx
40c9ec:	89 45 dc             	mov    %eax,-0x24(%ebp)
40c9ef:	0f b6 45 f0          	movzbl -0x10(%ebp),%eax
40c9f3:	8b 04 85 a0 66 43 00 	mov    0x4366a0(,%eax,4),%eax
40c9fa:	33 04 8d a0 62 43 00 	xor    0x4362a0(,%ecx,4),%eax
40ca01:	0f b6 4d fa          	movzbl -0x6(%ebp),%ecx
40ca05:	33 04 8d a0 5e 43 00 	xor    0x435ea0(,%ecx,4),%eax
40ca0c:	0f b6 4d f7          	movzbl -0x9(%ebp),%ecx
40ca10:	33 04 8d a0 5a 43 00 	xor    0x435aa0(,%ecx,4),%eax
40ca17:	0f b6 4d f1          	movzbl -0xf(%ebp),%ecx
40ca1b:	89 45 e0             	mov    %eax,-0x20(%ebp)
40ca1e:	0f b6 45 f4          	movzbl -0xc(%ebp),%eax
40ca22:	8b 04 85 a0 66 43 00 	mov    0x4366a0(,%eax,4),%eax
40ca29:	33 04 8d a0 62 43 00 	xor    0x4362a0(,%ecx,4),%eax
40ca30:	0f b6 4d ee          	movzbl -0x12(%ebp),%ecx
40ca34:	33 04 8d a0 5e 43 00 	xor    0x435ea0(,%ecx,4),%eax
40ca3b:	0f b6 4d fb          	movzbl -0x5(%ebp),%ecx
40ca3f:	33 04 8d a0 5a 43 00 	xor    0x435aa0(,%ecx,4),%eax
40ca46:	0f b6 4d f5          	movzbl -0xb(%ebp),%ecx
40ca4a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ca4d:	0f b6 45 f8          	movzbl -0x8(%ebp),%eax
40ca51:	8b 04 85 a0 66 43 00 	mov    0x4366a0(,%eax,4),%eax
40ca58:	33 04 8d a0 62 43 00 	xor    0x4362a0(,%ecx,4),%eax
40ca5f:	0f b6 4d f2          	movzbl -0xe(%ebp),%ecx
40ca63:	33 04 8d a0 5e 43 00 	xor    0x435ea0(,%ecx,4),%eax
40ca6a:	0f b6 4d ef          	movzbl -0x11(%ebp),%ecx
40ca6e:	33 04 8d a0 5a 43 00 	xor    0x435aa0(,%ecx,4),%eax
40ca75:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ca78:	8b 46 04             	mov    0x4(%esi),%eax
40ca7b:	48                   	dec    %eax
40ca7c:	83 f8 01             	cmp    $0x1,%eax
40ca7f:	0f 8e e9 00 00 00    	jle    0x40cb6e
40ca85:	8b c8                	mov    %eax,%ecx
40ca87:	c1 e1 04             	shl    $0x4,%ecx
40ca8a:	8d 4c 31 18          	lea    0x18(%ecx,%esi,1),%ecx
40ca8e:	48                   	dec    %eax
40ca8f:	89 4d 10             	mov    %ecx,0x10(%ebp)
40ca92:	89 45 08             	mov    %eax,0x8(%ebp)
40ca95:	ff 75 10             	push   0x10(%ebp)
40ca98:	8d 45 dc             	lea    -0x24(%ebp),%eax
40ca9b:	50                   	push   %eax
40ca9c:	8d 45 ec             	lea    -0x14(%ebp),%eax
40ca9f:	50                   	push   %eax
40caa0:	e8 c3 f7 ff ff       	call   0x40c268
40caa5:	0f b6 45 ec          	movzbl -0x14(%ebp),%eax
40caa9:	8b 04 85 a0 66 43 00 	mov    0x4366a0(,%eax,4),%eax