;--------------------------------------------------------------------- align 4 .check_filtering_24: cmp [filtering],0 je .24_1 mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_y_24 ;.24_1 mov ebx,[temp_x1] push eax mov eax,[x] dec eax lea eax,[eax*3] cmp ebx,eax pop eax jae .last_x_24 ;.24_1 ; mov ebx,[esp+4] ;; test ebx,ebx ;; jz .24_1 ; inc ebx ; cmp bx,[new_size.y1] ; jae .last_y ;.24_1 ; mov ebx,[esp] ;; test ebx,ebx ;; jz .24_1 ; inc ebx ; cmp bx,[new_size.x1] ; jae .last_x ;.24_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+3] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] mov eax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+3] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX .24_1: ret ;--------------------------------------------------------------------- align 4 .last_y_24: mov ebx,[temp_x1] push eax mov eax,[x] dec eax lea eax,[eax*3] cmp ebx,eax pop eax jae .last_x_y_24 ;.24_1 mov ebx,[esp+4] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.x1] jae .last_x_y_24 ;.24_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+3] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ;--------------------------------------- ret ;--------------------------------------------------------------------- align 4 .last_x_24: mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_x_y_24 ;.24_1 mov ebx,[esp+8] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.y1] jae .last_x_y_24 ;.24_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] mov eax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .last_x_y_24: ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .copy_RGB_to_RGB1: mov eax,[B_sample] mov [B_sample_1],eax mov eax,[G_sample] mov [G_sample_1],eax mov eax,[R_sample] mov [R_sample_1],eax ret ;--------------------------------------- align 4 .mix_RGB: xor ebx,ebx mov bl,al imul ebx,edx add [B_sample],ebx shr eax,8 xor ebx,ebx mov bl,al imul ebx,edx add [G_sample],ebx shr eax,8 xor ebx,ebx mov bl,al imul ebx,edx add [R_sample],ebx ret ;--------------------------------------- align 4 .mix_RGB_16: xor ebx,ebx mov bl,al and bl,0x1F imul ebx,edx add [B_sample],ebx shr eax,5 xor ebx,ebx mov bl,al cmp [resolution],16 jne @f and bl,0x3F shr eax,6 jmp .mix_RGB_16_G_sample align 4 @@: and bl,0x1F shr eax,5 align 4 .mix_RGB_16_G_sample: imul ebx,edx add [G_sample],ebx xor ebx,ebx mov bl,al and bl,0x1F imul ebx,edx add [R_sample],ebx ret ;--------------------------------------- align 4 .clear_RGB: xor ebx,ebx mov [B_sample],ebx mov [G_sample],ebx mov [R_sample],ebx ret ;--------------------------------------- align 4 .RGB_to_EAX: mov eax,[R_sample] shr eax,7 and eax,0xff shl eax,8 mov ebx,[G_sample] shr ebx,7 mov al,bl shl eax,8 mov ebx,[B_sample] shr ebx,7 mov al,bl ret ;--------------------------------------- align 4 .RGB_to_EAX_16: mov eax,[R_sample] shr eax,7 and eax,0x1F mov ebx,[G_sample] shr ebx,7 cmp [resolution],16 jne @f shl eax,6 and ebx,0x3F jmp .RGB_to_EAX_16_G_sample align 4 @@: shl eax,5 and ebx,0x1F align 4 .RGB_to_EAX_16_G_sample: add eax,ebx shl eax,5 mov ebx,[B_sample] shr ebx,7 and ebx,0x1F add eax,ebx ret ;--------------------------------------- align 4 .RGB_to_EAX1: mov eax,[R_sample_1] shr eax,7 and eax,0xff shl eax,8 mov ebx,[G_sample_1] shr ebx,7 mov al,bl shl eax,8 mov ebx,[B_sample_1] shr ebx,7 mov al,bl ret ;--------------------------------------- align 4 .RGB_to_EAX1_16: mov eax,[R_sample_1] shr eax,7 and eax,0x1F mov ebx,[G_sample_1] shr ebx,7 cmp [resolution],16 jne @f shl eax,6 and ebx,0x3F jmp .RGB_to_EAX1_16_G_sample align 4 @@: shl eax,5 and ebx,0x1F align 4 .RGB_to_EAX1_16_G_sample: add eax,ebx shl eax,5 mov ebx,[B_sample_1] shr ebx,7 and ebx,0x1F add eax,ebx ret ;--------------------------------------------------------------------- align 4 .check_filtering_32: cmp [filtering],0 je .32_1 mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_y_32 ;.24_1 mov ebx,[temp_x1] push eax mov eax,[x] dec eax shl eax,2 cmp ebx,eax pop eax jae .last_x_32 ;.24_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+4] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] mov eax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+4] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX .32_1: ret ;--------------------------------------------------------------------- align 4 .last_y_32: mov ebx,[temp_x1] push eax mov eax,[x] dec eax shl eax,2 cmp ebx,eax pop eax jae .last_x_y_32 ;.32_1 mov ebx,[esp+4] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.x1] jae .last_x_y_32 ;.32_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[ecx+4] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .last_x_32: mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_x_y_32 ;.32_1 mov ebx,[esp+8] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.y1] jae .last_x_y_32 ;.32_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] mov eax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .last_x_y_32: ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .check_filtering_16: cmp [filtering],0 je .16_1 mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_y_16 ;.24_1 mov ebx,[temp_x1] push eax mov eax,[x] dec eax shl eax,1 cmp ebx,eax pop eax jae .last_x_16 ;.24_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] xor eax,eax mov ax,[ecx+2] call .mix_RGB_16 ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] xor eax,eax mov ax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] xor eax,eax mov ax,[ecx+2] call .mix_RGB_16 call .RGB_to_EAX_16 call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB_16 ;---------------------------- call .RGB_to_EAX1_16 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB_16 call .RGB_to_EAX_16 .16_1: ret ;--------------------------------------------------------------------- align 4 .last_y_16: mov ebx,[temp_x1] push eax mov eax,[x] dec eax shl eax,1 cmp ebx,eax pop eax jae .last_x_y_16 ;.16_1 mov ebx,[esp+4] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.x1] jae .last_x_y_16 ;.16_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] xor eax,eax mov ax,[ecx+2] call .mix_RGB_16 ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] and eax,0xffff call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] mov eax,[background_color] and eax,0xffff call .mix_RGB_16 call .RGB_to_EAX_16 call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB_16 ;---------------------------- call .RGB_to_EAX1_16 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB_16 call .RGB_to_EAX_16 ret ;--------------------------------------------------------------------- align 4 .last_x_16: mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_x_y_16 ;.16_1 mov ebx,[esp+8] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.y1] jae .last_x_y_16 ;.16_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] mov eax,[background_color] and eax,0xffff call .mix_RGB_16 ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] xor eax,eax mov ax,[ecx] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] mov eax,[background_color] and eax,0xffff call .mix_RGB_16 call .RGB_to_EAX_16 call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB_16 ;---------------------------- call .RGB_to_EAX1_16 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB_16 call .RGB_to_EAX_16 ret ;--------------------------------------------------------------------- align 4 .last_x_y_16: ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] mov eax,[background_color] and eax,0xffff call .mix_RGB_16 ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] and eax,0xffff call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB_16 mov edx,[next_pixel_x] mov eax,[background_color] and eax,0xffff call .mix_RGB_16 call .RGB_to_EAX_16 call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB_16 ;---------------------------- call .RGB_to_EAX1_16 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB_16 call .RGB_to_EAX_16 ret ;--------------------------------------------------------------------- align 4 .get_palette: shl eax,2 add eax,[palette] mov eax,[eax] ret ;--------------------------------------------------------------------- align 4 .check_filtering_8: xor eax,eax mov al,[ecx] call .get_palette mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_y_8 mov ebx,[temp_x1] push eax mov eax,[x] dec eax cmp ebx,eax pop eax jae .last_x_8 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] xor eax,eax mov al,[ecx+1] call .get_palette call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] xor eax,eax mov al,[ecx] call .get_palette call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] xor eax,eax mov al,[ecx+1] call .get_palette call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX .8_1: ret ;--------------------------------------------------------------------- align 4 .last_y_8: mov ebx,[temp_x1] push eax mov eax,[x] dec eax cmp ebx,eax pop eax jae .last_x_y_8 ;.8_1 mov ebx,[esp+4] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.x1] jae .last_x_y_8 ;.8_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] xor eax,eax mov al,[ecx+1] call .get_palette call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ;--------------------------------------- ret ;--------------------------------------------------------------------- align 4 .last_x_8: mov ebx,[temp_y1] inc ebx cmp ebx,[y] jae .last_x_y_8 ;.8_1 mov ebx,[esp+8] ; test ebx,ebx ; jz .24_1 inc ebx cmp bx,[new_size.y1] jae .last_x_y_8 ;.8_1 ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- add ecx,[size_x] xor eax,eax mov al,[ecx] call .get_palette call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;--------------------------------------------------------------------- align 4 .last_x_y_8: ;---------------------------- call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB ;---------------------------- call .copy_RGB_to_RGB1 ;---------------------------- mov eax,[background_color] call .clear_RGB mov edx,128 ;100 sub edx,[next_pixel_x] call .mix_RGB mov edx,[next_pixel_x] mov eax,[background_color] call .mix_RGB call .RGB_to_EAX call .clear_RGB mov edx,[next_pixel_y] call .mix_RGB ;---------------------------- call .RGB_to_EAX1 ;---------------------------- mov edx,128 ;100 sub edx,[next_pixel_y] call .mix_RGB call .RGB_to_EAX ret ;---------------------------------------------------------------------