5757b1:	4e                   	dec    %esi
5757b2:	23 c6                	and    %esi,%eax
5757b4:	85 db                	test   %ebx,%ebx
5757b6:	74 1d                	je     0x5757d5
5757b8:	8d 4a ff             	lea    -0x1(%edx),%ecx
5757bb:	bb 01 00 00 00       	mov    $0x1,%ebx
5757c0:	d3 e3                	shl    %cl,%ebx
5757c2:	85 c3                	test   %eax,%ebx
5757c4:	74 0f                	je     0x5757d5
5757c6:	8b ca                	mov    %edx,%ecx
5757c8:	ba 01 00 00 00       	mov    $0x1,%edx
5757cd:	d3 e2                	shl    %cl,%edx
5757cf:	8b c8                	mov    %eax,%ecx
5757d1:	2b ca                	sub    %edx,%ecx
5757d3:	eb 02                	jmp    0x5757d7
5757d5:	8b c8                	mov    %eax,%ecx
5757d7:	8b c1                	mov    %ecx,%eax
5757d9:	5e                   	pop    %esi
5757da:	5b                   	pop    %ebx
5757db:	c3                   	ret
5757dc:	53                   	push   %ebx
5757dd:	56                   	push   %esi
5757de:	66 83 78 10 00       	cmpw   $0x0,0x10(%eax)
5757e3:	0f 86 93 00 00 00    	jbe    0x57587c
5757e9:	8b 50 14             	mov    0x14(%eax),%edx
5757ec:	8b 12                	mov    (%edx),%edx
5757ee:	8b 0a                	mov    (%edx),%ecx
5757f0:	89 08                	mov    %ecx,(%eax)
5757f2:	8b 4a 04             	mov    0x4(%edx),%ecx
5757f5:	89 48 04             	mov    %ecx,0x4(%eax)
5757f8:	8b 4a 10             	mov    0x10(%edx),%ecx
5757fb:	8b 1a                	mov    (%edx),%ebx
5757fd:	49                   	dec    %ecx
5757fe:	0f af 4a 08          	imul   0x8(%edx),%ecx
575802:	03 cb                	add    %ebx,%ecx
575804:	41                   	inc    %ecx
575805:	89 48 08             	mov    %ecx,0x8(%eax)
575808:	8b 4a 14             	mov    0x14(%edx),%ecx
57580b:	49                   	dec    %ecx
57580c:	0f af 4a 0c          	imul   0xc(%edx),%ecx
575810:	8b 52 04             	mov    0x4(%edx),%edx
575813:	03 ca                	add    %edx,%ecx
575815:	41                   	inc    %ecx
575816:	89 48 0c             	mov    %ecx,0xc(%eax)
575819:	b9 01 00 00 00       	mov    $0x1,%ecx
57581e:	eb 51                	jmp    0x575871
575820:	8b 50 14             	mov    0x14(%eax),%edx
575823:	8b 14 8a             	mov    (%edx,%ecx,4),%edx
575826:	8b 1a                	mov    (%edx),%ebx
575828:	8b 30                	mov    (%eax),%esi
57582a:	3b de                	cmp    %esi,%ebx
57582c:	73 02                	jae    0x575830
57582e:	89 18                	mov    %ebx,(%eax)
575830:	8b 5a 04             	mov    0x4(%edx),%ebx
575833:	8b 70 04             	mov    0x4(%eax),%esi
575836:	3b de                	cmp    %esi,%ebx
575838:	73 03                	jae    0x57583d
57583a:	89 58 04             	mov    %ebx,0x4(%eax)
57583d:	8b 5a 10             	mov    0x10(%edx),%ebx
575840:	8b 32                	mov    (%edx),%esi
575842:	4b                   	dec    %ebx
575843:	0f af 5a 08          	imul   0x8(%edx),%ebx
575847:	03 de                	add    %esi,%ebx
575849:	43                   	inc    %ebx
57584a:	8b f3                	mov    %ebx,%esi
57584c:	3b 70 08             	cmp    0x8(%eax),%esi
57584f:	76 03                	jbe    0x575854
575851:	89 70 08             	mov    %esi,0x8(%eax)
575854:	8b 5a 14             	mov    0x14(%edx),%ebx
575857:	4b                   	dec    %ebx
575858:	0f af 5a 0c          	imul   0xc(%edx),%ebx
57585c:	8b 52 04             	mov    0x4(%edx),%edx
57585f:	03 da                	add    %edx,%ebx
575861:	43                   	inc    %ebx
575862:	8b d3                	mov    %ebx,%edx
575864:	8b da                	mov    %edx,%ebx
575866:	8b 70 0c             	mov    0xc(%eax),%esi
575869:	3b de                	cmp    %esi,%ebx
57586b:	76 03                	jbe    0x575870
57586d:	89 58 0c             	mov    %ebx,0xc(%eax)
575870:	41                   	inc    %ecx
575871:	0f b7 50 10          	movzwl 0x10(%eax),%edx
575875:	3b ca                	cmp    %edx,%ecx
575877:	7c a7                	jl     0x575820
575879:	5e                   	pop    %esi
57587a:	5b                   	pop    %ebx
57587b:	c3                   	ret
57587c:	33 c9                	xor    %ecx,%ecx
57587e:	33 d2                	xor    %edx,%edx
575880:	89 08                	mov    %ecx,(%eax)
575882:	33 c9                	xor    %ecx,%ecx
575884:	89 50 04             	mov    %edx,0x4(%eax)
575887:	33 d2                	xor    %edx,%edx
575889:	89 48 08             	mov    %ecx,0x8(%eax)
57588c:	89 50 0c             	mov    %edx,0xc(%eax)
57588f:	5e                   	pop    %esi
575890:	5b                   	pop    %ebx
575891:	c3                   	ret
575892:	90                   	nop
575893:	90                   	nop
575894:	53                   	push   %ebx
575895:	8b d8                	mov    %eax,%ebx
575897:	56                   	push   %esi
575898:	8b f2                	mov    %edx,%esi
57589a:	8b 43 14             	mov    0x14(%ebx),%eax
57589d:	85 c0                	test   %eax,%eax
57589f:	75 0c                	jne    0x5758ad
5758a1:	8b c6                	mov    %esi,%eax
5758a3:	c1 e0 02             	shl    $0x2,%eax
5758a6:	e8 d1 2a 00 00       	call   0x57837c
5758ab:	eb 0d                	jmp    0x5758ba
5758ad:	8b d6                	mov    %esi,%edx
5758af:	8b 43 14             	mov    0x14(%ebx),%eax
5758b2:	c1 e2 02             	shl    $0x2,%edx
5758b5:	e8 d2 2a 00 00       	call   0x57838c
5758ba:	85 c0                	test   %eax,%eax
5758bc:	75 06                	jne    0x5758c4
5758be:	83 c8 ff             	or     $0xffffffff,%eax
5758c1:	5e                   	pop    %esi
5758c2:	5b                   	pop    %ebx
5758c3:	c3                   	ret
5758c4:	89 43 14             	mov    %eax,0x14(%ebx)
5758c7:	66 89 73 12          	mov    %si,0x12(%ebx)
5758cb:	0f b7 43 10          	movzwl 0x10(%ebx),%eax
5758cf:	eb 09                	jmp    0x5758da
5758d1:	8b 53 14             	mov    0x14(%ebx),%edx
5758d4:	33 c9                	xor    %ecx,%ecx
5758d6:	89 0c 82             	mov    %ecx,(%edx,%eax,4)
5758d9:	40                   	inc    %eax
5758da:	0f b7 53 12          	movzwl 0x12(%ebx),%edx
5758de:	3b c2                	cmp    %edx,%eax
5758e0:	7c ef                	jl     0x5758d1
5758e2:	33 c0                	xor    %eax,%eax
5758e4:	5e                   	pop    %esi
5758e5:	5b                   	pop    %ebx
5758e6:	c3                   	ret
5758e7:	90                   	nop
5758e8:	55                   	push   %ebp
5758e9:	8b ec                	mov    %esp,%ebp
5758eb:	51                   	push   %ecx
5758ec:	53                   	push   %ebx
5758ed:	8b d8                	mov    %eax,%ebx
5758ef:	56                   	push   %esi
5758f0:	57                   	push   %edi
5758f1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
5758f4:	66 8b 43 12          	mov    0x12(%ebx),%ax
5758f8:	8b f2                	mov    %edx,%esi
5758fa:	66 3b 43 10          	cmp    0x10(%ebx),%ax
5758fe:	77 19                	ja     0x575919
575900:	0f b7 d0             	movzwl %ax,%edx
575903:	81 c2 80 00 00 00    	add    $0x80,%edx
575909:	8b c3                	mov    %ebx,%eax
57590b:	e8 84 ff ff ff       	call   0x575894
575910:	85 c0                	test   %eax,%eax
575912:	74 05                	je     0x575919
575914:	83 c8 ff             	or     $0xffffffff,%eax
575917:	eb 5c                	jmp    0x575975
575919:	8b 55 fc             	mov    -0x4(%ebp),%edx
57591c:	8b 4a 14             	mov    0x14(%edx),%ecx
57591f:	8b 45 08             	mov    0x8(%ebp),%eax
575922:	8b 04 81             	mov    (%ecx,%eax,4),%eax
575925:	e8 d2 f3 ff ff       	call   0x574cfc
57592a:	8b f8                	mov    %eax,%edi
57592c:	85 c0                	test   %eax,%eax
57592e:	75 05                	jne    0x575935
575930:	83 c8 ff             	or     $0xffffffff,%eax
575933:	eb 40                	jmp    0x575975
575935:	0f b7 53 10          	movzwl 0x10(%ebx),%edx
575939:	3b f2                	cmp    %edx,%esi
57593b:	7d 25                	jge    0x575962
57593d:	0f b7 4b 10          	movzwl 0x10(%ebx),%ecx
575941:	2b ce                	sub    %esi,%ecx
575943:	8b d6                	mov    %esi,%edx
575945:	c1 e1 02             	shl    $0x2,%ecx
575948:	c1 e2 02             	shl    $0x2,%edx
57594b:	51                   	push   %ecx
57594c:	8b 43 14             	mov    0x14(%ebx),%eax
57594f:	8b ca                	mov    %edx,%ecx
575951:	03 c8                	add    %eax,%ecx
575953:	03 d0                	add    %eax,%edx
575955:	83 c2 04             	add    $0x4,%edx
575958:	51                   	push   %ecx
575959:	52                   	push   %edx
57595a:	e8 f5 51 fe ff       	call   0x55ab54
57595f:	83 c4 0c             	add    $0xc,%esp
575962:	8b 43 14             	mov    0x14(%ebx),%eax
575965:	89 3c b0             	mov    %edi,(%eax,%esi,4)
575968:	8b c3                	mov    %ebx,%eax
57596a:	66 ff 43 10          	incw   0x10(%ebx)
57596e:	e8 69 fe ff ff       	call   0x5757dc
575973:	33 c0                	xor    %eax,%eax
575975:	5f                   	pop    %edi
575976:	5e                   	pop    %esi
575977:	5b                   	pop    %ebx
575978:	59                   	pop    %ecx
575979:	5d                   	pop    %ebp
57597a:	c2 04 00             	ret    $0x4
57597d:	90                   	nop
57597e:	90                   	nop
57597f:	90                   	nop
575980:	53                   	push   %ebx
575981:	56                   	push   %esi
575982:	57                   	push   %edi
575983:	51                   	push   %ecx
575984:	89 14 24             	mov    %edx,(%esp)
575987:	8b f8                	mov    %eax,%edi
575989:	6a 01                	push   $0x1
57598b:	b9 01 00 00 00       	mov    $0x1,%ecx
575990:	33 d2                	xor    %edx,%edx
575992:	33 c0                	xor    %eax,%eax
575994:	e8 bf 22 00 00       	call   0x577c58
575999:	8b d8                	mov    %eax,%ebx
57599b:	85 c0                	test   %eax,%eax
57599d:	75 05                	jne    0x5759a4
57599f:	e8 a4 51 fe ff       	call   0x55ab48
5759a4:	33 f6                	xor    %esi,%esi
5759a6:	eb 69                	jmp    0x575a11
5759a8:	8b 47 14             	mov    0x14(%edi),%eax
5759ab:	8b 04 b0             	mov    (%eax,%esi,4),%eax
5759ae:	33 d2                	xor    %edx,%edx
5759b0:	8a 50 1a             	mov    0x1a(%eax),%dl
5759b3:	52                   	push   %edx
5759b4:	0f b7 48 18          	movzwl 0x18(%eax),%ecx
5759b8:	51                   	push   %ecx
5759b9:	68 a8 20 6a 00       	push   $0x6a20a8
5759be:	8b 44 24 0c          	mov    0xc(%esp),%eax
5759c2:	50                   	push   %eax
5759c3:	e8 04 47 00 00       	call   0x57a0cc
5759c8:	83 c4 10             	add    $0x10,%esp
5759cb:	33 c9                	xor    %ecx,%ecx
5759cd:	8b d6                	mov    %esi,%edx
5759cf:	8b c7                	mov    %edi,%eax
5759d1:	6a 00                	push   $0x0
5759d3:	6a 01                	push   $0x1
5759d5:	6a 01                	push   $0x1
5759d7:	53                   	push   %ebx
5759d8:	e8 eb f5 ff ff       	call   0x574fc8
5759dd:	85 c0                	test   %eax,%eax
5759df:	74 05                	je     0x5759e6
5759e1:	e8 62 51 fe ff       	call   0x55ab48
5759e6:	33 d2                	xor    %edx,%edx
5759e8:	8b 4b 08             	mov    0x8(%ebx),%ecx
5759eb:	2b d1                	sub    %ecx,%edx
5759ed:	8b 43 1c             	mov    0x1c(%ebx),%eax
5759f0:	8b 14 90             	mov    (%eax,%edx,4),%edx
5759f3:	33 c9                	xor    %ecx,%ecx
5759f5:	8b 43 04             	mov    0x4(%ebx),%eax
5759f8:	2b c8                	sub    %eax,%ecx
5759fa:	8b 14 8a             	mov    (%edx,%ecx,4),%edx
5759fd:	52                   	push   %edx
5759fe:	68 b9 20 6a 00       	push   $0x6a20b9
575a03:	8b 4c 24 08          	mov    0x8(%esp),%ecx
575a07:	51                   	push   %ecx
575a08:	e8 bf 46 00 00       	call   0x57a0cc
575a0d:	83 c4 0c             	add    $0xc,%esp
575a10:	46                   	inc    %esi
575a11:	0f b7 47 10          	movzwl 0x10(%edi),%eax
575a15:	3b f0                	cmp    %eax,%esi
575a17:	7c 8f                	jl     0x5759a8
575a19:	8b c3                	mov    %ebx,%eax
575a1b:	e8 74 23 00 00       	call   0x577d94
575a20:	5a                   	pop    %edx
575a21:	5f                   	pop    %edi
575a22:	5e                   	pop    %esi
575a23:	5b                   	pop    %ebx
575a24:	c3                   	ret
575a25:	90                   	nop
575a26:	90                   	nop
575a27:	90                   	nop
575a28:	55                   	push   %ebp
575a29:	8b ec                	mov    %esp,%ebp
575a2b:	83 c4 d0             	add    $0xffffffd0,%esp
575a2e:	53                   	push   %ebx
575a2f:	56                   	push   %esi
575a30:	89 4d f4             	mov    %ecx,-0xc(%ebp)
575a33:	89 55 f8             	mov    %edx,-0x8(%ebp)
575a36:	89 45 fc             	mov    %eax,-0x4(%ebp)
575a39:	8b 55 fc             	mov    -0x4(%ebp),%edx
575a3c:	8b 45 0c             	mov    0xc(%ebp),%eax
575a3f:	8b 4a 14             	mov    0x14(%edx),%ecx
575a42:	8b 55 f8             	mov    -0x8(%ebp),%edx
575a45:	8b 0c 91             	mov    (%ecx,%edx,4),%ecx
575a48:	89 4d f0             	mov    %ecx,-0x10(%ebp)
575a4b:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a4e:	8b 0a                	mov    (%edx),%ecx
575a50:	89 4d d0             	mov    %ecx,-0x30(%ebp)
575a53:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a56:	8b 4a 04             	mov    0x4(%edx),%ecx
575a59:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
575a5c:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a5f:	8b 4a 08             	mov    0x8(%edx),%ecx
575a62:	89 4d d8             	mov    %ecx,-0x28(%ebp)
575a65:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a68:	8b 4a 0c             	mov    0xc(%edx),%ecx
575a6b:	89 4d dc             	mov    %ecx,-0x24(%ebp)
575a6e:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a71:	8b 4a 10             	mov    0x10(%edx),%ecx
575a74:	89 4d e0             	mov    %ecx,-0x20(%ebp)
575a77:	8b 55 f0             	mov    -0x10(%ebp),%edx
575a7a:	8b 4a 14             	mov    0x14(%edx),%ecx
575a7d:	8b d0                	mov    %eax,%edx
575a7f:	66 83 e2 7f          	and    $0x7f,%dx
575a83:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
575a86:	66 89 55 e8          	mov    %dx,-0x18(%ebp)
575a8a:	8d 4d d0             	lea    -0x30(%ebp),%ecx
575a8d:	c1 f8 07             	sar    $0x7,%eax
575a90:	83 e0 01             	and    $0x1,%eax
575a93:	89 45 ec             	mov    %eax,-0x14(%ebp)
575a96:	66 8b 55 08          	mov    0x8(%ebp),%dx
575a9a:	8b 45 fc             	mov    -0x4(%ebp),%eax
575a9d:	e8 a2 fb ff ff       	call   0x575644
575aa2:	85 c0                	test   %eax,%eax
575aa4:	74 05                	je     0x575aab
575aa6:	83 c8 ff             	or     $0xffffffff,%eax
575aa9:	eb 72                	jmp    0x575b1d
575aab:	8b 55 08             	mov    0x8(%ebp),%edx
575aae:	8b 4d f8             	mov    -0x8(%ebp),%ecx
575ab1:	3b d1                	cmp    %ecx,%edx
575ab3:	7f 12                	jg     0x575ac7
575ab5:	ff 45 f8             	incl   -0x8(%ebp)
575ab8:	8b 45 fc             	mov    -0x4(%ebp),%eax
575abb:	8b 50 14             	mov    0x14(%eax),%edx
575abe:	8b 4d f8             	mov    -0x8(%ebp),%ecx
575ac1:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
575ac4:	89 45 f0             	mov    %eax,-0x10(%ebp)
575ac7:	33 f6                	xor    %esi,%esi
575ac9:	eb 46                	jmp    0x575b11
575acb:	33 db                	xor    %ebx,%ebx
575acd:	eb 37                	jmp    0x575b06
575acf:	56                   	push   %esi
575ad0:	8b cb                	mov    %ebx,%ecx
575ad2:	8b 55 f8             	mov    -0x8(%ebp),%edx
575ad5:	8b 45 fc             	mov    -0x4(%ebp),%eax
575ad8:	e8 4b 00 00 00       	call   0x575b28
575add:	85 c0                	test   %eax,%eax
575adf:	7d 04                	jge    0x575ae5
575ae1:	33 c0                	xor    %eax,%eax
575ae3:	eb 0b                	jmp    0x575af0
575ae5:	8b 55 f4             	mov    -0xc(%ebp),%edx
575ae8:	3b c2                	cmp    %edx,%eax
575aea:	7c 04                	jl     0x575af0
575aec:	8b 45 f4             	mov    -0xc(%ebp),%eax
575aef:	48                   	dec    %eax
575af0:	56                   	push   %esi
575af1:	8b 55 10             	mov    0x10(%ebp),%edx
575af4:	8b 0c 82             	mov    (%edx,%eax,4),%ecx
575af7:	51                   	push   %ecx
575af8:	8b cb                	mov    %ebx,%ecx
575afa:	8b 55 08             	mov    0x8(%ebp),%edx
575afd:	8b 45 fc             	mov    -0x4(%ebp),%eax