574d88:	33 c0                	xor    %eax,%eax
574d8a:	5e                   	pop    %esi
574d8b:	5b                   	pop    %ebx
574d8c:	c3                   	ret
574d8d:	33 c9                	xor    %ecx,%ecx
574d8f:	33 d2                	xor    %edx,%edx
574d91:	8b 43 1c             	mov    0x1c(%ebx),%eax
574d94:	e8 cf 3d 00 00       	call   0x578b68
574d99:	85 c0                	test   %eax,%eax
574d9b:	74 05                	je     0x574da2
574d9d:	33 c0                	xor    %eax,%eax
574d9f:	5e                   	pop    %esi
574da0:	5b                   	pop    %ebx
574da1:	c3                   	ret
574da2:	8b c3                	mov    %ebx,%eax
574da4:	5e                   	pop    %esi
574da5:	5b                   	pop    %ebx
574da6:	c3                   	ret
574da7:	90                   	nop
574da8:	53                   	push   %ebx
574da9:	56                   	push   %esi
574daa:	8b f0                	mov    %eax,%esi
574dac:	8b 46 14             	mov    0x14(%esi),%eax
574daf:	85 c0                	test   %eax,%eax
574db1:	74 28                	je     0x574ddb
574db3:	33 db                	xor    %ebx,%ebx
574db5:	eb 14                	jmp    0x574dcb
574db7:	8b 46 14             	mov    0x14(%esi),%eax
574dba:	8b 04 98             	mov    (%eax,%ebx,4),%eax
574dbd:	e8 66 01 00 00       	call   0x574f28
574dc2:	8b 56 14             	mov    0x14(%esi),%edx
574dc5:	33 c9                	xor    %ecx,%ecx
574dc7:	89 0c 9a             	mov    %ecx,(%edx,%ebx,4)
574dca:	43                   	inc    %ebx
574dcb:	0f b7 46 10          	movzwl 0x10(%esi),%eax
574dcf:	3b d8                	cmp    %eax,%ebx
574dd1:	7c e4                	jl     0x574db7
574dd3:	8b 46 14             	mov    0x14(%esi),%eax
574dd6:	e8 a9 35 00 00       	call   0x578384
574ddb:	8b c6                	mov    %esi,%eax
574ddd:	e8 a2 35 00 00       	call   0x578384
574de2:	5e                   	pop    %esi
574de3:	5b                   	pop    %ebx
574de4:	c3                   	ret
574de5:	90                   	nop
574de6:	90                   	nop
574de7:	90                   	nop
574de8:	55                   	push   %ebp
574de9:	8b ec                	mov    %esp,%ebp
574deb:	83 c4 f8             	add    $0xfffffff8,%esp
574dee:	53                   	push   %ebx
574def:	56                   	push   %esi
574df0:	57                   	push   %edi
574df1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
574df4:	89 55 fc             	mov    %edx,-0x4(%ebp)
574df7:	8b f8                	mov    %eax,%edi
574df9:	8b 75 10             	mov    0x10(%ebp),%esi
574dfc:	b8 28 00 00 00       	mov    $0x28,%eax
574e01:	e8 76 35 00 00       	call   0x57837c
574e06:	8b d8                	mov    %eax,%ebx
574e08:	85 c0                	test   %eax,%eax
574e0a:	75 07                	jne    0x574e13
574e0c:	33 c0                	xor    %eax,%eax
574e0e:	e9 0c 01 00 00       	jmp    0x574f1f
574e13:	89 3b                	mov    %edi,(%ebx)
574e15:	8b 55 fc             	mov    -0x4(%ebp),%edx
574e18:	89 53 04             	mov    %edx,0x4(%ebx)
574e1b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
574e1e:	89 4b 08             	mov    %ecx,0x8(%ebx)
574e21:	8b 45 1c             	mov    0x1c(%ebp),%eax
574e24:	89 43 0c             	mov    %eax,0xc(%ebx)
574e27:	8b 55 18             	mov    0x18(%ebp),%edx
574e2a:	89 53 10             	mov    %edx,0x10(%ebx)
574e2d:	33 d2                	xor    %edx,%edx
574e2f:	8b 4d 14             	mov    0x14(%ebp),%ecx
574e32:	89 4b 14             	mov    %ecx,0x14(%ebx)
574e35:	66 89 73 18          	mov    %si,0x18(%ebx)
574e39:	8a 45 0c             	mov    0xc(%ebp),%al
574e3c:	88 43 1a             	mov    %al,0x1a(%ebx)
574e3f:	89 53 1c             	mov    %edx,0x1c(%ebx)
574e42:	0f b7 c6             	movzwl %si,%eax
574e45:	83 c0 07             	add    $0x7,%eax
574e48:	85 c0                	test   %eax,%eax
574e4a:	79 03                	jns    0x574e4f
574e4c:	83 c0 07             	add    $0x7,%eax
574e4f:	c1 f8 03             	sar    $0x3,%eax
574e52:	89 43 20             	mov    %eax,0x20(%ebx)
574e55:	8b 73 10             	mov    0x10(%ebx),%esi
574e58:	0f af 73 14          	imul   0x14(%ebx),%esi
574e5c:	0f af f0             	imul   %eax,%esi
574e5f:	8b 45 08             	mov    0x8(%ebp),%eax
574e62:	85 c0                	test   %eax,%eax
574e64:	74 0d                	je     0x574e73
574e66:	8b d6                	mov    %esi,%edx
574e68:	33 c0                	xor    %eax,%eax
574e6a:	e8 ad 35 00 00       	call   0x57841c
574e6f:	8b f8                	mov    %eax,%edi
574e71:	eb 07                	jmp    0x574e7a
574e73:	e8 90 37 00 00       	call   0x578608
574e78:	8b f8                	mov    %eax,%edi
574e7a:	89 7b 1c             	mov    %edi,0x1c(%ebx)
574e7d:	85 ff                	test   %edi,%edi
574e7f:	75 0e                	jne    0x574e8f
574e81:	8b c3                	mov    %ebx,%eax
574e83:	e8 a0 00 00 00       	call   0x574f28
574e88:	33 c0                	xor    %eax,%eax
574e8a:	e9 90 00 00 00       	jmp    0x574f1f
574e8f:	8d 56 ff             	lea    -0x1(%esi),%edx
574e92:	33 c9                	xor    %ecx,%ecx
574e94:	8b 43 1c             	mov    0x1c(%ebx),%eax
574e97:	e8 cc 3c 00 00       	call   0x578b68
574e9c:	85 c0                	test   %eax,%eax
574e9e:	7c 72                	jl     0x574f12
574ea0:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ea3:	f6 42 08 07          	testb  $0x7,0x8(%edx)
574ea7:	75 53                	jne    0x574efc
574ea9:	8b 73 1c             	mov    0x1c(%ebx),%esi
574eac:	8b 7e 40             	mov    0x40(%esi),%edi
574eaf:	85 ff                	test   %edi,%edi
574eb1:	7c 13                	jl     0x574ec6
574eb3:	8b 46 3c             	mov    0x3c(%esi),%eax
574eb6:	3b f8                	cmp    %eax,%edi
574eb8:	7f 0c                	jg     0x574ec6
574eba:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ebd:	83 4a 08 04          	orl    $0x4,0x8(%edx)
574ec1:	83 c9 ff             	or     $0xffffffff,%ecx
574ec4:	eb 39                	jmp    0x574eff
574ec6:	8b 43 1c             	mov    0x1c(%ebx),%eax
574ec9:	83 48 04 20          	orl    $0x20,0x4(%eax)
574ecd:	8b 53 1c             	mov    0x1c(%ebx),%edx
574ed0:	ff 4a 1c             	decl   0x1c(%edx)
574ed3:	79 0e                	jns    0x574ee3
574ed5:	33 d2                	xor    %edx,%edx
574ed7:	8b 43 1c             	mov    0x1c(%ebx),%eax
574eda:	e8 39 3f 00 00       	call   0x578e18
574edf:	8b c8                	mov    %eax,%ecx
574ee1:	eb 1c                	jmp    0x574eff
574ee3:	8b 43 1c             	mov    0x1c(%ebx),%eax
574ee6:	ff 40 3c             	incl   0x3c(%eax)
574ee9:	8b 53 1c             	mov    0x1c(%ebx),%edx
574eec:	8b 4a 18             	mov    0x18(%edx),%ecx
574eef:	ff 42 18             	incl   0x18(%edx)
574ef2:	33 c0                	xor    %eax,%eax
574ef4:	88 01                	mov    %al,(%ecx)
574ef6:	33 c9                	xor    %ecx,%ecx
574ef8:	8a c8                	mov    %al,%cl
574efa:	eb 03                	jmp    0x574eff
574efc:	83 c9 ff             	or     $0xffffffff,%ecx
574eff:	41                   	inc    %ecx
574f00:	74 10                	je     0x574f12
574f02:	33 c9                	xor    %ecx,%ecx
574f04:	33 d2                	xor    %edx,%edx
574f06:	8b 43 1c             	mov    0x1c(%ebx),%eax
574f09:	e8 5a 3c 00 00       	call   0x578b68
574f0e:	85 c0                	test   %eax,%eax
574f10:	7d 0b                	jge    0x574f1d
574f12:	8b c3                	mov    %ebx,%eax
574f14:	e8 0f 00 00 00       	call   0x574f28
574f19:	33 c0                	xor    %eax,%eax
574f1b:	eb 02                	jmp    0x574f1f
574f1d:	8b c3                	mov    %ebx,%eax
574f1f:	5f                   	pop    %edi
574f20:	5e                   	pop    %esi
574f21:	5b                   	pop    %ebx
574f22:	59                   	pop    %ecx
574f23:	59                   	pop    %ecx
574f24:	5d                   	pop    %ebp
574f25:	c2 18 00             	ret    $0x18
574f28:	53                   	push   %ebx
574f29:	8b d8                	mov    %eax,%ebx
574f2b:	8b 43 1c             	mov    0x1c(%ebx),%eax
574f2e:	85 c0                	test   %eax,%eax
574f30:	74 05                	je     0x574f37
574f32:	e8 05 38 00 00       	call   0x57873c
574f37:	8b c3                	mov    %ebx,%eax
574f39:	e8 46 34 00 00       	call   0x578384
574f3e:	5b                   	pop    %ebx
574f3f:	c3                   	ret
574f40:	53                   	push   %ebx
574f41:	56                   	push   %esi
574f42:	57                   	push   %edi
574f43:	55                   	push   %ebp
574f44:	8b e9                	mov    %ecx,%ebp
574f46:	8b f2                	mov    %edx,%esi
574f48:	8b f8                	mov    %eax,%edi
574f4a:	85 f6                	test   %esi,%esi
574f4c:	7d 11                	jge    0x574f5f
574f4e:	8b c7                	mov    %edi,%eax
574f50:	e8 b3 05 00 00       	call   0x575508
574f55:	8b f0                	mov    %eax,%esi
574f57:	85 c0                	test   %eax,%eax
574f59:	7d 04                	jge    0x574f5f
574f5b:	33 c0                	xor    %eax,%eax
574f5d:	eb 23                	jmp    0x574f82
574f5f:	8b c6                	mov    %esi,%eax
574f61:	e8 a6 07 00 00       	call   0x57570c
574f66:	8b d8                	mov    %eax,%ebx
574f68:	85 c0                	test   %eax,%eax
574f6a:	75 04                	jne    0x574f70
574f6c:	33 c0                	xor    %eax,%eax
574f6e:	eb 12                	jmp    0x574f82
574f70:	8b 53 10             	mov    0x10(%ebx),%edx
574f73:	85 d2                	test   %edx,%edx
574f75:	74 09                	je     0x574f80
574f77:	8b d5                	mov    %ebp,%edx
574f79:	8b c7                	mov    %edi,%eax
574f7b:	ff 53 10             	call   *0x10(%ebx)
574f7e:	eb 02                	jmp    0x574f82
574f80:	33 c0                	xor    %eax,%eax
574f82:	5d                   	pop    %ebp
574f83:	5f                   	pop    %edi
574f84:	5e                   	pop    %esi
574f85:	5b                   	pop    %ebx
574f86:	c3                   	ret
574f87:	90                   	nop
574f88:	55                   	push   %ebp
574f89:	8b ec                	mov    %esp,%ebp
574f8b:	51                   	push   %ecx
574f8c:	53                   	push   %ebx
574f8d:	56                   	push   %esi
574f8e:	57                   	push   %edi
574f8f:	8b f9                	mov    %ecx,%edi
574f91:	89 55 fc             	mov    %edx,-0x4(%ebp)
574f94:	8b f0                	mov    %eax,%esi
574f96:	8b c7                	mov    %edi,%eax
574f98:	e8 6f 07 00 00       	call   0x57570c
574f9d:	8b d8                	mov    %eax,%ebx
574f9f:	85 c0                	test   %eax,%eax
574fa1:	75 05                	jne    0x574fa8
574fa3:	83 c8 ff             	or     $0xffffffff,%eax
574fa6:	eb 17                	jmp    0x574fbf
574fa8:	8b 53 14             	mov    0x14(%ebx),%edx
574fab:	85 d2                	test   %edx,%edx
574fad:	74 0d                	je     0x574fbc
574faf:	8b 4d 08             	mov    0x8(%ebp),%ecx
574fb2:	8b 55 fc             	mov    -0x4(%ebp),%edx
574fb5:	8b c6                	mov    %esi,%eax
574fb7:	ff 53 14             	call   *0x14(%ebx)
574fba:	eb 03                	jmp    0x574fbf
574fbc:	83 c8 ff             	or     $0xffffffff,%eax
574fbf:	5f                   	pop    %edi
574fc0:	5e                   	pop    %esi
574fc1:	5b                   	pop    %ebx
574fc2:	59                   	pop    %ecx
574fc3:	5d                   	pop    %ebp
574fc4:	c2 04 00             	ret    $0x4
574fc7:	90                   	nop
574fc8:	55                   	push   %ebp
574fc9:	8b ec                	mov    %esp,%ebp
574fcb:	83 c4 e0             	add    $0xffffffe0,%esp
574fce:	53                   	push   %ebx
574fcf:	56                   	push   %esi
574fd0:	57                   	push   %edi
574fd1:	89 4d f8             	mov    %ecx,-0x8(%ebp)
574fd4:	66 89 55 fe          	mov    %dx,-0x2(%ebp)
574fd8:	66 8b 50 10          	mov    0x10(%eax),%dx
574fdc:	8b 75 08             	mov    0x8(%ebp),%esi
574fdf:	66 3b 55 fe          	cmp    -0x2(%ebp),%dx
574fe3:	77 08                	ja     0x574fed
574fe5:	83 c8 ff             	or     $0xffffffff,%eax
574fe8:	e9 b6 01 00 00       	jmp    0x5751a3
574fed:	0f b7 4d fe          	movzwl -0x2(%ebp),%ecx
574ff1:	8b 40 14             	mov    0x14(%eax),%eax
574ff4:	8b 1c 88             	mov    (%eax,%ecx,4),%ebx
574ff7:	8b 43 10             	mov    0x10(%ebx),%eax
574ffa:	8b 55 f8             	mov    -0x8(%ebp),%edx
574ffd:	3b c2                	cmp    %edx,%eax
574fff:	76 25                	jbe    0x575026
575001:	8b 4d 14             	mov    0x14(%ebp),%ecx
575004:	8b 53 14             	mov    0x14(%ebx),%edx
575007:	3b ca                	cmp    %edx,%ecx
575009:	73 1b                	jae    0x575026
57500b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
57500e:	8b 55 10             	mov    0x10(%ebp),%edx
575011:	03 ca                	add    %edx,%ecx
575013:	3b c1                	cmp    %ecx,%eax
575015:	72 0f                	jb     0x575026
575017:	8b 45 14             	mov    0x14(%ebp),%eax
57501a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
57501d:	03 c1                	add    %ecx,%eax
57501f:	8b 53 14             	mov    0x14(%ebx),%edx
575022:	3b c2                	cmp    %edx,%eax
575024:	76 08                	jbe    0x57502e
575026:	83 c8 ff             	or     $0xffffffff,%eax
575029:	e9 75 01 00 00       	jmp    0x5751a3
57502e:	8b 4e 14             	mov    0x14(%esi),%ecx
575031:	8b 45 0c             	mov    0xc(%ebp),%eax
575034:	3b c8                	cmp    %eax,%ecx
575036:	75 0a                	jne    0x575042
575038:	8b 56 18             	mov    0x18(%esi),%edx
57503b:	8b 4d 10             	mov    0x10(%ebp),%ecx
57503e:	3b d1                	cmp    %ecx,%edx
575040:	74 19                	je     0x57505b
575042:	8b 4d 10             	mov    0x10(%ebp),%ecx
575045:	8b 55 0c             	mov    0xc(%ebp),%edx
575048:	8b c6                	mov    %esi,%eax
57504a:	e8 89 31 00 00       	call   0x5781d8
57504f:	85 c0                	test   %eax,%eax
575051:	74 08                	je     0x57505b
575053:	83 c8 ff             	or     $0xffffffff,%eax
575056:	e9 48 01 00 00       	jmp    0x5751a3
57505b:	8b 56 1c             	mov    0x1c(%esi),%edx
57505e:	8b 0a                	mov    (%edx),%ecx
575060:	89 4d e8             	mov    %ecx,-0x18(%ebp)
575063:	8b 56 14             	mov    0x14(%esi),%edx
575066:	4a                   	dec    %edx
575067:	7e 16                	jle    0x57507f
575069:	8b 46 1c             	mov    0x1c(%esi),%eax
57506c:	8b 48 04             	mov    0x4(%eax),%ecx
57506f:	8b 00                	mov    (%eax),%eax
575071:	2b c8                	sub    %eax,%ecx
575073:	85 c9                	test   %ecx,%ecx
575075:	79 03                	jns    0x57507a
575077:	83 c1 03             	add    $0x3,%ecx
57507a:	c1 f9 02             	sar    $0x2,%ecx
57507d:	eb 02                	jmp    0x575081
57507f:	33 c9                	xor    %ecx,%ecx
575081:	89 4d e0             	mov    %ecx,-0x20(%ebp)
575084:	33 d2                	xor    %edx,%edx
575086:	89 55 f4             	mov    %edx,-0xc(%ebp)
575089:	8b 45 f4             	mov    -0xc(%ebp),%eax
57508c:	8b 55 0c             	mov    0xc(%ebp),%edx
57508f:	3b c2                	cmp    %edx,%eax
575091:	0f 83 0a 01 00 00    	jae    0x5751a1
575097:	8b 4d e8             	mov    -0x18(%ebp),%ecx
57509a:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
57509d:	8b 55 14             	mov    0x14(%ebp),%edx
5750a0:	8b 45 f4             	mov    -0xc(%ebp),%eax
5750a3:	03 d0                	add    %eax,%edx
5750a5:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5750a8:	0f af 53 10          	imul   0x10(%ebx),%edx
5750ac:	03 d1                	add    %ecx,%edx
5750ae:	8b 43 1c             	mov    0x1c(%ebx),%eax
5750b1:	0f af 53 20          	imul   0x20(%ebx),%edx
5750b5:	33 c9                	xor    %ecx,%ecx
5750b7:	e8 ac 3a 00 00       	call   0x578b68
5750bc:	85 c0                	test   %eax,%eax
5750be:	7d 08                	jge    0x5750c8
5750c0:	83 c8 ff             	or     $0xffffffff,%eax
5750c3:	e9 db 00 00 00       	jmp    0x5751a3
5750c8:	8b 55 10             	mov    0x10(%ebp),%edx
5750cb:	89 55 f0             	mov    %edx,-0x10(%ebp)
5750ce:	8b 4d f0             	mov    -0x10(%ebp),%ecx
5750d1:	85 c9                	test   %ecx,%ecx
5750d3:	0f 86 ae 00 00 00    	jbe    0x575187
5750d9:	33 f6                	xor    %esi,%esi
5750db:	8b 7b 20             	mov    0x20(%ebx),%edi
5750de:	85 ff                	test   %edi,%edi
5750e0:	7e 7e                	jle    0x575160
5750e2:	8b 43 1c             	mov    0x1c(%ebx),%eax