51c787:	0f 84 db 03 00 00    	je     0x51cb68
51c78d:	8b 74 24 40          	mov    0x40(%esp),%esi
51c791:	8b 7c 24 20          	mov    0x20(%esp),%edi
51c795:	ff 74 24 48          	push   0x48(%esp)
51c799:	6a 00                	push   $0x0
51c79b:	ff 74 24 2c          	push   0x2c(%esp)
51c79f:	e8 bc d1 fc ff       	call   0x4e9960
51c7a4:	ff 44 24 54          	incl   0x54(%esp)
51c7a8:	83 c4 0c             	add    $0xc,%esp
51c7ab:	85 c0                	test   %eax,%eax
51c7ad:	0f 84 b5 03 00 00    	je     0x51cb68
51c7b3:	85 f6                	test   %esi,%esi
51c7b5:	75 12                	jne    0x51c7c9
51c7b7:	57                   	push   %edi
51c7b8:	53                   	push   %ebx
51c7b9:	e8 92 4a fc ff       	call   0x4e1250
51c7be:	83 c4 08             	add    $0x8,%esp
51c7c1:	85 c0                	test   %eax,%eax
51c7c3:	0f 8e 9f 03 00 00    	jle    0x51cb68
51c7c9:	6a 00                	push   $0x0
51c7cb:	ff 74 24 1c          	push   0x1c(%esp)
51c7cf:	8d 84 24 84 00 00 00 	lea    0x84(%esp),%eax
51c7d6:	6a 00                	push   $0x0
51c7d8:	50                   	push   %eax
51c7d9:	57                   	push   %edi
51c7da:	53                   	push   %ebx
51c7db:	e8 00 e2 ff ff       	call   0x51a9e0
51c7e0:	83 c4 18             	add    $0x18,%esp
51c7e3:	85 c0                	test   %eax,%eax
51c7e5:	0f 84 7d 03 00 00    	je     0x51cb68
51c7eb:	8b 4c 24 30          	mov    0x30(%esp),%ecx
51c7ef:	8d 74 24 7c          	lea    0x7c(%esp),%esi
51c7f3:	8b 54 24 60          	mov    0x60(%esp),%edx
51c7f7:	3b ca                	cmp    %edx,%ecx
51c7f9:	7e 08                	jle    0x51c803
51c7fb:	8b c1                	mov    %ecx,%eax
51c7fd:	2b c2                	sub    %edx,%eax
51c7ff:	03 f0                	add    %eax,%esi
51c801:	eb 1f                	jmp    0x51c822
51c803:	7d 1d                	jge    0x51c822
51c805:	8b c2                	mov    %edx,%eax
51c807:	2b c1                	sub    %ecx,%eax
51c809:	50                   	push   %eax
51c80a:	8d 84 24 80 00 00 00 	lea    0x80(%esp),%eax
51c811:	03 c1                	add    %ecx,%eax
51c813:	6a 00                	push   $0x0
51c815:	50                   	push   %eax
51c816:	e8 55 64 0b 00       	call   0x5d2c70
51c81b:	8b 54 24 6c          	mov    0x6c(%esp),%edx
51c81f:	83 c4 0c             	add    $0xc,%esp
51c822:	ff 74 24 28          	push   0x28(%esp)
51c826:	80 0e 80             	orb    $0x80,(%esi)
51c829:	80 4c 16 ff 01       	orb    $0x1,-0x1(%esi,%edx,1)
51c82e:	52                   	push   %edx
51c82f:	56                   	push   %esi
51c830:	e8 3b ce fb ff       	call   0x4d9670
51c835:	83 c4 0c             	add    $0xc,%esp
51c838:	85 c0                	test   %eax,%eax
51c83a:	0f 84 28 03 00 00    	je     0x51cb68
51c840:	ff 74 24 24          	push   0x24(%esp)
51c844:	8b 74 24 44          	mov    0x44(%esp),%esi
51c848:	33 c0                	xor    %eax,%eax
51c84a:	85 f6                	test   %esi,%esi
51c84c:	0f 95 c0             	setne  %al
51c84f:	50                   	push   %eax
51c850:	ff 74 24 18          	push   0x18(%esp)
51c854:	6a 40                	push   $0x40
51c856:	ff 74 24 38          	push   0x38(%esp)
51c85a:	e8 e1 d5 fc ff       	call   0x4e9e40
51c85f:	83 c4 14             	add    $0x14,%esp
51c862:	85 c0                	test   %eax,%eax
51c864:	7f 31                	jg     0x51c897
51c866:	0f 85 fc 02 00 00    	jne    0x51cb68
51c86c:	85 f6                	test   %esi,%esi
51c86e:	0f 84 21 ff ff ff    	je     0x51c795
51c874:	68 b4 01 00 00       	push   $0x1b4
51c879:	68 30 08 64 00       	push   $0x640830
51c87e:	6a 71                	push   $0x71
51c880:	6a 7e                	push   $0x7e
51c882:	6a 0a                	push   $0xa
51c884:	33 f6                	xor    %esi,%esi
51c886:	e8 f5 c6 fb ff       	call   0x4d8f80
51c88b:	8b 6c 24 24          	mov    0x24(%esp),%ebp
51c88f:	83 c4 14             	add    $0x14,%esp
51c892:	e9 cd fc ff ff       	jmp    0x51c564
51c897:	8b 44 24 5c          	mov    0x5c(%esp),%eax
51c89b:	85 c0                	test   %eax,%eax
51c89d:	74 0b                	je     0x51c8aa
51c89f:	57                   	push   %edi
51c8a0:	53                   	push   %ebx
51c8a1:	50                   	push   %eax
51c8a2:	e8 29 65 0b 00       	call   0x5d2dd0
51c8a7:	83 c4 0c             	add    $0xc,%esp
51c8aa:	8b 74 24 24          	mov    0x24(%esp),%esi
51c8ae:	6a 00                	push   $0x0
51c8b0:	6a 02                	push   $0x2
51c8b2:	56                   	push   %esi
51c8b3:	e8 a8 d0 fc ff       	call   0x4e9960
51c8b8:	83 c4 0c             	add    $0xc,%esp
51c8bb:	85 c0                	test   %eax,%eax
51c8bd:	0f 84 a5 02 00 00    	je     0x51cb68
51c8c3:	6a 00                	push   $0x0
51c8c5:	6a 03                	push   $0x3
51c8c7:	56                   	push   %esi
51c8c8:	e8 93 d0 fc ff       	call   0x4e9960
51c8cd:	83 c4 0c             	add    $0xc,%esp
51c8d0:	85 c0                	test   %eax,%eax
51c8d2:	0f 84 90 02 00 00    	je     0x51cb68
51c8d8:	8b 4c 24 30          	mov    0x30(%esp),%ecx
51c8dc:	33 ff                	xor    %edi,%edi
51c8de:	8b 84 24 c8 00 00 00 	mov    0xc8(%esp),%eax
51c8e5:	33 d2                	xor    %edx,%edx
51c8e7:	c1 e1 03             	shl    $0x3,%ecx
51c8ea:	48                   	dec    %eax
51c8eb:	f7 f1                	div    %ecx
51c8ed:	89 7c 24 50          	mov    %edi,0x50(%esp)
51c8f1:	8b f0                	mov    %eax,%esi
51c8f3:	89 74 24 64          	mov    %esi,0x64(%esp)
51c8f7:	85 ff                	test   %edi,%edi
51c8f9:	74 17                	je     0x51c912
51c8fb:	57                   	push   %edi
51c8fc:	6a 00                	push   $0x0
51c8fe:	ff 74 24 2c          	push   0x2c(%esp)
51c902:	e8 59 d0 fc ff       	call   0x4e9960
51c907:	83 c4 0c             	add    $0xc,%esp
51c90a:	85 c0                	test   %eax,%eax
51c90c:	0f 84 56 02 00 00    	je     0x51cb68
51c912:	6a 00                	push   $0x0
51c914:	ff 74 24 50          	push   0x50(%esp)
51c918:	e8 c3 d7 fb ff       	call   0x4da0e0
51c91d:	83 c4 08             	add    $0x8,%esp
51c920:	33 ff                	xor    %edi,%edi
51c922:	85 f6                	test   %esi,%esi
51c924:	0f 88 ae 00 00 00    	js     0x51c9d8
51c92a:	8b 4c 24 20          	mov    0x20(%esp),%ecx
51c92e:	33 f6                	xor    %esi,%esi
51c930:	8d 41 ff             	lea    -0x1(%ecx),%eax
51c933:	89 44 24 68          	mov    %eax,0x68(%esp)
51c937:	85 c0                	test   %eax,%eax
51c939:	78 10                	js     0x51c94b
51c93b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
51c940:	80 04 18 01          	addb   $0x1,(%eax,%ebx,1)
51c944:	75 05                	jne    0x51c94b
51c946:	83 e8 01             	sub    $0x1,%eax
51c949:	79 f5                	jns    0x51c940
51c94b:	6a 00                	push   $0x0
51c94d:	ff 74 24 1c          	push   0x1c(%esp)
51c951:	8d 84 24 84 00 00 00 	lea    0x84(%esp),%eax
51c958:	6a 00                	push   $0x0
51c95a:	50                   	push   %eax
51c95b:	51                   	push   %ecx
51c95c:	53                   	push   %ebx
51c95d:	e8 7e e0 ff ff       	call   0x51a9e0
51c962:	83 c4 18             	add    $0x18,%esp
51c965:	85 c0                	test   %eax,%eax
51c967:	0f 84 fb 01 00 00    	je     0x51cb68
51c96d:	55                   	push   %ebp
51c96e:	ff 74 24 34          	push   0x34(%esp)
51c972:	8d 84 24 84 00 00 00 	lea    0x84(%esp),%eax
51c979:	50                   	push   %eax
51c97a:	e8 f1 cc fb ff       	call   0x4d9670
51c97f:	83 c4 0c             	add    $0xc,%esp
51c982:	85 c0                	test   %eax,%eax
51c984:	0f 84 de 01 00 00    	je     0x51cb68
51c98a:	56                   	push   %esi
51c98b:	55                   	push   %ebp
51c98c:	55                   	push   %ebp
51c98d:	e8 4e e0 fc ff       	call   0x4ea9e0
51c992:	83 c4 0c             	add    $0xc,%esp
51c995:	85 c0                	test   %eax,%eax
51c997:	0f 84 cb 01 00 00    	je     0x51cb68
51c99d:	8b 44 24 4c          	mov    0x4c(%esp),%eax
51c9a1:	55                   	push   %ebp
51c9a2:	50                   	push   %eax
51c9a3:	50                   	push   %eax
51c9a4:	e8 47 b5 fc ff       	call   0x4e7ef0
51c9a9:	83 c4 0c             	add    $0xc,%esp
51c9ac:	85 c0                	test   %eax,%eax
51c9ae:	0f 84 b4 01 00 00    	je     0x51cb68
51c9b4:	8b 4c 24 30          	mov    0x30(%esp),%ecx
51c9b8:	47                   	inc    %edi
51c9b9:	8d 04 cd 00 00 00 00 	lea    0x0(,%ecx,8),%eax
51c9c0:	8b 4c 24 20          	mov    0x20(%esp),%ecx
51c9c4:	03 f0                	add    %eax,%esi
51c9c6:	8b 44 24 68          	mov    0x68(%esp),%eax
51c9ca:	3b 7c 24 64          	cmp    0x64(%esp),%edi
51c9ce:	0f 8e 63 ff ff ff    	jle    0x51c937
51c9d4:	8b 74 24 64          	mov    0x64(%esp),%esi
51c9d8:	ff 74 24 6c          	push   0x6c(%esp)
51c9dc:	8b 7c 24 50          	mov    0x50(%esp),%edi
51c9e0:	57                   	push   %edi
51c9e1:	e8 8a d3 fb ff       	call   0x4d9d70
51c9e6:	83 c4 08             	add    $0x8,%esp
51c9e9:	85 c0                	test   %eax,%eax
51c9eb:	0f 84 77 01 00 00    	je     0x51cb68
51c9f1:	57                   	push   %edi
51c9f2:	8b 7c 24 74          	mov    0x74(%esp),%edi
51c9f6:	57                   	push   %edi
51c9f7:	e8 e4 d0 fb ff       	call   0x4d9ae0
51c9fc:	83 c4 08             	add    $0x8,%esp
51c9ff:	85 c0                	test   %eax,%eax
51ca01:	0f 84 61 01 00 00    	je     0x51cb68
51ca07:	ff 74 24 14          	push   0x14(%esp)
51ca0b:	57                   	push   %edi
51ca0c:	57                   	push   %edi
51ca0d:	e8 de b4 fc ff       	call   0x4e7ef0
51ca12:	83 c4 0c             	add    $0xc,%esp
51ca15:	85 c0                	test   %eax,%eax
51ca17:	0f 84 4b 01 00 00    	je     0x51cb68
51ca1d:	ff 74 24 28          	push   0x28(%esp)
51ca21:	55                   	push   %ebp
51ca22:	e8 29 e1 fc ff       	call   0x4eab50
51ca27:	83 c4 08             	add    $0x8,%esp
51ca2a:	85 c0                	test   %eax,%eax
51ca2c:	0f 84 36 01 00 00    	je     0x51cb68
51ca32:	ff 74 24 10          	push   0x10(%esp)
51ca36:	55                   	push   %ebp
51ca37:	57                   	push   %edi
51ca38:	ff 74 24 48          	push   0x48(%esp)
51ca3c:	6a 00                	push   $0x0
51ca3e:	e8 cd da fc ff       	call   0x4ea510
51ca43:	83 c4 14             	add    $0x14,%esp
51ca46:	85 c0                	test   %eax,%eax
51ca48:	0f 84 1a 01 00 00    	je     0x51cb68
51ca4e:	e8 3d d7 fb ff       	call   0x4da190
51ca53:	50                   	push   %eax
51ca54:	ff 74 24 40          	push   0x40(%esp)
51ca58:	55                   	push   %ebp
51ca59:	e8 22 b5 fc ff       	call   0x4e7f80
51ca5e:	83 c4 0c             	add    $0xc,%esp
51ca61:	85 c0                	test   %eax,%eax
51ca63:	0f 84 ff 00 00 00    	je     0x51cb68
51ca69:	55                   	push   %ebp
51ca6a:	57                   	push   %edi
51ca6b:	8b 7c 24 24          	mov    0x24(%esp),%edi
51ca6f:	57                   	push   %edi
51ca70:	e8 0b b5 fc ff       	call   0x4e7f80
51ca75:	83 c4 0c             	add    $0xc,%esp
51ca78:	85 c0                	test   %eax,%eax
51ca7a:	0f 84 e8 00 00 00    	je     0x51cb68
51ca80:	ff 74 24 14          	push   0x14(%esp)
51ca84:	57                   	push   %edi
51ca85:	e8 86 ce fb ff       	call   0x4d9910
51ca8a:	83 c4 08             	add    $0x8,%esp
51ca8d:	85 c0                	test   %eax,%eax
51ca8f:	78 23                	js     0x51cab4
51ca91:	8b 7c 24 24          	mov    0x24(%esp),%edi
51ca95:	57                   	push   %edi
51ca96:	6a 01                	push   $0x1
51ca98:	ff 74 24 18          	push   0x18(%esp)
51ca9c:	6a 40                	push   $0x40
51ca9e:	ff 74 24 2c          	push   0x2c(%esp)
51caa2:	e8 99 d3 fc ff       	call   0x4e9e40
51caa7:	83 c4 14             	add    $0x14,%esp
51caaa:	85 c0                	test   %eax,%eax
51caac:	7f 50                	jg     0x51cafe
51caae:	0f 85 b4 00 00 00    	jne    0x51cb68
51cab4:	8b 7c 24 50          	mov    0x50(%esp),%edi
51cab8:	8b 84 24 c8 00 00 00 	mov    0xc8(%esp),%eax
51cabf:	47                   	inc    %edi
51cac0:	c1 e0 02             	shl    $0x2,%eax
51cac3:	89 7c 24 50          	mov    %edi,0x50(%esp)
51cac7:	3b f8                	cmp    %eax,%edi
51cac9:	0f 8c 28 fe ff ff    	jl     0x51c8f7
51cacf:	8b 74 24 40          	mov    0x40(%esp),%esi
51cad3:	85 f6                	test   %esi,%esi
51cad5:	0f 84 b6 fc ff ff    	je     0x51c791
51cadb:	68 0d 02 00 00       	push   $0x20d
51cae0:	68 30 08 64 00       	push   $0x640830
51cae5:	6a 70                	push   $0x70
51cae7:	6a 7e                	push   $0x7e
51cae9:	6a 0a                	push   $0xa
51caeb:	33 f6                	xor    %esi,%esi
51caed:	e8 8e c4 fb ff       	call   0x4d8f80
51caf2:	8b 6c 24 24          	mov    0x24(%esp),%ebp
51caf6:	83 c4 14             	add    $0x14,%esp
51caf9:	e9 66 fa ff ff       	jmp    0x51c564
51cafe:	6a 01                	push   $0x1
51cb00:	6a 02                	push   $0x2
51cb02:	57                   	push   %edi
51cb03:	e8 58 ce fc ff       	call   0x4e9960
51cb08:	83 c4 0c             	add    $0xc,%esp
51cb0b:	85 c0                	test   %eax,%eax
51cb0d:	74 59                	je     0x51cb68
51cb0f:	8b 7c 24 50          	mov    0x50(%esp),%edi
51cb13:	8b 74 24 30          	mov    0x30(%esp),%esi
51cb17:	e8 74 d6 fb ff       	call   0x4da190
51cb1c:	50                   	push   %eax
51cb1d:	ff 74 24 20          	push   0x20(%esp)
51cb21:	ff 74 24 1c          	push   0x1c(%esp)
51cb25:	e8 56 b4 fc ff       	call   0x4e7f80
51cb2a:	83 c4 0c             	add    $0xc,%esp
51cb2d:	85 c0                	test   %eax,%eax
51cb2f:	74 37                	je     0x51cb68
51cb31:	ff 74 24 10          	push   0x10(%esp)
51cb35:	ff 74 24 2c          	push   0x2c(%esp)
51cb39:	ff 74 24 1c          	push   0x1c(%esp)
51cb3d:	6a 00                	push   $0x0
51cb3f:	55                   	push   %ebp
51cb40:	e8 cb d9 fc ff       	call   0x4ea510
51cb45:	83 c4 14             	add    $0x14,%esp
51cb48:	85 c0                	test   %eax,%eax
51cb4a:	74 1c                	je     0x51cb68
51cb4c:	83 bc 24 dc 00 00 00 	cmpl   $0x0,0xdc(%esp)
51cb53:	00
51cb54:	7d 1b                	jge    0x51cb71
51cb56:	6a 02                	push   $0x2
51cb58:	ff 74 24 18          	push   0x18(%esp)
51cb5c:	e8 7f d5 fb ff       	call   0x4da0e0
51cb61:	83 c4 08             	add    $0x8,%esp
51cb64:	85 c0                	test   %eax,%eax
51cb66:	75 12                	jne    0x51cb7a
51cb68:	8b 6c 24 10          	mov    0x10(%esp),%ebp
51cb6c:	e9 f0 f9 ff ff       	jmp    0x51c561
51cb71:	b9 01 00 00 00       	mov    $0x1,%ecx
51cb76:	89 4c 24 34          	mov    %ecx,0x34(%esp)
51cb7a:	ff 74 24 10          	push   0x10(%esp)
51cb7e:	ff 74 24 20          	push   0x20(%esp)
51cb82:	ff 74 24 4c          	push   0x4c(%esp)
51cb86:	e8 05 77 fc ff       	call   0x4e4290
51cb8b:	83 c4 0c             	add    $0xc,%esp
51cb8e:	85 c0                	test   %eax,%eax
51cb90:	74 d6                	je     0x51cb68
51cb92:	8b 4c 24 34          	mov    0x34(%esp),%ecx
51cb96:	8b 84 24 dc 00 00 00 	mov    0xdc(%esp),%eax
51cb9d:	0f 1f 00             	nopl   (%eax)
51cba0:	85 c0                	test   %eax,%eax
51cba2:	0f 88 c0 00 00 00    	js     0x51cc68
51cba8:	6a 00                	push   $0x0
51cbaa:	ff 74 24 1c          	push   0x1c(%esp)
51cbae:	88 84 24 84 00 00 00 	mov    %al,0x84(%esp)
51cbb5:	8b c1                	mov    %ecx,%eax
51cbb7:	ff 74 24 34          	push   0x34(%esp)
51cbbb:	c1 e8 08             	shr    $0x8,%eax
51cbbe:	88 84 24 89 00 00 00 	mov    %al,0x89(%esp)
51cbc5:	88 8c 24 8a 00 00 00 	mov    %cl,0x8a(%esp)
51cbcc:	e8 4f e0 ff ff       	call   0x51ac20
51cbd1:	83 c4 0c             	add    $0xc,%esp
51cbd4:	85 c0                	test   %eax,%eax
51cbd6:	74 90                	je     0x51cb68
51cbd8:	ff 74 24 20          	push   0x20(%esp)
51cbdc:	ff 74 24 3c          	push   0x3c(%esp)
51cbe0:	ff 74 24 34          	push   0x34(%esp)
51cbe4:	e8 e7 e1 ff ff       	call   0x51add0
51cbe9:	83 c4 0c             	add    $0xc,%esp
51cbec:	85 c0                	test   %eax,%eax
51cbee:	0f 84 74 ff ff ff    	je     0x51cb68
51cbf4:	6a 04                	push   $0x4
51cbf6:	68 2c 08 64 00       	push   $0x64082c
51cbfb:	ff 74 24 34          	push   0x34(%esp)