40d245:	ff 75 18             	push   0x18(%ebp)
40d248:	ff 75 14             	push   0x14(%ebp)
40d24b:	ff 75 10             	push   0x10(%ebp)
40d24e:	57                   	push   %edi
40d24f:	53                   	push   %ebx
40d250:	e8 b9 02 00 00       	call   0x40d50e
40d255:	83 c4 28             	add    $0x28,%esp
40d258:	85 c0                	test   %eax,%eax
40d25a:	74 08                	je     0x40d264
40d25c:	c6 07 00             	movb   $0x0,(%edi)
40d25f:	e9 a5 02 00 00       	jmp    0x40d509
40d264:	6a 65                	push   $0x65
40d266:	57                   	push   %edi
40d267:	e8 34 ab 00 00       	call   0x417da0
40d26c:	59                   	pop    %ecx
40d26d:	59                   	pop    %ecx
40d26e:	85 c0                	test   %eax,%eax
40d270:	0f 84 91 02 00 00    	je     0x40d507
40d276:	8a 4d 20             	mov    0x20(%ebp),%cl
40d279:	80 f1 01             	xor    $0x1,%cl
40d27c:	c0 e1 05             	shl    $0x5,%cl
40d27f:	80 c1 50             	add    $0x50,%cl
40d282:	88 08                	mov    %cl,(%eax)
40d284:	c6 40 03 00          	movb   $0x0,0x3(%eax)
40d288:	e9 7a 02 00 00       	jmp    0x40d507
40d28d:	39 53 04             	cmp    %edx,0x4(%ebx)
40d290:	7f 0a                	jg     0x40d29c
40d292:	7c 04                	jl     0x40d298
40d294:	39 13                	cmp    %edx,(%ebx)
40d296:	73 04                	jae    0x40d29c
40d298:	c6 07 2d             	movb   $0x2d,(%edi)
40d29b:	47                   	inc    %edi
40d29c:	8a 45 20             	mov    0x20(%ebp),%al
40d29f:	8d 57 01             	lea    0x1(%edi),%edx
40d2a2:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d2a5:	34 01                	xor    $0x1,%al
40d2a7:	88 45 ff             	mov    %al,-0x1(%ebp)
40d2aa:	81 e1 00 00 f0 7f    	and    $0x7ff00000,%ecx
40d2b0:	0f b6 c0             	movzbl %al,%eax
40d2b3:	c1 e0 05             	shl    $0x5,%eax
40d2b6:	83 c0 07             	add    $0x7,%eax
40d2b9:	c7 45 f0 ff 03 00 00 	movl   $0x3ff,-0x10(%ebp)
40d2c0:	89 45 d8             	mov    %eax,-0x28(%ebp)
40d2c3:	33 c0                	xor    %eax,%eax
40d2c5:	0b c1                	or     %ecx,%eax
40d2c7:	89 55 f4             	mov    %edx,-0xc(%ebp)
40d2ca:	6a 30                	push   $0x30
40d2cc:	58                   	pop    %eax
40d2cd:	75 1e                	jne    0x40d2ed
40d2cf:	88 07                	mov    %al,(%edi)
40d2d1:	8b 43 04             	mov    0x4(%ebx),%eax
40d2d4:	8b 0b                	mov    (%ebx),%ecx
40d2d6:	25 ff ff 0f 00       	and    $0xfffff,%eax
40d2db:	0b c8                	or     %eax,%ecx
40d2dd:	75 05                	jne    0x40d2e4
40d2df:	21 4d f0             	and    %ecx,-0x10(%ebp)
40d2e2:	eb 0c                	jmp    0x40d2f0
40d2e4:	c7 45 f0 fe 03 00 00 	movl   $0x3fe,-0x10(%ebp)
40d2eb:	eb 03                	jmp    0x40d2f0
40d2ed:	c6 07 31             	movb   $0x31,(%edi)
40d2f0:	8d 7a 01             	lea    0x1(%edx),%edi
40d2f3:	85 f6                	test   %esi,%esi
40d2f5:	75 04                	jne    0x40d2fb
40d2f7:	32 c0                	xor    %al,%al
40d2f9:	eb 23                	jmp    0x40d31e
40d2fb:	8b 45 2c             	mov    0x2c(%ebp),%eax
40d2fe:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
40d302:	75 0d                	jne    0x40d311
40d304:	8b c8                	mov    %eax,%ecx
40d306:	e8 95 bb ff ff       	call   0x408ea0
40d30b:	8b 45 2c             	mov    0x2c(%ebp),%eax
40d30e:	8b 55 f4             	mov    -0xc(%ebp),%edx
40d311:	8b 40 0c             	mov    0xc(%eax),%eax
40d314:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40d31a:	8b 00                	mov    (%eax),%eax
40d31c:	8a 00                	mov    (%eax),%al
40d31e:	88 02                	mov    %al,(%edx)
40d320:	8b 43 04             	mov    0x4(%ebx),%eax
40d323:	25 ff ff 0f 00       	and    $0xfffff,%eax
40d328:	89 45 e0             	mov    %eax,-0x20(%ebp)
40d32b:	77 09                	ja     0x40d336
40d32d:	83 3b 00             	cmpl   $0x0,(%ebx)
40d330:	0f 86 bf 00 00 00    	jbe    0x40d3f5
40d336:	6a 30                	push   $0x30
40d338:	58                   	pop    %eax
40d339:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d33c:	b9 00 00 0f 00       	mov    $0xf0000,%ecx
40d341:	33 c0                	xor    %eax,%eax
40d343:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d346:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d349:	8b 55 f8             	mov    -0x8(%ebp),%edx
40d34c:	0f b7 d2             	movzwl %dx,%edx
40d34f:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40d352:	8b d7                	mov    %edi,%edx
40d354:	89 7d e0             	mov    %edi,-0x20(%ebp)
40d357:	85 f6                	test   %esi,%esi
40d359:	7e 50                	jle    0x40d3ab
40d35b:	8b 53 04             	mov    0x4(%ebx),%edx
40d35e:	23 03                	and    (%ebx),%eax
40d360:	23 d1                	and    %ecx,%edx
40d362:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40d365:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40d36b:	0f b7 c9             	movzwl %cx,%ecx
40d36e:	e8 4d a9 00 00       	call   0x417cc0
40d373:	6a 30                	push   $0x30
40d375:	59                   	pop    %ecx
40d376:	66 03 c1             	add    %cx,%ax
40d379:	0f b7 c0             	movzwl %ax,%eax
40d37c:	83 f8 39             	cmp    $0x39,%eax
40d37f:	76 03                	jbe    0x40d384
40d381:	03 45 d8             	add    -0x28(%ebp),%eax
40d384:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40d387:	8b 55 f8             	mov    -0x8(%ebp),%edx
40d38a:	88 07                	mov    %al,(%edi)
40d38c:	83 ea 04             	sub    $0x4,%edx
40d38f:	8b 45 ec             	mov    -0x14(%ebp),%eax
40d392:	47                   	inc    %edi
40d393:	0f ac c8 04          	shrd   $0x4,%ecx,%eax
40d397:	89 55 f8             	mov    %edx,-0x8(%ebp)
40d39a:	c1 e9 04             	shr    $0x4,%ecx
40d39d:	4e                   	dec    %esi
40d39e:	89 45 ec             	mov    %eax,-0x14(%ebp)
40d3a1:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d3a4:	66 85 d2             	test   %dx,%dx
40d3a7:	79 a0                	jns    0x40d349
40d3a9:	eb 4a                	jmp    0x40d3f5
40d3ab:	ff 75 28             	push   0x28(%ebp)
40d3ae:	8b fa                	mov    %edx,%edi
40d3b0:	ff 75 e4             	push   -0x1c(%ebp)
40d3b3:	51                   	push   %ecx
40d3b4:	50                   	push   %eax
40d3b5:	53                   	push   %ebx
40d3b6:	e8 66 06 00 00       	call   0x40da21
40d3bb:	83 c4 14             	add    $0x14,%esp
40d3be:	84 c0                	test   %al,%al
40d3c0:	74 47                	je     0x40d409
40d3c2:	8b 7d e0             	mov    -0x20(%ebp),%edi
40d3c5:	6a 30                	push   $0x30
40d3c7:	5b                   	pop    %ebx
40d3c8:	8d 47 ff             	lea    -0x1(%edi),%eax
40d3cb:	8a 08                	mov    (%eax),%cl
40d3cd:	80 f9 66             	cmp    $0x66,%cl
40d3d0:	74 05                	je     0x40d3d7
40d3d2:	80 f9 46             	cmp    $0x46,%cl
40d3d5:	75 05                	jne    0x40d3dc
40d3d7:	88 18                	mov    %bl,(%eax)
40d3d9:	48                   	dec    %eax
40d3da:	eb ef                	jmp    0x40d3cb
40d3dc:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d3df:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40d3e2:	74 0e                	je     0x40d3f2
40d3e4:	80 f9 39             	cmp    $0x39,%cl
40d3e7:	75 03                	jne    0x40d3ec
40d3e9:	02 4d d8             	add    -0x28(%ebp),%cl
40d3ec:	fe c1                	inc    %cl
40d3ee:	88 08                	mov    %cl,(%eax)
40d3f0:	eb 03                	jmp    0x40d3f5
40d3f2:	fe 40 ff             	incb   -0x1(%eax)
40d3f5:	85 f6                	test   %esi,%esi
40d3f7:	7e 10                	jle    0x40d409
40d3f9:	56                   	push   %esi
40d3fa:	6a 30                	push   $0x30
40d3fc:	58                   	pop    %eax
40d3fd:	50                   	push   %eax
40d3fe:	57                   	push   %edi
40d3ff:	e8 6c 76 ff ff       	call   0x404a70
40d404:	83 c4 0c             	add    $0xc,%esp
40d407:	03 fe                	add    %esi,%edi
40d409:	8b 45 f4             	mov    -0xc(%ebp),%eax
40d40c:	80 38 00             	cmpb   $0x0,(%eax)
40d40f:	75 02                	jne    0x40d413
40d411:	8b f8                	mov    %eax,%edi
40d413:	8a 45 ff             	mov    -0x1(%ebp),%al
40d416:	b1 34                	mov    $0x34,%cl
40d418:	c0 e0 05             	shl    $0x5,%al
40d41b:	04 50                	add    $0x50,%al
40d41d:	88 07                	mov    %al,(%edi)
40d41f:	8b 03                	mov    (%ebx),%eax
40d421:	8b 53 04             	mov    0x4(%ebx),%edx
40d424:	e8 97 a8 00 00       	call   0x417cc0
40d429:	8b d8                	mov    %eax,%ebx
40d42b:	33 f6                	xor    %esi,%esi
40d42d:	81 e3 ff 07 00 00    	and    $0x7ff,%ebx
40d433:	8d 47 02             	lea    0x2(%edi),%eax
40d436:	2b 5d f0             	sub    -0x10(%ebp),%ebx
40d439:	89 45 f0             	mov    %eax,-0x10(%ebp)
40d43c:	1b f6                	sbb    %esi,%esi
40d43e:	78 0a                	js     0x40d44a
40d440:	7f 04                	jg     0x40d446
40d442:	85 db                	test   %ebx,%ebx
40d444:	72 04                	jb     0x40d44a
40d446:	b1 2b                	mov    $0x2b,%cl
40d448:	eb 0a                	jmp    0x40d454
40d44a:	f7 db                	neg    %ebx
40d44c:	6a 2d                	push   $0x2d
40d44e:	83 d6 00             	adc    $0x0,%esi
40d451:	f7 de                	neg    %esi
40d453:	59                   	pop    %ecx
40d454:	88 4f 01             	mov    %cl,0x1(%edi)
40d457:	8b f8                	mov    %eax,%edi
40d459:	6a 30                	push   $0x30
40d45b:	59                   	pop    %ecx
40d45c:	88 08                	mov    %cl,(%eax)
40d45e:	85 f6                	test   %esi,%esi
40d460:	0f 8c 96 00 00 00    	jl     0x40d4fc
40d466:	b8 e8 03 00 00       	mov    $0x3e8,%eax
40d46b:	7f 04                	jg     0x40d471
40d46d:	3b d8                	cmp    %eax,%ebx
40d46f:	72 2e                	jb     0x40d49f
40d471:	6a 00                	push   $0x0
40d473:	50                   	push   %eax
40d474:	56                   	push   %esi
40d475:	53                   	push   %ebx
40d476:	e8 b5 a6 00 00       	call   0x417b30
40d47b:	6a 30                	push   $0x30
40d47d:	59                   	pop    %ecx
40d47e:	6a 00                	push   $0x0
40d480:	02 c1                	add    %cl,%al
40d482:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40d485:	68 e8 03 00 00       	push   $0x3e8
40d48a:	56                   	push   %esi
40d48b:	53                   	push   %ebx
40d48c:	88 01                	mov    %al,(%ecx)
40d48e:	8d 79 01             	lea    0x1(%ecx),%edi
40d491:	e8 4a a7 00 00       	call   0x417be0
40d496:	8b d8                	mov    %eax,%ebx
40d498:	8b f2                	mov    %edx,%esi
40d49a:	3b 7d f0             	cmp    -0x10(%ebp),%edi
40d49d:	75 0b                	jne    0x40d4aa
40d49f:	85 f6                	test   %esi,%esi
40d4a1:	7c 59                	jl     0x40d4fc
40d4a3:	7f 05                	jg     0x40d4aa
40d4a5:	83 fb 64             	cmp    $0x64,%ebx
40d4a8:	72 27                	jb     0x40d4d1
40d4aa:	6a 00                	push   $0x0
40d4ac:	6a 64                	push   $0x64
40d4ae:	56                   	push   %esi
40d4af:	53                   	push   %ebx
40d4b0:	e8 7b a6 00 00       	call   0x417b30
40d4b5:	6a 30                	push   $0x30
40d4b7:	59                   	pop    %ecx
40d4b8:	6a 00                	push   $0x0
40d4ba:	6a 64                	push   $0x64
40d4bc:	02 c1                	add    %cl,%al
40d4be:	56                   	push   %esi
40d4bf:	88 07                	mov    %al,(%edi)
40d4c1:	47                   	inc    %edi
40d4c2:	53                   	push   %ebx
40d4c3:	e8 18 a7 00 00       	call   0x417be0
40d4c8:	8b d8                	mov    %eax,%ebx
40d4ca:	8b f2                	mov    %edx,%esi
40d4cc:	3b 7d f0             	cmp    -0x10(%ebp),%edi
40d4cf:	75 0b                	jne    0x40d4dc
40d4d1:	85 f6                	test   %esi,%esi
40d4d3:	7c 27                	jl     0x40d4fc
40d4d5:	7f 05                	jg     0x40d4dc
40d4d7:	83 fb 0a             	cmp    $0xa,%ebx
40d4da:	72 20                	jb     0x40d4fc
40d4dc:	6a 00                	push   $0x0
40d4de:	6a 0a                	push   $0xa
40d4e0:	56                   	push   %esi
40d4e1:	53                   	push   %ebx
40d4e2:	e8 49 a6 00 00       	call   0x417b30
40d4e7:	6a 30                	push   $0x30
40d4e9:	59                   	pop    %ecx
40d4ea:	6a 00                	push   $0x0
40d4ec:	6a 0a                	push   $0xa
40d4ee:	02 c1                	add    %cl,%al
40d4f0:	56                   	push   %esi
40d4f1:	88 07                	mov    %al,(%edi)
40d4f3:	47                   	inc    %edi
40d4f4:	53                   	push   %ebx
40d4f5:	e8 e6 a6 00 00       	call   0x417be0
40d4fa:	8b d8                	mov    %eax,%ebx
40d4fc:	6a 30                	push   $0x30
40d4fe:	58                   	pop    %eax
40d4ff:	02 d8                	add    %al,%bl
40d501:	88 1f                	mov    %bl,(%edi)
40d503:	c6 47 01 00          	movb   $0x0,0x1(%edi)
40d507:	33 c0                	xor    %eax,%eax
40d509:	5b                   	pop    %ebx
40d50a:	5f                   	pop    %edi
40d50b:	5e                   	pop    %esi
40d50c:	c9                   	leave
40d50d:	c3                   	ret
40d50e:	8b ff                	mov    %edi,%edi
40d510:	55                   	push   %ebp
40d511:	8b ec                	mov    %esp,%ebp
40d513:	83 ec 0c             	sub    $0xc,%esp
40d516:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d519:	56                   	push   %esi
40d51a:	8b 75 1c             	mov    0x1c(%ebp),%esi
40d51d:	57                   	push   %edi
40d51e:	ff 75 18             	push   0x18(%ebp)
40d521:	ff 75 14             	push   0x14(%ebp)
40d524:	8d 7e 01             	lea    0x1(%esi),%edi
40d527:	50                   	push   %eax
40d528:	8b 45 08             	mov    0x8(%ebp),%eax
40d52b:	6a 01                	push   $0x1
40d52d:	57                   	push   %edi
40d52e:	ff 70 04             	push   0x4(%eax)
40d531:	ff 30                	push   (%eax)
40d533:	e8 03 5b 00 00       	call   0x41303b
40d538:	83 c9 ff             	or     $0xffffffff,%ecx
40d53b:	83 c4 1c             	add    $0x1c,%esp
40d53e:	8b d0                	mov    %eax,%edx
40d540:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40d543:	74 17                	je     0x40d55c
40d545:	8b 4d 10             	mov    0x10(%ebp),%ecx
40d548:	33 c0                	xor    %eax,%eax
40d54a:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40d54e:	0f 94 c0             	sete   %al
40d551:	2b c8                	sub    %eax,%ecx
40d553:	33 c0                	xor    %eax,%eax
40d555:	85 f6                	test   %esi,%esi
40d557:	0f 9f c0             	setg   %al
40d55a:	2b c8                	sub    %eax,%ecx
40d55c:	ff 75 2c             	push   0x2c(%ebp)
40d55f:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d562:	ff 75 28             	push   0x28(%ebp)
40d565:	52                   	push   %edx
40d566:	50                   	push   %eax
40d567:	57                   	push   %edi
40d568:	8b 7d 0c             	mov    0xc(%ebp),%edi
40d56b:	51                   	push   %ecx
40d56c:	33 c9                	xor    %ecx,%ecx
40d56e:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40d572:	0f 94 c1             	sete   %cl
40d575:	33 c0                	xor    %eax,%eax
40d577:	85 f6                	test   %esi,%esi
40d579:	0f 9f c0             	setg   %al
40d57c:	03 cf                	add    %edi,%ecx
40d57e:	03 c1                	add    %ecx,%eax
40d580:	50                   	push   %eax
40d581:	e8 09 55 00 00       	call   0x412a8f
40d586:	83 c4 1c             	add    $0x1c,%esp
40d589:	85 c0                	test   %eax,%eax
40d58b:	74 05                	je     0x40d592
40d58d:	c6 07 00             	movb   $0x0,(%edi)
40d590:	eb 1c                	jmp    0x40d5ae
40d592:	ff 75 2c             	push   0x2c(%ebp)
40d595:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d598:	6a 00                	push   $0x0
40d59a:	50                   	push   %eax
40d59b:	ff 75 24             	push   0x24(%ebp)
40d59e:	ff 75 20             	push   0x20(%ebp)
40d5a1:	56                   	push   %esi
40d5a2:	ff 75 10             	push   0x10(%ebp)
40d5a5:	57                   	push   %edi
40d5a6:	e8 07 00 00 00       	call   0x40d5b2