507144:	46                   	inc    %esi
507145:	8b c3                	mov    %ebx,%eax
507147:	c1 f8 04             	sar    $0x4,%eax
50714a:	83 e3 0f             	and    $0xf,%ebx
50714d:	89 44 24 08          	mov    %eax,0x8(%esp)
507151:	8b 45 00             	mov    0x0(%ebp),%eax
507154:	c7 40 14 50 00 00 00 	movl   $0x50,0x14(%eax)
50715b:	89 58 18             	mov    %ebx,0x18(%eax)
50715e:	8b 54 24 08          	mov    0x8(%esp),%edx
507162:	89 50 1c             	mov    %edx,0x1c(%eax)
507165:	8b c5                	mov    %ebp,%eax
507167:	ba 01 00 00 00       	mov    $0x1,%edx
50716c:	8b 08                	mov    (%eax),%ecx
50716e:	ff 51 04             	call   *0x4(%ecx)
507171:	83 fb 04             	cmp    $0x4,%ebx
507174:	7c 13                	jl     0x507189
507176:	8b 45 00             	mov    0x0(%ebp),%eax
507179:	c7 40 14 1e 00 00 00 	movl   $0x1e,0x14(%eax)
507180:	89 58 18             	mov    %ebx,0x18(%eax)
507183:	8b c5                	mov    %ebp,%eax
507185:	8b 10                	mov    (%eax),%edx
507187:	ff 12                	call   *(%edx)
507189:	83 bc 9d a0 00 00 00 	cmpl   $0x0,0xa0(%ebp,%ebx,4)
507190:	00
507191:	75 0e                	jne    0x5071a1
507193:	8b c5                	mov    %ebp,%eax
507195:	e8 a6 0a 00 00       	call   0x507c40
50719a:	89 84 9d a0 00 00 00 	mov    %eax,0xa0(%ebp,%ebx,4)
5071a1:	8b 94 9d a0 00 00 00 	mov    0xa0(%ebp,%ebx,4),%edx
5071a8:	33 c9                	xor    %ecx,%ecx
5071aa:	89 54 24 0c          	mov    %edx,0xc(%esp)
5071ae:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5071b2:	c7 44 24 14 64 d9 68 	movl   $0x68d964,0x14(%esp)
5071b9:	00
5071ba:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
5071bf:	74 5d                	je     0x50721e
5071c1:	85 ff                	test   %edi,%edi
5071c3:	75 21                	jne    0x5071e6
5071c5:	8b 5c 24 10          	mov    0x10(%esp),%ebx
5071c9:	8b c5                	mov    %ebp,%eax
5071cb:	ff 53 0c             	call   *0xc(%ebx)
5071ce:	85 c0                	test   %eax,%eax
5071d0:	75 07                	jne    0x5071d9
5071d2:	33 c0                	xor    %eax,%eax
5071d4:	e9 33 01 00 00       	jmp    0x50730c
5071d9:	8b 54 24 10          	mov    0x10(%esp),%edx
5071dd:	8b 44 24 10          	mov    0x10(%esp),%eax
5071e1:	8b 78 04             	mov    0x4(%eax),%edi
5071e4:	8b 32                	mov    (%edx),%esi
5071e6:	4f                   	dec    %edi
5071e7:	33 db                	xor    %ebx,%ebx
5071e9:	8a 1e                	mov    (%esi),%bl
5071eb:	c1 e3 08             	shl    $0x8,%ebx
5071ee:	46                   	inc    %esi
5071ef:	85 ff                	test   %edi,%edi
5071f1:	75 21                	jne    0x507214
5071f3:	8b 74 24 10          	mov    0x10(%esp),%esi
5071f7:	8b c5                	mov    %ebp,%eax
5071f9:	ff 56 0c             	call   *0xc(%esi)
5071fc:	85 c0                	test   %eax,%eax
5071fe:	75 07                	jne    0x507207
507200:	33 c0                	xor    %eax,%eax
507202:	e9 05 01 00 00       	jmp    0x50730c
507207:	8b 54 24 10          	mov    0x10(%esp),%edx
50720b:	8b 44 24 10          	mov    0x10(%esp),%eax
50720f:	8b 78 04             	mov    0x4(%eax),%edi
507212:	8b 32                	mov    (%edx),%esi
507214:	4f                   	dec    %edi
507215:	33 c0                	xor    %eax,%eax
507217:	8a 06                	mov    (%esi),%al
507219:	03 d8                	add    %eax,%ebx
50721b:	46                   	inc    %esi
50721c:	eb 2b                	jmp    0x507249
50721e:	85 ff                	test   %edi,%edi
507220:	75 21                	jne    0x507243
507222:	8b 5c 24 10          	mov    0x10(%esp),%ebx
507226:	8b c5                	mov    %ebp,%eax
507228:	ff 53 0c             	call   *0xc(%ebx)
50722b:	85 c0                	test   %eax,%eax
50722d:	75 07                	jne    0x507236
50722f:	33 c0                	xor    %eax,%eax
507231:	e9 d6 00 00 00       	jmp    0x50730c
507236:	8b 54 24 10          	mov    0x10(%esp),%edx
50723a:	8b 44 24 10          	mov    0x10(%esp),%eax
50723e:	8b 78 04             	mov    0x4(%eax),%edi
507241:	8b 32                	mov    (%edx),%esi
507243:	4f                   	dec    %edi
507244:	33 db                	xor    %ebx,%ebx
507246:	8a 1e                	mov    (%esi),%bl
507248:	46                   	inc    %esi
507249:	8b 44 24 14          	mov    0x14(%esp),%eax
50724d:	8b 10                	mov    (%eax),%edx
50724f:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
507253:	66 89 1c 51          	mov    %bx,(%ecx,%edx,2)
507257:	ff 44 24 04          	incl   0x4(%esp)
50725b:	83 44 24 14 04       	addl   $0x4,0x14(%esp)
507260:	83 7c 24 04 40       	cmpl   $0x40,0x4(%esp)
507265:	0f 8c 4f ff ff ff    	jl     0x5071ba
50726b:	8b 45 00             	mov    0x0(%ebp),%eax
50726e:	83 78 68 02          	cmpl   $0x2,0x68(%eax)
507272:	7c 6d                	jl     0x5072e1
507274:	33 d2                	xor    %edx,%edx
507276:	89 54 24 04          	mov    %edx,0x4(%esp)
50727a:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
50727e:	8b d9                	mov    %ecx,%ebx
507280:	8b 45 00             	mov    0x0(%ebp),%eax
507283:	83 c0 18             	add    $0x18,%eax
507286:	0f b7 13             	movzwl (%ebx),%edx
507289:	89 10                	mov    %edx,(%eax)
50728b:	0f b7 4b 02          	movzwl 0x2(%ebx),%ecx
50728f:	89 48 04             	mov    %ecx,0x4(%eax)
507292:	0f b7 53 04          	movzwl 0x4(%ebx),%edx
507296:	89 50 08             	mov    %edx,0x8(%eax)
507299:	0f b7 4b 06          	movzwl 0x6(%ebx),%ecx
50729d:	89 48 0c             	mov    %ecx,0xc(%eax)
5072a0:	0f b7 53 08          	movzwl 0x8(%ebx),%edx
5072a4:	89 50 10             	mov    %edx,0x10(%eax)
5072a7:	0f b7 4b 0a          	movzwl 0xa(%ebx),%ecx
5072ab:	89 48 14             	mov    %ecx,0x14(%eax)
5072ae:	0f b7 53 0c          	movzwl 0xc(%ebx),%edx
5072b2:	89 50 18             	mov    %edx,0x18(%eax)
5072b5:	0f b7 4b 0e          	movzwl 0xe(%ebx),%ecx
5072b9:	89 48 1c             	mov    %ecx,0x1c(%eax)
5072bc:	8b 45 00             	mov    0x0(%ebp),%eax
5072bf:	c7 40 14 5c 00 00 00 	movl   $0x5c,0x14(%eax)
5072c6:	ba 02 00 00 00       	mov    $0x2,%edx
5072cb:	8b c5                	mov    %ebp,%eax
5072cd:	8b 08                	mov    (%eax),%ecx
5072cf:	ff 51 04             	call   *0x4(%ecx)
5072d2:	83 44 24 04 08       	addl   $0x8,0x4(%esp)
5072d7:	83 c3 10             	add    $0x10,%ebx
5072da:	83 7c 24 04 40       	cmpl   $0x40,0x4(%esp)
5072df:	7c 9f                	jl     0x507280
5072e1:	83 2c 24 41          	subl   $0x41,(%esp)
5072e5:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
5072ea:	74 04                	je     0x5072f0
5072ec:	83 2c 24 40          	subl   $0x40,(%esp)
5072f0:	83 3c 24 00          	cmpl   $0x0,(%esp)
5072f4:	0f 8f 20 fe ff ff    	jg     0x50711a
5072fa:	8b 44 24 10          	mov    0x10(%esp),%eax
5072fe:	89 30                	mov    %esi,(%eax)
507300:	b8 01 00 00 00       	mov    $0x1,%eax
507305:	8b 54 24 10          	mov    0x10(%esp),%edx
507309:	89 7a 04             	mov    %edi,0x4(%edx)
50730c:	83 c4 18             	add    $0x18,%esp
50730f:	5d                   	pop    %ebp
507310:	5f                   	pop    %edi
507311:	5e                   	pop    %esi
507312:	5b                   	pop    %ebx
507313:	c3                   	ret
507314:	53                   	push   %ebx
507315:	56                   	push   %esi
507316:	57                   	push   %edi
507317:	55                   	push   %ebp
507318:	83 c4 f8             	add    $0xfffffff8,%esp
50731b:	8b e8                	mov    %eax,%ebp
50731d:	8b 7d 14             	mov    0x14(%ebp),%edi
507320:	8b 1f                	mov    (%edi),%ebx
507322:	8b 77 04             	mov    0x4(%edi),%esi
507325:	85 f6                	test   %esi,%esi
507327:	75 15                	jne    0x50733e
507329:	8b c5                	mov    %ebp,%eax
50732b:	ff 57 0c             	call   *0xc(%edi)
50732e:	85 c0                	test   %eax,%eax
507330:	75 07                	jne    0x507339
507332:	33 c0                	xor    %eax,%eax
507334:	e9 bd 00 00 00       	jmp    0x5073f6
507339:	8b 1f                	mov    (%edi),%ebx
50733b:	8b 77 04             	mov    0x4(%edi),%esi
50733e:	33 c0                	xor    %eax,%eax
507340:	4e                   	dec    %esi
507341:	8a 03                	mov    (%ebx),%al
507343:	43                   	inc    %ebx
507344:	c1 e0 08             	shl    $0x8,%eax
507347:	85 f6                	test   %esi,%esi
507349:	89 04 24             	mov    %eax,(%esp)
50734c:	75 15                	jne    0x507363
50734e:	8b c5                	mov    %ebp,%eax
507350:	ff 57 0c             	call   *0xc(%edi)
507353:	85 c0                	test   %eax,%eax
507355:	75 07                	jne    0x50735e
507357:	33 c0                	xor    %eax,%eax
507359:	e9 98 00 00 00       	jmp    0x5073f6
50735e:	8b 1f                	mov    (%edi),%ebx
507360:	8b 77 04             	mov    0x4(%edi),%esi
507363:	4e                   	dec    %esi
507364:	33 c0                	xor    %eax,%eax
507366:	8a 03                	mov    (%ebx),%al
507368:	01 04 24             	add    %eax,(%esp)
50736b:	43                   	inc    %ebx
50736c:	83 3c 24 04          	cmpl   $0x4,(%esp)
507370:	74 10                	je     0x507382
507372:	8b 55 00             	mov    0x0(%ebp),%edx
507375:	8b c5                	mov    %ebp,%eax
507377:	c7 42 14 09 00 00 00 	movl   $0x9,0x14(%edx)
50737e:	8b 10                	mov    (%eax),%edx
507380:	ff 12                	call   *(%edx)
507382:	85 f6                	test   %esi,%esi
507384:	75 12                	jne    0x507398
507386:	8b c5                	mov    %ebp,%eax
507388:	ff 57 0c             	call   *0xc(%edi)
50738b:	85 c0                	test   %eax,%eax
50738d:	75 04                	jne    0x507393
50738f:	33 c0                	xor    %eax,%eax
507391:	eb 63                	jmp    0x5073f6
507393:	8b 1f                	mov    (%edi),%ebx
507395:	8b 77 04             	mov    0x4(%edi),%esi
507398:	33 c0                	xor    %eax,%eax
50739a:	4e                   	dec    %esi
50739b:	8a 03                	mov    (%ebx),%al
50739d:	43                   	inc    %ebx
50739e:	c1 e0 08             	shl    $0x8,%eax
5073a1:	85 f6                	test   %esi,%esi
5073a3:	89 44 24 04          	mov    %eax,0x4(%esp)
5073a7:	75 12                	jne    0x5073bb
5073a9:	8b c5                	mov    %ebp,%eax
5073ab:	ff 57 0c             	call   *0xc(%edi)
5073ae:	85 c0                	test   %eax,%eax
5073b0:	75 04                	jne    0x5073b6
5073b2:	33 c0                	xor    %eax,%eax
5073b4:	eb 40                	jmp    0x5073f6
5073b6:	8b 1f                	mov    (%edi),%ebx
5073b8:	8b 77 04             	mov    0x4(%edi),%esi
5073bb:	33 c0                	xor    %eax,%eax
5073bd:	4e                   	dec    %esi
5073be:	8a 03                	mov    (%ebx),%al
5073c0:	01 44 24 04          	add    %eax,0x4(%esp)
5073c4:	43                   	inc    %ebx
5073c5:	8b 45 00             	mov    0x0(%ebp),%eax
5073c8:	c7 40 14 51 00 00 00 	movl   $0x51,0x14(%eax)
5073cf:	8b 54 24 04          	mov    0x4(%esp),%edx
5073d3:	89 50 18             	mov    %edx,0x18(%eax)
5073d6:	8b c5                	mov    %ebp,%eax
5073d8:	ba 01 00 00 00       	mov    $0x1,%edx
5073dd:	8b 08                	mov    (%eax),%ecx
5073df:	ff 51 04             	call   *0x4(%ecx)
5073e2:	8b 44 24 04          	mov    0x4(%esp),%eax
5073e6:	89 85 10 01 00 00    	mov    %eax,0x110(%ebp)
5073ec:	89 1f                	mov    %ebx,(%edi)
5073ee:	89 77 04             	mov    %esi,0x4(%edi)
5073f1:	b8 01 00 00 00       	mov    $0x1,%eax
5073f6:	59                   	pop    %ecx
5073f7:	5a                   	pop    %edx
5073f8:	5d                   	pop    %ebp
5073f9:	5f                   	pop    %edi
5073fa:	5e                   	pop    %esi
5073fb:	5b                   	pop    %ebx
5073fc:	c3                   	ret
5073fd:	90                   	nop
5073fe:	90                   	nop
5073ff:	90                   	nop
507400:	53                   	push   %ebx
507401:	56                   	push   %esi
507402:	57                   	push   %edi
507403:	8b f0                	mov    %eax,%esi
507405:	55                   	push   %ebp
507406:	51                   	push   %ecx
507407:	8b 5e 14             	mov    0x14(%esi),%ebx
50740a:	8b 6b 04             	mov    0x4(%ebx),%ebp
50740d:	8b 3b                	mov    (%ebx),%edi
50740f:	85 ed                	test   %ebp,%ebp
507411:	75 12                	jne    0x507425
507413:	8b c6                	mov    %esi,%eax
507415:	ff 53 0c             	call   *0xc(%ebx)
507418:	85 c0                	test   %eax,%eax
50741a:	75 04                	jne    0x507420
50741c:	33 c0                	xor    %eax,%eax
50741e:	eb 6c                	jmp    0x50748c
507420:	8b 3b                	mov    (%ebx),%edi
507422:	8b 6b 04             	mov    0x4(%ebx),%ebp
507425:	33 c0                	xor    %eax,%eax
507427:	4d                   	dec    %ebp
507428:	8a 07                	mov    (%edi),%al
50742a:	47                   	inc    %edi
50742b:	c1 e0 08             	shl    $0x8,%eax
50742e:	85 ed                	test   %ebp,%ebp
507430:	89 04 24             	mov    %eax,(%esp)
507433:	75 12                	jne    0x507447
507435:	8b c6                	mov    %esi,%eax
507437:	ff 53 0c             	call   *0xc(%ebx)
50743a:	85 c0                	test   %eax,%eax
50743c:	75 04                	jne    0x507442
50743e:	33 c0                	xor    %eax,%eax
507440:	eb 4a                	jmp    0x50748c
507442:	8b 3b                	mov    (%ebx),%edi
507444:	8b 6b 04             	mov    0x4(%ebx),%ebp
507447:	33 c0                	xor    %eax,%eax
507449:	4d                   	dec    %ebp
50744a:	8a 07                	mov    (%edi),%al
50744c:	01 04 24             	add    %eax,(%esp)
50744f:	47                   	inc    %edi
507450:	8b 06                	mov    (%esi),%eax
507452:	c7 40 14 5a 00 00 00 	movl   $0x5a,0x14(%eax)
507459:	8b 96 98 01 00 00    	mov    0x198(%esi),%edx
50745f:	89 50 18             	mov    %edx,0x18(%eax)
507462:	ba 01 00 00 00       	mov    $0x1,%edx
507467:	8b 0c 24             	mov    (%esp),%ecx
50746a:	89 48 1c             	mov    %ecx,0x1c(%eax)
50746d:	8b c6                	mov    %esi,%eax
50746f:	8b 08                	mov    (%eax),%ecx
507471:	ff 51 04             	call   *0x4(%ecx)
507474:	8b c6                	mov    %esi,%eax
507476:	89 3b                	mov    %edi,(%ebx)
507478:	89 6b 04             	mov    %ebp,0x4(%ebx)
50747b:	8b 48 14             	mov    0x14(%eax),%ecx
50747e:	8b 14 24             	mov    (%esp),%edx
507481:	83 c2 fe             	add    $0xfffffffe,%edx
507484:	ff 51 10             	call   *0x10(%ecx)
507487:	b8 01 00 00 00       	mov    $0x1,%eax
50748c:	5a                   	pop    %edx
50748d:	5d                   	pop    %ebp
50748e:	5f                   	pop    %edi
50748f:	5e                   	pop    %esi
507490:	5b                   	pop    %ebx
507491:	c3                   	ret
507492:	90                   	nop
507493:	90                   	nop
507494:	53                   	push   %ebx
507495:	56                   	push   %esi
507496:	57                   	push   %edi
507497:	55                   	push   %ebp
507498:	51                   	push   %ecx
507499:	89 04 24             	mov    %eax,(%esp)
50749c:	8b 04 24             	mov    (%esp),%eax
50749f:	8b 78 14             	mov    0x14(%eax),%edi
5074a2:	8b 1f                	mov    (%edi),%ebx
5074a4:	8b 77 04             	mov    0x4(%edi),%esi
5074a7:	85 f6                	test   %esi,%esi
5074a9:	75 16                	jne    0x5074c1
5074ab:	8b 04 24             	mov    (%esp),%eax
5074ae:	ff 57 0c             	call   *0xc(%edi)
5074b1:	85 c0                	test   %eax,%eax
5074b3:	75 07                	jne    0x5074bc
5074b5:	33 c0                	xor    %eax,%eax
5074b7:	e9 e5 00 00 00       	jmp    0x5075a1
5074bc:	8b 1f                	mov    (%edi),%ebx
5074be:	8b 77 04             	mov    0x4(%edi),%esi
5074c1:	0f b6 2b             	movzbl (%ebx),%ebp
5074c4:	43                   	inc    %ebx
5074c5:	4e                   	dec    %esi
5074c6:	81 fd ff 00 00 00    	cmp    $0xff,%ebp
5074cc:	74 38                	je     0x507506
5074ce:	8b 04 24             	mov    (%esp),%eax
5074d1:	8b 90 b0 01 00 00    	mov    0x1b0(%eax),%edx
5074d7:	ff 42 5c             	incl   0x5c(%edx)
5074da:	89 1f                	mov    %ebx,(%edi)
5074dc:	89 77 04             	mov    %esi,0x4(%edi)
5074df:	85 f6                	test   %esi,%esi
5074e1:	75 16                	jne    0x5074f9
5074e3:	8b 04 24             	mov    (%esp),%eax