47279b:	89 4d e0             	mov    %ecx,-0x20(%ebp)
47279e:	85 d2                	test   %edx,%edx
4727a0:	74 22                	je     0x4727c4
4727a2:	8b 47 04             	mov    0x4(%edi),%eax
4727a5:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
4727ac:	50                   	push   %eax
4727ad:	52                   	push   %edx
4727ae:	51                   	push   %ecx
4727af:	e8 cc c6 fa ff       	call   0x41ee80
4727b4:	83 c4 0c             	add    $0xc,%esp
4727b7:	ff 37                	push   (%edi)
4727b9:	e8 22 e6 fa ff       	call   0x420de0
4727be:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4727c1:	83 c4 04             	add    $0x4,%esp
4727c4:	89 0f                	mov    %ecx,(%edi)
4727c6:	e9 a7 6d f9 ff       	jmp    0x409572
4727cb:	57                   	push   %edi
4727cc:	8d 45 9c             	lea    -0x64(%ebp),%eax
4727cf:	50                   	push   %eax
4727d0:	8b cf                	mov    %edi,%ecx
4727d2:	e8 b8 7d fc ff       	call   0x43a58f
4727d7:	50                   	push   %eax
4727d8:	8b cf                	mov    %edi,%ecx
4727da:	e8 0e 47 f9 ff       	call   0x406eed
4727df:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
4727e2:	e8 50 a3 f9 ff       	call   0x40cb37
4727e7:	e9 12 6e f9 ff       	jmp    0x4095fe
4727ec:	48                   	dec    %eax
4727ed:	89 01                	mov    %eax,(%ecx)
4727ef:	8b cf                	mov    %edi,%ecx
4727f1:	e8 54 43 f9 ff       	call   0x406b4a
4727f6:	8b 47 04             	mov    0x4(%edi),%eax
4727f9:	40                   	inc    %eax
4727fa:	03 c3                	add    %ebx,%eax
4727fc:	50                   	push   %eax
4727fd:	e8 f4 42 f9 ff       	call   0x406af6
472802:	33 c9                	xor    %ecx,%ecx
472804:	89 47 08             	mov    %eax,0x8(%edi)
472807:	ba 02 00 00 00       	mov    $0x2,%edx
47280c:	f7 e2                	mul    %edx
47280e:	0f 90 c1             	seto   %cl
472811:	f7 d9                	neg    %ecx
472813:	0b c8                	or     %eax,%ecx
472815:	51                   	push   %ecx
472816:	e8 cf cc fa ff       	call   0x41f4ea
47281b:	8b f0                	mov    %eax,%esi
47281d:	8b 47 04             	mov    0x4(%edi),%eax
472820:	83 c4 04             	add    $0x4,%esp
472823:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
47282a:	50                   	push   %eax
47282b:	ff 37                	push   (%edi)
47282d:	56                   	push   %esi
47282e:	e8 4d c6 fa ff       	call   0x41ee80
472833:	89 37                	mov    %esi,(%edi)
472835:	8b 75 ec             	mov    -0x14(%ebp),%esi
472838:	83 c4 0c             	add    $0xc,%esp
47283b:	e9 98 6d f9 ff       	jmp    0x4095d8
472840:	3d c2 41 00 00       	cmp    $0x41c2,%eax
472845:	73 07                	jae    0x47284e
472847:	03 c0                	add    %eax,%eax
472849:	e9 b7 00 00 00       	jmp    0x472905
47284e:	3d 00 00 00 02       	cmp    $0x2000000,%eax
472853:	73 39                	jae    0x47288e
472855:	89 45 e0             	mov    %eax,-0x20(%ebp)
472858:	db 45 e0             	fildl  -0x20(%ebp)
47285b:	85 c0                	test   %eax,%eax
47285d:	79 06                	jns    0x472865
47285f:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
472865:	dd 5d dc             	fstpl  -0x24(%ebp)
472868:	dd 45 dc             	fldl   -0x24(%ebp)
47286b:	dc 0d 10 27 4b 00    	fmull  0x4b2710
472871:	d9 7d f6             	fnstcw -0xa(%ebp)
472874:	0f b7 45 f6          	movzwl -0xa(%ebp),%eax
472878:	0d 00 0c 00 00       	or     $0xc00,%eax
47287d:	89 45 e0             	mov    %eax,-0x20(%ebp)
472880:	d9 6d e0             	fldcw  -0x20(%ebp)
472883:	df 7d dc             	fistpll -0x24(%ebp)
472886:	8b 45 dc             	mov    -0x24(%ebp),%eax
472889:	d9 6d f6             	fldcw  -0xa(%ebp)
47288c:	eb 77                	jmp    0x472905
47288e:	3d 00 00 00 08       	cmp    $0x8000000,%eax
472893:	73 39                	jae    0x4728ce
472895:	89 45 e0             	mov    %eax,-0x20(%ebp)
472898:	db 45 e0             	fildl  -0x20(%ebp)
47289b:	85 c0                	test   %eax,%eax
47289d:	79 06                	jns    0x4728a5
47289f:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
4728a5:	dd 5d dc             	fstpl  -0x24(%ebp)
4728a8:	dd 45 dc             	fldl   -0x24(%ebp)
4728ab:	dc 0d 08 27 4b 00    	fmull  0x4b2708
4728b1:	d9 7d f6             	fnstcw -0xa(%ebp)
4728b4:	0f b7 45 f6          	movzwl -0xa(%ebp),%eax
4728b8:	0d 00 0c 00 00       	or     $0xc00,%eax
4728bd:	89 45 e0             	mov    %eax,-0x20(%ebp)
4728c0:	d9 6d e0             	fldcw  -0x20(%ebp)
4728c3:	df 7d dc             	fistpll -0x24(%ebp)
4728c6:	8b 45 dc             	mov    -0x24(%ebp),%eax
4728c9:	d9 6d f6             	fldcw  -0xa(%ebp)
4728cc:	eb 37                	jmp    0x472905
4728ce:	89 45 e0             	mov    %eax,-0x20(%ebp)
4728d1:	db 45 e0             	fildl  -0x20(%ebp)
4728d4:	85 c0                	test   %eax,%eax
4728d6:	79 06                	jns    0x4728de
4728d8:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
4728de:	dd 5d dc             	fstpl  -0x24(%ebp)
4728e1:	dd 45 dc             	fldl   -0x24(%ebp)
4728e4:	dc 0d 00 27 4b 00    	fmull  0x4b2700
4728ea:	d9 7d f6             	fnstcw -0xa(%ebp)
4728ed:	0f b7 45 f6          	movzwl -0xa(%ebp),%eax
4728f1:	0d 00 0c 00 00       	or     $0xc00,%eax
4728f6:	89 45 e0             	mov    %eax,-0x20(%ebp)
4728f9:	d9 6d e0             	fldcw  -0x20(%ebp)
4728fc:	df 7d dc             	fistpll -0x24(%ebp)
4728ff:	8b 45 dc             	mov    -0x24(%ebp),%eax
472902:	d9 6d f6             	fldcw  -0xa(%ebp)
472905:	50                   	push   %eax
472906:	89 47 08             	mov    %eax,0x8(%edi)
472909:	e8 e8 41 f9 ff       	call   0x406af6
47290e:	33 c9                	xor    %ecx,%ecx
472910:	89 47 08             	mov    %eax,0x8(%edi)
472913:	ba 02 00 00 00       	mov    $0x2,%edx
472918:	f7 e2                	mul    %edx
47291a:	0f 90 c1             	seto   %cl
47291d:	f7 d9                	neg    %ecx
47291f:	0b c8                	or     %eax,%ecx
472921:	51                   	push   %ecx
472922:	e8 4e c5 fa ff       	call   0x41ee75
472927:	8b 17                	mov    (%edi),%edx
472929:	83 c4 04             	add    $0x4,%esp
47292c:	8b c8                	mov    %eax,%ecx
47292e:	89 4d e0             	mov    %ecx,-0x20(%ebp)
472931:	85 d2                	test   %edx,%edx
472933:	74 22                	je     0x472957
472935:	8b 47 04             	mov    0x4(%edi),%eax
472938:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
47293f:	50                   	push   %eax
472940:	52                   	push   %edx
472941:	51                   	push   %ecx
472942:	e8 39 c5 fa ff       	call   0x41ee80
472947:	83 c4 0c             	add    $0xc,%esp
47294a:	ff 37                	push   (%edi)
47294c:	e8 8f e4 fa ff       	call   0x420de0
472951:	8b 4d e0             	mov    -0x20(%ebp),%ecx
472954:	83 c4 04             	add    $0x4,%esp
472957:	89 0f                	mov    %ecx,(%edi)
472959:	e9 7a 6c f9 ff       	jmp    0x4095d8
47295e:	33 c0                	xor    %eax,%eax
472960:	e9 3d 6d f9 ff       	jmp    0x4096a2
472965:	48                   	dec    %eax
472966:	89 01                	mov    %eax,(%ecx)
472968:	8b cb                	mov    %ebx,%ecx
47296a:	e8 db 41 f9 ff       	call   0x406b4a
47296f:	33 c9                	xor    %ecx,%ecx
472971:	b8 08 00 00 00       	mov    $0x8,%eax
472976:	ba 02 00 00 00       	mov    $0x2,%edx
47297b:	f7 e2                	mul    %edx
47297d:	0f 90 c1             	seto   %cl
472980:	c7 43 08 08 00 00 00 	movl   $0x8,0x8(%ebx)
472987:	f7 d9                	neg    %ecx
472989:	0b c8                	or     %eax,%ecx
47298b:	51                   	push   %ecx
47298c:	e8 e4 c4 fa ff       	call   0x41ee75
472991:	83 c4 04             	add    $0x4,%esp
472994:	89 03                	mov    %eax,(%ebx)
472996:	e9 2e 86 f9 ff       	jmp    0x40afc9
47299b:	47                   	inc    %edi
47299c:	89 7d fc             	mov    %edi,-0x4(%ebp)
47299f:	3b f8                	cmp    %eax,%edi
4729a1:	0f 84 c9 86 f9 ff    	je     0x40b070
4729a7:	dd da                	fstp   %st(2)
4729a9:	57                   	push   %edi
4729aa:	dd d8                	fstp   %st(0)
4729ac:	8b ce                	mov    %esi,%ecx
4729ae:	dd d8                	fstp   %st(0)
4729b0:	e8 d1 f6 f8 ff       	call   0x402086
4729b5:	66 83 38 5c          	cmpw   $0x5c,(%eax)
4729b9:	0f 84 84 00 00 00    	je     0x472a43
4729bf:	57                   	push   %edi
4729c0:	8b ce                	mov    %esi,%ecx
4729c2:	e8 bf f6 f8 ff       	call   0x402086
4729c7:	66 83 38 24          	cmpw   $0x24,(%eax)
4729cb:	74 76                	je     0x472a43
4729cd:	57                   	push   %edi
4729ce:	8b ce                	mov    %esi,%ecx
4729d0:	e8 b1 f6 f8 ff       	call   0x402086
4729d5:	0f b7 00             	movzwl (%eax),%eax
4729d8:	50                   	push   %eax
4729d9:	e8 47 f3 fa ff       	call   0x421d25
4729de:	83 c4 04             	add    $0x4,%esp
4729e1:	85 c0                	test   %eax,%eax
4729e3:	74 2e                	je     0x472a13
4729e5:	6a 00                	push   $0x0
4729e7:	8d 45 fc             	lea    -0x4(%ebp),%eax
4729ea:	50                   	push   %eax
4729eb:	4f                   	dec    %edi
4729ec:	56                   	push   %esi
4729ed:	89 7d fc             	mov    %edi,-0x4(%ebp)
4729f0:	e8 00 f9 fc ff       	call   0x4422f5
4729f5:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
4729f8:	51                   	push   %ecx
4729f9:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4729fc:	50                   	push   %eax
4729fd:	e8 af f6 fc ff       	call   0x4420b1
472a02:	8d 45 c4             	lea    -0x3c(%ebp),%eax
472a05:	50                   	push   %eax
472a06:	8b cb                	mov    %ebx,%ecx
472a08:	e8 00 27 f9 ff       	call   0x40510d
472a0d:	ff 45 f4             	incl   -0xc(%ebp)
472a10:	8b 7d fc             	mov    -0x4(%ebp),%edi
472a13:	dd 05 10 27 4b 00    	fldl   0x4b2710
472a19:	dd 05 08 27 4b 00    	fldl   0x4b2708
472a1f:	dd 05 00 27 4b 00    	fldl   0x4b2700
472a25:	e9 46 86 f9 ff       	jmp    0x40b070
472a2a:	6a 01                	push   $0x1
472a2c:	dd da                	fstp   %st(2)
472a2e:	8d 45 fc             	lea    -0x4(%ebp),%eax
472a31:	dd d8                	fstp   %st(0)
472a33:	50                   	push   %eax
472a34:	dd d8                	fstp   %st(0)
472a36:	56                   	push   %esi
472a37:	e8 b9 f8 fc ff       	call   0x4422f5
472a3c:	85 c0                	test   %eax,%eax
472a3e:	79 b5                	jns    0x4729f5
472a40:	8b 7d fc             	mov    -0x4(%ebp),%edi
472a43:	57                   	push   %edi
472a44:	47                   	inc    %edi
472a45:	8b ce                	mov    %esi,%ecx
472a47:	89 7d fc             	mov    %edi,-0x4(%ebp)
472a4a:	e8 37 f6 f8 ff       	call   0x402086
472a4f:	0f b7 00             	movzwl (%eax),%eax
472a52:	50                   	push   %eax
472a53:	8b cb                	mov    %ebx,%ecx
472a55:	e8 3f 9d f9 ff       	call   0x40c799
472a5a:	eb b7                	jmp    0x472a13
472a5c:	dd da                	fstp   %st(2)
472a5e:	48                   	dec    %eax
472a5f:	89 01                	mov    %eax,(%ecx)
472a61:	dd d8                	fstp   %st(0)
472a63:	8b cb                	mov    %ebx,%ecx
472a65:	dd d8                	fstp   %st(0)
472a67:	e8 de 40 f9 ff       	call   0x406b4a
472a6c:	8b 43 04             	mov    0x4(%ebx),%eax
472a6f:	83 c0 02             	add    $0x2,%eax
472a72:	50                   	push   %eax
472a73:	e8 7e 40 f9 ff       	call   0x406af6
472a78:	33 c9                	xor    %ecx,%ecx
472a7a:	89 43 08             	mov    %eax,0x8(%ebx)
472a7d:	ba 02 00 00 00       	mov    $0x2,%edx
472a82:	f7 e2                	mul    %edx
472a84:	0f 90 c1             	seto   %cl
472a87:	f7 d9                	neg    %ecx
472a89:	0b c8                	or     %eax,%ecx
472a8b:	51                   	push   %ecx
472a8c:	e8 59 ca fa ff       	call   0x41f4ea
472a91:	8b f0                	mov    %eax,%esi
472a93:	8b 43 04             	mov    0x4(%ebx),%eax
472a96:	83 c4 04             	add    $0x4,%esp
472a99:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
472aa0:	50                   	push   %eax
472aa1:	ff 33                	push   (%ebx)
472aa3:	56                   	push   %esi
472aa4:	e8 d7 c3 fa ff       	call   0x41ee80
472aa9:	89 33                	mov    %esi,(%ebx)
472aab:	8b 75 08             	mov    0x8(%ebp),%esi
472aae:	83 c4 0c             	add    $0xc,%esp
472ab1:	e9 1a 01 00 00       	jmp    0x472bd0
472ab6:	3d c2 41 00 00       	cmp    $0x41c2,%eax
472abb:	73 0d                	jae    0x472aca
472abd:	dd da                	fstp   %st(2)
472abf:	03 c0                	add    %eax,%eax
472ac1:	dd d8                	fstp   %st(0)
472ac3:	dd d8                	fstp   %st(0)
472ac5:	e9 b2 00 00 00       	jmp    0x472b7c
472aca:	3d 00 00 00 02       	cmp    $0x2000000,%eax
472acf:	73 37                	jae    0x472b08
472ad1:	dd d9                	fstp   %st(1)
472ad3:	89 45 0c             	mov    %eax,0xc(%ebp)
472ad6:	dd d8                	fstp   %st(0)
472ad8:	db 45 0c             	fildl  0xc(%ebp)
472adb:	85 c0                	test   %eax,%eax
472add:	79 06                	jns    0x472ae5
472adf:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
472ae5:	dd 5d e8             	fstpl  -0x18(%ebp)
472ae8:	d9 7d 0e             	fnstcw 0xe(%ebp)
472aeb:	dc 4d e8             	fmull  -0x18(%ebp)
472aee:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
472af2:	0d 00 0c 00 00       	or     $0xc00,%eax
472af7:	89 45 ec             	mov    %eax,-0x14(%ebp)
472afa:	d9 6d ec             	fldcw  -0x14(%ebp)
472afd:	df 7d e8             	fistpll -0x18(%ebp)
472b00:	8b 45 e8             	mov    -0x18(%ebp),%eax
472b03:	d9 6d 0e             	fldcw  0xe(%ebp)
472b06:	eb 71                	jmp    0x472b79
472b08:	dd da                	fstp   %st(2)
472b0a:	3d 00 00 00 08       	cmp    $0x8000000,%eax
472b0f:	73 35                	jae    0x472b46
472b11:	dd d9                	fstp   %st(1)
472b13:	89 45 0c             	mov    %eax,0xc(%ebp)
472b16:	db 45 0c             	fildl  0xc(%ebp)
472b19:	85 c0                	test   %eax,%eax
472b1b:	79 06                	jns    0x472b23
472b1d:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
472b23:	dd 5d e8             	fstpl  -0x18(%ebp)
472b26:	d9 7d 0e             	fnstcw 0xe(%ebp)
472b29:	dc 4d e8             	fmull  -0x18(%ebp)
472b2c:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
472b30:	0d 00 0c 00 00       	or     $0xc00,%eax
472b35:	89 45 ec             	mov    %eax,-0x14(%ebp)
472b38:	d9 6d ec             	fldcw  -0x14(%ebp)
472b3b:	df 7d e8             	fistpll -0x18(%ebp)
472b3e:	8b 45 e8             	mov    -0x18(%ebp),%eax
472b41:	d9 6d 0e             	fldcw  0xe(%ebp)
472b44:	eb 33                	jmp    0x472b79
472b46:	dd d8                	fstp   %st(0)
472b48:	89 45 0c             	mov    %eax,0xc(%ebp)
472b4b:	db 45 0c             	fildl  0xc(%ebp)
472b4e:	85 c0                	test   %eax,%eax
472b50:	79 06                	jns    0x472b58
472b52:	dc 05 00 6a 4b 00    	faddl  0x4b6a00
472b58:	dd 5d e8             	fstpl  -0x18(%ebp)
472b5b:	d9 7d 0e             	fnstcw 0xe(%ebp)
472b5e:	dc 4d e8             	fmull  -0x18(%ebp)
472b61:	0f b7 45 0e          	movzwl 0xe(%ebp),%eax
472b65:	0d 00 0c 00 00       	or     $0xc00,%eax
472b6a:	89 45 ec             	mov    %eax,-0x14(%ebp)
472b6d:	d9 6d ec             	fldcw  -0x14(%ebp)
472b70:	df 7d e8             	fistpll -0x18(%ebp)
472b73:	8b 45 e8             	mov    -0x18(%ebp),%eax
472b76:	d9 6d 0e             	fldcw  0xe(%ebp)
472b79:	8b 7d fc             	mov    -0x4(%ebp),%edi
472b7c:	50                   	push   %eax
472b7d:	89 43 08             	mov    %eax,0x8(%ebx)
472b80:	e8 71 3f f9 ff       	call   0x406af6
472b85:	33 c9                	xor    %ecx,%ecx
472b87:	89 43 08             	mov    %eax,0x8(%ebx)
472b8a:	ba 02 00 00 00       	mov    $0x2,%edx
472b8f:	f7 e2                	mul    %edx
472b91:	0f 90 c1             	seto   %cl
472b94:	f7 d9                	neg    %ecx
472b96:	0b c8                	or     %eax,%ecx
472b98:	51                   	push   %ecx
472b99:	e8 d7 c2 fa ff       	call   0x41ee75
472b9e:	8b 13                	mov    (%ebx),%edx
472ba0:	83 c4 04             	add    $0x4,%esp
472ba3:	8b c8                	mov    %eax,%ecx
472ba5:	89 4d 0c             	mov    %ecx,0xc(%ebp)
472ba8:	85 d2                	test   %edx,%edx
472baa:	74 22                	je     0x472bce
472bac:	8b 43 04             	mov    0x4(%ebx),%eax
472baf:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax