55567c:	83 e0 0f             	and    $0xf,%eax
55567f:	d3 e0                	shl    %cl,%eax
555681:	09 44 24 3c          	or     %eax,0x3c(%esp)
555685:	8b 54 24 38          	mov    0x38(%esp),%edx
555689:	85 d2                	test   %edx,%edx
55568b:	75 1e                	jne    0x5556ab
55568d:	c7 44 24 38 04 00 00 	movl   $0x4,0x38(%esp)
555694:	00
555695:	8a 44 24 3c          	mov    0x3c(%esp),%al
555699:	8b 54 24 34          	mov    0x34(%esp),%edx
55569d:	88 02                	mov    %al,(%edx)
55569f:	ff 44 24 34          	incl   0x34(%esp)
5556a3:	33 c9                	xor    %ecx,%ecx
5556a5:	89 4c 24 3c          	mov    %ecx,0x3c(%esp)
5556a9:	eb 05                	jmp    0x5556b0
5556ab:	83 6c 24 38 04       	subl   $0x4,0x38(%esp)
5556b0:	8b 03                	mov    (%ebx),%eax
5556b2:	01 44 24 40          	add    %eax,0x40(%esp)
5556b6:	8b 54 24 40          	mov    0x40(%esp),%edx
5556ba:	8b 4c 24 44          	mov    0x44(%esp),%ecx
5556be:	3b d1                	cmp    %ecx,%edx
5556c0:	72 8f                	jb     0x555651
5556c2:	8b 44 24 38          	mov    0x38(%esp),%eax
5556c6:	83 f8 04             	cmp    $0x4,%eax
5556c9:	74 7f                	je     0x55574a
5556cb:	8a 54 24 3c          	mov    0x3c(%esp),%dl
5556cf:	8b 4c 24 34          	mov    0x34(%esp),%ecx
5556d3:	88 11                	mov    %dl,(%ecx)
5556d5:	eb 73                	jmp    0x55574a
5556d7:	8b 06                	mov    (%esi),%eax
5556d9:	33 d2                	xor    %edx,%edx
5556db:	89 44 24 50          	mov    %eax,0x50(%esp)
5556df:	89 6c 24 48          	mov    %ebp,0x48(%esp)
5556e3:	8a 56 0b             	mov    0xb(%esi),%dl
5556e6:	8d 1c bd 50 d4 69 00 	lea    0x69d450(,%edi,4),%ebx
5556ed:	c1 fa 03             	sar    $0x3,%edx
5556f0:	89 54 24 54          	mov    %edx,0x54(%esp)
5556f4:	8b 0c bd 34 d4 69 00 	mov    0x69d434(,%edi,4),%ecx
5556fb:	89 4c 24 4c          	mov    %ecx,0x4c(%esp)
5556ff:	8b 44 24 4c          	mov    0x4c(%esp),%eax
555703:	8b 54 24 50          	mov    0x50(%esp),%edx
555707:	3b c2                	cmp    %edx,%eax
555709:	73 3f                	jae    0x55574a
55570b:	8b 44 24 4c          	mov    0x4c(%esp),%eax
55570f:	f7 6c 24 54          	imull  0x54(%esp)
555713:	03 c5                	add    %ebp,%eax
555715:	8b 54 24 48          	mov    0x48(%esp),%edx
555719:	3b c2                	cmp    %edx,%eax
55571b:	74 13                	je     0x555730
55571d:	8b 4c 24 54          	mov    0x54(%esp),%ecx
555721:	51                   	push   %ecx
555722:	50                   	push   %eax
555723:	8b 44 24 50          	mov    0x50(%esp),%eax
555727:	50                   	push   %eax
555728:	e8 b3 0c fd ff       	call   0x5263e0
55572d:	83 c4 0c             	add    $0xc,%esp
555730:	8b 54 24 54          	mov    0x54(%esp),%edx
555734:	01 54 24 48          	add    %edx,0x48(%esp)
555738:	8b 0b                	mov    (%ebx),%ecx
55573a:	01 4c 24 4c          	add    %ecx,0x4c(%esp)
55573e:	8b 44 24 4c          	mov    0x4c(%esp),%eax
555742:	8b 54 24 50          	mov    0x50(%esp),%edx
555746:	3b c2                	cmp    %edx,%eax
555748:	72 c1                	jb     0x55570b
55574a:	8b 0c bd 50 d4 69 00 	mov    0x69d450(,%edi,4),%ecx
555751:	8b c1                	mov    %ecx,%eax
555753:	8b 16                	mov    (%esi),%edx
555755:	03 c2                	add    %edx,%eax
555757:	48                   	dec    %eax
555758:	8b 14 bd 34 d4 69 00 	mov    0x69d434(,%edi,4),%edx
55575f:	2b c2                	sub    %edx,%eax
555761:	33 d2                	xor    %edx,%edx
555763:	f7 f1                	div    %ecx
555765:	8b d8                	mov    %eax,%ebx
555767:	89 1e                	mov    %ebx,(%esi)
555769:	33 c0                	xor    %eax,%eax
55576b:	8a 46 0b             	mov    0xb(%esi),%al
55576e:	f7 eb                	imul   %ebx
555770:	83 c0 07             	add    $0x7,%eax
555773:	c1 e8 03             	shr    $0x3,%eax
555776:	89 46 04             	mov    %eax,0x4(%esi)
555779:	83 c4 58             	add    $0x58,%esp
55577c:	5d                   	pop    %ebp
55577d:	5f                   	pop    %edi
55577e:	5e                   	pop    %esi
55577f:	5b                   	pop    %ebx
555780:	c3                   	ret
555781:	90                   	nop
555782:	90                   	nop
555783:	90                   	nop
555784:	53                   	push   %ebx
555785:	56                   	push   %esi
555786:	57                   	push   %edi
555787:	55                   	push   %ebp
555788:	81 c4 a8 fe ff ff    	add    $0xfffffea8,%esp
55578e:	8b d8                	mov    %eax,%ebx
555790:	89 14 24             	mov    %edx,(%esp)
555793:	8a 83 e5 00 00 00    	mov    0xe5(%ebx),%al
555799:	88 44 24 14          	mov    %al,0x14(%esp)
55579d:	0f b6 b3 b9 01 00 00 	movzbl 0x1b9(%ebx),%esi
5557a4:	8b 04 24             	mov    (%esp),%eax
5557a7:	8b 14 24             	mov    (%esp),%edx
5557aa:	0f b6 40 0b          	movzbl 0xb(%eax),%eax
5557ae:	83 c0 07             	add    $0x7,%eax
5557b1:	8b 6a 04             	mov    0x4(%edx),%ebp
5557b4:	85 c0                	test   %eax,%eax
5557b6:	79 03                	jns    0x5557bb
5557b8:	83 c0 07             	add    $0x7,%eax
5557bb:	c1 f8 03             	sar    $0x3,%eax
5557be:	8b 93 a8 00 00 00    	mov    0xa8(%ebx),%edx
5557c4:	89 54 24 04          	mov    %edx,0x4(%esp)
5557c8:	8b 8b ac 00 00 00    	mov    0xac(%ebx),%ecx
5557ce:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
5557d2:	89 4c 24 08          	mov    %ecx,0x8(%esp)
5557d6:	c7 44 24 10 ff ff ff 	movl   $0x7fffffff,0x10(%esp)
5557dd:	7f
5557de:	f6 44 24 14 08       	testb  $0x8,0x14(%esp)
5557e3:	0f 84 32 01 00 00    	je     0x55591b
5557e9:	8a 54 24 14          	mov    0x14(%esp),%dl
5557ed:	80 fa 08             	cmp    $0x8,%dl
5557f0:	0f 84 25 01 00 00    	je     0x55591b
5557f6:	33 d2                	xor    %edx,%edx
5557f8:	33 c9                	xor    %ecx,%ecx
5557fa:	89 54 24 1c          	mov    %edx,0x1c(%esp)
5557fe:	89 4c 24 20          	mov    %ecx,0x20(%esp)
555802:	8b 54 24 0c          	mov    0xc(%esp),%edx
555806:	42                   	inc    %edx
555807:	89 54 24 18          	mov    %edx,0x18(%esp)
55580b:	8b 4c 24 20          	mov    0x20(%esp),%ecx
55580f:	3b e9                	cmp    %ecx,%ebp
555811:	76 3d                	jbe    0x555850
555813:	8b 54 24 18          	mov    0x18(%esp),%edx
555817:	33 c9                	xor    %ecx,%ecx
555819:	8a 0a                	mov    (%edx),%cl
55581b:	89 4c 24 24          	mov    %ecx,0x24(%esp)
55581f:	8b 54 24 24          	mov    0x24(%esp),%edx
555823:	81 fa 80 00 00 00    	cmp    $0x80,%edx
555829:	7d 06                	jge    0x555831
55582b:	8b 4c 24 24          	mov    0x24(%esp),%ecx
55582f:	eb 0b                	jmp    0x55583c
555831:	b9 00 01 00 00       	mov    $0x100,%ecx
555836:	8b 54 24 24          	mov    0x24(%esp),%edx
55583a:	2b ca                	sub    %edx,%ecx
55583c:	01 4c 24 1c          	add    %ecx,0x1c(%esp)
555840:	ff 44 24 20          	incl   0x20(%esp)
555844:	ff 44 24 18          	incl   0x18(%esp)
555848:	8b 54 24 20          	mov    0x20(%esp),%edx
55584c:	3b ea                	cmp    %edx,%ebp
55584e:	77 c3                	ja     0x555813
555850:	8a 8b b8 01 00 00    	mov    0x1b8(%ebx),%cl
555856:	80 f9 02             	cmp    $0x2,%cl
555859:	0f 85 b4 00 00 00    	jne    0x555913
55585f:	8b 54 24 1c          	mov    0x1c(%esp),%edx
555863:	81 e2 ff ff 00 00    	and    $0xffff,%edx
555869:	89 54 24 2c          	mov    %edx,0x2c(%esp)
55586d:	33 d2                	xor    %edx,%edx
55586f:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
555873:	c1 e9 0a             	shr    $0xa,%ecx
555876:	81 e1 c0 ff 3f 00    	and    $0x3fffc0,%ecx
55587c:	3b f2                	cmp    %edx,%esi
55587e:	89 4c 24 28          	mov    %ecx,0x28(%esp)
555882:	7e 3e                	jle    0x5558c2
555884:	8b 8b bc 01 00 00    	mov    0x1bc(%ebx),%ecx
55588a:	8a 0c 11             	mov    (%ecx,%edx,1),%cl
55588d:	84 c9                	test   %cl,%cl
55588f:	75 2c                	jne    0x5558bd
555891:	8b 8b c0 01 00 00    	mov    0x1c0(%ebx),%ecx
555897:	0f b7 0c 51          	movzwl (%ecx,%edx,2),%ecx
55589b:	0f af 4c 24 2c       	imul   0x2c(%esp),%ecx
5558a0:	c1 e9 08             	shr    $0x8,%ecx
5558a3:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
5558a7:	8b 8b c0 01 00 00    	mov    0x1c0(%ebx),%ecx
5558ad:	0f b7 0c 51          	movzwl (%ecx,%edx,2),%ecx
5558b1:	0f af 4c 24 28       	imul   0x28(%esp),%ecx
5558b6:	c1 e9 08             	shr    $0x8,%ecx
5558b9:	89 4c 24 28          	mov    %ecx,0x28(%esp)
5558bd:	42                   	inc    %edx
5558be:	3b f2                	cmp    %edx,%esi
5558c0:	7f c2                	jg     0x555884
5558c2:	8b 93 c8 01 00 00    	mov    0x1c8(%ebx),%edx
5558c8:	0f b7 12             	movzwl (%edx),%edx
5558cb:	0f af 54 24 2c       	imul   0x2c(%esp),%edx
5558d0:	c1 ea 03             	shr    $0x3,%edx
5558d3:	89 54 24 2c          	mov    %edx,0x2c(%esp)
5558d7:	8b 8b c8 01 00 00    	mov    0x1c8(%ebx),%ecx
5558dd:	0f b7 11             	movzwl (%ecx),%edx
5558e0:	0f af 54 24 28       	imul   0x28(%esp),%edx
5558e5:	c1 ea 03             	shr    $0x3,%edx
5558e8:	89 54 24 28          	mov    %edx,0x28(%esp)
5558ec:	8b 4c 24 28          	mov    0x28(%esp),%ecx
5558f0:	81 f9 c0 ff 3f 00    	cmp    $0x3fffc0,%ecx
5558f6:	76 0a                	jbe    0x555902
5558f8:	c7 44 24 1c ff ff ff 	movl   $0x7fffffff,0x1c(%esp)
5558ff:	7f
555900:	eb 11                	jmp    0x555913
555902:	8b 54 24 28          	mov    0x28(%esp),%edx
555906:	c1 e2 0a             	shl    $0xa,%edx
555909:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
55590d:	03 d1                	add    %ecx,%edx
55590f:	89 54 24 1c          	mov    %edx,0x1c(%esp)
555913:	8b 54 24 1c          	mov    0x1c(%esp),%edx
555917:	89 54 24 10          	mov    %edx,0x10(%esp)
55591b:	8a 4c 24 14          	mov    0x14(%esp),%cl
55591f:	80 f9 10             	cmp    $0x10,%cl
555922:	0f 85 91 00 00 00    	jne    0x5559b9
555928:	33 d2                	xor    %edx,%edx
55592a:	89 54 24 3c          	mov    %edx,0x3c(%esp)
55592e:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
555932:	41                   	inc    %ecx
555933:	89 4c 24 30          	mov    %ecx,0x30(%esp)
555937:	8b 93 b0 00 00 00    	mov    0xb0(%ebx),%edx
55593d:	42                   	inc    %edx
55593e:	89 54 24 38          	mov    %edx,0x38(%esp)
555942:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
555946:	3b c1                	cmp    %ecx,%eax
555948:	76 20                	jbe    0x55596a
55594a:	8b 54 24 30          	mov    0x30(%esp),%edx
55594e:	8a 0a                	mov    (%edx),%cl
555950:	8b 54 24 38          	mov    0x38(%esp),%edx
555954:	88 0a                	mov    %cl,(%edx)
555956:	ff 44 24 3c          	incl   0x3c(%esp)
55595a:	ff 44 24 30          	incl   0x30(%esp)
55595e:	ff 44 24 38          	incl   0x38(%esp)
555962:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
555966:	3b c1                	cmp    %ecx,%eax
555968:	77 e0                	ja     0x55594a
55596a:	8b 54 24 0c          	mov    0xc(%esp),%edx
55596e:	42                   	inc    %edx
55596f:	89 54 24 34          	mov    %edx,0x34(%esp)
555973:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
555977:	3b e9                	cmp    %ecx,%ebp
555979:	76 2f                	jbe    0x5559aa
55597b:	8b 54 24 30          	mov    0x30(%esp),%edx
55597f:	8a 0a                	mov    (%edx),%cl
555981:	8b 54 24 34          	mov    0x34(%esp),%edx
555985:	8a 12                	mov    (%edx),%dl
555987:	2a ca                	sub    %dl,%cl
555989:	8b 54 24 38          	mov    0x38(%esp),%edx
55598d:	80 e1 ff             	and    $0xff,%cl
555990:	88 0a                	mov    %cl,(%edx)
555992:	ff 44 24 3c          	incl   0x3c(%esp)
555996:	ff 44 24 30          	incl   0x30(%esp)
55599a:	ff 44 24 34          	incl   0x34(%esp)
55599e:	ff 44 24 38          	incl   0x38(%esp)
5559a2:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
5559a6:	3b e9                	cmp    %ecx,%ebp
5559a8:	77 d1                	ja     0x55597b
5559aa:	8b 93 b0 00 00 00    	mov    0xb0(%ebx),%edx
5559b0:	89 54 24 08          	mov    %edx,0x8(%esp)
5559b4:	e9 83 02 00 00       	jmp    0x555c3c
5559b9:	f6 44 24 14 10       	testb  $0x10,0x14(%esp)
5559be:	0f 84 78 02 00 00    	je     0x555c3c
5559c4:	33 d2                	xor    %edx,%edx
5559c6:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5559ca:	89 4c 24 4c          	mov    %ecx,0x4c(%esp)
5559ce:	8a 8b b8 01 00 00    	mov    0x1b8(%ebx),%cl
5559d4:	80 f9 02             	cmp    $0x2,%cl
5559d7:	0f 85 d2 00 00 00    	jne    0x555aaf
5559dd:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
5559e1:	81 e1 ff ff 00 00    	and    $0xffff,%ecx
5559e7:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
5559eb:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
5559ef:	c1 e9 0a             	shr    $0xa,%ecx
5559f2:	81 e1 c0 ff 3f 00    	and    $0x3fffc0,%ecx
5559f8:	89 4c 24 58          	mov    %ecx,0x58(%esp)
5559fc:	33 c9                	xor    %ecx,%ecx
5559fe:	89 4c 24 54          	mov    %ecx,0x54(%esp)
555a02:	8b 4c 24 54          	mov    0x54(%esp),%ecx
555a06:	3b f1                	cmp    %ecx,%esi
555a08:	7e 52                	jle    0x555a5c
555a0a:	8b 8b bc 01 00 00    	mov    0x1bc(%ebx),%ecx
555a10:	8b 7c 24 54          	mov    0x54(%esp),%edi
555a14:	8a 0c 39             	mov    (%ecx,%edi,1),%cl
555a17:	80 f9 01             	cmp    $0x1,%cl
555a1a:	75 34                	jne    0x555a50
555a1c:	8b 8b c4 01 00 00    	mov    0x1c4(%ebx),%ecx
555a22:	8b 7c 24 54          	mov    0x54(%esp),%edi
555a26:	0f b7 0c 79          	movzwl (%ecx,%edi,2),%ecx
555a2a:	0f af 4c 24 5c       	imul   0x5c(%esp),%ecx
555a2f:	c1 e9 08             	shr    $0x8,%ecx
555a32:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
555a36:	8b 8b c4 01 00 00    	mov    0x1c4(%ebx),%ecx
555a3c:	8b 7c 24 54          	mov    0x54(%esp),%edi
555a40:	0f b7 0c 79          	movzwl (%ecx,%edi,2),%ecx
555a44:	0f af 4c 24 58       	imul   0x58(%esp),%ecx
555a49:	c1 e9 08             	shr    $0x8,%ecx
555a4c:	89 4c 24 58          	mov    %ecx,0x58(%esp)
555a50:	ff 44 24 54          	incl   0x54(%esp)
555a54:	8b 4c 24 54          	mov    0x54(%esp),%ecx
555a58:	3b f1                	cmp    %ecx,%esi
555a5a:	7f ae                	jg     0x555a0a
555a5c:	8b 8b cc 01 00 00    	mov    0x1cc(%ebx),%ecx
555a62:	0f b7 49 02          	movzwl 0x2(%ecx),%ecx
555a66:	0f af 4c 24 5c       	imul   0x5c(%esp),%ecx
555a6b:	c1 e9 03             	shr    $0x3,%ecx
555a6e:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
555a72:	8b 8b cc 01 00 00    	mov    0x1cc(%ebx),%ecx
555a78:	0f b7 49 02          	movzwl 0x2(%ecx),%ecx
555a7c:	0f af 4c 24 58       	imul   0x58(%esp),%ecx
555a81:	c1 e9 03             	shr    $0x3,%ecx
555a84:	89 4c 24 58          	mov    %ecx,0x58(%esp)
555a88:	8b 4c 24 58          	mov    0x58(%esp),%ecx
555a8c:	81 f9 c0 ff 3f 00    	cmp    $0x3fffc0,%ecx
555a92:	76 0a                	jbe    0x555a9e
555a94:	c7 44 24 4c ff ff ff 	movl   $0x7fffffff,0x4c(%esp)
555a9b:	7f
555a9c:	eb 11                	jmp    0x555aaf
555a9e:	8b 4c 24 58          	mov    0x58(%esp),%ecx
555aa2:	c1 e1 0a             	shl    $0xa,%ecx
555aa5:	8b 7c 24 5c          	mov    0x5c(%esp),%edi
555aa9:	03 cf                	add    %edi,%ecx
555aab:	89 4c 24 4c          	mov    %ecx,0x4c(%esp)
555aaf:	33 c9                	xor    %ecx,%ecx
555ab1:	89 4c 24 50          	mov    %ecx,0x50(%esp)
555ab5:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
555ab9:	41                   	inc    %ecx
555aba:	89 4c 24 40          	mov    %ecx,0x40(%esp)
555abe:	8b 8b b0 00 00 00    	mov    0xb0(%ebx),%ecx
555ac4:	41                   	inc    %ecx
555ac5:	89 4c 24 44          	mov    %ecx,0x44(%esp)
555ac9:	8b 4c 24 50          	mov    0x50(%esp),%ecx
555acd:	3b c1                	cmp    %ecx,%eax
555acf:	76 3b                	jbe    0x555b0c
555ad1:	8b 4c 24 40          	mov    0x40(%esp),%ecx
555ad5:	8b 7c 24 44          	mov    0x44(%esp),%edi
555ad9:	8a 09                	mov    (%ecx),%cl
555adb:	88 0f                	mov    %cl,(%edi)
555add:	81 e1 ff 00 00 00    	and    $0xff,%ecx
555ae3:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
555ae9:	7d 04                	jge    0x555aef
555aeb:	8b f9                	mov    %ecx,%edi
555aed:	eb 07                	jmp    0x555af6
555aef:	bf 00 01 00 00       	mov    $0x100,%edi
555af4:	2b f9                	sub    %ecx,%edi
555af6:	03 d7                	add    %edi,%edx
555af8:	ff 44 24 50          	incl   0x50(%esp)
555afc:	ff 44 24 40          	incl   0x40(%esp)
555b00:	ff 44 24 44          	incl   0x44(%esp)
555b04:	8b 4c 24 50          	mov    0x50(%esp),%ecx
555b08:	3b c1                	cmp    %ecx,%eax
555b0a:	77 c5                	ja     0x555ad1
555b0c:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
555b10:	41                   	inc    %ecx
555b11:	89 4c 24 48          	mov    %ecx,0x48(%esp)
555b15:	eb 48                	jmp    0x555b5f
555b17:	8b 4c 24 40          	mov    0x40(%esp),%ecx
555b1b:	8b 7c 24 48          	mov    0x48(%esp),%edi
555b1f:	8a 09                	mov    (%ecx),%cl
555b21:	2a 0f                	sub    (%edi),%cl
555b23:	8b 7c 24 44          	mov    0x44(%esp),%edi