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
40ee7a:	6a 00                	push   $0x0
40ee7c:	6a 00                	push   $0x0
40ee7e:	56                   	push   %esi
40ee7f:	e8 6e 4e 00 00       	call   0x413cf2
40ee84:	83 c4 10             	add    $0x10,%esp
40ee87:	56                   	push   %esi
40ee88:	e8 01 50 00 00       	call   0x413e8e
40ee8d:	85 c0                	test   %eax,%eax
40ee8f:	59                   	pop    %ecx
40ee90:	0f 84 f6 01 00 00    	je     0x40f08c
40ee96:	8b 07                	mov    (%edi),%eax
40ee98:	f6 44 03 04 80       	testb  $0x80,0x4(%ebx,%eax,1)
40ee9d:	0f 84 e9 01 00 00    	je     0x40f08c
40eea3:	e8 a4 d6 ff ff       	call   0x40c54c
40eea8:	8b 40 6c             	mov    0x6c(%eax),%eax
40eeab:	33 c9                	xor    %ecx,%ecx
40eead:	39 48 14             	cmp    %ecx,0x14(%eax)
40eeb0:	8d 45 84             	lea    -0x7c(%ebp),%eax
40eeb3:	0f 94 c1             	sete   %cl
40eeb6:	50                   	push   %eax
40eeb7:	8b 07                	mov    (%edi),%eax
40eeb9:	ff 34 03             	push   (%ebx,%eax,1)
40eebc:	8b f1                	mov    %ecx,%esi
40eebe:	ff 15 50 71 41 00    	call   *0x417150
40eec4:	85 c0                	test   %eax,%eax
40eec6:	0f 84 c0 01 00 00    	je     0x40f08c
40eecc:	85 f6                	test   %esi,%esi
40eece:	74 0a                	je     0x40eeda
40eed0:	80 7d ab 00          	cmpb   $0x0,-0x55(%ebp)
40eed4:	0f 84 b2 01 00 00    	je     0x40f08c
40eeda:	ff 15 4c 71 41 00    	call   *0x41714c
40eee0:	83 65 b0 00          	andl   $0x0,-0x50(%ebp)
40eee4:	83 bd 28 05 00 00 00 	cmpl   $0x0,0x528(%ebp)
40eeeb:	8b 75 9c             	mov    -0x64(%ebp),%esi
40eeee:	89 45 84             	mov    %eax,-0x7c(%ebp)
40eef1:	89 75 8c             	mov    %esi,-0x74(%ebp)
40eef4:	0f 86 ff 03 00 00    	jbe    0x40f2f9
40eefa:	83 65 a4 00          	andl   $0x0,-0x5c(%ebp)
40eefe:	eb 03                	jmp    0x40ef03
40ef00:	8b 75 8c             	mov    -0x74(%ebp),%esi
40ef03:	8a 45 ab             	mov    -0x55(%ebp),%al
40ef06:	84 c0                	test   %al,%al
40ef08:	0f 85 06 01 00 00    	jne    0x40f014
40ef0e:	8a 06                	mov    (%esi),%al
40ef10:	33 c9                	xor    %ecx,%ecx
40ef12:	3c 0a                	cmp    $0xa,%al
40ef14:	0f 94 c1             	sete   %cl
40ef17:	0f be c0             	movsbl %al,%eax
40ef1a:	50                   	push   %eax
40ef1b:	89 4d 88             	mov    %ecx,-0x78(%ebp)
40ef1e:	e8 f5 f9 ff ff       	call   0x40e918
40ef23:	85 c0                	test   %eax,%eax
40ef25:	59                   	pop    %ecx
40ef26:	75 1a                	jne    0x40ef42
40ef28:	6a 01                	push   $0x1
40ef2a:	8d 45 ac             	lea    -0x54(%ebp),%eax
40ef2d:	56                   	push   %esi
40ef2e:	50                   	push   %eax
40ef2f:	e8 97 f9 ff ff       	call   0x40e8cb
40ef34:	83 c4 0c             	add    $0xc,%esp
40ef37:	83 f8 ff             	cmp    $0xffffffff,%eax
40ef3a:	0f 84 af 03 00 00    	je     0x40f2ef
40ef40:	eb 30                	jmp    0x40ef72
40ef42:	8b 45 9c             	mov    -0x64(%ebp),%eax
40ef45:	2b c6                	sub    %esi,%eax
40ef47:	03 85 28 05 00 00    	add    0x528(%ebp),%eax
40ef4d:	83 f8 01             	cmp    $0x1,%eax
40ef50:	0f 86 99 03 00 00    	jbe    0x40f2ef
40ef56:	6a 02                	push   $0x2
40ef58:	8d 45 ac             	lea    -0x54(%ebp),%eax
40ef5b:	56                   	push   %esi
40ef5c:	50                   	push   %eax
40ef5d:	e8 69 f9 ff ff       	call   0x40e8cb
40ef62:	83 c4 0c             	add    $0xc,%esp
40ef65:	83 f8 ff             	cmp    $0xffffffff,%eax
40ef68:	0f 84 81 03 00 00    	je     0x40f2ef
40ef6e:	46                   	inc    %esi
40ef6f:	ff 45 a4             	incl   -0x5c(%ebp)
40ef72:	33 c0                	xor    %eax,%eax
40ef74:	50                   	push   %eax
40ef75:	50                   	push   %eax
40ef76:	6a 05                	push   $0x5
40ef78:	8d 8d 0c 05 00 00    	lea    0x50c(%ebp),%ecx
40ef7e:	51                   	push   %ecx
40ef7f:	6a 01                	push   $0x1
40ef81:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40ef84:	51                   	push   %ecx
40ef85:	50                   	push   %eax
40ef86:	ff 75 84             	push   -0x7c(%ebp)
40ef89:	46                   	inc    %esi
40ef8a:	ff 45 a4             	incl   -0x5c(%ebp)
40ef8d:	89 75 8c             	mov    %esi,-0x74(%ebp)
40ef90:	ff 15 90 70 41 00    	call   *0x417090
40ef96:	8b f0                	mov    %eax,%esi
40ef98:	85 f6                	test   %esi,%esi
40ef9a:	0f 84 4f 03 00 00    	je     0x40f2ef
40efa0:	6a 00                	push   $0x0
40efa2:	8d 45 b0             	lea    -0x50(%ebp),%eax
40efa5:	50                   	push   %eax
40efa6:	56                   	push   %esi
40efa7:	8d 85 0c 05 00 00    	lea    0x50c(%ebp),%eax
40efad:	50                   	push   %eax
40efae:	8b 07                	mov    (%edi),%eax
40efb0:	ff 34 03             	push   (%ebx,%eax,1)
40efb3:	ff 15 28 70 41 00    	call   *0x417028
40efb9:	85 c0                	test   %eax,%eax
40efbb:	0f 84 25 03 00 00    	je     0x40f2e6
40efc1:	8b 45 b0             	mov    -0x50(%ebp),%eax
40efc4:	01 45 a0             	add    %eax,-0x60(%ebp)
40efc7:	3b c6                	cmp    %esi,%eax
40efc9:	0f 8c 20 03 00 00    	jl     0x40f2ef
40efcf:	83 7d 88 00          	cmpl   $0x0,-0x78(%ebp)
40efd3:	0f 84 9f 00 00 00    	je     0x40f078
40efd9:	6a 00                	push   $0x0
40efdb:	8d 45 b0             	lea    -0x50(%ebp),%eax
40efde:	50                   	push   %eax
40efdf:	6a 01                	push   $0x1
40efe1:	8d 85 0c 05 00 00    	lea    0x50c(%ebp),%eax
40efe7:	50                   	push   %eax
40efe8:	8b 07                	mov    (%edi),%eax
40efea:	c6 85 0c 05 00 00 0d 	movb   $0xd,0x50c(%ebp)
40eff1:	ff 34 03             	push   (%ebx,%eax,1)
40eff4:	ff 15 28 70 41 00    	call   *0x417028
40effa:	85 c0                	test   %eax,%eax
40effc:	0f 84 e4 02 00 00    	je     0x40f2e6
40f002:	83 7d b0 01          	cmpl   $0x1,-0x50(%ebp)
40f006:	0f 8c e3 02 00 00    	jl     0x40f2ef
40f00c:	ff 45 98             	incl   -0x68(%ebp)
40f00f:	ff 45 a0             	incl   -0x60(%ebp)
40f012:	eb 64                	jmp    0x40f078
40f014:	3c 01                	cmp    $0x1,%al
40f016:	74 04                	je     0x40f01c
40f018:	3c 02                	cmp    $0x2,%al
40f01a:	75 1b                	jne    0x40f037
40f01c:	0f b7 0e             	movzwl (%esi),%ecx
40f01f:	33 d2                	xor    %edx,%edx
40f021:	66 83 f9 0a          	cmp    $0xa,%cx
40f025:	0f 94 c2             	sete   %dl
40f028:	46                   	inc    %esi
40f029:	46                   	inc    %esi
40f02a:	83 45 a4 02          	addl   $0x2,-0x5c(%ebp)
40f02e:	89 4d ac             	mov    %ecx,-0x54(%ebp)
40f031:	89 75 8c             	mov    %esi,-0x74(%ebp)
40f034:	89 55 88             	mov    %edx,-0x78(%ebp)
40f037:	3c 01                	cmp    $0x1,%al
40f039:	74 04                	je     0x40f03f
40f03b:	3c 02                	cmp    $0x2,%al
40f03d:	75 39                	jne    0x40f078
40f03f:	ff 75 ac             	push   -0x54(%ebp)
40f042:	e8 f7 5b 00 00       	call   0x414c3e
40f047:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40f04b:	59                   	pop    %ecx
40f04c:	0f 85 94 02 00 00    	jne    0x40f2e6
40f052:	ff 45 a0             	incl   -0x60(%ebp)
40f055:	83 7d 88 00          	cmpl   $0x0,-0x78(%ebp)
40f059:	74 1d                	je     0x40f078
40f05b:	6a 0d                	push   $0xd
40f05d:	58                   	pop    %eax
40f05e:	50                   	push   %eax
40f05f:	89 45 ac             	mov    %eax,-0x54(%ebp)
40f062:	e8 d7 5b 00 00       	call   0x414c3e
40f067:	66 3b 45 ac          	cmp    -0x54(%ebp),%ax
40f06b:	59                   	pop    %ecx
40f06c:	0f 85 74 02 00 00    	jne    0x40f2e6
40f072:	ff 45 a0             	incl   -0x60(%ebp)
40f075:	ff 45 98             	incl   -0x68(%ebp)
40f078:	8b 85 28 05 00 00    	mov    0x528(%ebp),%eax
40f07e:	39 45 a4             	cmp    %eax,-0x5c(%ebp)
40f081:	0f 82 79 fe ff ff    	jb     0x40ef00
40f087:	e9 63 02 00 00       	jmp    0x40f2ef
40f08c:	8b 07                	mov    (%edi),%eax
40f08e:	03 c3                	add    %ebx,%eax
40f090:	f6 40 04 80          	testb  $0x80,0x4(%eax)
40f094:	0f 84 25 02 00 00    	je     0x40f2bf
40f09a:	8b 45 9c             	mov    -0x64(%ebp),%eax