50321f:	8d 41 01             	lea    0x1(%ecx),%eax
503222:	89 46 6c             	mov    %eax,0x6c(%esi)
503225:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
503228:	8b 46 68             	mov    0x68(%esi),%eax
50322b:	c7 04 88 2f 00 00 00 	movl   $0x2f,(%eax,%ecx,4)
503232:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
503236:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
50323a:	89 7c 88 0c          	mov    %edi,0xc(%eax,%ecx,4)
50323e:	89 7c 88 10          	mov    %edi,0x10(%eax,%ecx,4)
503242:	8b 45 d4             	mov    -0x2c(%ebp),%eax
503245:	33 f6                	xor    %esi,%esi
503247:	89 75 cc             	mov    %esi,-0x34(%ebp)
50324a:	39 70 14             	cmp    %esi,0x14(%eax)
50324d:	0f 8e 82 01 00 00    	jle    0x5033d5
503253:	8b 45 b0             	mov    -0x50(%ebp),%eax
503256:	85 c0                	test   %eax,%eax
503258:	74 09                	je     0x503263
50325a:	8b 40 04             	mov    0x4(%eax),%eax
50325d:	0f b7 04 70          	movzwl (%eax,%esi,2),%eax
503261:	eb 03                	jmp    0x503266
503263:	83 c8 ff             	or     $0xffffffff,%eax
503266:	50                   	push   %eax
503267:	ff 75 b4             	push   -0x4c(%ebp)
50326a:	ff 75 d0             	push   -0x30(%ebp)
50326d:	53                   	push   %ebx
50326e:	e8 6d e5 ff ff       	call   0x5017e0
503273:	8b 55 d4             	mov    -0x2c(%ebp),%edx
503276:	83 c4 10             	add    $0x10,%esp
503279:	89 45 a4             	mov    %eax,-0x5c(%ebp)
50327c:	8b 45 c0             	mov    -0x40(%ebp),%eax
50327f:	85 c0                	test   %eax,%eax
503281:	74 06                	je     0x503289
503283:	0f b7 04 b0          	movzwl (%eax,%esi,4),%eax
503287:	eb 04                	jmp    0x50328d
503289:	0f b7 42 24          	movzwl 0x24(%edx),%eax
50328d:	98                   	cwtl
50328e:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
503291:	8b 02                	mov    (%edx),%eax
503293:	8b 40 04             	mov    0x4(%eax),%eax
503296:	8b 04 88             	mov    (%eax,%ecx,4),%eax
503299:	89 45 a8             	mov    %eax,-0x58(%ebp)
50329c:	85 c0                	test   %eax,%eax
50329e:	75 04                	jne    0x5032a4
5032a0:	33 f6                	xor    %esi,%esi
5032a2:	eb 1b                	jmp    0x5032bf
5032a4:	8b f0                	mov    %eax,%esi
5032a6:	8d 4e 01             	lea    0x1(%esi),%ecx
5032a9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
5032b0:	8a 06                	mov    (%esi),%al
5032b2:	46                   	inc    %esi
5032b3:	84 c0                	test   %al,%al
5032b5:	75 f9                	jne    0x5032b0
5032b7:	2b f1                	sub    %ecx,%esi
5032b9:	81 e6 ff ff ff 3f    	and    $0x3fffffff,%esi
5032bf:	8d 5e 01             	lea    0x1(%esi),%ebx
5032c2:	8d 43 34             	lea    0x34(%ebx),%eax
5032c5:	6a 00                	push   $0x0
5032c7:	50                   	push   %eax
5032c8:	ff 75 c4             	push   -0x3c(%ebp)
5032cb:	e8 10 e1 01 00       	call   0x5213e0
5032d0:	8b f8                	mov    %eax,%edi
5032d2:	83 c4 0c             	add    $0xc,%esp
5032d5:	85 ff                	test   %edi,%edi
5032d7:	74 4c                	je     0x503325
5032d9:	6a 34                	push   $0x34
5032db:	6a 00                	push   $0x0
5032dd:	57                   	push   %edi
5032de:	e8 1d 07 0e 00       	call   0x5e3a00
5032e3:	83 c8 ff             	or     $0xffffffff,%eax
5032e6:	c6 07 3b             	movb   $0x3b,(%edi)
5032e9:	83 c4 0c             	add    $0xc,%esp
5032ec:	66 89 47 22          	mov    %ax,0x22(%edi)
5032f0:	85 db                	test   %ebx,%ebx
5032f2:	75 0c                	jne    0x503300
5032f4:	81 4f 04 00 04 80 20 	orl    $0x20800400,0x4(%edi)
5032fb:	89 5f 08             	mov    %ebx,0x8(%edi)
5032fe:	eb 1e                	jmp    0x50331e
503300:	8d 47 34             	lea    0x34(%edi),%eax
503303:	89 47 08             	mov    %eax,0x8(%edi)
503306:	85 f6                	test   %esi,%esi
503308:	74 0d                	je     0x503317
50330a:	56                   	push   %esi
50330b:	ff 75 a8             	push   -0x58(%ebp)
50330e:	50                   	push   %eax
50330f:	e8 ec fb 0d 00       	call   0x5e2f00
503314:	83 c4 0c             	add    $0xc,%esp
503317:	8b 47 08             	mov    0x8(%edi),%eax
50331a:	c6 04 06 00          	movb   $0x0,(%esi,%eax,1)
50331e:	c7 47 18 01 00 00 00 	movl   $0x1,0x18(%edi)
503325:	8b 5d a0             	mov    -0x60(%ebp),%ebx
503328:	57                   	push   %edi
503329:	ff 75 a4             	push   -0x5c(%ebp)
50332c:	6a 35                	push   $0x35
50332e:	53                   	push   %ebx
50332f:	e8 dc ec 02 00       	call   0x532010
503334:	8b 4d d8             	mov    -0x28(%ebp),%ecx
503337:	83 c4 10             	add    $0x10,%esp
50333a:	8b 3b                	mov    (%ebx),%edi
50333c:	8b f0                	mov    %eax,%esi
50333e:	85 c9                	test   %ecx,%ecx
503340:	75 07                	jne    0x503349
503342:	8b fe                	mov    %esi,%edi
503344:	89 7d d8             	mov    %edi,-0x28(%ebp)
503347:	eb 79                	jmp    0x5033c2
503349:	85 f6                	test   %esi,%esi
50334b:	74 72                	je     0x5033bf
50334d:	8b 41 04             	mov    0x4(%ecx),%eax
503350:	25 01 00 00 20       	and    $0x20000001,%eax
503355:	3d 00 00 00 20       	cmp    $0x20000000,%eax
50335a:	74 0f                	je     0x50336b
50335c:	8b 46 04             	mov    0x4(%esi),%eax
50335f:	25 01 00 00 20       	and    $0x20000001,%eax
503364:	3d 00 00 00 20       	cmp    $0x20000000,%eax
503369:	75 40                	jne    0x5033ab
50336b:	80 bb c8 00 00 00 02 	cmpb   $0x2,0xc8(%ebx)
503372:	73 37                	jae    0x5033ab
503374:	51                   	push   %ecx
503375:	57                   	push   %edi
503376:	e8 35 34 02 00       	call   0x5267b0
50337b:	56                   	push   %esi
50337c:	57                   	push   %edi
50337d:	e8 2e 34 02 00       	call   0x5267b0
503382:	6a 00                	push   $0x0
503384:	8d 45 b8             	lea    -0x48(%ebp),%eax
503387:	c7 45 b8 9c 9b 6a 00 	movl   $0x6a9b9c,-0x48(%ebp)
50338e:	50                   	push   %eax
50338f:	68 98 00 00 00       	push   $0x98
503394:	57                   	push   %edi
503395:	c7 45 bc 01 00 00 00 	movl   $0x1,-0x44(%ebp)
50339c:	e8 cf 02 02 00       	call   0x523670
5033a1:	8b f8                	mov    %eax,%edi
5033a3:	83 c4 20             	add    $0x20,%esp
5033a6:	89 7d d8             	mov    %edi,-0x28(%ebp)
5033a9:	eb 17                	jmp    0x5033c2
5033ab:	56                   	push   %esi
5033ac:	51                   	push   %ecx
5033ad:	6a 2c                	push   $0x2c
5033af:	53                   	push   %ebx
5033b0:	e8 5b ec 02 00       	call   0x532010
5033b5:	8b f8                	mov    %eax,%edi
5033b7:	83 c4 10             	add    $0x10,%esp
5033ba:	89 7d d8             	mov    %edi,-0x28(%ebp)
5033bd:	eb 03                	jmp    0x5033c2
5033bf:	8b 7d d8             	mov    -0x28(%ebp),%edi
5033c2:	8b 75 cc             	mov    -0x34(%ebp),%esi
5033c5:	8b 45 d4             	mov    -0x2c(%ebp),%eax
5033c8:	46                   	inc    %esi
5033c9:	89 75 cc             	mov    %esi,-0x34(%ebp)
5033cc:	3b 70 14             	cmp    0x14(%eax),%esi
5033cf:	0f 8c 7e fe ff ff    	jl     0x503253
5033d5:	8b 4d d0             	mov    -0x30(%ebp),%ecx
5033d8:	3b 08                	cmp    (%eax),%ecx
5033da:	0f 85 1e 02 00 00    	jne    0x5035fe
5033e0:	83 7d 24 00          	cmpl   $0x0,0x24(%ebp)
5033e4:	0f 8e 14 02 00 00    	jle    0x5035fe
5033ea:	f6 41 24 80          	testb  $0x80,0x24(%ecx)
5033ee:	0f 85 85 00 00 00    	jne    0x503479
5033f4:	6a 00                	push   $0x0
5033f6:	8d 45 b8             	lea    -0x48(%ebp),%eax
5033f9:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
503400:	50                   	push   %eax
503401:	68 ad 00 00 00       	push   $0xad
503406:	ff 33                	push   (%ebx)
503408:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
50340f:	e8 5c 02 02 00       	call   0x523670
503414:	8b f0                	mov    %eax,%esi
503416:	83 c4 10             	add    $0x10,%esp
503419:	85 f6                	test   %esi,%esi
50341b:	74 0a                	je     0x503427
50341d:	8b 45 b4             	mov    -0x4c(%ebp),%eax
503420:	89 46 1c             	mov    %eax,0x1c(%esi)
503423:	c6 46 01 44          	movb   $0x44,0x1(%esi)
503427:	8b 7d 9c             	mov    -0x64(%ebp),%edi
50342a:	8d 45 b8             	lea    -0x48(%ebp),%eax
50342d:	6a 00                	push   $0x0
50342f:	50                   	push   %eax
503430:	68 a4 00 00 00       	push   $0xa4
503435:	ff 75 c4             	push   -0x3c(%ebp)
503438:	8b 7f 34             	mov    0x34(%edi),%edi
50343b:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
503442:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
503449:	e8 22 02 02 00       	call   0x523670
50344e:	83 c4 10             	add    $0x10,%esp
503451:	85 c0                	test   %eax,%eax
503453:	74 10                	je     0x503465
503455:	8b 4d d0             	mov    -0x30(%ebp),%ecx
503458:	89 48 2c             	mov    %ecx,0x2c(%eax)
50345b:	83 c9 ff             	or     $0xffffffff,%ecx
50345e:	89 78 1c             	mov    %edi,0x1c(%eax)
503461:	66 89 48 20          	mov    %cx,0x20(%eax)
503465:	50                   	push   %eax
503466:	56                   	push   %esi
503467:	6a 34                	push   $0x34
503469:	53                   	push   %ebx
50346a:	e8 a1 eb 02 00       	call   0x532010
50346f:	83 c4 10             	add    $0x10,%esp
503472:	8b f0                	mov    %eax,%esi
503474:	e9 76 01 00 00       	jmp    0x5035ef
503479:	8b 45 b0             	mov    -0x50(%ebp),%eax
50347c:	33 ff                	xor    %edi,%edi
50347e:	33 d2                	xor    %edx,%edx
503480:	89 7d cc             	mov    %edi,-0x34(%ebp)
503483:	33 f6                	xor    %esi,%esi
503485:	89 55 c0             	mov    %edx,-0x40(%ebp)
503488:	66 3b 70 32          	cmp    0x32(%eax),%si
50348c:	0f 83 ed 00 00 00    	jae    0x50357f
503492:	8b 40 04             	mov    0x4(%eax),%eax
503495:	0f b7 34 50          	movzwl (%eax,%edx,2),%esi
503499:	56                   	push   %esi
50349a:	ff 75 b4             	push   -0x4c(%ebp)
50349d:	51                   	push   %ecx
50349e:	53                   	push   %ebx
50349f:	e8 3c e3 ff ff       	call   0x5017e0
5034a4:	89 45 a8             	mov    %eax,-0x58(%ebp)
5034a7:	83 c4 10             	add    $0x10,%esp
5034aa:	8b 45 d0             	mov    -0x30(%ebp),%eax
5034ad:	0f bf ce             	movswl %si,%ecx
5034b0:	8d 14 89             	lea    (%ecx,%ecx,4),%edx
5034b3:	8b 48 04             	mov    0x4(%eax),%ecx
5034b6:	8b 04 91             	mov    (%ecx,%edx,4),%eax
5034b9:	89 45 a4             	mov    %eax,-0x5c(%ebp)
5034bc:	85 c0                	test   %eax,%eax
5034be:	75 04                	jne    0x5034c4
5034c0:	33 f6                	xor    %esi,%esi
5034c2:	eb 1b                	jmp    0x5034df
5034c4:	8b f0                	mov    %eax,%esi
5034c6:	8d 4e 01             	lea    0x1(%esi),%ecx
5034c9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
5034d0:	8a 06                	mov    (%esi),%al
5034d2:	46                   	inc    %esi
5034d3:	84 c0                	test   %al,%al
5034d5:	75 f9                	jne    0x5034d0
5034d7:	2b f1                	sub    %ecx,%esi
5034d9:	81 e6 ff ff ff 3f    	and    $0x3fffffff,%esi
5034df:	8d 5e 01             	lea    0x1(%esi),%ebx
5034e2:	8d 43 34             	lea    0x34(%ebx),%eax
5034e5:	6a 00                	push   $0x0
5034e7:	50                   	push   %eax
5034e8:	ff 75 c4             	push   -0x3c(%ebp)
5034eb:	e8 f0 de 01 00       	call   0x5213e0
5034f0:	8b f8                	mov    %eax,%edi
5034f2:	83 c4 0c             	add    $0xc,%esp
5034f5:	85 ff                	test   %edi,%edi
5034f7:	74 4c                	je     0x503545
5034f9:	6a 34                	push   $0x34
5034fb:	6a 00                	push   $0x0
5034fd:	57                   	push   %edi
5034fe:	e8 fd 04 0e 00       	call   0x5e3a00
503503:	83 c8 ff             	or     $0xffffffff,%eax
503506:	c6 07 3b             	movb   $0x3b,(%edi)
503509:	83 c4 0c             	add    $0xc,%esp
50350c:	66 89 47 22          	mov    %ax,0x22(%edi)
503510:	85 db                	test   %ebx,%ebx
503512:	75 0c                	jne    0x503520
503514:	81 4f 04 00 04 80 20 	orl    $0x20800400,0x4(%edi)
50351b:	89 5f 08             	mov    %ebx,0x8(%edi)
50351e:	eb 1e                	jmp    0x50353e
503520:	8d 47 34             	lea    0x34(%edi),%eax
503523:	89 47 08             	mov    %eax,0x8(%edi)
503526:	85 f6                	test   %esi,%esi
503528:	74 0d                	je     0x503537
50352a:	56                   	push   %esi
50352b:	ff 75 a4             	push   -0x5c(%ebp)
50352e:	50                   	push   %eax
50352f:	e8 cc f9 0d 00       	call   0x5e2f00
503534:	83 c4 0c             	add    $0xc,%esp
503537:	8b 47 08             	mov    0x8(%edi),%eax
50353a:	c6 04 06 00          	movb   $0x0,(%esi,%eax,1)
50353e:	c7 47 18 01 00 00 00 	movl   $0x1,0x18(%edi)
503545:	8b 5d a0             	mov    -0x60(%ebp),%ebx
503548:	57                   	push   %edi
503549:	ff 75 a8             	push   -0x58(%ebp)
50354c:	6a 2d                	push   $0x2d
50354e:	53                   	push   %ebx
50354f:	e8 bc ea 02 00       	call   0x532010
503554:	50                   	push   %eax
503555:	ff 75 cc             	push   -0x34(%ebp)
503558:	53                   	push   %ebx
503559:	e8 a2 02 02 00       	call   0x523800
50355e:	8b 55 c0             	mov    -0x40(%ebp),%edx
503561:	8b f8                	mov    %eax,%edi
503563:	8b 45 b0             	mov    -0x50(%ebp),%eax
503566:	42                   	inc    %edx
503567:	83 c4 1c             	add    $0x1c,%esp
50356a:	89 7d cc             	mov    %edi,-0x34(%ebp)
50356d:	89 55 c0             	mov    %edx,-0x40(%ebp)
503570:	0f b7 48 32          	movzwl 0x32(%eax),%ecx
503574:	3b d1                	cmp    %ecx,%edx
503576:	8b 4d d0             	mov    -0x30(%ebp),%ecx
503579:	0f 8c 13 ff ff ff    	jl     0x503492
50357f:	6a 00                	push   $0x0
503581:	6a 34                	push   $0x34
503583:	ff 33                	push   (%ebx)
503585:	e8 56 de 01 00       	call   0x5213e0
50358a:	8b f0                	mov    %eax,%esi
50358c:	83 c4 0c             	add    $0xc,%esp
50358f:	85 f6                	test   %esi,%esi
503591:	74 4d                	je     0x5035e0
503593:	6a 34                	push   $0x34
503595:	6a 00                	push   $0x0
503597:	56                   	push   %esi
503598:	e8 63 04 0e 00       	call   0x5e3a00
50359d:	83 c8 ff             	or     $0xffffffff,%eax
5035a0:	c6 06 13             	movb   $0x13,(%esi)
5035a3:	83 c4 0c             	add    $0xc,%esp
5035a6:	66 89 46 22          	mov    %ax,0x22(%esi)
5035aa:	85 ff                	test   %edi,%edi
5035ac:	74 0e                	je     0x5035bc
5035ae:	89 7e 0c             	mov    %edi,0xc(%esi)
5035b1:	8b 47 04             	mov    0x4(%edi),%eax
5035b4:	25 04 01 20 00       	and    $0x200104,%eax
5035b9:	09 46 04             	or     %eax,0x4(%esi)
5035bc:	56                   	push   %esi
5035bd:	e8 fe e0 ff ff       	call   0x5016c0
5035c2:	8b 03                	mov    (%ebx),%eax
5035c4:	83 c4 04             	add    $0x4,%esp
5035c7:	8b 40 78             	mov    0x78(%eax),%eax
5035ca:	39 46 18             	cmp    %eax,0x18(%esi)
5035cd:	7e 20                	jle    0x5035ef
5035cf:	50                   	push   %eax
5035d0:	68 30 90 6b 00       	push   $0x6b9030
5035d5:	53                   	push   %ebx
5035d6:	e8 85 fc 01 00       	call   0x523260
5035db:	83 c4 0c             	add    $0xc,%esp
5035de:	eb 0f                	jmp    0x5035ef
5035e0:	85 ff                	test   %edi,%edi
5035e2:	74 0b                	je     0x5035ef
5035e4:	57                   	push   %edi
5035e5:	ff 33                	push   (%ebx)
5035e7:	e8 c4 31 02 00       	call   0x5267b0
5035ec:	83 c4 08             	add    $0x8,%esp
5035ef:	56                   	push   %esi
5035f0:	ff 75 d8             	push   -0x28(%ebp)
5035f3:	53                   	push   %ebx
5035f4:	e8 07 02 02 00       	call   0x523800
5035f9:	83 c4 0c             	add    $0xc,%esp
5035fc:	8b f8                	mov    %eax,%edi
5035fe:	8b 75 9c             	mov    -0x64(%ebp),%esi
503601:	8d 45 dc             	lea    -0x24(%ebp),%eax
503604:	0f 57 c0             	xorps  %xmm0,%xmm0
503607:	0f 11 45 dc          	movups %xmm0,-0x24(%ebp)
50360b:	57                   	push   %edi
50360c:	50                   	push   %eax
50360d:	0f 11 45 ec          	movups %xmm0,-0x14(%ebp)
503611:	89 75 e0             	mov    %esi,-0x20(%ebp)
503614:	89 5d dc             	mov    %ebx,-0x24(%ebp)
503617:	e8 64 4c 03 00       	call   0x538280
50361c:	83 c4 08             	add    $0x8,%esp
50361f:	83 7b 24 00          	cmpl   $0x0,0x24(%ebx)
503623:	75 7d                	jne    0x5036a2