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)
40eb90:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40eb94:	e8 26 63 00 00       	call   0x414ebf
40eb99:	eb 14                	jmp    0x40ebaf
40eb9b:	85 db                	test   %ebx,%ebx
40eb9d:	75 07                	jne    0x40eba6
40eb9f:	c7 46 34 14 af 42 00 	movl   $0x42af14,0x34(%esi)
40eba6:	57                   	push   %edi
40eba7:	ff 76 34             	push   0x34(%esi)
40ebaa:	e8 e9 61 00 00       	call   0x414d98
40ebaf:	59                   	pop    %ecx
40ebb0:	59                   	pop    %ecx
40ebb1:	5f                   	pop    %edi
40ebb2:	89 46 38             	mov    %eax,0x38(%esi)
40ebb5:	b0 01                	mov    $0x1,%al
40ebb7:	5e                   	pop    %esi
40ebb8:	5b                   	pop    %ebx
40ebb9:	c3                   	ret
40ebba:	8b ff                	mov    %edi,%edi
40ebbc:	53                   	push   %ebx
40ebbd:	56                   	push   %esi
40ebbe:	8b f1                	mov    %ecx,%esi
40ebc0:	57                   	push   %edi
40ebc1:	83 46 14 04          	addl   $0x4,0x14(%esi)
40ebc5:	8b 46 14             	mov    0x14(%esi),%eax
40ebc8:	8b 7e 28             	mov    0x28(%esi),%edi
40ebcb:	8b 58 fc             	mov    -0x4(%eax),%ebx
40ebce:	89 5e 34             	mov    %ebx,0x34(%esi)
40ebd1:	83 ff ff             	cmp    $0xffffffff,%edi
40ebd4:	75 05                	jne    0x40ebdb
40ebd6:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40ebdb:	ff 76 2c             	push   0x2c(%esi)
40ebde:	0f b6 46 31          	movzbl 0x31(%esi),%eax
40ebe2:	50                   	push   %eax
40ebe3:	ff 76 04             	push   0x4(%esi)
40ebe6:	ff 36                	push   (%esi)
40ebe8:	e8 c8 d5 ff ff       	call   0x40c1b5
40ebed:	83 c4 10             	add    $0x10,%esp
40ebf0:	84 c0                	test   %al,%al
40ebf2:	74 1a                	je     0x40ec0e
40ebf4:	85 db                	test   %ebx,%ebx
40ebf6:	75 07                	jne    0x40ebff
40ebf8:	c7 46 34 1c af 42 00 	movl   $0x42af1c,0x34(%esi)
40ebff:	57                   	push   %edi
40ec00:	ff 76 34             	push   0x34(%esi)
40ec03:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40ec07:	e8 b3 62 00 00       	call   0x414ebf
40ec0c:	eb 14                	jmp    0x40ec22
40ec0e:	85 db                	test   %ebx,%ebx
40ec10:	75 07                	jne    0x40ec19
40ec12:	c7 46 34 14 af 42 00 	movl   $0x42af14,0x34(%esi)
40ec19:	57                   	push   %edi
40ec1a:	ff 76 34             	push   0x34(%esi)
40ec1d:	e8 76 61 00 00       	call   0x414d98
40ec22:	59                   	pop    %ecx
40ec23:	59                   	pop    %ecx
40ec24:	5f                   	pop    %edi
40ec25:	89 46 38             	mov    %eax,0x38(%esi)
40ec28:	b0 01                	mov    $0x1,%al
40ec2a:	5e                   	pop    %esi
40ec2b:	5b                   	pop    %ebx
40ec2c:	c3                   	ret
40ec2d:	8b ff                	mov    %edi,%edi
40ec2f:	53                   	push   %ebx
40ec30:	56                   	push   %esi
40ec31:	8b f1                	mov    %ecx,%esi
40ec33:	57                   	push   %edi
40ec34:	83 46 14 04          	addl   $0x4,0x14(%esi)
40ec38:	8b 46 14             	mov    0x14(%esi),%eax
40ec3b:	8b 7e 28             	mov    0x28(%esi),%edi
40ec3e:	8b 58 fc             	mov    -0x4(%eax),%ebx
40ec41:	89 5e 34             	mov    %ebx,0x34(%esi)
40ec44:	83 ff ff             	cmp    $0xffffffff,%edi
40ec47:	75 05                	jne    0x40ec4e
40ec49:	bf ff ff ff 7f       	mov    $0x7fffffff,%edi
40ec4e:	ff 76 2c             	push   0x2c(%esi)
40ec51:	0f b7 46 32          	movzwl 0x32(%esi),%eax
40ec55:	50                   	push   %eax
40ec56:	ff 76 04             	push   0x4(%esi)
40ec59:	ff 36                	push   (%esi)
40ec5b:	e8 95 d5 ff ff       	call   0x40c1f5
40ec60:	83 c4 10             	add    $0x10,%esp
40ec63:	84 c0                	test   %al,%al
40ec65:	74 1c                	je     0x40ec83
40ec67:	85 db                	test   %ebx,%ebx
40ec69:	75 07                	jne    0x40ec72
40ec6b:	c7 46 34 1c af 42 00 	movl   $0x42af1c,0x34(%esi)
40ec72:	57                   	push   %edi
40ec73:	ff 76 34             	push   0x34(%esi)
40ec76:	c6 46 3c 01          	movb   $0x1,0x3c(%esi)
40ec7a:	e8 40 62 00 00       	call   0x414ebf
40ec7f:	59                   	pop    %ecx
40ec80:	59                   	pop    %ecx
40ec81:	eb 15                	jmp    0x40ec98
40ec83:	85 db                	test   %ebx,%ebx
40ec85:	75 07                	jne    0x40ec8e
40ec87:	c7 46 34 14 af 42 00 	movl   $0x42af14,0x34(%esi)
40ec8e:	6a 00                	push   $0x0
40ec90:	57                   	push   %edi
40ec91:	8b ce                	mov    %esi,%ecx
40ec93:	e8 09 00 00 00       	call   0x40eca1
40ec98:	5f                   	pop    %edi
40ec99:	89 46 38             	mov    %eax,0x38(%esi)
40ec9c:	b0 01                	mov    $0x1,%al
40ec9e:	5e                   	pop    %esi
40ec9f:	5b                   	pop    %ebx
40eca0:	c3                   	ret
40eca1:	8b ff                	mov    %edi,%edi
40eca3:	55                   	push   %ebp
40eca4:	8b ec                	mov    %esp,%ebp
40eca6:	56                   	push   %esi
40eca7:	57                   	push   %edi
40eca8:	8b f9                	mov    %ecx,%edi
40ecaa:	33 f6                	xor    %esi,%esi
40ecac:	8b 57 34             	mov    0x34(%edi),%edx
40ecaf:	39 75 08             	cmp    %esi,0x8(%ebp)
40ecb2:	7e 25                	jle    0x40ecd9
40ecb4:	53                   	push   %ebx
40ecb5:	8a 02                	mov    (%edx),%al
40ecb7:	84 c0                	test   %al,%al
40ecb9:	74 1d                	je     0x40ecd8
40ecbb:	0f b6 c8             	movzbl %al,%ecx
40ecbe:	bb 00 80 00 00       	mov    $0x8000,%ebx
40ecc3:	8b 47 08             	mov    0x8(%edi),%eax
40ecc6:	8b 00                	mov    (%eax),%eax
40ecc8:	8b 00                	mov    (%eax),%eax
40ecca:	66 85 1c 48          	test   %bx,(%eax,%ecx,2)
40ecce:	74 01                	je     0x40ecd1
40ecd0:	42                   	inc    %edx
40ecd1:	42                   	inc    %edx
40ecd2:	46                   	inc    %esi
40ecd3:	3b 75 08             	cmp    0x8(%ebp),%esi
40ecd6:	7c dd                	jl     0x40ecb5
40ecd8:	5b                   	pop    %ebx
40ecd9:	5f                   	pop    %edi
40ecda:	8b c6                	mov    %esi,%eax
40ecdc:	5e                   	pop    %esi
40ecdd:	5d                   	pop    %ebp
40ecde:	c2 08 00             	ret    $0x8
40ece1:	8b 01                	mov    (%ecx),%eax
40ece3:	85 c0                	test   %eax,%eax
40ece5:	75 13                	jne    0x40ecfa
40ece7:	e8 7f 5d 00 00       	call   0x414a6b
40ecec:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ecf2:	e8 eb cf ff ff       	call   0x40bce2
40ecf7:	32 c0                	xor    %al,%al
40ecf9:	c3                   	ret
40ecfa:	50                   	push   %eax
40ecfb:	e8 38 00 00 00       	call   0x40ed38
40ed00:	59                   	pop    %ecx
40ed01:	c3                   	ret
40ed02:	83 39 00             	cmpl   $0x0,(%ecx)
40ed05:	75 13                	jne    0x40ed1a
40ed07:	e8 5f 5d 00 00       	call   0x414a6b
40ed0c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ed12:	e8 cb cf ff ff       	call   0x40bce2
40ed17:	32 c0                	xor    %al,%al
40ed19:	c3                   	ret
40ed1a:	b0 01                	mov    $0x1,%al
40ed1c:	c3                   	ret
40ed1d:	83 39 00             	cmpl   $0x0,(%ecx)
40ed20:	75 13                	jne    0x40ed35
40ed22:	e8 44 5d 00 00       	call   0x414a6b
40ed27:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ed2d:	e8 b0 cf ff ff       	call   0x40bce2
40ed32:	32 c0                	xor    %al,%al
40ed34:	c3                   	ret
40ed35:	b0 01                	mov    $0x1,%al
40ed37:	c3                   	ret
40ed38:	8b ff                	mov    %edi,%edi
40ed3a:	55                   	push   %ebp
40ed3b:	8b ec                	mov    %esp,%ebp
40ed3d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ed40:	56                   	push   %esi
40ed41:	8b 41 0c             	mov    0xc(%ecx),%eax
40ed44:	c1 e8 0c             	shr    $0xc,%eax