40e13c:	e9 bc 00 00 00       	jmp    0x40e1fd
40e141:	85 ff                	test   %edi,%edi
40e143:	0f 88 a1 00 00 00    	js     0x40e1ea
40e149:	3b 3d 14 2a 42 00    	cmp    0x422a14,%edi
40e14f:	0f 83 95 00 00 00    	jae    0x40e1ea
40e155:	8b c7                	mov    %edi,%eax
40e157:	c1 f8 05             	sar    $0x5,%eax
40e15a:	89 45 e0             	mov    %eax,-0x20(%ebp)
40e15d:	8b df                	mov    %edi,%ebx
40e15f:	83 e3 1f             	and    $0x1f,%ebx
40e162:	c1 e3 06             	shl    $0x6,%ebx
40e165:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e16c:	0f be 44 18 04       	movsbl 0x4(%eax,%ebx,1),%eax
40e171:	83 e0 01             	and    $0x1,%eax
40e174:	74 74                	je     0x40e1ea
40e176:	57                   	push   %edi
40e177:	e8 1b 5a 00 00       	call   0x413b97
40e17c:	59                   	pop    %ecx
40e17d:	33 f6                	xor    %esi,%esi
40e17f:	89 75 fc             	mov    %esi,-0x4(%ebp)
40e182:	8b 45 e0             	mov    -0x20(%ebp),%eax
40e185:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e18c:	f6 44 18 04 01       	testb  $0x1,0x4(%eax,%ebx,1)
40e191:	74 28                	je     0x40e1bb
40e193:	57                   	push   %edi
40e194:	e8 10 5b 00 00       	call   0x413ca9
40e199:	59                   	pop    %ecx
40e19a:	50                   	push   %eax
40e19b:	ff 15 f0 90 41 00    	call   *0x4190f0
40e1a1:	85 c0                	test   %eax,%eax
40e1a3:	75 08                	jne    0x40e1ad
40e1a5:	ff 15 18 90 41 00    	call   *0x419018
40e1ab:	8b f0                	mov    %eax,%esi
40e1ad:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e1b0:	85 f6                	test   %esi,%esi
40e1b2:	74 18                	je     0x40e1cc
40e1b4:	e8 90 9f ff ff       	call   0x408149
40e1b9:	89 30                	mov    %esi,(%eax)
40e1bb:	e8 bd 9f ff ff       	call   0x40817d
40e1c0:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e1c6:	83 ce ff             	or     $0xffffffff,%esi
40e1c9:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e1cc:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e1d3:	e8 0a 00 00 00       	call   0x40e1e2
40e1d8:	8b c6                	mov    %esi,%eax
40e1da:	eb 21                	jmp    0x40e1fd
40e1dc:	8b 7d 08             	mov    0x8(%ebp),%edi
40e1df:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40e1e2:	57                   	push   %edi
40e1e3:	e8 33 5b 00 00       	call   0x413d1b
40e1e8:	59                   	pop    %ecx
40e1e9:	c3                   	ret
40e1ea:	e8 8e 9f ff ff       	call   0x40817d
40e1ef:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e1f5:	e8 fb d3 ff ff       	call   0x40b5f5
40e1fa:	83 c8 ff             	or     $0xffffffff,%eax
40e1fd:	e8 f3 cb ff ff       	call   0x40adf5
40e202:	c3                   	ret
40e203:	6a 10                	push   $0x10
40e205:	68 b8 e6 41 00       	push   $0x41e6b8
40e20a:	e8 a1 cb ff ff       	call   0x40adb0
40e20f:	8b 75 08             	mov    0x8(%ebp),%esi
40e212:	83 fe fe             	cmp    $0xfffffffe,%esi
40e215:	75 18                	jne    0x40e22f
40e217:	e8 2d 9f ff ff       	call   0x408149
40e21c:	83 20 00             	andl   $0x0,(%eax)
40e21f:	e8 59 9f ff ff       	call   0x40817d
40e224:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e22a:	e9 ba 00 00 00       	jmp    0x40e2e9
40e22f:	e8 be f3 ff ff       	call   0x40d5f2
40e234:	85 c0                	test   %eax,%eax
40e236:	0f 88 ad 00 00 00    	js     0x40e2e9
40e23c:	85 f6                	test   %esi,%esi
40e23e:	0f 88 8d 00 00 00    	js     0x40e2d1
40e244:	3b 35 14 2a 42 00    	cmp    0x422a14,%esi
40e24a:	0f 83 81 00 00 00    	jae    0x40e2d1
40e250:	8b de                	mov    %esi,%ebx
40e252:	c1 fb 05             	sar    $0x5,%ebx
40e255:	8b fe                	mov    %esi,%edi
40e257:	83 e7 1f             	and    $0x1f,%edi
40e25a:	c1 e7 06             	shl    $0x6,%edi
40e25d:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40e264:	0f be 44 38 04       	movsbl 0x4(%eax,%edi,1),%eax
40e269:	83 e0 01             	and    $0x1,%eax
40e26c:	74 63                	je     0x40e2d1
40e26e:	56                   	push   %esi
40e26f:	e8 23 59 00 00       	call   0x413b97
40e274:	59                   	pop    %ecx
40e275:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e279:	8b 04 9d 20 2a 42 00 	mov    0x422a20(,%ebx,4),%eax
40e280:	f6 44 38 04 01       	testb  $0x1,0x4(%eax,%edi,1)
40e285:	74 13                	je     0x40e29a
40e287:	ff 75 10             	push   0x10(%ebp)
40e28a:	ff 75 0c             	push   0xc(%ebp)
40e28d:	56                   	push   %esi
40e28e:	e8 5f 00 00 00       	call   0x40e2f2
40e293:	83 c4 0c             	add    $0xc,%esp
40e296:	8b f8                	mov    %eax,%edi
40e298:	eb 16                	jmp    0x40e2b0
40e29a:	e8 de 9e ff ff       	call   0x40817d
40e29f:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e2a5:	e8 9f 9e ff ff       	call   0x408149
40e2aa:	83 20 00             	andl   $0x0,(%eax)
40e2ad:	83 cf ff             	or     $0xffffffff,%edi
40e2b0:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40e2b3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e2ba:	e8 0a 00 00 00       	call   0x40e2c9
40e2bf:	8b c7                	mov    %edi,%eax
40e2c1:	eb 29                	jmp    0x40e2ec
40e2c3:	8b 75 08             	mov    0x8(%ebp),%esi
40e2c6:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40e2c9:	56                   	push   %esi
40e2ca:	e8 4c 5a 00 00       	call   0x413d1b
40e2cf:	59                   	pop    %ecx
40e2d0:	c3                   	ret
40e2d1:	e8 73 9e ff ff       	call   0x408149
40e2d6:	83 20 00             	andl   $0x0,(%eax)
40e2d9:	e8 9f 9e ff ff       	call   0x40817d
40e2de:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40e2e4:	e8 0c d3 ff ff       	call   0x40b5f5
40e2e9:	83 c8 ff             	or     $0xffffffff,%eax
40e2ec:	e8 04 cb ff ff       	call   0x40adf5
40e2f1:	c3                   	ret
40e2f2:	55                   	push   %ebp
40e2f3:	8b ec                	mov    %esp,%ebp
40e2f5:	b8 f0 1a 00 00       	mov    $0x1af0,%eax
40e2fa:	e8 91 5b 00 00       	call   0x413e90
40e2ff:	a1 90 08 42 00       	mov    0x420890,%eax
40e304:	33 c5                	xor    %ebp,%eax
40e306:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e309:	8b 45 0c             	mov    0xc(%ebp),%eax
40e30c:	56                   	push   %esi
40e30d:	8b 75 08             	mov    0x8(%ebp),%esi
40e310:	57                   	push   %edi
40e311:	33 ff                	xor    %edi,%edi
40e313:	21 bd 28 e5 ff ff    	and    %edi,-0x1ad8(%ebp)
40e319:	89 85 44 e5 ff ff    	mov    %eax,-0x1abc(%ebp)
40e31f:	89 bd 34 e5 ff ff    	mov    %edi,-0x1acc(%ebp)
40e325:	39 7d 10             	cmp    %edi,0x10(%ebp)
40e328:	75 07                	jne    0x40e331
40e32a:	33 c0                	xor    %eax,%eax
40e32c:	e9 fd 07 00 00       	jmp    0x40eb2e
40e331:	85 c0                	test   %eax,%eax
40e333:	75 1f                	jne    0x40e354
40e335:	e8 0f 9e ff ff       	call   0x408149
40e33a:	21 38                	and    %edi,(%eax)
40e33c:	e8 3c 9e ff ff       	call   0x40817d
40e341:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e347:	e8 a9 d2 ff ff       	call   0x40b5f5
40e34c:	83 c8 ff             	or     $0xffffffff,%eax
40e34f:	e9 da 07 00 00       	jmp    0x40eb2e
40e354:	e8 99 f2 ff ff       	call   0x40d5f2
40e359:	85 c0                	test   %eax,%eax
40e35b:	78 ef                	js     0x40e34c
40e35d:	53                   	push   %ebx
40e35e:	83 fe 01             	cmp    $0x1,%esi
40e361:	74 05                	je     0x40e368
40e363:	83 fe 02             	cmp    $0x2,%esi
40e366:	75 20                	jne    0x40e388
40e368:	8b de                	mov    %esi,%ebx
40e36a:	c1 e3 06             	shl    $0x6,%ebx
40e36d:	03 1d 20 2a 42 00    	add    0x422a20,%ebx
40e373:	74 13                	je     0x40e388
40e375:	8d 46 ff             	lea    -0x1(%esi),%eax
40e378:	f7 d8                	neg    %eax
40e37a:	1b c0                	sbb    %eax,%eax
40e37c:	83 c0 f5             	add    $0xfffffff5,%eax
40e37f:	50                   	push   %eax
40e380:	ff 15 ac 90 41 00    	call   *0x4190ac
40e386:	89 03                	mov    %eax,(%ebx)
40e388:	8b c6                	mov    %esi,%eax
40e38a:	c1 f8 05             	sar    $0x5,%eax
40e38d:	8b ce                	mov    %esi,%ecx
40e38f:	8b 14 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%edx
40e396:	83 e1 1f             	and    $0x1f,%ecx
40e399:	c1 e1 06             	shl    $0x6,%ecx
40e39c:	89 85 2c e5 ff ff    	mov    %eax,-0x1ad4(%ebp)
40e3a2:	8a 5c 11 24          	mov    0x24(%ecx,%edx,1),%bl
40e3a6:	02 db                	add    %bl,%bl
40e3a8:	d0 fb                	sar    $1,%bl
40e3aa:	89 8d 1c e5 ff ff    	mov    %ecx,-0x1ae4(%ebp)
40e3b0:	80 fb 02             	cmp    $0x2,%bl
40e3b3:	74 05                	je     0x40e3ba
40e3b5:	80 fb 01             	cmp    $0x1,%bl
40e3b8:	75 25                	jne    0x40e3df
40e3ba:	8b 45 10             	mov    0x10(%ebp),%eax
40e3bd:	f7 d0                	not    %eax
40e3bf:	a8 01                	test   $0x1,%al
40e3c1:	75 1c                	jne    0x40e3df
40e3c3:	e8 81 9d ff ff       	call   0x408149
40e3c8:	21 38                	and    %edi,(%eax)
40e3ca:	e8 ae 9d ff ff       	call   0x40817d
40e3cf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e3d5:	e8 1b d2 ff ff       	call   0x40b5f5
40e3da:	e9 41 07 00 00       	jmp    0x40eb20
40e3df:	f6 44 11 04 20       	testb  $0x20,0x4(%ecx,%edx,1)
40e3e4:	74 0f                	je     0x40e3f5
40e3e6:	6a 02                	push   $0x2
40e3e8:	6a 00                	push   $0x0
40e3ea:	6a 00                	push   $0x0
40e3ec:	56                   	push   %esi
40e3ed:	e8 a9 0d 00 00       	call   0x40f19b
40e3f2:	83 c4 10             	add    $0x10,%esp
40e3f5:	56                   	push   %esi
40e3f6:	e8 ba 3a 00 00       	call   0x411eb5
40e3fb:	8b b5 1c e5 ff ff    	mov    -0x1ae4(%ebp),%esi
40e401:	59                   	pop    %ecx
40e402:	85 c0                	test   %eax,%eax
40e404:	0f 84 18 03 00 00    	je     0x40e722
40e40a:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40e410:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e417:	f6 44 06 04 80       	testb  $0x80,0x4(%esi,%eax,1)
40e41c:	0f 84 00 03 00 00    	je     0x40e722
40e422:	e8 af df ff ff       	call   0x40c3d6
40e427:	8b 40 6c             	mov    0x6c(%eax),%eax
40e42a:	33 c9                	xor    %ecx,%ecx
40e42c:	39 88 a8 00 00 00    	cmp    %ecx,0xa8(%eax)
40e432:	8d 85 18 e5 ff ff    	lea    -0x1ae8(%ebp),%eax
40e438:	50                   	push   %eax
40e439:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40e43f:	0f 94 c1             	sete   %cl
40e442:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e449:	ff 34 06             	push   (%esi,%eax,1)
40e44c:	89 8d 40 e5 ff ff    	mov    %ecx,-0x1ac0(%ebp)
40e452:	ff 15 f8 90 41 00    	call   *0x4190f8
40e458:	85 c0                	test   %eax,%eax
40e45a:	0f 84 c2 02 00 00    	je     0x40e722
40e460:	39 bd 40 e5 ff ff    	cmp    %edi,-0x1ac0(%ebp)
40e466:	74 08                	je     0x40e470
40e468:	84 db                	test   %bl,%bl
40e46a:	0f 84 b2 02 00 00    	je     0x40e722
40e470:	ff 15 f4 90 41 00    	call   *0x4190f4
40e476:	8b 95 44 e5 ff ff    	mov    -0x1abc(%ebp),%edx
40e47c:	21 bd 30 e5 ff ff    	and    %edi,-0x1ad0(%ebp)
40e482:	8b ca                	mov    %edx,%ecx
40e484:	89 85 10 e5 ff ff    	mov    %eax,-0x1af0(%ebp)
40e48a:	89 8d 38 e5 ff ff    	mov    %ecx,-0x1ac8(%ebp)
40e490:	39 7d 10             	cmp    %edi,0x10(%ebp)
40e493:	0f 86 7e 02 00 00    	jbe    0x40e717
40e499:	33 c0                	xor    %eax,%eax
40e49b:	89 85 3c e5 ff ff    	mov    %eax,-0x1ac4(%ebp)
40e4a1:	c7 85 14 e5 ff ff 0a 	movl   $0xa,-0x1aec(%ebp)
40e4a8:	00 00 00
40e4ab:	84 db                	test   %bl,%bl
40e4ad:	0f 85 8f 01 00 00    	jne    0x40e642
40e4b3:	8a 09                	mov    (%ecx),%cl
40e4b5:	33 c0                	xor    %eax,%eax
40e4b7:	80 f9 0a             	cmp    $0xa,%cl
40e4ba:	0f 94 c0             	sete   %al
40e4bd:	89 85 40 e5 ff ff    	mov    %eax,-0x1ac0(%ebp)
40e4c3:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40e4c9:	8b 14 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%edx
40e4d0:	83 7c 16 38 00       	cmpl   $0x0,0x38(%esi,%edx,1)
40e4d5:	74 17                	je     0x40e4ee
40e4d7:	8a 44 16 34          	mov    0x34(%esi,%edx,1),%al
40e4db:	88 45 f4             	mov    %al,-0xc(%ebp)
40e4de:	6a 02                	push   $0x2
40e4e0:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e4e3:	88 4d f5             	mov    %cl,-0xb(%ebp)
40e4e6:	83 64 16 38 00       	andl   $0x0,0x38(%esi,%edx,1)
40e4eb:	50                   	push   %eax
40e4ec:	eb 5a                	jmp    0x40e548
40e4ee:	0f be c1             	movsbl %cl,%eax
40e4f1:	50                   	push   %eax
40e4f2:	e8 b6 2d 00 00       	call   0x4112ad
40e4f7:	59                   	pop    %ecx
40e4f8:	85 c0                	test   %eax,%eax
40e4fa:	74 44                	je     0x40e540
40e4fc:	8b 85 44 e5 ff ff    	mov    -0x1abc(%ebp),%eax
40e502:	8b 95 38 e5 ff ff    	mov    -0x1ac8(%ebp),%edx
40e508:	2b c2                	sub    %edx,%eax
40e50a:	03 45 10             	add    0x10(%ebp),%eax
40e50d:	83 f8 01             	cmp    $0x1,%eax
40e510:	0f 86 d3 01 00 00    	jbe    0x40e6e9
40e516:	6a 02                	push   $0x2
40e518:	52                   	push   %edx
40e519:	8d 85 34 e5 ff ff    	lea    -0x1acc(%ebp),%eax
40e51f:	50                   	push   %eax
40e520:	e8 0f 59 00 00       	call   0x413e34
40e525:	83 c4 0c             	add    $0xc,%esp
40e528:	83 f8 ff             	cmp    $0xffffffff,%eax
40e52b:	0f 84 db 01 00 00    	je     0x40e70c
40e531:	8b 85 38 e5 ff ff    	mov    -0x1ac8(%ebp),%eax
40e537:	40                   	inc    %eax
40e538:	ff 85 3c e5 ff ff    	incl   -0x1ac4(%ebp)
40e53e:	eb 26                	jmp    0x40e566
40e540:	6a 01                	push   $0x1
40e542:	ff b5 38 e5 ff ff    	push   -0x1ac8(%ebp)
40e548:	8d 85 34 e5 ff ff    	lea    -0x1acc(%ebp),%eax
40e54e:	50                   	push   %eax
40e54f:	e8 e0 58 00 00       	call   0x413e34
40e554:	83 c4 0c             	add    $0xc,%esp
40e557:	83 f8 ff             	cmp    $0xffffffff,%eax
40e55a:	0f 84 ac 01 00 00    	je     0x40e70c
40e560:	8b 85 38 e5 ff ff    	mov    -0x1ac8(%ebp),%eax
40e566:	33 c9                	xor    %ecx,%ecx
40e568:	51                   	push   %ecx
40e569:	51                   	push   %ecx
40e56a:	40                   	inc    %eax
40e56b:	ff 85 3c e5 ff ff    	incl   -0x1ac4(%ebp)
40e571:	6a 05                	push   $0x5
40e573:	89 85 38 e5 ff ff    	mov    %eax,-0x1ac8(%ebp)
40e579:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e57c:	50                   	push   %eax
40e57d:	6a 01                	push   $0x1
40e57f:	8d 85 34 e5 ff ff    	lea    -0x1acc(%ebp),%eax
40e585:	50                   	push   %eax
40e586:	51                   	push   %ecx
40e587:	ff b5 10 e5 ff ff    	push   -0x1af0(%ebp)
40e58d:	ff 15 4c 90 41 00    	call   *0x41904c
40e593:	89 85 18 e5 ff ff    	mov    %eax,-0x1ae8(%ebp)
40e599:	85 c0                	test   %eax,%eax
40e59b:	0f 84 6b 01 00 00    	je     0x40e70c
40e5a1:	6a 00                	push   $0x0
40e5a3:	8d 8d 30 e5 ff ff    	lea    -0x1ad0(%ebp),%ecx
40e5a9:	51                   	push   %ecx
40e5aa:	50                   	push   %eax
40e5ab:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e5ae:	50                   	push   %eax
40e5af:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40e5b5:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e5bc:	ff 34 06             	push   (%esi,%eax,1)
40e5bf:	ff 15 b0 90 41 00    	call   *0x4190b0
40e5c5:	85 c0                	test   %eax,%eax
40e5c7:	0f 84 e3 04 00 00    	je     0x40eab0
40e5cd:	8b bd 3c e5 ff ff    	mov    -0x1ac4(%ebp),%edi
40e5d3:	8b 85 18 e5 ff ff    	mov    -0x1ae8(%ebp),%eax
40e5d9:	03 bd 28 e5 ff ff    	add    -0x1ad8(%ebp),%edi
40e5df:	39 85 30 e5 ff ff    	cmp    %eax,-0x1ad0(%ebp)
40e5e5:	0f 8c 21 01 00 00    	jl     0x40e70c
40e5eb:	83 bd 40 e5 ff ff 00 	cmpl   $0x0,-0x1ac0(%ebp)
40e5f2:	0f 84 da 00 00 00    	je     0x40e6d2
40e5f8:	6a 00                	push   $0x0
40e5fa:	8d 85 30 e5 ff ff    	lea    -0x1ad0(%ebp),%eax
40e600:	50                   	push   %eax
40e601:	6a 01                	push   $0x1
40e603:	8d 45 f4             	lea    -0xc(%ebp),%eax
40e606:	50                   	push   %eax
40e607:	8b 85 2c e5 ff ff    	mov    -0x1ad4(%ebp),%eax
40e60d:	c6 45 f4 0d          	movb   $0xd,-0xc(%ebp)
40e611:	8b 04 85 20 2a 42 00 	mov    0x422a20(,%eax,4),%eax
40e618:	ff 34 06             	push   (%esi,%eax,1)
40e61b:	ff 15 b0 90 41 00    	call   *0x4190b0
40e621:	85 c0                	test   %eax,%eax
40e623:	0f 84 87 04 00 00    	je     0x40eab0
40e629:	83 bd 30 e5 ff ff 01 	cmpl   $0x1,-0x1ad0(%ebp)
40e630:	0f 8c d6 00 00 00    	jl     0x40e70c
40e636:	ff 85 28 e5 ff ff    	incl   -0x1ad8(%ebp)
40e63c:	47                   	inc    %edi
40e63d:	e9 90 00 00 00       	jmp    0x40e6d2