51fa4b:	8b 5d 28             	mov    0x28(%ebp),%ebx
51fa4e:	8b 4f 38             	mov    0x38(%edi),%ecx
51fa51:	f7 db                	neg    %ebx
51fa53:	8b c1                	mov    %ecx,%eax
51fa55:	1a db                	sbb    %bl,%bl
51fa57:	24 03                	and    $0x3,%al
51fa59:	80 e3 10             	and    $0x10,%bl
51fa5c:	3c 02                	cmp    $0x2,%al
51fa5e:	75 12                	jne    0x51fa72
51fa60:	8b 45 0c             	mov    0xc(%ebp),%eax
51fa63:	f6 40 24 80          	testb  $0x80,0x24(%eax)
51fa67:	74 09                	je     0x51fa72
51fa69:	8a 45 20             	mov    0x20(%ebp),%al
51fa6c:	24 02                	and    $0x2,%al
51fa6e:	0c 01                	or     $0x1,%al
51fa70:	0a d8                	or     %al,%bl
51fa72:	f6 c1 08             	test   $0x8,%cl
51fa75:	74 06                	je     0x51fa7d
51fa77:	0f b7 47 32          	movzwl 0x32(%edi),%eax
51fa7b:	eb 04                	jmp    0x51fa81
51fa7d:	0f b7 47 34          	movzwl 0x34(%edi),%eax
51fa81:	8b 4d f4             	mov    -0xc(%ebp),%ecx
51fa84:	0f b7 c0             	movzwl %ax,%eax
51fa87:	50                   	push   %eax
51fa88:	8b 09                	mov    (%ecx),%ecx
51fa8a:	8d 41 01             	lea    0x1(%ecx),%eax
51fa8d:	50                   	push   %eax
51fa8e:	8b 45 fc             	mov    -0x4(%ebp),%eax
51fa91:	03 45 14             	add    0x14(%ebp),%eax
51fa94:	51                   	push   %ecx
51fa95:	50                   	push   %eax
51fa96:	68 83 00 00 00       	push   $0x83
51fa9b:	56                   	push   %esi
51fa9c:	e8 6f 21 02 00       	call   0x541c10
51faa1:	8b 46 6c             	mov    0x6c(%esi),%eax
51faa4:	83 c4 18             	add    $0x18,%esp
51faa7:	85 c0                	test   %eax,%eax
51faa9:	7e 0e                	jle    0x51fab9
51faab:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51faae:	0f b6 d3             	movzbl %bl,%edx
51fab1:	8b 46 68             	mov    0x68(%esi),%eax
51fab4:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
51fab9:	8b 55 fc             	mov    -0x4(%ebp),%edx
51fabc:	8b 7f 14             	mov    0x14(%edi),%edi
51fabf:	42                   	inc    %edx
51fac0:	89 55 fc             	mov    %edx,-0x4(%ebp)
51fac3:	85 ff                	test   %edi,%edi
51fac5:	0f 85 1d ff ff ff    	jne    0x51f9e8
51facb:	8b 5d 08             	mov    0x8(%ebp),%ebx
51face:	8b 7d 0c             	mov    0xc(%ebp),%edi
51fad1:	f6 47 24 80          	testb  $0x80,0x24(%edi)
51fad5:	0f 85 d5 00 00 00    	jne    0x51fbb0
51fadb:	80 7b 12 00          	cmpb   $0x0,0x12(%ebx)
51fadf:	74 04                	je     0x51fae5
51fae1:	32 db                	xor    %bl,%bl
51fae3:	eb 13                	jmp    0x51faf8
51fae5:	8b 4d 20             	mov    0x20(%ebp),%ecx
51fae8:	bb 20 00 00 00       	mov    $0x20,%ebx
51faed:	85 c9                	test   %ecx,%ecx
51faef:	0f b6 c1             	movzbl %cl,%eax
51faf2:	0f 45 d8             	cmovne %eax,%ebx
51faf5:	80 cb 01             	or     $0x1,%bl
51faf8:	8a c3                	mov    %bl,%al
51fafa:	0c 08                	or     $0x8,%al
51fafc:	83 7d 24 00          	cmpl   $0x0,0x24(%ebp)
51fb00:	0f b6 c8             	movzbl %al,%ecx
51fb03:	0f b6 c3             	movzbl %bl,%eax
51fb06:	0f 44 c8             	cmove  %eax,%ecx
51fb09:	8a c1                	mov    %cl,%al
51fb0b:	0c 10                	or     $0x10,%al
51fb0d:	83 7d 28 00          	cmpl   $0x0,0x28(%ebp)
51fb11:	0f b6 d8             	movzbl %al,%ebx
51fb14:	0f b6 c1             	movzbl %cl,%eax
51fb17:	8b 4e 6c             	mov    0x6c(%esi),%ecx
51fb1a:	0f 44 d8             	cmove  %eax,%ebx
51fb1d:	8b 45 1c             	mov    0x1c(%ebp),%eax
51fb20:	8b 14 90             	mov    (%eax,%edx,4),%edx
51fb23:	39 4e 70             	cmp    %ecx,0x70(%esi)
51fb26:	7f 14                	jg     0x51fb3c
51fb28:	ff 75 18             	push   0x18(%ebp)
51fb2b:	52                   	push   %edx
51fb2c:	ff 75 10             	push   0x10(%ebp)
51fb2f:	6a 79                	push   $0x79
51fb31:	56                   	push   %esi
51fb32:	e8 c9 69 fe ff       	call   0x506500
51fb37:	83 c4 14             	add    $0x14,%esp
51fb3a:	eb 2e                	jmp    0x51fb6a
51fb3c:	8d 41 01             	lea    0x1(%ecx),%eax
51fb3f:	89 46 6c             	mov    %eax,0x6c(%esi)
51fb42:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
51fb45:	8b 46 68             	mov    0x68(%esi),%eax
51fb48:	c7 04 88 79 00 00 00 	movl   $0x79,(%eax,%ecx,4)
51fb4f:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
51fb53:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
51fb5a:	00
51fb5b:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
51fb5e:	8b 45 10             	mov    0x10(%ebp),%eax
51fb61:	89 41 04             	mov    %eax,0x4(%ecx)
51fb64:	8b 45 18             	mov    0x18(%ebp),%eax
51fb67:	89 41 0c             	mov    %eax,0xc(%ecx)
51fb6a:	8b 45 08             	mov    0x8(%ebp),%eax
51fb6d:	80 78 12 00          	cmpb   $0x0,0x12(%eax)
51fb71:	75 28                	jne    0x51fb9b
51fb73:	8b 06                	mov    (%esi),%eax
51fb75:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
51fb79:	74 0e                	je     0x51fb89
51fb7b:	57                   	push   %edi
51fb7c:	6a fa                	push   $0xfffffffa
51fb7e:	50                   	push   %eax
51fb7f:	e8 2c 41 fe ff       	call   0x503cb0
51fb84:	83 c4 0c             	add    $0xc,%esp
51fb87:	eb 12                	jmp    0x51fb9b
51fb89:	8b 46 6c             	mov    0x6c(%esi),%eax
51fb8c:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51fb8f:	8b 46 68             	mov    0x68(%esi),%eax
51fb92:	c6 44 88 ed fa       	movb   $0xfa,-0x13(%eax,%ecx,4)
51fb97:	89 7c 88 fc          	mov    %edi,-0x4(%eax,%ecx,4)
51fb9b:	8b 46 6c             	mov    0x6c(%esi),%eax
51fb9e:	85 c0                	test   %eax,%eax
51fba0:	7e 0e                	jle    0x51fbb0
51fba2:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51fba5:	0f b6 d3             	movzbl %bl,%edx
51fba8:	8b 46 68             	mov    0x68(%esi),%eax
51fbab:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
51fbb0:	5f                   	pop    %edi
51fbb1:	5e                   	pop    %esi
51fbb2:	5b                   	pop    %ebx
51fbb3:	8b e5                	mov    %ebp,%esp
51fbb5:	5d                   	pop    %ebp
51fbb6:	c3                   	ret
51fbb7:	cc                   	int3
51fbb8:	cc                   	int3
51fbb9:	cc                   	int3
51fbba:	cc                   	int3
51fbbb:	cc                   	int3
51fbbc:	cc                   	int3
51fbbd:	cc                   	int3
51fbbe:	cc                   	int3
51fbbf:	cc                   	int3
51fbc0:	55                   	push   %ebp
51fbc1:	8b ec                	mov    %esp,%ebp
51fbc3:	83 ec 30             	sub    $0x30,%esp
51fbc6:	a1 d4 89 72 00       	mov    0x7289d4,%eax
51fbcb:	33 c5                	xor    %ebp,%eax
51fbcd:	89 45 fc             	mov    %eax,-0x4(%ebp)
51fbd0:	53                   	push   %ebx
51fbd1:	8b 5d 08             	mov    0x8(%ebp),%ebx
51fbd4:	56                   	push   %esi
51fbd5:	57                   	push   %edi
51fbd6:	ff 75 0c             	push   0xc(%ebp)
51fbd9:	8b 7d 10             	mov    0x10(%ebp),%edi
51fbdc:	57                   	push   %edi
51fbdd:	ff 73 08             	push   0x8(%ebx)
51fbe0:	89 5d dc             	mov    %ebx,-0x24(%ebp)
51fbe3:	e8 58 e1 01 00       	call   0x53dd40
51fbe8:	83 c4 0c             	add    $0xc,%esp
51fbeb:	f6 47 24 40          	testb  $0x40,0x24(%edi)
51fbef:	74 4b                	je     0x51fc3c
51fbf1:	8b 53 08             	mov    0x8(%ebx),%edx
51fbf4:	8b 02                	mov    (%edx),%eax
51fbf6:	8b 4a 6c             	mov    0x6c(%edx),%ecx
51fbf9:	49                   	dec    %ecx
51fbfa:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
51fbfe:	74 07                	je     0x51fc07
51fc00:	b9 ec 02 73 00       	mov    $0x7302ec,%ecx
51fc05:	eb 09                	jmp    0x51fc10
51fc07:	8b 42 68             	mov    0x68(%edx),%eax
51fc0a:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
51fc0d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
51fc10:	80 39 5a             	cmpb   $0x5a,(%ecx)
51fc13:	75 27                	jne    0x51fc3c
51fc15:	8b 49 10             	mov    0x10(%ecx),%ecx
51fc18:	80 39 00             	cmpb   $0x0,(%ecx)
51fc1b:	74 1f                	je     0x51fc3c
51fc1d:	33 d2                	xor    %edx,%edx
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