404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.191.81.146: ~ $
#!/usr/bin/env perl

# Copyright (c) Mauro Carvalho Chehab <mchehab@infradead.org>
# Released under GPLv2
#
# In order to use, you need to:
#	1) Download the windows driver with something like:
#	Version 2.4
#		wget http://www.twinhan.com/files/AW/BDA T/20080303_V1.0.6.7.zip
#		or wget http://www.stefanringel.de/pub/20080303_V1.0.6.7.zip
#	Version 2.7
#		wget http://www.steventoth.net/linux/xc5000/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
#	2) Extract the files from the zip into the current dir:
#		unzip -j 20080303_V1.0.6.7.zip 20080303_v1.0.6.7/UDXTTM6000.sys
#		unzip -j HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip Driver85/hcw85bda.sys
#	3) run the script:
#		./extract_xc3028.pl
#	4) copy the generated files:
#		cp xc3028-v24.fw /lib/firmware
#		cp xc3028-v27.fw /lib/firmware

#use strict;
use IO::Handle;

my $debug=0;

sub verify ($$)
{
	my ($filename, $hash) = @_;
	my ($testhash);

	if (system("which md5sum > /dev/null 2>&1")) {
		die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n";
	}

	open(CMD, "md5sum ".$filename."|");
	$testhash = <CMD>;
	$testhash =~ /([a-zA-Z0-9]*)/;
	$testhash = $1;
	close CMD;
		die "Hash of extracted file does not match (found $testhash, expected $hash!\n" if ($testhash ne $hash);
}

sub get_hunk ($$)
{
	my ($offset, $length) = @_;
	my ($chunklength, $buf, $rcount, $out);

	sysseek(INFILE, $offset, SEEK_SET);
	while ($length > 0) {
	# Calc chunk size
		$chunklength = 2048;
		$chunklength = $length if ($chunklength > $length);

		$rcount = sysread(INFILE, $buf, $chunklength);
		die "Ran out of data\n" if ($rcount != $chunklength);
		$out .= $buf;
		$length -= $rcount;
	}
	return $out;
}

sub write_le16($)
{
	my $val = shift;
	my $msb = ($val >> 8) &0xff;
	my $lsb = $val & 0xff;

	syswrite(OUTFILE, chr($lsb).chr($msb));
}

sub write_le32($)
{
	my $val = shift;
	my $l3 = ($val >> 24) & 0xff;
	my $l2 = ($val >> 16) & 0xff;
	my $l1 = ($val >> 8)  & 0xff;
	my $l0 = $val         & 0xff;

	syswrite(OUTFILE, chr($l0).chr($l1).chr($l2).chr($l3));
}

sub write_le64($$)
{
	my $msb_val = shift;
	my $lsb_val = shift;
	my $l7 = ($msb_val >> 24) & 0xff;
	my $l6 = ($msb_val >> 16) & 0xff;
	my $l5 = ($msb_val >> 8)  & 0xff;
	my $l4 = $msb_val         & 0xff;

	my $l3 = ($lsb_val >> 24) & 0xff;
	my $l2 = ($lsb_val >> 16) & 0xff;
	my $l1 = ($lsb_val >> 8)  & 0xff;
	my $l0 = $lsb_val         & 0xff;

	syswrite(OUTFILE,
		 chr($l0).chr($l1).chr($l2).chr($l3).
		 chr($l4).chr($l5).chr($l6).chr($l7));
}

sub write_hunk($$)
{
	my ($offset, $length) = @_;
	my $out = get_hunk($offset, $length);

	printf "(len %d) ",$length if ($debug);

	for (my $i=0;$i<$length;$i++) {
		printf "%02x ",ord(substr($out,$i,1)) if ($debug);
	}
	printf "\n" if ($debug);

	syswrite(OUTFILE, $out);
}

sub write_hunk_fix_endian($$)
{
	my ($offset, $length) = @_;
	my $out = get_hunk($offset, $length);

	printf "(len_fix %d) ",$length if ($debug);

	for (my $i=0;$i<$length;$i++) {
		printf "%02x ",ord(substr($out,$i,1)) if ($debug);
	}
	printf "\n" if ($debug);

	my $i=0;
	while ($i<$length) {
		my $size = ord(substr($out,$i,1))*256+ord(substr($out,$i+1,1));
		syswrite(OUTFILE, substr($out,$i+1,1));
		syswrite(OUTFILE, substr($out,$i,1));
		$i+=2;
		if ($size>0 && $size <0x8000) {
			for (my $j=0;$j<$size;$j++) {
				syswrite(OUTFILE, substr($out,$j+$i,1));
			}
			$i+=$size;
		}
	}
}

sub main_firmware_24($$$$)
{
	my $out;
	my $j=0;
	my $outfile = shift;
	my $name    = shift;
	my $version = shift;
	my $nr_desc = shift;

	for ($j = length($name); $j <32; $j++) {
		$name = $name.chr(0);
	}

	open OUTFILE, ">$outfile";
	syswrite(OUTFILE, $name);
	write_le16($version);
	write_le16($nr_desc);

	#
	# Firmware 0, type: BASE FW   F8MHZ (0x00000003), id: (0000000000000000), size: 6635
	#

	write_le32(0x00000003);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6635);			# Size
	write_hunk_fix_endian(257752, 6635);

	#
	# Firmware 1, type: BASE FW   F8MHZ MTS (0x00000007), id: (0000000000000000), size: 6635
	#

	write_le32(0x00000007);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6635);			# Size
	write_hunk_fix_endian(264392, 6635);

	#
	# Firmware 2, type: BASE FW   FM (0x00000401), id: (0000000000000000), size: 6525
	#

	write_le32(0x00000401);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6525);			# Size
	write_hunk_fix_endian(271040, 6525);

	#
	# Firmware 3, type: BASE FW   FM INPUT1 (0x00000c01), id: (0000000000000000), size: 6539
	#

	write_le32(0x00000c01);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6539);			# Size
	write_hunk_fix_endian(277568, 6539);

	#
	# Firmware 4, type: BASE FW   (0x00000001), id: (0000000000000000), size: 6633
	#

	write_le32(0x00000001);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6633);			# Size
	write_hunk_fix_endian(284120, 6633);

	#
	# Firmware 5, type: BASE FW   MTS (0x00000005), id: (0000000000000000), size: 6617
	#

	write_le32(0x00000005);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(6617);			# Size
	write_hunk_fix_endian(290760, 6617);

	#
	# Firmware 6, type: STD FW    (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000001, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(297384, 161);

	#
	# Firmware 7, type: STD FW    MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000001, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(297552, 169);

	#
	# Firmware 8, type: STD FW    (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000002, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(297728, 161);

	#
	# Firmware 9, type: STD FW    MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000002, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(297896, 169);

	#
	# Firmware 10, type: STD FW    (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000004, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(298072, 161);

	#
	# Firmware 11, type: STD FW    MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000004, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(298240, 169);

	#
	# Firmware 12, type: STD FW    (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000008, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(298416, 161);

	#
	# Firmware 13, type: STD FW    MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000008, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(298584, 169);

	#
	# Firmware 14, type: STD FW    (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(298760, 161);

	#
	# Firmware 15, type: STD FW    MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(298928, 169);

	#
	# Firmware 16, type: STD FW    (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x0000000c, 0x000000e0);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(299104, 161);

	#
	# Firmware 17, type: STD FW    MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x0000000c, 0x000000e0);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(299272, 169);

	#
	# Firmware 18, type: STD FW    (0x00000000), id: SECAM/K1 (0000000000200000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(299448, 161);

	#
	# Firmware 19, type: STD FW    MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(299616, 169);

	#
	# Firmware 20, type: STD FW    (0x00000000), id: SECAM/K3 (0000000004000000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x04000000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(299792, 161);

	#
	# Firmware 21, type: STD FW    MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x04000000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(299960, 169);

	#
	# Firmware 22, type: STD FW    D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149
	#

	write_le32(0x00010030);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300136, 149);

	#
	# Firmware 23, type: STD FW    D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149
	#

	write_le32(0x00000068);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300296, 149);

	#
	# Firmware 24, type: STD FW    D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149
	#

	write_le32(0x00000070);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300448, 149);

	#
	# Firmware 25, type: STD FW    D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149
	#

	write_le32(0x00000088);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300608, 149);

	#
	# Firmware 26, type: STD FW    D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149
	#

	write_le32(0x00000090);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300760, 149);

	#
	# Firmware 27, type: STD FW    D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149
	#

	write_le32(0x00000108);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(300920, 149);

	#
	# Firmware 28, type: STD FW    D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149
	#

	write_le32(0x00000110);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(301072, 149);

	#
	# Firmware 29, type: STD FW    D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149
	#

	write_le32(0x00000208);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(301232, 149);

	#
	# Firmware 30, type: STD FW    D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149
	#

	write_le32(0x00000210);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(301384, 149);

	#
	# Firmware 31, type: STD FW    FM (0x00000400), id: (0000000000000000), size: 135
	#

	write_le32(0x00000400);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(135);			# Size
	write_hunk_fix_endian(301554, 135);

	#
	# Firmware 32, type: STD FW    (0x00000000), id: PAL/I (0000000000000010), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(301688, 161);

	#
	# Firmware 33, type: STD FW    MTS (0x00000004), id: PAL/I (0000000000000010), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(301856, 169);

	#
	# Firmware 34, type: STD FW    (0x00000000), id: SECAM/L AM (0000001000400000), size: 169
	#

	#
	# Firmware 35, type: STD FW    (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x0000000c, 0x00400000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(302032, 161);

	#
	# Firmware 36, type: STD FW    (0x00000000), id: SECAM/Lc (0000000000800000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00800000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(302200, 161);

	#
	# Firmware 37, type: STD FW    (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(302368, 161);

	#
	# Firmware 38, type: STD FW    LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00001000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(302536, 161);

	#
	# Firmware 39, type: STD FW    LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00003000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(302704, 161);

	#
	# Firmware 40, type: STD FW    MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(302872, 169);

	#
	# Firmware 41, type: STD FW    (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(303048, 161);

	#
	# Firmware 42, type: STD FW    LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00001000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(303216, 161);

	#
	# Firmware 43, type: STD FW    LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00003000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(303384, 161);

	#
	# Firmware 44, type: STD FW    (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00002000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(303552, 161);

	#
	# Firmware 45, type: STD FW    MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(303720, 169);

	#
	# Firmware 46, type: STD FW    MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00001004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(303896, 169);

	#
	# Firmware 47, type: STD FW    MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00003004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(304072, 169);

	#
	# Firmware 48, type: SCODE FW  HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3280);			# IF
	write_le32(192);			# Size
	write_hunk(309048, 192);

	#
	# Firmware 49, type: SCODE FW  HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192
	#

#	write_le32(0x60000000);			# Type
#	write_le64(0x00000000, 0x00000000);	# ID
#	write_le16(3300);			# IF
#	write_le32(192);			# Size
#	write_hunk(304440, 192);

	#
	# Firmware 50, type: SCODE FW  HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3440);			# IF
	write_le32(192);			# Size
	write_hunk(309432, 192);

	#
	# Firmware 51, type: SCODE FW  HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3460);			# IF
	write_le32(192);			# Size
	write_hunk(309624, 192);

	#
	# Firmware 52, type: SCODE FW  DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60210020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3800);			# IF
	write_le32(192);			# Size
	write_hunk(306936, 192);

	#
	# Firmware 53, type: SCODE FW  HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4000);			# IF
	write_le32(192);			# Size
	write_hunk(309240, 192);

	#
	# Firmware 54, type: SCODE FW  DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60410020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4080);			# IF
	write_le32(192);			# Size
	write_hunk(307128, 192);

	#
	# Firmware 55, type: SCODE FW  HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4200);			# IF
	write_le32(192);			# Size
	write_hunk(308856, 192);

	#
	# Firmware 56, type: SCODE FW  MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le16(4320);			# IF
	write_le32(192);			# Size
	write_hunk(305208, 192);

	#
	# Firmware 57, type: SCODE FW  HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4450);			# IF
	write_le32(192);			# Size
	write_hunk(309816, 192);

	#
	# Firmware 58, type: SCODE FW  MTS LCD NOGD MONO IF HAS IF (0x6002b004), IF = 4.50 MHz id: NTSC PAL/M PAL/N (000000000000b700), size: 192
	#

	write_le32(0x6002b004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le16(4500);			# IF
	write_le32(192);			# Size
	write_hunk(304824, 192);

	#
	# Firmware 59, type: SCODE FW  LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192
	#

	write_le32(0x60023000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le16(4600);			# IF
	write_le32(192);			# Size
	write_hunk(305016, 192);

	#
	# Firmware 60, type: SCODE FW  DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 HAS IF (0x620003e0), IF = 4.76 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x620003e0);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4760);			# IF
	write_le32(192);			# Size
	write_hunk(304440, 192);

	#
	# Firmware 61, type: SCODE FW  HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4940);			# IF
	write_le32(192);			# Size
	write_hunk(308664, 192);

	#
	# Firmware 62, type: SCODE FW  HAS IF (0x60000000), IF = 5.26 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5260);			# IF
	write_le32(192);			# Size
	write_hunk(307704, 192);

	#
	# Firmware 63, type: SCODE FW  MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG A2 NICAM (0000000f00000007), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000f, 0x00000007);	# ID
	write_le16(5320);			# IF
	write_le32(192);			# Size
	write_hunk(307896, 192);

	#
	# Firmware 64, type: SCODE FW  DTV7 DTV78 DTV8 DIBCOM52 CHINA HAS IF (0x65000380), IF = 5.40 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x65000380);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5400);			# IF
	write_le32(192);			# Size
	write_hunk(304248, 192);

	#
	# Firmware 65, type: SCODE FW  DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60110020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5580);			# IF
	write_le32(192);			# Size
	write_hunk(306744, 192);

	#
	# Firmware 66, type: SCODE FW  HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2 (0000000300000007), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000003, 0x00000007);	# ID
	write_le16(5640);			# IF
	write_le32(192);			# Size
	write_hunk(305592, 192);

	#
	# Firmware 67, type: SCODE FW  HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM (0000000c00000007), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x0000000c, 0x00000007);	# ID
	write_le16(5740);			# IF
	write_le32(192);			# Size
	write_hunk(305784, 192);

	#
	# Firmware 68, type: SCODE FW  HAS IF (0x60000000), IF = 5.90 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5900);			# IF
	write_le32(192);			# Size
	write_hunk(307512, 192);

	#
	# Firmware 69, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/DK PAL/I SECAM/K3 SECAM/L SECAM/Lc NICAM (0000000c04c000f0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000c, 0x04c000f0);	# ID
	write_le16(6000);			# IF
	write_le32(192);			# Size
	write_hunk(305576, 192);

	#
	# Firmware 70, type: SCODE FW  DTV6 QAM ATSC LG60 F6MHZ HAS IF (0x68050060), IF = 6.20 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x68050060);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(6200);			# IF
	write_le32(192);			# Size
	write_hunk(306552, 192);

	#
	# Firmware 71, type: SCODE FW  HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le16(6240);			# IF
	write_le32(192);			# Size
	write_hunk(305400, 192);

	#
	# Firmware 72, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le16(6320);			# IF
	write_le32(192);			# Size
	write_hunk(308472, 192);

	#
	# Firmware 73, type: SCODE FW  HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le16(6340);			# IF
	write_le32(192);			# Size
	write_hunk(306360, 192);

	#
	# Firmware 74, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.50 MHz id: PAL/DK SECAM/K3 SECAM/L NICAM (0000000c044000e0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000c, 0x044000e0);	# ID
	write_le16(6500);			# IF
	write_le32(192);			# Size
	write_hunk(308280, 192);

	#
	# Firmware 75, type: SCODE FW  DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60090020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(6580);			# IF
	write_le32(192);			# Size
	write_hunk(304632, 192);

	#
	# Firmware 76, type: SCODE FW  HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le16(6600);			# IF
	write_le32(192);			# Size
	write_hunk(306168, 192);

	#
	# Firmware 77, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le16(6680);			# IF
	write_le32(192);			# Size
	write_hunk(308088, 192);

	#
	# Firmware 78, type: SCODE FW  DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60810020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(8140);			# IF
	write_le32(192);			# Size
	write_hunk(307320, 192);

	#
	# Firmware 79, type: SCODE FW  HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192
	#

#	write_le32(0x60000000);			# Type
#	write_le64(0x00000000, 0x00000000);	# ID
#	write_le16(8200);			# IF
#	write_le32(192);			# Size
#	write_hunk(308088, 192);
}

sub main_firmware_27($$$$)
{
	my $out;
	my $j=0;
	my $outfile = shift;
	my $name    = shift;
	my $version = shift;
	my $nr_desc = shift;

	for ($j = length($name); $j <32; $j++) {
		$name = $name.chr(0);
	}

	open OUTFILE, ">$outfile";
	syswrite(OUTFILE, $name);
	write_le16($version);
	write_le16($nr_desc);

	#
	# Firmware 0, type: BASE FW   F8MHZ (0x00000003), id: (0000000000000000), size: 8718
	#

	write_le32(0x00000003);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8718);			# Size
	write_hunk_fix_endian(813432, 8718);

	#
	# Firmware 1, type: BASE FW   F8MHZ MTS (0x00000007), id: (0000000000000000), size: 8712
	#

	write_le32(0x00000007);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8712);			# Size
	write_hunk_fix_endian(822152, 8712);

	#
	# Firmware 2, type: BASE FW   FM (0x00000401), id: (0000000000000000), size: 8562
	#

	write_le32(0x00000401);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8562);			# Size
	write_hunk_fix_endian(830872, 8562);

	#
	# Firmware 3, type: BASE FW   FM INPUT1 (0x00000c01), id: (0000000000000000), size: 8576
	#

	write_le32(0x00000c01);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8576);			# Size
	write_hunk_fix_endian(839440, 8576);

	#
	# Firmware 4, type: BASE FW   (0x00000001), id: (0000000000000000), size: 8706
	#

	write_le32(0x00000001);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8706);			# Size
	write_hunk_fix_endian(848024, 8706);

	#
	# Firmware 5, type: BASE FW   MTS (0x00000005), id: (0000000000000000), size: 8682
	#

	write_le32(0x00000005);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(8682);			# Size
	write_hunk_fix_endian(856736, 8682);

	#
	# Firmware 6, type: STD FW    (0x00000000), id: PAL/BG A2/A (0000000100000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000001, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(865424, 161);

	#
	# Firmware 7, type: STD FW    MTS (0x00000004), id: PAL/BG A2/A (0000000100000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000001, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(865592, 169);

	#
	# Firmware 8, type: STD FW    (0x00000000), id: PAL/BG A2/B (0000000200000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000002, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(865424, 161);

	#
	# Firmware 9, type: STD FW    MTS (0x00000004), id: PAL/BG A2/B (0000000200000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000002, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(865592, 169);

	#
	# Firmware 10, type: STD FW    (0x00000000), id: PAL/BG NICAM/A (0000000400000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000004, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(866112, 161);

	#
	# Firmware 11, type: STD FW    MTS (0x00000004), id: PAL/BG NICAM/A (0000000400000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000004, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(866280, 169);

	#
	# Firmware 12, type: STD FW    (0x00000000), id: PAL/BG NICAM/B (0000000800000007), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000008, 0x00000007);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(866112, 161);

	#
	# Firmware 13, type: STD FW    MTS (0x00000004), id: PAL/BG NICAM/B (0000000800000007), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000008, 0x00000007);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(866280, 169);

	#
	# Firmware 14, type: STD FW    (0x00000000), id: PAL/DK A2 (00000003000000e0), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(866800, 161);

	#
	# Firmware 15, type: STD FW    MTS (0x00000004), id: PAL/DK A2 (00000003000000e0), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(866968, 169);

	#
	# Firmware 16, type: STD FW    (0x00000000), id: PAL/DK NICAM (0000000c000000e0), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x0000000c, 0x000000e0);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(867144, 161);

	#
	# Firmware 17, type: STD FW    MTS (0x00000004), id: PAL/DK NICAM (0000000c000000e0), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x0000000c, 0x000000e0);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(867312, 169);

	#
	# Firmware 18, type: STD FW    (0x00000000), id: SECAM/K1 (0000000000200000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(867488, 161);

	#
	# Firmware 19, type: STD FW    MTS (0x00000004), id: SECAM/K1 (0000000000200000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(867656, 169);

	#
	# Firmware 20, type: STD FW    (0x00000000), id: SECAM/K3 (0000000004000000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x04000000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(867832, 161);

	#
	# Firmware 21, type: STD FW    MTS (0x00000004), id: SECAM/K3 (0000000004000000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x04000000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(868000, 169);

	#
	# Firmware 22, type: STD FW    D2633 DTV6 ATSC (0x00010030), id: (0000000000000000), size: 149
	#

	write_le32(0x00010030);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868176, 149);

	#
	# Firmware 23, type: STD FW    D2620 DTV6 QAM (0x00000068), id: (0000000000000000), size: 149
	#

	write_le32(0x00000068);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868336, 149);

	#
	# Firmware 24, type: STD FW    D2633 DTV6 QAM (0x00000070), id: (0000000000000000), size: 149
	#

	write_le32(0x00000070);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868488, 149);

	#
	# Firmware 25, type: STD FW    D2620 DTV7 (0x00000088), id: (0000000000000000), size: 149
	#

	write_le32(0x00000088);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868648, 149);

	#
	# Firmware 26, type: STD FW    D2633 DTV7 (0x00000090), id: (0000000000000000), size: 149
	#

	write_le32(0x00000090);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868800, 149);

	#
	# Firmware 27, type: STD FW    D2620 DTV78 (0x00000108), id: (0000000000000000), size: 149
	#

	write_le32(0x00000108);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868960, 149);

	#
	# Firmware 28, type: STD FW    D2633 DTV78 (0x00000110), id: (0000000000000000), size: 149
	#

	write_le32(0x00000110);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(869112, 149);

	#
	# Firmware 29, type: STD FW    D2620 DTV8 (0x00000208), id: (0000000000000000), size: 149
	#

	write_le32(0x00000208);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868648, 149);

	#
	# Firmware 30, type: STD FW    D2633 DTV8 (0x00000210), id: (0000000000000000), size: 149
	#

	write_le32(0x00000210);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(149);			# Size
	write_hunk_fix_endian(868800, 149);

	#
	# Firmware 31, type: STD FW    FM (0x00000400), id: (0000000000000000), size: 135
	#

	write_le32(0x00000400);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le32(135);			# Size
	write_hunk_fix_endian(869584, 135);

	#
	# Firmware 32, type: STD FW    (0x00000000), id: PAL/I (0000000000000010), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(869728, 161);

	#
	# Firmware 33, type: STD FW    MTS (0x00000004), id: PAL/I (0000000000000010), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(869896, 169);

	#
	# Firmware 34, type: STD FW    (0x00000000), id: SECAM/L AM (0000001000400000), size: 169
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000010, 0x00400000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(870072, 169);

	#
	# Firmware 35, type: STD FW    (0x00000000), id: SECAM/L NICAM (0000000c00400000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x0000000c, 0x00400000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(870248, 161);

	#
	# Firmware 36, type: STD FW    (0x00000000), id: SECAM/Lc (0000000000800000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00800000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(870416, 161);

	#
	# Firmware 37, type: STD FW    (0x00000000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(870584, 161);

	#
	# Firmware 38, type: STD FW    LCD (0x00001000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00001000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(870752, 161);

	#
	# Firmware 39, type: STD FW    LCD NOGD (0x00003000), id: NTSC/M Kr (0000000000008000), size: 161
	#

	write_le32(0x00003000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(870920, 161);

	#
	# Firmware 40, type: STD FW    MTS (0x00000004), id: NTSC/M Kr (0000000000008000), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(871088, 169);

	#
	# Firmware 41, type: STD FW    (0x00000000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(871264, 161);

	#
	# Firmware 42, type: STD FW    LCD (0x00001000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00001000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(871432, 161);

	#
	# Firmware 43, type: STD FW    LCD NOGD (0x00003000), id: NTSC PAL/M PAL/N (000000000000b700), size: 161
	#

	write_le32(0x00003000);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(871600, 161);

	#
	# Firmware 44, type: STD FW    (0x00000000), id: NTSC/M Jp (0000000000002000), size: 161
	#

	write_le32(0x00000000);			# Type
	write_le64(0x00000000, 0x00002000);	# ID
	write_le32(161);			# Size
	write_hunk_fix_endian(871264, 161);

	#
	# Firmware 45, type: STD FW    MTS (0x00000004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00000004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(871936, 169);

	#
	# Firmware 46, type: STD FW    MTS LCD (0x00001004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00001004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(872112, 169);

	#
	# Firmware 47, type: STD FW    MTS LCD NOGD (0x00003004), id: NTSC PAL/M PAL/N (000000000000b700), size: 169
	#

	write_le32(0x00003004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le32(169);			# Size
	write_hunk_fix_endian(872288, 169);

	#
	# Firmware 48, type: SCODE FW  HAS IF (0x60000000), IF = 3.28 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3280);			# IF
	write_le32(192);			# Size
	write_hunk(811896, 192);

	#
	# Firmware 49, type: SCODE FW  HAS IF (0x60000000), IF = 3.30 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3300);			# IF
	write_le32(192);			# Size
	write_hunk(813048, 192);

	#
	# Firmware 50, type: SCODE FW  HAS IF (0x60000000), IF = 3.44 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3440);			# IF
	write_le32(192);			# Size
	write_hunk(812280, 192);

	#
	# Firmware 51, type: SCODE FW  HAS IF (0x60000000), IF = 3.46 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3460);			# IF
	write_le32(192);			# Size
	write_hunk(812472, 192);

	#
	# Firmware 52, type: SCODE FW  DTV6 ATSC OREN36 HAS IF (0x60210020), IF = 3.80 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60210020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(3800);			# IF
	write_le32(192);			# Size
	write_hunk(809784, 192);

	#
	# Firmware 53, type: SCODE FW  HAS IF (0x60000000), IF = 4.00 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4000);			# IF
	write_le32(192);			# Size
	write_hunk(812088, 192);

	#
	# Firmware 54, type: SCODE FW  DTV6 ATSC TOYOTA388 HAS IF (0x60410020), IF = 4.08 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60410020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4080);			# IF
	write_le32(192);			# Size
	write_hunk(809976, 192);

	#
	# Firmware 55, type: SCODE FW  HAS IF (0x60000000), IF = 4.20 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4200);			# IF
	write_le32(192);			# Size
	write_hunk(811704, 192);

	#
	# Firmware 56, type: SCODE FW  MONO HAS IF (0x60008000), IF = 4.32 MHz id: NTSC/M Kr (0000000000008000), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le16(4320);			# IF
	write_le32(192);			# Size
	write_hunk(808056, 192);

	#
	# Firmware 57, type: SCODE FW  HAS IF (0x60000000), IF = 4.45 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4450);			# IF
	write_le32(192);			# Size
	write_hunk(812664, 192);

	#
	# Firmware 58, type: SCODE FW  MTS LCD NOGD MONO IF HAS IF (0x6002b004), IF = 4.50 MHz id: NTSC PAL/M PAL/N (000000000000b700), size: 192
	#

	write_le32(0x6002b004);			# Type
	write_le64(0x00000000, 0x0000b700);	# ID
	write_le16(4500);			# IF
	write_le32(192);			# Size
	write_hunk(807672, 192);

	#
	# Firmware 59, type: SCODE FW  LCD NOGD IF HAS IF (0x60023000), IF = 4.60 MHz id: NTSC/M Kr (0000000000008000), size: 192
	#

	write_le32(0x60023000);			# Type
	write_le64(0x00000000, 0x00008000);	# ID
	write_le16(4600);			# IF
	write_le32(192);			# Size
	write_hunk(807864, 192);

	#
	# Firmware 60, type: SCODE FW  DTV6 QAM DTV7 DTV78 DTV8 ZARLINK456 HAS IF (0x620003e0), IF = 4.76 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x620003e0);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4760);			# IF
	write_le32(192);			# Size
	write_hunk(807288, 192);

	#
	# Firmware 61, type: SCODE FW  HAS IF (0x60000000), IF = 4.94 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(4940);			# IF
	write_le32(192);			# Size
	write_hunk(811512, 192);

	#
	# Firmware 62, type: SCODE FW  HAS IF (0x60000000), IF = 5.26 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5260);			# IF
	write_le32(192);			# Size
	write_hunk(810552, 192);

	#
	# Firmware 63, type: SCODE FW  MONO HAS IF (0x60008000), IF = 5.32 MHz id: PAL/BG A2 NICAM (0000000f00000007), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000f, 0x00000007);	# ID
	write_le16(5320);			# IF
	write_le32(192);			# Size
	write_hunk(810744, 192);

	#
	# Firmware 64, type: SCODE FW  DTV7 DTV78 DTV8 DIBCOM52 CHINA HAS IF (0x65000380), IF = 5.40 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x65000380);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5400);			# IF
	write_le32(192);			# Size
	write_hunk(807096, 192);

	#
	# Firmware 65, type: SCODE FW  DTV6 ATSC OREN538 HAS IF (0x60110020), IF = 5.58 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60110020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5580);			# IF
	write_le32(192);			# Size
	write_hunk(809592, 192);

	#
	# Firmware 66, type: SCODE FW  HAS IF (0x60000000), IF = 5.64 MHz id: PAL/BG A2 (0000000300000007), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000003, 0x00000007);	# ID
	write_le16(5640);			# IF
	write_le32(192);			# Size
	write_hunk(808440, 192);

	#
	# Firmware 67, type: SCODE FW  HAS IF (0x60000000), IF = 5.74 MHz id: PAL/BG NICAM (0000000c00000007), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x0000000c, 0x00000007);	# ID
	write_le16(5740);			# IF
	write_le32(192);			# Size
	write_hunk(808632, 192);

	#
	# Firmware 68, type: SCODE FW  HAS IF (0x60000000), IF = 5.90 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(5900);			# IF
	write_le32(192);			# Size
	write_hunk(810360, 192);

	#
	# Firmware 69, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.00 MHz id: PAL/DK PAL/I SECAM/K3 SECAM/L SECAM/Lc NICAM (0000000c04c000f0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000c, 0x04c000f0);	# ID
	write_le16(6000);			# IF
	write_le32(192);			# Size
	write_hunk(808824, 192);

	#
	# Firmware 70, type: SCODE FW  DTV6 QAM ATSC LG60 F6MHZ HAS IF (0x68050060), IF = 6.20 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x68050060);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(6200);			# IF
	write_le32(192);			# Size
	write_hunk(809400, 192);

	#
	# Firmware 71, type: SCODE FW  HAS IF (0x60000000), IF = 6.24 MHz id: PAL/I (0000000000000010), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000010);	# ID
	write_le16(6240);			# IF
	write_le32(192);			# Size
	write_hunk(808248, 192);

	#
	# Firmware 72, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.32 MHz id: SECAM/K1 (0000000000200000), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le16(6320);			# IF
	write_le32(192);			# Size
	write_hunk(811320, 192);

	#
	# Firmware 73, type: SCODE FW  HAS IF (0x60000000), IF = 6.34 MHz id: SECAM/K1 (0000000000200000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00200000);	# ID
	write_le16(6340);			# IF
	write_le32(192);			# Size
	write_hunk(809208, 192);

	#
	# Firmware 74, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.50 MHz id: PAL/DK SECAM/K3 SECAM/L NICAM (0000000c044000e0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x0000000c, 0x044000e0);	# ID
	write_le16(6500);			# IF
	write_le32(192);			# Size
	write_hunk(811128, 192);

	#
	# Firmware 75, type: SCODE FW  DTV6 ATSC ATI638 HAS IF (0x60090020), IF = 6.58 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60090020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(6580);			# IF
	write_le32(192);			# Size
	write_hunk(807480, 192);

	#
	# Firmware 76, type: SCODE FW  HAS IF (0x60000000), IF = 6.60 MHz id: PAL/DK A2 (00000003000000e0), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le16(6600);			# IF
	write_le32(192);			# Size
	write_hunk(809016, 192);

	#
	# Firmware 77, type: SCODE FW  MONO HAS IF (0x60008000), IF = 6.68 MHz id: PAL/DK A2 (00000003000000e0), size: 192
	#

	write_le32(0x60008000);			# Type
	write_le64(0x00000003, 0x000000e0);	# ID
	write_le16(6680);			# IF
	write_le32(192);			# Size
	write_hunk(810936, 192);

	#
	# Firmware 78, type: SCODE FW  DTV6 ATSC TOYOTA794 HAS IF (0x60810020), IF = 8.14 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60810020);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(8140);			# IF
	write_le32(192);			# Size
	write_hunk(810168, 192);

	#
	# Firmware 79, type: SCODE FW  HAS IF (0x60000000), IF = 8.20 MHz id: (0000000000000000), size: 192
	#

	write_le32(0x60000000);			# Type
	write_le64(0x00000000, 0x00000000);	# ID
	write_le16(8200);			# IF
	write_le32(192);			# Size
	write_hunk(812856, 192);
}


sub extract_firmware {
	my $sourcefile_24 = "UDXTTM6000.sys";
	my $hash_24 = "cb9deb5508a5e150af2880f5b0066d78";
	my $outfile_24 = "xc3028-v24.fw";
	my $name_24 = "xc2028 firmware";
	my $version_24 = 516;
	my $nr_desc_24 = 77;
	my $out;

	my $sourcefile_27 = "hcw85bda.sys";
	my $hash_27 = "0e44dbf63bb0169d57446aec21881ff2";
	my $outfile_27 = "xc3028-v27.fw";
	my $name_27 = "xc2028 firmware";
	my $version_27 = 519;
	my $nr_desc_27 = 80;
	my $out;

	if (-e $sourcefile_24) {
		verify($sourcefile_24, $hash_24);

		open INFILE, "<$sourcefile_24";
		main_firmware_24($outfile_24, $name_24, $version_24, $nr_desc_24);
		close INFILE;
	}

	if (-e $sourcefile_27) {
		verify($sourcefile_27, $hash_27);

		open INFILE, "<$sourcefile_27";
		main_firmware_27($outfile_27, $name_27, $version_27, $nr_desc_27);
		close INFILE;
	}
}

extract_firmware;
printf "Firmwares generated.\n";

Filemanager

Name Type Size Permission Actions
basic Folder 0755
coccinelle Folder 0755
dtc Folder 0755
gcc-plugins Folder 0755
gdb Folder 0755
genksyms Folder 0755
kconfig Folder 0755
ksymoops Folder 0755
mod Folder 0755
package Folder 0755
selinux Folder 0755
tracing Folder 0755
.gitignore File 162 B 0644
Kbuild.include File 18.36 KB 0644
Lindent File 502 B 0755
Makefile File 1.9 KB 0644
Makefile.asm-generic File 1.17 KB 0644
Makefile.build File 20.68 KB 0644
Makefile.clean File 2.96 KB 0644
Makefile.dtbinst File 1.09 KB 0644
Makefile.extrawarn File 2.9 KB 0644
Makefile.gcc-plugins File 3.75 KB 0644
Makefile.headersinst File 3.98 KB 0644
Makefile.host File 6.23 KB 0644
Makefile.kasan File 1.09 KB 0644
Makefile.kcov File 201 B 0644
Makefile.lib File 15.25 KB 0644
Makefile.modbuiltin File 1.82 KB 0644
Makefile.modinst File 1.52 KB 0644
Makefile.modpost File 5.43 KB 0644
Makefile.modsign File 1.02 KB 0644
Makefile.ubsan File 1.07 KB 0644
adjust_autoksyms.sh File 3.09 KB 0755
asn1_compiler.c File 35.54 KB 0644
bloat-o-meter File 3.22 KB 0755
bootgraph.pl File 6.28 KB 0755
check_00index.sh File 1.3 KB 0755
check_extable.sh File 4.93 KB 0755
checkincludes.pl File 1.94 KB 0755
checkkconfigsymbols.py File 15.51 KB 0755
checkpatch.pl File 186.79 KB 0755
checkstack.pl File 5.49 KB 0755
checksyscalls.sh File 5.68 KB 0755
checkversion.pl File 1.9 KB 0755
cleanfile File 3.46 KB 0755
cleanpatch File 5.06 KB 0755
coccicheck File 7.24 KB 0755
config File 4.64 KB 0755
conmakehash.c File 5.98 KB 0644
const_structs.checkpatch File 964 B 0644
decode_stacktrace.sh File 3.82 KB 0755
decodecode File 2.3 KB 0755
depmod.sh File 1.94 KB 0755
diffconfig File 3.72 KB 0755
documentation-file-ref-check File 395 B 0755
export_report.pl File 4.55 KB 0755
extract-cert.c File 3.63 KB 0644
extract-ikconfig File 1.69 KB 0755
extract-module-sig.pl File 3.66 KB 0755
extract-sys-certs.pl File 3.75 KB 0755
extract-vmlinux File 1.6 KB 0755
extract_xc3028.pl File 44.6 KB 0755
faddr2line File 5.53 KB 0755
find-unused-docs.sh File 1.27 KB 0755
gcc-goto.sh File 530 B 0755
gcc-ld File 711 B 0755
gcc-plugin.sh File 1.06 KB 0755
gcc-version.sh File 857 B 0755
gcc-x86_32-has-stack-protector.sh File 219 B 0755
gcc-x86_64-has-stack-protector.sh File 244 B 0755
gen_initramfs_list.sh File 8.03 KB 0755
get_dvb_firmware File 25.22 KB 0755
get_maintainer.pl File 65.03 KB 0755
gfp-translate File 1.71 KB 0755
headerdep.pl File 3.5 KB 0755
headers.sh File 512 B 0755
headers_check.pl File 3.73 KB 0755
headers_install.sh File 1.32 KB 0755
insert-sys-cert.c File 13.08 KB 0644
kallsyms.c File 18.89 KB 0644
kernel-doc File 92.36 KB 0755
kmsg-doc File 12.13 KB 0755
ld-version.sh File 269 B 0755
leaking_addresses.pl File 9.65 KB 0755
link-vmlinux.sh File 7.65 KB 0755
makelst File 808 B 0755
markup_oops.pl File 8.08 KB 0755
mkcompile_h File 2.74 KB 0755
mkmakefile File 1.19 KB 0755
mksysmap File 1.34 KB 0755
mkuboot.sh File 414 B 0755
module-common.lds File 901 B 0644
namespace.pl File 13.18 KB 0755
objdiff File 2.85 KB 0755
parse-maintainers.pl File 3.72 KB 0755
patch-kernel File 9.95 KB 0755
pnmtologo.c File 11.91 KB 0644
profile2linkerlist.pl File 414 B 0755
prune-kernel File 708 B 0755
recordmcount.c File 17.49 KB 0644
recordmcount.h File 16.4 KB 0644
recordmcount.pl File 18.41 KB 0755
setlocalversion File 4.72 KB 0755
show_delta File 2.99 KB 0755
sign-file.c File 9.93 KB 0644
sortextable.c File 8.35 KB 0644
sortextable.h File 5.48 KB 0644
spelling.txt File 24.97 KB 0644
sphinx-pre-install File 14.04 KB 0755
stackdelta File 1.84 KB 0755
stackusage File 794 B 0755
subarch.include File 641 B 0644
tags.sh File 9.49 KB 0755
ubuntu-retpoline-extract-one File 7.26 KB 0644
unifdef.c File 34.8 KB 0644
ver_linux File 2.94 KB 0755
xen-hypercalls.sh File 386 B 0644
xz_wrap.sh File 562 B 0755