Lines Matching refs:unpack_data

53 static void insert_old_dist(unpack_data_t *unpack_data, unsigned int distance)  in insert_old_dist()  argument
55 unpack_data->old_dist[3] = unpack_data->old_dist[2]; in insert_old_dist()
56 unpack_data->old_dist[2] = unpack_data->old_dist[1]; in insert_old_dist()
57 unpack_data->old_dist[1] = unpack_data->old_dist[0]; in insert_old_dist()
58 unpack_data->old_dist[0] = distance; in insert_old_dist()
61 static void insert_last_match(unpack_data_t *unpack_data, unsigned int length, unsigned int distanc… in insert_last_match() argument
63 unpack_data->last_dist = distance; in insert_last_match()
64 unpack_data->last_length = length; in insert_last_match()
67 static void copy_string(unpack_data_t *unpack_data, unsigned int length, unsigned int distance) in copy_string() argument
71 dest_ptr = unpack_data->unp_ptr - distance; in copy_string()
72 if (dest_ptr < MAXWINSIZE-260 && unpack_data->unp_ptr < MAXWINSIZE - 260) { in copy_string()
73 unpack_data->window[unpack_data->unp_ptr++] = unpack_data->window[dest_ptr++]; in copy_string()
75 unpack_data->window[unpack_data->unp_ptr++] = unpack_data->window[dest_ptr++]; in copy_string()
79 unpack_data->window[unpack_data->unp_ptr] = in copy_string()
80 unpack_data->window[dest_ptr++ & MAXWINMASK]; in copy_string()
81 unpack_data->unp_ptr = (unpack_data->unp_ptr + 1) & MAXWINMASK; in copy_string()
86 void rar_addbits(unpack_data_t *unpack_data, int bits) in rar_addbits() argument
90 bits += unpack_data->in_bit; in rar_addbits()
91 unpack_data->in_addr += bits >> 3; in rar_addbits()
92 unpack_data->in_bit = bits & 7; in rar_addbits()
95 unsigned int rar_getbits(unpack_data_t *unpack_data) in rar_getbits() argument
100 bit_field = (unsigned int) unpack_data->in_buf[unpack_data->in_addr] << 16; in rar_getbits()
101 bit_field |= (unsigned int) unpack_data->in_buf[unpack_data->in_addr+1] << 8; in rar_getbits()
102 bit_field |= (unsigned int) unpack_data->in_buf[unpack_data->in_addr+2]; in rar_getbits()
103 bit_field >>= (8-unpack_data->in_bit); in rar_getbits()
108 int rar_unp_read_buf(const unsigned char **fd, unpack_data_t *unpack_data) in rar_unp_read_buf() argument
113 data_size = unpack_data->read_top - unpack_data->in_addr; // Data left to process. in rar_unp_read_buf()
118 if (unpack_data->in_addr > MAX_BUF_SIZE/2) { in rar_unp_read_buf()
122 memmove(unpack_data->in_buf, unpack_data->in_buf+unpack_data->in_addr, in rar_unp_read_buf()
126 unpack_data->in_addr = 0; in rar_unp_read_buf()
127 unpack_data->read_top = data_size; in rar_unp_read_buf()
129 data_size = unpack_data->read_top; in rar_unp_read_buf()
132 if (unpack_data->pack_size < (uint32_t)((MAX_BUF_SIZE-data_size)&~0xf)) { in rar_unp_read_buf()
133 read_size = unpack_data->pack_size; in rar_unp_read_buf()
139 …AES_cbc_encrypt(*fd, unpack_data->in_buf + data_size, read_size, unpack_data->ctx, unpack_data->iv… in rar_unp_read_buf()
141 unpack_data->read_top += read_size; in rar_unp_read_buf()
142 unpack_data->pack_size -= read_size; in rar_unp_read_buf()
145 unpack_data->read_border = unpack_data->read_top - 30; in rar_unp_read_buf()
146 if (unpack_data->read_border < unpack_data->in_addr) { in rar_unp_read_buf()
147 …const ssize_t fill = ((unpack_data->read_top + 30) < MAX_BUF_SIZE) ? 30 : (MAX_BUF_SIZE - unpack_d… in rar_unp_read_buf()
149 memset(unpack_data->in_buf + unpack_data->read_top, 0, fill); in rar_unp_read_buf()
152 dump_stuff_msg("read_buf", unpack_data->in_buf + data_size, read_size > 32 ? 32 : read_size); in rar_unp_read_buf()
157 unsigned int rar_get_char(const unsigned char **fd, unpack_data_t *unpack_data) in rar_get_char() argument
159 if (unpack_data->in_addr > MAX_BUF_SIZE-30) { in rar_get_char()
160 if (!rar_unp_read_buf(fd, unpack_data)) { in rar_get_char()
166 return(unpack_data->in_buf[unpack_data->in_addr++]); in rar_get_char()
169 static void unp_write_data(unpack_data_t *unpack_data, unsigned char *data, int size) in unp_write_data() argument
173 unpack_data->true_size += size; in unp_write_data()
174 unpack_data->unp_crc = rar_crc(unpack_data->unp_crc, data, size); in unp_write_data()
175 if (unpack_data->max_size) { in unp_write_data()
176 if (unpack_data->written_size >= unpack_data->max_size) in unp_write_data()
179 if (unpack_data->written_size + size > unpack_data->max_size) in unp_write_data()
180 size = unpack_data->max_size - unpack_data->written_size; in unp_write_data()
182 unpack_data->written_size += size; in unp_write_data()
185 static void unp_write_area(unpack_data_t *unpack_data, unsigned int start_ptr, unsigned int end_ptr) in unp_write_area() argument
188 unp_write_data(unpack_data, &unpack_data->window[start_ptr], -start_ptr & MAXWINMASK); in unp_write_area()
189 unp_write_data(unpack_data, unpack_data->window, end_ptr); in unp_write_area()
191 unp_write_data(unpack_data, &unpack_data->window[start_ptr], end_ptr-start_ptr); in unp_write_area()
195 void rar_unp_write_buf_old(unpack_data_t *unpack_data) in rar_unp_write_buf_old() argument
198 if (unpack_data->unp_ptr < unpack_data->wr_ptr) { in rar_unp_write_buf_old()
199 unp_write_data(unpack_data, &unpack_data->window[unpack_data->wr_ptr], in rar_unp_write_buf_old()
200 -unpack_data->wr_ptr & MAXWINMASK); in rar_unp_write_buf_old()
201 unp_write_data(unpack_data, unpack_data->window, unpack_data->unp_ptr); in rar_unp_write_buf_old()
203 unp_write_data(unpack_data, &unpack_data->window[unpack_data->wr_ptr], in rar_unp_write_buf_old()
204 unpack_data->unp_ptr - unpack_data->wr_ptr); in rar_unp_write_buf_old()
206 unpack_data->wr_ptr = unpack_data->unp_ptr; in rar_unp_write_buf_old()
209 static void execute_code(unpack_data_t *unpack_data, struct rarvm_prepared_program *prg) in execute_code() argument
214 prg->init_r[6] = int64to32(unpack_data->written_size); in execute_code()
216 int64to32(unpack_data->written_size)); in execute_code()
218 int64to32(unpack_data->written_size>>32)); in execute_code()
219 rarvm_execute(&unpack_data->rarvm_data, prg); in execute_code()
224 static void unp_write_buf(unpack_data_t *unpack_data) in unp_write_buf() argument
234 written_border = unpack_data->wr_ptr; in unp_write_buf()
235 write_size = (unpack_data->unp_ptr - written_border) & MAXWINMASK; in unp_write_buf()
236 for (i=0 ; i < unpack_data->PrgStack.num_items ; i++) { in unp_write_buf()
242 flt = unpack_data->PrgStack.array[i]; in unp_write_buf()
254 unp_write_area(unpack_data, written_border, block_start); in unp_write_buf()
256 write_size = (unpack_data->unp_ptr - written_border) & MAXWINMASK; in unp_write_buf()
261 rarvm_set_memory(&unpack_data->rarvm_data, 0, in unp_write_buf()
262 unpack_data->window+block_start, block_length); in unp_write_buf()
265 rarvm_set_memory(&unpack_data->rarvm_data, 0, in unp_write_buf()
266 unpack_data->window+block_start, part_length); in unp_write_buf()
267 rarvm_set_memory(&unpack_data->rarvm_data, part_length, in unp_write_buf()
268 unpack_data->window, block_end); in unp_write_buf()
271 execute_code(unpack_data, prg); in unp_write_buf()
276 rar_filter_delete(unpack_data->PrgStack.array[i]); in unp_write_buf()
277 unpack_data->PrgStack.array[i] = NULL; in unp_write_buf()
278 while (i+1 < unpack_data->PrgStack.num_items) { in unp_write_buf()
279 next_filter = unpack_data->PrgStack.array[i+1]; in unp_write_buf()
286 rarvm_set_memory(&unpack_data->rarvm_data, 0, in unp_write_buf()
288 next_prg = &unpack_data->PrgStack.array[i+1]->prg; in unp_write_buf()
289 execute_code(unpack_data, next_prg); in unp_write_buf()
293 rar_filter_delete(unpack_data->PrgStack.array[i]); in unp_write_buf()
294 unpack_data->PrgStack.array[i] = NULL; in unp_write_buf()
296 unp_write_data(unpack_data, filtered_data, filtered_size); in unp_write_buf()
298 write_size = (unpack_data->unp_ptr - written_border) & MAXWINMASK; in unp_write_buf()
300 for (j=i ; j < unpack_data->PrgStack.num_items ; j++) { in unp_write_buf()
301 flt = unpack_data->PrgStack.array[j]; in unp_write_buf()
306 unpack_data->wr_ptr = written_border; in unp_write_buf()
312 unp_write_area(unpack_data, written_border, unpack_data->unp_ptr); in unp_write_buf()
313 unpack_data->wr_ptr = unpack_data->unp_ptr; in unp_write_buf()
363 int rar_decode_number(unpack_data_t *unpack_data, struct Decode *decode) in rar_decode_number() argument
368 bit_field = rar_getbits(unpack_data) & 0xfffe; in rar_decode_number()
418 rar_addbits(unpack_data, bits); in rar_decode_number()
440 static int read_tables(const unsigned char **fd, unpack_data_t *unpack_data) in read_tables() argument
458 if (unpack_data->in_addr > unpack_data->read_top-25) { in read_tables()
459 if (!rar_unp_read_buf(fd, unpack_data)) { in read_tables()
464 …rar_addbits(unpack_data, (8-unpack_data->in_bit) & 7); // jump to next aligned byte (still #0 if f… in read_tables()
465 bit_field = rar_getbits(unpack_data); in read_tables()
468 unpack_data->unp_block_type = BLOCK_PPM; in read_tables()
470 if (!ppm_decode_init(&unpack_data->ppm_data, fd, unpack_data, &unpack_data->ppm_esc_char)) { in read_tables()
476 unpack_data->unp_block_type = BLOCK_LZ; in read_tables()
478 unpack_data->prev_low_dist = 0; in read_tables()
479 unpack_data->low_dist_rep_count = 0; in read_tables()
482 memset(unpack_data->unp_old_table, 0, sizeof(unpack_data->unp_old_table)); in read_tables()
484 rar_addbits(unpack_data, 2); in read_tables()
487 length = (unsigned char)(rar_getbits(unpack_data) >> 12); in read_tables()
489 rar_addbits(unpack_data, 4); in read_tables()
491 zero_count = (unsigned char)(rar_getbits(unpack_data) >> 12); in read_tables()
493 rar_addbits(unpack_data, 4); in read_tables()
509 rar_make_decode_tables(bit_length,(struct Decode *)&unpack_data->BD,BC); in read_tables()
513 if (unpack_data->in_addr > unpack_data->read_top-5) { in read_tables()
514 if (!rar_unp_read_buf(fd, unpack_data)) { in read_tables()
519 number = rar_decode_number(unpack_data, (struct Decode *)&unpack_data->BD); in read_tables()
524 table[i] = (number+unpack_data->unp_old_table[i]) & 0xf; in read_tables()
528 n = (rar_getbits(unpack_data) >> 13) + 3; in read_tables()
529 rar_addbits(unpack_data, 3); in read_tables()
531 n = (rar_getbits(unpack_data) >> 9) + 11; in read_tables()
532 rar_addbits(unpack_data, 7); in read_tables()
541 n = (rar_getbits(unpack_data) >> 13) + 3; in read_tables()
542 rar_addbits(unpack_data, 3); in read_tables()
544 n = (rar_getbits(unpack_data) >> 9) + 11; in read_tables()
545 rar_addbits(unpack_data, 7); in read_tables()
552 unpack_data->tables_read = 1; in read_tables()
553 if (unpack_data->in_addr > unpack_data->read_top) { in read_tables()
557 rar_make_decode_tables(&table[0], &unpack_data->LD.D,NC); in read_tables()
558 rar_make_decode_tables(&table[NC], &unpack_data->DD.D,DC); in read_tables()
559 rar_make_decode_tables(&table[NC+DC], &unpack_data->LDD.D,LDC); in read_tables()
560 rar_make_decode_tables(&table[NC+DC+LDC], &unpack_data->RD.D,RC); in read_tables()
561 memcpy(unpack_data->unp_old_table,table,sizeof(unpack_data->unp_old_table)); in read_tables()
569 static int read_end_of_block(const unsigned char **fd, unpack_data_t *unpack_data) in read_end_of_block() argument
574 bit_field = rar_getbits(unpack_data); in read_end_of_block()
577 rar_addbits(unpack_data, 1); in read_end_of_block()
581 rar_addbits(unpack_data, 2); in read_end_of_block()
583 unpack_data->tables_read = !new_table; in read_end_of_block()
586 return !(new_file || (new_table && !read_tables(fd, unpack_data))); in read_end_of_block()
589 void rar_init_filters(unpack_data_t *unpack_data) in rar_init_filters() argument
591 MEM_FREE(unpack_data->old_filter_lengths); in rar_init_filters()
592 unpack_data->old_filter_lengths = NULL; in rar_init_filters()
593 unpack_data->old_filter_lengths_size = 0; in rar_init_filters()
594 unpack_data->last_filter = 0; in rar_init_filters()
596 rar_filter_array_reset(&unpack_data->Filters); in rar_init_filters()
597 rar_filter_array_reset(&unpack_data->PrgStack); in rar_init_filters()
600 static int add_vm_code(unpack_data_t *unpack_data, unsigned int first_byte, in add_vm_code() argument
620 rar_init_filters(unpack_data); in add_vm_code()
625 filter_pos = unpack_data->last_filter; in add_vm_code()
628 if ((size_t) filter_pos > unpack_data->Filters.num_items || in add_vm_code()
629 filter_pos > unpack_data->old_filter_lengths_size) { in add_vm_code()
633 unpack_data->last_filter = filter_pos; in add_vm_code()
634 new_filter = (filter_pos == unpack_data->Filters.num_items); in add_vm_code()
643 if (!rar_filter_array_add(&unpack_data->Filters, 1)) { in add_vm_code()
647 unpack_data->Filters.array[unpack_data->Filters.num_items-1] = in add_vm_code()
649 if (!unpack_data->Filters.array[unpack_data->Filters.num_items-1]) { in add_vm_code()
653 unpack_data->old_filter_lengths_size++; in add_vm_code()
654 unpack_data->old_filter_lengths = (int *) rar_realloc2(unpack_data->old_filter_lengths, in add_vm_code()
655 sizeof(int) * unpack_data->old_filter_lengths_size); in add_vm_code()
656 if (!unpack_data->old_filter_lengths) { in add_vm_code()
664 unpack_data->old_filter_lengths[unpack_data->old_filter_lengths_size-1] = 0; in add_vm_code()
667 filter = unpack_data->Filters.array[filter_pos]; in add_vm_code()
674 for (i=0 ; i < unpack_data->PrgStack.num_items; i++) { in add_vm_code()
675 unpack_data->PrgStack.array[i-empty_count] = unpack_data->PrgStack.array[i]; in add_vm_code()
676 if (unpack_data->PrgStack.array[i] == NULL) { in add_vm_code()
680 unpack_data->PrgStack.array[i] = NULL; in add_vm_code()
685 rar_filter_array_add(&unpack_data->PrgStack, 1); in add_vm_code()
688 stack_pos = unpack_data->PrgStack.num_items - empty_count; in add_vm_code()
689 unpack_data->PrgStack.array[stack_pos] = stack_filter; in add_vm_code()
697 stack_filter->block_start = (block_start + unpack_data->unp_ptr) & MAXWINMASK; in add_vm_code()
705 stack_filter->block_length = filter_pos < unpack_data->old_filter_lengths_size ? in add_vm_code()
706 unpack_data->old_filter_lengths[filter_pos] : 0; in add_vm_code()
709 stack_filter->next_window = unpack_data->wr_ptr != unpack_data->unp_ptr && in add_vm_code()
710 ((unpack_data->wr_ptr - unpack_data->unp_ptr) & MAXWINMASK) <= block_start; in add_vm_code()
713 unpack_data->old_filter_lengths[filter_pos] = stack_filter->block_length; in add_vm_code()
745 …if (!rarvm_prepare(&unpack_data->rarvm_data, &rarvm_input, &vm_code[0], (int) vm_codesize, &filter… in add_vm_code()
818 static int read_vm_code(unpack_data_t *unpack_data, const unsigned char **fd) in read_vm_code() argument
824 first_byte = rar_getbits(unpack_data)>>8; in read_vm_code()
825 rar_addbits(unpack_data, 8); in read_vm_code()
828 length = (rar_getbits(unpack_data) >> 8) + 7; in read_vm_code()
829 rar_addbits(unpack_data, 8); in read_vm_code()
831 length = rar_getbits(unpack_data); in read_vm_code()
832 rar_addbits(unpack_data, 16); in read_vm_code()
842 if (unpack_data->in_addr >= unpack_data->read_top-1 && in read_vm_code()
843 !rar_unp_read_buf(fd, unpack_data) && i<length-1) { in read_vm_code()
847 vmcode[i] = rar_getbits(unpack_data) >> 8; in read_vm_code()
848 rar_addbits(unpack_data, 8); in read_vm_code()
850 retval = add_vm_code(unpack_data, first_byte, vmcode, length); in read_vm_code()
855 static int read_vm_code_PPM(unpack_data_t *unpack_data, const unsigned char **fd) in read_vm_code_PPM() argument
861 first_byte = ppm_decode_char(&unpack_data->ppm_data, fd, unpack_data); in read_vm_code_PPM()
867 b1 = ppm_decode_char(&unpack_data->ppm_data, fd, unpack_data); in read_vm_code_PPM()
873 b1 = ppm_decode_char(&unpack_data->ppm_data, fd, unpack_data); in read_vm_code_PPM()
877 b2 = ppm_decode_char(&unpack_data->ppm_data, fd, unpack_data); in read_vm_code_PPM()
889 ch = ppm_decode_char(&unpack_data->ppm_data, fd, unpack_data); in read_vm_code_PPM()
896 retval = add_vm_code(unpack_data, first_byte, vmcode, length); in read_vm_code_PPM()
901 void rar_unpack_init_data(int solid, unpack_data_t *unpack_data) in rar_unpack_init_data() argument
904 unpack_data->tables_read = 0; in rar_unpack_init_data()
905 memset(unpack_data->old_dist, 0, sizeof(unpack_data->old_dist)); in rar_unpack_init_data()
906 unpack_data->old_dist_ptr= 0; in rar_unpack_init_data()
907 memset(unpack_data->unp_old_table, 0, sizeof(unpack_data->unp_old_table)); in rar_unpack_init_data()
908 memset(&unpack_data->LD, 0, sizeof(unpack_data->LD)); in rar_unpack_init_data()
909 memset(&unpack_data->DD, 0, sizeof(unpack_data->DD)); in rar_unpack_init_data()
910 memset(&unpack_data->LDD, 0, sizeof(unpack_data->LDD)); in rar_unpack_init_data()
911 memset(&unpack_data->RD, 0, sizeof(unpack_data->RD)); in rar_unpack_init_data()
912 memset(&unpack_data->BD, 0, sizeof(unpack_data->BD)); in rar_unpack_init_data()
913 unpack_data->last_dist= 0; in rar_unpack_init_data()
914 unpack_data->last_length=0; in rar_unpack_init_data()
915 unpack_data->ppm_esc_char = 2; in rar_unpack_init_data()
916 unpack_data->unp_ptr = 0; in rar_unpack_init_data()
917 unpack_data->wr_ptr = 0; in rar_unpack_init_data()
918 unpack_data->unp_block_type = BLOCK_LZ; in rar_unpack_init_data()
919 rar_init_filters(unpack_data); in rar_unpack_init_data()
921 unpack_data->in_bit = 0; in rar_unpack_init_data()
922 unpack_data->in_addr = 0; in rar_unpack_init_data()
923 unpack_data->read_top = 0; in rar_unpack_init_data()
924 unpack_data->read_border = 0; in rar_unpack_init_data()
925 unpack_data->written_size = 0; in rar_unpack_init_data()
926 unpack_data->true_size = 0; in rar_unpack_init_data()
927 rarvm_init(&unpack_data->rarvm_data); in rar_unpack_init_data()
928 unpack_data->unp_crc = 0xffffffff; in rar_unpack_init_data()
931 int rar_unpack29(const unsigned char *fd, int solid, unpack_data_t *unpack_data) in rar_unpack29() argument
955 rar_unpack_init_data(solid, unpack_data); in rar_unpack29()
956 if (!rar_unp_read_buf(&fd, unpack_data)) { in rar_unpack29()
960 if (!solid || !unpack_data->tables_read) { in rar_unpack29()
962 if (!read_tables(&fd, unpack_data)) { in rar_unpack29()
970 unpack_data->unp_ptr &= MAXWINMASK; in rar_unpack29()
972 if (unpack_data->in_addr > unpack_data->read_border) { in rar_unpack29()
973 if (!rar_unp_read_buf(&fd, unpack_data)) { in rar_unpack29()
978 if (((unpack_data->wr_ptr - unpack_data->unp_ptr) & MAXWINMASK) < 260 && in rar_unpack29()
979 unpack_data->wr_ptr != unpack_data->unp_ptr) { in rar_unpack29()
980 unp_write_buf(unpack_data); in rar_unpack29()
982 if (unpack_data->unp_block_type == BLOCK_PPM) { in rar_unpack29()
983 ch = ppm_decode_char(&unpack_data->ppm_data, &fd, unpack_data); in rar_unpack29()
986 ppm_cleanup(&unpack_data->ppm_data); // Reset possibly corrupt PPM data structures. in rar_unpack29()
987 unpack_data->unp_block_type = BLOCK_LZ; // Set faster and more fail proof LZ mode. in rar_unpack29()
991 if (ch == unpack_data->ppm_esc_char) { in rar_unpack29()
992 next_ch = ppm_decode_char(&unpack_data->ppm_data, &fd, unpack_data); in rar_unpack29()
999 if (!read_tables(&fd, unpack_data)) { in rar_unpack29()
1009 if (!read_vm_code_PPM(unpack_data, &fd)) { in rar_unpack29()
1020 ch = ppm_decode_char(&unpack_data->ppm_data, &fd, unpack_data); in rar_unpack29()
1036 copy_string(unpack_data, length+32, distance+2); in rar_unpack29()
1040 int length = ppm_decode_char(&unpack_data->ppm_data, &fd, unpack_data); in rar_unpack29()
1046 copy_string(unpack_data, length+4, 1); in rar_unpack29()
1052 unpack_data->window[unpack_data->unp_ptr++] = ch; in rar_unpack29()
1055 number = rar_decode_number(unpack_data, (struct Decode *)&unpack_data->LD); in rar_unpack29()
1062 unpack_data->window[unpack_data->unp_ptr++] = (unsigned char) number; in rar_unpack29()
1068 length += rar_getbits(unpack_data) >> (16-bits); in rar_unpack29()
1069 rar_addbits(unpack_data, bits); in rar_unpack29()
1071 dist_number = rar_decode_number(unpack_data, in rar_unpack29()
1072 (struct Decode *)&unpack_data->DD); in rar_unpack29()
1081 distance += ((rar_getbits(unpack_data) >> in rar_unpack29()
1083 rar_addbits(unpack_data, bits-4); in rar_unpack29()
1085 if (unpack_data->low_dist_rep_count > 0) { in rar_unpack29()
1086 unpack_data->low_dist_rep_count--; in rar_unpack29()
1087 distance += unpack_data->prev_low_dist; in rar_unpack29()
1089 low_dist = rar_decode_number(unpack_data, in rar_unpack29()
1090 (struct Decode *) &unpack_data->LDD); in rar_unpack29()
1096 unpack_data->low_dist_rep_count = in rar_unpack29()
1098 distance += unpack_data->prev_low_dist; in rar_unpack29()
1101 unpack_data->prev_low_dist = low_dist; in rar_unpack29()
1105 distance += rar_getbits(unpack_data) >> (16-bits); in rar_unpack29()
1106 rar_addbits(unpack_data, bits); in rar_unpack29()
1117 insert_old_dist(unpack_data, distance); in rar_unpack29()
1118 insert_last_match(unpack_data, length, distance); in rar_unpack29()
1119 copy_string(unpack_data, length, distance); in rar_unpack29()
1123 if (!read_end_of_block(&fd, unpack_data)) { in rar_unpack29()
1129 if (!read_vm_code(unpack_data, &fd)) { in rar_unpack29()
1136 if (unpack_data->last_length != 0) { in rar_unpack29()
1137 copy_string(unpack_data, unpack_data->last_length, in rar_unpack29()
1138 unpack_data->last_dist); in rar_unpack29()
1144 distance = unpack_data->old_dist[dist_number]; in rar_unpack29()
1146 unpack_data->old_dist[i] = unpack_data->old_dist[i-1]; in rar_unpack29()
1148 unpack_data->old_dist[0] = distance; in rar_unpack29()
1150 length_number = rar_decode_number(unpack_data, in rar_unpack29()
1151 (struct Decode *)&unpack_data->RD); in rar_unpack29()
1158 length += rar_getbits(unpack_data) >> (16-bits); in rar_unpack29()
1159 rar_addbits(unpack_data, bits); in rar_unpack29()
1161 insert_last_match(unpack_data, length, distance); in rar_unpack29()
1162 copy_string(unpack_data, length, distance); in rar_unpack29()
1168 distance += rar_getbits(unpack_data) >> (16-bits); in rar_unpack29()
1169 rar_addbits(unpack_data, bits); in rar_unpack29()
1171 insert_old_dist(unpack_data, distance); in rar_unpack29()
1172 insert_last_match(unpack_data, 2, distance); in rar_unpack29()
1173 copy_string(unpack_data, 2, distance); in rar_unpack29()
1180 unp_write_buf(unpack_data); in rar_unpack29()
1187 ppm_destructor(&unpack_data->ppm_data); in rar_unpack29()
1188 rarvm_free(&unpack_data->rarvm_data); in rar_unpack29()
1189 rar_init_filters(unpack_data); in rar_unpack29()