40761e:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407624:	73 18                	jae    0x40763e
407626:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407629:	0f 83 f5 03 00 00    	jae    0x407a24
40762f:	0f b6 03             	movzbl (%ebx),%eax
407632:	c1 e6 08             	shl    $0x8,%esi
407635:	c1 e7 08             	shl    $0x8,%edi
407638:	0b f0                	or     %eax,%esi
40763a:	43                   	inc    %ebx
40763b:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40763e:	8b c7                	mov    %edi,%eax
407640:	03 d2                	add    %edx,%edx
407642:	c1 e8 0b             	shr    $0xb,%eax
407645:	0f af 45 e0          	imul   -0x20(%ebp),%eax
407649:	3b f0                	cmp    %eax,%esi
40764b:	73 06                	jae    0x407653
40764d:	8b f8                	mov    %eax,%edi
40764f:	f7 d1                	not    %ecx
407651:	eb 05                	jmp    0x407658
407653:	2b f8                	sub    %eax,%edi
407655:	2b f0                	sub    %eax,%esi
407657:	42                   	inc    %edx
407658:	81 fa 00 01 00 00    	cmp    $0x100,%edx
40765e:	0f 83 72 ff ff ff    	jae    0x4075d6
407664:	8b 45 ec             	mov    -0x14(%ebp),%eax
407667:	23 c1                	and    %ecx,%eax
407669:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40766c:	eb 90                	jmp    0x4075fe
40766e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407671:	2b f8                	sub    %eax,%edi
407673:	8b 55 fc             	mov    -0x4(%ebp),%edx
407676:	2b f0                	sub    %eax,%esi
407678:	8b 45 ec             	mov    -0x14(%ebp),%eax
40767b:	0f b7 8c 41 80 01 00 	movzwl 0x180(%ecx,%eax,2),%ecx
407682:	00
407683:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407689:	73 14                	jae    0x40769f
40768b:	3b da                	cmp    %edx,%ebx
40768d:	0f 83 91 03 00 00    	jae    0x407a24
407693:	0f b6 03             	movzbl (%ebx),%eax
407696:	c1 e6 08             	shl    $0x8,%esi
407699:	c1 e7 08             	shl    $0x8,%edi
40769c:	0b f0                	or     %eax,%esi
40769e:	43                   	inc    %ebx
40769f:	8b c7                	mov    %edi,%eax
4076a1:	c1 e8 0b             	shr    $0xb,%eax
4076a4:	0f af c1             	imul   %ecx,%eax
4076a7:	33 c9                	xor    %ecx,%ecx
4076a9:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4076ac:	3b f0                	cmp    %eax,%esi
4076ae:	73 15                	jae    0x4076c5
4076b0:	8b f8                	mov    %eax,%edi
4076b2:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4076b5:	6a 02                	push   $0x2
4076b7:	58                   	pop    %eax
4076b8:	89 45 e8             	mov    %eax,-0x18(%ebp)
4076bb:	b8 64 06 00 00       	mov    $0x664,%eax
4076c0:	e9 28 01 00 00       	jmp    0x4077ed
4076c5:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4076c8:	2b f8                	sub    %eax,%edi
4076ca:	2b f0                	sub    %eax,%esi
4076cc:	6a 03                	push   $0x3
4076ce:	58                   	pop    %eax
4076cf:	89 45 e8             	mov    %eax,-0x18(%ebp)
4076d2:	8b 45 ec             	mov    -0x14(%ebp),%eax
4076d5:	0f b7 8c 41 98 01 00 	movzwl 0x198(%ecx,%eax,2),%ecx
4076dc:	00
4076dd:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4076e0:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4076e6:	73 17                	jae    0x4076ff
4076e8:	3b da                	cmp    %edx,%ebx
4076ea:	0f 83 34 03 00 00    	jae    0x407a24
4076f0:	0f b6 03             	movzbl (%ebx),%eax
4076f3:	c1 e6 08             	shl    $0x8,%esi
4076f6:	0b f0                	or     %eax,%esi
4076f8:	c1 e7 08             	shl    $0x8,%edi
4076fb:	8b 45 ec             	mov    -0x14(%ebp),%eax
4076fe:	43                   	inc    %ebx
4076ff:	8b cf                	mov    %edi,%ecx
407701:	c1 e9 0b             	shr    $0xb,%ecx
407704:	0f af 4d e0          	imul   -0x20(%ebp),%ecx
407708:	3b f1                	cmp    %ecx,%esi
40770a:	73 5c                	jae    0x407768
40770c:	8b 55 f8             	mov    -0x8(%ebp),%edx
40770f:	83 c0 0f             	add    $0xf,%eax
407712:	c1 e0 04             	shl    $0x4,%eax
407715:	8b f9                	mov    %ecx,%edi
407717:	03 45 f4             	add    -0xc(%ebp),%eax
40771a:	0f b7 04 42          	movzwl (%edx,%eax,2),%eax
40771e:	8b 55 fc             	mov    -0x4(%ebp),%edx
407721:	89 45 e0             	mov    %eax,-0x20(%ebp)
407724:	81 f9 00 00 00 01    	cmp    $0x1000000,%ecx
40772a:	73 14                	jae    0x407740
40772c:	3b da                	cmp    %edx,%ebx
40772e:	0f 83 f0 02 00 00    	jae    0x407a24
407734:	0f b6 03             	movzbl (%ebx),%eax
407737:	c1 e6 08             	shl    $0x8,%esi
40773a:	c1 e7 08             	shl    $0x8,%edi
40773d:	0b f0                	or     %eax,%esi
40773f:	43                   	inc    %ebx
407740:	8b c7                	mov    %edi,%eax
407742:	c1 e8 0b             	shr    $0xb,%eax
407745:	0f af 45 e0          	imul   -0x20(%ebp),%eax
407749:	3b f0                	cmp    %eax,%esi
40774b:	0f 83 8c 00 00 00    	jae    0x4077dd
407751:	3d 00 00 00 01       	cmp    $0x1000000,%eax
407756:	73 08                	jae    0x407760
407758:	3b da                	cmp    %edx,%ebx
40775a:	0f 83 c4 02 00 00    	jae    0x407a24
407760:	6a 03                	push   $0x3
407762:	58                   	pop    %eax
407763:	e9 c2 02 00 00       	jmp    0x407a2a
407768:	2b f9                	sub    %ecx,%edi
40776a:	2b f1                	sub    %ecx,%esi
40776c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40776f:	0f b7 8c 41 b0 01 00 	movzwl 0x1b0(%ecx,%eax,2),%ecx
407776:	00
407777:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
40777d:	73 14                	jae    0x407793
40777f:	3b da                	cmp    %edx,%ebx
407781:	0f 83 9d 02 00 00    	jae    0x407a24
407787:	0f b6 03             	movzbl (%ebx),%eax
40778a:	c1 e6 08             	shl    $0x8,%esi
40778d:	c1 e7 08             	shl    $0x8,%edi
407790:	0b f0                	or     %eax,%esi
407792:	43                   	inc    %ebx
407793:	8b c7                	mov    %edi,%eax
407795:	c1 e8 0b             	shr    $0xb,%eax
407798:	0f af c1             	imul   %ecx,%eax
40779b:	3b f0                	cmp    %eax,%esi
40779d:	72 3a                	jb     0x4077d9
40779f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4077a2:	2b f8                	sub    %eax,%edi
4077a4:	2b f0                	sub    %eax,%esi
4077a6:	8b 45 ec             	mov    -0x14(%ebp),%eax
4077a9:	0f b7 8c 41 c8 01 00 	movzwl 0x1c8(%ecx,%eax,2),%ecx
4077b0:	00
4077b1:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4077b7:	73 14                	jae    0x4077cd
4077b9:	3b da                	cmp    %edx,%ebx
4077bb:	0f 83 63 02 00 00    	jae    0x407a24
4077c1:	0f b6 03             	movzbl (%ebx),%eax
4077c4:	c1 e6 08             	shl    $0x8,%esi
4077c7:	c1 e7 08             	shl    $0x8,%edi
4077ca:	0b f0                	or     %eax,%esi
4077cc:	43                   	inc    %ebx
4077cd:	8b c7                	mov    %edi,%eax
4077cf:	c1 e8 0b             	shr    $0xb,%eax
4077d2:	0f af c1             	imul   %ecx,%eax
4077d5:	3b f0                	cmp    %eax,%esi
4077d7:	73 04                	jae    0x4077dd
4077d9:	8b f8                	mov    %eax,%edi
4077db:	eb 04                	jmp    0x4077e1
4077dd:	2b f8                	sub    %eax,%edi
4077df:	2b f0                	sub    %eax,%esi
4077e1:	c7 45 e0 0c 00 00 00 	movl   $0xc,-0x20(%ebp)
4077e8:	b8 68 0a 00 00       	mov    $0xa68,%eax
4077ed:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4077f0:	03 c8                	add    %eax,%ecx
4077f2:	0f b7 01             	movzwl (%ecx),%eax
4077f5:	89 45 ec             	mov    %eax,-0x14(%ebp)
4077f8:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4077fe:	73 14                	jae    0x407814
407800:	3b da                	cmp    %edx,%ebx
407802:	0f 83 1c 02 00 00    	jae    0x407a24
407808:	0f b6 03             	movzbl (%ebx),%eax
40780b:	c1 e6 08             	shl    $0x8,%esi
40780e:	c1 e7 08             	shl    $0x8,%edi
407811:	0b f0                	or     %eax,%esi
407813:	43                   	inc    %ebx
407814:	8b c7                	mov    %edi,%eax
407816:	c1 e8 0b             	shr    $0xb,%eax
407819:	0f af 45 ec          	imul   -0x14(%ebp),%eax
40781d:	3b f0                	cmp    %eax,%esi
40781f:	73 16                	jae    0x407837
407821:	8b f8                	mov    %eax,%edi
407823:	c7 45 f0 08 00 00 00 	movl   $0x8,-0x10(%ebp)
40782a:	8b 45 f4             	mov    -0xc(%ebp),%eax
40782d:	c1 e0 04             	shl    $0x4,%eax
407830:	83 c0 04             	add    $0x4,%eax
407833:	03 c1                	add    %ecx,%eax
407835:	eb 6b                	jmp    0x4078a2
407837:	2b f8                	sub    %eax,%edi
407839:	2b f0                	sub    %eax,%esi
40783b:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
40783f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407842:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407848:	73 14                	jae    0x40785e
40784a:	3b da                	cmp    %edx,%ebx
40784c:	0f 83 d2 01 00 00    	jae    0x407a24
407852:	0f b6 03             	movzbl (%ebx),%eax
407855:	c1 e6 08             	shl    $0x8,%esi
407858:	c1 e7 08             	shl    $0x8,%edi
40785b:	0b f0                	or     %eax,%esi
40785d:	43                   	inc    %ebx
40785e:	8b c7                	mov    %edi,%eax
407860:	c1 e8 0b             	shr    $0xb,%eax
407863:	0f af 45 e4          	imul   -0x1c(%ebp),%eax
407867:	3b f0                	cmp    %eax,%esi
407869:	73 20                	jae    0x40788b
40786b:	8b f8                	mov    %eax,%edi
40786d:	8b 45 f4             	mov    -0xc(%ebp),%eax
407870:	c1 e0 04             	shl    $0x4,%eax
407873:	05 04 01 00 00       	add    $0x104,%eax
407878:	03 c1                	add    %ecx,%eax
40787a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40787d:	6a 08                	push   $0x8
40787f:	58                   	pop    %eax
407880:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407883:	89 45 f0             	mov    %eax,-0x10(%ebp)
407886:	8b 45 ec             	mov    -0x14(%ebp),%eax
407889:	eb 1a                	jmp    0x4078a5
40788b:	2b f8                	sub    %eax,%edi
40788d:	c7 45 f0 00 01 00 00 	movl   $0x100,-0x10(%ebp)
407894:	2b f0                	sub    %eax,%esi
407896:	8d 81 04 02 00 00    	lea    0x204(%ecx),%eax
40789c:	6a 10                	push   $0x10
40789e:	59                   	pop    %ecx
40789f:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4078a2:	89 45 ec             	mov    %eax,-0x14(%ebp)
4078a5:	33 c9                	xor    %ecx,%ecx
4078a7:	41                   	inc    %ecx
4078a8:	03 c9                	add    %ecx,%ecx
4078aa:	0f b7 04 01          	movzwl (%ecx,%eax,1),%eax
4078ae:	89 45 f4             	mov    %eax,-0xc(%ebp)
4078b1:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4078b7:	73 14                	jae    0x4078cd
4078b9:	3b da                	cmp    %edx,%ebx
4078bb:	0f 83 63 01 00 00    	jae    0x407a24
4078c1:	0f b6 03             	movzbl (%ebx),%eax
4078c4:	c1 e6 08             	shl    $0x8,%esi
4078c7:	c1 e7 08             	shl    $0x8,%edi
4078ca:	0b f0                	or     %eax,%esi
4078cc:	43                   	inc    %ebx
4078cd:	8b c7                	mov    %edi,%eax
4078cf:	c1 e8 0b             	shr    $0xb,%eax
4078d2:	0f af 45 f4          	imul   -0xc(%ebp),%eax
4078d6:	3b f0                	cmp    %eax,%esi
4078d8:	73 04                	jae    0x4078de
4078da:	8b f8                	mov    %eax,%edi
4078dc:	eb 05                	jmp    0x4078e3
4078de:	2b f8                	sub    %eax,%edi
4078e0:	2b f0                	sub    %eax,%esi
4078e2:	41                   	inc    %ecx
4078e3:	8b 45 ec             	mov    -0x14(%ebp),%eax
4078e6:	3b 4d f0             	cmp    -0x10(%ebp),%ecx
4078e9:	72 bd                	jb     0x4078a8
4078eb:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4078ee:	2b 45 f0             	sub    -0x10(%ebp),%eax
4078f1:	03 c8                	add    %eax,%ecx
4078f3:	83 7d e0 04          	cmpl   $0x4,-0x20(%ebp)
4078f7:	0f 83 13 01 00 00    	jae    0x407a10
4078fd:	83 f9 04             	cmp    $0x4,%ecx
407900:	72 03                	jb     0x407905
407902:	6a 03                	push   $0x3
407904:	59                   	pop    %ecx
407905:	8b 45 f8             	mov    -0x8(%ebp),%eax
407908:	33 d2                	xor    %edx,%edx
40790a:	c1 e1 07             	shl    $0x7,%ecx
40790d:	05 60 03 00 00       	add    $0x360,%eax
407912:	03 c1                	add    %ecx,%eax
407914:	42                   	inc    %edx
407915:	89 45 e0             	mov    %eax,-0x20(%ebp)
407918:	03 d2                	add    %edx,%edx
40791a:	0f b7 0c 02          	movzwl (%edx,%eax,1),%ecx
40791e:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407924:	73 15                	jae    0x40793b
407926:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407929:	0f 83 f5 00 00 00    	jae    0x407a24
40792f:	0f b6 03             	movzbl (%ebx),%eax
407932:	c1 e6 08             	shl    $0x8,%esi
407935:	c1 e7 08             	shl    $0x8,%edi
407938:	0b f0                	or     %eax,%esi
40793a:	43                   	inc    %ebx
40793b:	8b c7                	mov    %edi,%eax
40793d:	c1 e8 0b             	shr    $0xb,%eax
407940:	0f af c1             	imul   %ecx,%eax
407943:	3b f0                	cmp    %eax,%esi
407945:	73 04                	jae    0x40794b
407947:	8b f8                	mov    %eax,%edi
407949:	eb 05                	jmp    0x407950
40794b:	2b f8                	sub    %eax,%edi
40794d:	2b f0                	sub    %eax,%esi
40794f:	42                   	inc    %edx
407950:	8b 45 e0             	mov    -0x20(%ebp),%eax
407953:	83 fa 40             	cmp    $0x40,%edx
407956:	72 c0                	jb     0x407918
407958:	83 ea 40             	sub    $0x40,%edx
40795b:	83 fa 04             	cmp    $0x4,%edx
40795e:	0f 82 ac 00 00 00    	jb     0x407a10
407964:	8b ca                	mov    %edx,%ecx
407966:	d1 e9                	shr    $1,%ecx
407968:	49                   	dec    %ecx
407969:	83 fa 0e             	cmp    $0xe,%edx
40796c:	73 1a                	jae    0x407988
40796e:	8b c2                	mov    %edx,%eax
407970:	83 e0 01             	and    $0x1,%eax
407973:	83 c8 02             	or     $0x2,%eax
407976:	d3 e0                	shl    %cl,%eax
407978:	2b c2                	sub    %edx,%eax
40797a:	8b 55 f8             	mov    -0x8(%ebp),%edx
40797d:	8d 14 42             	lea    (%edx,%eax,2),%edx
407980:	81 c2 5e 05 00 00    	add    $0x55e,%edx
407986:	eb 3f                	jmp    0x4079c7
407988:	83 e9 04             	sub    $0x4,%ecx
40798b:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407991:	73 15                	jae    0x4079a8
407993:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407996:	0f 83 88 00 00 00    	jae    0x407a24
40799c:	0f b6 03             	movzbl (%ebx),%eax
40799f:	c1 e6 08             	shl    $0x8,%esi
4079a2:	c1 e7 08             	shl    $0x8,%edi
4079a5:	0b f0                	or     %eax,%esi
4079a7:	43                   	inc    %ebx
4079a8:	d1 ef                	shr    $1,%edi
4079aa:	8b c6                	mov    %esi,%eax
4079ac:	2b c7                	sub    %edi,%eax
4079ae:	c1 e8 1f             	shr    $0x1f,%eax
4079b1:	48                   	dec    %eax
4079b2:	23 c7                	and    %edi,%eax
4079b4:	2b f0                	sub    %eax,%esi
4079b6:	83 e9 01             	sub    $0x1,%ecx
4079b9:	75 d0                	jne    0x40798b
4079bb:	8b 55 f8             	mov    -0x8(%ebp),%edx
4079be:	6a 04                	push   $0x4
4079c0:	81 c2 44 06 00 00    	add    $0x644,%edx
4079c6:	59                   	pop    %ecx
4079c7:	33 c0                	xor    %eax,%eax
4079c9:	40                   	inc    %eax
4079ca:	03 c0                	add    %eax,%eax
4079cc:	89 45 e0             	mov    %eax,-0x20(%ebp)
4079cf:	0f b7 04 10          	movzwl (%eax,%edx,1),%eax
4079d3:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4079d6:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4079dc:	73 11                	jae    0x4079ef
4079de:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4079e1:	73 41                	jae    0x407a24
4079e3:	0f b6 03             	movzbl (%ebx),%eax
4079e6:	c1 e6 08             	shl    $0x8,%esi
4079e9:	c1 e7 08             	shl    $0x8,%edi
4079ec:	0b f0                	or     %eax,%esi
4079ee:	43                   	inc    %ebx
4079ef:	8b c7                	mov    %edi,%eax
4079f1:	c1 e8 0b             	shr    $0xb,%eax
4079f4:	0f af 45 e4          	imul   -0x1c(%ebp),%eax
4079f8:	3b f0                	cmp    %eax,%esi
4079fa:	73 07                	jae    0x407a03
4079fc:	8b f8                	mov    %eax,%edi
4079fe:	8b 45 e0             	mov    -0x20(%ebp),%eax
407a01:	eb 08                	jmp    0x407a0b