me podrían dar por favor un ejemplo del primer recorrido?
Comienza desde el 6to elemento ( i = 5 )
Pregunta si es mayor a 64 decimal o que es lo mismo que 0x40 hexadecimal.
De ser mayor, le resta 55 ( 0x37 hexa) y si es 64 o menos, le resta solo 48 ( 0x30)
Code[5] 0X36
Code[6] 0X32
Code[7] 0X39
...
Code[10] 0X39
Primera vuelta:
Num es 0x0, al girar 4 lugares sigue en 0.
0x36 es 54 decimal, por lo tanto entra a la parte del else y solo le resta 48, es decir quedaria 0x06 en Num.
Segunda vuelta.
Luego se corre 4 lugares a la izquierda, es decir pasa de 0x06 a 0x60 para hacer lugar al otro numero.
Ahora recibe un 0x32, y sigue siendo menor que 64, por lo tanto le resta 0x30, quedando solo 0x02.
Se lo suma a Num, quedando ahora Num como 0x62
Tercera vuelta.
Luego se corre 4 lugares a la izquierda, es decir pasa de 0x62 a 0x620 para hacer lugar al otro numero.
Ahora recibe un 0x39, y sigue siendo menor que 64, por lo tanto le resta 0x30, quedando solo 0x09.
Se lo suma a Num, quedando ahora Num como 0x629
Etc...
Si observas ninguno de los números desde el 5 hasta el 10 supera los 64. Y como podes ver queda siempre el ultimo nibble.
Por lo tanto Num va a quedar como 0x629929 que pasado a decimal es: 6.461.737 y es el numero que ves.
La pregunta es ... ¿Por que hacer esto?
Por que no es lo mismo 0x9 que 0x39, uno es el numero 9 decimal, y el otro es una codificación bastante común que es digito ASCII '9'. Asi que una forma facil de pasar el ASCII a hexadecimal/decimal, es restarle 0x30.
¿Por que mayor que 64?
Por que 65 o 0x41 empiezan las letras en la codificacion ASCII, la 'A' es el 0x41
Te dejo una tabla ASCII

¿Por que te dijeron que era un conversor ASCII a hexadecimal?
Por que observa que no vuelve el numero decimal 629.929, sino que tenes el valor hexadecimal 0x62 9929 que es muy distinto.
Por eso no podria hablarse de una conversion ASCII a decimal.
¿Por que resta 55?
Como dijimos antes la idea era convertirlo en hexadecimal.
Si recibis un 0x41 ( 65 decimal, y 'A' en ASCII ) entonces por la logica del programa restas 55, y lo que te queda es 10 decimal, o que es lo mismo que 0xA hexa.
Es decir, convertiste una 'A' en ASCII en un valor hexadecimal 0xA.
Recorda que el hexadecimal tenes letras desde la A hasta la F, si recibe un valor por encima de estos valores ya no funciona el programa como debería, porque pasa a ocupar mas de un nibble (4 bits).
Si tuvieras estos valores en las posiciones 5 a 10:
"9977AB"
El resultado de tu programa sera 0x9977AB = 10.057.643 decimal. Podes probarlo.