40c70d:	75 02                	jne    0x40c711
40c70f:	8b df                	mov    %edi,%ebx
40c711:	ff 76 08             	push   0x8(%esi)
40c714:	8b cf                	mov    %edi,%ecx
40c716:	50                   	push   %eax
40c717:	e8 d0 f2 ff ff       	call   0x40b9ec
40c71c:	50                   	push   %eax
40c71d:	8d 46 38             	lea    0x38(%esi),%eax
40c720:	53                   	push   %ebx
40c721:	50                   	push   %eax
40c722:	e8 13 76 00 00       	call   0x413d3a
40c727:	83 c4 14             	add    $0x14,%esp
40c72a:	5b                   	pop    %ebx
40c72b:	85 c0                	test   %eax,%eax
40c72d:	74 25                	je     0x40c754
40c72f:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40c733:	eb 1f                	jmp    0x40c754
40c735:	8b 8f 04 04 00 00    	mov    0x404(%edi),%ecx
40c73b:	85 c9                	test   %ecx,%ecx
40c73d:	75 02                	jne    0x40c741
40c73f:	8b cf                	mov    %edi,%ecx
40c741:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c745:	8b 46 14             	mov    0x14(%esi),%eax
40c748:	8a 40 fc             	mov    -0x4(%eax),%al
40c74b:	88 01                	mov    %al,(%ecx)
40c74d:	c7 46 38 01 00 00 00 	movl   $0x1,0x38(%esi)
40c754:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
40c75a:	85 c0                	test   %eax,%eax
40c75c:	74 02                	je     0x40c760
40c75e:	8b f8                	mov    %eax,%edi
40c760:	89 7e 34             	mov    %edi,0x34(%esi)
40c763:	b0 01                	mov    $0x1,%al
40c765:	5f                   	pop    %edi
40c766:	5e                   	pop    %esi
40c767:	c2 04 00             	ret    $0x4
40c76a:	8b ff                	mov    %edi,%edi
40c76c:	55                   	push   %ebp
40c76d:	8b ec                	mov    %esp,%ebp
40c76f:	51                   	push   %ecx
40c770:	53                   	push   %ebx
40c771:	56                   	push   %esi
40c772:	8b f1                	mov    %ecx,%esi
40c774:	57                   	push   %edi
40c775:	ff 76 2c             	push   0x2c(%esi)
40c778:	e8 53 fd ff ff       	call   0x40c4d0
40c77d:	59                   	pop    %ecx
40c77e:	8b c8                	mov    %eax,%ecx
40c780:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c783:	83 e9 01             	sub    $0x1,%ecx
40c786:	74 78                	je     0x40c800
40c788:	83 e9 01             	sub    $0x1,%ecx
40c78b:	74 56                	je     0x40c7e3
40c78d:	49                   	dec    %ecx
40c78e:	83 e9 01             	sub    $0x1,%ecx
40c791:	74 33                	je     0x40c7c6
40c793:	83 e9 04             	sub    $0x4,%ecx
40c796:	74 17                	je     0x40c7af
40c798:	e8 5e 26 00 00       	call   0x40edfb
40c79d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c7a3:	e8 d9 08 00 00       	call   0x40d081
40c7a8:	32 c0                	xor    %al,%al
40c7aa:	e9 05 01 00 00       	jmp    0x40c8b4
40c7af:	8b 46 20             	mov    0x20(%esi),%eax
40c7b2:	83 46 14 08          	addl   $0x8,0x14(%esi)
40c7b6:	c1 e8 04             	shr    $0x4,%eax
40c7b9:	a8 01                	test   $0x1,%al
40c7bb:	8b 46 14             	mov    0x14(%esi),%eax
40c7be:	8b 78 f8             	mov    -0x8(%eax),%edi
40c7c1:	8b 58 fc             	mov    -0x4(%eax),%ebx
40c7c4:	eb 5a                	jmp    0x40c820
40c7c6:	8b 46 20             	mov    0x20(%esi),%eax
40c7c9:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c7cd:	c1 e8 04             	shr    $0x4,%eax
40c7d0:	a8 01                	test   $0x1,%al
40c7d2:	8b 46 14             	mov    0x14(%esi),%eax
40c7d5:	74 05                	je     0x40c7dc
40c7d7:	8b 40 fc             	mov    -0x4(%eax),%eax
40c7da:	eb 3f                	jmp    0x40c81b
40c7dc:	8b 78 fc             	mov    -0x4(%eax),%edi
40c7df:	33 db                	xor    %ebx,%ebx
40c7e1:	eb 3d                	jmp    0x40c820
40c7e3:	8b 46 20             	mov    0x20(%esi),%eax
40c7e6:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c7ea:	c1 e8 04             	shr    $0x4,%eax
40c7ed:	a8 01                	test   $0x1,%al
40c7ef:	8b 46 14             	mov    0x14(%esi),%eax
40c7f2:	74 06                	je     0x40c7fa
40c7f4:	0f bf 40 fc          	movswl -0x4(%eax),%eax
40c7f8:	eb 21                	jmp    0x40c81b
40c7fa:	0f b7 40 fc          	movzwl -0x4(%eax),%eax
40c7fe:	eb 1b                	jmp    0x40c81b
40c800:	8b 46 20             	mov    0x20(%esi),%eax
40c803:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c807:	c1 e8 04             	shr    $0x4,%eax
40c80a:	a8 01                	test   $0x1,%al
40c80c:	8b 46 14             	mov    0x14(%esi),%eax
40c80f:	74 06                	je     0x40c817
40c811:	0f be 40 fc          	movsbl -0x4(%eax),%eax
40c815:	eb 04                	jmp    0x40c81b
40c817:	0f b6 40 fc          	movzbl -0x4(%eax),%eax
40c81b:	99                   	cltd
40c81c:	8b f8                	mov    %eax,%edi
40c81e:	8b da                	mov    %edx,%ebx
40c820:	8b 4e 20             	mov    0x20(%esi),%ecx
40c823:	8b c1                	mov    %ecx,%eax
40c825:	c1 e8 04             	shr    $0x4,%eax
40c828:	a8 01                	test   $0x1,%al
40c82a:	74 17                	je     0x40c843
40c82c:	85 db                	test   %ebx,%ebx
40c82e:	7f 13                	jg     0x40c843
40c830:	7c 04                	jl     0x40c836
40c832:	85 ff                	test   %edi,%edi
40c834:	73 0d                	jae    0x40c843
40c836:	f7 df                	neg    %edi
40c838:	83 d3 00             	adc    $0x0,%ebx
40c83b:	f7 db                	neg    %ebx
40c83d:	83 c9 40             	or     $0x40,%ecx
40c840:	89 4e 20             	mov    %ecx,0x20(%esi)
40c843:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
40c847:	7d 09                	jge    0x40c852
40c849:	c7 46 28 01 00 00 00 	movl   $0x1,0x28(%esi)
40c850:	eb 11                	jmp    0x40c863
40c852:	ff 76 28             	push   0x28(%esi)
40c855:	83 e1 f7             	and    $0xfffffff7,%ecx
40c858:	89 4e 20             	mov    %ecx,0x20(%esi)
40c85b:	8d 4e 40             	lea    0x40(%esi),%ecx
40c85e:	e8 a1 f1 ff ff       	call   0x40ba04
40c863:	8b c7                	mov    %edi,%eax
40c865:	0b c3                	or     %ebx,%eax
40c867:	75 04                	jne    0x40c86d
40c869:	83 66 20 df          	andl   $0xffffffdf,0x20(%esi)
40c86d:	83 7d fc 08          	cmpl   $0x8,-0x4(%ebp)
40c871:	8b ce                	mov    %esi,%ecx
40c873:	ff 75 0c             	push   0xc(%ebp)
40c876:	c6 46 3c 00          	movb   $0x0,0x3c(%esi)
40c87a:	ff 75 08             	push   0x8(%ebp)
40c87d:	75 09                	jne    0x40c888
40c87f:	53                   	push   %ebx
40c880:	57                   	push   %edi
40c881:	e8 bd f2 ff ff       	call   0x40bb43
40c886:	eb 06                	jmp    0x40c88e
40c888:	57                   	push   %edi
40c889:	e8 42 f2 ff ff       	call   0x40bad0
40c88e:	8b 46 20             	mov    0x20(%esi),%eax
40c891:	c1 e8 07             	shr    $0x7,%eax
40c894:	a8 01                	test   $0x1,%al
40c896:	74 1a                	je     0x40c8b2
40c898:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40c89c:	74 08                	je     0x40c8a6
40c89e:	8b 46 34             	mov    0x34(%esi),%eax
40c8a1:	80 38 30             	cmpb   $0x30,(%eax)
40c8a4:	74 0c                	je     0x40c8b2
40c8a6:	ff 4e 34             	decl   0x34(%esi)
40c8a9:	8b 4e 34             	mov    0x34(%esi),%ecx
40c8ac:	c6 01 30             	movb   $0x30,(%ecx)
40c8af:	ff 46 38             	incl   0x38(%esi)
40c8b2:	b0 01                	mov    $0x1,%al
40c8b4:	5f                   	pop    %edi
40c8b5:	5e                   	pop    %esi
40c8b6:	5b                   	pop    %ebx
40c8b7:	c9                   	leave
40c8b8:	c2 08 00             	ret    $0x8
40c8bb:	8b ff                	mov    %edi,%edi
40c8bd:	56                   	push   %esi
40c8be:	8b f1                	mov    %ecx,%esi
40c8c0:	57                   	push   %edi
40c8c1:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c8c5:	8b 46 14             	mov    0x14(%esi),%eax
40c8c8:	8b 78 fc             	mov    -0x4(%eax),%edi
40c8cb:	e8 e5 86 00 00       	call   0x414fb5
40c8d0:	85 c0                	test   %eax,%eax
40c8d2:	75 14                	jne    0x40c8e8
40c8d4:	e8 22 25 00 00       	call   0x40edfb
40c8d9:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c8df:	e8 9d 07 00 00       	call   0x40d081
40c8e4:	32 c0                	xor    %al,%al
40c8e6:	eb 44                	jmp    0x40c92c
40c8e8:	ff 76 2c             	push   0x2c(%esi)
40c8eb:	e8 e0 fb ff ff       	call   0x40c4d0
40c8f0:	59                   	pop    %ecx
40c8f1:	83 e8 01             	sub    $0x1,%eax
40c8f4:	74 2b                	je     0x40c921
40c8f6:	83 e8 01             	sub    $0x1,%eax
40c8f9:	74 1d                	je     0x40c918
40c8fb:	48                   	dec    %eax
40c8fc:	83 e8 01             	sub    $0x1,%eax
40c8ff:	74 10                	je     0x40c911
40c901:	83 e8 04             	sub    $0x4,%eax
40c904:	75 ce                	jne    0x40c8d4
40c906:	8b 46 18             	mov    0x18(%esi),%eax
40c909:	99                   	cltd
40c90a:	89 07                	mov    %eax,(%edi)
40c90c:	89 57 04             	mov    %edx,0x4(%edi)
40c90f:	eb 15                	jmp    0x40c926
40c911:	8b 46 18             	mov    0x18(%esi),%eax
40c914:	89 07                	mov    %eax,(%edi)
40c916:	eb 0e                	jmp    0x40c926
40c918:	66 8b 46 18          	mov    0x18(%esi),%ax
40c91c:	66 89 07             	mov    %ax,(%edi)
40c91f:	eb 05                	jmp    0x40c926
40c921:	8a 46 18             	mov    0x18(%esi),%al
40c924:	88 07                	mov    %al,(%edi)
40c926:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40c92a:	b0 01                	mov    $0x1,%al
40c92c:	5f                   	pop    %edi
40c92d:	5e                   	pop    %esi
40c92e:	c3                   	ret
40c92f:	8b 51 20             	mov    0x20(%ecx),%edx
40c932:	8b c2                	mov    %edx,%eax
40c934:	c1 e8 05             	shr    $0x5,%eax
40c937:	a8 01                	test   $0x1,%al
40c939:	74 09                	je     0x40c944
40c93b:	81 ca 80 00 00 00    	or     $0x80,%edx
40c941:	89 51 20             	mov    %edx,0x20(%ecx)
40c944:	6a 00                	push   $0x0
40c946:	6a 08                	push   $0x8
40c948:	e8 1d fe ff ff       	call   0x40c76a
40c94d:	c3                   	ret
40c94e:	6a 01                	push   $0x1
40c950:	6a 10                	push   $0x10
40c952:	c7 41 28 08 00 00 00 	movl   $0x8,0x28(%ecx)
40c959:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40c960:	e8 05 fe ff ff       	call   0x40c76a
40c965:	c3                   	ret
40c966:	8b ff                	mov    %edi,%edi
40c968:	53                   	push   %ebx
40c969:	56                   	push   %esi
40c96a:	8b f1                	mov    %ecx,%esi
40c96c:	57                   	push   %edi
40c96d:	83 46 14 04          	addl   $0x4,0x14(%esi)
40c971:	8b 46 14             	mov    0x14(%esi),%eax
40c974:	8b 5e 28             	mov    0x28(%esi),%ebx
40c977:	8b 78 fc             	mov    -0x4(%eax),%edi
40c97a:	89 7e 34             	mov    %edi,0x34(%esi)
40c97d:	83 fb ff             	cmp    $0xffffffff,%ebx
40c980:	75 05                	jne    0x40c987
40c982:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
40c987:	ff 76 2c             	push   0x2c(%esi)
40c98a:	0f b6 46 31          	movzbl 0x31(%esi),%eax
40c98e:	50                   	push   %eax
40c98f:	ff 76 04             	push   0x4(%esi)
40c992:	ff 36                	push   (%esi)
40c994:	e8 e8 f0 ff ff       	call   0x40ba81
40c999:	83 c4 10             	add    $0x10,%esp
40c99c:	84 c0                	test   %al,%al
40c99e:	74 19                	je     0x40c9b9
40c9a0:	85 ff                	test   %edi,%edi
40c9a2:	75 08                	jne    0x40c9ac
40c9a4:	bf b8 60 42 00       	mov    $0x4260b8,%edi
40c9a9:	89 7e 34             	mov    %edi,0x34(%esi)
40c9ac:	53                   	push   %ebx
40c9ad:	57                   	push   %edi
40c9ae:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40c9b2:	e8 d7 2e 00 00       	call   0x40f88e
40c9b7:	eb 13                	jmp    0x40c9cc
40c9b9:	85 ff                	test   %edi,%edi
40c9bb:	75 08                	jne    0x40c9c5
40c9bd:	bf c8 60 42 00       	mov    $0x4260c8,%edi
40c9c2:	89 7e 34             	mov    %edi,0x34(%esi)
40c9c5:	53                   	push   %ebx
40c9c6:	57                   	push   %edi
40c9c7:	e8 a0 2d 00 00       	call   0x40f76c
40c9cc:	59                   	pop    %ecx
40c9cd:	59                   	pop    %ecx
40c9ce:	5f                   	pop    %edi
40c9cf:	89 46 38             	mov    %eax,0x38(%esi)
40c9d2:	b0 01                	mov    $0x1,%al
40c9d4:	5e                   	pop    %esi
40c9d5:	5b                   	pop    %ebx
40c9d6:	c3                   	ret
40c9d7:	83 39 00             	cmpl   $0x0,(%ecx)
40c9da:	75 13                	jne    0x40c9ef
40c9dc:	e8 1a 24 00 00       	call   0x40edfb
40c9e1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c9e7:	e8 95 06 00 00       	call   0x40d081
40c9ec:	32 c0                	xor    %al,%al
40c9ee:	c3                   	ret
40c9ef:	b0 01                	mov    $0x1,%al
40c9f1:	c3                   	ret
40c9f2:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40c9f6:	74 19                	je     0x40ca11
40c9f8:	83 79 1c 07          	cmpl   $0x7,0x1c(%ecx)
40c9fc:	74 13                	je     0x40ca11
40c9fe:	e8 f8 23 00 00       	call   0x40edfb
40ca03:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ca09:	e8 73 06 00 00       	call   0x40d081
40ca0e:	32 c0                	xor    %al,%al
40ca10:	c3                   	ret
40ca11:	b0 01                	mov    $0x1,%al
40ca13:	c3                   	ret
40ca14:	8b ff                	mov    %edi,%edi
40ca16:	55                   	push   %ebp
40ca17:	8b ec                	mov    %esp,%ebp
40ca19:	8b d1                	mov    %ecx,%edx
40ca1b:	8b 0a                	mov    (%edx),%ecx
40ca1d:	8b 41 08             	mov    0x8(%ecx),%eax
40ca20:	3b 41 04             	cmp    0x4(%ecx),%eax
40ca23:	8b 45 0c             	mov    0xc(%ebp),%eax
40ca26:	75 14                	jne    0x40ca3c
40ca28:	80 79 0c 00          	cmpb   $0x0,0xc(%ecx)
40ca2c:	74 04                	je     0x40ca32
40ca2e:	ff 00                	incl   (%eax)
40ca30:	eb 03                	jmp    0x40ca35
40ca32:	83 08 ff             	orl    $0xffffffff,(%eax)
40ca35:	8b 02                	mov    (%edx),%eax
40ca37:	8a 40 0c             	mov    0xc(%eax),%al
40ca3a:	eb 16                	jmp    0x40ca52
40ca3c:	ff 00                	incl   (%eax)
40ca3e:	8b 02                	mov    (%edx),%eax
40ca40:	ff 40 08             	incl   0x8(%eax)
40ca43:	8b 02                	mov    (%edx),%eax
40ca45:	8b 08                	mov    (%eax),%ecx
40ca47:	8a 45 08             	mov    0x8(%ebp),%al
40ca4a:	88 01                	mov    %al,(%ecx)
40ca4c:	8b 02                	mov    (%edx),%eax
40ca4e:	ff 00                	incl   (%eax)
40ca50:	b0 01                	mov    $0x1,%al
40ca52:	5d                   	pop    %ebp
40ca53:	c2 08 00             	ret    $0x8
40ca56:	8b ff                	mov    %edi,%edi
40ca58:	55                   	push   %ebp
40ca59:	8b ec                	mov    %esp,%ebp
40ca5b:	83 ec 10             	sub    $0x10,%esp
40ca5e:	a1 14 30 43 00       	mov    0x433014,%eax
40ca63:	33 c5                	xor    %ebp,%eax
40ca65:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ca68:	53                   	push   %ebx
40ca69:	56                   	push   %esi
40ca6a:	8b f1                	mov    %ecx,%esi
40ca6c:	57                   	push   %edi
40ca6d:	80 7e 3c 00          	cmpb   $0x0,0x3c(%esi)
40ca71:	74 5c                	je     0x40cacf
40ca73:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40ca77:	7e 56                	jle    0x40cacf
40ca79:	8b 7e 34             	mov    0x34(%esi),%edi
40ca7c:	33 db                	xor    %ebx,%ebx
40ca7e:	ff 76 08             	push   0x8(%esi)
40ca81:	0f b7 07             	movzwl (%edi),%eax
40ca84:	8d 7f 02             	lea    0x2(%edi),%edi
40ca87:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40ca8b:	50                   	push   %eax
40ca8c:	6a 06                	push   $0x6
40ca8e:	8d 45 f4             	lea    -0xc(%ebp),%eax
40ca91:	50                   	push   %eax
40ca92:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ca95:	50                   	push   %eax
40ca96:	e8 9f 72 00 00       	call   0x413d3a
40ca9b:	83 c4 14             	add    $0x14,%esp
40ca9e:	85 c0                	test   %eax,%eax
40caa0:	75 27                	jne    0x40cac9