56d879:	89 14 24             	mov    %edx,(%esp)
56d87c:	c7 44 24 04 00 00 f0 	movl   $0x3ff00000,0x4(%esp)
56d883:	3f
56d884:	85 c0                	test   %eax,%eax
56d886:	7d 12                	jge    0x56d89a
56d888:	33 c9                	xor    %ecx,%ecx
56d88a:	89 4c 24 08          	mov    %ecx,0x8(%esp)
56d88e:	c7 44 24 0c 00 00 e0 	movl   $0x3fe00000,0xc(%esp)
56d895:	3f
56d896:	f7 d8                	neg    %eax
56d898:	eb 1a                	jmp    0x56d8b4
56d89a:	33 d2                	xor    %edx,%edx
56d89c:	89 54 24 08          	mov    %edx,0x8(%esp)
56d8a0:	c7 44 24 0c 00 00 00 	movl   $0x40000000,0xc(%esp)
56d8a7:	40
56d8a8:	eb 0a                	jmp    0x56d8b4
56d8aa:	dd 44 24 08          	fldl   0x8(%esp)
56d8ae:	dc 0c 24             	fmull  (%esp)
56d8b1:	dd 1c 24             	fstpl  (%esp)
56d8b4:	48                   	dec    %eax
56d8b5:	79 f3                	jns    0x56d8aa
56d8b7:	dd 04 24             	fldl   (%esp)
56d8ba:	83 c4 10             	add    $0x10,%esp
56d8bd:	c3                   	ret
56d8be:	8b c0                	mov    %eax,%eax
56d8c0:	53                   	push   %ebx
56d8c1:	56                   	push   %esi
56d8c2:	57                   	push   %edi
56d8c3:	55                   	push   %ebp
56d8c4:	83 c4 f4             	add    $0xfffffff4,%esp
56d8c7:	89 4c 24 08          	mov    %ecx,0x8(%esp)
56d8cb:	89 54 24 04          	mov    %edx,0x4(%esp)
56d8cf:	89 04 24             	mov    %eax,(%esp)
56d8d2:	e8 f5 00 00 00       	call   0x56d9cc
56d8d7:	8b f8                	mov    %eax,%edi
56d8d9:	85 c0                	test   %eax,%eax
56d8db:	75 07                	jne    0x56d8e4
56d8dd:	33 c0                	xor    %eax,%eax
56d8df:	e9 e0 00 00 00       	jmp    0x56d9c4
56d8e4:	33 f6                	xor    %esi,%esi
56d8e6:	33 ed                	xor    %ebp,%ebp
56d8e8:	8b 44 24 08          	mov    0x8(%esp),%eax
56d8ec:	3b e8                	cmp    %eax,%ebp
56d8ee:	0f 8d ce 00 00 00    	jge    0x56d9c2
56d8f4:	e8 67 06 00 00       	call   0x56df60
56d8f9:	8b d8                	mov    %eax,%ebx
56d8fb:	85 c0                	test   %eax,%eax
56d8fd:	75 0e                	jne    0x56d90d
56d8ff:	8b c7                	mov    %edi,%eax
56d901:	e8 e6 00 00 00       	call   0x56d9ec
56d906:	33 c0                	xor    %eax,%eax
56d908:	e9 b7 00 00 00       	jmp    0x56d9c4
56d90d:	85 f6                	test   %esi,%esi
56d90f:	74 0b                	je     0x56d91c
56d911:	89 5e 18             	mov    %ebx,0x18(%esi)
56d914:	ff 46 14             	incl   0x14(%esi)
56d917:	89 73 28             	mov    %esi,0x28(%ebx)
56d91a:	eb 07                	jmp    0x56d923
56d91c:	89 1f                	mov    %ebx,(%edi)
56d91e:	33 d2                	xor    %edx,%edx
56d920:	89 53 28             	mov    %edx,0x28(%ebx)
56d923:	8b 0c 24             	mov    (%esp),%ecx
56d926:	85 c9                	test   %ecx,%ecx
56d928:	74 24                	je     0x56d94e
56d92a:	8b 04 24             	mov    (%esp),%eax
56d92d:	e8 3a 27 00 00       	call   0x57006c
56d932:	89 03                	mov    %eax,(%ebx)
56d934:	8b 04 24             	mov    (%esp),%eax
56d937:	e8 d8 25 00 00       	call   0x56ff14
56d93c:	89 43 08             	mov    %eax,0x8(%ebx)
56d93f:	85 c0                	test   %eax,%eax
56d941:	75 16                	jne    0x56d959
56d943:	8b c7                	mov    %edi,%eax
56d945:	e8 a2 00 00 00       	call   0x56d9ec
56d94a:	33 c0                	xor    %eax,%eax
56d94c:	eb 76                	jmp    0x56d9c4
56d94e:	33 d2                	xor    %edx,%edx
56d950:	89 53 08             	mov    %edx,0x8(%ebx)
56d953:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
56d959:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56d95d:	85 c9                	test   %ecx,%ecx
56d95f:	74 27                	je     0x56d988
56d961:	8b 44 24 04          	mov    0x4(%esp),%eax
56d965:	e8 02 27 00 00       	call   0x57006c
56d96a:	89 43 04             	mov    %eax,0x4(%ebx)
56d96d:	8b 44 24 04          	mov    0x4(%esp),%eax
56d971:	e8 9e 25 00 00       	call   0x56ff14
56d976:	89 43 0c             	mov    %eax,0xc(%ebx)
56d979:	85 c0                	test   %eax,%eax
56d97b:	75 17                	jne    0x56d994
56d97d:	8b c7                	mov    %edi,%eax
56d97f:	e8 68 00 00 00       	call   0x56d9ec
56d984:	33 c0                	xor    %eax,%eax
56d986:	eb 3c                	jmp    0x56d9c4
56d988:	33 d2                	xor    %edx,%edx
56d98a:	89 53 0c             	mov    %edx,0xc(%ebx)
56d98d:	c7 43 04 01 00 00 00 	movl   $0x1,0x4(%ebx)
56d994:	8b 0b                	mov    (%ebx),%ecx
56d996:	0f af 4b 04          	imul   0x4(%ebx),%ecx
56d99a:	89 4b 10             	mov    %ecx,0x10(%ebx)
56d99d:	33 d2                	xor    %edx,%edx
56d99f:	8d 43 18             	lea    0x18(%ebx),%eax
56d9a2:	eb 08                	jmp    0x56d9ac
56d9a4:	33 c9                	xor    %ecx,%ecx
56d9a6:	42                   	inc    %edx
56d9a7:	89 08                	mov    %ecx,(%eax)
56d9a9:	83 c0 04             	add    $0x4,%eax
56d9ac:	8b 4b 10             	mov    0x10(%ebx),%ecx
56d9af:	3b d1                	cmp    %ecx,%edx
56d9b1:	7c f1                	jl     0x56d9a4
56d9b3:	8b f3                	mov    %ebx,%esi
56d9b5:	45                   	inc    %ebp
56d9b6:	8b 44 24 08          	mov    0x8(%esp),%eax
56d9ba:	3b e8                	cmp    %eax,%ebp
56d9bc:	0f 8c 32 ff ff ff    	jl     0x56d8f4
56d9c2:	8b c7                	mov    %edi,%eax
56d9c4:	83 c4 0c             	add    $0xc,%esp
56d9c7:	5d                   	pop    %ebp
56d9c8:	5f                   	pop    %edi
56d9c9:	5e                   	pop    %esi
56d9ca:	5b                   	pop    %ebx
56d9cb:	c3                   	ret
56d9cc:	53                   	push   %ebx
56d9cd:	b8 04 00 00 00       	mov    $0x4,%eax
56d9d2:	e8 a5 a9 00 00       	call   0x57837c
56d9d7:	8b d8                	mov    %eax,%ebx
56d9d9:	85 c0                	test   %eax,%eax
56d9db:	75 04                	jne    0x56d9e1
56d9dd:	33 c0                	xor    %eax,%eax
56d9df:	5b                   	pop    %ebx
56d9e0:	c3                   	ret
56d9e1:	33 d2                	xor    %edx,%edx
56d9e3:	8b c3                	mov    %ebx,%eax
56d9e5:	89 13                	mov    %edx,(%ebx)
56d9e7:	5b                   	pop    %ebx
56d9e8:	c3                   	ret
56d9e9:	90                   	nop
56d9ea:	90                   	nop
56d9eb:	90                   	nop
56d9ec:	53                   	push   %ebx
56d9ed:	8b d8                	mov    %eax,%ebx
56d9ef:	8b 03                	mov    (%ebx),%eax
56d9f1:	85 c0                	test   %eax,%eax
56d9f3:	74 05                	je     0x56d9fa
56d9f5:	e8 a2 05 00 00       	call   0x56df9c
56d9fa:	8b c3                	mov    %ebx,%eax
56d9fc:	e8 83 a9 00 00       	call   0x578384
56da01:	5b                   	pop    %ebx
56da02:	c3                   	ret
56da03:	90                   	nop
56da04:	56                   	push   %esi
56da05:	8b 30                	mov    (%eax),%esi
56da07:	85 f6                	test   %esi,%esi
56da09:	74 07                	je     0x56da12
56da0b:	8b c6                	mov    %esi,%eax
56da0d:	e8 02 00 00 00       	call   0x56da14
56da12:	5e                   	pop    %esi
56da13:	c3                   	ret
56da14:	53                   	push   %ebx
56da15:	56                   	push   %esi
56da16:	57                   	push   %edi
56da17:	55                   	push   %ebp
56da18:	81 c4 74 ff ff ff    	add    $0xffffff74,%esp
56da1e:	8b f8                	mov    %eax,%edi
56da20:	89 4c 24 04          	mov    %ecx,0x4(%esp)
56da24:	89 14 24             	mov    %edx,(%esp)
56da27:	8b 47 0c             	mov    0xc(%edi),%eax
56da2a:	85 c0                	test   %eax,%eax
56da2c:	74 12                	je     0x56da40
56da2e:	8b 14 24             	mov    (%esp),%edx
56da31:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56da35:	81 ca 00 00 01 00    	or     $0x10000,%edx
56da3b:	e8 44 26 00 00       	call   0x570084
56da40:	8b 47 08             	mov    0x8(%edi),%eax
56da43:	85 c0                	test   %eax,%eax
56da45:	74 0c                	je     0x56da53
56da47:	8b 4c 24 04          	mov    0x4(%esp),%ecx
56da4b:	8b 14 24             	mov    (%esp),%edx
56da4e:	e8 31 26 00 00       	call   0x570084
56da53:	8b 47 14             	mov    0x14(%edi),%eax
56da56:	85 c0                	test   %eax,%eax
56da58:	0f 8e e9 00 00 00    	jle    0x56db47
56da5e:	8b 54 24 04          	mov    0x4(%esp),%edx
56da62:	8b 4a 08             	mov    0x8(%edx),%ecx
56da65:	51                   	push   %ecx
56da66:	8b 44 24 08          	mov    0x8(%esp),%eax
56da6a:	8b 50 0c             	mov    0xc(%eax),%edx
56da6d:	52                   	push   %edx
56da6e:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56da72:	8b 41 10             	mov    0x10(%ecx),%eax
56da75:	50                   	push   %eax
56da76:	6a 04                	push   $0x4
56da78:	8d 54 24 18          	lea    0x18(%esp),%edx
56da7c:	52                   	push   %edx
56da7d:	8d 4c 24 20          	lea    0x20(%esp),%ecx
56da81:	51                   	push   %ecx
56da82:	8b 44 24 1c          	mov    0x1c(%esp),%eax
56da86:	8b 48 04             	mov    0x4(%eax),%ecx
56da89:	8b 57 0c             	mov    0xc(%edi),%edx
56da8c:	8b 47 08             	mov    0x8(%edi),%eax
56da8f:	e8 50 05 00 00       	call   0x56dfe4
56da94:	6a 00                	push   $0x0
56da96:	33 c9                	xor    %ecx,%ecx
56da98:	33 d2                	xor    %edx,%edx
56da9a:	33 c0                	xor    %eax,%eax
56da9c:	e8 b7 a1 00 00       	call   0x577c58
56daa1:	8b f0                	mov    %eax,%esi
56daa3:	85 f6                	test   %esi,%esi
56daa5:	75 17                	jne    0x56dabe
56daa7:	68 05 01 00 00       	push   $0x105
56daac:	68 86 0b 6a 00       	push   $0x6a0b86
56dab1:	68 84 0b 6a 00       	push   $0x6a0b84
56dab6:	e8 85 d0 fe ff       	call   0x55ab40
56dabb:	83 c4 0c             	add    $0xc,%esp
56dabe:	33 ed                	xor    %ebp,%ebp
56dac0:	8d 5c 24 0c          	lea    0xc(%esp),%ebx
56dac4:	8d 47 18             	lea    0x18(%edi),%eax
56dac7:	8b f8                	mov    %eax,%edi
56dac9:	8b 54 24 08          	mov    0x8(%esp),%edx
56dacd:	3b ea                	cmp    %edx,%ebp
56dacf:	7d 6f                	jge    0x56db40
56dad1:	8b 0f                	mov    (%edi),%ecx
56dad3:	85 c9                	test   %ecx,%ecx
56dad5:	74 5a                	je     0x56db31
56dad7:	8b 03                	mov    (%ebx),%eax
56dad9:	8b 53 08             	mov    0x8(%ebx),%edx
56dadc:	3b c2                	cmp    %edx,%eax
56dade:	74 51                	je     0x56db31
56dae0:	8b 4b 04             	mov    0x4(%ebx),%ecx
56dae3:	8b 43 0c             	mov    0xc(%ebx),%eax
56dae6:	3b c8                	cmp    %eax,%ecx
56dae8:	74 47                	je     0x56db31
56daea:	8b 53 14             	mov    0x14(%ebx),%edx
56daed:	52                   	push   %edx
56daee:	8b 4b 18             	mov    0x18(%ebx),%ecx
56daf1:	51                   	push   %ecx
56daf2:	8b 43 1c             	mov    0x1c(%ebx),%eax
56daf5:	50                   	push   %eax
56daf6:	8b 4b 10             	mov    0x10(%ebx),%ecx
56daf9:	8b 54 24 10          	mov    0x10(%esp),%edx
56dafd:	8b c6                	mov    %esi,%eax
56daff:	e8 88 a3 00 00       	call   0x577e8c
56db04:	8b 13                	mov    (%ebx),%edx
56db06:	89 56 04             	mov    %edx,0x4(%esi)
56db09:	8b 4b 04             	mov    0x4(%ebx),%ecx
56db0c:	89 4e 08             	mov    %ecx,0x8(%esi)
56db0f:	8b 46 04             	mov    0x4(%esi),%eax
56db12:	8b 56 18             	mov    0x18(%esi),%edx
56db15:	03 c2                	add    %edx,%eax
56db17:	89 46 0c             	mov    %eax,0xc(%esi)
56db1a:	8b 4e 08             	mov    0x8(%esi),%ecx
56db1d:	8b 46 14             	mov    0x14(%esi),%eax
56db20:	03 c8                	add    %eax,%ecx
56db22:	89 4e 10             	mov    %ecx,0x10(%esi)
56db25:	8b 07                	mov    (%edi),%eax
56db27:	8b ce                	mov    %esi,%ecx
56db29:	8b 14 24             	mov    (%esp),%edx
56db2c:	e8 e3 fe ff ff       	call   0x56da14
56db31:	83 c7 04             	add    $0x4,%edi
56db34:	45                   	inc    %ebp
56db35:	83 c3 20             	add    $0x20,%ebx
56db38:	8b 44 24 08          	mov    0x8(%esp),%eax
56db3c:	3b e8                	cmp    %eax,%ebp
56db3e:	7c 91                	jl     0x56dad1
56db40:	8b c6                	mov    %esi,%eax
56db42:	e8 4d a2 00 00       	call   0x577d94
56db47:	81 c4 8c 00 00 00    	add    $0x8c,%esp
56db4d:	5d                   	pop    %ebp
56db4e:	5f                   	pop    %edi
56db4f:	5e                   	pop    %esi
56db50:	5b                   	pop    %ebx
56db51:	c3                   	ret
56db52:	90                   	nop
56db53:	90                   	nop
56db54:	56                   	push   %esi
56db55:	8b 30                	mov    (%eax),%esi
56db57:	85 f6                	test   %esi,%esi
56db59:	74 07                	je     0x56db62
56db5b:	8b c6                	mov    %esi,%eax
56db5d:	e8 02 00 00 00       	call   0x56db64
56db62:	5e                   	pop    %esi
56db63:	c3                   	ret
56db64:	53                   	push   %ebx
56db65:	56                   	push   %esi
56db66:	57                   	push   %edi
56db67:	55                   	push   %ebp
56db68:	81 c4 70 ff ff ff    	add    $0xffffff70,%esp
56db6e:	8b e8                	mov    %eax,%ebp
56db70:	89 4c 24 04          	mov    %ecx,0x4(%esp)
56db74:	89 14 24             	mov    %edx,(%esp)
56db77:	8b 45 14             	mov    0x14(%ebp),%eax
56db7a:	85 c0                	test   %eax,%eax
56db7c:	0f 8e db 00 00 00    	jle    0x56dc5d
56db82:	8b 54 24 04          	mov    0x4(%esp),%edx
56db86:	8b 4a 08             	mov    0x8(%edx),%ecx
56db89:	51                   	push   %ecx
56db8a:	8b 44 24 08          	mov    0x8(%esp),%eax
56db8e:	8b 50 0c             	mov    0xc(%eax),%edx
56db91:	52                   	push   %edx
56db92:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
56db96:	8b 41 10             	mov    0x10(%ecx),%eax
56db99:	50                   	push   %eax
56db9a:	6a 04                	push   $0x4
56db9c:	8d 54 24 18          	lea    0x18(%esp),%edx
56dba0:	52                   	push   %edx
56dba1:	8d 4c 24 24          	lea    0x24(%esp),%ecx
56dba5:	51                   	push   %ecx
56dba6:	8b 44 24 1c          	mov    0x1c(%esp),%eax
56dbaa:	8b 48 04             	mov    0x4(%eax),%ecx
56dbad:	8b 55 0c             	mov    0xc(%ebp),%edx
56dbb0:	8b 45 08             	mov    0x8(%ebp),%eax
56dbb3:	e8 2c 04 00 00       	call   0x56dfe4
56dbb8:	6a 00                	push   $0x0
56dbba:	33 c9                	xor    %ecx,%ecx
56dbbc:	33 d2                	xor    %edx,%edx
56dbbe:	33 c0                	xor    %eax,%eax
56dbc0:	e8 93 a0 00 00       	call   0x577c58
56dbc5:	8b f0                	mov    %eax,%esi
56dbc7:	33 c0                	xor    %eax,%eax
56dbc9:	89 44 24 0c          	mov    %eax,0xc(%esp)
56dbcd:	8d 5c 24 10          	lea    0x10(%esp),%ebx
56dbd1:	8d 7d 18             	lea    0x18(%ebp),%edi
56dbd4:	8b 44 24 0c          	mov    0xc(%esp),%eax
56dbd8:	8b 54 24 08          	mov    0x8(%esp),%edx
56dbdc:	3b c2                	cmp    %edx,%eax
56dbde:	7d 76                	jge    0x56dc56
56dbe0:	8b 0f                	mov    (%edi),%ecx
56dbe2:	85 c9                	test   %ecx,%ecx
56dbe4:	74 5a                	je     0x56dc40
56dbe6:	8b 03                	mov    (%ebx),%eax
56dbe8:	8b 53 08             	mov    0x8(%ebx),%edx
56dbeb:	3b c2                	cmp    %edx,%eax
56dbed:	74 51                	je     0x56dc40
56dbef:	8b 4b 04             	mov    0x4(%ebx),%ecx
56dbf2:	8b 43 0c             	mov    0xc(%ebx),%eax
56dbf5:	3b c8                	cmp    %eax,%ecx
56dbf7:	74 47                	je     0x56dc40
56dbf9:	8b 53 14             	mov    0x14(%ebx),%edx
56dbfc:	52                   	push   %edx
56dbfd:	8b 4b 18             	mov    0x18(%ebx),%ecx
56dc00:	51                   	push   %ecx
56dc01:	8b 43 1c             	mov    0x1c(%ebx),%eax
56dc04:	50                   	push   %eax
56dc05:	8b 4b 10             	mov    0x10(%ebx),%ecx
56dc08:	8b 54 24 10          	mov    0x10(%esp),%edx
56dc0c:	8b c6                	mov    %esi,%eax
56dc0e:	e8 79 a2 00 00       	call   0x577e8c
56dc13:	8b 13                	mov    (%ebx),%edx
56dc15:	89 56 04             	mov    %edx,0x4(%esi)
56dc18:	8b 4b 04             	mov    0x4(%ebx),%ecx