505f2a:	8b 75 f4             	mov    -0xc(%ebp),%esi
505f2d:	83 c3 10             	add    $0x10,%ebx
505f30:	c1 fb 05             	sar    $0x5,%ebx
505f33:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
505f39:	83 c0 20             	add    $0x20,%eax
505f3c:	8a 1c 1e             	mov    (%esi,%ebx,1),%bl
505f3f:	88 5d f3             	mov    %bl,-0xd(%ebp)
505f42:	8a 5d f3             	mov    -0xd(%ebp),%bl
505f45:	88 19                	mov    %bl,(%ecx)
505f47:	8a 5d f3             	mov    -0xd(%ebp),%bl
505f4a:	88 59 01             	mov    %bl,0x1(%ecx)
505f4d:	eb 74                	jmp    0x505fc3
505f4f:	8b 18                	mov    (%eax),%ebx
505f51:	c1 e3 0f             	shl    $0xf,%ebx
505f54:	89 5d fc             	mov    %ebx,-0x4(%ebp)
505f57:	69 58 14 37 1b 00 00 	imul   $0x1b37,0x14(%eax),%ebx
505f5e:	69 70 1c ee e8 ff ff 	imul   $0xffffe8ee,0x1c(%eax),%esi
505f65:	03 f3                	add    %ebx,%esi
505f67:	69 58 0c 46 d7 ff ff 	imul   $0xffffd746,0xc(%eax),%ebx
505f6e:	03 f3                	add    %ebx,%esi
505f70:	8b 58 04             	mov    0x4(%eax),%ebx
505f73:	8b fb                	mov    %ebx,%edi
505f75:	c1 e3 03             	shl    $0x3,%ebx
505f78:	2b df                	sub    %edi,%ebx
505f7a:	8d 1c 9f             	lea    (%edi,%ebx,4),%ebx
505f7d:	c1 e3 08             	shl    $0x8,%ebx
505f80:	2b df                	sub    %edi,%ebx
505f82:	8b 7d f4             	mov    -0xc(%ebp),%edi
505f85:	c1 e3 02             	shl    $0x2,%ebx
505f88:	03 f3                	add    %ebx,%esi
505f8a:	8b 5d fc             	mov    -0x4(%ebp),%ebx
505f8d:	03 de                	add    %esi,%ebx
505f8f:	81 c3 00 00 08 00    	add    $0x80000,%ebx
505f95:	c1 fb 14             	sar    $0x14,%ebx
505f98:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
505f9e:	8a 1c 1f             	mov    (%edi,%ebx,1),%bl
505fa1:	88 19                	mov    %bl,(%ecx)
505fa3:	8b 5d fc             	mov    -0x4(%ebp),%ebx
505fa6:	2b de                	sub    %esi,%ebx
505fa8:	8b 75 f4             	mov    -0xc(%ebp),%esi
505fab:	81 c3 00 00 08 00    	add    $0x80000,%ebx
505fb1:	c1 fb 14             	sar    $0x14,%ebx
505fb4:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
505fba:	83 c0 20             	add    $0x20,%eax
505fbd:	8a 1c 1e             	mov    (%esi,%ebx,1),%bl
505fc0:	88 59 01             	mov    %bl,0x1(%ecx)
505fc3:	42                   	inc    %edx
505fc4:	83 45 ec 04          	addl   $0x4,-0x14(%ebp)
505fc8:	83 fa 02             	cmp    $0x2,%edx
505fcb:	0f 8c 41 ff ff ff    	jl     0x505f12
505fd1:	5f                   	pop    %edi
505fd2:	5e                   	pop    %esi
505fd3:	5b                   	pop    %ebx
505fd4:	8b e5                	mov    %ebp,%esp
505fd6:	5d                   	pop    %ebp
505fd7:	c2 08 00             	ret    $0x8
505fda:	90                   	nop
505fdb:	90                   	nop
505fdc:	55                   	push   %ebp
505fdd:	8b ec                	mov    %esp,%ebp
505fdf:	56                   	push   %esi
505fe0:	8b b0 3c 01 00 00    	mov    0x13c(%eax),%esi
505fe6:	8b 42 50             	mov    0x50(%edx),%eax
505fe9:	0f bf 11             	movswl (%ecx),%edx
505fec:	0f af 10             	imul   (%eax),%edx
505fef:	8b c2                	mov    %edx,%eax
505ff1:	81 c6 80 00 00 00    	add    $0x80,%esi
505ff7:	83 c0 04             	add    $0x4,%eax
505ffa:	8b 4d 0c             	mov    0xc(%ebp),%ecx
505ffd:	c1 f8 03             	sar    $0x3,%eax
506000:	25 ff 03 00 00       	and    $0x3ff,%eax
506005:	8a 14 06             	mov    (%esi,%eax,1),%dl
506008:	8b 01                	mov    (%ecx),%eax
50600a:	8b 4d 08             	mov    0x8(%ebp),%ecx
50600d:	88 14 08             	mov    %dl,(%eax,%ecx,1)
506010:	5e                   	pop    %esi
506011:	5d                   	pop    %ebp
506012:	c2 08 00             	ret    $0x8
506015:	8d 40 00             	lea    0x0(%eax),%eax
506018:	53                   	push   %ebx
506019:	8b d8                	mov    %eax,%ebx
50601b:	8b 03                	mov    (%ebx),%eax
50601d:	c7 40 14 65 00 00 00 	movl   $0x65,0x14(%eax)
506024:	ba 01 00 00 00       	mov    $0x1,%edx
506029:	8b c3                	mov    %ebx,%eax
50602b:	8b 08                	mov    (%eax),%ecx
50602d:	ff 51 04             	call   *0x4(%ecx)
506030:	8b 93 b0 01 00 00    	mov    0x1b0(%ebx),%edx
506036:	83 7a 50 00          	cmpl   $0x0,0x50(%edx)
50603a:	74 0f                	je     0x50604b
50603c:	8b 03                	mov    (%ebx),%eax
50603e:	c7 40 14 3c 00 00 00 	movl   $0x3c,0x14(%eax)
506045:	8b c3                	mov    %ebx,%eax
506047:	8b 10                	mov    (%eax),%edx
506049:	ff 12                	call   *(%edx)
50604b:	33 d2                	xor    %edx,%edx
50604d:	8d 83 e0 00 00 00    	lea    0xe0(%ebx),%eax
506053:	c6 00 00             	movb   $0x0,(%eax)
506056:	c6 40 10 01          	movb   $0x1,0x10(%eax)
50605a:	c6 40 20 05          	movb   $0x5,0x20(%eax)
50605e:	42                   	inc    %edx
50605f:	40                   	inc    %eax
506060:	83 fa 10             	cmp    $0x10,%edx
506063:	7c ee                	jl     0x506053
506065:	33 c9                	xor    %ecx,%ecx
506067:	33 c0                	xor    %eax,%eax
506069:	89 8b 10 01 00 00    	mov    %ecx,0x110(%ebx)
50606f:	89 43 24             	mov    %eax,0x24(%ebx)
506072:	33 d2                	xor    %edx,%edx
506074:	33 c9                	xor    %ecx,%ecx
506076:	89 93 28 01 00 00    	mov    %edx,0x128(%ebx)
50607c:	89 8b 14 01 00 00    	mov    %ecx,0x114(%ebx)
506082:	c6 83 18 01 00 00 00 	movb   $0x0,0x118(%ebx)
506089:	66 c7 83 1a 01 00 00 	movw   $0x1,0x11a(%ebx)
506090:	01 00
506092:	66 c7 83 1c 01 00 00 	movw   $0x1,0x11c(%ebx)
506099:	01 00
50609b:	33 c0                	xor    %eax,%eax
50609d:	89 83 20 01 00 00    	mov    %eax,0x120(%ebx)
5060a3:	b8 01 00 00 00       	mov    $0x1,%eax
5060a8:	c6 83 24 01 00 00 00 	movb   $0x0,0x124(%ebx)
5060af:	8b 93 b0 01 00 00    	mov    0x1b0(%ebx),%edx
5060b5:	c7 42 50 01 00 00 00 	movl   $0x1,0x50(%edx)
5060bc:	5b                   	pop    %ebx
5060bd:	c3                   	ret
5060be:	90                   	nop
5060bf:	90                   	nop
5060c0:	53                   	push   %ebx
5060c1:	56                   	push   %esi
5060c2:	57                   	push   %edi
5060c3:	55                   	push   %ebp
5060c4:	83 c4 f0             	add    $0xfffffff0,%esp
5060c7:	8b d8                	mov    %eax,%ebx
5060c9:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5060cd:	89 14 24             	mov    %edx,(%esp)
5060d0:	8b 43 14             	mov    0x14(%ebx),%eax
5060d3:	89 44 24 0c          	mov    %eax,0xc(%esp)
5060d7:	8b 44 24 0c          	mov    0xc(%esp),%eax
5060db:	8b 54 24 0c          	mov    0xc(%esp),%edx
5060df:	8b 78 04             	mov    0x4(%eax),%edi
5060e2:	8b 32                	mov    (%edx),%esi
5060e4:	8b 04 24             	mov    (%esp),%eax
5060e7:	85 ff                	test   %edi,%edi
5060e9:	89 83 d8 00 00 00    	mov    %eax,0xd8(%ebx)
5060ef:	8b 54 24 04          	mov    0x4(%esp),%edx
5060f3:	89 93 dc 00 00 00    	mov    %edx,0xdc(%ebx)
5060f9:	75 21                	jne    0x50611c
5060fb:	8b 74 24 0c          	mov    0xc(%esp),%esi
5060ff:	8b c3                	mov    %ebx,%eax
506101:	ff 56 0c             	call   *0xc(%esi)
506104:	85 c0                	test   %eax,%eax
506106:	75 07                	jne    0x50610f
506108:	33 c0                	xor    %eax,%eax
50610a:	e9 26 03 00 00       	jmp    0x506435
50610f:	8b 54 24 0c          	mov    0xc(%esp),%edx
506113:	8b 44 24 0c          	mov    0xc(%esp),%eax
506117:	8b 78 04             	mov    0x4(%eax),%edi
50611a:	8b 32                	mov    (%edx),%esi
50611c:	4f                   	dec    %edi
50611d:	0f b6 2e             	movzbl (%esi),%ebp
506120:	c1 e5 08             	shl    $0x8,%ebp
506123:	46                   	inc    %esi
506124:	85 ff                	test   %edi,%edi
506126:	75 21                	jne    0x506149
506128:	8b 74 24 0c          	mov    0xc(%esp),%esi
50612c:	8b c3                	mov    %ebx,%eax
50612e:	ff 56 0c             	call   *0xc(%esi)
506131:	85 c0                	test   %eax,%eax
506133:	75 07                	jne    0x50613c
506135:	33 c0                	xor    %eax,%eax
506137:	e9 f9 02 00 00       	jmp    0x506435
50613c:	8b 54 24 0c          	mov    0xc(%esp),%edx
506140:	8b 44 24 0c          	mov    0xc(%esp),%eax
506144:	8b 78 04             	mov    0x4(%eax),%edi
506147:	8b 32                	mov    (%edx),%esi
506149:	4f                   	dec    %edi
50614a:	33 c0                	xor    %eax,%eax
50614c:	8a 06                	mov    (%esi),%al
50614e:	03 e8                	add    %eax,%ebp
506150:	46                   	inc    %esi
506151:	85 ff                	test   %edi,%edi
506153:	75 21                	jne    0x506176
506155:	8b 74 24 0c          	mov    0xc(%esp),%esi
506159:	8b c3                	mov    %ebx,%eax
50615b:	ff 56 0c             	call   *0xc(%esi)
50615e:	85 c0                	test   %eax,%eax
506160:	75 07                	jne    0x506169
506162:	33 c0                	xor    %eax,%eax
506164:	e9 cc 02 00 00       	jmp    0x506435
506169:	8b 54 24 0c          	mov    0xc(%esp),%edx
50616d:	8b 44 24 0c          	mov    0xc(%esp),%eax
506171:	8b 78 04             	mov    0x4(%eax),%edi
506174:	8b 32                	mov    (%edx),%esi
506176:	4f                   	dec    %edi
506177:	33 c0                	xor    %eax,%eax
506179:	8a 06                	mov    (%esi),%al
50617b:	89 83 d0 00 00 00    	mov    %eax,0xd0(%ebx)
506181:	46                   	inc    %esi
506182:	85 ff                	test   %edi,%edi
506184:	75 21                	jne    0x5061a7
506186:	8b 74 24 0c          	mov    0xc(%esp),%esi
50618a:	8b c3                	mov    %ebx,%eax
50618c:	ff 56 0c             	call   *0xc(%esi)
50618f:	85 c0                	test   %eax,%eax
506191:	75 07                	jne    0x50619a
506193:	33 c0                	xor    %eax,%eax
506195:	e9 9b 02 00 00       	jmp    0x506435
50619a:	8b 54 24 0c          	mov    0xc(%esp),%edx
50619e:	8b 44 24 0c          	mov    0xc(%esp),%eax
5061a2:	8b 78 04             	mov    0x4(%eax),%edi
5061a5:	8b 32                	mov    (%edx),%esi
5061a7:	33 c0                	xor    %eax,%eax
5061a9:	4f                   	dec    %edi
5061aa:	8a 06                	mov    (%esi),%al
5061ac:	46                   	inc    %esi
5061ad:	c1 e0 08             	shl    $0x8,%eax
5061b0:	85 ff                	test   %edi,%edi
5061b2:	89 43 1c             	mov    %eax,0x1c(%ebx)
5061b5:	75 21                	jne    0x5061d8
5061b7:	8b 74 24 0c          	mov    0xc(%esp),%esi
5061bb:	8b c3                	mov    %ebx,%eax
5061bd:	ff 56 0c             	call   *0xc(%esi)
5061c0:	85 c0                	test   %eax,%eax
5061c2:	75 07                	jne    0x5061cb
5061c4:	33 c0                	xor    %eax,%eax
5061c6:	e9 6a 02 00 00       	jmp    0x506435
5061cb:	8b 54 24 0c          	mov    0xc(%esp),%edx
5061cf:	8b 44 24 0c          	mov    0xc(%esp),%eax
5061d3:	8b 78 04             	mov    0x4(%eax),%edi
5061d6:	8b 32                	mov    (%edx),%esi
5061d8:	4f                   	dec    %edi
5061d9:	33 c0                	xor    %eax,%eax
5061db:	8a 06                	mov    (%esi),%al
5061dd:	01 43 1c             	add    %eax,0x1c(%ebx)
5061e0:	46                   	inc    %esi
5061e1:	85 ff                	test   %edi,%edi
5061e3:	75 21                	jne    0x506206
5061e5:	8b 74 24 0c          	mov    0xc(%esp),%esi
5061e9:	8b c3                	mov    %ebx,%eax
5061eb:	ff 56 0c             	call   *0xc(%esi)
5061ee:	85 c0                	test   %eax,%eax
5061f0:	75 07                	jne    0x5061f9
5061f2:	33 c0                	xor    %eax,%eax
5061f4:	e9 3c 02 00 00       	jmp    0x506435
5061f9:	8b 54 24 0c          	mov    0xc(%esp),%edx
5061fd:	8b 44 24 0c          	mov    0xc(%esp),%eax
506201:	8b 78 04             	mov    0x4(%eax),%edi
506204:	8b 32                	mov    (%edx),%esi
506206:	33 c0                	xor    %eax,%eax
506208:	4f                   	dec    %edi
506209:	8a 06                	mov    (%esi),%al
50620b:	46                   	inc    %esi
50620c:	c1 e0 08             	shl    $0x8,%eax
50620f:	85 ff                	test   %edi,%edi
506211:	89 43 18             	mov    %eax,0x18(%ebx)
506214:	75 21                	jne    0x506237
506216:	8b 74 24 0c          	mov    0xc(%esp),%esi
50621a:	8b c3                	mov    %ebx,%eax
50621c:	ff 56 0c             	call   *0xc(%esi)
50621f:	85 c0                	test   %eax,%eax
506221:	75 07                	jne    0x50622a
506223:	33 c0                	xor    %eax,%eax
506225:	e9 0b 02 00 00       	jmp    0x506435
50622a:	8b 54 24 0c          	mov    0xc(%esp),%edx
50622e:	8b 44 24 0c          	mov    0xc(%esp),%eax
506232:	8b 78 04             	mov    0x4(%eax),%edi
506235:	8b 32                	mov    (%edx),%esi
506237:	4f                   	dec    %edi
506238:	33 c0                	xor    %eax,%eax
50623a:	8a 06                	mov    (%esi),%al
50623c:	01 43 18             	add    %eax,0x18(%ebx)
50623f:	46                   	inc    %esi
506240:	85 ff                	test   %edi,%edi
506242:	75 21                	jne    0x506265
506244:	8b 74 24 0c          	mov    0xc(%esp),%esi
506248:	8b c3                	mov    %ebx,%eax
50624a:	ff 56 0c             	call   *0xc(%esi)
50624d:	85 c0                	test   %eax,%eax
50624f:	75 07                	jne    0x506258
506251:	33 c0                	xor    %eax,%eax
506253:	e9 dd 01 00 00       	jmp    0x506435
506258:	8b 54 24 0c          	mov    0xc(%esp),%edx
50625c:	8b 44 24 0c          	mov    0xc(%esp),%eax
506260:	8b 78 04             	mov    0x4(%eax),%edi
506263:	8b 32                	mov    (%edx),%esi
506265:	33 c0                	xor    %eax,%eax
506267:	4f                   	dec    %edi
506268:	8a 06                	mov    (%esi),%al
50626a:	46                   	inc    %esi
50626b:	83 ed 08             	sub    $0x8,%ebp
50626e:	89 43 20             	mov    %eax,0x20(%ebx)
506271:	8b 03                	mov    (%ebx),%eax
506273:	83 c0 18             	add    $0x18,%eax
506276:	8b 93 98 01 00 00    	mov    0x198(%ebx),%edx
50627c:	89 10                	mov    %edx,(%eax)
50627e:	8b 4b 18             	mov    0x18(%ebx),%ecx
506281:	89 48 04             	mov    %ecx,0x4(%eax)
506284:	8b 53 1c             	mov    0x1c(%ebx),%edx
506287:	89 50 08             	mov    %edx,0x8(%eax)
50628a:	8b 4b 20             	mov    0x20(%ebx),%ecx
50628d:	89 48 0c             	mov    %ecx,0xc(%eax)
506290:	8b 03                	mov    (%ebx),%eax
506292:	c7 40 14 63 00 00 00 	movl   $0x63,0x14(%eax)
506299:	ba 01 00 00 00       	mov    $0x1,%edx
50629e:	8b c3                	mov    %ebx,%eax
5062a0:	8b 08                	mov    (%eax),%ecx
5062a2:	ff 51 04             	call   *0x4(%ecx)
5062a5:	8b 83 b0 01 00 00    	mov    0x1b0(%ebx),%eax
5062ab:	83 78 54 00          	cmpl   $0x0,0x54(%eax)
5062af:	74 0f                	je     0x5062c0
5062b1:	8b 13                	mov    (%ebx),%edx
5062b3:	8b c3                	mov    %ebx,%eax
5062b5:	c7 42 14 39 00 00 00 	movl   $0x39,0x14(%edx)
5062bc:	8b 10                	mov    (%eax),%edx
5062be:	ff 12                	call   *(%edx)
5062c0:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
5062c4:	76 0c                	jbe    0x5062d2
5062c6:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
5062ca:	76 06                	jbe    0x5062d2
5062cc:	83 7b 20 00          	cmpl   $0x0,0x20(%ebx)
5062d0:	7f 0f                	jg     0x5062e1
5062d2:	8b 0b                	mov    (%ebx),%ecx
5062d4:	8b c3                	mov    %ebx,%eax
5062d6:	c7 41 14 1f 00 00 00 	movl   $0x1f,0x14(%ecx)
5062dd:	8b 10                	mov    (%eax),%edx
5062df:	ff 12                	call   *(%edx)
5062e1:	8b 4b 20             	mov    0x20(%ebx),%ecx
5062e4:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
5062e7:	3b e9                	cmp    %ecx,%ebp
5062e9:	74 0f                	je     0x5062fa
5062eb:	8b 03                	mov    (%ebx),%eax
5062ed:	c7 40 14 09 00 00 00 	movl   $0x9,0x14(%eax)
5062f4:	8b c3                	mov    %ebx,%eax
5062f6:	8b 10                	mov    (%eax),%edx
5062f8:	ff 12                	call   *(%edx)
5062fa:	83 bb d4 00 00 00 00 	cmpl   $0x0,0xd4(%ebx)
506301:	75 21                	jne    0x506324
506303:	8b 4b 20             	mov    0x20(%ebx),%ecx
506306:	ba 01 00 00 00       	mov    $0x1,%edx
50630b:	8b c1                	mov    %ecx,%eax
50630d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
506310:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
506313:	8b c3                	mov    %ebx,%eax
506315:	c1 e1 02             	shl    $0x2,%ecx
506318:	8b 68 04             	mov    0x4(%eax),%ebp
50631b:	ff 55 00             	call   *0x0(%ebp)
50631e:	89 83 d4 00 00 00    	mov    %eax,0xd4(%ebx)
506324:	33 c0                	xor    %eax,%eax
506326:	89 44 24 08          	mov    %eax,0x8(%esp)
50632a:	8b ab d4 00 00 00    	mov    0xd4(%ebx),%ebp