40d1a5:	57                   	push   %edi
40d1a6:	bf 00 80 00 00       	mov    $0x8000,%edi
40d1ab:	8b 46 08             	mov    0x8(%esi),%eax
40d1ae:	8a 4e 31             	mov    0x31(%esi),%cl
40d1b1:	c6 46 3c 00          	movb   $0x0,0x3c(%esi)
40d1b5:	0f b6 d1             	movzbl %cl,%edx
40d1b8:	8b 00                	mov    (%eax),%eax
40d1ba:	8b 00                	mov    (%eax),%eax
40d1bc:	66 85 3c 50          	test   %di,(%eax,%edx,2)
40d1c0:	74 38                	je     0x40d1fa
40d1c2:	8d 46 18             	lea    0x18(%esi),%eax
40d1c5:	50                   	push   %eax
40d1c6:	51                   	push   %ecx
40d1c7:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40d1cd:	e8 65 1c 00 00       	call   0x40ee37
40d1d2:	8b 4e 10             	mov    0x10(%esi),%ecx
40d1d5:	8a 01                	mov    (%ecx),%al
40d1d7:	88 46 31             	mov    %al,0x31(%esi)
40d1da:	8d 41 01             	lea    0x1(%ecx),%eax
40d1dd:	80 7e 31 00          	cmpb   $0x0,0x31(%esi)
40d1e1:	89 46 10             	mov    %eax,0x10(%esi)
40d1e4:	75 14                	jne    0x40d1fa
40d1e6:	e8 80 78 00 00       	call   0x414a6b
40d1eb:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d1f1:	e8 ec ea ff ff       	call   0x40bce2
40d1f6:	32 c0                	xor    %al,%al
40d1f8:	eb 02                	jmp    0x40d1fc
40d1fa:	b0 01                	mov    $0x1,%al
40d1fc:	5f                   	pop    %edi
40d1fd:	5e                   	pop    %esi
40d1fe:	c2 04 00             	ret    $0x4
40d201:	80 79 31 2a          	cmpb   $0x2a,0x31(%ecx)
40d205:	74 0a                	je     0x40d211
40d207:	8d 41 28             	lea    0x28(%ecx),%eax
40d20a:	50                   	push   %eax
40d20b:	e8 3e f9 ff ff       	call   0x40cb4e
40d210:	c3                   	ret
40d211:	83 41 14 04          	addl   $0x4,0x14(%ecx)
40d215:	8b 41 14             	mov    0x14(%ecx),%eax
40d218:	8b 40 fc             	mov    -0x4(%eax),%eax
40d21b:	89 41 28             	mov    %eax,0x28(%ecx)
40d21e:	85 c0                	test   %eax,%eax
40d220:	79 04                	jns    0x40d226
40d222:	83 49 28 ff          	orl    $0xffffffff,0x28(%ecx)
40d226:	b0 01                	mov    $0x1,%al
40d228:	c3                   	ret
40d229:	80 79 31 2a          	cmpb   $0x2a,0x31(%ecx)
40d22d:	74 0a                	je     0x40d239
40d22f:	8d 41 28             	lea    0x28(%ecx),%eax
40d232:	50                   	push   %eax
40d233:	e8 72 f9 ff ff       	call   0x40cbaa
40d238:	c3                   	ret
40d239:	83 41 14 04          	addl   $0x4,0x14(%ecx)
40d23d:	8b 41 14             	mov    0x14(%ecx),%eax
40d240:	8b 40 fc             	mov    -0x4(%eax),%eax
40d243:	89 41 28             	mov    %eax,0x28(%ecx)
40d246:	85 c0                	test   %eax,%eax
40d248:	79 04                	jns    0x40d24e
40d24a:	83 49 28 ff          	orl    $0xffffffff,0x28(%ecx)
40d24e:	b0 01                	mov    $0x1,%al
40d250:	c3                   	ret
40d251:	66 83 79 32 2a       	cmpw   $0x2a,0x32(%ecx)
40d256:	74 0a                	je     0x40d262
40d258:	8d 41 28             	lea    0x28(%ecx),%eax
40d25b:	50                   	push   %eax
40d25c:	e8 a5 f9 ff ff       	call   0x40cc06
40d261:	c3                   	ret
40d262:	83 41 14 04          	addl   $0x4,0x14(%ecx)
40d266:	8b 41 14             	mov    0x14(%ecx),%eax
40d269:	8b 40 fc             	mov    -0x4(%eax),%eax
40d26c:	89 41 28             	mov    %eax,0x28(%ecx)
40d26f:	85 c0                	test   %eax,%eax
40d271:	79 04                	jns    0x40d277
40d273:	83 49 28 ff          	orl    $0xffffffff,0x28(%ecx)
40d277:	b0 01                	mov    $0x1,%al
40d279:	c3                   	ret
40d27a:	8a 41 31             	mov    0x31(%ecx),%al
40d27d:	3c 46                	cmp    $0x46,%al
40d27f:	75 1a                	jne    0x40d29b
40d281:	8b 01                	mov    (%ecx),%eax
40d283:	83 e0 08             	and    $0x8,%eax
40d286:	83 c8 00             	or     $0x0,%eax
40d289:	0f 85 51 01 00 00    	jne    0x40d3e0
40d28f:	c7 41 1c 07 00 00 00 	movl   $0x7,0x1c(%ecx)
40d296:	e9 2d 04 00 00       	jmp    0x40d6c8
40d29b:	3c 4e                	cmp    $0x4e,%al
40d29d:	75 26                	jne    0x40d2c5
40d29f:	8b 01                	mov    (%ecx),%eax
40d2a1:	6a 08                	push   $0x8
40d2a3:	5a                   	pop    %edx
40d2a4:	23 c2                	and    %edx,%eax
40d2a6:	83 c8 00             	or     $0x0,%eax
40d2a9:	0f 85 31 01 00 00    	jne    0x40d3e0
40d2af:	89 51 1c             	mov    %edx,0x1c(%ecx)
40d2b2:	e8 b4 77 00 00       	call   0x414a6b
40d2b7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d2bd:	e8 20 ea ff ff       	call   0x40bce2
40d2c2:	32 c0                	xor    %al,%al
40d2c4:	c3                   	ret
40d2c5:	83 79 2c 00          	cmpl   $0x0,0x2c(%ecx)
40d2c9:	75 e7                	jne    0x40d2b2
40d2cb:	0f be c0             	movsbl %al,%eax
40d2ce:	83 f8 6a             	cmp    $0x6a,%eax
40d2d1:	0f 8f be 00 00 00    	jg     0x40d395
40d2d7:	0f 84 af 00 00 00    	je     0x40d38c
40d2dd:	83 f8 49             	cmp    $0x49,%eax
40d2e0:	74 4f                	je     0x40d331
40d2e2:	83 f8 4c             	cmp    $0x4c,%eax
40d2e5:	74 3e                	je     0x40d325
40d2e7:	83 f8 54             	cmp    $0x54,%eax
40d2ea:	74 2d                	je     0x40d319
40d2ec:	83 f8 68             	cmp    $0x68,%eax
40d2ef:	0f 85 eb 00 00 00    	jne    0x40d3e0
40d2f5:	8b 41 10             	mov    0x10(%ecx),%eax
40d2f8:	80 38 68             	cmpb   $0x68,(%eax)
40d2fb:	75 10                	jne    0x40d30d
40d2fd:	40                   	inc    %eax
40d2fe:	c7 41 2c 01 00 00 00 	movl   $0x1,0x2c(%ecx)
40d305:	89 41 10             	mov    %eax,0x10(%ecx)
40d308:	e9 d3 00 00 00       	jmp    0x40d3e0
40d30d:	c7 41 2c 02 00 00 00 	movl   $0x2,0x2c(%ecx)
40d314:	e9 c7 00 00 00       	jmp    0x40d3e0
40d319:	c7 41 2c 0d 00 00 00 	movl   $0xd,0x2c(%ecx)
40d320:	e9 bb 00 00 00       	jmp    0x40d3e0
40d325:	c7 41 2c 08 00 00 00 	movl   $0x8,0x2c(%ecx)
40d32c:	e9 af 00 00 00       	jmp    0x40d3e0
40d331:	8b 51 10             	mov    0x10(%ecx),%edx
40d334:	8a 02                	mov    (%edx),%al
40d336:	3c 33                	cmp    $0x33,%al
40d338:	75 18                	jne    0x40d352
40d33a:	80 7a 01 32          	cmpb   $0x32,0x1(%edx)
40d33e:	75 12                	jne    0x40d352
40d340:	8d 42 02             	lea    0x2(%edx),%eax
40d343:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40d34a:	89 41 10             	mov    %eax,0x10(%ecx)
40d34d:	e9 8e 00 00 00       	jmp    0x40d3e0
40d352:	3c 36                	cmp    $0x36,%al
40d354:	75 15                	jne    0x40d36b
40d356:	80 7a 01 34          	cmpb   $0x34,0x1(%edx)
40d35a:	75 0f                	jne    0x40d36b
40d35c:	8d 42 02             	lea    0x2(%edx),%eax
40d35f:	c7 41 2c 0b 00 00 00 	movl   $0xb,0x2c(%ecx)
40d366:	89 41 10             	mov    %eax,0x10(%ecx)
40d369:	eb 75                	jmp    0x40d3e0
40d36b:	3c 64                	cmp    $0x64,%al
40d36d:	74 14                	je     0x40d383
40d36f:	3c 69                	cmp    $0x69,%al
40d371:	74 10                	je     0x40d383
40d373:	3c 6f                	cmp    $0x6f,%al
40d375:	74 0c                	je     0x40d383
40d377:	3c 75                	cmp    $0x75,%al
40d379:	74 08                	je     0x40d383
40d37b:	3c 78                	cmp    $0x78,%al
40d37d:	74 04                	je     0x40d383
40d37f:	3c 58                	cmp    $0x58,%al
40d381:	75 5d                	jne    0x40d3e0
40d383:	c7 41 2c 09 00 00 00 	movl   $0x9,0x2c(%ecx)
40d38a:	eb 54                	jmp    0x40d3e0
40d38c:	c7 41 2c 05 00 00 00 	movl   $0x5,0x2c(%ecx)
40d393:	eb 4b                	jmp    0x40d3e0
40d395:	83 f8 6c             	cmp    $0x6c,%eax
40d398:	74 2a                	je     0x40d3c4
40d39a:	83 f8 74             	cmp    $0x74,%eax
40d39d:	74 1c                	je     0x40d3bb
40d39f:	83 f8 77             	cmp    $0x77,%eax
40d3a2:	74 0e                	je     0x40d3b2
40d3a4:	83 f8 7a             	cmp    $0x7a,%eax
40d3a7:	75 37                	jne    0x40d3e0
40d3a9:	c7 41 2c 06 00 00 00 	movl   $0x6,0x2c(%ecx)
40d3b0:	eb 2e                	jmp    0x40d3e0
40d3b2:	c7 41 2c 0c 00 00 00 	movl   $0xc,0x2c(%ecx)
40d3b9:	eb 25                	jmp    0x40d3e0
40d3bb:	c7 41 2c 07 00 00 00 	movl   $0x7,0x2c(%ecx)
40d3c2:	eb 1c                	jmp    0x40d3e0
40d3c4:	8b 41 10             	mov    0x10(%ecx),%eax
40d3c7:	80 38 6c             	cmpb   $0x6c,(%eax)
40d3ca:	75 0d                	jne    0x40d3d9
40d3cc:	40                   	inc    %eax
40d3cd:	c7 41 2c 04 00 00 00 	movl   $0x4,0x2c(%ecx)
40d3d4:	89 41 10             	mov    %eax,0x10(%ecx)
40d3d7:	eb 07                	jmp    0x40d3e0
40d3d9:	c7 41 2c 03 00 00 00 	movl   $0x3,0x2c(%ecx)
40d3e0:	b0 01                	mov    $0x1,%al
40d3e2:	c3                   	ret
40d3e3:	8a 41 31             	mov    0x31(%ecx),%al
40d3e6:	3c 46                	cmp    $0x46,%al
40d3e8:	75 1a                	jne    0x40d404
40d3ea:	8b 01                	mov    (%ecx),%eax
40d3ec:	83 e0 08             	and    $0x8,%eax
40d3ef:	83 c8 00             	or     $0x0,%eax
40d3f2:	0f 85 51 01 00 00    	jne    0x40d549
40d3f8:	c7 41 1c 07 00 00 00 	movl   $0x7,0x1c(%ecx)
40d3ff:	e9 f3 04 00 00       	jmp    0x40d8f7
40d404:	3c 4e                	cmp    $0x4e,%al
40d406:	75 26                	jne    0x40d42e
40d408:	8b 01                	mov    (%ecx),%eax
40d40a:	6a 08                	push   $0x8
40d40c:	5a                   	pop    %edx
40d40d:	23 c2                	and    %edx,%eax
40d40f:	83 c8 00             	or     $0x0,%eax
40d412:	0f 85 31 01 00 00    	jne    0x40d549
40d418:	89 51 1c             	mov    %edx,0x1c(%ecx)
40d41b:	e8 4b 76 00 00       	call   0x414a6b
40d420:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d426:	e8 b7 e8 ff ff       	call   0x40bce2
40d42b:	32 c0                	xor    %al,%al
40d42d:	c3                   	ret
40d42e:	83 79 2c 00          	cmpl   $0x0,0x2c(%ecx)
40d432:	75 e7                	jne    0x40d41b
40d434:	0f be c0             	movsbl %al,%eax
40d437:	83 f8 6a             	cmp    $0x6a,%eax
40d43a:	0f 8f be 00 00 00    	jg     0x40d4fe
40d440:	0f 84 af 00 00 00    	je     0x40d4f5
40d446:	83 f8 49             	cmp    $0x49,%eax
40d449:	74 4f                	je     0x40d49a
40d44b:	83 f8 4c             	cmp    $0x4c,%eax
40d44e:	74 3e                	je     0x40d48e
40d450:	83 f8 54             	cmp    $0x54,%eax
40d453:	74 2d                	je     0x40d482
40d455:	83 f8 68             	cmp    $0x68,%eax
40d458:	0f 85 eb 00 00 00    	jne    0x40d549
40d45e:	8b 41 10             	mov    0x10(%ecx),%eax
40d461:	80 38 68             	cmpb   $0x68,(%eax)
40d464:	75 10                	jne    0x40d476
40d466:	40                   	inc    %eax
40d467:	c7 41 2c 01 00 00 00 	movl   $0x1,0x2c(%ecx)
40d46e:	89 41 10             	mov    %eax,0x10(%ecx)
40d471:	e9 d3 00 00 00       	jmp    0x40d549
40d476:	c7 41 2c 02 00 00 00 	movl   $0x2,0x2c(%ecx)
40d47d:	e9 c7 00 00 00       	jmp    0x40d549
40d482:	c7 41 2c 0d 00 00 00 	movl   $0xd,0x2c(%ecx)
40d489:	e9 bb 00 00 00       	jmp    0x40d549
40d48e:	c7 41 2c 08 00 00 00 	movl   $0x8,0x2c(%ecx)
40d495:	e9 af 00 00 00       	jmp    0x40d549
40d49a:	8b 51 10             	mov    0x10(%ecx),%edx
40d49d:	8a 02                	mov    (%edx),%al
40d49f:	3c 33                	cmp    $0x33,%al
40d4a1:	75 18                	jne    0x40d4bb
40d4a3:	80 7a 01 32          	cmpb   $0x32,0x1(%edx)
40d4a7:	75 12                	jne    0x40d4bb
40d4a9:	8d 42 02             	lea    0x2(%edx),%eax
40d4ac:	c7 41 2c 0a 00 00 00 	movl   $0xa,0x2c(%ecx)
40d4b3:	89 41 10             	mov    %eax,0x10(%ecx)
40d4b6:	e9 8e 00 00 00       	jmp    0x40d549
40d4bb:	3c 36                	cmp    $0x36,%al
40d4bd:	75 15                	jne    0x40d4d4
40d4bf:	80 7a 01 34          	cmpb   $0x34,0x1(%edx)
40d4c3:	75 0f                	jne    0x40d4d4
40d4c5:	8d 42 02             	lea    0x2(%edx),%eax
40d4c8:	c7 41 2c 0b 00 00 00 	movl   $0xb,0x2c(%ecx)
40d4cf:	89 41 10             	mov    %eax,0x10(%ecx)
40d4d2:	eb 75                	jmp    0x40d549
40d4d4:	3c 64                	cmp    $0x64,%al
40d4d6:	74 14                	je     0x40d4ec
40d4d8:	3c 69                	cmp    $0x69,%al
40d4da:	74 10                	je     0x40d4ec
40d4dc:	3c 6f                	cmp    $0x6f,%al
40d4de:	74 0c                	je     0x40d4ec
40d4e0:	3c 75                	cmp    $0x75,%al
40d4e2:	74 08                	je     0x40d4ec
40d4e4:	3c 78                	cmp    $0x78,%al
40d4e6:	74 04                	je     0x40d4ec
40d4e8:	3c 58                	cmp    $0x58,%al
40d4ea:	75 5d                	jne    0x40d549
40d4ec:	c7 41 2c 09 00 00 00 	movl   $0x9,0x2c(%ecx)
40d4f3:	eb 54                	jmp    0x40d549
40d4f5:	c7 41 2c 05 00 00 00 	movl   $0x5,0x2c(%ecx)
40d4fc:	eb 4b                	jmp    0x40d549
40d4fe:	83 f8 6c             	cmp    $0x6c,%eax
40d501:	74 2a                	je     0x40d52d
40d503:	83 f8 74             	cmp    $0x74,%eax
40d506:	74 1c                	je     0x40d524
40d508:	83 f8 77             	cmp    $0x77,%eax
40d50b:	74 0e                	je     0x40d51b
40d50d:	83 f8 7a             	cmp    $0x7a,%eax
40d510:	75 37                	jne    0x40d549
40d512:	c7 41 2c 06 00 00 00 	movl   $0x6,0x2c(%ecx)
40d519:	eb 2e                	jmp    0x40d549
40d51b:	c7 41 2c 0c 00 00 00 	movl   $0xc,0x2c(%ecx)
40d522:	eb 25                	jmp    0x40d549
40d524:	c7 41 2c 07 00 00 00 	movl   $0x7,0x2c(%ecx)
40d52b:	eb 1c                	jmp    0x40d549
40d52d:	8b 41 10             	mov    0x10(%ecx),%eax
40d530:	80 38 6c             	cmpb   $0x6c,(%eax)
40d533:	75 0d                	jne    0x40d542
40d535:	40                   	inc    %eax
40d536:	c7 41 2c 04 00 00 00 	movl   $0x4,0x2c(%ecx)
40d53d:	89 41 10             	mov    %eax,0x10(%ecx)
40d540:	eb 07                	jmp    0x40d549
40d542:	c7 41 2c 03 00 00 00 	movl   $0x3,0x2c(%ecx)
40d549:	b0 01                	mov    $0x1,%al
40d54b:	c3                   	ret
40d54c:	0f b7 41 32          	movzwl 0x32(%ecx),%eax
40d550:	83 f8 46             	cmp    $0x46,%eax
40d553:	75 1a                	jne    0x40d56f
40d555:	8b 01                	mov    (%ecx),%eax
40d557:	83 e0 08             	and    $0x8,%eax
40d55a:	83 c8 00             	or     $0x0,%eax
40d55d:	0f 85 62 01 00 00    	jne    0x40d6c5
40d563:	c7 41 1c 07 00 00 00 	movl   $0x7,0x1c(%ecx)
40d56a:	e9 b7 05 00 00       	jmp    0x40db26
40d56f:	83 f8 4e             	cmp    $0x4e,%eax
40d572:	75 26                	jne    0x40d59a
40d574:	8b 01                	mov    (%ecx),%eax
40d576:	6a 08                	push   $0x8
40d578:	5a                   	pop    %edx
40d579:	23 c2                	and    %edx,%eax
40d57b:	83 c8 00             	or     $0x0,%eax
40d57e:	0f 85 41 01 00 00    	jne    0x40d6c5
40d584:	89 51 1c             	mov    %edx,0x1c(%ecx)
40d587:	e8 df 74 00 00       	call   0x414a6b
40d58c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d592:	e8 4b e7 ff ff       	call   0x40bce2
40d597:	32 c0                	xor    %al,%al
40d599:	c3                   	ret
40d59a:	83 79 2c 00          	cmpl   $0x0,0x2c(%ecx)
40d59e:	75 e7                	jne    0x40d587
40d5a0:	83 f8 6a             	cmp    $0x6a,%eax
40d5a3:	0f 8f cd 00 00 00    	jg     0x40d676
40d5a9:	0f 84 be 00 00 00    	je     0x40d66d
40d5af:	83 f8 49             	cmp    $0x49,%eax
40d5b2:	74 53                	je     0x40d607
40d5b4:	83 f8 4c             	cmp    $0x4c,%eax
40d5b7:	74 42                	je     0x40d5fb
40d5b9:	83 f8 54             	cmp    $0x54,%eax
40d5bc:	74 31                	je     0x40d5ef
40d5be:	6a 68                	push   $0x68
40d5c0:	5a                   	pop    %edx
40d5c1:	3b c2                	cmp    %edx,%eax
40d5c3:	0f 85 fc 00 00 00    	jne    0x40d6c5
40d5c9:	8b 41 10             	mov    0x10(%ecx),%eax
40d5cc:	66 39 10             	cmp    %dx,(%eax)
40d5cf:	75 12                	jne    0x40d5e3
40d5d1:	83 c0 02             	add    $0x2,%eax
40d5d4:	c7 41 2c 01 00 00 00 	movl   $0x1,0x2c(%ecx)
40d5db:	89 41 10             	mov    %eax,0x10(%ecx)
40d5de:	e9 e2 00 00 00       	jmp    0x40d6c5
40d5e3:	c7 41 2c 02 00 00 00 	movl   $0x2,0x2c(%ecx)
40d5ea:	e9 d6 00 00 00       	jmp    0x40d6c5
40d5ef:	c7 41 2c 0d 00 00 00 	movl   $0xd,0x2c(%ecx)
40d5f6:	e9 ca 00 00 00       	jmp    0x40d6c5
40d5fb:	c7 41 2c 08 00 00 00 	movl   $0x8,0x2c(%ecx)
40d602:	e9 be 00 00 00       	jmp    0x40d6c5
40d607:	8b 51 10             	mov    0x10(%ecx),%edx
40d60a:	0f b7 02             	movzwl (%edx),%eax
40d60d:	83 f8 33             	cmp    $0x33,%eax
40d610:	75 19                	jne    0x40d62b
40d612:	66 83 7a 02 32       	cmpw   $0x32,0x2(%edx)
40d617:	75 12                	jne    0x40d62b
40d619:	8d 42 04             	lea    0x4(%edx),%eax