466728:	e8 19 36 fa ff       	call   0x409d46
46672d:	88 06                	mov    %al,(%esi)
46672f:	f6 c3 02             	test   $0x2,%bl
466732:	74 05                	je     0x466739
466734:	0f b6 3e             	movzbl (%esi),%edi
466737:	eb 03                	jmp    0x46673c
466739:	0f be 3e             	movsbl (%esi),%edi
46673c:	8b 75 10             	mov    0x10(%ebp),%esi
46673f:	8b ce                	mov    %esi,%ecx
466741:	e8 da 32 fa ff       	call   0x409a20
466746:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
46674d:	89 3e                	mov    %edi,(%esi)
46674f:	33 c0                	xor    %eax,%eax
466751:	5f                   	pop    %edi
466752:	5e                   	pop    %esi
466753:	5b                   	pop    %ebx
466754:	8b e5                	mov    %ebp,%esp
466756:	5d                   	pop    %ebp
466757:	c2 14 00             	ret    $0x14
46675a:	55                   	push   %ebp
46675b:	8b ec                	mov    %esp,%ebp
46675d:	83 ec 14             	sub    $0x14,%esp
466760:	f6 45 0c 04          	testb  $0x4,0xc(%ebp)
466764:	53                   	push   %ebx
466765:	56                   	push   %esi
466766:	57                   	push   %edi
466767:	0f 84 63 01 00 00    	je     0x4668d0
46676d:	83 7d 1c ff          	cmpl   $0xffffffff,0x1c(%ebp)
466771:	0f 85 59 01 00 00    	jne    0x4668d0
466777:	8b 5d 14             	mov    0x14(%ebp),%ebx
46677a:	2b 5d 18             	sub    0x18(%ebp),%ebx
46677d:	80 7d 20 00          	cmpb   $0x0,0x20(%ebp)
466781:	0f 84 be 00 00 00    	je     0x466845
466787:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46678a:	e8 38 10 fa ff       	call   0x4077c7
46678f:	f6 45 0c 01          	testb  $0x1,0xc(%ebp)
466793:	8b 75 08             	mov    0x8(%ebp),%esi
466796:	8b ce                	mov    %esi,%ecx
466798:	74 61                	je     0x4667fb
46679a:	e8 f8 31 fa ff       	call   0x409997
46679f:	8b 46 08             	mov    0x8(%esi),%eax
4667a2:	39 58 04             	cmp    %ebx,0x4(%eax)
4667a5:	7d 0e                	jge    0x4667b5
4667a7:	8b ce                	mov    %esi,%ecx
4667a9:	e8 e9 31 fa ff       	call   0x409997
4667ae:	8b 46 08             	mov    0x8(%esi),%eax
4667b1:	8b 58 04             	mov    0x4(%eax),%ebx
4667b4:	43                   	inc    %ebx
4667b5:	8b ce                	mov    %esi,%ecx
4667b7:	e8 db 31 fa ff       	call   0x409997
4667bc:	53                   	push   %ebx
4667bd:	6a 00                	push   $0x0
4667bf:	ff 76 08             	push   0x8(%esi)
4667c2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4667c5:	e8 e1 11 fa ff       	call   0x4079ab
4667ca:	8b 4d 24             	mov    0x24(%ebp),%ecx
4667cd:	8d 45 f0             	lea    -0x10(%ebp),%eax
4667d0:	50                   	push   %eax
4667d1:	e8 c6 33 fa ff       	call   0x409b9c
4667d6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4667d9:	8d 53 01             	lea    0x1(%ebx),%edx
4667dc:	e8 48 f3 ff ff       	call   0x465b29
4667e1:	8b f0                	mov    %eax,%esi
4667e3:	53                   	push   %ebx
4667e4:	56                   	push   %esi
4667e5:	ff 75 10             	push   0x10(%ebp)
4667e8:	e8 93 a8 fb ff       	call   0x421080
4667ed:	56                   	push   %esi
4667ee:	e8 79 a8 fb ff       	call   0x42106c
4667f3:	83 c4 10             	add    $0x10,%esp
4667f6:	e9 9b 01 00 00       	jmp    0x466996
4667fb:	d1 eb                	shr    $1,%ebx
4667fd:	e8 95 31 fa ff       	call   0x409997
466802:	8b 46 08             	mov    0x8(%esi),%eax
466805:	39 58 04             	cmp    %ebx,0x4(%eax)
466808:	7d 0e                	jge    0x466818
46680a:	8b ce                	mov    %esi,%ecx
46680c:	e8 86 31 fa ff       	call   0x409997
466811:	8b 46 08             	mov    0x8(%esi),%eax
466814:	8b 58 04             	mov    0x4(%eax),%ebx
466817:	43                   	inc    %ebx
466818:	8b ce                	mov    %esi,%ecx
46681a:	e8 78 31 fa ff       	call   0x409997
46681f:	53                   	push   %ebx
466820:	6a 00                	push   $0x0
466822:	ff 76 08             	push   0x8(%esi)
466825:	8d 4d f0             	lea    -0x10(%ebp),%ecx
466828:	e8 7e 11 fa ff       	call   0x4079ab
46682d:	8b 4d 24             	mov    0x24(%ebp),%ecx
466830:	8d 45 f0             	lea    -0x10(%ebp),%eax
466833:	50                   	push   %eax
466834:	e8 63 33 fa ff       	call   0x409b9c
466839:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
46683c:	50                   	push   %eax
46683d:	ff 75 f0             	push   -0x10(%ebp)
466840:	e9 fa 00 00 00       	jmp    0x46693f
466845:	f6 45 0c 01          	testb  $0x1,0xc(%ebp)
466849:	74 3f                	je     0x46688a
46684b:	8d 73 01             	lea    0x1(%ebx),%esi
46684e:	56                   	push   %esi
46684f:	e8 a2 a7 fb ff       	call   0x420ff6
466854:	53                   	push   %ebx
466855:	ff 75 10             	push   0x10(%ebp)
466858:	8b f8                	mov    %eax,%edi
46685a:	57                   	push   %edi
46685b:	e8 20 a8 fb ff       	call   0x421080
466860:	83 c4 10             	add    $0x10,%esp
466863:	c6 04 1f 00          	movb   $0x0,(%edi,%ebx,1)
466867:	8b d6                	mov    %esi,%edx
466869:	8b cf                	mov    %edi,%ecx
46686b:	e8 ce ee ff ff       	call   0x46573e
466870:	8b 4d 24             	mov    0x24(%ebp),%ecx
466873:	8b f0                	mov    %eax,%esi
466875:	56                   	push   %esi
466876:	e8 7d 33 fa ff       	call   0x409bf8
46687b:	56                   	push   %esi
46687c:	e8 eb a7 fb ff       	call   0x42106c
466881:	57                   	push   %edi
466882:	e8 e5 a7 fb ff       	call   0x42106c
466887:	59                   	pop    %ecx
466888:	eb 40                	jmp    0x4668ca
46688a:	d1 eb                	shr    $1,%ebx
46688c:	33 c9                	xor    %ecx,%ecx
46688e:	6a 02                	push   $0x2
466890:	5a                   	pop    %edx
466891:	8d 43 01             	lea    0x1(%ebx),%eax
466894:	f7 e2                	mul    %edx
466896:	0f 90 c1             	seto   %cl
466899:	f7 d9                	neg    %ecx
46689b:	0b c8                	or     %eax,%ecx
46689d:	51                   	push   %ecx
46689e:	e8 53 a7 fb ff       	call   0x420ff6
4668a3:	8d 34 1b             	lea    (%ebx,%ebx,1),%esi
4668a6:	8b f8                	mov    %eax,%edi
4668a8:	56                   	push   %esi
4668a9:	ff 75 10             	push   0x10(%ebp)
4668ac:	57                   	push   %edi
4668ad:	e8 ce a7 fb ff       	call   0x421080
4668b2:	8b 4d 24             	mov    0x24(%ebp),%ecx
4668b5:	83 c4 10             	add    $0x10,%esp
4668b8:	33 c0                	xor    %eax,%eax
4668ba:	66 89 04 3e          	mov    %ax,(%esi,%edi,1)
4668be:	57                   	push   %edi
4668bf:	e8 34 33 fa ff       	call   0x409bf8
4668c4:	57                   	push   %edi
4668c5:	e8 a2 a7 fb ff       	call   0x42106c
4668ca:	59                   	pop    %ecx
4668cb:	e9 ce 00 00 00       	jmp    0x46699e
4668d0:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4668d3:	e8 ef 0e fa ff       	call   0x4077c7
4668d8:	80 7d 20 00          	cmpb   $0x0,0x20(%ebp)
4668dc:	74 6e                	je     0x46694c
4668de:	8b 75 08             	mov    0x8(%ebp),%esi
4668e1:	8b ce                	mov    %esi,%ecx
4668e3:	e8 12 fd fe ff       	call   0x4565fa
4668e8:	8b ce                	mov    %esi,%ecx
4668ea:	84 c0                	test   %al,%al
4668ec:	74 07                	je     0x4668f5
4668ee:	e8 a9 33 fa ff       	call   0x409c9c
4668f3:	eb 0d                	jmp    0x466902
4668f5:	e8 9d 30 fa ff       	call   0x409997
4668fa:	8b 46 08             	mov    0x8(%esi),%eax
4668fd:	8b 00                	mov    (%eax),%eax
4668ff:	0f b7 00             	movzwl (%eax),%eax
466902:	50                   	push   %eax
466903:	8d 4d f0             	lea    -0x10(%ebp),%ecx
466906:	e8 64 f4 ff ff       	call   0x465d6f
46690b:	8b 4d 24             	mov    0x24(%ebp),%ecx
46690e:	8d 45 f0             	lea    -0x10(%ebp),%eax
466911:	50                   	push   %eax
466912:	e8 85 32 fa ff       	call   0x409b9c
466917:	6a 00                	push   $0x0
466919:	8d 4d f0             	lea    -0x10(%ebp),%ecx
46691c:	e8 31 12 fa ff       	call   0x407b52
466921:	f6 45 0c 01          	testb  $0x1,0xc(%ebp)
466925:	74 0c                	je     0x466933
466927:	8a 00                	mov    (%eax),%al
466929:	88 45 23             	mov    %al,0x23(%ebp)
46692c:	8d 45 23             	lea    0x23(%ebp),%eax
46692f:	6a 01                	push   $0x1
466931:	eb 0b                	jmp    0x46693e
466933:	0f b7 00             	movzwl (%eax),%eax
466936:	89 45 20             	mov    %eax,0x20(%ebp)
466939:	8d 45 20             	lea    0x20(%ebp),%eax
46693c:	6a 02                	push   $0x2
46693e:	50                   	push   %eax
46693f:	ff 75 10             	push   0x10(%ebp)
466942:	e8 39 a7 fb ff       	call   0x421080
466947:	83 c4 0c             	add    $0xc,%esp
46694a:	eb 4a                	jmp    0x466996
46694c:	f6 45 0c 01          	testb  $0x1,0xc(%ebp)
466950:	74 1c                	je     0x46696e
466952:	6a 01                	push   $0x1
466954:	ff 75 10             	push   0x10(%ebp)
466957:	8d 45 23             	lea    0x23(%ebp),%eax
46695a:	50                   	push   %eax
46695b:	e8 20 a7 fb ff       	call   0x421080
466960:	66 0f be 45 23       	movsbw 0x23(%ebp),%ax
466965:	83 c4 0c             	add    $0xc,%esp
466968:	0f b7 c0             	movzwl %ax,%eax
46696b:	50                   	push   %eax
46696c:	eb 14                	jmp    0x466982
46696e:	6a 02                	push   $0x2
466970:	ff 75 10             	push   0x10(%ebp)
466973:	8d 45 20             	lea    0x20(%ebp),%eax
466976:	50                   	push   %eax
466977:	e8 04 a7 fb ff       	call   0x421080
46697c:	83 c4 0c             	add    $0xc,%esp
46697f:	ff 75 20             	push   0x20(%ebp)
466982:	8d 4d f0             	lea    -0x10(%ebp),%ecx
466985:	e8 e5 f3 ff ff       	call   0x465d6f
46698a:	8b 4d 24             	mov    0x24(%ebp),%ecx
46698d:	8d 45 f0             	lea    -0x10(%ebp),%eax
466990:	50                   	push   %eax
466991:	e8 06 32 fa ff       	call   0x409b9c
466996:	8d 4d f0             	lea    -0x10(%ebp),%ecx
466999:	e8 c6 f0 f9 ff       	call   0x405a64
46699e:	5f                   	pop    %edi
46699f:	5e                   	pop    %esi
4669a0:	33 c0                	xor    %eax,%eax
4669a2:	5b                   	pop    %ebx
4669a3:	8b e5                	mov    %ebp,%esp
4669a5:	5d                   	pop    %ebp
4669a6:	c2 20 00             	ret    $0x20
4669a9:	55                   	push   %ebp
4669aa:	8b ec                	mov    %esp,%ebp
4669ac:	83 ec 20             	sub    $0x20,%esp
4669af:	53                   	push   %ebx
4669b0:	56                   	push   %esi
4669b1:	57                   	push   %edi
4669b2:	8b f9                	mov    %ecx,%edi
4669b4:	8d 4d 14             	lea    0x14(%ebp),%ecx
4669b7:	89 7d f8             	mov    %edi,-0x8(%ebp)
4669ba:	e8 da 29 fa ff       	call   0x409399
4669bf:	84 c0                	test   %al,%al
4669c1:	0f 85 b6 00 00 00    	jne    0x466a7d
4669c7:	8b 45 0c             	mov    0xc(%ebp),%eax
4669ca:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
4669ce:	75 1d                	jne    0x4669ed
4669d0:	8b 75 10             	mov    0x10(%ebp),%esi
4669d3:	8b ce                	mov    %esi,%ecx
4669d5:	8b 7f 08             	mov    0x8(%edi),%edi
4669d8:	e8 43 30 fa ff       	call   0x409a20
4669dd:	89 3e                	mov    %edi,(%esi)
4669df:	33 ff                	xor    %edi,%edi
4669e1:	c7 46 0c 07 00 00 00 	movl   $0x7,0xc(%esi)
4669e8:	e9 8d 01 00 00       	jmp    0x466b7a
4669ed:	33 db                	xor    %ebx,%ebx
4669ef:	43                   	inc    %ebx
4669f0:	39 58 08             	cmp    %ebx,0x8(%eax)
4669f3:	0f 85 39 01 00 00    	jne    0x466b32
4669f9:	8b 40 04             	mov    0x4(%eax),%eax
4669fc:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4669ff:	33 ff                	xor    %edi,%edi
466a01:	89 7d 0c             	mov    %edi,0xc(%ebp)
466a04:	89 7d 08             	mov    %edi,0x8(%ebp)
466a07:	ff 30                	push   (%eax)
466a09:	89 7d ec             	mov    %edi,-0x14(%ebp)
466a0c:	e8 af 30 fa ff       	call   0x409ac0
466a11:	83 7d f0 04          	cmpl   $0x4,-0x10(%ebp)
466a15:	74 19                	je     0x466a30
466a17:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
466a1a:	e8 7d 32 fa ff       	call   0x409c9c
466a1f:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
466a22:	8d 70 ff             	lea    -0x1(%eax),%esi
466a25:	e8 f6 2f fa ff       	call   0x409a20
466a2a:	89 5d f0             	mov    %ebx,-0x10(%ebp)
466a2d:	89 75 e4             	mov    %esi,-0x1c(%ebp)
466a30:	8b 4d f8             	mov    -0x8(%ebp),%ecx
466a33:	8d 45 08             	lea    0x8(%ebp),%eax
466a36:	50                   	push   %eax
466a37:	8d 45 0c             	lea    0xc(%ebp),%eax
466a3a:	50                   	push   %eax
466a3b:	8d 45 e4             	lea    -0x1c(%ebp),%eax
466a3e:	50                   	push   %eax
466a3f:	e8 d8 f9 ff ff       	call   0x46641c
466a44:	8b 75 10             	mov    0x10(%ebp),%esi
466a47:	8b ce                	mov    %esi,%ecx
466a49:	89 45 0c             	mov    %eax,0xc(%ebp)
466a4c:	85 c0                	test   %eax,%eax
466a4e:	75 0f                	jne    0x466a5f
466a50:	e8 cb 2f fa ff       	call   0x409a20
466a55:	89 3e                	mov    %edi,(%esi)
466a57:	8b 7d 08             	mov    0x8(%ebp),%edi
466a5a:	89 5e 0c             	mov    %ebx,0xc(%esi)
466a5d:	eb 11                	jmp    0x466a70
466a5f:	e8 bc 2f fa ff       	call   0x409a20
466a64:	8b 45 0c             	mov    0xc(%ebp),%eax
466a67:	c7 46 0c 07 00 00 00 	movl   $0x7,0xc(%esi)
466a6e:	89 06                	mov    %eax,(%esi)
466a70:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
466a73:	e8 a8 2f fa ff       	call   0x409a20
466a78:	e9 fd 00 00 00       	jmp    0x466b7a
466a7d:	f6 45 08 03          	testb  $0x3,0x8(%ebp)
466a81:	0f 85 8d 00 00 00    	jne    0x466b14
466a87:	f6 45 08 0c          	testb  $0xc,0x8(%ebp)
466a8b:	6a 02                	push   $0x2
466a8d:	5f                   	pop    %edi
466a8e:	0f 84 e6 00 00 00    	je     0x466b7a
466a94:	8b 45 0c             	mov    0xc(%ebp),%eax
466a97:	83 cb ff             	or     $0xffffffff,%ebx
466a9a:	8b 70 08             	mov    0x8(%eax),%esi
466a9d:	3b f7                	cmp    %edi,%esi
466a9f:	76 19                	jbe    0x466aba
466aa1:	8b 75 10             	mov    0x10(%ebp),%esi
466aa4:	8b ce                	mov    %esi,%ecx
466aa6:	e8 75 2f fa ff       	call   0x409a20
466aab:	83 26 00             	andl   $0x0,(%esi)
466aae:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
466ab5:	e9 c0 00 00 00       	jmp    0x466b7a
466aba:	75 3d                	jne    0x466af9
466abc:	8b 40 04             	mov    0x4(%eax),%eax
466abf:	6a 29                	push   $0x29
466ac1:	8b 38                	mov    (%eax),%edi
466ac3:	8b cf                	mov    %edi,%ecx
466ac5:	e8 e4 32 fa ff       	call   0x409dae
466aca:	84 c0                	test   %al,%al
466acc:	75 28                	jne    0x466af6
466ace:	8b cf                	mov    %edi,%ecx
466ad0:	e8 c7 31 fa ff       	call   0x409c9c
466ad5:	8b d8                	mov    %eax,%ebx
466ad7:	4b                   	dec    %ebx
466ad8:	79 1c                	jns    0x466af6
466ada:	8b 75 10             	mov    0x10(%ebp),%esi
466add:	8b ce                	mov    %esi,%ecx
466adf:	e8 3c 2f fa ff       	call   0x409a20
466ae4:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
466aeb:	83 26 00             	andl   $0x0,(%esi)
466aee:	6a 03                	push   $0x3
466af0:	5f                   	pop    %edi
466af1:	e9 84 00 00 00       	jmp    0x466b7a
466af6:	8b 45 0c             	mov    0xc(%ebp),%eax
466af9:	8b 40 04             	mov    0x4(%eax),%eax
466afc:	8b 4d f8             	mov    -0x8(%ebp),%ecx
466aff:	53                   	push   %ebx
466b00:	6a 01                	push   $0x1
466b02:	ff 75 10             	push   0x10(%ebp)
466b05:	ff 74 b0 fc          	push   -0x4(%eax,%esi,4)
466b09:	8d 45 14             	lea    0x14(%ebp),%eax
466b0c:	50                   	push   %eax
466b0d:	e8 ed f9 ff ff       	call   0x4664ff
466b12:	eb 64                	jmp    0x466b78
466b14:	8b 45 0c             	mov    0xc(%ebp),%eax
466b17:	33 db                	xor    %ebx,%ebx
466b19:	43                   	inc    %ebx
466b1a:	83 ce ff             	or     $0xffffffff,%esi
466b1d:	39 58 08             	cmp    %ebx,0x8(%eax)
466b20:	76 14                	jbe    0x466b36
466b22:	8b 75 10             	mov    0x10(%ebp),%esi
466b25:	8b ce                	mov    %esi,%ecx