

#define TYPE_SELECT 0
#define TYPE_SAVE 1
/*
typedef struct{
	int unk0; //0
	int unk1; //0
	int flag_data; //type?
	void *num_data;
}AbNum;

typedef struct{
	AbNum *an1;
	AbNum *an2; //an1=an2;
	void *mfree_adr;
	void *unk;
}NativeAbData;

extern int OpenNativeAddressbook(int type, int unk1, int unk2, void *data); //type=0xB
extern int FreeNativeAbData(NativeAbData *ab_data);
extern NativeAbData *AllocNativeAbData(void);
extern int GetNativeAbDataType(NativeAbData *nab, int unk0); //unk0=0
extern WSHDR *GetNumFromNativeAbData(NativeAbData *nab, int type, int unk0); //unk0=0
//extern int IsAbDataFilled(NativeAbData *nab);
extern int GetNativeAbDataStatus(NativeAbData *nab, int _0); //9,not filled, 1, filled
extern int SetNumToNativeAbData(NativeAbData *abd, int unk, WSHDR *num); //unk=0x1D, maxlen ?


OpenNativeAddressbook(x,y,z,s)

x,y,z,s
//p: point, NativeAbData
0,0,0,0 //CONTACTS_LIST
0,0,2,0 //?
0,0,4,0 //CONTACT_ONLINE
0,0,3,0 //CONTACT_SIM
0,0,5,0 //CONTACT_MOSTUSE
0,0,6,0 //CONTACT_GROUPS
1,0,0,0 //CONTACT_NEW
1,0,0,p //?,select menu, sim/phone
4,1,0,p //?,NativeAbData *, no init,
4,1,1,p //?
4,1,2,p //?
4,8,2,p //?
6,0,0,p //, save, num
6,0,1,p //?
6,1,0,p //?
B,0,0,p //select, NativeAbData *, no init


#pragma swi_number=0x2AC
__swi __arm int DeleteSMS(int index, short *del_cnt); //return 0x3E8
//thumb
//pattern_NSG=??,B5,??,B0,??,1C,??,D1,??,48,??,BD,??,20,??,80,??,48,??,49,+1
//thumb
//pattern_ELKA=??,B5,??,B0,??,1C,??,D1,??,48,??,38,??,B0,??,BD,??,9A,??,A1,??,91,??,23,??,92,+1

#pragma swi_number=0x2B3
__swi __arm NativeAbData *AllocNativeAbData(void);
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E3,??,??,??,EB,??,??,??,E1,??,??,??,1A,??,??,??,E5,??,??,??,E3
//thumb
//pattern_ELKA=??,B5,??,20,??,??,??,??,??,1C,??,25,??,28,??,D1,??,4E,??,1C,??,20,??,??,??,??,??,28,??,D0,??,DF,??,1C,??,1C,??,22,??,20,??,??,??,??,??,E0,??,DF,??,1C,??,1C,??,22,??,20,??,??,??,??,??,48,??,60,??,60,??,60,??,60,??,1C,??,BD,+1

#pragma swi_number=0x2B4
__swi __arm int FreeNativeAbData(NativeAbData *ab_data);
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E1,??,??,??,EB,??,??,??,E3,??,??,??,08,??,??,??,E1,??,??,??,EB,??,??,??,E1,??,??,??,EB,??,??,??,E3,??,??,??,E8
//thumb
//pattern_ELKA=??,B5,??,1C,??,??,??,??,??,28,??,D0,??,1C,??,??,??,??,??,1C,??,??,??,??,??,20,??,BD,??,20,??,BD,+1

#pragma swi_number=0x2B5
__swi __arm int GetNativeAbDataType(NativeAbData *nab, int unk0); //unk0=0
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E3,??,??,??,EB,??,??,??,E3,??,??,??,15,??,??,??,12,??,??,??,E1,??,??,??,E8
//thumb
//pattern_ELKA=??,B5,??,24,??,??,??,??,??,28,??,D0,??,68,??,40,??,1C,??,BD,+1

#pragma swi_number=0x2B6
__swi __arm WSHDR *GetNumFromNativeAbData(NativeAbData *nab, int type, int unk0); //unk0=0
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E3,??,??,??,E5,??,??,??,E2,??,??,??,E5,??,??,??,E3,??,??,??,E3,??,??,??,EB,??,??,??,E1,??,??,??,E5,??,??,??,1A
//thumb
//pattern_ELKA=??,B5,??,AB,??,26,??,72,??,1C,??,AA,??,92,??,1C,??,24+1

#pragma swi_number=0x2B7
__swi __arm int GetNativeAbDataStatus(NativeAbData *nab, int _0); //9,not filled, 1, filled
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E3,??,??,??,EB,??,??,??,E3,??,??,??,15,??,??,??,11,??,??,??,11,??,??,??,E1,??,??,??,E8
//thumb
//pattern_ELKA=??,B5,??,24,??,??,??,??,??,28,??,D0,??,68,??,04,??,0E,??,1C,??,BD,+1

#pragma swi_number=0x2B8
__swi __arm int SetNumToNativeAbData(NativeAbData *abd, int unk, WSHDR *num); //unk=0x1D, maxlen ?, type ?
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E1,??,??,??,E3,??,??,??,E1,??,??,??,E1,??,??,??,EB,??,??,??,E1,??,??,??,E3,??,??,??,E3,??,??,??,8A,??,??,??,E3,??,??,??,1A,??,??,??,E3,??,??,??,EA,??,??,??,E3,??,??,??,E3,??,??,??,E8,??,??,??,E8
//thumb
//pattern_ELKA=??,B5,??,1C,??,1C,??,20,??,??,??,??,??,1C,??,25,??,2E,??,D8,??,2C,??,D1,??,25,??,E0,+1

#pragma swi_number=0x2B9
__swi __arm unsigned int OpenNativeAddressbook(int type, int unk1, int unk2, void *data); //type, 0xB, select num,
//arm
//pattern_NSG=??,??,??,E9,??,??,??,E1,??,??,??,E3,??,??,??,E1,??,??,??,E3,??,??,??,E5,??,??,??,E9,??,??,??,E1,??,??,??,E1,??,??,??,E1,??,??,??,E1,_blf(??,??,??,E9,??,??,??,E2,??,??,??,E5,??,??,??,E5,??,??,??,E5,??,??,??,E1,??,??,??,E1,??,??,??,E1),??,??,??,E2,??,??,BD,E8
//thumb
//pattern_ELKA=??,B5,??,1C,??,21,??,1C,??,22,??,92,??,91,??,91,??,1C,??,1C,??,1C,??,1C,_blf(??,B5,??,B0,??,1C,??,1C,??,28,??,9C,??,D2,??,A3,??,5C,??,00,??,44),??,BD,+1

*/
int CreateNAbCSM(void *dlg_csm, void *ed_gui, int type);


