.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global func_801FA094 func_801FA094: /* 801FA094 001F5CF4 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801FA098 001F5CF8 7C 08 02 A6 */ mflr r0 /* 801FA09C 001F5CFC 90 01 00 24 */ stw r0, 0x24(r1) /* 801FA0A0 001F5D00 39 61 00 20 */ addi r11, r1, 0x20 /* 801FA0A4 001F5D04 4B FC D0 81 */ bl _savegpr_26 /* 801FA0A8 001F5D08 38 00 00 00 */ li r0, 0 /* 801FA0AC 001F5D0C 90 83 00 00 */ stw r4, 0(r3) /* 801FA0B0 001F5D10 7C 7F 1B 78 */ mr r31, r3 /* 801FA0B4 001F5D14 7C 9A 23 78 */ mr r26, r4 /* 801FA0B8 001F5D18 90 03 00 04 */ stw r0, 4(r3) /* 801FA0BC 001F5D1C 90 03 00 08 */ stw r0, 8(r3) /* 801FA0C0 001F5D20 90 03 00 0C */ stw r0, 0xc(r3) /* 801FA0C4 001F5D24 90 03 00 10 */ stw r0, 0x10(r3) /* 801FA0C8 001F5D28 A3 A4 00 18 */ lhz r29, 0x18(r4) /* 801FA0CC 001F5D2C 2C 1D 00 00 */ cmpwi r29, 0 /* 801FA0D0 001F5D30 40 82 00 08 */ bne lbl_801FA0D8 /* 801FA0D4 001F5D34 48 00 01 A8 */ b lbl_801FA27C lbl_801FA0D8: /* 801FA0D8 001F5D38 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 801FA0DC 001F5D3C 57 A4 13 BA */ rlwinm r4, r29, 2, 0xe, 0x1d /* 801FA0E0 001F5D40 4B FE 0B B5 */ bl func_801DAC94 /* 801FA0E4 001F5D44 2C 03 00 00 */ cmpwi r3, 0 /* 801FA0E8 001F5D48 90 7F 00 04 */ stw r3, 4(r31) /* 801FA0EC 001F5D4C 40 82 00 0C */ bne lbl_801FA0F8 /* 801FA0F0 001F5D50 7F E3 FB 78 */ mr r3, r31 /* 801FA0F4 001F5D54 48 00 01 88 */ b lbl_801FA27C lbl_801FA0F8: /* 801FA0F8 001F5D58 38 80 00 00 */ li r4, 0 /* 801FA0FC 001F5D5C 38 A0 00 04 */ li r5, 4 /* 801FA100 001F5D60 4B E0 A0 05 */ bl memset /* 801FA104 001F5D64 3B 80 00 00 */ li r28, 0 /* 801FA108 001F5D68 3B C0 00 00 */ li r30, 0 /* 801FA10C 001F5D6C 48 00 00 58 */ b lbl_801FA164 lbl_801FA110: /* 801FA110 001F5D70 80 7A 00 08 */ lwz r3, 8(r26) /* 801FA114 001F5D74 7F 63 F0 2E */ lwzx r27, r3, r30 /* 801FA118 001F5D78 2C 1B 00 00 */ cmpwi r27, 0 /* 801FA11C 001F5D7C 41 82 00 40 */ beq lbl_801FA15C /* 801FA120 001F5D80 4B FE 0A 09 */ bl func_801DAB28 /* 801FA124 001F5D84 2C 03 00 00 */ cmpwi r3, 0 /* 801FA128 001F5D88 41 82 00 14 */ beq lbl_801FA13C /* 801FA12C 001F5D8C 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 801FA130 001F5D90 38 80 01 54 */ li r4, 0x154 /* 801FA134 001F5D94 4B FE 0B 61 */ bl func_801DAC94 /* 801FA138 001F5D98 48 00 00 08 */ b lbl_801FA140 lbl_801FA13C: /* 801FA13C 001F5D9C 38 60 00 00 */ li r3, 0 lbl_801FA140: /* 801FA140 001F5DA0 2C 03 00 00 */ cmpwi r3, 0 /* 801FA144 001F5DA4 41 82 00 10 */ beq lbl_801FA154 /* 801FA148 001F5DA8 7F E4 FB 78 */ mr r4, r31 /* 801FA14C 001F5DAC 7F 65 DB 78 */ mr r5, r27 /* 801FA150 001F5DB0 4B FF A4 CD */ bl func_801F461C lbl_801FA154: /* 801FA154 001F5DB4 80 9F 00 04 */ lwz r4, 4(r31) /* 801FA158 001F5DB8 7C 64 F1 2E */ stwx r3, r4, r30 lbl_801FA15C: /* 801FA15C 001F5DBC 3B DE 00 04 */ addi r30, r30, 4 /* 801FA160 001F5DC0 3B 9C 00 01 */ addi r28, r28, 1 lbl_801FA164: /* 801FA164 001F5DC4 7C 1C E8 00 */ cmpw r28, r29 /* 801FA168 001F5DC8 41 80 FF A8 */ blt lbl_801FA110 /* 801FA16C 001F5DCC 81 1A 00 24 */ lwz r8, 0x24(r26) /* 801FA170 001F5DD0 2C 08 00 00 */ cmpwi r8, 0 /* 801FA174 001F5DD4 41 82 01 04 */ beq lbl_801FA278 /* 801FA178 001F5DD8 38 C0 00 00 */ li r6, 0 /* 801FA17C 001F5DDC 7F A9 03 A6 */ mtctr r29 /* 801FA180 001F5DE0 2C 1D 00 00 */ cmpwi r29, 0 /* 801FA184 001F5DE4 40 81 00 E0 */ ble lbl_801FA264 lbl_801FA188: /* 801FA188 001F5DE8 80 7F 00 04 */ lwz r3, 4(r31) /* 801FA18C 001F5DEC 7D 23 30 2E */ lwzx r9, r3, r6 /* 801FA190 001F5DF0 2C 09 00 00 */ cmpwi r9, 0 /* 801FA194 001F5DF4 41 82 00 C8 */ beq lbl_801FA25C /* 801FA198 001F5DF8 A0 89 00 E4 */ lhz r4, 0xe4(r9) /* 801FA19C 001F5DFC 39 40 00 00 */ li r10, 0 /* 801FA1A0 001F5E00 48 00 00 B0 */ b lbl_801FA250 lbl_801FA1A4: /* 801FA1A4 001F5E04 80 A9 00 18 */ lwz r5, 0x18(r9) /* 801FA1A8 001F5E08 2C 05 00 00 */ cmpwi r5, 0 /* 801FA1AC 001F5E0C 40 82 00 0C */ bne lbl_801FA1B8 /* 801FA1B0 001F5E10 38 60 00 00 */ li r3, 0 /* 801FA1B4 001F5E14 48 00 00 54 */ b lbl_801FA208 lbl_801FA1B8: /* 801FA1B8 001F5E18 A0 09 00 E4 */ lhz r0, 0xe4(r9) /* 801FA1BC 001F5E1C 55 43 04 3E */ clrlwi r3, r10, 0x10 /* 801FA1C0 001F5E20 7C 03 00 40 */ cmplw r3, r0 /* 801FA1C4 001F5E24 41 80 00 0C */ blt lbl_801FA1D0 /* 801FA1C8 001F5E28 38 60 00 00 */ li r3, 0 /* 801FA1CC 001F5E2C 48 00 00 3C */ b lbl_801FA208 lbl_801FA1D0: /* 801FA1D0 001F5E30 80 E9 00 08 */ lwz r7, 8(r9) /* 801FA1D4 001F5E34 55 40 0B FC */ rlwinm r0, r10, 1, 0xf, 0x1e /* 801FA1D8 001F5E38 7C 65 02 2E */ lhzx r3, r5, r0 /* 801FA1DC 001F5E3C 2C 07 00 00 */ cmpwi r7, 0 /* 801FA1E0 001F5E40 40 82 00 0C */ bne lbl_801FA1EC /* 801FA1E4 001F5E44 38 60 00 00 */ li r3, 0 /* 801FA1E8 001F5E48 48 00 00 20 */ b lbl_801FA208 lbl_801FA1EC: /* 801FA1EC 001F5E4C A0 09 00 DE */ lhz r0, 0xde(r9) /* 801FA1F0 001F5E50 7C 03 00 40 */ cmplw r3, r0 /* 801FA1F4 001F5E54 41 80 00 0C */ blt lbl_801FA200 /* 801FA1F8 001F5E58 38 60 00 00 */ li r3, 0 /* 801FA1FC 001F5E5C 48 00 00 0C */ b lbl_801FA208 lbl_801FA200: /* 801FA200 001F5E60 54 60 13 BA */ rlwinm r0, r3, 2, 0xe, 0x1d /* 801FA204 001F5E64 7C 67 00 2E */ lwzx r3, r7, r0 lbl_801FA208: /* 801FA208 001F5E68 2C 03 00 00 */ cmpwi r3, 0 /* 801FA20C 001F5E6C 41 82 00 40 */ beq lbl_801FA24C /* 801FA210 001F5E70 80 A3 01 0C */ lwz r5, 0x10c(r3) /* 801FA214 001F5E74 2C 05 00 00 */ cmpwi r5, 0 /* 801FA218 001F5E78 41 82 00 34 */ beq lbl_801FA24C /* 801FA21C 001F5E7C 80 08 00 18 */ lwz r0, 0x18(r8) /* 801FA220 001F5E80 7C 05 00 40 */ cmplw r5, r0 /* 801FA224 001F5E84 40 82 00 08 */ bne lbl_801FA22C /* 801FA228 001F5E88 90 7F 00 08 */ stw r3, 8(r31) lbl_801FA22C: /* 801FA22C 001F5E8C 80 08 00 1C */ lwz r0, 0x1c(r8) /* 801FA230 001F5E90 7C 05 00 40 */ cmplw r5, r0 /* 801FA234 001F5E94 40 82 00 08 */ bne lbl_801FA23C /* 801FA238 001F5E98 90 7F 00 0C */ stw r3, 0xc(r31) lbl_801FA23C: /* 801FA23C 001F5E9C 80 08 00 20 */ lwz r0, 0x20(r8) /* 801FA240 001F5EA0 7C 05 00 40 */ cmplw r5, r0 /* 801FA244 001F5EA4 40 82 00 08 */ bne lbl_801FA24C /* 801FA248 001F5EA8 90 7F 00 10 */ stw r3, 0x10(r31) lbl_801FA24C: /* 801FA24C 001F5EAC 39 4A 00 01 */ addi r10, r10, 1 lbl_801FA250: /* 801FA250 001F5EB0 55 40 04 3E */ clrlwi r0, r10, 0x10 /* 801FA254 001F5EB4 7C 00 20 40 */ cmplw r0, r4 /* 801FA258 001F5EB8 41 80 FF 4C */ blt lbl_801FA1A4 lbl_801FA25C: /* 801FA25C 001F5EBC 38 C6 00 04 */ addi r6, r6, 4 /* 801FA260 001F5EC0 42 00 FF 28 */ bdnz lbl_801FA188 lbl_801FA264: /* 801FA264 001F5EC4 80 1F 00 10 */ lwz r0, 0x10(r31) /* 801FA268 001F5EC8 2C 00 00 00 */ cmpwi r0, 0 /* 801FA26C 001F5ECC 40 82 00 0C */ bne lbl_801FA278 /* 801FA270 001F5ED0 80 1F 00 0C */ lwz r0, 0xc(r31) /* 801FA274 001F5ED4 90 1F 00 10 */ stw r0, 0x10(r31) lbl_801FA278: /* 801FA278 001F5ED8 7F E3 FB 78 */ mr r3, r31 lbl_801FA27C: /* 801FA27C 001F5EDC 39 61 00 20 */ addi r11, r1, 0x20 /* 801FA280 001F5EE0 4B FC CE F1 */ bl _restgpr_26 /* 801FA284 001F5EE4 80 01 00 24 */ lwz r0, 0x24(r1) /* 801FA288 001F5EE8 7C 08 03 A6 */ mtlr r0 /* 801FA28C 001F5EEC 38 21 00 20 */ addi r1, r1, 0x20 /* 801FA290 001F5EF0 4E 80 00 20 */ blr .global func_801FA294 func_801FA294: /* 801FA294 001F5EF4 94 21 FF E0 */ stwu r1, -0x20(r1) /* 801FA298 001F5EF8 7C 08 02 A6 */ mflr r0 /* 801FA29C 001F5EFC 2C 03 00 00 */ cmpwi r3, 0 /* 801FA2A0 001F5F00 90 01 00 24 */ stw r0, 0x24(r1) /* 801FA2A4 001F5F04 93 E1 00 1C */ stw r31, 0x1c(r1) /* 801FA2A8 001F5F08 93 C1 00 18 */ stw r30, 0x18(r1) /* 801FA2AC 001F5F0C 7C 9E 23 78 */ mr r30, r4 /* 801FA2B0 001F5F10 93 A1 00 14 */ stw r29, 0x14(r1) /* 801FA2B4 001F5F14 7C 7D 1B 78 */ mr r29, r3 /* 801FA2B8 001F5F18 41 82 00 94 */ beq lbl_801FA34C /* 801FA2BC 001F5F1C 80 8D A1 A8 */ lwz r4, lbl_8063F468-_SDA_BASE_(r13) /* 801FA2C0 001F5F20 80 04 01 24 */ lwz r0, 0x124(r4) /* 801FA2C4 001F5F24 7C 00 18 40 */ cmplw r0, r3 /* 801FA2C8 001F5F28 40 82 00 0C */ bne lbl_801FA2D4 /* 801FA2CC 001F5F2C 38 60 00 00 */ li r3, 0 /* 801FA2D0 001F5F30 48 00 87 01 */ bl func_802029D0 lbl_801FA2D4: /* 801FA2D4 001F5F34 80 1D 00 04 */ lwz r0, 4(r29) /* 801FA2D8 001F5F38 2C 00 00 00 */ cmpwi r0, 0 /* 801FA2DC 001F5F3C 41 82 00 5C */ beq lbl_801FA338 /* 801FA2E0 001F5F40 3B E0 00 00 */ li r31, 0 /* 801FA2E4 001F5F44 48 00 00 24 */ b lbl_801FA308 lbl_801FA2E8: /* 801FA2E8 001F5F48 80 7D 00 04 */ lwz r3, 4(r29) /* 801FA2EC 001F5F4C 57 E0 13 BA */ rlwinm r0, r31, 2, 0xe, 0x1d /* 801FA2F0 001F5F50 7C 63 00 2E */ lwzx r3, r3, r0 /* 801FA2F4 001F5F54 2C 03 00 00 */ cmpwi r3, 0 /* 801FA2F8 001F5F58 41 82 00 0C */ beq lbl_801FA304 /* 801FA2FC 001F5F5C 38 80 00 01 */ li r4, 1 /* 801FA300 001F5F60 4B FF A7 F1 */ bl func_801F4AF0 lbl_801FA304: /* 801FA304 001F5F64 3B FF 00 01 */ addi r31, r31, 1 lbl_801FA308: /* 801FA308 001F5F68 80 7D 00 00 */ lwz r3, 0(r29) /* 801FA30C 001F5F6C 57 E4 04 3E */ clrlwi r4, r31, 0x10 /* 801FA310 001F5F70 A0 03 00 18 */ lhz r0, 0x18(r3) /* 801FA314 001F5F74 7C 04 00 40 */ cmplw r4, r0 /* 801FA318 001F5F78 41 80 FF D0 */ blt lbl_801FA2E8 /* 801FA31C 001F5F7C 80 9D 00 04 */ lwz r4, 4(r29) /* 801FA320 001F5F80 2C 04 00 00 */ cmpwi r4, 0 /* 801FA324 001F5F84 41 82 00 14 */ beq lbl_801FA338 /* 801FA328 001F5F88 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 801FA32C 001F5F8C 4B FE 0A 1D */ bl func_801DAD48 /* 801FA330 001F5F90 38 00 00 00 */ li r0, 0 /* 801FA334 001F5F94 90 1D 00 04 */ stw r0, 4(r29) lbl_801FA338: /* 801FA338 001F5F98 2C 1E 00 00 */ cmpwi r30, 0 /* 801FA33C 001F5F9C 40 81 00 10 */ ble lbl_801FA34C /* 801FA340 001F5FA0 80 6D 96 38 */ lwz r3, lbl_8063E8F8-_SDA_BASE_(r13) /* 801FA344 001F5FA4 7F A4 EB 78 */ mr r4, r29 /* 801FA348 001F5FA8 4B FE 0A 01 */ bl func_801DAD48 lbl_801FA34C: /* 801FA34C 001F5FAC 83 E1 00 1C */ lwz r31, 0x1c(r1) /* 801FA350 001F5FB0 7F A3 EB 78 */ mr r3, r29 /* 801FA354 001F5FB4 83 C1 00 18 */ lwz r30, 0x18(r1) /* 801FA358 001F5FB8 83 A1 00 14 */ lwz r29, 0x14(r1) /* 801FA35C 001F5FBC 80 01 00 24 */ lwz r0, 0x24(r1) /* 801FA360 001F5FC0 7C 08 03 A6 */ mtlr r0 /* 801FA364 001F5FC4 38 21 00 20 */ addi r1, r1, 0x20 /* 801FA368 001F5FC8 4E 80 00 20 */ blr .global func_801FA36C func_801FA36C: /* 801FA36C 001F5FCC 38 A0 00 01 */ li r5, 1 /* 801FA370 001F5FD0 38 6D A1 30 */ addi r3, r13, lbl_8063F3F0-_SDA_BASE_ /* 801FA374 001F5FD4 38 80 00 04 */ li r4, 4 /* 801FA378 001F5FD8 38 00 00 00 */ li r0, 0 /* 801FA37C 001F5FDC 98 AD A1 30 */ stb r5, lbl_8063F3F0-_SDA_BASE_(r13) /* 801FA380 001F5FE0 B0 83 00 02 */ sth r4, 2(r3) /* 801FA384 001F5FE4 98 03 00 04 */ stb r0, 4(r3) /* 801FA388 001F5FE8 4E 80 00 20 */ blr