5748a0:	83 c4 f8             	add    $0xfffffff8,%esp
5748a3:	8b ea                	mov    %edx,%ebp
5748a5:	89 04 24             	mov    %eax,(%esp)
5748a8:	8b 1c 24             	mov    (%esp),%ebx
5748ab:	83 c3 10             	add    $0x10,%ebx
5748ae:	33 c0                	xor    %eax,%eax
5748b0:	89 43 04             	mov    %eax,0x4(%ebx)
5748b3:	8b d3                	mov    %ebx,%edx
5748b5:	8b c5                	mov    %ebp,%eax
5748b7:	e8 94 f9 ff ff       	call   0x574250
5748bc:	85 c0                	test   %eax,%eax
5748be:	75 0e                	jne    0x5748ce
5748c0:	8d 53 02             	lea    0x2(%ebx),%edx
5748c3:	8b c5                	mov    %ebp,%eax
5748c5:	e8 22 f9 ff ff       	call   0x5741ec
5748ca:	85 c0                	test   %eax,%eax
5748cc:	74 08                	je     0x5748d6
5748ce:	83 c8 ff             	or     $0xffffffff,%eax
5748d1:	e9 be 00 00 00       	jmp    0x574994
5748d6:	0f b7 33             	movzwl (%ebx),%esi
5748d9:	33 c0                	xor    %eax,%eax
5748db:	8a 43 02             	mov    0x2(%ebx),%al
5748de:	0f af f0             	imul   %eax,%esi
5748e1:	8b c6                	mov    %esi,%eax
5748e3:	c1 e0 02             	shl    $0x2,%eax
5748e6:	e8 91 3a 00 00       	call   0x57837c
5748eb:	89 43 04             	mov    %eax,0x4(%ebx)
5748ee:	85 c0                	test   %eax,%eax
5748f0:	75 08                	jne    0x5748fa
5748f2:	83 c8 ff             	or     $0xffffffff,%eax
5748f5:	e9 9a 00 00 00       	jmp    0x574994
5748fa:	33 c0                	xor    %eax,%eax
5748fc:	8a 43 02             	mov    0x2(%ebx),%al
5748ff:	e8 78 3a 00 00       	call   0x57837c
574904:	89 43 08             	mov    %eax,0x8(%ebx)
574907:	85 c0                	test   %eax,%eax
574909:	75 08                	jne    0x574913
57490b:	83 c8 ff             	or     $0xffffffff,%eax
57490e:	e9 81 00 00 00       	jmp    0x574994
574913:	33 ff                	xor    %edi,%edi
574915:	eb 16                	jmp    0x57492d
574917:	8b 53 08             	mov    0x8(%ebx),%edx
57491a:	8b c5                	mov    %ebp,%eax
57491c:	03 d7                	add    %edi,%edx
57491e:	e8 c9 f8 ff ff       	call   0x5741ec
574923:	85 c0                	test   %eax,%eax
574925:	74 05                	je     0x57492c
574927:	83 c8 ff             	or     $0xffffffff,%eax
57492a:	eb 68                	jmp    0x574994
57492c:	47                   	inc    %edi
57492d:	33 d2                	xor    %edx,%edx
57492f:	8a 53 02             	mov    0x2(%ebx),%dl
574932:	3b fa                	cmp    %edx,%edi
574934:	7c e1                	jl     0x574917
574936:	33 ff                	xor    %edi,%edi
574938:	eb 51                	jmp    0x57498b
57493a:	33 f6                	xor    %esi,%esi
57493c:	eb 43                	jmp    0x574981
57493e:	8d 54 24 04          	lea    0x4(%esp),%edx
574942:	52                   	push   %edx
574943:	8b 43 08             	mov    0x8(%ebx),%eax
574946:	8b 4b 08             	mov    0x8(%ebx),%ecx
574949:	8a 04 30             	mov    (%eax,%esi,1),%al
57494c:	a8 80                	test   $0x80,%al
57494e:	0f 95 c2             	setne  %dl
574951:	33 c9                	xor    %ecx,%ecx
574953:	83 e2 01             	and    $0x1,%edx
574956:	8a c8                	mov    %al,%cl
574958:	8b c5                	mov    %ebp,%eax
57495a:	83 e1 7f             	and    $0x7f,%ecx
57495d:	41                   	inc    %ecx
57495e:	e8 99 00 00 00       	call   0x5749fc
574963:	85 c0                	test   %eax,%eax
574965:	74 05                	je     0x57496c
574967:	83 c8 ff             	or     $0xffffffff,%eax
57496a:	eb 28                	jmp    0x574994
57496c:	33 d2                	xor    %edx,%edx
57496e:	8b 4b 04             	mov    0x4(%ebx),%ecx
574971:	8a 53 02             	mov    0x2(%ebx),%dl
574974:	8b 44 24 04          	mov    0x4(%esp),%eax
574978:	0f af d7             	imul   %edi,%edx
57497b:	03 d6                	add    %esi,%edx
57497d:	46                   	inc    %esi
57497e:	89 04 91             	mov    %eax,(%ecx,%edx,4)
574981:	33 d2                	xor    %edx,%edx
574983:	8a 53 02             	mov    0x2(%ebx),%dl
574986:	3b f2                	cmp    %edx,%esi
574988:	7c b4                	jl     0x57493e
57498a:	47                   	inc    %edi
57498b:	0f b7 0b             	movzwl (%ebx),%ecx
57498e:	3b f9                	cmp    %ecx,%edi
574990:	7c a8                	jl     0x57493a
574992:	33 c0                	xor    %eax,%eax
574994:	59                   	pop    %ecx
574995:	5a                   	pop    %edx
574996:	5d                   	pop    %ebp
574997:	5f                   	pop    %edi
574998:	5e                   	pop    %esi
574999:	5b                   	pop    %ebx
57499a:	c3                   	ret
57499b:	90                   	nop
57499c:	83 c8 ff             	or     $0xffffffff,%eax
57499f:	c3                   	ret
5749a0:	53                   	push   %ebx
5749a1:	56                   	push   %esi
5749a2:	8d 70 10             	lea    0x10(%eax),%esi
5749a5:	57                   	push   %edi
5749a6:	55                   	push   %ebp
5749a7:	33 c0                	xor    %eax,%eax
5749a9:	8a 46 02             	mov    0x2(%esi),%al
5749ac:	8b ea                	mov    %edx,%ebp
5749ae:	50                   	push   %eax
5749af:	0f b7 16             	movzwl (%esi),%edx
5749b2:	52                   	push   %edx
5749b3:	68 1b 20 6a 00       	push   $0x6a201b
5749b8:	55                   	push   %ebp
5749b9:	e8 0e 57 00 00       	call   0x57a0cc
5749be:	83 c4 10             	add    $0x10,%esp
5749c1:	33 ff                	xor    %edi,%edi
5749c3:	eb 2a                	jmp    0x5749ef
5749c5:	33 db                	xor    %ebx,%ebx
5749c7:	eb 1c                	jmp    0x5749e5
5749c9:	f7 ef                	imul   %edi
5749cb:	03 c3                	add    %ebx,%eax
5749cd:	8b 56 04             	mov    0x4(%esi),%edx
5749d0:	8b 04 82             	mov    (%edx,%eax,4),%eax
5749d3:	50                   	push   %eax
5749d4:	53                   	push   %ebx
5749d5:	57                   	push   %edi
5749d6:	68 34 20 6a 00       	push   $0x6a2034
5749db:	55                   	push   %ebp
5749dc:	e8 eb 56 00 00       	call   0x57a0cc
5749e1:	83 c4 14             	add    $0x14,%esp
5749e4:	43                   	inc    %ebx
5749e5:	33 c0                	xor    %eax,%eax
5749e7:	8a 46 02             	mov    0x2(%esi),%al
5749ea:	3b d8                	cmp    %eax,%ebx
5749ec:	7c db                	jl     0x5749c9
5749ee:	47                   	inc    %edi
5749ef:	0f b7 16             	movzwl (%esi),%edx
5749f2:	3b fa                	cmp    %edx,%edi
5749f4:	7c cf                	jl     0x5749c5
5749f6:	5d                   	pop    %ebp
5749f7:	5f                   	pop    %edi
5749f8:	5e                   	pop    %esi
5749f9:	5b                   	pop    %ebx
5749fa:	c3                   	ret
5749fb:	90                   	nop
5749fc:	55                   	push   %ebp
5749fd:	8b ec                	mov    %esp,%ebp
5749ff:	83 c4 f0             	add    $0xfffffff0,%esp
574a02:	53                   	push   %ebx
574a03:	56                   	push   %esi
574a04:	57                   	push   %edi
574a05:	89 4d f8             	mov    %ecx,-0x8(%ebp)
574a08:	89 55 fc             	mov    %edx,-0x4(%ebp)
574a0b:	8b d8                	mov    %eax,%ebx
574a0d:	8b 45 f8             	mov    -0x8(%ebp),%eax
574a10:	83 c0 07             	add    $0x7,%eax
574a13:	85 c0                	test   %eax,%eax
574a15:	79 03                	jns    0x574a1a
574a17:	83 c0 07             	add    $0x7,%eax
574a1a:	c1 f8 03             	sar    $0x3,%eax
574a1d:	89 45 f0             	mov    %eax,-0x10(%ebp)
574a20:	33 f6                	xor    %esi,%esi
574a22:	33 ff                	xor    %edi,%edi
574a24:	8b 45 f0             	mov    -0x10(%ebp),%eax
574a27:	3b f8                	cmp    %eax,%edi
574a29:	7d 62                	jge    0x574a8d
574a2b:	f6 43 08 07          	testb  $0x7,0x8(%ebx)
574a2f:	75 3e                	jne    0x574a6f
574a31:	8b 53 40             	mov    0x40(%ebx),%edx
574a34:	85 d2                	test   %edx,%edx
574a36:	7c 13                	jl     0x574a4b
574a38:	8b 4b 40             	mov    0x40(%ebx),%ecx
574a3b:	8b 43 3c             	mov    0x3c(%ebx),%eax
574a3e:	3b c8                	cmp    %eax,%ecx
574a40:	7f 09                	jg     0x574a4b
574a42:	83 4b 08 04          	orl    $0x4,0x8(%ebx)
574a46:	83 ca ff             	or     $0xffffffff,%edx
574a49:	eb 27                	jmp    0x574a72
574a4b:	ff 4b 1c             	decl   0x1c(%ebx)
574a4e:	79 10                	jns    0x574a60
574a50:	ba 01 00 00 00       	mov    $0x1,%edx
574a55:	8b c3                	mov    %ebx,%eax
574a57:	e8 cc 42 00 00       	call   0x578d28
574a5c:	8b d0                	mov    %eax,%edx
574a5e:	eb 12                	jmp    0x574a72
574a60:	ff 43 3c             	incl   0x3c(%ebx)
574a63:	8b 43 18             	mov    0x18(%ebx),%eax
574a66:	ff 43 18             	incl   0x18(%ebx)
574a69:	33 d2                	xor    %edx,%edx
574a6b:	8a 10                	mov    (%eax),%dl
574a6d:	eb 03                	jmp    0x574a72
574a6f:	83 ca ff             	or     $0xffffffff,%edx
574a72:	89 55 f4             	mov    %edx,-0xc(%ebp)
574a75:	42                   	inc    %edx
574a76:	75 05                	jne    0x574a7d
574a78:	83 c8 ff             	or     $0xffffffff,%eax
574a7b:	eb 5e                	jmp    0x574adb
574a7d:	c1 e6 08             	shl    $0x8,%esi
574a80:	8b 4d f4             	mov    -0xc(%ebp),%ecx
574a83:	0b f1                	or     %ecx,%esi
574a85:	47                   	inc    %edi
574a86:	8b 45 f0             	mov    -0x10(%ebp),%eax
574a89:	3b f8                	cmp    %eax,%edi
574a8b:	7c 9e                	jl     0x574a2b
574a8d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
574a90:	ba 01 00 00 00       	mov    $0x1,%edx
574a95:	d3 e2                	shl    %cl,%edx
574a97:	4a                   	dec    %edx
574a98:	23 f2                	and    %edx,%esi
574a9a:	8b 45 fc             	mov    -0x4(%ebp),%eax
574a9d:	85 c0                	test   %eax,%eax
574a9f:	74 33                	je     0x574ad4
574aa1:	8b 55 f0             	mov    -0x10(%ebp),%edx
574aa4:	b8 01 00 00 00       	mov    $0x1,%eax
574aa9:	c1 e2 03             	shl    $0x3,%edx
574aac:	bb 01 00 00 00       	mov    $0x1,%ebx
574ab1:	8b ca                	mov    %edx,%ecx
574ab3:	49                   	dec    %ecx
574ab4:	d3 e0                	shl    %cl,%eax
574ab6:	8b ca                	mov    %edx,%ecx
574ab8:	23 c6                	and    %esi,%eax
574aba:	d3 e3                	shl    %cl,%ebx
574abc:	f7 d6                	not    %esi
574abe:	8b 55 08             	mov    0x8(%ebp),%edx
574ac1:	46                   	inc    %esi
574ac2:	4b                   	dec    %ebx
574ac3:	23 de                	and    %esi,%ebx
574ac5:	85 c0                	test   %eax,%eax
574ac7:	89 1a                	mov    %ebx,(%edx)
574ac9:	74 0e                	je     0x574ad9
574acb:	8b 45 08             	mov    0x8(%ebp),%eax
574ace:	f7 db                	neg    %ebx
574ad0:	89 18                	mov    %ebx,(%eax)
574ad2:	eb 05                	jmp    0x574ad9
574ad4:	8b 4d 08             	mov    0x8(%ebp),%ecx
574ad7:	89 31                	mov    %esi,(%ecx)
574ad9:	33 c0                	xor    %eax,%eax
574adb:	5f                   	pop    %edi
574adc:	5e                   	pop    %esi
574add:	5b                   	pop    %ebx
574ade:	8b e5                	mov    %ebp,%esp
574ae0:	5d                   	pop    %ebp
574ae1:	c2 04 00             	ret    $0x4
574ae4:	53                   	push   %ebx
574ae5:	56                   	push   %esi
574ae6:	33 c9                	xor    %ecx,%ecx
574ae8:	eb 19                	jmp    0x574b03
574aea:	8b 58 04             	mov    0x4(%eax),%ebx
574aed:	8b f1                	mov    %ecx,%esi
574aef:	03 f6                	add    %esi,%esi
574af1:	8d 34 76             	lea    (%esi,%esi,2),%esi
574af4:	03 de                	add    %esi,%ebx
574af6:	0f b7 33             	movzwl (%ebx),%esi
574af9:	3b d6                	cmp    %esi,%edx
574afb:	75 05                	jne    0x574b02
574afd:	8b c3                	mov    %ebx,%eax
574aff:	5e                   	pop    %esi
574b00:	5b                   	pop    %ebx
574b01:	c3                   	ret
574b02:	41                   	inc    %ecx
574b03:	0f b7 18             	movzwl (%eax),%ebx
574b06:	3b cb                	cmp    %ebx,%ecx
574b08:	7c e0                	jl     0x574aea
574b0a:	33 c0                	xor    %eax,%eax
574b0c:	5e                   	pop    %esi
574b0d:	5b                   	pop    %ebx
574b0e:	c3                   	ret
574b0f:	90                   	nop
574b10:	53                   	push   %ebx
574b11:	56                   	push   %esi
574b12:	57                   	push   %edi
574b13:	55                   	push   %ebp
574b14:	83 c4 f8             	add    $0xfffffff8,%esp
574b17:	8b d9                	mov    %ecx,%ebx
574b19:	89 14 24             	mov    %edx,(%esp)
574b1c:	8b e8                	mov    %eax,%ebp
574b1e:	e8 f5 00 00 00       	call   0x574c18
574b23:	8b f8                	mov    %eax,%edi
574b25:	85 c0                	test   %eax,%eax
574b27:	75 07                	jne    0x574b30
574b29:	33 c0                	xor    %eax,%eax
574b2b:	e9 de 00 00 00       	jmp    0x574c0e
574b30:	89 5f 18             	mov    %ebx,0x18(%edi)
574b33:	66 89 6f 12          	mov    %bp,0x12(%edi)
574b37:	c7 47 24 01 00 00 00 	movl   $0x1,0x24(%edi)
574b3e:	0f b7 47 12          	movzwl 0x12(%edi),%eax
574b42:	c1 e0 02             	shl    $0x2,%eax
574b45:	e8 32 38 00 00       	call   0x57837c
574b4a:	89 47 14             	mov    %eax,0x14(%edi)
574b4d:	85 c0                	test   %eax,%eax
574b4f:	75 0e                	jne    0x574b5f
574b51:	8b c7                	mov    %edi,%eax
574b53:	e8 50 02 00 00       	call   0x574da8
574b58:	33 c0                	xor    %eax,%eax
574b5a:	e9 af 00 00 00       	jmp    0x574c0e
574b5f:	33 f6                	xor    %esi,%esi
574b61:	eb 0c                	jmp    0x574b6f
574b63:	0f b7 c6             	movzwl %si,%eax
574b66:	8b 57 14             	mov    0x14(%edi),%edx
574b69:	33 c9                	xor    %ecx,%ecx
574b6b:	89 0c 82             	mov    %ecx,(%edx,%eax,4)
574b6e:	46                   	inc    %esi
574b6f:	66 3b 77 12          	cmp    0x12(%edi),%si
574b73:	72 ee                	jb     0x574b63
574b75:	33 c0                	xor    %eax,%eax
574b77:	33 f6                	xor    %esi,%esi
574b79:	8b 1c 24             	mov    (%esp),%ebx
574b7c:	66 3b ee             	cmp    %si,%bp
574b7f:	76 1f                	jbe    0x574ba0
574b81:	8b 53 10             	mov    0x10(%ebx),%edx
574b84:	46                   	inc    %esi
574b85:	0f af 53 14          	imul   0x14(%ebx),%edx
574b89:	0f b7 4b 18          	movzwl 0x18(%ebx),%ecx
574b8d:	83 c1 07             	add    $0x7,%ecx
574b90:	83 c3 20             	add    $0x20,%ebx
574b93:	0f af d1             	imul   %ecx,%edx
574b96:	c1 ea 03             	shr    $0x3,%edx
574b99:	03 c2                	add    %edx,%eax
574b9b:	66 3b ee             	cmp    %si,%bp
574b9e:	77 e1                	ja     0x574b81
574ba0:	3d 00 00 00 01       	cmp    $0x1000000,%eax
574ba5:	0f 92 c0             	setb   %al
574ba8:	83 e0 01             	and    $0x1,%eax
574bab:	33 f6                	xor    %esi,%esi
574bad:	66 3b ee             	cmp    %si,%bp
574bb0:	89 44 24 04          	mov    %eax,0x4(%esp)
574bb4:	8b 1c 24             	mov    (%esp),%ebx
574bb7:	76 4c                	jbe    0x574c05
574bb9:	8b 43 0c             	mov    0xc(%ebx),%eax
574bbc:	50                   	push   %eax
574bbd:	8b 53 10             	mov    0x10(%ebx),%edx
574bc0:	52                   	push   %edx
574bc1:	8b 4b 14             	mov    0x14(%ebx),%ecx
574bc4:	51                   	push   %ecx
574bc5:	66 8b 43 18          	mov    0x18(%ebx),%ax
574bc9:	50                   	push   %eax
574bca:	8b 53 1c             	mov    0x1c(%ebx),%edx
574bcd:	52                   	push   %edx
574bce:	8b 4c 24 18          	mov    0x18(%esp),%ecx
574bd2:	51                   	push   %ecx
574bd3:	8b 4b 08             	mov    0x8(%ebx),%ecx
574bd6:	8b 53 04             	mov    0x4(%ebx),%edx
574bd9:	8b 03                	mov    (%ebx),%eax
574bdb:	e8 08 02 00 00       	call   0x574de8
574be0:	0f b7 d6             	movzwl %si,%edx
574be3:	8b 4f 14             	mov    0x14(%edi),%ecx
574be6:	85 c0                	test   %eax,%eax