struct BaseResponse 
{
    u8 success;
    u32 error_str_id;
    char error_str[];
};

struct Packet {
    BaseResponse base;
    s8 unk1; //I think this is just padding
    s8 unk2; //I think this is just padding
    u32 lsid;
    char key[];
    s32 failed_attempts;
    u8 show_player_count;
    s32 unk3; // 0
    s32 unk4; // 0
    char username[];
    char password[]; //I'm not sure this is correct, it feels like this might be some internal refresh token
    char paddingEnd[2];
};

Packet p @ 0x00;