51fc1f:	90                   	nop
51fc20:	8b 47 04             	mov    0x4(%edi),%eax
51fc23:	0f b7 44 02 10       	movzwl 0x10(%edx,%eax,1),%eax
51fc28:	a8 20                	test   $0x20,%al
51fc2a:	75 08                	jne    0x51fc34
51fc2c:	a8 40                	test   $0x40,%al
51fc2e:	74 03                	je     0x51fc33
51fc30:	c6 01 40             	movb   $0x40,(%ecx)
51fc33:	41                   	inc    %ecx
51fc34:	83 c2 14             	add    $0x14,%edx
51fc37:	80 39 00             	cmpb   $0x0,(%ecx)
51fc3a:	75 e4                	jne    0x51fc20
51fc3c:	33 c0                	xor    %eax,%eax
51fc3e:	33 c9                	xor    %ecx,%ecx
51fc40:	66 3b 47 2a          	cmp    0x2a(%edi),%ax
51fc44:	7d 2c                	jge    0x51fc72
51fc46:	33 d2                	xor    %edx,%edx
51fc48:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
51fc4f:	00
51fc50:	8b 77 04             	mov    0x4(%edi),%esi
51fc53:	0f b7 44 16 10       	movzwl 0x10(%esi,%edx,1),%eax
51fc58:	a8 60                	test   $0x60,%al
51fc5a:	74 0a                	je     0x51fc66
51fc5c:	0d 80 00 00 00       	or     $0x80,%eax
51fc61:	66 89 44 16 10       	mov    %ax,0x10(%esi,%edx,1)
51fc66:	0f bf 47 2a          	movswl 0x2a(%edi),%eax
51fc6a:	41                   	inc    %ecx
51fc6b:	83 c2 14             	add    $0x14,%edx
51fc6e:	3b c8                	cmp    %eax,%ecx
51fc70:	7c de                	jl     0x51fc50
51fc72:	8b 45 0c             	mov    0xc(%ebp),%eax
51fc75:	f7 d8                	neg    %eax
51fc77:	89 7d f8             	mov    %edi,-0x8(%ebp)
51fc7a:	c7 45 e4 70 06 50 00 	movl   $0x500670,-0x1c(%ebp)
51fc81:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
51fc88:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
51fc8f:	89 43 34             	mov    %eax,0x34(%ebx)
51fc92:	33 c0                	xor    %eax,%eax
51fc94:	33 db                	xor    %ebx,%ebx
51fc96:	89 45 d0             	mov    %eax,-0x30(%ebp)
51fc99:	89 45 d8             	mov    %eax,-0x28(%ebp)
51fc9c:	66 3b 47 2a          	cmp    0x2a(%edi),%ax
51fca0:	0f 8d e9 00 00 00    	jge    0x51fd8f
51fca6:	33 c9                	xor    %ecx,%ecx
51fca8:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
51fcab:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
51fcb0:	8b 77 04             	mov    0x4(%edi),%esi
51fcb3:	03 f1                	add    %ecx,%esi
51fcb5:	0f b7 46 10          	movzwl 0x10(%esi),%eax
51fcb9:	84 c0                	test   %al,%al
51fcbb:	79 67                	jns    0x51fd24
51fcbd:	0d 00 01 00 00       	or     $0x100,%eax
51fcc2:	66 89 46 10          	mov    %ax,0x10(%esi)
51fcc6:	33 c0                	xor    %eax,%eax
51fcc8:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
51fccc:	8b 46 04             	mov    0x4(%esi),%eax
51fccf:	85 c0                	test   %eax,%eax
51fcd1:	74 10                	je     0x51fce3
51fcd3:	50                   	push   %eax
51fcd4:	8d 45 e0             	lea    -0x20(%ebp),%eax
51fcd7:	50                   	push   %eax
51fcd8:	e8 d3 02 04 00       	call   0x55ffb0
51fcdd:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
51fce0:	83 c4 08             	add    $0x8,%esp
51fce3:	b8 ff fe 00 00       	mov    $0xfeff,%eax
51fce8:	66 21 46 10          	and    %ax,0x10(%esi)
51fcec:	f6 45 f4 80          	testb  $0x80,-0xc(%ebp)
51fcf0:	74 07                	je     0x51fcf9
51fcf2:	8b d6                	mov    %esi,%edx
51fcf4:	89 55 d8             	mov    %edx,-0x28(%ebp)
51fcf7:	eb 2e                	jmp    0x51fd27
51fcf9:	53                   	push   %ebx
51fcfa:	57                   	push   %edi
51fcfb:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
51fd02:	e8 49 e1 01 00       	call   0x53de50
51fd07:	98                   	cwtl
51fd08:	03 45 0c             	add    0xc(%ebp),%eax
51fd0b:	50                   	push   %eax
51fd0c:	56                   	push   %esi
51fd0d:	ff 75 dc             	push   -0x24(%ebp)
51fd10:	e8 6b 42 00 00       	call   0x523f80
51fd15:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
51fd18:	b8 7f ff 00 00       	mov    $0xff7f,%eax
51fd1d:	83 c4 14             	add    $0x14,%esp
51fd20:	66 21 46 10          	and    %ax,0x10(%esi)
51fd24:	8b 55 d8             	mov    -0x28(%ebp),%edx
51fd27:	0f bf 47 2a          	movswl 0x2a(%edi),%eax
51fd2b:	43                   	inc    %ebx
51fd2c:	83 c1 14             	add    $0x14,%ecx
51fd2f:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
51fd32:	3b d8                	cmp    %eax,%ebx
51fd34:	0f 8c 76 ff ff ff    	jl     0x51fcb0
51fd3a:	85 d2                	test   %edx,%edx
51fd3c:	74 36                	je     0x51fd74
51fd3e:	8b 45 d0             	mov    -0x30(%ebp),%eax
51fd41:	85 c0                	test   %eax,%eax
51fd43:	0f 85 49 ff ff ff    	jne    0x51fc92
51fd49:	ff 32                	push   (%edx)
51fd4b:	8b 5d dc             	mov    -0x24(%ebp),%ebx
51fd4e:	68 28 92 6b 00       	push   $0x6b9228
51fd53:	53                   	push   %ebx
51fd54:	e8 07 35 00 00       	call   0x523260
51fd59:	83 c4 0c             	add    $0xc,%esp
51fd5c:	c7 43 34 00 00 00 00 	movl   $0x0,0x34(%ebx)
51fd63:	5f                   	pop    %edi
51fd64:	5e                   	pop    %esi
51fd65:	5b                   	pop    %ebx
51fd66:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51fd69:	33 cd                	xor    %ebp,%ecx
51fd6b:	e8 6a 17 0c 00       	call   0x5e14da
51fd70:	8b e5                	mov    %ebp,%esp
51fd72:	5d                   	pop    %ebp
51fd73:	c3                   	ret
51fd74:	8b 45 dc             	mov    -0x24(%ebp),%eax
51fd77:	5f                   	pop    %edi
51fd78:	5e                   	pop    %esi
51fd79:	5b                   	pop    %ebx
51fd7a:	c7 40 34 00 00 00 00 	movl   $0x0,0x34(%eax)
51fd81:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51fd84:	33 cd                	xor    %ebp,%ecx
51fd86:	e8 4f 17 0c 00       	call   0x5e14da
51fd8b:	8b e5                	mov    %ebp,%esp
51fd8d:	5d                   	pop    %ebp
51fd8e:	c3                   	ret
51fd8f:	8b 45 dc             	mov    -0x24(%ebp),%eax
51fd92:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51fd95:	5f                   	pop    %edi
51fd96:	5e                   	pop    %esi
51fd97:	89 58 34             	mov    %ebx,0x34(%eax)
51fd9a:	33 cd                	xor    %ebp,%ecx
51fd9c:	5b                   	pop    %ebx
51fd9d:	e8 38 17 0c 00       	call   0x5e14da
51fda2:	8b e5                	mov    %ebp,%esp
51fda4:	5d                   	pop    %ebp
51fda5:	c3                   	ret
51fda6:	cc                   	int3
51fda7:	cc                   	int3
51fda8:	cc                   	int3
51fda9:	cc                   	int3
51fdaa:	cc                   	int3
51fdab:	cc                   	int3
51fdac:	cc                   	int3
51fdad:	cc                   	int3
51fdae:	cc                   	int3
51fdaf:	cc                   	int3
51fdb0:	55                   	push   %ebp
51fdb1:	8b ec                	mov    %esp,%ebp
51fdb3:	68 fc c4 6b 00       	push   $0x6bc4fc
51fdb8:	ff 75 08             	push   0x8(%ebp)
51fdbb:	68 94 c4 6b 00       	push   $0x6bc494
51fdc0:	68 78 c4 6b 00       	push   $0x6bc478
51fdc5:	6a 0b                	push   $0xb
51fdc7:	e8 14 02 fc ff       	call   0x4dffe0
51fdcc:	83 c4 14             	add    $0x14,%esp
51fdcf:	b8 0b 00 00 00       	mov    $0xb,%eax
51fdd4:	5d                   	pop    %ebp
51fdd5:	c3                   	ret
51fdd6:	cc                   	int3
51fdd7:	cc                   	int3
51fdd8:	cc                   	int3
51fdd9:	cc                   	int3
51fdda:	cc                   	int3
51fddb:	cc                   	int3
51fddc:	cc                   	int3
51fddd:	cc                   	int3
51fdde:	cc                   	int3
51fddf:	cc                   	int3
51fde0:	55                   	push   %ebp
51fde1:	8b ec                	mov    %esp,%ebp
51fde3:	56                   	push   %esi
51fde4:	6a 00                	push   $0x0
51fde6:	6a 34                	push   $0x34
51fde8:	ff 75 08             	push   0x8(%ebp)
51fdeb:	e8 f0 15 00 00       	call   0x5213e0
51fdf0:	8b f0                	mov    %eax,%esi
51fdf2:	83 c4 0c             	add    $0xc,%esp
51fdf5:	85 f6                	test   %esi,%esi
51fdf7:	0f 84 d9 00 00 00    	je     0x51fed6
51fdfd:	53                   	push   %ebx
51fdfe:	57                   	push   %edi
51fdff:	6a 34                	push   $0x34
51fe01:	6a 00                	push   $0x0
51fe03:	56                   	push   %esi
51fe04:	e8 f7 3b 0c 00       	call   0x5e3a00
51fe09:	8b 55 14             	mov    0x14(%ebp),%edx
51fe0c:	83 c8 ff             	or     $0xffffffff,%eax
51fe0f:	66 89 46 22          	mov    %ax,0x22(%esi)
51fe13:	83 c4 0c             	add    $0xc,%esp
51fe16:	8b 45 10             	mov    0x10(%ebp),%eax
51fe19:	c6 06 a4             	movb   $0xa4,(%esi)
51fe1c:	c7 46 18 01 00 00 00 	movl   $0x1,0x18(%esi)
51fe23:	8d 0c c0             	lea    (%eax,%eax,8),%ecx
51fe26:	8b 45 0c             	mov    0xc(%ebp),%eax
51fe29:	8b 5c c8 18          	mov    0x18(%eax,%ecx,8),%ebx
51fe2d:	8d 3c c8             	lea    (%eax,%ecx,8),%edi
51fe30:	89 5e 2c             	mov    %ebx,0x2c(%esi)
51fe33:	8b 47 34             	mov    0x34(%edi),%eax
51fe36:	89 46 1c             	mov    %eax,0x1c(%esi)
51fe39:	0f bf 43 28          	movswl 0x28(%ebx),%eax
51fe3d:	3b c2                	cmp    %edx,%eax
51fe3f:	75 0e                	jne    0x51fe4f
51fe41:	83 c8 ff             	or     $0xffffffff,%eax
51fe44:	5f                   	pop    %edi
51fe45:	66 89 46 20          	mov    %ax,0x20(%esi)
51fe49:	8b c6                	mov    %esi,%eax
51fe4b:	5b                   	pop    %ebx
51fe4c:	5e                   	pop    %esi
51fe4d:	5d                   	pop    %ebp
51fe4e:	c3                   	ret
51fe4f:	66 89 56 20          	mov    %dx,0x20(%esi)
51fe53:	f6 43 24 60          	testb  $0x60,0x24(%ebx)
51fe57:	74 53                	je     0x51feac
51fe59:	8b 43 04             	mov    0x4(%ebx),%eax
51fe5c:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
51fe5f:	f6 44 88 10 60       	testb  $0x60,0x10(%eax,%ecx,4)
51fe64:	74 46                	je     0x51feac
51fe66:	0f b7 43 2a          	movzwl 0x2a(%ebx),%eax
51fe6a:	66 83 f8 40          	cmp    $0x40,%ax
51fe6e:	7c 13                	jl     0x51fe83
51fe70:	83 c9 ff             	or     $0xffffffff,%ecx
51fe73:	8b c6                	mov    %esi,%eax
51fe75:	83 ca ff             	or     $0xffffffff,%edx
51fe78:	89 4f 40             	mov    %ecx,0x40(%edi)
51fe7b:	89 57 44             	mov    %edx,0x44(%edi)
51fe7e:	5f                   	pop    %edi
51fe7f:	5b                   	pop    %ebx
51fe80:	5e                   	pop    %esi
51fe81:	5d                   	pop    %ebp
51fe82:	c3                   	ret
51fe83:	33 c9                	xor    %ecx,%ecx
51fe85:	98                   	cwtl
51fe86:	0f ab c1             	bts    %eax,%ecx
51fe89:	33 d2                	xor    %edx,%edx
51fe8b:	83 f8 20             	cmp    $0x20,%eax
51fe8e:	0f 43 d1             	cmovae %ecx,%edx
51fe91:	33 ca                	xor    %edx,%ecx
51fe93:	83 f8 40             	cmp    $0x40,%eax
51fe96:	8b c6                	mov    %esi,%eax
51fe98:	0f 43 d1             	cmovae %ecx,%edx
51fe9b:	83 c1 ff             	add    $0xffffffff,%ecx
51fe9e:	89 4f 40             	mov    %ecx,0x40(%edi)
51fea1:	83 d2 ff             	adc    $0xffffffff,%edx
51fea4:	89 57 44             	mov    %edx,0x44(%edi)
51fea7:	5f                   	pop    %edi
51fea8:	5b                   	pop    %ebx
51fea9:	5e                   	pop    %esi
51feaa:	5d                   	pop    %ebp
51feab:	c3                   	ret
51feac:	83 fa 40             	cmp    $0x40,%edx
51feaf:	b8 3f 00 00 00       	mov    $0x3f,%eax
51feb4:	0f 4d d0             	cmovge %eax,%edx
51feb7:	33 c0                	xor    %eax,%eax
51feb9:	0f ab d0             	bts    %edx,%eax
51febc:	33 c9                	xor    %ecx,%ecx
51febe:	83 fa 20             	cmp    $0x20,%edx
51fec1:	0f 43 c8             	cmovae %eax,%ecx
51fec4:	33 c1                	xor    %ecx,%eax
51fec6:	83 fa 40             	cmp    $0x40,%edx
51fec9:	0f 43 c8             	cmovae %eax,%ecx
51fecc:	09 47 40             	or     %eax,0x40(%edi)
51fecf:	09 4f 44             	or     %ecx,0x44(%edi)
51fed2:	8b c6                	mov    %esi,%eax
51fed4:	5f                   	pop    %edi
51fed5:	5b                   	pop    %ebx
51fed6:	5e                   	pop    %esi
51fed7:	5d                   	pop    %ebp
51fed8:	c3                   	ret
51fed9:	cc                   	int3
51feda:	cc                   	int3
51fedb:	cc                   	int3
51fedc:	cc                   	int3
51fedd:	cc                   	int3
51fede:	cc                   	int3
51fedf:	cc                   	int3
51fee0:	55                   	push   %ebp
51fee1:	8b ec                	mov    %esp,%ebp
51fee3:	83 ec 24             	sub    $0x24,%esp
51fee6:	8b 55 08             	mov    0x8(%ebp),%edx
51fee9:	53                   	push   %ebx
51feea:	56                   	push   %esi
51feeb:	57                   	push   %edi
51feec:	8b 9a e4 00 00 00    	mov    0xe4(%edx),%ebx
51fef2:	8b 0a                	mov    (%edx),%ecx
51fef4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
51fef7:	89 5d f4             	mov    %ebx,-0xc(%ebp)
51fefa:	85 db                	test   %ebx,%ebx
51fefc:	0f 84 25 04 00 00    	je     0x520327
51ff02:	80 ba c8 00 00 00 01 	cmpb   $0x1,0xc8(%edx)
51ff09:	0f 84 18 04 00 00    	je     0x520327
51ff0f:	8b 75 0c             	mov    0xc(%ebp),%esi
51ff12:	8b 7d 14             	mov    0x14(%ebp),%edi
51ff15:	85 f6                	test   %esi,%esi
51ff17:	75 3c                	jne    0x51ff55
51ff19:	0f bf 43 2a          	movswl 0x2a(%ebx),%eax
51ff1d:	83 e8 01             	sub    $0x1,%eax
51ff20:	0f 88 15 04 00 00    	js     0x52033b
51ff26:	85 ff                	test   %edi,%edi
51ff28:	74 24                	je     0x51ff4e
51ff2a:	83 3f 01             	cmpl   $0x1,(%edi)
51ff2d:	74 1f                	je     0x51ff4e
51ff2f:	ff 75 10             	push   0x10(%ebp)
51ff32:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51ff35:	8b 43 04             	mov    0x4(%ebx),%eax
51ff38:	ff 34 88             	push   (%eax,%ecx,4)
51ff3b:	68 e4 a2 6b 00       	push   $0x6ba2e4
51ff40:	52                   	push   %edx
51ff41:	e8 1a 33 00 00       	call   0x523260
51ff46:	83 c4 10             	add    $0x10,%esp
51ff49:	e9 ed 03 00 00       	jmp    0x52033b
51ff4e:	ba 01 00 00 00       	mov    $0x1,%edx
51ff53:	eb 22                	jmp    0x51ff77
51ff55:	85 ff                	test   %edi,%edi
51ff57:	74 1c                	je     0x51ff75
51ff59:	8b 07                	mov    (%edi),%eax
51ff5b:	3b 06                	cmp    (%esi),%eax
51ff5d:	74 16                	je     0x51ff75
51ff5f:	68 28 a3 6b 00       	push   $0x6ba328
51ff64:	52                   	push   %edx
51ff65:	e8 f6 32 00 00       	call   0x523260
51ff6a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51ff6d:	83 c4 08             	add    $0x8,%esp
51ff70:	e9 b5 03 00 00       	jmp    0x52032a
51ff75:	8b 16                	mov    (%esi),%edx
51ff77:	8b 5d 10             	mov    0x10(%ebp),%ebx
51ff7a:	8b 45 14             	mov    0x14(%ebp),%eax
51ff7d:	89 55 f8             	mov    %edx,-0x8(%ebp)
51ff80:	8b 7b 04             	mov    0x4(%ebx),%edi
51ff83:	83 c7 25             	add    $0x25,%edi
51ff86:	8d 3c d7             	lea    (%edi,%edx,8),%edi
51ff89:	85 c0                	test   %eax,%eax
51ff8b:	74 33                	je     0x51ffc0
51ff8d:	8b 30                	mov    (%eax),%esi
51ff8f:	85 f6                	test   %esi,%esi
51ff91:	7e 2d                	jle    0x51ffc0
51ff93:	8d 50 08             	lea    0x8(%eax),%edx
51ff96:	8b 0a                	mov    (%edx),%ecx
51ff98:	85 c9                	test   %ecx,%ecx
51ff9a:	74 13                	je     0x51ffaf
51ff9c:	8d 59 01             	lea    0x1(%ecx),%ebx
51ff9f:	90                   	nop
51ffa0:	8a 01                	mov    (%ecx),%al
51ffa2:	41                   	inc    %ecx
51ffa3:	84 c0                	test   %al,%al
51ffa5:	75 f9                	jne    0x51ffa0
51ffa7:	2b cb                	sub    %ebx,%ecx
51ffa9:	81 e1 ff ff ff 3f    	and    $0x3fffffff,%ecx
51ffaf:	47                   	inc    %edi
51ffb0:	83 c2 14             	add    $0x14,%edx
51ffb3:	03 f9                	add    %ecx,%edi
51ffb5:	83 ee 01             	sub    $0x1,%esi