40e5e1:	8b 45 08             	mov    0x8(%ebp),%eax
40e5e4:	89 48 0c             	mov    %ecx,0xc(%eax)
40e5e7:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e5ea:	f6 c1 10             	test   $0x10,%cl
40e5ed:	74 0b                	je     0x40e5fa
40e5ef:	8b 45 08             	mov    0x8(%ebp),%eax
40e5f2:	bf 8f 00 00 c0       	mov    $0xc000008f,%edi
40e5f7:	09 58 04             	or     %ebx,0x4(%eax)
40e5fa:	f6 c1 02             	test   $0x2,%cl
40e5fd:	74 0c                	je     0x40e60b
40e5ff:	8b 45 08             	mov    0x8(%ebp),%eax
40e602:	bf 93 00 00 c0       	mov    $0xc0000093,%edi
40e607:	83 48 04 02          	orl    $0x2,0x4(%eax)
40e60b:	f6 c1 01             	test   $0x1,%cl
40e60e:	74 0c                	je     0x40e61c
40e610:	8b 45 08             	mov    0x8(%ebp),%eax
40e613:	bf 91 00 00 c0       	mov    $0xc0000091,%edi
40e618:	83 48 04 04          	orl    $0x4,0x4(%eax)
40e61c:	f6 c1 04             	test   $0x4,%cl
40e61f:	74 0c                	je     0x40e62d
40e621:	8b 45 08             	mov    0x8(%ebp),%eax
40e624:	bf 8e 00 00 c0       	mov    $0xc000008e,%edi
40e629:	83 48 04 08          	orl    $0x8,0x4(%eax)
40e62d:	f6 c1 08             	test   $0x8,%cl
40e630:	74 0c                	je     0x40e63e
40e632:	8b 45 08             	mov    0x8(%ebp),%eax
40e635:	bf 90 00 00 c0       	mov    $0xc0000090,%edi
40e63a:	83 48 04 10          	orl    $0x10,0x4(%eax)
40e63e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e641:	56                   	push   %esi
40e642:	8b 75 0c             	mov    0xc(%ebp),%esi
40e645:	8b 06                	mov    (%esi),%eax
40e647:	c1 e0 04             	shl    $0x4,%eax
40e64a:	f7 d0                	not    %eax
40e64c:	33 41 08             	xor    0x8(%ecx),%eax
40e64f:	83 e0 10             	and    $0x10,%eax
40e652:	31 41 08             	xor    %eax,0x8(%ecx)
40e655:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e658:	8b 06                	mov    (%esi),%eax
40e65a:	03 c0                	add    %eax,%eax
40e65c:	f7 d0                	not    %eax
40e65e:	33 41 08             	xor    0x8(%ecx),%eax
40e661:	83 e0 08             	and    $0x8,%eax
40e664:	31 41 08             	xor    %eax,0x8(%ecx)
40e667:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e66a:	8b 06                	mov    (%esi),%eax
40e66c:	d1 e8                	shr    $1,%eax
40e66e:	f7 d0                	not    %eax
40e670:	33 41 08             	xor    0x8(%ecx),%eax
40e673:	83 e0 04             	and    $0x4,%eax
40e676:	31 41 08             	xor    %eax,0x8(%ecx)
40e679:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e67c:	8b 06                	mov    (%esi),%eax
40e67e:	c1 e8 03             	shr    $0x3,%eax
40e681:	f7 d0                	not    %eax
40e683:	33 41 08             	xor    0x8(%ecx),%eax
40e686:	83 e0 02             	and    $0x2,%eax
40e689:	31 41 08             	xor    %eax,0x8(%ecx)
40e68c:	8b 06                	mov    (%esi),%eax
40e68e:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e691:	c1 e8 05             	shr    $0x5,%eax
40e694:	f7 d0                	not    %eax
40e696:	33 41 08             	xor    0x8(%ecx),%eax
40e699:	23 c3                	and    %ebx,%eax
40e69b:	31 41 08             	xor    %eax,0x8(%ecx)
40e69e:	e8 02 e0 ff ff       	call   0x40c6a5
40e6a3:	8b d0                	mov    %eax,%edx
40e6a5:	f6 c2 01             	test   $0x1,%dl
40e6a8:	74 07                	je     0x40e6b1
40e6aa:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e6ad:	83 49 0c 10          	orl    $0x10,0xc(%ecx)
40e6b1:	f6 c2 04             	test   $0x4,%dl
40e6b4:	74 07                	je     0x40e6bd
40e6b6:	8b 45 08             	mov    0x8(%ebp),%eax
40e6b9:	83 48 0c 08          	orl    $0x8,0xc(%eax)
40e6bd:	f6 c2 08             	test   $0x8,%dl
40e6c0:	74 07                	je     0x40e6c9
40e6c2:	8b 45 08             	mov    0x8(%ebp),%eax
40e6c5:	83 48 0c 04          	orl    $0x4,0xc(%eax)
40e6c9:	f6 c2 10             	test   $0x10,%dl
40e6cc:	74 07                	je     0x40e6d5
40e6ce:	8b 45 08             	mov    0x8(%ebp),%eax
40e6d1:	83 48 0c 02          	orl    $0x2,0xc(%eax)
40e6d5:	f6 c2 20             	test   $0x20,%dl
40e6d8:	74 06                	je     0x40e6e0
40e6da:	8b 45 08             	mov    0x8(%ebp),%eax
40e6dd:	09 58 0c             	or     %ebx,0xc(%eax)
40e6e0:	8b 06                	mov    (%esi),%eax
40e6e2:	b9 00 0c 00 00       	mov    $0xc00,%ecx
40e6e7:	23 c1                	and    %ecx,%eax
40e6e9:	74 35                	je     0x40e720
40e6eb:	3d 00 04 00 00       	cmp    $0x400,%eax
40e6f0:	74 22                	je     0x40e714
40e6f2:	3d 00 08 00 00       	cmp    $0x800,%eax
40e6f7:	74 0c                	je     0x40e705
40e6f9:	3b c1                	cmp    %ecx,%eax
40e6fb:	75 29                	jne    0x40e726
40e6fd:	8b 45 08             	mov    0x8(%ebp),%eax
40e700:	83 08 03             	orl    $0x3,(%eax)
40e703:	eb 21                	jmp    0x40e726
40e705:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e708:	8b 01                	mov    (%ecx),%eax
40e70a:	83 e0 fe             	and    $0xfffffffe,%eax
40e70d:	83 c8 02             	or     $0x2,%eax
40e710:	89 01                	mov    %eax,(%ecx)
40e712:	eb 12                	jmp    0x40e726
40e714:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e717:	8b 01                	mov    (%ecx),%eax
40e719:	83 e0 fd             	and    $0xfffffffd,%eax
40e71c:	0b c3                	or     %ebx,%eax
40e71e:	eb f0                	jmp    0x40e710
40e720:	8b 45 08             	mov    0x8(%ebp),%eax
40e723:	83 20 fc             	andl   $0xfffffffc,(%eax)
40e726:	8b 06                	mov    (%esi),%eax
40e728:	b9 00 03 00 00       	mov    $0x300,%ecx
40e72d:	23 c1                	and    %ecx,%eax
40e72f:	74 20                	je     0x40e751
40e731:	3d 00 02 00 00       	cmp    $0x200,%eax
40e736:	74 0c                	je     0x40e744
40e738:	3b c1                	cmp    %ecx,%eax
40e73a:	75 22                	jne    0x40e75e
40e73c:	8b 45 08             	mov    0x8(%ebp),%eax
40e73f:	83 20 e3             	andl   $0xffffffe3,(%eax)
40e742:	eb 1a                	jmp    0x40e75e
40e744:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e747:	8b 01                	mov    (%ecx),%eax
40e749:	83 e0 e7             	and    $0xffffffe7,%eax
40e74c:	83 c8 04             	or     $0x4,%eax
40e74f:	eb 0b                	jmp    0x40e75c
40e751:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e754:	8b 01                	mov    (%ecx),%eax
40e756:	83 e0 eb             	and    $0xffffffeb,%eax
40e759:	83 c8 08             	or     $0x8,%eax
40e75c:	89 01                	mov    %eax,(%ecx)
40e75e:	8b 45 08             	mov    0x8(%ebp),%eax
40e761:	8b 4d 14             	mov    0x14(%ebp),%ecx
40e764:	c1 e1 05             	shl    $0x5,%ecx
40e767:	33 08                	xor    (%eax),%ecx
40e769:	81 e1 e0 ff 01 00    	and    $0x1ffe0,%ecx
40e76f:	31 08                	xor    %ecx,(%eax)
40e771:	8b 45 08             	mov    0x8(%ebp),%eax
40e774:	09 58 20             	or     %ebx,0x20(%eax)
40e777:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
40e77b:	74 2c                	je     0x40e7a9
40e77d:	8b 45 08             	mov    0x8(%ebp),%eax
40e780:	83 60 20 e1          	andl   $0xffffffe1,0x20(%eax)
40e784:	8b 45 18             	mov    0x18(%ebp),%eax
40e787:	d9 00                	flds   (%eax)
40e789:	8b 45 08             	mov    0x8(%ebp),%eax
40e78c:	d9 58 10             	fstps  0x10(%eax)
40e78f:	8b 45 08             	mov    0x8(%ebp),%eax
40e792:	09 58 60             	or     %ebx,0x60(%eax)
40e795:	8b 45 08             	mov    0x8(%ebp),%eax
40e798:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
40e79b:	83 60 60 e1          	andl   $0xffffffe1,0x60(%eax)
40e79f:	8b 45 08             	mov    0x8(%ebp),%eax
40e7a2:	d9 03                	flds   (%ebx)
40e7a4:	d9 58 50             	fstps  0x50(%eax)
40e7a7:	eb 3a                	jmp    0x40e7e3
40e7a9:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e7ac:	8b 41 20             	mov    0x20(%ecx),%eax
40e7af:	83 e0 e3             	and    $0xffffffe3,%eax
40e7b2:	83 c8 02             	or     $0x2,%eax
40e7b5:	89 41 20             	mov    %eax,0x20(%ecx)
40e7b8:	8b 45 18             	mov    0x18(%ebp),%eax
40e7bb:	dd 00                	fldl   (%eax)
40e7bd:	8b 45 08             	mov    0x8(%ebp),%eax
40e7c0:	dd 58 10             	fstpl  0x10(%eax)
40e7c3:	8b 45 08             	mov    0x8(%ebp),%eax
40e7c6:	09 58 60             	or     %ebx,0x60(%eax)
40e7c9:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e7cc:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
40e7cf:	8b 41 60             	mov    0x60(%ecx),%eax
40e7d2:	83 e0 e3             	and    $0xffffffe3,%eax
40e7d5:	83 c8 02             	or     $0x2,%eax
40e7d8:	89 41 60             	mov    %eax,0x60(%ecx)
40e7db:	8b 45 08             	mov    0x8(%ebp),%eax
40e7de:	dd 03                	fldl   (%ebx)
40e7e0:	dd 58 50             	fstpl  0x50(%eax)
40e7e3:	e8 29 de ff ff       	call   0x40c611
40e7e8:	8d 45 08             	lea    0x8(%ebp),%eax
40e7eb:	50                   	push   %eax
40e7ec:	6a 01                	push   $0x1
40e7ee:	6a 00                	push   $0x0
40e7f0:	57                   	push   %edi
40e7f1:	ff 15 54 f0 40 00    	call   *0x40f054
40e7f7:	8b 4d 08             	mov    0x8(%ebp),%ecx
40e7fa:	f6 41 08 10          	testb  $0x10,0x8(%ecx)
40e7fe:	74 03                	je     0x40e803
40e800:	83 26 fe             	andl   $0xfffffffe,(%esi)
40e803:	f6 41 08 08          	testb  $0x8,0x8(%ecx)
40e807:	74 03                	je     0x40e80c
40e809:	83 26 fb             	andl   $0xfffffffb,(%esi)
40e80c:	f6 41 08 04          	testb  $0x4,0x8(%ecx)
40e810:	74 03                	je     0x40e815
40e812:	83 26 f7             	andl   $0xfffffff7,(%esi)
40e815:	f6 41 08 02          	testb  $0x2,0x8(%ecx)
40e819:	74 03                	je     0x40e81e
40e81b:	83 26 ef             	andl   $0xffffffef,(%esi)
40e81e:	f6 41 08 01          	testb  $0x1,0x8(%ecx)
40e822:	74 03                	je     0x40e827
40e824:	83 26 df             	andl   $0xffffffdf,(%esi)
40e827:	8b 01                	mov    (%ecx),%eax
40e829:	ba ff f3 ff ff       	mov    $0xfffff3ff,%edx
40e82e:	83 e0 03             	and    $0x3,%eax
40e831:	83 e8 00             	sub    $0x0,%eax
40e834:	74 35                	je     0x40e86b
40e836:	83 e8 01             	sub    $0x1,%eax
40e839:	74 22                	je     0x40e85d
40e83b:	83 e8 01             	sub    $0x1,%eax
40e83e:	74 0d                	je     0x40e84d
40e840:	83 e8 01             	sub    $0x1,%eax
40e843:	75 28                	jne    0x40e86d
40e845:	81 0e 00 0c 00 00    	orl    $0xc00,(%esi)
40e84b:	eb 20                	jmp    0x40e86d
40e84d:	8b 06                	mov    (%esi),%eax
40e84f:	25 ff fb ff ff       	and    $0xfffffbff,%eax
40e854:	0d 00 08 00 00       	or     $0x800,%eax
40e859:	89 06                	mov    %eax,(%esi)
40e85b:	eb 10                	jmp    0x40e86d
40e85d:	8b 06                	mov    (%esi),%eax
40e85f:	25 ff f7 ff ff       	and    $0xfffff7ff,%eax
40e864:	0d 00 04 00 00       	or     $0x400,%eax
40e869:	eb ee                	jmp    0x40e859
40e86b:	21 16                	and    %edx,(%esi)
40e86d:	8b 01                	mov    (%ecx),%eax
40e86f:	c1 e8 02             	shr    $0x2,%eax
40e872:	83 e0 07             	and    $0x7,%eax
40e875:	83 e8 00             	sub    $0x0,%eax
40e878:	74 19                	je     0x40e893
40e87a:	83 e8 01             	sub    $0x1,%eax
40e87d:	74 09                	je     0x40e888
40e87f:	83 e8 01             	sub    $0x1,%eax
40e882:	75 1a                	jne    0x40e89e
40e884:	21 16                	and    %edx,(%esi)
40e886:	eb 16                	jmp    0x40e89e
40e888:	8b 06                	mov    (%esi),%eax
40e88a:	23 c2                	and    %edx,%eax
40e88c:	0d 00 02 00 00       	or     $0x200,%eax
40e891:	eb 09                	jmp    0x40e89c
40e893:	8b 06                	mov    (%esi),%eax
40e895:	23 c2                	and    %edx,%eax
40e897:	0d 00 03 00 00       	or     $0x300,%eax
40e89c:	89 06                	mov    %eax,(%esi)
40e89e:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
40e8a2:	5e                   	pop    %esi
40e8a3:	74 07                	je     0x40e8ac
40e8a5:	d9 41 50             	flds   0x50(%ecx)
40e8a8:	d9 1b                	fstps  (%ebx)
40e8aa:	eb 05                	jmp    0x40e8b1
40e8ac:	dd 41 50             	fldl   0x50(%ecx)
40e8af:	dd 1b                	fstpl  (%ebx)
40e8b1:	5f                   	pop    %edi
40e8b2:	5b                   	pop    %ebx
40e8b3:	5d                   	pop    %ebp
40e8b4:	c3                   	ret
40e8b5:	8b ff                	mov    %edi,%edi
40e8b7:	55                   	push   %ebp
40e8b8:	8b ec                	mov    %esp,%ebp
40e8ba:	8b 45 08             	mov    0x8(%ebp),%eax
40e8bd:	83 e8 01             	sub    $0x1,%eax
40e8c0:	74 17                	je     0x40e8d9
40e8c2:	83 e8 01             	sub    $0x1,%eax
40e8c5:	74 05                	je     0x40e8cc
40e8c7:	83 e8 01             	sub    $0x1,%eax
40e8ca:	75 18                	jne    0x40e8e4
40e8cc:	e8 7f 90 ff ff       	call   0x407950
40e8d1:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40e8d7:	5d                   	pop    %ebp
40e8d8:	c3                   	ret
40e8d9:	e8 72 90 ff ff       	call   0x407950
40e8de:	c7 00 21 00 00 00    	movl   $0x21,(%eax)
40e8e4:	5d                   	pop    %ebp
40e8e5:	c3                   	ret
40e8e6:	8b ff                	mov    %edi,%edi
40e8e8:	55                   	push   %ebp
40e8e9:	8b ec                	mov    %esp,%ebp
40e8eb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e8ee:	83 ec 20             	sub    $0x20,%esp
40e8f1:	33 c0                	xor    %eax,%eax
40e8f3:	39 0c c5 68 3b 41 00 	cmp    %ecx,0x413b68(,%eax,8)
40e8fa:	74 27                	je     0x40e923
40e8fc:	40                   	inc    %eax
40e8fd:	83 f8 1d             	cmp    $0x1d,%eax
40e900:	7c f1                	jl     0x40e8f3
40e902:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40e906:	68 ff ff 00 00       	push   $0xffff
40e90b:	ff 75 28             	push   0x28(%ebp)
40e90e:	e8 0f dd ff ff       	call   0x40c622
40e913:	ff 75 08             	push   0x8(%ebp)
40e916:	e8 9a ff ff ff       	call   0x40e8b5
40e91b:	dd 45 20             	fldl   0x20(%ebp)
40e91e:	83 c4 0c             	add    $0xc,%esp
40e921:	c9                   	leave
40e922:	c3                   	ret
40e923:	8b 04 c5 6c 3b 41 00 	mov    0x413b6c(,%eax,8),%eax
40e92a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40e92d:	85 c0                	test   %eax,%eax
40e92f:	74 d5                	je     0x40e906
40e931:	8b 45 10             	mov    0x10(%ebp),%eax
40e934:	89 45 e8             	mov    %eax,-0x18(%ebp)
40e937:	8b 45 14             	mov    0x14(%ebp),%eax
40e93a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e93d:	8b 45 18             	mov    0x18(%ebp),%eax
40e940:	89 45 f0             	mov    %eax,-0x10(%ebp)
40e943:	8b 45 1c             	mov    0x1c(%ebp),%eax
40e946:	56                   	push   %esi
40e947:	8b 75 08             	mov    0x8(%ebp),%esi
40e94a:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e94d:	8b 45 20             	mov    0x20(%ebp),%eax
40e950:	68 ff ff 00 00       	push   $0xffff
40e955:	ff 75 28             	push   0x28(%ebp)
40e958:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e95b:	8b 45 24             	mov    0x24(%ebp),%eax
40e95e:	89 75 e0             	mov    %esi,-0x20(%ebp)
40e961:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e964:	e8 b9 dc ff ff       	call   0x40c622
40e969:	8d 45 e0             	lea    -0x20(%ebp),%eax
40e96c:	50                   	push   %eax
40e96d:	e8 87 76 ff ff       	call   0x405ff9
40e972:	83 c4 0c             	add    $0xc,%esp
40e975:	85 c0                	test   %eax,%eax
40e977:	75 07                	jne    0x40e980
40e979:	56                   	push   %esi
40e97a:	e8 36 ff ff ff       	call   0x40e8b5
40e97f:	59                   	pop    %ecx
40e980:	dd 45 f8             	fldl   -0x8(%ebp)
40e983:	5e                   	pop    %esi
40e984:	c9                   	leave
40e985:	c3                   	ret
40e986:	8b ff                	mov    %edi,%edi
40e988:	55                   	push   %ebp
40e989:	8b ec                	mov    %esp,%ebp
40e98b:	dd 45 08             	fldl   0x8(%ebp)
40e98e:	d9 ee                	fldz
40e990:	dd e1                	fucom  %st(1)
40e992:	df e0                	fnstsw %ax
40e994:	56                   	push   %esi
40e995:	f6 c4 44             	test   $0x44,%ah
40e998:	7a 09                	jp     0x40e9a3
40e99a:	dd d9                	fstp   %st(1)
40e99c:	33 f6                	xor    %esi,%esi
40e99e:	e9 ad 00 00 00       	jmp    0x40ea50
40e9a3:	57                   	push   %edi
40e9a4:	66 8b 7d 0e          	mov    0xe(%ebp),%di
40e9a8:	0f b7 c7             	movzwl %di,%eax
40e9ab:	a9 f0 7f 00 00       	test   $0x7ff0,%eax
40e9b0:	75 7a                	jne    0x40ea2c
40e9b2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40e9b5:	8b 55 08             	mov    0x8(%ebp),%edx