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
575b00:	e8 f3 00 00 00       	call   0x575bf8
575b05:	43                   	inc    %ebx
575b06:	8b 45 f0             	mov    -0x10(%ebp),%eax
575b09:	8b 50 10             	mov    0x10(%eax),%edx
575b0c:	3b d3                	cmp    %ebx,%edx
575b0e:	77 bf                	ja     0x575acf
575b10:	46                   	inc    %esi
575b11:	8b 4d f0             	mov    -0x10(%ebp),%ecx
575b14:	8b 41 14             	mov    0x14(%ecx),%eax
575b17:	3b c6                	cmp    %esi,%eax
575b19:	77 b0                	ja     0x575acb
575b1b:	33 c0                	xor    %eax,%eax
575b1d:	5e                   	pop    %esi
575b1e:	5b                   	pop    %ebx
575b1f:	8b e5                	mov    %ebp,%esp
575b21:	5d                   	pop    %ebp
575b22:	c2 0c 00             	ret    $0xc
575b25:	90                   	nop
575b26:	90                   	nop
575b27:	90                   	nop
575b28:	55                   	push   %ebp
575b29:	8b ec                	mov    %esp,%ebp
575b2b:	51                   	push   %ecx
575b2c:	53                   	push   %ebx
575b2d:	56                   	push   %esi
575b2e:	57                   	push   %edi
575b2f:	8b 40 14             	mov    0x14(%eax),%eax
575b32:	8b 1c 90             	mov    (%eax,%edx,4),%ebx
575b35:	8b 53 10             	mov    0x10(%ebx),%edx
575b38:	8b 43 1c             	mov    0x1c(%ebx),%eax
575b3b:	0f af 55 08          	imul   0x8(%ebp),%edx
575b3f:	03 d1                	add    %ecx,%edx
575b41:	0f af 53 20          	imul   0x20(%ebx),%edx
575b45:	33 c9                	xor    %ecx,%ecx
575b47:	e8 1c 30 00 00       	call   0x578b68
575b4c:	85 c0                	test   %eax,%eax
575b4e:	7d 08                	jge    0x575b58
575b50:	83 c8 ff             	or     $0xffffffff,%eax
575b53:	e9 97 00 00 00       	jmp    0x575bef
575b58:	33 f6                	xor    %esi,%esi
575b5a:	8b 7b 20             	mov    0x20(%ebx),%edi
575b5d:	85 ff                	test   %edi,%edi
575b5f:	7e 7e                	jle    0x575bdf
575b61:	8b 43 1c             	mov    0x1c(%ebx),%eax
575b64:	f6 40 08 07          	testb  $0x7,0x8(%eax)
575b68:	75 54                	jne    0x575bbe
575b6a:	8b 53 1c             	mov    0x1c(%ebx),%edx
575b6d:	8b 4a 40             	mov    0x40(%edx),%ecx
575b70:	85 c9                	test   %ecx,%ecx
575b72:	7c 1c                	jl     0x575b90
575b74:	8b 43 1c             	mov    0x1c(%ebx),%eax
575b77:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
575b7a:	8b 50 40             	mov    0x40(%eax),%edx
575b7d:	8b 41 3c             	mov    0x3c(%ecx),%eax
575b80:	3b d0                	cmp    %eax,%edx
575b82:	7f 0c                	jg     0x575b90
575b84:	8b 53 1c             	mov    0x1c(%ebx),%edx
575b87:	83 4a 08 04          	orl    $0x4,0x8(%edx)
575b8b:	83 c9 ff             	or     $0xffffffff,%ecx
575b8e:	eb 31                	jmp    0x575bc1
575b90:	8b 43 1c             	mov    0x1c(%ebx),%eax
575b93:	ff 48 1c             	decl   0x1c(%eax)
575b96:	79 11                	jns    0x575ba9
575b98:	ba 01 00 00 00       	mov    $0x1,%edx
575b9d:	8b 43 1c             	mov    0x1c(%ebx),%eax
575ba0:	e8 83 31 00 00       	call   0x578d28
575ba5:	8b c8                	mov    %eax,%ecx
575ba7:	eb 18                	jmp    0x575bc1
575ba9:	8b 53 1c             	mov    0x1c(%ebx),%edx
575bac:	ff 42 3c             	incl   0x3c(%edx)
575baf:	8b 43 1c             	mov    0x1c(%ebx),%eax
575bb2:	8b 50 18             	mov    0x18(%eax),%edx
575bb5:	ff 40 18             	incl   0x18(%eax)
575bb8:	33 c9                	xor    %ecx,%ecx
575bba:	8a 0a                	mov    (%edx),%cl
575bbc:	eb 03                	jmp    0x575bc1
575bbe:	83 c9 ff             	or     $0xffffffff,%ecx
575bc1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
575bc4:	41                   	inc    %ecx
575bc5:	75 05                	jne    0x575bcc
575bc7:	83 c8 ff             	or     $0xffffffff,%eax
575bca:	eb 23                	jmp    0x575bef
575bcc:	c1 e6 08             	shl    $0x8,%esi
575bcf:	8b 55 fc             	mov    -0x4(%ebp),%edx
575bd2:	81 e2 ff 00 00 00    	and    $0xff,%edx
575bd8:	0b f2                	or     %edx,%esi
575bda:	4f                   	dec    %edi
575bdb:	85 ff                	test   %edi,%edi
575bdd:	7f 82                	jg     0x575b61
575bdf:	0f b7 53 18          	movzwl 0x18(%ebx),%edx
575be3:	33 c9                	xor    %ecx,%ecx
575be5:	8b c6                	mov    %esi,%eax
575be7:	8a 4b 1a             	mov    0x1a(%ebx),%cl
575bea:	e8 b5 fb ff ff       	call   0x5757a4
575bef:	5f                   	pop    %edi
575bf0:	5e                   	pop    %esi
575bf1:	5b                   	pop    %ebx
575bf2:	59                   	pop    %ecx
575bf3:	5d                   	pop    %ebp
575bf4:	c2 04 00             	ret    $0x4
575bf7:	90                   	nop
575bf8:	55                   	push   %ebp
575bf9:	8b ec                	mov    %esp,%ebp
575bfb:	51                   	push   %ecx
575bfc:	53                   	push   %ebx
575bfd:	56                   	push   %esi
575bfe:	57                   	push   %edi
575bff:	8b 40 14             	mov    0x14(%eax),%eax
575c02:	8b 1c 90             	mov    (%eax,%edx,4),%ebx
575c05:	8b 53 10             	mov    0x10(%ebx),%edx
575c08:	8b 43 1c             	mov    0x1c(%ebx),%eax
575c0b:	0f af 55 0c          	imul   0xc(%ebp),%edx
575c0f:	03 d1                	add    %ecx,%edx
575c11:	0f af 53 20          	imul   0x20(%ebx),%edx
575c15:	33 c9                	xor    %ecx,%ecx
575c17:	e8 4c 2f 00 00       	call   0x578b68
575c1c:	85 c0                	test   %eax,%eax
575c1e:	0f 8c b9 00 00 00    	jl     0x575cdd
575c24:	0f b7 53 18          	movzwl 0x18(%ebx),%edx
575c28:	33 c9                	xor    %ecx,%ecx
575c2a:	8b 45 08             	mov    0x8(%ebp),%eax
575c2d:	8a 4b 1a             	mov    0x1a(%ebx),%cl
575c30:	e8 43 fb ff ff       	call   0x575778
575c35:	8b f8                	mov    %eax,%edi
575c37:	8b 43 20             	mov    0x20(%ebx),%eax
575c3a:	89 45 fc             	mov    %eax,-0x4(%ebp)
575c3d:	8b 55 fc             	mov    -0x4(%ebp),%edx
575c40:	85 d2                	test   %edx,%edx
575c42:	0f 8e 95 00 00 00    	jle    0x575cdd
575c48:	8b 4b 20             	mov    0x20(%ebx),%ecx
575c4b:	8b f7                	mov    %edi,%esi
575c4d:	c1 e1 03             	shl    $0x3,%ecx
575c50:	8b 43 1c             	mov    0x1c(%ebx),%eax
575c53:	83 c1 f8             	add    $0xfffffff8,%ecx
575c56:	d3 ee                	shr    %cl,%esi
575c58:	81 e6 ff 00 00 00    	and    $0xff,%esi
575c5e:	f6 40 08 07          	testb  $0x7,0x8(%eax)
575c62:	75 62                	jne    0x575cc6
575c64:	8b 53 1c             	mov    0x1c(%ebx),%edx
575c67:	8b 4a 40             	mov    0x40(%edx),%ecx
575c6a:	85 c9                	test   %ecx,%ecx
575c6c:	7c 1c                	jl     0x575c8a
575c6e:	8b 43 1c             	mov    0x1c(%ebx),%eax
575c71:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
575c74:	8b 50 40             	mov    0x40(%eax),%edx
575c77:	8b 41 3c             	mov    0x3c(%ecx),%eax
575c7a:	3b d0                	cmp    %eax,%edx
575c7c:	7f 0c                	jg     0x575c8a
575c7e:	8b 53 1c             	mov    0x1c(%ebx),%edx
575c81:	83 4a 08 04          	orl    $0x4,0x8(%edx)
575c85:	83 c9 ff             	or     $0xffffffff,%ecx
575c88:	eb 3f                	jmp    0x575cc9
575c8a:	8b 43 1c             	mov    0x1c(%ebx),%eax
575c8d:	83 48 04 20          	orl    $0x20,0x4(%eax)
575c91:	8b 53 1c             	mov    0x1c(%ebx),%edx
575c94:	ff 4a 1c             	decl   0x1c(%edx)
575c97:	79 14                	jns    0x575cad
575c99:	8b d6                	mov    %esi,%edx
575c9b:	8b 43 1c             	mov    0x1c(%ebx),%eax
575c9e:	81 e2 ff 00 00 00    	and    $0xff,%edx
575ca4:	e8 6f 31 00 00       	call   0x578e18
575ca9:	8b c8                	mov    %eax,%ecx
575cab:	eb 1c                	jmp    0x575cc9
575cad:	8b 43 1c             	mov    0x1c(%ebx),%eax
575cb0:	ff 40 3c             	incl   0x3c(%eax)
575cb3:	8b 53 1c             	mov    0x1c(%ebx),%edx
575cb6:	8b 4a 18             	mov    0x18(%edx),%ecx
575cb9:	ff 42 18             	incl   0x18(%edx)
575cbc:	8b c6                	mov    %esi,%eax
575cbe:	88 01                	mov    %al,(%ecx)
575cc0:	33 c9                	xor    %ecx,%ecx
575cc2:	8a c8                	mov    %al,%cl
575cc4:	eb 03                	jmp    0x575cc9
575cc6:	83 c9 ff             	or     $0xffffffff,%ecx
575cc9:	41                   	inc    %ecx