login: ; calling convention 455e: 0b12 push r11 ; print message 4560: 3150 f0ff add #0xfff0, sp 4564: 3f40 7044 mov #0x4470 "Enter the password to continue.", r15 4568: b012 6046 call #0x4660 456c: 3f40 9044 mov #0x4490 "Remember: passwords are between 8 and 16 characters.", r15 4570: b012 6046 call #0x4660 4574: 3f40 c544 mov #0x44c5 "Due to some users abusing our login system, we have", r15 4578: b012 6046 call #0x4660 457c: 3f40 f944 mov #0x44f9 "restricted passwords to only alphanumeric characters.", r15 4580: b012 6046 call #0x4660 ; Move 0x200 B from stdin to 0x2400 4584: 3e40 0002 mov #0x200, r14 4588: 3f40 0024 mov #0x2400, r15 458c: b012 5046 call #0x4650 ; set up registers 4590: 5f42 0024 mov.b &0x2400, r15 4594: 0e43 clr r14 4596: 7c40 0900 mov.b #0x9, r12 459a: 7d40 1900 mov.b #0x19, r13 ; jump into loop 459e: 073c jmp $+0x10 ; Get a character 45a0: 0b41 mov sp, r11 45a2: 0b5e add r14, r11 45a4: cb4f 0000 mov.b r15, 0x0(r11) ; move the character to 45a8: 5f4e 0024 mov.b 0x2400(r14), r15 45ac: 1e53 inc r14 login_0x50: 45ae: 4b4f mov.b r15, r11 45b0: 7b50 d0ff add.b #0xffd0, r11 45b4: 4c9b cmp.b r11, r12 45b6: f42f jc $-0x16 45b8: 7b50 efff add.b #0xffef, r11 45bc: 4d9b cmp.b r11, r13 45be: f02f jc $-0x1e 45c0: 7b50 e0ff add.b #0xffe0, r11 45c4: 4d9b cmp.b r11, r13 45c6: ec2f jc $-0x26 ; Delete the byte at the unalignment position 45c8: c143 0000 mov.b #0x0, 0x0(sp) ; Reset the temporary buffer to all 0 45cc: 3d40 0002 mov #0x200, r13 45d0: 0e43 clr r14 45d2: 3f40 0024 mov #0x2400, r15 45d6: b012 8c46 call #0x468c 45da: 0f41 mov sp, r15 45dc: b012 4644 call #0x4446 45e0: 0f93 tst r15 45e2: 0324 jz $+0x8 45e4: 3f40 2f45 mov #0x452f "Access granted.", r15 45e8: 023c jmp $+0x6 45ea: 3f40 3f45 mov #0x453f "That password is not correct.", r15 45ee: b012 6046 call #0x4660 45f2: 3150 1000 add #0x10, sp ; calling convention 45f6: 3b41 pop r11 45f8: 3041 ret