58a973:	55                   	push   %ebp
58a974:	81 c4 04 f0 ff ff    	add    $0xfffff004,%esp
58a97a:	50                   	push   %eax
58a97b:	81 c4 f0 f8 ff ff    	add    $0xfffff8f0,%esp
58a981:	89 04 24             	mov    %eax,(%esp)
58a984:	8b 04 24             	mov    (%esp),%eax
58a987:	89 44 24 08          	mov    %eax,0x8(%esp)
58a98b:	8b 44 24 08          	mov    0x8(%esp),%eax
58a98f:	c7 80 c0 f4 00 00 aa 	movl   $0xa733f4aa,0xf4c0(%eax)
58a996:	f4 33 a7
58a999:	c7 80 c4 f4 00 00 c1 	movl   $0x3f979dc1,0xf4c4(%eax)
58a9a0:	9d 97 3f
58a9a3:	33 f6                	xor    %esi,%esi
58a9a5:	8b 44 24 08          	mov    0x8(%esp),%eax
58a9a9:	8d 98 a8 f4 00 00    	lea    0xf4a8(%eax),%ebx
58a9af:	66 83 7b 02 00       	cmpw   $0x0,0x2(%ebx)
58a9b4:	74 20                	je     0x58a9d6
58a9b6:	89 b4 24 0c 17 00 00 	mov    %esi,0x170c(%esp)
58a9bd:	db 84 24 0c 17 00 00 	fildl  0x170c(%esp)
58a9c4:	dc 4b 18             	fmull  0x18(%ebx)
58a9c7:	e8 00 83 e7 ff       	call   0x402ccc
58a9cc:	8b c8                	mov    %eax,%ecx
58a9ce:	8b 53 08             	mov    0x8(%ebx),%edx
58a9d1:	8b 43 04             	mov    0x4(%ebx),%eax
58a9d4:	ff 13                	call   *(%ebx)
58a9d6:	8d 54 24 0c          	lea    0xc(%esp),%edx
58a9da:	8b 44 24 08          	mov    0x8(%esp),%eax
58a9de:	8b 40 04             	mov    0x4(%eax),%eax
58a9e1:	b9 00 17 00 00       	mov    $0x1700,%ecx
58a9e6:	8b 18                	mov    (%eax),%ebx
58a9e8:	ff 53 08             	call   *0x8(%ebx)
58a9eb:	66 b8 55 aa          	mov    $0xaa55,%ax
58a9ef:	e8 9c fc ff ff       	call   0x58a690
58a9f4:	66 3d 55 aa          	cmp    $0xaa55,%ax
58a9f8:	75 10                	jne    0x58aa0a
58a9fa:	8d 44 24 0c          	lea    0xc(%esp),%eax
58a9fe:	8b d0                	mov    %eax,%edx
58aa00:	b9 00 17 00 00       	mov    $0x1700,%ecx
58aa05:	e8 ba fd ff ff       	call   0x58a7c4
58aa0a:	33 db                	xor    %ebx,%ebx
58aa0c:	bf 9f 05 00 00       	mov    $0x59f,%edi
58aa11:	2b fb                	sub    %ebx,%edi
58aa13:	8b c6                	mov    %esi,%eax
58aa15:	d1 e8                	shr    $1,%eax
58aa17:	03 f8                	add    %eax,%edi
58aa19:	8d 6e 01             	lea    0x1(%esi),%ebp
58aa1c:	d1 ed                	shr    $1,%ebp
58aa1e:	03 eb                	add    %ebx,%ebp
58aa20:	8d 43 10             	lea    0x10(%ebx),%eax
58aa23:	8b 54 24 08          	mov    0x8(%esp),%edx
58aa27:	69 92 e8 01 00 00 c0 	imul   $0x5c0,0x1e8(%edx),%edx
58aa2e:	05 00 00
58aa31:	03 c2                	add    %edx,%eax
58aa33:	0f b7 44 44 0c       	movzwl 0xc(%esp,%eax,2),%eax
58aa38:	89 44 24 04          	mov    %eax,0x4(%esp)
58aa3c:	8b 04 24             	mov    (%esp),%eax
58aa3f:	8b cd                	mov    %ebp,%ecx
58aa41:	8b d7                	mov    %edi,%edx
58aa43:	e8 b4 df ff ff       	call   0x5889fc
58aa48:	66 8b 54 24 04       	mov    0x4(%esp),%dx
58aa4d:	66 89 10             	mov    %dx,(%eax)
58aa50:	43                   	inc    %ebx
58aa51:	81 fb a0 05 00 00    	cmp    $0x5a0,%ebx
58aa57:	75 b3                	jne    0x58aa0c
58aa59:	46                   	inc    %esi
58aa5a:	81 fe 78 08 00 00    	cmp    $0x878,%esi
58aa60:	0f 85 3f ff ff ff    	jne    0x58a9a5
58aa66:	8b 44 24 08          	mov    0x8(%esp),%eax
58aa6a:	c6 80 a0 f4 00 00 01 	movb   $0x1,0xf4a0(%eax)
58aa71:	81 c4 10 17 00 00    	add    $0x1710,%esp
58aa77:	5d                   	pop    %ebp
58aa78:	5f                   	pop    %edi
58aa79:	5e                   	pop    %esi
58aa7a:	5b                   	pop    %ebx
58aa7b:	c3                   	ret
58aa7c:	53                   	push   %ebx
58aa7d:	56                   	push   %esi
58aa7e:	57                   	push   %edi
58aa7f:	55                   	push   %ebp
58aa80:	83 c4 a4             	add    $0xffffffa4,%esp
58aa83:	89 04 24             	mov    %eax,(%esp)
58aa86:	8b 34 24             	mov    (%esp),%esi
58aa89:	33 c0                	xor    %eax,%eax
58aa8b:	89 44 24 10          	mov    %eax,0x10(%esp)
58aa8f:	33 ff                	xor    %edi,%edi
58aa91:	8b 86 ec 00 00 00    	mov    0xec(%esi),%eax
58aa97:	f7 ae e8 00 00 00    	imull  0xe8(%esi)
58aa9d:	8d 04 80             	lea    (%eax,%eax,4),%eax
58aaa0:	85 c0                	test   %eax,%eax
58aaa2:	79 03                	jns    0x58aaa7
58aaa4:	83 c0 07             	add    $0x7,%eax
58aaa7:	c1 f8 03             	sar    $0x3,%eax
58aaaa:	89 44 24 14          	mov    %eax,0x14(%esp)
58aaae:	8d 54 24 04          	lea    0x4(%esp),%edx
58aab2:	b9 0a 00 00 00       	mov    $0xa,%ecx
58aab7:	8b 46 04             	mov    0x4(%esi),%eax
58aaba:	8b 18                	mov    (%eax),%ebx
58aabc:	ff 53 08             	call   *0x8(%ebx)
58aabf:	83 f8 0a             	cmp    $0xa,%eax
58aac2:	0f 85 0f 01 00 00    	jne    0x58abd7
58aac8:	33 db                	xor    %ebx,%ebx
58aaca:	8b 44 24 10          	mov    0x10(%esp),%eax
58aace:	89 44 9c 1c          	mov    %eax,0x1c(%esp,%ebx,4)
58aad2:	ff 44 24 10          	incl   0x10(%esp)
58aad6:	33 c0                	xor    %eax,%eax
58aad8:	8a 44 1c 04          	mov    0x4(%esp,%ebx,1),%al
58aadc:	8b d0                	mov    %eax,%edx
58aade:	c1 e2 08             	shl    $0x8,%edx
58aae1:	33 c9                	xor    %ecx,%ecx
58aae3:	8a 4c 1c 05          	mov    0x5(%esp,%ebx,1),%cl
58aae7:	0b d1                	or     %ecx,%edx
58aae9:	89 54 9c 20          	mov    %edx,0x20(%esp,%ebx,4)
58aaed:	c1 e8 02             	shr    $0x2,%eax
58aaf0:	c1 e7 06             	shl    $0x6,%edi
58aaf3:	0b c7                	or     %edi,%eax
58aaf5:	8b f8                	mov    %eax,%edi
58aaf7:	83 c3 02             	add    $0x2,%ebx
58aafa:	83 fb 0a             	cmp    $0xa,%ebx
58aafd:	72 cb                	jb     0x58aaca
58aaff:	83 fb 10             	cmp    $0x10,%ebx
58ab02:	73 26                	jae    0x58ab2a
58ab04:	8b 44 24 14          	mov    0x14(%esp),%eax
58ab08:	89 44 9c 1c          	mov    %eax,0x1c(%esp,%ebx,4)
58ab0c:	ff 44 24 14          	incl   0x14(%esp)
58ab10:	b9 0e 00 00 00       	mov    $0xe,%ecx
58ab15:	2b cb                	sub    %ebx,%ecx
58ab17:	8b c7                	mov    %edi,%eax
58ab19:	d3 e8                	shr    %cl,%eax
58ab1b:	8d 04 80             	lea    (%eax,%eax,4),%eax
58ab1e:	89 44 9c 20          	mov    %eax,0x20(%esp,%ebx,4)
58ab22:	83 c3 02             	add    $0x2,%ebx
58ab25:	83 fb 10             	cmp    $0x10,%ebx
58ab28:	72 da                	jb     0x58ab04
58ab2a:	33 db                	xor    %ebx,%ebx
58ab2c:	8b 86 ec 00 00 00    	mov    0xec(%esi),%eax
58ab32:	99                   	cltd
58ab33:	52                   	push   %edx
58ab34:	50                   	push   %eax
58ab35:	8b 44 9c 24          	mov    0x24(%esp,%ebx,4),%eax
58ab39:	33 d2                	xor    %edx,%edx
58ab3b:	e8 68 af e7 ff       	call   0x405aa8
58ab40:	8b e8                	mov    %eax,%ebp
58ab42:	2b ae f0 00 00 00    	sub    0xf0(%esi),%ebp
58ab48:	8b 86 ec 00 00 00    	mov    0xec(%esi),%eax
58ab4e:	99                   	cltd
58ab4f:	52                   	push   %edx
58ab50:	50                   	push   %eax
58ab51:	8b 44 9c 24          	mov    0x24(%esp,%ebx,4),%eax
58ab55:	33 d2                	xor    %edx,%edx
58ab57:	e8 14 b0 e7 ff       	call   0x405b70
58ab5c:	2b 86 f4 00 00 00    	sub    0xf4(%esi),%eax
58ab62:	89 44 24 18          	mov    %eax,0x18(%esp)
58ab66:	8b c5                	mov    %ebp,%eax
58ab68:	33 d2                	xor    %edx,%edx
58ab6a:	52                   	push   %edx
58ab6b:	50                   	push   %eax
58ab6c:	8b 86 f8 00 00 00    	mov    0xf8(%esi),%eax
58ab72:	99                   	cltd
58ab73:	3b 54 24 04          	cmp    0x4(%esp),%edx
58ab77:	75 09                	jne    0x58ab82
58ab79:	3b 04 24             	cmp    (%esp),%eax
58ab7c:	5a                   	pop    %edx
58ab7d:	58                   	pop    %eax
58ab7e:	76 46                	jbe    0x58abc6
58ab80:	eb 04                	jmp    0x58ab86
58ab82:	5a                   	pop    %edx
58ab83:	58                   	pop    %eax
58ab84:	7e 40                	jle    0x58abc6
58ab86:	8b 44 24 18          	mov    0x18(%esp),%eax
58ab8a:	33 d2                	xor    %edx,%edx
58ab8c:	52                   	push   %edx
58ab8d:	50                   	push   %eax
58ab8e:	8b 86 fc 00 00 00    	mov    0xfc(%esi),%eax
58ab94:	99                   	cltd
58ab95:	3b 54 24 04          	cmp    0x4(%esp),%edx
58ab99:	75 09                	jne    0x58aba4
58ab9b:	3b 04 24             	cmp    (%esp),%eax
58ab9e:	5a                   	pop    %edx
58ab9f:	58                   	pop    %eax
58aba0:	76 24                	jbe    0x58abc6
58aba2:	eb 04                	jmp    0x58aba8
58aba4:	5a                   	pop    %edx
58aba5:	58                   	pop    %eax
58aba6:	7e 1e                	jle    0x58abc6
58aba8:	8b 04 24             	mov    (%esp),%eax
58abab:	8b 4c 24 18          	mov    0x18(%esp),%ecx
58abaf:	8b d5                	mov    %ebp,%edx
58abb1:	e8 46 de ff ff       	call   0x5889fc
58abb6:	66 8b 54 9c 20       	mov    0x20(%esp,%ebx,4),%dx
58abbb:	66 81 e2 ff 03       	and    $0x3ff,%dx
58abc0:	c1 e2 04             	shl    $0x4,%edx
58abc3:	66 89 10             	mov    %dx,(%eax)
58abc6:	83 c3 02             	add    $0x2,%ebx
58abc9:	83 fb 10             	cmp    $0x10,%ebx
58abcc:	0f 82 5a ff ff ff    	jb     0x58ab2c
58abd2:	e9 d7 fe ff ff       	jmp    0x58aaae
58abd7:	83 c4 5c             	add    $0x5c,%esp
58abda:	5d                   	pop    %ebp
58abdb:	5f                   	pop    %edi
58abdc:	5e                   	pop    %esi
58abdd:	5b                   	pop    %ebx
58abde:	c3                   	ret
58abdf:	90                   	nop
58abe0:	53                   	push   %ebx
58abe1:	56                   	push   %esi
58abe2:	57                   	push   %edi
58abe3:	55                   	push   %ebp
58abe4:	50                   	push   %eax
58abe5:	b8 02 00 00 00       	mov    $0x2,%eax
58abea:	81 c4 04 f0 ff ff    	add    $0xfffff004,%esp
58abf0:	50                   	push   %eax
58abf1:	48                   	dec    %eax
58abf2:	75 f6                	jne    0x58abea
58abf4:	8b 84 24 00 20 00 00 	mov    0x2000(%esp),%eax
58abfb:	83 c4 a8             	add    $0xffffffa8,%esp
58abfe:	89 04 24             	mov    %eax,(%esp)
58ac01:	8b 1c 24             	mov    (%esp),%ebx
58ac04:	8b f3                	mov    %ebx,%esi
58ac06:	8b 7e 04             	mov    0x4(%esi),%edi
58ac09:	8b c7                	mov    %edi,%eax
58ac0b:	e8 a8 3a e9 ff       	call   0x41e6b8
58ac10:	83 c0 08             	add    $0x8,%eax
58ac13:	83 d2 00             	adc    $0x0,%edx
58ac16:	52                   	push   %edx
58ac17:	50                   	push   %eax
58ac18:	8b c7                	mov    %edi,%eax
58ac1a:	e8 b9 3a e9 ff       	call   0x41e6d8
58ac1f:	8b c3                	mov    %ebx,%eax
58ac21:	8b 56 04             	mov    0x4(%esi),%edx
58ac24:	e8 83 df ff ff       	call   0x588bac
58ac29:	99                   	cltd
58ac2a:	52                   	push   %edx
58ac2b:	50                   	push   %eax
58ac2c:	8b 7e 04             	mov    0x4(%esi),%edi
58ac2f:	8b c7                	mov    %edi,%eax
58ac31:	e8 82 3a e9 ff       	call   0x41e6b8
58ac36:	03 04 24             	add    (%esp),%eax
58ac39:	13 54 24 04          	adc    0x4(%esp),%edx
58ac3d:	83 c4 08             	add    $0x8,%esp
58ac40:	05 28 01 00 00       	add    $0x128,%eax
58ac45:	83 d2 00             	adc    $0x0,%edx
58ac48:	52                   	push   %edx
58ac49:	50                   	push   %eax
58ac4a:	8b c7                	mov    %edi,%eax
58ac4c:	e8 87 3a e9 ff       	call   0x41e6d8
58ac51:	8b c3                	mov    %ebx,%eax
58ac53:	8b 56 04             	mov    0x4(%esi),%edx
58ac56:	e8 f9 de ff ff       	call   0x588b54
58ac5b:	66 89 44 24 08       	mov    %ax,0x8(%esp)
58ac60:	8b c3                	mov    %ebx,%eax
58ac62:	8b 56 04             	mov    0x4(%esi),%edx
58ac65:	e8 ea de ff ff       	call   0x588b54
58ac6a:	66 89 44 24 0a       	mov    %ax,0xa(%esp)
58ac6f:	8b 86 d4 00 00 00    	mov    0xd4(%esi),%eax
58ac75:	83 c0 0c             	add    $0xc,%eax
58ac78:	8b 96 f0 00 00 00    	mov    0xf0(%esi),%edx
58ac7e:	0f af 96 ec 00 00 00 	imul   0xec(%esi),%edx
58ac85:	03 d2                	add    %edx,%edx
58ac87:	03 c2                	add    %edx,%eax
58ac89:	99                   	cltd
58ac8a:	52                   	push   %edx
58ac8b:	50                   	push   %eax
58ac8c:	8b 46 04             	mov    0x4(%esi),%eax
58ac8f:	e8 44 3a e9 ff       	call   0x41e6d8
58ac94:	db 86 f8 00 00 00    	fildl  0xf8(%esi)
58ac9a:	d8 3d a8 ad 58 00    	fdivrs 0x58ada8
58aca0:	d8 35 ac ad 58 00    	fdivs  0x58adac
58aca6:	dd 9e c0 f4 00 00    	fstpl  0xf4c0(%esi)
58acac:	9b                   	fwait
58acad:	8b 86 f8 00 00 00    	mov    0xf8(%esi),%eax
58acb3:	48                   	dec    %eax
58acb4:	85 c0                	test   %eax,%eax
58acb6:	0f 8c e0 00 00 00    	jl     0x58ad9c
58acbc:	40                   	inc    %eax
58acbd:	89 44 24 0c          	mov    %eax,0xc(%esp)
58acc1:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
58acc8:	00
58acc9:	8d 9e a8 f4 00 00    	lea    0xf4a8(%esi),%ebx
58accf:	66 83 7b 02 00       	cmpw   $0x0,0x2(%ebx)
58acd4:	74 16                	je     0x58acec
58acd6:	db 44 24 04          	fildl  0x4(%esp)
58acda:	dc 4b 18             	fmull  0x18(%ebx)
58acdd:	e8 ea 7f e7 ff       	call   0x402ccc
58ace2:	8b c8                	mov    %eax,%ecx
58ace4:	8b 53 08             	mov    0x8(%ebx),%edx
58ace7:	8b 43 04             	mov    0x4(%ebx),%eax
58acea:	ff 13                	call   *(%ebx)
58acec:	8b 8e ec 00 00 00    	mov    0xec(%esi),%ecx
58acf2:	03 c9                	add    %ecx,%ecx
58acf4:	8d 54 24 10          	lea    0x10(%esp),%edx
58acf8:	8b 46 04             	mov    0x4(%esi),%eax
58acfb:	8b 18                	mov    (%eax),%ebx
58acfd:	ff 53 08             	call   *0x8(%ebx)
58ad00:	33 db                	xor    %ebx,%ebx
58ad02:	eb 52                	jmp    0x58ad56
58ad04:	66 8b 44 5c 10       	mov    0x10(%esp,%ebx,2),%ax
58ad09:	e8 82 f9 ff ff       	call   0x58a690
58ad0e:	8b f8                	mov    %eax,%edi
58ad10:	66 33 7c 24 08       	xor    0x8(%esp),%di
58ad15:	0f b7 ff             	movzwl %di,%edi
58ad18:	66 8b 44 5c 12       	mov    0x12(%esp,%ebx,2),%ax
58ad1d:	e8 6e f9 ff ff       	call   0x58a690
58ad22:	66 33 44 24 0a       	xor    0xa(%esp),%ax
58ad27:	0f b7 c0             	movzwl %ax,%eax
58ad2a:	8b c8                	mov    %eax,%ecx
58ad2c:	66 81 e1 aa aa       	and    $0xaaaa,%cx
58ad31:	8b d7                	mov    %edi,%edx
58ad33:	8b ea                	mov    %edx,%ebp
58ad35:	66 81 e5 55 55       	and    $0x5555,%bp
58ad3a:	66 0b cd             	or     %bp,%cx
58ad3d:	66 89 4c 5c 10       	mov    %cx,0x10(%esp,%ebx,2)
58ad42:	66 81 e2 aa aa       	and    $0xaaaa,%dx
58ad47:	66 25 55 55          	and    $0x5555,%ax
58ad4b:	66 0b d0             	or     %ax,%dx
58ad4e:	66 89 54 5c 12       	mov    %dx,0x12(%esp,%ebx,2)
58ad53:	83 c3 02             	add    $0x2,%ebx
58ad56:	3b 9e ec 00 00 00    	cmp    0xec(%esi),%ebx
58ad5c:	7c a6                	jl     0x58ad04
58ad5e:	8b be fc 00 00 00    	mov    0xfc(%esi),%edi
58ad64:	4f                   	dec    %edi
58ad65:	85 ff                	test   %edi,%edi
58ad67:	7c 25                	jl     0x58ad8e
58ad69:	47                   	inc    %edi
58ad6a:	33 db                	xor    %ebx,%ebx
58ad6c:	8b 04 24             	mov    (%esp),%eax
58ad6f:	8b cb                	mov    %ebx,%ecx
58ad71:	8b 54 24 04          	mov    0x4(%esp),%edx
58ad75:	e8 82 dc ff ff       	call   0x5889fc
58ad7a:	8b 96 f4 00 00 00    	mov    0xf4(%esi),%edx
58ad80:	03 d3                	add    %ebx,%edx
58ad82:	66 8b 54 54 10       	mov    0x10(%esp,%edx,2),%dx
58ad87:	66 89 10             	mov    %dx,(%eax)
58ad8a:	43                   	inc    %ebx
58ad8b:	4f                   	dec    %edi
58ad8c:	75 de                	jne    0x58ad6c
58ad8e:	ff 44 24 04          	incl   0x4(%esp)
58ad92:	ff 4c 24 0c          	decl   0xc(%esp)
58ad96:	0f 85 2d ff ff ff    	jne    0x58acc9
58ad9c:	81 c4 5c 20 00 00    	add    $0x205c,%esp
58ada2:	5d                   	pop    %ebp
58ada3:	5f                   	pop    %edi
58ada4:	5e                   	pop    %esi
58ada5:	5b                   	pop    %ebx
58ada6:	c3                   	ret
58ada7:	00 00                	add    %al,(%eax)
58ada9:	00 c8                	add    %cl,%al
58adab:	42                   	inc    %edx
58adac:	00 00                	add    %al,(%eax)
58adae:	00 40 53             	add    %al,0x53(%eax)
58adb1:	56                   	push   %esi