40a684:	8b df                	mov    %edi,%ebx
40a686:	66 85 c9             	test   %cx,%cx
40a689:	74 2a                	je     0x40a6b5
40a68b:	0f b7 d1             	movzwl %cx,%edx
40a68e:	66 83 fa 2e          	cmp    $0x2e,%dx
40a692:	74 0a                	je     0x40a69e
40a694:	66 83 fa 5c          	cmp    $0x5c,%dx
40a698:	75 06                	jne    0x40a6a0
40a69a:	8b df                	mov    %edi,%ebx
40a69c:	eb 02                	jmp    0x40a6a0
40a69e:	8b d8                	mov    %eax,%ebx
40a6a0:	50                   	push   %eax
40a6a1:	ff 15 f0 61 41 00    	call   *0x4161f0
40a6a7:	0f b7 08             	movzwl (%eax),%ecx
40a6aa:	8b d1                	mov    %ecx,%edx
40a6ac:	66 85 c9             	test   %cx,%cx
40a6af:	75 dd                	jne    0x40a68e
40a6b1:	85 db                	test   %ebx,%ebx
40a6b3:	75 02                	jne    0x40a6b7
40a6b5:	8b d8                	mov    %eax,%ebx
40a6b7:	56                   	push   %esi
40a6b8:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a6be:	50                   	push   %eax
40a6bf:	ff 15 b4 61 41 00    	call   *0x4161b4
40a6c5:	8b f0                	mov    %eax,%esi
40a6c7:	85 f6                	test   %esi,%esi
40a6c9:	79 5f                	jns    0x40a72a
40a6cb:	be 2c 30 40 00       	mov    $0x40302c,%esi
40a6d0:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a6d6:	8d 7d f0             	lea    -0x10(%ebp),%edi
40a6d9:	8b cb                	mov    %ebx,%ecx
40a6db:	2b c8                	sub    %eax,%ecx
40a6dd:	d1 f9                	sar    $1,%ecx
40a6df:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a6e0:	8d 41 05             	lea    0x5(%ecx),%eax
40a6e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a6e4:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40a6e6:	3d 04 01 00 00       	cmp    $0x104,%eax
40a6eb:	76 07                	jbe    0x40a6f4
40a6ed:	be 05 40 00 80       	mov    $0x80004005,%esi
40a6f2:	eb 54                	jmp    0x40a748
40a6f4:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a6f7:	50                   	push   %eax
40a6f8:	b8 0e 01 00 00       	mov    $0x10e,%eax
40a6fd:	2b c1                	sub    %ecx,%eax
40a6ff:	50                   	push   %eax
40a700:	53                   	push   %ebx
40a701:	ff 15 b0 62 41 00    	call   *0x4162b0
40a707:	83 c4 0c             	add    $0xc,%esp
40a70a:	8b c8                	mov    %eax,%ecx
40a70c:	e8 fb a4 ff ff       	call   0x404c0c
40a711:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
40a717:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a71d:	50                   	push   %eax
40a71e:	ff 15 b4 61 41 00    	call   *0x4161b4
40a724:	8b f0                	mov    %eax,%esi
40a726:	85 f6                	test   %esi,%esi
40a728:	78 1e                	js     0x40a748
40a72a:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40a730:	50                   	push   %eax
40a731:	ff 15 a4 61 41 00    	call   *0x4161a4
40a737:	8b 8d cc fd ff ff    	mov    -0x234(%ebp),%ecx
40a73d:	89 01                	mov    %eax,(%ecx)
40a73f:	85 c0                	test   %eax,%eax
40a741:	75 05                	jne    0x40a748
40a743:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40a748:	8d 8d c8 fd ff ff    	lea    -0x238(%ebp),%ecx
40a74e:	e8 6a d0 ff ff       	call   0x4077bd
40a753:	5f                   	pop    %edi
40a754:	8b c6                	mov    %esi,%eax
40a756:	5b                   	pop    %ebx
40a757:	eb 05                	jmp    0x40a75e
40a759:	b8 03 40 00 80       	mov    $0x80004003,%eax
40a75e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a761:	33 cd                	xor    %ebp,%ecx
40a763:	5e                   	pop    %esi
40a764:	e8 87 78 00 00       	call   0x411ff0
40a769:	c9                   	leave
40a76a:	c2 08 00             	ret    $0x8
40a76d:	8b ff                	mov    %edi,%edi
40a76f:	55                   	push   %ebp
40a770:	8b ec                	mov    %esp,%ebp
40a772:	83 ec 0c             	sub    $0xc,%esp
40a775:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a779:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a77c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a780:	56                   	push   %esi
40a781:	57                   	push   %edi
40a782:	50                   	push   %eax
40a783:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a786:	50                   	push   %eax
40a787:	e8 73 fe ff ff       	call   0x40a5ff
40a78c:	8b f8                	mov    %eax,%edi
40a78e:	85 ff                	test   %edi,%edi
40a790:	78 4f                	js     0x40a7e1
40a792:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a795:	8d 55 f8             	lea    -0x8(%ebp),%edx
40a798:	52                   	push   %edx
40a799:	50                   	push   %eax
40a79a:	8b 08                	mov    (%eax),%ecx
40a79c:	8b 71 1c             	mov    0x1c(%ecx),%esi
40a79f:	8b ce                	mov    %esi,%ecx
40a7a1:	ff 15 28 63 41 00    	call   *0x416328
40a7a7:	ff d6                	call   *%esi
40a7a9:	8b f8                	mov    %eax,%edi
40a7ab:	85 ff                	test   %edi,%edi
40a7ad:	78 32                	js     0x40a7e1
40a7af:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a7b2:	ff 71 14             	push   0x14(%ecx)
40a7b5:	0f b7 41 1a          	movzwl 0x1a(%ecx),%eax
40a7b9:	ff 71 10             	push   0x10(%ecx)
40a7bc:	50                   	push   %eax
40a7bd:	0f b7 41 18          	movzwl 0x18(%ecx),%eax
40a7c1:	50                   	push   %eax
40a7c2:	51                   	push   %ecx
40a7c3:	ff 15 a0 61 41 00    	call   *0x4161a0
40a7c9:	ff 75 f8             	push   -0x8(%ebp)
40a7cc:	8b f8                	mov    %eax,%edi
40a7ce:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a7d1:	50                   	push   %eax
40a7d2:	8b 08                	mov    (%eax),%ecx
40a7d4:	8b 71 30             	mov    0x30(%ecx),%esi
40a7d7:	8b ce                	mov    %esi,%ecx
40a7d9:	ff 15 28 63 41 00    	call   *0x416328
40a7df:	ff d6                	call   *%esi
40a7e1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a7e4:	85 c0                	test   %eax,%eax
40a7e6:	74 10                	je     0x40a7f8
40a7e8:	8b 08                	mov    (%eax),%ecx
40a7ea:	50                   	push   %eax
40a7eb:	8b 71 08             	mov    0x8(%ecx),%esi
40a7ee:	8b ce                	mov    %esi,%ecx
40a7f0:	ff 15 28 63 41 00    	call   *0x416328
40a7f6:	ff d6                	call   *%esi
40a7f8:	ff 75 f4             	push   -0xc(%ebp)
40a7fb:	ff 15 b8 61 41 00    	call   *0x4161b8
40a801:	8b c7                	mov    %edi,%eax
40a803:	5f                   	pop    %edi
40a804:	5e                   	pop    %esi
40a805:	c9                   	leave
40a806:	c3                   	ret
40a807:	8b 0d 20 51 41 00    	mov    0x415120,%ecx
40a80d:	33 c0                	xor    %eax,%eax
40a80f:	53                   	push   %ebx
40a810:	56                   	push   %esi
40a811:	57                   	push   %edi
40a812:	8b 3d 1c 51 41 00    	mov    0x41511c,%edi
40a818:	3b f9                	cmp    %ecx,%edi
40a81a:	73 46                	jae    0x40a862
40a81c:	8b 1f                	mov    (%edi),%ebx
40a81e:	85 db                	test   %ebx,%ebx
40a820:	74 35                	je     0x40a857
40a822:	8b 73 1c             	mov    0x1c(%ebx),%esi
40a825:	8b ce                	mov    %esi,%ecx
40a827:	6a 00                	push   $0x0
40a829:	ff 15 28 63 41 00    	call   *0x416328
40a82f:	ff d6                	call   *%esi
40a831:	8b 0b                	mov    (%ebx),%ecx
40a833:	8b d0                	mov    %eax,%edx
40a835:	e8 48 fa ff ff       	call   0x40a282
40a83a:	85 c0                	test   %eax,%eax
40a83c:	78 2f                	js     0x40a86d
40a83e:	8b 73 04             	mov    0x4(%ebx),%esi
40a841:	8b ce                	mov    %esi,%ecx
40a843:	6a 00                	push   $0x0
40a845:	ff 15 28 63 41 00    	call   *0x416328
40a84b:	ff d6                	call   *%esi
40a84d:	85 c0                	test   %eax,%eax
40a84f:	78 1c                	js     0x40a86d
40a851:	8b 0d 20 51 41 00    	mov    0x415120,%ecx
40a857:	83 c7 04             	add    $0x4,%edi
40a85a:	3b f9                	cmp    %ecx,%edi
40a85c:	72 be                	jb     0x40a81c
40a85e:	85 c0                	test   %eax,%eax
40a860:	78 0b                	js     0x40a86d
40a862:	8b 0d 18 51 41 00    	mov    0x415118,%ecx
40a868:	e8 00 ff ff ff       	call   0x40a76d
40a86d:	5f                   	pop    %edi
40a86e:	5e                   	pop    %esi
40a86f:	5b                   	pop    %ebx
40a870:	c2 08 00             	ret    $0x8
40a873:	8b ff                	mov    %edi,%edi
40a875:	53                   	push   %ebx
40a876:	8b d9                	mov    %ecx,%ebx
40a878:	56                   	push   %esi
40a879:	57                   	push   %edi
40a87a:	8b fa                	mov    %edx,%edi
40a87c:	0f b7 03             	movzwl (%ebx),%eax
40a87f:	50                   	push   %eax
40a880:	ff 15 d8 61 41 00    	call   *0x4161d8
40a886:	0f b7 f0             	movzwl %ax,%esi
40a889:	0f b7 07             	movzwl (%edi),%eax
40a88c:	50                   	push   %eax
40a88d:	ff 15 d8 61 41 00    	call   *0x4161d8
40a893:	0f b7 c0             	movzwl %ax,%eax
40a896:	6a 20                	push   $0x20
40a898:	5a                   	pop    %edx
40a899:	6a 09                	push   $0x9
40a89b:	59                   	pop    %ecx
40a89c:	66 85 f6             	test   %si,%si
40a89f:	74 55                	je     0x40a8f6
40a8a1:	66 3b f0             	cmp    %ax,%si
40a8a4:	75 41                	jne    0x40a8e7
40a8a6:	66 3b f2             	cmp    %dx,%si
40a8a9:	74 3c                	je     0x40a8e7
40a8ab:	66 3b f1             	cmp    %cx,%si
40a8ae:	74 37                	je     0x40a8e7
40a8b0:	53                   	push   %ebx
40a8b1:	ff 15 f0 61 41 00    	call   *0x4161f0
40a8b7:	57                   	push   %edi
40a8b8:	8b d8                	mov    %eax,%ebx
40a8ba:	ff 15 f0 61 41 00    	call   *0x4161f0
40a8c0:	8b f8                	mov    %eax,%edi
40a8c2:	0f b7 03             	movzwl (%ebx),%eax
40a8c5:	50                   	push   %eax
40a8c6:	ff 15 d8 61 41 00    	call   *0x4161d8
40a8cc:	0f b7 f0             	movzwl %ax,%esi
40a8cf:	0f b7 07             	movzwl (%edi),%eax
40a8d2:	50                   	push   %eax
40a8d3:	ff 15 d8 61 41 00    	call   *0x4161d8
40a8d9:	0f b7 c0             	movzwl %ax,%eax
40a8dc:	6a 09                	push   $0x9
40a8de:	59                   	pop    %ecx
40a8df:	6a 20                	push   $0x20
40a8e1:	5a                   	pop    %edx
40a8e2:	66 85 f6             	test   %si,%si
40a8e5:	75 ba                	jne    0x40a8a1
40a8e7:	66 85 f6             	test   %si,%si
40a8ea:	74 0a                	je     0x40a8f6
40a8ec:	66 3b f2             	cmp    %dx,%si
40a8ef:	74 05                	je     0x40a8f6
40a8f1:	66 3b f1             	cmp    %cx,%si
40a8f4:	75 0f                	jne    0x40a905
40a8f6:	66 85 c0             	test   %ax,%ax
40a8f9:	74 15                	je     0x40a910
40a8fb:	66 3b c2             	cmp    %dx,%ax
40a8fe:	74 10                	je     0x40a910
40a900:	66 3b c1             	cmp    %cx,%ax
40a903:	74 0b                	je     0x40a910
40a905:	66 3b f0             	cmp    %ax,%si
40a908:	1b c0                	sbb    %eax,%eax
40a90a:	83 e0 fe             	and    $0xfffffffe,%eax
40a90d:	40                   	inc    %eax
40a90e:	eb 02                	jmp    0x40a912
40a910:	33 c0                	xor    %eax,%eax
40a912:	5f                   	pop    %edi
40a913:	5e                   	pop    %esi
40a914:	5b                   	pop    %ebx
40a915:	c3                   	ret
40a916:	8b ff                	mov    %edi,%edi
40a918:	56                   	push   %esi
40a919:	57                   	push   %edi
40a91a:	8b fa                	mov    %edx,%edi
40a91c:	8b f1                	mov    %ecx,%esi
40a91e:	eb 2d                	jmp    0x40a94d
40a920:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a924:	74 2b                	je     0x40a951
40a926:	8b c7                	mov    %edi,%eax
40a928:	85 ff                	test   %edi,%edi
40a92a:	74 18                	je     0x40a944
40a92c:	0f b7 08             	movzwl (%eax),%ecx
40a92f:	66 85 c9             	test   %cx,%cx
40a932:	74 10                	je     0x40a944
40a934:	66 39 0e             	cmp    %cx,(%esi)
40a937:	74 1d                	je     0x40a956
40a939:	50                   	push   %eax
40a93a:	ff 15 f0 61 41 00    	call   *0x4161f0
40a940:	85 c0                	test   %eax,%eax
40a942:	75 e8                	jne    0x40a92c
40a944:	56                   	push   %esi
40a945:	ff 15 f0 61 41 00    	call   *0x4161f0
40a94b:	8b f0                	mov    %eax,%esi
40a94d:	85 f6                	test   %esi,%esi
40a94f:	75 cf                	jne    0x40a920
40a951:	33 c0                	xor    %eax,%eax
40a953:	5f                   	pop    %edi
40a954:	5e                   	pop    %esi
40a955:	c3                   	ret
40a956:	56                   	push   %esi
40a957:	ff 15 f0 61 41 00    	call   *0x4161f0
40a95d:	eb f4                	jmp    0x40a953
40a95f:	83 3d 14 51 41 00 00 	cmpl   $0x0,0x415114
40a966:	74 54                	je     0x40a9bc
40a968:	a1 20 51 41 00       	mov    0x415120,%eax
40a96d:	57                   	push   %edi
40a96e:	8b 3d 1c 51 41 00    	mov    0x41511c,%edi
40a974:	3b f8                	cmp    %eax,%edi
40a976:	73 31                	jae    0x40a9a9
40a978:	53                   	push   %ebx
40a979:	56                   	push   %esi
40a97a:	8b 1f                	mov    (%edi),%ebx
40a97c:	85 db                	test   %ebx,%ebx
40a97e:	74 20                	je     0x40a9a0
40a980:	8b 4b 10             	mov    0x10(%ebx),%ecx
40a983:	85 c9                	test   %ecx,%ecx
40a985:	74 10                	je     0x40a997
40a987:	8b 01                	mov    (%ecx),%eax
40a989:	51                   	push   %ecx
40a98a:	8b 70 08             	mov    0x8(%eax),%esi
40a98d:	8b ce                	mov    %esi,%ecx
40a98f:	ff 15 28 63 41 00    	call   *0x416328
40a995:	ff d6                	call   *%esi
40a997:	83 63 10 00          	andl   $0x0,0x10(%ebx)
40a99b:	a1 20 51 41 00       	mov    0x415120,%eax
40a9a0:	83 c7 04             	add    $0x4,%edi
40a9a3:	3b f8                	cmp    %eax,%edi
40a9a5:	72 d3                	jb     0x40a97a
40a9a7:	5e                   	pop    %esi
40a9a8:	5b                   	pop    %ebx
40a9a9:	68 24 51 41 00       	push   $0x415124
40a9ae:	ff 15 c8 60 41 00    	call   *0x4160c8
40a9b4:	83 25 14 51 41 00 00 	andl   $0x0,0x415114
40a9bb:	5f                   	pop    %edi
40a9bc:	c3                   	ret
40a9bd:	8b ff                	mov    %edi,%edi
40a9bf:	53                   	push   %ebx
40a9c0:	8b d9                	mov    %ecx,%ebx
40a9c2:	57                   	push   %edi
40a9c3:	85 db                	test   %ebx,%ebx
40a9c5:	74 30                	je     0x40a9f7
40a9c7:	8b 7b 08             	mov    0x8(%ebx),%edi
40a9ca:	85 ff                	test   %edi,%edi
40a9cc:	74 22                	je     0x40a9f0
40a9ce:	56                   	push   %esi
40a9cf:	8b 37                	mov    (%edi),%esi
40a9d1:	8b ce                	mov    %esi,%ecx
40a9d3:	ff 77 04             	push   0x4(%edi)
40a9d6:	ff 15 28 63 41 00    	call   *0x416328
40a9dc:	ff d6                	call   *%esi
40a9de:	8b 77 08             	mov    0x8(%edi),%esi
40a9e1:	57                   	push   %edi
40a9e2:	ff 15 d0 62 41 00    	call   *0x4162d0
40a9e8:	8b fe                	mov    %esi,%edi
40a9ea:	59                   	pop    %ecx
40a9eb:	85 f6                	test   %esi,%esi
40a9ed:	75 e0                	jne    0x40a9cf
40a9ef:	5e                   	pop    %esi
40a9f0:	83 63 08 00          	andl   $0x0,0x8(%ebx)
40a9f4:	5f                   	pop    %edi
40a9f5:	5b                   	pop    %ebx
40a9f6:	c3                   	ret
40a9f7:	b9 05 00 00 c0       	mov    $0xc0000005,%ecx
40a9fc:	e8 d0 a1 ff ff       	call   0x404bd1
40aa01:	cc                   	int3
40aa02:	8b ff                	mov    %edi,%edi
40aa04:	53                   	push   %ebx
40aa05:	57                   	push   %edi
40aa06:	8b f9                	mov    %ecx,%edi
40aa08:	8d 5f 04             	lea    0x4(%edi),%ebx
40aa0b:	83 3b 00             	cmpl   $0x0,(%ebx)