466593:	89 08                	mov    %ecx,(%eax)
466595:	8b 45 08             	mov    0x8(%ebp),%eax
466598:	8b 40 0c             	mov    0xc(%eax),%eax
46659b:	c1 e8 02             	shr    $0x2,%eax
46659e:	a8 01                	test   $0x1,%al
4665a0:	8b 45 08             	mov    0x8(%ebp),%eax
4665a3:	74 0b                	je     0x4665b0
4665a5:	6a fc                	push   $0xfffffffc
4665a7:	59                   	pop    %ecx
4665a8:	83 c0 0c             	add    $0xc,%eax
4665ab:	f0 21 08             	lock and %ecx,(%eax)
4665ae:	eb 21                	jmp    0x4665d1
4665b0:	8b 40 0c             	mov    0xc(%eax),%eax
4665b3:	83 e0 41             	and    $0x41,%eax
4665b6:	3c 41                	cmp    $0x41,%al
4665b8:	75 17                	jne    0x4665d1
4665ba:	8b 45 08             	mov    0x8(%ebp),%eax
4665bd:	8b 40 0c             	mov    0xc(%eax),%eax
4665c0:	c1 e8 08             	shr    $0x8,%eax
4665c3:	a8 01                	test   $0x1,%al
4665c5:	75 0a                	jne    0x4665d1
4665c7:	8b 45 08             	mov    0x8(%ebp),%eax
4665ca:	c7 40 18 00 02 00 00 	movl   $0x200,0x18(%eax)
4665d1:	8b 45 08             	mov    0x8(%ebp),%eax
4665d4:	8b 40 10             	mov    0x10(%eax),%eax
4665d7:	56                   	push   %esi
4665d8:	57                   	push   %edi
4665d9:	53                   	push   %ebx
4665da:	50                   	push   %eax
4665db:	e8 54 35 01 00       	call   0x479b34
4665e0:	23 c2                	and    %edx,%eax
4665e2:	83 c4 10             	add    $0x10,%esp
4665e5:	83 f8 ff             	cmp    $0xffffffff,%eax
4665e8:	75 04                	jne    0x4665ee
4665ea:	0b c0                	or     %eax,%eax
4665ec:	eb 02                	jmp    0x4665f0
4665ee:	33 c0                	xor    %eax,%eax
4665f0:	5f                   	pop    %edi
4665f1:	5e                   	pop    %esi
4665f2:	5b                   	pop    %ebx
4665f3:	5d                   	pop    %ebp
4665f4:	c3                   	ret
4665f5:	8b ff                	mov    %edi,%edi
4665f7:	55                   	push   %ebp
4665f8:	8b ec                	mov    %esp,%ebp
4665fa:	8b 01                	mov    (%ecx),%eax
4665fc:	8b 40 0c             	mov    0xc(%eax),%eax
4665ff:	23 45 08             	and    0x8(%ebp),%eax
466602:	2b 45 08             	sub    0x8(%ebp),%eax
466605:	f7 d8                	neg    %eax
466607:	1b c0                	sbb    %eax,%eax
466609:	40                   	inc    %eax
46660a:	5d                   	pop    %ebp
46660b:	c2 04 00             	ret    $0x4
46660e:	8b 01                	mov    (%ecx),%eax
466610:	8b 40 10             	mov    0x10(%eax),%eax
466613:	c3                   	ret
466614:	8b ff                	mov    %edi,%edi
466616:	55                   	push   %ebp
466617:	8b ec                	mov    %esp,%ebp
466619:	8b 11                	mov    (%ecx),%edx
46661b:	56                   	push   %esi
46661c:	8b 75 08             	mov    0x8(%ebp),%esi
46661f:	83 c2 0c             	add    $0xc,%edx
466622:	f7 d6                	not    %esi
466624:	8b 02                	mov    (%edx),%eax
466626:	8b c8                	mov    %eax,%ecx
466628:	23 ce                	and    %esi,%ecx
46662a:	f0 0f b1 0a          	lock cmpxchg %ecx,(%edx)
46662e:	75 f6                	jne    0x466626
466630:	23 45 08             	and    0x8(%ebp),%eax
466633:	f7 d8                	neg    %eax
466635:	5e                   	pop    %esi
466636:	1b c0                	sbb    %eax,%eax
466638:	f7 d8                	neg    %eax
46663a:	5d                   	pop    %ebp
46663b:	c2 04 00             	ret    $0x4
46663e:	8b ff                	mov    %edi,%edi
466640:	55                   	push   %ebp
466641:	8b ec                	mov    %esp,%ebp
466643:	ff 75 10             	push   0x10(%ebp)
466646:	8b 45 0c             	mov    0xc(%ebp),%eax
466649:	99                   	cltd
46664a:	52                   	push   %edx
46664b:	50                   	push   %eax
46664c:	ff 75 08             	push   0x8(%ebp)
46664f:	e8 c8 fe ff ff       	call   0x46651c
466654:	83 c4 10             	add    $0x10,%esp
466657:	5d                   	pop    %ebp
466658:	c3                   	ret
466659:	8b ff                	mov    %edi,%edi
46665b:	55                   	push   %ebp
46665c:	8b ec                	mov    %esp,%ebp
46665e:	ff 75 14             	push   0x14(%ebp)
466661:	ff 75 10             	push   0x10(%ebp)
466664:	ff 75 0c             	push   0xc(%ebp)
466667:	ff 75 08             	push   0x8(%ebp)
46666a:	e8 4d fd ff ff       	call   0x4663bc
46666f:	83 c4 10             	add    $0x10,%esp
466672:	5d                   	pop    %ebp
466673:	c3                   	ret
466674:	8b ff                	mov    %edi,%edi
466676:	55                   	push   %ebp
466677:	8b ec                	mov    %esp,%ebp
466679:	ff 75 14             	push   0x14(%ebp)
46667c:	ff 75 10             	push   0x10(%ebp)
46667f:	ff 75 0c             	push   0xc(%ebp)
466682:	ff 75 08             	push   0x8(%ebp)
466685:	e8 92 fe ff ff       	call   0x46651c
46668a:	83 c4 10             	add    $0x10,%esp
46668d:	5d                   	pop    %ebp
46668e:	c3                   	ret
46668f:	8b ff                	mov    %edi,%edi
466691:	55                   	push   %ebp
466692:	8b ec                	mov    %esp,%ebp
466694:	ff 75 10             	push   0x10(%ebp)
466697:	8b 45 0c             	mov    0xc(%ebp),%eax
46669a:	99                   	cltd
46669b:	52                   	push   %edx
46669c:	50                   	push   %eax
46669d:	ff 75 08             	push   0x8(%ebp)
4666a0:	e8 17 fd ff ff       	call   0x4663bc
4666a5:	83 c4 10             	add    $0x10,%esp
4666a8:	5d                   	pop    %ebp
4666a9:	c3                   	ret
4666aa:	6a 0c                	push   $0xc
4666ac:	68 b8 4a 4b 00       	push   $0x4b4ab8
4666b1:	e8 aa a2 fd ff       	call   0x440960
4666b6:	33 c0                	xor    %eax,%eax
4666b8:	39 45 08             	cmp    %eax,0x8(%ebp)
4666bb:	0f 95 c0             	setne  %al
4666be:	85 c0                	test   %eax,%eax
4666c0:	75 15                	jne    0x4666d7
4666c2:	e8 68 67 fe ff       	call   0x44ce2f
4666c7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4666cd:	e8 04 66 fe ff       	call   0x44ccd6
4666d2:	83 c8 ff             	or     $0xffffffff,%eax
4666d5:	eb 2d                	jmp    0x466704
4666d7:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
4666db:	ff 75 08             	push   0x8(%ebp)
4666de:	e8 c6 da fe ff       	call   0x4541a9
4666e3:	59                   	pop    %ecx
4666e4:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4666e8:	ff 75 08             	push   0x8(%ebp)
4666eb:	e8 a3 00 00 00       	call   0x466793
4666f0:	59                   	pop    %ecx
4666f1:	8b f0                	mov    %eax,%esi
4666f3:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4666f6:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4666fd:	e8 0b 00 00 00       	call   0x46670d
466702:	8b c6                	mov    %esi,%eax
466704:	e8 9d a2 fd ff       	call   0x4409a6
466709:	c3                   	ret
46670a:	8b 75 e4             	mov    -0x1c(%ebp),%esi
46670d:	ff 75 08             	push   0x8(%ebp)
466710:	e8 a8 da fe ff       	call   0x4541bd
466715:	59                   	pop    %ecx
466716:	c3                   	ret
466717:	6a 10                	push   $0x10
466719:	68 d8 4a 4b 00       	push   $0x4b4ad8
46671e:	e8 3d a2 fd ff       	call   0x440960
466723:	33 c0                	xor    %eax,%eax
466725:	39 45 08             	cmp    %eax,0x8(%ebp)
466728:	0f 95 c0             	setne  %al
46672b:	85 c0                	test   %eax,%eax
46672d:	75 17                	jne    0x466746
46672f:	e8 fb 66 fe ff       	call   0x44ce2f
466734:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
46673a:	e8 97 65 fe ff       	call   0x44ccd6
46673f:	83 ca ff             	or     $0xffffffff,%edx
466742:	8b c2                	mov    %edx,%eax
466744:	eb 37                	jmp    0x46677d
466746:	33 f6                	xor    %esi,%esi
466748:	89 75 e0             	mov    %esi,-0x20(%ebp)
46674b:	89 75 e4             	mov    %esi,-0x1c(%ebp)
46674e:	ff 75 08             	push   0x8(%ebp)
466751:	e8 53 da fe ff       	call   0x4541a9
466756:	59                   	pop    %ecx
466757:	89 75 fc             	mov    %esi,-0x4(%ebp)
46675a:	ff 75 08             	push   0x8(%ebp)
46675d:	e8 5c 00 00 00       	call   0x4667be
466762:	59                   	pop    %ecx
466763:	8b f0                	mov    %eax,%esi
466765:	89 75 e0             	mov    %esi,-0x20(%ebp)
466768:	8b fa                	mov    %edx,%edi
46676a:	89 7d e4             	mov    %edi,-0x1c(%ebp)
46676d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
466774:	e8 10 00 00 00       	call   0x466789
466779:	8b c6                	mov    %esi,%eax
46677b:	8b d7                	mov    %edi,%edx
46677d:	e8 24 a2 fd ff       	call   0x4409a6
466782:	c3                   	ret
466783:	8b 7d e4             	mov    -0x1c(%ebp),%edi
466786:	8b 75 e0             	mov    -0x20(%ebp),%esi
466789:	ff 75 08             	push   0x8(%ebp)
46678c:	e8 2c da fe ff       	call   0x4541bd
466791:	59                   	pop    %ecx
466792:	c3                   	ret
466793:	8b ff                	mov    %edi,%edi
466795:	55                   	push   %ebp
466796:	8b ec                	mov    %esp,%ebp
466798:	ff 75 08             	push   0x8(%ebp)
46679b:	e8 1e 00 00 00       	call   0x4667be
4667a0:	59                   	pop    %ecx
4667a1:	85 d2                	test   %edx,%edx
4667a3:	7c 17                	jl     0x4667bc
4667a5:	7f 07                	jg     0x4667ae
4667a7:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
4667ac:	76 0e                	jbe    0x4667bc
4667ae:	e8 7c 66 fe ff       	call   0x44ce2f
4667b3:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4667b9:	83 c8 ff             	or     $0xffffffff,%eax
4667bc:	5d                   	pop    %ebp
4667bd:	c3                   	ret
4667be:	8b ff                	mov    %edi,%edi
4667c0:	55                   	push   %ebp
4667c1:	8b ec                	mov    %esp,%ebp
4667c3:	83 ec 14             	sub    $0x14,%esp
4667c6:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4667ca:	75 1a                	jne    0x4667e6
4667cc:	e8 5e 66 fe ff       	call   0x44ce2f
4667d1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4667d7:	e8 fa 64 fe ff       	call   0x44ccd6
4667dc:	83 c8 ff             	or     $0xffffffff,%eax
4667df:	0b d0                	or     %eax,%edx
4667e1:	e9 59 01 00 00       	jmp    0x46693f
4667e6:	53                   	push   %ebx
4667e7:	57                   	push   %edi
4667e8:	ff 75 08             	push   0x8(%ebp)
4667eb:	e8 86 19 01 00       	call   0x478176
4667f0:	59                   	pop    %ecx
4667f1:	8b 4d 08             	mov    0x8(%ebp),%ecx
4667f4:	33 db                	xor    %ebx,%ebx
4667f6:	8b f8                	mov    %eax,%edi
4667f8:	39 59 08             	cmp    %ebx,0x8(%ecx)
4667fb:	7d 03                	jge    0x466800
4667fd:	89 59 08             	mov    %ebx,0x8(%ecx)
466800:	56                   	push   %esi
466801:	6a 01                	push   $0x1
466803:	53                   	push   %ebx
466804:	53                   	push   %ebx
466805:	57                   	push   %edi
466806:	e8 0e 33 01 00       	call   0x479b19
46680b:	8b ca                	mov    %edx,%ecx
46680d:	83 c4 10             	add    $0x10,%esp
466810:	89 4d f8             	mov    %ecx,-0x8(%ebp)
466813:	8b f0                	mov    %eax,%esi
466815:	89 75 ec             	mov    %esi,-0x14(%ebp)
466818:	3b cb                	cmp    %ebx,%ecx
46681a:	7f 0e                	jg     0x46682a
46681c:	0f 8c c7 00 00 00    	jl     0x4668e9
466822:	3b f3                	cmp    %ebx,%esi
466824:	0f 82 bf 00 00 00    	jb     0x4668e9
46682a:	8b 45 08             	mov    0x8(%ebp),%eax
46682d:	8b 40 0c             	mov    0xc(%eax),%eax
466830:	a8 c0                	test   $0xc0,%al
466832:	75 14                	jne    0x466848
466834:	8b 45 08             	mov    0x8(%ebp),%eax
466837:	8b 40 08             	mov    0x8(%eax),%eax
46683a:	99                   	cltd
46683b:	2b f0                	sub    %eax,%esi
46683d:	8b c6                	mov    %esi,%eax
46683f:	1b ca                	sbb    %edx,%ecx
466841:	8b d1                	mov    %ecx,%edx
466843:	e9 f4 00 00 00       	jmp    0x46693c
466848:	8b c7                	mov    %edi,%eax
46684a:	83 e7 3f             	and    $0x3f,%edi
46684d:	c1 f8 06             	sar    $0x6,%eax
466850:	6b cf 30             	imul   $0x30,%edi,%ecx
466853:	89 45 f4             	mov    %eax,-0xc(%ebp)
466856:	8b 04 85 00 c0 4b 00 	mov    0x4bc000(,%eax,4),%eax
46685d:	89 4d f0             	mov    %ecx,-0x10(%ebp)
466860:	8a 44 01 29          	mov    0x29(%ecx,%eax,1),%al
466864:	8b 4d 08             	mov    0x8(%ebp),%ecx
466867:	88 45 fc             	mov    %al,-0x4(%ebp)
46686a:	8b 01                	mov    (%ecx),%eax
46686c:	2b 41 04             	sub    0x4(%ecx),%eax
46686f:	8b 49 0c             	mov    0xc(%ecx),%ecx
466872:	99                   	cltd
466873:	8b f8                	mov    %eax,%edi
466875:	8b da                	mov    %edx,%ebx
466877:	f6 c1 03             	test   $0x3,%cl
46687a:	74 55                	je     0x4668d1
46687c:	80 7d fc 01          	cmpb   $0x1,-0x4(%ebp)
466880:	8b 4d f4             	mov    -0xc(%ebp),%ecx
466883:	8b 55 f0             	mov    -0x10(%ebp),%edx
466886:	75 22                	jne    0x4668aa
466888:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
46688f:	f6 44 02 2d 02       	testb  $0x2,0x2d(%edx,%eax,1)
466894:	74 14                	je     0x4668aa
466896:	ff 75 f8             	push   -0x8(%ebp)
466899:	56                   	push   %esi
46689a:	ff 75 08             	push   0x8(%ebp)
46689d:	e8 c6 02 00 00       	call   0x466b68
4668a2:	83 c4 0c             	add    $0xc,%esp
4668a5:	e9 92 00 00 00       	jmp    0x46693c
4668aa:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
4668b1:	f6 44 02 28 80       	testb  $0x80,0x28(%edx,%eax,1)
4668b6:	74 38                	je     0x4668f0
4668b8:	8b 75 08             	mov    0x8(%ebp),%esi
4668bb:	ff 75 fc             	push   -0x4(%ebp)
4668be:	ff 36                	push   (%esi)
4668c0:	ff 76 04             	push   0x4(%esi)
4668c3:	e8 3b 04 00 00       	call   0x466d03
4668c8:	83 c4 0c             	add    $0xc,%esp
4668cb:	03 f8                	add    %eax,%edi
4668cd:	13 da                	adc    %edx,%ebx
4668cf:	eb 22                	jmp    0x4668f3
4668d1:	8b 45 08             	mov    0x8(%ebp),%eax
4668d4:	8b 40 0c             	mov    0xc(%eax),%eax
4668d7:	c1 e8 02             	shr    $0x2,%eax
4668da:	a8 01                	test   $0x1,%al
4668dc:	75 12                	jne    0x4668f0
4668de:	e8 4c 65 fe ff       	call   0x44ce2f
4668e3:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4668e9:	83 c8 ff             	or     $0xffffffff,%eax
4668ec:	0b d0                	or     %eax,%edx
4668ee:	eb 4c                	jmp    0x46693c
4668f0:	8b 75 08             	mov    0x8(%ebp),%esi
4668f3:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4668f6:	8b c1                	mov    %ecx,%eax
4668f8:	8b 55 f8             	mov    -0x8(%ebp),%edx
4668fb:	0b c2                	or     %edx,%eax
4668fd:	75 04                	jne    0x466903
4668ff:	8b d3                	mov    %ebx,%edx
466901:	eb 37                	jmp    0x46693a
466903:	8b 46 0c             	mov    0xc(%esi),%eax
466906:	a8 01                	test   $0x1,%al
466908:	74 11                	je     0x46691b
46690a:	53                   	push   %ebx
46690b:	57                   	push   %edi
46690c:	52                   	push   %edx
46690d:	51                   	push   %ecx
46690e:	ff 75 08             	push   0x8(%ebp)
466911:	e8 df 00 00 00       	call   0x4669f5
466916:	83 c4 14             	add    $0x14,%esp
466919:	eb 21                	jmp    0x46693c
46691b:	80 7d fc 01          	cmpb   $0x1,-0x4(%ebp)
46691f:	75 15                	jne    0x466936
466921:	6a 00                	push   $0x0
466923:	6a 02                	push   $0x2
466925:	53                   	push   %ebx
466926:	57                   	push   %edi
466927:	e8 04 92 fd ff       	call   0x43fb30
46692c:	8b 4d ec             	mov    -0x14(%ebp),%ecx
46692f:	8b da                	mov    %edx,%ebx
466931:	8b 55 f8             	mov    -0x8(%ebp),%edx
466934:	8b f8                	mov    %eax,%edi
466936:	03 f9                	add    %ecx,%edi
466938:	13 d3                	adc    %ebx,%edx