7cd25f:	83 c4 04             	add    $0x4,%esp
7cd262:	85 c0                	test   %eax,%eax
7cd264:	0f 85 23 04 00 00    	jne    0x7cd68d
7cd26a:	8b 6f 30             	mov    0x30(%edi),%ebp
7cd26d:	8b 77 2c             	mov    0x2c(%edi),%esi
7cd270:	89 6c 24 20          	mov    %ebp,0x20(%esp)
7cd274:	8a 06                	mov    (%esi),%al
7cd276:	b9 10 00 00 00       	mov    $0x10,%ecx
7cd27b:	0f b6 d7             	movzbl %bh,%edx
7cd27e:	46                   	inc    %esi
7cd27f:	c1 e2 08             	shl    $0x8,%edx
7cd282:	0f b6 c0             	movzbl %al,%eax
7cd285:	0b d0                	or     %eax,%edx
7cd287:	0f b6 c3             	movzbl %bl,%eax
7cd28a:	2b c8                	sub    %eax,%ecx
7cd28c:	80 c3 10             	add    $0x10,%bl
7cd28f:	d3 e2                	shl    %cl,%edx
7cd291:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd295:	0b ca                	or     %edx,%ecx
7cd297:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7cd29b:	80 fb 01             	cmp    $0x1,%bl
7cd29e:	72 93                	jb     0x7cd233
7cd2a0:	8b 54 24 24          	mov    0x24(%esp),%edx
7cd2a4:	8b 44 24 1c          	mov    0x1c(%esp),%eax
7cd2a8:	c1 e9 1f             	shr    $0x1f,%ecx
7cd2ab:	03 c0                	add    %eax,%eax
7cd2ad:	0b c8                	or     %eax,%ecx
7cd2af:	0f b7 c1             	movzwl %cx,%eax
7cd2b2:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd2b6:	03 c9                	add    %ecx,%ecx
7cd2b8:	89 44 24 1c          	mov    %eax,0x1c(%esp)
7cd2bc:	fe cb                	dec    %bl
7cd2be:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7cd2c2:	88 5c 24 12          	mov    %bl,0x12(%esp)
7cd2c6:	e9 15 ff ff ff       	jmp    0x7cd1e0
7cd2cb:	8b 44 24 38          	mov    0x38(%esp),%eax
7cd2cf:	c7 44 24 2c 00 00 00 	movl   $0x0,0x2c(%esp)
7cd2d6:	00
7cd2d7:	8a 90 90 c3 c2 00    	mov    0xc2c390(%eax),%dl
7cd2dd:	88 54 24 13          	mov    %dl,0x13(%esp)
7cd2e1:	84 d2                	test   %dl,%dl
7cd2e3:	0f 84 bf 00 00 00    	je     0x7cd3a8
7cd2e9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
7cd2f0:	80 fb 10             	cmp    $0x10,%bl
7cd2f3:	77 6a                	ja     0x7cd35f
7cd2f5:	3b f5                	cmp    %ebp,%esi
7cd2f7:	72 1b                	jb     0x7cd314
7cd2f9:	57                   	push   %edi
7cd2fa:	e8 91 0d 00 00       	call   0x7ce090
7cd2ff:	83 c4 04             	add    $0x4,%esp
7cd302:	85 c0                	test   %eax,%eax
7cd304:	0f 85 83 03 00 00    	jne    0x7cd68d
7cd30a:	8b 6f 30             	mov    0x30(%edi),%ebp
7cd30d:	8b 77 2c             	mov    0x2c(%edi),%esi
7cd310:	89 6c 24 20          	mov    %ebp,0x20(%esp)
7cd314:	8a 3e                	mov    (%esi),%bh
7cd316:	46                   	inc    %esi
7cd317:	3b f5                	cmp    %ebp,%esi
7cd319:	72 1b                	jb     0x7cd336
7cd31b:	57                   	push   %edi
7cd31c:	e8 6f 0d 00 00       	call   0x7ce090
7cd321:	83 c4 04             	add    $0x4,%esp
7cd324:	85 c0                	test   %eax,%eax
7cd326:	0f 85 61 03 00 00    	jne    0x7cd68d
7cd32c:	8b 6f 30             	mov    0x30(%edi),%ebp
7cd32f:	8b 77 2c             	mov    0x2c(%edi),%esi
7cd332:	89 6c 24 20          	mov    %ebp,0x20(%esp)
7cd336:	8a 06                	mov    (%esi),%al
7cd338:	b9 10 00 00 00       	mov    $0x10,%ecx
7cd33d:	0f b6 d7             	movzbl %bh,%edx
7cd340:	46                   	inc    %esi
7cd341:	c1 e2 08             	shl    $0x8,%edx
7cd344:	0f b6 c0             	movzbl %al,%eax
7cd347:	0b d0                	or     %eax,%edx
7cd349:	0f b6 c3             	movzbl %bl,%eax
7cd34c:	2b c8                	sub    %eax,%ecx
7cd34e:	d3 e2                	shl    %cl,%edx
7cd350:	09 54 24 14          	or     %edx,0x14(%esp)
7cd354:	80 c3 10             	add    $0x10,%bl
7cd357:	8a 54 24 13          	mov    0x13(%esp),%dl
7cd35b:	88 5c 24 12          	mov    %bl,0x12(%esp)
7cd35f:	38 54 24 12          	cmp    %dl,0x12(%esp)
7cd363:	b9 20 00 00 00       	mov    $0x20,%ecx
7cd368:	0f b6 44 24 12       	movzbl 0x12(%esp),%eax
7cd36d:	0f b6 da             	movzbl %dl,%ebx
7cd370:	0f 42 d8             	cmovb  %eax,%ebx
7cd373:	8b 44 24 14          	mov    0x14(%esp),%eax
7cd377:	28 5c 24 12          	sub    %bl,0x12(%esp)
7cd37b:	0f b6 d3             	movzbl %bl,%edx
7cd37e:	2b ca                	sub    %edx,%ecx
7cd380:	d3 e8                	shr    %cl,%eax
7cd382:	8b ca                	mov    %edx,%ecx
7cd384:	d3 64 24 2c          	shll   %cl,0x2c(%esp)
7cd388:	8a 54 24 13          	mov    0x13(%esp),%dl
7cd38c:	09 44 24 2c          	or     %eax,0x2c(%esp)
7cd390:	d3 64 24 14          	shll   %cl,0x14(%esp)
7cd394:	2a d3                	sub    %bl,%dl
7cd396:	8a 5c 24 12          	mov    0x12(%esp),%bl
7cd39a:	88 54 24 13          	mov    %dl,0x13(%esp)
7cd39e:	0f 85 4c ff ff ff    	jne    0x7cd2f0
7cd3a4:	8b 44 24 38          	mov    0x38(%esp),%eax
7cd3a8:	8b 14 85 e8 c2 c2 00 	mov    0xc2c2e8(,%eax,4),%edx
7cd3af:	b8 03 00 00 00       	mov    $0x3,%eax
7cd3b4:	89 44 24 30          	mov    %eax,0x30(%esp)
7cd3b8:	03 54 24 2c          	add    0x2c(%esp),%edx
7cd3bc:	29 44 24 3c          	sub    %eax,0x3c(%esp)
7cd3c0:	42                   	inc    %edx
7cd3c1:	8b 4c 24 28          	mov    0x28(%esp),%ecx
7cd3c5:	8b 5f 10             	mov    0x10(%edi),%ebx
7cd3c8:	03 44 24 28          	add    0x28(%esp),%eax
7cd3cc:	03 4c 24 34          	add    0x34(%esp),%ecx
7cd3d0:	8b 7c 24 54          	mov    0x54(%esp),%edi
7cd3d4:	89 54 24 40          	mov    %edx,0x40(%esp)
7cd3d8:	3b c3                	cmp    %ebx,%eax
7cd3da:	0f 87 a7 00 00 00    	ja     0x7cd487
7cd3e0:	8b 44 24 40          	mov    0x40(%esp),%eax
7cd3e4:	8b 54 24 30          	mov    0x30(%esp),%edx
7cd3e8:	3b 44 24 28          	cmp    0x28(%esp),%eax
7cd3ec:	76 52                	jbe    0x7cd440
7cd3ee:	2b 44 24 28          	sub    0x28(%esp),%eax
7cd3f2:	89 44 24 40          	mov    %eax,0x40(%esp)
7cd3f6:	3b c3                	cmp    %ebx,%eax
7cd3f8:	0f 8f 9a 02 00 00    	jg     0x7cd698
7cd3fe:	2b d8                	sub    %eax,%ebx
7cd400:	03 5c 24 34          	add    0x34(%esp),%ebx
7cd404:	3b c2                	cmp    %edx,%eax
7cd406:	7d 1d                	jge    0x7cd425
7cd408:	2b d0                	sub    %eax,%edx
7cd40a:	85 c0                	test   %eax,%eax
7cd40c:	7e 13                	jle    0x7cd421
7cd40e:	8b f8                	mov    %eax,%edi
7cd410:	8a 03                	mov    (%ebx),%al
7cd412:	8d 5b 01             	lea    0x1(%ebx),%ebx
7cd415:	4f                   	dec    %edi
7cd416:	88 01                	mov    %al,(%ecx)
7cd418:	41                   	inc    %ecx
7cd419:	85 ff                	test   %edi,%edi
7cd41b:	7f f3                	jg     0x7cd410
7cd41d:	8b 7c 24 54          	mov    0x54(%esp),%edi
7cd421:	8b 5c 24 34          	mov    0x34(%esp),%ebx
7cd425:	85 d2                	test   %edx,%edx
7cd427:	7e 35                	jle    0x7cd45e
7cd429:	2b d9                	sub    %ecx,%ebx
7cd42b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
7cd430:	8a 04 19             	mov    (%ecx,%ebx,1),%al
7cd433:	8d 49 01             	lea    0x1(%ecx),%ecx
7cd436:	4a                   	dec    %edx
7cd437:	88 41 ff             	mov    %al,-0x1(%ecx)
7cd43a:	85 d2                	test   %edx,%edx
7cd43c:	7f f2                	jg     0x7cd430
7cd43e:	eb 1e                	jmp    0x7cd45e
7cd440:	8b d9                	mov    %ecx,%ebx
7cd442:	2b d8                	sub    %eax,%ebx
7cd444:	8b 44 24 30          	mov    0x30(%esp),%eax
7cd448:	85 c0                	test   %eax,%eax
7cd44a:	7e 16                	jle    0x7cd462
7cd44c:	0f 1f 40 00          	nopl   0x0(%eax)
7cd450:	8a 03                	mov    (%ebx),%al
7cd452:	8d 49 01             	lea    0x1(%ecx),%ecx
7cd455:	4a                   	dec    %edx
7cd456:	88 41 ff             	mov    %al,-0x1(%ecx)
7cd459:	43                   	inc    %ebx
7cd45a:	85 d2                	test   %edx,%edx
7cd45c:	7f f2                	jg     0x7cd450
7cd45e:	8b 44 24 30          	mov    0x30(%esp),%eax
7cd462:	8a 5c 24 12          	mov    0x12(%esp),%bl
7cd466:	8b 54 24 24          	mov    0x24(%esp),%edx
7cd46a:	8b 4c 24 28          	mov    0x28(%esp),%ecx
7cd46e:	03 c8                	add    %eax,%ecx
7cd470:	89 4c 24 28          	mov    %ecx,0x28(%esp)
7cd474:	3b 4c 24 44          	cmp    0x44(%esp),%ecx
7cd478:	0f 82 62 ef ff ff    	jb     0x7cc3e0
7cd47e:	89 4c 24 28          	mov    %ecx,0x28(%esp)
7cd482:	e9 bd 00 00 00       	jmp    0x7cd544
7cd487:	8b 5c 24 28          	mov    0x28(%esp),%ebx
7cd48b:	8b 4f 10             	mov    0x10(%edi),%ecx
7cd48e:	2b da                	sub    %edx,%ebx
7cd490:	2b 4c 24 28          	sub    0x28(%esp),%ecx
7cd494:	74 31                	je     0x7cd4c7
7cd496:	8b 44 24 38          	mov    0x38(%esp),%eax
7cd49a:	8b 54 24 34          	mov    0x34(%esp),%edx
7cd49e:	8b 6c 24 34          	mov    0x34(%esp),%ebp
7cd4a2:	8b 04 85 e8 c2 c2 00 	mov    0xc2c2e8(,%eax,4),%eax
7cd4a9:	03 44 24 2c          	add    0x2c(%esp),%eax
7cd4ad:	03 d0                	add    %eax,%edx
7cd4af:	90                   	nop
7cd4b0:	8b 47 10             	mov    0x10(%edi),%eax
7cd4b3:	48                   	dec    %eax
7cd4b4:	23 c3                	and    %ebx,%eax
7cd4b6:	8a 04 28             	mov    (%eax,%ebp,1),%al
7cd4b9:	88 44 13 01          	mov    %al,0x1(%ebx,%edx,1)
7cd4bd:	43                   	inc    %ebx
7cd4be:	83 e9 01             	sub    $0x1,%ecx
7cd4c1:	75 ed                	jne    0x7cd4b0
7cd4c3:	8b 6c 24 20          	mov    0x20(%esp),%ebp
7cd4c7:	8b 4f 10             	mov    0x10(%edi),%ecx
7cd4ca:	8b 57 34             	mov    0x34(%edi),%edx
7cd4cd:	2b ca                	sub    %edx,%ecx
7cd4cf:	03 4c 24 34          	add    0x34(%esp),%ecx
7cd4d3:	89 4c 24 4c          	mov    %ecx,0x4c(%esp)
7cd4d7:	3b 4c 24 58          	cmp    0x58(%esp),%ecx
7cd4db:	0f 8f b7 01 00 00    	jg     0x7cd698
7cd4e1:	8b 07                	mov    (%edi),%eax
7cd4e3:	51                   	push   %ecx
7cd4e4:	52                   	push   %edx
7cd4e5:	ff 77 08             	push   0x8(%edi)
7cd4e8:	8b 40 0c             	mov    0xc(%eax),%eax
7cd4eb:	ff d0                	call   *%eax
7cd4ed:	8b 4c 24 58          	mov    0x58(%esp),%ecx
7cd4f1:	83 c4 0c             	add    $0xc,%esp
7cd4f4:	3b c1                	cmp    %ecx,%eax
7cd4f6:	0f 85 d1 01 00 00    	jne    0x7cd6cd
7cd4fc:	8b 44 24 34          	mov    0x34(%esp),%eax
7cd500:	8b d0                	mov    %eax,%edx
7cd502:	29 4c 24 58          	sub    %ecx,0x58(%esp)
7cd506:	89 47 34             	mov    %eax,0x34(%edi)
7cd509:	89 47 38             	mov    %eax,0x38(%edi)
7cd50c:	8b 44 24 30          	mov    0x30(%esp),%eax
7cd510:	8b c8                	mov    %eax,%ecx
7cd512:	2b 4f 10             	sub    0x10(%edi),%ecx
7cd515:	03 4c 24 28          	add    0x28(%esp),%ecx
7cd519:	74 22                	je     0x7cd53d
7cd51b:	8b ea                	mov    %edx,%ebp
7cd51d:	0f 1f 00             	nopl   (%eax)
7cd520:	8b 47 10             	mov    0x10(%edi),%eax
7cd523:	8d 52 01             	lea    0x1(%edx),%edx
7cd526:	48                   	dec    %eax
7cd527:	23 c3                	and    %ebx,%eax
7cd529:	43                   	inc    %ebx
7cd52a:	8a 04 28             	mov    (%eax,%ebp,1),%al
7cd52d:	88 42 ff             	mov    %al,-0x1(%edx)
7cd530:	83 e9 01             	sub    $0x1,%ecx
7cd533:	75 eb                	jne    0x7cd520
7cd535:	8b 6c 24 20          	mov    0x20(%esp),%ebp
7cd539:	8b 44 24 30          	mov    0x30(%esp),%eax
7cd53d:	2b 47 10             	sub    0x10(%edi),%eax
7cd540:	01 44 24 28          	add    %eax,0x28(%esp)
7cd544:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd548:	8b 44 24 28          	mov    0x28(%esp),%eax
7cd54c:	8b 54 24 34          	mov    0x34(%esp),%edx
7cd550:	03 c2                	add    %edx,%eax
7cd552:	89 47 38             	mov    %eax,0x38(%edi)
7cd555:	8b 44 24 3c          	mov    0x3c(%esp),%eax
7cd559:	3d 00 80 00 00       	cmp    $0x8000,%eax
7cd55e:	0f 87 34 01 00 00    	ja     0x7cd698
7cd564:	8a 5c 24 12          	mov    0x12(%esp),%bl
7cd568:	85 c0                	test   %eax,%eax
7cd56a:	0f 85 bc 00 00 00    	jne    0x7cd62c
7cd570:	8a d3                	mov    %bl,%dl
7cd572:	80 e2 07             	and    $0x7,%dl
7cd575:	74 12                	je     0x7cd589
7cd577:	8b 44 24 14          	mov    0x14(%esp),%eax
7cd57b:	0f b6 cb             	movzbl %bl,%ecx
7cd57e:	83 e1 07             	and    $0x7,%ecx
7cd581:	d3 e0                	shl    %cl,%eax
7cd583:	2a da                	sub    %dl,%bl
7cd585:	89 44 24 14          	mov    %eax,0x14(%esp)
7cd589:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd58d:	0f 1f 00             	nopl   (%eax)
7cd590:	80 fb 08             	cmp    $0x8,%bl
7cd593:	73 6d                	jae    0x7cd602
7cd595:	3b f5                	cmp    %ebp,%esi
7cd597:	72 1b                	jb     0x7cd5b4
7cd599:	57                   	push   %edi
7cd59a:	e8 f1 0a 00 00       	call   0x7ce090
7cd59f:	83 c4 04             	add    $0x4,%esp
7cd5a2:	85 c0                	test   %eax,%eax
7cd5a4:	0f 85 e3 00 00 00    	jne    0x7cd68d
7cd5aa:	8b 6f 30             	mov    0x30(%edi),%ebp
7cd5ad:	8b 77 2c             	mov    0x2c(%edi),%esi
7cd5b0:	89 6c 24 20          	mov    %ebp,0x20(%esp)
7cd5b4:	8a 3e                	mov    (%esi),%bh
7cd5b6:	46                   	inc    %esi
7cd5b7:	3b f5                	cmp    %ebp,%esi
7cd5b9:	72 1b                	jb     0x7cd5d6
7cd5bb:	57                   	push   %edi
7cd5bc:	e8 cf 0a 00 00       	call   0x7ce090
7cd5c1:	83 c4 04             	add    $0x4,%esp
7cd5c4:	85 c0                	test   %eax,%eax
7cd5c6:	0f 85 c1 00 00 00    	jne    0x7cd68d
7cd5cc:	8b 6f 30             	mov    0x30(%edi),%ebp
7cd5cf:	8b 77 2c             	mov    0x2c(%edi),%esi
7cd5d2:	89 6c 24 20          	mov    %ebp,0x20(%esp)
7cd5d6:	8a 06                	mov    (%esi),%al
7cd5d8:	b9 10 00 00 00       	mov    $0x10,%ecx
7cd5dd:	0f b6 d7             	movzbl %bh,%edx
7cd5e0:	46                   	inc    %esi
7cd5e1:	c1 e2 08             	shl    $0x8,%edx
7cd5e4:	0f b6 c0             	movzbl %al,%eax
7cd5e7:	0b d0                	or     %eax,%edx
7cd5e9:	0f b6 c3             	movzbl %bl,%eax
7cd5ec:	2b c8                	sub    %eax,%ecx
7cd5ee:	80 c3 10             	add    $0x10,%bl
7cd5f1:	d3 e2                	shl    %cl,%edx
7cd5f3:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd5f7:	0b ca                	or     %edx,%ecx
7cd5f9:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7cd5fd:	80 fb 08             	cmp    $0x8,%bl
7cd600:	72 93                	jb     0x7cd595
7cd602:	8b c1                	mov    %ecx,%eax
7cd604:	80 c3 f8             	add    $0xf8,%bl
7cd607:	c1 e8 18             	shr    $0x18,%eax
7cd60a:	c1 e1 08             	shl    $0x8,%ecx
7cd60d:	89 4c 24 14          	mov    %ecx,0x14(%esp)
7cd611:	88 5c 24 12          	mov    %bl,0x12(%esp)
7cd615:	3d ff 00 00 00       	cmp    $0xff,%eax
7cd61a:	0f 85 70 ff ff ff    	jne    0x7cd590
7cd620:	c6 47 22 00          	movb   $0x0,0x22(%edi)
7cd624:	c7 44 24 3c 00 80 00 	movl   $0x8000,0x3c(%esp)
7cd62b:	00
7cd62c:	8b 44 24 28          	mov    0x28(%esp),%eax
7cd630:	3b 47 10             	cmp    0x10(%edi),%eax
7cd633:	75 43                	jne    0x7cd678
7cd635:	8b 4f 38             	mov    0x38(%edi),%ecx
7cd638:	8b 57 34             	mov    0x34(%edi),%edx
7cd63b:	2b ca                	sub    %edx,%ecx
7cd63d:	89 4c 24 4c          	mov    %ecx,0x4c(%esp)
7cd641:	3b 4c 24 58          	cmp    0x58(%esp),%ecx
7cd645:	7d 65                	jge    0x7cd6ac
7cd647:	8b 07                	mov    (%edi),%eax
7cd649:	51                   	push   %ecx
7cd64a:	52                   	push   %edx
7cd64b:	ff 77 08             	push   0x8(%edi)
7cd64e:	8b 40 0c             	mov    0xc(%eax),%eax
7cd651:	ff d0                	call   *%eax
7cd653:	8b 4c 24 58          	mov    0x58(%esp),%ecx
7cd657:	83 c4 0c             	add    $0xc,%esp
7cd65a:	3b c1                	cmp    %ecx,%eax
7cd65c:	75 6f                	jne    0x7cd6cd
7cd65e:	8b 44 24 34          	mov    0x34(%esp),%eax
7cd662:	29 4c 24 58          	sub    %ecx,0x58(%esp)
7cd666:	8b 4c 24 14          	mov    0x14(%esp),%ecx
7cd66a:	89 47 34             	mov    %eax,0x34(%edi)
7cd66d:	89 47 38             	mov    %eax,0x38(%edi)
7cd670:	c7 44 24 28 00 00 00 	movl   $0x0,0x28(%esp)
7cd677:	00
7cd678:	8b 47 38             	mov    0x38(%edi),%eax
7cd67b:	2b 47 34             	sub    0x34(%edi),%eax
7cd67e:	3b 44 24 58          	cmp    0x58(%esp),%eax
7cd682:	7d 28                	jge    0x7cd6ac
7cd684:	8b 54 24 24          	mov    0x24(%esp),%edx
7cd688:	e9 63 ec ff ff       	jmp    0x7cc2f0
7cd68d:	8b 47 24             	mov    0x24(%edi),%eax
7cd690:	5d                   	pop    %ebp
7cd691:	5e                   	pop    %esi
7cd692:	5f                   	pop    %edi
7cd693:	5b                   	pop    %ebx
7cd694:	83 c4 40             	add    $0x40,%esp
7cd697:	c3                   	ret
7cd698:	5d                   	pop    %ebp