I am not sure whether the wszAccIdf is 40 or only 36 (x2) bytes big. At least the last 8 bytes from it were uninitialized cdcdcdcd pointers thought they belong to the account id field.

Also szCharFile was limited to 16 bytes from me, although it seems the other remaining bytes after it (496 bytes) are always 0 - could be that the char file was supposed to use 512 bytes at all, which makes no sense to me. The long after uiOnlineID seems to be the ShipArchID. And the right, left hand and head body addresses seems to be the

It is indeed 40 characters for the account id. There is an unknown class/struct at 0x50, for those 0x14 bytes. It is actually a CHARACTER_ID at 0x64, which does just contain char file[512]. It is indeed a Costume at 0x2E4. x340 is bool skip_autosave. I think x3e8 is uint iLaunchBase and x3f4 seems to the base id again, as is x410 (set at BaseExit). x414 is presumably the id of a location (initialized to CreateID("NO WHERE")).

bool's are bytes, which get padded to align the next member (i.e. struct { bool b; int i;} is typically stored as struct { bool b; char pad[3]; int i;}. Likewise, 0x3ca is just padding after the short.

0x34c (uiShipArchID) is actually bool cheated, I think; 0x320 (iCyclicRedundancyCheck) is actually iWorth (when you land on a base, to detect cheating when you exit).

0x324 is a copy of uiShipArchetype (cheat detection).

0x344 seems to be a count of how many times the character has been saved (per login).

0x3c0 is initialized to 0, but does not seem to be used.

0x3c4 is float difficulty (initialized to 1; restricted to 0 to 2).

0x3d0 seems to be your player number (i.e. the one-based Players index).

0x3dc is some kind of trade request counter.

0x3e8 is the id of the ship that was created.

0x3f4 is the id of the base you entered (this is the one that is tested for some Req functions); 0x410 is the base just exited.