58d548:	8b 6c 24 10          	mov    0x10(%esp),%ebp
58d54c:	2b a9 f4 00 00 00    	sub    0xf4(%ecx),%ebp
58d552:	03 dd                	add    %ebp,%ebx
58d554:	85 db                	test   %ebx,%ebx
58d556:	7e 3a                	jle    0x58d592
58d558:	8b 4c 24 18          	mov    0x18(%esp),%ecx
58d55c:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
58d560:	2b 99 f0 00 00 00    	sub    0xf0(%ecx),%ebx
58d566:	8b 4c 24 18          	mov    0x18(%esp),%ecx
58d56a:	0f af 99 fc 00 00 00 	imul   0xfc(%ecx),%ebx
58d571:	8b 4c 24 18          	mov    0x18(%esp),%ecx
58d575:	8b 6c 24 10          	mov    0x10(%esp),%ebp
58d579:	2b a9 f4 00 00 00    	sub    0xf4(%ecx),%ebp
58d57f:	03 dd                	add    %ebp,%ebx
58d581:	8b 4c 24 18          	mov    0x18(%esp),%ecx
58d585:	8b 09                	mov    (%ecx),%ecx
58d587:	8d 0c d9             	lea    (%ecx,%ebx,8),%ecx
58d58a:	8b 5c 24 14          	mov    0x14(%esp),%ebx
58d58e:	66 89 14 59          	mov    %dx,(%ecx,%ebx,2)
58d592:	ff 44 24 14          	incl   0x14(%esp)
58d596:	83 c0 02             	add    $0x2,%eax
58d599:	83 7c 24 14 03       	cmpl   $0x3,0x14(%esp)
58d59e:	75 83                	jne    0x58d523
58d5a0:	ff 44 24 10          	incl   0x10(%esp)
58d5a4:	ff 4c 24 20          	decl   0x20(%esp)
58d5a8:	0f 85 9e fe ff ff    	jne    0x58d44c
58d5ae:	ff 44 24 0c          	incl   0xc(%esp)
58d5b2:	ff 4c 24 1c          	decl   0x1c(%esp)
58d5b6:	0f 85 24 fe ff ff    	jne    0x58d3e0
58d5bc:	81 c4 28 18 00 00    	add    $0x1828,%esp
58d5c2:	5d                   	pop    %ebp
58d5c3:	5f                   	pop    %edi
58d5c4:	5e                   	pop    %esi
58d5c5:	5b                   	pop    %ebx
58d5c6:	c3                   	ret
58d5c7:	00 00                	add    %al,(%eax)
58d5c9:	00 c8                	add    %cl,%al
58d5cb:	42                   	inc    %edx
58d5cc:	00 00                	add    %al,(%eax)
58d5ce:	00 40 53             	add    %al,0x53(%eax)
58d5d1:	8b 0a                	mov    (%edx),%ecx
58d5d3:	8b d9                	mov    %ecx,%ebx
58d5d5:	f7 db                	neg    %ebx
58d5d7:	3b c3                	cmp    %ebx,%eax
58d5d9:	7f 08                	jg     0x58d5e3
58d5db:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
58d5de:	f7 d8                	neg    %eax
58d5e0:	48                   	dec    %eax
58d5e1:	5b                   	pop    %ebx
58d5e2:	c3                   	ret
58d5e3:	85 c0                	test   %eax,%eax
58d5e5:	7d 0e                	jge    0x58d5f5
58d5e7:	b9 01 00 00 00       	mov    $0x1,%ecx
58d5ec:	2b c8                	sub    %eax,%ecx
58d5ee:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
58d5f1:	f7 d8                	neg    %eax
58d5f3:	eb 0e                	jmp    0x58d603
58d5f5:	3b c8                	cmp    %eax,%ecx
58d5f7:	7e 06                	jle    0x58d5ff
58d5f9:	40                   	inc    %eax
58d5fa:	8b 04 82             	mov    (%edx,%eax,4),%eax
58d5fd:	eb 04                	jmp    0x58d603
58d5ff:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
58d602:	40                   	inc    %eax
58d603:	5b                   	pop    %ebx
58d604:	c3                   	ret
58d605:	8d 40 00             	lea    0x0(%eax),%eax
58d608:	85 c0                	test   %eax,%eax
58d60a:	7d 09                	jge    0x58d615
58d60c:	8b ca                	mov    %edx,%ecx
58d60e:	f7 d8                	neg    %eax
58d610:	d3 e8                	shr    %cl,%eax
58d612:	f7 d8                	neg    %eax
58d614:	c3                   	ret
58d615:	8b ca                	mov    %edx,%ecx
58d617:	d3 e8                	shr    %cl,%eax
58d619:	c3                   	ret
58d61a:	8b c0                	mov    %eax,%eax
58d61c:	53                   	push   %ebx
58d61d:	56                   	push   %esi
58d61e:	57                   	push   %edi
58d61f:	55                   	push   %ebp
58d620:	81 c4 20 ff ff ff    	add    $0xffffff20,%esp
58d626:	89 04 24             	mov    %eax,(%esp)
58d629:	33 c0                	xor    %eax,%eax
58d62b:	89 44 24 28          	mov    %eax,0x28(%esp)
58d62f:	8b 04 24             	mov    (%esp),%eax
58d632:	8b 80 f8 00 00 00    	mov    0xf8(%eax),%eax
58d638:	48                   	dec    %eax
58d639:	85 c0                	test   %eax,%eax
58d63b:	0f 8c 28 02 00 00    	jl     0x58d869
58d641:	40                   	inc    %eax
58d642:	89 44 24 38          	mov    %eax,0x38(%esp)
58d646:	c7 44 24 14 00 00 00 	movl   $0x0,0x14(%esp)
58d64d:	00
58d64e:	8b 04 24             	mov    (%esp),%eax
58d651:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d657:	f7 6c 24 14          	imull  0x14(%esp)
58d65b:	8b 14 24             	mov    (%esp),%edx
58d65e:	8b 12                	mov    (%edx),%edx
58d660:	8d 04 c2             	lea    (%edx,%eax,8),%eax
58d663:	89 44 24 04          	mov    %eax,0x4(%esp)
58d667:	8d 44 24 08          	lea    0x8(%esp),%eax
58d66b:	b9 06 00 00 00       	mov    $0x6,%ecx
58d670:	8b 54 24 04          	mov    0x4(%esp),%edx
58d674:	e8 37 e1 ff ff       	call   0x58b7b0
58d679:	8b 04 24             	mov    (%esp),%eax
58d67c:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d682:	48                   	dec    %eax
58d683:	85 c0                	test   %eax,%eax
58d685:	0f 8c d0 01 00 00    	jl     0x58d85b
58d68b:	40                   	inc    %eax
58d68c:	89 44 24 3c          	mov    %eax,0x3c(%esp)
58d690:	33 db                	xor    %ebx,%ebx
58d692:	8d 74 24 08          	lea    0x8(%esp),%esi
58d696:	8d 44 24 64          	lea    0x64(%esp),%eax
58d69a:	89 44 24 40          	mov    %eax,0x40(%esp)
58d69e:	8b 44 24 04          	mov    0x4(%esp),%eax
58d6a2:	0f b7 3c 58          	movzwl (%eax,%ebx,2),%edi
58d6a6:	0f b7 06             	movzwl (%esi),%eax
58d6a9:	2b f8                	sub    %eax,%edi
58d6ab:	8b 44 24 04          	mov    0x4(%esp),%eax
58d6af:	66 8b 04 58          	mov    (%eax,%ebx,2),%ax
58d6b3:	66 89 06             	mov    %ax,(%esi)
58d6b6:	8b c7                	mov    %edi,%eax
58d6b8:	f7 ef                	imul   %edi
58d6ba:	c1 e8 0e             	shr    $0xe,%eax
58d6bd:	03 f8                	add    %eax,%edi
58d6bf:	69 c7 33 33 00 00    	imul   $0x3333,%edi,%eax
58d6c5:	ba 0e 00 00 00       	mov    $0xe,%edx
58d6ca:	e8 39 ff ff ff       	call   0x58d608
58d6cf:	8b 54 24 04          	mov    0x4(%esp),%edx
58d6d3:	0f b7 14 5a          	movzwl (%edx,%ebx,2),%edx
58d6d7:	03 c2                	add    %edx,%eax
58d6d9:	8b 54 24 40          	mov    0x40(%esp),%edx
58d6dd:	89 02                	mov    %eax,(%edx)
58d6df:	43                   	inc    %ebx
58d6e0:	83 44 24 40 04       	addl   $0x4,0x40(%esp)
58d6e5:	83 c6 02             	add    $0x2,%esi
58d6e8:	83 fb 03             	cmp    $0x3,%ebx
58d6eb:	75 b1                	jne    0x58d69e
58d6ed:	33 db                	xor    %ebx,%ebx
58d6ef:	8d 44 24 64          	lea    0x64(%esp),%eax
58d6f3:	89 44 24 44          	mov    %eax,0x44(%esp)
58d6f7:	8d 44 24 70          	lea    0x70(%esp),%eax
58d6fb:	89 44 24 48          	mov    %eax,0x48(%esp)
58d6ff:	8b 44 24 44          	mov    0x44(%esp),%eax
58d703:	8b 00                	mov    (%eax),%eax
58d705:	8b 54 24 44          	mov    0x44(%esp),%edx
58d709:	f7 2a                	imull  (%edx)
58d70b:	c1 e8 0e             	shr    $0xe,%eax
58d70e:	8b 54 24 48          	mov    0x48(%esp),%edx
58d712:	89 02                	mov    %eax,(%edx)
58d714:	8b 44 24 44          	mov    0x44(%esp),%eax
58d718:	8b 00                	mov    (%eax),%eax
58d71a:	8b 54 24 48          	mov    0x48(%esp),%edx
58d71e:	f7 2a                	imull  (%edx)
58d720:	c1 e8 0e             	shr    $0xe,%eax
58d723:	8b 54 24 48          	mov    0x48(%esp),%edx
58d727:	89 42 18             	mov    %eax,0x18(%edx)
58d72a:	8d 43 01             	lea    0x1(%ebx),%eax
58d72d:	b9 03 00 00 00       	mov    $0x3,%ecx
58d732:	99                   	cltd
58d733:	f7 f9                	idiv   %ecx
58d735:	8b 4c 94 64          	mov    0x64(%esp,%edx,4),%ecx
58d739:	8d 43 02             	lea    0x2(%ebx),%eax
58d73c:	be 03 00 00 00       	mov    $0x3,%esi
58d741:	99                   	cltd
58d742:	f7 fe                	idiv   %esi
58d744:	0f af 4c 94 64       	imul   0x64(%esp,%edx,4),%ecx
58d749:	c1 e9 0e             	shr    $0xe,%ecx
58d74c:	b8 02 00 00 00       	mov    $0x2,%eax
58d751:	2b c3                	sub    %ebx,%eax
58d753:	89 4c 84 7c          	mov    %ecx,0x7c(%esp,%eax,4)
58d757:	43                   	inc    %ebx
58d758:	83 44 24 48 04       	addl   $0x4,0x48(%esp)
58d75d:	83 44 24 44 04       	addl   $0x4,0x44(%esp)
58d762:	83 fb 03             	cmp    $0x3,%ebx
58d765:	75 98                	jne    0x58d6ff
58d767:	33 db                	xor    %ebx,%ebx
58d769:	b8 ac 3c 6a 00       	mov    $0x6a3cac,%eax
58d76e:	89 44 24 48          	mov    %eax,0x48(%esp)
58d772:	8d 44 24 64          	lea    0x64(%esp),%eax
58d776:	89 44 24 44          	mov    %eax,0x44(%esp)
58d77a:	b8 a0 3c 6a 00       	mov    $0x6a3ca0,%eax
58d77f:	89 44 24 40          	mov    %eax,0x40(%esp)
58d783:	33 c0                	xor    %eax,%eax
58d785:	89 44 24 1c          	mov    %eax,0x1c(%esp)
58d789:	bf 03 00 00 00       	mov    $0x3,%edi
58d78e:	8b 44 24 48          	mov    0x48(%esp),%eax
58d792:	89 44 24 4c          	mov    %eax,0x4c(%esp)
58d796:	8d 44 24 70          	lea    0x70(%esp),%eax
58d79a:	89 44 24 50          	mov    %eax,0x50(%esp)
58d79e:	be 03 00 00 00       	mov    $0x3,%esi
58d7a3:	8b 44 24 4c          	mov    0x4c(%esp),%eax
58d7a7:	8b 54 24 50          	mov    0x50(%esp),%edx
58d7ab:	8b 08                	mov    (%eax),%ecx
58d7ad:	0f af 0a             	imul   (%edx),%ecx
58d7b0:	01 4c 24 1c          	add    %ecx,0x1c(%esp)
58d7b4:	83 c2 04             	add    $0x4,%edx
58d7b7:	83 c0 04             	add    $0x4,%eax
58d7ba:	4e                   	dec    %esi
58d7bb:	75 ee                	jne    0x58d7ab
58d7bd:	83 44 24 50 0c       	addl   $0xc,0x50(%esp)
58d7c2:	83 44 24 4c 0c       	addl   $0xc,0x4c(%esp)
58d7c7:	4f                   	dec    %edi
58d7c8:	75 d4                	jne    0x58d79e
58d7ca:	ba 0e 00 00 00       	mov    $0xe,%edx
58d7cf:	8b 44 24 1c          	mov    0x1c(%esp),%eax
58d7d3:	e8 30 fe ff ff       	call   0x58d608
58d7d8:	8b 54 24 44          	mov    0x44(%esp),%edx
58d7dc:	03 02                	add    (%edx),%eax
58d7de:	89 84 24 dc 00 00 00 	mov    %eax,0xdc(%esp)
58d7e5:	db 84 24 dc 00 00 00 	fildl  0xdc(%esp)
58d7ec:	8b 44 24 40          	mov    0x40(%esp),%eax
58d7f0:	d8 08                	fmuls  (%eax)
58d7f2:	e8 d5 54 e7 ff       	call   0x402ccc
58d7f7:	8b 54 24 44          	mov    0x44(%esp),%edx
58d7fb:	89 02                	mov    %eax,(%edx)
58d7fd:	8b 44 24 44          	mov    0x44(%esp),%eax
58d801:	83 38 00             	cmpl   $0x0,(%eax)
58d804:	7d 08                	jge    0x58d80e
58d806:	8b 44 24 44          	mov    0x44(%esp),%eax
58d80a:	33 d2                	xor    %edx,%edx
58d80c:	89 10                	mov    %edx,(%eax)
58d80e:	8b 44 24 44          	mov    0x44(%esp),%eax
58d812:	81 38 00 7d 00 00    	cmpl   $0x7d00,(%eax)
58d818:	7e 0a                	jle    0x58d824
58d81a:	8b 44 24 44          	mov    0x44(%esp),%eax
58d81e:	c7 00 00 7d 00 00    	movl   $0x7d00,(%eax)
58d824:	8b 44 24 44          	mov    0x44(%esp),%eax
58d828:	66 8b 00             	mov    (%eax),%ax
58d82b:	8b 54 24 04          	mov    0x4(%esp),%edx
58d82f:	66 89 04 5a          	mov    %ax,(%edx,%ebx,2)
58d833:	43                   	inc    %ebx
58d834:	83 44 24 40 04       	addl   $0x4,0x40(%esp)
58d839:	83 44 24 44 04       	addl   $0x4,0x44(%esp)
58d83e:	83 44 24 48 24       	addl   $0x24,0x48(%esp)
58d843:	83 fb 03             	cmp    $0x3,%ebx
58d846:	0f 85 37 ff ff ff    	jne    0x58d783
58d84c:	83 44 24 04 08       	addl   $0x8,0x4(%esp)
58d851:	ff 4c 24 3c          	decl   0x3c(%esp)
58d855:	0f 85 35 fe ff ff    	jne    0x58d690
58d85b:	ff 44 24 14          	incl   0x14(%esp)
58d85f:	ff 4c 24 38          	decl   0x38(%esp)
58d863:	0f 85 e5 fd ff ff    	jne    0x58d64e
58d869:	8b 04 24             	mov    (%esp),%eax
58d86c:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d872:	8d 04 80             	lea    (%eax,%eax,4),%eax
58d875:	c1 e0 02             	shl    $0x2,%eax
58d878:	8d 04 40             	lea    (%eax,%eax,2),%eax
58d87b:	e8 34 b8 e7 ff       	call   0x4090b4
58d880:	89 84 24 bc 00 00 00 	mov    %eax,0xbc(%esp)
58d887:	ba 74 e5 58 00       	mov    $0x58e574,%edx
58d88c:	8b 84 24 bc 00 00 00 	mov    0xbc(%esp),%eax
58d893:	e8 2c b2 ff ff       	call   0x588ac4
58d898:	33 ff                	xor    %edi,%edi
58d89a:	8d 84 24 a4 00 00 00 	lea    0xa4(%esp),%eax
58d8a1:	89 44 24 54          	mov    %eax,0x54(%esp)
58d8a5:	8b 04 24             	mov    (%esp),%eax
58d8a8:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d8ae:	f7 ef                	imul   %edi
58d8b0:	c1 e0 02             	shl    $0x2,%eax
58d8b3:	8d 04 40             	lea    (%eax,%eax,2),%eax
58d8b6:	03 84 24 bc 00 00 00 	add    0xbc(%esp),%eax
58d8bd:	8b 54 24 54          	mov    0x54(%esp),%edx
58d8c1:	89 02                	mov    %eax,(%edx)
58d8c3:	47                   	inc    %edi
58d8c4:	83 44 24 54 04       	addl   $0x4,0x54(%esp)
58d8c9:	83 ff 05             	cmp    $0x5,%edi
58d8cc:	75 d7                	jne    0x58d8a5
58d8ce:	c7 44 24 20 ff ff ff 	movl   $0xffffffff,0x20(%esp)
58d8d5:	ff
58d8d6:	8b 04 24             	mov    (%esp),%eax
58d8d9:	8b 80 f8 00 00 00    	mov    0xf8(%eax),%eax
58d8df:	83 e8 02             	sub    $0x2,%eax
58d8e2:	48                   	dec    %eax
58d8e3:	83 e8 02             	sub    $0x2,%eax
58d8e6:	0f 8c 37 02 00 00    	jl     0x58db23
58d8ec:	40                   	inc    %eax
58d8ed:	89 44 24 38          	mov    %eax,0x38(%esp)
58d8f1:	c7 44 24 14 02 00 00 	movl   $0x2,0x14(%esp)
58d8f8:	00
58d8f9:	e9 dc 00 00 00       	jmp    0x58d9da
58d8fe:	33 ff                	xor    %edi,%edi
58d900:	8d 8c 24 a4 00 00 00 	lea    0xa4(%esp),%ecx
58d907:	8d 47 05             	lea    0x5(%edi),%eax
58d90a:	bb 06 00 00 00       	mov    $0x6,%ebx
58d90f:	99                   	cltd
58d910:	f7 fb                	idiv   %ebx
58d912:	8b 01                	mov    (%ecx),%eax
58d914:	89 84 94 a4 00 00 00 	mov    %eax,0xa4(%esp,%edx,4)
58d91b:	47                   	inc    %edi
58d91c:	83 c1 04             	add    $0x4,%ecx
58d91f:	83 ff 06             	cmp    $0x6,%edi
58d922:	75 e3                	jne    0x58d907
58d924:	ff 44 24 20          	incl   0x20(%esp)
58d928:	8b 04 24             	mov    (%esp),%eax
58d92b:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d931:	f7 6c 24 20          	imull  0x20(%esp)
58d935:	8b 14 24             	mov    (%esp),%edx
58d938:	8b 12                	mov    (%edx),%edx
58d93a:	8d 44 c2 10          	lea    0x10(%edx,%eax,8),%eax
58d93e:	89 44 24 04          	mov    %eax,0x4(%esp)
58d942:	8b 04 24             	mov    (%esp),%eax
58d945:	8b 80 fc 00 00 00    	mov    0xfc(%eax),%eax
58d94b:	83 e8 02             	sub    $0x2,%eax
58d94e:	48                   	dec    %eax
58d94f:	83 e8 02             	sub    $0x2,%eax
58d952:	0f 8c 82 00 00 00    	jl     0x58d9da
58d958:	40                   	inc    %eax
58d959:	89 44 24 3c          	mov    %eax,0x3c(%esp)
58d95d:	c7 44 24 18 02 00 00 	movl   $0x2,0x18(%esp)
58d964:	00
58d965:	8b 44 24 04          	mov    0x4(%esp),%eax
58d969:	89 44 24 30          	mov    %eax,0x30(%esp)
58d96d:	83 6c 24 30 08       	subl   $0x8,0x30(%esp)
58d972:	8b 44 24 04          	mov    0x4(%esp),%eax
58d976:	89 44 24 34          	mov    %eax,0x34(%esp)
58d97a:	83 6c 24 34 10       	subl   $0x10,0x34(%esp)
58d97f:	8b 44 24 30          	mov    0x30(%esp),%eax
58d983:	0f b7 00             	movzwl (%eax),%eax
58d986:	8b 54 24 04          	mov    0x4(%esp),%edx
58d98a:	0f b7 52 08          	movzwl 0x8(%edx),%edx
58d98e:	03 c2                	add    %edx,%eax
58d990:	c1 e0 02             	shl    $0x2,%eax
58d993:	8b 54 24 04          	mov    0x4(%esp),%edx
58d997:	0f b7 12             	movzwl (%edx),%edx
58d99a:	03 d2                	add    %edx,%edx
58d99c:	8d 14 52             	lea    (%edx,%edx,2),%edx
58d99f:	03 c2                	add    %edx,%eax
58d9a1:	8b 54 24 34          	mov    0x34(%esp),%edx
58d9a5:	0f b7 12             	movzwl (%edx),%edx
58d9a8:	03 c2                	add    %edx,%eax
58d9aa:	8b 54 24 04          	mov    0x4(%esp),%edx
58d9ae:	0f b7 52 10          	movzwl 0x10(%edx),%edx
58d9b2:	03 c2                	add    %edx,%eax
58d9b4:	83 c0 08             	add    $0x8,%eax
58d9b7:	c1 e8 04             	shr    $0x4,%eax
58d9ba:	8b 54 24 18          	mov    0x18(%esp),%edx
58d9be:	8d 14 52             	lea    (%edx,%edx,2),%edx
58d9c1:	8b 8c 24 b4 00 00 00 	mov    0xb4(%esp),%ecx
58d9c8:	89 04 91             	mov    %eax,(%ecx,%edx,4)
58d9cb:	83 44 24 04 08       	addl   $0x8,0x4(%esp)
58d9d0:	ff 44 24 18          	incl   0x18(%esp)
58d9d4:	ff 4c 24 3c          	decl   0x3c(%esp)
58d9d8:	75 8b                	jne    0x58d965
58d9da:	8b 44 24 14          	mov    0x14(%esp),%eax
58d9de:	83 c0 02             	add    $0x2,%eax
58d9e1:	3b 44 24 20          	cmp    0x20(%esp),%eax