553596:	8a 47 01             	mov    0x1(%edi),%al
553599:	66 03 f0             	add    %ax,%si
55359c:	33 db                	xor    %ebx,%ebx
55359e:	8b 44 94 14          	mov    0x14(%esp,%edx,4),%eax
5535a2:	8d 54 94 24          	lea    0x24(%esp,%edx,4),%edx
5535a6:	eb 28                	jmp    0x5535d0
5535a8:	85 c0                	test   %eax,%eax
5535aa:	7e 11                	jle    0x5535bd
5535ac:	8b c8                	mov    %eax,%ecx
5535ae:	8b ee                	mov    %esi,%ebp
5535b0:	66 d3 e5             	shl    %cl,%bp
5535b3:	66 81 e5 ff ff       	and    $0xffff,%bp
5535b8:	66 0b dd             	or     %bp,%bx
5535bb:	eb 11                	jmp    0x5535ce
5535bd:	8b c8                	mov    %eax,%ecx
5535bf:	f7 d9                	neg    %ecx
5535c1:	0f b7 ee             	movzwl %si,%ebp
5535c4:	d3 fd                	sar    %cl,%ebp
5535c6:	66 81 e5 ff ff       	and    $0xffff,%bp
5535cb:	66 0b dd             	or     %bp,%bx
5535ce:	2b 02                	sub    (%edx),%eax
5535d0:	8b 0a                	mov    (%edx),%ecx
5535d2:	f7 d9                	neg    %ecx
5535d4:	3b c1                	cmp    %ecx,%eax
5535d6:	7f d0                	jg     0x5535a8
5535d8:	0f b7 c3             	movzwl %bx,%eax
5535db:	c1 f8 08             	sar    $0x8,%eax
5535de:	88 07                	mov    %al,(%edi)
5535e0:	47                   	inc    %edi
5535e1:	80 e3 ff             	and    $0xff,%bl
5535e4:	88 1f                	mov    %bl,(%edi)
5535e6:	47                   	inc    %edi
5535e7:	ff 44 24 0c          	incl   0xc(%esp)
5535eb:	8b 54 24 0c          	mov    0xc(%esp),%edx
5535ef:	8b 44 24 10          	mov    0x10(%esp),%eax
5535f3:	3b d0                	cmp    %eax,%edx
5535f5:	72 8e                	jb     0x553585
5535f7:	83 c4 34             	add    $0x34,%esp
5535fa:	5d                   	pop    %ebp
5535fb:	5f                   	pop    %edi
5535fc:	5e                   	pop    %esi
5535fd:	5b                   	pop    %ebx
5535fe:	c3                   	ret
5535ff:	90                   	nop
553600:	53                   	push   %ebx
553601:	56                   	push   %esi
553602:	57                   	push   %edi
553603:	51                   	push   %ecx
553604:	8a 48 08             	mov    0x8(%eax),%cl
553607:	80 f9 06             	cmp    $0x6,%cl
55360a:	0f 85 8f 00 00 00    	jne    0x55369f
553610:	8a 48 09             	mov    0x9(%eax),%cl
553613:	80 f9 08             	cmp    $0x8,%cl
553616:	75 32                	jne    0x55364a
553618:	8b 38                	mov    (%eax),%edi
55361a:	33 f6                	xor    %esi,%esi
55361c:	8b ca                	mov    %edx,%ecx
55361e:	8b c2                	mov    %edx,%eax
553620:	3b fe                	cmp    %esi,%edi
553622:	0f 86 df 00 00 00    	jbe    0x553707
553628:	8a 10                	mov    (%eax),%dl
55362a:	40                   	inc    %eax
55362b:	8a 18                	mov    (%eax),%bl
55362d:	40                   	inc    %eax
55362e:	88 19                	mov    %bl,(%ecx)
553630:	41                   	inc    %ecx
553631:	8a 18                	mov    (%eax),%bl
553633:	40                   	inc    %eax
553634:	88 19                	mov    %bl,(%ecx)
553636:	41                   	inc    %ecx
553637:	8a 18                	mov    (%eax),%bl
553639:	40                   	inc    %eax
55363a:	88 19                	mov    %bl,(%ecx)
55363c:	41                   	inc    %ecx
55363d:	88 11                	mov    %dl,(%ecx)
55363f:	41                   	inc    %ecx
553640:	46                   	inc    %esi
553641:	3b fe                	cmp    %esi,%edi
553643:	77 e3                	ja     0x553628
553645:	e9 bd 00 00 00       	jmp    0x553707
55364a:	8b 38                	mov    (%eax),%edi
55364c:	33 f6                	xor    %esi,%esi
55364e:	8b ca                	mov    %edx,%ecx
553650:	8b c2                	mov    %edx,%eax
553652:	3b fe                	cmp    %esi,%edi
553654:	0f 86 ad 00 00 00    	jbe    0x553707
55365a:	8a 10                	mov    (%eax),%dl
55365c:	40                   	inc    %eax
55365d:	88 14 24             	mov    %dl,(%esp)
553660:	8a 10                	mov    (%eax),%dl
553662:	40                   	inc    %eax
553663:	88 54 24 01          	mov    %dl,0x1(%esp)
553667:	8a 10                	mov    (%eax),%dl
553669:	40                   	inc    %eax
55366a:	88 11                	mov    %dl,(%ecx)
55366c:	41                   	inc    %ecx
55366d:	8a 10                	mov    (%eax),%dl
55366f:	40                   	inc    %eax
553670:	88 11                	mov    %dl,(%ecx)
553672:	41                   	inc    %ecx
553673:	8a 10                	mov    (%eax),%dl
553675:	40                   	inc    %eax
553676:	88 11                	mov    %dl,(%ecx)
553678:	41                   	inc    %ecx
553679:	8a 10                	mov    (%eax),%dl
55367b:	40                   	inc    %eax
55367c:	88 11                	mov    %dl,(%ecx)
55367e:	41                   	inc    %ecx
55367f:	8a 10                	mov    (%eax),%dl
553681:	40                   	inc    %eax
553682:	88 11                	mov    %dl,(%ecx)
553684:	41                   	inc    %ecx
553685:	8a 10                	mov    (%eax),%dl
553687:	40                   	inc    %eax
553688:	88 11                	mov    %dl,(%ecx)
55368a:	41                   	inc    %ecx
55368b:	8a 14 24             	mov    (%esp),%dl
55368e:	88 11                	mov    %dl,(%ecx)
553690:	41                   	inc    %ecx
553691:	8a 54 24 01          	mov    0x1(%esp),%dl
553695:	88 11                	mov    %dl,(%ecx)
553697:	41                   	inc    %ecx
553698:	46                   	inc    %esi
553699:	3b fe                	cmp    %esi,%edi
55369b:	77 bd                	ja     0x55365a
55369d:	eb 68                	jmp    0x553707
55369f:	8a 48 08             	mov    0x8(%eax),%cl
5536a2:	80 f9 04             	cmp    $0x4,%cl
5536a5:	75 60                	jne    0x553707
5536a7:	8a 48 09             	mov    0x9(%eax),%cl
5536aa:	80 f9 08             	cmp    $0x8,%cl
5536ad:	75 1f                	jne    0x5536ce
5536af:	8b 38                	mov    (%eax),%edi
5536b1:	33 f6                	xor    %esi,%esi
5536b3:	8b ca                	mov    %edx,%ecx
5536b5:	8b c2                	mov    %edx,%eax
5536b7:	3b fe                	cmp    %esi,%edi
5536b9:	76 4c                	jbe    0x553707
5536bb:	8a 10                	mov    (%eax),%dl
5536bd:	40                   	inc    %eax
5536be:	8a 18                	mov    (%eax),%bl
5536c0:	40                   	inc    %eax
5536c1:	88 19                	mov    %bl,(%ecx)
5536c3:	41                   	inc    %ecx
5536c4:	88 11                	mov    %dl,(%ecx)
5536c6:	41                   	inc    %ecx
5536c7:	46                   	inc    %esi
5536c8:	3b fe                	cmp    %esi,%edi
5536ca:	77 ef                	ja     0x5536bb
5536cc:	eb 39                	jmp    0x553707
5536ce:	8b 38                	mov    (%eax),%edi
5536d0:	33 f6                	xor    %esi,%esi
5536d2:	8b ca                	mov    %edx,%ecx
5536d4:	8b c2                	mov    %edx,%eax
5536d6:	3b fe                	cmp    %esi,%edi
5536d8:	76 2d                	jbe    0x553707
5536da:	8a 10                	mov    (%eax),%dl
5536dc:	40                   	inc    %eax
5536dd:	88 54 24 02          	mov    %dl,0x2(%esp)
5536e1:	8a 10                	mov    (%eax),%dl
5536e3:	40                   	inc    %eax
5536e4:	88 54 24 03          	mov    %dl,0x3(%esp)
5536e8:	8a 10                	mov    (%eax),%dl
5536ea:	40                   	inc    %eax
5536eb:	88 11                	mov    %dl,(%ecx)
5536ed:	41                   	inc    %ecx
5536ee:	8a 10                	mov    (%eax),%dl
5536f0:	40                   	inc    %eax
5536f1:	88 11                	mov    %dl,(%ecx)
5536f3:	41                   	inc    %ecx
5536f4:	8a 54 24 02          	mov    0x2(%esp),%dl
5536f8:	88 11                	mov    %dl,(%ecx)
5536fa:	41                   	inc    %ecx
5536fb:	8a 54 24 03          	mov    0x3(%esp),%dl
5536ff:	88 11                	mov    %dl,(%ecx)
553701:	41                   	inc    %ecx
553702:	46                   	inc    %esi
553703:	3b fe                	cmp    %esi,%edi
553705:	77 d3                	ja     0x5536da
553707:	5a                   	pop    %edx
553708:	5f                   	pop    %edi
553709:	5e                   	pop    %esi
55370a:	5b                   	pop    %ebx
55370b:	c3                   	ret
55370c:	56                   	push   %esi
55370d:	57                   	push   %edi
55370e:	55                   	push   %ebp
55370f:	8a 48 08             	mov    0x8(%eax),%cl
553712:	80 f9 06             	cmp    $0x6,%cl
553715:	0f 85 8d 00 00 00    	jne    0x5537a8
55371b:	8a 48 09             	mov    0x9(%eax),%cl
55371e:	80 f9 08             	cmp    $0x8,%cl
553721:	75 36                	jne    0x553759
553723:	8b 28                	mov    (%eax),%ebp
553725:	33 ff                	xor    %edi,%edi
553727:	8b f2                	mov    %edx,%esi
553729:	8b c2                	mov    %edx,%eax
55372b:	3b ef                	cmp    %edi,%ebp
55372d:	0f 86 d5 00 00 00    	jbe    0x553808
553733:	8a 08                	mov    (%eax),%cl
553735:	40                   	inc    %eax
553736:	88 0e                	mov    %cl,(%esi)
553738:	46                   	inc    %esi
553739:	8a 10                	mov    (%eax),%dl
55373b:	40                   	inc    %eax
55373c:	88 16                	mov    %dl,(%esi)
55373e:	46                   	inc    %esi
55373f:	8a 08                	mov    (%eax),%cl
553741:	40                   	inc    %eax
553742:	88 0e                	mov    %cl,(%esi)
553744:	46                   	inc    %esi
553745:	8a 08                	mov    (%eax),%cl
553747:	b2 ff                	mov    $0xff,%dl
553749:	2a d1                	sub    %cl,%dl
55374b:	40                   	inc    %eax
55374c:	88 16                	mov    %dl,(%esi)
55374e:	46                   	inc    %esi
55374f:	47                   	inc    %edi
553750:	3b ef                	cmp    %edi,%ebp
553752:	77 df                	ja     0x553733
553754:	e9 af 00 00 00       	jmp    0x553808
553759:	8b 28                	mov    (%eax),%ebp
55375b:	33 ff                	xor    %edi,%edi
55375d:	8b f2                	mov    %edx,%esi
55375f:	8b c2                	mov    %edx,%eax
553761:	3b ef                	cmp    %edi,%ebp
553763:	0f 86 9f 00 00 00    	jbe    0x553808
553769:	8a 08                	mov    (%eax),%cl
55376b:	40                   	inc    %eax
55376c:	88 0e                	mov    %cl,(%esi)
55376e:	46                   	inc    %esi
55376f:	8a 10                	mov    (%eax),%dl
553771:	40                   	inc    %eax
553772:	88 16                	mov    %dl,(%esi)
553774:	46                   	inc    %esi
553775:	8a 08                	mov    (%eax),%cl
553777:	40                   	inc    %eax
553778:	88 0e                	mov    %cl,(%esi)
55377a:	46                   	inc    %esi
55377b:	8a 10                	mov    (%eax),%dl
55377d:	40                   	inc    %eax
55377e:	88 16                	mov    %dl,(%esi)
553780:	46                   	inc    %esi
553781:	8a 08                	mov    (%eax),%cl
553783:	40                   	inc    %eax
553784:	88 0e                	mov    %cl,(%esi)
553786:	46                   	inc    %esi
553787:	8a 10                	mov    (%eax),%dl
553789:	40                   	inc    %eax
55378a:	88 16                	mov    %dl,(%esi)
55378c:	46                   	inc    %esi
55378d:	8a 10                	mov    (%eax),%dl
55378f:	b1 ff                	mov    $0xff,%cl
553791:	2a ca                	sub    %dl,%cl
553793:	40                   	inc    %eax
553794:	88 0e                	mov    %cl,(%esi)
553796:	46                   	inc    %esi
553797:	8a 10                	mov    (%eax),%dl
553799:	b1 ff                	mov    $0xff,%cl
55379b:	2a ca                	sub    %dl,%cl
55379d:	40                   	inc    %eax
55379e:	88 0e                	mov    %cl,(%esi)
5537a0:	46                   	inc    %esi
5537a1:	47                   	inc    %edi
5537a2:	3b ef                	cmp    %edi,%ebp
5537a4:	77 c3                	ja     0x553769
5537a6:	eb 60                	jmp    0x553808
5537a8:	8a 48 08             	mov    0x8(%eax),%cl
5537ab:	80 f9 04             	cmp    $0x4,%cl
5537ae:	75 58                	jne    0x553808
5537b0:	8a 48 09             	mov    0x9(%eax),%cl
5537b3:	80 f9 08             	cmp    $0x8,%cl
5537b6:	75 23                	jne    0x5537db
5537b8:	8b 28                	mov    (%eax),%ebp
5537ba:	33 ff                	xor    %edi,%edi
5537bc:	8b f2                	mov    %edx,%esi
5537be:	8b c2                	mov    %edx,%eax
5537c0:	3b ef                	cmp    %edi,%ebp
5537c2:	76 44                	jbe    0x553808
5537c4:	8a 08                	mov    (%eax),%cl
5537c6:	40                   	inc    %eax
5537c7:	88 0e                	mov    %cl,(%esi)
5537c9:	46                   	inc    %esi
5537ca:	8a 08                	mov    (%eax),%cl
5537cc:	b2 ff                	mov    $0xff,%dl
5537ce:	2a d1                	sub    %cl,%dl
5537d0:	40                   	inc    %eax
5537d1:	88 16                	mov    %dl,(%esi)
5537d3:	46                   	inc    %esi
5537d4:	47                   	inc    %edi
5537d5:	3b ef                	cmp    %edi,%ebp
5537d7:	77 eb                	ja     0x5537c4
5537d9:	eb 2d                	jmp    0x553808
5537db:	8b 38                	mov    (%eax),%edi
5537dd:	33 f6                	xor    %esi,%esi
5537df:	8b ca                	mov    %edx,%ecx
5537e1:	8b c2                	mov    %edx,%eax
5537e3:	3b fe                	cmp    %esi,%edi
5537e5:	76 21                	jbe    0x553808
5537e7:	8a 10                	mov    (%eax),%dl
5537e9:	40                   	inc    %eax
5537ea:	88 11                	mov    %dl,(%ecx)
5537ec:	41                   	inc    %ecx
5537ed:	8a 10                	mov    (%eax),%dl
5537ef:	40                   	inc    %eax
5537f0:	88 11                	mov    %dl,(%ecx)
5537f2:	b2 ff                	mov    $0xff,%dl
5537f4:	2a 10                	sub    (%eax),%dl
5537f6:	41                   	inc    %ecx
5537f7:	40                   	inc    %eax
5537f8:	46                   	inc    %esi
5537f9:	88 11                	mov    %dl,(%ecx)
5537fb:	41                   	inc    %ecx
5537fc:	b2 ff                	mov    $0xff,%dl
5537fe:	2a 10                	sub    (%eax),%dl
553800:	40                   	inc    %eax
553801:	88 11                	mov    %dl,(%ecx)
553803:	41                   	inc    %ecx
553804:	3b fe                	cmp    %esi,%edi
553806:	77 df                	ja     0x5537e7
553808:	5d                   	pop    %ebp
553809:	5f                   	pop    %edi
55380a:	5e                   	pop    %esi
55380b:	c3                   	ret
55380c:	53                   	push   %ebx
55380d:	56                   	push   %esi
55380e:	57                   	push   %edi
55380f:	55                   	push   %ebp
553810:	83 c4 f8             	add    $0xfffffff8,%esp
553813:	8a 48 08             	mov    0x8(%eax),%cl
553816:	f6 c1 02             	test   $0x2,%cl
553819:	0f 84 f6 00 00 00    	je     0x553915
55381f:	80 78 09 08          	cmpb   $0x8,0x9(%eax)
553823:	8b 38                	mov    (%eax),%edi
553825:	75 48                	jne    0x55386f
553827:	80 f9 02             	cmp    $0x2,%cl
55382a:	75 07                	jne    0x553833
55382c:	b9 03 00 00 00       	mov    $0x3,%ecx
553831:	eb 0e                	jmp    0x553841
553833:	80 f9 06             	cmp    $0x6,%cl
553836:	0f 85 d9 00 00 00    	jne    0x553915
55383c:	b9 04 00 00 00       	mov    $0x4,%ecx
553841:	33 f6                	xor    %esi,%esi
553843:	8b c2                	mov    %edx,%eax
553845:	3b fe                	cmp    %esi,%edi
553847:	0f 86 c8 00 00 00    	jbe    0x553915
55384d:	8a 10                	mov    (%eax),%dl
55384f:	46                   	inc    %esi
553850:	2a 50 01             	sub    0x1(%eax),%dl
553853:	80 e2 ff             	and    $0xff,%dl