4585b1:	8b ff                	mov    %edi,%edi
4585b3:	55                   	push   %ebp
4585b4:	8b ec                	mov    %esp,%ebp
4585b6:	53                   	push   %ebx
4585b7:	56                   	push   %esi
4585b8:	8b f1                	mov    %ecx,%esi
4585ba:	57                   	push   %edi
4585bb:	8d 4e 40             	lea    0x40(%esi),%ecx
4585be:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
4585c4:	85 ff                	test   %edi,%edi
4585c6:	75 02                	jne    0x4585ca
4585c8:	8b f9                	mov    %ecx,%edi
4585ca:	e8 e3 d3 ff ff       	call   0x4559b2
4585cf:	8b 5d 08             	mov    0x8(%ebp),%ebx
4585d2:	8d 3c 47             	lea    (%edi,%eax,2),%edi
4585d5:	83 c7 fe             	add    $0xfffffffe,%edi
4585d8:	89 7e 34             	mov    %edi,0x34(%esi)
4585db:	8b 4e 28             	mov    0x28(%esi),%ecx
4585de:	85 c9                	test   %ecx,%ecx
4585e0:	7f 04                	jg     0x4585e6
4585e2:	85 db                	test   %ebx,%ebx
4585e4:	74 3e                	je     0x458624
4585e6:	8b c3                	mov    %ebx,%eax
4585e8:	33 d2                	xor    %edx,%edx
4585ea:	f7 75 0c             	divl   0xc(%ebp)
4585ed:	49                   	dec    %ecx
4585ee:	8b d8                	mov    %eax,%ebx
4585f0:	89 4e 28             	mov    %ecx,0x28(%esi)
4585f3:	8d 42 30             	lea    0x30(%edx),%eax
4585f6:	0f b7 c8             	movzwl %ax,%ecx
4585f9:	83 f9 39             	cmp    $0x39,%ecx
4585fc:	76 16                	jbe    0x458614
4585fe:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
458602:	0f 94 c0             	sete   %al
458605:	fe c8                	dec    %al
458607:	24 e0                	and    $0xe0,%al
458609:	04 61                	add    $0x61,%al
45860b:	2c 3a                	sub    $0x3a,%al
45860d:	02 c1                	add    %cl,%al
45860f:	66 98                	cbtw
458611:	0f b7 c8             	movzwl %ax,%ecx
458614:	8b 46 34             	mov    0x34(%esi),%eax
458617:	66 0f be c9          	movsbw %cl,%cx
45861b:	66 89 08             	mov    %cx,(%eax)
45861e:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
458622:	eb b7                	jmp    0x4585db
458624:	2b 7e 34             	sub    0x34(%esi),%edi
458627:	d1 ff                	sar    $1,%edi
458629:	89 7e 38             	mov    %edi,0x38(%esi)
45862c:	83 46 34 02          	addl   $0x2,0x34(%esi)
458630:	5f                   	pop    %edi
458631:	5e                   	pop    %esi
458632:	5b                   	pop    %ebx
458633:	5d                   	pop    %ebp
458634:	c2 0c 00             	ret    $0xc
458637:	8b ff                	mov    %edi,%edi
458639:	55                   	push   %ebp
45863a:	8b ec                	mov    %esp,%ebp
45863c:	53                   	push   %ebx
45863d:	56                   	push   %esi
45863e:	8b f1                	mov    %ecx,%esi
458640:	57                   	push   %edi
458641:	8d 4e 40             	lea    0x40(%esi),%ecx
458644:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
45864a:	85 ff                	test   %edi,%edi
45864c:	75 02                	jne    0x458650
45864e:	8b f9                	mov    %ecx,%edi
458650:	e8 5d d3 ff ff       	call   0x4559b2
458655:	8b 5d 08             	mov    0x8(%ebp),%ebx
458658:	8d 3c 47             	lea    (%edi,%eax,2),%edi
45865b:	83 c7 fe             	add    $0xfffffffe,%edi
45865e:	89 7e 34             	mov    %edi,0x34(%esi)
458661:	8b 4e 28             	mov    0x28(%esi),%ecx
458664:	85 c9                	test   %ecx,%ecx
458666:	7f 04                	jg     0x45866c
458668:	85 db                	test   %ebx,%ebx
45866a:	74 3e                	je     0x4586aa
45866c:	8b c3                	mov    %ebx,%eax
45866e:	33 d2                	xor    %edx,%edx
458670:	f7 75 0c             	divl   0xc(%ebp)
458673:	49                   	dec    %ecx
458674:	8b d8                	mov    %eax,%ebx
458676:	89 4e 28             	mov    %ecx,0x28(%esi)
458679:	8d 42 30             	lea    0x30(%edx),%eax
45867c:	0f b7 c8             	movzwl %ax,%ecx
45867f:	83 f9 39             	cmp    $0x39,%ecx
458682:	76 16                	jbe    0x45869a
458684:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
458688:	0f 94 c0             	sete   %al
45868b:	fe c8                	dec    %al
45868d:	24 e0                	and    $0xe0,%al
45868f:	04 61                	add    $0x61,%al
458691:	2c 3a                	sub    $0x3a,%al
458693:	02 c1                	add    %cl,%al
458695:	66 98                	cbtw
458697:	0f b7 c8             	movzwl %ax,%ecx
45869a:	8b 46 34             	mov    0x34(%esi),%eax
45869d:	66 0f be c9          	movsbw %cl,%cx
4586a1:	66 89 08             	mov    %cx,(%eax)
4586a4:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
4586a8:	eb b7                	jmp    0x458661
4586aa:	2b 7e 34             	sub    0x34(%esi),%edi
4586ad:	d1 ff                	sar    $1,%edi
4586af:	89 7e 38             	mov    %edi,0x38(%esi)
4586b2:	83 46 34 02          	addl   $0x2,0x34(%esi)
4586b6:	5f                   	pop    %edi
4586b7:	5e                   	pop    %esi
4586b8:	5b                   	pop    %ebx
4586b9:	5d                   	pop    %ebp
4586ba:	c2 0c 00             	ret    $0xc
4586bd:	8b ff                	mov    %edi,%edi
4586bf:	55                   	push   %ebp
4586c0:	8b ec                	mov    %esp,%ebp
4586c2:	53                   	push   %ebx
4586c3:	56                   	push   %esi
4586c4:	8b f1                	mov    %ecx,%esi
4586c6:	57                   	push   %edi
4586c7:	8d 4e 40             	lea    0x40(%esi),%ecx
4586ca:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
4586d0:	85 ff                	test   %edi,%edi
4586d2:	75 02                	jne    0x4586d6
4586d4:	8b f9                	mov    %ecx,%edi
4586d6:	e8 d7 d2 ff ff       	call   0x4559b2
4586db:	8b 5d 08             	mov    0x8(%ebp),%ebx
4586de:	8d 3c 47             	lea    (%edi,%eax,2),%edi
4586e1:	83 c7 fe             	add    $0xfffffffe,%edi
4586e4:	89 7e 34             	mov    %edi,0x34(%esi)
4586e7:	8b 4e 28             	mov    0x28(%esi),%ecx
4586ea:	85 c9                	test   %ecx,%ecx
4586ec:	7f 04                	jg     0x4586f2
4586ee:	85 db                	test   %ebx,%ebx
4586f0:	74 3e                	je     0x458730
4586f2:	8b c3                	mov    %ebx,%eax
4586f4:	33 d2                	xor    %edx,%edx
4586f6:	f7 75 0c             	divl   0xc(%ebp)
4586f9:	49                   	dec    %ecx
4586fa:	8b d8                	mov    %eax,%ebx
4586fc:	89 4e 28             	mov    %ecx,0x28(%esi)
4586ff:	8d 42 30             	lea    0x30(%edx),%eax
458702:	0f b7 c8             	movzwl %ax,%ecx
458705:	83 f9 39             	cmp    $0x39,%ecx
458708:	76 16                	jbe    0x458720
45870a:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
45870e:	0f 94 c0             	sete   %al
458711:	fe c8                	dec    %al
458713:	24 e0                	and    $0xe0,%al
458715:	04 61                	add    $0x61,%al
458717:	2c 3a                	sub    $0x3a,%al
458719:	02 c1                	add    %cl,%al
45871b:	66 98                	cbtw
45871d:	0f b7 c8             	movzwl %ax,%ecx
458720:	8b 46 34             	mov    0x34(%esi),%eax
458723:	66 0f be c9          	movsbw %cl,%cx
458727:	66 89 08             	mov    %cx,(%eax)
45872a:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
45872e:	eb b7                	jmp    0x4586e7
458730:	2b 7e 34             	sub    0x34(%esi),%edi
458733:	d1 ff                	sar    $1,%edi
458735:	89 7e 38             	mov    %edi,0x38(%esi)
458738:	83 46 34 02          	addl   $0x2,0x34(%esi)
45873c:	5f                   	pop    %edi
45873d:	5e                   	pop    %esi
45873e:	5b                   	pop    %ebx
45873f:	5d                   	pop    %ebp
458740:	c2 0c 00             	ret    $0xc
458743:	8b ff                	mov    %edi,%edi
458745:	55                   	push   %ebp
458746:	8b ec                	mov    %esp,%ebp
458748:	53                   	push   %ebx
458749:	56                   	push   %esi
45874a:	8b f1                	mov    %ecx,%esi
45874c:	57                   	push   %edi
45874d:	8d 4e 40             	lea    0x40(%esi),%ecx
458750:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
458756:	85 ff                	test   %edi,%edi
458758:	75 02                	jne    0x45875c
45875a:	8b f9                	mov    %ecx,%edi
45875c:	e8 51 d2 ff ff       	call   0x4559b2
458761:	8b 5d 08             	mov    0x8(%ebp),%ebx
458764:	8d 3c 47             	lea    (%edi,%eax,2),%edi
458767:	83 c7 fe             	add    $0xfffffffe,%edi
45876a:	89 7e 34             	mov    %edi,0x34(%esi)
45876d:	8b 4e 28             	mov    0x28(%esi),%ecx
458770:	85 c9                	test   %ecx,%ecx
458772:	7f 04                	jg     0x458778
458774:	85 db                	test   %ebx,%ebx
458776:	74 3e                	je     0x4587b6
458778:	8b c3                	mov    %ebx,%eax
45877a:	33 d2                	xor    %edx,%edx
45877c:	f7 75 0c             	divl   0xc(%ebp)
45877f:	49                   	dec    %ecx
458780:	8b d8                	mov    %eax,%ebx
458782:	89 4e 28             	mov    %ecx,0x28(%esi)
458785:	8d 42 30             	lea    0x30(%edx),%eax
458788:	0f b7 c8             	movzwl %ax,%ecx
45878b:	83 f9 39             	cmp    $0x39,%ecx
45878e:	76 16                	jbe    0x4587a6
458790:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
458794:	0f 94 c0             	sete   %al
458797:	fe c8                	dec    %al
458799:	24 e0                	and    $0xe0,%al
45879b:	04 61                	add    $0x61,%al
45879d:	2c 3a                	sub    $0x3a,%al
45879f:	02 c1                	add    %cl,%al
4587a1:	66 98                	cbtw
4587a3:	0f b7 c8             	movzwl %ax,%ecx
4587a6:	8b 46 34             	mov    0x34(%esi),%eax
4587a9:	66 0f be c9          	movsbw %cl,%cx
4587ad:	66 89 08             	mov    %cx,(%eax)
4587b0:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
4587b4:	eb b7                	jmp    0x45876d
4587b6:	2b 7e 34             	sub    0x34(%esi),%edi
4587b9:	d1 ff                	sar    $1,%edi
4587bb:	89 7e 38             	mov    %edi,0x38(%esi)
4587be:	83 46 34 02          	addl   $0x2,0x34(%esi)
4587c2:	5f                   	pop    %edi
4587c3:	5e                   	pop    %esi
4587c4:	5b                   	pop    %ebx
4587c5:	5d                   	pop    %ebp
4587c6:	c2 0c 00             	ret    $0xc
4587c9:	8b ff                	mov    %edi,%edi
4587cb:	55                   	push   %ebp
4587cc:	8b ec                	mov    %esp,%ebp
4587ce:	53                   	push   %ebx
4587cf:	56                   	push   %esi
4587d0:	8b f1                	mov    %ecx,%esi
4587d2:	57                   	push   %edi
4587d3:	8d 4e 40             	lea    0x40(%esi),%ecx
4587d6:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
4587dc:	85 ff                	test   %edi,%edi
4587de:	75 02                	jne    0x4587e2
4587e0:	8b f9                	mov    %ecx,%edi
4587e2:	e8 cb d1 ff ff       	call   0x4559b2
4587e7:	8b 5d 08             	mov    0x8(%ebp),%ebx
4587ea:	8d 3c 47             	lea    (%edi,%eax,2),%edi
4587ed:	83 c7 fe             	add    $0xfffffffe,%edi
4587f0:	89 7e 34             	mov    %edi,0x34(%esi)
4587f3:	8b 4e 28             	mov    0x28(%esi),%ecx
4587f6:	85 c9                	test   %ecx,%ecx
4587f8:	7f 04                	jg     0x4587fe
4587fa:	85 db                	test   %ebx,%ebx
4587fc:	74 3e                	je     0x45883c
4587fe:	8b c3                	mov    %ebx,%eax
458800:	33 d2                	xor    %edx,%edx
458802:	f7 75 0c             	divl   0xc(%ebp)
458805:	49                   	dec    %ecx
458806:	8b d8                	mov    %eax,%ebx
458808:	89 4e 28             	mov    %ecx,0x28(%esi)
45880b:	8d 42 30             	lea    0x30(%edx),%eax
45880e:	0f b7 c8             	movzwl %ax,%ecx
458811:	83 f9 39             	cmp    $0x39,%ecx
458814:	76 16                	jbe    0x45882c
458816:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
45881a:	0f 94 c0             	sete   %al
45881d:	fe c8                	dec    %al
45881f:	24 e0                	and    $0xe0,%al
458821:	04 61                	add    $0x61,%al
458823:	2c 3a                	sub    $0x3a,%al
458825:	02 c1                	add    %cl,%al
458827:	66 98                	cbtw
458829:	0f b7 c8             	movzwl %ax,%ecx
45882c:	8b 46 34             	mov    0x34(%esi),%eax
45882f:	66 0f be c9          	movsbw %cl,%cx
458833:	66 89 08             	mov    %cx,(%eax)
458836:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
45883a:	eb b7                	jmp    0x4587f3
45883c:	2b 7e 34             	sub    0x34(%esi),%edi
45883f:	d1 ff                	sar    $1,%edi
458841:	89 7e 38             	mov    %edi,0x38(%esi)
458844:	83 46 34 02          	addl   $0x2,0x34(%esi)
458848:	5f                   	pop    %edi
458849:	5e                   	pop    %esi
45884a:	5b                   	pop    %ebx
45884b:	5d                   	pop    %ebp
45884c:	c2 0c 00             	ret    $0xc
45884f:	8b ff                	mov    %edi,%edi
458851:	55                   	push   %ebp
458852:	8b ec                	mov    %esp,%ebp
458854:	53                   	push   %ebx
458855:	56                   	push   %esi
458856:	8b f1                	mov    %ecx,%esi
458858:	57                   	push   %edi
458859:	8d 4e 40             	lea    0x40(%esi),%ecx
45885c:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
458862:	85 ff                	test   %edi,%edi
458864:	75 02                	jne    0x458868
458866:	8b f9                	mov    %ecx,%edi
458868:	e8 45 d1 ff ff       	call   0x4559b2
45886d:	8b 5d 08             	mov    0x8(%ebp),%ebx
458870:	8d 3c 47             	lea    (%edi,%eax,2),%edi
458873:	83 c7 fe             	add    $0xfffffffe,%edi
458876:	89 7e 34             	mov    %edi,0x34(%esi)
458879:	8b 4e 28             	mov    0x28(%esi),%ecx
45887c:	85 c9                	test   %ecx,%ecx
45887e:	7f 04                	jg     0x458884
458880:	85 db                	test   %ebx,%ebx
458882:	74 3e                	je     0x4588c2
458884:	8b c3                	mov    %ebx,%eax
458886:	33 d2                	xor    %edx,%edx
458888:	f7 75 0c             	divl   0xc(%ebp)
45888b:	49                   	dec    %ecx
45888c:	8b d8                	mov    %eax,%ebx
45888e:	89 4e 28             	mov    %ecx,0x28(%esi)
458891:	8d 42 30             	lea    0x30(%edx),%eax
458894:	0f b7 c8             	movzwl %ax,%ecx
458897:	83 f9 39             	cmp    $0x39,%ecx
45889a:	76 16                	jbe    0x4588b2
45889c:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
4588a0:	0f 94 c0             	sete   %al
4588a3:	fe c8                	dec    %al
4588a5:	24 e0                	and    $0xe0,%al
4588a7:	04 61                	add    $0x61,%al
4588a9:	2c 3a                	sub    $0x3a,%al
4588ab:	02 c1                	add    %cl,%al
4588ad:	66 98                	cbtw
4588af:	0f b7 c8             	movzwl %ax,%ecx
4588b2:	8b 46 34             	mov    0x34(%esi),%eax
4588b5:	66 0f be c9          	movsbw %cl,%cx
4588b9:	66 89 08             	mov    %cx,(%eax)
4588bc:	83 46 34 fe          	addl   $0xfffffffe,0x34(%esi)
4588c0:	eb b7                	jmp    0x458879
4588c2:	2b 7e 34             	sub    0x34(%esi),%edi
4588c5:	d1 ff                	sar    $1,%edi
4588c7:	89 7e 38             	mov    %edi,0x38(%esi)
4588ca:	83 46 34 02          	addl   $0x2,0x34(%esi)
4588ce:	5f                   	pop    %edi
4588cf:	5e                   	pop    %esi
4588d0:	5b                   	pop    %ebx
4588d1:	5d                   	pop    %ebp
4588d2:	c2 0c 00             	ret    $0xc
4588d5:	8b ff                	mov    %edi,%edi
4588d7:	55                   	push   %ebp
4588d8:	8b ec                	mov    %esp,%ebp
4588da:	51                   	push   %ecx
4588db:	51                   	push   %ecx
4588dc:	53                   	push   %ebx
4588dd:	56                   	push   %esi
4588de:	8b f1                	mov    %ecx,%esi
4588e0:	57                   	push   %edi
4588e1:	8d 4e 40             	lea    0x40(%esi),%ecx
4588e4:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
4588ea:	85 ff                	test   %edi,%edi
4588ec:	75 02                	jne    0x4588f0
4588ee:	8b f9                	mov    %ecx,%edi
4588f0:	e8 a5 d0 ff ff       	call   0x45599a
4588f5:	8b 55 0c             	mov    0xc(%ebp),%edx
4588f8:	48                   	dec    %eax
4588f9:	8b 5d 08             	mov    0x8(%ebp),%ebx
4588fc:	03 f8                	add    %eax,%edi
4588fe:	89 7e 34             	mov    %edi,0x34(%esi)