40e6aa:	e8 f1 f3 ff ff       	call   0x40daa0
40e6af:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e6b2:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e6b5:	8b c1                	mov    %ecx,%eax
40e6b7:	0b c2                	or     %edx,%eax
40e6b9:	75 04                	jne    0x40e6bf
40e6bb:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
40e6bf:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40e6c3:	ff 75 08             	push   0x8(%ebp)
40e6c6:	c6 46 38 01          	movb   $0x1,0x38(%esi)
40e6ca:	75 0b                	jne    0x40e6d7
40e6cc:	52                   	push   %edx
40e6cd:	51                   	push   %ecx
40e6ce:	8b ce                	mov    %esi,%ecx
40e6d0:	e8 f0 09 00 00       	call   0x40f0c5
40e6d5:	eb 08                	jmp    0x40e6df
40e6d7:	51                   	push   %ecx
40e6d8:	8b ce                	mov    %esi,%ecx
40e6da:	e8 d1 06 00 00       	call   0x40edb0
40e6df:	8b 46 1c             	mov    0x1c(%esi),%eax
40e6e2:	c1 e8 07             	shr    $0x7,%eax
40e6e5:	a8 01                	test   $0x1,%al
40e6e7:	74 1d                	je     0x40e706
40e6e9:	6a 30                	push   $0x30
40e6eb:	5a                   	pop    %edx
40e6ec:	39 5e 34             	cmp    %ebx,0x34(%esi)
40e6ef:	74 08                	je     0x40e6f9
40e6f1:	8b 46 30             	mov    0x30(%esi),%eax
40e6f4:	66 39 10             	cmp    %dx,(%eax)
40e6f7:	74 0d                	je     0x40e706
40e6f9:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
40e6fd:	8b 4e 30             	mov    0x30(%esi),%ecx
40e700:	66 89 11             	mov    %dx,(%ecx)
40e703:	ff 46 34             	incl   0x34(%esi)
40e706:	b0 01                	mov    $0x1,%al
40e708:	5f                   	pop    %edi
40e709:	5e                   	pop    %esi
40e70a:	5b                   	pop    %ebx
40e70b:	c9                   	leave
40e70c:	c2 04 00             	ret    $0x4
40e70f:	8b ff                	mov    %edi,%edi
40e711:	55                   	push   %ebp
40e712:	8b ec                	mov    %esp,%ebp
40e714:	83 ec 0c             	sub    $0xc,%esp
40e717:	53                   	push   %ebx
40e718:	56                   	push   %esi
40e719:	8b f1                	mov    %ecx,%esi
40e71b:	57                   	push   %edi
40e71c:	ff 76 28             	push   0x28(%esi)
40e71f:	e8 89 29 00 00       	call   0x4110ad
40e724:	59                   	pop    %ecx
40e725:	8b c8                	mov    %eax,%ecx
40e727:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e72a:	6a 00                	push   $0x0
40e72c:	5b                   	pop    %ebx
40e72d:	83 e9 01             	sub    $0x1,%ecx
40e730:	0f 84 99 00 00 00    	je     0x40e7cf
40e736:	83 e9 01             	sub    $0x1,%ecx
40e739:	74 75                	je     0x40e7b0
40e73b:	49                   	dec    %ecx
40e73c:	83 e9 01             	sub    $0x1,%ecx
40e73f:	74 46                	je     0x40e787
40e741:	83 e9 04             	sub    $0x4,%ecx
40e744:	74 27                	je     0x40e76d
40e746:	8b 46 08             	mov    0x8(%esi),%eax
40e749:	83 c0 18             	add    $0x18,%eax
40e74c:	c6 40 04 01          	movb   $0x1,0x4(%eax)
40e750:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e756:	ff 76 08             	push   0x8(%esi)
40e759:	53                   	push   %ebx
40e75a:	53                   	push   %ebx
40e75b:	53                   	push   %ebx
40e75c:	53                   	push   %ebx
40e75d:	53                   	push   %ebx
40e75e:	e8 0e ec ff ff       	call   0x40d371
40e763:	83 c4 18             	add    $0x18,%esp
40e766:	32 c0                	xor    %al,%al
40e768:	e9 28 01 00 00       	jmp    0x40e895
40e76d:	8b 4e 10             	mov    0x10(%esi),%ecx
40e770:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e773:	8b c7                	mov    %edi,%eax
40e775:	c1 e8 04             	shr    $0x4,%eax
40e778:	a8 01                	test   $0x1,%al
40e77a:	8d 41 08             	lea    0x8(%ecx),%eax
40e77d:	89 46 10             	mov    %eax,0x10(%esi)
40e780:	8b 01                	mov    (%ecx),%eax
40e782:	8b 51 04             	mov    0x4(%ecx),%edx
40e785:	eb 66                	jmp    0x40e7ed
40e787:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e78a:	8b c7                	mov    %edi,%eax
40e78c:	c1 e8 04             	shr    $0x4,%eax
40e78f:	a8 01                	test   $0x1,%al
40e791:	74 0d                	je     0x40e7a0
40e793:	8b 46 10             	mov    0x10(%esi),%eax
40e796:	8d 48 04             	lea    0x4(%eax),%ecx
40e799:	89 4e 10             	mov    %ecx,0x10(%esi)
40e79c:	8b 00                	mov    (%eax),%eax
40e79e:	eb 4c                	jmp    0x40e7ec
40e7a0:	8b 4e 10             	mov    0x10(%esi),%ecx
40e7a3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40e7a6:	8d 41 04             	lea    0x4(%ecx),%eax
40e7a9:	89 46 10             	mov    %eax,0x10(%esi)
40e7ac:	8b 01                	mov    (%ecx),%eax
40e7ae:	eb 40                	jmp    0x40e7f0
40e7b0:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e7b3:	8b c7                	mov    %edi,%eax
40e7b5:	8b 4e 10             	mov    0x10(%esi),%ecx
40e7b8:	c1 e8 04             	shr    $0x4,%eax
40e7bb:	a8 01                	test   $0x1,%al
40e7bd:	8d 41 04             	lea    0x4(%ecx),%eax
40e7c0:	89 46 10             	mov    %eax,0x10(%esi)
40e7c3:	74 05                	je     0x40e7ca
40e7c5:	0f bf 01             	movswl (%ecx),%eax
40e7c8:	eb 22                	jmp    0x40e7ec
40e7ca:	0f b7 01             	movzwl (%ecx),%eax
40e7cd:	eb 1d                	jmp    0x40e7ec
40e7cf:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e7d2:	8b c7                	mov    %edi,%eax
40e7d4:	8b 4e 10             	mov    0x10(%esi),%ecx
40e7d7:	c1 e8 04             	shr    $0x4,%eax
40e7da:	a8 01                	test   $0x1,%al
40e7dc:	8d 41 04             	lea    0x4(%ecx),%eax
40e7df:	89 46 10             	mov    %eax,0x10(%esi)
40e7e2:	74 05                	je     0x40e7e9
40e7e4:	0f be 01             	movsbl (%ecx),%eax
40e7e7:	eb 03                	jmp    0x40e7ec
40e7e9:	0f b6 01             	movzbl (%ecx),%eax
40e7ec:	99                   	cltd
40e7ed:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e7f0:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e7f3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e7f6:	8b c7                	mov    %edi,%eax
40e7f8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e7fb:	c1 e8 04             	shr    $0x4,%eax
40e7fe:	a8 01                	test   $0x1,%al
40e800:	74 16                	je     0x40e818
40e802:	3b d3                	cmp    %ebx,%edx
40e804:	7f 12                	jg     0x40e818
40e806:	7c 04                	jl     0x40e80c
40e808:	3b cb                	cmp    %ebx,%ecx
40e80a:	73 0c                	jae    0x40e818
40e80c:	f7 d9                	neg    %ecx
40e80e:	13 d3                	adc    %ebx,%edx
40e810:	f7 da                	neg    %edx
40e812:	83 cf 40             	or     $0x40,%edi
40e815:	89 7e 1c             	mov    %edi,0x1c(%esi)
40e818:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
40e81c:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e81f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e822:	7d 09                	jge    0x40e82d
40e824:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
40e82b:	eb 1a                	jmp    0x40e847
40e82d:	ff 76 08             	push   0x8(%esi)
40e830:	83 e7 f7             	and    $0xfffffff7,%edi
40e833:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40e836:	ff 76 24             	push   0x24(%esi)
40e839:	89 7e 1c             	mov    %edi,0x1c(%esi)
40e83c:	e8 de f1 ff ff       	call   0x40da1f
40e841:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e844:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e847:	8b c1                	mov    %ecx,%eax
40e849:	0b c2                	or     %edx,%eax
40e84b:	75 04                	jne    0x40e851
40e84d:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
40e851:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40e855:	ff 75 08             	push   0x8(%ebp)
40e858:	88 5e 38             	mov    %bl,0x38(%esi)
40e85b:	75 0b                	jne    0x40e868
40e85d:	52                   	push   %edx
40e85e:	51                   	push   %ecx
40e85f:	8b ce                	mov    %esi,%ecx
40e861:	e8 e6 08 00 00       	call   0x40f14c
40e866:	eb 08                	jmp    0x40e870
40e868:	51                   	push   %ecx
40e869:	8b ce                	mov    %esi,%ecx
40e86b:	e8 b3 05 00 00       	call   0x40ee23
40e870:	8b 46 1c             	mov    0x1c(%esi),%eax
40e873:	c1 e8 07             	shr    $0x7,%eax
40e876:	a8 01                	test   $0x1,%al
40e878:	74 19                	je     0x40e893
40e87a:	39 5e 34             	cmp    %ebx,0x34(%esi)
40e87d:	74 08                	je     0x40e887
40e87f:	8b 46 30             	mov    0x30(%esi),%eax
40e882:	80 38 30             	cmpb   $0x30,(%eax)
40e885:	74 0c                	je     0x40e893
40e887:	ff 4e 30             	decl   0x30(%esi)
40e88a:	8b 4e 30             	mov    0x30(%esi),%ecx
40e88d:	c6 01 30             	movb   $0x30,(%ecx)
40e890:	ff 46 34             	incl   0x34(%esi)
40e893:	b0 01                	mov    $0x1,%al
40e895:	5f                   	pop    %edi
40e896:	5e                   	pop    %esi
40e897:	5b                   	pop    %ebx
40e898:	c9                   	leave
40e899:	c2 04 00             	ret    $0x4
40e89c:	8b ff                	mov    %edi,%edi
40e89e:	55                   	push   %ebp
40e89f:	8b ec                	mov    %esp,%ebp
40e8a1:	83 ec 0c             	sub    $0xc,%esp
40e8a4:	53                   	push   %ebx
40e8a5:	56                   	push   %esi
40e8a6:	8b f1                	mov    %ecx,%esi
40e8a8:	57                   	push   %edi
40e8a9:	ff 76 28             	push   0x28(%esi)
40e8ac:	e8 fc 27 00 00       	call   0x4110ad
40e8b1:	59                   	pop    %ecx
40e8b2:	8b c8                	mov    %eax,%ecx
40e8b4:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e8b7:	6a 00                	push   $0x0
40e8b9:	5b                   	pop    %ebx
40e8ba:	83 e9 01             	sub    $0x1,%ecx
40e8bd:	0f 84 99 00 00 00    	je     0x40e95c
40e8c3:	83 e9 01             	sub    $0x1,%ecx
40e8c6:	74 75                	je     0x40e93d
40e8c8:	49                   	dec    %ecx
40e8c9:	83 e9 01             	sub    $0x1,%ecx
40e8cc:	74 46                	je     0x40e914
40e8ce:	83 e9 04             	sub    $0x4,%ecx
40e8d1:	74 27                	je     0x40e8fa
40e8d3:	8b 46 08             	mov    0x8(%esi),%eax
40e8d6:	83 c0 18             	add    $0x18,%eax
40e8d9:	c6 40 04 01          	movb   $0x1,0x4(%eax)
40e8dd:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e8e3:	ff 76 08             	push   0x8(%esi)
40e8e6:	53                   	push   %ebx
40e8e7:	53                   	push   %ebx
40e8e8:	53                   	push   %ebx
40e8e9:	53                   	push   %ebx
40e8ea:	53                   	push   %ebx
40e8eb:	e8 81 ea ff ff       	call   0x40d371
40e8f0:	83 c4 18             	add    $0x18,%esp
40e8f3:	32 c0                	xor    %al,%al
40e8f5:	e9 2d 01 00 00       	jmp    0x40ea27
40e8fa:	8b 4e 10             	mov    0x10(%esi),%ecx
40e8fd:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e900:	8b c7                	mov    %edi,%eax
40e902:	c1 e8 04             	shr    $0x4,%eax
40e905:	a8 01                	test   $0x1,%al
40e907:	8d 41 08             	lea    0x8(%ecx),%eax
40e90a:	89 46 10             	mov    %eax,0x10(%esi)
40e90d:	8b 01                	mov    (%ecx),%eax
40e90f:	8b 51 04             	mov    0x4(%ecx),%edx
40e912:	eb 66                	jmp    0x40e97a
40e914:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e917:	8b c7                	mov    %edi,%eax
40e919:	c1 e8 04             	shr    $0x4,%eax
40e91c:	a8 01                	test   $0x1,%al
40e91e:	74 0d                	je     0x40e92d
40e920:	8b 46 10             	mov    0x10(%esi),%eax
40e923:	8d 48 04             	lea    0x4(%eax),%ecx
40e926:	89 4e 10             	mov    %ecx,0x10(%esi)
40e929:	8b 00                	mov    (%eax),%eax
40e92b:	eb 4c                	jmp    0x40e979
40e92d:	8b 4e 10             	mov    0x10(%esi),%ecx
40e930:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40e933:	8d 41 04             	lea    0x4(%ecx),%eax
40e936:	89 46 10             	mov    %eax,0x10(%esi)
40e939:	8b 01                	mov    (%ecx),%eax
40e93b:	eb 40                	jmp    0x40e97d
40e93d:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e940:	8b c7                	mov    %edi,%eax
40e942:	8b 4e 10             	mov    0x10(%esi),%ecx
40e945:	c1 e8 04             	shr    $0x4,%eax
40e948:	a8 01                	test   $0x1,%al
40e94a:	8d 41 04             	lea    0x4(%ecx),%eax
40e94d:	89 46 10             	mov    %eax,0x10(%esi)
40e950:	74 05                	je     0x40e957
40e952:	0f bf 01             	movswl (%ecx),%eax
40e955:	eb 22                	jmp    0x40e979
40e957:	0f b7 01             	movzwl (%ecx),%eax
40e95a:	eb 1d                	jmp    0x40e979
40e95c:	8b 7e 1c             	mov    0x1c(%esi),%edi
40e95f:	8b c7                	mov    %edi,%eax
40e961:	8b 4e 10             	mov    0x10(%esi),%ecx
40e964:	c1 e8 04             	shr    $0x4,%eax
40e967:	a8 01                	test   $0x1,%al
40e969:	8d 41 04             	lea    0x4(%ecx),%eax
40e96c:	89 46 10             	mov    %eax,0x10(%esi)
40e96f:	74 05                	je     0x40e976
40e971:	0f be 01             	movsbl (%ecx),%eax
40e974:	eb 03                	jmp    0x40e979
40e976:	0f b6 01             	movzbl (%ecx),%eax
40e979:	99                   	cltd
40e97a:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e97d:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e980:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e983:	8b c7                	mov    %edi,%eax
40e985:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e988:	c1 e8 04             	shr    $0x4,%eax
40e98b:	a8 01                	test   $0x1,%al
40e98d:	74 16                	je     0x40e9a5
40e98f:	3b d3                	cmp    %ebx,%edx
40e991:	7f 12                	jg     0x40e9a5
40e993:	7c 04                	jl     0x40e999
40e995:	3b cb                	cmp    %ebx,%ecx
40e997:	73 0c                	jae    0x40e9a5
40e999:	f7 d9                	neg    %ecx
40e99b:	13 d3                	adc    %ebx,%edx
40e99d:	f7 da                	neg    %edx
40e99f:	83 cf 40             	or     $0x40,%edi
40e9a2:	89 7e 1c             	mov    %edi,0x1c(%esi)
40e9a5:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
40e9a9:	89 55 f8             	mov    %edx,-0x8(%ebp)
40e9ac:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e9af:	7d 09                	jge    0x40e9ba
40e9b1:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
40e9b8:	eb 1a                	jmp    0x40e9d4
40e9ba:	ff 76 08             	push   0x8(%esi)
40e9bd:	83 e7 f7             	and    $0xfffffff7,%edi
40e9c0:	8d 4e 3c             	lea    0x3c(%esi),%ecx
40e9c3:	ff 76 24             	push   0x24(%esi)
40e9c6:	89 7e 1c             	mov    %edi,0x1c(%esi)
40e9c9:	e8 d2 f0 ff ff       	call   0x40daa0
40e9ce:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40e9d1:	8b 55 f8             	mov    -0x8(%ebp),%edx
40e9d4:	8b c1                	mov    %ecx,%eax
40e9d6:	0b c2                	or     %edx,%eax
40e9d8:	75 04                	jne    0x40e9de
40e9da:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
40e9de:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
40e9e2:	ff 75 08             	push   0x8(%ebp)
40e9e5:	c6 46 38 01          	movb   $0x1,0x38(%esi)
40e9e9:	75 0b                	jne    0x40e9f6
40e9eb:	52                   	push   %edx
40e9ec:	51                   	push   %ecx
40e9ed:	8b ce                	mov    %esi,%ecx
40e9ef:	e8 ff 07 00 00       	call   0x40f1f3
40e9f4:	eb 08                	jmp    0x40e9fe
40e9f6:	51                   	push   %ecx
40e9f7:	8b ce                	mov    %esi,%ecx
40e9f9:	e8 ac 04 00 00       	call   0x40eeaa
40e9fe:	8b 46 1c             	mov    0x1c(%esi),%eax
40ea01:	c1 e8 07             	shr    $0x7,%eax
40ea04:	a8 01                	test   $0x1,%al
40ea06:	74 1d                	je     0x40ea25
40ea08:	6a 30                	push   $0x30
40ea0a:	5a                   	pop    %edx
40ea0b:	39 5e 34             	cmp    %ebx,0x34(%esi)
40ea0e:	74 08                	je     0x40ea18
40ea10:	8b 46 30             	mov    0x30(%esi),%eax
40ea13:	66 39 10             	cmp    %dx,(%eax)
40ea16:	74 0d                	je     0x40ea25
40ea18:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
40ea1c:	8b 4e 30             	mov    0x30(%esi),%ecx
40ea1f:	66 89 11             	mov    %dx,(%ecx)
40ea22:	ff 46 34             	incl   0x34(%esi)
40ea25:	b0 01                	mov    $0x1,%al
40ea27:	5f                   	pop    %edi
40ea28:	5e                   	pop    %esi
40ea29:	5b                   	pop    %ebx