.include "macros.inc"

.section .data

.global lbl_803D99F0
lbl_803D99F0:
	# ROM: 0x3D69F0
	.4byte 0
	.4byte 0
	.4byte __dt__9CAutoSaveFv
	.4byte OnMessage__9CAutoSaveFRC20CArchitectureMessageR18CArchitectureQueue
	.4byte GetIsContinueDraw__9CAutoSaveCFv
	.4byte Draw__9CAutoSaveCFv
	.4byte PreDraw__6CIOWinCFv
	
.section .text, "ax"

.global GetIsContinueDraw__9CAutoSaveCFv
GetIsContinueDraw__9CAutoSaveCFv:
/* 8002515C 000220BC  38 60 00 00 */	li r3, 0
/* 80025160 000220C0  4E 80 00 20 */	blr 

.global Draw__9CAutoSaveCFv
Draw__9CAutoSaveCFv:
/* 80025164 000220C4  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80025168 000220C8  7C 08 02 A6 */	mflr r0
/* 8002516C 000220CC  90 01 00 14 */	stw r0, 0x14(r1)
/* 80025170 000220D0  80 63 00 14 */	lwz r3, 0x14(r3)
/* 80025174 000220D4  48 22 A5 AD */	bl Draw__15CSaveGameScreenFv
/* 80025178 000220D8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8002517C 000220DC  7C 08 03 A6 */	mtlr r0
/* 80025180 000220E0  38 21 00 10 */	addi r1, r1, 0x10
/* 80025184 000220E4  4E 80 00 20 */	blr 

.global OnMessage__9CAutoSaveFRC20CArchitectureMessageR18CArchitectureQueue
OnMessage__9CAutoSaveFRC20CArchitectureMessageR18CArchitectureQueue:
/* 80025188 000220E8  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 8002518C 000220EC  7C 08 02 A6 */	mflr r0
/* 80025190 000220F0  38 A0 00 00 */	li r5, 0
/* 80025194 000220F4  90 01 00 84 */	stw r0, 0x84(r1)
/* 80025198 000220F8  93 E1 00 7C */	stw r31, 0x7c(r1)
/* 8002519C 000220FC  7C 7F 1B 78 */	mr r31, r3
/* 800251A0 00022100  80 CD A0 80 */	lwz r6, gpGameState@sda21(r13)
/* 800251A4 00022104  80 06 02 10 */	lwz r0, 0x210(r6)
/* 800251A8 00022108  80 66 02 14 */	lwz r3, 0x214(r6)
/* 800251AC 0002210C  7C 00 2A 78 */	xor r0, r0, r5
/* 800251B0 00022110  7C 63 2A 78 */	xor r3, r3, r5
/* 800251B4 00022114  7C 60 03 79 */	or. r0, r3, r0
/* 800251B8 00022118  40 82 00 0C */	bne lbl_800251C4
/* 800251BC 0002211C  38 60 00 02 */	li r3, 2
/* 800251C0 00022120  48 00 01 9C */	b lbl_8002535C
lbl_800251C4:
/* 800251C4 00022124  80 04 00 04 */	lwz r0, 4(r4)
/* 800251C8 00022128  2C 00 00 05 */	cmpwi r0, 5
/* 800251CC 0002212C  41 82 00 3C */	beq lbl_80025208
/* 800251D0 00022130  40 80 01 88 */	bge lbl_80025358
/* 800251D4 00022134  2C 00 00 04 */	cmpwi r0, 4
/* 800251D8 00022138  40 80 00 08 */	bge lbl_800251E0
/* 800251DC 0002213C  48 00 01 7C */	b lbl_80025358
lbl_800251E0:
/* 800251E0 00022140  7C 83 23 78 */	mr r3, r4
/* 800251E4 00022144  48 02 C9 D9 */	bl GetParmTimerTick__7MakeMsgFRC20CArchitectureMessage
/* 800251E8 00022148  7C 64 1B 78 */	mr r4, r3
/* 800251EC 0002214C  80 7F 00 14 */	lwz r3, 0x14(r31)
/* 800251F0 00022150  C0 24 00 04 */	lfs f1, 4(r4)
/* 800251F4 00022154  48 22 A5 A9 */	bl Update__15CSaveGameScreenFf
/* 800251F8 00022158  2C 03 00 00 */	cmpwi r3, 0
/* 800251FC 0002215C  41 82 01 5C */	beq lbl_80025358
/* 80025200 00022160  38 60 00 02 */	li r3, 2
/* 80025204 00022164  48 00 01 58 */	b lbl_8002535C
lbl_80025208:
/* 80025208 00022168  7C 83 23 78 */	mr r3, r4
/* 8002520C 0002216C  48 02 C8 D9 */	bl GetParmUserInput__7MakeMsgFRC20CArchitectureMessage
/* 80025210 00022170  3C A0 80 3E */	lis r5, lbl_803D8E9C@ha
/* 80025214 00022174  3C 80 80 3E */	lis r4, lbl_803D9810@ha
/* 80025218 00022178  38 05 8E 9C */	addi r0, r5, lbl_803D8E9C@l
/* 8002521C 0002217C  90 01 00 38 */	stw r0, 0x38(r1)
/* 80025220 00022180  38 04 98 10 */	addi r0, r4, lbl_803D9810@l
/* 80025224 00022184  90 01 00 38 */	stw r0, 0x38(r1)
/* 80025228 00022188  C0 03 00 04 */	lfs f0, 4(r3)
/* 8002522C 0002218C  D0 01 00 3C */	stfs f0, 0x3c(r1)
/* 80025230 00022190  80 03 00 08 */	lwz r0, 8(r3)
/* 80025234 00022194  90 01 00 40 */	stw r0, 0x40(r1)
/* 80025238 00022198  C0 03 00 0C */	lfs f0, 0xc(r3)
/* 8002523C 0002219C  D0 01 00 44 */	stfs f0, 0x44(r1)
/* 80025240 000221A0  C0 03 00 10 */	lfs f0, 0x10(r3)
/* 80025244 000221A4  D0 01 00 48 */	stfs f0, 0x48(r1)
/* 80025248 000221A8  C0 03 00 14 */	lfs f0, 0x14(r3)
/* 8002524C 000221AC  D0 01 00 4C */	stfs f0, 0x4c(r1)
/* 80025250 000221B0  C0 03 00 18 */	lfs f0, 0x18(r3)
/* 80025254 000221B4  D0 01 00 50 */	stfs f0, 0x50(r1)
/* 80025258 000221B8  C0 03 00 1C */	lfs f0, 0x1c(r3)
/* 8002525C 000221BC  D0 01 00 54 */	stfs f0, 0x54(r1)
/* 80025260 000221C0  C0 03 00 20 */	lfs f0, 0x20(r3)
/* 80025264 000221C4  D0 01 00 58 */	stfs f0, 0x58(r1)
/* 80025268 000221C8  88 03 00 24 */	lbz r0, 0x24(r3)
/* 8002526C 000221CC  98 01 00 5C */	stb r0, 0x5c(r1)
/* 80025270 000221D0  88 03 00 25 */	lbz r0, 0x25(r3)
/* 80025274 000221D4  98 01 00 5D */	stb r0, 0x5d(r1)
/* 80025278 000221D8  88 03 00 26 */	lbz r0, 0x26(r3)
/* 8002527C 000221DC  98 01 00 5E */	stb r0, 0x5e(r1)
/* 80025280 000221E0  88 03 00 27 */	lbz r0, 0x27(r3)
/* 80025284 000221E4  98 01 00 5F */	stb r0, 0x5f(r1)
/* 80025288 000221E8  C0 03 00 28 */	lfs f0, 0x28(r3)
/* 8002528C 000221EC  D0 01 00 60 */	stfs f0, 0x60(r1)
/* 80025290 000221F0  C0 03 00 2C */	lfs f0, 0x2c(r3)
/* 80025294 000221F4  D0 01 00 64 */	stfs f0, 0x64(r1)
/* 80025298 000221F8  88 03 00 30 */	lbz r0, 0x30(r3)
/* 8002529C 000221FC  98 01 00 68 */	stb r0, 0x68(r1)
/* 800252A0 00022200  88 03 00 31 */	lbz r0, 0x31(r3)
/* 800252A4 00022204  98 01 00 69 */	stb r0, 0x69(r1)
/* 800252A8 00022208  88 03 00 32 */	lbz r0, 0x32(r3)
/* 800252AC 0002220C  38 61 00 38 */	addi r3, r1, 0x38
/* 800252B0 00022210  98 01 00 6A */	stb r0, 0x6a(r1)
/* 800252B4 00022214  4B FF 67 31 */	bl GetUserInput__21CArchMsgParmUserInputCFv
/* 800252B8 00022218  C0 03 00 00 */	lfs f0, 0(r3)
/* 800252BC 0002221C  38 81 00 08 */	addi r4, r1, 8
/* 800252C0 00022220  D0 01 00 08 */	stfs f0, 8(r1)
/* 800252C4 00022224  80 03 00 04 */	lwz r0, 4(r3)
/* 800252C8 00022228  90 01 00 0C */	stw r0, 0xc(r1)
/* 800252CC 0002222C  C0 03 00 08 */	lfs f0, 8(r3)
/* 800252D0 00022230  D0 01 00 10 */	stfs f0, 0x10(r1)
/* 800252D4 00022234  C0 03 00 0C */	lfs f0, 0xc(r3)
/* 800252D8 00022238  D0 01 00 14 */	stfs f0, 0x14(r1)
/* 800252DC 0002223C  C0 03 00 10 */	lfs f0, 0x10(r3)
/* 800252E0 00022240  D0 01 00 18 */	stfs f0, 0x18(r1)
/* 800252E4 00022244  C0 03 00 14 */	lfs f0, 0x14(r3)
/* 800252E8 00022248  D0 01 00 1C */	stfs f0, 0x1c(r1)
/* 800252EC 0002224C  C0 03 00 18 */	lfs f0, 0x18(r3)
/* 800252F0 00022250  D0 01 00 20 */	stfs f0, 0x20(r1)
/* 800252F4 00022254  C0 03 00 1C */	lfs f0, 0x1c(r3)
/* 800252F8 00022258  D0 01 00 24 */	stfs f0, 0x24(r1)
/* 800252FC 0002225C  88 03 00 20 */	lbz r0, 0x20(r3)
/* 80025300 00022260  98 01 00 28 */	stb r0, 0x28(r1)
/* 80025304 00022264  88 03 00 21 */	lbz r0, 0x21(r3)
/* 80025308 00022268  98 01 00 29 */	stb r0, 0x29(r1)
/* 8002530C 0002226C  88 03 00 22 */	lbz r0, 0x22(r3)
/* 80025310 00022270  98 01 00 2A */	stb r0, 0x2a(r1)
/* 80025314 00022274  88 03 00 23 */	lbz r0, 0x23(r3)
/* 80025318 00022278  98 01 00 2B */	stb r0, 0x2b(r1)
/* 8002531C 0002227C  C0 03 00 24 */	lfs f0, 0x24(r3)
/* 80025320 00022280  D0 01 00 2C */	stfs f0, 0x2c(r1)
/* 80025324 00022284  C0 03 00 28 */	lfs f0, 0x28(r3)
/* 80025328 00022288  D0 01 00 30 */	stfs f0, 0x30(r1)
/* 8002532C 0002228C  88 03 00 2C */	lbz r0, 0x2c(r3)
/* 80025330 00022290  98 01 00 34 */	stb r0, 0x34(r1)
/* 80025334 00022294  88 03 00 2D */	lbz r0, 0x2d(r3)
/* 80025338 00022298  98 01 00 35 */	stb r0, 0x35(r1)
/* 8002533C 0002229C  88 03 00 2E */	lbz r0, 0x2e(r3)
/* 80025340 000222A0  98 01 00 36 */	stb r0, 0x36(r1)
/* 80025344 000222A4  80 7F 00 14 */	lwz r3, 0x14(r31)
/* 80025348 000222A8  48 22 A4 29 */	bl ProcessUserInput__15CSaveGameScreenFRC11CFinalInput
/* 8002534C 000222AC  38 61 00 38 */	addi r3, r1, 0x38
/* 80025350 000222B0  38 80 FF FF */	li r4, -1
/* 80025354 000222B4  4B FF 66 99 */	bl __dt__21CArchMsgParmUserInputFv
lbl_80025358:
/* 80025358 000222B8  38 60 00 01 */	li r3, 1
lbl_8002535C:
/* 8002535C 000222BC  80 01 00 84 */	lwz r0, 0x84(r1)
/* 80025360 000222C0  83 E1 00 7C */	lwz r31, 0x7c(r1)
/* 80025364 000222C4  7C 08 03 A6 */	mtlr r0
/* 80025368 000222C8  38 21 00 80 */	addi r1, r1, 0x80
/* 8002536C 000222CC  4E 80 00 20 */	blr 

.global __dt__9CAutoSaveFv
__dt__9CAutoSaveFv:
/* 80025370 000222D0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80025374 000222D4  7C 08 02 A6 */	mflr r0
/* 80025378 000222D8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8002537C 000222DC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80025380 000222E0  7C 9F 23 78 */	mr r31, r4
/* 80025384 000222E4  93 C1 00 08 */	stw r30, 8(r1)
/* 80025388 000222E8  7C 7E 1B 79 */	or. r30, r3, r3
/* 8002538C 000222EC  41 82 00 40 */	beq lbl_800253CC
/* 80025390 000222F0  3C 60 80 3E */	lis r3, lbl_803D99F0@ha
/* 80025394 000222F4  34 1E 00 14 */	addic. r0, r30, 0x14
/* 80025398 000222F8  38 03 99 F0 */	addi r0, r3, lbl_803D99F0@l
/* 8002539C 000222FC  90 1E 00 00 */	stw r0, 0(r30)
/* 800253A0 00022300  41 82 00 10 */	beq lbl_800253B0
/* 800253A4 00022304  80 7E 00 14 */	lwz r3, 0x14(r30)
/* 800253A8 00022308  38 80 00 01 */	li r4, 1
/* 800253AC 0002230C  48 22 AA 79 */	bl __dt__15CSaveGameScreenFv
lbl_800253B0:
/* 800253B0 00022310  7F C3 F3 78 */	mr r3, r30
/* 800253B4 00022314  38 80 00 00 */	li r4, 0
/* 800253B8 00022318  48 02 D7 ED */	bl __dt__6CIOWinFv
/* 800253BC 0002231C  7F E0 07 35 */	extsh. r0, r31
/* 800253C0 00022320  40 81 00 0C */	ble lbl_800253CC
/* 800253C4 00022324  7F C3 F3 78 */	mr r3, r30
/* 800253C8 00022328  48 2F 05 69 */	bl Free__7CMemoryFPCv
lbl_800253CC:
/* 800253CC 0002232C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 800253D0 00022330  7F C3 F3 78 */	mr r3, r30
/* 800253D4 00022334  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 800253D8 00022338  83 C1 00 08 */	lwz r30, 8(r1)
/* 800253DC 0002233C  7C 08 03 A6 */	mtlr r0
/* 800253E0 00022340  38 21 00 10 */	addi r1, r1, 0x10
/* 800253E4 00022344  4E 80 00 20 */	blr 

.global __ct__9CAutoSaveFv
__ct__9CAutoSaveFv:
/* 800253E8 00022348  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 800253EC 0002234C  7C 08 02 A6 */	mflr r0
/* 800253F0 00022350  3C 80 80 3D */	lis r4, lbl_803CCB50@ha
/* 800253F4 00022354  90 01 00 24 */	stw r0, 0x24(r1)
/* 800253F8 00022358  38 84 CB 50 */	addi r4, r4, lbl_803CCB50@l
/* 800253FC 0002235C  38 84 01 48 */	addi r4, r4, 0x148
/* 80025400 00022360  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 80025404 00022364  7C 7F 1B 78 */	mr r31, r3
/* 80025408 00022368  38 61 00 08 */	addi r3, r1, 8
/* 8002540C 0002236C  4B FD F8 AD */	bl string_l__4rstlFPCc
/* 80025410 00022370  7F E3 FB 78 */	mr r3, r31
/* 80025414 00022374  38 81 00 08 */	addi r4, r1, 8
/* 80025418 00022378  48 02 D7 F5 */	bl "__ct__6CIOWinFRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>"
/* 8002541C 0002237C  38 61 00 08 */	addi r3, r1, 8
/* 80025420 00022380  48 31 86 C1 */	bl "internal_dereference__Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>Fv"
/* 80025424 00022384  3C 60 80 3E */	lis r3, lbl_803D99F0@ha
/* 80025428 00022388  3C 80 80 3D */	lis r4, lbl_803CCB50@ha
/* 8002542C 0002238C  38 03 99 F0 */	addi r0, r3, lbl_803D99F0@l
/* 80025430 00022390  38 60 00 98 */	li r3, 0x98
/* 80025434 00022394  38 84 CB 50 */	addi r4, r4, lbl_803CCB50@l
/* 80025438 00022398  90 1F 00 00 */	stw r0, 0(r31)
/* 8002543C 0002239C  38 84 01 51 */	addi r4, r4, 0x151
/* 80025440 000223A0  38 A0 00 00 */	li r5, 0
/* 80025444 000223A4  48 2F 04 29 */	bl __nw__FUlPCcPCc
/* 80025448 000223A8  7C 60 1B 79 */	or. r0, r3, r3
/* 8002544C 000223AC  41 82 00 1C */	beq lbl_80025468
/* 80025450 000223B0  80 CD A0 80 */	lwz r6, gpGameState@sda21(r13)
/* 80025454 000223B4  38 80 00 01 */	li r4, 1
/* 80025458 000223B8  80 A6 02 10 */	lwz r5, 0x210(r6)
/* 8002545C 000223BC  80 C6 02 14 */	lwz r6, 0x214(r6)
/* 80025460 000223C0  48 22 AB 1D */	bl __ct__15CSaveGameScreen
/* 80025464 000223C4  7C 60 1B 78 */	mr r0, r3
lbl_80025468:
/* 80025468 000223C8  90 1F 00 14 */	stw r0, 0x14(r31)
/* 8002546C 000223CC  80 6D A0 78 */	lwz r3, gpMain@sda21(r13)
/* 80025470 000223D0  4B FD F1 21 */	bl RefreshGameState__5CMainFv
/* 80025474 000223D4  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80025478 000223D8  7F E3 FB 78 */	mr r3, r31
/* 8002547C 000223DC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80025480 000223E0  7C 08 03 A6 */	mtlr r0
/* 80025484 000223E4  38 21 00 20 */	addi r1, r1, 0x20
/* 80025488 000223E8  4E 80 00 20 */	blr