extern libz_strlen global libz_tolower section .text libz_tolower: sub rsp, 8 ;enter mov r11, rdi call libz_strlen mov r10, rax xor rcx, rcx ;we do this to clear rcx incase it had garbage in it before _loop: ;do loop things mov r9, r11 add r9, rcx mov r8b, [r9] ;this block here makes sure that our character is a capital letter and if its not a capital letter do nothing and return cmp r8b, 90 ja _endloop cmp r8b, 65 jb _endloop add r8b, 32 ;make the letter capital mov [r9], r8b _endloop: ;end loop inc rcx cmp rcx, r10 jle _loop add rsp, 8 ;exit ret