51099f:	85 f6                	test   %esi,%esi
5109a1:	79 26                	jns    0x5109c9
5109a3:	51                   	push   %ecx
5109a4:	e8 07 2f 02 00       	call   0x5338b0
5109a9:	68 fc c4 6b 00       	push   $0x6bc4fc
5109ae:	68 86 fe 00 00       	push   $0xfe86
5109b3:	68 94 c4 6b 00       	push   $0x6bc494
5109b8:	68 78 c4 6b 00       	push   $0x6bc478
5109bd:	6a 0b                	push   $0xb
5109bf:	e8 1c f6 fc ff       	call   0x4dffe0
5109c4:	83 c4 18             	add    $0x18,%esp
5109c7:	eb 5b                	jmp    0x510a24
5109c9:	8a 04 06             	mov    (%esi,%eax,1),%al
5109cc:	8b 55 f4             	mov    -0xc(%ebp),%edx
5109cf:	88 03                	mov    %al,(%ebx)
5109d1:	85 d2                	test   %edx,%edx
5109d3:	74 0b                	je     0x5109e0
5109d5:	8b 45 f0             	mov    -0x10(%ebp),%eax
5109d8:	8b 44 06 01          	mov    0x1(%esi,%eax,1),%eax
5109dc:	0f c8                	bswap  %eax
5109de:	89 02                	mov    %eax,(%edx)
5109e0:	51                   	push   %ecx
5109e1:	e8 ca 2e 02 00       	call   0x5338b0
5109e6:	8a 03                	mov    (%ebx),%al
5109e8:	83 c4 04             	add    $0x4,%esp
5109eb:	3c 01                	cmp    $0x1,%al
5109ed:	72 17                	jb     0x510a06
5109ef:	3c 05                	cmp    $0x5,%al
5109f1:	77 13                	ja     0x510a06
5109f3:	5f                   	pop    %edi
5109f4:	5e                   	pop    %esi
5109f5:	33 c0                	xor    %eax,%eax
5109f7:	5b                   	pop    %ebx
5109f8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
5109fb:	33 cd                	xor    %ebp,%ecx
5109fd:	e8 d8 0a 0d 00       	call   0x5e14da
510a02:	8b e5                	mov    %ebp,%esp
510a04:	5d                   	pop    %ebp
510a05:	c3                   	ret
510a06:	68 fc c4 6b 00       	push   $0x6bc4fc
510a0b:	68 8e fe 00 00       	push   $0xfe8e
510a10:	68 94 c4 6b 00       	push   $0x6bc494
510a15:	68 78 c4 6b 00       	push   $0x6bc478
510a1a:	6a 0b                	push   $0xb
510a1c:	e8 bf f5 fc ff       	call   0x4dffe0
510a21:	83 c4 14             	add    $0x14,%esp
510a24:	b8 0b 00 00 00       	mov    $0xb,%eax
510a29:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510a2c:	5f                   	pop    %edi
510a2d:	5e                   	pop    %esi
510a2e:	33 cd                	xor    %ebp,%ecx
510a30:	5b                   	pop    %ebx
510a31:	e8 a4 0a 0d 00       	call   0x5e14da
510a36:	8b e5                	mov    %ebp,%esp
510a38:	5d                   	pop    %ebp
510a39:	c3                   	ret
510a3a:	cc                   	int3
510a3b:	cc                   	int3
510a3c:	cc                   	int3
510a3d:	cc                   	int3
510a3e:	cc                   	int3
510a3f:	cc                   	int3
510a40:	55                   	push   %ebp
510a41:	8b ec                	mov    %esp,%ebp
510a43:	56                   	push   %esi
510a44:	8b 75 0c             	mov    0xc(%ebp),%esi
510a47:	83 fe 02             	cmp    $0x2,%esi
510a4a:	73 05                	jae    0x510a51
510a4c:	33 c0                	xor    %eax,%eax
510a4e:	5e                   	pop    %esi
510a4f:	5d                   	pop    %ebp
510a50:	c3                   	ret
510a51:	57                   	push   %edi
510a52:	8b 7d 08             	mov    0x8(%ebp),%edi
510a55:	b8 cd cc cc cc       	mov    $0xcccccccd,%eax
510a5a:	83 c6 fe             	add    $0xfffffffe,%esi
510a5d:	f7 67 24             	mull   0x24(%edi)
510a60:	8b c6                	mov    %esi,%eax
510a62:	8b ca                	mov    %edx,%ecx
510a64:	33 d2                	xor    %edx,%edx
510a66:	c1 e9 02             	shr    $0x2,%ecx
510a69:	41                   	inc    %ecx
510a6a:	f7 f1                	div    %ecx
510a6c:	a1 18 19 72 00       	mov    0x721918,%eax
510a71:	2b f2                	sub    %edx,%esi
510a73:	33 d2                	xor    %edx,%edx
510a75:	f7 77 20             	divl   0x20(%edi)
510a78:	83 c6 02             	add    $0x2,%esi
510a7b:	40                   	inc    %eax
510a7c:	3b f0                	cmp    %eax,%esi
510a7e:	5f                   	pop    %edi
510a7f:	8d 4e 01             	lea    0x1(%esi),%ecx
510a82:	0f 45 ce             	cmovne %esi,%ecx
510a85:	8b c1                	mov    %ecx,%eax
510a87:	5e                   	pop    %esi
510a88:	5d                   	pop    %ebp
510a89:	c3                   	ret
510a8a:	cc                   	int3
510a8b:	cc                   	int3
510a8c:	cc                   	int3
510a8d:	cc                   	int3
510a8e:	cc                   	int3
510a8f:	cc                   	int3
510a90:	55                   	push   %ebp
510a91:	8b ec                	mov    %esp,%ebp
510a93:	83 ec 0c             	sub    $0xc,%esp
510a96:	a1 d4 89 72 00       	mov    0x7289d4,%eax
510a9b:	33 c5                	xor    %ebp,%eax
510a9d:	89 45 fc             	mov    %eax,-0x4(%ebp)
510aa0:	53                   	push   %ebx
510aa1:	8b 5d 08             	mov    0x8(%ebp),%ebx
510aa4:	56                   	push   %esi
510aa5:	8b 75 18             	mov    0x18(%ebp),%esi
510aa8:	83 3e 00             	cmpl   $0x0,(%esi)
510aab:	0f 85 ed 00 00 00    	jne    0x510b9e
510ab1:	57                   	push   %edi
510ab2:	8b 7d 0c             	mov    0xc(%ebp),%edi
510ab5:	85 ff                	test   %edi,%edi
510ab7:	75 35                	jne    0x510aee
510ab9:	68 fc c4 6b 00       	push   $0x6bc4fc
510abe:	68 47 fe 00 00       	push   $0xfe47
510ac3:	68 94 c4 6b 00       	push   $0x6bc494
510ac8:	68 78 c4 6b 00       	push   $0x6bc478
510acd:	6a 0b                	push   $0xb
510acf:	e8 0c f5 fc ff       	call   0x4dffe0
510ad4:	83 c4 14             	add    $0x14,%esp
510ad7:	c7 06 0b 00 00 00    	movl   $0xb,(%esi)
510add:	5f                   	pop    %edi
510ade:	5e                   	pop    %esi
510adf:	5b                   	pop    %ebx
510ae0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510ae3:	33 cd                	xor    %ebp,%ecx
510ae5:	e8 f0 09 0d 00       	call   0x5e14da
510aea:	8b e5                	mov    %ebp,%esp
510aec:	5d                   	pop    %ebp
510aed:	c3                   	ret
510aee:	57                   	push   %edi
510aef:	53                   	push   %ebx
510af0:	e8 4b ff ff ff       	call   0x510a40
510af5:	8b 0b                	mov    (%ebx),%ecx
510af7:	8d 55 f8             	lea    -0x8(%ebp),%edx
510afa:	6a 00                	push   $0x0
510afc:	52                   	push   %edx
510afd:	50                   	push   %eax
510afe:	51                   	push   %ecx
510aff:	8b 89 cc 00 00 00    	mov    0xcc(%ecx),%ecx
510b05:	89 45 f4             	mov    %eax,-0xc(%ebp)
510b08:	ff d1                	call   *%ecx
510b0a:	83 c4 18             	add    $0x18,%esp
510b0d:	85 c0                	test   %eax,%eax
510b0f:	74 13                	je     0x510b24
510b11:	5f                   	pop    %edi
510b12:	89 06                	mov    %eax,(%esi)
510b14:	5e                   	pop    %esi
510b15:	5b                   	pop    %ebx
510b16:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510b19:	33 cd                	xor    %ebp,%ecx
510b1b:	e8 ba 09 0d 00       	call   0x5e14da
510b20:	8b e5                	mov    %ebp,%esp
510b22:	5d                   	pop    %ebp
510b23:	c3                   	ret
510b24:	8b 4d f8             	mov    -0x8(%ebp),%ecx
510b27:	8b 41 08             	mov    0x8(%ecx),%eax
510b2a:	80 38 00             	cmpb   $0x0,(%eax)
510b2d:	74 11                	je     0x510b40
510b2f:	68 54 fe 00 00       	push   $0xfe54
510b34:	e8 77 f2 00 00       	call   0x51fdb0
510b39:	83 c4 04             	add    $0x4,%esp
510b3c:	89 06                	mov    %eax,(%esi)
510b3e:	eb 4d                	jmp    0x510b8d
510b40:	2b 7d f4             	sub    -0xc(%ebp),%edi
510b43:	4f                   	dec    %edi
510b44:	8d 14 bf             	lea    (%edi,%edi,4),%edx
510b47:	85 d2                	test   %edx,%edx
510b49:	79 11                	jns    0x510b5c
510b4b:	68 59 fe 00 00       	push   $0xfe59
510b50:	e8 5b f2 00 00       	call   0x51fdb0
510b55:	83 c4 04             	add    $0x4,%esp
510b58:	89 06                	mov    %eax,(%esi)
510b5a:	eb 31                	jmp    0x510b8d
510b5c:	8b 59 04             	mov    0x4(%ecx),%ebx
510b5f:	8a 45 10             	mov    0x10(%ebp),%al
510b62:	03 da                	add    %edx,%ebx
510b64:	8b 7d 14             	mov    0x14(%ebp),%edi
510b67:	3a 03                	cmp    (%ebx),%al
510b69:	75 09                	jne    0x510b74
510b6b:	8b 43 01             	mov    0x1(%ebx),%eax
510b6e:	0f c8                	bswap  %eax
510b70:	3b c7                	cmp    %edi,%eax
510b72:	74 1c                	je     0x510b90
510b74:	51                   	push   %ecx
510b75:	e8 c6 2d 02 00       	call   0x533940
510b7a:	83 c4 04             	add    $0x4,%esp
510b7d:	89 06                	mov    %eax,(%esi)
510b7f:	85 c0                	test   %eax,%eax
510b81:	75 0a                	jne    0x510b8d
510b83:	8a 45 10             	mov    0x10(%ebp),%al
510b86:	0f cf                	bswap  %edi
510b88:	88 03                	mov    %al,(%ebx)
510b8a:	89 7b 01             	mov    %edi,0x1(%ebx)
510b8d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
510b90:	85 c9                	test   %ecx,%ecx
510b92:	74 09                	je     0x510b9d
510b94:	51                   	push   %ecx
510b95:	e8 16 2d 02 00       	call   0x5338b0
510b9a:	83 c4 04             	add    $0x4,%esp
510b9d:	5f                   	pop    %edi
510b9e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510ba1:	5e                   	pop    %esi
510ba2:	33 cd                	xor    %ebp,%ecx
510ba4:	5b                   	pop    %ebx
510ba5:	e8 30 09 0d 00       	call   0x5e14da
510baa:	8b e5                	mov    %ebp,%esp
510bac:	5d                   	pop    %ebp
510bad:	c3                   	ret
510bae:	cc                   	int3
510baf:	cc                   	int3
510bb0:	55                   	push   %ebp
510bb1:	8b ec                	mov    %esp,%ebp
510bb3:	83 ec 1c             	sub    $0x1c,%esp
510bb6:	a1 d4 89 72 00       	mov    0x7289d4,%eax
510bbb:	33 c5                	xor    %ebp,%eax
510bbd:	89 45 fc             	mov    %eax,-0x4(%ebp)
510bc0:	53                   	push   %ebx
510bc1:	8b 5d 08             	mov    0x8(%ebp),%ebx
510bc4:	56                   	push   %esi
510bc5:	8b 75 10             	mov    0x10(%ebp),%esi
510bc8:	57                   	push   %edi
510bc9:	8b 7d 14             	mov    0x14(%ebp),%edi
510bcc:	83 3f 00             	cmpl   $0x0,(%edi)
510bcf:	75 64                	jne    0x510c35
510bd1:	8d 45 e4             	lea    -0x1c(%ebp),%eax
510bd4:	50                   	push   %eax
510bd5:	8b 43 50             	mov    0x50(%ebx),%eax
510bd8:	56                   	push   %esi
510bd9:	53                   	push   %ebx
510bda:	ff d0                	call   *%eax
510bdc:	0f b7 55 f4          	movzwl -0xc(%ebp),%edx
510be0:	83 c4 0c             	add    $0xc,%esp
510be3:	3b 55 f0             	cmp    -0x10(%ebp),%edx
510be6:	73 4d                	jae    0x510c35
510be8:	8b 45 0c             	mov    0xc(%ebp),%eax
510beb:	8b 48 3c             	mov    0x3c(%eax),%ecx
510bee:	3b ce                	cmp    %esi,%ecx
510bf0:	72 27                	jb     0x510c19
510bf2:	8d 04 32             	lea    (%edx,%esi,1),%eax
510bf5:	3b c8                	cmp    %eax,%ecx
510bf7:	73 20                	jae    0x510c19
510bf9:	68 c8 ff 00 00       	push   $0xffc8
510bfe:	e8 ad f1 00 00       	call   0x51fdb0
510c03:	83 c4 04             	add    $0x4,%esp
510c06:	89 07                	mov    %eax,(%edi)
510c08:	5f                   	pop    %edi
510c09:	5e                   	pop    %esi
510c0a:	5b                   	pop    %ebx
510c0b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510c0e:	33 cd                	xor    %ebp,%ecx
510c10:	e8 c5 08 0d 00       	call   0x5e14da
510c15:	8b e5                	mov    %ebp,%esp
510c17:	5d                   	pop    %ebp
510c18:	c3                   	ret
510c19:	0f b7 45 f6          	movzwl -0xa(%ebp),%eax
510c1d:	57                   	push   %edi
510c1e:	ff 73 04             	push   0x4(%ebx)
510c21:	8b 44 30 fc          	mov    -0x4(%eax,%esi,1),%eax
510c25:	6a 03                	push   $0x3
510c27:	0f c8                	bswap  %eax
510c29:	50                   	push   %eax
510c2a:	ff 73 34             	push   0x34(%ebx)
510c2d:	e8 5e fe ff ff       	call   0x510a90
510c32:	83 c4 14             	add    $0x14,%esp
510c35:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510c38:	5f                   	pop    %edi
510c39:	5e                   	pop    %esi
510c3a:	33 cd                	xor    %ebp,%ecx
510c3c:	5b                   	pop    %ebx
510c3d:	e8 98 08 0d 00       	call   0x5e14da
510c42:	8b e5                	mov    %ebp,%esp
510c44:	5d                   	pop    %ebp
510c45:	c3                   	ret
510c46:	cc                   	int3
510c47:	cc                   	int3
510c48:	cc                   	int3
510c49:	cc                   	int3
510c4a:	cc                   	int3
510c4b:	cc                   	int3
510c4c:	cc                   	int3
510c4d:	cc                   	int3
510c4e:	cc                   	int3
510c4f:	cc                   	int3
510c50:	55                   	push   %ebp
510c51:	8b ec                	mov    %esp,%ebp
510c53:	83 ec 20             	sub    $0x20,%esp
510c56:	a1 d4 89 72 00       	mov    0x7289d4,%eax
510c5b:	33 c5                	xor    %ebp,%eax
510c5d:	89 45 fc             	mov    %eax,-0x4(%ebp)
510c60:	53                   	push   %ebx
510c61:	8b 5d 10             	mov    0x10(%ebp),%ebx
510c64:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
510c6b:	56                   	push   %esi
510c6c:	8b 75 0c             	mov    0xc(%ebp),%esi
510c6f:	57                   	push   %edi
510c70:	8b 7d 08             	mov    0x8(%ebp),%edi
510c73:	89 7d e0             	mov    %edi,-0x20(%ebp)
510c76:	85 db                	test   %ebx,%ebx
510c78:	74 51                	je     0x510ccb
510c7a:	f7 46 04 00 20 00 00 	testl  $0x2000,0x4(%esi)
510c81:	75 48                	jne    0x510ccb
510c83:	83 7e 44 00          	cmpl   $0x0,0x44(%esi)
510c87:	75 42                	jne    0x510ccb
510c89:	83 7e 3c 00          	cmpl   $0x0,0x3c(%esi)
510c8d:	75 3c                	jne    0x510ccb
510c8f:	80 3b 2c             	cmpb   $0x2c,(%ebx)
510c92:	8b 45 18             	mov    0x18(%ebp),%eax
510c95:	75 1f                	jne    0x510cb6
510c97:	50                   	push   %eax
510c98:	ff 75 14             	push   0x14(%ebp)
510c9b:	ff 73 10             	push   0x10(%ebx)
510c9e:	56                   	push   %esi
510c9f:	57                   	push   %edi
510ca0:	e8 ab ff ff ff       	call   0x510c50
510ca5:	8b 5b 0c             	mov    0xc(%ebx),%ebx
510ca8:	83 c4 14             	add    $0x14,%esp
510cab:	01 45 e4             	add    %eax,-0x1c(%ebp)
510cae:	8b 45 18             	mov    0x18(%ebp),%eax
510cb1:	80 3b 2c             	cmpb   $0x2c,(%ebx)
510cb4:	74 e1                	je     0x510c97
510cb6:	85 c0                	test   %eax,%eax
510cb8:	74 24                	je     0x510cde
510cba:	f6 43 04 01          	testb  $0x1,0x4(%ebx)
510cbe:	74 0b                	je     0x510ccb
510cc0:	0f bf 43 24          	movswl 0x24(%ebx),%eax
510cc4:	8b 4d 14             	mov    0x14(%ebp),%ecx
510cc7:	3b c1                	cmp    %ecx,%eax
510cc9:	74 16                	je     0x510ce1
510ccb:	5f                   	pop    %edi
510ccc:	5e                   	pop    %esi
510ccd:	33 c0                	xor    %eax,%eax
510ccf:	5b                   	pop    %ebx
510cd0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510cd3:	33 cd                	xor    %ebp,%ecx
510cd5:	e8 00 08 0d 00       	call   0x5e14da
510cda:	8b e5                	mov    %ebp,%esp
510cdc:	5d                   	pop    %ebp
510cdd:	c3                   	ret
510cde:	8b 4d 14             	mov    0x14(%ebp),%ecx
510ce1:	f6 43 04 01          	testb  $0x1,0x4(%ebx)
510ce5:	74 08                	je     0x510cef
510ce7:	0f bf 43 24          	movswl 0x24(%ebx),%eax
510ceb:	3b c1                	cmp    %ecx,%eax