40e7e0:	8b 46 34             	mov    0x34(%esi),%eax
40e7e3:	80 38 30             	cmpb   $0x30,(%eax)
40e7e6:	74 0c                	je     0x40e7f4
40e7e8:	ff 4e 34             	decl   0x34(%esi)
40e7eb:	8b 4e 34             	mov    0x34(%esi),%ecx
40e7ee:	c6 01 30             	movb   $0x30,(%ecx)
40e7f1:	ff 46 38             	incl   0x38(%esi)
40e7f4:	b0 01                	mov    $0x1,%al
40e7f6:	5e                   	pop    %esi
40e7f7:	5b                   	pop    %ebx
40e7f8:	5d                   	pop    %ebp
40e7f9:	c2 08 00             	ret    $0x8
40e7fc:	8b ff                	mov    %edi,%edi
40e7fe:	55                   	push   %ebp
40e7ff:	8b ec                	mov    %esp,%ebp
40e801:	53                   	push   %ebx
40e802:	56                   	push   %esi
40e803:	8b f1                	mov    %ecx,%esi
40e805:	ff 76 2c             	push   0x2c(%esi)
40e808:	e8 f8 f5 ff ff       	call   0x40de05
40e80d:	59                   	pop    %ecx
40e80e:	8b d8                	mov    %eax,%ebx
40e810:	8b cb                	mov    %ebx,%ecx
40e812:	83 e9 01             	sub    $0x1,%ecx
40e815:	74 78                	je     0x40e88f
40e817:	83 e9 01             	sub    $0x1,%ecx
40e81a:	74 56                	je     0x40e872
40e81c:	49                   	dec    %ecx
40e81d:	83 e9 01             	sub    $0x1,%ecx
40e820:	74 33                	je     0x40e855
40e822:	83 e9 04             	sub    $0x4,%ecx
40e825:	74 17                	je     0x40e83e
40e827:	e8 3f 62 00 00       	call   0x414a6b
40e82c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e832:	e8 ab d4 ff ff       	call   0x40bce2
40e837:	32 c0                	xor    %al,%al
40e839:	e9 02 01 00 00       	jmp    0x40e940
40e83e:	8b 46 20             	mov    0x20(%esi),%eax
40e841:	83 46 14 08          	addl   $0x8,0x14(%esi)
40e845:	c1 e8 04             	shr    $0x4,%eax
40e848:	a8 01                	test   $0x1,%al
40e84a:	8b 46 14             	mov    0x14(%esi),%eax
40e84d:	8b 48 f8             	mov    -0x8(%eax),%ecx
40e850:	8b 50 fc             	mov    -0x4(%eax),%edx
40e853:	eb 58                	jmp    0x40e8ad
40e855:	8b 46 20             	mov    0x20(%esi),%eax
40e858:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e85c:	c1 e8 04             	shr    $0x4,%eax
40e85f:	a8 01                	test   $0x1,%al
40e861:	8b 46 14             	mov    0x14(%esi),%eax
40e864:	74 05                	je     0x40e86b
40e866:	8b 40 fc             	mov    -0x4(%eax),%eax
40e869:	eb 3f                	jmp    0x40e8aa
40e86b:	8b 48 fc             	mov    -0x4(%eax),%ecx
40e86e:	33 d2                	xor    %edx,%edx
40e870:	eb 3b                	jmp    0x40e8ad
40e872:	8b 46 20             	mov    0x20(%esi),%eax
40e875:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e879:	c1 e8 04             	shr    $0x4,%eax
40e87c:	a8 01                	test   $0x1,%al
40e87e:	8b 46 14             	mov    0x14(%esi),%eax
40e881:	74 06                	je     0x40e889
40e883:	0f bf 40 fc          	movswl -0x4(%eax),%eax
40e887:	eb 21                	jmp    0x40e8aa
40e889:	0f b7 40 fc          	movzwl -0x4(%eax),%eax
40e88d:	eb 1b                	jmp    0x40e8aa
40e88f:	8b 46 20             	mov    0x20(%esi),%eax
40e892:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e896:	c1 e8 04             	shr    $0x4,%eax
40e899:	a8 01                	test   $0x1,%al
40e89b:	8b 46 14             	mov    0x14(%esi),%eax
40e89e:	74 06                	je     0x40e8a6
40e8a0:	0f be 40 fc          	movsbl -0x4(%eax),%eax
40e8a4:	eb 04                	jmp    0x40e8aa
40e8a6:	0f b6 40 fc          	movzbl -0x4(%eax),%eax
40e8aa:	99                   	cltd
40e8ab:	8b c8                	mov    %eax,%ecx
40e8ad:	57                   	push   %edi
40e8ae:	8b 7e 20             	mov    0x20(%esi),%edi
40e8b1:	8b c7                	mov    %edi,%eax
40e8b3:	c1 e8 04             	shr    $0x4,%eax
40e8b6:	a8 01                	test   $0x1,%al
40e8b8:	74 17                	je     0x40e8d1
40e8ba:	85 d2                	test   %edx,%edx
40e8bc:	7f 13                	jg     0x40e8d1
40e8be:	7c 04                	jl     0x40e8c4
40e8c0:	85 c9                	test   %ecx,%ecx
40e8c2:	73 0d                	jae    0x40e8d1
40e8c4:	f7 d9                	neg    %ecx
40e8c6:	83 d2 00             	adc    $0x0,%edx
40e8c9:	f7 da                	neg    %edx
40e8cb:	83 cf 40             	or     $0x40,%edi
40e8ce:	89 7e 20             	mov    %edi,0x20(%esi)
40e8d1:	83 7e 28 00          	cmpl   $0x0,0x28(%esi)
40e8d5:	5f                   	pop    %edi
40e8d6:	7d 09                	jge    0x40e8e1
40e8d8:	c7 46 28 01 00 00 00 	movl   $0x1,0x28(%esi)
40e8df:	eb 11                	jmp    0x40e8f2
40e8e1:	83 66 20 f7          	andl   $0xfffffff7,0x20(%esi)
40e8e5:	b8 00 02 00 00       	mov    $0x200,%eax
40e8ea:	39 46 28             	cmp    %eax,0x28(%esi)
40e8ed:	7e 03                	jle    0x40e8f2
40e8ef:	89 46 28             	mov    %eax,0x28(%esi)
40e8f2:	8b c1                	mov    %ecx,%eax
40e8f4:	0b c2                	or     %edx,%eax
40e8f6:	75 04                	jne    0x40e8fc
40e8f8:	83 66 20 df          	andl   $0xffffffdf,0x20(%esi)
40e8fc:	ff 75 0c             	push   0xc(%ebp)
40e8ff:	ff 75 08             	push   0x8(%ebp)
40e902:	83 fb 08             	cmp    $0x8,%ebx
40e905:	75 0b                	jne    0x40e912
40e907:	52                   	push   %edx
40e908:	51                   	push   %ecx
40e909:	8b ce                	mov    %esi,%ecx
40e90b:	e8 c1 db ff ff       	call   0x40c4d1
40e910:	eb 08                	jmp    0x40e91a
40e912:	51                   	push   %ecx
40e913:	8b ce                	mov    %esi,%ecx
40e915:	e8 32 da ff ff       	call   0x40c34c
40e91a:	8b 46 20             	mov    0x20(%esi),%eax
40e91d:	c1 e8 07             	shr    $0x7,%eax
40e920:	a8 01                	test   $0x1,%al
40e922:	74 1a                	je     0x40e93e
40e924:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
40e928:	74 08                	je     0x40e932
40e92a:	8b 46 34             	mov    0x34(%esi),%eax
40e92d:	80 38 30             	cmpb   $0x30,(%eax)
40e930:	74 0c                	je     0x40e93e
40e932:	ff 4e 34             	decl   0x34(%esi)
40e935:	8b 4e 34             	mov    0x34(%esi),%ecx
40e938:	c6 01 30             	movb   $0x30,(%ecx)
40e93b:	ff 46 38             	incl   0x38(%esi)
40e93e:	b0 01                	mov    $0x1,%al
40e940:	5e                   	pop    %esi
40e941:	5b                   	pop    %ebx
40e942:	5d                   	pop    %ebp
40e943:	c2 08 00             	ret    $0x8
40e946:	8b ff                	mov    %edi,%edi
40e948:	56                   	push   %esi
40e949:	8b f1                	mov    %ecx,%esi
40e94b:	57                   	push   %edi
40e94c:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e950:	8b 46 14             	mov    0x14(%esi),%eax
40e953:	8b 78 fc             	mov    -0x4(%eax),%edi
40e956:	e8 73 be 00 00       	call   0x41a7ce
40e95b:	85 c0                	test   %eax,%eax
40e95d:	75 14                	jne    0x40e973
40e95f:	e8 07 61 00 00       	call   0x414a6b
40e964:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e96a:	e8 73 d3 ff ff       	call   0x40bce2
40e96f:	32 c0                	xor    %al,%al
40e971:	eb 44                	jmp    0x40e9b7
40e973:	ff 76 2c             	push   0x2c(%esi)
40e976:	e8 8a f4 ff ff       	call   0x40de05
40e97b:	59                   	pop    %ecx
40e97c:	83 e8 01             	sub    $0x1,%eax
40e97f:	74 2b                	je     0x40e9ac
40e981:	83 e8 01             	sub    $0x1,%eax
40e984:	74 1d                	je     0x40e9a3
40e986:	48                   	dec    %eax
40e987:	83 e8 01             	sub    $0x1,%eax
40e98a:	74 10                	je     0x40e99c
40e98c:	83 e8 04             	sub    $0x4,%eax
40e98f:	75 ce                	jne    0x40e95f
40e991:	8b 46 18             	mov    0x18(%esi),%eax
40e994:	99                   	cltd
40e995:	89 07                	mov    %eax,(%edi)
40e997:	89 57 04             	mov    %edx,0x4(%edi)
40e99a:	eb 15                	jmp    0x40e9b1
40e99c:	8b 46 18             	mov    0x18(%esi),%eax
40e99f:	89 07                	mov    %eax,(%edi)
40e9a1:	eb 0e                	jmp    0x40e9b1
40e9a3:	66 8b 46 18          	mov    0x18(%esi),%ax
40e9a7:	66 89 07             	mov    %ax,(%edi)
40e9aa:	eb 05                	jmp    0x40e9b1
40e9ac:	8a 46 18             	mov    0x18(%esi),%al
40e9af:	88 07                	mov    %al,(%edi)
40e9b1:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40e9b5:	b0 01                	mov    $0x1,%al
40e9b7:	5f                   	pop    %edi
40e9b8:	5e                   	pop    %esi
40e9b9:	c3                   	ret
40e9ba:	8b ff                	mov    %edi,%edi
40e9bc:	56                   	push   %esi
40e9bd:	8b f1                	mov    %ecx,%esi
40e9bf:	57                   	push   %edi
40e9c0:	83 46 14 04          	addl   $0x4,0x14(%esi)
40e9c4:	8b 46 14             	mov    0x14(%esi),%eax
40e9c7:	8b 78 fc             	mov    -0x4(%eax),%edi
40e9ca:	e8 ff bd 00 00       	call   0x41a7ce
40e9cf:	85 c0                	test   %eax,%eax
40e9d1:	75 14                	jne    0x40e9e7
40e9d3:	e8 93 60 00 00       	call   0x414a6b
40e9d8:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e9de:	e8 ff d2 ff ff       	call   0x40bce2
40e9e3:	32 c0                	xor    %al,%al
40e9e5:	eb 44                	jmp    0x40ea2b
40e9e7:	ff 76 2c             	push   0x2c(%esi)
40e9ea:	e8 16 f4 ff ff       	call   0x40de05
40e9ef:	59                   	pop    %ecx
40e9f0:	83 e8 01             	sub    $0x1,%eax
40e9f3:	74 2b                	je     0x40ea20
40e9f5:	83 e8 01             	sub    $0x1,%eax
40e9f8:	74 1d                	je     0x40ea17
40e9fa:	48                   	dec    %eax
40e9fb:	83 e8 01             	sub    $0x1,%eax
40e9fe:	74 10                	je     0x40ea10
40ea00:	83 e8 04             	sub    $0x4,%eax
40ea03:	75 ce                	jne    0x40e9d3
40ea05:	8b 46 18             	mov    0x18(%esi),%eax
40ea08:	99                   	cltd
40ea09:	89 07                	mov    %eax,(%edi)
40ea0b:	89 57 04             	mov    %edx,0x4(%edi)
40ea0e:	eb 15                	jmp    0x40ea25
40ea10:	8b 46 18             	mov    0x18(%esi),%eax
40ea13:	89 07                	mov    %eax,(%edi)
40ea15:	eb 0e                	jmp    0x40ea25
40ea17:	66 8b 46 18          	mov    0x18(%esi),%ax
40ea1b:	66 89 07             	mov    %ax,(%edi)
40ea1e:	eb 05                	jmp    0x40ea25
40ea20:	8a 46 18             	mov    0x18(%esi),%al
40ea23:	88 07                	mov    %al,(%edi)
40ea25:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40ea29:	b0 01                	mov    $0x1,%al
40ea2b:	5f                   	pop    %edi
40ea2c:	5e                   	pop    %esi
40ea2d:	c3                   	ret
40ea2e:	8b ff                	mov    %edi,%edi
40ea30:	56                   	push   %esi
40ea31:	8b f1                	mov    %ecx,%esi
40ea33:	57                   	push   %edi
40ea34:	83 46 14 04          	addl   $0x4,0x14(%esi)
40ea38:	8b 46 14             	mov    0x14(%esi),%eax
40ea3b:	8b 78 fc             	mov    -0x4(%eax),%edi
40ea3e:	e8 8b bd 00 00       	call   0x41a7ce
40ea43:	85 c0                	test   %eax,%eax
40ea45:	75 14                	jne    0x40ea5b
40ea47:	e8 1f 60 00 00       	call   0x414a6b
40ea4c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ea52:	e8 8b d2 ff ff       	call   0x40bce2
40ea57:	32 c0                	xor    %al,%al
40ea59:	eb 44                	jmp    0x40ea9f
40ea5b:	ff 76 2c             	push   0x2c(%esi)
40ea5e:	e8 a2 f3 ff ff       	call   0x40de05
40ea63:	59                   	pop    %ecx
40ea64:	83 e8 01             	sub    $0x1,%eax
40ea67:	74 2b                	je     0x40ea94
40ea69:	83 e8 01             	sub    $0x1,%eax
40ea6c:	74 1d                	je     0x40ea8b
40ea6e:	48                   	dec    %eax
40ea6f:	83 e8 01             	sub    $0x1,%eax
40ea72:	74 10                	je     0x40ea84
40ea74:	83 e8 04             	sub    $0x4,%eax
40ea77:	75 ce                	jne    0x40ea47
40ea79:	8b 46 18             	mov    0x18(%esi),%eax
40ea7c:	99                   	cltd
40ea7d:	89 07                	mov    %eax,(%edi)
40ea7f:	89 57 04             	mov    %edx,0x4(%edi)
40ea82:	eb 15                	jmp    0x40ea99
40ea84:	8b 46 18             	mov    0x18(%esi),%eax
40ea87:	89 07                	mov    %eax,(%edi)
40ea89:	eb 0e                	jmp    0x40ea99
40ea8b:	66 8b 46 18          	mov    0x18(%esi),%ax
40ea8f:	66 89 07             	mov    %ax,(%edi)
40ea92:	eb 05                	jmp    0x40ea99
40ea94:	8a 46 18             	mov    0x18(%esi),%al
40ea97:	88 07                	mov    %al,(%edi)
40ea99:	c6 46 30 01          	movb   $0x1,0x30(%esi)
40ea9d:	b0 01                	mov    $0x1,%al
40ea9f:	5f                   	pop    %edi
40eaa0:	5e                   	pop    %esi
40eaa1:	c3                   	ret
40eaa2:	8b 51 20             	mov    0x20(%ecx),%edx
40eaa5:	8b c2                	mov    %edx,%eax
40eaa7:	c1 e8 05             	shr    $0x5,%eax
40eaaa:	a8 01                	test   $0x1,%al
40eaac:	74 09                	je     0x40eab7
40eaae:	81 ca 80 00 00 00    	or     $0x80,%edx
40eab4:	89 51 20             	mov    %edx,0x20(%ecx)
40eab7:	6a 00                	push   $0x0
40eab9:	6a 08                	push   $0x8
40eabb:	e8 a8 fa ff ff       	call   0x40e568
40eac0:	c3                   	ret
40eac1:	8b 51 20             	mov    0x20(%ecx),%edx
40eac4:	8b c2                	mov    %edx,%eax
40eac6:	c1 e8 05             	shr    $0x5,%eax
40eac9:	a8 01                	test   $0x1,%al
40eacb:	74 09                	je     0x40ead6
40eacd:	81 ca 80 00 00 00    	or     $0x80,%edx
40ead3:	89 51 20             	mov    %edx,0x20(%ecx)
40ead6:	6a 00                	push   $0x0
40ead8:	6a 08                	push   $0x8
40eada:	e8 d3 fb ff ff       	call   0x40e6b2
40eadf:	c3                   	ret
40eae0:	8b 51 20             	mov    0x20(%ecx),%edx
40eae3:	8b c2                	mov    %edx,%eax
40eae5:	c1 e8 05             	shr    $0x5,%eax
40eae8:	a8 01                	test   $0x1,%al
40eaea:	74 09                	je     0x40eaf5
40eaec:	81 ca 80 00 00 00    	or     $0x80,%edx
40eaf2:	89 51 20             	mov    %edx,0x20(%ecx)
40eaf5:	6a 00                	push   $0x0
40eaf7:	6a 08                	push   $0x8
40eaf9:	e8 fe fc ff ff       	call   0x40e7fc
40eafe:	c3                   	ret
40eaff:	6a 01                	push   $0x1
40eb01:	6a 10                	push   $0x10
40eb03:	c7 41 28 08 00 00 00 	movl   $0x8,0x28(%ecx)
40eb0a:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40eb11:	e8 52 fa ff ff       	call   0x40e568
40eb16:	c3                   	ret
40eb17:	6a 01                	push   $0x1
40eb19:	6a 10                	push   $0x10
40eb1b:	c7 41 28 08 00 00 00 	movl   $0x8,0x28(%ecx)
40eb22:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40eb29:	e8 84 fb ff ff       	call   0x40e6b2
40eb2e:	c3                   	ret
40eb2f:	6a 01                	push   $0x1
40eb31:	6a 10                	push   $0x10
40eb33:	c7 41 28 08 00 00 00 	movl   $0x8,0x28(%ecx)
40eb3a:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40eb41:	e8 b6 fc ff ff       	call   0x40e7fc
40eb46:	c3                   	ret
40eb47:	8b ff                	mov    %edi,%edi
40eb49:	53                   	push   %ebx
40eb4a:	56                   	push   %esi
40eb4b:	8b f1                	mov    %ecx,%esi
40eb4d:	57                   	push   %edi
40eb4e:	83 46 14 04          	addl   $0x4,0x14(%esi)
40eb52:	8b 46 14             	mov    0x14(%esi),%eax
40eb55:	8b 7e 28             	mov    0x28(%esi),%edi
40eb58:	8b 58 fc             	mov    -0x4(%eax),%ebx
40eb5b:	89 5e 34             	mov    %ebx,0x34(%esi)
40eb5e:	83 ff ff             	cmp    $0xffffffff,%edi
40eb61:	75 05                	jne    0x40eb68
40eb63:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40eb68:	ff 76 2c             	push   0x2c(%esi)
40eb6b:	0f b6 46 31          	movzbl 0x31(%esi),%eax
40eb6f:	50                   	push   %eax
40eb70:	ff 76 04             	push   0x4(%esi)
40eb73:	ff 36                	push   (%esi)
40eb75:	e8 3b d6 ff ff       	call   0x40c1b5
40eb7a:	83 c4 10             	add    $0x10,%esp
40eb7d:	84 c0                	test   %al,%al
40eb7f:	74 1a                	je     0x40eb9b
40eb81:	85 db                	test   %ebx,%ebx
40eb83:	75 07                	jne    0x40eb8c
40eb85:	c7 46 34 1c af 42 00 	movl   $0x42af1c,0x34(%esi)
40eb8c:	57                   	push   %edi
40eb8d:	ff 76 34             	push   0x34(%esi)