40ea8c:	e8 69 a9 ff ff       	call   0x4093fa
40ea91:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40ea97:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
40ea9b:	b8 ff ff 00 00       	mov    $0xffff,%eax
40eaa0:	e9 3b 01 00 00       	jmp    0x40ebe0
40eaa5:	a8 40                	test   $0x40,%al
40eaa7:	74 0d                	je     0x40eab6
40eaa9:	e8 4c a9 ff ff       	call   0x4093fa
40eaae:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40eab4:	eb e1                	jmp    0x40ea97
40eab6:	a8 01                	test   $0x1,%al
40eab8:	74 17                	je     0x40ead1
40eaba:	83 66 04 00          	andl   $0x0,0x4(%esi)
40eabe:	a8 10                	test   $0x10,%al
40eac0:	0f 84 8b 00 00 00    	je     0x40eb51
40eac6:	8b 4e 08             	mov    0x8(%esi),%ecx
40eac9:	83 e0 fe             	and    $0xfffffffe,%eax
40eacc:	89 0e                	mov    %ecx,(%esi)
40eace:	89 46 0c             	mov    %eax,0xc(%esi)
40ead1:	8b 46 0c             	mov    0xc(%esi),%eax
40ead4:	83 66 04 00          	andl   $0x0,0x4(%esi)
40ead8:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40eadc:	53                   	push   %ebx
40eadd:	6a 02                	push   $0x2
40eadf:	83 e0 ef             	and    $0xffffffef,%eax
40eae2:	5b                   	pop    %ebx
40eae3:	0b c3                	or     %ebx,%eax
40eae5:	66 a9 0c 01          	test   $0x10c,%ax
40eae9:	89 46 0c             	mov    %eax,0xc(%esi)
40eaec:	75 2c                	jne    0x40eb1a
40eaee:	e8 3b 9d ff ff       	call   0x40882e
40eaf3:	83 c0 20             	add    $0x20,%eax
40eaf6:	3b f0                	cmp    %eax,%esi
40eaf8:	74 0c                	je     0x40eb06
40eafa:	e8 2f 9d ff ff       	call   0x40882e
40eaff:	83 c0 40             	add    $0x40,%eax
40eb02:	3b f0                	cmp    %eax,%esi
40eb04:	75 0d                	jne    0x40eb13
40eb06:	ff 75 0c             	push   0xc(%ebp)
40eb09:	e8 80 53 00 00       	call   0x413e8e
40eb0e:	85 c0                	test   %eax,%eax
40eb10:	59                   	pop    %ecx
40eb11:	75 07                	jne    0x40eb1a
40eb13:	56                   	push   %esi
40eb14:	e8 44 02 00 00       	call   0x40ed5d
40eb19:	59                   	pop    %ecx
40eb1a:	66 f7 46 0c 08 01    	testw  $0x108,0xc(%esi)
40eb20:	57                   	push   %edi
40eb21:	0f 84 83 00 00 00    	je     0x40ebaa
40eb27:	8b 46 08             	mov    0x8(%esi),%eax
40eb2a:	8b 3e                	mov    (%esi),%edi
40eb2c:	8d 48 02             	lea    0x2(%eax),%ecx
40eb2f:	89 0e                	mov    %ecx,(%esi)
40eb31:	8b 4e 18             	mov    0x18(%esi),%ecx
40eb34:	2b f8                	sub    %eax,%edi
40eb36:	2b cb                	sub    %ebx,%ecx
40eb38:	85 ff                	test   %edi,%edi
40eb3a:	89 4e 04             	mov    %ecx,0x4(%esi)
40eb3d:	7e 1d                	jle    0x40eb5c
40eb3f:	57                   	push   %edi
40eb40:	50                   	push   %eax
40eb41:	ff 75 0c             	push   0xc(%ebp)
40eb44:	e8 1e 08 00 00       	call   0x40f367
40eb49:	83 c4 0c             	add    $0xc,%esp
40eb4c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40eb4f:	eb 4e                	jmp    0x40eb9f
40eb51:	83 c8 20             	or     $0x20,%eax
40eb54:	89 46 0c             	mov    %eax,0xc(%esi)
40eb57:	e9 3f ff ff ff       	jmp    0x40ea9b
40eb5c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40eb5f:	83 f9 ff             	cmp    $0xffffffff,%ecx
40eb62:	74 1b                	je     0x40eb7f
40eb64:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40eb67:	74 16                	je     0x40eb7f
40eb69:	8b c1                	mov    %ecx,%eax
40eb6b:	83 e0 1f             	and    $0x1f,%eax
40eb6e:	6b c0 28             	imul   $0x28,%eax,%eax
40eb71:	8b d1                	mov    %ecx,%edx
40eb73:	c1 fa 05             	sar    $0x5,%edx
40eb76:	03 04 95 c0 e4 41 00 	add    0x41e4c0(,%edx,4),%eax
40eb7d:	eb 05                	jmp    0x40eb84
40eb7f:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
40eb84:	f6 40 04 20          	testb  $0x20,0x4(%eax)
40eb88:	74 15                	je     0x40eb9f
40eb8a:	53                   	push   %ebx
40eb8b:	6a 00                	push   $0x0
40eb8d:	6a 00                	push   $0x0
40eb8f:	51                   	push   %ecx
40eb90:	e8 e0 51 00 00       	call   0x413d75
40eb95:	23 c2                	and    %edx,%eax
40eb97:	83 c4 10             	add    $0x10,%esp
40eb9a:	83 f8 ff             	cmp    $0xffffffff,%eax
40eb9d:	74 2d                	je     0x40ebcc
40eb9f:	8b 46 08             	mov    0x8(%esi),%eax
40eba2:	8b 5d 08             	mov    0x8(%ebp),%ebx
40eba5:	66 89 18             	mov    %bx,(%eax)
40eba8:	eb 1d                	jmp    0x40ebc7
40ebaa:	6a 02                	push   $0x2
40ebac:	8d 45 fc             	lea    -0x4(%ebp),%eax
40ebaf:	50                   	push   %eax
40ebb0:	ff 75 0c             	push   0xc(%ebp)
40ebb3:	8b fb                	mov    %ebx,%edi
40ebb5:	8b 5d 08             	mov    0x8(%ebp),%ebx
40ebb8:	66 89 5d fc          	mov    %bx,-0x4(%ebp)
40ebbc:	e8 a6 07 00 00       	call   0x40f367
40ebc1:	83 c4 0c             	add    $0xc,%esp
40ebc4:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ebc7:	39 7d fc             	cmp    %edi,-0x4(%ebp)
40ebca:	74 0b                	je     0x40ebd7
40ebcc:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
40ebd0:	b8 ff ff 00 00       	mov    $0xffff,%eax
40ebd5:	eb 07                	jmp    0x40ebde
40ebd7:	8b c3                	mov    %ebx,%eax
40ebd9:	25 ff ff 00 00       	and    $0xffff,%eax
40ebde:	5f                   	pop    %edi
40ebdf:	5b                   	pop    %ebx
40ebe0:	5e                   	pop    %esi
40ebe1:	c9                   	leave
40ebe2:	c3                   	ret
40ebe3:	55                   	push   %ebp
40ebe4:	8b ec                	mov    %esp,%ebp
40ebe6:	83 ec 10             	sub    $0x10,%esp
40ebe9:	53                   	push   %ebx
40ebea:	56                   	push   %esi
40ebeb:	8b 75 0c             	mov    0xc(%ebp),%esi
40ebee:	33 db                	xor    %ebx,%ebx
40ebf0:	3b f3                	cmp    %ebx,%esi
40ebf2:	57                   	push   %edi
40ebf3:	8b 7d 10             	mov    0x10(%ebp),%edi
40ebf6:	75 11                	jne    0x40ec09
40ebf8:	3b fb                	cmp    %ebx,%edi
40ebfa:	76 0d                	jbe    0x40ec09
40ebfc:	8b 45 08             	mov    0x8(%ebp),%eax
40ebff:	3b c3                	cmp    %ebx,%eax
40ec01:	74 02                	je     0x40ec05
40ec03:	89 18                	mov    %ebx,(%eax)
40ec05:	33 c0                	xor    %eax,%eax
40ec07:	eb 7f                	jmp    0x40ec88
40ec09:	8b 45 08             	mov    0x8(%ebp),%eax
40ec0c:	3b c3                	cmp    %ebx,%eax
40ec0e:	74 03                	je     0x40ec13
40ec10:	83 08 ff             	orl    $0xffffffff,(%eax)
40ec13:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40ec19:	76 1b                	jbe    0x40ec36
40ec1b:	e8 da a7 ff ff       	call   0x4093fa
40ec20:	6a 16                	push   $0x16
40ec22:	5e                   	pop    %esi
40ec23:	53                   	push   %ebx
40ec24:	53                   	push   %ebx
40ec25:	53                   	push   %ebx
40ec26:	53                   	push   %ebx
40ec27:	53                   	push   %ebx
40ec28:	89 30                	mov    %esi,(%eax)
40ec2a:	e8 21 8a ff ff       	call   0x407650
40ec2f:	83 c4 14             	add    $0x14,%esp
40ec32:	8b c6                	mov    %esi,%eax
40ec34:	eb 52                	jmp    0x40ec88
40ec36:	ff 75 18             	push   0x18(%ebp)
40ec39:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ec3c:	e8 83 9d ff ff       	call   0x4089c4
40ec41:	8b 45 f0             	mov    -0x10(%ebp),%eax
40ec44:	39 58 14             	cmp    %ebx,0x14(%eax)
40ec47:	0f 85 94 00 00 00    	jne    0x40ece1
40ec4d:	66 8b 45 14          	mov    0x14(%ebp),%ax
40ec51:	66 3d ff 00          	cmp    $0xff,%ax
40ec55:	76 36                	jbe    0x40ec8d
40ec57:	3b f3                	cmp    %ebx,%esi
40ec59:	74 0f                	je     0x40ec6a
40ec5b:	3b fb                	cmp    %ebx,%edi
40ec5d:	76 0b                	jbe    0x40ec6a
40ec5f:	57                   	push   %edi
40ec60:	53                   	push   %ebx
40ec61:	56                   	push   %esi
40ec62:	e8 e9 6e ff ff       	call   0x405b50
40ec67:	83 c4 0c             	add    $0xc,%esp
40ec6a:	e8 8b a7 ff ff       	call   0x4093fa
40ec6f:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40ec75:	e8 80 a7 ff ff       	call   0x4093fa
40ec7a:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40ec7d:	8b 00                	mov    (%eax),%eax
40ec7f:	74 07                	je     0x40ec88
40ec81:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ec84:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40ec88:	5f                   	pop    %edi
40ec89:	5e                   	pop    %esi
40ec8a:	5b                   	pop    %ebx
40ec8b:	c9                   	leave
40ec8c:	c3                   	ret
40ec8d:	3b f3                	cmp    %ebx,%esi
40ec8f:	74 2e                	je     0x40ecbf
40ec91:	3b fb                	cmp    %ebx,%edi
40ec93:	77 28                	ja     0x40ecbd
40ec95:	e8 60 a7 ff ff       	call   0x4093fa
40ec9a:	6a 22                	push   $0x22
40ec9c:	5e                   	pop    %esi
40ec9d:	53                   	push   %ebx
40ec9e:	53                   	push   %ebx
40ec9f:	53                   	push   %ebx
40eca0:	53                   	push   %ebx
40eca1:	53                   	push   %ebx
40eca2:	89 30                	mov    %esi,(%eax)
40eca4:	e8 a7 89 ff ff       	call   0x407650
40eca9:	83 c4 14             	add    $0x14,%esp
40ecac:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40ecaf:	74 81                	je     0x40ec32
40ecb1:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ecb4:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40ecb8:	e9 75 ff ff ff       	jmp    0x40ec32
40ecbd:	88 06                	mov    %al,(%esi)
40ecbf:	8b 45 08             	mov    0x8(%ebp),%eax
40ecc2:	3b c3                	cmp    %ebx,%eax
40ecc4:	74 06                	je     0x40eccc
40ecc6:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40eccc:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40eccf:	0f 84 30 ff ff ff    	je     0x40ec05
40ecd5:	8b 45 f8             	mov    -0x8(%ebp),%eax
40ecd8:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40ecdc:	e9 24 ff ff ff       	jmp    0x40ec05
40ece1:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40ece4:	51                   	push   %ecx
40ece5:	53                   	push   %ebx
40ece6:	57                   	push   %edi
40ece7:	56                   	push   %esi
40ece8:	6a 01                	push   $0x1
40ecea:	8d 4d 14             	lea    0x14(%ebp),%ecx
40eced:	51                   	push   %ecx
40ecee:	53                   	push   %ebx
40ecef:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40ecf2:	ff 70 04             	push   0x4(%eax)
40ecf5:	ff 15 90 70 41 00    	call   *0x417090
40ecfb:	3b c3                	cmp    %ebx,%eax
40ecfd:	74 14                	je     0x40ed13
40ecff:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40ed02:	0f 85 62 ff ff ff    	jne    0x40ec6a
40ed08:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ed0b:	3b cb                	cmp    %ebx,%ecx
40ed0d:	74 bd                	je     0x40eccc
40ed0f:	89 01                	mov    %eax,(%ecx)
40ed11:	eb b9                	jmp    0x40eccc
40ed13:	ff 15 b0 70 41 00    	call   *0x4170b0
40ed19:	83 f8 7a             	cmp    $0x7a,%eax
40ed1c:	0f 85 48 ff ff ff    	jne    0x40ec6a
40ed22:	3b f3                	cmp    %ebx,%esi
40ed24:	0f 84 6b ff ff ff    	je     0x40ec95
40ed2a:	3b fb                	cmp    %ebx,%edi
40ed2c:	0f 86 63 ff ff ff    	jbe    0x40ec95
40ed32:	57                   	push   %edi
40ed33:	53                   	push   %ebx
40ed34:	56                   	push   %esi
40ed35:	e8 16 6e ff ff       	call   0x405b50
40ed3a:	83 c4 0c             	add    $0xc,%esp
40ed3d:	e9 53 ff ff ff       	jmp    0x40ec95
40ed42:	6a 00                	push   $0x0
40ed44:	ff 74 24 14          	push   0x14(%esp)
40ed48:	ff 74 24 14          	push   0x14(%esp)
40ed4c:	ff 74 24 14          	push   0x14(%esp)
40ed50:	ff 74 24 14          	push   0x14(%esp)
40ed54:	e8 8a fe ff ff       	call   0x40ebe3
40ed59:	83 c4 14             	add    $0x14,%esp
40ed5c:	c3                   	ret
40ed5d:	ff 05 f8 d9 41 00    	incl   0x41d9f8
40ed63:	68 00 10 00 00       	push   $0x1000
40ed68:	e8 7f a5 ff ff       	call   0x4092ec
40ed6d:	85 c0                	test   %eax,%eax
40ed6f:	59                   	pop    %ecx
40ed70:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40ed74:	89 41 08             	mov    %eax,0x8(%ecx)
40ed77:	74 0d                	je     0x40ed86
40ed79:	83 49 0c 08          	orl    $0x8,0xc(%ecx)
40ed7d:	c7 41 18 00 10 00 00 	movl   $0x1000,0x18(%ecx)
40ed84:	eb 11                	jmp    0x40ed97
40ed86:	83 49 0c 04          	orl    $0x4,0xc(%ecx)
40ed8a:	8d 41 14             	lea    0x14(%ecx),%eax
40ed8d:	89 41 08             	mov    %eax,0x8(%ecx)
40ed90:	c7 41 18 02 00 00 00 	movl   $0x2,0x18(%ecx)
40ed97:	8b 41 08             	mov    0x8(%ecx),%eax
40ed9a:	83 61 04 00          	andl   $0x0,0x4(%ecx)
40ed9e:	89 01                	mov    %eax,(%ecx)
40eda0:	c3                   	ret
40eda1:	55                   	push   %ebp
40eda2:	8d ac 24 e8 fa ff ff 	lea    -0x518(%esp),%ebp
40eda9:	81 ec 94 05 00 00    	sub    $0x594,%esp
40edaf:	a1 20 c5 41 00       	mov    0x41c520,%eax
40edb4:	33 c5                	xor    %ebp,%eax
40edb6:	89 85 14 05 00 00    	mov    %eax,0x514(%ebp)
40edbc:	8b 85 24 05 00 00    	mov    0x524(%ebp),%eax
40edc2:	56                   	push   %esi
40edc3:	33 f6                	xor    %esi,%esi
40edc5:	39 b5 28 05 00 00    	cmp    %esi,0x528(%ebp)
40edcb:	89 45 9c             	mov    %eax,-0x64(%ebp)
40edce:	89 75 a0             	mov    %esi,-0x60(%ebp)
40edd1:	89 75 98             	mov    %esi,-0x68(%ebp)
40edd4:	75 07                	jne    0x40eddd
40edd6:	33 c0                	xor    %eax,%eax
40edd8:	e9 74 05 00 00       	jmp    0x40f351
40eddd:	3b c6                	cmp    %esi,%eax
40eddf:	75 27                	jne    0x40ee08
40ede1:	e8 27 a6 ff ff       	call   0x40940d
40ede6:	89 30                	mov    %esi,(%eax)
40ede8:	e8 0d a6 ff ff       	call   0x4093fa
40eded:	56                   	push   %esi
40edee:	56                   	push   %esi
40edef:	56                   	push   %esi
40edf0:	56                   	push   %esi
40edf1:	56                   	push   %esi
40edf2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40edf8:	e8 53 88 ff ff       	call   0x407650
40edfd:	83 c4 14             	add    $0x14,%esp
40ee00:	83 c8 ff             	or     $0xffffffff,%eax
40ee03:	e9 49 05 00 00       	jmp    0x40f351
40ee08:	8b b5 20 05 00 00    	mov    0x520(%ebp),%esi
40ee0e:	53                   	push   %ebx
40ee0f:	8b de                	mov    %esi,%ebx
40ee11:	83 e3 1f             	and    $0x1f,%ebx
40ee14:	6b db 28             	imul   $0x28,%ebx,%ebx
40ee17:	8b c6                	mov    %esi,%eax
40ee19:	c1 f8 05             	sar    $0x5,%eax
40ee1c:	57                   	push   %edi
40ee1d:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
40ee24:	8b 07                	mov    (%edi),%eax
40ee26:	03 c3                	add    %ebx,%eax
40ee28:	8a 48 24             	mov    0x24(%eax),%cl
40ee2b:	02 c9                	add    %cl,%cl
40ee2d:	d0 f9                	sar    $1,%cl
40ee2f:	80 f9 02             	cmp    $0x2,%cl
40ee32:	89 7d 90             	mov    %edi,-0x70(%ebp)
40ee35:	88 4d ab             	mov    %cl,-0x55(%ebp)
40ee38:	74 05                	je     0x40ee3f
40ee3a:	80 f9 01             	cmp    $0x1,%cl
40ee3d:	75 33                	jne    0x40ee72
40ee3f:	8b 8d 28 05 00 00    	mov    0x528(%ebp),%ecx
40ee45:	f7 d1                	not    %ecx
40ee47:	f6 c1 01             	test   $0x1,%cl
40ee4a:	75 26                	jne    0x40ee72
40ee4c:	e8 bc a5 ff ff       	call   0x40940d
40ee51:	33 f6                	xor    %esi,%esi
40ee53:	89 30                	mov    %esi,(%eax)
40ee55:	e8 a0 a5 ff ff       	call   0x4093fa
40ee5a:	56                   	push   %esi
40ee5b:	56                   	push   %esi
40ee5c:	56                   	push   %esi
40ee5d:	56                   	push   %esi
40ee5e:	56                   	push   %esi
40ee5f:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40ee65:	e8 e6 87 ff ff       	call   0x407650
40ee6a:	83 c4 14             	add    $0x14,%esp
40ee6d:	e9 d5 04 00 00       	jmp    0x40f347
40ee72:	f6 40 04 20          	testb  $0x20,0x4(%eax)
40ee76:	74 0f                	je     0x40ee87
40ee78:	6a 02                	push   $0x2