4b66 4b66: 0b12 push index 4b68: 0a12 push r10 4b6a: 0912 push r9 4b6c: 0812 push r8 4b6e: 0712 push r7 ; allocate 0x600 buffer on stack. Woah! 4b70: 3150 00fa add #0xfa00, sp ; r8 = create_hash_table (0x3, 0x5) 4b74: 3e40 0500 mov #0x5, r14 4b78: 3f40 0300 mov #0x3, r15 4b7c: b012 7847 call #0x4778 4b80: 084f mov r15, r8 ; save result ; print out some shit 4b82: 3f40 384a mov #0x4a38, r15 4b86: b012 504d call #0x4d50 4b8a: 3f40 584a mov #0x4a58, r15 4b8e: b012 504d call #0x4d50 4b92: 3f40 954a mov #0x4a95, r15 4b96: b012 504d call #0x4d50 ; zero out the stack buffer allocated above 4b9a: 0e43 clr r14 4b9c: 3740 ff05 mov #0x5ff, r7 4ba0: 053c jmp $+0xc ; run+0x3c 4ba2: 0f41 mov sp, r15 4ba4: 0f5e add r14, r15 4ba6: cf43 0000 mov.b #0x0, 0x0(r15) 4baa: 1e53 inc r14 ; run+0x46: 4bac: 079e cmp r14, r7 4bae: f937 jge $-0xc ; get 0x550 characters -> stack buffer 4bb0: 3e40 5005 mov #0x550, r14 4bb4: 0f41 mov sp, r15 4bb6: b012 404d call #0x4d40 ; run+0x54: 4bba: 0b41 mov sp, index 4bbc: 923c jmp $+0x126 ; check for 'a' __access_check: 4bbe: 7f90 6100 cmp.b #0x61, r15 4bc2: 3a20 jnz $+0x76 ; __access%20_check 4bc4: 0e4b mov index, r14 4bc6: 3e50 0700 add #0x7, r14 4bca: 0b4e mov r14, index 4bcc: 073c jmp $+0x10 ; run+0x68: ; check for ' ' 4bce: 7f90 2000 cmp.b #0x20, r15 4bd2: 0320 jnz $+0x8 4bd4: cb43 0000 mov.b #0x0, 0x0(index) 4bd8: 043c jmp $+0xa 4bda: 1b53 inc index ; run+0x76: 4bdc: 6f4b mov.b @index, r15 4bde: 4f93 tst.b r15 4be0: f623 jnz $-0x12 ; run+0x7c: 4be2: 1b53 inc index 4be4: 0a43 clr r10 4be6: 0b3c jmp $+0x18 ; run+0x82: ; r13 = 4be8: 0d4a mov r10, r13 4bea: 0d5d add r13, r13 4bec: 0d5d add r13, r13 4bee: 0d5a add r10, r13 4bf0: 0d5d add r13, r13 4bf2: 6a4b mov.b @index, r10 4bf4: 8a11 sxt r10 4bf6: 3a50 d0ff add #0xffd0, r10 4bfa: 0a5d add r13, r10 4bfc: 1b53 inc index ; run+0x98: 4bfe: 6f4b mov.b @index, r15 4c00: 4f93 tst.b r15 4c02: 0324 jz $+0x8 ; check for ';' 4c04: 7f90 3b00 cmp.b #0x3b, r15 4c08: ef23 jnz $-0x20 ; run+0xa4: 4c0a: 0f48 mov r8, r15 4c0c: b012 cc49 call #0x49cc 4c10: 3f93 cmp #-0x1, r15 4c12: 0320 jnz $+0x8 ; No such box. 4c14: 3f40 964a mov #0x4a96, r15 4c18: 413c jmp $+0x84 4c1a: 0aef xor r15, r10 4c1c: 3af0 ff7f and #0x7fff, r10 4c20: 0820 jnz $+0x12 4c22: 0f9a cmp r10, r15 4c24: 0334 jge $+0x8 ; Access granted 4c26: 3f40 a34a mov #0x4aa3, r15 4c2a: 383c jmp $+0x72 ; Access granted, but account not activated. 4c2c: 3f40 b34a mov #0x4ab3, r15 4c30: 353c jmp $+0x6c ; Aceess denied [sic] 4c32: 3f40 de4a mov #0x4ade, r15 4c36: 323c jmp $+0x66 ; run+0xd2: ; check for 'n' __n_check: 4c38: 7f90 6e00 cmp.b #0x6e, r15 4c3c: 4020 jnz $+0x82 4c3e: 094b mov index, r9 4c40: 2952 add #0x4, r9 4c42: 0b49 mov r9, index 4c44: 073c jmp $+0x10 ; run+0xe0 ; check for ' ' 4c46: 7f90 2000 cmp.b #0x20, r15 4c4a: 0320 jnz $+0x8 4c4c: cb43 0000 mov.b #0x0, 0x0(index) ; if next char is space, skip it 4c50: 043c jmp $+0xa ; run+0xec 4c52: 1b53 inc index 4c54: 6f4b mov.b @index, r15 4c56: 4f93 tst.b r15 4c58: f623 jnz $-0x12 4c5a: 1b53 inc index 4c5c: 0a43 clr r10 4c5e: 0b3c jmp $+0x18 _to_decimal: ; convert the ascii in r10 to decimal? 4c60: 0c4a mov r10, r12 4c62: 0c5c add r12, r12 ; x2 4c64: 0c5c add r12, r12 ; x4 4c66: 0c5a add r10, r12 ; x5 4c68: 0c5c add r12, r12 ; xA 4c6a: 6a4b mov.b @index, r10 4c6c: 8a11 sxt r10 ; Subtract 0x30 4c6e: 3a50 d0ff add #0xffd0, r10 4c72: 0a5c add r12, r10 4c74: 1b53 inc index ; run+0x110 4c76: 6f4b mov.b @index, r15 4c78: 4f93 tst.b r15 4c7a: 0324 jz $+0x8 ; check for ';' 4c7c: 7f90 3b00 cmp.b #0x3b, r15 4c80: ef23 jnz $-0x20 4c82: 0a93 tst r10 4c84: 0334 jge $+0x8 ; Can not have pin with high bit set 4c86: 3f40 ec4a mov #0x4aec, r15 4c8a: 083c jmp $+0x12 4c8c: 0e49 mov r9, r14 4c8e: 0f48 mov r8, r15 4c90: b012 cc49 call #0x49cc 4c94: 3f93 cmp #-0x1, r15 4c96: 0524 jz $+0xc ; User already has an account 4c98: 3f40 124b mov #0x4b12, r15 4c9c: b012 504d call #0x4d50 4ca0: 1c3c jmp $+0x3a add_user_account: 4ca2: 0a12 push r10 4ca4: 0912 push r9 4ca6: 3012 2f4b push #0x4b2f 4caa: b012 4844 call #0x4448 4cae: 3150 0600 add #0x6, sp 4cb2: 0d4a mov r10, r13 4cb4: 0e49 mov r9, r14 4cb6: 0f48 mov r8, r15 4cb8: b012 3248 call #0x4832 4cbc: 0e3c jmp $+0x1e ; NOT strings ; end of the function: 4cbe: 3f40 544b mov #0x4b54, r15 4cc2: b012 504d call #0x4d50 failure_case: 4cc6: 1f43 mov #0x1, r15 4cc8: 3150 0006 add #0x600, sp run_end: 4ccc: 3741 pop r7 4cce: 3841 pop r8 4cd0: 3941 pop r9 4cd2: 3a41 pop r10 4cd4: 3b41 pop index 4cd6: 3041 ret ; loop_end 4cd8: 1b53 inc index ; check for ';' 4cda: fb90 3b00 0000 cmp.b #0x3b, 0x0(index) 4ce0: fb27 jz $-0x8 ; end of the loop ; run+0x17c: 4ce2: 6f4b mov.b @index, r15 4ce4: 4f93 tst.b r15 4ce6: 6b23 jnz $-0x128 ; 4bbe ; cleanup 4ce8: 0e43 clr r14 4cea: 603f jmp $-0x13e