406377:	8b 11                	mov    (%ecx),%edx
406379:	8d 42 01             	lea    0x1(%edx),%eax
40637c:	89 01                	mov    %eax,(%ecx)
40637e:	0f b6 02             	movzbl (%edx),%eax
406381:	e9 94 01 00 00       	jmp    0x40651a
406386:	33 db                	xor    %ebx,%ebx
406388:	39 5f 4c             	cmp    %ebx,0x4c(%edi)
40638b:	75 08                	jne    0x406395
40638d:	83 c8 ff             	or     $0xffffffff,%eax
406390:	e9 85 01 00 00       	jmp    0x40651a
406395:	8b cf                	mov    %edi,%ecx
406397:	e8 41 fa ff ff       	call   0x405ddd
40639c:	8b 47 4c             	mov    0x4c(%edi),%eax
40639f:	39 5f 38             	cmp    %ebx,0x38(%edi)
4063a2:	75 19                	jne    0x4063bd
4063a4:	50                   	push   %eax
4063a5:	8d 45 d6             	lea    -0x2a(%ebp),%eax
4063a8:	50                   	push   %eax
4063a9:	e8 7a f2 ff ff       	call   0x405628
4063ae:	59                   	pop    %ecx
4063af:	59                   	pop    %ecx
4063b0:	84 c0                	test   %al,%al
4063b2:	74 d9                	je     0x40638d
4063b4:	0f b6 45 d6          	movzbl -0x2a(%ebp),%eax
4063b8:	e9 5d 01 00 00       	jmp    0x40651a
4063bd:	89 5d d8             	mov    %ebx,-0x28(%ebp)
4063c0:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4063c3:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
4063ca:	88 5d d8             	mov    %bl,-0x28(%ebp)
4063cd:	50                   	push   %eax
4063ce:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4063d5:	e8 3e 72 00 00       	call   0x40d618
4063da:	83 cb ff             	or     $0xffffffff,%ebx
4063dd:	e9 a9 00 00 00       	jmp    0x40648b
4063e2:	50                   	push   %eax
4063e3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4063e6:	e8 06 fd ff ff       	call   0x4060f1
4063eb:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4063ef:	8b 77 38             	mov    0x38(%edi),%esi
4063f2:	8b 55 d8             	mov    -0x28(%ebp),%edx
4063f5:	1a c9                	sbb    %cl,%cl
4063f7:	fe c1                	inc    %cl
4063f9:	89 75 c8             	mov    %esi,-0x38(%ebp)
4063fc:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
406400:	72 0d                	jb     0x40640f
406402:	8b 75 e8             	mov    -0x18(%ebp),%esi
406405:	03 f2                	add    %edx,%esi
406407:	89 75 d0             	mov    %esi,-0x30(%ebp)
40640a:	8b 75 c8             	mov    -0x38(%ebp),%esi
40640d:	eb 17                	jmp    0x406426
40640f:	8b 45 e8             	mov    -0x18(%ebp),%eax
406412:	8d 75 d8             	lea    -0x28(%ebp),%esi
406415:	03 c6                	add    %esi,%eax
406417:	89 45 d0             	mov    %eax,-0x30(%ebp)
40641a:	8b c6                	mov    %esi,%eax
40641c:	8b 75 c8             	mov    -0x38(%ebp),%esi
40641f:	89 45 cc             	mov    %eax,-0x34(%ebp)
406422:	84 c9                	test   %cl,%cl
406424:	74 03                	je     0x406429
406426:	89 55 cc             	mov    %edx,-0x34(%ebp)
406429:	8b 06                	mov    (%esi),%eax
40642b:	8b 70 18             	mov    0x18(%eax),%esi
40642e:	8d 45 c0             	lea    -0x40(%ebp),%eax
406431:	50                   	push   %eax
406432:	8d 45 d8             	lea    -0x28(%ebp),%eax
406435:	8b ce                	mov    %esi,%ecx
406437:	50                   	push   %eax
406438:	8d 45 d7             	lea    -0x29(%ebp),%eax
40643b:	50                   	push   %eax
40643c:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40643f:	50                   	push   %eax
406440:	ff 75 d0             	push   -0x30(%ebp)
406443:	8d 47 40             	lea    0x40(%edi),%eax
406446:	ff 75 cc             	push   -0x34(%ebp)
406449:	50                   	push   %eax
40644a:	ff 15 54 41 42 00    	call   *0x424154
406450:	8b 4d c8             	mov    -0x38(%ebp),%ecx
406453:	ff d6                	call   *%esi
406455:	83 e8 00             	sub    $0x0,%eax
406458:	74 05                	je     0x40645f
40645a:	83 e8 01             	sub    $0x1,%eax
40645d:	75 37                	jne    0x406496
40645f:	8d 45 d7             	lea    -0x29(%ebp),%eax
406462:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406465:	39 45 c0             	cmp    %eax,-0x40(%ebp)
406468:	75 43                	jne    0x4064ad
40646a:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
40646e:	72 03                	jb     0x406473
406470:	8b 4d d8             	mov    -0x28(%ebp),%ecx
406473:	8b 45 c4             	mov    -0x3c(%ebp),%eax
406476:	2b c1                	sub    %ecx,%eax
406478:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40647b:	50                   	push   %eax
40647c:	6a 00                	push   $0x0
40647e:	e8 4f f7 ff ff       	call   0x405bd2
406483:	ff 77 4c             	push   0x4c(%edi)
406486:	e8 8d 71 00 00       	call   0x40d618
40648b:	59                   	pop    %ecx
40648c:	3b c3                	cmp    %ebx,%eax
40648e:	0f 85 4e ff ff ff    	jne    0x4063e2
406494:	eb 4b                	jmp    0x4064e1
406496:	48                   	dec    %eax
406497:	83 e8 01             	sub    $0x1,%eax
40649a:	75 45                	jne    0x4064e1
40649c:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4064a0:	8d 45 d8             	lea    -0x28(%ebp),%eax
4064a3:	72 03                	jb     0x4064a8
4064a5:	8b 45 d8             	mov    -0x28(%ebp),%eax
4064a8:	0f be 18             	movsbl (%eax),%ebx
4064ab:	eb 34                	jmp    0x4064e1
4064ad:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4064b1:	72 03                	jb     0x4064b6
4064b3:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4064b6:	8b 75 e8             	mov    -0x18(%ebp),%esi
4064b9:	8b 45 c4             	mov    -0x3c(%ebp),%eax
4064bc:	2b f0                	sub    %eax,%esi
4064be:	03 f1                	add    %ecx,%esi
4064c0:	85 f6                	test   %esi,%esi
4064c2:	7e 19                	jle    0x4064dd
4064c4:	ff 77 4c             	push   0x4c(%edi)
4064c7:	4e                   	dec    %esi
4064c8:	0f be 04 06          	movsbl (%esi,%eax,1),%eax
4064cc:	50                   	push   %eax
4064cd:	e8 38 7f 00 00       	call   0x40e40a
4064d2:	59                   	pop    %ecx
4064d3:	59                   	pop    %ecx
4064d4:	85 f6                	test   %esi,%esi
4064d6:	7e 05                	jle    0x4064dd
4064d8:	8b 45 c4             	mov    -0x3c(%ebp),%eax
4064db:	eb e7                	jmp    0x4064c4
4064dd:	0f b6 5d d7          	movzbl -0x29(%ebp),%ebx
4064e1:	8b 45 ec             	mov    -0x14(%ebp),%eax
4064e4:	83 f8 10             	cmp    $0x10,%eax
4064e7:	72 2f                	jb     0x406518
4064e9:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4064ec:	40                   	inc    %eax
4064ed:	89 45 cc             	mov    %eax,-0x34(%ebp)
4064f0:	89 4d d0             	mov    %ecx,-0x30(%ebp)
4064f3:	3d 00 10 00 00       	cmp    $0x1000,%eax
4064f8:	72 15                	jb     0x40650f
4064fa:	8d 45 cc             	lea    -0x34(%ebp),%eax
4064fd:	50                   	push   %eax
4064fe:	8d 45 d0             	lea    -0x30(%ebp),%eax
406501:	50                   	push   %eax
406502:	e8 79 ae ff ff       	call   0x401380
406507:	8b 45 cc             	mov    -0x34(%ebp),%eax
40650a:	59                   	pop    %ecx
40650b:	59                   	pop    %ecx
40650c:	8b 4d d0             	mov    -0x30(%ebp),%ecx
40650f:	50                   	push   %eax
406510:	51                   	push   %ecx
406511:	e8 36 11 00 00       	call   0x40764c
406516:	59                   	pop    %ecx
406517:	59                   	pop    %ecx
406518:	8b c3                	mov    %ebx,%eax
40651a:	e8 0e 16 00 00       	call   0x407b2d
40651f:	c3                   	ret
406520:	56                   	push   %esi
406521:	57                   	push   %edi
406522:	8b f9                	mov    %ecx,%edi
406524:	8b 07                	mov    (%edi),%eax
406526:	8b 70 18             	mov    0x18(%eax),%esi
406529:	8b ce                	mov    %esi,%ecx
40652b:	ff 15 54 41 42 00    	call   *0x424154
406531:	8b cf                	mov    %edi,%ecx
406533:	ff d6                	call   *%esi
406535:	83 ca ff             	or     $0xffffffff,%edx
406538:	3b c2                	cmp    %edx,%eax
40653a:	74 12                	je     0x40654e
40653c:	8b 47 2c             	mov    0x2c(%edi),%eax
40653f:	ff 08                	decl   (%eax)
406541:	8b 4f 1c             	mov    0x1c(%edi),%ecx
406544:	8b 11                	mov    (%ecx),%edx
406546:	8d 42 01             	lea    0x1(%edx),%eax
406549:	89 01                	mov    %eax,(%ecx)
40654b:	0f b6 12             	movzbl (%edx),%edx
40654e:	5f                   	pop    %edi
40654f:	8b c2                	mov    %edx,%eax
406551:	5e                   	pop    %esi
406552:	c3                   	ret
406553:	57                   	push   %edi
406554:	8b f9                	mov    %ecx,%edi
406556:	8b 47 1c             	mov    0x1c(%edi),%eax
406559:	8b 10                	mov    (%eax),%edx
40655b:	85 d2                	test   %edx,%edx
40655d:	74 10                	je     0x40656f
40655f:	8b 47 2c             	mov    0x2c(%edi),%eax
406562:	8b 00                	mov    (%eax),%eax
406564:	03 c2                	add    %edx,%eax
406566:	3b d0                	cmp    %eax,%edx
406568:	73 05                	jae    0x40656f
40656a:	0f b6 02             	movzbl (%edx),%eax
40656d:	5f                   	pop    %edi
40656e:	c3                   	ret
40656f:	8b 07                	mov    (%edi),%eax
406571:	53                   	push   %ebx
406572:	56                   	push   %esi
406573:	8b 70 1c             	mov    0x1c(%eax),%esi
406576:	8b ce                	mov    %esi,%ecx
406578:	ff 15 54 41 42 00    	call   *0x424154
40657e:	8b cf                	mov    %edi,%ecx
406580:	ff d6                	call   *%esi
406582:	8b d8                	mov    %eax,%ebx
406584:	83 c8 ff             	or     $0xffffffff,%eax
406587:	3b d8                	cmp    %eax,%ebx
406589:	74 14                	je     0x40659f
40658b:	8b 07                	mov    (%edi),%eax
40658d:	53                   	push   %ebx
40658e:	8b 70 10             	mov    0x10(%eax),%esi
406591:	8b ce                	mov    %esi,%ecx
406593:	ff 15 54 41 42 00    	call   *0x424154
406599:	8b cf                	mov    %edi,%ecx
40659b:	ff d6                	call   *%esi
40659d:	8b c3                	mov    %ebx,%eax
40659f:	5e                   	pop    %esi
4065a0:	5b                   	pop    %ebx
4065a1:	5f                   	pop    %edi
4065a2:	c3                   	ret
4065a3:	83 c8 ff             	or     $0xffffffff,%eax
4065a6:	c3                   	ret
4065a7:	6a 08                	push   $0x8
4065a9:	b8 34 2f 42 00       	mov    $0x422f34,%eax
4065ae:	e8 89 15 00 00       	call   0x407b3c
4065b3:	ff 71 30             	push   0x30(%ecx)
4065b6:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4065b9:	e8 f2 b5 ff ff       	call   0x401bb0
4065be:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4065c2:	8d 45 ec             	lea    -0x14(%ebp),%eax
4065c5:	50                   	push   %eax
4065c6:	e8 e5 e1 ff ff       	call   0x4047b0
4065cb:	8b f8                	mov    %eax,%edi
4065cd:	59                   	pop    %ecx
4065ce:	ff 75 08             	push   0x8(%ebp)
4065d1:	8b 0f                	mov    (%edi),%ecx
4065d3:	8b 71 20             	mov    0x20(%ecx),%esi
4065d6:	8b ce                	mov    %esi,%ecx
4065d8:	ff 15 54 41 42 00    	call   *0x424154
4065de:	8b cf                	mov    %edi,%ecx
4065e0:	ff d6                	call   *%esi
4065e2:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4065e5:	8a d8                	mov    %al,%bl
4065e7:	e8 e4 b5 ff ff       	call   0x401bd0
4065ec:	8a c3                	mov    %bl,%al
4065ee:	e8 26 15 00 00       	call   0x407b19
4065f3:	c2 04 00             	ret    $0x4
4065f6:	55                   	push   %ebp
4065f7:	8b ec                	mov    %esp,%ebp
4065f9:	51                   	push   %ecx
4065fa:	8b 45 10             	mov    0x10(%ebp),%eax
4065fd:	56                   	push   %esi
4065fe:	8b 75 0c             	mov    0xc(%ebp),%esi
406601:	57                   	push   %edi
406602:	8b f9                	mov    %ecx,%edi
406604:	85 c0                	test   %eax,%eax
406606:	7f 0f                	jg     0x406617
406608:	7c 04                	jl     0x40660e
40660a:	85 f6                	test   %esi,%esi
40660c:	75 09                	jne    0x406617
40660e:	33 c0                	xor    %eax,%eax
406610:	33 d2                	xor    %edx,%edx
406612:	e9 c5 00 00 00       	jmp    0x4066dc
406617:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
40661b:	74 0f                	je     0x40662c
40661d:	50                   	push   %eax
40661e:	56                   	push   %esi
40661f:	ff 75 08             	push   0x8(%ebp)
406622:	e8 bf 00 00 00       	call   0x4066e6
406627:	e9 b0 00 00 00       	jmp    0x4066dc
40662c:	8b 47 1c             	mov    0x1c(%edi),%eax
40662f:	53                   	push   %ebx
406630:	8b de                	mov    %esi,%ebx
406632:	8b 08                	mov    (%eax),%ecx
406634:	85 c9                	test   %ecx,%ecx
406636:	74 3b                	je     0x406673
406638:	8b 47 2c             	mov    0x2c(%edi),%eax
40663b:	8b 00                	mov    (%eax),%eax
40663d:	89 45 fc             	mov    %eax,-0x4(%ebp)
406640:	85 c0                	test   %eax,%eax
406642:	74 2f                	je     0x406673
406644:	3b c6                	cmp    %esi,%eax
406646:	72 05                	jb     0x40664d
406648:	8b c6                	mov    %esi,%eax
40664a:	89 75 fc             	mov    %esi,-0x4(%ebp)
40664d:	50                   	push   %eax
40664e:	51                   	push   %ecx
40664f:	ff 75 08             	push   0x8(%ebp)
406652:	e8 19 23 00 00       	call   0x408970
406657:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40665a:	83 c4 0c             	add    $0xc,%esp
40665d:	8b 45 08             	mov    0x8(%ebp),%eax
406660:	2b d9                	sub    %ecx,%ebx
406662:	03 c1                	add    %ecx,%eax
406664:	89 45 fc             	mov    %eax,-0x4(%ebp)
406667:	8b 47 2c             	mov    0x2c(%edi),%eax
40666a:	29 08                	sub    %ecx,(%eax)
40666c:	8b 47 1c             	mov    0x1c(%edi),%eax
40666f:	01 08                	add    %ecx,(%eax)
406671:	eb 06                	jmp    0x406679
406673:	8b 45 08             	mov    0x8(%ebp),%eax
406676:	89 45 fc             	mov    %eax,-0x4(%ebp)
406679:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
40667d:	8b cb                	mov    %ebx,%ecx
40667f:	74 50                	je     0x4066d1
406681:	8b cf                	mov    %edi,%ecx
406683:	e8 55 f7 ff ff       	call   0x405ddd
406688:	8b 55 fc             	mov    -0x4(%ebp),%edx
40668b:	8b cb                	mov    %ebx,%ecx
40668d:	eb 22                	jmp    0x4066b1
40668f:	ff 77 4c             	push   0x4c(%edi)
406692:	50                   	push   %eax
406693:	6a 01                	push   $0x1
406695:	52                   	push   %edx
406696:	e8 f9 73 00 00       	call   0x40da94
40669b:	8b 55 fc             	mov    -0x4(%ebp),%edx
40669e:	2b d8                	sub    %eax,%ebx
4066a0:	03 d0                	add    %eax,%edx
4066a2:	83 c4 10             	add    $0x10,%esp
4066a5:	89 55 fc             	mov    %edx,-0x4(%ebp)
4066a8:	8b cb                	mov    %ebx,%ecx
4066aa:	3d ff 0f 00 00       	cmp    $0xfff,%eax
4066af:	75 31                	jne    0x4066e2
4066b1:	b8 ff 0f 00 00       	mov    $0xfff,%eax
4066b6:	3b d8                	cmp    %eax,%ebx
4066b8:	77 d5                	ja     0x40668f
4066ba:	85 c9                	test   %ecx,%ecx
4066bc:	74 13                	je     0x4066d1
4066be:	ff 77 4c             	push   0x4c(%edi)
4066c1:	53                   	push   %ebx
4066c2:	6a 01                	push   $0x1
4066c4:	52                   	push   %edx
4066c5:	e8 ca 73 00 00       	call   0x40da94
4066ca:	8b cb                	mov    %ebx,%ecx
4066cc:	83 c4 10             	add    $0x10,%esp
4066cf:	2b c8                	sub    %eax,%ecx
4066d1:	2b f1                	sub    %ecx,%esi
4066d3:	8b 55 10             	mov    0x10(%ebp),%edx
4066d6:	8b c6                	mov    %esi,%eax
4066d8:	83 da 00             	sbb    $0x0,%edx
4066db:	5b                   	pop    %ebx
4066dc:	5f                   	pop    %edi
4066dd:	5e                   	pop    %esi
4066de:	c9                   	leave
4066df:	c2 0c 00             	ret    $0xc
4066e2:	2b f3                	sub    %ebx,%esi
4066e4:	eb ed                	jmp    0x4066d3
4066e6:	55                   	push   %ebp
4066e7:	8b ec                	mov    %esp,%ebp
4066e9:	83 ec 14             	sub    $0x14,%esp
4066ec:	53                   	push   %ebx
4066ed:	8b 5d 10             	mov    0x10(%ebp),%ebx