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
579a2d:	e8 52 e9 ff ff       	call   0x578384
579a32:	5b                   	pop    %ebx
579a33:	c3                   	ret
579a34:	53                   	push   %ebx
579a35:	b8 10 00 00 00       	mov    $0x10,%eax
579a3a:	e8 3d e9 ff ff       	call   0x57837c
579a3f:	8b d8                	mov    %eax,%ebx
579a41:	85 c0                	test   %eax,%eax
579a43:	75 04                	jne    0x579a49
579a45:	33 c0                	xor    %eax,%eax
579a47:	5b                   	pop    %ebx
579a48:	c3                   	ret
579a49:	33 d2                	xor    %edx,%edx
579a4b:	33 c9                	xor    %ecx,%ecx
579a4d:	89 13                	mov    %edx,(%ebx)
579a4f:	89 4b 04             	mov    %ecx,0x4(%ebx)
579a52:	33 c0                	xor    %eax,%eax
579a54:	33 d2                	xor    %edx,%edx
579a56:	89 43 08             	mov    %eax,0x8(%ebx)
579a59:	8b c3                	mov    %ebx,%eax
579a5b:	89 53 0c             	mov    %edx,0xc(%ebx)
579a5e:	5b                   	pop    %ebx
579a5f:	c3                   	ret
579a60:	53                   	push   %ebx
579a61:	56                   	push   %esi
579a62:	8b da                	mov    %edx,%ebx
579a64:	8b f0                	mov    %eax,%esi
579a66:	8b 03                	mov    (%ebx),%eax
579a68:	8b 16                	mov    (%esi),%edx
579a6a:	3b c2                	cmp    %edx,%eax
579a6c:	75 0a                	jne    0x579a78
579a6e:	8b 4b 04             	mov    0x4(%ebx),%ecx
579a71:	8b 46 04             	mov    0x4(%esi),%eax
579a74:	3b c8                	cmp    %eax,%ecx
579a76:	74 17                	je     0x579a8f
579a78:	68 ff 00 00 00       	push   $0xff
579a7d:	68 ee 2c 6a 00       	push   $0x6a2cee
579a82:	68 95 2c 6a 00       	push   $0x6a2c95
579a87:	e8 b4 10 fe ff       	call   0x55ab40
579a8c:	83 c4 0c             	add    $0xc,%esp
579a8f:	8b 4b 08             	mov    0x8(%ebx),%ecx
579a92:	8b 53 0c             	mov    0xc(%ebx),%edx
579a95:	8b 46 0c             	mov    0xc(%esi),%eax
579a98:	eb 18                	jmp    0x579ab2
579a9a:	8b 5a 04             	mov    0x4(%edx),%ebx
579a9d:	89 58 04             	mov    %ebx,0x4(%eax)
579aa0:	8b 5a 08             	mov    0x8(%edx),%ebx
579aa3:	89 58 08             	mov    %ebx,0x8(%eax)
579aa6:	8b 5a 0c             	mov    0xc(%edx),%ebx
579aa9:	89 58 0c             	mov    %ebx,0xc(%eax)
579aac:	83 c0 10             	add    $0x10,%eax
579aaf:	83 c2 10             	add    $0x10,%edx
579ab2:	49                   	dec    %ecx
579ab3:	79 e5                	jns    0x579a9a
579ab5:	5e                   	pop    %esi
579ab6:	5b                   	pop    %ebx
579ab7:	c3                   	ret
579ab8:	8b 50 08             	mov    0x8(%eax),%edx
579abb:	8b 40 0c             	mov    0xc(%eax),%eax
579abe:	eb 14                	jmp    0x579ad4
579ac0:	c7 40 04 ff ff ff 7f 	movl   $0x7fffffff,0x4(%eax)
579ac7:	33 c9                	xor    %ecx,%ecx
579ac9:	89 48 08             	mov    %ecx,0x8(%eax)
579acc:	33 c9                	xor    %ecx,%ecx
579ace:	89 48 0c             	mov    %ecx,0xc(%eax)
579ad1:	83 c0 10             	add    $0x10,%eax
579ad4:	4a                   	dec    %edx
579ad5:	79 e9                	jns    0x579ac0
579ad7:	c3                   	ret
579ad8:	53                   	push   %ebx
579ad9:	56                   	push   %esi
579ada:	8b d9                	mov    %ecx,%ebx
579adc:	8b f2                	mov    %edx,%esi
579ade:	85 db                	test   %ebx,%ebx
579ae0:	7d 17                	jge    0x579af9
579ae2:	68 26 01 00 00       	push   $0x126
579ae7:	68 07 2d 6a 00       	push   $0x6a2d07
579aec:	68 fc 2c 6a 00       	push   $0x6a2cfc
579af1:	e8 4a 10 fe ff       	call   0x55ab40
579af6:	83 c4 0c             	add    $0xc,%esp
579af9:	8b c6                	mov    %esi,%eax
579afb:	eb 05                	jmp    0x579b02
579afd:	89 58 04             	mov    %ebx,0x4(%eax)
579b00:	8b 00                	mov    (%eax),%eax
579b02:	85 c0                	test   %eax,%eax
579b04:	74 07                	je     0x579b0d
579b06:	8b 50 04             	mov    0x4(%eax),%edx
579b09:	3b da                	cmp    %edx,%ebx
579b0b:	7c f0                	jl     0x579afd
579b0d:	5e                   	pop    %esi
579b0e:	5b                   	pop    %ebx
579b0f:	c3                   	ret
579b10:	c1 e2 04             	shl    $0x4,%edx
579b13:	8b 40 0c             	mov    0xc(%eax),%eax
579b16:	03 d0                	add    %eax,%edx
579b18:	8b c2                	mov    %edx,%eax
579b1a:	c3                   	ret
579b1b:	90                   	nop
579b1c:	55                   	push   %ebp
579b1d:	8b ec                	mov    %esp,%ebp
579b1f:	81 c4 78 ff ff ff    	add    $0xffffff78,%esp
579b25:	53                   	push   %ebx
579b26:	56                   	push   %esi
579b27:	57                   	push   %edi
579b28:	89 4d f8             	mov    %ecx,-0x8(%ebp)
579b2b:	89 55 fc             	mov    %edx,-0x4(%ebp)
579b2e:	8b 5d 08             	mov    0x8(%ebp),%ebx
579b31:	8b 45 fc             	mov    -0x4(%ebp),%eax
579b34:	85 c0                	test   %eax,%eax
579b36:	75 17                	jne    0x579b4f
579b38:	68 40 01 00 00       	push   $0x140
579b3d:	68 1a 2d 6a 00       	push   $0x6a2d1a
579b42:	68 15 2d 6a 00       	push   $0x6a2d15
579b47:	e8 f4 0f fe ff       	call   0x55ab40
579b4c:	83 c4 0c             	add    $0xc,%esp
579b4f:	8b 55 f8             	mov    -0x8(%ebp),%edx
579b52:	85 d2                	test   %edx,%edx
579b54:	7d 17                	jge    0x579b6d
579b56:	68 41 01 00 00       	push   $0x141
579b5b:	68 37 2d 6a 00       	push   $0x6a2d37
579b60:	68 28 2d 6a 00       	push   $0x6a2d28
579b65:	e8 d6 0f fe ff       	call   0x55ab40
579b6a:	83 c4 0c             	add    $0xc,%esp
579b6d:	8d 8d 78 ff ff ff    	lea    -0x88(%ebp),%ecx
579b73:	89 4d f4             	mov    %ecx,-0xc(%ebp)
579b76:	8b 75 fc             	mov    -0x4(%ebp),%esi
579b79:	eb 0b                	jmp    0x579b86
579b7b:	8b 45 f4             	mov    -0xc(%ebp),%eax
579b7e:	89 30                	mov    %esi,(%eax)
579b80:	83 45 f4 04          	addl   $0x4,-0xc(%ebp)
579b84:	8b 36                	mov    (%esi),%esi
579b86:	8b 16                	mov    (%esi),%edx
579b88:	85 d2                	test   %edx,%edx
579b8a:	75 ef                	jne    0x579b7b
579b8c:	33 ff                	xor    %edi,%edi
579b8e:	8b 46 08             	mov    0x8(%esi),%eax
579b91:	3b f8                	cmp    %eax,%edi
579b93:	7e 05                	jle    0x579b9a
579b95:	89 7e 08             	mov    %edi,0x8(%esi)
579b98:	eb 03                	jmp    0x579b9d
579b9a:	8b 7e 08             	mov    0x8(%esi),%edi
579b9d:	8b 45 f8             	mov    -0x8(%ebp),%eax
579ba0:	3b f8                	cmp    %eax,%edi
579ba2:	0f 8d 22 02 00 00    	jge    0x579dca
579ba8:	8b 56 04             	mov    0x4(%esi),%edx
579bab:	3b fa                	cmp    %edx,%edi
579bad:	0f 8c 16 01 00 00    	jl     0x579cc9
579bb3:	8b 4e 0c             	mov    0xc(%esi),%ecx
579bb6:	85 c9                	test   %ecx,%ecx
579bb8:	0f 85 0c 02 00 00    	jne    0x579dca
579bbe:	f6 43 10 02          	testb  $0x2,0x10(%ebx)
579bc2:	75 17                	jne    0x579bdb
579bc4:	68 58 01 00 00       	push   $0x158
579bc9:	68 6c 2d 6a 00       	push   $0x6a2d6c
579bce:	68 45 2d 6a 00       	push   $0x6a2d45
579bd3:	e8 68 0f fe ff       	call   0x55ab40
579bd8:	83 c4 0c             	add    $0xc,%esp
579bdb:	ff 4b 08             	decl   0x8(%ebx)
579bde:	0f 89 bb 00 00 00    	jns    0x579c9f
579be4:	66 8b 43 04          	mov    0x4(%ebx),%ax
579be8:	c1 e0 08             	shl    $0x8,%eax
579beb:	66 25 ff ff          	and    $0xffff,%ax
579bef:	66 89 43 04          	mov    %ax,0x4(%ebx)
579bf3:	66 81 7b 04 00 ff    	cmpw   $0xff00,0x4(%ebx)
579bf9:	75 07                	jne    0x579c02
579bfb:	ba 06 00 00 00       	mov    $0x6,%edx
579c00:	eb 05                	jmp    0x579c07
579c02:	ba 07 00 00 00       	mov    $0x7,%edx
579c07:	66 b8 01 00          	mov    $0x1,%ax
579c0b:	89 53 08             	mov    %edx,0x8(%ebx)
579c0e:	8b 4b 08             	mov    0x8(%ebx),%ecx
579c11:	66 d3 e0             	shl    %cl,%ax
579c14:	66 09 43 04          	or     %ax,0x4(%ebx)
579c18:	8b 43 0c             	mov    0xc(%ebx),%eax
579c1b:	f6 40 08 07          	testb  $0x7,0x8(%eax)