40a3c9:	e8 69 dd ff ff       	call   0x408137
40a3ce:	8b f0                	mov    %eax,%esi
40a3d0:	85 f6                	test   %esi,%esi
40a3d2:	79 0a                	jns    0x40a3de
40a3d4:	68 74 e9 44 00       	push   $0x44e974
40a3d9:	e9 50 02 00 00       	jmp    0x40a62e
40a3de:	33 f6                	xor    %esi,%esi
40a3e0:	e9 68 02 00 00       	jmp    0x40a64d
40a3e5:	85 f6                	test   %esi,%esi
40a3e7:	79 0a                	jns    0x40a3f3
40a3e9:	68 90 e9 44 00       	push   $0x44e990
40a3ee:	e9 3b 02 00 00       	jmp    0x40a62e
40a3f3:	8b 35 1c b0 44 00    	mov    0x44b01c,%esi
40a3f9:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a3fc:	50                   	push   %eax
40a3fd:	6a 00                	push   $0x0
40a3ff:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a402:	50                   	push   %eax
40a403:	6a 00                	push   $0x0
40a405:	ff 75 f0             	push   -0x10(%ebp)
40a408:	ff 75 f4             	push   -0xc(%ebp)
40a40b:	ff d6                	call   *%esi
40a40d:	83 f8 02             	cmp    $0x2,%eax
40a410:	75 16                	jne    0x40a428
40a412:	ff 75 f0             	push   -0x10(%ebp)
40a415:	ff 75 f8             	push   -0x8(%ebp)
40a418:	68 e4 e8 44 00       	push   $0x44e8e4
40a41d:	50                   	push   %eax
40a41e:	e8 f7 61 03 00       	call   0x44061a
40a423:	83 c4 10             	add    $0x10,%esp
40a426:	eb 97                	jmp    0x40a3bf
40a428:	85 c0                	test   %eax,%eax
40a42a:	74 32                	je     0x40a45e
40a42c:	0f b7 f0             	movzwl %ax,%esi
40a42f:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a435:	85 c0                	test   %eax,%eax
40a437:	0f 4e f0             	cmovle %eax,%esi
40a43a:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a43f:	85 f6                	test   %esi,%esi
40a441:	0f 49 f0             	cmovns %eax,%esi
40a444:	56                   	push   %esi
40a445:	68 6f 03 00 00       	push   $0x36f
40a44a:	68 c4 e1 44 00       	push   $0x44e1c4
40a44f:	e8 7f 93 ff ff       	call   0x4037d3
40a454:	68 b0 e9 44 00       	push   $0x44e9b0
40a459:	e9 d0 01 00 00       	jmp    0x40a62e
40a45e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a461:	6a 01                	push   $0x1
40a463:	83 c0 02             	add    $0x2,%eax
40a466:	50                   	push   %eax
40a467:	e8 68 94 ff ff       	call   0x4038d4
40a46c:	8b d8                	mov    %eax,%ebx
40a46e:	85 db                	test   %ebx,%ebx
40a470:	75 27                	jne    0x40a499
40a472:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40a477:	56                   	push   %esi
40a478:	68 72 03 00 00       	push   $0x372
40a47d:	68 c4 e1 44 00       	push   $0x44e1c4
40a482:	e8 4c 93 ff ff       	call   0x4037d3
40a487:	68 dc e9 44 00       	push   $0x44e9dc
40a48c:	56                   	push   %esi
40a48d:	e8 9d 5c 03 00       	call   0x44012f
40a492:	59                   	pop    %ecx
40a493:	59                   	pop    %ecx
40a494:	e9 a1 01 00 00       	jmp    0x40a63a
40a499:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a49c:	50                   	push   %eax
40a49d:	53                   	push   %ebx
40a49e:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a4a1:	50                   	push   %eax
40a4a2:	6a 00                	push   $0x0
40a4a4:	ff 75 f0             	push   -0x10(%ebp)
40a4a7:	ff 75 f4             	push   -0xc(%ebp)
40a4aa:	ff d6                	call   *%esi
40a4ac:	85 c0                	test   %eax,%eax
40a4ae:	74 32                	je     0x40a4e2
40a4b0:	0f b7 f0             	movzwl %ax,%esi
40a4b3:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a4b9:	85 c0                	test   %eax,%eax
40a4bb:	0f 4e f0             	cmovle %eax,%esi
40a4be:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a4c3:	85 f6                	test   %esi,%esi
40a4c5:	0f 49 f0             	cmovns %eax,%esi
40a4c8:	56                   	push   %esi
40a4c9:	68 75 03 00 00       	push   $0x375
40a4ce:	68 c4 e1 44 00       	push   $0x44e1c4
40a4d3:	e8 fb 92 ff ff       	call   0x4037d3
40a4d8:	68 1c e9 44 00       	push   $0x44e91c
40a4dd:	e9 4c 01 00 00       	jmp    0x40a62e
40a4e2:	8b 45 ec             	mov    -0x14(%ebp),%eax
40a4e5:	83 e8 01             	sub    $0x1,%eax
40a4e8:	0f 84 f4 00 00 00    	je     0x40a5e2
40a4ee:	83 e8 01             	sub    $0x1,%eax
40a4f1:	74 56                	je     0x40a549
40a4f3:	48                   	dec    %eax
40a4f4:	83 e8 01             	sub    $0x1,%eax
40a4f7:	74 43                	je     0x40a53c
40a4f9:	83 e8 07             	sub    $0x7,%eax
40a4fc:	74 1b                	je     0x40a519
40a4fe:	ff 75 ec             	push   -0x14(%ebp)
40a501:	be 01 40 00 80       	mov    $0x80004001,%esi
40a506:	68 58 ea 44 00       	push   $0x44ea58
40a50b:	56                   	push   %esi
40a50c:	e8 1e 5c 03 00       	call   0x44012f
40a511:	83 c4 0c             	add    $0xc,%esp
40a514:	e9 21 01 00 00       	jmp    0x40a63a
40a519:	83 7d fc 08          	cmpl   $0x8,-0x4(%ebp)
40a51d:	74 0a                	je     0x40a529
40a51f:	be ff ff 00 80       	mov    $0x8000ffff,%esi
40a524:	e9 11 01 00 00       	jmp    0x40a63a
40a529:	ff 73 04             	push   0x4(%ebx)
40a52c:	ff 33                	push   (%ebx)
40a52e:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a531:	50                   	push   %eax
40a532:	e8 79 5d 01 00       	call   0x4202b0
40a537:	e9 b2 00 00 00       	jmp    0x40a5ee
40a53c:	83 7d fc 04          	cmpl   $0x4,-0x4(%ebp)
40a540:	75 dd                	jne    0x40a51f
40a542:	8b 03                	mov    (%ebx),%eax
40a544:	99                   	cltd
40a545:	52                   	push   %edx
40a546:	50                   	push   %eax
40a547:	eb e5                	jmp    0x40a52e
40a549:	83 7f 28 00          	cmpl   $0x0,0x28(%edi)
40a54d:	0f 84 8f 00 00 00    	je     0x40a5e2
40a553:	ff 75 fc             	push   -0x4(%ebp)
40a556:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a559:	50                   	push   %eax
40a55a:	e8 7f 79 ff ff       	call   0x401ede
40a55f:	8b f0                	mov    %eax,%esi
40a561:	85 f6                	test   %esi,%esi
40a563:	79 0a                	jns    0x40a56f
40a565:	68 08 ea 44 00       	push   $0x44ea08
40a56a:	e9 bf 00 00 00       	jmp    0x40a62e
40a56f:	ff 75 fc             	push   -0x4(%ebp)
40a572:	c7 45 e4 02 00 00 00 	movl   $0x2,-0x1c(%ebp)
40a579:	ff 75 d4             	push   -0x2c(%ebp)
40a57c:	53                   	push   %ebx
40a57d:	ff 15 14 b1 44 00    	call   *0x44b114
40a583:	89 45 08             	mov    %eax,0x8(%ebp)
40a586:	3b 45 fc             	cmp    -0x4(%ebp),%eax
40a589:	76 65                	jbe    0x40a5f0
40a58b:	50                   	push   %eax
40a58c:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a58f:	50                   	push   %eax
40a590:	e8 49 79 ff ff       	call   0x401ede
40a595:	8b f0                	mov    %eax,%esi
40a597:	85 f6                	test   %esi,%esi
40a599:	78 ca                	js     0x40a565
40a59b:	ff 75 08             	push   0x8(%ebp)
40a59e:	ff 75 d4             	push   -0x2c(%ebp)
40a5a1:	53                   	push   %ebx
40a5a2:	ff 15 14 b1 44 00    	call   *0x44b114
40a5a8:	39 45 08             	cmp    %eax,0x8(%ebp)
40a5ab:	74 43                	je     0x40a5f0
40a5ad:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40a5b3:	0f b7 f0             	movzwl %ax,%esi
40a5b6:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40a5bc:	85 c0                	test   %eax,%eax
40a5be:	0f 4e f0             	cmovle %eax,%esi
40a5c1:	b8 05 40 00 80       	mov    $0x80004005,%eax
40a5c6:	85 f6                	test   %esi,%esi
40a5c8:	0f 49 f0             	cmovns %eax,%esi
40a5cb:	56                   	push   %esi
40a5cc:	68 96 03 00 00       	push   $0x396
40a5d1:	68 c4 e1 44 00       	push   $0x44e1c4
40a5d6:	e8 f8 91 ff ff       	call   0x4037d3
40a5db:	68 2c ea 44 00       	push   $0x44ea2c
40a5e0:	eb 4c                	jmp    0x40a62e
40a5e2:	6a 00                	push   $0x0
40a5e4:	53                   	push   %ebx
40a5e5:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a5e8:	50                   	push   %eax
40a5e9:	e8 06 5d 01 00       	call   0x4202f4
40a5ee:	8b f0                	mov    %eax,%esi
40a5f0:	85 f6                	test   %esi,%esi
40a5f2:	79 07                	jns    0x40a5fb
40a5f4:	68 8c ea 44 00       	push   $0x44ea8c
40a5f9:	eb 33                	jmp    0x40a62e
40a5fb:	ff 77 14             	push   0x14(%edi)
40a5fe:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a601:	50                   	push   %eax
40a602:	e8 b0 58 01 00       	call   0x41feb7
40a607:	8b f0                	mov    %eax,%esi
40a609:	85 f6                	test   %esi,%esi
40a60b:	79 07                	jns    0x40a614
40a60d:	68 ac ea 44 00       	push   $0x44eaac
40a612:	eb 1a                	jmp    0x40a62e
40a614:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a617:	50                   	push   %eax
40a618:	ff 77 04             	push   0x4(%edi)
40a61b:	ff 75 0c             	push   0xc(%ebp)
40a61e:	e8 14 db ff ff       	call   0x408137
40a623:	8b f0                	mov    %eax,%esi
40a625:	85 f6                	test   %esi,%esi
40a627:	79 24                	jns    0x40a64d
40a629:	68 18 d2 44 00       	push   $0x44d218
40a62e:	56                   	push   %esi
40a62f:	e8 fb 5a 03 00       	call   0x44012f
40a634:	59                   	pop    %ecx
40a635:	59                   	pop    %ecx
40a636:	85 f6                	test   %esi,%esi
40a638:	79 13                	jns    0x40a64d
40a63a:	56                   	push   %esi
40a63b:	ff 75 f8             	push   -0x8(%ebp)
40a63e:	68 cc ea 44 00       	push   $0x44eacc
40a643:	6a 02                	push   $0x2
40a645:	e8 d0 5f 03 00       	call   0x44061a
40a64a:	83 c4 10             	add    $0x10,%esp
40a64d:	ff 75 f8             	push   -0x8(%ebp)
40a650:	e8 3e 81 ff ff       	call   0x402793
40a655:	ff 75 f0             	push   -0x10(%ebp)
40a658:	e8 36 81 ff ff       	call   0x402793
40a65d:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a661:	74 0d                	je     0x40a670
40a663:	ff 75 f4             	push   -0xc(%ebp)
40a666:	ff 15 00 b0 44 00    	call   *0x44b000
40a66c:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a670:	85 db                	test   %ebx,%ebx
40a672:	74 06                	je     0x40a67a
40a674:	53                   	push   %ebx
40a675:	e8 1f 93 ff ff       	call   0x403999
40a67a:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a67d:	50                   	push   %eax
40a67e:	e8 16 5e 01 00       	call   0x420499
40a683:	5f                   	pop    %edi
40a684:	8b c6                	mov    %esi,%eax
40a686:	5e                   	pop    %esi
40a687:	5b                   	pop    %ebx
40a688:	8b e5                	mov    %ebp,%esp
40a68a:	5d                   	pop    %ebp
40a68b:	c2 08 00             	ret    $0x8
40a68e:	55                   	push   %ebp
40a68f:	8b ec                	mov    %esp,%ebp
40a691:	83 ec 0c             	sub    $0xc,%esp
40a694:	8b 45 08             	mov    0x8(%ebp),%eax
40a697:	53                   	push   %ebx
40a698:	33 db                	xor    %ebx,%ebx
40a69a:	56                   	push   %esi
40a69b:	8b cb                	mov    %ebx,%ecx
40a69d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40a6a0:	57                   	push   %edi
40a6a1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a6a4:	39 58 04             	cmp    %ebx,0x4(%eax)
40a6a7:	0f 86 37 01 00 00    	jbe    0x40a7e4
40a6ad:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a6b0:	8b d3                	mov    %ebx,%edx
40a6b2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a6b5:	8b 30                	mov    (%eax),%esi
40a6b7:	03 f2                	add    %edx,%esi
40a6b9:	8b 46 08             	mov    0x8(%esi),%eax
40a6bc:	85 c0                	test   %eax,%eax
40a6be:	74 36                	je     0x40a6f6
40a6c0:	66 39 18             	cmp    %bx,(%eax)
40a6c3:	74 31                	je     0x40a6f6
40a6c5:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a6c8:	51                   	push   %ecx
40a6c9:	50                   	push   %eax
40a6ca:	57                   	push   %edi
40a6cb:	e8 e4 f0 ff ff       	call   0x4097b4
40a6d0:	8b d8                	mov    %eax,%ebx
40a6d2:	81 fb 0d 00 07 80    	cmp    $0x8007000d,%ebx
40a6d8:	0f 84 d4 00 00 00    	je     0x40a7b2
40a6de:	85 db                	test   %ebx,%ebx
40a6e0:	0f 88 eb 00 00 00    	js     0x40a7d1
40a6e6:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a6ea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a6ed:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a6f0:	0f 84 c2 00 00 00    	je     0x40a7b8
40a6f6:	8b 46 0c             	mov    0xc(%esi),%eax
40a6f9:	83 e8 01             	sub    $0x1,%eax
40a6fc:	0f 84 93 00 00 00    	je     0x40a795
40a702:	83 e8 01             	sub    $0x1,%eax
40a705:	74 61                	je     0x40a768
40a707:	83 e8 01             	sub    $0x1,%eax
40a70a:	74 3d                	je     0x40a749
40a70c:	83 e8 01             	sub    $0x1,%eax
40a70f:	74 2f                	je     0x40a740
40a711:	83 e8 01             	sub    $0x1,%eax
40a714:	74 21                	je     0x40a737
40a716:	83 e8 01             	sub    $0x1,%eax
40a719:	0f 85 99 00 00 00    	jne    0x40a7b8
40a71f:	68 01 40 00 80       	push   $0x80004001
40a724:	ff 36                	push   (%esi)
40a726:	68 a4 ed 44 00       	push   $0x44eda4
40a72b:	6a 02                	push   $0x2
40a72d:	e8 e8 5e 03 00       	call   0x44061a
40a732:	83 c4 10             	add    $0x10,%esp
40a735:	eb 7b                	jmp    0x40a7b2
40a737:	57                   	push   %edi
40a738:	56                   	push   %esi
40a739:	e8 ed f7 ff ff       	call   0x409f2b
40a73e:	eb 72                	jmp    0x40a7b2
40a740:	57                   	push   %edi
40a741:	56                   	push   %esi
40a742:	e8 6d f6 ff ff       	call   0x409db4
40a747:	eb 69                	jmp    0x40a7b2
40a749:	8b 46 10             	mov    0x10(%esi),%eax
40a74c:	83 e8 01             	sub    $0x1,%eax
40a74f:	74 0e                	je     0x40a75f
40a751:	83 e8 01             	sub    $0x1,%eax
40a754:	75 62                	jne    0x40a7b8
40a756:	57                   	push   %edi
40a757:	56                   	push   %esi
40a758:	e8 b4 fb ff ff       	call   0x40a311
40a75d:	eb 53                	jmp    0x40a7b2
40a75f:	57                   	push   %edi
40a760:	56                   	push   %esi
40a761:	e8 17 fa ff ff       	call   0x40a17d
40a766:	eb 4a                	jmp    0x40a7b2
40a768:	8b 46 10             	mov    0x10(%esi),%eax
40a76b:	83 e8 01             	sub    $0x1,%eax
40a76e:	74 1c                	je     0x40a78c
40a770:	83 e8 01             	sub    $0x1,%eax
40a773:	74 0e                	je     0x40a783
40a775:	83 e8 01             	sub    $0x1,%eax
40a778:	75 3e                	jne    0x40a7b8
40a77a:	57                   	push   %edi
40a77b:	56                   	push   %esi
40a77c:	e8 b8 f4 ff ff       	call   0x409c39
40a781:	eb 2f                	jmp    0x40a7b2
40a783:	57                   	push   %edi
40a784:	56                   	push   %esi
40a785:	e8 79 f5 ff ff       	call   0x409d03
40a78a:	eb 26                	jmp    0x40a7b2
40a78c:	57                   	push   %edi
40a78d:	56                   	push   %esi
40a78e:	e8 ac f3 ff ff       	call   0x409b3f
40a793:	eb 1d                	jmp    0x40a7b2
40a795:	8b 46 10             	mov    0x10(%esi),%eax
40a798:	83 e8 01             	sub    $0x1,%eax
40a79b:	74 0e                	je     0x40a7ab
40a79d:	83 e8 01             	sub    $0x1,%eax
40a7a0:	75 16                	jne    0x40a7b8
40a7a2:	57                   	push   %edi
40a7a3:	56                   	push   %esi
40a7a4:	e8 c4 f2 ff ff       	call   0x409a6d
40a7a9:	eb 07                	jmp    0x40a7b2
40a7ab:	57                   	push   %edi
40a7ac:	56                   	push   %esi
40a7ad:	e8 e9 f1 ff ff       	call   0x40999b
40a7b2:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a7b5:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a7b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a7bb:	41                   	inc    %ecx
40a7bc:	83 c2 2c             	add    $0x2c,%edx
40a7bf:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a7c2:	33 db                	xor    %ebx,%ebx
40a7c4:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a7c7:	3b 48 04             	cmp    0x4(%eax),%ecx