40e00d:	7e 31                	jle    0x40e040
40e00f:	e8 e6 cd ff ff       	call   0x40adfa
40e014:	8d 14 7b             	lea    (%ebx,%edi,2),%edx
40e017:	eb 31                	jmp    0x40e04a
40e019:	85 ff                	test   %edi,%edi
40e01b:	74 a1                	je     0x40dfbe
40e01d:	8b ce                	mov    %esi,%ecx
40e01f:	e8 99 bf ff ff       	call   0x409fbd
40e024:	2b c7                	sub    %edi,%eax
40e026:	3b c3                	cmp    %ebx,%eax
40e028:	77 94                	ja     0x40dfbe
40e02a:	8b ce                	mov    %esi,%ecx
40e02c:	e8 8c bf ff ff       	call   0x409fbd
40e031:	3b c3                	cmp    %ebx,%eax
40e033:	7f 8b                	jg     0x40dfc0
40e035:	8b ce                	mov    %esi,%ecx
40e037:	e8 81 bf ff ff       	call   0x409fbd
40e03c:	8b f8                	mov    %eax,%edi
40e03e:	eb 80                	jmp    0x40dfc0
40e040:	e8 b5 cd ff ff       	call   0x40adfa
40e045:	ba 98 16 40 00       	mov    $0x401698,%edx
40e04a:	d1 e8                	shr    $1,%eax
40e04c:	8b ce                	mov    %esi,%ecx
40e04e:	50                   	push   %eax
40e04f:	e8 a2 c3 ff ff       	call   0x40a3f6
40e054:	5f                   	pop    %edi
40e055:	5b                   	pop    %ebx
40e056:	5e                   	pop    %esi
40e057:	c9                   	leave
40e058:	c2 08 00             	ret    $0x8
40e05b:	8b ff                	mov    %edi,%edi
40e05d:	55                   	push   %ebp
40e05e:	8b ec                	mov    %esp,%ebp
40e060:	83 e4 f8             	and    $0xfffffff8,%esp
40e063:	83 ec 24             	sub    $0x24,%esp
40e066:	53                   	push   %ebx
40e067:	56                   	push   %esi
40e068:	8b f1                	mov    %ecx,%esi
40e06a:	57                   	push   %edi
40e06b:	85 f6                	test   %esi,%esi
40e06d:	0f 84 b5 04 00 00    	je     0x40e528
40e073:	8b 7d 08             	mov    0x8(%ebp),%edi
40e076:	85 ff                	test   %edi,%edi
40e078:	0f 84 aa 04 00 00    	je     0x40e528
40e07e:	6a 01                	push   $0x1
40e080:	68 00 10 00 00       	push   $0x1000
40e085:	6a 16                	push   $0x16
40e087:	33 d2                	xor    %edx,%edx
40e089:	59                   	pop    %ecx
40e08a:	e8 14 b5 ff ff       	call   0x4095a3
40e08f:	8b d8                	mov    %eax,%ebx
40e091:	e8 e4 a9 ff ff       	call   0x408a7a
40e096:	89 44 24 0c          	mov    %eax,0xc(%esp)
40e09a:	85 c0                	test   %eax,%eax
40e09c:	0f 84 78 04 00 00    	je     0x40e51a
40e0a2:	85 db                	test   %ebx,%ebx
40e0a4:	0f 84 70 04 00 00    	je     0x40e51a
40e0aa:	f7 45 0c 00 10 00 00 	testl  $0x1000,0xc(%ebp)
40e0b1:	0f 85 0e 01 00 00    	jne    0x40e1c5
40e0b7:	6a 0d                	push   $0xd
40e0b9:	33 d2                	xor    %edx,%edx
40e0bb:	81 c7 00 02 00 00    	add    $0x200,%edi
40e0c1:	59                   	pop    %ecx
40e0c2:	89 7c 24 24          	mov    %edi,0x24(%esp)
40e0c6:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40e0ca:	8b 47 04             	mov    0x4(%edi),%eax
40e0cd:	a9 00 10 00 00       	test   $0x1000,%eax
40e0d2:	75 6d                	jne    0x40e141
40e0d4:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40e0d9:	a9 00 00 01 00       	test   $0x10000,%eax
40e0de:	75 14                	jne    0x40e0f4
40e0e0:	25 f0 0f 00 00       	and    $0xff0,%eax
40e0e5:	83 f8 20             	cmp    $0x20,%eax
40e0e8:	74 0a                	je     0x40e0f4
40e0ea:	83 f8 30             	cmp    $0x30,%eax
40e0ed:	74 05                	je     0x40e0f4
40e0ef:	83 f8 40             	cmp    $0x40,%eax
40e0f2:	75 08                	jne    0x40e0fc
40e0f4:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
40e0fb:	00
40e0fc:	83 fa 01             	cmp    $0x1,%edx
40e0ff:	75 0c                	jne    0x40e10d
40e101:	ba 68 18 40 00       	mov    $0x401868,%edx
40e106:	8b ce                	mov    %esi,%ecx
40e108:	e8 e0 c3 ff ff       	call   0x40a4ed
40e10d:	8b cb                	mov    %ebx,%ecx
40e10f:	e8 e6 cc ff ff       	call   0x40adfa
40e114:	d1 e8                	shr    $1,%eax
40e116:	8d 97 00 fe ff ff    	lea    -0x200(%edi),%edx
40e11c:	50                   	push   %eax
40e11d:	8b cb                	mov    %ebx,%ecx
40e11f:	e8 d2 c2 ff ff       	call   0x40a3f6
40e124:	ff 74 24 10          	push   0x10(%esp)
40e128:	8b 17                	mov    (%edi),%edx
40e12a:	8b cb                	mov    %ebx,%ecx
40e12c:	e8 ae bf ff ff       	call   0x40a0df
40e131:	8b d3                	mov    %ebx,%edx
40e133:	8b ce                	mov    %esi,%ecx
40e135:	e8 b3 c3 ff ff       	call   0x40a4ed
40e13a:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40e13e:	33 d2                	xor    %edx,%edx
40e140:	42                   	inc    %edx
40e141:	81 c7 94 02 00 00    	add    $0x294,%edi
40e147:	83 e9 01             	sub    $0x1,%ecx
40e14a:	89 4c 24 18          	mov    %ecx,0x18(%esp)
40e14e:	0f 85 76 ff ff ff    	jne    0x40e0ca
40e154:	ba 7c 14 40 00       	mov    $0x40147c,%edx
40e159:	8b ce                	mov    %esi,%ecx
40e15b:	e8 8d c3 ff ff       	call   0x40a4ed
40e160:	8b 7c 24 24          	mov    0x24(%esp),%edi
40e164:	33 c9                	xor    %ecx,%ecx
40e166:	6a 0d                	push   $0xd
40e168:	58                   	pop    %eax
40e169:	89 44 24 18          	mov    %eax,0x18(%esp)
40e16d:	f7 47 04 00 10 00 00 	testl  $0x1000,0x4(%edi)
40e174:	75 34                	jne    0x40e1aa
40e176:	83 f9 01             	cmp    $0x1,%ecx
40e179:	75 0c                	jne    0x40e187
40e17b:	ba 68 18 40 00       	mov    $0x401868,%edx
40e180:	8b ce                	mov    %esi,%ecx
40e182:	e8 66 c3 ff ff       	call   0x40a4ed
40e187:	8b 0f                	mov    (%edi),%ecx
40e189:	ba 08 1a 40 00       	mov    $0x401a08,%edx
40e18e:	8d 41 01             	lea    0x1(%ecx),%eax
40e191:	50                   	push   %eax
40e192:	51                   	push   %ecx
40e193:	8b cb                	mov    %ebx,%ecx
40e195:	e8 d8 c0 ff ff       	call   0x40a272
40e19a:	8b d3                	mov    %ebx,%edx
40e19c:	8b ce                	mov    %esi,%ecx
40e19e:	e8 4a c3 ff ff       	call   0x40a4ed
40e1a3:	8b 44 24 18          	mov    0x18(%esp),%eax
40e1a7:	33 c9                	xor    %ecx,%ecx
40e1a9:	41                   	inc    %ecx
40e1aa:	81 c7 94 02 00 00    	add    $0x294,%edi
40e1b0:	83 e8 01             	sub    $0x1,%eax
40e1b3:	89 44 24 18          	mov    %eax,0x18(%esp)
40e1b7:	75 b4                	jne    0x40e16d
40e1b9:	ba 7c 14 40 00       	mov    $0x40147c,%edx
40e1be:	8b ce                	mov    %esi,%ecx
40e1c0:	e8 28 c3 ff ff       	call   0x40a4ed
40e1c5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e1c8:	e8 eb ab ff ff       	call   0x408db8
40e1cd:	33 ff                	xor    %edi,%edi
40e1cf:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40e1d3:	89 7c 24 18          	mov    %edi,0x18(%esp)
40e1d7:	85 c0                	test   %eax,%eax
40e1d9:	0f 84 30 03 00 00    	je     0x40e50f
40e1df:	8b cb                	mov    %ebx,%ecx
40e1e1:	e8 14 cc ff ff       	call   0x40adfa
40e1e6:	d1 e8                	shr    $1,%eax
40e1e8:	ba 30 12 40 00       	mov    $0x401230,%edx
40e1ed:	50                   	push   %eax
40e1ee:	8b cb                	mov    %ebx,%ecx
40e1f0:	e8 01 c2 ff ff       	call   0x40a3f6
40e1f5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e1f8:	8b d7                	mov    %edi,%edx
40e1fa:	e8 ec ab ff ff       	call   0x408deb
40e1ff:	89 44 24 24          	mov    %eax,0x24(%esp)
40e203:	85 c0                	test   %eax,%eax
40e205:	0f 84 f5 02 00 00    	je     0x40e500
40e20b:	8b 7d 08             	mov    0x8(%ebp),%edi
40e20e:	33 c0                	xor    %eax,%eax
40e210:	83 64 24 20 00       	andl   $0x0,0x20(%esp)
40e215:	81 c7 00 02 00 00    	add    $0x200,%edi
40e21b:	89 44 24 10          	mov    %eax,0x10(%esp)
40e21f:	83 64 24 1c 00       	andl   $0x0,0x1c(%esp)
40e224:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
40e229:	f7 47 04 00 10 00 00 	testl  $0x1000,0x4(%edi)
40e230:	0f 85 16 01 00 00    	jne    0x40e34c
40e236:	f7 47 04 00 80 08 00 	testl  $0x88000,0x4(%edi)
40e23d:	74 1d                	je     0x40e25c
40e23f:	8b 07                	mov    (%edi),%eax
40e241:	8b cb                	mov    %ebx,%ecx
40e243:	c7 44 24 14 01 00 00 	movl   $0x1,0x14(%esp)
40e24a:	00
40e24b:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40e24f:	e8 a6 cb ff ff       	call   0x40adfa
40e254:	d1 e8                	shr    $1,%eax
40e256:	89 07                	mov    %eax,(%edi)
40e258:	8b 44 24 10          	mov    0x10(%esp),%eax
40e25c:	68 34 1a 40 00       	push   $0x401a34
40e261:	ff 74 24 28          	push   0x28(%esp)
40e265:	8d 8f 00 fe ff ff    	lea    -0x200(%edi),%ecx
40e26b:	8b d0                	mov    %eax,%edx
40e26d:	e8 97 f9 ff ff       	call   0x40dc09
40e272:	8b 44 24 14          	mov    0x14(%esp),%eax
40e276:	33 c9                	xor    %ecx,%ecx
40e278:	85 c0                	test   %eax,%eax
40e27a:	75 2f                	jne    0x40e2ab
40e27c:	8b 47 04             	mov    0x4(%edi),%eax
40e27f:	a9 00 00 01 00       	test   $0x10000,%eax
40e284:	75 14                	jne    0x40e29a
40e286:	25 f0 0f 00 00       	and    $0xff0,%eax
40e28b:	83 f8 20             	cmp    $0x20,%eax
40e28e:	74 0a                	je     0x40e29a
40e290:	83 f8 30             	cmp    $0x30,%eax
40e293:	74 05                	je     0x40e29a
40e295:	83 f8 40             	cmp    $0x40,%eax
40e298:	75 03                	jne    0x40e29d
40e29a:	33 c9                	xor    %ecx,%ecx
40e29c:	41                   	inc    %ecx
40e29d:	8b 17                	mov    (%edi),%edx
40e29f:	51                   	push   %ecx
40e2a0:	8b cb                	mov    %ebx,%ecx
40e2a2:	e8 38 be ff ff       	call   0x40a0df
40e2a7:	8b 44 24 14          	mov    0x14(%esp),%eax
40e2ab:	83 f8 01             	cmp    $0x1,%eax
40e2ae:	75 06                	jne    0x40e2b6
40e2b0:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40e2b4:	89 07                	mov    %eax,(%edi)
40e2b6:	83 7c 24 20 01       	cmpl   $0x1,0x20(%esp)
40e2bb:	75 0c                	jne    0x40e2c9
40e2bd:	ba 68 18 40 00       	mov    $0x401868,%edx
40e2c2:	8b ce                	mov    %esi,%ecx
40e2c4:	e8 24 c2 ff ff       	call   0x40a4ed
40e2c9:	f7 47 04 00 80 00 00 	testl  $0x8000,0x4(%edi)
40e2d0:	8b d3                	mov    %ebx,%edx
40e2d2:	8b ce                	mov    %esi,%ecx
40e2d4:	74 65                	je     0x40e33b
40e2d6:	ff 37                	push   (%edi)
40e2d8:	68 34 1a 40 00       	push   $0x401a34
40e2dd:	e8 e4 fb ff ff       	call   0x40dec6
40e2e2:	8b cb                	mov    %ebx,%ecx
40e2e4:	e8 d4 bc ff ff       	call   0x409fbd
40e2e9:	85 c0                	test   %eax,%eax
40e2eb:	74 53                	je     0x40e340
40e2ed:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e2f1:	6a 03                	push   $0x3
40e2f3:	5a                   	pop    %edx
40e2f4:	e8 92 a9 ff ff       	call   0x408c8b
40e2f9:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40e2fd:	83 f8 ff             	cmp    $0xffffffff,%eax
40e300:	74 3e                	je     0x40e340
40e302:	ff 74 24 10          	push   0x10(%esp)
40e306:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40e30a:	8b d0                	mov    %eax,%edx
40e30c:	6a 00                	push   $0x0
40e30e:	e8 07 b0 ff ff       	call   0x40931a
40e313:	8b 54 24 1c          	mov    0x1c(%esp),%edx
40e317:	51                   	push   %ecx
40e318:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40e31c:	53                   	push   %ebx
40e31d:	6a 02                	push   $0x2
40e31f:	e8 c6 af ff ff       	call   0x4092ea
40e324:	8b 54 24 1c          	mov    0x1c(%esp),%edx
40e328:	51                   	push   %ecx
40e329:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40e32d:	68 34 1a 40 00       	push   $0x401a34
40e332:	6a 01                	push   $0x1
40e334:	e8 b1 af ff ff       	call   0x4092ea
40e339:	eb 05                	jmp    0x40e340
40e33b:	e8 ad c1 ff ff       	call   0x40a4ed
40e340:	8b 44 24 10          	mov    0x10(%esp),%eax
40e344:	c7 44 24 20 01 00 00 	movl   $0x1,0x20(%esp)
40e34b:	00
40e34c:	40                   	inc    %eax
40e34d:	81 c7 94 02 00 00    	add    $0x294,%edi
40e353:	89 44 24 10          	mov    %eax,0x10(%esp)
40e357:	83 f8 0d             	cmp    $0xd,%eax
40e35a:	0f 82 bf fe ff ff    	jb     0x40e21f
40e360:	ba 7c 14 40 00       	mov    $0x40147c,%edx
40e365:	8b ce                	mov    %esi,%ecx
40e367:	e8 81 c1 ff ff       	call   0x40a4ed
40e36c:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e370:	e8 43 aa ff ff       	call   0x408db8
40e375:	89 44 24 10          	mov    %eax,0x10(%esp)
40e379:	85 c0                	test   %eax,%eax
40e37b:	0f 84 7b 01 00 00    	je     0x40e4fc
40e381:	eb 04                	jmp    0x40e387
40e383:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e387:	83 4c 24 20 ff       	orl    $0xffffffff,0x20(%esp)
40e38c:	33 ff                	xor    %edi,%edi
40e38e:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
40e393:	89 7c 24 1c          	mov    %edi,0x1c(%esp)
40e397:	85 c0                	test   %eax,%eax
40e399:	0f 84 45 01 00 00    	je     0x40e4e4
40e39f:	eb 04                	jmp    0x40e3a5
40e3a1:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e3a5:	51                   	push   %ecx
40e3a6:	8b d7                	mov    %edi,%edx
40e3a8:	e8 ee ac ff ff       	call   0x40909b
40e3ad:	8b 54 24 20          	mov    0x20(%esp),%edx
40e3b1:	42                   	inc    %edx
40e3b2:	89 44 24 24          	mov    %eax,0x24(%esp)
40e3b6:	3b d0                	cmp    %eax,%edx
40e3b8:	73 72                	jae    0x40e42c
40e3ba:	8b 7d 08             	mov    0x8(%ebp),%edi
40e3bd:	69 ca 94 02 00 00    	imul   $0x294,%edx,%ecx
40e3c3:	81 c7 00 02 00 00    	add    $0x200,%edi
40e3c9:	03 f9                	add    %ecx,%edi
40e3cb:	2b c2                	sub    %edx,%eax
40e3cd:	89 44 24 20          	mov    %eax,0x20(%esp)
40e3d1:	f7 47 04 00 10 00 00 	testl  $0x1000,0x4(%edi)
40e3d8:	75 3b                	jne    0x40e415
40e3da:	83 7c 24 14 01       	cmpl   $0x1,0x14(%esp)
40e3df:	75 0c                	jne    0x40e3ed
40e3e1:	ba 68 18 40 00       	mov    $0x401868,%edx
40e3e6:	8b ce                	mov    %esi,%ecx
40e3e8:	e8 00 c1 ff ff       	call   0x40a4ed
40e3ed:	8b 0f                	mov    (%edi),%ecx
40e3ef:	ba 68 18 40 00       	mov    $0x401868,%edx
40e3f4:	8d 41 01             	lea    0x1(%ecx),%eax
40e3f7:	50                   	push   %eax
40e3f8:	51                   	push   %ecx
40e3f9:	8b cb                	mov    %ebx,%ecx
40e3fb:	e8 72 be ff ff       	call   0x40a272
40e400:	8b d3                	mov    %ebx,%edx
40e402:	8b ce                	mov    %esi,%ecx
40e404:	e8 e4 c0 ff ff       	call   0x40a4ed
40e409:	8b 44 24 20          	mov    0x20(%esp),%eax
40e40d:	c7 44 24 14 01 00 00 	movl   $0x1,0x14(%esp)
40e414:	00
40e415:	81 c7 94 02 00 00    	add    $0x294,%edi
40e41b:	83 e8 01             	sub    $0x1,%eax
40e41e:	89 44 24 20          	mov    %eax,0x20(%esp)
40e422:	75 ad                	jne    0x40e3d1
40e424:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
40e428:	8b 44 24 24          	mov    0x24(%esp),%eax
40e42c:	83 7c 24 14 01       	cmpl   $0x1,0x14(%esp)
40e431:	89 44 24 20          	mov    %eax,0x20(%esp)
40e435:	75 0c                	jne    0x40e443
40e437:	ba 68 18 40 00       	mov    $0x401868,%edx
40e43c:	8b ce                	mov    %esi,%ecx
40e43e:	e8 aa c0 ff ff       	call   0x40a4ed
40e443:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e447:	8b d7                	mov    %edi,%edx
40e449:	6a 02                	push   $0x2
40e44b:	e8 1f ac ff ff       	call   0x40906f
40e450:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40e454:	8b d7                	mov    %edi,%edx
40e456:	6a 01                	push   $0x1
40e458:	89 44 24 20          	mov    %eax,0x20(%esp)
40e45c:	e8 0e ac ff ff       	call   0x40906f
40e461:	83 7c 24 1c 00       	cmpl   $0x0,0x1c(%esp)
40e466:	89 44 24 28          	mov    %eax,0x28(%esp)
40e46a:	74 67                	je     0x40e4d3
40e46c:	85 c0                	test   %eax,%eax
40e46e:	74 63                	je     0x40e4d3
40e470:	8b cb                	mov    %ebx,%ecx
40e472:	e8 83 c9 ff ff       	call   0x40adfa
40e477:	8b 54 24 1c          	mov    0x1c(%esp),%edx
40e47b:	8b cb                	mov    %ebx,%ecx
40e47d:	d1 e8                	shr    $1,%eax
40e47f:	50                   	push   %eax
40e480:	e8 71 bf ff ff       	call   0x40a3f6
40e485:	69 44 24 24 94 02 00 	imul   $0x294,0x24(%esp),%eax
40e48c:	00
40e48d:	8b d3                	mov    %ebx,%edx
40e48f:	8b 4d 08             	mov    0x8(%ebp),%ecx