40a16c:	8b ff                	mov    %edi,%edi
40a16e:	56                   	push   %esi
40a16f:	33 f6                	xor    %esi,%esi
40a171:	83 f9 ff             	cmp    $0xffffffff,%ecx
40a174:	74 2e                	je     0x40a1a4
40a176:	8d 41 fd             	lea    -0x3(%ecx),%eax
40a179:	8b d1                	mov    %ecx,%edx
40a17b:	83 f8 5b             	cmp    $0x5b,%eax
40a17e:	77 1a                	ja     0x40a19a
40a180:	83 f9 1f             	cmp    $0x1f,%ecx
40a183:	0f 87 36 23 01 00    	ja     0x41c4bf
40a189:	8b 04 b5 ac 67 43 00 	mov    0x4367ac(,%esi,4),%eax
40a190:	0f b3 d0             	btr    %edx,%eax
40a193:	89 04 b5 ac 67 43 00 	mov    %eax,0x4367ac(,%esi,4)
40a19a:	51                   	push   %ecx
40a19b:	ff 15 84 a3 44 00    	call   *0x44a384
40a1a1:	59                   	pop    %ecx
40a1a2:	5e                   	pop    %esi
40a1a3:	c3                   	ret
40a1a4:	33 c0                	xor    %eax,%eax
40a1a6:	5e                   	pop    %esi
40a1a7:	c3                   	ret
40a1a8:	8b ff                	mov    %edi,%edi
40a1aa:	56                   	push   %esi
40a1ab:	57                   	push   %edi
40a1ac:	8b f9                	mov    %ecx,%edi
40a1ae:	57                   	push   %edi
40a1af:	ff 15 7c a3 44 00    	call   *0x44a37c
40a1b5:	8b f0                	mov    %eax,%esi
40a1b7:	59                   	pop    %ecx
40a1b8:	83 fe ff             	cmp    $0xffffffff,%esi
40a1bb:	74 0b                	je     0x40a1c8
40a1bd:	8b cf                	mov    %edi,%ecx
40a1bf:	e8 5c 00 00 00       	call   0x40a220
40a1c4:	85 c0                	test   %eax,%eax
40a1c6:	75 05                	jne    0x40a1cd
40a1c8:	5f                   	pop    %edi
40a1c9:	8b c6                	mov    %esi,%eax
40a1cb:	5e                   	pop    %esi
40a1cc:	c3                   	ret
40a1cd:	8b ce                	mov    %esi,%ecx
40a1cf:	e8 6f c2 ff ff       	call   0x406443
40a1d4:	eb f2                	jmp    0x40a1c8
40a1d6:	8b ff                	mov    %edi,%edi
40a1d8:	55                   	push   %ebp
40a1d9:	8b ec                	mov    %esp,%ebp
40a1db:	51                   	push   %ecx
40a1dc:	53                   	push   %ebx
40a1dd:	56                   	push   %esi
40a1de:	57                   	push   %edi
40a1df:	8b f2                	mov    %edx,%esi
40a1e1:	8b c1                	mov    %ecx,%eax
40a1e3:	56                   	push   %esi
40a1e4:	50                   	push   %eax
40a1e5:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a1e8:	33 ff                	xor    %edi,%edi
40a1ea:	ff 15 70 a3 44 00    	call   *0x44a370
40a1f0:	8b d8                	mov    %eax,%ebx
40a1f2:	59                   	pop    %ecx
40a1f3:	59                   	pop    %ecx
40a1f4:	83 fb ff             	cmp    $0xffffffff,%ebx
40a1f7:	74 17                	je     0x40a210
40a1f9:	8b ce                	mov    %esi,%ecx
40a1fb:	83 fe 02             	cmp    $0x2,%esi
40a1fe:	0f 87 d1 22 01 00    	ja     0x41c4d5
40a204:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a207:	e8 14 00 00 00       	call   0x40a220
40a20c:	85 c0                	test   %eax,%eax
40a20e:	75 07                	jne    0x40a217
40a210:	5f                   	pop    %edi
40a211:	5e                   	pop    %esi
40a212:	8b c3                	mov    %ebx,%eax
40a214:	5b                   	pop    %ebx
40a215:	c9                   	leave
40a216:	c3                   	ret
40a217:	8b ce                	mov    %esi,%ecx
40a219:	e8 25 c2 ff ff       	call   0x406443
40a21e:	eb f0                	jmp    0x40a210
40a220:	8b ff                	mov    %edi,%edi
40a222:	56                   	push   %esi
40a223:	33 f6                	xor    %esi,%esi
40a225:	83 f9 02             	cmp    $0x2,%ecx
40a228:	7f 04                	jg     0x40a22e
40a22a:	33 c0                	xor    %eax,%eax
40a22c:	5e                   	pop    %esi
40a22d:	c3                   	ret
40a22e:	83 f9 5f             	cmp    $0x5f,%ecx
40a231:	7d f7                	jge    0x40a22a
40a233:	83 f9 1f             	cmp    $0x1f,%ecx
40a236:	0f 8f ce 22 01 00    	jg     0x41c50a
40a23c:	8b 04 b5 ac 67 43 00 	mov    0x4367ac(,%esi,4),%eax
40a243:	33 d2                	xor    %edx,%edx
40a245:	42                   	inc    %edx
40a246:	d3 e2                	shl    %cl,%edx
40a248:	23 c2                	and    %edx,%eax
40a24a:	5e                   	pop    %esi
40a24b:	c3                   	ret
40a24c:	8b ff                	mov    %edi,%edi
40a24e:	55                   	push   %ebp
40a24f:	8b ec                	mov    %esp,%ebp
40a251:	83 e4 f8             	and    $0xfffffff8,%esp
40a254:	83 ec 64             	sub    $0x64,%esp
40a257:	53                   	push   %ebx
40a258:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a25b:	33 c0                	xor    %eax,%eax
40a25d:	56                   	push   %esi
40a25e:	57                   	push   %edi
40a25f:	8b f9                	mov    %ecx,%edi
40a261:	89 44 24 24          	mov    %eax,0x24(%esp)
40a265:	b9 06 40 00 00       	mov    $0x4006,%ecx
40a26a:	89 7c 24 10          	mov    %edi,0x10(%esp)
40a26e:	8b f3                	mov    %ebx,%esi
40a270:	88 44 24 0e          	mov    %al,0xe(%esp)
40a274:	e8 57 3a 00 00       	call   0x40dcd0
40a279:	89 44 24 14          	mov    %eax,0x14(%esp)
40a27d:	85 c0                	test   %eax,%eax
40a27f:	0f 84 96 22 01 00    	je     0x41c51b
40a285:	a0 55 67 43 00       	mov    0x436755,%al
40a28a:	88 44 24 0f          	mov    %al,0xf(%esp)
40a28e:	6a 2f                	push   $0x2f
40a290:	5a                   	pop    %edx
40a291:	8b ce                	mov    %esi,%ecx
40a293:	e8 97 03 00 00       	call   0x40a62f
40a298:	8b f0                	mov    %eax,%esi
40a29a:	85 f6                	test   %esi,%esi
40a29c:	0f 84 f3 25 01 00    	je     0x41c895
40a2a2:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40a2a6:	50                   	push   %eax
40a2a7:	ff 15 10 a4 44 00    	call   *0x44a410
40a2ad:	59                   	pop    %ecx
40a2ae:	0f b7 c8             	movzwl %ax,%ecx
40a2b1:	66 85 c9             	test   %cx,%cx
40a2b4:	0f 84 db 25 01 00    	je     0x41c895
40a2ba:	83 f9 3f             	cmp    $0x3f,%ecx
40a2bd:	0f 84 20 25 01 00    	je     0x41c7e3
40a2c3:	83 f9 71             	cmp    $0x71,%ecx
40a2c6:	0f 84 60 22 01 00    	je     0x41c52c
40a2cc:	6a 6b                	push   $0x6b
40a2ce:	58                   	pop    %eax
40a2cf:	83 f9 63             	cmp    $0x63,%ecx
40a2d2:	74 66                	je     0x40a33a
40a2d4:	66 3b c8             	cmp    %ax,%cx
40a2d7:	0f 84 7a 24 01 00    	je     0x41c757
40a2dd:	83 f9 72             	cmp    $0x72,%ecx
40a2e0:	74 58                	je     0x40a33a
40a2e2:	83 f9 75             	cmp    $0x75,%ecx
40a2e5:	0f 84 50 22 01 00    	je     0x41c53b
40a2eb:	83 f9 61             	cmp    $0x61,%ecx
40a2ee:	0f 84 53 22 01 00    	je     0x41c547
40a2f4:	83 f9 78             	cmp    $0x78,%ecx
40a2f7:	0f 84 8e 01 00 00    	je     0x40a48b
40a2fd:	83 f9 79             	cmp    $0x79,%ecx
40a300:	0f 84 4d 22 01 00    	je     0x41c553
40a306:	83 f9 65             	cmp    $0x65,%ecx
40a309:	0f 84 50 22 01 00    	je     0x41c55f
40a30f:	83 f9 64             	cmp    $0x64,%ecx
40a312:	0f 85 d3 02 00 00    	jne    0x40a5eb
40a318:	8b 55 0c             	mov    0xc(%ebp),%edx
40a31b:	8d 46 04             	lea    0x4(%esi),%eax
40a31e:	50                   	push   %eax
40a31f:	8b c6                	mov    %esi,%eax
40a321:	8b ce                	mov    %esi,%ecx
40a323:	2b c3                	sub    %ebx,%eax
40a325:	d1 f8                	sar    $1,%eax
40a327:	2b d0                	sub    %eax,%edx
40a329:	e8 72 50 00 00       	call   0x40f3a0
40a32e:	33 c0                	xor    %eax,%eax
40a330:	89 07                	mov    %eax,(%edi)
40a332:	89 47 04             	mov    %eax,0x4(%edi)
40a335:	e9 54 ff ff ff       	jmp    0x40a28e
40a33a:	66 3b c8             	cmp    %ax,%cx
40a33d:	0f 84 14 24 01 00    	je     0x41c757
40a343:	c7 05 58 67 43 00 01 	movl   $0x1,0x436758
40a34a:	00 00 00
40a34d:	8d 5e 04             	lea    0x4(%esi),%ebx
40a350:	33 ff                	xor    %edi,%edi
40a352:	8b cb                	mov    %ebx,%ecx
40a354:	8d 51 02             	lea    0x2(%ecx),%edx
40a357:	66 8b 01             	mov    (%ecx),%ax
40a35a:	83 c1 02             	add    $0x2,%ecx
40a35d:	66 3b c7             	cmp    %di,%ax
40a360:	75 f5                	jne    0x40a357
40a362:	2b ca                	sub    %edx,%ecx
40a364:	d1 f9                	sar    $1,%ecx
40a366:	8d 41 02             	lea    0x2(%ecx),%eax
40a369:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
40a36c:	89 44 24 20          	mov    %eax,0x20(%esp)
40a370:	e8 5b 39 00 00       	call   0x40dcd0
40a375:	8b f8                	mov    %eax,%edi
40a377:	85 ff                	test   %edi,%edi
40a379:	0f 84 e7 23 01 00    	je     0x41c766
40a37f:	8b 54 24 20          	mov    0x20(%esp),%edx
40a383:	8b cf                	mov    %edi,%ecx
40a385:	53                   	push   %ebx
40a386:	e8 15 50 00 00       	call   0x40f3a0
40a38b:	33 c0                	xor    %eax,%eax
40a38d:	8b cf                	mov    %edi,%ecx
40a38f:	66 89 06             	mov    %ax,(%esi)
40a392:	e8 f7 fa ff ff       	call   0x409e8e
40a397:	80 7c 24 0e 00       	cmpb   $0x0,0xe(%esp)
40a39c:	8b f0                	mov    %eax,%esi
40a39e:	6a 22                	push   $0x22
40a3a0:	5b                   	pop    %ebx
40a3a1:	75 6d                	jne    0x40a410
40a3a3:	66 39 1e             	cmp    %bx,(%esi)
40a3a6:	0f 85 01 01 00 00    	jne    0x40a4ad
40a3ac:	bf 00 40 00 00       	mov    $0x4000,%edi
40a3b1:	8b cf                	mov    %edi,%ecx
40a3b3:	e8 18 39 00 00       	call   0x40dcd0
40a3b8:	8b d8                	mov    %eax,%ebx
40a3ba:	8b cf                	mov    %edi,%ecx
40a3bc:	89 5c 24 18          	mov    %ebx,0x18(%esp)
40a3c0:	e8 0b 39 00 00       	call   0x40dcd0
40a3c5:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40a3c9:	85 db                	test   %ebx,%ebx
40a3cb:	0f 84 fe 23 01 00    	je     0x41c7cf
40a3d1:	85 c0                	test   %eax,%eax
40a3d3:	0f 84 f6 23 01 00    	je     0x41c7cf
40a3d9:	33 c0                	xor    %eax,%eax
40a3db:	6a 48                	push   $0x48
40a3dd:	50                   	push   %eax
40a3de:	8d 44 24 30          	lea    0x30(%esp),%eax
40a3e2:	50                   	push   %eax
40a3e3:	e8 d5 db 00 00       	call   0x417fbd
40a3e8:	83 c4 0c             	add    $0xc,%esp
40a3eb:	8d 4e 02             	lea    0x2(%esi),%ecx
40a3ee:	6a 22                	push   $0x22
40a3f0:	5f                   	pop    %edi
40a3f1:	8b d7                	mov    %edi,%edx
40a3f3:	e8 37 02 00 00       	call   0x40a62f
40a3f8:	85 c0                	test   %eax,%eax
40a3fa:	74 14                	je     0x40a410
40a3fc:	8d 58 02             	lea    0x2(%eax),%ebx
40a3ff:	8b d7                	mov    %edi,%edx
40a401:	8b cb                	mov    %ebx,%ecx
40a403:	e8 27 02 00 00       	call   0x40a62f
40a408:	85 c0                	test   %eax,%eax
40a40a:	0f 84 a3 00 00 00    	je     0x40a4b3
40a410:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40a414:	6a 22                	push   $0x22
40a416:	58                   	pop    %eax
40a417:	66 39 06             	cmp    %ax,(%esi)
40a41a:	75 3b                	jne    0x40a457
40a41c:	83 c6 02             	add    $0x2,%esi
40a41f:	33 d2                	xor    %edx,%edx
40a421:	8b fe                	mov    %esi,%edi
40a423:	8d 4f 02             	lea    0x2(%edi),%ecx
40a426:	66 8b 07             	mov    (%edi),%ax
40a429:	83 c7 02             	add    $0x2,%edi
40a42c:	66 3b c2             	cmp    %dx,%ax
40a42f:	75 f5                	jne    0x40a426
40a431:	6a 22                	push   $0x22
40a433:	2b f9                	sub    %ecx,%edi
40a435:	8b ce                	mov    %esi,%ecx
40a437:	58                   	pop    %eax
40a438:	8b d0                	mov    %eax,%edx
40a43a:	d1 ff                	sar    $1,%edi
40a43c:	e8 b4 5d 00 00       	call   0x4101f5
40a441:	85 c0                	test   %eax,%eax
40a443:	74 12                	je     0x40a457
40a445:	33 c9                	xor    %ecx,%ecx
40a447:	8b d7                	mov    %edi,%edx
40a449:	66 89 08             	mov    %cx,(%eax)
40a44c:	83 c0 02             	add    $0x2,%eax
40a44f:	50                   	push   %eax
40a450:	8b ce                	mov    %esi,%ecx
40a452:	e8 e9 57 00 00       	call   0x40fc40
40a457:	8b ce                	mov    %esi,%ecx
40a459:	33 ff                	xor    %edi,%edi
40a45b:	8d 51 02             	lea    0x2(%ecx),%edx
40a45e:	66 8b 01             	mov    (%ecx),%ax
40a461:	83 c1 02             	add    $0x2,%ecx
40a464:	66 3b c7             	cmp    %di,%ax
40a467:	75 f5                	jne    0x40a45e
40a469:	2b ca                	sub    %edx,%ecx
40a46b:	d1 f9                	sar    $1,%ecx
40a46d:	6a 0a                	push   $0xa
40a46f:	58                   	pop    %eax
40a470:	66 89 04 4e          	mov    %ax,(%esi,%ecx,2)
40a474:	8b 44 24 10          	mov    0x10(%esp),%eax
40a478:	89 70 08             	mov    %esi,0x8(%eax)
40a47b:	8b cb                	mov    %ebx,%ecx
40a47d:	e8 de 37 00 00       	call   0x40dc60
40a482:	5f                   	pop    %edi
40a483:	5e                   	pop    %esi
40a484:	5b                   	pop    %ebx
40a485:	8b e5                	mov    %ebp,%esp
40a487:	5d                   	pop    %ebp
40a488:	c2 08 00             	ret    $0x8
40a48b:	c6 05 55 67 43 00 01 	movb   $0x1,0x436755
40a492:	8b 55 0c             	mov    0xc(%ebp),%edx
40a495:	8d 46 04             	lea    0x4(%esi),%eax
40a498:	50                   	push   %eax
40a499:	8b c6                	mov    %esi,%eax
40a49b:	8b ce                	mov    %esi,%ecx
40a49d:	2b c3                	sub    %ebx,%eax
40a49f:	d1 f8                	sar    $1,%eax
40a4a1:	2b d0                	sub    %eax,%edx
40a4a3:	e8 f8 4e 00 00       	call   0x40f3a0
40a4a8:	e9 e1 fd ff ff       	jmp    0x40a28e
40a4ad:	8b 5c 24 14          	mov    0x14(%esp),%ebx
40a4b1:	eb a4                	jmp    0x40a457
40a4b3:	0f b7 03             	movzwl (%ebx),%eax
40a4b6:	8b ce                	mov    %esi,%ecx
40a4b8:	89 44 24 20          	mov    %eax,0x20(%esp)
40a4bc:	33 c0                	xor    %eax,%eax
40a4be:	6a 26                	push   $0x26
40a4c0:	5a                   	pop    %edx
40a4c1:	66 89 03             	mov    %ax,(%ebx)
40a4c4:	e8 66 01 00 00       	call   0x40a62f
40a4c9:	85 c0                	test   %eax,%eax
40a4cb:	0f 85 f2 22 01 00    	jne    0x41c7c3
40a4d1:	6a 3c                	push   $0x3c
40a4d3:	5a                   	pop    %edx
40a4d4:	8b ce                	mov    %esi,%ecx
40a4d6:	e8 54 01 00 00       	call   0x40a62f
40a4db:	85 c0                	test   %eax,%eax
40a4dd:	0f 85 e0 22 01 00    	jne    0x41c7c3
40a4e3:	6a 3e                	push   $0x3e
40a4e5:	5a                   	pop    %edx
40a4e6:	8b ce                	mov    %esi,%ecx
40a4e8:	e8 42 01 00 00       	call   0x40a62f
40a4ed:	85 c0                	test   %eax,%eax
40a4ef:	0f 85 ce 22 01 00    	jne    0x41c7c3
40a4f5:	6a 40                	push   $0x40
40a4f7:	5a                   	pop    %edx
40a4f8:	8b ce                	mov    %esi,%ecx
40a4fa:	e8 30 01 00 00       	call   0x40a62f
40a4ff:	85 c0                	test   %eax,%eax
40a501:	0f 85 bc 22 01 00    	jne    0x41c7c3
40a507:	6a 5e                	push   $0x5e
40a509:	5a                   	pop    %edx
40a50a:	8b ce                	mov    %esi,%ecx
40a50c:	e8 1e 01 00 00       	call   0x40a62f
40a511:	85 c0                	test   %eax,%eax
40a513:	0f 85 aa 22 01 00    	jne    0x41c7c3
40a519:	6a 7c                	push   $0x7c
40a51b:	5a                   	pop    %edx
40a51c:	8b ce                	mov    %esi,%ecx
40a51e:	e8 0c 01 00 00       	call   0x40a62f
40a523:	85 c0                	test   %eax,%eax
40a525:	0f 85 98 22 01 00    	jne    0x41c7c3
40a52b:	0f b7 06             	movzwl (%esi),%eax
40a52e:	8b fe                	mov    %esi,%edi
40a530:	66 85 c0             	test   %ax,%ax
40a533:	0f 84 8a 22 01 00    	je     0x41c7c3
40a539:	8b c8                	mov    %eax,%ecx
40a53b:	51                   	push   %ecx
40a53c:	ff 15 ac a3 44 00    	call   *0x44a3ac
40a542:	59                   	pop    %ecx