-
-
Save Lusamine/ab7866435d56ce34c87ee1dffc6d38db to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
__int64 __fastcall calc_initial_damage(__int64 a1, _DWORD *a2) | |
{ | |
__int64 *v2; // x21 | |
unsigned int *v5; // x8 | |
unsigned int v6; // w9 | |
__int64 v7; // x22 | |
unsigned int *v8; // x8 | |
unsigned int v9; // w9 | |
unsigned int v10; // w9 | |
__int64 *v11; // x20 | |
unsigned int *v12; // x8 | |
unsigned int v13; // w9 | |
unsigned int initial_damage_la; // w19 | |
unsigned int *v15; // x8 | |
unsigned int v16; // w9 | |
unsigned int v17; // w9 | |
__int64 v19[4]; // [xsp+0h] [xbp-730h] BYREF | |
__int64 v20; // [xsp+20h] [xbp-710h] BYREF | |
v2 = *(__int64 **)(a1 + 488); | |
if ( v2 ) | |
{ | |
v5 = (unsigned int *)(v2 + 10); | |
do | |
v6 = __ldaxr(v5); | |
while ( __stlxr(v6 + 1, v5) ); | |
} | |
sub_71008463F0(v19, v2 + 12); | |
v7 = v19[0]; | |
sub_7100845E04(v19); | |
if ( v2 ) | |
{ | |
v8 = (unsigned int *)(v2 + 10); | |
do | |
{ | |
v9 = __ldaxr(v8); | |
v10 = v9 - 1; | |
} | |
while ( __stlxr(v10, v8) ); | |
if ( !v10 ) | |
{ | |
(*(void (__fastcall **)(__int64 *))(*v2 + 16))(v2); | |
if ( v7 ) | |
goto LABEL_9; | |
return a2[2] * *a2 * (2 * a2[1] / 5u + 2) / a2[3] / 50 + 2; | |
} | |
} | |
if ( !v7 ) | |
return a2[2] * *a2 * (2 * a2[1] / 5u + 2) / a2[3] / 50 + 2; | |
LABEL_9: | |
v11 = *(__int64 **)(a1 + 488); | |
if ( v11 ) | |
{ | |
v12 = (unsigned int *)(v11 + 10); | |
do | |
v13 = __ldaxr(v12); | |
while ( __stlxr(v13 + 1, v12) ); | |
} | |
sub_71008463F0(v19, v11 + 12); | |
initial_damage_la = ((__int64 (__fastcall *)(__int64 *, _DWORD *))v19[0])(&v20, a2); | |
sub_7100845E04(v19); | |
if ( v11 ) | |
{ | |
v15 = (unsigned int *)(v11 + 10); | |
do | |
{ | |
v16 = __ldaxr(v15); | |
v17 = v16 - 1; | |
} | |
while ( __stlxr(v17, v15) ); | |
if ( !v17 ) | |
(*(void (__fastcall **)(__int64 *))(*v11 + 16))(v11); | |
} | |
return initial_damage_la; | |
} | |
----- | |
.text:00000071028CE294 ; __int64 __fastcall calc_initial_damage(__int64, _DWORD *) | |
.text:00000071028CE294 calc_initial_damage ; CODE XREF: calc_attack_damage+2FEC↑p | |
.text:00000071028CE294 ; sub_71028D96B8+78↓p ... | |
.text:00000071028CE294 | |
.text:00000071028CE294 var_730 = -0x730 | |
.text:00000071028CE294 var_30 = -0x30 | |
.text:00000071028CE294 var_20 = -0x20 | |
.text:00000071028CE294 var_10 = -0x10 | |
.text:00000071028CE294 var_s0 = 0 | |
.text:00000071028CE294 | |
.text:00000071028CE294 STR X28, [SP,#-0x10+var_30]! | |
.text:00000071028CE298 STP X22, X21, [SP,#0x30+var_20] | |
.text:00000071028CE29C STP X20, X19, [SP,#0x30+var_10] | |
.text:00000071028CE2A0 STP X29, X30, [SP,#0x30+var_s0] | |
.text:00000071028CE2A4 ADD X29, SP, #0x30 | |
.text:00000071028CE2A8 SUB SP, SP, #0x700 | |
.text:00000071028CE2AC LDR X21, [X0,#0x1E8] | |
.text:00000071028CE2B0 MOV X19, X1 | |
.text:00000071028CE2B4 MOV X20, X0 | |
.text:00000071028CE2B8 CBZ X21, loc_71028CE2D0 | |
.text:00000071028CE2BC ADD X8, X21, #0x50 ; 'P' | |
.text:00000071028CE2C0 | |
.text:00000071028CE2C0 loc_71028CE2C0 ; CODE XREF: calc_initial_damage+38↓j | |
.text:00000071028CE2C0 LDAXR W9, [X8] | |
.text:00000071028CE2C4 ADD W9, W9, #1 | |
.text:00000071028CE2C8 STLXR W10, W9, [X8] | |
.text:00000071028CE2CC CBNZ W10, loc_71028CE2C0 | |
.text:00000071028CE2D0 | |
.text:00000071028CE2D0 loc_71028CE2D0 ; CODE XREF: calc_initial_damage+24↑j | |
.text:00000071028CE2D0 ADD X1, X21, #0x60 ; '`' | |
.text:00000071028CE2D4 MOV X0, SP | |
.text:00000071028CE2D8 BL sub_71008463F0 | |
.text:00000071028CE2DC LDR X22, [SP,#0x730+var_730] | |
.text:00000071028CE2E0 MOV X0, SP | |
.text:00000071028CE2E4 BL sub_7100845E04 | |
.text:00000071028CE2E8 CBZ X21, loc_71028CE304 | |
.text:00000071028CE2EC ADD X8, X21, #0x50 ; 'P' | |
.text:00000071028CE2F0 | |
.text:00000071028CE2F0 loc_71028CE2F0 ; CODE XREF: calc_initial_damage+68↓j | |
.text:00000071028CE2F0 LDAXR W9, [X8] | |
.text:00000071028CE2F4 SUBS W9, W9, #1 | |
.text:00000071028CE2F8 STLXR W10, W9, [X8] | |
.text:00000071028CE2FC CBNZ W10, loc_71028CE2F0 | |
.text:00000071028CE300 B.EQ loc_71028CE380 | |
.text:00000071028CE304 | |
.text:00000071028CE304 loc_71028CE304 ; CODE XREF: calc_initial_damage+54↑j | |
.text:00000071028CE304 CBZ X22, loc_71028CE394 | |
.text:00000071028CE308 | |
.text:00000071028CE308 loc_71028CE308 ; CODE XREF: calc_initial_damage+FC↓j | |
.text:00000071028CE308 LDR X20, [X20,#0x1E8] | |
.text:00000071028CE30C CBZ X20, loc_71028CE324 | |
.text:00000071028CE310 ADD X8, X20, #0x50 ; 'P' | |
.text:00000071028CE314 | |
.text:00000071028CE314 loc_71028CE314 ; CODE XREF: calc_initial_damage+8C↓j | |
.text:00000071028CE314 LDAXR W9, [X8] | |
.text:00000071028CE318 ADD W9, W9, #1 | |
.text:00000071028CE31C STLXR W10, W9, [X8] | |
.text:00000071028CE320 CBNZ W10, loc_71028CE314 | |
.text:00000071028CE324 | |
.text:00000071028CE324 loc_71028CE324 ; CODE XREF: calc_initial_damage+78↑j | |
.text:00000071028CE324 ADD X1, X20, #0x60 ; '`' | |
.text:00000071028CE328 MOV X0, SP | |
.text:00000071028CE32C MOV X21, SP | |
.text:00000071028CE330 BL sub_71008463F0 | |
.text:00000071028CE334 LDR X8, [SP,#0x730+var_730] | |
.text:00000071028CE338 ADD X0, X21, #0x20 ; ' ' | |
.text:00000071028CE33C MOV X1, X19 | |
.text:00000071028CE340 BLR X8 | |
.text:00000071028CE344 MOV W19, W0 | |
.text:00000071028CE348 MOV X0, SP | |
.text:00000071028CE34C BL sub_7100845E04 | |
.text:00000071028CE350 CBZ X20, loc_71028CE3D4 | |
.text:00000071028CE354 ADD X8, X20, #0x50 ; 'P' | |
.text:00000071028CE358 | |
.text:00000071028CE358 loc_71028CE358 ; CODE XREF: calc_initial_damage+D0↓j | |
.text:00000071028CE358 LDAXR W9, [X8] | |
.text:00000071028CE35C SUBS W9, W9, #1 | |
.text:00000071028CE360 STLXR W10, W9, [X8] | |
.text:00000071028CE364 CBNZ W10, loc_71028CE358 | |
.text:00000071028CE368 B.NE loc_71028CE3D4 | |
.text:00000071028CE36C LDR X8, [X20] | |
.text:00000071028CE370 MOV X0, X20 | |
.text:00000071028CE374 LDR X8, [X8,#0x10] | |
.text:00000071028CE378 BLR X8 | |
.text:00000071028CE37C B loc_71028CE3D4 | |
.text:00000071028CE380 ; --------------------------------------------------------------------------- | |
.text:00000071028CE380 | |
.text:00000071028CE380 loc_71028CE380 ; CODE XREF: calc_initial_damage+6C↑j | |
.text:00000071028CE380 LDR X8, [X21] | |
.text:00000071028CE384 MOV X0, X21 | |
.text:00000071028CE388 LDR X8, [X8,#0x10] | |
.text:00000071028CE38C BLR X8 | |
.text:00000071028CE390 CBNZ X22, loc_71028CE308 | |
.text:00000071028CE394 | |
.text:00000071028CE394 loc_71028CE394 ; CODE XREF: calc_initial_damage:loc_71028CE304↑j | |
.text:00000071028CE394 LDP W8, W9, [X19] | |
.text:00000071028CE398 LSL W9, W9, #1 | |
.text:00000071028CE39C LDP W10, W11, [X19,#8] | |
.text:00000071028CE3A0 MUL W8, W10, W8 | |
.text:00000071028CE3A4 MOV W10, #0xCCCCCCCD | |
.text:00000071028CE3AC UMULL X9, W9, W10 | |
.text:00000071028CE3B0 LSR X9, X9, #0x22 ; '"' | |
.text:00000071028CE3B4 ADD W9, W9, #2 | |
.text:00000071028CE3B8 MUL W8, W8, W9 | |
.text:00000071028CE3BC MOV W9, #0x51EB851F | |
.text:00000071028CE3C4 UDIV W8, W8, W11 | |
.text:00000071028CE3C8 UMULL X8, W8, W9 | |
.text:00000071028CE3CC LSR X8, X8, #0x24 ; '$' | |
.text:00000071028CE3D0 ADD W19, W8, #2 | |
.text:00000071028CE3D4 | |
.text:00000071028CE3D4 loc_71028CE3D4 ; CODE XREF: calc_initial_damage+BC↑j | |
.text:00000071028CE3D4 ; calc_initial_damage+D4↑j ... | |
.text:00000071028CE3D4 MOV W0, W19 | |
.text:00000071028CE3D8 ADD SP, SP, #0x700 | |
.text:00000071028CE3DC LDP X29, X30, [SP,#0x30+var_s0] | |
.text:00000071028CE3E0 LDP X20, X19, [SP,#0x30+var_10] | |
.text:00000071028CE3E4 LDP X22, X21, [SP,#0x30+var_20] | |
.text:00000071028CE3E8 LDR X28, [SP+0x30+var_30],#0x40 | |
.text:00000071028CE3EC RET | |
.text:00000071028CE3EC ; End of function calc_initial_damage |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment