.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global _MakeWStr _MakeWStr: /* 8031B730 00317390 94 21 FF D0 */ stwu r1, -0x30(r1) /* 8031B734 00317394 7C 08 02 A6 */ mflr r0 /* 8031B738 00317398 90 01 00 34 */ stw r0, 0x34(r1) /* 8031B73C 0031739C 39 61 00 30 */ addi r11, r1, 0x30 /* 8031B740 003173A0 4B EA B9 E1 */ bl _savegpr_25 /* 8031B744 003173A4 7C 7E 1B 78 */ mr r30, r3 /* 8031B748 003173A8 38 80 00 00 */ li r4, 0 /* 8031B74C 003173AC 48 00 00 0C */ b lbl_8031B758 lbl_8031B750: /* 8031B750 003173B0 38 63 00 01 */ addi r3, r3, 1 /* 8031B754 003173B4 38 84 00 01 */ addi r4, r4, 1 lbl_8031B758: /* 8031B758 003173B8 88 03 00 00 */ lbz r0, 0(r3) /* 8031B75C 003173BC 7C 00 07 75 */ extsb. r0, r0 /* 8031B760 003173C0 40 82 FF F0 */ bne lbl_8031B750 /* 8031B764 003173C4 28 04 00 08 */ cmplwi r4, 8 /* 8031B768 003173C8 40 80 00 D8 */ bge lbl_8031B840 /* 8031B76C 003173CC 7F C3 F3 78 */ mr r3, r30 /* 8031B770 003173D0 3B 80 00 00 */ li r28, 0 /* 8031B774 003173D4 48 00 00 0C */ b lbl_8031B780 lbl_8031B778: /* 8031B778 003173D8 38 63 00 01 */ addi r3, r3, 1 /* 8031B77C 003173DC 3B 9C 00 01 */ addi r28, r28, 1 lbl_8031B780: /* 8031B780 003173E0 88 03 00 00 */ lbz r0, 0(r3) /* 8031B784 003173E4 7C 00 07 75 */ extsb. r0, r0 /* 8031B788 003173E8 40 82 FF F0 */ bne lbl_8031B778 /* 8031B78C 003173EC 3F 60 80 61 */ lis r27, lbl_8060F608@ha /* 8031B790 003173F0 3F A0 80 58 */ lis r29, lbl_8057F5C8@ha /* 8031B794 003173F4 3B 7B F6 08 */ addi r27, r27, lbl_8060F608@l /* 8031B798 003173F8 3B E0 00 00 */ li r31, 0 /* 8031B79C 003173FC 3B BD F5 C8 */ addi r29, r29, lbl_8057F5C8@l /* 8031B7A0 00317400 3B 20 00 00 */ li r25, 0 /* 8031B7A4 00317404 48 00 00 74 */ b lbl_8031B818 lbl_8031B7A8: /* 8031B7A8 00317408 2C 19 00 00 */ cmpwi r25, 0 /* 8031B7AC 0031740C 41 82 00 0C */ beq lbl_8031B7B8 /* 8031B7B0 00317410 3B 20 00 00 */ li r25, 0 /* 8031B7B4 00317414 48 00 00 5C */ b lbl_8031B810 lbl_8031B7B8: /* 8031B7B8 00317418 7C 1E F8 AE */ lbzx r0, r30, r31 /* 8031B7BC 0031741C 7F 5E FA 14 */ add r26, r30, r31 /* 8031B7C0 00317420 81 9D 00 30 */ lwz r12, 0x30(r29) /* 8031B7C4 00317424 38 80 00 01 */ li r4, 1 /* 8031B7C8 00317428 7C 03 07 74 */ extsb r3, r0 /* 8031B7CC 0031742C 7D 89 03 A6 */ mtctr r12 /* 8031B7D0 00317430 4E 80 04 21 */ bctrl /* 8031B7D4 00317434 2C 03 00 00 */ cmpwi r3, 0 /* 8031B7D8 00317438 41 82 00 2C */ beq lbl_8031B804 /* 8031B7DC 0031743C 88 7A 00 01 */ lbz r3, 1(r26) /* 8031B7E0 00317440 3B 20 00 01 */ li r25, 1 /* 8031B7E4 00317444 88 1A 00 00 */ lbz r0, 0(r26) /* 8031B7E8 00317448 7C 63 07 74 */ extsb r3, r3 /* 8031B7EC 0031744C 7C 00 07 74 */ extsb r0, r0 /* 8031B7F0 00317450 54 63 04 3E */ clrlwi r3, r3, 0x10 /* 8031B7F4 00317454 54 00 40 2E */ slwi r0, r0, 8 /* 8031B7F8 00317458 7C 60 03 78 */ or r0, r3, r0 /* 8031B7FC 0031745C B0 1B 00 00 */ sth r0, 0(r27) /* 8031B800 00317460 48 00 00 10 */ b lbl_8031B810 lbl_8031B804: /* 8031B804 00317464 88 1A 00 00 */ lbz r0, 0(r26) /* 8031B808 00317468 7C 00 07 74 */ extsb r0, r0 /* 8031B80C 0031746C B0 1B 00 00 */ sth r0, 0(r27) lbl_8031B810: /* 8031B810 00317470 3B 7B 00 02 */ addi r27, r27, 2 /* 8031B814 00317474 3B FF 00 01 */ addi r31, r31, 1 lbl_8031B818: /* 8031B818 00317478 7C 1F E0 40 */ cmplw r31, r28 /* 8031B81C 0031747C 41 80 FF 8C */ blt lbl_8031B7A8 /* 8031B820 00317480 3C 80 80 61 */ lis r4, lbl_8060F608@ha /* 8031B824 00317484 38 A0 00 00 */ li r5, 0 /* 8031B828 00317488 38 84 F6 08 */ addi r4, r4, lbl_8060F608@l /* 8031B82C 0031748C 57 E0 08 3C */ slwi r0, r31, 1 /* 8031B830 00317490 B0 A4 00 0E */ sth r5, 0xe(r4) /* 8031B834 00317494 38 60 00 01 */ li r3, 1 /* 8031B838 00317498 7C A4 03 2E */ sthx r5, r4, r0 /* 8031B83C 0031749C 48 00 00 08 */ b lbl_8031B844 lbl_8031B840: /* 8031B840 003174A0 38 60 00 00 */ li r3, 0 lbl_8031B844: /* 8031B844 003174A4 39 61 00 30 */ addi r11, r1, 0x30 /* 8031B848 003174A8 4B EA B9 25 */ bl _restgpr_25 /* 8031B84C 003174AC 80 01 00 34 */ lwz r0, 0x34(r1) /* 8031B850 003174B0 7C 08 03 A6 */ mtlr r0 /* 8031B854 003174B4 38 21 00 30 */ addi r1, r1, 0x30 /* 8031B858 003174B8 4E 80 00 20 */ blr .global dHash_InitHashTable dHash_InitHashTable: /* 8031B85C 003174BC 38 00 00 00 */ li r0, 0 /* 8031B860 003174C0 3C 60 80 61 */ lis r3, lbl_8060F618@ha /* 8031B864 003174C4 B4 03 F6 18 */ sthu r0, lbl_8060F618@l(r3) /* 8031B868 003174C8 98 03 00 10 */ stb r0, 0x10(r3) /* 8031B86C 003174CC B0 03 00 12 */ sth r0, 0x12(r3) /* 8031B870 003174D0 98 03 00 22 */ stb r0, 0x22(r3) /* 8031B874 003174D4 B0 03 00 24 */ sth r0, 0x24(r3) /* 8031B878 003174D8 98 03 00 34 */ stb r0, 0x34(r3) /* 8031B87C 003174DC B0 03 00 36 */ sth r0, 0x36(r3) /* 8031B880 003174E0 98 03 00 46 */ stb r0, 0x46(r3) /* 8031B884 003174E4 B0 03 00 48 */ sth r0, 0x48(r3) /* 8031B888 003174E8 98 03 00 58 */ stb r0, 0x58(r3) /* 8031B88C 003174EC B0 03 00 5A */ sth r0, 0x5a(r3) /* 8031B890 003174F0 98 03 00 6A */ stb r0, 0x6a(r3) /* 8031B894 003174F4 B0 03 00 6C */ sth r0, 0x6c(r3) /* 8031B898 003174F8 98 03 00 7C */ stb r0, 0x7c(r3) /* 8031B89C 003174FC B0 03 00 7E */ sth r0, 0x7e(r3) /* 8031B8A0 00317500 98 03 00 8E */ stb r0, 0x8e(r3) /* 8031B8A4 00317504 B0 03 00 90 */ sth r0, 0x90(r3) /* 8031B8A8 00317508 98 03 00 A0 */ stb r0, 0xa0(r3) /* 8031B8AC 0031750C B0 03 00 A2 */ sth r0, 0xa2(r3) /* 8031B8B0 00317510 98 03 00 B2 */ stb r0, 0xb2(r3) /* 8031B8B4 00317514 B0 03 00 B4 */ sth r0, 0xb4(r3) /* 8031B8B8 00317518 98 03 00 C4 */ stb r0, 0xc4(r3) /* 8031B8BC 0031751C B0 03 00 C6 */ sth r0, 0xc6(r3) /* 8031B8C0 00317520 98 03 00 D6 */ stb r0, 0xd6(r3) /* 8031B8C4 00317524 B0 03 00 D8 */ sth r0, 0xd8(r3) /* 8031B8C8 00317528 98 03 00 E8 */ stb r0, 0xe8(r3) /* 8031B8CC 0031752C B0 03 00 EA */ sth r0, 0xea(r3) /* 8031B8D0 00317530 98 03 00 FA */ stb r0, 0xfa(r3) /* 8031B8D4 00317534 B0 03 00 FC */ sth r0, 0xfc(r3) /* 8031B8D8 00317538 98 03 01 0C */ stb r0, 0x10c(r3) /* 8031B8DC 0031753C B0 03 01 0E */ sth r0, 0x10e(r3) /* 8031B8E0 00317540 98 03 01 1E */ stb r0, 0x11e(r3) /* 8031B8E4 00317544 B0 03 01 20 */ sth r0, 0x120(r3) /* 8031B8E8 00317548 98 03 01 30 */ stb r0, 0x130(r3) /* 8031B8EC 0031754C B0 03 01 32 */ sth r0, 0x132(r3) /* 8031B8F0 00317550 98 03 01 42 */ stb r0, 0x142(r3) /* 8031B8F4 00317554 B0 03 01 44 */ sth r0, 0x144(r3) /* 8031B8F8 00317558 98 03 01 54 */ stb r0, 0x154(r3) /* 8031B8FC 0031755C B0 03 01 56 */ sth r0, 0x156(r3) /* 8031B900 00317560 98 03 01 66 */ stb r0, 0x166(r3) /* 8031B904 00317564 B0 03 01 68 */ sth r0, 0x168(r3) /* 8031B908 00317568 98 03 01 78 */ stb r0, 0x178(r3) /* 8031B90C 0031756C B0 03 01 7A */ sth r0, 0x17a(r3) /* 8031B910 00317570 98 03 01 8A */ stb r0, 0x18a(r3) /* 8031B914 00317574 B0 03 01 8C */ sth r0, 0x18c(r3) /* 8031B918 00317578 98 03 01 9C */ stb r0, 0x19c(r3) /* 8031B91C 0031757C B0 03 01 9E */ sth r0, 0x19e(r3) /* 8031B920 00317580 98 03 01 AE */ stb r0, 0x1ae(r3) /* 8031B924 00317584 B0 03 01 B0 */ sth r0, 0x1b0(r3) /* 8031B928 00317588 98 03 01 C0 */ stb r0, 0x1c0(r3) /* 8031B92C 0031758C B0 03 01 C2 */ sth r0, 0x1c2(r3) /* 8031B930 00317590 98 03 01 D2 */ stb r0, 0x1d2(r3) /* 8031B934 00317594 B0 03 01 D4 */ sth r0, 0x1d4(r3) /* 8031B938 00317598 98 03 01 E4 */ stb r0, 0x1e4(r3) /* 8031B93C 0031759C B0 03 01 E6 */ sth r0, 0x1e6(r3) /* 8031B940 003175A0 98 03 01 F6 */ stb r0, 0x1f6(r3) /* 8031B944 003175A4 B0 03 01 F8 */ sth r0, 0x1f8(r3) /* 8031B948 003175A8 98 03 02 08 */ stb r0, 0x208(r3) /* 8031B94C 003175AC B0 03 02 0A */ sth r0, 0x20a(r3) /* 8031B950 003175B0 98 03 02 1A */ stb r0, 0x21a(r3) /* 8031B954 003175B4 B0 03 02 1C */ sth r0, 0x21c(r3) /* 8031B958 003175B8 98 03 02 2C */ stb r0, 0x22c(r3) /* 8031B95C 003175BC 4E 80 00 20 */ blr .global dHash_SearchHashW dHash_SearchHashW: /* 8031B960 003175C0 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8031B964 003175C4 38 80 00 00 */ li r4, 0 /* 8031B968 003175C8 7C 65 1B 78 */ mr r5, r3 /* 8031B96C 003175CC 93 E1 00 0C */ stw r31, 0xc(r1) /* 8031B970 003175D0 48 00 00 0C */ b lbl_8031B97C lbl_8031B974: /* 8031B974 003175D4 38 A5 00 02 */ addi r5, r5, 2 /* 8031B978 003175D8 38 84 00 01 */ addi r4, r4, 1 lbl_8031B97C: /* 8031B97C 003175DC A0 05 00 00 */ lhz r0, 0(r5) /* 8031B980 003175E0 2C 00 00 00 */ cmpwi r0, 0 /* 8031B984 003175E4 40 82 FF F0 */ bne lbl_8031B974 /* 8031B988 003175E8 2C 04 00 08 */ cmpwi r4, 8 /* 8031B98C 003175EC 40 80 00 6C */ bge lbl_8031B9F8 /* 8031B990 003175F0 7C 67 1B 78 */ mr r7, r3 /* 8031B994 003175F4 38 C0 00 00 */ li r6, 0 /* 8031B998 003175F8 38 A0 00 00 */ li r5, 0 /* 8031B99C 003175FC 7C 89 03 A6 */ mtctr r4 /* 8031B9A0 00317600 28 04 00 00 */ cmplwi r4, 0 /* 8031B9A4 00317604 40 81 00 2C */ ble lbl_8031B9D0 lbl_8031B9A8: /* 8031B9A8 00317608 28 05 00 07 */ cmplwi r5, 7 /* 8031B9AC 0031760C 40 81 00 08 */ ble lbl_8031B9B4 /* 8031B9B0 00317610 38 A0 00 00 */ li r5, 0 lbl_8031B9B4: /* 8031B9B4 00317614 A0 87 00 00 */ lhz r4, 0(r7) /* 8031B9B8 00317618 54 A0 10 3A */ slwi r0, r5, 2 /* 8031B9BC 0031761C 38 E7 00 02 */ addi r7, r7, 2 /* 8031B9C0 00317620 38 A5 00 01 */ addi r5, r5, 1 /* 8031B9C4 00317624 7C 80 00 30 */ slw r0, r4, r0 /* 8031B9C8 00317628 7C C6 02 14 */ add r6, r6, r0 /* 8031B9CC 0031762C 42 00 FF DC */ bdnz lbl_8031B9A8 lbl_8031B9D0: /* 8031B9D0 00317630 3C 80 08 42 */ lis r4, 0x08421085@ha /* 8031B9D4 00317634 38 04 10 85 */ addi r0, r4, 0x08421085@l /* 8031B9D8 00317638 7C 80 30 16 */ mulhwu r4, r0, r6 /* 8031B9DC 0031763C 7C 04 30 50 */ subf r0, r4, r6 /* 8031B9E0 00317640 54 00 F8 7E */ srwi r0, r0, 1 /* 8031B9E4 00317644 7C 00 22 14 */ add r0, r0, r4 /* 8031B9E8 00317648 54 00 E1 3E */ srwi r0, r0, 4 /* 8031B9EC 0031764C 1C 00 00 1F */ mulli r0, r0, 0x1f /* 8031B9F0 00317650 7D 00 30 50 */ subf r8, r0, r6 /* 8031B9F4 00317654 48 00 00 08 */ b lbl_8031B9FC lbl_8031B9F8: /* 8031B9F8 00317658 39 00 FF FF */ li r8, -1 lbl_8031B9FC: /* 8031B9FC 0031765C 2C 08 FF FF */ cmpwi r8, -1 /* 8031BA00 00317660 41 82 00 E0 */ beq lbl_8031BAE0 /* 8031BA04 00317664 7C 64 1B 78 */ mr r4, r3 /* 8031BA08 00317668 39 20 00 00 */ li r9, 0 /* 8031BA0C 0031766C 48 00 00 0C */ b lbl_8031BA18 lbl_8031BA10: /* 8031BA10 00317670 38 84 00 02 */ addi r4, r4, 2 /* 8031BA14 00317674 39 29 00 01 */ addi r9, r9, 1 lbl_8031BA18: /* 8031BA18 00317678 A0 04 00 00 */ lhz r0, 0(r4) /* 8031BA1C 0031767C 2C 00 00 00 */ cmpwi r0, 0 /* 8031BA20 00317680 40 82 FF F0 */ bne lbl_8031BA10 /* 8031BA24 00317684 3C 80 84 21 */ lis r4, 0x84210843@ha /* 8031BA28 00317688 3C A0 80 61 */ lis r5, lbl_8060F618@ha /* 8031BA2C 0031768C 38 C4 08 43 */ addi r6, r4, 0x84210843@l /* 8031BA30 00317690 39 60 00 00 */ li r11, 0 /* 8031BA34 00317694 38 A5 F6 18 */ addi r5, r5, lbl_8060F618@l lbl_8031BA38: /* 8031BA38 00317698 7C 0B 59 D6 */ mullw r0, r11, r11 /* 8031BA3C 0031769C 39 40 00 00 */ li r10, 0 /* 8031BA40 003176A0 7C E8 02 14 */ add r7, r8, r0 /* 8031BA44 003176A4 7C 06 38 96 */ mulhw r0, r6, r7 /* 8031BA48 003176A8 7C 00 3A 14 */ add r0, r0, r7 /* 8031BA4C 003176AC 7C 00 26 70 */ srawi r0, r0, 4 /* 8031BA50 003176B0 54 04 0F FE */ srwi r4, r0, 0x1f /* 8031BA54 003176B4 7C 00 22 14 */ add r0, r0, r4 /* 8031BA58 003176B8 1C 00 00 1F */ mulli r0, r0, 0x1f /* 8031BA5C 003176BC 7C E0 38 50 */ subf r7, r0, r7 /* 8031BA60 003176C0 1C 07 00 12 */ mulli r0, r7, 0x12 /* 8031BA64 003176C4 7D 85 02 14 */ add r12, r5, r0 /* 8031BA68 003176C8 7D 84 63 78 */ mr r4, r12 /* 8031BA6C 003176CC 48 00 00 0C */ b lbl_8031BA78 lbl_8031BA70: /* 8031BA70 003176D0 38 84 00 02 */ addi r4, r4, 2 /* 8031BA74 003176D4 39 4A 00 01 */ addi r10, r10, 1 lbl_8031BA78: /* 8031BA78 003176D8 A0 04 00 00 */ lhz r0, 0(r4) /* 8031BA7C 003176DC 2C 00 00 00 */ cmpwi r0, 0 /* 8031BA80 003176E0 40 82 FF F0 */ bne lbl_8031BA70 /* 8031BA84 003176E4 7C 09 50 00 */ cmpw r9, r10 /* 8031BA88 003176E8 40 82 00 4C */ bne lbl_8031BAD4 /* 8031BA8C 003176EC 7C 6A 1B 78 */ mr r10, r3 /* 8031BA90 003176F0 3B E0 00 01 */ li r31, 1 /* 8031BA94 003176F4 7D 29 03 A6 */ mtctr r9 /* 8031BA98 003176F8 2C 09 00 00 */ cmpwi r9, 0 /* 8031BA9C 003176FC 40 81 00 28 */ ble lbl_8031BAC4 lbl_8031BAA0: /* 8031BAA0 00317700 A0 8A 00 00 */ lhz r4, 0(r10) /* 8031BAA4 00317704 A0 0C 00 00 */ lhz r0, 0(r12) /* 8031BAA8 00317708 7C 04 00 40 */ cmplw r4, r0 /* 8031BAAC 0031770C 41 82 00 0C */ beq lbl_8031BAB8 /* 8031BAB0 00317710 3B E0 00 00 */ li r31, 0 /* 8031BAB4 00317714 48 00 00 10 */ b lbl_8031BAC4 lbl_8031BAB8: /* 8031BAB8 00317718 39 4A 00 02 */ addi r10, r10, 2 /* 8031BABC 0031771C 39 8C 00 02 */ addi r12, r12, 2 /* 8031BAC0 00317720 42 00 FF E0 */ bdnz lbl_8031BAA0 lbl_8031BAC4: /* 8031BAC4 00317724 2C 1F 00 00 */ cmpwi r31, 0 /* 8031BAC8 00317728 41 82 00 0C */ beq lbl_8031BAD4 /* 8031BACC 0031772C 7C E3 3B 78 */ mr r3, r7 /* 8031BAD0 00317730 48 00 00 14 */ b lbl_8031BAE4 lbl_8031BAD4: /* 8031BAD4 00317734 39 6B 00 01 */ addi r11, r11, 1 /* 8031BAD8 00317738 2C 0B 00 0F */ cmpwi r11, 0xf /* 8031BADC 0031773C 41 80 FF 5C */ blt lbl_8031BA38 lbl_8031BAE0: /* 8031BAE0 00317740 38 60 FF FF */ li r3, -1 lbl_8031BAE4: /* 8031BAE4 00317744 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8031BAE8 00317748 38 21 00 10 */ addi r1, r1, 0x10 /* 8031BAEC 0031774C 4E 80 00 20 */ blr .global dHash_GetArg dHash_GetArg: /* 8031BAF0 00317750 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8031BAF4 00317754 7C 08 02 A6 */ mflr r0 /* 8031BAF8 00317758 90 01 00 14 */ stw r0, 0x14(r1) /* 8031BAFC 0031775C 4B FF FC 35 */ bl _MakeWStr /* 8031BB00 00317760 2C 03 00 00 */ cmpwi r3, 0 /* 8031BB04 00317764 41 82 00 38 */ beq lbl_8031BB3C /* 8031BB08 00317768 3C 60 80 61 */ lis r3, lbl_8060F608@ha /* 8031BB0C 0031776C 38 63 F6 08 */ addi r3, r3, lbl_8060F608@l /* 8031BB10 00317770 4B FF FE 51 */ bl dHash_SearchHashW /* 8031BB14 00317774 2C 03 FF FF */ cmpwi r3, -1 /* 8031BB18 00317778 40 82 00 0C */ bne lbl_8031BB24 /* 8031BB1C 0031777C 38 60 FF FF */ li r3, -1 /* 8031BB20 00317780 48 00 00 20 */ b lbl_8031BB40 lbl_8031BB24: /* 8031BB24 00317784 1C 03 00 12 */ mulli r0, r3, 0x12 /* 8031BB28 00317788 3C 60 80 61 */ lis r3, lbl_8060F618@ha /* 8031BB2C 0031778C 38 63 F6 18 */ addi r3, r3, lbl_8060F618@l /* 8031BB30 00317790 7C 63 02 14 */ add r3, r3, r0 /* 8031BB34 00317794 88 63 00 10 */ lbz r3, 0x10(r3) /* 8031BB38 00317798 48 00 00 08 */ b lbl_8031BB40 lbl_8031BB3C: /* 8031BB3C 0031779C 38 60 FF FF */ li r3, -1 lbl_8031BB40: /* 8031BB40 003177A0 80 01 00 14 */ lwz r0, 0x14(r1) /* 8031BB44 003177A4 7C 08 03 A6 */ mtlr r0 /* 8031BB48 003177A8 38 21 00 10 */ addi r1, r1, 0x10 /* 8031BB4C 003177AC 4E 80 00 20 */ blr