40b495:	2b c2                	sub    %edx,%eax
40b497:	8b d6                	mov    %esi,%edx
40b499:	83 e0 01             	and    $0x1,%eax
40b49c:	2b d0                	sub    %eax,%edx
40b49e:	4a                   	dec    %edx
40b49f:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b4a3:	74 0a                	je     0x40b4af
40b4a5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40b4a8:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40b4af:	8b c2                	mov    %edx,%eax
40b4b1:	5e                   	pop    %esi
40b4b2:	c9                   	leave
40b4b3:	c3                   	ret
40b4b4:	8b ff                	mov    %edi,%edi
40b4b6:	55                   	push   %ebp
40b4b7:	8b ec                	mov    %esp,%ebp
40b4b9:	51                   	push   %ecx
40b4ba:	51                   	push   %ecx
40b4bb:	a1 14 60 41 00       	mov    0x416014,%eax
40b4c0:	33 c5                	xor    %ebp,%eax
40b4c2:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b4c5:	53                   	push   %ebx
40b4c6:	56                   	push   %esi
40b4c7:	57                   	push   %edi
40b4c8:	8b 7d 18             	mov    0x18(%ebp),%edi
40b4cb:	85 ff                	test   %edi,%edi
40b4cd:	7e 14                	jle    0x40b4e3
40b4cf:	57                   	push   %edi
40b4d0:	ff 75 14             	push   0x14(%ebp)
40b4d3:	e8 61 13 00 00       	call   0x40c839
40b4d8:	59                   	pop    %ecx
40b4d9:	3b c7                	cmp    %edi,%eax
40b4db:	59                   	pop    %ecx
40b4dc:	8d 78 01             	lea    0x1(%eax),%edi
40b4df:	7c 02                	jl     0x40b4e3
40b4e1:	8b f8                	mov    %eax,%edi
40b4e3:	8b 5d 24             	mov    0x24(%ebp),%ebx
40b4e6:	85 db                	test   %ebx,%ebx
40b4e8:	75 0b                	jne    0x40b4f5
40b4ea:	8b 45 08             	mov    0x8(%ebp),%eax
40b4ed:	8b 00                	mov    (%eax),%eax
40b4ef:	8b 58 08             	mov    0x8(%eax),%ebx
40b4f2:	89 5d 24             	mov    %ebx,0x24(%ebp)
40b4f5:	33 c0                	xor    %eax,%eax
40b4f7:	39 45 28             	cmp    %eax,0x28(%ebp)
40b4fa:	6a 00                	push   $0x0
40b4fc:	6a 00                	push   $0x0
40b4fe:	0f 95 c0             	setne  %al
40b501:	57                   	push   %edi
40b502:	ff 75 14             	push   0x14(%ebp)
40b505:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
40b50c:	50                   	push   %eax
40b50d:	53                   	push   %ebx
40b50e:	e8 71 d8 ff ff       	call   0x408d84
40b513:	83 c4 18             	add    $0x18,%esp
40b516:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b519:	85 c0                	test   %eax,%eax
40b51b:	0f 84 70 01 00 00    	je     0x40b691
40b521:	03 c0                	add    %eax,%eax
40b523:	8d 48 08             	lea    0x8(%eax),%ecx
40b526:	3b c1                	cmp    %ecx,%eax
40b528:	1b c0                	sbb    %eax,%eax
40b52a:	23 c1                	and    %ecx,%eax
40b52c:	0f 84 52 01 00 00    	je     0x40b684
40b532:	3d 00 04 00 00       	cmp    $0x400,%eax
40b537:	77 17                	ja     0x40b550
40b539:	e8 12 38 00 00       	call   0x40ed50
40b53e:	8b f4                	mov    %esp,%esi
40b540:	85 f6                	test   %esi,%esi
40b542:	0f 84 3e 01 00 00    	je     0x40b686
40b548:	c7 06 cc cc 00 00    	movl   $0xcccc,(%esi)
40b54e:	eb 17                	jmp    0x40b567
40b550:	50                   	push   %eax
40b551:	e8 d5 c2 ff ff       	call   0x40782b
40b556:	8b f0                	mov    %eax,%esi
40b558:	59                   	pop    %ecx
40b559:	85 f6                	test   %esi,%esi
40b55b:	0f 84 25 01 00 00    	je     0x40b686
40b561:	c7 06 dd dd 00 00    	movl   $0xdddd,(%esi)
40b567:	83 c6 08             	add    $0x8,%esi
40b56a:	85 f6                	test   %esi,%esi
40b56c:	0f 84 14 01 00 00    	je     0x40b686
40b572:	ff 75 f8             	push   -0x8(%ebp)
40b575:	56                   	push   %esi
40b576:	57                   	push   %edi
40b577:	ff 75 14             	push   0x14(%ebp)
40b57a:	6a 01                	push   $0x1
40b57c:	53                   	push   %ebx
40b57d:	e8 02 d8 ff ff       	call   0x408d84
40b582:	83 c4 18             	add    $0x18,%esp
40b585:	85 c0                	test   %eax,%eax
40b587:	0f 84 f9 00 00 00    	je     0x40b686
40b58d:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b590:	33 c0                	xor    %eax,%eax
40b592:	50                   	push   %eax
40b593:	50                   	push   %eax
40b594:	50                   	push   %eax
40b595:	50                   	push   %eax
40b596:	50                   	push   %eax
40b597:	57                   	push   %edi
40b598:	56                   	push   %esi
40b599:	ff 75 10             	push   0x10(%ebp)
40b59c:	ff 75 0c             	push   0xc(%ebp)
40b59f:	e8 32 e9 ff ff       	call   0x409ed6
40b5a4:	8b d8                	mov    %eax,%ebx
40b5a6:	85 db                	test   %ebx,%ebx
40b5a8:	0f 84 d8 00 00 00    	je     0x40b686
40b5ae:	ba 00 04 00 00       	mov    $0x400,%edx
40b5b3:	85 55 10             	test   %edx,0x10(%ebp)
40b5b6:	74 38                	je     0x40b5f0
40b5b8:	8b 45 20             	mov    0x20(%ebp),%eax
40b5bb:	85 c0                	test   %eax,%eax
40b5bd:	0f 84 c5 00 00 00    	je     0x40b688
40b5c3:	3b d8                	cmp    %eax,%ebx
40b5c5:	0f 8f bb 00 00 00    	jg     0x40b686
40b5cb:	33 c9                	xor    %ecx,%ecx
40b5cd:	51                   	push   %ecx
40b5ce:	51                   	push   %ecx
40b5cf:	51                   	push   %ecx
40b5d0:	50                   	push   %eax
40b5d1:	ff 75 1c             	push   0x1c(%ebp)
40b5d4:	57                   	push   %edi
40b5d5:	56                   	push   %esi
40b5d6:	ff 75 10             	push   0x10(%ebp)
40b5d9:	ff 75 0c             	push   0xc(%ebp)
40b5dc:	e8 f5 e8 ff ff       	call   0x409ed6
40b5e1:	8b d8                	mov    %eax,%ebx
40b5e3:	85 db                	test   %ebx,%ebx
40b5e5:	0f 85 9d 00 00 00    	jne    0x40b688
40b5eb:	e9 96 00 00 00       	jmp    0x40b686
40b5f0:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40b5f3:	8d 48 08             	lea    0x8(%eax),%ecx
40b5f6:	3b c1                	cmp    %ecx,%eax
40b5f8:	1b c0                	sbb    %eax,%eax
40b5fa:	23 c1                	and    %ecx,%eax
40b5fc:	74 7b                	je     0x40b679
40b5fe:	3b c2                	cmp    %edx,%eax
40b600:	77 13                	ja     0x40b615
40b602:	e8 49 37 00 00       	call   0x40ed50
40b607:	8b fc                	mov    %esp,%edi
40b609:	85 ff                	test   %edi,%edi
40b60b:	74 6e                	je     0x40b67b
40b60d:	c7 07 cc cc 00 00    	movl   $0xcccc,(%edi)
40b613:	eb 13                	jmp    0x40b628
40b615:	50                   	push   %eax
40b616:	e8 10 c2 ff ff       	call   0x40782b
40b61b:	8b f8                	mov    %eax,%edi
40b61d:	59                   	pop    %ecx
40b61e:	85 ff                	test   %edi,%edi
40b620:	74 59                	je     0x40b67b
40b622:	c7 07 dd dd 00 00    	movl   $0xdddd,(%edi)
40b628:	83 c7 08             	add    $0x8,%edi
40b62b:	85 ff                	test   %edi,%edi
40b62d:	74 4c                	je     0x40b67b
40b62f:	33 c0                	xor    %eax,%eax
40b631:	50                   	push   %eax
40b632:	50                   	push   %eax
40b633:	50                   	push   %eax
40b634:	53                   	push   %ebx
40b635:	57                   	push   %edi
40b636:	ff 75 f8             	push   -0x8(%ebp)
40b639:	56                   	push   %esi
40b63a:	ff 75 10             	push   0x10(%ebp)
40b63d:	ff 75 0c             	push   0xc(%ebp)
40b640:	e8 91 e8 ff ff       	call   0x409ed6
40b645:	85 c0                	test   %eax,%eax
40b647:	74 32                	je     0x40b67b
40b649:	33 c0                	xor    %eax,%eax
40b64b:	50                   	push   %eax
40b64c:	50                   	push   %eax
40b64d:	39 45 20             	cmp    %eax,0x20(%ebp)
40b650:	75 1f                	jne    0x40b671
40b652:	50                   	push   %eax
40b653:	50                   	push   %eax
40b654:	53                   	push   %ebx
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