41ed36:	8b c4                	mov    %esp,%eax
41ed38:	e8 ef fe ff ff       	call   0x41ec2c
41ed3d:	84 c0                	test   %al,%al
41ed3f:	75 0e                	jne    0x41ed4f
41ed41:	0f b7 54 24 02       	movzwl 0x2(%esp),%edx
41ed46:	8d 44 24 04          	lea    0x4(%esp),%eax
41ed4a:	e8 6d fd ff ff       	call   0x41eabc
41ed4f:	8b c4                	mov    %esp,%eax
41ed51:	50                   	push   %eax
41ed52:	e8 d5 74 fe ff       	call   0x40622c
41ed57:	8b f0                	mov    %eax,%esi
41ed59:	8b c6                	mov    %esi,%eax
41ed5b:	81 c4 04 04 00 00    	add    $0x404,%esp
41ed61:	5f                   	pop    %edi
41ed62:	5e                   	pop    %esi
41ed63:	5b                   	pop    %ebx
41ed64:	c3                   	ret
41ed65:	8d 40 00             	lea    0x0(%eax),%eax
41ed68:	53                   	push   %ebx
41ed69:	56                   	push   %esi
41ed6a:	57                   	push   %edi
41ed6b:	51                   	push   %ecx
41ed6c:	8b f9                	mov    %ecx,%edi
41ed6e:	8b f2                	mov    %edx,%esi
41ed70:	8b d8                	mov    %eax,%ebx
41ed72:	33 c0                	xor    %eax,%eax
41ed74:	89 04 24             	mov    %eax,(%esp)
41ed77:	85 db                	test   %ebx,%ebx
41ed79:	74 36                	je     0x41edb1
41ed7b:	54                   	push   %esp
41ed7c:	6a 04                	push   $0x4
41ed7e:	53                   	push   %ebx
41ed7f:	e8 48 75 fe ff       	call   0x4062cc
41ed84:	85 c0                	test   %eax,%eax
41ed86:	74 29                	je     0x41edb1
41ed88:	83 3c 24 00          	cmpl   $0x0,(%esp)
41ed8c:	74 23                	je     0x41edb1
41ed8e:	8d 47 01             	lea    0x1(%edi),%eax
41ed91:	3b 04 24             	cmp    (%esp),%eax
41ed94:	7d 03                	jge    0x41ed99
41ed96:	89 04 24             	mov    %eax,(%esp)
41ed99:	56                   	push   %esi
41ed9a:	8b 44 24 04          	mov    0x4(%esp),%eax
41ed9e:	50                   	push   %eax
41ed9f:	6a 00                	push   $0x0
41eda1:	53                   	push   %ebx
41eda2:	e8 2d 75 fe ff       	call   0x4062d4
41eda7:	8b c6                	mov    %esi,%eax
41eda9:	8b 14 24             	mov    (%esp),%edx
41edac:	e8 0b fd ff ff       	call   0x41eabc
41edb1:	8b 04 24             	mov    (%esp),%eax
41edb4:	5a                   	pop    %edx
41edb5:	5f                   	pop    %edi
41edb6:	5e                   	pop    %esi
41edb7:	5b                   	pop    %ebx
41edb8:	c3                   	ret
41edb9:	8d 40 00             	lea    0x0(%eax),%eax
41edbc:	55                   	push   %ebp
41edbd:	8b ec                	mov    %esp,%ebp
41edbf:	83 c4 ec             	add    $0xffffffec,%esp
41edc2:	53                   	push   %ebx
41edc3:	56                   	push   %esi
41edc4:	57                   	push   %edi
41edc5:	89 4d f8             	mov    %ecx,-0x8(%ebp)
41edc8:	8b da                	mov    %edx,%ebx
41edca:	89 45 fc             	mov    %eax,-0x4(%ebp)
41edcd:	8b 45 fc             	mov    -0x4(%ebp),%eax
41edd0:	d1 68 08             	shrl   $1,0x8(%eax)
41edd3:	8b 55 fc             	mov    -0x4(%ebp),%edx
41edd6:	0f b7 52 0e          	movzwl 0xe(%edx),%edx
41edda:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eddd:	8b 40 04             	mov    0x4(%eax),%eax
41ede0:	b9 20 00 00 00       	mov    $0x20,%ecx
41ede5:	e8 7a f9 ff ff       	call   0x41e764
41edea:	8b 55 fc             	mov    -0x4(%ebp),%edx
41eded:	f7 6a 08             	imull  0x8(%edx)
41edf0:	8b 55 fc             	mov    -0x4(%ebp),%edx
41edf3:	89 42 14             	mov    %eax,0x14(%edx)
41edf6:	8b 45 fc             	mov    -0x4(%ebp),%eax
41edf9:	66 8b 40 0e          	mov    0xe(%eax),%ax
41edfd:	e8 42 f9 ff ff       	call   0x41e744
41ee02:	8b f0                	mov    %eax,%esi
41ee04:	6a 00                	push   $0x0
41ee06:	e8 91 77 fe ff       	call   0x40659c
41ee0b:	89 45 f0             	mov    %eax,-0x10(%ebp)
41ee0e:	83 7d f0 00          	cmpl   $0x0,-0x10(%ebp)
41ee12:	75 05                	jne    0x41ee19
41ee14:	e8 bf f6 ff ff       	call   0x41e4d8
41ee19:	33 d2                	xor    %edx,%edx
41ee1b:	55                   	push   %ebp
41ee1c:	68 68 ef 41 00       	push   $0x41ef68
41ee21:	64 ff 32             	push   %fs:(%edx)
41ee24:	64 89 22             	mov    %esp,%fs:(%edx)
41ee27:	8b 7d fc             	mov    -0x4(%ebp),%edi
41ee2a:	8b c7                	mov    %edi,%eax
41ee2c:	83 c0 28             	add    $0x28,%eax
41ee2f:	8b d6                	mov    %esi,%edx
41ee31:	c1 e2 02             	shl    $0x2,%edx
41ee34:	03 c2                	add    %edx,%eax
41ee36:	89 45 ec             	mov    %eax,-0x14(%ebp)
41ee39:	6a 00                	push   $0x0
41ee3b:	8b 45 fc             	mov    -0x4(%ebp),%eax
41ee3e:	57                   	push   %edi
41ee3f:	8b 45 ec             	mov    -0x14(%ebp),%eax
41ee42:	50                   	push   %eax
41ee43:	6a 04                	push   $0x4
41ee45:	8b 45 fc             	mov    -0x4(%ebp),%eax
41ee48:	50                   	push   %eax
41ee49:	8b 45 f0             	mov    -0x10(%ebp),%eax
41ee4c:	50                   	push   %eax
41ee4d:	e8 c2 73 fe ff       	call   0x406214
41ee52:	e8 7d f7 ff ff       	call   0x41e5d4
41ee57:	89 45 f4             	mov    %eax,-0xc(%ebp)
41ee5a:	33 c0                	xor    %eax,%eax
41ee5c:	55                   	push   %ebp
41ee5d:	68 8e ee 41 00       	push   $0x41ee8e
41ee62:	64 ff 30             	push   %fs:(%eax)
41ee65:	64 89 20             	mov    %esp,%fs:(%eax)
41ee68:	8b 55 08             	mov    0x8(%ebp),%edx
41ee6b:	33 c9                	xor    %ecx,%ecx
41ee6d:	8b 45 f4             	mov    -0xc(%ebp),%eax
41ee70:	e8 6f f7 ff ff       	call   0x41e5e4
41ee75:	89 03                	mov    %eax,(%ebx)
41ee77:	33 c0                	xor    %eax,%eax
41ee79:	5a                   	pop    %edx
41ee7a:	59                   	pop    %ecx
41ee7b:	59                   	pop    %ecx
41ee7c:	64 89 10             	mov    %edx,%fs:(%eax)
41ee7f:	68 95 ee 41 00       	push   $0x41ee95
41ee84:	8b 45 f4             	mov    -0xc(%ebp),%eax
41ee87:	50                   	push   %eax
41ee88:	e8 cf 73 fe ff       	call   0x40625c
41ee8d:	c3                   	ret
41ee8e:	e9 09 4b fe ff       	jmp    0x40399c
41ee93:	eb ef                	jmp    0x41ee84
41ee95:	8b 45 fc             	mov    -0x4(%ebp),%eax
41ee98:	8b 40 14             	mov    0x14(%eax),%eax
41ee9b:	01 45 ec             	add    %eax,-0x14(%ebp)
41ee9e:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eea1:	66 bb 01 00          	mov    $0x1,%bx
41eea5:	66 89 58 0e          	mov    %bx,0xe(%eax)
41eea9:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eeac:	0f b7 d3             	movzwl %bx,%edx
41eeaf:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eeb2:	8b 40 04             	mov    0x4(%eax),%eax
41eeb5:	b9 20 00 00 00       	mov    $0x20,%ecx
41eeba:	e8 a5 f8 ff ff       	call   0x41e764
41eebf:	8b 55 fc             	mov    -0x4(%ebp),%edx
41eec2:	f7 6a 08             	imull  0x8(%edx)
41eec5:	8b 55 fc             	mov    -0x4(%ebp),%edx
41eec8:	89 42 14             	mov    %eax,0x14(%edx)
41eecb:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eece:	c7 40 20 02 00 00 00 	movl   $0x2,0x20(%eax)
41eed5:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eed8:	c7 40 24 02 00 00 00 	movl   $0x2,0x24(%eax)
41eedf:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eee2:	83 c0 28             	add    $0x28,%eax
41eee5:	33 d2                	xor    %edx,%edx
41eee7:	89 10                	mov    %edx,(%eax)
41eee9:	c7 40 04 ff ff ff 00 	movl   $0xffffff,0x4(%eax)
41eef0:	6a 00                	push   $0x0
41eef2:	8b 5d fc             	mov    -0x4(%ebp),%ebx
41eef5:	53                   	push   %ebx
41eef6:	8b 45 ec             	mov    -0x14(%ebp),%eax
41eef9:	50                   	push   %eax
41eefa:	6a 04                	push   $0x4
41eefc:	8b 45 fc             	mov    -0x4(%ebp),%eax
41eeff:	53                   	push   %ebx
41ef00:	8b 45 f0             	mov    -0x10(%ebp),%eax
41ef03:	50                   	push   %eax
41ef04:	e8 0b 73 fe ff       	call   0x406214
41ef09:	e8 c6 f6 ff ff       	call   0x41e5d4
41ef0e:	89 45 f4             	mov    %eax,-0xc(%ebp)
41ef11:	33 c0                	xor    %eax,%eax
41ef13:	55                   	push   %ebp
41ef14:	68 48 ef 41 00       	push   $0x41ef48
41ef19:	64 ff 30             	push   %fs:(%eax)
41ef1c:	64 89 20             	mov    %esp,%fs:(%eax)
41ef1f:	8b 55 08             	mov    0x8(%ebp),%edx
41ef22:	b1 01                	mov    $0x1,%cl
41ef24:	8b 45 f4             	mov    -0xc(%ebp),%eax
41ef27:	e8 b8 f6 ff ff       	call   0x41e5e4
41ef2c:	8b 55 f8             	mov    -0x8(%ebp),%edx
41ef2f:	89 02                	mov    %eax,(%edx)
41ef31:	33 c0                	xor    %eax,%eax
41ef33:	5a                   	pop    %edx
41ef34:	59                   	pop    %ecx
41ef35:	59                   	pop    %ecx
41ef36:	64 89 10             	mov    %edx,%fs:(%eax)
41ef39:	68 4f ef 41 00       	push   $0x41ef4f
41ef3e:	8b 45 f4             	mov    -0xc(%ebp),%eax
41ef41:	50                   	push   %eax
41ef42:	e8 15 73 fe ff       	call   0x40625c
41ef47:	c3                   	ret
41ef48:	e9 4f 4a fe ff       	jmp    0x40399c
41ef4d:	eb ef                	jmp    0x41ef3e
41ef4f:	33 c0                	xor    %eax,%eax
41ef51:	5a                   	pop    %edx
41ef52:	59                   	pop    %ecx
41ef53:	59                   	pop    %ecx
41ef54:	64 89 10             	mov    %edx,%fs:(%eax)
41ef57:	68 6f ef 41 00       	push   $0x41ef6f
41ef5c:	8b 45 f0             	mov    -0x10(%ebp),%eax
41ef5f:	50                   	push   %eax
41ef60:	6a 00                	push   $0x0
41ef62:	e8 85 78 fe ff       	call   0x4067ec
41ef67:	c3                   	ret
41ef68:	e9 2f 4a fe ff       	jmp    0x40399c
41ef6d:	eb ed                	jmp    0x41ef5c
41ef6f:	5f                   	pop    %edi
41ef70:	5e                   	pop    %esi
41ef71:	5b                   	pop    %ebx
41ef72:	8b e5                	mov    %ebp,%esp
41ef74:	5d                   	pop    %ebp
41ef75:	c2 04 00             	ret    $0x4
41ef78:	85 c0                	test   %eax,%eax
41ef7a:	75 05                	jne    0x41ef81
41ef7c:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
41ef81:	c3                   	ret
41ef82:	8b c0                	mov    %eax,%eax
41ef84:	55                   	push   %ebp
41ef85:	8b ec                	mov    %esp,%ebp
41ef87:	83 c4 f8             	add    $0xfffffff8,%esp
41ef8a:	53                   	push   %ebx
41ef8b:	56                   	push   %esi
41ef8c:	57                   	push   %edi
41ef8d:	89 45 fc             	mov    %eax,-0x4(%ebp)
41ef90:	33 c9                	xor    %ecx,%ecx
41ef92:	8a 0a                	mov    (%edx),%cl
41ef94:	8b 45 08             	mov    0x8(%ebp),%eax
41ef97:	8b 40 08             	mov    0x8(%eax),%eax
41ef9a:	8b 00                	mov    (%eax),%eax
41ef9c:	2b c8                	sub    %eax,%ecx
41ef9e:	33 db                	xor    %ebx,%ebx
41efa0:	8a 5a 01             	mov    0x1(%edx),%bl
41efa3:	8b 55 08             	mov    0x8(%ebp),%edx
41efa6:	8b 52 08             	mov    0x8(%edx),%edx
41efa9:	2b 5a 04             	sub    0x4(%edx),%ebx
41efac:	8b 75 fc             	mov    -0x4(%ebp),%esi
41efaf:	0f b6 36             	movzbl (%esi),%esi
41efb2:	8b 55 08             	mov    0x8(%ebp),%edx
41efb5:	8b 52 08             	mov    0x8(%edx),%edx
41efb8:	2b f0                	sub    %eax,%esi
41efba:	8b 45 fc             	mov    -0x4(%ebp),%eax
41efbd:	0f b6 40 01          	movzbl 0x1(%eax),%eax
41efc1:	8b 55 08             	mov    0x8(%ebp),%edx
41efc4:	8b 52 08             	mov    0x8(%edx),%edx
41efc7:	2b 42 04             	sub    0x4(%edx),%eax
41efca:	89 45 f8             	mov    %eax,-0x8(%ebp)
41efcd:	8b c1                	mov    %ecx,%eax
41efcf:	99                   	cltd
41efd0:	33 c2                	xor    %edx,%eax
41efd2:	2b c2                	sub    %edx,%eax
41efd4:	8b f8                	mov    %eax,%edi
41efd6:	8b c6                	mov    %esi,%eax
41efd8:	99                   	cltd
41efd9:	33 c2                	xor    %edx,%eax
41efdb:	2b c2                	sub    %edx,%eax
41efdd:	3b f8                	cmp    %eax,%edi
41efdf:	7f 26                	jg     0x41f007
41efe1:	85 c9                	test   %ecx,%ecx
41efe3:	7e 04                	jle    0x41efe9
41efe5:	3b f1                	cmp    %ecx,%esi
41efe7:	7c 1e                	jl     0x41f007
41efe9:	8b c3                	mov    %ebx,%eax
41efeb:	99                   	cltd
41efec:	33 c2                	xor    %edx,%eax
41efee:	2b c2                	sub    %edx,%eax
41eff0:	8b c8                	mov    %eax,%ecx
41eff2:	8b 45 f8             	mov    -0x8(%ebp),%eax
41eff5:	99                   	cltd
41eff6:	33 c2                	xor    %edx,%eax
41eff8:	2b c2                	sub    %edx,%eax
41effa:	3b c8                	cmp    %eax,%ecx
41effc:	7f 09                	jg     0x41f007
41effe:	85 db                	test   %ebx,%ebx
41f000:	7e 09                	jle    0x41f00b
41f002:	3b 5d f8             	cmp    -0x8(%ebp),%ebx
41f005:	7e 04                	jle    0x41f00b
41f007:	33 c0                	xor    %eax,%eax
41f009:	eb 02                	jmp    0x41f00d
41f00b:	b0 01                	mov    $0x1,%al
41f00d:	5f                   	pop    %edi
41f00e:	5e                   	pop    %esi
41f00f:	5b                   	pop    %ebx
41f010:	59                   	pop    %ecx
41f011:	59                   	pop    %ecx
41f012:	5d                   	pop    %ebp
41f013:	c3                   	ret
41f014:	55                   	push   %ebp
41f015:	8b ec                	mov    %esp,%ebp
41f017:	83 c4 90             	add    $0xffffff90,%esp
41f01a:	53                   	push   %ebx
41f01b:	56                   	push   %esi
41f01c:	57                   	push   %edi
41f01d:	89 4d f4             	mov    %ecx,-0xc(%ebp)
41f020:	89 55 f8             	mov    %edx,-0x8(%ebp)
41f023:	89 45 fc             	mov    %eax,-0x4(%ebp)
41f026:	8b 5d 0c             	mov    0xc(%ebp),%ebx
41f029:	8b 45 f4             	mov    -0xc(%ebp),%eax
41f02c:	c1 e0 04             	shl    $0x4,%eax
41f02f:	89 45 ec             	mov    %eax,-0x14(%ebp)
41f032:	8b 45 ec             	mov    -0x14(%ebp),%eax
41f035:	e8 a6 8a fe ff       	call   0x407ae0
41f03a:	89 45 f0             	mov    %eax,-0x10(%ebp)
41f03d:	33 d2                	xor    %edx,%edx
41f03f:	55                   	push   %ebp
41f040:	68 0b f3 41 00       	push   $0x41f30b
41f045:	64 ff 32             	push   %fs:(%edx)
41f048:	64 89 22             	mov    %esp,%fs:(%edx)
41f04b:	8b 55 f0             	mov    -0x10(%ebp),%edx
41f04e:	8b 4d ec             	mov    -0x14(%ebp),%ecx
41f051:	8b 45 fc             	mov    -0x4(%ebp),%eax
41f054:	8b 30                	mov    (%eax),%esi
41f056:	ff 56 0c             	call   *0xc(%esi)
41f059:	8b 03                	mov    (%ebx),%eax
41f05b:	0b 43 04             	or     0x4(%ebx),%eax
41f05e:	75 1b                	jne    0x41f07b
41f060:	6a 0b                	push   $0xb
41f062:	e8 25 76 fe ff       	call   0x40668c
41f067:	8b 55 08             	mov    0x8(%ebp),%edx
41f06a:	89 02                	mov    %eax,(%edx)
41f06c:	6a 0c                	push   $0xc
41f06e:	e8 19 76 fe ff       	call   0x40668c
41f073:	8b 55 08             	mov    0x8(%ebp),%edx
41f076:	89 42 04             	mov    %eax,0x4(%edx)
41f079:	eb 0d                	jmp    0x41f088
41f07b:	8b 45 08             	mov    0x8(%ebp),%eax
41f07e:	8b 13                	mov    (%ebx),%edx
41f080:	89 10                	mov    %edx,(%eax)
41f082:	8b 53 04             	mov    0x4(%ebx),%edx
41f085:	89 50 04             	mov    %edx,0x4(%eax)
41f088:	6a 00                	push   $0x0
41f08a:	e8 0d 75 fe ff       	call   0x40659c
41f08f:	89 45 d8             	mov    %eax,-0x28(%ebp)
41f092:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
41f096:	75 05                	jne    0x41f09d
41f098:	e8 3b f4 ff ff       	call   0x41e4d8
41f09d:	33 d2                	xor    %edx,%edx
41f09f:	55                   	push   %ebp
41f0a0:	68 fd f0 41 00       	push   $0x41f0fd
41f0a5:	64 ff 32             	push   %fs:(%edx)
41f0a8:	64 89 22             	mov    %esp,%fs:(%edx)
41f0ab:	6a 0e                	push   $0xe
41f0ad:	8b 45 d8             	mov    -0x28(%ebp),%eax
41f0b0:	50                   	push   %eax
41f0b1:	e8 f6 71 fe ff       	call   0x4062ac
41f0b6:	8b d8                	mov    %eax,%ebx
41f0b8:	6a 0c                	push   $0xc
41f0ba:	8b 45 d8             	mov    -0x28(%ebp),%eax