This part works on the second half of the serial uses some basic math and compares the results with something +140 00002ccc 3c004330 lis r0,0x4330 +144 00002cd0 3c400000 lis r2,0x0 +148 00002cd4 6c638000 xoris r3,r3,0x8000 +152 00002cd8 90010038 stw r0,0x38(r1) +156 00002cdc c8222ff8 lfd f1,0x2ff8(r2) 4.5036E+15 +160 00002ce0 9061003c stw r3,0x3c(r1) +164 00002ce4 60000000 nop +168 00002ce8 60000000 nop +172 00002cec c8010038 lfd f0,0x38(r1) +176 00002cf0 fc200828 fsub f1,f0,f1 +180 00002cf4 480000e5 bl 0x2dd8 _sqrt +184 00002cf8 fc00081e fctiwz f0,f1 +188 00002cfc d8010040 stfd f0,0x40(r1) +192 00002d00 60000000 nop +196 00002d04 60000000 nop +200 00002d08 80010044 lwz r0,0x44(r1) +204 00002d0c 7f9f0000 cmpw cr7,r31,r0 +208 00002d10 409e0050 bne cr7,0x2d60 This part works on the first half of the serial, and is a loop +212 00002d14 3fc00000 lis r30,0x0 +216 00002d18 3ba00000 li r29,0x0 +220 00002d1c 3f800000 lis r28,0x0 +224 00002d20 3bde401c addi r30,r30,0x401c characterAtIndex: +228 00002d24 4800001c b 0x2d40 +232 00002d28 809e0000 lwz r4,0x0(r30) characterAtIndex: +236 00002d2c 7fa5eb78 or r5,r29,r29 +240 00002d30 7f63db78 or r3,r27,r27 +244 00002d34 3bbd0001 addi r29,r29,0x1 +248 00002d38 4bfeff03 bla 0xfffeff00 -[r3 characterAtIndex:] +252 00002d3c 7fe3f850 subf r31,r3,r31 +256 00002d40 809c4018 lwz r4,0x4018(r28) length +260 00002d44 7f63db78 or r3,r27,r27 +264 00002d48 4bfeff03 bla 0xfffeff00 -[r3 length] +268 00002d4c 7f9d1840 cmplw cr7,r29,r3 +272 00002d50 419cffd8 blt cr7,0x2d28 +276 00002d54 2f9f0000 cmpwi cr7,r31,0x0 +280 00002d58 38600001 li r3,0x1 +284 00002d5c 419e0008 beq cr7,0x2d64 +288 00002d60 38600000 li r3,0x0 +292 00002d64 38210070 addi r1,r1,0x70 +296 00002d68 80010008 lwz r0,0x8(r1) +300 00002d6c bb61ffec lmw r27,0xffec(r1) +304 00002d70 7c0803a6 mtspr lr,r0 +308 00002d74 4e800020 blr