--- /work/asmwork/ProjRWASA/HeavyThing-1.24/url.inc +++ /work/asmwork/ProjRWASA/HeavyThing-1.24_fixed/url.inc @@ -1575,7 +1575,6 @@ mov r13, rax mov rdi, rax mov rsi, r12 - shl rsi, 2 call buffer$reserve mov rdi, [r13+buffer_itself_ofs] lea rsi, [rbx+8] @@ -1592,12 +1591,10 @@ je .doit_perc cmp eax, '+' je .doit_plus - mov [rdi], eax -if string_bits = 32 - add rdi, 4 -else - add rdi, 2 -end if + + mov [rdi], al + inc rdi + sub r12, 1 jnz .doit jmp .done @@ -1607,54 +1604,47 @@ jz .done cmp r12, 2 jb .done + if string_bits = 32 mov eax, [rsi] mov ecx, [rsi+4] add rsi, 8 mov [rsp+16], eax mov [rsp+20], ecx - push rdi rsi - lea rdi, [rsp+16] - call string$to_unsigned - pop rsi rdi - mov [rdi], eax - add rdi, 4 else movzx eax, word [rsi] movzx ecx, word [rsi+2] add rsi, 4 mov [rsp+12], ax mov [rsp+14], cx +end if + push rdi rsi lea rdi, [rsp+16] call string$to_unsigned pop rsi rdi - mov [rdi], eax - add rdi, 2 -end if + mov [rdi], al + inc rdi + sub r12, 2 jnz .doit jmp .done + calign .doit_plus: - mov dword [rdi], ' ' -if string_bits = 32 - add rdi, 4 -else - add rdi, 2 -end if + mov byte [rdi], ' ' + inc rdi sub r12, 1 jnz .doit + calign .done: mov rsi, rdi mov rdi, [r13+buffer_itself_ofs] sub rsi, rdi -if string_bits = 32 - call string$from_utf32 -else - call string$from_utf16 -end if + + call string$from_utf8 + mov r12, rax mov rdi, r13 call buffer$destroy @@ -1682,6 +1672,7 @@ push rbx r12 r13 sub rsp, 32 mov qword [rsp], 4 + if string_bits = 32 mov dword [rsp+8], '0' mov dword [rsp+12], 'x' @@ -1695,7 +1686,6 @@ mov r13, rax mov rdi, rax mov rsi, r12 - shl rsi, 2 call buffer$reserve mov rdi, [r13+buffer_itself_ofs] lea rsi, [rbx+8] @@ -1710,59 +1700,54 @@ end if cmp eax, '%' je .doit_perc - mov [rdi], eax -if string_bits = 32 - add rdi, 4 -else - add rdi, 2 -end if + + mov [rdi], al + inc rdi + sub r12, 1 jnz .doit jmp .done + calign .doit_perc: sub r12, 1 jz .done cmp r12, 2 jb .done + if string_bits = 32 mov eax, [rsi] mov ecx, [rsi+4] add rsi, 8 mov [rsp+16], eax mov [rsp+20], ecx - push rdi rsi - lea rdi, [rsp+16] - call string$to_unsigned - pop rsi rdi - mov [rdi], eax - add rdi, 4 else movzx eax, word [rsi] movzx ecx, word [rsi+2] add rsi, 4 mov [rsp+12], ax mov [rsp+14], cx +end if + push rdi rsi lea rdi, [rsp+16] call string$to_unsigned pop rsi rdi - mov [rdi], eax - add rdi, 2 -end if + mov [rdi], al + inc rdi + sub r12, 2 jnz .doit jmp .done + calign .done: mov rsi, rdi mov rdi, [r13+buffer_itself_ofs] sub rsi, rdi -if string_bits = 32 - call string$from_utf32 -else - call string$from_utf16 -end if + + call string$from_utf8 + mov r12, rax mov rdi, r13 call buffer$destroy