Code:
signed int __cdecl CHARACTER__PointChange(int a1, char a2, signed int a3, unsigned __int8 a4, unsigned __int8 a5)
{
signed int result; // eax@1
int v6; // ecx@1
char v7; // al@2
int v8; // eax@8
int v9; // esi@10
char v10; // bl@11
int v11; // eax@18
int v12; // eax@22
int v13; // eax@23
int v14; // eax@24
int v15; // eax@27
int v16; // eax@27
signed int v17; // eax@32
int v18; // ebx@36
int v19; // ebx@37
int v20; // eax@42
int v21; // esi@42
int v22; // eax@42
int v23; // ST44_4@42
int v24; // ebx@42
int v25; // eax@42
int v26; // eax@45
int v27; // ebx@45
int v28; // eax@45
int v29; // ebx@52
int v30; // eax@56
int v31; // esi@56
int v32; // eax@56
int v33; // ST48_4@56
int v34; // ebx@56
int v35; // eax@56
int v36; // ebx@58
unsigned int v37; // esi@58
int v38; // eax@59
int v39; // eax@65
signed int v40; // eax@67
signed int v41; // ebx@67
int v42; // esi@69
int v43; // ebx@70
int v44; // eax@75
int v45; // eax@76
int v46; // eax@76
int v47; // eax@77
int v48; // eax@78
int v49; // eax@79
int v50; // eax@80
int v51; // eax@81
int v52; // eax@83
int v53; // eax@84
int v54; // eax@86
char v55; // al@89
int v56; // eax@89
int v57; // ebx@90
int v58; // ebx@91
int v59; // edx@92
int v60; // edx@94
int v61; // eax@97
int v62; // eax@103
int v63; // ebx@114
int v64; // esi@114
int v65; // ebx@114
unsigned __int8 v66; // al@114
int v67; // ebx@114
unsigned __int8 v68; // al@114
int v69; // eax@114
signed int v70; // eax@115
int v71; // ST08_4@117
char v72; // al@119
char v73; // al@129
char v74; // al@131
char v75; // al@133
int v76; // esi@135
int v77; // ebx@136
char v78; // al@139
char v79; // al@140
char v80; // al@142
char v81; // al@148
int v82; // esi@152
int v83; // ebx@153
char v84; // [sp+4h] [bp-74h]@9
char v85; // [sp+4h] [bp-74h]@27
char v86; // [sp+4h] [bp-74h]@81
signed int v87; // [sp+8h] [bp-70h]@27
signed int v88; // [sp+8h] [bp-70h]@81
char v89; // [sp+Ch] [bp-6Ch]@27
char v90; // [sp+Ch] [bp-6Ch]@81
char v91; // [sp+10h] [bp-68h]@27
char v92; // [sp+10h] [bp-68h]@81
int v93; // [sp+20h] [bp-58h]@67
char v94; // [sp+27h] [bp-51h]@1
int v95; // [sp+28h] [bp-50h]@1
int v96; // [sp+30h] [bp-48h]@91
int v97; // [sp+34h] [bp-44h]@91
int v98; // [sp+3Ch] [bp-3Ch]@66
int v99; // [sp+40h] [bp-38h]@66
int v100; // [sp+57h] [bp-21h]@18
int v101; // [sp+5Bh] [bp-1Dh]@18
char v102; // [sp+5Fh] [bp-19h]@18
int v103; // [sp+60h] [bp-18h]@18
int v104; // [sp+64h] [bp-14h]@18
int v105; // [sp+68h] [bp-10h]@1
v6 = a4;
v95 = a3;
result = a5;
v105 = *(_DWORD *)_stack_chk_guard;
v94 = a4;
if ( (unsigned __int8)a2 > 0x7Eu )
{
LABEL_2:
v7 = CHARACTER__GetName(a1);
result = sys_err((int)"PointChange", 3373, "CHARACTER::PointChange: %s: unknown point change type %d", v7);
goto LABEL_3;
}
switch ( a2 )
{
case 0:
goto LABEL_3;
case 1:
result = a3 + *(_BYTE *)(a1 + 1290);
if ( result > gPlayerMaxLevel )
goto LABEL_3;
CHARACTER__SetLevel(a1, (unsigned __int8)(*(_BYTE *)(a1 + 1290) + a3));
v9 = *(_BYTE *)(a1 + 1290);
CHARACTER__GetNextExp(a1);
v55 = CHARACTER__GetName(a1);
v10 = 1;
sys_log(0, "LEVELUP: %s %d NEXT EXP %d", v55);
v56 = CHARACTER__GetNextExp(a1);
result = CHARACTER__PointChange(a1, 4, v56, 0, 0);
v6 = a3;
if ( !a3 )
goto LABEL_12;
v57 = *(_DWORD *)(a1 + 248);
if ( !singleton_quest__CQuestManager___ms_singleton )
__assert("instance", "../../common/singleton.h", 26);
quest__CQuestManager__LevelUp(singleton_quest__CQuestManager___ms_singleton, v57);
v96 = CHARACTER__GetRealPoint(a1, 31);
v58 = get_dword_time();
v97 = *(_DWORD *)(a1 + 3016);
if ( !singleton_LogManager___ms_singleton )
__assert("instance", "../../common/singleton.h", 26);
LogManager__LevelLog(singleton_LogManager___ms_singleton, a1, v9, v96 + (v58 - v97) / 0xEA60u);
v59 = *(_DWORD *)(a1 + 3268);
if ( v59 )
CGuild__LevelChange(v59, *(_DWORD *)(a1 + 248), *(_BYTE *)(a1 + 1290));
v60 = *(_DWORD *)(a1 + 3224);
if ( v60 )
CParty__RequestSetMemberLevel(v60, *(_DWORD *)(a1 + 248), *(_BYTE *)(a1 + 1290));
v10 = 0;
goto LABEL_14;
case 2:
case 0x18:
v9 = CHARACTER__GetRealPoint(a1, a2);
goto LABEL_11;
case 3:
v36 = *(_DWORD *)(a1 + 1292);
v37 = CHARACTER__GetNextExp(a1);
if ( !(unsigned __int8)LC_IsNewCIBN() )
goto LABEL_62;
v38 = *(_DWORD *)(a1 + 3916);
if ( v38 )
{
if ( v38 == 1 )
{
v95 = a3 / 2;
v78 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 2853, (int)"PointChange", 2048, (int)"<EXP_LOG> %s = 3HOUR", v78);
}
else
{
if ( v38 == 2 )
{
v79 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 2858, (int)"PointChange", 2048, (int)"<EXP_LOG> %s = 5HOUR", v79);
v95 = 0;
goto LABEL_63;
}
}
}
else
{
v75 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 2848, (int)"PointChange", 2048, (int)"<EXP_LOG> %s = NONE", v75);
}
LABEL_62:
if ( v95 < 0 && v36 < -v95 )
{
v9 = 0;
v73 = CHARACTER__GetName(a1);
result = sys_log(1, "%s AMOUNT < 0 %d, CUR EXP: %d", v73);
v95 = -v36;
v10 = v36 == 0;
*(_DWORD *)(a1 + 1292) = 0;
goto LABEL_12;
}
LABEL_63:
result = *(_BYTE *)(a1 + 1290);
if ( result >= gPlayerMaxLevel )
goto LABEL_3;
if ( test_server )
CHARACTER__ChatPacket(a1, 1, "You have gained %d exp.", v95);
v39 = v36 + v95;
if ( (signed int)v37 > v36 + v95 )
{
*(_DWORD *)(a1 + 1292) = v39;
v98 = v36 + v95;
v99 = 0;
}
else
{
v99 = v39 - v37;
v95 = v37 - v36;
*(_DWORD *)(a1 + 1292) = 0;
v98 = v37;
}
v93 = (signed int)(v37 + (v37 >> 61)) >> 2;
v40 = CHARACTER__GetRealPoint(a1, 25);
v41 = v40;
if ( v40 > 3 )
{
v74 = CHARACTER__GetName(a1);
v41 = 4;
sys_err((int)"PointChange", 2902, "%s LEVEL_STEP bigger than 4! (%d)", v74);
}
else
{
if ( v98 >= (signed int)v37 )
{
v42 = 4 - v40;
if ( 4 - v40 > 0 )
{
v43 = 0;
do
{
++v43;
CHARACTER__PointChange(a1, 25, 1, 0, 1);
}
while ( v43 != v42 );
}
goto LABEL_72;
}
v6 = (signed int)(v37 + (v37 >> 61)) >> 2;
if ( 3 * v93 <= v98 && v40 <= 2 )
{
v76 = 3 - v40;
if ( 3 - v40 > 0 )
{
v77 = 0;
do
{
++v77;
CHARACTER__PointChange(a1, 25, 1, 0, 1);
}
while ( v77 != v76 );
}
goto LABEL_72;
}
if ( v40 <= 1 && 2 * v93 <= v98 )
{
v82 = 2 - v40;
if ( 2 - v40 > 0 )
{
v83 = 0;
do
{
++v83;
CHARACTER__PointChange(a1, 25, 1, 0, 1);
}
while ( v83 != v82 );
}
LABEL_72:
if ( v99 )
CHARACTER__PointChange(a1, 3, v99, 0, 0);
result = v95;
v9 = *(_DWORD *)(a1 + 1292);
v10 = v95 == 0;
LABEL_12:
if ( (unsigned __int8)a2 <= 0xFu )
{
v6 = (unsigned __int8)a2;
result = 1 << a2;
if ( (1 << a2) & 0xF002 )
LABEL_14:
result = CHARACTER__ComputeBattlePoints(a1);
}
goto LABEL_15;
}
}
if ( v98 >= v93 )
{
if ( v41 <= 0 )
CHARACTER__PointChange(a1, 25, 1, 0, 0);
}
goto LABEL_72;
case 4:
v94 = 0;
v9 = CHARACTER__GetNextExp(a1);
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 5:
result = CHARACTER__IsDead(a1);
if ( (_BYTE)result || (result = CHARACTER__IsStun(a1), (_BYTE)result) )
goto LABEL_3;
v27 = *(_DWORD *)(a1 + 1300);
v28 = MIN(*(_DWORD *)(a1 + 2348) - v27, a3);
*(_DWORD *)(a1 + 1300) += v28;
v9 = *(_DWORD *)(a1 + 1300);
v95 = v28;
CHARACTER__BroadcastTargetPacket(a1);
v26 = *(_DWORD *)(a1 + 3224);
if ( !v26 || !*(_DWORD *)(a1 + 36) )
goto LABEL_11;
if ( v27 != v9 )
CParty__SendPartyInfoOneToAll(v26, a1);
goto LABEL_26;
case 6:
v20 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v20);
v21 = CHARACTER__GetRealPoint(a1, 6);
v22 = CHARACTER__GetPoint(a1, 119);
v23 = MIN(1500, v21 * v22 / 100);
v24 = CHARACTER__GetPoint(a1, 6);
v25 = v21 + v24 + v23 + CHARACTER__GetPoint(a1, 92);
*(_DWORD *)(a1 + 2348) = v25;
v9 = v25;
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 7:
result = CHARACTER__IsDead(a1);
if ( (_BYTE)result || (result = CHARACTER__IsStun(a1), (_BYTE)result) )
goto LABEL_3;
result = MIN(*(_DWORD *)(a1 + 2352) - *(_DWORD *)(a1 + 1304), a3);
*(_DWORD *)(a1 + 1304) += result;
v9 = *(_DWORD *)(a1 + 1304);
v10 = result == 0;
v95 = result;
goto LABEL_15;
case 8:
v30 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v30);
v31 = CHARACTER__GetRealPoint(a1, 8);
v32 = CHARACTER__GetPoint(a1, 120);
v33 = MIN(800, v31 * v32 / 100);
v34 = CHARACTER__GetPoint(a1, 8);
v35 = v31 + v34 + v33 + CHARACTER__GetPoint(a1, 104);
*(_DWORD *)(a1 + 2352) = v35;
v9 = v35;
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 9:
result = CHARACTER__IsDead(a1);
if ( (_BYTE)result || (result = CHARACTER__IsStun(a1), (_BYTE)result) )
goto LABEL_3;
v29 = *(_DWORD *)(a1 + 1316);
result = MIN(*(_DWORD *)(a1 + 3004) - v29, a3);
*(_DWORD *)(a1 + 1316) += result;
v9 = *(_DWORD *)(a1 + 1316);
v95 = result;
if ( !v9 )
{
CHARACTER__SetNowWalking(a1, 1);
result = v95;
v10 = v95 == 0;
goto LABEL_15;
}
if ( !v29 )
result = CHARACTER__SetNowWalking(a1, *(_BYTE *)(a1 + 3132));
if ( v95 >= 0 )
{
v10 = v95 == 0;
goto LABEL_15;
}
goto LABEL_3;
case 0xA:
*(_DWORD *)(a1 + 3004) += a3;
v9 = *(_DWORD *)(a1 + 3004);
v10 = a3 == 0;
goto LABEL_15;
case 0xB:
v18 = *(_DWORD *)(a1 + 1296);
if ( v18 + a3 <= 1999999999 )
{
if ( (unsigned __int8)LC_IsNewCIBN() )
{
if ( a3 <= 0 )
{
v10 = a3 == 0;
goto LABEL_106;
}
v62 = *(_DWORD *)(a1 + 3916);
if ( !v62 )
{
v10 = 0;
v80 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 3120, (int)"PointChange", 2048, (int)"<GOLD_LOG> %s = NONE", v80);
goto LABEL_106;
}
if ( v62 != 1 )
{
v10 = 0;
if ( v62 == 2 )
{
v10 = 1;
v81 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 3130, (int)"PointChange", 2048, (int)"<GOLD_LOG> %s = 5HOUR", v81);
v95 = 0;
}
goto LABEL_106;
}
v95 = a3 / 2;
v72 = CHARACTER__GetName(a1);
dev_log((int)"char.cpp", 3125, (int)"PointChange", 2048, (int)"<GOLD_LOG> %s = 3HOUR", v72);
}
v10 = v95 == 0;
LABEL_106:
result = v95;
*(_DWORD *)(a1 + 1296) += v95;
v9 = *(_DWORD *)(a1 + 1296);
goto LABEL_12;
}
CHARACTER__GetName(a1);
sys_err((int)"PointChange", 3109, "[OVERFLOW_GOLD] OriGold %d AddedGold %d id %u Name %s ", v18);
v19 = *(_DWORD *)(a1 + 1296);
if ( !singleton_LogManager___ms_singleton )
__assert("instance", "../../common/singleton.h", 26);
result = LogManager__CharLog(
singleton_LogManager___ms_singleton,
a1,
v19 + a3,
(int)"OVERFLOW_GOLD",
&asc_8472AF5[2]);
v10 = a3 == 0;
v9 = 0;
LABEL_15:
if ( !v10 || a2 != 5 )
{
if ( *(_DWORD *)(a1 + 36) )
{
v100 = 17;
v11 = *(_DWORD *)(a1 + 252);
v104 = v9;
v101 = v11;
v102 = a2;
v103 = (unsigned __int8)v94 >= 1u ? v95 : 0;
if ( a5 )
result = CEntity__PacketAround(a1, &v100, 17, 0);
else
result = DESC__Packet(*(_DWORD *)(a1 + 36), (int)&v100, 0x11u);
}
}
LABEL_3:
if ( *(_DWORD *)_stack_chk_guard != v105 )
__stack_chk_fail(v6, *(_DWORD *)_stack_chk_guard ^ v105);
return result;
case 0xC:
case 0xD:
case 0xE:
case 0xF:
case 0x11:
case 0x12:
case 0x13:
case 0x15:
case 0x16:
case 0x17:
case 0x20:
case 0x21:
case 0x22:
case 0x23:
case 0x24:
case 0x25:
case 0x26:
case 0x27:
case 0x28:
case 0x29:
case 0x2A:
case 0x2B:
case 0x2C:
case 0x2D:
case 0x2E:
case 0x2F:
case 0x30:
case 0x35:
case 0x36:
case 0x37:
case 0x38:
case 0x39:
case 0x3B:
case 0x3C:
case 0x3D:
case 0x3E:
case 0x3F:
case 0x40:
case 0x41:
case 0x42:
case 0x43:
case 0x44:
case 0x45:
case 0x46:
case 0x47:
case 0x48:
case 0x49:
case 0x4A:
case 0x4B:
case 0x4C:
case 0x4D:
case 0x4E:
case 0x4F:
case 0x50:
case 0x51:
case 0x52:
case 0x57:
case 0x5B:
case 0x5C:
case 0x5D:
case 0x5E:
case 0x63:
case 0x64:
case 0x65:
case 0x66:
case 0x67:
case 0x68:
case 0x6E:
case 0x6F:
case 0x79:
case 0x7A:
case 0x7B:
case 0x7C:
goto LABEL_8;
case 0x10:
v15 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v15);
v16 = CHARACTER__GetPoint(a1, a2);
v91 = 0;
v89 = 0;
v85 = 20;
v87 = a3;
v9 = v16;
goto LABEL_28;
case 0x14:
v14 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v14);
goto LABEL_25;
case 0x19:
if ( a3 <= 0 )
{
v84 = 25;
LABEL_10:
v9 = CHARACTER__GetPoint(a1, v84);
LABEL_11:
result = v95;
v10 = v95 == 0;
goto LABEL_12;
}
v9 = CHARACTER__GetPoint(a1, 25) + a3;
if ( v9 < 1 )
goto LABEL_111;
if ( v9 > 3 )
{
if ( v9 == 4 )
{
v65 = *(_DWORD *)&JobInitialPoints[64 * (unsigned __int8)CHARACTER__GetJob(a1) + 36];
v66 = CHARACTER__GetJob(a1);
v64 = number_ex(*(_DWORD *)&JobInitialPoints[64 * v66 + 32], v65, (int)"char.cpp", 2949);
v67 = *(_DWORD *)&JobInitialPoints[64 * (unsigned __int8)CHARACTER__GetJob(a1) + 44];
v68 = CHARACTER__GetJob(a1);
v69 = number_ex(*(_DWORD *)&JobInitialPoints[64 * v68 + 40], v67, (int)"char.cpp", 2950);
*(_DWORD *)(a1 + 1308) += v64;
*(_DWORD *)(a1 + 1312) += v69;
v63 = v69;
if ( *(_BYTE *)(a1 + 1320) )
{
v70 = *(_BYTE *)(a1 + 1290);
if ( v70 > 4 )
{
CHARACTER__PointChange(a1, 28, 1, 0, 0);
v70 = *(_BYTE *)(a1 + 1290);
}
if ( v70 > 8 )
CHARACTER__PointChange(a1, 27, 1, 0, 0);
}
v71 = v64;
v9 = 0;
CHARACTER__PointChange(a1, 6, v71, 0, 0);
CHARACTER__PointChange(a1, 8, v63, 0, 0);
CHARACTER__PointChange(a1, 1, 1, 0, 1);
v17 = *(_BYTE *)(a1 + 1290);
goto LABEL_33;
}
}
else
{
v17 = *(_BYTE *)(a1 + 1290);
if ( v17 > 95 )
{
LABEL_33:
if ( v17 <= 10 )
CHARACTER__AutoGiveItem(a1, 27001, 2, -1, 1);
else
CHARACTER__AutoGiveItem(a1, 27002, 2, -1, 1);
CHARACTER__PointChange(a1, 5, *(_DWORD *)(a1 + 2348) - *(_DWORD *)(a1 + 1300), 0, 0);
CHARACTER__PointChange(a1, 7, *(_DWORD *)(a1 + 2352) - *(_DWORD *)(a1 + 1304), 0, 0);
CHARACTER__PointChange(a1, 9, *(_DWORD *)(a1 + 3004) - *(_DWORD *)(a1 + 1316), 0, 0);
CHARACTER__SetPoint(a1, 25, v9);
CHARACTER__SetRealPoint(a1, 25, v9);
result = CHARACTER__Save(a1);
v6 = a3;
v10 = a3 == 0;
goto LABEL_12;
}
CHARACTER__PointChange(a1, 26, 1, 0, 0);
}
LABEL_111:
v17 = *(_BYTE *)(a1 + 1290);
goto LABEL_33;
case 0x1A:
case 0x1B:
case 0x1C:
case 0x70:
case 0x71:
v13 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v13);
v9 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetRealPoint(a1, a2, v9);
result = a3;
v10 = a3 == 0;
goto LABEL_12;
case 0x1D:
case 0x1E:
case 0x1F:
case 0x31:
case 0x32:
case 0x33:
case 0x34:
case 0x3A:
case 0x69:
case 0x6A:
case 0x6B:
goto LABEL_2;
case 0x53:
case 0x54:
case 0x55:
case 0x56:
if ( a3 + CHARACTER__GetPoint(a1, a2) > 100 )
{
CHARACTER__GetName(a1);
sys_err((int)"PointChange", 3283, "BONUS exceeded over 100!! point type: %d name: %s amount %d", a2);
v95 = 100 - CHARACTER__GetPoint(a1, a2);
}
v12 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, v95 + v12);
v9 = CHARACTER__GetPoint(a1, a2);
result = v95;
v10 = v95 == 0;
goto LABEL_12;
case 0x58:
v61 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v61);
v9 = CHARACTER__GetPoint(a1, a2);
if ( v9 )
{
result = a3;
*(_DWORD *)(a1 + 2368) |= 1u;
v10 = a3 == 0;
goto LABEL_15;
}
result = a3;
*(_DWORD *)(a1 + 2368) &= 0xFFFFFFFEu;
v10 = a3 == 0;
goto LABEL_12;
case 0x59:
v54 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v54);
result = CHARACTER__GetPoint(a1, a2);
v9 = result;
if ( result )
{
*(_DWORD *)(a1 + 2368) |= 2u;
v10 = a3 == 0;
goto LABEL_15;
}
v6 = a3;
*(_DWORD *)(a1 + 2368) &= 0xFFFFFFFDu;
v10 = a3 == 0;
goto LABEL_12;
case 0x5A:
v53 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v53);
result = CHARACTER__GetPoint(a1, a2);
v9 = result;
if ( result )
{
*(_DWORD *)(a1 + 2368) |= 4u;
v10 = a3 == 0;
goto LABEL_15;
}
*(_DWORD *)(a1 + 2368) &= 0xFFFFFFFBu;
goto LABEL_11;
case 0x5F:
v52 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v52);
v92 = 0;
v90 = 0;
v86 = 18;
v88 = a3;
goto LABEL_82;
case 0x60:
v51 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v51);
v92 = 0;
v90 = 0;
v86 = 16;
v88 = a3;
LABEL_82:
CHARACTER__PointChange(a1, v86, v88, v90, v92);
v9 = CHARACTER__GetPoint(a1, a2);
goto LABEL_26;
case 0x61:
v50 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v50);
CHARACTER__PointChange(a1, 22, a3, 0, 0);
LABEL_25:
v9 = CHARACTER__GetPoint(a1, a2);
goto LABEL_26;
case 0x62:
v49 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v49);
CHARACTER__PointChange(a1, 23, a3, 0, 0);
v9 = CHARACTER__GetPoint(a1, a2);
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 0x6C:
v48 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v48);
v9 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPolymorph(a1, v9, 0);
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 0x6D:
v47 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v47);
v9 = CHARACTER__GetPoint(a1, a2);
CHARACTER__MountVnum(a1, v9);
LABEL_26:
result = v95;
v10 = v95 == 0;
goto LABEL_15;
case 0x72:
case 0x73:
case 0x74:
case 0x75:
case 0x76:
if ( a3 + CHARACTER__GetPoint(a1, a2) > 100 )
{
CHARACTER__GetName(a1);
sys_err((int)"PointChange", 3261, "MALL_BONUS exceeded over 100!! point type: %d name: %s amount %d", a2);
v95 = 100 - CHARACTER__GetPoint(a1, a2);
}
LABEL_8:
v8 = v95 + CHARACTER__GetPoint(a1, a2);
goto LABEL_9;
case 0x77:
v45 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v45);
v46 = CHARACTER__GetPoint(a1, a2);
v91 = 0;
v89 = 0;
v87 = 0;
v85 = 6;
v9 = v46;
LABEL_28:
CHARACTER__PointChange(a1, v85, v87, v89, v91);
result = a3;
v10 = a3 == 0;
goto LABEL_15;
case 0x78:
v44 = CHARACTER__GetPoint(a1, a2);
CHARACTER__SetPoint(a1, a2, a3 + v44);
v9 = CHARACTER__GetPoint(a1, a2);
result = CHARACTER__PointChange(a1, 8, 0, 0, 0);
v10 = a3 == 0;
goto LABEL_15;
case 0x7D:
case 0x7E:
v8 = a3;
LABEL_9:
CHARACTER__SetPoint(a1, a2, v8);
v84 = a2;
goto LABEL_10;
}
}