PowerShell 7+, 56, 35 bytes
-join"$args"['a'[0]-97?99..0:0..99] # save as golf.ps1 and call .\golf.ps1 "string" # e.g. (running in anonymous function &{} for demo): PS C:\> &{-join"$args"['a'[0]-97?99..0:0..99]} '123 Alice' 123 Alice PS C:\> &{-JOIN"$ARGS"['A'[0]-97?99..0:0..99]} '123 Alice' ecilA 321
With golfing suggestions from mazzy.
Assuming the string is <= 100 characters. Change both the 99s to 1e5 notation for +2 bytes, much longer inputs, and much much slower code.
old 56 byte version
&{$a="$args";(gv a).name[0]-97?-join$a[$a.length..0]:$a} e.g. PS C:\> &{$a="$args";(gv a).name[0]-97?-join$a[$a.length..0]:$a} "123 Alice" 123 Alice PS C:\> &{$A="$ARGS";(GV A).NAME[0]-97?-join$A[$A.LENGTH..0]:$A} "123 Alice" ecilA 321
The parameters to the anonymous function {} appear in the automatic variable $args and get stored in variable $a. String quotes "$args" cast to a single string. PowerShell is indifferent about the case of variable names, command names, property names, operator names, etc. so all the code runs in either case. gv is get-variable which looks for the a variable, finds its .Name (a or A depending on the case of the script - case is preserved), gets character [0] which is a or A again but this time as a [char] type, subtracts 97 (lowercase a value in ASCII), and ? : ternary operators whether that hit zero or non-zero, and either prints the original or reverse-indexes the characters and joins them into a reversed string. Printing is implicit. &{} runs the anonymous function.
NB. TIO.Run only has PowerShell 5 or 6 at the time of writing, and ternary ?: is not in that version.
heLLOwould becomeHEllo. Although this question would still be way too hard \$\endgroup\$