40c691:	85 f6                	test   %esi,%esi
40c693:	74 1f                	je     0x40c6b4
40c695:	6a 16                	push   $0x16
40c697:	56                   	push   %esi
40c698:	57                   	push   %edi
40c699:	e8 92 29 00 00       	call   0x40f030
40c69e:	68 24 10 00 00       	push   $0x1024
40c6a3:	56                   	push   %esi
40c6a4:	57                   	push   %edi
40c6a5:	e8 86 29 00 00       	call   0x40f030
40c6aa:	56                   	push   %esi
40c6ab:	57                   	push   %edi
40c6ac:	e8 8f bc 00 00       	call   0x418340
40c6b1:	83 c4 20             	add    $0x20,%esp
40c6b4:	5e                   	pop    %esi
40c6b5:	5f                   	pop    %edi
40c6b6:	5d                   	pop    %ebp
40c6b7:	c3                   	ret
40c6b8:	48                   	dec    %eax
40c6b9:	16                   	push   %ss
40c6ba:	5a                   	pop    %edx
40c6bb:	34 a0                	xor    $0xa0,%al
40c6bd:	a2 3a 45 55 8b       	mov    %al,0x8b55453a
40c6c2:	ec                   	in     (%dx),%al
40c6c3:	56                   	push   %esi
40c6c4:	8b 75 08             	mov    0x8(%ebp),%esi
40c6c7:	56                   	push   %esi
40c6c8:	e8 13 4b 00 00       	call   0x4111e0
40c6cd:	56                   	push   %esi
40c6ce:	e8 ed 37 00 00       	call   0x40fec0
40c6d3:	56                   	push   %esi
40c6d4:	e8 b7 1e 00 00       	call   0x40e590
40c6d9:	6a 16                	push   $0x16
40c6db:	56                   	push   %esi
40c6dc:	e8 5f 2d 00 00       	call   0x40f440
40c6e1:	56                   	push   %esi
40c6e2:	e8 f9 3a 00 00       	call   0x4101e0
40c6e7:	56                   	push   %esi
40c6e8:	e8 13 20 00 00       	call   0x40e700
40c6ed:	56                   	push   %esi
40c6ee:	e8 5d 41 00 00       	call   0x410850
40c6f3:	6a 00                	push   $0x0
40c6f5:	6a 00                	push   $0x0
40c6f7:	6a 00                	push   $0x0
40c6f9:	56                   	push   %esi
40c6fa:	e8 61 6e 00 00       	call   0x413560
40c6ff:	83 c4 30             	add    $0x30,%esp
40c702:	83 be 4c 0b 00 00 00 	cmpl   $0x0,0xb4c(%esi)
40c709:	74 09                	je     0x40c714
40c70b:	83 be 00 0a 00 00 00 	cmpl   $0x0,0xa00(%esi)
40c712:	74 12                	je     0x40c726
40c714:	83 be 48 0b 00 00 00 	cmpl   $0x0,0xb48(%esi)
40c71b:	74 1d                	je     0x40c73a
40c71d:	83 be fc 09 00 00 00 	cmpl   $0x0,0x9fc(%esi)
40c724:	75 14                	jne    0x40c73a
40c726:	8b b6 d8 07 00 00    	mov    0x7d8(%esi),%esi
40c72c:	85 f6                	test   %esi,%esi
40c72e:	74 0a                	je     0x40c73a
40c730:	c7 86 34 20 00 00 01 	movl   $0x1,0x2034(%esi)
40c737:	00 00 00
40c73a:	5e                   	pop    %esi
40c73b:	5d                   	pop    %ebp
40c73c:	c3                   	ret
40c73d:	9e                   	sahf
40c73e:	59                   	pop    %ecx
40c73f:	43                   	inc    %ebx
40c740:	55                   	push   %ebp
40c741:	8b ec                	mov    %esp,%ebp
40c743:	56                   	push   %esi
40c744:	8b 75 08             	mov    0x8(%ebp),%esi
40c747:	56                   	push   %esi
40c748:	c7 86 d0 07 00 00 01 	movl   $0x1,0x7d0(%esi)
40c74f:	00 00 00
40c752:	e8 69 e9 ff ff       	call   0x40b0c0
40c757:	83 c4 04             	add    $0x4,%esp
40c75a:	89 86 d4 07 00 00    	mov    %eax,0x7d4(%esi)
40c760:	85 c0                	test   %eax,%eax
40c762:	74 09                	je     0x40c76d
40c764:	56                   	push   %esi
40c765:	e8 f6 4d ff ff       	call   0x401560
40c76a:	83 c4 04             	add    $0x4,%esp
40c76d:	68 00 10 00 00       	push   $0x1000
40c772:	56                   	push   %esi
40c773:	e8 98 bd 00 00       	call   0x418510
40c778:	83 c4 08             	add    $0x8,%esp
40c77b:	89 86 04 0a 00 00    	mov    %eax,0xa04(%esi)
40c781:	85 c0                	test   %eax,%eax
40c783:	74 12                	je     0x40c797
40c785:	83 be 6c 0b 00 00 00 	cmpl   $0x0,0xb6c(%esi)
40c78c:	74 09                	je     0x40c797
40c78e:	56                   	push   %esi
40c78f:	e8 2c ff ff ff       	call   0x40c6c0
40c794:	83 c4 04             	add    $0x4,%esp
40c797:	5e                   	pop    %esi
40c798:	5d                   	pop    %ebp
40c799:	c3                   	ret
40c79a:	df f1                	fcomip %st(1),%st
40c79c:	3e 3d 3d 39 55 8b    	ds cmp $0x8b55393d,%eax
40c7a2:	ec                   	in     (%dx),%al
40c7a3:	56                   	push   %esi
40c7a4:	8b 75 08             	mov    0x8(%ebp),%esi
40c7a7:	83 be 6c 0b 00 00 00 	cmpl   $0x0,0xb6c(%esi)
40c7ae:	75 5a                	jne    0x40c80a
40c7b0:	8b 86 d8 07 00 00    	mov    0x7d8(%esi),%eax
40c7b6:	83 b8 50 20 00 00 00 	cmpl   $0x0,0x2050(%eax)
40c7bd:	74 42                	je     0x40c801
40c7bf:	8d 8e 28 0a 00 00    	lea    0xa28(%esi),%ecx
40c7c5:	51                   	push   %ecx
40c7c6:	56                   	push   %esi
40c7c7:	c7 86 6c 0b 00 00 01 	movl   $0x1,0xb6c(%esi)
40c7ce:	00 00 00
40c7d1:	e8 6a e8 ff ff       	call   0x40b040
40c7d6:	6a 00                	push   $0x0
40c7d8:	6a 04                	push   $0x4
40c7da:	8d 96 f0 07 00 00    	lea    0x7f0(%esi),%edx
40c7e0:	52                   	push   %edx
40c7e1:	56                   	push   %esi
40c7e2:	e8 e9 56 00 00       	call   0x411ed0
40c7e7:	6a 00                	push   $0x0
40c7e9:	6a 11                	push   $0x11
40c7eb:	8d 86 f0 08 00 00    	lea    0x8f0(%esi),%eax
40c7f1:	50                   	push   %eax
40c7f2:	56                   	push   %esi
40c7f3:	e8 d8 56 00 00       	call   0x411ed0
40c7f8:	56                   	push   %esi
40c7f9:	e8 c2 fe ff ff       	call   0x40c6c0
40c7fe:	83 c4 2c             	add    $0x2c,%esp
40c801:	83 be 6c 0b 00 00 00 	cmpl   $0x0,0xb6c(%esi)
40c808:	74 7d                	je     0x40c887
40c80a:	56                   	push   %esi
40c80b:	e8 e0 ee ff ff       	call   0x40b6f0
40c810:	83 c4 04             	add    $0x4,%esp
40c813:	3d 00 14 00 00       	cmp    $0x1400,%eax
40c818:	76 0a                	jbe    0x40c824
40c81a:	50                   	push   %eax
40c81b:	56                   	push   %esi
40c81c:	e8 5f fb ff ff       	call   0x40c380
40c821:	83 c4 08             	add    $0x8,%esp
40c824:	83 be d8 07 00 00 00 	cmpl   $0x0,0x7d8(%esi)
40c82b:	57                   	push   %edi
40c82c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40c82f:	74 16                	je     0x40c847
40c831:	85 ff                	test   %edi,%edi
40c833:	74 09                	je     0x40c83e
40c835:	56                   	push   %esi
40c836:	e8 a5 fc ff ff       	call   0x40c4e0
40c83b:	83 c4 04             	add    $0x4,%esp
40c83e:	56                   	push   %esi
40c83f:	e8 1c fe ff ff       	call   0x40c660
40c844:	83 c4 04             	add    $0x4,%esp
40c847:	56                   	push   %esi
40c848:	e8 a3 fd ff ff       	call   0x40c5f0
40c84d:	56                   	push   %esi
40c84e:	e8 cd fc ff ff       	call   0x40c520
40c853:	83 c4 08             	add    $0x8,%esp
40c856:	85 ff                	test   %edi,%edi
40c858:	5f                   	pop    %edi
40c859:	75 35                	jne    0x40c890
40c85b:	56                   	push   %esi
40c85c:	e8 5f f9 ff ff       	call   0x40c1c0
40c861:	83 c4 04             	add    $0x4,%esp
40c864:	83 be 24 0a 00 00 00 	cmpl   $0x0,0xa24(%esi)
40c86b:	75 1a                	jne    0x40c887
40c86d:	6a 00                	push   $0x0
40c86f:	6a 16                	push   $0x16
40c871:	8d 8e 28 0a 00 00    	lea    0xa28(%esi),%ecx
40c877:	51                   	push   %ecx
40c878:	56                   	push   %esi
40c879:	e8 52 56 00 00       	call   0x411ed0
40c87e:	83 c4 10             	add    $0x10,%esp
40c881:	89 86 24 0a 00 00    	mov    %eax,0xa24(%esi)
40c887:	56                   	push   %esi
40c888:	e8 b3 52 ff ff       	call   0x401b40
40c88d:	83 c4 04             	add    $0x4,%esp
40c890:	5e                   	pop    %esi
40c891:	5d                   	pop    %ebp
40c892:	c3                   	ret
40c893:	7f 69                	jg     0x40c8fe
40c895:	27                   	daa
40c896:	6c                   	insb   (%dx),%es:(%edi)
40c897:	4d                   	dec    %ebp
40c898:	0a 69 79             	or     0x79(%ecx),%ch
40c89b:	ea 23 85 2c 04 55 8b 	ljmp   $0x8b55,$0x42c8523
40c8a2:	ec                   	in     (%dx),%al
40c8a3:	83 ec 54             	sub    $0x54,%esp
40c8a6:	56                   	push   %esi
40c8a7:	33 c0                	xor    %eax,%eax
40c8a9:	6a 3e                	push   $0x3e
40c8ab:	50                   	push   %eax
40c8ac:	8d 4d ae             	lea    -0x52(%ebp),%ecx
40c8af:	51                   	push   %ecx
40c8b0:	66 89 45 ac          	mov    %ax,-0x54(%ebp)
40c8b4:	e8 27 bb 00 00       	call   0x4183e0
40c8b9:	8b 55 0c             	mov    0xc(%ebp),%edx
40c8bc:	8b 75 08             	mov    0x8(%ebp),%esi
40c8bf:	6a 01                	push   $0x1
40c8c1:	52                   	push   %edx
40c8c2:	8d 45 ac             	lea    -0x54(%ebp),%eax
40c8c5:	50                   	push   %eax
40c8c6:	56                   	push   %esi
40c8c7:	e8 a4 be ff ff       	call   0x408770
40c8cc:	8b 16                	mov    (%esi),%edx
40c8ce:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40c8d1:	51                   	push   %ecx
40c8d2:	6a 28                	push   $0x28
40c8d4:	52                   	push   %edx
40c8d5:	56                   	push   %esi
40c8d6:	e8 65 a1 00 00       	call   0x416a40
40c8db:	83 c4 2c             	add    $0x2c,%esp
40c8de:	85 c0                	test   %eax,%eax
40c8e0:	78 4b                	js     0x40c92d
40c8e2:	8d 45 f0             	lea    -0x10(%ebp),%eax
40c8e5:	50                   	push   %eax
40c8e6:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40c8e9:	51                   	push   %ecx
40c8ea:	6a 00                	push   $0x0
40c8ec:	56                   	push   %esi
40c8ed:	e8 3e a7 00 00       	call   0x417030
40c8f2:	83 c4 10             	add    $0x10,%esp
40c8f5:	85 c0                	test   %eax,%eax
40c8f7:	74 27                	je     0x40c920
40c8f9:	8b 45 fc             	mov    -0x4(%ebp),%eax
40c8fc:	6a 00                	push   $0x0
40c8fe:	6a 00                	push   $0x0
40c900:	6a 00                	push   $0x0
40c902:	8d 55 ec             	lea    -0x14(%ebp),%edx
40c905:	52                   	push   %edx
40c906:	6a 00                	push   $0x0
40c908:	50                   	push   %eax
40c909:	56                   	push   %esi
40c90a:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40c911:	c7 45 f8 02 00 00 00 	movl   $0x2,-0x8(%ebp)
40c918:	e8 a3 a1 00 00       	call   0x416ac0
40c91d:	83 c4 1c             	add    $0x1c,%esp
40c920:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c923:	51                   	push   %ecx
40c924:	56                   	push   %esi
40c925:	e8 c6 a3 00 00       	call   0x416cf0
40c92a:	83 c4 08             	add    $0x8,%esp
40c92d:	5e                   	pop    %esi
40c92e:	8b e5                	mov    %ebp,%esp
40c930:	5d                   	pop    %ebp
40c931:	c3                   	ret
40c932:	83 a5 52 41 ff d3 1d 	andl   $0x1d,-0x2c00beae(%ebp)
40c939:	1b ff                	sbb    %edi,%edi
40c93b:	6c                   	insb   (%dx),%es:(%edi)
40c93c:	ca ee 3c             	lret   $0x3cee
40c93f:	d2 55 8b             	rclb   %cl,-0x75(%ebp)
40c942:	ec                   	in     (%dx),%al
40c943:	83 ec 0c             	sub    $0xc,%esp
40c946:	56                   	push   %esi
40c947:	8b 75 08             	mov    0x8(%ebp),%esi
40c94a:	8b 0e                	mov    (%esi),%ecx
40c94c:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c94f:	50                   	push   %eax
40c950:	6a 08                	push   $0x8
40c952:	51                   	push   %ecx
40c953:	56                   	push   %esi
40c954:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40c95b:	c7 45 f8 04 00 00 00 	movl   $0x4,-0x8(%ebp)
40c962:	e8 d9 a0 00 00       	call   0x416a40
40c967:	83 c4 10             	add    $0x10,%esp
40c96a:	85 c0                	test   %eax,%eax
40c96c:	79 07                	jns    0x40c975
40c96e:	33 c0                	xor    %eax,%eax
40c970:	5e                   	pop    %esi
40c971:	8b e5                	mov    %ebp,%esp
40c973:	5d                   	pop    %ebp
40c974:	c3                   	ret
40c975:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c978:	57                   	push   %edi
40c979:	8d 55 f8             	lea    -0x8(%ebp),%edx
40c97c:	52                   	push   %edx
40c97d:	6a 04                	push   $0x4
40c97f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c982:	50                   	push   %eax
40c983:	6a 14                	push   $0x14
40c985:	51                   	push   %ecx
40c986:	56                   	push   %esi
40c987:	e8 f4 a0 00 00       	call   0x416a80
40c98c:	8b 55 fc             	mov    -0x4(%ebp),%edx
40c98f:	52                   	push   %edx
40c990:	56                   	push   %esi
40c991:	8b f8                	mov    %eax,%edi
40c993:	e8 58 a3 00 00       	call   0x416cf0
40c998:	83 c4 20             	add    $0x20,%esp
40c99b:	33 c0                	xor    %eax,%eax
40c99d:	85 ff                	test   %edi,%edi
40c99f:	0f 98 c0             	sets   %al
40c9a2:	5f                   	pop    %edi
40c9a3:	5e                   	pop    %esi
40c9a4:	48                   	dec    %eax
40c9a5:	23 45 f4             	and    -0xc(%ebp),%eax
40c9a8:	8b e5                	mov    %ebp,%esp
40c9aa:	5d                   	pop    %ebp
40c9ab:	c3                   	ret
40c9ac:	80 4f c7 62          	orb    $0x62,-0x39(%edi)
40c9b0:	55                   	push   %ebp
40c9b1:	8b ec                	mov    %esp,%ebp
40c9b3:	81 ec 80 00 00 00    	sub    $0x80,%esp
40c9b9:	53                   	push   %ebx
40c9ba:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c9bd:	57                   	push   %edi
40c9be:	33 ff                	xor    %edi,%edi
40c9c0:	33 c0                	xor    %eax,%eax
40c9c2:	3b df                	cmp    %edi,%ebx
40c9c4:	0f 84 c5 00 00 00    	je     0x40ca8f
40c9ca:	56                   	push   %esi
40c9cb:	6a 3e                	push   $0x3e
40c9cd:	8d 4d 82             	lea    -0x7e(%ebp),%ecx
40c9d0:	57                   	push   %edi
40c9d1:	51                   	push   %ecx
40c9d2:	66 89 45 80          	mov    %ax,-0x80(%ebp)
40c9d6:	e8 05 ba 00 00       	call   0x4183e0
40c9db:	8b 75 08             	mov    0x8(%ebp),%esi
40c9de:	6a 01                	push   $0x1
40c9e0:	6a 3e                	push   $0x3e
40c9e2:	8d 55 80             	lea    -0x80(%ebp),%edx
40c9e5:	52                   	push   %edx
40c9e6:	56                   	push   %esi
40c9e7:	e8 84 bd ff ff       	call   0x408770
40c9ec:	68 04 01 00 00       	push   $0x104
40c9f1:	8d 45 80             	lea    -0x80(%ebp),%eax
40c9f4:	50                   	push   %eax
40c9f5:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40c9f8:	51                   	push   %ecx
40c9f9:	e8 32 c8 00 00       	call   0x419230
40c9fe:	8d 45 d8             	lea    -0x28(%ebp),%eax
40ca01:	50                   	push   %eax
40ca02:	68 0f 00 02 00       	push   $0x2000f
40ca07:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40ca0a:	51                   	push   %ecx
40ca0b:	8d 55 f8             	lea    -0x8(%ebp),%edx
40ca0e:	56                   	push   %esi
40ca0f:	c7 45 d8 18 00 00 00 	movl   $0x18,-0x28(%ebp)
40ca16:	89 7d dc             	mov    %edi,-0x24(%ebp)
40ca19:	89 55 e0             	mov    %edx,-0x20(%ebp)
40ca1c:	c7 45 e4 40 00 00 00 	movl   $0x40,-0x1c(%ebp)
40ca23:	89 7d e8             	mov    %edi,-0x18(%ebp)
40ca26:	89 7d ec             	mov    %edi,-0x14(%ebp)
40ca29:	e8 72 9d 00 00       	call   0x4167a0
40ca2e:	68 04 01 00 00       	push   $0x104
40ca33:	8d 55 f0             	lea    -0x10(%ebp),%edx
40ca36:	53                   	push   %ebx
40ca37:	52                   	push   %edx
40ca38:	e8 f3 c7 00 00       	call   0x419230
40ca3d:	8b 45 0c             	mov    0xc(%ebp),%eax
40ca40:	83 c4 44             	add    $0x44,%esp
40ca43:	57                   	push   %edi
40ca44:	8d 55 c0             	lea    -0x40(%ebp),%edx