584d71:	89 83 b8 00 00 00    	mov    %eax,0xb8(%ebx)
584d77:	8b 43 24             	mov    0x24(%ebx),%eax
584d7a:	e8 55 d8 ff ff       	call   0x5825d4
584d7f:	89 83 d0 00 00 00    	mov    %eax,0xd0(%ebx)
584d85:	eb 0d                	jmp    0x584d94
584d87:	33 c0                	xor    %eax,%eax
584d89:	89 83 b8 00 00 00    	mov    %eax,0xb8(%ebx)
584d8f:	33 c0                	xor    %eax,%eax
584d91:	89 43 24             	mov    %eax,0x24(%ebx)
584d94:	f7 c6 00 10 00 00    	test   $0x1000,%esi
584d9a:	74 45                	je     0x584de1
584d9c:	8b 53 10             	mov    0x10(%ebx),%edx
584d9f:	8b 43 24             	mov    0x24(%ebx),%eax
584da2:	e8 89 fe ff ff       	call   0x584c30
584da7:	8b f0                	mov    %eax,%esi
584da9:	89 b3 b4 00 00 00    	mov    %esi,0xb4(%ebx)
584daf:	85 f6                	test   %esi,%esi
584db1:	75 2e                	jne    0x584de1
584db3:	ba 74 6d 61 67       	mov    $0x67616d74,%edx
584db8:	8b 43 24             	mov    0x24(%ebx),%eax
584dbb:	e8 34 d8 ff ff       	call   0x5825f4
584dc0:	85 c0                	test   %eax,%eax
584dc2:	74 15                	je     0x584dd9
584dc4:	ba 74 6d 61 67       	mov    $0x67616d74,%edx
584dc9:	8b 43 24             	mov    0x24(%ebx),%eax
584dcc:	e8 df d0 ff ff       	call   0x581eb0
584dd1:	89 83 b4 00 00 00    	mov    %eax,0xb4(%ebx)
584dd7:	eb 08                	jmp    0x584de1
584dd9:	33 c0                	xor    %eax,%eax
584ddb:	89 83 b4 00 00 00    	mov    %eax,0xb4(%ebx)
584de1:	5f                   	pop    %edi
584de2:	5e                   	pop    %esi
584de3:	5b                   	pop    %ebx
584de4:	c3                   	ret
584de5:	8d 40 00             	lea    0x0(%eax),%eax
584de8:	0f b7 12             	movzwl (%edx),%edx
584deb:	69 d2 95 00 00 00    	imul   $0x95,%edx,%edx
584df1:	8b 80 d8 00 00 00    	mov    0xd8(%eax),%eax
584df7:	8d 84 50 52 01 00 00 	lea    0x152(%eax,%edx,2),%eax
584dfe:	8b d0                	mov    %eax,%edx
584e00:	8b c1                	mov    %ecx,%eax
584e02:	b9 06 00 00 00       	mov    $0x6,%ecx
584e07:	e8 b4 30 e8 ff       	call   0x407ec0
584e0c:	c3                   	ret
584e0d:	8d 40 00             	lea    0x0(%eax),%eax
584e10:	53                   	push   %ebx
584e11:	56                   	push   %esi
584e12:	57                   	push   %edi
584e13:	8b fa                	mov    %edx,%edi
584e15:	0f b7 c0             	movzwl %ax,%eax
584e18:	3d ff ff 00 00       	cmp    $0xffff,%eax
584e1d:	75 0a                	jne    0x584e29
584e1f:	0f b7 41 0c          	movzwl 0xc(%ecx),%eax
584e23:	0f b7 04 47          	movzwl (%edi,%eax,2),%eax
584e27:	eb 35                	jmp    0x584e5e
584e29:	0f b7 59 0c          	movzwl 0xc(%ecx),%ebx
584e2d:	0f af d8             	imul   %eax,%ebx
584e30:	8b c3                	mov    %ebx,%eax
584e32:	e8 d9 78 ff ff       	call   0x57c710
584e37:	8b d8                	mov    %eax,%ebx
584e39:	8b c3                	mov    %ebx,%eax
584e3b:	e8 20 aa ff ff       	call   0x57f860
584e40:	0f b7 34 47          	movzwl (%edi,%eax,2),%esi
584e44:	0f b7 44 47 02       	movzwl 0x2(%edi,%eax,2),%eax
584e49:	8b f8                	mov    %eax,%edi
584e4b:	8b d3                	mov    %ebx,%edx
584e4d:	81 e2 ff ff 00 00    	and    $0xffff,%edx
584e53:	8b c7                	mov    %edi,%eax
584e55:	2b c6                	sub    %esi,%eax
584e57:	e8 88 68 ff ff       	call   0x57b6e4
584e5c:	03 c6                	add    %esi,%eax
584e5e:	5f                   	pop    %edi
584e5f:	5e                   	pop    %esi
584e60:	5b                   	pop    %ebx
584e61:	c3                   	ret
584e62:	8b c0                	mov    %eax,%eax
584e64:	85 c0                	test   %eax,%eax
584e66:	7d 03                	jge    0x584e6b
584e68:	33 c0                	xor    %eax,%eax
584e6a:	c3                   	ret
584e6b:	3d ff ff 00 00       	cmp    $0xffff,%eax
584e70:	7e 04                	jle    0x584e76
584e72:	66 b8 ff ff          	mov    $0xffff,%ax
584e76:	c3                   	ret
584e77:	90                   	nop
584e78:	53                   	push   %ebx
584e79:	56                   	push   %esi
584e7a:	57                   	push   %edi
584e7b:	83 c4 e0             	add    $0xffffffe0,%esp
584e7e:	8b f9                	mov    %ecx,%edi
584e80:	8b f2                	mov    %edx,%esi
584e82:	8b d8                	mov    %eax,%ebx
584e84:	f6 03 10             	testb  $0x10,(%ebx)
584e87:	74 43                	je     0x584ecc
584e89:	8d 4b 6a             	lea    0x6a(%ebx),%ecx
584e8c:	8b 93 a0 00 00 00    	mov    0xa0(%ebx),%edx
584e92:	66 8b 06             	mov    (%esi),%ax
584e95:	e8 76 ff ff ff       	call   0x584e10
584e9a:	89 44 24 06          	mov    %eax,0x6(%esp)
584e9e:	8d 4b 6a             	lea    0x6a(%ebx),%ecx
584ea1:	8b 93 a4 00 00 00    	mov    0xa4(%ebx),%edx
584ea7:	66 8b 46 02          	mov    0x2(%esi),%ax
584eab:	e8 60 ff ff ff       	call   0x584e10
584eb0:	89 44 24 0a          	mov    %eax,0xa(%esp)
584eb4:	8d 4b 6a             	lea    0x6a(%ebx),%ecx
584eb7:	8b 93 a8 00 00 00    	mov    0xa8(%ebx),%edx
584ebd:	66 8b 46 04          	mov    0x4(%esi),%ax
584ec1:	e8 4a ff ff ff       	call   0x584e10
584ec6:	89 44 24 0e          	mov    %eax,0xe(%esp)
584eca:	eb 26                	jmp    0x584ef2
584ecc:	0f b7 06             	movzwl (%esi),%eax
584ecf:	e8 3c 78 ff ff       	call   0x57c710
584ed4:	89 44 24 06          	mov    %eax,0x6(%esp)
584ed8:	0f b7 46 02          	movzwl 0x2(%esi),%eax
584edc:	e8 2f 78 ff ff       	call   0x57c710
584ee1:	89 44 24 0a          	mov    %eax,0xa(%esp)
584ee5:	0f b7 46 04          	movzwl 0x4(%esi),%eax
584ee9:	e8 22 78 ff ff       	call   0x57c710
584eee:	89 44 24 0e          	mov    %eax,0xe(%esp)
584ef2:	f6 03 01             	testb  $0x1,(%ebx)
584ef5:	74 12                	je     0x584f09
584ef7:	8d 4c 24 06          	lea    0x6(%esp),%ecx
584efb:	8d 53 04             	lea    0x4(%ebx),%edx
584efe:	8d 44 24 12          	lea    0x12(%esp),%eax
584f02:	e8 2d 78 ff ff       	call   0x57c734
584f07:	eb 18                	jmp    0x584f21
584f09:	8b 44 24 06          	mov    0x6(%esp),%eax
584f0d:	89 44 24 12          	mov    %eax,0x12(%esp)
584f11:	8b 44 24 0a          	mov    0xa(%esp),%eax
584f15:	89 44 24 16          	mov    %eax,0x16(%esp)
584f19:	8b 44 24 0e          	mov    0xe(%esp),%eax
584f1d:	89 44 24 1a          	mov    %eax,0x1a(%esp)
584f21:	8b 44 24 12          	mov    0x12(%esp),%eax
584f25:	e8 fe 77 ff ff       	call   0x57c728
584f2a:	e8 35 ff ff ff       	call   0x584e64
584f2f:	66 89 04 24          	mov    %ax,(%esp)
584f33:	8b 44 24 16          	mov    0x16(%esp),%eax
584f37:	e8 ec 77 ff ff       	call   0x57c728
584f3c:	e8 23 ff ff ff       	call   0x584e64
584f41:	66 89 44 24 02       	mov    %ax,0x2(%esp)
584f46:	8b 44 24 1a          	mov    0x1a(%esp),%eax
584f4a:	e8 d9 77 ff ff       	call   0x57c728
584f4f:	e8 10 ff ff ff       	call   0x584e64
584f54:	8b f0                	mov    %eax,%esi
584f56:	66 89 74 24 04       	mov    %si,0x4(%esp)
584f5b:	f6 03 02             	testb  $0x2,(%ebx)
584f5e:	74 39                	je     0x584f99
584f60:	8d 4b 28             	lea    0x28(%ebx),%ecx
584f63:	8b 53 5e             	mov    0x5e(%ebx),%edx
584f66:	66 8b 04 24          	mov    (%esp),%ax
584f6a:	e8 11 79 ff ff       	call   0x57c880
584f6f:	66 89 07             	mov    %ax,(%edi)
584f72:	8d 4b 28             	lea    0x28(%ebx),%ecx
584f75:	8b 53 62             	mov    0x62(%ebx),%edx
584f78:	66 8b 44 24 02       	mov    0x2(%esp),%ax
584f7d:	e8 fe 78 ff ff       	call   0x57c880
584f82:	66 89 47 02          	mov    %ax,0x2(%edi)
584f86:	8d 4b 28             	lea    0x28(%ebx),%ecx
584f89:	8b 53 66             	mov    0x66(%ebx),%edx
584f8c:	8b c6                	mov    %esi,%eax
584f8e:	e8 ed 78 ff ff       	call   0x57c880
584f93:	66 89 47 04          	mov    %ax,0x4(%edi)
584f97:	eb 14                	jmp    0x584fad
584f99:	66 8b 04 24          	mov    (%esp),%ax
584f9d:	66 89 07             	mov    %ax,(%edi)
584fa0:	66 8b 44 24 02       	mov    0x2(%esp),%ax
584fa5:	66 89 47 02          	mov    %ax,0x2(%edi)
584fa9:	66 89 77 04          	mov    %si,0x4(%edi)
584fad:	83 c4 20             	add    $0x20,%esp
584fb0:	5f                   	pop    %edi
584fb1:	5e                   	pop    %esi
584fb2:	5b                   	pop    %ebx
584fb3:	c3                   	ret
584fb4:	53                   	push   %ebx
584fb5:	56                   	push   %esi
584fb6:	57                   	push   %edi
584fb7:	83 c4 e8             	add    $0xffffffe8,%esp
584fba:	8b f9                	mov    %ecx,%edi
584fbc:	8b f2                	mov    %edx,%esi
584fbe:	8b d8                	mov    %eax,%ebx
584fc0:	f6 03 02             	testb  $0x2,(%ebx)
584fc3:	74 39                	je     0x584ffe
584fc5:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fc8:	8b 53 5e             	mov    0x5e(%ebx),%edx
584fcb:	66 8b 06             	mov    (%esi),%ax
584fce:	e8 3d fe ff ff       	call   0x584e10
584fd3:	89 04 24             	mov    %eax,(%esp)
584fd6:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fd9:	8b 53 62             	mov    0x62(%ebx),%edx
584fdc:	66 8b 46 02          	mov    0x2(%esi),%ax
584fe0:	e8 2b fe ff ff       	call   0x584e10
584fe5:	89 44 24 04          	mov    %eax,0x4(%esp)
584fe9:	8d 4b 28             	lea    0x28(%ebx),%ecx
584fec:	8b 53 66             	mov    0x66(%ebx),%edx
584fef:	66 8b 46 04          	mov    0x4(%esi),%ax
584ff3:	e8 18 fe ff ff       	call   0x584e10
584ff8:	89 44 24 08          	mov    %eax,0x8(%esp)
584ffc:	eb 25                	jmp    0x585023
584ffe:	0f b7 06             	movzwl (%esi),%eax
585001:	e8 0a 77 ff ff       	call   0x57c710
585006:	89 04 24             	mov    %eax,(%esp)
585009:	0f b7 46 02          	movzwl 0x2(%esi),%eax
58500d:	e8 fe 76 ff ff       	call   0x57c710
585012:	89 44 24 04          	mov    %eax,0x4(%esp)
585016:	0f b7 46 04          	movzwl 0x4(%esi),%eax
58501a:	e8 f1 76 ff ff       	call   0x57c710
58501f:	89 44 24 08          	mov    %eax,0x8(%esp)
585023:	f6 03 01             	testb  $0x1,(%ebx)
585026:	74 10                	je     0x585038
585028:	8b cc                	mov    %esp,%ecx
58502a:	8d 53 04             	lea    0x4(%ebx),%edx
58502d:	8d 44 24 0c          	lea    0xc(%esp),%eax
585031:	e8 fe 76 ff ff       	call   0x57c734
585036:	eb 17                	jmp    0x58504f
585038:	8b 04 24             	mov    (%esp),%eax
58503b:	89 44 24 0c          	mov    %eax,0xc(%esp)
58503f:	8b 44 24 04          	mov    0x4(%esp),%eax
585043:	89 44 24 10          	mov    %eax,0x10(%esp)
585047:	8b 44 24 08          	mov    0x8(%esp),%eax
58504b:	89 44 24 14          	mov    %eax,0x14(%esp)
58504f:	8b 44 24 0c          	mov    0xc(%esp),%eax
585053:	d1 e8                	shr    $1,%eax
585055:	e8 0a fe ff ff       	call   0x584e64
58505a:	66 89 07             	mov    %ax,(%edi)
58505d:	8b 44 24 10          	mov    0x10(%esp),%eax
585061:	d1 e8                	shr    $1,%eax
585063:	e8 fc fd ff ff       	call   0x584e64
585068:	66 89 47 02          	mov    %ax,0x2(%edi)
58506c:	8b 44 24 14          	mov    0x14(%esp),%eax
585070:	d1 e8                	shr    $1,%eax
585072:	e8 ed fd ff ff       	call   0x584e64
585077:	66 89 47 04          	mov    %ax,0x4(%edi)
58507b:	83 c4 18             	add    $0x18,%esp
58507e:	5f                   	pop    %edi
58507f:	5e                   	pop    %esi
585080:	5b                   	pop    %ebx
585081:	c3                   	ret
585082:	8b c0                	mov    %eax,%eax
585084:	53                   	push   %ebx
585085:	56                   	push   %esi
585086:	57                   	push   %edi
585087:	55                   	push   %ebp
585088:	83 c4 e4             	add    $0xffffffe4,%esp
58508b:	8b e9                	mov    %ecx,%ebp
58508d:	89 14 24             	mov    %edx,(%esp)
585090:	8b f8                	mov    %eax,%edi
585092:	8b 04 24             	mov    (%esp),%eax
585095:	0f b7 00             	movzwl (%eax),%eax
585098:	03 c0                	add    %eax,%eax
58509a:	89 44 24 04          	mov    %eax,0x4(%esp)
58509e:	8b 04 24             	mov    (%esp),%eax
5850a1:	0f b7 40 02          	movzwl 0x2(%eax),%eax
5850a5:	03 c0                	add    %eax,%eax
5850a7:	89 44 24 08          	mov    %eax,0x8(%esp)
5850ab:	8b 04 24             	mov    (%esp),%eax
5850ae:	0f b7 40 04          	movzwl 0x4(%eax),%eax
5850b2:	03 c0                	add    %eax,%eax
5850b4:	89 44 24 0c          	mov    %eax,0xc(%esp)
5850b8:	f6 07 01             	testb  $0x1,(%edi)
5850bb:	74 12                	je     0x5850cf
5850bd:	8d 4c 24 04          	lea    0x4(%esp),%ecx
5850c1:	8d 57 04             	lea    0x4(%edi),%edx
5850c4:	8d 44 24 10          	lea    0x10(%esp),%eax
5850c8:	e8 67 76 ff ff       	call   0x57c734
5850cd:	eb 18                	jmp    0x5850e7
5850cf:	8b 44 24 04          	mov    0x4(%esp),%eax
5850d3:	89 44 24 10          	mov    %eax,0x10(%esp)
5850d7:	8b 44 24 08          	mov    0x8(%esp),%eax
5850db:	89 44 24 14          	mov    %eax,0x14(%esp)
5850df:	8b 44 24 0c          	mov    0xc(%esp),%eax
5850e3:	89 44 24 18          	mov    %eax,0x18(%esp)
5850e7:	f6 07 02             	testb  $0x2,(%edi)
5850ea:	74 2e                	je     0x58511a
5850ec:	33 db                	xor    %ebx,%ebx
5850ee:	8d 74 24 10          	lea    0x10(%esp),%esi
5850f2:	8b 06                	mov    (%esi),%eax
5850f4:	e8 2f 76 ff ff       	call   0x57c728
5850f9:	e8 6e 77 ff ff       	call   0x57c86c
5850fe:	8d 4f 28             	lea    0x28(%edi),%ecx
585101:	8b 54 9f 5e          	mov    0x5e(%edi,%ebx,4),%edx
585105:	e8 76 77 ff ff       	call   0x57c880
58510a:	66 89 44 5d 00       	mov    %ax,0x0(%ebp,%ebx,2)
58510f:	43                   	inc    %ebx
585110:	83 c6 04             	add    $0x4,%esi
585113:	83 fb 03             	cmp    $0x3,%ebx
585116:	75 da                	jne    0x5850f2
585118:	eb 36                	jmp    0x585150
58511a:	8b 44 24 10          	mov    0x10(%esp),%eax
58511e:	e8 05 76 ff ff       	call   0x57c728
585123:	e8 44 77 ff ff       	call   0x57c86c
585128:	66 89 45 00          	mov    %ax,0x0(%ebp)
58512c:	8b 44 24 14          	mov    0x14(%esp),%eax
585130:	e8 f3 75 ff ff       	call   0x57c728
585135:	e8 32 77 ff ff       	call   0x57c86c
58513a:	66 89 45 02          	mov    %ax,0x2(%ebp)
58513e:	8b 44 24 18          	mov    0x18(%esp),%eax
585142:	e8 e1 75 ff ff       	call   0x57c728
585147:	e8 20 77 ff ff       	call   0x57c86c
58514c:	66 89 45 04          	mov    %ax,0x4(%ebp)
585150:	83 c4 1c             	add    $0x1c,%esp
585153:	5d                   	pop    %ebp
585154:	5f                   	pop    %edi
585155:	5e                   	pop    %esi
585156:	5b                   	pop    %ebx
585157:	c3                   	ret
585158:	53                   	push   %ebx
585159:	8b 18                	mov    (%eax),%ebx
58515b:	83 e3 0c             	and    $0xc,%ebx
58515e:	83 fb 0c             	cmp    $0xc,%ebx
585161:	75 07                	jne    0x58516a
585163:	e8 10 fd ff ff       	call   0x584e78
585168:	5b                   	pop    %ebx
585169:	c3                   	ret
58516a:	f6 00 04             	testb  $0x4,(%eax)
58516d:	74 07                	je     0x585176
58516f:	e8 40 fe ff ff       	call   0x584fb4
585174:	5b                   	pop    %ebx
585175:	c3                   	ret
585176:	e8 09 ff ff ff       	call   0x585084
58517b:	5b                   	pop    %ebx
58517c:	c3                   	ret
58517d:	8d 40 00             	lea    0x0(%eax),%eax
585180:	55                   	push   %ebp
585181:	8b ec                	mov    %esp,%ebp
585183:	83 c4 b4             	add    $0xffffffb4,%esp
585186:	53                   	push   %ebx
585187:	56                   	push   %esi
585188:	89 4d fc             	mov    %ecx,-0x4(%ebp)
58518b:	8b d8                	mov    %eax,%ebx
58518d:	89 55 f8             	mov    %edx,-0x8(%ebp)
585190:	8b 45 fc             	mov    -0x4(%ebp),%eax
585193:	89 45 f4             	mov    %eax,-0xc(%ebp)
585196:	8b 45 08             	mov    0x8(%ebp),%eax
585199:	8b f0                	mov    %eax,%esi
58519b:	4e                   	dec    %esi
58519c:	85 f6                	test   %esi,%esi
58519e:	72 37                	jb     0x5851d7
5851a0:	46                   	inc    %esi
5851a1:	8d 55 d4             	lea    -0x2c(%ebp),%edx
5851a4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5851a7:	8b c3                	mov    %ebx,%eax
5851a9:	ff 93 94 00 00 00    	call   *0x94(%ebx)
5851af:	89 45 f8             	mov    %eax,-0x8(%ebp)
5851b2:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
5851b5:	8d 55 d4             	lea    -0x2c(%ebp),%edx
5851b8:	8b 83 c8 00 00 00    	mov    0xc8(%ebx),%eax
5851be:	e8 95 ff ff ff       	call   0x585158
5851c3:	8d 55 b4             	lea    -0x4c(%ebp),%edx
5851c6:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5851c9:	8b c3                	mov    %ebx,%eax