C1/73C0: C2 31 REP #$31 Flags and direct page manipulation. C1/73C2: 0B PHD C1/73C3: 48 PHA C1/73C4: 7B TDC C1/73C5: 69 EC FF ADC #$FFEC C1/73C8: 5B TCD C1/73C9: 68 PLA C1/73CA: 86 12 STX $12 $12 = X = arg2 C1/73CC: A9 01 00 LDA #$0001 Argument loop. C1/73CF: 18 CLC C1/73D0: ED CA 97 SBC $97CA C1/73D3: 50 04 BVC $73D9 C1/73D5: 10 17 BPL $73EE C1/73D7: 80 02 BRA $73DB C1/73D9: 30 13 BMI $73EE C1/73DB: 8A TXA C1/73DC: E2 20 SEP #$20 C1/73DE: AE CA 97 LDX $97CA C1/73E1: 9D BA 97 STA $97BA,X C1/73E4: C2 20 REP #$20 C1/73E6: EE CA 97 INC $97CA C1/73E9: A9 C0 73 LDA #$73C0 C1/73EC: 80 2F BRA $741D C1/73EE: 20 42 00 JSR $0042 Jump to C1/0042 (A is loaded with the value at 7E964D) C1/73F1: C9 00 00 CMP #$0000 If A = 0, end. C1/73F4: F0 24 BEQ $741A C1/73F6: A6 12 LDX $12 X = arg2 - 1 C1/73F8: CA DEX C1/73F9: AD BA 97 LDA $97BA A = arg1 - 1 C1/73FC: 29 FF 00 AND #$00FF C1/73FF: 3A DEC C1/7400: 22 C9 FA C3 JSR $C3FAC9 A = arg1 - 1, X = arg2 - 1. C3/FAC9: C2 31 REP #$31 Flags and direct manipulation. C3/FACB: 0B PHD C3/FACC: 48 PHA C3/FACD: 7B TDC C3/FACE: 69 F0 FF ADC #$FFF0 C3/FAD1: 5B TCD C3/FAD2: 68 PLA C3/FAD3: 9B TXY Y = arg2 - 1. C3/FAD4: AA TAX X = arg1 - 1. C3/FAD5: 86 0E STX $0E $0E = arg1 - 1. C3/FAD7: AE 72 A9 LDX $A972 C3/FADA: BD 0F 00 LDA $000F,X A = $000F + value at $7EA972 C3/FADD: 29 FF 00 AND #$00FF C3/FAE0: C9 D5 00 CMP #$00D5 If it's 0xD5, A = 1 and exit. Return value is 1 C3/FAE3: D0 05 BNE $FAEA C3/FAE5: A9 01 00 LDA #$0001 C3/FAE8: 80 1D BRA $FB07 C3/FAEA: AE 72 A9 LDX $A972 If not 0xD5, continue here. C3/FAED: BD 0E 00 LDA $000E,X A = $000E + value at $7EA972 C3/FAF0: 29 FF 00 AND #$00FF C3/FAF3: D0 0B BNE $FB00 C3/FAF5: A6 0E LDX $0E A = 0 case C3/FAF7: 8A TXA A = arg1 - 1. C3/FAF8: 20 81 F9 JSR $F981 C3/FAFB: A9 00 00 LDA #$0000 Return value is 0 C3/FAFE: 80 07 BRA $FB07 C3/FB00: 98 TYA A != 0 case C3/FB01: 20 81 F9 JSR $F981 A = arg2 - 1 C3/FB04: A9 01 00 LDA #$0001 Return value is 1 C3/FB07: 2B PLD C3/FB08: 6B RTL C1/7404: C9 00 00 CMP #$0000 Value at $000F + value at 7EA972 != D5, and... C1/7407: 85 06 STA $06 value at $000E + value at 7EA972 == 00. C1/7409: 64 08 STZ $08 C1/740B: 10 02 BPL $740F Negative flag set? Then decrement $08 (make it FF). C1/740D: C6 08 DEC $08 C1/740F: A5 06 LDA $06 06+08 -> 0E+10 C1/7411: 85 0E STA $0E C1/7413: A5 08 LDA $08 C1/7415: 85 10 STA $10 C1/7417: 20 5D 04 JSR $045D C1/741A: A9 00 00 LDA #$0000 C1/741D: 2B PLD C1/741E: 60 RTS