Merge pull request #88 from ultima-soul/pokedex_2

Port/Decompile pokedex.c and Dump Pokedex Entries and Text to C
This commit is contained in:
PikalaxALT
2019-08-24 13:14:50 -04:00
committed by GitHub
20 changed files with 7938 additions and 334 deletions
+1 -1
View File
@@ -30322,7 +30322,7 @@ _0802C8E8:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl sub_8088E38
bl GetPokedexHeightWeight
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
+2 -2
View File
@@ -51,7 +51,7 @@ start_menu_is_selected_item_valid: @ 80BD754
cmp r0, 0x15
bne _080BD76C
movs r0, 0
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
lsrs r0, 16
b _080BD782
@@ -1054,7 +1054,7 @@ sub_80BDE88: @ 80BDE88
ldr r1, [r4]
movs r0, 0
strh r0, [r1]
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
cmp r0, 0
beq _080BDEB0
+2 -2
View File
@@ -1504,13 +1504,13 @@ sub_800CF3C: @ 800CF3C
cmp r0, 0
beq _0800CF64
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
b _0800CF6A
.align 2, 0
_0800CF60: .4byte 0x00000829
_0800CF64:
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
_0800CF6A:
lsls r0, 16
lsrs r6, r0, 16
-282
View File
@@ -1,282 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_8088E20
sub_8088E20: @ 8088E20
adds r1, r0, 0
lsls r1, 16
lsrs r1, 16
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r1, _08088E34 @ =gUnknown_844E850
adds r0, r1
bx lr
.align 2, 0
_08088E34: .4byte gUnknown_844E850
thumb_func_end sub_8088E20
thumb_func_start sub_8088E38
sub_8088E38: @ 8088E38
push {lr}
lsls r0, 16
lsrs r2, r0, 16
lsls r1, 24
lsrs r1, 24
cmp r1, 0
beq _08088E4E
cmp r1, 0x1
beq _08088E60
movs r0, 0x1
b _08088E6C
_08088E4E:
ldr r0, _08088E5C @ =gUnknown_844E850
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0xC]
b _08088E6C
.align 2, 0
_08088E5C: .4byte gUnknown_844E850
_08088E60:
ldr r0, _08088E70 @ =gUnknown_844E850
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r0
ldrh r0, [r1, 0xE]
_08088E6C:
pop {r1}
bx r1
.align 2, 0
_08088E70: .4byte gUnknown_844E850
thumb_func_end sub_8088E38
thumb_func_start GetSetPokedexFlag
GetSetPokedexFlag: @ 8088E74
push {lr}
lsls r0, 16
lsrs r0, 16
lsls r1, 24
lsrs r1, 24
movs r2, 0
bl sub_8104AB0
lsls r0, 24
asrs r0, 24
pop {r1}
bx r1
thumb_func_end GetSetPokedexFlag
thumb_func_start pokedex_count
pokedex_count: @ 8088E8C
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r0, 0
ldr r7, _08088EA4 @ =0x00000181
_08088E98:
cmp r6, 0
beq _08088EA8
cmp r6, 0x1
beq _08088EB2
adds r4, r0, 0x1
b _08088ECA
.align 2, 0
_08088EA4: .4byte 0x00000181
_08088EA8:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0
b _08088EBA
_08088EB2:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0x1
_08088EBA:
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088ECA
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_08088ECA:
lsls r0, r4, 16
lsrs r0, 16
cmp r0, r7
bls _08088E98
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end pokedex_count
thumb_func_start sub_8088EDC
sub_8088EDC: @ 8088EDC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r0, 0
_08088EE6:
cmp r6, 0
beq _08088EF2
cmp r6, 0x1
beq _08088EFC
adds r4, r0, 0x1
b _08088F14
_08088EF2:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0
b _08088F04
_08088EFC:
adds r4, r0, 0x1
lsls r0, r4, 16
lsrs r0, 16
movs r1, 0x1
_08088F04:
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088F14
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
_08088F14:
lsls r0, r4, 16
lsrs r0, 16
cmp r0, 0x96
bls _08088EE6
adds r0, r5, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8088EDC
thumb_func_start sub_8088F24
sub_8088F24: @ 8088F24
push {r4,lr}
movs r0, 0
_08088F28:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl HoennToNationalOrder
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F48
movs r0, 0
b _08088F50
_08088F48:
adds r0, r4, 0
cmp r0, 0xC7
bls _08088F28
movs r0, 0x1
_08088F50:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8088F24
thumb_func_start sub_8088F58
sub_8088F58: @ 8088F58
push {r4,lr}
movs r0, 0
_08088F5C:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088F74
movs r0, 0
b _08088F7C
_08088F74:
adds r0, r4, 0
cmp r0, 0x95
bls _08088F5C
movs r0, 0x1
_08088F7C:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8088F58
thumb_func_start HasAllKantoMons
HasAllKantoMons: @ 8088F84
push {r4,r5,lr}
movs r0, 0
_08088F88:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
adds r0, r4, 0
cmp r0, 0x95
bls _08088F88
movs r0, 0x97
_08088FA4:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _08088FD6
adds r0, r4, 0
cmp r0, 0xF7
bls _08088FA4
movs r0, 0xFB
ldr r5, _08088FDC @ =0x0000017f
_08088FC2:
adds r0, 0x1
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
bne _08088FE0
_08088FD6:
movs r0, 0
b _08088FE8
.align 2, 0
_08088FDC: .4byte 0x0000017f
_08088FE0:
adds r0, r4, 0
cmp r0, r5
bls _08088FC2
movs r0, 0x1
_08088FE8:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end HasAllKantoMons
.align 2, 0 @ Don't pad with nop.
+10 -10
View File
@@ -6230,7 +6230,7 @@ sub_8105800: @ 8105800
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r2, _08105860 @ =gUnknown_844E850
ldr r2, _08105860 @ =gPokedexEntries
adds r5, r1, r2
movs r4, 0
movs r1, 0x1
@@ -6260,7 +6260,7 @@ _08105840:
bls _08105840
b _08105878
.align 2, 0
_08105860: .4byte gUnknown_844E850
_08105860: .4byte gPokedexEntries
_08105864:
movs r1, 0xAC
_08105866:
@@ -6331,7 +6331,7 @@ sub_81058C4: @ 81058C4
mov r8, r3
adds r0, r1, 0
bl SpeciesToNationalPokedexNum
ldr r2, _08105974 @ =gUnknown_844E850
ldr r2, _08105974 @ =gPokedexEntries
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
@@ -6395,7 +6395,7 @@ _0810593A:
strb r0, [r1]
b _08105998
.align 2, 0
_08105974: .4byte gUnknown_844E850
_08105974: .4byte gPokedexEntries
_08105978: .4byte gUnknown_8415F98
_0810597C: .4byte 0x00002710
_08105980:
@@ -6514,7 +6514,7 @@ sub_8105A3C: @ 8105A3C
mov r9, r3
adds r0, r1, 0
bl SpeciesToNationalPokedexNum
ldr r2, _08105ACC @ =gUnknown_844E850
ldr r2, _08105ACC @ =gPokedexEntries
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
@@ -6565,7 +6565,7 @@ _08105AAC:
strb r5, [r4]
b _08105ADC
.align 2, 0
_08105ACC: .4byte gUnknown_844E850
_08105ACC: .4byte gPokedexEntries
_08105AD0: .4byte 0x000186a0
_08105AD4: .4byte 0x000011b8
_08105AD8:
@@ -6825,7 +6825,7 @@ sub_8105CB0: @ 8105CB0
lsls r0, 24
cmp r0, 0
beq _08105D5C
ldr r1, _08105D44 @ =gUnknown_844E850
ldr r1, _08105D44 @ =gPokedexEntries
lsls r0, r4, 3
adds r0, r4
lsls r0, 2
@@ -6876,7 +6876,7 @@ sub_8105CB0: @ 8105CB0
lsrs r5, r0, 24
b _08105D4A
.align 2, 0
_08105D44: .4byte gUnknown_844E850
_08105D44: .4byte gPokedexEntries
_08105D48:
movs r5, 0
_08105D4A:
@@ -7874,7 +7874,7 @@ _08106534:
adds r0, r1
lsls r0, 2
add r0, r10
ldr r1, _081066C8 @ =gUnknown_844E850
ldr r1, _081066C8 @ =gPokedexEntries
ldr r2, [sp, 0x18]
lsls r4, r2, 3
adds r4, r2
@@ -7979,7 +7979,7 @@ _081066B8: .4byte gUnknown_203ACF0
_081066BC: .4byte gUnknown_8452368
_081066C0: .4byte 0x0000ffff
_081066C4: .4byte gSprites
_081066C8: .4byte gUnknown_844E850
_081066C8: .4byte gPokedexEntries
_081066CC: .4byte gSaveBlock2Ptr
_081066D0:
ldr r0, [r7]
+1 -1
View File
@@ -128,7 +128,7 @@ GetMonSize: @ 80A0770
lsls r0, 16
lsrs r0, 16
movs r1, 0
bl sub_8088E38
bl GetPokedexHeightWeight
lsls r0, 16
lsrs r7, r0, 16
adds r0, r6, 0
+2 -2
View File
@@ -59,11 +59,11 @@ _080F8034:
cmp r0, 0
beq _080F8044
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
b _080F804A
_080F8044:
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
_080F804A:
adds r1, r0, 0
lsls r1, 16
+1 -1
View File
@@ -820,7 +820,7 @@ sub_806F3CC: @ 806F3CC
cmp r1, r0
bne _0806F408
movs r0, 0
bl pokedex_count
bl GetNationalPokedexCount
lsls r0, 16
cmp r0, 0
bne _0806F408
+7 -7
View File
@@ -973,7 +973,7 @@ _080897EE:
ldr r0, _08089890 @ =0x00000829
bl FlagGet
strb r0, [r5, 0x2]
bl sub_8088F24
bl HasAllHoennMons
strb r0, [r5, 0x3]
bl sub_808A0E0
strh r0, [r5, 0xC]
@@ -1062,7 +1062,7 @@ _080898BA:
mov r0, r8
strb r0, [r5, 0x1]
_080898BE:
bl sub_8088F58
bl HasAllKantoMons
lsls r0, 16
cmp r0, 0
beq _080898CE
@@ -1070,7 +1070,7 @@ _080898BE:
adds r0, 0x1
strb r0, [r5, 0x1]
_080898CE:
bl HasAllKantoMons
bl HasAllMons
lsls r0, 16
cmp r0, 0
beq _080898DE
@@ -1115,9 +1115,9 @@ _08089918:
movs r0, 0x1
strb r0, [r5, 0x1]
_0808991C:
bl sub_8088F58
strb r0, [r5, 0x3]
bl HasAllKantoMons
strb r0, [r5, 0x3]
bl HasAllMons
adds r6, r5, 0
adds r6, 0x4D
strb r0, [r6]
@@ -2043,11 +2043,11 @@ sub_808A0E0: @ 808A0E0
cmp r0, 0
bne _0808A0F2
movs r0, 0x1
bl sub_8088EDC
bl GetKantoPokedexCount
b _0808A0F8
_0808A0F2:
movs r0, 0x1
bl pokedex_count
bl GetNationalPokedexCount
_0808A0F8:
lsls r0, 16
lsrs r0, 16
+2 -3
View File
@@ -631,10 +631,9 @@ gUnknown_84445FA:: @ 84445FA
.incbin "baserom.gba", 0x4445FA, 0x304
gUnknown_84448FE:: @ 84448FE
.incbin "baserom.gba", 0x4448FE, 0x9F52
.incbin "baserom.gba", 0x4448FE, 0x336
gUnknown_844E850:: @ 844E850
.incbin "baserom.gba", 0x44E850, 0x366C
.section .rodata.8451EBC
gUnknown_8451EBC:: @ 8451EBC
.incbin "baserom.gba", 0x451EBC, 0x10
@@ -16,7 +16,7 @@ CeladonCity_Condominiums_3F_EventScript_16C3ED:: @ 816C3ED
CeladonCity_Condominiums_3F_EventScript_16C3F6:: @ 816C3F6
lock
faceplayer
specialvar VAR_RESULT, sub_8088F58
specialvar VAR_RESULT, HasAllKantoMons
compare_var_to_value VAR_RESULT, 1
goto_if_eq EventScript_16C412
msgbox gUnknown_8196356
+2 -2
View File
@@ -344,7 +344,7 @@ gSpecials:: @ 815FD60
def_special sub_807F0B0
def_special nullsub_75
def_special nullsub_75
def_special sub_8088F58
def_special HasAllKantoMons
def_special sub_80CAD7C
def_special nullsub_75
def_special sub_80E759C
@@ -441,7 +441,7 @@ gSpecials:: @ 815FD60
def_special sub_8147594
def_special sub_80CD034
def_special sub_815D834
def_special HasAllKantoMons
def_special HasAllMons
def_special sub_80CD074
def_special sub_80CD098
def_special sub_811B15C
+31 -10
View File
@@ -1,15 +1,15 @@
#ifndef GUARD_POKEDEX_H
#define GUARD_POKEDEX_H
#include "global.h"
#define KANTO_DEX_COUNT 151
#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
void ResetPokedex(void);
void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetKantoPokedexCount(u8);
bool16 HasAllKantoMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
enum
{
DEX_MODE_KANTO,
DEX_MODE_NATIONAL
};
enum
{
@@ -19,9 +19,30 @@ enum
FLAG_SET_CAUGHT
};
struct PokedexEntry
{
/*0x00*/ u8 categoryName[12];
/*0x0C*/ u16 height; //in decimeters
/*0x0E*/ u16 weight; //in hectograms
/*0x10*/ const u8 *description;
/*0x14*/ const u8 *unusedDescription;
/*0x18*/ u16 unused;
/*0x1A*/ u16 pokemonScale;
/*0x1C*/ u16 pokemonOffset;
/*0x1E*/ u16 trainerScale;
/*0x20*/ u16 trainerOffset;
}; /*size = 0x24*/
void ResetPokedex(void);
void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetKantoPokedexCount(u8);
bool16 HasAllMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 pokedex_count(u8);
u16 GetNationalPokedexCount(u8);
u16 sub_80C0844(u8);
u16 sub_8088EDC(u8);
u16 GetKantoPokedexCount(u8);
#endif // GUARD_POKEDEX_H
+5 -3
View File
@@ -128,7 +128,7 @@ SECTIONS {
asm/field_effect.o(.text);
src/scanline_effect.o(.text);
asm/option_menu.o(.text);
asm/pokedex.o(.text);
src/pokedex.o(.text);
asm/trainer_card.o(.text);
asm/pokemon_storage_system.o(.text);
asm/pokemon_icon.o(.text);
@@ -422,13 +422,15 @@ SECTIONS {
data/data_83F5738.o(.rodata.83FB134);
src/save.o(.rodata);
data/data_83FECCC.o(.rodata);
src/intro.o(.rodata);
src/intro.o(.rodata);
data/data_83FECCC.o(.rodata.battle_anim_special);
src/diploma.o(.rodata);
data/strings.o(.rodata);
data/data_83FECCC.o(.rodata.841EE44);
src/new_menu_helpers.o(.rodata);
data/data_83FECCC.o(.rodata.841F4B4);
src/pokedex.o(.rodata);
data/data_83FECCC.o(.rodata.8451EBC);
src/list_menu.o(.rodata);
data/data_83FECCC.o(.rodata.8452CF4);
src/save_location.o(.rodata);
@@ -547,7 +549,7 @@ SECTIONS {
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
. = 0x08D00000;
. = 0x08D00000;
gfx_data :
ALIGN(4)
{
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -132,7 +132,7 @@ static void Task_DiplomaInit(u8 taskId)
CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0);
break;
case 4:
if (HasAllKantoMons())
if (HasAllMons())
{
SetGpuReg(REG_OFFSET_BG1HOFS, 0x100);
}
@@ -265,7 +265,7 @@ static void DiplomaPrintText(void)
u32 width;
DynamicPlaceholderTextUtil_Reset();
DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
if (HasAllKantoMons())
if (HasAllMons())
{
DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
}
+1 -1
View File
@@ -1247,7 +1247,7 @@ static bool8 sub_812B780(u8 id)
return FlagGet(FLAG_0x828);
case 4:
case 34:
if (sub_8088EDC(1) > 1)
if (GetKantoPokedexCount(1) > 1)
return TRUE;
return FALSE;
case 15:
+123
View File
@@ -0,0 +1,123 @@
#include "global.h"
#include "pokedex.h"
#include "constants/species.h"
extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
#include "data/pokemon/pokedex_text.h"
#include "data/pokemon/pokedex_entries.h"
const u8 *sub_8088E20(u16 dexNum)
{
return gPokedexEntries[dexNum].categoryName;
}
u16 GetPokedexHeightWeight(u16 dexNum, u8 data)
{
switch (data)
{
case 0: // height
return gPokedexEntries[dexNum].height;
case 1: // weight
return gPokedexEntries[dexNum].weight;
default:
return 1;
}
}
s8 GetSetPokedexFlag(u16 nationalDexNo, u8 caseID)
{
return sub_8104AB0(nationalDexNo, caseID, 0);
}
u16 GetNationalPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
for (i = 0; i < NATIONAL_DEX_COUNT; i++)
{
switch (caseID)
{
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
}
}
return count;
}
u16 GetKantoPokedexCount(u8 caseID)
{
u16 count = 0;
u16 i;
for (i = 0; i < KANTO_DEX_COUNT; i++)
{
switch (caseID)
{
case FLAG_GET_SEEN:
if (GetSetPokedexFlag(i + 1, FLAG_GET_SEEN))
count++;
break;
case FLAG_GET_CAUGHT:
if (GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
count++;
break;
}
}
return count;
}
bool16 HasAllHoennMons(void)
{
u16 i;
for (i = 0; i < HOENN_DEX_COUNT - 2; i++)
{
if (!GetSetPokedexFlag(HoennToNationalOrder(i + 1), FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
}
bool8 HasAllKantoMons(void)
{
u16 i;
for (i = 0; i < KANTO_DEX_COUNT - 1; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
}
bool16 HasAllMons(void)
{
u16 i;
for (i = 0; i < NATIONAL_DEX_MEWTWO; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
}
for (i = NATIONAL_DEX_MEW; i < NATIONAL_DEX_TYRANITAR; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
}
for (i = NATIONAL_DEX_CELEBI; i < NATIONAL_DEX_RAYQUAZA; i++)
{
if (!GetSetPokedexFlag(i + 1, FLAG_GET_CAUGHT))
return FALSE;
}
return TRUE;
}
+4 -4
View File
@@ -25,13 +25,13 @@ u16 Special_GetPokedexCount(void)
{
if (gSpecialVar_0x8004 == 0)
{
gSpecialVar_0x8005 = sub_8088EDC(0);
gSpecialVar_0x8006 = sub_8088EDC(1);
gSpecialVar_0x8005 = GetKantoPokedexCount(0);
gSpecialVar_0x8006 = GetKantoPokedexCount(1);
}
else
{
gSpecialVar_0x8005 = pokedex_count(0);
gSpecialVar_0x8006 = pokedex_count(1);
gSpecialVar_0x8005 = GetNationalPokedexCount(0);
gSpecialVar_0x8006 = GetNationalPokedexCount(1);
}
return sub_806E25C();
}