killed by large function
This commit is contained in:
+18
-137
@@ -5,127 +5,8 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_815B1DC
|
thumb_func_start TeachyTvOptionListController
|
||||||
sub_815B1DC: @ 815B1DC
|
TeachyTvOptionListController: @ 815B2C0
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0x10
|
|
||||||
adds r4, r0, 0
|
|
||||||
ldr r2, _0815B21C @ =gTextFlags
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, 0x5
|
|
||||||
negs r0, r0
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
bl GetTextSpeedSetting
|
|
||||||
adds r3, r0, 0
|
|
||||||
lsls r3, 24
|
|
||||||
lsrs r3, 24
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [sp]
|
|
||||||
movs r0, 0x1
|
|
||||||
str r0, [sp, 0x4]
|
|
||||||
movs r0, 0xC
|
|
||||||
str r0, [sp, 0x8]
|
|
||||||
movs r0, 0x3
|
|
||||||
str r0, [sp, 0xC]
|
|
||||||
movs r0, 0
|
|
||||||
movs r1, 0x4
|
|
||||||
adds r2, r4, 0
|
|
||||||
bl AddTextPrinterParameterized2
|
|
||||||
add sp, 0x10
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0815B21C: .4byte gTextFlags
|
|
||||||
thumb_func_end sub_815B1DC
|
|
||||||
|
|
||||||
thumb_func_start sub_815B220
|
|
||||||
sub_815B220: @ 815B220
|
|
||||||
push {r4,lr}
|
|
||||||
ldr r4, _0815B238 @ =gUnknown_203F450
|
|
||||||
ldr r0, [r4]
|
|
||||||
bl Free
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r4]
|
|
||||||
bl FreeAllWindowBuffers
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0815B238: .4byte gUnknown_203F450
|
|
||||||
thumb_func_end sub_815B220
|
|
||||||
|
|
||||||
thumb_func_start sub_815B23C
|
|
||||||
sub_815B23C: @ 815B23C
|
|
||||||
push {r4,lr}
|
|
||||||
sub sp, 0x4
|
|
||||||
adds r4, r0, 0
|
|
||||||
lsls r4, 24
|
|
||||||
lsrs r4, 24
|
|
||||||
movs r0, 0x1
|
|
||||||
negs r0, r0
|
|
||||||
movs r1, 0
|
|
||||||
str r1, [sp]
|
|
||||||
movs r2, 0
|
|
||||||
movs r3, 0x10
|
|
||||||
bl BeginNormalPaletteFade
|
|
||||||
ldr r1, _0815B26C @ =gTasks
|
|
||||||
lsls r0, r4, 2
|
|
||||||
adds r0, r4
|
|
||||||
lsls r0, 3
|
|
||||||
adds r0, r1
|
|
||||||
ldr r1, _0815B270 @ =sub_815B274
|
|
||||||
str r1, [r0]
|
|
||||||
add sp, 0x4
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0815B26C: .4byte gTasks
|
|
||||||
_0815B270: .4byte sub_815B274
|
|
||||||
thumb_func_end sub_815B23C
|
|
||||||
|
|
||||||
thumb_func_start sub_815B274
|
|
||||||
sub_815B274: @ 815B274
|
|
||||||
push {r4,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r4, r0, 24
|
|
||||||
ldr r0, _0815B298 @ =gPaletteFade
|
|
||||||
ldrb r1, [r0, 0x7]
|
|
||||||
movs r0, 0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0815B2B6
|
|
||||||
ldr r0, _0815B29C @ =gUnknown_203F450
|
|
||||||
ldr r0, [r0]
|
|
||||||
ldr r0, [r0]
|
|
||||||
cmp r0, 0
|
|
||||||
beq _0815B2A0
|
|
||||||
bl SetMainCallback2
|
|
||||||
b _0815B2AC
|
|
||||||
.align 2, 0
|
|
||||||
_0815B298: .4byte gPaletteFade
|
|
||||||
_0815B29C: .4byte gUnknown_203F450
|
|
||||||
_0815B2A0:
|
|
||||||
bl sub_8055DC4
|
|
||||||
ldr r0, _0815B2BC @ =gTeachyTV_StaticResources
|
|
||||||
ldr r0, [r0]
|
|
||||||
bl SetMainCallback2
|
|
||||||
_0815B2AC:
|
|
||||||
bl sub_815B220
|
|
||||||
adds r0, r4, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_0815B2B6:
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0815B2BC: .4byte gTeachyTV_StaticResources
|
|
||||||
thumb_func_end sub_815B274
|
|
||||||
|
|
||||||
thumb_func_start sub_815B2C0
|
|
||||||
sub_815B2C0: @ 815B2C0
|
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r7, r0, 24
|
lsrs r7, r0, 24
|
||||||
@@ -179,7 +60,7 @@ _0815B330:
|
|||||||
movs r0, 0x5
|
movs r0, 0x5
|
||||||
bl PlaySE
|
bl PlaySE
|
||||||
adds r0, r7, 0
|
adds r0, r7, 0
|
||||||
bl sub_815B23C
|
bl TeachyTvQuitBeginFade
|
||||||
b _0815B37A
|
b _0815B37A
|
||||||
_0815B33E:
|
_0815B33E:
|
||||||
movs r0, 0x5
|
movs r0, 0x5
|
||||||
@@ -204,7 +85,7 @@ _0815B33E:
|
|||||||
adds r0, r7
|
adds r0, r7
|
||||||
lsls r0, 3
|
lsls r0, 3
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldr r1, _0815B388 @ =sub_815B4EC
|
ldr r1, _0815B388 @ =TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
_0815B37A:
|
_0815B37A:
|
||||||
pop {r4-r7}
|
pop {r4-r7}
|
||||||
@@ -213,8 +94,8 @@ _0815B37A:
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0815B380: .4byte gTeachyTV_StaticResources
|
_0815B380: .4byte gTeachyTV_StaticResources
|
||||||
_0815B384: .4byte gTasks
|
_0815B384: .4byte gTasks
|
||||||
_0815B388: .4byte sub_815B4EC
|
_0815B388: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
thumb_func_end sub_815B2C0
|
thumb_func_end TeachyTvOptionListController
|
||||||
|
|
||||||
thumb_func_start sub_815B38C
|
thumb_func_start sub_815B38C
|
||||||
sub_815B38C: @ 815B38C
|
sub_815B38C: @ 815B38C
|
||||||
@@ -355,7 +236,7 @@ _0815B48C:
|
|||||||
movs r1, 0
|
movs r1, 0
|
||||||
bl StartSpriteAnim
|
bl StartSpriteAnim
|
||||||
ldr r0, _0815B4B0 @ =gUnknown_841B83D
|
ldr r0, _0815B4B0 @ =gUnknown_841B83D
|
||||||
bl sub_815B1DC
|
bl TeachyTvInitTextPrinter
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
strh r0, [r4, 0x4]
|
strh r0, [r4, 0x4]
|
||||||
ldrh r0, [r4, 0x6]
|
ldrh r0, [r4, 0x6]
|
||||||
@@ -399,8 +280,8 @@ _0815B4E2:
|
|||||||
_0815B4E8: .4byte gTasks+0x8
|
_0815B4E8: .4byte gTasks+0x8
|
||||||
thumb_func_end sub_815B4C0
|
thumb_func_end sub_815B4C0
|
||||||
|
|
||||||
thumb_func_start sub_815B4EC
|
thumb_func_start TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
sub_815B4EC: @ 815B4EC
|
TeachyTvRenderMsgAndSwitchClusterFuncs: @ 815B4EC
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
lsls r0, 24
|
lsls r0, 24
|
||||||
lsrs r2, r0, 24
|
lsrs r2, r0, 24
|
||||||
@@ -469,7 +350,7 @@ _0815B578:
|
|||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0815B580: .4byte gUnknown_8479548
|
_0815B580: .4byte gUnknown_8479548
|
||||||
_0815B584: .4byte gTeachyTV_StaticResources
|
_0815B584: .4byte gTeachyTV_StaticResources
|
||||||
thumb_func_end sub_815B4EC
|
thumb_func_end TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
|
|
||||||
thumb_func_start sub_815B588
|
thumb_func_start sub_815B588
|
||||||
sub_815B588: @ 815B588
|
sub_815B588: @ 815B588
|
||||||
@@ -487,7 +368,7 @@ sub_815B588: @ 815B588
|
|||||||
lsls r0, 2
|
lsls r0, 2
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
bl sub_815B1DC
|
bl TeachyTvInitTextPrinter
|
||||||
ldrh r0, [r4, 0x6]
|
ldrh r0, [r4, 0x6]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x6]
|
strh r0, [r4, 0x6]
|
||||||
@@ -516,7 +397,7 @@ sub_815B5C0: @ 815B5C0
|
|||||||
lsls r0, 2
|
lsls r0, 2
|
||||||
adds r0, r1
|
adds r0, r1
|
||||||
ldr r0, [r0]
|
ldr r0, [r0]
|
||||||
bl sub_815B1DC
|
bl TeachyTvInitTextPrinter
|
||||||
ldrh r0, [r4, 0x6]
|
ldrh r0, [r4, 0x6]
|
||||||
adds r0, 0x1
|
adds r0, 0x1
|
||||||
strh r0, [r4, 0x6]
|
strh r0, [r4, 0x6]
|
||||||
@@ -990,7 +871,7 @@ _0815B94C:
|
|||||||
adds r0, r7, 0
|
adds r0, r7, 0
|
||||||
subs r0, 0x8
|
subs r0, 0x8
|
||||||
adds r0, r6, r0
|
adds r0, r6, r0
|
||||||
ldr r1, _0815B9E0 @ =sub_815B2C0
|
ldr r1, _0815B9E0 @ =TeachyTvOptionListController
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
movs r0, 0
|
movs r0, 0
|
||||||
bl PutWindowTilemap
|
bl PutWindowTilemap
|
||||||
@@ -1036,7 +917,7 @@ _0815B9D4:
|
|||||||
bx r0
|
bx r0
|
||||||
.align 2, 0
|
.align 2, 0
|
||||||
_0815B9DC: .4byte gTasks+0x8
|
_0815B9DC: .4byte gTasks+0x8
|
||||||
_0815B9E0: .4byte sub_815B2C0
|
_0815B9E0: .4byte TeachyTvOptionListController
|
||||||
_0815B9E4: .4byte gUnknown_203F450
|
_0815B9E4: .4byte gUnknown_203F450
|
||||||
_0815B9E8: .4byte 0x00004004
|
_0815B9E8: .4byte 0x00004004
|
||||||
_0815B9EC: .4byte 0x00004006
|
_0815B9EC: .4byte 0x00004006
|
||||||
@@ -1067,7 +948,7 @@ _0815BA10:
|
|||||||
ldr r0, _0815BA2C @ =sub_815BA30
|
ldr r0, _0815BA2C @ =sub_815BA30
|
||||||
str r0, [r1]
|
str r0, [r1]
|
||||||
adds r0, r2, 0
|
adds r0, r2, 0
|
||||||
bl sub_815B23C
|
bl TeachyTvQuitBeginFade
|
||||||
_0815BA22:
|
_0815BA22:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
bx r0
|
bx r0
|
||||||
@@ -1121,7 +1002,7 @@ TeachyTvPostBattleFadeControl: @ 815BA54
|
|||||||
adds r0, r4, 0
|
adds r0, r4, 0
|
||||||
subs r0, 0x8
|
subs r0, 0x8
|
||||||
adds r0, r2, r0
|
adds r0, r2, r0
|
||||||
ldr r1, _0815BA9C @ =sub_815B4EC
|
ldr r1, _0815BA9C @ =TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
str r1, [r0]
|
str r1, [r0]
|
||||||
_0815BA86:
|
_0815BA86:
|
||||||
pop {r4}
|
pop {r4}
|
||||||
@@ -1132,7 +1013,7 @@ _0815BA8C: .4byte gTasks+0x8
|
|||||||
_0815BA90: .4byte gPaletteFade
|
_0815BA90: .4byte gPaletteFade
|
||||||
_0815BA94: .4byte gUnknown_8479390
|
_0815BA94: .4byte gUnknown_8479390
|
||||||
_0815BA98: .4byte gTeachyTV_StaticResources
|
_0815BA98: .4byte gTeachyTV_StaticResources
|
||||||
_0815BA9C: .4byte sub_815B4EC
|
_0815BA9C: .4byte TeachyTvRenderMsgAndSwitchClusterFuncs
|
||||||
thumb_func_end TeachyTvPostBattleFadeControl
|
thumb_func_end TeachyTvPostBattleFadeControl
|
||||||
|
|
||||||
thumb_func_start TeachyTvGrassAnimationMain
|
thumb_func_start TeachyTvGrassAnimationMain
|
||||||
@@ -1395,7 +1276,7 @@ sub_815BC90: @ 815BC90
|
|||||||
lsls r0, 3
|
lsls r0, 3
|
||||||
ldr r1, _0815BCCC @ =gTasks+0x8
|
ldr r1, _0815BCCC @ =gTasks+0x8
|
||||||
adds r5, r0, r1
|
adds r5, r0, r1
|
||||||
bl sub_815B220
|
bl TeachyTvFree
|
||||||
ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
|
ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
|
||||||
ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
|
ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
|
||||||
ldrb r0, [r4, 0x5]
|
ldrb r0, [r4, 0x5]
|
||||||
|
|||||||
+54
-12
@@ -5,6 +5,7 @@
|
|||||||
#include "palette.h"
|
#include "palette.h"
|
||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "menu_helpers.h"
|
#include "menu_helpers.h"
|
||||||
|
#include "new_menu_helpers.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "malloc.h"
|
#include "malloc.h"
|
||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
@@ -14,6 +15,7 @@
|
|||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include "list_menu.h"
|
#include "list_menu.h"
|
||||||
|
#include "item_menu.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
#include "menu_indicators.h"
|
#include "menu_indicators.h"
|
||||||
#include "field_map_obj.h"
|
#include "field_map_obj.h"
|
||||||
@@ -50,7 +52,7 @@ void TeachyTvSetWindowRegs();
|
|||||||
void TeachyTvSetupBg();
|
void TeachyTvSetupBg();
|
||||||
void TeachyTvLoadGraphic();
|
void TeachyTvLoadGraphic();
|
||||||
extern void TeachyTvPostBattleFadeControl(u8);
|
extern void TeachyTvPostBattleFadeControl(u8);
|
||||||
extern void sub_815B2C0(u8);
|
extern void TeachyTvOptionListController(u8);
|
||||||
extern void VblankHblankHandlerSetZero();
|
extern void VblankHblankHandlerSetZero();
|
||||||
extern void sub_812B1E0(u16);
|
extern void sub_812B1E0(u16);
|
||||||
extern struct BgTemplate gUnknown_84792E0;
|
extern struct BgTemplate gUnknown_84792E0;
|
||||||
@@ -63,6 +65,15 @@ extern struct SpritePalette gUnknown_83A5348;
|
|||||||
extern void sub_815BD80(void *);
|
extern void sub_815BD80(void *);
|
||||||
typedef struct Task Task;
|
typedef struct Task Task;
|
||||||
extern struct WindowTemplate gUnknown_84792F0;
|
extern struct WindowTemplate gUnknown_84792F0;
|
||||||
|
extern void TeachyTvRenderMsgAndSwitchClusterFuncs(u8 taskId);
|
||||||
|
extern struct ListMenuTemplate gUnknown_8479368;
|
||||||
|
extern struct ListMenuItem gUnknown_8479340;
|
||||||
|
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
|
||||||
|
void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
|
||||||
|
extern void sub_8055DC4();
|
||||||
|
extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
|
||||||
|
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
|
||||||
|
extern void TeachyTvQuitFadeControlAndTaskDel(u8 taskId);
|
||||||
|
|
||||||
|
|
||||||
void C2TeachyTv()
|
void C2TeachyTv()
|
||||||
@@ -156,7 +167,7 @@ void C2TeachyTvMainCallback()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
taskId = CreateTask(sub_815B2C0, 0);
|
taskId = CreateTask(TeachyTvOptionListController, 0);
|
||||||
x = (u32)TeachyTvSetupWindow();
|
x = (u32)TeachyTvSetupWindow();
|
||||||
gTasks[taskId].data[0] = (x << 24) >> 24;
|
gTasks[taskId].data[0] = (x << 24) >> 24;
|
||||||
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
|
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
|
||||||
@@ -219,11 +230,6 @@ void TeachyTvCreateAndRenderRbox()
|
|||||||
CopyWindowToVram(0, 2u);
|
CopyWindowToVram(0, 2u);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern struct ListMenuTemplate gUnknown_8479368;
|
|
||||||
extern struct ListMenuItem gUnknown_8479340;
|
|
||||||
extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
|
|
||||||
void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
|
|
||||||
|
|
||||||
u8 TeachyTvSetupWindow()
|
u8 TeachyTvSetupWindow()
|
||||||
{
|
{
|
||||||
int hasItem;
|
int hasItem;
|
||||||
@@ -244,8 +250,6 @@ u8 TeachyTvSetupWindow()
|
|||||||
gTeachyTV_StaticResources.selectedRow);
|
gTeachyTV_StaticResources.selectedRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8479380;
|
|
||||||
|
|
||||||
void TeachyTvSetupScrollIndicatorArrowPair()
|
void TeachyTvSetupScrollIndicatorArrowPair()
|
||||||
{
|
{
|
||||||
int hasItem;
|
int hasItem;
|
||||||
@@ -344,8 +348,6 @@ void TeachyTvBg2AnimController()
|
|||||||
schedule_bg_copy_tilemap_to_vram(2u);
|
schedule_bg_copy_tilemap_to_vram(2u);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void TeachyTvGrassAnimationMain(u8 taskId, s16 x, s16 y, u8 subpriority, bool8 mode);
|
|
||||||
|
|
||||||
void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
|
void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 *v2 = gTasks[taskId].data;
|
u16 *v2 = gTasks[taskId].data;
|
||||||
@@ -372,4 +374,44 @@ void TeachyTvSetupPostBattleWindowAndObj(u8 taskId)
|
|||||||
v2[4] = 0;
|
v2[4] = 0;
|
||||||
v2[5] = 0;
|
v2[5] = 0;
|
||||||
TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u);
|
TeachyTvGrassAnimationMain(taskId, v3->pos2.x, v3->pos2.y, 0, 1u);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TeachyTvInitTextPrinter(char *text)
|
||||||
|
{
|
||||||
|
u8 spd;
|
||||||
|
gTextFlags.autoScroll = 0;
|
||||||
|
spd = GetTextSpeedSetting();
|
||||||
|
AddTextPrinterParameterized2(0, 4u, (const u8 *)text, spd, 0, 1u, 0xCu, 3u);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TeachyTvFree()
|
||||||
|
{
|
||||||
|
Free(gUnknown_203F450);
|
||||||
|
gUnknown_203F450 = NULL;
|
||||||
|
FreeAllWindowBuffers();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TeachyTvQuitBeginFade(u8 taskId)
|
||||||
|
{
|
||||||
|
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10u, 0);
|
||||||
|
gTasks[taskId].func = TeachyTvQuitFadeControlAndTaskDel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TeachyTvQuitFadeControlAndTaskDel(u8 taskId)
|
||||||
|
{
|
||||||
|
if ( !(gPaletteFade.active) )
|
||||||
|
{
|
||||||
|
if ( *(u32 *)gUnknown_203F450 )
|
||||||
|
{
|
||||||
|
SetMainCallback2(*(void (**)())gUnknown_203F450);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_8055DC4();
|
||||||
|
SetMainCallback2((void (*)())gTeachyTV_StaticResources.callback);
|
||||||
|
}
|
||||||
|
TeachyTvFree();
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user