422637:	83 f9 39             	cmp    $0x39,%ecx
42263a:	76 11                	jbe    0x42264d
42263c:	8a 45 0c             	mov    0xc(%ebp),%al
42263f:	34 01                	xor    $0x1,%al
422641:	c0 e0 05             	shl    $0x5,%al
422644:	04 07                	add    $0x7,%al
422646:	02 c1                	add    %cl,%al
422648:	66 98                	cbtw
42264a:	0f b7 c8             	movzwl %ax,%ecx
42264d:	66 0f be c1          	movsbw %cl,%ax
422651:	66 89 07             	mov    %ax,(%edi)
422654:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
422658:	8b 46 30             	mov    0x30(%esi),%eax
42265b:	8b f8                	mov    %eax,%edi
42265d:	eb af                	jmp    0x42260e
42265f:	8b 7d f8             	mov    -0x8(%ebp),%edi
422662:	2b f8                	sub    %eax,%edi
422664:	d1 ff                	sar    $1,%edi
422666:	83 c0 02             	add    $0x2,%eax
422669:	89 7e 34             	mov    %edi,0x34(%esi)
42266c:	5f                   	pop    %edi
42266d:	89 46 30             	mov    %eax,0x30(%esi)
422670:	5e                   	pop    %esi
422671:	5b                   	pop    %ebx
422672:	c9                   	leave
422673:	c2 08 00             	ret    $0x8
422676:	8b ff                	mov    %edi,%edi
422678:	55                   	push   %ebp
422679:	8b ec                	mov    %esp,%ebp
42267b:	51                   	push   %ecx
42267c:	53                   	push   %ebx
42267d:	56                   	push   %esi
42267e:	8b f1                	mov    %ecx,%esi
422680:	57                   	push   %edi
422681:	8d 4e 3c             	lea    0x3c(%esi),%ecx
422684:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
42268a:	85 ff                	test   %edi,%edi
42268c:	75 02                	jne    0x422690
42268e:	8b f9                	mov    %ecx,%edi
422690:	e8 89 ea ff ff       	call   0x42111e
422695:	8a 7d 0c             	mov    0xc(%ebp),%bh
422698:	8b 55 08             	mov    0x8(%ebp),%edx
42269b:	8d 48 ff             	lea    -0x1(%eax),%ecx
42269e:	03 cf                	add    %edi,%ecx
4226a0:	89 4e 30             	mov    %ecx,0x30(%esi)
4226a3:	8b c1                	mov    %ecx,%eax
4226a5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4226a8:	8b 7e 24             	mov    0x24(%esi),%edi
4226ab:	85 ff                	test   %edi,%edi
4226ad:	7f 04                	jg     0x4226b3
4226af:	85 d2                	test   %edx,%edx
4226b1:	74 30                	je     0x4226e3
4226b3:	8d 47 ff             	lea    -0x1(%edi),%eax
4226b6:	89 46 24             	mov    %eax,0x24(%esi)
4226b9:	8a c2                	mov    %dl,%al
4226bb:	24 0f                	and    $0xf,%al
4226bd:	c1 ea 04             	shr    $0x4,%edx
4226c0:	04 30                	add    $0x30,%al
4226c2:	8a d8                	mov    %al,%bl
4226c4:	3c 39                	cmp    $0x39,%al
4226c6:	76 0b                	jbe    0x4226d3
4226c8:	8a c7                	mov    %bh,%al
4226ca:	34 01                	xor    $0x1,%al
4226cc:	c0 e0 05             	shl    $0x5,%al
4226cf:	04 07                	add    $0x7,%al
4226d1:	02 c3                	add    %bl,%al
4226d3:	8b 7d fc             	mov    -0x4(%ebp),%edi
4226d6:	88 07                	mov    %al,(%edi)
4226d8:	ff 4e 30             	decl   0x30(%esi)
4226db:	8b 46 30             	mov    0x30(%esi),%eax
4226de:	89 45 fc             	mov    %eax,-0x4(%ebp)
4226e1:	eb c5                	jmp    0x4226a8
4226e3:	2b c8                	sub    %eax,%ecx
4226e5:	40                   	inc    %eax
4226e6:	89 4e 34             	mov    %ecx,0x34(%esi)
4226e9:	5f                   	pop    %edi
4226ea:	89 46 30             	mov    %eax,0x30(%esi)
4226ed:	5e                   	pop    %esi
4226ee:	5b                   	pop    %ebx
4226ef:	c9                   	leave
4226f0:	c2 08 00             	ret    $0x8
4226f3:	8b ff                	mov    %edi,%edi
4226f5:	55                   	push   %ebp
4226f6:	8b ec                	mov    %esp,%ebp
4226f8:	51                   	push   %ecx
4226f9:	53                   	push   %ebx
4226fa:	56                   	push   %esi
4226fb:	8b f1                	mov    %ecx,%esi
4226fd:	57                   	push   %edi
4226fe:	8d 4e 3c             	lea    0x3c(%esi),%ecx
422701:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
422707:	85 ff                	test   %edi,%edi
422709:	75 02                	jne    0x42270d
42270b:	8b f9                	mov    %ecx,%edi
42270d:	e8 24 ea ff ff       	call   0x421136
422712:	48                   	dec    %eax
422713:	8d 0c 47             	lea    (%edi,%eax,2),%ecx
422716:	8b 7d 08             	mov    0x8(%ebp),%edi
422719:	89 4d fc             	mov    %ecx,-0x4(%ebp)
42271c:	8b c1                	mov    %ecx,%eax
42271e:	89 4e 30             	mov    %ecx,0x30(%esi)
422721:	8b d9                	mov    %ecx,%ebx
422723:	8a 4d 0c             	mov    0xc(%ebp),%cl
422726:	8b 56 24             	mov    0x24(%esi),%edx
422729:	85 d2                	test   %edx,%edx
42272b:	7f 04                	jg     0x422731
42272d:	85 ff                	test   %edi,%edi
42272f:	74 35                	je     0x422766
422731:	8d 42 ff             	lea    -0x1(%edx),%eax
422734:	89 46 24             	mov    %eax,0x24(%esi)
422737:	8b c7                	mov    %edi,%eax
422739:	83 e0 0f             	and    $0xf,%eax
42273c:	c1 ef 04             	shr    $0x4,%edi
42273f:	83 c0 30             	add    $0x30,%eax
422742:	0f b7 d0             	movzwl %ax,%edx
422745:	83 fa 39             	cmp    $0x39,%edx
422748:	76 0e                	jbe    0x422758
42274a:	8a c1                	mov    %cl,%al
42274c:	34 01                	xor    $0x1,%al
42274e:	c0 e0 05             	shl    $0x5,%al
422751:	04 07                	add    $0x7,%al
422753:	02 c2                	add    %dl,%al
422755:	0f b6 d0             	movzbl %al,%edx
422758:	66 89 13             	mov    %dx,(%ebx)
42275b:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
42275f:	8b 46 30             	mov    0x30(%esi),%eax
422762:	8b d8                	mov    %eax,%ebx
422764:	eb c0                	jmp    0x422726
422766:	8b 4d fc             	mov    -0x4(%ebp),%ecx
422769:	2b c8                	sub    %eax,%ecx
42276b:	d1 f9                	sar    $1,%ecx
42276d:	83 c0 02             	add    $0x2,%eax
422770:	89 4e 34             	mov    %ecx,0x34(%esi)
422773:	5f                   	pop    %edi
422774:	89 46 30             	mov    %eax,0x30(%esi)
422777:	5e                   	pop    %esi
422778:	5b                   	pop    %ebx
422779:	c9                   	leave
42277a:	c2 08 00             	ret    $0x8
42277d:	8b ff                	mov    %edi,%edi
42277f:	55                   	push   %ebp
422780:	8b ec                	mov    %esp,%ebp
422782:	51                   	push   %ecx
422783:	51                   	push   %ecx
422784:	53                   	push   %ebx
422785:	56                   	push   %esi
422786:	8b f1                	mov    %ecx,%esi
422788:	57                   	push   %edi
422789:	8d 4e 3c             	lea    0x3c(%esi),%ecx
42278c:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
422792:	85 ff                	test   %edi,%edi
422794:	75 02                	jne    0x422798
422796:	8b f9                	mov    %ecx,%edi
422798:	e8 81 e9 ff ff       	call   0x42111e
42279d:	8b 5d 08             	mov    0x8(%ebp),%ebx
4227a0:	8d 48 ff             	lea    -0x1(%eax),%ecx
4227a3:	03 cf                	add    %edi,%ecx
4227a5:	8b 7d 0c             	mov    0xc(%ebp),%edi
4227a8:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4227ab:	8b d1                	mov    %ecx,%edx
4227ad:	89 4e 30             	mov    %ecx,0x30(%esi)
4227b0:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4227b3:	8b 46 24             	mov    0x24(%esi),%eax
4227b6:	85 c0                	test   %eax,%eax
4227b8:	7f 09                	jg     0x4227c3
4227ba:	8b c3                	mov    %ebx,%eax
4227bc:	0b c7                	or     %edi,%eax
4227be:	74 20                	je     0x4227e0
4227c0:	8b 46 24             	mov    0x24(%esi),%eax
4227c3:	48                   	dec    %eax
4227c4:	89 46 24             	mov    %eax,0x24(%esi)
4227c7:	8a c3                	mov    %bl,%al
4227c9:	24 07                	and    $0x7,%al
4227cb:	0f ac fb 03          	shrd   $0x3,%edi,%ebx
4227cf:	04 30                	add    $0x30,%al
4227d1:	88 01                	mov    %al,(%ecx)
4227d3:	c1 ef 03             	shr    $0x3,%edi
4227d6:	ff 4e 30             	decl   0x30(%esi)
4227d9:	8b 56 30             	mov    0x30(%esi),%edx
4227dc:	8b ca                	mov    %edx,%ecx
4227de:	eb d3                	jmp    0x4227b3
4227e0:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4227e3:	8d 42 01             	lea    0x1(%edx),%eax
4227e6:	2b ca                	sub    %edx,%ecx
4227e8:	89 4e 34             	mov    %ecx,0x34(%esi)
4227eb:	5f                   	pop    %edi
4227ec:	89 46 30             	mov    %eax,0x30(%esi)
4227ef:	5e                   	pop    %esi
4227f0:	5b                   	pop    %ebx
4227f1:	c9                   	leave
4227f2:	c2 0c 00             	ret    $0xc
4227f5:	8b ff                	mov    %edi,%edi
4227f7:	55                   	push   %ebp
4227f8:	8b ec                	mov    %esp,%ebp
4227fa:	83 ec 10             	sub    $0x10,%esp
4227fd:	53                   	push   %ebx
4227fe:	56                   	push   %esi
4227ff:	8b f1                	mov    %ecx,%esi
422801:	57                   	push   %edi
422802:	8d 4e 3c             	lea    0x3c(%esi),%ecx
422805:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
42280b:	85 ff                	test   %edi,%edi
42280d:	75 02                	jne    0x422811
42280f:	8b f9                	mov    %ecx,%edi
422811:	e8 20 e9 ff ff       	call   0x421136
422816:	8b 55 0c             	mov    0xc(%ebp),%edx
422819:	8b 5d 08             	mov    0x8(%ebp),%ebx
42281c:	8d 48 ff             	lea    -0x1(%eax),%ecx
42281f:	8d 0c 4f             	lea    (%edi,%ecx,2),%ecx
422822:	89 4d f8             	mov    %ecx,-0x8(%ebp)
422825:	8b f9                	mov    %ecx,%edi
422827:	89 4e 30             	mov    %ecx,0x30(%esi)
42282a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
42282d:	8b 46 24             	mov    0x24(%esi),%eax
422830:	89 5d fc             	mov    %ebx,-0x4(%ebp)
422833:	89 55 f4             	mov    %edx,-0xc(%ebp)
422836:	85 c0                	test   %eax,%eax
422838:	7f 09                	jg     0x422843
42283a:	8b c3                	mov    %ebx,%eax
42283c:	0b c2                	or     %edx,%eax
42283e:	74 25                	je     0x422865
422840:	8b 46 24             	mov    0x24(%esi),%eax
422843:	48                   	dec    %eax
422844:	89 46 24             	mov    %eax,0x24(%esi)
422847:	8b 45 fc             	mov    -0x4(%ebp),%eax
42284a:	83 e0 07             	and    $0x7,%eax
42284d:	0f ac d3 03          	shrd   $0x3,%edx,%ebx
422851:	83 c0 30             	add    $0x30,%eax
422854:	66 89 01             	mov    %ax,(%ecx)
422857:	c1 ea 03             	shr    $0x3,%edx
42285a:	83 46 30 fe          	addl   $0xfffffffe,0x30(%esi)
42285e:	8b 7e 30             	mov    0x30(%esi),%edi
422861:	8b cf                	mov    %edi,%ecx
422863:	eb c8                	jmp    0x42282d
422865:	8b 4d f8             	mov    -0x8(%ebp),%ecx
422868:	8d 47 02             	lea    0x2(%edi),%eax
42286b:	2b cf                	sub    %edi,%ecx
42286d:	d1 f9                	sar    $1,%ecx
42286f:	89 4e 34             	mov    %ecx,0x34(%esi)
422872:	5f                   	pop    %edi
422873:	89 46 30             	mov    %eax,0x30(%esi)
422876:	5e                   	pop    %esi
422877:	5b                   	pop    %ebx
422878:	c9                   	leave
422879:	c2 0c 00             	ret    $0xc
42287c:	8b ff                	mov    %edi,%edi
42287e:	55                   	push   %ebp
42287f:	8b ec                	mov    %esp,%ebp
422881:	83 ec 0c             	sub    $0xc,%esp
422884:	53                   	push   %ebx
422885:	56                   	push   %esi
422886:	8b f1                	mov    %ecx,%esi
422888:	57                   	push   %edi
422889:	8d 4e 3c             	lea    0x3c(%esi),%ecx
42288c:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
422892:	85 ff                	test   %edi,%edi
422894:	75 02                	jne    0x422898
422896:	8b f9                	mov    %ecx,%edi
422898:	e8 81 e8 ff ff       	call   0x42111e
42289d:	48                   	dec    %eax
42289e:	03 f8                	add    %eax,%edi
4228a0:	8b 45 08             	mov    0x8(%ebp),%eax
4228a3:	89 7d f4             	mov    %edi,-0xc(%ebp)
4228a6:	8b cf                	mov    %edi,%ecx
4228a8:	89 7e 30             	mov    %edi,0x30(%esi)
4228ab:	89 7d f8             	mov    %edi,-0x8(%ebp)
4228ae:	8b 7d 0c             	mov    0xc(%ebp),%edi
4228b1:	89 45 fc             	mov    %eax,-0x4(%ebp)
4228b4:	8b 56 24             	mov    0x24(%esi),%edx
4228b7:	85 d2                	test   %edx,%edx
4228b9:	7f 04                	jg     0x4228bf
4228bb:	0b c7                	or     %edi,%eax
4228bd:	74 4f                	je     0x42290e
4228bf:	6a 00                	push   $0x0
4228c1:	6a 0a                	push   $0xa
4228c3:	57                   	push   %edi
4228c4:	ff 75 fc             	push   -0x4(%ebp)
4228c7:	8d 42 ff             	lea    -0x1(%edx),%eax
4228ca:	89 46 24             	mov    %eax,0x24(%esi)
4228cd:	e8 3e 98 01 00       	call   0x43c110
4228d2:	6a 00                	push   $0x0
4228d4:	6a 0a                	push   $0xa
4228d6:	8a d8                	mov    %al,%bl
4228d8:	57                   	push   %edi
4228d9:	ff 75 fc             	push   -0x4(%ebp)
4228dc:	80 c3 30             	add    $0x30,%bl
4228df:	8a fb                	mov    %bl,%bh
4228e1:	e8 da 9b ff ff       	call   0x41c4c0
4228e6:	89 45 fc             	mov    %eax,-0x4(%ebp)
4228e9:	8b fa                	mov    %edx,%edi
4228eb:	80 fb 39             	cmp    $0x39,%bl
4228ee:	7e 0e                	jle    0x4228fe
4228f0:	8a 5d 10             	mov    0x10(%ebp),%bl
4228f3:	80 f3 01             	xor    $0x1,%bl
4228f6:	c0 e3 05             	shl    $0x5,%bl
4228f9:	80 c3 07             	add    $0x7,%bl
4228fc:	02 df                	add    %bh,%bl
4228fe:	8b 4d f8             	mov    -0x8(%ebp),%ecx
422901:	88 19                	mov    %bl,(%ecx)
422903:	ff 4e 30             	decl   0x30(%esi)
422906:	8b 4e 30             	mov    0x30(%esi),%ecx
422909:	89 4d f8             	mov    %ecx,-0x8(%ebp)
42290c:	eb a6                	jmp    0x4228b4
42290e:	8b 7d f4             	mov    -0xc(%ebp),%edi
422911:	8d 41 01             	lea    0x1(%ecx),%eax
422914:	2b f9                	sub    %ecx,%edi
422916:	89 7e 34             	mov    %edi,0x34(%esi)
422919:	5f                   	pop    %edi
42291a:	89 46 30             	mov    %eax,0x30(%esi)
42291d:	5e                   	pop    %esi
42291e:	5b                   	pop    %ebx
42291f:	c9                   	leave
422920:	c2 0c 00             	ret    $0xc
422923:	8b ff                	mov    %edi,%edi
422925:	55                   	push   %ebp
422926:	8b ec                	mov    %esp,%ebp
422928:	83 ec 0c             	sub    $0xc,%esp
42292b:	53                   	push   %ebx
42292c:	56                   	push   %esi
42292d:	8b f1                	mov    %ecx,%esi
42292f:	57                   	push   %edi
422930:	8d 4e 3c             	lea    0x3c(%esi),%ecx
422933:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
422939:	85 ff                	test   %edi,%edi
42293b:	75 02                	jne    0x42293f
42293d:	8b f9                	mov    %ecx,%edi
42293f:	e8 f2 e7 ff ff       	call   0x421136
422944:	8b 5d 08             	mov    0x8(%ebp),%ebx
422947:	89 5d fc             	mov    %ebx,-0x4(%ebp)
42294a:	8d 3c 47             	lea    (%edi,%eax,2),%edi
42294d:	83 c7 fe             	add    $0xfffffffe,%edi
422950:	89 7d f4             	mov    %edi,-0xc(%ebp)
422953:	8b cf                	mov    %edi,%ecx
422955:	89 7e 30             	mov    %edi,0x30(%esi)
422958:	89 7d f8             	mov    %edi,-0x8(%ebp)
42295b:	8b 7d 0c             	mov    0xc(%ebp),%edi
42295e:	8b 56 24             	mov    0x24(%esi),%edx
422961:	85 d2                	test   %edx,%edx
422963:	7f 06                	jg     0x42296b
422965:	8b c3                	mov    %ebx,%eax
422967:	0b c7                	or     %edi,%eax
422969:	74 5e                	je     0x4229c9
42296b:	6a 00                	push   $0x0
42296d:	6a 0a                	push   $0xa
42296f:	57                   	push   %edi
422970:	8d 42 ff             	lea    -0x1(%edx),%eax
422973:	53                   	push   %ebx
422974:	89 46 24             	mov    %eax,0x24(%esi)
422977:	e8 94 97 01 00       	call   0x43c110
42297c:	6a 00                	push   $0x0