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
50a79d:	74 20                	je     0x50a7bf
50a79f:	83 f9 05             	cmp    $0x5,%ecx
50a7a2:	74 1b                	je     0x50a7bf
50a7a4:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
50a7a8:	74 15                	je     0x50a7bf
50a7aa:	6a 00                	push   $0x0
50a7ac:	8d 44 24 18          	lea    0x18(%esp),%eax
50a7b0:	6a 00                	push   $0x0
50a7b2:	50                   	push   %eax
50a7b3:	e8 f8 1c fe ff       	call   0x4ec4b0
50a7b8:	8b 44 24 20          	mov    0x20(%esp),%eax
50a7bc:	83 c4 0c             	add    $0xc,%esp
50a7bf:	89 38                	mov    %edi,(%eax)
50a7c1:	8b 44 24 14          	mov    0x14(%esp),%eax
50a7c5:	83 ff 01             	cmp    $0x1,%edi
50a7c8:	75 0a                	jne    0x50a7d4
50a7ca:	f7 de                	neg    %esi
50a7cc:	1b f6                	sbb    %esi,%esi
50a7ce:	81 e6 ff 00 00 00    	and    $0xff,%esi
50a7d4:	89 70 04             	mov    %esi,0x4(%eax)
50a7d7:	b8 01 00 00 00       	mov    $0x1,%eax
50a7dc:	5f                   	pop    %edi
50a7dd:	5e                   	pop    %esi
50a7de:	c3                   	ret
50a7df:	cc                   	int3
50a7e0:	8b 44 24 08          	mov    0x8(%esp),%eax
50a7e4:	85 c0                	test   %eax,%eax
50a7e6:	74 1a                	je     0x50a802
50a7e8:	83 38 10             	cmpl   $0x10,(%eax)
50a7eb:	75 15                	jne    0x50a802
50a7ed:	8b 40 04             	mov    0x4(%eax),%eax
50a7f0:	85 c0                	test   %eax,%eax
50a7f2:	74 0e                	je     0x50a802
50a7f4:	ff 74 24 04          	push   0x4(%esp)
50a7f8:	50                   	push   %eax
50a7f9:	e8 62 9e 02 00       	call   0x534660
50a7fe:	83 c4 08             	add    $0x8,%esp
50a801:	c3                   	ret
50a802:	33 c0                	xor    %eax,%eax
50a804:	c3                   	ret
50a805:	cc                   	int3
50a806:	cc                   	int3
50a807:	cc                   	int3
50a808:	cc                   	int3
50a809:	cc                   	int3
50a80a:	cc                   	int3
50a80b:	cc                   	int3
50a80c:	cc                   	int3
50a80d:	cc                   	int3
50a80e:	cc                   	int3
50a80f:	cc                   	int3
50a810:	56                   	push   %esi
50a811:	8b 74 24 08          	mov    0x8(%esp),%esi
50a815:	85 f6                	test   %esi,%esi
50a817:	74 7e                	je     0x50a897
50a819:	8b 46 14             	mov    0x14(%esi),%eax
50a81c:	a8 04                	test   $0x4,%al
50a81e:	74 36                	je     0x50a856
50a820:	68 64 01 00 00       	push   $0x164
50a825:	68 40 ae 62 00       	push   $0x62ae40
50a82a:	ff 36                	push   (%esi)
50a82c:	e8 4f 5f fd ff       	call   0x4e0780
50a831:	68 65 01 00 00       	push   $0x165
50a836:	68 40 ae 62 00       	push   $0x62ae40
50a83b:	ff 76 04             	push   0x4(%esi)
50a83e:	e8 3d 5f fd ff       	call   0x4e0780
50a843:	8b 46 14             	mov    0x14(%esi),%eax
50a846:	83 c4 18             	add    $0x18,%esp
50a849:	c7 46 04 00 00 00 00 	movl   $0x0,0x4(%esi)
50a850:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
50a856:	a8 08                	test   $0x8,%al
50a858:	74 26                	je     0x50a880
50a85a:	68 6a 01 00 00       	push   $0x16a
50a85f:	68 40 ae 62 00       	push   $0x62ae40
50a864:	ff 76 10             	push   0x10(%esi)
50a867:	e8 14 5f fd ff       	call   0x4e0780
50a86c:	8b 46 14             	mov    0x14(%esi),%eax
50a86f:	83 c4 0c             	add    $0xc,%esp
50a872:	c7 46 10 00 00 00 00 	movl   $0x0,0x10(%esi)
50a879:	c7 46 0c 00 00 00 00 	movl   $0x0,0xc(%esi)
50a880:	a8 01                	test   $0x1,%al
50a882:	74 13                	je     0x50a897
50a884:	68 6f 01 00 00       	push   $0x16f
50a889:	68 40 ae 62 00       	push   $0x62ae40
50a88e:	56                   	push   %esi
50a88f:	e8 ec 5e fd ff       	call   0x4e0780
50a894:	83 c4 0c             	add    $0xc,%esp
50a897:	5e                   	pop    %esi
50a898:	c3                   	ret
50a899:	cc                   	int3
50a89a:	cc                   	int3
50a89b:	cc                   	int3
50a89c:	cc                   	int3
50a89d:	cc                   	int3
50a89e:	cc                   	int3
50a89f:	cc                   	int3
50a8a0:	68 53 01 00 00       	push   $0x153
50a8a5:	68 40 ae 62 00       	push   $0x62ae40
50a8aa:	6a 18                	push   $0x18
50a8ac:	e8 8f 61 fd ff       	call   0x4e0a40
50a8b1:	83 c4 0c             	add    $0xc,%esp
50a8b4:	85 c0                	test   %eax,%eax
50a8b6:	75 1b                	jne    0x50a8d3
50a8b8:	68 55 01 00 00       	push   $0x155
50a8bd:	68 40 ae 62 00       	push   $0x62ae40
50a8c2:	6a 41                	push   $0x41
50a8c4:	6a 7b                	push   $0x7b
50a8c6:	6a 0d                	push   $0xd
50a8c8:	e8 b3 e6 fc ff       	call   0x4d8f80
50a8cd:	83 c4 14             	add    $0x14,%esp
50a8d0:	33 c0                	xor    %eax,%eax
50a8d2:	c3                   	ret
50a8d3:	c7 40 14 01 00 00 00 	movl   $0x1,0x14(%eax)
50a8da:	c3                   	ret
50a8db:	cc                   	int3
50a8dc:	cc                   	int3
50a8dd:	cc                   	int3
50a8de:	cc                   	int3
50a8df:	cc                   	int3
50a8e0:	b8 38 00 00 00       	mov    $0x38,%eax
50a8e5:	e8 c6 6e 0c 00       	call   0x5d17b0
50a8ea:	a1 c0 14 69 00       	mov    0x6914c0,%eax
50a8ef:	33 c4                	xor    %esp,%eax
50a8f1:	89 44 24 34          	mov    %eax,0x34(%esp)
50a8f5:	8b 44 24 3c          	mov    0x3c(%esp),%eax
50a8f9:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
50a8fd:	8b 54 24 44          	mov    0x44(%esp),%edx
50a901:	53                   	push   %ebx
50a902:	56                   	push   %esi
50a903:	8b 74 24 50          	mov    0x50(%esp),%esi
50a907:	33 db                	xor    %ebx,%ebx
50a909:	57                   	push   %edi
50a90a:	33 ff                	xor    %edi,%edi
50a90c:	89 44 24 24          	mov    %eax,0x24(%esp)
50a910:	89 5c 24 14          	mov    %ebx,0x14(%esp)
50a914:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
50a918:	c7 44 24 1c 18 00 00 	movl   $0x18,0x1c(%esp)
50a91f:	00
50a920:	85 f6                	test   %esi,%esi
50a922:	75 14                	jne    0x50a938
50a924:	5f                   	pop    %edi
50a925:	5e                   	pop    %esi
50a926:	33 c0                	xor    %eax,%eax
50a928:	5b                   	pop    %ebx
50a929:	8b 4c 24 34          	mov    0x34(%esp),%ecx
50a92d:	33 cc                	xor    %esp,%ecx
50a92f:	e8 f2 70 0c 00       	call   0x5d1a26
50a934:	83 c4 38             	add    $0x38,%esp
50a937:	c3                   	ret
50a938:	55                   	push   %ebp
50a939:	83 fe ff             	cmp    $0xffffffff,%esi
50a93c:	75 0e                	jne    0x50a94c
50a93e:	8b f2                	mov    %edx,%esi
50a940:	8d 6e 01             	lea    0x1(%esi),%ebp
50a943:	8a 06                	mov    (%esi),%al
50a945:	46                   	inc    %esi
50a946:	84 c0                	test   %al,%al
50a948:	75 f9                	jne    0x50a943
50a94a:	2b f5                	sub    %ebp,%esi
50a94c:	0f be 02             	movsbl (%edx),%eax
50a94f:	4e                   	dec    %esi
50a950:	83 c0 d0             	add    $0xffffffd0,%eax
50a953:	42                   	inc    %edx
50a954:	89 44 24 24          	mov    %eax,0x24(%esp)
50a958:	83 f8 02             	cmp    $0x2,%eax
50a95b:	0f 87 f7 02 00 00    	ja     0x50ac58
50a961:	85 f6                	test   %esi,%esi
50a963:	7f 11                	jg     0x50a976
50a965:	6a 4e                	push   $0x4e
50a967:	68 40 ae 62 00       	push   $0x62ae40
50a96c:	68 8a 00 00 00       	push   $0x8a
50a971:	e9 eb 02 00 00       	jmp    0x50ac61
50a976:	8b c2                	mov    %edx,%eax
50a978:	4e                   	dec    %esi
50a979:	89 74 24 58          	mov    %esi,0x58(%esp)