5796a6:	57                   	push   %edi
5796a7:	8b f8                	mov    %eax,%edi
5796a9:	55                   	push   %ebp
5796aa:	6a 01                	push   $0x1
5796ac:	8b 4f 0c             	mov    0xc(%edi),%ecx
5796af:	8b da                	mov    %edx,%ebx
5796b1:	49                   	dec    %ecx
5796b2:	8b 47 04             	mov    0x4(%edi),%eax
5796b5:	0f af cb             	imul   %ebx,%ecx
5796b8:	f7 eb                	imul   %ebx
5796ba:	41                   	inc    %ecx
5796bb:	33 d2                	xor    %edx,%edx
5796bd:	e8 96 e5 ff ff       	call   0x577c58
5796c2:	8b f0                	mov    %eax,%esi
5796c4:	85 c0                	test   %eax,%eax
5796c6:	75 04                	jne    0x5796cc
5796c8:	33 c0                	xor    %eax,%eax
5796ca:	eb 5f                	jmp    0x57972b
5796cc:	8b 4e 04             	mov    0x4(%esi),%ecx
5796cf:	eb 51                	jmp    0x579722
5796d1:	85 c9                	test   %ecx,%ecx
5796d3:	7d 1c                	jge    0x5796f1
5796d5:	8b c1                	mov    %ecx,%eax
5796d7:	f7 d8                	neg    %eax
5796d9:	99                   	cltd
5796da:	f7 fb                	idiv   %ebx
5796dc:	85 d2                	test   %edx,%edx
5796de:	74 0d                	je     0x5796ed
5796e0:	8b c1                	mov    %ecx,%eax
5796e2:	f7 d8                	neg    %eax
5796e4:	99                   	cltd
5796e5:	f7 fb                	idiv   %ebx
5796e7:	8b c3                	mov    %ebx,%eax
5796e9:	2b c2                	sub    %edx,%eax
5796eb:	eb 0b                	jmp    0x5796f8
5796ed:	33 c0                	xor    %eax,%eax
5796ef:	eb 07                	jmp    0x5796f8
5796f1:	8b c1                	mov    %ecx,%eax
5796f3:	99                   	cltd
5796f4:	f7 fb                	idiv   %ebx
5796f6:	8b c2                	mov    %edx,%eax
5796f8:	85 c0                	test   %eax,%eax
5796fa:	75 14                	jne    0x579710
5796fc:	8b c1                	mov    %ecx,%eax
5796fe:	99                   	cltd
5796ff:	f7 fb                	idiv   %ebx
579701:	8b 57 04             	mov    0x4(%edi),%edx
579704:	2b c2                	sub    %edx,%eax
579706:	8b 57 1c             	mov    0x1c(%edi),%edx
579709:	8b 12                	mov    (%edx),%edx
57970b:	8b 04 82             	mov    (%edx,%eax,4),%eax
57970e:	eb 02                	jmp    0x579712
579710:	33 c0                	xor    %eax,%eax
579712:	8b 6e 1c             	mov    0x1c(%esi),%ebp
579715:	8b d1                	mov    %ecx,%edx
579717:	2b 56 04             	sub    0x4(%esi),%edx
57971a:	41                   	inc    %ecx
57971b:	8b 6d 00             	mov    0x0(%ebp),%ebp
57971e:	89 44 95 00          	mov    %eax,0x0(%ebp,%edx,4)
579722:	8b 46 0c             	mov    0xc(%esi),%eax
579725:	3b c8                	cmp    %eax,%ecx
579727:	7c a8                	jl     0x5796d1
579729:	8b c6                	mov    %esi,%eax
57972b:	5d                   	pop    %ebp
57972c:	5f                   	pop    %edi
57972d:	5e                   	pop    %esi
57972e:	5b                   	pop    %ebx
57972f:	c3                   	ret
579730:	53                   	push   %ebx
579731:	8b d8                	mov    %eax,%ebx
579733:	56                   	push   %esi
579734:	57                   	push   %edi
579735:	51                   	push   %ecx
579736:	33 ff                	xor    %edi,%edi
579738:	8b 73 04             	mov    0x4(%ebx),%esi
57973b:	eb 31                	jmp    0x57976e
57973d:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
579740:	8b 53 04             	mov    0x4(%ebx),%edx
579743:	8b c6                	mov    %esi,%eax
579745:	2b c2                	sub    %edx,%eax
579747:	8b 11                	mov    (%ecx),%edx
579749:	8b ce                	mov    %esi,%ecx
57974b:	8b 04 82             	mov    (%edx,%eax,4),%eax
57974e:	99                   	cltd
57974f:	52                   	push   %edx
579750:	50                   	push   %eax
579751:	8b 53 1c             	mov    0x1c(%ebx),%edx
579754:	8b 43 04             	mov    0x4(%ebx),%eax
579757:	2b c8                	sub    %eax,%ecx
579759:	8b 02                	mov    (%edx),%eax
57975b:	8b 04 88             	mov    (%eax,%ecx,4),%eax
57975e:	99                   	cltd
57975f:	e8 20 19 fe ff       	call   0x55b084
579764:	0f ac d0 0d          	shrd   $0xd,%edx,%eax
579768:	c1 fa 0d             	sar    $0xd,%edx
57976b:	03 f8                	add    %eax,%edi
57976d:	46                   	inc    %esi
57976e:	8b 53 0c             	mov    0xc(%ebx),%edx
579771:	3b f2                	cmp    %edx,%esi
579773:	7c c8                	jl     0x57973d
579775:	89 3c 24             	mov    %edi,(%esp)
579778:	db 04 24             	fildl  (%esp)
57977b:	d8 0d a0 97 57 00    	fmuls  0x5797a0
579781:	83 c4 f8             	add    $0xfffffff8,%esp
579784:	dd 1c 24             	fstpl  (%esp)
579787:	e8 ac 18 fe ff       	call   0x55b038
57978c:	83 c4 08             	add    $0x8,%esp
57978f:	d8 0d a4 97 57 00    	fmuls  0x5797a4
579795:	e8 46 13 fe ff       	call   0x55aae0
57979a:	5a                   	pop    %edx
57979b:	5f                   	pop    %edi
57979c:	5e                   	pop    %esi
57979d:	5b                   	pop    %ebx
57979e:	c3                   	ret
57979f:	00 00                	add    %al,(%eax)
5797a1:	00 00                	add    %al,(%eax)
5797a3:	39 00                	cmp    %eax,(%eax)
5797a5:	00 00                	add    %al,(%eax)
5797a7:	46                   	inc    %esi
5797a8:	53                   	push   %ebx
5797a9:	56                   	push   %esi
5797aa:	57                   	push   %edi
5797ab:	55                   	push   %ebp
5797ac:	83 c4 f4             	add    $0xfffffff4,%esp
5797af:	8b fa                	mov    %edx,%edi
5797b1:	8b f0                	mov    %eax,%esi
5797b3:	6a 01                	push   $0x1
5797b5:	8b 4f 0c             	mov    0xc(%edi),%ecx
5797b8:	8b 46 0c             	mov    0xc(%esi),%eax
5797bb:	03 c8                	add    %eax,%ecx
5797bd:	8b 56 04             	mov    0x4(%esi),%edx
5797c0:	8b 47 04             	mov    0x4(%edi),%eax
5797c3:	49                   	dec    %ecx
5797c4:	03 c2                	add    %edx,%eax
5797c6:	33 d2                	xor    %edx,%edx
5797c8:	e8 8b e4 ff ff       	call   0x577c58
5797cd:	89 44 24 04          	mov    %eax,0x4(%esp)
5797d1:	8b 44 24 04          	mov    0x4(%esp),%eax
5797d5:	85 c0                	test   %eax,%eax
5797d7:	75 17                	jne    0x5797f0
5797d9:	68 e2 00 00 00       	push   $0xe2
5797de:	68 5b 2c 6a 00       	push   $0x6a2c5b
5797e3:	68 59 2c 6a 00       	push   $0x6a2c59
5797e8:	e8 53 13 fe ff       	call   0x55ab40
5797ed:	83 c4 0c             	add    $0xc,%esp
5797f0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
5797f4:	8b 41 04             	mov    0x4(%ecx),%eax
5797f7:	89 04 24             	mov    %eax,(%esp)
5797fa:	eb 78                	jmp    0x579874
5797fc:	33 d2                	xor    %edx,%edx
5797fe:	89 54 24 08          	mov    %edx,0x8(%esp)
579802:	8b 5f 04             	mov    0x4(%edi),%ebx
579805:	eb 47                	jmp    0x57984e
579807:	8b 04 24             	mov    (%esp),%eax
57980a:	2b c3                	sub    %ebx,%eax
57980c:	8b 56 04             	mov    0x4(%esi),%edx
57980f:	3b c2                	cmp    %edx,%eax
579811:	7c 07                	jl     0x57981a
579813:	8b 4e 0c             	mov    0xc(%esi),%ecx
579816:	3b c1                	cmp    %ecx,%eax
579818:	7c 04                	jl     0x57981e
57981a:	33 ed                	xor    %ebp,%ebp
57981c:	eb 0a                	jmp    0x579828
57981e:	2b c2                	sub    %edx,%eax
579820:	8b 56 1c             	mov    0x1c(%esi),%edx
579823:	8b 0a                	mov    (%edx),%ecx
579825:	8b 2c 81             	mov    (%ecx,%eax,4),%ebp
579828:	8b c5                	mov    %ebp,%eax
57982a:	8b cb                	mov    %ebx,%ecx
57982c:	99                   	cltd
57982d:	52                   	push   %edx
57982e:	50                   	push   %eax
57982f:	8b 57 1c             	mov    0x1c(%edi),%edx
579832:	8b 47 04             	mov    0x4(%edi),%eax
579835:	2b c8                	sub    %eax,%ecx
579837:	8b 02                	mov    (%edx),%eax
579839:	8b 04 88             	mov    (%eax,%ecx,4),%eax
57983c:	99                   	cltd
57983d:	e8 42 18 fe ff       	call   0x55b084
579842:	0f ac d0 0d          	shrd   $0xd,%edx,%eax
579846:	c1 fa 0d             	sar    $0xd,%edx
579849:	01 44 24 08          	add    %eax,0x8(%esp)
57984d:	43                   	inc    %ebx
57984e:	8b 57 0c             	mov    0xc(%edi),%edx
579851:	3b da                	cmp    %edx,%ebx
579853:	7c b2                	jl     0x579807
579855:	8b 4c 24 04          	mov    0x4(%esp),%ecx
579859:	8b 04 24             	mov    (%esp),%eax
57985c:	8b 51 04             	mov    0x4(%ecx),%edx
57985f:	8b 4c 24 04          	mov    0x4(%esp),%ecx
579863:	2b c2                	sub    %edx,%eax
579865:	8b 51 1c             	mov    0x1c(%ecx),%edx
579868:	8b 0a                	mov    (%edx),%ecx
57986a:	8b 54 24 08          	mov    0x8(%esp),%edx
57986e:	89 14 81             	mov    %edx,(%ecx,%eax,4)
579871:	ff 04 24             	incl   (%esp)
579874:	8b 44 24 04          	mov    0x4(%esp),%eax
579878:	8b 48 0c             	mov    0xc(%eax),%ecx
57987b:	8b 04 24             	mov    (%esp),%eax
57987e:	3b c8                	cmp    %eax,%ecx
579880:	0f 8f 76 ff ff ff    	jg     0x5797fc
579886:	8b 44 24 04          	mov    0x4(%esp),%eax
57988a:	83 c4 0c             	add    $0xc,%esp
57988d:	5d                   	pop    %ebp
57988e:	5f                   	pop    %edi
57988f:	5e                   	pop    %esi
579890:	5b                   	pop    %ebx
579891:	c3                   	ret
579892:	8b c0                	mov    %eax,%eax
579894:	53                   	push   %ebx
579895:	56                   	push   %esi
579896:	57                   	push   %edi
579897:	55                   	push   %ebp
579898:	81 c4 e8 fe ff ff    	add    $0xfffffee8,%esp
57989e:	8b ea                	mov    %edx,%ebp
5798a0:	8b d8                	mov    %eax,%ebx
5798a2:	85 db                	test   %ebx,%ebx
5798a4:	7e 04                	jle    0x5798aa
5798a6:	85 ed                	test   %ebp,%ebp
5798a8:	7f 17                	jg     0x5798c1
5798aa:	68 9e 00 00 00       	push   $0x9e
5798af:	68 87 2c 6a 00       	push   $0x6a2c87
5798b4:	68 68 2c 6a 00       	push   $0x6a2c68
5798b9:	e8 82 12 fe ff       	call   0x55ab40
5798be:	83 c4 0c             	add    $0xc,%esp
5798c1:	e8 6e 01 00 00       	call   0x579a34
5798c6:	89 44 24 04          	mov    %eax,0x4(%esp)
5798ca:	85 c0                	test   %eax,%eax
5798cc:	75 07                	jne    0x5798d5
5798ce:	33 c0                	xor    %eax,%eax
5798d0:	e9 3b 01 00 00       	jmp    0x579a10
5798d5:	8b 54 24 04          	mov    0x4(%esp),%edx
5798d9:	33 c0                	xor    %eax,%eax
5798db:	89 1a                	mov    %ebx,(%edx)
5798dd:	8b 4c 24 04          	mov    0x4(%esp),%ecx
5798e1:	89 69 04             	mov    %ebp,0x4(%ecx)
5798e4:	89 44 24 0c          	mov    %eax,0xc(%esp)
5798e8:	89 5c 24 18          	mov    %ebx,0x18(%esp)
5798ec:	89 ac 24 98 00 00 00 	mov    %ebp,0x98(%esp)
5798f3:	8b 54 24 0c          	mov    0xc(%esp),%edx
5798f7:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5798fb:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
5798ff:	8b 54 94 18          	mov    0x18(%esp,%edx,4),%edx
579903:	8b c2                	mov    %edx,%eax
579905:	8b 8c 8c 98 00 00 00 	mov    0x98(%esp,%ecx,4),%ecx
57990c:	0f af c1             	imul   %ecx,%eax
57990f:	42                   	inc    %edx
579910:	d1 fa                	sar    $1,%edx
579912:	79 03                	jns    0x579917
579914:	83 d2 00             	adc    $0x0,%edx
579917:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
57991b:	41                   	inc    %ecx
57991c:	d1 f9                	sar    $1,%ecx
57991e:	89 54 9c 1c          	mov    %edx,0x1c(%esp,%ebx,4)
579922:	8b 54 24 0c          	mov    0xc(%esp),%edx
579926:	79 03                	jns    0x57992b
579928:	83 d1 00             	adc    $0x0,%ecx
57992b:	8b 54 24 0c          	mov    0xc(%esp),%edx
57992f:	89 8c 94 9c 00 00 00 	mov    %ecx,0x9c(%esp,%edx,4)
579936:	8b 4c 24 04          	mov    0x4(%esp),%ecx
57993a:	01 41 08             	add    %eax,0x8(%ecx)
57993d:	ff 44 24 0c          	incl   0xc(%esp)
579941:	48                   	dec    %eax
579942:	7f af                	jg     0x5798f3
579944:	8b 44 24 04          	mov    0x4(%esp),%eax
579948:	8b 40 08             	mov    0x8(%eax),%eax
57994b:	c1 e0 04             	shl    $0x4,%eax
57994e:	e8 29 ea ff ff       	call   0x57837c
579953:	8b d8                	mov    %eax,%ebx
579955:	8b 44 24 04          	mov    0x4(%esp),%eax
579959:	89 58 0c             	mov    %ebx,0xc(%eax)
57995c:	85 db                	test   %ebx,%ebx
57995e:	75 07                	jne    0x579967
579960:	33 c0                	xor    %eax,%eax
579962:	e9 a9 00 00 00       	jmp    0x579a10
579967:	8b 54 24 04          	mov    0x4(%esp),%edx
57996b:	8b 4c 24 04          	mov    0x4(%esp),%ecx
57996f:	8b c3                	mov    %ebx,%eax
579971:	8b 12                	mov    (%edx),%edx
579973:	0f af 51 04          	imul   0x4(%ecx),%edx
579977:	c1 e2 04             	shl    $0x4,%edx
57997a:	03 d3                	add    %ebx,%edx
57997c:	33 c9                	xor    %ecx,%ecx
57997e:	89 14 24             	mov    %edx,(%esp)
579981:	89 4c 24 08          	mov    %ecx,0x8(%esp)
579985:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
57998c:	89 4c 24 14          	mov    %ecx,0x14(%esp)
579990:	8d 4c 24 18          	lea    0x18(%esp),%ecx
579994:	89 4c 24 10          	mov    %ecx,0x10(%esp)
579998:	eb 58                	jmp    0x5799f2
57999a:	33 db                	xor    %ebx,%ebx
57999c:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5799a0:	8b f1                	mov    %ecx,%esi
5799a2:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5799a6:	8b f9                	mov    %ecx,%edi
5799a8:	eb 34                	jmp    0x5799de
5799aa:	8b 0e                	mov    (%esi),%ecx
5799ac:	eb 10                	jmp    0x5799be
5799ae:	89 10                	mov    %edx,(%eax)
5799b0:	83 c0 10             	add    $0x10,%eax
5799b3:	49                   	dec    %ecx
5799b4:	78 05                	js     0x5799bb
5799b6:	89 10                	mov    %edx,(%eax)
5799b8:	83 c0 10             	add    $0x10,%eax
5799bb:	83 c2 10             	add    $0x10,%edx
5799be:	49                   	dec    %ecx
5799bf:	79 ed                	jns    0x5799ae
5799c1:	f6 c3 01             	test   $0x1,%bl
5799c4:	75 07                	jne    0x5799cd
5799c6:	8b 0f                	mov    (%edi),%ecx
5799c8:	49                   	dec    %ecx
5799c9:	3b d9                	cmp    %ecx,%ebx
5799cb:	75 05                	jne    0x5799d2
5799cd:	89 14 24             	mov    %edx,(%esp)
5799d0:	eb 0b                	jmp    0x5799dd
5799d2:	8b 14 24             	mov    (%esp),%edx
5799d5:	8b 0e                	mov    (%esi),%ecx
5799d7:	c1 e1 04             	shl    $0x4,%ecx
5799da:	01 0c 24             	add    %ecx,(%esp)
5799dd:	43                   	inc    %ebx
5799de:	8b 0f                	mov    (%edi),%ecx
5799e0:	3b d9                	cmp    %ecx,%ebx
5799e2:	7c c6                	jl     0x5799aa
5799e4:	ff 44 24 08          	incl   0x8(%esp)
5799e8:	83 44 24 14 04       	addl   $0x4,0x14(%esp)
5799ed:	83 44 24 10 04       	addl   $0x4,0x10(%esp)
5799f2:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5799f6:	49                   	dec    %ecx
5799f7:	8b 5c 24 08          	mov    0x8(%esp),%ebx
5799fb:	3b cb                	cmp    %ebx,%ecx
5799fd:	7f 9b                	jg     0x57999a
5799ff:	33 d2                	xor    %edx,%edx
579a01:	89 10                	mov    %edx,(%eax)
579a03:	8b 44 24 04          	mov    0x4(%esp),%eax
579a07:	e8 ac 00 00 00       	call   0x579ab8
579a0c:	8b 44 24 04          	mov    0x4(%esp),%eax
579a10:	81 c4 18 01 00 00    	add    $0x118,%esp
579a16:	5d                   	pop    %ebp
579a17:	5f                   	pop    %edi
579a18:	5e                   	pop    %esi
579a19:	5b                   	pop    %ebx
579a1a:	c3                   	ret
579a1b:	90                   	nop
579a1c:	53                   	push   %ebx
579a1d:	8b d8                	mov    %eax,%ebx
579a1f:	8b 43 0c             	mov    0xc(%ebx),%eax
579a22:	85 c0                	test   %eax,%eax
579a24:	74 05                	je     0x579a2b
579a26:	e8 59 e9 ff ff       	call   0x578384
579a2b:	8b c3                	mov    %ebx,%eax