Created
July 24, 2022 18:06
-
-
Save Lusamine/535557332bebc8618ecac46cc65c5bd6 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
bool __fastcall Dpr_Battle_Logic_Capture__checkCaptureCritical( | |
Dpr_Battle_Logic_MainModule_o *mainModule, | |
int32_t captureIndicator, | |
const MethodInfo *method) | |
{ | |
uint32_t ZukanCapturedCount; // w0 | |
int32_t v6; // w20 | |
unsigned __int64 v8; // x8 | |
int32_t v9; // w19 | |
signed int Rand; // w20 | |
if ( (byte_7104ED5630 & 1) == 0 ) | |
{ | |
sub_710009AD20(10884LL); | |
byte_7104ED5630 = 1; | |
} | |
ZukanCapturedCount = Dpr_Battle_Logic_MainModule__GetZukanCapturedCount(mainModule, 0LL); | |
if ( ZukanCapturedCount <= 600 ) | |
{ | |
if ( ZukanCapturedCount > 450 ) | |
{ | |
v6 = 0x2000; | |
if ( !Dpr_Battle_Logic_ItemData__HaveItem(1267u, 0LL) ) | |
goto LABEL_6; | |
goto LABEL_5; | |
} | |
if ( ZukanCapturedCount > 300 ) | |
{ | |
v6 = 0x1800; | |
if ( !Dpr_Battle_Logic_ItemData__HaveItem(1267u, 0LL) ) | |
goto LABEL_6; | |
goto LABEL_5; | |
} | |
if ( ZukanCapturedCount > 150 ) | |
{ | |
v6 = 0x1000; | |
if ( !Dpr_Battle_Logic_ItemData__HaveItem(0x4F3u, 0LL) ) | |
goto LABEL_6; | |
goto LABEL_5; | |
} | |
if ( ZukanCapturedCount < 31 ) | |
return 0; | |
v6 = 0x800; | |
if ( Dpr_Battle_Logic_ItemData__HaveItem(1267u, 0LL) ) | |
LABEL_5: | |
v6 = Dpr_Battle_Logic_FX32__Mul(v6, 0x2000, 0LL); | |
} | |
else | |
{ | |
v6 = 0x2800; | |
if ( Dpr_Battle_Logic_ItemData__HaveItem(1267u, 0LL) ) | |
goto LABEL_5; | |
} | |
LABEL_6: | |
if ( captureIndicator >= 0xFF000 ) | |
captureIndicator = 0xFF000; | |
v8 = 715827883LL * Dpr_Battle_Logic_FX32__Mul(captureIndicator, v6, 0LL); | |
v9 = HIDWORD(v8) + (v8 >> 63); | |
if ( (Dpr_Battle_Logic_calc_TypeInfo->_2.bitflags2 & 2) != 0 && !Dpr_Battle_Logic_calc_TypeInfo->_2.cctor_finished ) | |
sub_710009AE30((__int64)Dpr_Battle_Logic_calc_TypeInfo); | |
Rand = Dpr_Battle_Logic_calc__GetRand(0x100u, 0LL); | |
return Rand < Dpr_Battle_Logic_FX32__Whole(v9, 0LL); | |
} | |
----- | |
.text.1:0000007102170390 ; bool __fastcall Dpr_Battle_Logic_Capture__checkCaptureCritical(Dpr_Battle_Logic_MainModule_o *mainModule, int32_t captureIndicator, const MethodInfo *method) | |
.text.1:0000007102170390 Dpr.Battle.Logic.Capture$$checkCaptureCritical | |
.text.1:0000007102170390 ; CODE XREF: Dpr.Battle.Logic.Capture$$JudgeCapture+B8↑p | |
.text.1:0000007102170390 ; DATA XREF: .data:00000071049990F8↓o | |
.text.1:0000007102170390 | |
.text.1:0000007102170390 var_20 = -0x20 | |
.text.1:0000007102170390 var_10 = -0x10 | |
.text.1:0000007102170390 var_s0 = 0 | |
.text.1:0000007102170390 | |
.text.1:0000007102170390 STR X21, [SP,#-0x10+var_20]! | |
.text.1:0000007102170394 STP X20, X19, [SP,#0x20+var_10] | |
.text.1:0000007102170398 STP X29, X30, [SP,#0x20+var_s0] | |
.text.1:000000710217039C ADD X29, SP, #0x20 | |
.text.1:00000071021703A0 ADRP X21, #byte_7104ED5630@PAGE | |
.text.1:00000071021703A4 LDRB W8, [X21,#byte_7104ED5630@PAGEOFF] | |
.text.1:00000071021703A8 MOV W19, W1 | |
.text.1:00000071021703AC MOV X20, X0 | |
.text.1:00000071021703B0 TBNZ W8, #0, loc_71021703CC | |
.text.1:00000071021703B4 ADRP X8, #off_7104BDE9C0@PAGE | |
.text.1:00000071021703B8 LDR X8, [X8,#off_7104BDE9C0@PAGEOFF] | |
.text.1:00000071021703BC LDR W0, [X8] | |
.text.1:00000071021703C0 BL sub_710009AD20 | |
.text.1:00000071021703C4 MOV W8, #1 | |
.text.1:00000071021703C8 STRB W8, [X21,#byte_7104ED5630@PAGEOFF] | |
.text.1:00000071021703CC | |
.text.1:00000071021703CC loc_71021703CC ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+20↑j | |
.text.1:00000071021703CC MOV X0, X20 ; this | |
.text.1:00000071021703D0 MOV X1, XZR ; method | |
.text.1:00000071021703D4 BL Dpr.Battle.Logic.MainModule$$GetZukanCapturedCount | |
.text.1:00000071021703D8 CMP W0, #0x258 | |
.text.1:00000071021703DC B.LS loc_710217048C | |
.text.1:00000071021703E0 MOV W20, #0x2800 | |
.text.1:00000071021703E4 MOV W0, #0x4F3 ; itemno | |
.text.1:00000071021703E8 MOV X1, XZR ; method | |
.text.1:00000071021703EC BL Dpr.Battle.Logic.ItemData$$HaveItem | |
.text.1:00000071021703F0 TBZ W0, #0, loc_7102170408 | |
.text.1:00000071021703F4 | |
.text.1:00000071021703F4 loc_71021703F4 ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+114↓j | |
.text.1:00000071021703F4 ; Dpr.Battle.Logic.Capture$$checkCaptureCritical+134↓j ... | |
.text.1:00000071021703F4 MOV W0, W20 ; v1 | |
.text.1:00000071021703F8 MOV W1, #0x2000 ; v2 | |
.text.1:00000071021703FC MOV X2, XZR ; method | |
.text.1:0000007102170400 BL Dpr.Battle.Logic.FX32$$Mul | |
.text.1:0000007102170404 MOV W20, W0 | |
.text.1:0000007102170408 | |
.text.1:0000007102170408 loc_7102170408 ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+60↑j | |
.text.1:0000007102170408 ; Dpr.Battle.Logic.Capture$$checkCaptureCritical+118↓j ... | |
.text.1:0000007102170408 CMP W19, #0xFF,LSL#12 | |
.text.1:000000710217040C MOV W8, #0xFF000 | |
.text.1:0000007102170410 CSEL W0, W19, W8, LT ; v1 | |
.text.1:0000007102170414 MOV W1, W20 ; v2 | |
.text.1:0000007102170418 MOV X2, XZR ; method | |
.text.1:000000710217041C BL Dpr.Battle.Logic.FX32$$Mul | |
.text.1:0000007102170420 ADRP X10, #off_7104BA54B0@PAGE | |
.text.1:0000007102170424 LDR X10, [X10,#off_7104BA54B0@PAGEOFF] | |
.text.1:0000007102170428 MOV W8, #0x2AAAAAAB | |
.text.1:0000007102170430 SMULL X8, W0, W8 | |
.text.1:0000007102170434 LSR X9, X8, #0x3F ; '?' | |
.text.1:0000007102170438 LSR X8, X8, #0x20 ; ' ' | |
.text.1:000000710217043C LDR X0, [X10] ; Dpr.Battle.Logic.calc_TypeInfo | |
.text.1:0000007102170440 ADD W19, W8, W9 | |
.text.1:0000007102170444 LDRB W8, [X0,#0x12F] | |
.text.1:0000007102170448 TBZ W8, #1, loc_7102170458 | |
.text.1:000000710217044C LDR W8, [X0,#0xE0] | |
.text.1:0000007102170450 CBNZ W8, loc_7102170458 | |
.text.1:0000007102170454 BL sub_710009AE30 | |
.text.1:0000007102170458 | |
.text.1:0000007102170458 loc_7102170458 ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+B8↑j | |
.text.1:0000007102170458 ; Dpr.Battle.Logic.Capture$$checkCaptureCritical+C0↑j | |
.text.1:0000007102170458 MOV W0, #0x100 ; range | |
.text.1:000000710217045C MOV X1, XZR ; method | |
.text.1:0000007102170460 BL Dpr.Battle.Logic.calc$$GetRand | |
.text.1:0000007102170464 MOV W20, W0 | |
.text.1:0000007102170468 MOV W0, W19 ; v | |
.text.1:000000710217046C MOV X1, XZR ; method | |
.text.1:0000007102170470 BL Dpr.Battle.Logic.FX32$$Whole | |
.text.1:0000007102170474 CMP W20, W0 | |
.text.1:0000007102170478 CSET W0, LT | |
.text.1:000000710217047C LDP X29, X30, [SP,#0x20+var_s0] | |
.text.1:0000007102170480 LDP X20, X19, [SP,#0x20+var_10] | |
.text.1:0000007102170484 LDR X21, [SP+0x20+var_20],#0x30 | |
.text.1:0000007102170488 RET | |
.text.1:000000710217048C ; --------------------------------------------------------------------------- | |
.text.1:000000710217048C | |
.text.1:000000710217048C loc_710217048C ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+4C↑j | |
.text.1:000000710217048C CMP W0, #0x1C2 | |
.text.1:0000007102170490 B.LS loc_71021704AC | |
.text.1:0000007102170494 MOV W20, #0x2000 | |
.text.1:0000007102170498 MOV W0, #0x4F3 ; itemno | |
.text.1:000000710217049C MOV X1, XZR ; method | |
.text.1:00000071021704A0 BL Dpr.Battle.Logic.ItemData$$HaveItem | |
.text.1:00000071021704A4 TBNZ W0, #0, loc_71021703F4 | |
.text.1:00000071021704A8 B loc_7102170408 | |
.text.1:00000071021704AC ; --------------------------------------------------------------------------- | |
.text.1:00000071021704AC | |
.text.1:00000071021704AC loc_71021704AC ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+100↑j | |
.text.1:00000071021704AC CMP W0, #0x12C | |
.text.1:00000071021704B0 B.LS loc_71021704CC | |
.text.1:00000071021704B4 MOV W20, #0x1800 | |
.text.1:00000071021704B8 MOV W0, #0x4F3 ; itemno | |
.text.1:00000071021704BC MOV X1, XZR ; method | |
.text.1:00000071021704C0 BL Dpr.Battle.Logic.ItemData$$HaveItem | |
.text.1:00000071021704C4 TBNZ W0, #0, loc_71021703F4 | |
.text.1:00000071021704C8 B loc_7102170408 | |
.text.1:00000071021704CC ; --------------------------------------------------------------------------- | |
.text.1:00000071021704CC | |
.text.1:00000071021704CC loc_71021704CC ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+120↑j | |
.text.1:00000071021704CC CMP W0, #0x96 | |
.text.1:00000071021704D0 B.LS loc_71021704EC | |
.text.1:00000071021704D4 MOV W20, #0x1000 | |
.text.1:00000071021704D8 MOV W0, #0x4F3 ; itemno | |
.text.1:00000071021704DC MOV X1, XZR ; method | |
.text.1:00000071021704E0 BL Dpr.Battle.Logic.ItemData$$HaveItem | |
.text.1:00000071021704E4 TBNZ W0, #0, loc_71021703F4 | |
.text.1:00000071021704E8 B loc_7102170408 | |
.text.1:00000071021704EC ; --------------------------------------------------------------------------- | |
.text.1:00000071021704EC | |
.text.1:00000071021704EC loc_71021704EC ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+140↑j | |
.text.1:00000071021704EC CMP W0, #0x1F | |
.text.1:00000071021704F0 B.CC loc_710217050C | |
.text.1:00000071021704F4 MOV W20, #0x800 | |
.text.1:00000071021704F8 MOV W0, #0x4F3 ; itemno | |
.text.1:00000071021704FC MOV X1, XZR ; method | |
.text.1:0000007102170500 BL Dpr.Battle.Logic.ItemData$$HaveItem | |
.text.1:0000007102170504 TBNZ W0, #0, loc_71021703F4 | |
.text.1:0000007102170508 B loc_7102170408 | |
.text.1:000000710217050C ; --------------------------------------------------------------------------- | |
.text.1:000000710217050C | |
.text.1:000000710217050C loc_710217050C ; CODE XREF: Dpr.Battle.Logic.Capture$$checkCaptureCritical+160↑j | |
.text.1:000000710217050C MOV W0, WZR | |
.text.1:0000007102170510 LDP X29, X30, [SP,#0x20+var_s0] | |
.text.1:0000007102170514 LDP X20, X19, [SP,#0x20+var_10] | |
.text.1:0000007102170518 LDR X21, [SP+0x20+var_20],#0x30 | |
.text.1:000000710217051C RET | |
.text.1:000000710217051C ; End of function Dpr.Battle.Logic.Capture$$checkCaptureCritical |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment