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
40f17b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f17e:	85 c0                	test   %eax,%eax
40f180:	0f 85 96 00 00 00    	jne    0x40f21c
40f186:	a1 64 20 42 00       	mov    0x422064,%eax
40f18b:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40f18e:	74 30                	je     0x40f1c0
40f190:	85 c0                	test   %eax,%eax
40f192:	74 2c                	je     0x40f1c0
40f194:	e8 fc a7 ff ff       	call   0x409995
40f199:	85 c0                	test   %eax,%eax
40f19b:	75 14                	jne    0x40f1b1
40f19d:	e8 8d b5 ff ff       	call   0x40a72f
40f1a2:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f1a8:	83 cb ff             	or     $0xffffffff,%ebx
40f1ab:	56                   	push   %esi
40f1ac:	e9 ba 01 00 00       	jmp    0x40f36b
40f1b1:	e8 b2 02 00 00       	call   0x40f468
40f1b6:	a1 68 20 42 00       	mov    0x422068,%eax
40f1bb:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f1be:	eb 58                	jmp    0x40f218
40f1c0:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f1c4:	74 e5                	je     0x40f1ab
40f1c6:	85 c0                	test   %eax,%eax
40f1c8:	75 2b                	jne    0x40f1f5
40f1ca:	6a 04                	push   $0x4
40f1cc:	6a 01                	push   $0x1
40f1ce:	e8 6f b5 ff ff       	call   0x40a742
40f1d3:	53                   	push   %ebx
40f1d4:	a3 64 20 42 00       	mov    %eax,0x422064
40f1d9:	e8 c1 b5 ff ff       	call   0x40a79f
40f1de:	83 c4 0c             	add    $0xc,%esp
40f1e1:	39 1d 64 20 42 00    	cmp    %ebx,0x422064
40f1e7:	74 bf                	je     0x40f1a8
40f1e9:	a1 68 20 42 00       	mov    0x422068,%eax
40f1ee:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f1f1:	85 c0                	test   %eax,%eax
40f1f3:	75 27                	jne    0x40f21c
40f1f5:	6a 04                	push   $0x4
40f1f7:	6a 01                	push   $0x1
40f1f9:	e8 44 b5 ff ff       	call   0x40a742
40f1fe:	53                   	push   %ebx
40f1ff:	a3 68 20 42 00       	mov    %eax,0x422068
40f204:	e8 96 b5 ff ff       	call   0x40a79f
40f209:	a1 68 20 42 00       	mov    0x422068,%eax
40f20e:	83 c4 0c             	add    $0xc,%esp
40f211:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f214:	85 c0                	test   %eax,%eax
40f216:	74 90                	je     0x40f1a8
40f218:	85 c0                	test   %eax,%eax
40f21a:	74 8c                	je     0x40f1a8
40f21c:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f21f:	2b c6                	sub    %esi,%eax
40f221:	d1 f8                	sar    $1,%eax
40f223:	50                   	push   %eax
40f224:	56                   	push   %esi
40f225:	89 45 f0             	mov    %eax,-0x10(%ebp)
40f228:	e8 55 02 00 00       	call   0x40f482
40f22d:	59                   	pop    %ecx
40f22e:	59                   	pop    %ecx
40f22f:	8b c8                	mov    %eax,%ecx
40f231:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f234:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f237:	85 c9                	test   %ecx,%ecx
40f239:	78 50                	js     0x40f28b
40f23b:	39 18                	cmp    %ebx,(%eax)
40f23d:	74 4c                	je     0x40f28b
40f23f:	ff 34 88             	push   (%eax,%ecx,4)
40f242:	e8 58 b5 ff ff       	call   0x40a79f
40f247:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f24a:	59                   	pop    %ecx
40f24b:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f24f:	75 30                	jne    0x40f281
40f251:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f254:	eb 08                	jmp    0x40f25e
40f256:	8b 44 91 04          	mov    0x4(%ecx,%edx,4),%eax
40f25a:	89 04 91             	mov    %eax,(%ecx,%edx,4)
40f25d:	42                   	inc    %edx
40f25e:	39 1c 91             	cmp    %ebx,(%ecx,%edx,4)
40f261:	75 f3                	jne    0x40f256
40f263:	6a 04                	push   $0x4
40f265:	52                   	push   %edx
40f266:	51                   	push   %ecx
40f267:	e8 ac 0e 00 00       	call   0x410118
40f26c:	53                   	push   %ebx
40f26d:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f270:	e8 2a b5 ff ff       	call   0x40a79f
40f275:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f278:	83 c4 10             	add    $0x10,%esp
40f27b:	85 c0                	test   %eax,%eax
40f27d:	74 63                	je     0x40f2e2
40f27f:	eb 5c                	jmp    0x40f2dd
40f281:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f284:	8b fb                	mov    %ebx,%edi
40f286:	89 34 90             	mov    %esi,(%eax,%edx,4)
40f289:	eb 57                	jmp    0x40f2e2
40f28b:	66 39 5d f4          	cmp    %bx,-0xc(%ebp)
40f28f:	0f 84 16 ff ff ff    	je     0x40f1ab
40f295:	f7 d9                	neg    %ecx
40f297:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f29a:	8d 51 02             	lea    0x2(%ecx),%edx
40f29d:	3b d1                	cmp    %ecx,%edx
40f29f:	0f 82 03 ff ff ff    	jb     0x40f1a8
40f2a5:	81 fa ff ff ff 3f    	cmp    $0x3fffffff,%edx
40f2ab:	0f 83 f7 fe ff ff    	jae    0x40f1a8
40f2b1:	6a 04                	push   $0x4
40f2b3:	52                   	push   %edx
40f2b4:	50                   	push   %eax
40f2b5:	e8 5e 0e 00 00       	call   0x410118
40f2ba:	53                   	push   %ebx
40f2bb:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f2be:	e8 dc b4 ff ff       	call   0x40a79f
40f2c3:	8b 45 f4             	mov    -0xc(%ebp),%eax
40f2c6:	83 c4 10             	add    $0x10,%esp
40f2c9:	85 c0                	test   %eax,%eax
40f2cb:	0f 84 d7 fe ff ff    	je     0x40f1a8
40f2d1:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f2d4:	8b fb                	mov    %ebx,%edi
40f2d6:	89 34 90             	mov    %esi,(%eax,%edx,4)
40f2d9:	89 5c 90 04          	mov    %ebx,0x4(%eax,%edx,4)
40f2dd:	a3 68 20 42 00       	mov    %eax,0x422068
40f2e2:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40f2e5:	0f 84 90 00 00 00    	je     0x40f37b
40f2eb:	8d 4e 02             	lea    0x2(%esi),%ecx
40f2ee:	66 8b 06             	mov    (%esi),%ax
40f2f1:	83 c6 02             	add    $0x2,%esi
40f2f4:	66 3b c3             	cmp    %bx,%ax
40f2f7:	75 f5                	jne    0x40f2ee
40f2f9:	2b f1                	sub    %ecx,%esi
40f2fb:	d1 fe                	sar    $1,%esi
40f2fd:	6a 02                	push   $0x2
40f2ff:	8d 46 02             	lea    0x2(%esi),%eax
40f302:	50                   	push   %eax
40f303:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f306:	e8 37 b4 ff ff       	call   0x40a742
40f30b:	8b f0                	mov    %eax,%esi
40f30d:	59                   	pop    %ecx
40f30e:	59                   	pop    %ecx
40f30f:	85 f6                	test   %esi,%esi
40f311:	75 08                	jne    0x40f31b
40f313:	53                   	push   %ebx
40f314:	e8 86 b4 ff ff       	call   0x40a79f
40f319:	eb 4e                	jmp    0x40f369
40f31b:	ff 75 08             	push   0x8(%ebp)
40f31e:	ff 75 f4             	push   -0xc(%ebp)
40f321:	56                   	push   %esi
40f322:	e8 c4 ec ff ff       	call   0x40dfeb
40f327:	83 c4 0c             	add    $0xc,%esp
40f32a:	85 c0                	test   %eax,%eax
40f32c:	75 71                	jne    0x40f39f
40f32e:	8b 45 f0             	mov    -0x10(%ebp),%eax
40f331:	33 d2                	xor    %edx,%edx
40f333:	8d 48 01             	lea    0x1(%eax),%ecx
40f336:	66 89 14 46          	mov    %dx,(%esi,%eax,2)
40f33a:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f33d:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
40f340:	0f b7 c0             	movzwl %ax,%eax
40f343:	f7 d8                	neg    %eax
40f345:	1b c0                	sbb    %eax,%eax
40f347:	23 c1                	and    %ecx,%eax
40f349:	50                   	push   %eax
40f34a:	56                   	push   %esi
40f34b:	ff 15 20 91 41 00    	call   *0x419120
40f351:	85 c0                	test   %eax,%eax
40f353:	75 1f                	jne    0x40f374
40f355:	e8 d5 b3 ff ff       	call   0x40a72f
40f35a:	56                   	push   %esi
40f35b:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40f361:	e8 39 b4 ff ff       	call   0x40a79f
40f366:	83 cb ff             	or     $0xffffffff,%ebx
40f369:	59                   	pop    %ecx
40f36a:	57                   	push   %edi
40f36b:	e8 2f b4 ff ff       	call   0x40a79f
40f370:	8b c3                	mov    %ebx,%eax
40f372:	eb 25                	jmp    0x40f399
40f374:	56                   	push   %esi