645581:	8b 44 24 1c          	mov    0x1c(%esp),%eax
645585:	c1 e8 07             	shr    $0x7,%eax
645588:	33 d2                	xor    %edx,%edx
64558a:	52                   	push   %edx
64558b:	50                   	push   %eax
64558c:	8b 44 24 20          	mov    0x20(%esp),%eax
645590:	8b 54 24 24          	mov    0x24(%esp),%edx
645594:	0f a4 c2 19          	shld   $0x19,%eax,%edx
645598:	c1 e0 19             	shl    $0x19,%eax
64559b:	0b 04 24             	or     (%esp),%eax
64559e:	0b 54 24 04          	or     0x4(%esp),%edx
6455a2:	83 c4 08             	add    $0x8,%esp
6455a5:	33 04 24             	xor    (%esp),%eax
6455a8:	33 54 24 04          	xor    0x4(%esp),%edx
6455ac:	83 c4 08             	add    $0x8,%esp
6455af:	52                   	push   %edx
6455b0:	50                   	push   %eax
6455b1:	8b 44 24 18          	mov    0x18(%esp),%eax
6455b5:	8b 54 24 1c          	mov    0x1c(%esp),%edx
6455b9:	23 44 24 20          	and    0x20(%esp),%eax
6455bd:	23 54 24 24          	and    0x24(%esp),%edx
6455c1:	52                   	push   %edx
6455c2:	50                   	push   %eax
6455c3:	8b 44 24 20          	mov    0x20(%esp),%eax
6455c7:	8b 54 24 24          	mov    0x24(%esp),%edx
6455cb:	23 44 24 30          	and    0x30(%esp),%eax
6455cf:	23 54 24 34          	and    0x34(%esp),%edx
6455d3:	33 04 24             	xor    (%esp),%eax
6455d6:	33 54 24 04          	xor    0x4(%esp),%edx
6455da:	83 c4 08             	add    $0x8,%esp
6455dd:	52                   	push   %edx
6455de:	50                   	push   %eax
6455df:	8b 44 24 28          	mov    0x28(%esp),%eax
6455e3:	8b 54 24 2c          	mov    0x2c(%esp),%edx
6455e7:	23 44 24 30          	and    0x30(%esp),%eax
6455eb:	23 54 24 34          	and    0x34(%esp),%edx
6455ef:	33 04 24             	xor    (%esp),%eax
6455f2:	33 54 24 04          	xor    0x4(%esp),%edx
6455f6:	83 c4 08             	add    $0x8,%esp
6455f9:	03 04 24             	add    (%esp),%eax
6455fc:	13 54 24 04          	adc    0x4(%esp),%edx
645600:	83 c4 08             	add    $0x8,%esp
645603:	89 44 24 48          	mov    %eax,0x48(%esp)
645607:	89 54 24 4c          	mov    %edx,0x4c(%esp)
64560b:	8b 44 24 28          	mov    0x28(%esp),%eax
64560f:	8b 54 24 2c          	mov    0x2c(%esp),%edx
645613:	03 44 24 40          	add    0x40(%esp),%eax
645617:	13 54 24 44          	adc    0x44(%esp),%edx
64561b:	89 44 24 28          	mov    %eax,0x28(%esp)
64561f:	89 54 24 2c          	mov    %edx,0x2c(%esp)
645623:	8b 44 24 40          	mov    0x40(%esp),%eax
645627:	8b 54 24 44          	mov    0x44(%esp),%edx
64562b:	03 44 24 48          	add    0x48(%esp),%eax
64562f:	13 54 24 4c          	adc    0x4c(%esp),%edx
645633:	89 44 24 08          	mov    %eax,0x8(%esp)
645637:	89 54 24 0c          	mov    %edx,0xc(%esp)
64563b:	8b 44 24 28          	mov    0x28(%esp),%eax
64563f:	8b 54 24 2c          	mov    0x2c(%esp),%edx
645643:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
645647:	c1 ea 0e             	shr    $0xe,%edx
64564a:	52                   	push   %edx
64564b:	50                   	push   %eax
64564c:	8b 54 24 30          	mov    0x30(%esp),%edx
645650:	c1 e2 12             	shl    $0x12,%edx
645653:	33 c0                	xor    %eax,%eax
645655:	0b 04 24             	or     (%esp),%eax
645658:	0b 54 24 04          	or     0x4(%esp),%edx
64565c:	83 c4 08             	add    $0x8,%esp
64565f:	52                   	push   %edx
645660:	50                   	push   %eax
645661:	8b 44 24 30          	mov    0x30(%esp),%eax
645665:	8b 54 24 34          	mov    0x34(%esp),%edx
645669:	0f ac d0 12          	shrd   $0x12,%edx,%eax
64566d:	c1 ea 12             	shr    $0x12,%edx
645670:	52                   	push   %edx
645671:	50                   	push   %eax
645672:	8b 54 24 38          	mov    0x38(%esp),%edx
645676:	c1 e2 0e             	shl    $0xe,%edx
645679:	33 c0                	xor    %eax,%eax
64567b:	0b 04 24             	or     (%esp),%eax
64567e:	0b 54 24 04          	or     0x4(%esp),%edx
645682:	83 c4 08             	add    $0x8,%esp
645685:	33 04 24             	xor    (%esp),%eax
645688:	33 54 24 04          	xor    0x4(%esp),%edx
64568c:	83 c4 08             	add    $0x8,%esp
64568f:	52                   	push   %edx
645690:	50                   	push   %eax
645691:	8b 44 24 34          	mov    0x34(%esp),%eax
645695:	c1 e8 09             	shr    $0x9,%eax
645698:	33 d2                	xor    %edx,%edx
64569a:	52                   	push   %edx
64569b:	50                   	push   %eax
64569c:	8b 44 24 38          	mov    0x38(%esp),%eax
6456a0:	8b 54 24 3c          	mov    0x3c(%esp),%edx
6456a4:	0f a4 c2 17          	shld   $0x17,%eax,%edx
6456a8:	c1 e0 17             	shl    $0x17,%eax
6456ab:	0b 04 24             	or     (%esp),%eax
6456ae:	0b 54 24 04          	or     0x4(%esp),%edx
6456b2:	83 c4 08             	add    $0x8,%esp
6456b5:	33 04 24             	xor    (%esp),%eax
6456b8:	33 54 24 04          	xor    0x4(%esp),%edx
6456bc:	83 c4 08             	add    $0x8,%esp
6456bf:	03 04 24             	add    (%esp),%eax
6456c2:	13 54 24 04          	adc    0x4(%esp),%edx
6456c6:	52                   	push   %edx
6456c7:	50                   	push   %eax
6456c8:	8b 44 24 30          	mov    0x30(%esp),%eax
6456cc:	8b 54 24 34          	mov    0x34(%esp),%edx
6456d0:	23 44 24 38          	and    0x38(%esp),%eax
6456d4:	23 54 24 3c          	and    0x3c(%esp),%edx
6456d8:	52                   	push   %edx
6456d9:	50                   	push   %eax
6456da:	8b 44 24 38          	mov    0x38(%esp),%eax
6456de:	8b 54 24 3c          	mov    0x3c(%esp),%edx
6456e2:	f7 d0                	not    %eax
6456e4:	f7 d2                	not    %edx
6456e6:	23 44 24 48          	and    0x48(%esp),%eax
6456ea:	23 54 24 4c          	and    0x4c(%esp),%edx
6456ee:	33 04 24             	xor    (%esp),%eax
6456f1:	33 54 24 04          	xor    0x4(%esp),%edx
6456f5:	83 c4 08             	add    $0x8,%esp
6456f8:	03 04 24             	add    (%esp),%eax
6456fb:	13 54 24 04          	adc    0x4(%esp),%edx
6456ff:	83 c4 08             	add    $0x8,%esp
645702:	05 b8 d1 bb 32       	add    $0x32bbd1b8,%eax
645707:	81 d2 70 a0 6a 10    	adc    $0x106aa070,%edx
64570d:	03 84 24 c8 01 00 00 	add    0x1c8(%esp),%eax
645714:	13 94 24 cc 01 00 00 	adc    0x1cc(%esp),%edx
64571b:	89 44 24 40          	mov    %eax,0x40(%esp)
64571f:	89 54 24 44          	mov    %edx,0x44(%esp)
645723:	8b 44 24 08          	mov    0x8(%esp),%eax
645727:	8b 54 24 0c          	mov    0xc(%esp),%edx
64572b:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
64572f:	c1 ea 1c             	shr    $0x1c,%edx
645732:	52                   	push   %edx
645733:	50                   	push   %eax
645734:	8b 54 24 10          	mov    0x10(%esp),%edx
645738:	c1 e2 04             	shl    $0x4,%edx
64573b:	33 c0                	xor    %eax,%eax
64573d:	0b 04 24             	or     (%esp),%eax
645740:	0b 54 24 04          	or     0x4(%esp),%edx
645744:	83 c4 08             	add    $0x8,%esp
645747:	52                   	push   %edx
645748:	50                   	push   %eax
645749:	8b 44 24 14          	mov    0x14(%esp),%eax
64574d:	c1 e8 02             	shr    $0x2,%eax
645750:	33 d2                	xor    %edx,%edx
645752:	52                   	push   %edx
645753:	50                   	push   %eax
645754:	8b 44 24 18          	mov    0x18(%esp),%eax
645758:	8b 54 24 1c          	mov    0x1c(%esp),%edx
64575c:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
645760:	c1 e0 1e             	shl    $0x1e,%eax
645763:	0b 04 24             	or     (%esp),%eax
645766:	0b 54 24 04          	or     0x4(%esp),%edx
64576a:	83 c4 08             	add    $0x8,%esp
64576d:	33 04 24             	xor    (%esp),%eax
645770:	33 54 24 04          	xor    0x4(%esp),%edx
645774:	83 c4 08             	add    $0x8,%esp
645777:	52                   	push   %edx
645778:	50                   	push   %eax
645779:	8b 44 24 14          	mov    0x14(%esp),%eax
64577d:	c1 e8 07             	shr    $0x7,%eax
645780:	33 d2                	xor    %edx,%edx
645782:	52                   	push   %edx
645783:	50                   	push   %eax
645784:	8b 44 24 18          	mov    0x18(%esp),%eax
645788:	8b 54 24 1c          	mov    0x1c(%esp),%edx
64578c:	0f a4 c2 19          	shld   $0x19,%eax,%edx
645790:	c1 e0 19             	shl    $0x19,%eax
645793:	0b 04 24             	or     (%esp),%eax
645796:	0b 54 24 04          	or     0x4(%esp),%edx
64579a:	83 c4 08             	add    $0x8,%esp
64579d:	33 04 24             	xor    (%esp),%eax
6457a0:	33 54 24 04          	xor    0x4(%esp),%edx
6457a4:	83 c4 08             	add    $0x8,%esp
6457a7:	52                   	push   %edx
6457a8:	50                   	push   %eax
6457a9:	8b 44 24 10          	mov    0x10(%esp),%eax
6457ad:	8b 54 24 14          	mov    0x14(%esp),%edx
6457b1:	23 44 24 18          	and    0x18(%esp),%eax
6457b5:	23 54 24 1c          	and    0x1c(%esp),%edx
6457b9:	52                   	push   %edx
6457ba:	50                   	push   %eax
6457bb:	8b 44 24 18          	mov    0x18(%esp),%eax
6457bf:	8b 54 24 1c          	mov    0x1c(%esp),%edx
6457c3:	23 44 24 28          	and    0x28(%esp),%eax
6457c7:	23 54 24 2c          	and    0x2c(%esp),%edx
6457cb:	33 04 24             	xor    (%esp),%eax
6457ce:	33 54 24 04          	xor    0x4(%esp),%edx
6457d2:	83 c4 08             	add    $0x8,%esp
6457d5:	52                   	push   %edx
6457d6:	50                   	push   %eax
6457d7:	8b 44 24 20          	mov    0x20(%esp),%eax
6457db:	8b 54 24 24          	mov    0x24(%esp),%edx
6457df:	23 44 24 28          	and    0x28(%esp),%eax
6457e3:	23 54 24 2c          	and    0x2c(%esp),%edx
6457e7:	33 04 24             	xor    (%esp),%eax
6457ea:	33 54 24 04          	xor    0x4(%esp),%edx
6457ee:	83 c4 08             	add    $0x8,%esp
6457f1:	03 04 24             	add    (%esp),%eax
6457f4:	13 54 24 04          	adc    0x4(%esp),%edx
6457f8:	83 c4 08             	add    $0x8,%esp
6457fb:	89 44 24 48          	mov    %eax,0x48(%esp)
6457ff:	89 54 24 4c          	mov    %edx,0x4c(%esp)
645803:	8b 44 24 20          	mov    0x20(%esp),%eax
645807:	8b 54 24 24          	mov    0x24(%esp),%edx
64580b:	03 44 24 40          	add    0x40(%esp),%eax
64580f:	13 54 24 44          	adc    0x44(%esp),%edx
645813:	89 44 24 20          	mov    %eax,0x20(%esp)
645817:	89 54 24 24          	mov    %edx,0x24(%esp)
64581b:	8b 44 24 40          	mov    0x40(%esp),%eax
64581f:	8b 54 24 44          	mov    0x44(%esp),%edx
645823:	03 44 24 48          	add    0x48(%esp),%eax
645827:	13 54 24 4c          	adc    0x4c(%esp),%edx
64582b:	89 04 24             	mov    %eax,(%esp)
64582e:	89 54 24 04          	mov    %edx,0x4(%esp)
645832:	8b 44 24 20          	mov    0x20(%esp),%eax
645836:	8b 54 24 24          	mov    0x24(%esp),%edx
64583a:	0f ac d0 0e          	shrd   $0xe,%edx,%eax
64583e:	c1 ea 0e             	shr    $0xe,%edx
645841:	52                   	push   %edx
645842:	50                   	push   %eax
645843:	8b 54 24 28          	mov    0x28(%esp),%edx
645847:	c1 e2 12             	shl    $0x12,%edx
64584a:	33 c0                	xor    %eax,%eax
64584c:	0b 04 24             	or     (%esp),%eax
64584f:	0b 54 24 04          	or     0x4(%esp),%edx
645853:	83 c4 08             	add    $0x8,%esp
645856:	52                   	push   %edx
645857:	50                   	push   %eax
645858:	8b 44 24 28          	mov    0x28(%esp),%eax
64585c:	8b 54 24 2c          	mov    0x2c(%esp),%edx
645860:	0f ac d0 12          	shrd   $0x12,%edx,%eax
645864:	c1 ea 12             	shr    $0x12,%edx
645867:	52                   	push   %edx
645868:	50                   	push   %eax
645869:	8b 54 24 30          	mov    0x30(%esp),%edx
64586d:	c1 e2 0e             	shl    $0xe,%edx
645870:	33 c0                	xor    %eax,%eax
645872:	0b 04 24             	or     (%esp),%eax
645875:	0b 54 24 04          	or     0x4(%esp),%edx
645879:	83 c4 08             	add    $0x8,%esp
64587c:	33 04 24             	xor    (%esp),%eax
64587f:	33 54 24 04          	xor    0x4(%esp),%edx
645883:	83 c4 08             	add    $0x8,%esp
645886:	52                   	push   %edx
645887:	50                   	push   %eax
645888:	8b 44 24 2c          	mov    0x2c(%esp),%eax
64588c:	c1 e8 09             	shr    $0x9,%eax
64588f:	33 d2                	xor    %edx,%edx
645891:	52                   	push   %edx
645892:	50                   	push   %eax
645893:	8b 44 24 30          	mov    0x30(%esp),%eax
645897:	8b 54 24 34          	mov    0x34(%esp),%edx
64589b:	0f a4 c2 17          	shld   $0x17,%eax,%edx
64589f:	c1 e0 17             	shl    $0x17,%eax
6458a2:	0b 04 24             	or     (%esp),%eax
6458a5:	0b 54 24 04          	or     0x4(%esp),%edx
6458a9:	83 c4 08             	add    $0x8,%esp
6458ac:	33 04 24             	xor    (%esp),%eax
6458af:	33 54 24 04          	xor    0x4(%esp),%edx
6458b3:	83 c4 08             	add    $0x8,%esp
6458b6:	03 44 24 38          	add    0x38(%esp),%eax
6458ba:	13 54 24 3c          	adc    0x3c(%esp),%edx
6458be:	52                   	push   %edx
6458bf:	50                   	push   %eax
6458c0:	8b 44 24 28          	mov    0x28(%esp),%eax
6458c4:	8b 54 24 2c          	mov    0x2c(%esp),%edx
6458c8:	23 44 24 30          	and    0x30(%esp),%eax
6458cc:	23 54 24 34          	and    0x34(%esp),%edx
6458d0:	52                   	push   %edx
6458d1:	50                   	push   %eax
6458d2:	8b 44 24 30          	mov    0x30(%esp),%eax
6458d6:	8b 54 24 34          	mov    0x34(%esp),%edx
6458da:	f7 d0                	not    %eax
6458dc:	f7 d2                	not    %edx
6458de:	23 44 24 40          	and    0x40(%esp),%eax
6458e2:	23 54 24 44          	and    0x44(%esp),%edx
6458e6:	33 04 24             	xor    (%esp),%eax
6458e9:	33 54 24 04          	xor    0x4(%esp),%edx
6458ed:	83 c4 08             	add    $0x8,%esp
6458f0:	03 04 24             	add    (%esp),%eax
6458f3:	13 54 24 04          	adc    0x4(%esp),%edx
6458f7:	83 c4 08             	add    $0x8,%esp
6458fa:	05 c8 d0 d2 b8       	add    $0xb8d2d0c8,%eax
6458ff:	81 d2 16 c1 a4 19    	adc    $0x19a4c116,%edx
645905:	03 84 24 d0 01 00 00 	add    0x1d0(%esp),%eax
64590c:	13 94 24 d4 01 00 00 	adc    0x1d4(%esp),%edx
645913:	89 44 24 40          	mov    %eax,0x40(%esp)
645917:	89 54 24 44          	mov    %edx,0x44(%esp)
64591b:	8b 04 24             	mov    (%esp),%eax
64591e:	8b 54 24 04          	mov    0x4(%esp),%edx
645922:	0f ac d0 1c          	shrd   $0x1c,%edx,%eax
645926:	c1 ea 1c             	shr    $0x1c,%edx
645929:	52                   	push   %edx
64592a:	50                   	push   %eax
64592b:	8b 54 24 08          	mov    0x8(%esp),%edx
64592f:	c1 e2 04             	shl    $0x4,%edx
645932:	33 c0                	xor    %eax,%eax
645934:	0b 04 24             	or     (%esp),%eax
645937:	0b 54 24 04          	or     0x4(%esp),%edx
64593b:	83 c4 08             	add    $0x8,%esp
64593e:	52                   	push   %edx
64593f:	50                   	push   %eax
645940:	8b 44 24 0c          	mov    0xc(%esp),%eax
645944:	c1 e8 02             	shr    $0x2,%eax
645947:	33 d2                	xor    %edx,%edx
645949:	52                   	push   %edx
64594a:	50                   	push   %eax
64594b:	8b 44 24 10          	mov    0x10(%esp),%eax
64594f:	8b 54 24 14          	mov    0x14(%esp),%edx
645953:	0f a4 c2 1e          	shld   $0x1e,%eax,%edx
645957:	c1 e0 1e             	shl    $0x1e,%eax
64595a:	0b 04 24             	or     (%esp),%eax
64595d:	0b 54 24 04          	or     0x4(%esp),%edx
645961:	83 c4 08             	add    $0x8,%esp
645964:	33 04 24             	xor    (%esp),%eax
645967:	33 54 24 04          	xor    0x4(%esp),%edx
64596b:	83 c4 08             	add    $0x8,%esp
64596e:	52                   	push   %edx
64596f:	50                   	push   %eax
645970:	8b 44 24 0c          	mov    0xc(%esp),%eax
645974:	c1 e8 07             	shr    $0x7,%eax
645977:	33 d2                	xor    %edx,%edx
645979:	52                   	push   %edx
64597a:	50                   	push   %eax
64597b:	8b 44 24 10          	mov    0x10(%esp),%eax
64597f:	8b 54 24 14          	mov    0x14(%esp),%edx
645983:	0f a4 c2 19          	shld   $0x19,%eax,%edx
645987:	c1 e0 19             	shl    $0x19,%eax
64598a:	0b 04 24             	or     (%esp),%eax
64598d:	0b 54 24 04          	or     0x4(%esp),%edx
645991:	83 c4 08             	add    $0x8,%esp
645994:	33 04 24             	xor    (%esp),%eax
645997:	33 54 24 04          	xor    0x4(%esp),%edx
64599b:	83 c4 08             	add    $0x8,%esp
64599e:	52                   	push   %edx
64599f:	50                   	push   %eax
6459a0:	8b 44 24 08          	mov    0x8(%esp),%eax
6459a4:	8b 54 24 0c          	mov    0xc(%esp),%edx
6459a8:	23 44 24 10          	and    0x10(%esp),%eax
6459ac:	23 54 24 14          	and    0x14(%esp),%edx
6459b0:	52                   	push   %edx
6459b1:	50                   	push   %eax
6459b2:	8b 44 24 10          	mov    0x10(%esp),%eax
6459b6:	8b 54 24 14          	mov    0x14(%esp),%edx
6459ba:	23 44 24 20          	and    0x20(%esp),%eax
6459be:	23 54 24 24          	and    0x24(%esp),%edx
6459c2:	33 04 24             	xor    (%esp),%eax