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
5750e5:	f6 40 08 07          	testb  $0x7,0x8(%eax)
5750e9:	75 54                	jne    0x57513f
5750eb:	8b 53 1c             	mov    0x1c(%ebx),%edx
5750ee:	8b 4a 40             	mov    0x40(%edx),%ecx
5750f1:	85 c9                	test   %ecx,%ecx
5750f3:	7c 1c                	jl     0x575111
5750f5:	8b 43 1c             	mov    0x1c(%ebx),%eax
5750f8:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
5750fb:	8b 50 40             	mov    0x40(%eax),%edx
5750fe:	8b 41 3c             	mov    0x3c(%ecx),%eax
575101:	3b d0                	cmp    %eax,%edx
575103:	7f 0c                	jg     0x575111
575105:	8b 53 1c             	mov    0x1c(%ebx),%edx
575108:	83 4a 08 04          	orl    $0x4,0x8(%edx)
57510c:	83 c9 ff             	or     $0xffffffff,%ecx
57510f:	eb 31                	jmp    0x575142
575111:	8b 43 1c             	mov    0x1c(%ebx),%eax
575114:	ff 48 1c             	decl   0x1c(%eax)
575117:	79 11                	jns    0x57512a
575119:	ba 01 00 00 00       	mov    $0x1,%edx
57511e:	8b 43 1c             	mov    0x1c(%ebx),%eax
575121:	e8 02 3c 00 00       	call   0x578d28
575126:	8b c8                	mov    %eax,%ecx
575128:	eb 18                	jmp    0x575142
57512a:	8b 53 1c             	mov    0x1c(%ebx),%edx
57512d:	ff 42 3c             	incl   0x3c(%edx)
575130:	8b 43 1c             	mov    0x1c(%ebx),%eax
575133:	8b 50 18             	mov    0x18(%eax),%edx
575136:	ff 40 18             	incl   0x18(%eax)
575139:	33 c9                	xor    %ecx,%ecx
57513b:	8a 0a                	mov    (%edx),%cl
57513d:	eb 03                	jmp    0x575142
57513f:	83 c9 ff             	or     $0xffffffff,%ecx
575142:	89 4d ec             	mov    %ecx,-0x14(%ebp)
575145:	41                   	inc    %ecx
575146:	75 05                	jne    0x57514d
575148:	83 c8 ff             	or     $0xffffffff,%eax
57514b:	eb 56                	jmp    0x5751a3
57514d:	c1 e6 08             	shl    $0x8,%esi
575150:	8b 55 ec             	mov    -0x14(%ebp),%edx
575153:	81 e2 ff 00 00 00    	and    $0xff,%edx
575159:	0b f2                	or     %edx,%esi
57515b:	4f                   	dec    %edi
57515c:	85 ff                	test   %edi,%edi
57515e:	7f 82                	jg     0x5750e2
575160:	0f b7 53 18          	movzwl 0x18(%ebx),%edx
575164:	33 c9                	xor    %ecx,%ecx
575166:	8b c6                	mov    %esi,%eax
575168:	8a 4b 1a             	mov    0x1a(%ebx),%cl
57516b:	e8 34 06 00 00       	call   0x5757a4
575170:	8b 55 e4             	mov    -0x1c(%ebp),%edx
575173:	89 02                	mov    %eax,(%edx)
575175:	ff 4d f0             	decl   -0x10(%ebp)
575178:	83 45 e4 04          	addl   $0x4,-0x1c(%ebp)
57517c:	8b 45 f0             	mov    -0x10(%ebp),%eax
57517f:	85 c0                	test   %eax,%eax
575181:	0f 87 52 ff ff ff    	ja     0x5750d9
575187:	ff 45 f4             	incl   -0xc(%ebp)
57518a:	8b 4d e0             	mov    -0x20(%ebp),%ecx
57518d:	c1 e1 02             	shl    $0x2,%ecx
575190:	01 4d e8             	add    %ecx,-0x18(%ebp)
575193:	8b 45 f4             	mov    -0xc(%ebp),%eax
575196:	8b 55 0c             	mov    0xc(%ebp),%edx
575199:	3b c2                	cmp    %edx,%eax
57519b:	0f 82 f6 fe ff ff    	jb     0x575097
5751a1:	33 c0                	xor    %eax,%eax
5751a3:	5f                   	pop    %edi
5751a4:	5e                   	pop    %esi
5751a5:	5b                   	pop    %ebx
5751a6:	8b e5                	mov    %ebp,%esp
5751a8:	5d                   	pop    %ebp
5751a9:	c2 10 00             	ret    $0x10
5751ac:	55                   	push   %ebp
5751ad:	8b ec                	mov    %esp,%ebp
5751af:	83 c4 e4             	add    $0xffffffe4,%esp
5751b2:	53                   	push   %ebx
5751b3:	56                   	push   %esi
5751b4:	57                   	push   %edi
5751b5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
5751b8:	8b 4d 08             	mov    0x8(%ebp),%ecx
5751bb:	66 3b 50 10          	cmp    0x10(%eax),%dx
5751bf:	72 08                	jb     0x5751c9
5751c1:	83 c8 ff             	or     $0xffffffff,%eax
5751c4:	e9 c5 01 00 00       	jmp    0x57538e
5751c9:	0f b7 d2             	movzwl %dx,%edx
5751cc:	8b 40 14             	mov    0x14(%eax),%eax
5751cf:	8b 1c 90             	mov    (%eax,%edx,4),%ebx
5751d2:	8b 43 10             	mov    0x10(%ebx),%eax
5751d5:	8b 55 fc             	mov    -0x4(%ebp),%edx
5751d8:	3b c2                	cmp    %edx,%eax
5751da:	76 25                	jbe    0x575201
5751dc:	8b 55 14             	mov    0x14(%ebp),%edx
5751df:	8b 73 14             	mov    0x14(%ebx),%esi
5751e2:	3b d6                	cmp    %esi,%edx
5751e4:	73 1b                	jae    0x575201
5751e6:	8b 55 fc             	mov    -0x4(%ebp),%edx
5751e9:	8b 75 10             	mov    0x10(%ebp),%esi
5751ec:	03 d6                	add    %esi,%edx
5751ee:	3b c2                	cmp    %edx,%eax
5751f0:	72 0f                	jb     0x575201
5751f2:	8b 45 14             	mov    0x14(%ebp),%eax
5751f5:	8b 55 0c             	mov    0xc(%ebp),%edx
5751f8:	03 c2                	add    %edx,%eax
5751fa:	8b 53 14             	mov    0x14(%ebx),%edx
5751fd:	3b c2                	cmp    %edx,%eax
5751ff:	76 08                	jbe    0x575209
575201:	83 c8 ff             	or     $0xffffffff,%eax
575204:	e9 85 01 00 00       	jmp    0x57538e
575209:	8b 41 14             	mov    0x14(%ecx),%eax
57520c:	8b 55 0c             	mov    0xc(%ebp),%edx
57520f:	3b c2                	cmp    %edx,%eax
575211:	75 0a                	jne    0x57521d
575213:	8b 51 18             	mov    0x18(%ecx),%edx
575216:	8b 75 10             	mov    0x10(%ebp),%esi
575219:	3b d6                	cmp    %esi,%edx
57521b:	74 08                	je     0x575225
57521d:	83 c8 ff             	or     $0xffffffff,%eax
575220:	e9 69 01 00 00       	jmp    0x57538e
575225:	8b 51 1c             	mov    0x1c(%ecx),%edx
575228:	48                   	dec    %eax
575229:	8b 12                	mov    (%edx),%edx
57522b:	89 55 ec             	mov    %edx,-0x14(%ebp)
57522e:	7e 16                	jle    0x575246
575230:	8b 51 1c             	mov    0x1c(%ecx),%edx
575233:	8b 42 04             	mov    0x4(%edx),%eax
575236:	8b 0a                	mov    (%edx),%ecx
575238:	2b c1                	sub    %ecx,%eax
57523a:	85 c0                	test   %eax,%eax
57523c:	79 03                	jns    0x575241
57523e:	83 c0 03             	add    $0x3,%eax
575241:	c1 f8 02             	sar    $0x2,%eax
575244:	eb 02                	jmp    0x575248
575246:	33 c0                	xor    %eax,%eax
575248:	89 45 e8             	mov    %eax,-0x18(%ebp)
57524b:	33 d2                	xor    %edx,%edx
57524d:	89 55 f8             	mov    %edx,-0x8(%ebp)
575250:	8b 4d f8             	mov    -0x8(%ebp),%ecx
575253:	8b 45 0c             	mov    0xc(%ebp),%eax
575256:	3b c8                	cmp    %eax,%ecx
575258:	0f 83 2e 01 00 00    	jae    0x57538c
57525e:	8b 55 ec             	mov    -0x14(%ebp),%edx
575261:	89 55 f0             	mov    %edx,-0x10(%ebp)
575264:	8b 55 14             	mov    0x14(%ebp),%edx
575267:	8b 45 f8             	mov    -0x8(%ebp),%eax
57526a:	03 d0                	add    %eax,%edx
57526c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
57526f:	0f af 53 10          	imul   0x10(%ebx),%edx
575273:	03 d1                	add    %ecx,%edx
575275:	8b 43 1c             	mov    0x1c(%ebx),%eax
575278:	0f af 53 20          	imul   0x20(%ebx),%edx
57527c:	33 c9                	xor    %ecx,%ecx
57527e:	e8 e5 38 00 00       	call   0x578b68
575283:	85 c0                	test   %eax,%eax
575285:	7d 08                	jge    0x57528f
575287:	83 c8 ff             	or     $0xffffffff,%eax
57528a:	e9 ff 00 00 00       	jmp    0x57538e
57528f:	8b 55 10             	mov    0x10(%ebp),%edx
575292:	89 55 f4             	mov    %edx,-0xc(%ebp)
575295:	8b 4d f4             	mov    -0xc(%ebp),%ecx
575298:	85 c9                	test   %ecx,%ecx
57529a:	0f 86 d2 00 00 00    	jbe    0x575372
5752a0:	0f b7 53 18          	movzwl 0x18(%ebx),%edx
5752a4:	8b 45 f0             	mov    -0x10(%ebp),%eax
5752a7:	33 c9                	xor    %ecx,%ecx
5752a9:	8a 4b 1a             	mov    0x1a(%ebx),%cl
5752ac:	8b 00                	mov    (%eax),%eax
5752ae:	e8 c5 04 00 00       	call   0x575778
5752b3:	8b f8                	mov    %eax,%edi
5752b5:	8b 43 20             	mov    0x20(%ebx),%eax
5752b8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
5752bb:	8b 55 e4             	mov    -0x1c(%ebp),%edx
5752be:	85 d2                	test   %edx,%edx
5752c0:	0f 8e 9a 00 00 00    	jle    0x575360
5752c6:	8b 4b 20             	mov    0x20(%ebx),%ecx
5752c9:	8b f7                	mov    %edi,%esi