.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global __SCF1 __SCF1: /* 802EC78C 002E83EC 3C C0 73 B6 */ lis r6, 0x73B5DBFA@ha /* 802EC790 002E83F0 38 00 00 80 */ li r0, 0x80 /* 802EC794 002E83F4 39 66 DB FA */ addi r11, r6, 0x73B5DBFA@l /* 802EC798 002E83F8 39 20 00 00 */ li r9, 0 /* 802EC79C 002E83FC 39 80 00 00 */ li r12, 0 /* 802EC7A0 002E8400 38 C0 00 00 */ li r6, 0 /* 802EC7A4 002E8404 39 40 00 00 */ li r10, 0 /* 802EC7A8 002E8408 7C 09 03 A6 */ mtctr r0 lbl_802EC7AC: /* 802EC7AC 002E840C 3D 0A 80 00 */ addis r8, r10, 0x8000 /* 802EC7B0 002E8410 89 08 38 00 */ lbz r8, 0x3800(r8) /* 802EC7B4 002E8414 2C 08 00 00 */ cmpwi r8, 0 /* 802EC7B8 002E8418 41 82 00 48 */ beq lbl_802EC800 /* 802EC7BC 002E841C 7C E3 60 AE */ lbzx r7, r3, r12 /* 802EC7C0 002E8420 7D 00 5A 78 */ xor r0, r8, r11 /* 802EC7C4 002E8424 54 08 06 3E */ clrlwi r8, r0, 0x18 /* 802EC7C8 002E8428 7C E0 07 75 */ extsb. r0, r7 /* 802EC7CC 002E842C 40 82 00 14 */ bne lbl_802EC7E0 /* 802EC7D0 002E8430 28 08 00 3D */ cmplwi r8, 0x3d /* 802EC7D4 002E8434 40 82 00 0C */ bne lbl_802EC7E0 /* 802EC7D8 002E8438 39 20 00 01 */ li r9, 1 /* 802EC7DC 002E843C 48 00 00 9C */ b lbl_802EC878 lbl_802EC7E0: /* 802EC7E0 002E8440 7C E7 07 74 */ extsb r7, r7 /* 802EC7E4 002E8444 38 0C 00 01 */ addi r0, r12, 1 /* 802EC7E8 002E8448 7D 07 3A 78 */ xor r7, r8, r7 /* 802EC7EC 002E844C 70 E7 00 DF */ andi. r7, r7, 0xdf /* 802EC7F0 002E8450 7C E7 00 34 */ cntlzw r7, r7 /* 802EC7F4 002E8454 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f /* 802EC7F8 002E8458 7C E7 00 D0 */ neg r7, r7 /* 802EC7FC 002E845C 7C 0C 38 38 */ and r12, r0, r7 lbl_802EC800: /* 802EC800 002E8460 39 4A 00 01 */ addi r10, r10, 1 /* 802EC804 002E8464 55 67 0F FE */ srwi r7, r11, 0x1f /* 802EC808 002E8468 3D 0A 80 00 */ addis r8, r10, 0x8000 /* 802EC80C 002E846C 55 60 08 3C */ slwi r0, r11, 1 /* 802EC810 002E8470 89 08 38 00 */ lbz r8, 0x3800(r8) /* 802EC814 002E8474 7C EB 03 78 */ or r11, r7, r0 /* 802EC818 002E8478 2C 08 00 00 */ cmpwi r8, 0 /* 802EC81C 002E847C 41 82 00 48 */ beq lbl_802EC864 /* 802EC820 002E8480 7C E3 60 AE */ lbzx r7, r3, r12 /* 802EC824 002E8484 7D 00 5A 78 */ xor r0, r8, r11 /* 802EC828 002E8488 54 08 06 3E */ clrlwi r8, r0, 0x18 /* 802EC82C 002E848C 7C E0 07 75 */ extsb. r0, r7 /* 802EC830 002E8490 40 82 00 14 */ bne lbl_802EC844 /* 802EC834 002E8494 28 08 00 3D */ cmplwi r8, 0x3d /* 802EC838 002E8498 40 82 00 0C */ bne lbl_802EC844 /* 802EC83C 002E849C 39 20 00 01 */ li r9, 1 /* 802EC840 002E84A0 48 00 00 38 */ b lbl_802EC878 lbl_802EC844: /* 802EC844 002E84A4 7C E7 07 74 */ extsb r7, r7 /* 802EC848 002E84A8 38 0C 00 01 */ addi r0, r12, 1 /* 802EC84C 002E84AC 7D 07 3A 78 */ xor r7, r8, r7 /* 802EC850 002E84B0 70 E7 00 DF */ andi. r7, r7, 0xdf /* 802EC854 002E84B4 7C E7 00 34 */ cntlzw r7, r7 /* 802EC858 002E84B8 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f /* 802EC85C 002E84BC 7C E7 00 D0 */ neg r7, r7 /* 802EC860 002E84C0 7C 0C 38 38 */ and r12, r0, r7 lbl_802EC864: /* 802EC864 002E84C4 55 67 0F FE */ srwi r7, r11, 0x1f /* 802EC868 002E84C8 55 60 08 3C */ slwi r0, r11, 1 /* 802EC86C 002E84CC 7C EB 03 78 */ or r11, r7, r0 /* 802EC870 002E84D0 39 4A 00 01 */ addi r10, r10, 1 /* 802EC874 002E84D4 42 00 FF 38 */ bdnz lbl_802EC7AC lbl_802EC878: /* 802EC878 002E84D8 2C 09 00 00 */ cmpwi r9, 0 /* 802EC87C 002E84DC 41 82 00 74 */ beq lbl_802EC8F0 /* 802EC880 002E84E0 39 4A 00 01 */ addi r10, r10, 1 /* 802EC884 002E84E4 48 00 00 5C */ b lbl_802EC8E0 lbl_802EC888: /* 802EC888 002E84E8 3C 6A 80 00 */ addis r3, r10, 0x8000 /* 802EC88C 002E84EC 55 67 0F FE */ srwi r7, r11, 0x1f /* 802EC890 002E84F0 88 63 38 00 */ lbz r3, 0x3800(r3) /* 802EC894 002E84F4 55 60 08 3C */ slwi r0, r11, 1 /* 802EC898 002E84F8 7C EB 03 78 */ or r11, r7, r0 /* 802EC89C 002E84FC 2C 03 00 00 */ cmpwi r3, 0 /* 802EC8A0 002E8500 41 82 00 20 */ beq lbl_802EC8C0 /* 802EC8A4 002E8504 7C 60 5A 78 */ xor r0, r3, r11 /* 802EC8A8 002E8508 54 03 06 3E */ clrlwi r3, r0, 0x18 /* 802EC8AC 002E850C 28 03 00 0D */ cmplwi r3, 0xd /* 802EC8B0 002E8510 41 82 00 0C */ beq lbl_802EC8BC /* 802EC8B4 002E8514 28 03 00 0A */ cmplwi r3, 0xa /* 802EC8B8 002E8518 40 82 00 08 */ bne lbl_802EC8C0 lbl_802EC8BC: /* 802EC8BC 002E851C 38 60 00 00 */ li r3, 0 lbl_802EC8C0: /* 802EC8C0 002E8520 2C 03 00 00 */ cmpwi r3, 0 /* 802EC8C4 002E8524 98 64 00 00 */ stb r3, 0(r4) /* 802EC8C8 002E8528 38 C6 00 01 */ addi r6, r6, 1 /* 802EC8CC 002E852C 38 84 00 01 */ addi r4, r4, 1 /* 802EC8D0 002E8530 40 82 00 0C */ bne lbl_802EC8DC /* 802EC8D4 002E8534 38 60 00 01 */ li r3, 1 /* 802EC8D8 002E8538 4E 80 00 20 */ blr lbl_802EC8DC: /* 802EC8DC 002E853C 39 4A 00 01 */ addi r10, r10, 1 lbl_802EC8E0: /* 802EC8E0 002E8540 28 0A 01 00 */ cmplwi r10, 0x100 /* 802EC8E4 002E8544 40 80 00 0C */ bge lbl_802EC8F0 /* 802EC8E8 002E8548 7C 06 28 40 */ cmplw r6, r5 /* 802EC8EC 002E854C 41 80 FF 9C */ blt lbl_802EC888 lbl_802EC8F0: /* 802EC8F0 002E8550 38 60 00 00 */ li r3, 0 /* 802EC8F4 002E8554 4E 80 00 20 */ blr .global SCGetProductArea SCGetProductArea: /* 802EC8F8 002E8558 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802EC8FC 002E855C 7C 08 02 A6 */ mflr r0 /* 802EC900 002E8560 38 6D 8B C0 */ addi r3, r13, lbl_8063DE80-_SDA_BASE_ /* 802EC904 002E8564 38 A0 00 04 */ li r5, 4 /* 802EC908 002E8568 90 01 00 24 */ stw r0, 0x24(r1) /* 802EC90C 002E856C 38 81 00 08 */ addi r4, r1, 8 /* 802EC910 002E8570 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802EC914 002E8574 93 C1 00 18 */ stw r30, 0x18(r1) /* 802EC918 002E8578 3F C0 80 44 */ lis r30, lbl_80445A38@ha /* 802EC91C 002E857C 3B DE 5A 38 */ addi r30, r30, lbl_80445A38@l /* 802EC920 002E8580 4B FF FE 6D */ bl __SCF1 /* 802EC924 002E8584 2C 03 00 00 */ cmpwi r3, 0 /* 802EC928 002E8588 41 82 00 38 */ beq lbl_802EC960 /* 802EC92C 002E858C 48 00 00 24 */ b lbl_802EC950 lbl_802EC930: /* 802EC930 002E8590 38 7E 00 01 */ addi r3, r30, 1 /* 802EC934 002E8594 38 81 00 08 */ addi r4, r1, 8 /* 802EC938 002E8598 4B EE 1B 15 */ bl strcmp /* 802EC93C 002E859C 2C 03 00 00 */ cmpwi r3, 0 /* 802EC940 002E85A0 40 82 00 0C */ bne lbl_802EC94C /* 802EC944 002E85A4 7F E3 FB 78 */ mr r3, r31 /* 802EC948 002E85A8 48 00 00 1C */ b lbl_802EC964 lbl_802EC94C: /* 802EC94C 002E85AC 3B DE 00 05 */ addi r30, r30, 5 lbl_802EC950: /* 802EC950 002E85B0 8B FE 00 00 */ lbz r31, 0(r30) /* 802EC954 002E85B4 7F E0 07 74 */ extsb r0, r31 /* 802EC958 002E85B8 2C 00 FF FF */ cmpwi r0, -1 /* 802EC95C 002E85BC 40 82 FF D4 */ bne lbl_802EC930 lbl_802EC960: /* 802EC960 002E85C0 38 60 FF FF */ li r3, -1 lbl_802EC964: /* 802EC964 002E85C4 80 01 00 24 */ lwz r0, 0x24(r1) /* 802EC968 002E85C8 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802EC96C 002E85CC 83 C1 00 18 */ lwz r30, 0x18(r1) /* 802EC970 002E85D0 7C 08 03 A6 */ mtlr r0 /* 802EC974 002E85D4 38 21 00 20 */ addi r1, r1, 0x20 /* 802EC978 002E85D8 4E 80 00 20 */ blr .global SCGetProductCode SCGetProductCode: /* 802EC97C 002E85DC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802EC980 002E85E0 7C 08 02 A6 */ mflr r0 /* 802EC984 002E85E4 38 6D 8B C8 */ addi r3, r13, lbl_8063DE88-_SDA_BASE_ /* 802EC988 002E85E8 38 8D AF 28 */ addi r4, r13, lbl_806401E8-_SDA_BASE_ /* 802EC98C 002E85EC 90 01 00 14 */ stw r0, 0x14(r1) /* 802EC990 002E85F0 38 A0 00 06 */ li r5, 6 /* 802EC994 002E85F4 4B FF FD F9 */ bl __SCF1 /* 802EC998 002E85F8 2C 03 00 00 */ cmpwi r3, 0 /* 802EC99C 002E85FC 38 60 00 00 */ li r3, 0 /* 802EC9A0 002E8600 41 82 00 08 */ beq lbl_802EC9A8 /* 802EC9A4 002E8604 38 6D AF 28 */ addi r3, r13, lbl_806401E8-_SDA_BASE_ lbl_802EC9A8: /* 802EC9A8 002E8608 80 01 00 14 */ lwz r0, 0x14(r1) /* 802EC9AC 002E860C 7C 08 03 A6 */ mtlr r0 /* 802EC9B0 002E8610 38 21 00 10 */ addi r1, r1, 0x10 /* 802EC9B4 002E8614 4E 80 00 20 */ blr .global SCGetProductSN SCGetProductSN: /* 802EC9B8 002E8618 94 21 FF E0 */ stwu r1, -0x20(r1) /* 802EC9BC 002E861C 7C 08 02 A6 */ mflr r0 /* 802EC9C0 002E8620 38 A0 00 0B */ li r5, 0xb /* 802EC9C4 002E8624 90 01 00 24 */ stw r0, 0x24(r1) /* 802EC9C8 002E8628 38 81 00 08 */ addi r4, r1, 8 /* 802EC9CC 002E862C 93 E1 00 1C */ stw r31, 0x1c(r1) /* 802EC9D0 002E8630 7C 7F 1B 78 */ mr r31, r3 /* 802EC9D4 002E8634 38 6D 8B D0 */ addi r3, r13, lbl_8063DE90-_SDA_BASE_ /* 802EC9D8 002E8638 4B FF FD B5 */ bl __SCF1 /* 802EC9DC 002E863C 2C 03 00 00 */ cmpwi r3, 0 /* 802EC9E0 002E8640 41 82 00 28 */ beq lbl_802ECA08 /* 802EC9E4 002E8644 7F E5 FB 78 */ mr r5, r31 /* 802EC9E8 002E8648 38 61 00 08 */ addi r3, r1, 8 /* 802EC9EC 002E864C 38 8D 8B D8 */ addi r4, r13, lbl_8063DE98-_SDA_BASE_ /* 802EC9F0 002E8650 4C C6 31 82 */ crclr 6 /* 802EC9F4 002E8654 4B EE 18 15 */ bl sscanf /* 802EC9F8 002E8658 2C 03 00 01 */ cmpwi r3, 1 /* 802EC9FC 002E865C 40 82 00 0C */ bne lbl_802ECA08 /* 802ECA00 002E8660 38 60 00 01 */ li r3, 1 /* 802ECA04 002E8664 48 00 00 08 */ b lbl_802ECA0C lbl_802ECA08: /* 802ECA08 002E8668 38 60 00 00 */ li r3, 0 lbl_802ECA0C: /* 802ECA0C 002E866C 80 01 00 24 */ lwz r0, 0x24(r1) /* 802ECA10 002E8670 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 802ECA14 002E8674 7C 08 03 A6 */ mtlr r0 /* 802ECA18 002E8678 38 21 00 20 */ addi r1, r1, 0x20 /* 802ECA1C 002E867C 4E 80 00 20 */ blr