466532:	8b 14 01             	mov    (%ecx,%eax,1),%edx
466535:	8b 7c 01 1c          	mov    0x1c(%ecx,%eax,1),%edi
466539:	8b 5c 01 08          	mov    0x8(%ecx,%eax,1),%ebx
46653d:	89 55 08             	mov    %edx,0x8(%ebp)
466540:	8b 54 01 04          	mov    0x4(%ecx,%eax,1),%edx
466544:	8b 4d 18             	mov    0x18(%ebp),%ecx
466547:	8b 45 08             	mov    0x8(%ebp),%eax
46654a:	83 f9 ff             	cmp    $0xffffffff,%ecx
46654d:	74 0a                	je     0x466559
46654f:	0f af ca             	imul   %edx,%ecx
466552:	03 c1                	add    %ecx,%eax
466554:	03 f1                	add    %ecx,%esi
466556:	89 45 08             	mov    %eax,0x8(%ebp)
466559:	3b c7                	cmp    %edi,%eax
46655b:	7c 1e                	jl     0x46657b
46655d:	6a 03                	push   $0x3
46655f:	5f                   	pop    %edi
466560:	8b 75 10             	mov    0x10(%ebp),%esi
466563:	8b ce                	mov    %esi,%ecx
466565:	e8 b6 34 fa ff       	call   0x409a20
46656a:	83 26 00             	andl   $0x0,(%esi)
46656d:	8b c7                	mov    %edi,%eax
46656f:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
466576:	e9 d6 01 00 00       	jmp    0x466751
46657b:	f6 c3 21             	test   $0x21,%bl
46657e:	74 18                	je     0x466598
466580:	ff 75 10             	push   0x10(%ebp)
466583:	ff 75 14             	push   0x14(%ebp)
466586:	51                   	push   %ecx
466587:	50                   	push   %eax
466588:	57                   	push   %edi
466589:	56                   	push   %esi
46658a:	53                   	push   %ebx
46658b:	ff 75 0c             	push   0xc(%ebp)
46658e:	e8 c7 01 00 00       	call   0x46675a
466593:	e9 b9 01 00 00       	jmp    0x466751
466598:	8b 45 14             	mov    0x14(%ebp),%eax
46659b:	f6 c3 04             	test   $0x4,%bl
46659e:	74 68                	je     0x466608
4665a0:	83 f9 ff             	cmp    $0xffffffff,%ecx
4665a3:	75 63                	jne    0x466608
4665a5:	2b 7d 08             	sub    0x8(%ebp),%edi
4665a8:	84 c0                	test   %al,%al
4665aa:	74 52                	je     0x4665fe
4665ac:	f6 c3 10             	test   $0x10,%bl
4665af:	74 57                	je     0x466608
4665b1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4665b4:	e8 e6 23 00 00       	call   0x46899f
4665b9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4665bc:	e8 21 24 00 00       	call   0x4689e2
4665c1:	8b d8                	mov    %eax,%ebx
4665c3:	3b df                	cmp    %edi,%ebx
4665c5:	7e 02                	jle    0x4665c9
4665c7:	8b df                	mov    %edi,%ebx
4665c9:	53                   	push   %ebx
4665ca:	51                   	push   %ecx
4665cb:	e8 cf 23 00 00       	call   0x46899f
4665d0:	59                   	pop    %ecx
4665d1:	50                   	push   %eax
4665d2:	56                   	push   %esi
4665d3:	e8 a8 aa fb ff       	call   0x421080
4665d8:	83 c4 0c             	add    $0xc,%esp
4665db:	53                   	push   %ebx
4665dc:	51                   	push   %ecx
4665dd:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4665e0:	e8 ba 23 00 00       	call   0x46899f
4665e5:	59                   	pop    %ecx
4665e6:	50                   	push   %eax
4665e7:	53                   	push   %ebx
4665e8:	8b 4d 10             	mov    0x10(%ebp),%ecx
4665eb:	e8 5e 13 00 00       	call   0x46794e
4665f0:	50                   	push   %eax
4665f1:	e8 8a aa fb ff       	call   0x421080
4665f6:	83 c4 0c             	add    $0xc,%esp
4665f9:	e9 51 01 00 00       	jmp    0x46674f
4665fe:	f6 c3 10             	test   $0x10,%bl
466601:	74 05                	je     0x466608
466603:	57                   	push   %edi
466604:	56                   	push   %esi
466605:	57                   	push   %edi
466606:	eb e0                	jmp    0x4665e8
466608:	f6 c3 40             	test   $0x40,%bl
46660b:	74 26                	je     0x466633
46660d:	84 c0                	test   %al,%al
46660f:	74 0a                	je     0x46661b
466611:	8b 4d 0c             	mov    0xc(%ebp),%ecx
466614:	e8 a2 23 00 00       	call   0x4689bb
466619:	89 06                	mov    %eax,(%esi)
46661b:	8b 3e                	mov    (%esi),%edi
46661d:	8b 75 10             	mov    0x10(%ebp),%esi
466620:	8b ce                	mov    %esi,%ecx
466622:	e8 f9 33 fa ff       	call   0x409a20
466627:	c7 46 0c 07 00 00 00 	movl   $0x7,0xc(%esi)
46662e:	e9 1a 01 00 00       	jmp    0x46674d
466633:	f6 c3 08             	test   $0x8,%bl
466636:	74 4e                	je     0x466686
466638:	83 fa 04             	cmp    $0x4,%edx
46663b:	74 1b                	je     0x466658
46663d:	83 fa 08             	cmp    $0x8,%edx
466640:	0f 85 09 01 00 00    	jne    0x46674f
466646:	84 c0                	test   %al,%al
466648:	74 0a                	je     0x466654
46664a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
46664d:	e8 a6 36 fa ff       	call   0x409cf8
466652:	dd 1e                	fstpl  (%esi)
466654:	dd 06                	fldl   (%esi)
466656:	eb 10                	jmp    0x466668
466658:	84 c0                	test   %al,%al
46665a:	74 0a                	je     0x466666
46665c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
46665f:	e8 94 36 fa ff       	call   0x409cf8
466664:	d9 1e                	fstps  (%esi)
466666:	d9 06                	flds   (%esi)
466668:	8b 75 10             	mov    0x10(%ebp),%esi
46666b:	8b ce                	mov    %esi,%ecx
46666d:	dd 5d f0             	fstpl  -0x10(%ebp)
466670:	e8 ab 33 fa ff       	call   0x409a20
466675:	dd 45 f0             	fldl   -0x10(%ebp)
466678:	dd 1e                	fstpl  (%esi)
46667a:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
466681:	e9 c9 00 00 00       	jmp    0x46674f
466686:	4a                   	dec    %edx
466687:	0f 84 94 00 00 00    	je     0x466721
46668d:	4a                   	dec    %edx
46668e:	74 73                	je     0x466703
466690:	4a                   	dec    %edx
466691:	4a                   	dec    %edx
466692:	74 38                	je     0x4666cc
466694:	83 ea 04             	sub    $0x4,%edx
466697:	0f 85 b2 00 00 00    	jne    0x46674f
46669d:	84 c0                	test   %al,%al
46669f:	74 0d                	je     0x4666ae
4666a1:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4666a4:	e8 9d 36 fa ff       	call   0x409d46
4666a9:	89 06                	mov    %eax,(%esi)
4666ab:	89 56 04             	mov    %edx,0x4(%esi)
4666ae:	8b 3e                	mov    (%esi),%edi
4666b0:	8b 5e 04             	mov    0x4(%esi),%ebx
4666b3:	8b 75 10             	mov    0x10(%ebp),%esi
4666b6:	8b ce                	mov    %esi,%ecx
4666b8:	e8 63 33 fa ff       	call   0x409a20
4666bd:	c7 46 0c 02 00 00 00 	movl   $0x2,0xc(%esi)
4666c4:	89 5e 04             	mov    %ebx,0x4(%esi)
4666c7:	e9 81 00 00 00       	jmp    0x46674d
4666cc:	84 c0                	test   %al,%al
4666ce:	74 0a                	je     0x4666da
4666d0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4666d3:	e8 6e 36 fa ff       	call   0x409d46
4666d8:	89 06                	mov    %eax,(%esi)
4666da:	8b 3e                	mov    (%esi),%edi
4666dc:	8b 75 10             	mov    0x10(%ebp),%esi
4666df:	8b ce                	mov    %esi,%ecx
4666e1:	e8 3a 33 fa ff       	call   0x409a20
4666e6:	89 3e                	mov    %edi,(%esi)
4666e8:	f6 c3 02             	test   $0x2,%bl
4666eb:	74 0d                	je     0x4666fa
4666ed:	83 66 04 00          	andl   $0x0,0x4(%esi)
4666f1:	c7 46 0c 02 00 00 00 	movl   $0x2,0xc(%esi)
4666f8:	eb 55                	jmp    0x46674f
4666fa:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
466701:	eb 4c                	jmp    0x46674f
466703:	84 c0                	test   %al,%al
466705:	74 0b                	je     0x466712
466707:	8b 4d 0c             	mov    0xc(%ebp),%ecx
46670a:	e8 37 36 fa ff       	call   0x409d46
46670f:	66 89 06             	mov    %ax,(%esi)
466712:	f6 c3 02             	test   $0x2,%bl
466715:	74 05                	je     0x46671c
466717:	0f b7 3e             	movzwl (%esi),%edi
46671a:	eb 20                	jmp    0x46673c
46671c:	0f bf 3e             	movswl (%esi),%edi
46671f:	eb 1b                	jmp    0x46673c
466721:	84 c0                	test   %al,%al
466723:	74 0a                	je     0x46672f
466725:	8b 4d 0c             	mov    0xc(%ebp),%ecx
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)