422686:	5f                   	pop    %edi
422687:	c3                   	ret
422688:	55                   	push   %ebp
422689:	8b ec                	mov    %esp,%ebp
42268b:	51                   	push   %ecx
42268c:	e8 7c 53 00 00       	call   0x427a0d
422691:	8b 4d 08             	mov    0x8(%ebp),%ecx
422694:	89 45 fc             	mov    %eax,-0x4(%ebp)
422697:	85 c9                	test   %ecx,%ecx
422699:	75 03                	jne    0x42269e
42269b:	8b 48 1c             	mov    0x1c(%eax),%ecx
42269e:	0f b7 11             	movzwl (%ecx),%edx
4226a1:	53                   	push   %ebx
4226a2:	56                   	push   %esi
4226a3:	33 c0                	xor    %eax,%eax
4226a5:	57                   	push   %edi
4226a6:	8b 7d 0c             	mov    0xc(%ebp),%edi
4226a9:	66 85 d2             	test   %dx,%dx
4226ac:	74 30                	je     0x4226de
4226ae:	0f b7 1f             	movzwl (%edi),%ebx
4226b1:	8b c7                	mov    %edi,%eax
4226b3:	66 85 db             	test   %bx,%bx
4226b6:	74 12                	je     0x4226ca
4226b8:	8b f3                	mov    %ebx,%esi
4226ba:	66 3b f2             	cmp    %dx,%si
4226bd:	74 0b                	je     0x4226ca
4226bf:	83 c0 02             	add    $0x2,%eax
4226c2:	0f b7 30             	movzwl (%eax),%esi
4226c5:	66 85 f6             	test   %si,%si
4226c8:	75 f0                	jne    0x4226ba
4226ca:	33 d2                	xor    %edx,%edx
4226cc:	66 39 10             	cmp    %dx,(%eax)
4226cf:	74 0b                	je     0x4226dc
4226d1:	83 c1 02             	add    $0x2,%ecx
4226d4:	0f b7 11             	movzwl (%ecx),%edx
4226d7:	66 85 d2             	test   %dx,%dx
4226da:	75 d5                	jne    0x4226b1
4226dc:	33 c0                	xor    %eax,%eax
4226de:	8b f1                	mov    %ecx,%esi
4226e0:	66 39 01             	cmp    %ax,(%ecx)
4226e3:	74 41                	je     0x422726
4226e5:	0f b7 1f             	movzwl (%edi),%ebx
4226e8:	33 d2                	xor    %edx,%edx
4226ea:	8b c7                	mov    %edi,%eax
4226ec:	66 85 db             	test   %bx,%bx
4226ef:	74 1e                	je     0x42270f
4226f1:	0f b7 39             	movzwl (%ecx),%edi
4226f4:	89 7d 08             	mov    %edi,0x8(%ebp)
4226f7:	8b 7d 0c             	mov    0xc(%ebp),%edi
4226fa:	8b d3                	mov    %ebx,%edx
4226fc:	66 3b 55 08          	cmp    0x8(%ebp),%dx
422700:	74 0b                	je     0x42270d
422702:	83 c0 02             	add    $0x2,%eax
422705:	0f b7 10             	movzwl (%eax),%edx
422708:	66 85 d2             	test   %dx,%dx
42270b:	75 ef                	jne    0x4226fc
42270d:	33 d2                	xor    %edx,%edx
42270f:	66 39 10             	cmp    %dx,(%eax)
422712:	75 0a                	jne    0x42271e
422714:	83 c1 02             	add    $0x2,%ecx
422717:	66 39 11             	cmp    %dx,(%ecx)
42271a:	75 ce                	jne    0x4226ea
42271c:	eb 08                	jmp    0x422726
42271e:	33 c0                	xor    %eax,%eax
422720:	66 89 01             	mov    %ax,(%ecx)
422723:	83 c1 02             	add    $0x2,%ecx
422726:	8b 45 fc             	mov    -0x4(%ebp),%eax
422729:	5f                   	pop    %edi
42272a:	89 48 1c             	mov    %ecx,0x1c(%eax)
42272d:	8b c6                	mov    %esi,%eax
42272f:	2b c1                	sub    %ecx,%eax
422731:	f7 d8                	neg    %eax
422733:	1b c0                	sbb    %eax,%eax
422735:	23 c6                	and    %esi,%eax
422737:	5e                   	pop    %esi
422738:	5b                   	pop    %ebx
422739:	c9                   	leave
42273a:	c3                   	ret
42273b:	55                   	push   %ebp
42273c:	8b ec                	mov    %esp,%ebp
42273e:	8b 4d 08             	mov    0x8(%ebp),%ecx
422741:	85 c9                	test   %ecx,%ecx
422743:	75 15                	jne    0x42275a
422745:	e8 c4 54 00 00       	call   0x427c0e
42274a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
422750:	e8 bb 46 00 00       	call   0x426e10
422755:	6a 16                	push   $0x16
422757:	58                   	pop    %eax
422758:	5d                   	pop    %ebp
422759:	c3                   	ret
42275a:	a1 40 0a 4c 00       	mov    0x4c0a40,%eax
42275f:	89 01                	mov    %eax,(%ecx)
422761:	33 c0                	xor    %eax,%eax
422763:	5d                   	pop    %ebp
422764:	c3                   	ret
422765:	6a 10                	push   $0x10
422767:	68 08 6b 4b 00       	push   $0x4b6b08
42276c:	e8 4f 43 00 00       	call   0x426ac0
422771:	8b 7d 0c             	mov    0xc(%ebp),%edi
422774:	81 ff 00 40 00 00    	cmp    $0x4000,%edi
42277a:	74 30                	je     0x4227ac
42277c:	81 ff 00 80 00 00    	cmp    $0x8000,%edi
422782:	74 28                	je     0x4227ac
422784:	81 ff 00 00 01 00    	cmp    $0x10000,%edi
42278a:	74 20                	je     0x4227ac
42278c:	81 ff 00 00 04 00    	cmp    $0x40000,%edi
422792:	74 18                	je     0x4227ac
422794:	81 ff 00 00 02 00    	cmp    $0x20000,%edi
42279a:	74 10                	je     0x4227ac
42279c:	e8 6d 54 00 00       	call   0x427c0e
4227a1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4227a7:	e9 ac 00 00 00       	jmp    0x422858
4227ac:	8b 75 08             	mov    0x8(%ebp),%esi
4227af:	83 fe fe             	cmp    $0xfffffffe,%esi
4227b2:	75 10                	jne    0x4227c4
4227b4:	e8 55 54 00 00       	call   0x427c0e
4227b9:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4227bf:	e9 99 00 00 00       	jmp    0x42285d
4227c4:	85 f6                	test   %esi,%esi
4227c6:	0f 88 81 00 00 00    	js     0x42284d
4227cc:	3b 35 3c 22 4c 00    	cmp    0x4c223c,%esi
4227d2:	73 79                	jae    0x42284d
4227d4:	8b c6                	mov    %esi,%eax
4227d6:	c1 f8 05             	sar    $0x5,%eax
4227d9:	89 45 0c             	mov    %eax,0xc(%ebp)
4227dc:	8b de                	mov    %esi,%ebx
4227de:	83 e3 1f             	and    $0x1f,%ebx
4227e1:	c1 e3 06             	shl    $0x6,%ebx
4227e4:	8b 04 85 40 09 4c 00 	mov    0x4c0940(,%eax,4),%eax
4227eb:	0f be 44 18 04       	movsbl 0x4(%eax,%ebx,1),%eax
4227f0:	83 e0 01             	and    $0x1,%eax
4227f3:	74 58                	je     0x42284d
4227f5:	56                   	push   %esi
4227f6:	e8 f2 80 00 00       	call   0x42a8ed
4227fb:	59                   	pop    %ecx
4227fc:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
422800:	8b 45 0c             	mov    0xc(%ebp),%eax
422803:	8b 04 85 40 09 4c 00 	mov    0x4c0940(,%eax,4),%eax
42280a:	f6 44 18 04 01       	testb  $0x1,0x4(%eax,%ebx,1)
42280f:	74 0d                	je     0x42281e
422811:	57                   	push   %edi
422812:	56                   	push   %esi
422813:	e8 4e 00 00 00       	call   0x422866
422818:	59                   	pop    %ecx
422819:	59                   	pop    %ecx
42281a:	8b f8                	mov    %eax,%edi
42281c:	eb 0e                	jmp    0x42282c
42281e:	e8 eb 53 00 00       	call   0x427c0e
422823:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
422829:	83 cf ff             	or     $0xffffffff,%edi
42282c:	89 7d e4             	mov    %edi,-0x1c(%ebp)
42282f:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
422836:	e8 0a 00 00 00       	call   0x422845
42283b:	8b c7                	mov    %edi,%eax
42283d:	eb 21                	jmp    0x422860
42283f:	8b 75 08             	mov    0x8(%ebp),%esi
422842:	8b 7d e4             	mov    -0x1c(%ebp),%edi
422845:	56                   	push   %esi
422846:	e8 42 84 00 00       	call   0x42ac8d
42284b:	59                   	pop    %ecx
42284c:	c3                   	ret
42284d:	e8 bc 53 00 00       	call   0x427c0e
422852:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
422858:	e8 b3 45 00 00       	call   0x426e10
42285d:	83 c8 ff             	or     $0xffffffff,%eax
422860:	e8 a0 42 00 00       	call   0x426b05
422865:	c3                   	ret
422866:	55                   	push   %ebp
422867:	8b ec                	mov    %esp,%ebp
422869:	53                   	push   %ebx
42286a:	56                   	push   %esi
42286b:	8b 75 08             	mov    0x8(%ebp),%esi
42286e:	8b de                	mov    %esi,%ebx
422870:	c1 fb 05             	sar    $0x5,%ebx
422873:	83 e6 1f             	and    $0x1f,%esi
422876:	c1 e6 06             	shl    $0x6,%esi
422879:	57                   	push   %edi
42287a:	8b 3c 9d 40 09 4c 00 	mov    0x4c0940(,%ebx,4),%edi
422881:	8a 4c 37 04          	mov    0x4(%edi,%esi,1),%cl
422885:	0f b6 c1             	movzbl %cl,%eax
422888:	25 80 00 00 00       	and    $0x80,%eax
42288d:	89 45 08             	mov    %eax,0x8(%ebp)
422890:	8a 44 37 24          	mov    0x24(%edi,%esi,1),%al
422894:	02 c0                	add    %al,%al
422896:	0f be d0             	movsbl %al,%edx
422899:	8b 45 0c             	mov    0xc(%ebp),%eax
42289c:	d1 fa                	sar    $1,%edx
42289e:	3d 00 40 00 00       	cmp    $0x4000,%eax
4228a3:	74 59                	je     0x4228fe
4228a5:	3d 00 80 00 00       	cmp    $0x8000,%eax
4228aa:	74 49                	je     0x4228f5
4228ac:	3d 00 00 01 00       	cmp    $0x10000,%eax
4228b1:	74 2a                	je     0x4228dd
4228b3:	3d 00 00 02 00       	cmp    $0x20000,%eax
4228b8:	74 23                	je     0x4228dd
4228ba:	3d 00 00 04 00       	cmp    $0x40000,%eax
4228bf:	75 50                	jne    0x422911
4228c1:	80 c9 80             	or     $0x80,%cl
4228c4:	88 4c 37 04          	mov    %cl,0x4(%edi,%esi,1)
4228c8:	8b 0c 9d 40 09 4c 00 	mov    0x4c0940(,%ebx,4),%ecx
4228cf:	8a 44 31 24          	mov    0x24(%ecx,%esi,1),%al
4228d3:	24 81                	and    $0x81,%al
4228d5:	0c 01                	or     $0x1,%al
4228d7:	88 44 31 24          	mov    %al,0x24(%ecx,%esi,1)
4228db:	eb 34                	jmp    0x422911
4228dd:	80 c9 80             	or     $0x80,%cl
4228e0:	88 4c 37 04          	mov    %cl,0x4(%edi,%esi,1)
4228e4:	8b 0c 9d 40 09 4c 00 	mov    0x4c0940(,%ebx,4),%ecx
4228eb:	8a 44 31 24          	mov    0x24(%ecx,%esi,1),%al
4228ef:	24 82                	and    $0x82,%al
4228f1:	0c 02                	or     $0x2,%al
4228f3:	eb e2                	jmp    0x4228d7
4228f5:	80 e1 7f             	and    $0x7f,%cl
4228f8:	88 4c 37 04          	mov    %cl,0x4(%edi,%esi,1)
4228fc:	eb 13                	jmp    0x422911
4228fe:	80 c9 80             	or     $0x80,%cl
422901:	88 4c 37 04          	mov    %cl,0x4(%edi,%esi,1)
422905:	8b 04 9d 40 09 4c 00 	mov    0x4c0940(,%ebx,4),%eax
42290c:	80 64 30 24 80       	andb   $0x80,0x24(%eax,%esi,1)
422911:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
422915:	5f                   	pop    %edi
422916:	5e                   	pop    %esi
422917:	5b                   	pop    %ebx
422918:	75 07                	jne    0x422921
42291a:	b8 00 80 00 00       	mov    $0x8000,%eax
42291f:	5d                   	pop    %ebp
422920:	c3                   	ret
422921:	f7 da                	neg    %edx
422923:	1b d2                	sbb    %edx,%edx
422925:	81 e2 00 c0 00 00    	and    $0xc000,%edx
42292b:	8d 82 00 40 00 00    	lea    0x4000(%edx),%eax
422931:	5d                   	pop    %ebp
422932:	c3                   	ret
422933:	55                   	push   %ebp
422934:	8b ec                	mov    %esp,%ebp
422936:	8b 45 08             	mov    0x8(%ebp),%eax
422939:	85 c0                	test   %eax,%eax
42293b:	75 15                	jne    0x422952
42293d:	e8 cc 52 00 00       	call   0x427c0e
422942:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
422948:	e8 c3 44 00 00       	call   0x426e10
42294d:	83 c8 ff             	or     $0xffffffff,%eax
422950:	5d                   	pop    %ebp
422951:	c3                   	ret
422952:	8b 40 10             	mov    0x10(%eax),%eax
422955:	5d                   	pop    %ebp
422956:	c3                   	ret
422957:	55                   	push   %ebp
422958:	8b ec                	mov    %esp,%ebp
42295a:	51                   	push   %ecx
42295b:	51                   	push   %ecx
42295c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
42295f:	53                   	push   %ebx
422960:	56                   	push   %esi
422961:	57                   	push   %edi
422962:	85 c9                	test   %ecx,%ecx
422964:	74 1e                	je     0x422984
422966:	8b 5d 10             	mov    0x10(%ebp),%ebx
422969:	85 db                	test   %ebx,%ebx
42296b:	74 17                	je     0x422984
42296d:	8b 75 14             	mov    0x14(%ebp),%esi
422970:	85 f6                	test   %esi,%esi
422972:	75 17                	jne    0x42298b
422974:	e8 95 52 00 00       	call   0x427c0e
422979:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
42297f:	e8 8c 44 00 00       	call   0x426e10
422984:	33 c0                	xor    %eax,%eax
422986:	5f                   	pop    %edi
422987:	5e                   	pop    %esi
422988:	5b                   	pop    %ebx
422989:	c9                   	leave
42298a:	c3                   	ret
42298b:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
42298f:	74 e3                	je     0x422974
422991:	83 c8 ff             	or     $0xffffffff,%eax
422994:	33 d2                	xor    %edx,%edx
422996:	f7 f1                	div    %ecx
422998:	3b d8                	cmp    %eax,%ebx
42299a:	77 d8                	ja     0x422974
42299c:	8b f9                	mov    %ecx,%edi
42299e:	0f af fb             	imul   %ebx,%edi
4229a1:	f7 46 0c 0c 01 00 00 	testl  $0x10c,0xc(%esi)
4229a8:	8b df                	mov    %edi,%ebx
4229aa:	74 05                	je     0x4229b1
4229ac:	8b 4e 18             	mov    0x18(%esi),%ecx
4229af:	eb 05                	jmp    0x4229b6
4229b1:	b9 00 10 00 00       	mov    $0x1000,%ecx
4229b6:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4229b9:	85 ff                	test   %edi,%edi
4229bb:	0f 84 d3 00 00 00    	je     0x422a94
4229c1:	8b 56 0c             	mov    0xc(%esi),%edx
4229c4:	81 e2 08 01 00 00    	and    $0x108,%edx
4229ca:	74 36                	je     0x422a02
4229cc:	8b 46 04             	mov    0x4(%esi),%eax
4229cf:	89 45 f8             	mov    %eax,-0x8(%ebp)
4229d2:	85 c0                	test   %eax,%eax
4229d4:	74 2c                	je     0x422a02
4229d6:	0f 88 c0 00 00 00    	js     0x422a9c
4229dc:	3b d8                	cmp    %eax,%ebx
4229de:	73 05                	jae    0x4229e5
4229e0:	8b c3                	mov    %ebx,%eax
4229e2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4229e5:	50                   	push   %eax
4229e6:	ff 75 08             	push   0x8(%ebp)
4229e9:	ff 36                	push   (%esi)
4229eb:	e8 90 c4 ff ff       	call   0x41ee80
4229f0:	8b 45 f8             	mov    -0x8(%ebp),%eax
4229f3:	29 46 04             	sub    %eax,0x4(%esi)
4229f6:	01 06                	add    %eax,(%esi)
4229f8:	83 c4 0c             	add    $0xc,%esp
4229fb:	2b d8                	sub    %eax,%ebx
4229fd:	01 45 08             	add    %eax,0x8(%ebp)
422a00:	eb 5d                	jmp    0x422a5f
422a02:	3b d9                	cmp    %ecx,%ebx
422a04:	72 5e                	jb     0x422a64
422a06:	85 d2                	test   %edx,%edx
422a08:	74 12                	je     0x422a1c
422a0a:	56                   	push   %esi
422a0b:	e8 74 02 00 00       	call   0x422c84
422a10:	59                   	pop    %ecx
422a11:	85 c0                	test   %eax,%eax
422a13:	0f 85 87 00 00 00    	jne    0x422aa0
422a19:	8b 4d fc             	mov    -0x4(%ebp),%ecx
422a1c:	8b c3                	mov    %ebx,%eax
422a1e:	85 c9                	test   %ecx,%ecx
422a20:	74 0d                	je     0x422a2f
422a22:	33 d2                	xor    %edx,%edx
422a24:	f7 f1                	div    %ecx
422a26:	8b c3                	mov    %ebx,%eax
422a28:	2b c2                	sub    %edx,%eax
422a2a:	89 45 f8             	mov    %eax,-0x8(%ebp)
422a2d:	eb 03                	jmp    0x422a32
422a2f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
422a32:	50                   	push   %eax
422a33:	ff 75 08             	push   0x8(%ebp)
422a36:	56                   	push   %esi
422a37:	e8 f7 fe ff ff       	call   0x422933
422a3c:	59                   	pop    %ecx
422a3d:	50                   	push   %eax
422a3e:	e8 1e 85 00 00       	call   0x42af61
422a43:	83 c4 0c             	add    $0xc,%esp
422a46:	83 f8 ff             	cmp    $0xffffffff,%eax
422a49:	74 51                	je     0x422a9c
422a4b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
422a4e:	8b d1                	mov    %ecx,%edx
422a50:	3b c1                	cmp    %ecx,%eax
422a52:	77 02                	ja     0x422a56
422a54:	8b d0                	mov    %eax,%edx
422a56:	01 55 08             	add    %edx,0x8(%ebp)
422a59:	2b da                	sub    %edx,%ebx