40ea10:	83 c4 04             	add    $0x4,%esp
40ea13:	55                   	push   %ebp
40ea14:	8b 6b 04             	mov    0x4(%ebx),%ebp
40ea17:	89 6c 24 04          	mov    %ebp,0x4(%esp)
40ea1b:	8b ec                	mov    %esp,%ebp
40ea1d:	81 ec 38 02 00 00    	sub    $0x238,%esp
40ea23:	56                   	push   %esi
40ea24:	57                   	push   %edi
40ea25:	ff 73 14             	push   0x14(%ebx)
40ea28:	ff 73 10             	push   0x10(%ebx)
40ea2b:	e8 2b 01 00 00       	call   0x40eb5b
40ea30:	ff 73 08             	push   0x8(%ebx)
40ea33:	e8 55 fd ff ff       	call   0x40e78d
40ea38:	8b 4b 10             	mov    0x10(%ebx),%ecx
40ea3b:	83 c4 0c             	add    $0xc,%esp
40ea3e:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ea41:	8b 49 48             	mov    0x48(%ecx),%ecx
40ea44:	3b 41 04             	cmp    0x4(%ecx),%eax
40ea47:	75 07                	jne    0x40ea50
40ea49:	33 c0                	xor    %eax,%eax
40ea4b:	e9 02 01 00 00       	jmp    0x40eb52
40ea50:	68 20 02 00 00       	push   $0x220
40ea55:	e8 78 e5 ff ff       	call   0x40cfd2
40ea5a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ea5d:	59                   	pop    %ecx
40ea5e:	85 c0                	test   %eax,%eax
40ea60:	75 0e                	jne    0x40ea70
40ea62:	50                   	push   %eax
40ea63:	e8 37 bd ff ff       	call   0x40a79f
40ea68:	83 c8 ff             	or     $0xffffffff,%eax
40ea6b:	e9 e1 00 00 00       	jmp    0x40eb51
40ea70:	8b 73 10             	mov    0x10(%ebx),%esi
40ea73:	8d bd c8 fd ff ff    	lea    -0x238(%ebp),%edi
40ea79:	ba 88 00 00 00       	mov    $0x88,%edx
40ea7e:	8b ca                	mov    %edx,%ecx
40ea80:	50                   	push   %eax
40ea81:	8b 76 48             	mov    0x48(%esi),%esi
40ea84:	ff 75 f4             	push   -0xc(%ebp)
40ea87:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ea89:	8b ca                	mov    %edx,%ecx
40ea8b:	8d b5 c8 fd ff ff    	lea    -0x238(%ebp),%esi
40ea91:	8b f8                	mov    %eax,%edi
40ea93:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ea95:	83 20 00             	andl   $0x0,(%eax)
40ea98:	e8 b9 01 00 00       	call   0x40ec56
40ea9d:	8b f8                	mov    %eax,%edi
40ea9f:	83 ce ff             	or     $0xffffffff,%esi
40eaa2:	59                   	pop    %ecx
40eaa3:	59                   	pop    %ecx
40eaa4:	3b fe                	cmp    %esi,%edi
40eaa6:	75 1b                	jne    0x40eac3
40eaa8:	e8 82 bc ff ff       	call   0x40a72f
40eaad:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40eab3:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eab6:	50                   	push   %eax
40eab7:	e8 e3 bc ff ff       	call   0x40a79f
40eabc:	8b c6                	mov    %esi,%eax
40eabe:	e9 8e 00 00 00       	jmp    0x40eb51
40eac3:	80 7b 0c 00          	cmpb   $0x0,0xc(%ebx)
40eac7:	75 05                	jne    0x40eace
40eac9:	e8 72 b4 ff ff       	call   0x409f40
40eace:	8b 43 10             	mov    0x10(%ebx),%eax
40ead1:	8b 40 48             	mov    0x48(%eax),%eax
40ead4:	f0 0f c1 30          	lock xadd %esi,(%eax)
40ead8:	4e                   	dec    %esi
40ead9:	75 15                	jne    0x40eaf0
40eadb:	8b 43 10             	mov    0x10(%ebx),%eax
40eade:	81 78 48 f0 12 42 00 	cmpl   $0x4212f0,0x48(%eax)
40eae5:	74 09                	je     0x40eaf0
40eae7:	ff 70 48             	push   0x48(%eax)
40eaea:	e8 b0 bc ff ff       	call   0x40a79f
40eaef:	59                   	pop    %ecx
40eaf0:	8b 45 fc             	mov    -0x4(%ebp),%eax
40eaf3:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40eaf9:	8b 4b 10             	mov    0x10(%ebx),%ecx
40eafc:	89 41 48             	mov    %eax,0x48(%ecx)
40eaff:	8b 4b 10             	mov    0x10(%ebx),%ecx
40eb02:	a1 68 18 42 00       	mov    0x421868,%eax
40eb07:	85 81 50 03 00 00    	test   %eax,0x350(%ecx)
40eb0d:	75 39                	jne    0x40eb48
40eb0f:	8d 43 10             	lea    0x10(%ebx),%eax
40eb12:	89 45 ec             	mov    %eax,-0x14(%ebp)
40eb15:	8d 4d fb             	lea    -0x5(%ebp),%ecx
40eb18:	6a 05                	push   $0x5
40eb1a:	8d 43 14             	lea    0x14(%ebx),%eax
40eb1d:	89 45 f0             	mov    %eax,-0x10(%ebp)
40eb20:	58                   	pop    %eax
40eb21:	89 45 f4             	mov    %eax,-0xc(%ebp)
40eb24:	89 45 fc             	mov    %eax,-0x4(%ebp)
40eb27:	8d 45 f4             	lea    -0xc(%ebp),%eax
40eb2a:	50                   	push   %eax
40eb2b:	8d 45 ec             	lea    -0x14(%ebp),%eax
40eb2e:	50                   	push   %eax
40eb2f:	8d 45 fc             	lea    -0x4(%ebp),%eax
40eb32:	50                   	push   %eax
40eb33:	e8 47 fb ff ff       	call   0x40e67f
40eb38:	80 7b 0c 00          	cmpb   $0x0,0xc(%ebx)
40eb3c:	74 0a                	je     0x40eb48
40eb3e:	8b 43 14             	mov    0x14(%ebx),%eax
40eb41:	8b 00                	mov    (%eax),%eax
40eb43:	a3 e4 12 42 00       	mov    %eax,0x4212e4
40eb48:	6a 00                	push   $0x0
40eb4a:	e8 50 bc ff ff       	call   0x40a79f
40eb4f:	8b c7                	mov    %edi,%eax
40eb51:	59                   	pop    %ecx
40eb52:	5f                   	pop    %edi
40eb53:	5e                   	pop    %esi
40eb54:	8b e5                	mov    %ebp,%esp
40eb56:	5d                   	pop    %ebp
40eb57:	8b e3                	mov    %ebx,%esp
40eb59:	5b                   	pop    %ebx
40eb5a:	c3                   	ret
40eb5b:	6a 0c                	push   $0xc
40eb5d:	68 a8 01 42 00       	push   $0x4201a8
40eb62:	e8 39 53 ff ff       	call   0x403ea0
40eb67:	33 f6                	xor    %esi,%esi
40eb69:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40eb6c:	8b 7d 08             	mov    0x8(%ebp),%edi
40eb6f:	a1 68 18 42 00       	mov    0x421868,%eax
40eb74:	85 87 50 03 00 00    	test   %eax,0x350(%edi)
40eb7a:	74 0e                	je     0x40eb8a
40eb7c:	39 77 4c             	cmp    %esi,0x4c(%edi)
40eb7f:	74 09                	je     0x40eb8a
40eb81:	8b 77 48             	mov    0x48(%edi),%esi
40eb84:	85 f6                	test   %esi,%esi
40eb86:	74 6d                	je     0x40ebf5
40eb88:	eb 59                	jmp    0x40ebe3
40eb8a:	6a 05                	push   $0x5
40eb8c:	e8 fb f3 ff ff       	call   0x40df8c
40eb91:	59                   	pop    %ecx
40eb92:	89 75 fc             	mov    %esi,-0x4(%ebp)
40eb95:	8b 77 48             	mov    0x48(%edi),%esi
40eb98:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40eb9b:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40eb9e:	3b 33                	cmp    (%ebx),%esi
40eba0:	74 27                	je     0x40ebc9
40eba2:	85 f6                	test   %esi,%esi
40eba4:	74 18                	je     0x40ebbe
40eba6:	83 c8 ff             	or     $0xffffffff,%eax
40eba9:	f0 0f c1 06          	lock xadd %eax,(%esi)
40ebad:	75 0f                	jne    0x40ebbe
40ebaf:	81 fe f0 12 42 00    	cmp    $0x4212f0,%esi
40ebb5:	74 07                	je     0x40ebbe
40ebb7:	56                   	push   %esi
40ebb8:	e8 e2 bb ff ff       	call   0x40a79f
40ebbd:	59                   	pop    %ecx
40ebbe:	8b 33                	mov    (%ebx),%esi
40ebc0:	89 77 48             	mov    %esi,0x48(%edi)
40ebc3:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40ebc6:	f0 ff 06             	lock incl (%esi)
40ebc9:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ebd0:	e8 05 00 00 00       	call   0x40ebda
40ebd5:	eb ad                	jmp    0x40eb84
40ebd7:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40ebda:	6a 05                	push   $0x5
40ebdc:	e8 f3 f3 ff ff       	call   0x40dfd4
40ebe1:	59                   	pop    %ecx
40ebe2:	c3                   	ret
40ebe3:	8b c6                	mov    %esi,%eax
40ebe5:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40ebe8:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40ebef:	59                   	pop    %ecx
40ebf0:	5f                   	pop    %edi
40ebf1:	5e                   	pop    %esi
40ebf2:	5b                   	pop    %ebx
40ebf3:	c9                   	leave
40ebf4:	c3                   	ret
40ebf5:	e8 30 b9 ff ff       	call   0x40a52a
40ebfa:	cc                   	int3
40ebfb:	80 3d 2c 25 42 00 00 	cmpb   $0x0,0x42252c
40ec02:	75 3c                	jne    0x40ec40
40ec04:	c7 05 24 25 42 00 f0 	movl   $0x4212f0,0x422524
40ec0b:	12 42 00
40ec0e:	c7 05 20 25 42 00 18 	movl   $0x421618,0x422520
40ec15:	16 42 00
40ec18:	c7 05 1c 25 42 00 10 	movl   $0x421510,0x42251c
40ec1f:	15 42 00
40ec22:	e8 41 d8 ff ff       	call   0x40c468
40ec27:	68 24 25 42 00       	push   $0x422524
40ec2c:	50                   	push   %eax
40ec2d:	6a 01                	push   $0x1
40ec2f:	6a fd                	push   $0xfffffffd
40ec31:	e8 d0 fd ff ff       	call   0x40ea06
40ec36:	83 c4 10             	add    $0x10,%esp
40ec39:	c6 05 2c 25 42 00 01 	movb   $0x1,0x42252c
40ec40:	b0 01                	mov    $0x1,%al
40ec42:	c3                   	ret
40ec43:	e8 65 d7 ff ff       	call   0x40c3ad
40ec48:	68 24 25 42 00       	push   $0x422524
40ec4d:	50                   	push   %eax
40ec4e:	e8 08 ff ff ff       	call   0x40eb5b
40ec53:	59                   	pop    %ecx
40ec54:	59                   	pop    %ecx
40ec55:	c3                   	ret
40ec56:	8b ff                	mov    %edi,%edi
40ec58:	55                   	push   %ebp
40ec59:	8b ec                	mov    %esp,%ebp
40ec5b:	83 ec 24             	sub    $0x24,%esp
40ec5e:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40ec63:	33 c5                	xor    %ebp,%eax
40ec65:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ec68:	53                   	push   %ebx
40ec69:	56                   	push   %esi
40ec6a:	8b 75 0c             	mov    0xc(%ebp),%esi
40ec6d:	57                   	push   %edi
40ec6e:	ff 75 08             	push   0x8(%ebp)
40ec71:	e8 17 fb ff ff       	call   0x40e78d
40ec76:	8b d8                	mov    %eax,%ebx
40ec78:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40ec7b:	59                   	pop    %ecx
40ec7c:	85 db                	test   %ebx,%ebx
40ec7e:	0f 84 bf 01 00 00    	je     0x40ee43
40ec84:	33 ff                	xor    %edi,%edi
40ec86:	8b cf                	mov    %edi,%ecx
40ec88:	8b c7                	mov    %edi,%eax
40ec8a:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40ec8d:	39 98 20 17 42 00    	cmp    %ebx,0x421720(%eax)
40ec93:	0f 84 f6 00 00 00    	je     0x40ed8f
40ec99:	41                   	inc    %ecx
40ec9a:	83 c0 30             	add    $0x30,%eax
40ec9d:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40eca0:	3d f0 00 00 00       	cmp    $0xf0,%eax
40eca5:	72 e6                	jb     0x40ec8d
40eca7:	81 fb e8 fd 00 00    	cmp    $0xfde8,%ebx
40ecad:	0f 84 d4 00 00 00    	je     0x40ed87
40ecb3:	0f b7 c3             	movzwl %bx,%eax
40ecb6:	50                   	push   %eax
40ecb7:	ff 15 00 91 41 00    	call   *0x419100
40ecbd:	85 c0                	test   %eax,%eax
40ecbf:	0f 84 c2 00 00 00    	je     0x40ed87
40ecc5:	b8 e9 fd 00 00       	mov    $0xfde9,%eax
40ecca:	3b d8                	cmp    %eax,%ebx
40eccc:	75 20                	jne    0x40ecee
40ecce:	89 46 04             	mov    %eax,0x4(%esi)
40ecd1:	89 be 1c 02 00 00    	mov    %edi,0x21c(%esi)
40ecd7:	89 7e 18             	mov    %edi,0x18(%esi)
40ecda:	66 89 7e 1c          	mov    %di,0x1c(%esi)
40ecde:	89 7e 08             	mov    %edi,0x8(%esi)
40ece1:	33 c0                	xor    %eax,%eax
40ece3:	8d 7e 0c             	lea    0xc(%esi),%edi
40ece6:	ab                   	stos   %eax,%es:(%edi)
40ece7:	ab                   	stos   %eax,%es:(%edi)
40ece8:	ab                   	stos   %eax,%es:(%edi)
40ece9:	e9 4d 01 00 00       	jmp    0x40ee3b
40ecee:	8d 45 e8             	lea    -0x18(%ebp),%eax
40ecf1:	50                   	push   %eax
40ecf2:	53                   	push   %ebx
40ecf3:	ff 15 0c 91 41 00    	call   *0x41910c
40ecf9:	85 c0                	test   %eax,%eax
40ecfb:	74 7e                	je     0x40ed7b
40ecfd:	68 01 01 00 00       	push   $0x101
40ed02:	8d 46 18             	lea    0x18(%esi),%eax
40ed05:	57                   	push   %edi
40ed06:	50                   	push   %eax
40ed07:	e8 64 5d ff ff       	call   0x404a70
40ed0c:	83 c4 0c             	add    $0xc,%esp
40ed0f:	89 5e 04             	mov    %ebx,0x4(%esi)
40ed12:	83 7d e8 02          	cmpl   $0x2,-0x18(%ebp)
40ed16:	89 be 1c 02 00 00    	mov    %edi,0x21c(%esi)
40ed1c:	75 c0                	jne    0x40ecde
40ed1e:	80 7d ee 00          	cmpb   $0x0,-0x12(%ebp)
40ed22:	8d 45 ee             	lea    -0x12(%ebp),%eax
40ed25:	74 2a                	je     0x40ed51
40ed27:	8a 48 01             	mov    0x1(%eax),%cl
40ed2a:	84 c9                	test   %cl,%cl
40ed2c:	74 23                	je     0x40ed51
40ed2e:	0f b6 38             	movzbl (%eax),%edi
40ed31:	0f b6 c9             	movzbl %cl,%ecx
40ed34:	3b f9                	cmp    %ecx,%edi
40ed36:	77 11                	ja     0x40ed49
40ed38:	8d 56 19             	lea    0x19(%esi),%edx
40ed3b:	2b cf                	sub    %edi,%ecx
40ed3d:	03 d7                	add    %edi,%edx
40ed3f:	41                   	inc    %ecx
40ed40:	80 0a 04             	orb    $0x4,(%edx)
40ed43:	42                   	inc    %edx
40ed44:	83 e9 01             	sub    $0x1,%ecx
40ed47:	75 f7                	jne    0x40ed40
40ed49:	83 c0 02             	add    $0x2,%eax
40ed4c:	80 38 00             	cmpb   $0x0,(%eax)
40ed4f:	75 d6                	jne    0x40ed27
40ed51:	8d 46 1a             	lea    0x1a(%esi),%eax
40ed54:	b9 fe 00 00 00       	mov    $0xfe,%ecx
40ed59:	80 08 08             	orb    $0x8,(%eax)
40ed5c:	40                   	inc    %eax
40ed5d:	83 e9 01             	sub    $0x1,%ecx
40ed60:	75 f7                	jne    0x40ed59
40ed62:	ff 76 04             	push   0x4(%esi)
40ed65:	e8 e5 f9 ff ff       	call   0x40e74f
40ed6a:	33 ff                	xor    %edi,%edi
40ed6c:	89 86 1c 02 00 00    	mov    %eax,0x21c(%esi)
40ed72:	83 c4 04             	add    $0x4,%esp
40ed75:	47                   	inc    %edi
40ed76:	e9 63 ff ff ff       	jmp    0x40ecde
40ed7b:	39 3d 28 25 42 00    	cmp    %edi,0x422528
40ed81:	0f 85 bc 00 00 00    	jne    0x40ee43
40ed87:	83 c8 ff             	or     $0xffffffff,%eax
40ed8a:	e9 bd 00 00 00       	jmp    0x40ee4c
40ed8f:	68 01 01 00 00       	push   $0x101
40ed94:	8d 46 18             	lea    0x18(%esi),%eax
40ed97:	57                   	push   %edi
40ed98:	50                   	push   %eax
40ed99:	e8 d2 5c ff ff       	call   0x404a70
40ed9e:	83 c4 0c             	add    $0xc,%esp
40eda1:	6b 45 e4 30          	imul   $0x30,-0x1c(%ebp),%eax
40eda5:	89 45 dc             	mov    %eax,-0x24(%ebp)
40eda8:	8d 80 30 17 42 00    	lea    0x421730(%eax),%eax
40edae:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40edb1:	80 38 00             	cmpb   $0x0,(%eax)
40edb4:	8b c8                	mov    %eax,%ecx
40edb6:	74 3b                	je     0x40edf3
40edb8:	8a 41 01             	mov    0x1(%ecx),%al
40edbb:	84 c0                	test   %al,%al
40edbd:	74 31                	je     0x40edf0
40edbf:	0f b6 11             	movzbl (%ecx),%edx
40edc2:	0f b6 c0             	movzbl %al,%eax
40edc5:	3b d0                	cmp    %eax,%edx
40edc7:	77 1f                	ja     0x40ede8
40edc9:	8d 5e 19             	lea    0x19(%esi),%ebx
40edcc:	03 da                	add    %edx,%ebx
40edce:	81 fa 00 01 00 00    	cmp    $0x100,%edx
40edd4:	73 12                	jae    0x40ede8
40edd6:	8a 87 18 17 42 00    	mov    0x421718(%edi),%al
40eddc:	08 03                	or     %al,(%ebx)
40edde:	42                   	inc    %edx
40eddf:	0f b6 41 01          	movzbl 0x1(%ecx),%eax
40ede3:	43                   	inc    %ebx
40ede4:	3b d0                	cmp    %eax,%edx
40ede6:	76 e6                	jbe    0x40edce
40ede8:	83 c1 02             	add    $0x2,%ecx
40edeb:	80 39 00             	cmpb   $0x0,(%ecx)
40edee:	75 c8                	jne    0x40edb8
40edf0:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40edf3:	47                   	inc    %edi
40edf4:	83 c0 08             	add    $0x8,%eax
40edf7:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40edfa:	83 ff 04             	cmp    $0x4,%edi
40edfd:	72 b2                	jb     0x40edb1
40edff:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40ee02:	53                   	push   %ebx
40ee03:	89 5e 04             	mov    %ebx,0x4(%esi)
40ee06:	c7 46 08 01 00 00 00 	movl   $0x1,0x8(%esi)
40ee0d:	e8 3d f9 ff ff       	call   0x40e74f
40ee12:	83 c4 04             	add    $0x4,%esp
40ee15:	89 86 1c 02 00 00    	mov    %eax,0x21c(%esi)
40ee1b:	8b 45 dc             	mov    -0x24(%ebp),%eax
40ee1e:	8d 4e 0c             	lea    0xc(%esi),%ecx
40ee21:	6a 06                	push   $0x6
40ee23:	8d 90 24 17 42 00    	lea    0x421724(%eax),%edx
40ee29:	5f                   	pop    %edi