40a543:	85 c0                	test   %eax,%eax
40a545:	75 12                	jne    0x40a559
40a547:	83 c7 02             	add    $0x2,%edi
40a54a:	0f b7 07             	movzwl (%edi),%eax
40a54d:	8b c8                	mov    %eax,%ecx
40a54f:	66 85 c0             	test   %ax,%ax
40a552:	75 e7                	jne    0x40a53b
40a554:	e9 6a 22 01 00       	jmp    0x41c7c3
40a559:	8b 44 24 18          	mov    0x18(%esp),%eax
40a55d:	8b ce                	mov    %esi,%ecx
40a55f:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
40a563:	89 44 24 60          	mov    %eax,0x60(%esp)
40a567:	33 c0                	xor    %eax,%eax
40a569:	89 7c 24 64          	mov    %edi,0x64(%esp)
40a56d:	89 44 24 5c          	mov    %eax,0x5c(%esp)
40a571:	8d 51 02             	lea    0x2(%ecx),%edx
40a574:	66 8b 01             	mov    (%ecx),%ax
40a577:	83 c1 02             	add    $0x2,%ecx
40a57a:	66 3b 44 24 24       	cmp    0x24(%esp),%ax
40a57f:	75 f3                	jne    0x40a574
40a581:	2b ca                	sub    %edx,%ecx
40a583:	b8 00 20 00 00       	mov    $0x2000,%eax
40a588:	d1 f9                	sar    $1,%ecx
40a58a:	3b c8                	cmp    %eax,%ecx
40a58c:	0f 83 e2 21 01 00    	jae    0x41c774
40a592:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40a596:	8b d0                	mov    %eax,%edx
40a598:	56                   	push   %esi
40a599:	e8 02 4e 00 00       	call   0x40f3a0
40a59e:	68 4c 23 40 00       	push   $0x40234c
40a5a3:	ba 00 20 00 00       	mov    $0x2000,%edx
40a5a8:	8b cf                	mov    %edi,%ecx
40a5aa:	e8 f1 4d 00 00       	call   0x40f3a0
40a5af:	8b 44 24 20          	mov    0x20(%esp),%eax
40a5b3:	8d 4c 24 28          	lea    0x28(%esp),%ecx
40a5b7:	66 89 03             	mov    %ax,(%ebx)
40a5ba:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40a5be:	8b d3                	mov    %ebx,%edx
40a5c0:	68 03 20 00 00       	push   $0x2003
40a5c5:	e8 46 4e 00 00       	call   0x40f410
40a5ca:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40a5ce:	8b f8                	mov    %eax,%edi
40a5d0:	e8 8b 36 00 00       	call   0x40dc60
40a5d5:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40a5d9:	e8 82 36 00 00       	call   0x40dc60
40a5de:	85 ff                	test   %edi,%edi
40a5e0:	0f 84 2e fe ff ff    	je     0x40a414
40a5e6:	e9 ad 21 01 00       	jmp    0x41c798
40a5eb:	83 f9 66             	cmp    $0x66,%ecx
40a5ee:	0f 84 b9 1f 01 00    	je     0x41c5ad
40a5f4:	83 f9 76             	cmp    $0x76,%ecx
40a5f7:	0f 84 0d 20 01 00    	je     0x41c60a
40a5fd:	83 f9 74             	cmp    $0x74,%ecx
40a600:	0f 84 73 20 01 00    	je     0x41c679
40a606:	8b 55 0c             	mov    0xc(%ebp),%edx
40a609:	8d 7e 04             	lea    0x4(%esi),%edi
40a60c:	8b c6                	mov    %esi,%eax
40a60e:	2b c3                	sub    %ebx,%eax
40a610:	d1 f8                	sar    $1,%eax
40a612:	2b d0                	sub    %eax,%edx
40a614:	83 f9 73             	cmp    $0x73,%ecx
40a617:	75 05                	jne    0x40a61e
40a619:	c6 44 24 0e 01       	movb   $0x1,0xe(%esp)
40a61e:	57                   	push   %edi
40a61f:	8b ce                	mov    %esi,%ecx
40a621:	e8 7a 4d 00 00       	call   0x40f3a0
40a626:	8b 7c 24 10          	mov    0x10(%esp),%edi
40a62a:	e9 5f fc ff ff       	jmp    0x40a28e
40a62f:	85 c9                	test   %ecx,%ecx
40a631:	74 0b                	je     0x40a63e
40a633:	52                   	push   %edx
40a634:	51                   	push   %ecx
40a635:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40a63b:	59                   	pop    %ecx
40a63c:	59                   	pop    %ecx
40a63d:	c3                   	ret
40a63e:	33 c0                	xor    %eax,%eax
40a640:	c3                   	ret
40a641:	8b ff                	mov    %edi,%edi
40a643:	55                   	push   %ebp
40a644:	8b ec                	mov    %esp,%ebp
40a646:	51                   	push   %ecx
40a647:	56                   	push   %esi
40a648:	33 c0                	xor    %eax,%eax
40a64a:	8b f1                	mov    %ecx,%esi
40a64c:	57                   	push   %edi
40a64d:	38 86 0c 02 00 00    	cmp    %al,0x20c(%esi)
40a653:	0f 95 c0             	setne  %al
40a656:	48                   	dec    %eax
40a657:	25 1d 81 ff ff       	and    $0xffff811d,%eax
40a65c:	05 e7 7f 00 00       	add    $0x7fe7,%eax
40a661:	50                   	push   %eax
40a662:	e8 89 3d 00 00       	call   0x40e3f0
40a667:	8b f8                	mov    %eax,%edi
40a669:	85 ff                	test   %edi,%edi
40a66b:	0f 88 2d 22 01 00    	js     0x41c89e
40a671:	8b 8e 08 02 00 00    	mov    0x208(%esi),%ecx
40a677:	85 c9                	test   %ecx,%ecx
40a679:	74 21                	je     0x40a69c
40a67b:	ff 75 08             	push   0x8(%ebp)
40a67e:	8b 96 10 02 00 00    	mov    0x210(%esi),%edx
40a684:	e8 17 4d 00 00       	call   0x40f3a0
40a689:	8b f0                	mov    %eax,%esi
40a68b:	85 f6                	test   %esi,%esi
40a68d:	0f 88 23 22 01 00    	js     0x41c8b6
40a693:	8b c6                	mov    %esi,%eax
40a695:	5f                   	pop    %edi
40a696:	5e                   	pop    %esi
40a697:	59                   	pop    %ecx
40a698:	5d                   	pop    %ebp
40a699:	c2 04 00             	ret    $0x4
40a69c:	8b ce                	mov    %esi,%ecx
40a69e:	eb db                	jmp    0x40a67b
40a6a0:	8b ff                	mov    %edi,%edi
40a6a2:	53                   	push   %ebx
40a6a3:	56                   	push   %esi
40a6a4:	57                   	push   %edi
40a6a5:	68 f0 4a 44 00       	push   $0x444af0
40a6aa:	33 db                	xor    %ebx,%ebx
40a6ac:	68 2c 23 40 00       	push   $0x40232c
40a6b1:	8b fb                	mov    %ebx,%edi
40a6b3:	ff 15 40 a4 44 00    	call   *0x44a440
40a6b9:	59                   	pop    %ecx
40a6ba:	59                   	pop    %ecx
40a6bb:	85 c0                	test   %eax,%eax
40a6bd:	0f 84 09 22 01 00    	je     0x41c8cc
40a6c3:	6a 2c                	push   $0x2c
40a6c5:	59                   	pop    %ecx
40a6c6:	e8 c5 14 00 00       	call   0x40bb90
40a6cb:	8b f0                	mov    %eax,%esi
40a6cd:	85 ff                	test   %edi,%edi
40a6cf:	0f 85 07 22 01 00    	jne    0x41c8dc
40a6d5:	33 c9                	xor    %ecx,%ecx
40a6d7:	e8 94 25 00 00       	call   0x40cc70
40a6dc:	6a 2c                	push   $0x2c
40a6de:	5a                   	pop    %edx
40a6df:	e8 23 f2 ff ff       	call   0x409907
40a6e4:	84 c0                	test   %al,%al
40a6e6:	0f 85 0f 22 01 00    	jne    0x41c8fb
40a6ec:	8b fb                	mov    %ebx,%edi
40a6ee:	38 1d 55 67 43 00    	cmp    %bl,0x436755
40a6f4:	74 1a                	je     0x40a710
40a6f6:	68 6c 22 40 00       	push   $0x40226c
40a6fb:	68 f0 4a 44 00       	push   $0x444af0
40a700:	ff 15 40 a4 44 00    	call   *0x44a440
40a706:	59                   	pop    %ecx
40a707:	59                   	pop    %ecx
40a708:	85 c0                	test   %eax,%eax
40a70a:	0f 84 a7 00 00 00    	je     0x40a7b7
40a710:	53                   	push   %ebx
40a711:	33 d2                	xor    %edx,%edx
40a713:	33 c9                	xor    %ecx,%ecx
40a715:	e8 f6 27 00 00       	call   0x40cf10
40a71a:	33 c9                	xor    %ecx,%ecx
40a71c:	e8 23 5d 00 00       	call   0x410444
40a721:	89 46 3c             	mov    %eax,0x3c(%esi)
40a724:	85 c0                	test   %eax,%eax
40a726:	74 08                	je     0x40a730
40a728:	85 ff                	test   %edi,%edi
40a72a:	0f 85 8f 00 00 00    	jne    0x40a7bf
40a730:	6a 2c                	push   $0x2c
40a732:	59                   	pop    %ecx
40a733:	e8 8c 01 00 00       	call   0x40a8c4
40a738:	89 46 40             	mov    %eax,0x40(%esi)
40a73b:	85 c0                	test   %eax,%eax
40a73d:	0f 84 c6 21 01 00    	je     0x41c909
40a743:	a1 cc 65 43 00       	mov    0x4365cc,%eax
40a748:	66 39 18             	cmp    %bx,(%eax)
40a74b:	74 28                	je     0x40a775
40a74d:	33 c9                	xor    %ecx,%ecx
40a74f:	e8 1c 25 00 00       	call   0x40cc70
40a754:	bf f0 4a 44 00       	mov    $0x444af0,%edi
40a759:	57                   	push   %edi
40a75a:	68 74 22 40 00       	push   $0x402274
40a75f:	ff 15 40 a4 44 00    	call   *0x44a440
40a765:	59                   	pop    %ecx
40a766:	59                   	pop    %ecx
40a767:	85 c0                	test   %eax,%eax
40a769:	74 10                	je     0x40a77b
40a76b:	53                   	push   %ebx
40a76c:	33 d2                	xor    %edx,%edx
40a76e:	33 c9                	xor    %ecx,%ecx
40a770:	e8 9b 27 00 00       	call   0x40cf10
40a775:	5f                   	pop    %edi
40a776:	8b c6                	mov    %esi,%eax
40a778:	5e                   	pop    %esi
40a779:	5b                   	pop    %ebx
40a77a:	c3                   	ret
40a77b:	a1 fc 66 43 00       	mov    0x4366fc,%eax
40a780:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
40a783:	e8 48 35 00 00       	call   0x40dcd0
40a788:	85 c0                	test   %eax,%eax
40a78a:	0f 84 83 21 01 00    	je     0x41c913
40a790:	8b 15 fc 66 43 00    	mov    0x4366fc,%edx
40a796:	8b c8                	mov    %eax,%ecx
40a798:	57                   	push   %edi
40a799:	89 46 44             	mov    %eax,0x44(%esi)
40a79c:	e8 ff 4b 00 00       	call   0x40f3a0
40a7a1:	6a 2c                	push   $0x2c
40a7a3:	59                   	pop    %ecx
40a7a4:	e8 1b 01 00 00       	call   0x40a8c4
40a7a9:	89 46 48             	mov    %eax,0x48(%esi)
40a7ac:	85 c0                	test   %eax,%eax
40a7ae:	75 c5                	jne    0x40a775
40a7b0:	e8 a4 e1 01 00       	call   0x428959
40a7b5:	eb be                	jmp    0x40a775
40a7b7:	33 ff                	xor    %edi,%edi
40a7b9:	47                   	inc    %edi
40a7ba:	e9 5b ff ff ff       	jmp    0x40a71a
40a7bf:	83 38 38             	cmpl   $0x38,(%eax)
40a7c2:	74 0c                	je     0x40a7d0
40a7c4:	c7 40 40 02 00 00 00 	movl   $0x2,0x40(%eax)
40a7cb:	e9 60 ff ff ff       	jmp    0x40a730
40a7d0:	8b 40 3c             	mov    0x3c(%eax),%eax
40a7d3:	eb ef                	jmp    0x40a7c4
40a7d5:	8b d1                	mov    %ecx,%edx
40a7d7:	56                   	push   %esi
40a7d8:	8d 72 02             	lea    0x2(%edx),%esi
40a7db:	66 8b 02             	mov    (%edx),%ax
40a7de:	83 c2 02             	add    $0x2,%edx
40a7e1:	66 85 c0             	test   %ax,%ax
40a7e4:	75 f5                	jne    0x40a7db
40a7e6:	2b d6                	sub    %esi,%edx
40a7e8:	8d 41 02             	lea    0x2(%ecx),%eax
40a7eb:	d1 fa                	sar    $1,%edx
40a7ed:	5e                   	pop    %esi
40a7ee:	8d 04 50             	lea    (%eax,%edx,2),%eax
40a7f1:	c3                   	ret
40a7f2:	cc                   	int3
40a7f3:	cc                   	int3
40a7f4:	cc                   	int3
40a7f5:	cc                   	int3
40a7f6:	cc                   	int3
40a7f7:	cc                   	int3
40a7f8:	cc                   	int3
40a7f9:	cc                   	int3
40a7fa:	cc                   	int3
40a7fb:	cc                   	int3
40a7fc:	cc                   	int3
40a7fd:	cc                   	int3
40a7fe:	cc                   	int3
40a7ff:	cc                   	int3
40a800:	8b ff                	mov    %edi,%edi
40a802:	55                   	push   %ebp
40a803:	8b ec                	mov    %esp,%ebp
40a805:	83 ec 08             	sub    $0x8,%esp
40a808:	53                   	push   %ebx
40a809:	56                   	push   %esi
40a80a:	57                   	push   %edi
40a80b:	8b f9                	mov    %ecx,%edi
40a80d:	8d 04 7f             	lea    (%edi,%edi,2),%eax
40a810:	8b 34 c5 90 16 40 00 	mov    0x401690(,%eax,8),%esi
40a817:	8b 1c c5 8c 16 40 00 	mov    0x40168c(,%eax,8),%ebx
40a81e:	8b 04 c5 94 16 40 00 	mov    0x401694(,%eax,8),%eax
40a825:	89 75 fc             	mov    %esi,-0x4(%ebp)
40a828:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a82b:	85 d2                	test   %edx,%edx
40a82d:	74 40                	je     0x40a86f
40a82f:	0f b7 02             	movzwl (%edx),%eax
40a832:	66 85 c0             	test   %ax,%ax
40a835:	74 38                	je     0x40a86f
40a837:	8b c8                	mov    %eax,%ecx
40a839:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a840:	66 83 f9 2f          	cmp    $0x2f,%cx
40a844:	74 34                	je     0x40a87a
40a846:	83 ff 09             	cmp    $0x9,%edi
40a849:	74 24                	je     0x40a86f
40a84b:	8b c2                	mov    %edx,%eax
40a84d:	8d 70 02             	lea    0x2(%eax),%esi
40a850:	66 8b 08             	mov    (%eax),%cx
40a853:	83 c0 02             	add    $0x2,%eax
40a856:	66 85 c9             	test   %cx,%cx
40a859:	75 f5                	jne    0x40a850
40a85b:	2b c6                	sub    %esi,%eax
40a85d:	d1 f8                	sar    $1,%eax
40a85f:	8d 14 42             	lea    (%edx,%eax,2),%edx
40a862:	83 c2 02             	add    $0x2,%edx
40a865:	0f b7 02             	movzwl (%edx),%eax
40a868:	8b c8                	mov    %eax,%ecx
40a86a:	66 85 c0             	test   %ax,%ax
40a86d:	75 d1                	jne    0x40a840
40a86f:	32 c0                	xor    %al,%al
40a871:	5f                   	pop    %edi
40a872:	5e                   	pop    %esi
40a873:	5b                   	pop    %ebx
40a874:	8b e5                	mov    %ebp,%esp
40a876:	5d                   	pop    %ebp
40a877:	c2 04 00             	ret    $0x4
40a87a:	66 83 7a 04 3f       	cmpw   $0x3f,0x4(%edx)
40a87f:	0f 84 a1 20 01 00    	je     0x41c926
40a885:	8b ca                	mov    %edx,%ecx
40a887:	8d 71 02             	lea    0x2(%ecx),%esi
40a88a:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40a890:	66 8b 01             	mov    (%ecx),%ax
40a893:	83 c1 02             	add    $0x2,%ecx
40a896:	66 85 c0             	test   %ax,%ax
40a899:	75 f5                	jne    0x40a890
40a89b:	2b ce                	sub    %esi,%ecx
40a89d:	d1 f9                	sar    $1,%ecx
40a89f:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40a8a2:	83 c2 02             	add    $0x2,%edx
40a8a5:	66 39 02             	cmp    %ax,(%edx)
40a8a8:	74 bb                	je     0x40a865
40a8aa:	8b ca                	mov    %edx,%ecx
40a8ac:	8d 71 02             	lea    0x2(%ecx),%esi
40a8af:	90                   	nop
40a8b0:	66 8b 01             	mov    (%ecx),%ax
40a8b3:	83 c1 02             	add    $0x2,%ecx
40a8b6:	66 85 c0             	test   %ax,%ax
40a8b9:	75 f5                	jne    0x40a8b0
40a8bb:	2b ce                	sub    %esi,%ecx
40a8bd:	d1 f9                	sar    $1,%ecx
40a8bf:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40a8c2:	eb 9e                	jmp    0x40a862
40a8c4:	8b ff                	mov    %edi,%edi
40a8c6:	55                   	push   %ebp
40a8c7:	8b ec                	mov    %esp,%ebp
40a8c9:	83 e4 f8             	and    $0xfffffff8,%esp
40a8cc:	51                   	push   %ecx
40a8cd:	a1 f8 66 43 00       	mov    0x4366f8,%eax
40a8d2:	53                   	push   %ebx
40a8d3:	8b d9                	mov    %ecx,%ebx
40a8d5:	88 98 f8 65 43 00    	mov    %bl,0x4365f8(%eax)
40a8db:	40                   	inc    %eax
40a8dc:	a3 f8 66 43 00       	mov    %eax,0x4366f8
40a8e1:	83 fb 33             	cmp    $0x33,%ebx
40a8e4:	74 3b                	je     0x40a921
40a8e6:	6a 08                	push   $0x8
40a8e8:	59                   	pop    %ecx
40a8e9:	c7 05 d0 65 43 00 01 	movl   $0x1,0x4365d0
40a8f0:	00 00 00
40a8f3:	e8 78 23 00 00       	call   0x40cc70
40a8f8:	83 25 d0 65 43 00 00 	andl   $0x0,0x4365d0
40a8ff:	83 3d 00 67 43 00 00 	cmpl   $0x0,0x436700
40a906:	0f 84 ae d7 00 00    	je     0x4180ba
40a90c:	e8 9f 11 00 00       	call   0x40bab0
40a911:	ff 0d f8 66 43 00    	decl   0x4366f8
40a917:	83 fb 33             	cmp    $0x33,%ebx
40a91a:	74 0d                	je     0x40a929
40a91c:	5b                   	pop    %ebx
40a91d:	8b e5                	mov    %ebp,%esp
40a91f:	5d                   	pop    %ebp
40a920:	c3                   	ret
40a921:	ff 05 f0 65 43 00    	incl   0x4365f0
40a927:	eb bd                	jmp    0x40a8e6
40a929:	ff 0d f0 65 43 00    	decl   0x4365f0
40a92f:	eb eb                	jmp    0x40a91c
40a931:	8b ff                	mov    %edi,%edi
40a933:	56                   	push   %esi
40a934:	33 c9                	xor    %ecx,%ecx