thumb_func_start CopyString_Limit10 ; u8 *CopyString_Limit10(u8 *dest, u8 *src) CopyString_Limit10: ; 8008B10 push {r4,r5,lr} adds r4, r0, 0 movs r5, 0xA movs r3, 0 @08008B18: adds r2, r4, r3 adds r0, r1, r3 ldrb r0, [r0] strb r0, [r2] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne @08008B2C adds r0, r2, 0 b @08008B3C @08008B2C: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, r5 bcc @08008B18 adds r0, r4, r3 movs r1, 0xFF strb r1, [r0] @08008B3C: pop {r4,r5} pop {r1} bx r1 thumb_func_end CopyString_Limit10 thumb_func_start GetStringEnd_Limit7 ; u8 *GetStringEnd_Limit7(u8 *s) GetStringEnd_Limit7: ; 8008B44 push {r4,lr} adds r3, r0, 0 movs r4, 0xA movs r2, 0 @08008B4C: adds r1, r3, r2 ldrb r0, [r1] cmp r0, 0xFF bne @08008B58 adds r0, r1, 0 b @08008B68 @08008B58: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r4 bcc @08008B4C adds r0, r3, r2 movs r1, 0xFF strb r1, [r0] @08008B68: pop {r4} pop {r1} bx r1 thumb_func_end GetStringEnd_Limit7 thumb_func_start CopyString_Limit7 ; u8 *CopyString_Limit7(u8 *dest, u8 *src) CopyString_Limit7: ; 8008B70 push {r4,r5,lr} adds r4, r0, 0 movs r5, 0x7 movs r3, 0 @08008B78: adds r2, r4, r3 adds r0, r1, r3 ldrb r0, [r0] strb r0, [r2] lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne @08008B8C adds r0, r2, 0 b @08008B98 @08008B8C: adds r3, 0x1 cmp r3, r5 blt @08008B78 adds r0, r4, r3 movs r1, 0xFF strb r1, [r0] @08008B98: pop {r4,r5} pop {r1} bx r1 thumb_func_end CopyString_Limit7 thumb_func_start CopyString ; u8 *CopyString(u8 *dest, u8 *src) CopyString: ; 8008BA0 push {lr} adds r3, r0, 0 b @08008BAC @08008BA6: strb r2, [r3] adds r3, 0x1 adds r1, 0x1 @08008BAC: ldrb r2, [r1] adds r0, r2, 0 cmp r0, 0xFF bne @08008BA6 movs r0, 0xFF strb r0, [r3] adds r0, r3, 0 pop {r1} bx r1 thumb_func_end CopyString thumb_func_start AppendString ; u8 *AppendString(u8 *dest, u8 *src) AppendString: ; 8008BC0 push {lr} adds r2, r0, 0 b @08008BC8 @08008BC6: adds r2, 0x1 @08008BC8: ldrb r0, [r2] cmp r0, 0xFF bne @08008BC6 adds r0, r2, 0 bl CopyString pop {r1} bx r1 thumb_func_end AppendString thumb_func_start CopyString_LimitN ; u8 *CopyString_LimitN(u8 *dest, u8 *src, u8 n) CopyString_LimitN: ; 8008BD8 push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 lsls r2, 24 lsrs r5, r2, 24 movs r3, 0 adds r0, r5, 0 cmp r3, r0 bcs @08008BFE adds r2, r0, 0 @08008BEC: adds r1, r4, r3 adds r0, r6, r3 ldrb r0, [r0] strb r0, [r1] adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r2 bcc @08008BEC @08008BFE: adds r0, r4, r5 pop {r4-r6} pop {r1} bx r1 thumb_func_end CopyString_LimitN thumb_func_start AppendString_LimitN ; u8 *AppendString_LimitN(u8 *dest, u8 *src, u8 n) AppendString_LimitN: ; 8008C08 push {lr} adds r3, r0, 0 lsls r2, 24 lsrs r2, 24 b @08008C14 @08008C12: adds r3, 0x1 @08008C14: ldrb r0, [r3] cmp r0, 0xFF bne @08008C12 adds r0, r3, 0 bl CopyString_LimitN pop {r1} bx r1 thumb_func_end AppendString_LimitN thumb_func_start GetStringLength ; u16 GetStringLength(u8 *s) GetStringLength: ; 8008C24 push {lr} adds r2, r0, 0 movs r1, 0 ldrb r0, [r2] cmp r0, 0xFF beq @08008C3E @08008C30: adds r0, r1, 0x1 lsls r0, 16 lsrs r1, r0, 16 adds r0, r2, r1 ldrb r0, [r0] cmp r0, 0xFF bne @08008C30 @08008C3E: adds r0, r1, 0 pop {r1} bx r1 thumb_func_end GetStringLength thumb_func_start CompareString ; u8 CompareString(u8 *s1, u8 *s2) CompareString: ; 8008C44 push {lr} adds r2, r0, 0 b @08008C56 @08008C4A: cmp r0, 0xFF bne @08008C52 movs r0, 0 b @08008C64 @08008C52: adds r2, 0x1 adds r1, 0x1 @08008C56: ldrb r0, [r2] ldrb r3, [r1] cmp r0, r3 beq @08008C4A ldrb r0, [r2] ldrb r1, [r1] subs r0, r1 @08008C64: pop {r1} bx r1 thumb_func_end CompareString thumb_func_start CompareString_LimitN ; u8 CompareString_LimitN(u8 *s1, u8 *s2, u32 n) CompareString_LimitN: ; 8008C68 push {r4,lr} adds r3, r0, 0 b @08008C80 @08008C6E: cmp r0, 0xFF beq @08008C7C adds r3, 0x1 adds r1, 0x1 subs r2, 0x1 cmp r2, 0 bne @08008C80 @08008C7C: movs r0, 0 b @08008C8E @08008C80: ldrb r0, [r3] ldrb r4, [r1] cmp r0, r4 beq @08008C6E ldrb r0, [r3] ldrb r1, [r1] subs r0, r1 @08008C8E: pop {r4} pop {r1} bx r1 thumb_func_end CompareString_LimitN thumb_func_start IsStringLengthLessThanN ; BOOL IsStringLengthLessThanN(u8 *s, s32 n) IsStringLengthLessThanN: ; 8008C94 push {lr} adds r3, r0, 0 movs r2, 0 cmp r2, r1 bge @08008CB8 @08008C9E: adds r0, r3, r2 ldrb r0, [r0] cmp r0, 0 beq @08008CAE cmp r0, 0xFF beq @08008CAE movs r0, 0x1 b @08008CBA @08008CAE: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, r1 blt @08008C9E @08008CB8: movs r0, 0 @08008CBA: pop {r1} bx r1 thumb_func_end IsStringLengthLessThanN thumb_func_start ConvertIntToDecimalString ; u8 *ConvertIntToDecimalString(u8 *dest, s32 value, u8 mode, u8 numDigits) ConvertIntToDecimalString: ; 8008CC0 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 adds r6, r1, 0 lsls r3, 24 ldr r0, =gPowersOfTen lsrs r3, 22 subs r3, 0x4 adds r3, r0 ldr r0, [r3] movs r7, 0 cmp r2, 0x1 bne @08008CDE movs r7, 0x2 @08008CDE: cmp r2, 0x2 bne @08008CE4 movs r7, 0x1 @08008CE4: adds r5, r0, 0 cmp r5, 0 ble @08008D60 ldr r0, =gDigits mov r8, r0 @08008CEE: adds r0, r6, 0 adds r1, r5, 0 bl __divsi3 lsls r0, 16 lsrs r2, r0, 16 adds r3, r2, 0 adds r0, r5, 0 muls r0, r2 subs r1, r6, r0 cmp r7, 0x1 bne @08008D26 adds r3, r4, 0 adds r4, 0x1 cmp r2, 0x9 bhi @08008D20 mov r6, r8 adds r0, r2, r6 ldrb r0, [r0] b @08008D22 .pool @08008D20: movs r0, 0xAC @08008D22: strb r0, [r3] b @08008D50 @08008D26: cmp r2, 0 bne @08008D2E cmp r5, 0x1 bne @08008D46 @08008D2E: movs r7, 0x1 adds r2, r4, 0 adds r4, 0x1 cmp r3, 0x9 bhi @08008D40 mov r6, r8 adds r0, r3, r6 ldrb r0, [r0] b @08008D42 @08008D40: movs r0, 0xAC @08008D42: strb r0, [r2] b @08008D50 @08008D46: cmp r7, 0x2 bne @08008D50 movs r0, 0x77 strb r0, [r4] adds r4, 0x1 @08008D50: adds r6, r1, 0 adds r0, r5, 0 movs r1, 0xA bl __divsi3 adds r5, r0, 0 cmp r5, 0 bgt @08008CEE @08008D60: movs r0, 0xFF strb r0, [r4] adds r0, r4, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end ConvertIntToDecimalString thumb_func_start ConvertUnsignedIntToDecimalString ; u8 *ConvertUnsignedIntToDecimalString(u8 *dest, u32 value, u8 mode, u8 numDigits) ConvertUnsignedIntToDecimalString: ; 8008D70 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 adds r6, r1, 0 lsls r3, 24 ldr r0, =gPowersOfTen lsrs r3, 22 subs r3, 0x4 adds r3, r0 ldr r0, [r3] movs r7, 0 cmp r2, 0x1 bne @08008D8E movs r7, 0x2 @08008D8E: cmp r2, 0x2 bne @08008D94 movs r7, 0x1 @08008D94: adds r5, r0, 0 cmp r5, 0 ble @08008E10 ldr r0, =gDigits mov r8, r0 @08008D9E: adds r0, r6, 0 adds r1, r5, 0 bl __udivsi3 lsls r0, 16 lsrs r2, r0, 16 adds r3, r2, 0 adds r0, r5, 0 muls r0, r2 subs r1, r6, r0 cmp r7, 0x1 bne @08008DD6 adds r3, r4, 0 adds r4, 0x1 cmp r2, 0x9 bhi @08008DD0 mov r6, r8 adds r0, r2, r6 ldrb r0, [r0] b @08008DD2 .pool @08008DD0: movs r0, 0xAC @08008DD2: strb r0, [r3] b @08008E00 @08008DD6: cmp r2, 0 bne @08008DDE cmp r5, 0x1 bne @08008DF6 @08008DDE: movs r7, 0x1 adds r2, r4, 0 adds r4, 0x1 cmp r3, 0x9 bhi @08008DF0 mov r6, r8 adds r0, r3, r6 ldrb r0, [r0] b @08008DF2 @08008DF0: movs r0, 0xAC @08008DF2: strb r0, [r2] b @08008E00 @08008DF6: cmp r7, 0x2 bne @08008E00 movs r0, 0x77 strb r0, [r4] adds r4, 0x1 @08008E00: adds r6, r1, 0 adds r0, r5, 0 movs r1, 0xA bl __divsi3 adds r5, r0, 0 cmp r5, 0 bgt @08008D9E @08008E10: movs r0, 0xFF strb r0, [r4] adds r0, r4, 0 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end ConvertUnsignedIntToDecimalString thumb_func_start ConvertIntToHexString ; u8 *ConvertIntToHexString(u8 *dest, s32 value, u8 mode, u8 numDigits) ConvertIntToHexString: ; 8008E20 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} sub sp, 0x4 adds r6, r0, 0 mov r8, r1 lsls r3, 24 lsrs r3, 24 movs r1, 0x1 movs r0, 0x1 cmp r1, r3 bcs @08008E46 @08008E3A: lsls r1, 4 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 cmp r0, r3 bcc @08008E3A @08008E46: movs r3, 0 cmp r2, 0x1 bne @08008E4E movs r3, 0x2 @08008E4E: cmp r2, 0x2 bne @08008E54 movs r3, 0x1 @08008E54: adds r5, r1, 0 cmp r5, 0 ble @08008ECA ldr r0, =gDigits mov r9, r0 @08008E5E: mov r0, r8 adds r1, r5, 0 str r3, [sp] bl __divsi3 adds r4, r0, 0 adds r7, r4, 0 mov r0, r8 adds r1, r5, 0 bl __modsi3 adds r1, r0, 0 ldr r3, [sp] cmp r3, 0x1 bne @08008E90 adds r2, r6, 0 adds r6, 0x1 cmp r4, 0xF bhi @08008EAA mov r7, r9 adds r0, r4, r7 ldrb r0, [r0] b @08008EAC .pool @08008E90: cmp r4, 0 bne @08008E98 cmp r5, 0x1 bne @08008EB0 @08008E98: movs r3, 0x1 adds r2, r6, 0 adds r6, 0x1 cmp r7, 0xF bhi @08008EAA mov r4, r9 adds r0, r7, r4 ldrb r0, [r0] b @08008EAC @08008EAA: movs r0, 0xAC @08008EAC: strb r0, [r2] b @08008EBA @08008EB0: cmp r3, 0x2 bne @08008EBA movs r0, 0x77 strb r0, [r6] adds r6, 0x1 @08008EBA: mov r8, r1 adds r0, r5, 0 cmp r5, 0 bge @08008EC4 adds r0, 0xF @08008EC4: asrs r5, r0, 4 cmp r5, 0 bgt @08008E5E @08008ECA: movs r0, 0xFF strb r0, [r6] adds r0, r6, 0 add sp, 0x4 pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 thumb_func_end ConvertIntToHexString thumb_func_start ExpandStringRefs ; u8 *ExpandStringRefs(u8 *dest, u8 *src) ExpandStringRefs: ; 8008EE0 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 @08008EE6: ldrb r2, [r5] adds r5, 0x1 adds r0, r2, 0 subs r0, 0xFA cmp r0, 0x5 bhi @08008FBA lsls r0, 2 ldr r1, =@08008F00 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 @08008F00: .4byte @08008FBA .4byte @08008FBA .4byte @08008F2C .4byte @08008F18 .4byte @08008FBA .4byte @08008FC0 @08008F18: ldrb r0, [r5] adds r5, 0x1 bl GetExpandedStringRef adds r1, r0, 0 adds r0, r4, 0 bl ExpandStringRefs adds r4, r0, 0 b @08008EE6 @08008F2C: strb r2, [r4] adds r4, 0x1 ldrb r2, [r5] adds r5, 0x1 strb r2, [r4] adds r4, 0x1 subs r0, r2, 0x4 cmp r0, 0x14 bhi @08008FB0 lsls r0, 2 ldr r1, =@08008F4C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 @08008F4C: .4byte @08008FA0 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008EE6 .4byte @08008FB0 .4byte @08008EE6 .4byte @08008FB0 .4byte @08008FA8 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008EE6 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008FB0 .4byte @08008EE6 .4byte @08008EE6 .4byte @08008EE6 .4byte @08008EE6 @08008FA0: ldrb r0, [r5] strb r0, [r4] adds r5, 0x1 adds r4, 0x1 @08008FA8: ldrb r0, [r5] strb r0, [r4] adds r5, 0x1 adds r4, 0x1 @08008FB0: ldrb r0, [r5] strb r0, [r4] adds r5, 0x1 adds r4, 0x1 b @08008EE6 @08008FBA: strb r2, [r4] adds r4, 0x1 b @08008EE6 @08008FC0: movs r0, 0xFF strb r0, [r4] adds r0, r4, 0 pop {r4,r5} pop {r1} bx r1 thumb_func_end ExpandStringRefs thumb_func_start sub_8008FCC ; u8 *sub_8008FCC(u8 *dest, u8 *src) sub_8008FCC: ; 8008FCC push {r4-r6,lr} sub sp, 0xC adds r5, r0, 0 adds r6, r1, 0 ldr r1, =gUnknown_082EC80C mov r0, sp movs r2, 0x4 bl memcpy add r4, sp, 0x4 ldr r1, =gUnknown_082EC810 adds r0, r4, 0 movs r2, 0x5 bl memcpy adds r0, r5, 0 mov r1, sp @08008FEE: bl CopyString adds r5, r0, 0 @08008FF4: ldrb r0, [r6] adds r6, 0x1 cmp r0, 0xFE beq @0800900C cmp r0, 0xFF bne @08009012 b @0800901E .pool @0800900C: adds r0, r5, 0 adds r1, r4, 0 b @08008FEE @08009012: strb r0, [r5] adds r5, 0x1 adds r0, 0x40 strb r0, [r5] adds r5, 0x1 b @08008FF4 @0800901E: strb r0, [r5] adds r0, r5, 0 add sp, 0xC pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_8008FCC thumb_func_start StringRef_GetPossiblyUnusedStringVar ; u8 *StringRef_GetPossiblyUnusedStringVar() StringRef_GetPossiblyUnusedStringVar: ; 800902C ldr r0, =0x020223ac bx lr .pool thumb_func_end StringRef_GetPossiblyUnusedStringVar thumb_func_start StringRef_GetPlayerName ; u8 *StringRef_GetPlayerName() StringRef_GetPlayerName: ; 8009034 ldr r0, =0x03005d90 ldr r0, [r0] bx lr .pool thumb_func_end StringRef_GetPlayerName thumb_func_start StringRef_GetStringVar1 ; u8 *StringRef_GetStringVar1() StringRef_GetStringVar1: ; 8009040 ldr r0, =0x02021cc4 bx lr .pool thumb_func_end StringRef_GetStringVar1 thumb_func_start StringRef_GetStringVar2 ; u8 *StringRef_GetStringVar2() StringRef_GetStringVar2: ; 8009048 ldr r0, =0x02021dc4 bx lr .pool thumb_func_end StringRef_GetStringVar2 thumb_func_start StringRef_GetStringVar3 ; u8 *StringRef_GetStringVar3() StringRef_GetStringVar3: ; 8009050 ldr r0, =0x02021ec4 bx lr .pool thumb_func_end StringRef_GetStringVar3 thumb_func_start StringRef_GetDummiedOutGenderDependentString ; u8 *StringRef_GetDummiedOutGenderDependentString() StringRef_GetDummiedOutGenderDependentString: ; 8009058 push {lr} ldr r0, =0x03005d90 ldr r0, [r0] ldrb r0, [r0, 0x8] cmp r0, 0 beq @08009070 ldr r0, =gUnknown_085E821A b @08009072 .pool @08009070: ldr r0, =gUnknown_085E8219 @08009072: pop {r1} bx r1 .pool thumb_func_end StringRef_GetDummiedOutGenderDependentString thumb_func_start StringRef_GetRivalName ; u8 *StringRef_GetRivalName() StringRef_GetRivalName: ; 800907C push {lr} ldr r0, =0x03005d90 ldr r0, [r0] ldrb r0, [r0, 0x8] cmp r0, 0 beq @08009094 ldr r0, =gUnknown_085E8258 b @08009096 .pool @08009094: ldr r0, =gUnknown_085E8260 @08009096: pop {r1} bx r1 .pool thumb_func_end StringRef_GetRivalName thumb_func_start StringRef_GetEmeraldString ; u8 *StringRef_GetEmeraldString() StringRef_GetEmeraldString: ; 80090A0 ldr r0, =gUnknown_085E8229 bx lr .pool thumb_func_end StringRef_GetEmeraldString thumb_func_start StringRef_GetAquaString ; u8 *StringRef_GetAquaString() StringRef_GetAquaString: ; 80090A8 ldr r0, =gUnknown_085E8231 bx lr .pool thumb_func_end StringRef_GetAquaString thumb_func_start StringRef_GetMagmaString ; u8 *StringRef_GetMagmaString() StringRef_GetMagmaString: ; 80090B0 ldr r0, =gUnknown_085E8236 bx lr .pool thumb_func_end StringRef_GetMagmaString thumb_func_start StringRef_GetArchieString ; u8 *StringRef_GetArchieString() StringRef_GetArchieString: ; 80090B8 ldr r0, =gUnknown_085E823C bx lr .pool thumb_func_end StringRef_GetArchieString thumb_func_start StringRef_GetMaxieString ; u8 *StringRef_GetMaxieString() StringRef_GetMaxieString: ; 80090C0 ldr r0, =gUnknown_085E8243 bx lr .pool thumb_func_end StringRef_GetMaxieString thumb_func_start StringRef_GetKyogreString ; u8 *StringRef_GetKyogreString() StringRef_GetKyogreString: ; 80090C8 ldr r0, =gUnknown_085E8249 bx lr .pool thumb_func_end StringRef_GetKyogreString thumb_func_start StringRef_GetGroudonString ; u8 *StringRef_GetGroudonString() StringRef_GetGroudonString: ; 80090D0 ldr r0, =gUnknown_085E8250 bx lr .pool thumb_func_end StringRef_GetGroudonString thumb_func_start GetExpandedStringRef ; u8 *GetExpandedStringRef(u8 code) GetExpandedStringRef: ; 80090D8 push {lr} cmp r0, 0xD bhi @080090F0 ldr r1, =gStringRefFunctionTable lsls r0, 2 adds r0, r1 ldr r0, [r0] bl _call_via_r0 b @080090F2 .pool @080090F0: ldr r0, =gUnknown_085E8218 @080090F2: pop {r1} bx r1 .pool thumb_func_end GetExpandedStringRef thumb_func_start RepeatChar ; u8 *RepeatChar(u8 *dest, u8 c, u16 n) RepeatChar: ; 80090FC push {lr} adds r3, r0, 0 lsls r1, 24 lsrs r1, 24 lsls r2, 16 lsrs r2, 16 movs r0, 0 cmp r0, r2 bcs @0800911C @0800910E: strb r1, [r3] adds r3, 0x1 adds r0, 0x1 lsls r0, 16 lsrs r0, 16 cmp r0, r2 bcc @0800910E @0800911C: movs r0, 0xFF strb r0, [r3] adds r0, r3, 0 pop {r1} bx r1 thumb_func_end RepeatChar thumb_func_start CopyStringPadded ; u8 *CopyStringPadded(u8 *dest, u8 *src, u8 c, u16 n) CopyStringPadded: ; 8009128 push {r4,r5,lr} adds r4, r0, 0 adds r5, r1, 0 lsls r2, 24 lsrs r2, 24 lsls r3, 16 lsrs r3, 16 b @08009148 @08009138: strb r1, [r4] adds r5, 0x1 adds r4, 0x1 cmp r3, 0 beq @08009148 subs r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 @08009148: ldrb r1, [r5] adds r0, r1, 0 cmp r0, 0xFF bne @08009138 subs r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 ldr r0, =0x0000ffff cmp r3, r0 beq @0800916C adds r1, r0, 0 @0800915E: strb r2, [r4] adds r4, 0x1 subs r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r1 bne @0800915E @0800916C: movs r0, 0xFF strb r0, [r4] adds r0, r4, 0 pop {r4,r5} pop {r1} bx r1 .pool thumb_func_end CopyStringPadded thumb_func_start RepeatStringTerminator ; u8 *RepeatStringTerminator(u8 *dest, u16 n) RepeatStringTerminator: ; 800917C push {lr} lsls r2, r1, 16 lsrs r2, 16 movs r1, 0xFF bl RepeatChar pop {r1} bx r1 thumb_func_end RepeatStringTerminator thumb_func_start CopyString_LimitN_Multibyte ; u8 *CopyString_LimitN_Multibyte(u8 *dest, u8 *src, u32 n) CopyString_LimitN_Multibyte: ; 800918C push {r4,r5,lr} adds r4, r0, 0 adds r3, r1, 0 subs r2, 0x1 movs r5, 0x1 negs r5, r5 b @080091B2 @0800919A: strb r0, [r4] adds r3, 0x1 adds r4, 0x1 subs r0, r3, 0x1 ldrb r0, [r0] cmp r0, 0xF9 bne @080091B0 ldrb r0, [r3] strb r0, [r4] adds r3, 0x1 adds r4, 0x1 @080091B0: subs r2, 0x1 @080091B2: cmp r2, r5 beq @080091BE ldrb r0, [r3] adds r1, r0, 0 cmp r1, 0xFF bne @0800919A @080091BE: movs r0, 0xFF strb r0, [r4] adds r0, r4, 0 pop {r4,r5} pop {r1} bx r1 thumb_func_end CopyString_LimitN_Multibyte thumb_func_start GetStringLength_Multibyte ; u32 GetStringLength_Multibyte(u8 *s) GetStringLength_Multibyte: ; 80091CC push {lr} adds r2, r0, 0 movs r3, 0 b @080091DE @080091D4: cmp r1, 0xF9 bne @080091DA adds r2, 0x1 @080091DA: adds r2, 0x1 adds r3, 0x1 @080091DE: ldrb r1, [r2] adds r0, r1, 0 cmp r0, 0xFF bne @080091D4 adds r0, r3, 0 pop {r1} bx r1 thumb_func_end GetStringLength_Multibyte thumb_func_start WriteColorChangeControlCode ; u8 *WriteColorChangeControlCode(u8 *dest, u8 colorType, u8 color) WriteColorChangeControlCode: ; 80091EC push {lr} adds r3, r0, 0 lsls r2, 24 lsrs r2, 24 movs r0, 0xFC strb r0, [r3] adds r3, 0x1 cmp r1, 0x1 beq @0800920E cmp r1, 0x1 bcc @08009208 cmp r1, 0x2 beq @08009214 b @08009218 @08009208: movs r0, 0x1 strb r0, [r3] b @08009216 @0800920E: movs r0, 0x3 strb r0, [r3] b @08009216 @08009214: strb r1, [r3] @08009216: adds r3, 0x1 @08009218: strb r2, [r3] adds r3, 0x1 movs r0, 0xFF strb r0, [r3] adds r0, r3, 0 pop {r1} bx r1 thumb_func_end WriteColorChangeControlCode thumb_func_start sub_8009228 ; BOOL sub_8009228(u8 *s) sub_8009228: ; 8009228 push {lr} adds r2, r0, 0 b @0800923E @0800922E: adds r0, r1, 0 cmp r0, 0xA0 bhi @0800923C cmp r0, 0 beq @0800923C movs r0, 0x1 b @08009248 @0800923C: adds r2, 0x1 @0800923E: ldrb r1, [r2] adds r0, r1, 0 cmp r0, 0xFF bne @0800922E movs r0, 0 @08009248: pop {r1} bx r1 thumb_func_end sub_8009228 thumb_func_start sub_800924C ; BOOL sub_800924C(u8 *s, u32 n) sub_800924C: ; 800924C push {r4,lr} adds r3, r0, 0 adds r4, r1, 0 movs r1, 0 b @08009268 @08009256: adds r0, r2, 0 cmp r0, 0xA0 bhi @08009264 cmp r0, 0 beq @08009264 movs r0, 0x1 b @08009276 @08009264: adds r3, 0x1 adds r1, 0x1 @08009268: ldrb r2, [r3] adds r0, r2, 0 cmp r0, 0xFF beq @08009274 cmp r1, r4 blt @08009256 @08009274: movs r0, 0 @08009276: pop {r4} pop {r1} bx r1 thumb_func_end sub_800924C thumb_func_start GetExtendedControlCodeLength ; u8 GetExtendedControlCodeLength(u8 code) GetExtendedControlCodeLength: ; 800927C push {lr} lsls r0, 24 lsrs r1, r0, 24 movs r0, 0 cmp r1, 0x18 bhi @0800928E ldr r0, =gExtendedControlCodeLengths adds r0, r1, r0 ldrb r0, [r0] @0800928E: pop {r1} bx r1 .pool thumb_func_end GetExtendedControlCodeLength thumb_func_start SkipExtendedControlCode ; u8 *SkipExtendedControlCode(u8 *s) SkipExtendedControlCode: ; 8009298 push {r4,lr} adds r4, r0, 0 b @080092AC @0800929E: adds r4, 0x1 ldrb r0, [r4] bl GetExtendedControlCodeLength lsls r0, 24 lsrs r0, 24 adds r4, r0 @080092AC: ldrb r0, [r4] cmp r0, 0xFC beq @0800929E adds r0, r4, 0 pop {r4} pop {r1} bx r1 thumb_func_end SkipExtendedControlCode thumb_func_start CompareStringWithoutExtendedControlCodes ; u8 CompareStringWithoutExtendedControlCodes(u8 *s1, u8 *s2) CompareStringWithoutExtendedControlCodes: ; 80092BC push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 movs r6, 0 b @080092DE @080092C6: cmp r1, r0 bcs @080092D4 movs r6, 0x1 negs r6, r6 cmp r0, 0xFF bne @080092D4 movs r6, 0x1 @080092D4: ldrb r0, [r4] cmp r0, 0xFF beq @080092FE adds r4, 0x1 adds r5, 0x1 @080092DE: adds r0, r4, 0 bl SkipExtendedControlCode adds r4, r0, 0 adds r0, r5, 0 bl SkipExtendedControlCode adds r5, r0, 0 ldrb r1, [r4] ldrb r0, [r5] cmp r1, r0 bls @080092C6 movs r6, 0x1 cmp r1, 0xFF bne @080092FE subs r6, 0x2 @080092FE: adds r0, r6, 0 pop {r4-r6} pop {r1} bx r1 thumb_func_end CompareStringWithoutExtendedControlCodes thumb_func_start StopMusicWhileStringIsPrinted ; void StopMusicWhileStringIsPrinted(u8 *s, BOOL stopMusic) StopMusicWhileStringIsPrinted: ; 8009308 push {r4,lr} adds r4, r0, 0 lsls r1, 24 lsrs r1, 24 cmp r1, 0x1 bne @08009368 bl StripExtendedControlCodes adds r0, r4, 0 bl GetStringLength lsls r0, 24 lsrs r2, r0, 24 adds r1, r2, 0 adds r0, r1, 0x1 lsls r0, 24 lsrs r2, r0, 24 adds r3, r2, 0 adds r1, r4, r1 movs r0, 0xFC strb r0, [r1] adds r0, r3, 0x1 lsls r0, 24 lsrs r2, r0, 24 adds r3, r4, r3 movs r0, 0x16 strb r0, [r3] adds r0, r2, 0x1 lsls r0, 24 adds r2, r4, r2 movs r1, 0xFF strb r1, [r2] movs r1, 0xFF lsls r1, 24 adds r0, r1 b @0800935A @08009350: adds r1, r2, r4 ldrb r0, [r1] strb r0, [r1, 0x2] subs r0, r2, 0x1 lsls r0, 24 @0800935A: lsrs r2, r0, 24 cmp r2, 0xFF bne @08009350 movs r0, 0xFC strb r0, [r4] movs r0, 0x15 strb r0, [r4, 0x1] @08009368: pop {r4} pop {r0} bx r0 thumb_func_end StopMusicWhileStringIsPrinted thumb_func_start StripExtendedControlCodes ; void StripExtendedControlCodes(u8 *s) StripExtendedControlCodes: ; 8009370 push {r4-r6,lr} adds r5, r0, 0 movs r4, 0 movs r6, 0 ldrb r0, [r5] cmp r0, 0xFF beq @080093C0 @0800937E: adds r0, r5, r4 ldrb r0, [r0] cmp r0, 0xFC bne @080093A0 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 adds r0, r5, r4 ldrb r0, [r0] bl GetExtendedControlCodeLength lsls r0, 24 lsrs r0, 24 adds r0, r4, r0 lsls r0, 16 lsrs r4, r0, 16 b @080093B8 @080093A0: adds r2, r6, 0 adds r0, r2, 0x1 lsls r0, 16 lsrs r6, r0, 16 adds r2, r5, r2 adds r1, r4, 0 adds r0, r1, 0x1 lsls r0, 16 lsrs r4, r0, 16 adds r1, r5, r1 ldrb r0, [r1] strb r0, [r2] @080093B8: adds r0, r5, r4 ldrb r0, [r0] cmp r0, 0xFF bne @0800937E @080093C0: adds r1, r5, r6 movs r0, 0xFF strb r0, [r1] pop {r4-r6} pop {r0} bx r0 thumb_func_end StripExtendedControlCodes