40ee2a:	66 8b 02             	mov    (%edx),%ax
40ee2d:	8d 52 02             	lea    0x2(%edx),%edx
40ee30:	66 89 01             	mov    %ax,(%ecx)
40ee33:	8d 49 02             	lea    0x2(%ecx),%ecx
40ee36:	83 ef 01             	sub    $0x1,%edi
40ee39:	75 ef                	jne    0x40ee2a
40ee3b:	56                   	push   %esi
40ee3c:	e8 20 fa ff ff       	call   0x40e861
40ee41:	eb 06                	jmp    0x40ee49
40ee43:	56                   	push   %esi
40ee44:	e8 b5 f9 ff ff       	call   0x40e7fe
40ee49:	33 c0                	xor    %eax,%eax
40ee4b:	59                   	pop    %ecx
40ee4c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ee4f:	5f                   	pop    %edi
40ee50:	5e                   	pop    %esi
40ee51:	33 cd                	xor    %ebp,%ecx
40ee53:	5b                   	pop    %ebx
40ee54:	e8 6f 52 ff ff       	call   0x4040c8
40ee59:	c9                   	leave
40ee5a:	c3                   	ret
40ee5b:	8b ff                	mov    %edi,%edi
40ee5d:	55                   	push   %ebp
40ee5e:	8b ec                	mov    %esp,%ebp
40ee60:	56                   	push   %esi
40ee61:	8b 75 14             	mov    0x14(%ebp),%esi
40ee64:	85 f6                	test   %esi,%esi
40ee66:	75 04                	jne    0x40ee6c
40ee68:	33 c0                	xor    %eax,%eax
40ee6a:	eb 6d                	jmp    0x40eed9
40ee6c:	8b 45 08             	mov    0x8(%ebp),%eax
40ee6f:	85 c0                	test   %eax,%eax
40ee71:	75 13                	jne    0x40ee86
40ee73:	e8 b7 b8 ff ff       	call   0x40a72f
40ee78:	6a 16                	push   $0x16
40ee7a:	5e                   	pop    %esi
40ee7b:	89 30                	mov    %esi,(%eax)
40ee7d:	e8 47 86 ff ff       	call   0x4074c9
40ee82:	8b c6                	mov    %esi,%eax
40ee84:	eb 53                	jmp    0x40eed9
40ee86:	57                   	push   %edi
40ee87:	8b 7d 10             	mov    0x10(%ebp),%edi
40ee8a:	85 ff                	test   %edi,%edi
40ee8c:	74 14                	je     0x40eea2
40ee8e:	39 75 0c             	cmp    %esi,0xc(%ebp)
40ee91:	72 0f                	jb     0x40eea2
40ee93:	56                   	push   %esi
40ee94:	57                   	push   %edi
40ee95:	50                   	push   %eax
40ee96:	e8 95 54 ff ff       	call   0x404330
40ee9b:	83 c4 0c             	add    $0xc,%esp
40ee9e:	33 c0                	xor    %eax,%eax
40eea0:	eb 36                	jmp    0x40eed8
40eea2:	ff 75 0c             	push   0xc(%ebp)
40eea5:	6a 00                	push   $0x0
40eea7:	50                   	push   %eax
40eea8:	e8 c3 5b ff ff       	call   0x404a70
40eead:	83 c4 0c             	add    $0xc,%esp
40eeb0:	85 ff                	test   %edi,%edi
40eeb2:	75 09                	jne    0x40eebd
40eeb4:	e8 76 b8 ff ff       	call   0x40a72f
40eeb9:	6a 16                	push   $0x16
40eebb:	eb 0c                	jmp    0x40eec9
40eebd:	39 75 0c             	cmp    %esi,0xc(%ebp)
40eec0:	73 13                	jae    0x40eed5
40eec2:	e8 68 b8 ff ff       	call   0x40a72f
40eec7:	6a 22                	push   $0x22
40eec9:	5e                   	pop    %esi
40eeca:	89 30                	mov    %esi,(%eax)
40eecc:	e8 f8 85 ff ff       	call   0x4074c9
40eed1:	8b c6                	mov    %esi,%eax
40eed3:	eb 03                	jmp    0x40eed8
40eed5:	6a 16                	push   $0x16
40eed7:	58                   	pop    %eax
40eed8:	5f                   	pop    %edi
40eed9:	5e                   	pop    %esi
40eeda:	5d                   	pop    %ebp
40eedb:	c3                   	ret
40eedc:	8b ff                	mov    %edi,%edi
40eede:	55                   	push   %ebp
40eedf:	8b ec                	mov    %esp,%ebp
40eee1:	8b 45 08             	mov    0x8(%ebp),%eax
40eee4:	b9 ac de 00 00       	mov    $0xdeac,%ecx
40eee9:	3b c1                	cmp    %ecx,%eax
40eeeb:	77 46                	ja     0x40ef33
40eeed:	74 26                	je     0x40ef15
40eeef:	b9 33 c4 00 00       	mov    $0xc433,%ecx
40eef4:	3b c1                	cmp    %ecx,%eax
40eef6:	77 21                	ja     0x40ef19
40eef8:	74 1b                	je     0x40ef15
40eefa:	83 e8 2a             	sub    $0x2a,%eax
40eefd:	74 16                	je     0x40ef15
40eeff:	2d 02 c4 00 00       	sub    $0xc402,%eax
40ef04:	74 0f                	je     0x40ef15
40ef06:	83 e8 01             	sub    $0x1,%eax
40ef09:	74 0a                	je     0x40ef15
40ef0b:	83 e8 01             	sub    $0x1,%eax
40ef0e:	74 05                	je     0x40ef15
40ef10:	83 e8 03             	sub    $0x3,%eax
40ef13:	75 52                	jne    0x40ef67
40ef15:	33 c0                	xor    %eax,%eax
40ef17:	5d                   	pop    %ebp
40ef18:	c3                   	ret
40ef19:	2d 35 c4 00 00       	sub    $0xc435,%eax
40ef1e:	74 f5                	je     0x40ef15
40ef20:	2d 63 12 00 00       	sub    $0x1263,%eax
40ef25:	74 45                	je     0x40ef6c
40ef27:	2d 12 08 00 00       	sub    $0x812,%eax
40ef2c:	74 e7                	je     0x40ef15
40ef2e:	83 e8 01             	sub    $0x1,%eax
40ef31:	eb e0                	jmp    0x40ef13
40ef33:	b9 b1 de 00 00       	mov    $0xdeb1,%ecx
40ef38:	3b c1                	cmp    %ecx,%eax
40ef3a:	77 13                	ja     0x40ef4f
40ef3c:	74 d7                	je     0x40ef15
40ef3e:	2d ad de 00 00       	sub    $0xdead,%eax
40ef43:	74 d0                	je     0x40ef15
40ef45:	83 e8 01             	sub    $0x1,%eax
40ef48:	74 cb                	je     0x40ef15
40ef4a:	83 e8 01             	sub    $0x1,%eax
40ef4d:	eb dd                	jmp    0x40ef2c
40ef4f:	2d b2 de 00 00       	sub    $0xdeb2,%eax
40ef54:	74 bf                	je     0x40ef15
40ef56:	83 e8 01             	sub    $0x1,%eax
40ef59:	74 ba                	je     0x40ef15
40ef5b:	2d 35 1f 00 00       	sub    $0x1f35,%eax
40ef60:	74 b3                	je     0x40ef15
40ef62:	83 e8 01             	sub    $0x1,%eax
40ef65:	74 05                	je     0x40ef6c
40ef67:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef6a:	5d                   	pop    %ebp
40ef6b:	c3                   	ret
40ef6c:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef6f:	83 e0 08             	and    $0x8,%eax
40ef72:	5d                   	pop    %ebp
40ef73:	c3                   	ret
40ef74:	8b ff                	mov    %edi,%edi
40ef76:	55                   	push   %ebp
40ef77:	8b ec                	mov    %esp,%ebp
40ef79:	ff 75 1c             	push   0x1c(%ebp)
40ef7c:	ff 75 18             	push   0x18(%ebp)
40ef7f:	ff 75 14             	push   0x14(%ebp)
40ef82:	ff 75 10             	push   0x10(%ebp)
40ef85:	ff 75 0c             	push   0xc(%ebp)
40ef88:	ff 75 08             	push   0x8(%ebp)
40ef8b:	e8 4c ff ff ff       	call   0x40eedc
40ef90:	59                   	pop    %ecx
40ef91:	59                   	pop    %ecx
40ef92:	50                   	push   %eax
40ef93:	ff 75 08             	push   0x8(%ebp)
40ef96:	ff 15 10 91 41 00    	call   *0x419110
40ef9c:	5d                   	pop    %ebp
40ef9d:	c3                   	ret
40ef9e:	8b ff                	mov    %edi,%edi
40efa0:	55                   	push   %ebp
40efa1:	8b ec                	mov    %esp,%ebp
40efa3:	8b 45 08             	mov    0x8(%ebp),%eax
40efa6:	b9 ac de 00 00       	mov    $0xdeac,%ecx
40efab:	3b c1                	cmp    %ecx,%eax
40efad:	77 3d                	ja     0x40efec
40efaf:	74 79                	je     0x40f02a
40efb1:	b9 33 c4 00 00       	mov    $0xc433,%ecx
40efb6:	3b c1                	cmp    %ecx,%eax
40efb8:	77 1d                	ja     0x40efd7
40efba:	74 6e                	je     0x40f02a
40efbc:	83 e8 2a             	sub    $0x2a,%eax
40efbf:	74 69                	je     0x40f02a
40efc1:	2d 02 c4 00 00       	sub    $0xc402,%eax
40efc6:	74 62                	je     0x40f02a
40efc8:	83 e8 01             	sub    $0x1,%eax
40efcb:	74 5d                	je     0x40f02a
40efcd:	83 e8 01             	sub    $0x1,%eax
40efd0:	74 58                	je     0x40f02a
40efd2:	83 e8 03             	sub    $0x3,%eax
40efd5:	eb 47                	jmp    0x40f01e
40efd7:	2d 35 c4 00 00       	sub    $0xc435,%eax
40efdc:	74 4c                	je     0x40f02a
40efde:	2d 63 12 00 00       	sub    $0x1263,%eax
40efe3:	74 45                	je     0x40f02a
40efe5:	2d 12 08 00 00       	sub    $0x812,%eax
40efea:	eb 2d                	jmp    0x40f019
40efec:	b9 b1 de 00 00       	mov    $0xdeb1,%ecx
40eff1:	3b c1                	cmp    %ecx,%eax
40eff3:	77 13                	ja     0x40f008
40eff5:	74 33                	je     0x40f02a
40eff7:	2d ad de 00 00       	sub    $0xdead,%eax
40effc:	74 2c                	je     0x40f02a
40effe:	83 e8 01             	sub    $0x1,%eax
40f001:	74 27                	je     0x40f02a
40f003:	83 e8 01             	sub    $0x1,%eax
40f006:	eb 11                	jmp    0x40f019
40f008:	2d b2 de 00 00       	sub    $0xdeb2,%eax
40f00d:	74 1b                	je     0x40f02a
40f00f:	83 e8 01             	sub    $0x1,%eax
40f012:	74 16                	je     0x40f02a
40f014:	2d 35 1f 00 00       	sub    $0x1f35,%eax
40f019:	74 0f                	je     0x40f02a
40f01b:	83 e8 01             	sub    $0x1,%eax
40f01e:	74 0a                	je     0x40f02a
40f020:	8b 45 0c             	mov    0xc(%ebp),%eax
40f023:	25 7f ff ff ff       	and    $0xffffff7f,%eax
40f028:	5d                   	pop    %ebp
40f029:	c3                   	ret
40f02a:	33 c0                	xor    %eax,%eax
40f02c:	5d                   	pop    %ebp
40f02d:	c3                   	ret
40f02e:	8b ff                	mov    %edi,%edi
40f030:	55                   	push   %ebp
40f031:	8b ec                	mov    %esp,%ebp
40f033:	8b 55 08             	mov    0x8(%ebp),%edx
40f036:	53                   	push   %ebx
40f037:	56                   	push   %esi
40f038:	57                   	push   %edi
40f039:	81 fa e8 fd 00 00    	cmp    $0xfde8,%edx
40f03f:	74 0c                	je     0x40f04d
40f041:	81 fa e9 fd 00 00    	cmp    $0xfde9,%edx
40f047:	74 04                	je     0x40f04d
40f049:	32 db                	xor    %bl,%bl
40f04b:	eb 02                	jmp    0x40f04f
40f04d:	b3 01                	mov    $0x1,%bl
40f04f:	ff 75 0c             	push   0xc(%ebp)
40f052:	52                   	push   %edx
40f053:	e8 46 ff ff ff       	call   0x40ef9e
40f058:	8b 7d 24             	mov    0x24(%ebp),%edi
40f05b:	59                   	pop    %ecx
40f05c:	59                   	pop    %ecx
40f05d:	0f b6 cb             	movzbl %bl,%ecx
40f060:	f7 d9                	neg    %ecx
40f062:	0f b6 f3             	movzbl %bl,%esi
40f065:	1b c9                	sbb    %ecx,%ecx
40f067:	f7 d1                	not    %ecx
40f069:	23 cf                	and    %edi,%ecx
40f06b:	f7 de                	neg    %esi
40f06d:	1b f6                	sbb    %esi,%esi
40f06f:	f7 d6                	not    %esi
40f071:	23 75 20             	and    0x20(%ebp),%esi
40f074:	84 db                	test   %bl,%bl
40f076:	74 07                	je     0x40f07f
40f078:	85 ff                	test   %edi,%edi
40f07a:	74 03                	je     0x40f07f
40f07c:	83 27 00             	andl   $0x0,(%edi)
40f07f:	51                   	push   %ecx
40f080:	56                   	push   %esi
40f081:	ff 75 1c             	push   0x1c(%ebp)
40f084:	ff 75 18             	push   0x18(%ebp)
40f087:	ff 75 14             	push   0x14(%ebp)
40f08a:	ff 75 10             	push   0x10(%ebp)
40f08d:	50                   	push   %eax
40f08e:	52                   	push   %edx
40f08f:	ff 15 14 91 41 00    	call   *0x419114
40f095:	5f                   	pop    %edi
40f096:	5e                   	pop    %esi
40f097:	5b                   	pop    %ebx
40f098:	5d                   	pop    %ebp
40f099:	c3                   	ret
40f09a:	8b ff                	mov    %edi,%edi
40f09c:	55                   	push   %ebp
40f09d:	8b ec                	mov    %esp,%ebp
40f09f:	8b 55 08             	mov    0x8(%ebp),%edx
40f0a2:	57                   	push   %edi
40f0a3:	33 ff                	xor    %edi,%edi
40f0a5:	66 39 3a             	cmp    %di,(%edx)
40f0a8:	74 21                	je     0x40f0cb
40f0aa:	56                   	push   %esi
40f0ab:	8b ca                	mov    %edx,%ecx
40f0ad:	8d 71 02             	lea    0x2(%ecx),%esi
40f0b0:	66 8b 01             	mov    (%ecx),%ax
40f0b3:	83 c1 02             	add    $0x2,%ecx
40f0b6:	66 3b c7             	cmp    %di,%ax
40f0b9:	75 f5                	jne    0x40f0b0
40f0bb:	2b ce                	sub    %esi,%ecx
40f0bd:	d1 f9                	sar    $1,%ecx
40f0bf:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40f0c2:	83 c2 02             	add    $0x2,%edx
40f0c5:	66 39 3a             	cmp    %di,(%edx)
40f0c8:	75 e1                	jne    0x40f0ab
40f0ca:	5e                   	pop    %esi
40f0cb:	8d 42 02             	lea    0x2(%edx),%eax
40f0ce:	5f                   	pop    %edi
40f0cf:	5d                   	pop    %ebp
40f0d0:	c3                   	ret
40f0d1:	8b ff                	mov    %edi,%edi
40f0d3:	56                   	push   %esi
40f0d4:	ff 15 18 91 41 00    	call   *0x419118
40f0da:	8b f0                	mov    %eax,%esi
40f0dc:	85 f6                	test   %esi,%esi
40f0de:	75 02                	jne    0x40f0e2
40f0e0:	5e                   	pop    %esi
40f0e1:	c3                   	ret
40f0e2:	53                   	push   %ebx
40f0e3:	57                   	push   %edi
40f0e4:	56                   	push   %esi
40f0e5:	e8 b0 ff ff ff       	call   0x40f09a
40f0ea:	8b d8                	mov    %eax,%ebx
40f0ec:	2b de                	sub    %esi,%ebx
40f0ee:	83 e3 fe             	and    $0xfffffffe,%ebx
40f0f1:	53                   	push   %ebx
40f0f2:	e8 db de ff ff       	call   0x40cfd2
40f0f7:	8b f8                	mov    %eax,%edi
40f0f9:	59                   	pop    %ecx
40f0fa:	59                   	pop    %ecx
40f0fb:	85 ff                	test   %edi,%edi
40f0fd:	74 0b                	je     0x40f10a
40f0ff:	53                   	push   %ebx
40f100:	56                   	push   %esi
40f101:	57                   	push   %edi
40f102:	e8 29 52 ff ff       	call   0x404330
40f107:	83 c4 0c             	add    $0xc,%esp
40f10a:	6a 00                	push   $0x0
40f10c:	e8 8e b6 ff ff       	call   0x40a79f
40f111:	59                   	pop    %ecx
40f112:	56                   	push   %esi
40f113:	ff 15 1c 91 41 00    	call   *0x41911c
40f119:	8b c7                	mov    %edi,%eax
40f11b:	5f                   	pop    %edi
40f11c:	5b                   	pop    %ebx
40f11d:	5e                   	pop    %esi
40f11e:	c3                   	ret
40f11f:	8b ff                	mov    %edi,%edi
40f121:	55                   	push   %ebp
40f122:	8b ec                	mov    %esp,%ebp
40f124:	83 ec 14             	sub    $0x14,%esp
40f127:	53                   	push   %ebx
40f128:	56                   	push   %esi
40f129:	8b 75 08             	mov    0x8(%ebp),%esi
40f12c:	85 f6                	test   %esi,%esi
40f12e:	75 13                	jne    0x40f143
40f130:	e8 fa b5 ff ff       	call   0x40a72f
40f135:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f13b:	83 c8 ff             	or     $0xffffffff,%eax
40f13e:	e9 58 02 00 00       	jmp    0x40f39b
40f143:	57                   	push   %edi
40f144:	6a 3d                	push   $0x3d
40f146:	56                   	push   %esi
40f147:	8b fe                	mov    %esi,%edi
40f149:	e8 92 8d 00 00       	call   0x417ee0
40f14e:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f151:	59                   	pop    %ecx
40f152:	59                   	pop    %ecx
40f153:	85 c0                	test   %eax,%eax
40f155:	0f 84 2a 02 00 00    	je     0x40f385
40f15b:	3b c6                	cmp    %esi,%eax
40f15d:	0f 84 22 02 00 00    	je     0x40f385
40f163:	0f b7 48 02          	movzwl 0x2(%eax),%ecx
40f167:	8b c1                	mov    %ecx,%eax
40f169:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f16c:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f16f:	e8 f4 02 00 00       	call   0x40f468
40f174:	a1 68 20 42 00       	mov    0x422068,%eax
40f179:	33 db                	xor    %ebx,%ebx