40b655:	57                   	push   %edi
40b656:	50                   	push   %eax
40b657:	ff 75 24             	push   0x24(%ebp)
40b65a:	e8 df d7 ff ff       	call   0x408e3e
40b65f:	8b d8                	mov    %eax,%ebx
40b661:	83 c4 20             	add    $0x20,%esp
40b664:	85 db                	test   %ebx,%ebx
40b666:	74 13                	je     0x40b67b
40b668:	57                   	push   %edi
40b669:	e8 67 e1 ff ff       	call   0x4097d5
40b66e:	59                   	pop    %ecx
40b66f:	eb 17                	jmp    0x40b688
40b671:	ff 75 20             	push   0x20(%ebp)
40b674:	ff 75 1c             	push   0x1c(%ebp)
40b677:	eb db                	jmp    0x40b654
40b679:	33 ff                	xor    %edi,%edi
40b67b:	57                   	push   %edi
40b67c:	e8 54 e1 ff ff       	call   0x4097d5
40b681:	59                   	pop    %ecx
40b682:	eb 02                	jmp    0x40b686
40b684:	33 f6                	xor    %esi,%esi
40b686:	33 db                	xor    %ebx,%ebx
40b688:	56                   	push   %esi
40b689:	e8 47 e1 ff ff       	call   0x4097d5
40b68e:	59                   	pop    %ecx
40b68f:	8b c3                	mov    %ebx,%eax
40b691:	8d 65 ec             	lea    -0x14(%ebp),%esp
40b694:	5f                   	pop    %edi
40b695:	5e                   	pop    %esi
40b696:	5b                   	pop    %ebx
40b697:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b69a:	33 cd                	xor    %ebp,%ecx
40b69c:	e8 94 7f ff ff       	call   0x403635
40b6a1:	c9                   	leave
40b6a2:	c3                   	ret
40b6a3:	8b ff                	mov    %edi,%edi
40b6a5:	55                   	push   %ebp
40b6a6:	8b ec                	mov    %esp,%ebp
40b6a8:	83 ec 10             	sub    $0x10,%esp
40b6ab:	ff 75 08             	push   0x8(%ebp)
40b6ae:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b6b1:	e8 6a c9 ff ff       	call   0x408020
40b6b6:	ff 75 28             	push   0x28(%ebp)
40b6b9:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b6bc:	ff 75 24             	push   0x24(%ebp)
40b6bf:	ff 75 20             	push   0x20(%ebp)
40b6c2:	ff 75 1c             	push   0x1c(%ebp)
40b6c5:	ff 75 18             	push   0x18(%ebp)
40b6c8:	ff 75 14             	push   0x14(%ebp)
40b6cb:	ff 75 10             	push   0x10(%ebp)
40b6ce:	ff 75 0c             	push   0xc(%ebp)
40b6d1:	50                   	push   %eax
40b6d2:	e8 dd fd ff ff       	call   0x40b4b4
40b6d7:	83 c4 24             	add    $0x24,%esp
40b6da:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b6de:	74 0a                	je     0x40b6ea
40b6e0:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b6e3:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40b6ea:	c9                   	leave
40b6eb:	c3                   	ret
40b6ec:	e8 99 d2 ff ff       	call   0x40898a
40b6f1:	33 c9                	xor    %ecx,%ecx
40b6f3:	84 c0                	test   %al,%al
40b6f5:	0f 94 c1             	sete   %cl
40b6f8:	8b c1                	mov    %ecx,%eax
40b6fa:	c3                   	ret
40b6fb:	8b ff                	mov    %edi,%edi
40b6fd:	55                   	push   %ebp
40b6fe:	8b ec                	mov    %esp,%ebp
40b700:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b703:	85 c9                	test   %ecx,%ecx
40b705:	75 04                	jne    0x40b70b
40b707:	33 c0                	xor    %eax,%eax
40b709:	5d                   	pop    %ebp
40b70a:	c3                   	ret
40b70b:	53                   	push   %ebx
40b70c:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b70f:	56                   	push   %esi
40b710:	57                   	push   %edi
40b711:	8b 7d 08             	mov    0x8(%ebp),%edi
40b714:	0f b7 17             	movzwl (%edi),%edx
40b717:	8d 7f 02             	lea    0x2(%edi),%edi
40b71a:	8d 42 bf             	lea    -0x41(%edx),%eax
40b71d:	83 f8 19             	cmp    $0x19,%eax
40b720:	77 03                	ja     0x40b725
40b722:	83 c2 20             	add    $0x20,%edx
40b725:	0f b7 33             	movzwl (%ebx),%esi
40b728:	83 c3 02             	add    $0x2,%ebx
40b72b:	8d 46 bf             	lea    -0x41(%esi),%eax
40b72e:	83 f8 19             	cmp    $0x19,%eax
40b731:	77 03                	ja     0x40b736
40b733:	83 c6 20             	add    $0x20,%esi
40b736:	8b c2                	mov    %edx,%eax
40b738:	2b c6                	sub    %esi,%eax
40b73a:	75 09                	jne    0x40b745
40b73c:	85 d2                	test   %edx,%edx
40b73e:	74 05                	je     0x40b745
40b740:	83 e9 01             	sub    $0x1,%ecx
40b743:	75 cf                	jne    0x40b714
40b745:	5f                   	pop    %edi
40b746:	5e                   	pop    %esi
40b747:	5b                   	pop    %ebx
40b748:	5d                   	pop    %ebp
40b749:	c3                   	ret
40b74a:	8b ff                	mov    %edi,%edi
40b74c:	55                   	push   %ebp
40b74d:	8b ec                	mov    %esp,%ebp
40b74f:	53                   	push   %ebx
40b750:	56                   	push   %esi
40b751:	57                   	push   %edi
40b752:	33 ff                	xor    %edi,%edi
40b754:	bb e3 00 00 00       	mov    $0xe3,%ebx
40b759:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
40b75c:	99                   	cltd
40b75d:	2b c2                	sub    %edx,%eax
40b75f:	8b f0                	mov    %eax,%esi
40b761:	d1 fe                	sar    $1,%esi
40b763:	6a 55                	push   $0x55
40b765:	ff 34 f5 48 21 41 00 	push   0x412148(,%esi,8)
40b76c:	ff 75 08             	push   0x8(%ebp)
40b76f:	e8 87 ff ff ff       	call   0x40b6fb
40b774:	83 c4 0c             	add    $0xc,%esp
40b777:	85 c0                	test   %eax,%eax
40b779:	74 13                	je     0x40b78e
40b77b:	79 05                	jns    0x40b782
40b77d:	8d 5e ff             	lea    -0x1(%esi),%ebx
40b780:	eb 03                	jmp    0x40b785
40b782:	8d 7e 01             	lea    0x1(%esi),%edi
40b785:	3b fb                	cmp    %ebx,%edi
40b787:	7e d0                	jle    0x40b759
40b789:	83 c8 ff             	or     $0xffffffff,%eax
40b78c:	eb 07                	jmp    0x40b795
40b78e:	8b 04 f5 4c 21 41 00 	mov    0x41214c(,%esi,8),%eax
40b795:	5f                   	pop    %edi
40b796:	5e                   	pop    %esi
40b797:	5b                   	pop    %ebx
40b798:	5d                   	pop    %ebp
40b799:	c3                   	ret
40b79a:	8b ff                	mov    %edi,%edi
40b79c:	55                   	push   %ebp
40b79d:	8b ec                	mov    %esp,%ebp
40b79f:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40b7a3:	74 1d                	je     0x40b7c2
40b7a5:	ff 75 08             	push   0x8(%ebp)
40b7a8:	e8 9d ff ff ff       	call   0x40b74a
40b7ad:	59                   	pop    %ecx
40b7ae:	85 c0                	test   %eax,%eax
40b7b0:	78 10                	js     0x40b7c2
40b7b2:	3d e4 00 00 00       	cmp    $0xe4,%eax
40b7b7:	73 09                	jae    0x40b7c2
40b7b9:	8b 04 c5 28 10 41 00 	mov    0x411028(,%eax,8),%eax
40b7c0:	5d                   	pop    %ebp
40b7c1:	c3                   	ret
40b7c2:	33 c0                	xor    %eax,%eax
40b7c4:	5d                   	pop    %ebp
40b7c5:	c3                   	ret
40b7c6:	8b ff                	mov    %edi,%edi
40b7c8:	55                   	push   %ebp
40b7c9:	8b ec                	mov    %esp,%ebp
40b7cb:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40b7cf:	75 15                	jne    0x40b7e6
40b7d1:	e8 7a c1 ff ff       	call   0x407950
40b7d6:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b7dc:	e8 3b a5 ff ff       	call   0x405d1c
40b7e1:	83 c8 ff             	or     $0xffffffff,%eax
40b7e4:	5d                   	pop    %ebp
40b7e5:	c3                   	ret
40b7e6:	ff 75 08             	push   0x8(%ebp)
40b7e9:	6a 00                	push   $0x0
40b7eb:	ff 35 6c 73 41 00    	push   0x41736c
40b7f1:	ff 15 ec f0 40 00    	call   *0x40f0ec
40b7f7:	5d                   	pop    %ebp
40b7f8:	c3                   	ret
40b7f9:	8b ff                	mov    %edi,%edi
40b7fb:	55                   	push   %ebp
40b7fc:	8b ec                	mov    %esp,%ebp
40b7fe:	57                   	push   %edi
40b7ff:	8b 7d 08             	mov    0x8(%ebp),%edi
40b802:	85 ff                	test   %edi,%edi
40b804:	75 0b                	jne    0x40b811
40b806:	ff 75 0c             	push   0xc(%ebp)
40b809:	e8 1d c0 ff ff       	call   0x40782b
40b80e:	59                   	pop    %ecx
40b80f:	eb 24                	jmp    0x40b835
40b811:	56                   	push   %esi
40b812:	8b 75 0c             	mov    0xc(%ebp),%esi
40b815:	85 f6                	test   %esi,%esi
40b817:	75 09                	jne    0x40b822
40b819:	57                   	push   %edi
40b81a:	e8 5a c0 ff ff       	call   0x407879
40b81f:	59                   	pop    %ecx
40b820:	eb 10                	jmp    0x40b832
40b822:	83 fe e0             	cmp    $0xffffffe0,%esi
40b825:	76 25                	jbe    0x40b84c
40b827:	e8 24 c1 ff ff       	call   0x407950
40b82c:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40b832:	33 c0                	xor    %eax,%eax
40b834:	5e                   	pop    %esi
40b835:	5f                   	pop    %edi
40b836:	5d                   	pop    %ebp
40b837:	c3                   	ret
40b838:	e8 0b b2 ff ff       	call   0x406a48
40b83d:	85 c0                	test   %eax,%eax
40b83f:	74 e6                	je     0x40b827
40b841:	56                   	push   %esi
40b842:	e8 60 a5 ff ff       	call   0x405da7
40b847:	59                   	pop    %ecx
40b848:	85 c0                	test   %eax,%eax
40b84a:	74 db                	je     0x40b827
40b84c:	56                   	push   %esi
40b84d:	57                   	push   %edi
40b84e:	6a 00                	push   $0x0
40b850:	ff 35 6c 73 41 00    	push   0x41736c
40b856:	ff 15 f0 f0 40 00    	call   *0x40f0f0
40b85c:	85 c0                	test   %eax,%eax
40b85e:	74 d8                	je     0x40b838
40b860:	eb d2                	jmp    0x40b834
40b862:	6a 0c                	push   $0xc
40b864:	68 b8 4c 41 00       	push   $0x414cb8
40b869:	e8 a2 7b ff ff       	call   0x403410
40b86e:	33 f6                	xor    %esi,%esi
40b870:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40b873:	8b 45 08             	mov    0x8(%ebp),%eax
40b876:	ff 30                	push   (%eax)
40b878:	e8 9e d8 ff ff       	call   0x40911b
40b87d:	59                   	pop    %ecx
40b87e:	89 75 fc             	mov    %esi,-0x4(%ebp)
40b881:	8b 45 0c             	mov    0xc(%ebp),%eax
40b884:	8b 00                	mov    (%eax),%eax
40b886:	8b 38                	mov    (%eax),%edi
40b888:	8b d7                	mov    %edi,%edx
40b88a:	c1 fa 06             	sar    $0x6,%edx
40b88d:	8b c7                	mov    %edi,%eax
40b88f:	83 e0 3f             	and    $0x3f,%eax
40b892:	6b c8 38             	imul   $0x38,%eax,%ecx
40b895:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b89c:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40b8a1:	74 21                	je     0x40b8c4
40b8a3:	57                   	push   %edi
40b8a4:	e8 49 d9 ff ff       	call   0x4091f2
40b8a9:	59                   	pop    %ecx
40b8aa:	50                   	push   %eax
40b8ab:	ff 15 f4 f0 40 00    	call   *0x40f0f4
40b8b1:	85 c0                	test   %eax,%eax
40b8b3:	75 1d                	jne    0x40b8d2
40b8b5:	ff 15 58 f0 40 00    	call   *0x40f058
40b8bb:	8b f0                	mov    %eax,%esi
40b8bd:	e8 7b c0 ff ff       	call   0x40793d
40b8c2:	89 30                	mov    %esi,(%eax)
40b8c4:	e8 87 c0 ff ff       	call   0x407950
40b8c9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b8cf:	83 ce ff             	or     $0xffffffff,%esi
40b8d2:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40b8d5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40b8dc:	e8 17 00 00 00       	call   0x40b8f8
40b8e1:	8b c6                	mov    %esi,%eax
40b8e3:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b8e6:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40b8ed:	59                   	pop    %ecx
40b8ee:	5f                   	pop    %edi
40b8ef:	5e                   	pop    %esi
40b8f0:	5b                   	pop    %ebx
40b8f1:	c9                   	leave
40b8f2:	c2 0c 00             	ret    $0xc
40b8f5:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40b8f8:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b8fb:	ff 31                	push   (%ecx)
40b8fd:	e8 3c d8 ff ff       	call   0x40913e
40b902:	59                   	pop    %ecx
40b903:	c3                   	ret
40b904:	8b ff                	mov    %edi,%edi
40b906:	55                   	push   %ebp
40b907:	8b ec                	mov    %esp,%ebp
40b909:	83 ec 10             	sub    $0x10,%esp
40b90c:	56                   	push   %esi
40b90d:	8b 75 08             	mov    0x8(%ebp),%esi
40b910:	83 fe fe             	cmp    $0xfffffffe,%esi
40b913:	75 0d                	jne    0x40b922
40b915:	e8 36 c0 ff ff       	call   0x407950
40b91a:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b920:	eb 59                	jmp    0x40b97b
40b922:	85 f6                	test   %esi,%esi
40b924:	78 45                	js     0x40b96b
40b926:	3b 35 78 72 41 00    	cmp    0x417278,%esi
40b92c:	73 3d                	jae    0x40b96b
40b92e:	8b c6                	mov    %esi,%eax
40b930:	8b d6                	mov    %esi,%edx
40b932:	83 e0 3f             	and    $0x3f,%eax
40b935:	c1 fa 06             	sar    $0x6,%edx
40b938:	6b c8 38             	imul   $0x38,%eax,%ecx
40b93b:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b942:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40b947:	74 22                	je     0x40b96b
40b949:	8d 45 08             	lea    0x8(%ebp),%eax
40b94c:	89 75 f8             	mov    %esi,-0x8(%ebp)
40b94f:	89 45 f4             	mov    %eax,-0xc(%ebp)
40b952:	8d 4d ff             	lea    -0x1(%ebp),%ecx
40b955:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b958:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b95b:	50                   	push   %eax
40b95c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b95f:	50                   	push   %eax
40b960:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b963:	50                   	push   %eax
40b964:	e8 f9 fe ff ff       	call   0x40b862
40b969:	eb 13                	jmp    0x40b97e
40b96b:	e8 e0 bf ff ff       	call   0x407950
40b970:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40b976:	e8 a1 a3 ff ff       	call   0x405d1c
40b97b:	83 c8 ff             	or     $0xffffffff,%eax
40b97e:	5e                   	pop    %esi
40b97f:	c9                   	leave
40b980:	c3                   	ret
40b981:	8b ff                	mov    %edi,%edi
40b983:	55                   	push   %ebp
40b984:	8b ec                	mov    %esp,%ebp
40b986:	6a ff                	push   $0xffffffff
40b988:	68 6d ef 40 00       	push   $0x40ef6d
40b98d:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40b993:	50                   	push   %eax
40b994:	83 ec 74             	sub    $0x74,%esp
40b997:	a1 14 60 41 00       	mov    0x416014,%eax
40b99c:	33 c5                	xor    %ebp,%eax
40b99e:	89 45 f0             	mov    %eax,-0x10(%ebp)
40b9a1:	53                   	push   %ebx
40b9a2:	56                   	push   %esi
40b9a3:	57                   	push   %edi
40b9a4:	50                   	push   %eax
40b9a5:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b9a8:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40b9ae:	8b 45 0c             	mov    0xc(%ebp),%eax
40b9b1:	8b d0                	mov    %eax,%edx
40b9b3:	8b 75 10             	mov    0x10(%ebp),%esi
40b9b6:	83 e0 3f             	and    $0x3f,%eax
40b9b9:	8b 5d 18             	mov    0x18(%ebp),%ebx
40b9bc:	6b c8 38             	imul   $0x38,%eax,%ecx
40b9bf:	c1 fa 06             	sar    $0x6,%edx
40b9c2:	89 75 a0             	mov    %esi,-0x60(%ebp)
40b9c5:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40b9c8:	89 55 bc             	mov    %edx,-0x44(%ebp)
40b9cb:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40b9d2:	89 4d b0             	mov    %ecx,-0x50(%ebp)
40b9d5:	8b 44 01 18          	mov    0x18(%ecx,%eax,1),%eax
40b9d9:	89 45 9c             	mov    %eax,-0x64(%ebp)
40b9dc:	8b 45 14             	mov    0x14(%ebp),%eax
40b9df:	03 c6                	add    %esi,%eax
40b9e1:	89 45 ac             	mov    %eax,-0x54(%ebp)
40b9e4:	ff 15 f8 f0 40 00    	call   *0x40f0f8
40b9ea:	80 7b 14 00          	cmpb   $0x0,0x14(%ebx)
40b9ee:	89 45 94             	mov    %eax,-0x6c(%ebp)