51c86e:	ff 46 0c             	incl   0xc(%esi)
51c871:	80 7e 0a 00          	cmpb   $0x0,0xa(%esi)
51c875:	75 09                	jne    0x51c880
51c877:	56                   	push   %esi
51c878:	e8 53 a7 fd ff       	call   0x4f6fd0
51c87d:	83 c4 04             	add    $0x4,%esp
51c880:	8b 46 04             	mov    0x4(%esi),%eax
51c883:	8b 38                	mov    (%eax),%edi
51c885:	8b 45 0c             	mov    0xc(%ebp),%eax
51c888:	85 c0                	test   %eax,%eax
51c88a:	7e 06                	jle    0x51c892
51c88c:	89 87 9c 00 00 00    	mov    %eax,0x9c(%edi)
51c892:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51c896:	8b bf 9c 00 00 00    	mov    0x9c(%edi),%edi
51c89c:	74 0f                	je     0x51c8ad
51c89e:	83 46 0c ff          	addl   $0xffffffff,0xc(%esi)
51c8a2:	75 09                	jne    0x51c8ad
51c8a4:	56                   	push   %esi
51c8a5:	e8 26 c1 03 00       	call   0x5589d0
51c8aa:	83 c4 04             	add    $0x4,%esp
51c8ad:	8b c7                	mov    %edi,%eax
51c8af:	5f                   	pop    %edi
51c8b0:	5e                   	pop    %esi
51c8b1:	5d                   	pop    %ebp
51c8b2:	c3                   	ret
51c8b3:	cc                   	int3
51c8b4:	cc                   	int3
51c8b5:	cc                   	int3
51c8b6:	cc                   	int3
51c8b7:	cc                   	int3
51c8b8:	cc                   	int3
51c8b9:	cc                   	int3
51c8ba:	cc                   	int3
51c8bb:	cc                   	int3
51c8bc:	cc                   	int3
51c8bd:	cc                   	int3
51c8be:	cc                   	int3
51c8bf:	cc                   	int3
51c8c0:	55                   	push   %ebp
51c8c1:	8b ec                	mov    %esp,%ebp
51c8c3:	83 ec 24             	sub    $0x24,%esp
51c8c6:	53                   	push   %ebx
51c8c7:	8b 5d 0c             	mov    0xc(%ebp),%ebx
51c8ca:	56                   	push   %esi
51c8cb:	57                   	push   %edi
51c8cc:	85 db                	test   %ebx,%ebx
51c8ce:	0f 85 a1 00 00 00    	jne    0x51c975
51c8d4:	8b 5d 08             	mov    0x8(%ebp),%ebx
51c8d7:	80 3b 00             	cmpb   $0x0,(%ebx)
51c8da:	0f 85 8c 00 00 00    	jne    0x51c96c
51c8e0:	8a 53 01             	mov    0x1(%ebx),%dl
51c8e3:	f6 c2 02             	test   $0x2,%dl
51c8e6:	0f 84 80 00 00 00    	je     0x51c96c
51c8ec:	8b 4b 20             	mov    0x20(%ebx),%ecx
51c8ef:	8b 75 10             	mov    0x10(%ebp),%esi
51c8f2:	8b 43 24             	mov    0x24(%ebx),%eax
51c8f5:	8b 7d 14             	mov    0x14(%ebp),%edi
51c8f8:	3b ce                	cmp    %esi,%ecx
51c8fa:	75 16                	jne    0x51c912
51c8fc:	3b c7                	cmp    %edi,%eax
51c8fe:	75 14                	jne    0x51c914
51c900:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c903:	5f                   	pop    %edi
51c904:	5e                   	pop    %esi
51c905:	5b                   	pop    %ebx
51c906:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c90c:	33 c0                	xor    %eax,%eax
51c90e:	8b e5                	mov    %ebp,%esp
51c910:	5d                   	pop    %ebp
51c911:	c3                   	ret
51c912:	3b c7                	cmp    %edi,%eax
51c914:	7f 56                	jg     0x51c96c
51c916:	7c 04                	jl     0x51c91c
51c918:	3b ce                	cmp    %esi,%ecx
51c91a:	73 50                	jae    0x51c96c
51c91c:	f6 c2 08             	test   $0x8,%dl
51c91f:	75 7d                	jne    0x51c99e
51c921:	83 c1 01             	add    $0x1,%ecx
51c924:	83 d0 00             	adc    $0x0,%eax
51c927:	3b ce                	cmp    %esi,%ecx
51c929:	75 41                	jne    0x51c96c
51c92b:	3b c7                	cmp    %edi,%eax
51c92d:	75 3d                	jne    0x51c96c
51c92f:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c932:	6a 00                	push   $0x0
51c934:	53                   	push   %ebx
51c935:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c93b:	e8 30 04 00 00       	call   0x51cd70
51c940:	83 c4 08             	add    $0x8,%esp
51c943:	85 c0                	test   %eax,%eax
51c945:	75 1c                	jne    0x51c963
51c947:	53                   	push   %ebx
51c948:	e8 63 92 fe ff       	call   0x505bb0
51c94d:	83 c4 04             	add    $0x4,%esp
51c950:	39 73 20             	cmp    %esi,0x20(%ebx)
51c953:	75 17                	jne    0x51c96c
51c955:	39 7b 24             	cmp    %edi,0x24(%ebx)
51c958:	75 12                	jne    0x51c96c
51c95a:	5f                   	pop    %edi
51c95b:	5e                   	pop    %esi
51c95c:	33 c0                	xor    %eax,%eax
51c95e:	5b                   	pop    %ebx
51c95f:	8b e5                	mov    %ebp,%esp
51c961:	5d                   	pop    %ebp
51c962:	c3                   	ret
51c963:	83 f8 65             	cmp    $0x65,%eax
51c966:	0f 85 f9 03 00 00    	jne    0x51cd65
51c96c:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
51c973:	eb 13                	jmp    0x51c988
51c975:	53                   	push   %ebx
51c976:	e8 85 d3 02 00       	call   0x549d00
51c97b:	c6 43 0b 00          	movb   $0x0,0xb(%ebx)
51c97f:	83 c4 04             	add    $0x4,%esp
51c982:	8b 5d 08             	mov    0x8(%ebp),%ebx
51c985:	89 45 f4             	mov    %eax,-0xc(%ebp)
51c988:	53                   	push   %ebx
51c989:	e8 a2 d2 fe ff       	call   0x509c30
51c98e:	83 c4 04             	add    $0x4,%esp
51c991:	85 c0                	test   %eax,%eax
51c993:	74 1b                	je     0x51c9b0
51c995:	83 f8 10             	cmp    $0x10,%eax
51c998:	0f 85 c7 03 00 00    	jne    0x51cd65
51c99e:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c9a1:	5f                   	pop    %edi
51c9a2:	5e                   	pop    %esi
51c9a3:	5b                   	pop    %ebx
51c9a4:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
51c9aa:	33 c0                	xor    %eax,%eax
51c9ac:	8b e5                	mov    %ebp,%esp
51c9ae:	5d                   	pop    %ebp
51c9af:	c3                   	ret
51c9b0:	b8 01 00 00 00       	mov    $0x1,%eax
51c9b5:	8d 7b 74             	lea    0x74(%ebx),%edi
51c9b8:	2b 45 18             	sub    0x18(%ebp),%eax
51c9bb:	89 45 e8             	mov    %eax,-0x18(%ebp)
51c9be:	66 90                	xchg   %ax,%ax
51c9c0:	8b 37                	mov    (%edi),%esi
51c9c2:	33 c9                	xor    %ecx,%ecx
51c9c4:	89 4d f8             	mov    %ecx,-0x8(%ebp)
51c9c7:	8b c8                	mov    %eax,%ecx
51c9c9:	8b 45 08             	mov    0x8(%ebp),%eax
51c9cc:	89 75 f0             	mov    %esi,-0x10(%ebp)
51c9cf:	0f b7 5e 18          	movzwl 0x18(%esi),%ebx
51c9d3:	4b                   	dec    %ebx
51c9d4:	8b fb                	mov    %ebx,%edi
51c9d6:	89 5d ec             	mov    %ebx,-0x14(%ebp)
51c9d9:	d3 ff                	sar    %cl,%edi
51c9db:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
51c9df:	66 89 78 46          	mov    %di,0x46(%eax)
51c9e3:	0f 85 da 00 00 00    	jne    0x51cac3
51c9e9:	8a 4e 03             	mov    0x3(%esi),%cl
51c9ec:	88 4d ff             	mov    %cl,-0x1(%ebp)
51c9ef:	8b 46 40             	mov    0x40(%esi),%eax
51c9f2:	0f b7 56 1a          	movzwl 0x1a(%esi),%edx
51c9f6:	66 8b 04 78          	mov    (%eax,%edi,2),%ax
51c9fa:	8a e8                	mov    %al,%ch
51c9fc:	8a cc                	mov    %ah,%cl
51c9fe:	0f b7 c1             	movzwl %cx,%eax
51ca01:	0f b7 ca             	movzwl %dx,%ecx
51ca04:	23 c1                	and    %ecx,%eax
51ca06:	03 46 44             	add    0x44(%esi),%eax
51ca09:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
51ca0d:	74 17                	je     0x51ca26
51ca0f:	80 38 80             	cmpb   $0x80,(%eax)
51ca12:	72 11                	jb     0x51ca25
51ca14:	8b 4e 3c             	mov    0x3c(%esi),%ecx
51ca17:	40                   	inc    %eax
51ca18:	3b c1                	cmp    %ecx,%eax
51ca1a:	0f 83 52 02 00 00    	jae    0x51cc72
51ca20:	80 38 80             	cmpb   $0x80,(%eax)
51ca23:	73 f2                	jae    0x51ca17
51ca25:	40                   	inc    %eax
51ca26:	8d 4d dc             	lea    -0x24(%ebp),%ecx
51ca29:	51                   	push   %ecx
51ca2a:	50                   	push   %eax
51ca2b:	e8 60 0c 01 00       	call   0x52d690
51ca30:	8b 4d e0             	mov    -0x20(%ebp),%ecx
51ca33:	83 c4 08             	add    $0x8,%esp
51ca36:	8b 45 dc             	mov    -0x24(%ebp),%eax
51ca39:	3b 4d 14             	cmp    0x14(%ebp),%ecx
51ca3c:	7f 44                	jg     0x51ca82
51ca3e:	7c 07                	jl     0x51ca47
51ca40:	8b 55 10             	mov    0x10(%ebp),%edx
51ca43:	3b c2                	cmp    %edx,%eax
51ca45:	73 3e                	jae    0x51ca85
51ca47:	8d 57 01             	lea    0x1(%edi),%edx
51ca4a:	89 55 f8             	mov    %edx,-0x8(%ebp)
51ca4d:	3b d3                	cmp    %ebx,%edx
51ca4f:	7e 49                	jle    0x51ca9a
51ca51:	83 ce ff             	or     $0xffffffff,%esi
51ca54:	8b 45 f0             	mov    -0x10(%ebp),%eax
51ca57:	8b 5d 08             	mov    0x8(%ebp),%ebx
51ca5a:	80 78 08 00          	cmpb   $0x0,0x8(%eax)
51ca5e:	0f 85 69 02 00 00    	jne    0x51cccd
51ca64:	8b f0                	mov    %eax,%esi
51ca66:	0f b7 46 18          	movzwl 0x18(%esi),%eax
51ca6a:	3b d0                	cmp    %eax,%edx
51ca6c:	0f 8c 86 01 00 00    	jl     0x51cbf8
51ca72:	0f b6 4e 09          	movzbl 0x9(%esi),%ecx
51ca76:	8b 46 38             	mov    0x38(%esi),%eax
51ca79:	8b 54 01 08          	mov    0x8(%ecx,%eax,1),%edx
51ca7d:	e9 90 01 00 00       	jmp    0x51cc12
51ca82:	8b 55 10             	mov    0x10(%ebp),%edx
51ca85:	3b 4d 14             	cmp    0x14(%ebp),%ecx
51ca88:	7c 21                	jl     0x51caab
51ca8a:	7f 04                	jg     0x51ca90
51ca8c:	3b c2                	cmp    %edx,%eax
51ca8e:	76 1b                	jbe    0x51caab
51ca90:	8b 55 f8             	mov    -0x8(%ebp),%edx
51ca93:	8d 5f ff             	lea    -0x1(%edi),%ebx
51ca96:	3b d3                	cmp    %ebx,%edx
51ca98:	7f 0a                	jg     0x51caa4
51ca9a:	8d 3c 13             	lea    (%ebx,%edx,1),%edi
51ca9d:	d1 ff                	sar    $1,%edi
51ca9f:	e9 4b ff ff ff       	jmp    0x51c9ef
51caa4:	be 01 00 00 00       	mov    $0x1,%esi
51caa9:	eb a9                	jmp    0x51ca54
51caab:	8b 5d 08             	mov    0x8(%ebp),%ebx
51caae:	66 89 7b 46          	mov    %di,0x46(%ebx)
51cab2:	80 7e 08 00          	cmpb   $0x0,0x8(%esi)
51cab6:	0f 85 e0 01 00 00    	jne    0x51cc9c
51cabc:	8b d7                	mov    %edi,%edx
51cabe:	89 55 f8             	mov    %edx,-0x8(%ebp)
51cac1:	eb a3                	jmp    0x51ca66
51cac3:	8b 46 40             	mov    0x40(%esi),%eax
51cac6:	66 8b 04 78          	mov    (%eax,%edi,2),%ax
51caca:	8a e8                	mov    %al,%ch
51cacc:	8a cc                	mov    %ah,%cl
51cace:	0f b7 46 1a          	movzwl 0x1a(%esi),%eax
51cad2:	0f b7 c9             	movzwl %cx,%ecx
51cad5:	23 c8                	and    %eax,%ecx
51cad7:	0f b6 46 0b          	movzbl 0xb(%esi),%eax
51cadb:	03 4e 44             	add    0x44(%esi),%ecx
51cade:	0f b6 11             	movzbl (%ecx),%edx
51cae1:	3b d0                	cmp    %eax,%edx
51cae3:	77 15                	ja     0x51cafa
51cae5:	ff 75 0c             	push   0xc(%ebp)
51cae8:	8d 41 01             	lea    0x1(%ecx),%eax
51caeb:	50                   	push   %eax
51caec:	52                   	push   %edx
51caed:	ff 55 f4             	call   *-0xc(%ebp)
51caf0:	83 c4 0c             	add    $0xc,%esp
51caf3:	8b f0                	mov    %eax,%esi
51caf5:	e9 ce 00 00 00       	jmp    0x51cbc8
51cafa:	8a 41 01             	mov    0x1(%ecx),%al
51cafd:	84 c0                	test   %al,%al
51caff:	78 28                	js     0x51cb29
51cb01:	83 e2 7f             	and    $0x7f,%edx
51cb04:	0f b6 c0             	movzbl %al,%eax
51cb07:	c1 e2 07             	shl    $0x7,%edx
51cb0a:	03 d0                	add    %eax,%edx
51cb0c:	0f b7 46 0e          	movzwl 0xe(%esi),%eax
51cb10:	3b d0                	cmp    %eax,%edx
51cb12:	77 15                	ja     0x51cb29
51cb14:	ff 75 0c             	push   0xc(%ebp)
51cb17:	8d 41 02             	lea    0x2(%ecx),%eax
51cb1a:	50                   	push   %eax
51cb1b:	52                   	push   %edx
51cb1c:	ff 55 f4             	call   *-0xc(%ebp)
51cb1f:	83 c4 0c             	add    $0xc,%esp
51cb22:	8b f0                	mov    %eax,%esi
51cb24:	e9 9f 00 00 00       	jmp    0x51cbc8
51cb29:	8b 55 f0             	mov    -0x10(%ebp),%edx
51cb2c:	8b 5d 08             	mov    0x8(%ebp),%ebx
51cb2f:	0f b6 42 0a          	movzbl 0xa(%edx),%eax
51cb33:	8d 73 20             	lea    0x20(%ebx),%esi
51cb36:	2b c8                	sub    %eax,%ecx
51cb38:	8b 42 50             	mov    0x50(%edx),%eax
51cb3b:	56                   	push   %esi
51cb3c:	51                   	push   %ecx
51cb3d:	52                   	push   %edx
51cb3e:	ff d0                	call   *%eax
51cb40:	8b 36                	mov    (%esi),%esi
51cb42:	83 c4 0c             	add    $0xc,%esp
51cb45:	83 fe 02             	cmp    $0x2,%esi
51cb48:	0f 8c ee 01 00 00    	jl     0x51cd3c
51cb4e:	8b 4b 14             	mov    0x14(%ebx),%ecx
51cb51:	33 d2                	xor    %edx,%edx
51cb53:	8b c6                	mov    %esi,%eax
51cb55:	f7 71 24             	divl   0x24(%ecx)
51cb58:	3b 41 2c             	cmp    0x2c(%ecx),%eax
51cb5b:	0f 87 db 01 00 00    	ja     0x51cd3c
51cb61:	8d 46 12             	lea    0x12(%esi),%eax
51cb64:	99                   	cltd
51cb65:	52                   	push   %edx
51cb66:	50                   	push   %eax
51cb67:	e8 f4 43 01 00       	call   0x530f60
51cb6c:	8b d8                	mov    %eax,%ebx
51cb6e:	83 c4 08             	add    $0x8,%esp
51cb71:	85 db                	test   %ebx,%ebx
51cb73:	0f 84 ae 01 00 00    	je     0x51cd27
51cb79:	8b 45 08             	mov    0x8(%ebp),%eax
51cb7c:	6a 00                	push   $0x0
51cb7e:	53                   	push   %ebx
51cb7f:	56                   	push   %esi
51cb80:	6a 00                	push   $0x0
51cb82:	50                   	push   %eax
51cb83:	66 89 78 46          	mov    %di,0x46(%eax)
51cb87:	e8 14 50 fd ff       	call   0x4f1ba0
51cb8c:	8b 4d 08             	mov    0x8(%ebp),%ecx
51cb8f:	0f 57 c0             	xorps  %xmm0,%xmm0
51cb92:	0f 11 04 33          	movups %xmm0,(%ebx,%esi,1)
51cb96:	66 c7 44 33 10 00 00 	movw   $0x0,0x10(%ebx,%esi,1)
51cb9d:	83 c4 14             	add    $0x14,%esp
51cba0:	89 45 e4             	mov    %eax,-0x1c(%ebp)
51cba3:	80 61 01 fb          	andb   $0xfb,0x1(%ecx)
51cba7:	85 c0                	test   %eax,%eax
51cba9:	0f 85 5c 01 00 00    	jne    0x51cd0b
51cbaf:	50                   	push   %eax
51cbb0:	ff 75 0c             	push   0xc(%ebp)
51cbb3:	53                   	push   %ebx
51cbb4:	56                   	push   %esi
51cbb5:	e8 86 f9 02 00       	call   0x54c540
51cbba:	53                   	push   %ebx
51cbbb:	8b f0                	mov    %eax,%esi
51cbbd:	e8 ce e1 fc ff       	call   0x4ead90
51cbc2:	8b 5d ec             	mov    -0x14(%ebp),%ebx
51cbc5:	83 c4 14             	add    $0x14,%esp
51cbc8:	85 f6                	test   %esi,%esi
51cbca:	79 08                	jns    0x51cbd4
51cbcc:	8d 57 01             	lea    0x1(%edi),%edx
51cbcf:	89 55 f8             	mov    %edx,-0x8(%ebp)
51cbd2:	eb 0f                	jmp    0x51cbe3
51cbd4:	0f 8e 0b 01 00 00    	jle    0x51cce5
51cbda:	8b 55 f8             	mov    -0x8(%ebp),%edx
51cbdd:	8d 5f ff             	lea    -0x1(%edi),%ebx
51cbe0:	89 5d ec             	mov    %ebx,-0x14(%ebp)
51cbe3:	3b d3                	cmp    %ebx,%edx
51cbe5:	0f 8f 69 fe ff ff    	jg     0x51ca54
51cbeb:	8b 75 f0             	mov    -0x10(%ebp),%esi
51cbee:	8d 3c 13             	lea    (%ebx,%edx,1),%edi
51cbf1:	d1 ff                	sar    $1,%edi
51cbf3:	e9 cb fe ff ff       	jmp    0x51cac3
51cbf8:	8b 46 40             	mov    0x40(%esi),%eax
51cbfb:	66 8b 04 50          	mov    (%eax,%edx,2),%ax
51cbff:	8a e8                	mov    %al,%ch
51cc01:	8a cc                	mov    %ah,%cl
51cc03:	0f b7 46 1a          	movzwl 0x1a(%esi),%eax
51cc07:	0f b7 c9             	movzwl %cx,%ecx
51cc0a:	23 c8                	and    %eax,%ecx
51cc0c:	8b 46 38             	mov    0x38(%esi),%eax
51cc0f:	8b 14 01             	mov    (%ecx,%eax,1),%edx
51cc12:	8a 43 44             	mov    0x44(%ebx),%al
51cc15:	8b 4d f8             	mov    -0x8(%ebp),%ecx
51cc18:	8b 73 14             	mov    0x14(%ebx),%esi
51cc1b:	66 89 4b 46          	mov    %cx,0x46(%ebx)
51cc1f:	0f ca                	bswap  %edx
51cc21:	3c 13                	cmp    $0x13,%al
51cc23:	0f 8d 95 00 00 00    	jge    0x51ccbe
51cc29:	80 63 01 f9          	andb   $0xf9,0x1(%ebx)