.include "macros.inc" .section .text, "ax" # 0x80006980 - 0x803E1E60 .global Setup__Q44nw4r3snd6detail14StrmBufferPoolFPvUli Setup__Q44nw4r3snd6detail14StrmBufferPoolFPvUli: /* 8037CAC4 00378724 94 21 FF E0 */ stwu r1, -0x20(r1) /* 8037CAC8 00378728 7C 08 02 A6 */ mflr r0 /* 8037CACC 0037872C 90 01 00 24 */ stw r0, 0x24(r1) /* 8037CAD0 00378730 39 61 00 20 */ addi r11, r1, 0x20 /* 8037CAD4 00378734 4B E4 A6 55 */ bl _savegpr_27 /* 8037CAD8 00378738 2C 06 00 00 */ cmpwi r6, 0 /* 8037CADC 0037873C 7C 7B 1B 78 */ mr r27, r3 /* 8037CAE0 00378740 7C 9C 23 78 */ mr r28, r4 /* 8037CAE4 00378744 7C BD 2B 78 */ mr r29, r5 /* 8037CAE8 00378748 7C DE 33 78 */ mr r30, r6 /* 8037CAEC 0037874C 41 82 00 40 */ beq lbl_8037CB2C /* 8037CAF0 00378750 4B EF 1C 6D */ bl OSDisableInterrupts /* 8037CAF4 00378754 7C 9D F3 96 */ divwu r4, r29, r30 /* 8037CAF8 00378758 38 00 00 00 */ li r0, 0 /* 8037CAFC 0037875C 7C 7F 1B 78 */ mr r31, r3 /* 8037CB00 00378760 93 9B 00 00 */ stw r28, 0(r27) /* 8037CB04 00378764 38 7B 00 14 */ addi r3, r27, 0x14 /* 8037CB08 00378768 93 BB 00 04 */ stw r29, 4(r27) /* 8037CB0C 0037876C 90 9B 00 08 */ stw r4, 8(r27) /* 8037CB10 00378770 38 80 00 00 */ li r4, 0 /* 8037CB14 00378774 38 A0 00 04 */ li r5, 4 /* 8037CB18 00378778 93 DB 00 0C */ stw r30, 0xc(r27) /* 8037CB1C 0037877C 90 1B 00 10 */ stw r0, 0x10(r27) /* 8037CB20 00378780 4B C8 75 E5 */ bl memset /* 8037CB24 00378784 7F E3 FB 78 */ mr r3, r31 /* 8037CB28 00378788 4B EF 1C 5D */ bl OSRestoreInterrupts lbl_8037CB2C: /* 8037CB2C 0037878C 39 61 00 20 */ addi r11, r1, 0x20 /* 8037CB30 00378790 4B E4 A6 45 */ bl _restgpr_27 /* 8037CB34 00378794 80 01 00 24 */ lwz r0, 0x24(r1) /* 8037CB38 00378798 7C 08 03 A6 */ mtlr r0 /* 8037CB3C 0037879C 38 21 00 20 */ addi r1, r1, 0x20 /* 8037CB40 003787A0 4E 80 00 20 */ blr .global Shutdown__Q44nw4r3snd6detail14StrmBufferPoolFv Shutdown__Q44nw4r3snd6detail14StrmBufferPoolFv: /* 8037CB44 003787A4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8037CB48 003787A8 7C 08 02 A6 */ mflr r0 /* 8037CB4C 003787AC 90 01 00 14 */ stw r0, 0x14(r1) /* 8037CB50 003787B0 93 E1 00 0C */ stw r31, 0xc(r1) /* 8037CB54 003787B4 7C 7F 1B 78 */ mr r31, r3 /* 8037CB58 003787B8 4B EF 1C 05 */ bl OSDisableInterrupts /* 8037CB5C 003787BC 38 00 00 00 */ li r0, 0 /* 8037CB60 003787C0 90 1F 00 00 */ stw r0, 0(r31) /* 8037CB64 003787C4 90 1F 00 04 */ stw r0, 4(r31) /* 8037CB68 003787C8 90 1F 00 08 */ stw r0, 8(r31) /* 8037CB6C 003787CC 90 1F 00 0C */ stw r0, 0xc(r31) /* 8037CB70 003787D0 4B EF 1C 15 */ bl OSRestoreInterrupts /* 8037CB74 003787D4 80 01 00 14 */ lwz r0, 0x14(r1) /* 8037CB78 003787D8 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8037CB7C 003787DC 7C 08 03 A6 */ mtlr r0 /* 8037CB80 003787E0 38 21 00 10 */ addi r1, r1, 0x10 /* 8037CB84 003787E4 4E 80 00 20 */ blr .global Alloc__Q44nw4r3snd6detail14StrmBufferPoolFv Alloc__Q44nw4r3snd6detail14StrmBufferPoolFv: /* 8037CB88 003787E8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8037CB8C 003787EC 7C 08 02 A6 */ mflr r0 /* 8037CB90 003787F0 90 01 00 14 */ stw r0, 0x14(r1) /* 8037CB94 003787F4 93 E1 00 0C */ stw r31, 0xc(r1) /* 8037CB98 003787F8 7C 7F 1B 78 */ mr r31, r3 /* 8037CB9C 003787FC 4B EF 1B C1 */ bl OSDisableInterrupts /* 8037CBA0 00378800 80 9F 00 0C */ lwz r4, 0xc(r31) /* 8037CBA4 00378804 80 1F 00 10 */ lwz r0, 0x10(r31) /* 8037CBA8 00378808 7C 00 20 00 */ cmpw r0, r4 /* 8037CBAC 0037880C 41 80 00 10 */ blt lbl_8037CBBC /* 8037CBB0 00378810 4B EF 1B D5 */ bl OSRestoreInterrupts /* 8037CBB4 00378814 38 60 00 00 */ li r3, 0 /* 8037CBB8 00378818 48 00 00 A0 */ b lbl_8037CC58 lbl_8037CBBC: /* 8037CBBC 0037881C 38 04 00 07 */ addi r0, r4, 7 /* 8037CBC0 00378820 39 00 00 00 */ li r8, 0 /* 8037CBC4 00378824 54 04 00 38 */ rlwinm r4, r0, 0, 0, 0x1c /* 8037CBC8 00378828 7C 84 1E 70 */ srawi r4, r4, 3 /* 8037CBCC 0037882C 38 00 00 08 */ li r0, 8 /* 8037CBD0 00378830 7C E4 01 94 */ addze r7, r4 /* 8037CBD4 00378834 48 00 00 74 */ b lbl_8037CC48 lbl_8037CBD8: /* 8037CBD8 00378838 7C DF 42 14 */ add r6, r31, r8 /* 8037CBDC 0037883C 88 A6 00 14 */ lbz r5, 0x14(r6) /* 8037CBE0 00378840 28 05 00 FF */ cmplwi r5, 0xff /* 8037CBE4 00378844 41 82 00 60 */ beq lbl_8037CC44 /* 8037CBE8 00378848 39 20 00 01 */ li r9, 1 /* 8037CBEC 0037884C 39 40 00 00 */ li r10, 0 /* 8037CBF0 00378850 7C 09 03 A6 */ mtctr r0 lbl_8037CBF4: /* 8037CBF4 00378854 7C A4 48 39 */ and. r4, r5, r9 /* 8037CBF8 00378858 40 82 00 40 */ bne lbl_8037CC38 /* 8037CBFC 0037885C 88 86 00 14 */ lbz r4, 0x14(r6) /* 8037CC00 00378860 55 00 18 38 */ slwi r0, r8, 3 /* 8037CC04 00378864 7C 0A 02 14 */ add r0, r10, r0 /* 8037CC08 00378868 7C 84 4B 78 */ or r4, r4, r9 /* 8037CC0C 0037886C 98 86 00 14 */ stb r4, 0x14(r6) /* 8037CC10 00378870 80 9F 00 08 */ lwz r4, 8(r31) /* 8037CC14 00378874 80 BF 00 10 */ lwz r5, 0x10(r31) /* 8037CC18 00378878 7C 84 01 D6 */ mullw r4, r4, r0 /* 8037CC1C 0037887C 80 1F 00 00 */ lwz r0, 0(r31) /* 8037CC20 00378880 38 A5 00 01 */ addi r5, r5, 1 /* 8037CC24 00378884 90 BF 00 10 */ stw r5, 0x10(r31) /* 8037CC28 00378888 7F E4 02 14 */ add r31, r4, r0 /* 8037CC2C 0037888C 4B EF 1B 59 */ bl OSRestoreInterrupts /* 8037CC30 00378890 7F E3 FB 78 */ mr r3, r31 /* 8037CC34 00378894 48 00 00 24 */ b lbl_8037CC58 lbl_8037CC38: /* 8037CC38 00378898 55 29 0E 3C */ rlwinm r9, r9, 1, 0x18, 0x1e /* 8037CC3C 0037889C 39 4A 00 01 */ addi r10, r10, 1 /* 8037CC40 003788A0 42 00 FF B4 */ bdnz lbl_8037CBF4 lbl_8037CC44: /* 8037CC44 003788A4 39 08 00 01 */ addi r8, r8, 1 lbl_8037CC48: /* 8037CC48 003788A8 7C 08 38 00 */ cmpw r8, r7 /* 8037CC4C 003788AC 41 80 FF 8C */ blt lbl_8037CBD8 /* 8037CC50 003788B0 4B EF 1B 35 */ bl OSRestoreInterrupts /* 8037CC54 003788B4 38 60 00 00 */ li r3, 0 lbl_8037CC58: /* 8037CC58 003788B8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8037CC5C 003788BC 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8037CC60 003788C0 7C 08 03 A6 */ mtlr r0 /* 8037CC64 003788C4 38 21 00 10 */ addi r1, r1, 0x10 /* 8037CC68 003788C8 4E 80 00 20 */ blr .global Free__Q44nw4r3snd6detail14StrmBufferPoolFPv Free__Q44nw4r3snd6detail14StrmBufferPoolFPv: /* 8037CC6C 003788CC 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8037CC70 003788D0 7C 08 02 A6 */ mflr r0 /* 8037CC74 003788D4 90 01 00 14 */ stw r0, 0x14(r1) /* 8037CC78 003788D8 93 E1 00 0C */ stw r31, 0xc(r1) /* 8037CC7C 003788DC 7C 9F 23 78 */ mr r31, r4 /* 8037CC80 003788E0 93 C1 00 08 */ stw r30, 8(r1) /* 8037CC84 003788E4 7C 7E 1B 78 */ mr r30, r3 /* 8037CC88 003788E8 4B EF 1A D5 */ bl OSDisableInterrupts /* 8037CC8C 003788EC 80 BE 00 00 */ lwz r5, 0(r30) /* 8037CC90 003788F0 38 80 00 01 */ li r4, 1 /* 8037CC94 003788F4 80 1E 00 08 */ lwz r0, 8(r30) /* 8037CC98 003788F8 7C A5 F8 50 */ subf r5, r5, r31 /* 8037CC9C 003788FC 7C A5 03 96 */ divwu r5, r5, r0 /* 8037CCA0 00378900 54 A0 E8 FE */ srwi r0, r5, 3 /* 8037CCA4 00378904 7C DE 02 14 */ add r6, r30, r0 /* 8037CCA8 00378908 54 A0 07 7E */ clrlwi r0, r5, 0x1d /* 8037CCAC 0037890C 88 A6 00 14 */ lbz r5, 0x14(r6) /* 8037CCB0 00378910 7C 80 00 30 */ slw r0, r4, r0 /* 8037CCB4 00378914 7C A0 00 78 */ andc r0, r5, r0 /* 8037CCB8 00378918 98 06 00 14 */ stb r0, 0x14(r6) /* 8037CCBC 0037891C 80 9E 00 10 */ lwz r4, 0x10(r30) /* 8037CCC0 00378920 38 04 FF FF */ addi r0, r4, -1 /* 8037CCC4 00378924 90 1E 00 10 */ stw r0, 0x10(r30) /* 8037CCC8 00378928 4B EF 1A BD */ bl OSRestoreInterrupts /* 8037CCCC 0037892C 80 01 00 14 */ lwz r0, 0x14(r1) /* 8037CCD0 00378930 83 E1 00 0C */ lwz r31, 0xc(r1) /* 8037CCD4 00378934 83 C1 00 08 */ lwz r30, 8(r1) /* 8037CCD8 00378938 7C 08 03 A6 */ mtlr r0 /* 8037CCDC 0037893C 38 21 00 10 */ addi r1, r1, 0x10 /* 8037CCE0 00378940 4E 80 00 20 */ blr