50a480:	7f b6                	jg     0x50a438
50a482:	85 d2                	test   %edx,%edx
50a484:	7e 1a                	jle    0x50a4a0
50a486:	0f b6 06             	movzbl (%esi),%eax
50a489:	4a                   	dec    %edx
50a48a:	c1 e7 08             	shl    $0x8,%edi
50a48d:	46                   	inc    %esi
50a48e:	0b f8                	or     %eax,%edi
50a490:	85 d2                	test   %edx,%edx
50a492:	7f f2                	jg     0x50a486
50a494:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
50a49a:	77 9c                	ja     0x50a438
50a49c:	eb 02                	jmp    0x50a4a0
50a49e:	8b fa                	mov    %edx,%edi
50a4a0:	8b 44 24 1c          	mov    0x1c(%esp),%eax
50a4a4:	8b 54 24 10          	mov    0x10(%esp),%edx
50a4a8:	89 38                	mov    %edi,(%eax)
50a4aa:	8b 5c 24 18          	mov    0x18(%esp),%ebx
50a4ae:	8b 03                	mov    (%ebx),%eax
50a4b0:	2b c6                	sub    %esi,%eax
50a4b2:	03 44 24 28          	add    0x28(%esp),%eax
50a4b6:	3b f8                	cmp    %eax,%edi
50a4b8:	7e 22                	jle    0x50a4dc
50a4ba:	6a 5b                	push   $0x5b
50a4bc:	68 28 ae 62 00       	push   $0x62ae28
50a4c1:	68 9b 00 00 00       	push   $0x9b
50a4c6:	6a 72                	push   $0x72
50a4c8:	6a 0d                	push   $0xd
50a4ca:	e8 b1 ea fc ff       	call   0x4d8f80
50a4cf:	8b 54 24 24          	mov    0x24(%esp),%edx
50a4d3:	83 c4 14             	add    $0x14,%esp
50a4d6:	81 ca 80 00 00 00    	or     $0x80,%edx
50a4dc:	5f                   	pop    %edi
50a4dd:	89 33                	mov    %esi,(%ebx)
50a4df:	0b ea                	or     %edx,%ebp
50a4e1:	5e                   	pop    %esi
50a4e2:	8b c5                	mov    %ebp,%eax
50a4e4:	5d                   	pop    %ebp
50a4e5:	5b                   	pop    %ebx
50a4e6:	59                   	pop    %ecx
50a4e7:	c3                   	ret
50a4e8:	cc                   	int3
50a4e9:	cc                   	int3
50a4ea:	cc                   	int3
50a4eb:	cc                   	int3
50a4ec:	cc                   	int3
50a4ed:	cc                   	int3
50a4ee:	cc                   	int3
50a4ef:	cc                   	int3
50a4f0:	8b 54 24 08          	mov    0x8(%esp),%edx
50a4f4:	b9 01 00 00 00       	mov    $0x1,%ecx
50a4f9:	85 d2                	test   %edx,%edx
50a4fb:	78 3c                	js     0x50a539
50a4fd:	8b 44 24 0c          	mov    0xc(%esp),%eax
50a501:	83 f8 1f             	cmp    $0x1f,%eax
50a504:	7c 08                	jl     0x50a50e
50a506:	c1 e8 07             	shr    $0x7,%eax
50a509:	41                   	inc    %ecx
50a50a:	85 c0                	test   %eax,%eax
50a50c:	75 f8                	jne    0x50a506
50a50e:	83 7c 24 04 02       	cmpl   $0x2,0x4(%esp)
50a513:	75 05                	jne    0x50a51a
50a515:	83 c1 03             	add    $0x3,%ecx
50a518:	eb 10                	jmp    0x50a52a
50a51a:	41                   	inc    %ecx
50a51b:	83 fa 7f             	cmp    $0x7f,%edx
50a51e:	7e 0a                	jle    0x50a52a
50a520:	8b c2                	mov    %edx,%eax
50a522:	c1 e8 08             	shr    $0x8,%eax
50a525:	41                   	inc    %ecx
50a526:	85 c0                	test   %eax,%eax
50a528:	75 f8                	jne    0x50a522
50a52a:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
50a52f:	2b c2                	sub    %edx,%eax
50a531:	3b c8                	cmp    %eax,%ecx
50a533:	7d 04                	jge    0x50a539
50a535:	8d 04 11             	lea    (%ecx,%edx,1),%eax
50a538:	c3                   	ret
50a539:	83 c8 ff             	or     $0xffffffff,%eax
50a53c:	c3                   	ret
50a53d:	cc                   	int3
50a53e:	cc                   	int3
50a53f:	cc                   	int3
50a540:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50a544:	8b 01                	mov    (%ecx),%eax
50a546:	66 c7 00 00 00       	movw   $0x0,(%eax)
50a54b:	83 c0 02             	add    $0x2,%eax
50a54e:	89 01                	mov    %eax,(%ecx)
50a550:	b8 02 00 00 00       	mov    $0x2,%eax
50a555:	c3                   	ret
50a556:	cc                   	int3
50a557:	cc                   	int3
50a558:	cc                   	int3
50a559:	cc                   	int3
50a55a:	cc                   	int3
50a55b:	cc                   	int3
50a55c:	cc                   	int3
50a55d:	cc                   	int3
50a55e:	cc                   	int3
50a55f:	cc                   	int3
50a560:	8b 54 24 08          	mov    0x8(%esp),%edx
50a564:	8a 44 24 14          	mov    0x14(%esp),%al
50a568:	f7 da                	neg    %edx
50a56a:	8b 4c 24 10          	mov    0x10(%esp),%ecx
50a56e:	53                   	push   %ebx
50a56f:	8b 5c 24 08          	mov    0x8(%esp),%ebx
50a573:	1a d2                	sbb    %dl,%dl
50a575:	56                   	push   %esi
50a576:	57                   	push   %edi
50a577:	80 e2 20             	and    $0x20,%dl
50a57a:	24 c0                	and    $0xc0,%al
50a57c:	8b 3b                	mov    (%ebx),%edi
50a57e:	0a d0                	or     %al,%dl
50a580:	8d 77 01             	lea    0x1(%edi),%esi
50a583:	83 f9 1f             	cmp    $0x1f,%ecx
50a586:	7d 09                	jge    0x50a591
50a588:	80 e1 1f             	and    $0x1f,%cl
50a58b:	0a ca                	or     %dl,%cl
50a58d:	88 0f                	mov    %cl,(%edi)
50a58f:	eb 3d                	jmp    0x50a5ce
50a591:	80 ca 1f             	or     $0x1f,%dl
50a594:	8b c1                	mov    %ecx,%eax
50a596:	88 17                	mov    %dl,(%edi)
50a598:	33 ff                	xor    %edi,%edi
50a59a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
50a5a0:	8b df                	mov    %edi,%ebx
50a5a2:	c1 e8 07             	shr    $0x7,%eax
50a5a5:	47                   	inc    %edi
50a5a6:	85 c0                	test   %eax,%eax
50a5a8:	75 f6                	jne    0x50a5a0
50a5aa:	85 ff                	test   %edi,%edi
50a5ac:	7e 1a                	jle    0x50a5c8
50a5ae:	8b d7                	mov    %edi,%edx
50a5b0:	4a                   	dec    %edx
50a5b1:	8a c1                	mov    %cl,%al
50a5b3:	24 7f                	and    $0x7f,%al
50a5b5:	88 04 32             	mov    %al,(%edx,%esi,1)
50a5b8:	3b d3                	cmp    %ebx,%edx
50a5ba:	74 05                	je     0x50a5c1
50a5bc:	0c 80                	or     $0x80,%al
50a5be:	88 04 32             	mov    %al,(%edx,%esi,1)
50a5c1:	c1 f9 07             	sar    $0x7,%ecx
50a5c4:	85 d2                	test   %edx,%edx
50a5c6:	7f e8                	jg     0x50a5b0
50a5c8:	8b 5c 24 10          	mov    0x10(%esp),%ebx
50a5cc:	03 f7                	add    %edi,%esi
50a5ce:	83 7c 24 14 02       	cmpl   $0x2,0x14(%esp)
50a5d3:	75 0a                	jne    0x50a5df
50a5d5:	c6 06 80             	movb   $0x80,(%esi)
50a5d8:	46                   	inc    %esi
50a5d9:	5f                   	pop    %edi
50a5da:	89 33                	mov    %esi,(%ebx)
50a5dc:	5e                   	pop    %esi
50a5dd:	5b                   	pop    %ebx
50a5de:	c3                   	ret
50a5df:	8b 4c 24 18          	mov    0x18(%esp),%ecx
50a5e3:	83 f9 7f             	cmp    $0x7f,%ecx
50a5e6:	7f 09                	jg     0x50a5f1
50a5e8:	88 0e                	mov    %cl,(%esi)
50a5ea:	46                   	inc    %esi
50a5eb:	5f                   	pop    %edi
50a5ec:	89 33                	mov    %esi,(%ebx)
50a5ee:	5e                   	pop    %esi
50a5ef:	5b                   	pop    %ebx
50a5f0:	c3                   	ret
50a5f1:	8b c1                	mov    %ecx,%eax
50a5f3:	33 d2                	xor    %edx,%edx
50a5f5:	c1 e8 08             	shr    $0x8,%eax
50a5f8:	42                   	inc    %edx
50a5f9:	85 c0                	test   %eax,%eax
50a5fb:	75 f8                	jne    0x50a5f5
50a5fd:	8a c2                	mov    %dl,%al
50a5ff:	0c 80                	or     $0x80,%al
50a601:	88 06                	mov    %al,(%esi)
50a603:	46                   	inc    %esi
50a604:	85 d2                	test   %edx,%edx
50a606:	7e 13                	jle    0x50a61b
50a608:	8b c2                	mov    %edx,%eax
50a60a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
50a610:	48                   	dec    %eax
50a611:	88 0c 30             	mov    %cl,(%eax,%esi,1)
50a614:	c1 f9 08             	sar    $0x8,%ecx
50a617:	85 c0                	test   %eax,%eax
50a619:	7f f5                	jg     0x50a610
50a61b:	03 f2                	add    %edx,%esi
50a61d:	5f                   	pop    %edi
50a61e:	89 33                	mov    %esi,(%ebx)
50a620:	5e                   	pop    %esi
50a621:	5b                   	pop    %ebx
50a622:	c3                   	ret
50a623:	cc                   	int3
50a624:	cc                   	int3
50a625:	cc                   	int3
50a626:	cc                   	int3
50a627:	cc                   	int3
50a628:	cc                   	int3
50a629:	cc                   	int3
50a62a:	cc                   	int3
50a62b:	cc                   	int3
50a62c:	cc                   	int3
50a62d:	cc                   	int3
50a62e:	cc                   	int3
50a62f:	cc                   	int3
50a630:	56                   	push   %esi
50a631:	8b 74 24 08          	mov    0x8(%esp),%esi
50a635:	85 f6                	test   %esi,%esi
50a637:	74 35                	je     0x50a66e
50a639:	f6 46 0c 10          	testb  $0x10,0xc(%esi)
50a63d:	75 15                	jne    0x50a654
50a63f:	68 55 01 00 00       	push   $0x155
50a644:	68 28 ae 62 00       	push   $0x62ae28
50a649:	ff 76 08             	push   0x8(%esi)
50a64c:	e8 2f 61 fd ff       	call   0x4e0780
50a651:	83 c4 0c             	add    $0xc,%esp
50a654:	83 7c 24 0c 00       	cmpl   $0x0,0xc(%esp)
50a659:	75 13                	jne    0x50a66e
50a65b:	68 57 01 00 00       	push   $0x157
50a660:	68 28 ae 62 00       	push   $0x62ae28
50a665:	56                   	push   %esi
50a666:	e8 15 61 fd ff       	call   0x4e0780
50a66b:	83 c4 0c             	add    $0xc,%esp
50a66e:	5e                   	pop    %esi
50a66f:	c3                   	ret
50a670:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50a674:	85 c9                	test   %ecx,%ecx
50a676:	74 3f                	je     0x50a6b7
50a678:	8b 54 24 08          	mov    0x8(%esp),%edx
50a67c:	85 d2                	test   %edx,%edx
50a67e:	74 37                	je     0x50a6b7
50a680:	8b 01                	mov    (%ecx),%eax
50a682:	3b 02                	cmp    (%edx),%eax
50a684:	75 31                	jne    0x50a6b7
50a686:	83 e8 01             	sub    $0x1,%eax
50a689:	74 25                	je     0x50a6b0
50a68b:	83 e8 04             	sub    $0x4,%eax
50a68e:	74 1d                	je     0x50a6ad
50a690:	ff 72 04             	push   0x4(%edx)
50a693:	ff 71 04             	push   0x4(%ecx)
50a696:	83 e8 01             	sub    $0x1,%eax
50a699:	74 09                	je     0x50a6a4
50a69b:	e8 10 f8 ff ff       	call   0x509eb0
50a6a0:	83 c4 08             	add    $0x8,%esp
50a6a3:	c3                   	ret
50a6a4:	e8 17 0a 00 00       	call   0x50b0c0
50a6a9:	83 c4 08             	add    $0x8,%esp
50a6ac:	c3                   	ret
50a6ad:	33 c0                	xor    %eax,%eax
50a6af:	c3                   	ret
50a6b0:	8b 41 04             	mov    0x4(%ecx),%eax
50a6b3:	2b 42 04             	sub    0x4(%edx),%eax
50a6b6:	c3                   	ret
50a6b7:	83 c8 ff             	or     $0xffffffff,%eax
50a6ba:	c3                   	ret
50a6bb:	cc                   	int3
50a6bc:	cc                   	int3
50a6bd:	cc                   	int3
50a6be:	cc                   	int3
50a6bf:	cc                   	int3
50a6c0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50a6c4:	8b 01                	mov    (%ecx),%eax
50a6c6:	83 f8 01             	cmp    $0x1,%eax
50a6c9:	74 0d                	je     0x50a6d8
50a6cb:	83 f8 05             	cmp    $0x5,%eax
50a6ce:	74 08                	je     0x50a6d8
50a6d0:	83 79 04 00          	cmpl   $0x0,0x4(%ecx)
50a6d4:	75 02                	jne    0x50a6d8
50a6d6:	33 c0                	xor    %eax,%eax
50a6d8:	c3                   	ret
50a6d9:	cc                   	int3
50a6da:	cc                   	int3
50a6db:	cc                   	int3
50a6dc:	cc                   	int3
50a6dd:	cc                   	int3
50a6de:	cc                   	int3
50a6df:	cc                   	int3
50a6e0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50a6e4:	8b 01                	mov    (%ecx),%eax
50a6e6:	83 f8 01             	cmp    $0x1,%eax
50a6e9:	74 20                	je     0x50a70b
50a6eb:	83 f8 05             	cmp    $0x5,%eax
50a6ee:	74 1b                	je     0x50a70b
50a6f0:	83 79 04 00          	cmpl   $0x0,0x4(%ecx)
50a6f4:	74 15                	je     0x50a70b
50a6f6:	6a 00                	push   $0x0
50a6f8:	8d 44 24 08          	lea    0x8(%esp),%eax
50a6fc:	6a 00                	push   $0x0
50a6fe:	50                   	push   %eax
50a6ff:	e8 ac 1d fe ff       	call   0x4ec4b0
50a704:	8b 4c 24 10          	mov    0x10(%esp),%ecx
50a708:	83 c4 0c             	add    $0xc,%esp
50a70b:	8b 44 24 08          	mov    0x8(%esp),%eax
50a70f:	83 f8 01             	cmp    $0x1,%eax
50a712:	89 01                	mov    %eax,(%ecx)
50a714:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
50a718:	8b 44 24 04          	mov    0x4(%esp),%eax
50a71c:	75 0a                	jne    0x50a728
50a71e:	f7 d9                	neg    %ecx
50a720:	1b c9                	sbb    %ecx,%ecx
50a722:	81 e1 ff 00 00 00    	and    $0xff,%ecx
50a728:	89 48 04             	mov    %ecx,0x4(%eax)
50a72b:	c3                   	ret
50a72c:	cc                   	int3
50a72d:	cc                   	int3
50a72e:	cc                   	int3
50a72f:	cc                   	int3
50a730:	56                   	push   %esi
50a731:	8b 74 24 10          	mov    0x10(%esp),%esi
50a735:	57                   	push   %edi
50a736:	8b 7c 24 10          	mov    0x10(%esp),%edi
50a73a:	85 f6                	test   %esi,%esi
50a73c:	74 52                	je     0x50a790
50a73e:	83 ff 01             	cmp    $0x1,%edi
50a741:	74 4d                	je     0x50a790
50a743:	56                   	push   %esi
50a744:	83 ff 06             	cmp    $0x6,%edi
50a747:	75 20                	jne    0x50a769
50a749:	e8 e2 09 00 00       	call   0x50b130
50a74e:	83 c4 04             	add    $0x4,%esp
50a751:	85 c0                	test   %eax,%eax
50a753:	74 20                	je     0x50a775
50a755:	50                   	push   %eax
50a756:	57                   	push   %edi
50a757:	ff 74 24 14          	push   0x14(%esp)
50a75b:	e8 80 ff ff ff       	call   0x50a6e0
50a760:	83 c4 0c             	add    $0xc,%esp
50a763:	8d 47 fb             	lea    -0x5(%edi),%eax
50a766:	5f                   	pop    %edi
50a767:	5e                   	pop    %esi
50a768:	c3                   	ret
50a769:	e8 c2 f8 ff ff       	call   0x50a030
50a76e:	83 c4 04             	add    $0x4,%esp
50a771:	85 c0                	test   %eax,%eax
50a773:	75 05                	jne    0x50a77a
50a775:	5f                   	pop    %edi
50a776:	33 c0                	xor    %eax,%eax
50a778:	5e                   	pop    %esi
50a779:	c3                   	ret
50a77a:	50                   	push   %eax
50a77b:	57                   	push   %edi
50a77c:	ff 74 24 14          	push   0x14(%esp)
50a780:	e8 5b ff ff ff       	call   0x50a6e0
50a785:	83 c4 0c             	add    $0xc,%esp
50a788:	b8 01 00 00 00       	mov    $0x1,%eax
50a78d:	5f                   	pop    %edi
50a78e:	5e                   	pop    %esi
50a78f:	c3                   	ret
50a790:	8b 44 24 0c          	mov    0xc(%esp),%eax
50a794:	89 44 24 14          	mov    %eax,0x14(%esp)
50a798:	8b 08                	mov    (%eax),%ecx
50a79a:	83 f9 01             	cmp    $0x1,%ecx