40c195:	8b cf                	mov    %edi,%ecx
40c197:	c1 f9 06             	sar    $0x6,%ecx
40c19a:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40c19d:	8b c7                	mov    %edi,%eax
40c19f:	83 e0 3f             	and    $0x3f,%eax
40c1a2:	6b d0 38             	imul   $0x38,%eax,%edx
40c1a5:	89 55 dc             	mov    %edx,-0x24(%ebp)
40c1a8:	8b 04 8d 78 70 41 00 	mov    0x417078(,%ecx,4),%eax
40c1af:	f6 44 10 28 01       	testb  $0x1,0x28(%eax,%edx,1)
40c1b4:	74 ba                	je     0x40c170
40c1b6:	57                   	push   %edi
40c1b7:	e8 5f cf ff ff       	call   0x40911b
40c1bc:	59                   	pop    %ecx
40c1bd:	83 cb ff             	or     $0xffffffff,%ebx
40c1c0:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40c1c3:	89 75 fc             	mov    %esi,-0x4(%ebp)
40c1c6:	8b 45 e0             	mov    -0x20(%ebp),%eax
40c1c9:	8b 04 85 78 70 41 00 	mov    0x417078(,%eax,4),%eax
40c1d0:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40c1d3:	f6 44 01 28 01       	testb  $0x1,0x28(%ecx,%eax,1)
40c1d8:	75 17                	jne    0x40c1f1
40c1da:	8b 45 14             	mov    0x14(%ebp),%eax
40c1dd:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40c1e1:	c7 40 18 09 00 00 00 	movl   $0x9,0x18(%eax)
40c1e8:	c6 40 24 01          	movb   $0x1,0x24(%eax)
40c1ec:	89 70 20             	mov    %esi,0x20(%eax)
40c1ef:	eb 17                	jmp    0x40c208
40c1f1:	ff 75 14             	push   0x14(%ebp)
40c1f4:	ff 75 10             	push   0x10(%ebp)
40c1f7:	ff 75 0c             	push   0xc(%ebp)
40c1fa:	57                   	push   %edi
40c1fb:	e8 34 00 00 00       	call   0x40c234
40c200:	83 c4 10             	add    $0x10,%esp
40c203:	8b d8                	mov    %eax,%ebx
40c205:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40c208:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c20f:	e8 18 00 00 00       	call   0x40c22c
40c214:	8b c3                	mov    %ebx,%eax
40c216:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c219:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c220:	59                   	pop    %ecx
40c221:	5f                   	pop    %edi
40c222:	5e                   	pop    %esi
40c223:	5b                   	pop    %ebx
40c224:	c9                   	leave
40c225:	c3                   	ret
40c226:	8b 7d 08             	mov    0x8(%ebp),%edi
40c229:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40c22c:	57                   	push   %edi
40c22d:	e8 0c cf ff ff       	call   0x40913e
40c232:	59                   	pop    %ecx
40c233:	c3                   	ret
40c234:	8b ff                	mov    %edi,%edi
40c236:	55                   	push   %ebp
40c237:	8b ec                	mov    %esp,%ebp
40c239:	83 ec 30             	sub    $0x30,%esp
40c23c:	8b 55 10             	mov    0x10(%ebp),%edx
40c23f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c242:	8b 45 0c             	mov    0xc(%ebp),%eax
40c245:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40c248:	89 45 f8             	mov    %eax,-0x8(%ebp)
40c24b:	89 55 f4             	mov    %edx,-0xc(%ebp)
40c24e:	53                   	push   %ebx
40c24f:	8b 5d 14             	mov    0x14(%ebp),%ebx
40c252:	56                   	push   %esi
40c253:	57                   	push   %edi
40c254:	85 d2                	test   %edx,%edx
40c256:	0f 84 ed 01 00 00    	je     0x40c449
40c25c:	85 c0                	test   %eax,%eax
40c25e:	75 2a                	jne    0x40c28a
40c260:	33 c0                	xor    %eax,%eax
40c262:	c6 43 24 01          	movb   $0x1,0x24(%ebx)
40c266:	53                   	push   %ebx
40c267:	50                   	push   %eax
40c268:	50                   	push   %eax
40c269:	50                   	push   %eax
40c26a:	89 43 20             	mov    %eax,0x20(%ebx)
40c26d:	50                   	push   %eax
40c26e:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40c272:	50                   	push   %eax
40c273:	c7 43 18 16 00 00 00 	movl   $0x16,0x18(%ebx)
40c27a:	e8 20 9a ff ff       	call   0x405c9f
40c27f:	83 c4 18             	add    $0x18,%esp
40c282:	83 c8 ff             	or     $0xffffffff,%eax
40c285:	e9 c1 01 00 00       	jmp    0x40c44b
40c28a:	8b c1                	mov    %ecx,%eax
40c28c:	8b f1                	mov    %ecx,%esi
40c28e:	83 e0 3f             	and    $0x3f,%eax
40c291:	c1 fe 06             	sar    $0x6,%esi
40c294:	6b f8 38             	imul   $0x38,%eax,%edi
40c297:	89 75 ec             	mov    %esi,-0x14(%ebp)
40c29a:	8b 04 b5 78 70 41 00 	mov    0x417078(,%esi,4),%eax
40c2a1:	89 7d e8             	mov    %edi,-0x18(%ebp)
40c2a4:	8a 44 07 29          	mov    0x29(%edi,%eax,1),%al
40c2a8:	88 45 ff             	mov    %al,-0x1(%ebp)
40c2ab:	3c 02                	cmp    $0x2,%al
40c2ad:	74 04                	je     0x40c2b3
40c2af:	3c 01                	cmp    $0x1,%al
40c2b1:	75 08                	jne    0x40c2bb
40c2b3:	8b c2                	mov    %edx,%eax
40c2b5:	f7 d0                	not    %eax
40c2b7:	a8 01                	test   $0x1,%al
40c2b9:	74 a5                	je     0x40c260
40c2bb:	8b 55 ec             	mov    -0x14(%ebp),%edx
40c2be:	33 f6                	xor    %esi,%esi
40c2c0:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40c2c7:	f6 44 07 28 20       	testb  $0x20,0x28(%edi,%eax,1)
40c2cc:	74 11                	je     0x40c2df
40c2ce:	53                   	push   %ebx
40c2cf:	6a 02                	push   $0x2
40c2d1:	56                   	push   %esi
40c2d2:	56                   	push   %esi
40c2d3:	51                   	push   %ecx
40c2d4:	e8 ff 05 00 00       	call   0x40c8d8
40c2d9:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c2dc:	83 c4 14             	add    $0x14,%esp
40c2df:	53                   	push   %ebx
40c2e0:	8b fe                	mov    %esi,%edi
40c2e2:	51                   	push   %ecx
40c2e3:	89 7d dc             	mov    %edi,-0x24(%ebp)
40c2e6:	e8 c5 fa ff ff       	call   0x40bdb0
40c2eb:	59                   	pop    %ecx
40c2ec:	59                   	pop    %ecx
40c2ed:	84 c0                	test   %al,%al
40c2ef:	74 47                	je     0x40c338
40c2f1:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
40c2f5:	2b c6                	sub    %esi,%eax
40c2f7:	74 27                	je     0x40c320
40c2f9:	83 e8 01             	sub    $0x1,%eax
40c2fc:	74 09                	je     0x40c307
40c2fe:	83 e8 01             	sub    $0x1,%eax
40c301:	0f 85 da 00 00 00    	jne    0x40c3e1
40c307:	ff 75 f4             	push   -0xc(%ebp)
40c30a:	8d 45 d0             	lea    -0x30(%ebp),%eax
40c30d:	ff 75 f8             	push   -0x8(%ebp)
40c310:	50                   	push   %eax
40c311:	e8 32 fa ff ff       	call   0x40bd48
40c316:	83 c4 0c             	add    $0xc,%esp
40c319:	8b f0                	mov    %eax,%esi
40c31b:	e9 af 00 00 00       	jmp    0x40c3cf
40c320:	53                   	push   %ebx
40c321:	ff 75 f4             	push   -0xc(%ebp)
40c324:	8d 45 d0             	lea    -0x30(%ebp),%eax
40c327:	ff 75 f8             	push   -0x8(%ebp)
40c32a:	ff 75 f0             	push   -0x10(%ebp)
40c32d:	50                   	push   %eax
40c32e:	e8 4e f6 ff ff       	call   0x40b981
40c333:	83 c4 14             	add    $0x14,%esp
40c336:	eb e1                	jmp    0x40c319
40c338:	8b 55 ec             	mov    -0x14(%ebp),%edx
40c33b:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40c33e:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40c345:	80 7c 08 28 00       	cmpb   $0x0,0x28(%eax,%ecx,1)
40c34a:	7d 55                	jge    0x40c3a1
40c34c:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
40c350:	2b c6                	sub    %esi,%eax
40c352:	74 39                	je     0x40c38d
40c354:	83 e8 01             	sub    $0x1,%eax
40c357:	74 20                	je     0x40c379
40c359:	83 e8 01             	sub    $0x1,%eax
40c35c:	0f 85 85 00 00 00    	jne    0x40c3e7
40c362:	ff 75 f4             	push   -0xc(%ebp)
40c365:	8d 45 d0             	lea    -0x30(%ebp),%eax
40c368:	ff 75 f8             	push   -0x8(%ebp)
40c36b:	ff 75 f0             	push   -0x10(%ebp)
40c36e:	50                   	push   %eax
40c36f:	e8 94 fb ff ff       	call   0x40bf08
40c374:	83 c4 10             	add    $0x10,%esp
40c377:	eb a0                	jmp    0x40c319
40c379:	ff 75 f4             	push   -0xc(%ebp)
40c37c:	8d 45 d0             	lea    -0x30(%ebp),%eax
40c37f:	ff 75 f8             	push   -0x8(%ebp)
40c382:	ff 75 f0             	push   -0x10(%ebp)
40c385:	50                   	push   %eax
40c386:	e8 66 fc ff ff       	call   0x40bff1
40c38b:	eb e7                	jmp    0x40c374
40c38d:	ff 75 f4             	push   -0xc(%ebp)
40c390:	8d 45 d0             	lea    -0x30(%ebp),%eax
40c393:	ff 75 f8             	push   -0x8(%ebp)
40c396:	ff 75 f0             	push   -0x10(%ebp)
40c399:	50                   	push   %eax
40c39a:	e8 8e fa ff ff       	call   0x40be2d
40c39f:	eb d3                	jmp    0x40c374
40c3a1:	8b 4c 08 18          	mov    0x18(%eax,%ecx,1),%ecx
40c3a5:	8d 7d d0             	lea    -0x30(%ebp),%edi
40c3a8:	33 c0                	xor    %eax,%eax
40c3aa:	ab                   	stos   %eax,%es:(%edi)
40c3ab:	56                   	push   %esi
40c3ac:	ab                   	stos   %eax,%es:(%edi)
40c3ad:	ab                   	stos   %eax,%es:(%edi)
40c3ae:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40c3b1:	50                   	push   %eax
40c3b2:	ff 75 f4             	push   -0xc(%ebp)
40c3b5:	ff 75 f8             	push   -0x8(%ebp)
40c3b8:	51                   	push   %ecx
40c3b9:	ff 15 94 f0 40 00    	call   *0x40f094
40c3bf:	85 c0                	test   %eax,%eax
40c3c1:	75 09                	jne    0x40c3cc
40c3c3:	ff 15 58 f0 40 00    	call   *0x40f058
40c3c9:	89 45 d0             	mov    %eax,-0x30(%ebp)
40c3cc:	8d 75 d0             	lea    -0x30(%ebp),%esi
40c3cf:	8d 7d dc             	lea    -0x24(%ebp),%edi
40c3d2:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40c3d3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40c3d4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40c3d5:	8b 45 e0             	mov    -0x20(%ebp),%eax
40c3d8:	85 c0                	test   %eax,%eax
40c3da:	75 68                	jne    0x40c444
40c3dc:	8b 7d dc             	mov    -0x24(%ebp),%edi
40c3df:	33 f6                	xor    %esi,%esi
40c3e1:	8b 55 ec             	mov    -0x14(%ebp),%edx
40c3e4:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40c3e7:	85 ff                	test   %edi,%edi
40c3e9:	74 2c                	je     0x40c417
40c3eb:	6a 05                	push   $0x5
40c3ed:	58                   	pop    %eax
40c3ee:	3b f8                	cmp    %eax,%edi
40c3f0:	75 17                	jne    0x40c409
40c3f2:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40c3f6:	c7 43 18 09 00 00 00 	movl   $0x9,0x18(%ebx)
40c3fd:	c6 43 24 01          	movb   $0x1,0x24(%ebx)
40c401:	89 43 20             	mov    %eax,0x20(%ebx)
40c404:	e9 79 fe ff ff       	jmp    0x40c282
40c409:	53                   	push   %ebx
40c40a:	57                   	push   %edi
40c40b:	e8 09 b5 ff ff       	call   0x407919
40c410:	59                   	pop    %ecx
40c411:	59                   	pop    %ecx
40c412:	e9 6b fe ff ff       	jmp    0x40c282
40c417:	8b 04 95 78 70 41 00 	mov    0x417078(,%edx,4),%eax
40c41e:	f6 44 08 28 40       	testb  $0x40,0x28(%eax,%ecx,1)
40c423:	74 08                	je     0x40c42d
40c425:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c428:	80 38 1a             	cmpb   $0x1a,(%eax)
40c42b:	74 1c                	je     0x40c449
40c42d:	c6 43 1c 01          	movb   $0x1,0x1c(%ebx)
40c431:	c7 43 18 1c 00 00 00 	movl   $0x1c,0x18(%ebx)
40c438:	c6 43 24 01          	movb   $0x1,0x24(%ebx)
40c43c:	89 73 20             	mov    %esi,0x20(%ebx)
40c43f:	e9 3e fe ff ff       	jmp    0x40c282
40c444:	2b 45 e4             	sub    -0x1c(%ebp),%eax
40c447:	eb 02                	jmp    0x40c44b
40c449:	33 c0                	xor    %eax,%eax
40c44b:	5f                   	pop    %edi
40c44c:	5e                   	pop    %esi
40c44d:	5b                   	pop    %ebx
40c44e:	c9                   	leave
40c44f:	c3                   	ret
40c450:	6a 10                	push   $0x10
40c452:	68 f8 4c 41 00       	push   $0x414cf8
40c457:	e8 b4 6f ff ff       	call   0x403410
40c45c:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40c460:	6a 08                	push   $0x8
40c462:	e8 65 b3 ff ff       	call   0x4077cc
40c467:	59                   	pop    %ecx
40c468:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c46c:	6a 03                	push   $0x3
40c46e:	5e                   	pop    %esi
40c46f:	89 75 e0             	mov    %esi,-0x20(%ebp)
40c472:	3b 35 80 73 41 00    	cmp    0x417380,%esi
40c478:	74 59                	je     0x40c4d3
40c47a:	a1 84 73 41 00       	mov    0x417384,%eax
40c47f:	8b 04 b0             	mov    (%eax,%esi,4),%eax
40c482:	85 c0                	test   %eax,%eax
40c484:	74 4a                	je     0x40c4d0
40c486:	8b 40 0c             	mov    0xc(%eax),%eax
40c489:	90                   	nop
40c48a:	c1 e8 0d             	shr    $0xd,%eax
40c48d:	a8 01                	test   $0x1,%al
40c48f:	74 16                	je     0x40c4a7
40c491:	a1 84 73 41 00       	mov    0x417384,%eax
40c496:	ff 34 b0             	push   (%eax,%esi,4)
40c499:	e8 af 05 00 00       	call   0x40ca4d
40c49e:	59                   	pop    %ecx
40c49f:	83 f8 ff             	cmp    $0xffffffff,%eax
40c4a2:	74 03                	je     0x40c4a7
40c4a4:	ff 45 e4             	incl   -0x1c(%ebp)
40c4a7:	a1 84 73 41 00       	mov    0x417384,%eax
40c4ac:	8b 04 b0             	mov    (%eax,%esi,4),%eax
40c4af:	83 c0 20             	add    $0x20,%eax
40c4b2:	50                   	push   %eax
40c4b3:	ff 15 6c f0 40 00    	call   *0x40f06c
40c4b9:	a1 84 73 41 00       	mov    0x417384,%eax
40c4be:	ff 34 b0             	push   (%eax,%esi,4)
40c4c1:	e8 b3 b3 ff ff       	call   0x407879
40c4c6:	59                   	pop    %ecx
40c4c7:	a1 84 73 41 00       	mov    0x417384,%eax
40c4cc:	83 24 b0 00          	andl   $0x0,(%eax,%esi,4)
40c4d0:	46                   	inc    %esi
40c4d1:	eb 9c                	jmp    0x40c46f
40c4d3:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c4da:	e8 13 00 00 00       	call   0x40c4f2
40c4df:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40c4e2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40c4e5:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40c4ec:	59                   	pop    %ecx
40c4ed:	5f                   	pop    %edi
40c4ee:	5e                   	pop    %esi
40c4ef:	5b                   	pop    %ebx
40c4f0:	c9                   	leave
40c4f1:	c3                   	ret
40c4f2:	6a 08                	push   $0x8
40c4f4:	e8 1b b3 ff ff       	call   0x407814
40c4f9:	59                   	pop    %ecx
40c4fa:	c3                   	ret
40c4fb:	8b ff                	mov    %edi,%edi
40c4fd:	55                   	push   %ebp
40c4fe:	8b ec                	mov    %esp,%ebp
40c500:	56                   	push   %esi
40c501:	8b 75 08             	mov    0x8(%ebp),%esi
40c504:	57                   	push   %edi
40c505:	8d 7e 0c             	lea    0xc(%esi),%edi
40c508:	8b 07                	mov    (%edi),%eax
40c50a:	90                   	nop
40c50b:	c1 e8 0d             	shr    $0xd,%eax
40c50e:	a8 01                	test   $0x1,%al
40c510:	74 25                	je     0x40c537
40c512:	8b 07                	mov    (%edi),%eax
40c514:	90                   	nop
40c515:	c1 e8 06             	shr    $0x6,%eax
40c518:	a8 01                	test   $0x1,%al
40c51a:	74 1b                	je     0x40c537
40c51c:	ff 76 04             	push   0x4(%esi)
40c51f:	e8 55 b3 ff ff       	call   0x407879
40c524:	59                   	pop    %ecx
40c525:	b8 bf fe ff ff       	mov    $0xfffffebf,%eax
40c52a:	f0 21 07             	lock and %eax,(%edi)
40c52d:	33 c0                	xor    %eax,%eax
40c52f:	89 46 04             	mov    %eax,0x4(%esi)
40c532:	89 06                	mov    %eax,(%esi)
40c534:	89 46 08             	mov    %eax,0x8(%esi)
40c537:	5f                   	pop    %edi
40c538:	5e                   	pop    %esi
40c539:	5d                   	pop    %ebp
40c53a:	c3                   	ret
40c53b:	8b ff                	mov    %edi,%edi
40c53d:	55                   	push   %ebp
40c53e:	8b ec                	mov    %esp,%ebp
40c540:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c543:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40c546:	75 0d                	jne    0x40c555
40c548:	e8 03 b4 ff ff       	call   0x407950
40c54d:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c553:	eb 38                	jmp    0x40c58d
40c555:	85 c9                	test   %ecx,%ecx
40c557:	78 24                	js     0x40c57d
40c559:	3b 0d 78 72 41 00    	cmp    0x417278,%ecx
40c55f:	73 1c                	jae    0x40c57d
40c561:	8b c1                	mov    %ecx,%eax
40c563:	83 e1 3f             	and    $0x3f,%ecx