4156c7:	8b f0                	mov    %eax,%esi
4156c9:	83 c4 04             	add    $0x4,%esp
4156cc:	89 75 ec             	mov    %esi,-0x14(%ebp)
4156cf:	85 f6                	test   %esi,%esi
4156d1:	0f 84 b3 01 00 00    	je     0x41588a
4156d7:	c7 06 01 00 00 00    	movl   $0x1,(%esi)
4156dd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4156e0:	33 ff                	xor    %edi,%edi
4156e2:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4156e5:	89 7d fc             	mov    %edi,-0x4(%ebp)
4156e8:	89 7d f0             	mov    %edi,-0x10(%ebp)
4156eb:	8b 4b 0c             	mov    0xc(%ebx),%ecx
4156ee:	8b 01                	mov    (%ecx),%eax
4156f0:	83 f8 01             	cmp    $0x1,%eax
4156f3:	0f 8f f7 ad 03 00    	jg     0x4504f0
4156f9:	8b 03                	mov    (%ebx),%eax
4156fb:	33 c9                	xor    %ecx,%ecx
4156fd:	89 7b 04             	mov    %edi,0x4(%ebx)
415700:	66 89 08             	mov    %cx,(%eax)
415703:	8b 45 08             	mov    0x8(%ebp),%eax
415706:	8b 40 04             	mov    0x4(%eax),%eax
415709:	85 c0                	test   %eax,%eax
41570b:	0f 8e a6 00 00 00    	jle    0x4157b7
415711:	dd 05 10 6f 4b 00    	fldl   0x4b6f10
415717:	dd 05 08 6f 4b 00    	fldl   0x4b6f08
41571d:	dd 05 00 6f 4b 00    	fldl   0x4b6f00
415723:	8b 75 08             	mov    0x8(%ebp),%esi
415726:	8b 0e                	mov    (%esi),%ecx
415728:	3b f8                	cmp    %eax,%edi
41572a:	0f 83 64 01 00 00    	jae    0x415894
415730:	8d 14 79             	lea    (%ecx,%edi,2),%edx
415733:	66 83 3a 5c          	cmpw   $0x5c,(%edx)
415737:	0f 84 e9 ad 03 00    	je     0x450526
41573d:	3b f8                	cmp    %eax,%edi
41573f:	0f 83 57 01 00 00    	jae    0x41589c
415745:	8d 14 79             	lea    (%ecx,%edi,2),%edx
415748:	66 83 3a 24          	cmpw   $0x24,(%edx)
41574c:	0f 84 63 ae 03 00    	je     0x4505b5
415752:	8b d7                	mov    %edi,%edx
415754:	47                   	inc    %edi
415755:	89 7d fc             	mov    %edi,-0x4(%ebp)
415758:	3b d0                	cmp    %eax,%edx
41575a:	0f 83 44 01 00 00    	jae    0x4158a4
415760:	8d 04 51             	lea    (%ecx,%edx,2),%eax
415763:	8b 4b 0c             	mov    0xc(%ebx),%ecx
415766:	0f b7 00             	movzwl (%eax),%eax
415769:	89 45 f8             	mov    %eax,-0x8(%ebp)
41576c:	8b 01                	mov    (%ecx),%eax
41576e:	83 f8 01             	cmp    $0x1,%eax
415771:	0f 8f 70 ae 03 00    	jg     0x4505e7
415777:	8b 43 04             	mov    0x4(%ebx),%eax
41577a:	83 c0 02             	add    $0x2,%eax
41577d:	39 43 08             	cmp    %eax,0x8(%ebx)
415780:	0f 82 bb ae 03 00    	jb     0x450641
415786:	8b 4b 04             	mov    0x4(%ebx),%ecx
415789:	8b 03                	mov    (%ebx),%eax
41578b:	8b 55 f8             	mov    -0x8(%ebp),%edx
41578e:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
415792:	ff 43 04             	incl   0x4(%ebx)
415795:	33 d2                	xor    %edx,%edx
415797:	8b 4b 04             	mov    0x4(%ebx),%ecx
41579a:	8b 03                	mov    (%ebx),%eax
41579c:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
4157a0:	8b 46 04             	mov    0x4(%esi),%eax
4157a3:	3b f8                	cmp    %eax,%edi
4157a5:	0f 8c 7b ff ff ff    	jl     0x415726
4157ab:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4157ae:	dd da                	fstp   %st(2)
4157b0:	dd d8                	fstp   %st(0)
4157b2:	89 75 ec             	mov    %esi,-0x14(%ebp)
4157b5:	dd d8                	fstp   %st(0)
4157b7:	33 c0                	xor    %eax,%eax
4157b9:	c7 45 d0 08 00 00 00 	movl   $0x8,-0x30(%ebp)
4157c0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4157c3:	33 c9                	xor    %ecx,%ecx
4157c5:	89 45 cc             	mov    %eax,-0x34(%ebp)
4157c8:	ba 02 00 00 00       	mov    $0x2,%edx
4157cd:	b8 08 00 00 00       	mov    $0x8,%eax
4157d2:	f7 e2                	mul    %edx
4157d4:	0f 90 c1             	seto   %cl
4157d7:	f7 d9                	neg    %ecx
4157d9:	0b c8                	or     %eax,%ecx
4157db:	51                   	push   %ecx
4157dc:	e8 15 b8 00 00       	call   0x420ff6
4157e1:	83 c4 04             	add    $0x4,%esp
4157e4:	89 45 fc             	mov    %eax,-0x4(%ebp)
4157e7:	33 c9                	xor    %ecx,%ecx
4157e9:	89 45 c8             	mov    %eax,-0x38(%ebp)
4157ec:	66 89 08             	mov    %cx,(%eax)
4157ef:	6a 04                	push   $0x4
4157f1:	e8 00 b8 00 00       	call   0x420ff6
4157f6:	8b c8                	mov    %eax,%ecx
4157f8:	83 c4 04             	add    $0x4,%esp
4157fb:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4157fe:	85 c9                	test   %ecx,%ecx
415800:	0f 84 a6 00 00 00    	je     0x4158ac
415806:	c7 01 01 00 00 00    	movl   $0x1,(%ecx)
41580c:	8b 45 08             	mov    0x8(%ebp),%eax
41580f:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
415812:	8b 50 04             	mov    0x4(%eax),%edx
415815:	3b fa                	cmp    %edx,%edi
415817:	0f 87 99 00 00 00    	ja     0x4158b6
41581d:	8b c2                	mov    %edx,%eax
41581f:	2b c7                	sub    %edi,%eax
415821:	89 45 0c             	mov    %eax,0xc(%ebp)
415824:	0f 85 48 af 03 00    	jne    0x450772
41582a:	8b 7d fc             	mov    -0x4(%ebp),%edi
41582d:	8d 45 c8             	lea    -0x38(%ebp),%eax
415830:	3b d8                	cmp    %eax,%ebx
415832:	0f 84 cf af 03 00    	je     0x450807
415838:	8b 55 f8             	mov    -0x8(%ebp),%edx
41583b:	85 d2                	test   %edx,%edx
41583d:	0f 85 e5 af 03 00    	jne    0x450828
415843:	ff 09                	decl   (%ecx)
415845:	75 14                	jne    0x41585b
415847:	57                   	push   %edi
415848:	e8 1f b8 00 00       	call   0x42106c
41584d:	83 c4 04             	add    $0x4,%esp
415850:	ff 75 f4             	push   -0xc(%ebp)
415853:	e8 14 b8 00 00       	call   0x42106c
415858:	83 c4 04             	add    $0x4,%esp
41585b:	8b 5d f0             	mov    -0x10(%ebp),%ebx
41585e:	85 db                	test   %ebx,%ebx
415860:	75 05                	jne    0x415867
415862:	bb 01 00 00 00       	mov    $0x1,%ebx
415867:	ff 0e                	decl   (%esi)
415869:	75 14                	jne    0x41587f
41586b:	ff 75 d8             	push   -0x28(%ebp)
41586e:	e8 f9 b7 00 00       	call   0x42106c
415873:	83 c4 04             	add    $0x4,%esp
415876:	56                   	push   %esi
415877:	e8 f0 b7 00 00       	call   0x42106c
41587c:	83 c4 04             	add    $0x4,%esp
41587f:	5f                   	pop    %edi
415880:	5e                   	pop    %esi
415881:	8b c3                	mov    %ebx,%eax
415883:	5b                   	pop    %ebx
415884:	8b e5                	mov    %ebp,%esp
415886:	5d                   	pop    %ebp
415887:	c2 08 00             	ret    $0x8
41588a:	33 f6                	xor    %esi,%esi
41588c:	89 75 ec             	mov    %esi,-0x14(%ebp)
41588f:	e9 49 fe ff ff       	jmp    0x4156dd
415894:	8d 14 41             	lea    (%ecx,%eax,2),%edx
415897:	e9 97 fe ff ff       	jmp    0x415733
41589c:	8d 14 41             	lea    (%ecx,%eax,2),%edx
41589f:	e9 a4 fe ff ff       	jmp    0x415748
4158a4:	8d 04 41             	lea    (%ecx,%eax,2),%eax
4158a7:	e9 b7 fe ff ff       	jmp    0x415763
4158ac:	33 c9                	xor    %ecx,%ecx
4158ae:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4158b1:	e9 56 ff ff ff       	jmp    0x41580c
4158b6:	8b fa                	mov    %edx,%edi
4158b8:	e9 60 ff ff ff       	jmp    0x41581d
4158bd:	cc                   	int3
4158be:	cc                   	int3
4158bf:	cc                   	int3
4158c0:	55                   	push   %ebp
4158c1:	8b ec                	mov    %esp,%ebp
4158c3:	83 ec 68             	sub    $0x68,%esp
4158c6:	53                   	push   %ebx
4158c7:	56                   	push   %esi
4158c8:	8b f1                	mov    %ecx,%esi
4158ca:	57                   	push   %edi
4158cb:	89 75 ec             	mov    %esi,-0x14(%ebp)
4158ce:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
4158d2:	0f 84 b2 02 00 00    	je     0x415b8a
4158d8:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
4158dc:	0f 84 a8 02 00 00    	je     0x415b8a
4158e2:	8b 7d 10             	mov    0x10(%ebp),%edi
4158e5:	33 c0                	xor    %eax,%eax
4158e7:	6a ff                	push   $0xffffffff
4158e9:	50                   	push   %eax
4158ea:	8b cf                	mov    %edi,%ecx
4158ec:	c6 45 fb 00          	movb   $0x0,-0x5(%ebp)
4158f0:	89 45 e8             	mov    %eax,-0x18(%ebp)
4158f3:	e8 94 25 ff ff       	call   0x407e8c
4158f8:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
4158fc:	75 04                	jne    0x415902
4158fe:	c6 45 fb 01          	movb   $0x1,-0x5(%ebp)
415902:	8d 4d bc             	lea    -0x44(%ebp),%ecx
415905:	e8 bd 1e ff ff       	call   0x4077c7
41590a:	8d 4d cc             	lea    -0x34(%ebp),%ecx
41590d:	e8 b5 1e ff ff       	call   0x4077c7
415912:	33 d2                	xor    %edx,%edx
415914:	33 db                	xor    %ebx,%ebx
415916:	89 55 f0             	mov    %edx,-0x10(%ebp)
415919:	89 5d f4             	mov    %ebx,-0xc(%ebp)
41591c:	8d 64 24 00          	lea    0x0(%esp),%esp
415920:	80 7d fb 00          	cmpb   $0x0,-0x5(%ebp)
415924:	0f 84 9a af 03 00    	je     0x4508c4
41592a:	83 7e 14 00          	cmpl   $0x0,0x14(%esi)
41592e:	0f 84 13 02 00 00    	je     0x415b47
415934:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
415938:	0f 84 09 02 00 00    	je     0x415b47
41593e:	83 fa ff             	cmp    $0xffffffff,%edx
415941:	0f 84 00 02 00 00    	je     0x415b47
415947:	8b 4e 1c             	mov    0x1c(%esi),%ecx
41594a:	3b d1                	cmp    %ecx,%edx
41594c:	0f 8f f5 01 00 00    	jg     0x415b47
415952:	ff 76 24             	push   0x24(%esi)
415955:	8b 46 34             	mov    0x34(%esi),%eax
415958:	ff 76 20             	push   0x20(%esi)
41595b:	0b 46 2c             	or     0x2c(%esi),%eax
41595e:	50                   	push   %eax
41595f:	52                   	push   %edx
415960:	8b 56 18             	mov    0x18(%esi),%edx
415963:	51                   	push   %ecx
415964:	ff 36                	push   (%esi)
415966:	8b 4e 14             	mov    0x14(%esi),%ecx
415969:	e8 d2 e7 ff ff       	call   0x414140
41596e:	8b c8                	mov    %eax,%ecx
415970:	83 c4 18             	add    $0x18,%esp
415973:	89 4e 28             	mov    %ecx,0x28(%esi)
415976:	85 c9                	test   %ecx,%ecx
415978:	0f 8e ba 01 00 00    	jle    0x415b38
41597e:	8b 46 20             	mov    0x20(%esi),%eax
415981:	8b 50 04             	mov    0x4(%eax),%edx
415984:	c7 46 2c 00 00 00 00 	movl   $0x0,0x2c(%esi)
41598b:	8b 38                	mov    (%eax),%edi
41598d:	3b 78 04             	cmp    0x4(%eax),%edi
415990:	89 7d e0             	mov    %edi,-0x20(%ebp)
415993:	8b 7d 10             	mov    0x10(%ebp),%edi
415996:	0f 84 37 af 03 00    	je     0x4508d3
41599c:	89 55 f0             	mov    %edx,-0x10(%ebp)
41599f:	85 c9                	test   %ecx,%ecx
4159a1:	0f 84 a0 01 00 00    	je     0x415b47
4159a7:	8b 46 20             	mov    0x20(%esi),%eax
4159aa:	8b 18                	mov    (%eax),%ebx
4159ac:	8b 45 f4             	mov    -0xc(%ebp),%eax
4159af:	2b d8                	sub    %eax,%ebx
4159b1:	0f 84 2a 01 00 00    	je     0x415ae1
4159b7:	8b 4e 04             	mov    0x4(%esi),%ecx
4159ba:	3b c1                	cmp    %ecx,%eax
4159bc:	0f 83 1f 01 00 00    	jae    0x415ae1
4159c2:	83 fb ff             	cmp    $0xffffffff,%ebx
4159c5:	0f 84 b6 01 00 00    	je     0x415b81
4159cb:	03 c3                	add    %ebx,%eax
4159cd:	3b c1                	cmp    %ecx,%eax
4159cf:	0f 87 a9 01 00 00    	ja     0x415b7e
4159d5:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4159d8:	8b 01                	mov    (%ecx),%eax
4159da:	83 f8 01             	cmp    $0x1,%eax
4159dd:	0f 8f 2a af 03 00    	jg     0x45090d
4159e3:	8d 43 01             	lea    0x1(%ebx),%eax
4159e6:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
4159e9:	0f 82 06 01 00 00    	jb     0x415af5
4159ef:	8b 45 ec             	mov    -0x14(%ebp),%eax
4159f2:	8d 34 1b             	lea    (%ebx,%ebx,1),%esi
4159f5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4159f8:	56                   	push   %esi
4159f9:	89 5d d0             	mov    %ebx,-0x30(%ebp)
4159fc:	8b 00                	mov    (%eax),%eax
4159fe:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415a01:	50                   	push   %eax
415a02:	ff 75 cc             	push   -0x34(%ebp)
415a05:	e8 76 b6 00 00       	call   0x421080
415a0a:	8b 45 cc             	mov    -0x34(%ebp),%eax
415a0d:	83 c4 0c             	add    $0xc,%esp
415a10:	33 c9                	xor    %ecx,%ecx
415a12:	66 89 0c 06          	mov    %cx,(%esi,%eax,1)
415a16:	8b 75 ec             	mov    -0x14(%ebp),%esi
415a19:	8d 45 cc             	lea    -0x34(%ebp),%eax
415a1c:	3b f8                	cmp    %eax,%edi
415a1e:	0f 84 1e af 03 00    	je     0x450942
415a24:	85 db                	test   %ebx,%ebx
415a26:	74 43                	je     0x415a6b
415a28:	8b 4f 0c             	mov    0xc(%edi),%ecx
415a2b:	8b 01                	mov    (%ecx),%eax
415a2d:	83 f8 01             	cmp    $0x1,%eax
415a30:	0f 8f 2d af 03 00    	jg     0x450963
415a36:	8b 47 04             	mov    0x4(%edi),%eax
415a39:	40                   	inc    %eax
415a3a:	03 c3                	add    %ebx,%eax
415a3c:	39 47 08             	cmp    %eax,0x8(%edi)
415a3f:	0f 82 72 af 03 00    	jb     0x4509b7
415a45:	8b 4f 04             	mov    0x4(%edi),%ecx
415a48:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
415a4b:	50                   	push   %eax
415a4c:	8b 07                	mov    (%edi),%eax
415a4e:	ff 75 cc             	push   -0x34(%ebp)
415a51:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415a54:	50                   	push   %eax
415a55:	e8 26 b6 00 00       	call   0x421080
415a5a:	01 5f 04             	add    %ebx,0x4(%edi)
415a5d:	83 c4 0c             	add    $0xc,%esp
415a60:	8b 4f 04             	mov    0x4(%edi),%ecx
415a63:	33 d2                	xor    %edx,%edx
415a65:	8b 07                	mov    (%edi),%eax
415a67:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
415a6b:	8d 45 bc             	lea    -0x44(%ebp),%eax
415a6e:	8b ce                	mov    %esi,%ecx
415a70:	50                   	push   %eax
415a71:	ff 75 08             	push   0x8(%ebp)
415a74:	e8 07 fc ff ff       	call   0x415680
415a79:	01 45 e8             	add    %eax,-0x18(%ebp)
415a7c:	8d 45 bc             	lea    -0x44(%ebp),%eax
415a7f:	3b f8                	cmp    %eax,%edi
415a81:	0f 84 51 b0 03 00    	je     0x450ad8
415a87:	8b 5d c0             	mov    -0x40(%ebp),%ebx
415a8a:	85 db                	test   %ebx,%ebx
415a8c:	74 43                	je     0x415ad1
415a8e:	8b 4f 0c             	mov    0xc(%edi),%ecx
415a91:	8b 01                	mov    (%ecx),%eax
415a93:	83 f8 01             	cmp    $0x1,%eax
415a96:	0f 8f 5d b0 03 00    	jg     0x450af9
415a9c:	8b 47 04             	mov    0x4(%edi),%eax
415a9f:	40                   	inc    %eax
415aa0:	03 c3                	add    %ebx,%eax
415aa2:	39 47 08             	cmp    %eax,0x8(%edi)
415aa5:	0f 82 a2 b0 03 00    	jb     0x450b4d
415aab:	8b 4f 04             	mov    0x4(%edi),%ecx
415aae:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
415ab1:	50                   	push   %eax
415ab2:	8b 07                	mov    (%edi),%eax
415ab4:	ff 75 bc             	push   -0x44(%ebp)
415ab7:	8d 04 48             	lea    (%eax,%ecx,2),%eax
415aba:	50                   	push   %eax
415abb:	e8 c0 b5 00 00       	call   0x421080
415ac0:	01 5f 04             	add    %ebx,0x4(%edi)
415ac3:	83 c4 0c             	add    $0xc,%esp
415ac6:	8b 4f 04             	mov    0x4(%edi),%ecx
415ac9:	33 d2                	xor    %edx,%edx
415acb:	8b 07                	mov    (%edi),%eax
415acd:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
415ad1:	8b 55 f0             	mov    -0x10(%ebp),%edx
415ad4:	8b da                	mov    %edx,%ebx
415ad6:	ff 4d 0c             	decl   0xc(%ebp)
415ad9:	89 55 f4             	mov    %edx,-0xc(%ebp)
415adc:	e9 3f fe ff ff       	jmp    0x415920
415ae1:	6a ff                	push   $0xffffffff
415ae3:	6a 00                	push   $0x0
415ae5:	8d 4d cc             	lea    -0x34(%ebp),%ecx
415ae8:	e8 9f 23 ff ff       	call   0x407e8c
415aed:	8b 5d d0             	mov    -0x30(%ebp),%ebx
415af0:	e9 24 ff ff ff       	jmp    0x415a19
415af5:	50                   	push   %eax
415af6:	e8 75 26 ff ff       	call   0x408170
415afb:	89 45 d4             	mov    %eax,-0x2c(%ebp)
415afe:	8b 45 cc             	mov    -0x34(%ebp),%eax
415b01:	85 c0                	test   %eax,%eax
415b03:	74 09                	je     0x415b0e
415b05:	50                   	push   %eax
415b06:	e8 61 b5 00 00       	call   0x42106c
415b0b:	83 c4 04             	add    $0x4,%esp
415b0e:	8b 45 d4             	mov    -0x2c(%ebp),%eax
415b11:	33 c9                	xor    %ecx,%ecx
415b13:	ba 02 00 00 00       	mov    $0x2,%edx
415b18:	f7 e2                	mul    %edx
415b1a:	0f 90 c1             	seto   %cl