40d5c7:	8b 46 04             	mov    0x4(%esi),%eax
40d5ca:	ff 70 50             	push   0x50(%eax)
40d5cd:	ff 15 38 b1 44 00    	call   *0x44b138
40d5d3:	89 46 0c             	mov    %eax,0xc(%esi)
40d5d6:	85 c0                	test   %eax,%eax
40d5d8:	75 32                	jne    0x40d60c
40d5da:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d5e0:	0f b7 f0             	movzwl %ax,%esi
40d5e3:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40d5e9:	85 c0                	test   %eax,%eax
40d5eb:	0f 4e f0             	cmovle %eax,%esi
40d5ee:	b8 05 40 00 80       	mov    $0x80004005,%eax
40d5f3:	85 f6                	test   %esi,%esi
40d5f5:	0f 49 f0             	cmovns %eax,%esi
40d5f8:	56                   	push   %esi
40d5f9:	6a 59                	push   $0x59
40d5fb:	68 3c ff 44 00       	push   $0x44ff3c
40d600:	e8 ce 61 ff ff       	call   0x4037d3
40d605:	68 50 ff 44 00       	push   $0x44ff50
40d60a:	eb 5b                	jmp    0x40d667
40d60c:	68 68 ff 44 00       	push   $0x44ff68
40d611:	50                   	push   %eax
40d612:	ff 15 dc b0 44 00    	call   *0x44b0dc
40d618:	8b c8                	mov    %eax,%ecx
40d61a:	85 c9                	test   %ecx,%ecx
40d61c:	75 32                	jne    0x40d650
40d61e:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d624:	0f b7 f0             	movzwl %ax,%esi
40d627:	81 ce 00 00 07 80    	or     $0x80070000,%esi
40d62d:	85 c0                	test   %eax,%eax
40d62f:	0f 4e f0             	cmovle %eax,%esi
40d632:	b8 05 40 00 80       	mov    $0x80004005,%eax
40d637:	85 f6                	test   %esi,%esi
40d639:	0f 49 f0             	cmovns %eax,%esi
40d63c:	56                   	push   %esi
40d63d:	6a 5d                	push   $0x5d
40d63f:	68 3c ff 44 00       	push   $0x44ff3c
40d644:	e8 8a 61 ff ff       	call   0x4037d3
40d649:	68 88 ff 44 00       	push   $0x44ff88
40d64e:	eb 17                	jmp    0x40d667
40d650:	8d 46 10             	lea    0x10(%esi),%eax
40d653:	50                   	push   %eax
40d654:	ff 75 10             	push   0x10(%ebp)
40d657:	ff 75 0c             	push   0xc(%ebp)
40d65a:	ff d1                	call   *%ecx
40d65c:	8b f0                	mov    %eax,%esi
40d65e:	85 f6                	test   %esi,%esi
40d660:	79 0d                	jns    0x40d66f
40d662:	68 c0 ff 44 00       	push   $0x44ffc0
40d667:	56                   	push   %esi
40d668:	e8 c2 2a 03 00       	call   0x44012f
40d66d:	59                   	pop    %ecx
40d66e:	59                   	pop    %ecx
40d66f:	8b c6                	mov    %esi,%eax
40d671:	5e                   	pop    %esi
40d672:	5d                   	pop    %ebp
40d673:	c2 0c 00             	ret    $0xc
40d676:	55                   	push   %ebp
40d677:	8b ec                	mov    %esp,%ebp
40d679:	51                   	push   %ecx
40d67a:	53                   	push   %ebx
40d67b:	56                   	push   %esi
40d67c:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d67f:	33 db                	xor    %ebx,%ebx
40d681:	50                   	push   %eax
40d682:	68 88 fe 44 00       	push   $0x44fe88
40d687:	ff 75 0c             	push   0xc(%ebp)
40d68a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40d68d:	e8 f8 61 03 00       	call   0x44388a
40d692:	8b f0                	mov    %eax,%esi
40d694:	b8 90 04 07 80       	mov    $0x80070490,%eax
40d699:	83 fe 01             	cmp    $0x1,%esi
40d69c:	0f 44 f0             	cmove  %eax,%esi
40d69f:	85 f6                	test   %esi,%esi
40d6a1:	79 0f                	jns    0x40d6b2
40d6a3:	68 90 fe 44 00       	push   $0x44fe90
40d6a8:	56                   	push   %esi
40d6a9:	e8 81 2a 03 00       	call   0x44012f
40d6ae:	59                   	pop    %ecx
40d6af:	59                   	pop    %ecx
40d6b0:	eb 5a                	jmp    0x40d70c
40d6b2:	57                   	push   %edi
40d6b3:	8b 7d 08             	mov    0x8(%ebp),%edi
40d6b6:	57                   	push   %edi
40d6b7:	68 b8 fe 44 00       	push   $0x44feb8
40d6bc:	ff 75 fc             	push   -0x4(%ebp)
40d6bf:	e8 17 5d 03 00       	call   0x4433db
40d6c4:	8b f0                	mov    %eax,%esi
40d6c6:	81 fe 90 04 07 80    	cmp    $0x80070490,%esi
40d6cc:	74 0b                	je     0x40d6d9
40d6ce:	85 f6                	test   %esi,%esi
40d6d0:	79 07                	jns    0x40d6d9
40d6d2:	68 d4 fe 44 00       	push   $0x44fed4
40d6d7:	eb 2a                	jmp    0x40d703
40d6d9:	ff 75 fc             	push   -0x4(%ebp)
40d6dc:	8d 47 04             	lea    0x4(%edi),%eax
40d6df:	53                   	push   %ebx
40d6e0:	53                   	push   %ebx
40d6e1:	50                   	push   %eax
40d6e2:	e8 cf f5 ff ff       	call   0x40ccb6
40d6e7:	8b f0                	mov    %eax,%esi
40d6e9:	85 f6                	test   %esi,%esi
40d6eb:	79 07                	jns    0x40d6f4
40d6ed:	68 f8 fe 44 00       	push   $0x44fef8
40d6f2:	eb 0f                	jmp    0x40d703
40d6f4:	39 5f 08             	cmp    %ebx,0x8(%edi)
40d6f7:	75 12                	jne    0x40d70b
40d6f9:	be ff ff 00 80       	mov    $0x8000ffff,%esi
40d6fe:	68 24 ff 44 00       	push   $0x44ff24
40d703:	56                   	push   %esi
40d704:	e8 26 2a 03 00       	call   0x44012f
40d709:	59                   	pop    %ecx
40d70a:	59                   	pop    %ecx
40d70b:	5f                   	pop    %edi
40d70c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d70f:	85 c9                	test   %ecx,%ecx
40d711:	74 06                	je     0x40d719
40d713:	8b 01                	mov    (%ecx),%eax
40d715:	51                   	push   %ecx
40d716:	ff 50 08             	call   *0x8(%eax)
40d719:	8b c6                	mov    %esi,%eax
40d71b:	5e                   	pop    %esi
40d71c:	5b                   	pop    %ebx
40d71d:	8b e5                	mov    %ebp,%esp
40d71f:	5d                   	pop    %ebp
40d720:	c2 08 00             	ret    $0x8
40d723:	55                   	push   %ebp
40d724:	8b ec                	mov    %esp,%ebp
40d726:	8b 45 08             	mov    0x8(%ebp),%eax
40d729:	33 c9                	xor    %ecx,%ecx
40d72b:	39 48 14             	cmp    %ecx,0x14(%eax)
40d72e:	74 0c                	je     0x40d73c
40d730:	6a 07                	push   $0x7
40d732:	ff 70 14             	push   0x14(%eax)
40d735:	e8 89 64 ff ff       	call   0x403bc3
40d73a:	8b c8                	mov    %eax,%ecx
40d73c:	8b c1                	mov    %ecx,%eax
40d73e:	5d                   	pop    %ebp
40d73f:	c2 04 00             	ret    $0x4
40d742:	55                   	push   %ebp
40d743:	8b ec                	mov    %esp,%ebp
40d745:	8b 45 14             	mov    0x14(%ebp),%eax
40d748:	53                   	push   %ebx
40d749:	56                   	push   %esi
40d74a:	8b 75 18             	mov    0x18(%ebp),%esi
40d74d:	33 db                	xor    %ebx,%ebx
40d74f:	89 5d 14             	mov    %ebx,0x14(%ebp)
40d752:	57                   	push   %edi
40d753:	0f b7 f8             	movzwl %ax,%edi
40d756:	85 f6                	test   %esi,%esi
40d758:	75 14                	jne    0x40d76e
40d75a:	53                   	push   %ebx
40d75b:	50                   	push   %eax
40d75c:	8d 45 14             	lea    0x14(%ebp),%eax
40d75f:	50                   	push   %eax
40d760:	e8 13 48 ff ff       	call   0x401f78
40d765:	83 c4 0c             	add    $0xc,%esp
40d768:	85 c0                	test   %eax,%eax
40d76a:	0f 49 75 14          	cmovns 0x14(%ebp),%esi
40d76e:	ff 75 20             	push   0x20(%ebp)
40d771:	8b 45 08             	mov    0x8(%ebp),%eax
40d774:	53                   	push   %ebx
40d775:	53                   	push   %ebx
40d776:	ff 75 1c             	push   0x1c(%ebp)
40d779:	8b 08                	mov    (%eax),%ecx
40d77b:	56                   	push   %esi
40d77c:	57                   	push   %edi
40d77d:	ff 75 10             	push   0x10(%ebp)
40d780:	ff 75 0c             	push   0xc(%ebp)
40d783:	50                   	push   %eax
40d784:	ff 51 7c             	call   *0x7c(%ecx)
40d787:	8b f0                	mov    %eax,%esi
40d789:	39 5d 14             	cmp    %ebx,0x14(%ebp)
40d78c:	74 08                	je     0x40d796
40d78e:	ff 75 14             	push   0x14(%ebp)
40d791:	e8 59 7d 03 00       	call   0x4454ef
40d796:	5f                   	pop    %edi
40d797:	8b c6                	mov    %esi,%eax
40d799:	5e                   	pop    %esi
40d79a:	5b                   	pop    %ebx
40d79b:	5d                   	pop    %ebp
40d79c:	c2 1c 00             	ret    $0x1c
40d79f:	55                   	push   %ebp
40d7a0:	8b ec                	mov    %esp,%ebp
40d7a2:	56                   	push   %esi
40d7a3:	8b 75 08             	mov    0x8(%ebp),%esi
40d7a6:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
40d7aa:	74 08                	je     0x40d7b4
40d7ac:	ff 76 14             	push   0x14(%esi)
40d7af:	e8 3b 7d 03 00       	call   0x4454ef
40d7b4:	8d 46 04             	lea    0x4(%esi),%eax
40d7b7:	50                   	push   %eax
40d7b8:	e8 76 f9 ff ff       	call   0x40d133
40d7bd:	6a 44                	push   $0x44
40d7bf:	6a 00                	push   $0x0
40d7c1:	56                   	push   %esi
40d7c2:	e8 a9 1e 02 00       	call   0x42f670
40d7c7:	83 c4 0c             	add    $0xc,%esp
40d7ca:	5e                   	pop    %esi
40d7cb:	5d                   	pop    %ebp
40d7cc:	c2 04 00             	ret    $0x4
40d7cf:	55                   	push   %ebp
40d7d0:	8b ec                	mov    %esp,%ebp
40d7d2:	56                   	push   %esi
40d7d3:	8b 75 08             	mov    0x8(%ebp),%esi
40d7d6:	57                   	push   %edi
40d7d7:	33 ff                	xor    %edi,%edi
40d7d9:	8b 4e 10             	mov    0x10(%esi),%ecx
40d7dc:	85 c9                	test   %ecx,%ecx
40d7de:	74 09                	je     0x40d7e9
40d7e0:	8b 01                	mov    (%ecx),%eax
40d7e2:	51                   	push   %ecx
40d7e3:	ff 50 08             	call   *0x8(%eax)
40d7e6:	21 7e 10             	and    %edi,0x10(%esi)
40d7e9:	39 7e 0c             	cmp    %edi,0xc(%esi)
40d7ec:	74 39                	je     0x40d827
40d7ee:	68 d8 ff 44 00       	push   $0x44ffd8
40d7f3:	ff 76 0c             	push   0xc(%esi)
40d7f6:	ff 15 dc b0 44 00    	call   *0x44b0dc
40d7fc:	85 c0                	test   %eax,%eax
40d7fe:	74 02                	je     0x40d802
40d800:	ff d0                	call   *%eax
40d802:	ff 76 0c             	push   0xc(%esi)
40d805:	ff 15 b0 b1 44 00    	call   *0x44b1b0
40d80b:	85 c0                	test   %eax,%eax
40d80d:	75 14                	jne    0x40d823
40d80f:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40d815:	0f b7 f8             	movzwl %ax,%edi
40d818:	81 cf 00 00 07 80    	or     $0x80070000,%edi
40d81e:	85 c0                	test   %eax,%eax
40d820:	0f 4e f8             	cmovle %eax,%edi
40d823:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40d827:	8b c7                	mov    %edi,%eax
40d829:	5f                   	pop    %edi
40d82a:	5e                   	pop    %esi
40d82b:	5d                   	pop    %ebp
40d82c:	c2 04 00             	ret    $0x4
40d82f:	55                   	push   %ebp
40d830:	8b ec                	mov    %esp,%ebp
40d832:	53                   	push   %ebx
40d833:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d836:	56                   	push   %esi
40d837:	33 f6                	xor    %esi,%esi
40d839:	57                   	push   %edi
40d83a:	8b fe                	mov    %esi,%edi
40d83c:	39 73 04             	cmp    %esi,0x4(%ebx)
40d83f:	76 25                	jbe    0x40d866
40d841:	8b 03                	mov    (%ebx),%eax
40d843:	6a ff                	push   $0xffffffff
40d845:	ff 75 0c             	push   0xc(%ebp)
40d848:	6a ff                	push   $0xffffffff
40d84a:	8d 04 f8             	lea    (%eax,%edi,8),%eax
40d84d:	ff 30                	push   (%eax)
40d84f:	89 45 08             	mov    %eax,0x8(%ebp)
40d852:	56                   	push   %esi
40d853:	6a 7f                	push   $0x7f
40d855:	ff 15 28 b1 44 00    	call   *0x44b128
40d85b:	83 f8 02             	cmp    $0x2,%eax
40d85e:	74 14                	je     0x40d874
40d860:	47                   	inc    %edi
40d861:	3b 7b 04             	cmp    0x4(%ebx),%edi
40d864:	72 db                	jb     0x40d841
40d866:	be 90 04 07 80       	mov    $0x80070490,%esi
40d86b:	5f                   	pop    %edi
40d86c:	8b c6                	mov    %esi,%eax
40d86e:	5e                   	pop    %esi
40d86f:	5b                   	pop    %ebx
40d870:	5d                   	pop    %ebp
40d871:	c2 0c 00             	ret    $0xc
40d874:	8b 45 10             	mov    0x10(%ebp),%eax
40d877:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d87a:	89 08                	mov    %ecx,(%eax)
40d87c:	eb ed                	jmp    0x40d86b
40d87e:	55                   	push   %ebp
40d87f:	8b ec                	mov    %esp,%ebp
40d881:	83 ec 0c             	sub    $0xc,%esp
40d884:	56                   	push   %esi
40d885:	57                   	push   %edi
40d886:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d889:	33 ff                	xor    %edi,%edi
40d88b:	50                   	push   %eax
40d88c:	68 f8 08 45 00       	push   $0x4508f8
40d891:	ff 75 0c             	push   0xc(%ebp)
40d894:	89 7d f4             	mov    %edi,-0xc(%ebp)
40d897:	89 7d fc             	mov    %edi,-0x4(%ebp)
40d89a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40d89d:	e8 61 5f 03 00       	call   0x443803
40d8a2:	8b f0                	mov    %eax,%esi
40d8a4:	85 f6                	test   %esi,%esi
40d8a6:	79 12                	jns    0x40d8ba
40d8a8:	68 18 09 45 00       	push   $0x450918
40d8ad:	56                   	push   %esi
40d8ae:	e8 7c 28 03 00       	call   0x44012f
40d8b3:	59                   	pop    %ecx
40d8b4:	59                   	pop    %ecx
40d8b5:	e9 10 01 00 00       	jmp    0x40d9ca
40d8ba:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d8bd:	8d 55 f8             	lea    -0x8(%ebp),%edx
40d8c0:	52                   	push   %edx
40d8c1:	50                   	push   %eax
40d8c2:	8b 08                	mov    (%eax),%ecx
40d8c4:	ff 51 20             	call   *0x20(%ecx)
40d8c7:	8b f0                	mov    %eax,%esi
40d8c9:	85 f6                	test   %esi,%esi
40d8cb:	79 07                	jns    0x40d8d4
40d8cd:	68 40 09 45 00       	push   $0x450940
40d8d2:	eb d9                	jmp    0x40d8ad
40d8d4:	8b 45 f8             	mov    -0x8(%ebp),%eax
40d8d7:	85 c0                	test   %eax,%eax
40d8d9:	75 07                	jne    0x40d8e2
40d8db:	8b f7                	mov    %edi,%esi
40d8dd:	e9 e8 00 00 00       	jmp    0x40d9ca
40d8e2:	53                   	push   %ebx
40d8e3:	6a 01                	push   $0x1
40d8e5:	c1 e0 03             	shl    $0x3,%eax
40d8e8:	50                   	push   %eax
40d8e9:	e8 e6 5f ff ff       	call   0x4038d4
40d8ee:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d8f1:	89 43 18             	mov    %eax,0x18(%ebx)
40d8f4:	85 c0                	test   %eax,%eax
40d8f6:	75 1f                	jne    0x40d917
40d8f8:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40d8fd:	56                   	push   %esi
40d8fe:	68 65 02 00 00       	push   $0x265
40d903:	68 98 01 45 00       	push   $0x450198
40d908:	e8 c6 5e ff ff       	call   0x4037d3
40d90d:	68 6c 09 45 00       	push   $0x45096c
40d912:	e9 aa 00 00 00       	jmp    0x40d9c1
40d917:	8b 45 f8             	mov    -0x8(%ebp),%eax
40d91a:	89 43 1c             	mov    %eax,0x1c(%ebx)
40d91d:	85 c0                	test   %eax,%eax
40d91f:	0f 84 a4 00 00 00    	je     0x40d9c9
40d925:	8b 43 18             	mov    0x18(%ebx),%eax
40d928:	6a 00                	push   $0x0
40d92a:	8d 04 f8             	lea    (%eax,%edi,8),%eax
40d92d:	89 45 08             	mov    %eax,0x8(%ebp)
40d930:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d933:	50                   	push   %eax
40d934:	ff 75 f4             	push   -0xc(%ebp)
40d937:	e8 24 5e 03 00       	call   0x443760
40d93c:	8b f0                	mov    %eax,%esi
40d93e:	85 f6                	test   %esi,%esi
40d940:	78 7a                	js     0x40d9bc
40d942:	ff 75 08             	push   0x8(%ebp)
40d945:	68 a0 09 45 00       	push   $0x4509a0
40d94a:	ff 75 fc             	push   -0x4(%ebp)
40d94d:	e8 75 58 03 00       	call   0x4431c7
40d952:	8b f0                	mov    %eax,%esi
40d954:	85 f6                	test   %esi,%esi
40d956:	78 5d                	js     0x40d9b5