40a516:	0f 85 ad 00 00 00    	jne    0x40a5c9
40a51c:	0f b6 49 03          	movzbl 0x3(%ecx),%ecx
40a520:	0f b6 42 03          	movzbl 0x3(%edx),%eax
40a524:	2b c8                	sub    %eax,%ecx
40a526:	74 0e                	je     0x40a536
40a528:	33 c0                	xor    %eax,%eax
40a52a:	85 c9                	test   %ecx,%ecx
40a52c:	0f 9f c0             	setg   %al
40a52f:	8d 0c 45 ff ff ff ff 	lea    -0x1(,%eax,2),%ecx
40a536:	8b c1                	mov    %ecx,%eax
40a538:	e9 8c 00 00 00       	jmp    0x40a5c9
40a53d:	8b 55 08             	mov    0x8(%ebp),%edx
40a540:	8b 75 0c             	mov    0xc(%ebp),%esi
40a543:	0f b6 0a             	movzbl (%edx),%ecx
40a546:	0f b6 06             	movzbl (%esi),%eax
40a549:	2b c8                	sub    %eax,%ecx
40a54b:	74 12                	je     0x40a55f
40a54d:	33 c0                	xor    %eax,%eax
40a54f:	85 c9                	test   %ecx,%ecx
40a551:	0f 9f c0             	setg   %al
40a554:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
40a55b:	85 c0                	test   %eax,%eax
40a55d:	75 6a                	jne    0x40a5c9
40a55f:	0f b6 4a 01          	movzbl 0x1(%edx),%ecx
40a563:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40a567:	2b c8                	sub    %eax,%ecx
40a569:	74 12                	je     0x40a57d
40a56b:	33 c0                	xor    %eax,%eax
40a56d:	85 c9                	test   %ecx,%ecx
40a56f:	0f 9f c0             	setg   %al
40a572:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
40a579:	85 c0                	test   %eax,%eax
40a57b:	75 4c                	jne    0x40a5c9
40a57d:	0f b6 4a 02          	movzbl 0x2(%edx),%ecx
40a581:	0f b6 46 02          	movzbl 0x2(%esi),%eax
40a585:	eb 9d                	jmp    0x40a524
40a587:	8b 55 08             	mov    0x8(%ebp),%edx
40a58a:	8b 75 0c             	mov    0xc(%ebp),%esi
40a58d:	0f b6 0a             	movzbl (%edx),%ecx
40a590:	0f b6 06             	movzbl (%esi),%eax
40a593:	2b c8                	sub    %eax,%ecx
40a595:	74 12                	je     0x40a5a9
40a597:	33 c0                	xor    %eax,%eax
40a599:	85 c9                	test   %ecx,%ecx
40a59b:	0f 9f c0             	setg   %al
40a59e:	8d 04 45 ff ff ff ff 	lea    -0x1(,%eax,2),%eax
40a5a5:	85 c0                	test   %eax,%eax
40a5a7:	75 20                	jne    0x40a5c9
40a5a9:	0f b6 4a 01          	movzbl 0x1(%edx),%ecx
40a5ad:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40a5b1:	e9 6e ff ff ff       	jmp    0x40a524
40a5b6:	8b 45 08             	mov    0x8(%ebp),%eax
40a5b9:	0f b6 08             	movzbl (%eax),%ecx
40a5bc:	8b 45 0c             	mov    0xc(%ebp),%eax
40a5bf:	0f b6 00             	movzbl (%eax),%eax
40a5c2:	e9 5d ff ff ff       	jmp    0x40a524
40a5c7:	33 c0                	xor    %eax,%eax
40a5c9:	5e                   	pop    %esi
40a5ca:	5b                   	pop    %ebx
40a5cb:	5d                   	pop    %ebp
40a5cc:	c3                   	ret
40a5cd:	8d 49 00             	lea    0x0(%ecx),%ecx
40a5d0:	da 97 40 00 f6 9b    	ficoml -0x6409ffc0(%edi)
40a5d6:	40                   	inc    %eax
40a5d7:	00 3b                	add    %bh,(%ebx)
40a5d9:	a0 40 00 70 a4       	mov    0xa4700040,%al
40a5de:	40                   	inc    %eax
40a5df:	00 57 97             	add    %dl,-0x69(%edi)
40a5e2:	40                   	inc    %eax
40a5e3:	00 5f 9b             	add    %bl,-0x65(%edi)
40a5e6:	40                   	inc    %eax
40a5e7:	00 a4 9f 40 00 d9 a3 	add    %ah,-0x5c26ffc0(%edi,%ebx,4)
40a5ee:	40                   	inc    %eax
40a5ef:	00 c0                	add    %al,%al
40a5f1:	96                   	xchg   %eax,%esi
40a5f2:	40                   	inc    %eax
40a5f3:	00 c7                	add    %al,%bh
40a5f5:	9a 40 00 0c 9f 40 00 	lcall  $0x40,$0x9f0c0040
40a5fc:	42                   	inc    %edx
40a5fd:	a3 40 00 28 96       	mov    %eax,0x96280040
40a602:	40                   	inc    %eax
40a603:	00 30                	add    %dh,(%eax)
40a605:	9a 40 00 75 9e 40 00 	lcall  $0x40,$0x9e750040
40a60c:	aa                   	stos   %al,%es:(%edi)
40a60d:	a2 40 00 91 95       	mov    %al,0x95910040
40a612:	40                   	inc    %eax
40a613:	00 99 99 40 00 de    	add    %bl,-0x21ffbf67(%ecx)
40a619:	9d                   	popf
40a61a:	40                   	inc    %eax
40a61b:	00 13                	add    %dl,(%ebx)
40a61d:	a2 40 00 fa 94       	mov    %al,0x94fa0040
40a622:	40                   	inc    %eax
40a623:	00 02                	add    %al,(%edx)
40a625:	99                   	cltd
40a626:	40                   	inc    %eax
40a627:	00 47 9d             	add    %al,-0x63(%edi)
40a62a:	40                   	inc    %eax
40a62b:	00 7c a1 40          	add    %bh,0x40(%ecx,%eiz,4)
40a62f:	00 63 94             	add    %ah,-0x6c(%ebx)
40a632:	40                   	inc    %eax
40a633:	00 6b 98             	add    %ch,-0x68(%ebx)
40a636:	40                   	inc    %eax
40a637:	00 b0 9c 40 00 e5    	add    %dh,-0x1affbf64(%eax)
40a63d:	a0 40 00 cc 93       	mov    0x93cc0040,%al
40a642:	40                   	inc    %eax
40a643:	00 e4                	add    %ah,%ah
40a645:	97                   	xchg   %eax,%edi
40a646:	40                   	inc    %eax
40a647:	00 19                	add    %bl,(%ecx)
40a649:	9c                   	pushf
40a64a:	40                   	inc    %eax
40a64b:	00 4e a0             	add    %cl,-0x60(%esi)
40a64e:	40                   	inc    %eax
40a64f:	00 55 8b             	add    %dl,-0x75(%ebp)
40a652:	ec                   	in     (%dx),%al
40a653:	8b 45 14             	mov    0x14(%ebp),%eax
40a656:	85 c0                	test   %eax,%eax
40a658:	7e 0b                	jle    0x40a665
40a65a:	50                   	push   %eax
40a65b:	ff 75 10             	push   0x10(%ebp)
40a65e:	e8 5b 6c 00 00       	call   0x4112be
40a663:	59                   	pop    %ecx
40a664:	59                   	pop    %ecx
40a665:	ff 75 1c             	push   0x1c(%ebp)
40a668:	ff 75 18             	push   0x18(%ebp)
40a66b:	50                   	push   %eax
40a66c:	ff 75 10             	push   0x10(%ebp)
40a66f:	ff 75 0c             	push   0xc(%ebp)
40a672:	ff 75 08             	push   0x8(%ebp)
40a675:	e8 06 55 00 00       	call   0x40fb80
40a67a:	83 c4 18             	add    $0x18,%esp
40a67d:	5d                   	pop    %ebp
40a67e:	c3                   	ret
40a67f:	cc                   	int3
40a680:	83 ec 0c             	sub    $0xc,%esp
40a683:	dd 14 24             	fstl   (%esp)
40a686:	e8 0d 6f 00 00       	call   0x411598
40a68b:	e8 0d 00 00 00       	call   0x40a69d
40a690:	83 c4 0c             	add    $0xc,%esp
40a693:	c3                   	ret
40a694:	8d 54 24 04          	lea    0x4(%esp),%edx
40a698:	e8 b8 6e 00 00       	call   0x411555
40a69d:	52                   	push   %edx
40a69e:	9b d9 3c 24          	fstcw  (%esp)
40a6a2:	8b 44 24 0c          	mov    0xc(%esp),%eax
40a6a6:	74 51                	je     0x40a6f9
40a6a8:	66 81 3c 24 7f 02    	cmpw   $0x27f,(%esp)
40a6ae:	74 05                	je     0x40a6b5
40a6b0:	e8 70 6e 00 00       	call   0x411525
40a6b5:	a9 00 00 00 80       	test   $0x80000000,%eax
40a6ba:	75 1f                	jne    0x40a6db
40a6bc:	d9 fa                	fsqrt
40a6be:	83 3d ac 1d 42 00 00 	cmpl   $0x0,0x421dac
40a6c5:	0f 85 e3 6e 00 00    	jne    0x4115ae
40a6cb:	ba 05 00 00 00       	mov    $0x5,%edx
40a6d0:	8d 0d a0 08 42 00    	lea    0x4208a0,%ecx
40a6d6:	e9 e0 6e 00 00       	jmp    0x4115bb
40a6db:	a9 00 00 f0 7f       	test   $0x7ff00000,%eax
40a6e0:	75 2c                	jne    0x40a70e
40a6e2:	a9 ff ff 0f 00       	test   $0xfffff,%eax
40a6e7:	75 25                	jne    0x40a70e
40a6e9:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40a6ee:	75 1e                	jne    0x40a70e
40a6f0:	eb cc                	jmp    0x40a6be
40a6f2:	e8 45 6e 00 00       	call   0x41153c
40a6f7:	eb 22                	jmp    0x40a71b
40a6f9:	a9 ff ff 0f 00       	test   $0xfffff,%eax
40a6fe:	75 f2                	jne    0x40a6f2
40a700:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40a705:	75 eb                	jne    0x40a6f2
40a707:	25 00 00 00 80       	and    $0x80000000,%eax
40a70c:	74 b0                	je     0x40a6be
40a70e:	dd d8                	fstp   %st(0)
40a710:	db 2d 50 bd 41 00    	fldt   0x41bd50
40a716:	b8 01 00 00 00       	mov    $0x1,%eax
40a71b:	83 3d ac 1d 42 00 00 	cmpl   $0x0,0x421dac
40a722:	0f 85 86 6e 00 00    	jne    0x4115ae
40a728:	ba 05 00 00 00       	mov    $0x5,%edx
40a72d:	8d 0d a0 08 42 00    	lea    0x4208a0,%ecx
40a733:	e8 8f 6d 00 00       	call   0x4114c7
40a738:	5a                   	pop    %edx
40a739:	c3                   	ret
40a73a:	55                   	push   %ebp
40a73b:	8b ec                	mov    %esp,%ebp
40a73d:	ff 15 9c 90 41 00    	call   *0x41909c
40a743:	6a 01                	push   $0x1
40a745:	a3 cc 20 42 00       	mov    %eax,0x4220cc
40a74a:	e8 4d 6f 00 00       	call   0x41169c
40a74f:	ff 75 08             	push   0x8(%ebp)
40a752:	e8 2d 53 00 00       	call   0x40fa84
40a757:	83 3d cc 20 42 00 00 	cmpl   $0x0,0x4220cc
40a75e:	59                   	pop    %ecx
40a75f:	59                   	pop    %ecx
40a760:	75 08                	jne    0x40a76a
40a762:	6a 01                	push   $0x1
40a764:	e8 33 6f 00 00       	call   0x41169c
40a769:	59                   	pop    %ecx
40a76a:	68 09 04 00 c0       	push   $0xc0000409
40a76f:	e8 fb 52 00 00       	call   0x40fa6f
40a774:	59                   	pop    %ecx
40a775:	5d                   	pop    %ebp
40a776:	c3                   	ret
40a777:	55                   	push   %ebp
40a778:	8b ec                	mov    %esp,%ebp
40a77a:	81 ec 24 03 00 00    	sub    $0x324,%esp
40a780:	6a 17                	push   $0x17
40a782:	e8 f1 d2 00 00       	call   0x417a78
40a787:	85 c0                	test   %eax,%eax
40a789:	74 05                	je     0x40a790
40a78b:	6a 02                	push   $0x2
40a78d:	59                   	pop    %ecx
40a78e:	cd 29                	int    $0x29
40a790:	a3 b0 1e 42 00       	mov    %eax,0x421eb0
40a795:	89 0d ac 1e 42 00    	mov    %ecx,0x421eac
40a79b:	89 15 a8 1e 42 00    	mov    %edx,0x421ea8
40a7a1:	89 1d a4 1e 42 00    	mov    %ebx,0x421ea4
40a7a7:	89 35 a0 1e 42 00    	mov    %esi,0x421ea0
40a7ad:	89 3d 9c 1e 42 00    	mov    %edi,0x421e9c
40a7b3:	66 8c 15 c8 1e 42 00 	data16 mov %ss,0x421ec8
40a7ba:	66 8c 0d bc 1e 42 00 	data16 mov %cs,0x421ebc
40a7c1:	66 8c 1d 98 1e 42 00 	data16 mov %ds,0x421e98
40a7c8:	66 8c 05 94 1e 42 00 	data16 mov %es,0x421e94
40a7cf:	66 8c 25 90 1e 42 00 	data16 mov %fs,0x421e90
40a7d6:	66 8c 2d 8c 1e 42 00 	data16 mov %gs,0x421e8c
40a7dd:	9c                   	pushf
40a7de:	8f 05 c0 1e 42 00    	pop    0x421ec0
40a7e4:	8b 45 00             	mov    0x0(%ebp),%eax
40a7e7:	a3 b4 1e 42 00       	mov    %eax,0x421eb4
40a7ec:	8b 45 04             	mov    0x4(%ebp),%eax
40a7ef:	a3 b8 1e 42 00       	mov    %eax,0x421eb8
40a7f4:	8d 45 08             	lea    0x8(%ebp),%eax
40a7f7:	a3 c4 1e 42 00       	mov    %eax,0x421ec4
40a7fc:	8b 85 dc fc ff ff    	mov    -0x324(%ebp),%eax
40a802:	c7 05 00 1e 42 00 01 	movl   $0x10001,0x421e00
40a809:	00 01 00
40a80c:	a1 b8 1e 42 00       	mov    0x421eb8,%eax
40a811:	a3 bc 1d 42 00       	mov    %eax,0x421dbc
40a816:	c7 05 b0 1d 42 00 09 	movl   $0xc0000409,0x421db0
40a81d:	04 00 c0
40a820:	c7 05 b4 1d 42 00 01 	movl   $0x1,0x421db4
40a827:	00 00 00
40a82a:	c7 05 c0 1d 42 00 01 	movl   $0x1,0x421dc0
40a831:	00 00 00
40a834:	6a 04                	push   $0x4
40a836:	58                   	pop    %eax
40a837:	6b c0 00             	imul   $0x0,%eax,%eax
40a83a:	c7 80 c4 1d 42 00 02 	movl   $0x2,0x421dc4(%eax)
40a841:	00 00 00
40a844:	6a 04                	push   $0x4
40a846:	58                   	pop    %eax
40a847:	6b c0 00             	imul   $0x0,%eax,%eax
40a84a:	8b 0d 90 08 42 00    	mov    0x420890,%ecx
40a850:	89 4c 05 f8          	mov    %ecx,-0x8(%ebp,%eax,1)
40a854:	6a 04                	push   $0x4
40a856:	58                   	pop    %eax
40a857:	c1 e0 00             	shl    $0x0,%eax
40a85a:	8b 0d 94 08 42 00    	mov    0x420894,%ecx
40a860:	89 4c 05 f8          	mov    %ecx,-0x8(%ebp,%eax,1)
40a864:	68 4c ab 41 00       	push   $0x41ab4c
40a869:	e8 cc fe ff ff       	call   0x40a73a
40a86e:	c9                   	leave
40a86f:	c3                   	ret
40a870:	55                   	push   %ebp
40a871:	8b ec                	mov    %esp,%ebp
40a873:	6a 08                	push   $0x8
40a875:	e8 02 00 00 00       	call   0x40a87c
40a87a:	5d                   	pop    %ebp
40a87b:	c3                   	ret
40a87c:	55                   	push   %ebp
40a87d:	8b ec                	mov    %esp,%ebp
40a87f:	81 ec 1c 03 00 00    	sub    $0x31c,%esp
40a885:	6a 17                	push   $0x17
40a887:	e8 ec d1 00 00       	call   0x417a78
40a88c:	85 c0                	test   %eax,%eax
40a88e:	74 05                	je     0x40a895
40a890:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a893:	cd 29                	int    $0x29
40a895:	a3 b0 1e 42 00       	mov    %eax,0x421eb0
40a89a:	89 0d ac 1e 42 00    	mov    %ecx,0x421eac
40a8a0:	89 15 a8 1e 42 00    	mov    %edx,0x421ea8
40a8a6:	89 1d a4 1e 42 00    	mov    %ebx,0x421ea4
40a8ac:	89 35 a0 1e 42 00    	mov    %esi,0x421ea0
40a8b2:	89 3d 9c 1e 42 00    	mov    %edi,0x421e9c
40a8b8:	66 8c 15 c8 1e 42 00 	data16 mov %ss,0x421ec8
40a8bf:	66 8c 0d bc 1e 42 00 	data16 mov %cs,0x421ebc
40a8c6:	66 8c 1d 98 1e 42 00 	data16 mov %ds,0x421e98
40a8cd:	66 8c 05 94 1e 42 00 	data16 mov %es,0x421e94
40a8d4:	66 8c 25 90 1e 42 00 	data16 mov %fs,0x421e90
40a8db:	66 8c 2d 8c 1e 42 00 	data16 mov %gs,0x421e8c
40a8e2:	9c                   	pushf
40a8e3:	8f 05 c0 1e 42 00    	pop    0x421ec0
40a8e9:	8b 45 00             	mov    0x0(%ebp),%eax
40a8ec:	a3 b4 1e 42 00       	mov    %eax,0x421eb4
40a8f1:	8b 45 04             	mov    0x4(%ebp),%eax
40a8f4:	a3 b8 1e 42 00       	mov    %eax,0x421eb8
40a8f9:	8d 45 08             	lea    0x8(%ebp),%eax
40a8fc:	a3 c4 1e 42 00       	mov    %eax,0x421ec4
40a901:	8b 85 e4 fc ff ff    	mov    -0x31c(%ebp),%eax
40a907:	a1 b8 1e 42 00       	mov    0x421eb8,%eax
40a90c:	a3 bc 1d 42 00       	mov    %eax,0x421dbc
40a911:	c7 05 b0 1d 42 00 09 	movl   $0xc0000409,0x421db0
40a918:	04 00 c0
40a91b:	c7 05 b4 1d 42 00 01 	movl   $0x1,0x421db4
40a922:	00 00 00
40a925:	c7 05 c0 1d 42 00 01 	movl   $0x1,0x421dc0
40a92c:	00 00 00
40a92f:	6a 04                	push   $0x4
40a931:	58                   	pop    %eax
40a932:	6b c0 00             	imul   $0x0,%eax,%eax
40a935:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a938:	89 88 c4 1d 42 00    	mov    %ecx,0x421dc4(%eax)
40a93e:	68 4c ab 41 00       	push   $0x41ab4c
40a943:	e8 f2 fd ff ff       	call   0x40a73a
40a948:	c9                   	leave
40a949:	c3                   	ret
40a94a:	55                   	push   %ebp
40a94b:	8b ec                	mov    %esp,%ebp
40a94d:	83 25 d0 20 42 00 00 	andl   $0x0,0x4220d0
40a954:	83 ec 10             	sub    $0x10,%esp
40a957:	53                   	push   %ebx
40a958:	33 db                	xor    %ebx,%ebx
40a95a:	43                   	inc    %ebx
40a95b:	09 1d a8 08 42 00    	or     %ebx,0x4208a8
40a961:	6a 0a                	push   $0xa
40a963:	e8 10 d1 00 00       	call   0x417a78
40a968:	85 c0                	test   %eax,%eax
40a96a:	0f 84 0e 01 00 00    	je     0x40aa7e
40a970:	33 c9                	xor    %ecx,%ecx
40a972:	8b c3                	mov    %ebx,%eax
40a974:	89 1d d0 20 42 00    	mov    %ebx,0x4220d0
40a97a:	0f a2                	cpuid
40a97c:	56                   	push   %esi
40a97d:	8b 35 a8 08 42 00    	mov    0x4208a8,%esi
40a983:	57                   	push   %edi
40a984:	8d 7d f0             	lea    -0x10(%ebp),%edi
40a987:	83 ce 02             	or     $0x2,%esi
40a98a:	89 07                	mov    %eax,(%edi)
40a98c:	89 5f 04             	mov    %ebx,0x4(%edi)
40a98f:	89 4f 08             	mov    %ecx,0x8(%edi)
40a992:	89 57 0c             	mov    %edx,0xc(%edi)
40a995:	f7 45 f8 00 00 10 00 	testl  $0x100000,-0x8(%ebp)
40a99c:	89 35 a8 08 42 00    	mov    %esi,0x4208a8
40a9a2:	74 13                	je     0x40a9b7
40a9a4:	83 ce 04             	or     $0x4,%esi
40a9a7:	c7 05 d0 20 42 00 02 	movl   $0x2,0x4220d0
40a9ae:	00 00 00
40a9b1:	89 35 a8 08 42 00    	mov    %esi,0x4208a8
40a9b7:	f7 45 f8 00 00 00 10 	testl  $0x10000000,-0x8(%ebp)
40a9be:	74 13                	je     0x40a9d3
40a9c0:	83 ce 08             	or     $0x8,%esi