Created
February 8, 2022 16:18
-
-
Save cairthenn/21227b53b624c4e5b7f251b77507f57a to your computer and use it in GitHub Desktop.
FFXIV action usage assembly commenting
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
# To better understand how actions are handled in XIV, I decided to step-by-step comment thru the assembly | |
# Was this useful? Well. To each their own. | |
# Where the function keeps some stuff for a lot of the time: | |
r12 : location, Vector3* if called with resolvable target, otherwise bool* | |
rbp : target | |
eax : action id | |
r15 : action type | |
rdi : action manager pointer | |
# save register stack location | |
rsi : rsp + 0x80 | |
r13 : rsp + 0x88 | |
r14 : rsp + 0x98 | |
# known stack | |
rsp + 0xA0 : param | |
rsp + 0xA8 : origin | |
rsp + 0xB0 : unk_param | |
rsp + 0xB8 : location | |
ffxiv_dx11.exe+7EA6A0 - 4C 8B A4 24 B8000000 - mov r12,[rsp+000000B8] # Moves location arg to r12 | |
ffxiv_dx11.exe+7EA6A8 - 49 8B E9 - mov rbp,r9 # target to rbp | |
ffxiv_dx11.exe+7EA6AB - 41 8B C0 - mov eax,r8d # action id to eax | |
ffxiv_dx11.exe+7EA6AE - 44 8B FA - mov r15d,edx # action type to r15 | |
ffxiv_dx11.exe+7EA6B1 - 48 8B F9 - mov rdi,rcx # action manager pointer to rdi | |
ffxiv_dx11.exe+7EA6B4 - 4D 85 E4 - test r12,r12 # | |
ffxiv_dx11.exe+7EA6B7 - 74 05 - je ffxiv_dx11.exe+7EA6BE # Label A | |
ffxiv_dx11.exe+7EA6B9 - 41 C6 04 24 00 - mov byte ptr [r12],00 # Zero it out | |
A: ffxiv_dx11.exe+7EA6BE - 83 BC 24 A8000000 01 - cmp dword ptr [rsp+000000A8],01 # Check if the action is origin 1 (queue) | |
ffxiv_dx11.exe+7EA6C6 - 8B D8 - mov ebx,eax # Move action ID to ebx | |
ffxiv_dx11.exe+7EA6C8 - 74 14 - je ffxiv_dx11.exe+7EA6DE # Label B if origin is queue | |
ffxiv_dx11.exe+7EA6CA - 80 79 68 00 - cmp byte ptr [rcx+68],00 # Check action manager + 0x68 == 0. This is essentially a bool that says something is queued | |
ffxiv_dx11.exe+7EA6CE - 74 0E - je ffxiv_dx11.exe+7EA6DE # Label B if nothing in queue | |
ffxiv_dx11.exe+7EA6D0 - 32 C0 - xor al,al # Return value = false (0) | |
ffxiv_dx11.exe+7EA6D2 - 48 83 C4 50 - add rsp,50 # Restore stack | |
ffxiv_dx11.exe+7EA6D6 - 41 5F - pop r15 | |
ffxiv_dx11.exe+7EA6D8 - 41 5C - pop r12 | |
ffxiv_dx11.exe+7EA6DA - 5F - pop rdi | |
ffxiv_dx11.exe+7EA6DB - 5D - pop rbp | |
ffxiv_dx11.exe+7EA6DC - 5B - pop rbx | |
ffxiv_dx11.exe+7EA6DD - C3 - ret # Origin was not queue and there was something in the queue, return early | |
B: ffxiv_dx11.exe+7EA6DE - 48 89 B4 24 80000000 - mov [rsp+00000080],rsi # RSI first use, preserve value on stack | |
ffxiv_dx11.exe+7EA6E6 - 48 8B 35 03566901 - mov rsi,[ffxiv_dx11.exe+1E7FCF0] # Gets player game object into RSI | |
ffxiv_dx11.exe+7EA6ED - 48 89 B4 24 B8000000 - mov [rsp+000000B8],rsi | |
ffxiv_dx11.exe+7EA6F5 - 48 85 F6 - test rsi,rsi # Check if it's a null pointer | |
ffxiv_dx11.exe+7EA6F8 - 75 07 - jne ffxiv_dx11.exe+7EA701 # Label C if location is not null | |
ffxiv_dx11.exe+7EA6FA - 32 C0 - xor al,al # return value = 0 (false) | |
ffxiv_dx11.exe+7EA6FC - E9 B0050000 - jmp ffxiv_dx11.exe+7EACB1 # This jumps to an early return which restores RSI | |
C: ffxiv_dx11.exe+7EA701 - 4C 89 AC 24 88000000 - mov [rsp+00000088],r13 # r13 first use, preserve value on stack | |
ffxiv_dx11.exe+7EA709 - 8B D0 - mov edx,eax # action ID to edx | |
ffxiv_dx11.exe+7EA70B - 41 8B CF - mov ecx,r15d # action type to ecx | |
ffxiv_dx11.exe+7EA70E - 4C 89 B4 24 98000000 - mov [rsp+00000098],r14 # preserve r14 on the stack | |
ffxiv_dx11.exe+7EA716 - E8 2556FFFF - call ffxiv_dx11.exe+7DFD40 # uint UnknownFunction(action type, action id); returns new action ID, helps with mounting and such | |
ffxiv_dx11.exe+7EA71B - 44 8B F0 - mov r14d,eax # Return value to r14 | |
ffxiv_dx11.exe+7EA71E - 41 83 FF 01 - cmp r15d,01 # Check if action type is 1 | |
ffxiv_dx11.exe+7EA722 - 75 0F - jne ffxiv_dx11.exe+7EA733 # Label D if action type isn't 1 | |
ffxiv_dx11.exe+7EA724 - 8B D0 - mov edx,eax # action ID to edx | |
ffxiv_dx11.exe+7EA726 - 48 8B CF - mov rcx,rdi # action manager this ptr to rcx | |
ffxiv_dx11.exe+7EA729 - E8 62EDFFFF - call ffxiv_dx11.exe+7E9490 # uint ActionManager.GetUpgradedActionID(action id); | |
ffxiv_dx11.exe+7EA72E - 44 8B F0 - mov r14d,eax # return value to r14 | |
ffxiv_dx11.exe+7EA731 - 8B D8 - mov ebx,eax # upgraded action ID to ebx | |
D: ffxiv_dx11.exe+7EA733 - 41 8B CE - mov ecx,r14d # Either comes from directly above or before the jump | |
ffxiv_dx11.exe+7EA736 - E8 D503EAFF - call ffxiv_dx11.exe+68AB10 # Get's the action resource ******************************************* | |
ffxiv_dx11.exe+7EA73B - 4C 8B E8 - mov r13,rax # puts resource pointer in r13 | |
ffxiv_dx11.exe+7EA73E - 48 85 C0 - test rax,rax # checks if the resource was null | |
ffxiv_dx11.exe+7EA741 - 0F84 1B020000 - je ffxiv_dx11.exe+7EA962 # Jumps to an early return with a ret value of false | |
ffxiv_dx11.exe+7EA747 - 41 83 FE 04 - cmp r14d,04 # Check if upgraded action ID is 4 (mounting) | |
ffxiv_dx11.exe+7EA74B - 75 42 - jne ffxiv_dx11.exe+7EA78F # Label F if not mounting | |
# Mount specific code | |
ffxiv_dx11.exe+7EA74D - 48 8B CE - mov rcx,rsi # Player game object -> rcx | |
ffxiv_dx11.exe+7EA750 - E8 7B33F0FF - call ffxiv_dx11.exe+6EDAD0 # returns player game object + 0xC38, which is your current mount | |
ffxiv_dx11.exe+7EA755 - 66 85 C0 - test ax,ax # Check if return if 0 | |
ffxiv_dx11.exe+7EA758 - 74 4E - je ffxiv_dx11.exe+7EA7A8 # Label G if return is 0 (not mounted) | |
# Dismount stuff | |
ffxiv_dx11.exe+7EA75A - 48 8B CE - mov rcx,rsi | |
ffxiv_dx11.exe+7EA75D - E8 6E33F0FF - call ffxiv_dx11.exe+6EDAD0 # Gets the mount again | |
ffxiv_dx11.exe+7EA762 - 0FB7 C8 - movzx ecx,ax # Moves mount ID to ECX | |
ffxiv_dx11.exe+7EA765 - E8 3626EAFF - call ffxiv_dx11.exe+68CDA0 # IntPtr GetMountResource(mount id); | |
ffxiv_dx11.exe+7EA76A - 48 85 C0 - test rax,rax # | |
ffxiv_dx11.exe+7EA76D - 0F84 EF010000 - je ffxiv_dx11.exe+7EA962 # If it's null, early return 0 (false) | |
ffxiv_dx11.exe+7EA773 - 66 83 78 38 00 - cmp word ptr [rax+38],00 # Check resource + 0x38 | |
ffxiv_dx11.exe+7EA778 - 7C 2E - jl ffxiv_dx11.exe+7EA7A8 # If the value is less than 0, go to label G | |
E: ffxiv_dx11.exe+7EA77A - 33 D2 - xor edx,edx # Set edx = 0 | |
ffxiv_dx11.exe+7EA77C - 48 8D 0D 7DE06B01 - lea rcx,[ffxiv_dx11.exe+1EA8800] # Get static function | |
ffxiv_dx11.exe+7EA783 - E8 88FFFCFF - call ffxiv_dx11.exe+7BA710 # Function to try to dismount (?????????????) | |
ffxiv_dx11.exe+7EA788 - B0 01 - mov al,01 # Set return value to TRUE | |
ffxiv_dx11.exe+7EA78A - E9 12050000 - jmp ffxiv_dx11.exe+7EACA1 # jump to function cleanup | |
F: ffxiv_dx11.exe+7EA78F - 41 81 FE 5D4E0000 - cmp r14d,00004E5D # Checks if you are ACCESSORIZING | |
ffxiv_dx11.exe+7EA796 - 75 10 - jne ffxiv_dx11.exe+7EA7A8 # Label G if not accessorizing | |
ffxiv_dx11.exe+7EA798 - 48 8D 8E F80D0000 - lea rcx,[rsi+00000DF8] | |
ffxiv_dx11.exe+7EA79F - E8 DCCF9400 - call ffxiv_dx11.exe+1137780 | |
ffxiv_dx11.exe+7EA7A4 - 84 C0 - test al,al # if return is true, jump back up | |
ffxiv_dx11.exe+7EA7A6 - 75 D2 - jne ffxiv_dx11.exe+7EA77A # back up to label E | |
G: ffxiv_dx11.exe+7EA7A8 - C6 44 24 28 01 - mov byte ptr [rsp+28],01 # Modifies lowest byte of local pointer (rsp+28) | |
ffxiv_dx11.exe+7EA7AD - 4C 8B CD - mov r9,rbp # Moves target ID to r9 | |
ffxiv_dx11.exe+7EA7B0 - 44 8B C3 - mov r8d,ebx # Moves action ID to r8 | |
ffxiv_dx11.exe+7EA7B3 - C6 44 24 20 01 - mov byte ptr [rsp+20],01 # Modifies lowest byte of local pointer (rsp+20) | |
ffxiv_dx11.exe+7EA7B8 - 41 8B D7 - mov edx,r15d # moves action type to EDX | |
ffxiv_dx11.exe+7EA7BB - 48 8B CF - mov rcx,rdi # moves action manager pointer to rcx | |
ffxiv_dx11.exe+7EA7BE - E8 FDC7FFFF - call ffxiv_dx11.exe+7E6FC0 # ActionManager.UnknownFunction(ActionType, action id, target id) | |
# This function is some sort of status checker | |
# 0 = OK | |
# 0x23C (572) = Cannot use yet | |
# 0x243 (579) = Cannot execute at this time | |
# 0x244 (580) = Casting | |
# 0x246 (582) = Not yet ready | |
# 0x247 (583) = No item | |
# 0x536 = Companion related | |
ffxiv_dx11.exe+7EA7C3 - 83 BC 24 A8000000 02 - cmp dword ptr [rsp+000000A8],02 # Check if the origin is 2 (text/macro) | |
ffxiv_dx11.exe+7EA7CB - 8B F0 - mov esi,eax # Move return result into ESI | |
ffxiv_dx11.exe+7EA7CD - 0F84 B6000000 - je ffxiv_dx11.exe+7EA889 # Label K if macro/text source | |
# Action queueing here | |
ffxiv_dx11.exe+7EA7D3 - 80 7F 68 00 - cmp byte ptr [rdi+68],00 # Check if an action is in the queue | |
ffxiv_dx11.exe+7EA7D7 - 0F85 AC000000 - jne ffxiv_dx11.exe+7EA889 # Label K if queue is full | |
ffxiv_dx11.exe+7EA7DD - 41 83 FE 05 - cmp r14d,05 # | |
ffxiv_dx11.exe+7EA7E1 - 0F84 A2000000 - je ffxiv_dx11.exe+7EA889 # Label K if action id 5 (dont queue teleport) | |
ffxiv_dx11.exe+7EA7E7 - 05 BCFDFFFF - add eax,FFFFFDBC # Subtract 580 | |
ffxiv_dx11.exe+7EA7EC - A9 FDFFFFFF - test eax,FFFFFFFD # Checks if anything but bit 2 is set (0x244 and 0x246 will pass) | |
ffxiv_dx11.exe+7EA7F1 - 74 11 - je ffxiv_dx11.exe+7EA804 # Label H | |
ffxiv_dx11.exe+7EA7F3 - F3 0F10 4F 08 - movss xmm1,[rdi+08] # Checks action manager + 0x08, which indicates the remaining animation time | |
ffxiv_dx11.exe+7EA7F8 - 0F57 C0 - xorps xmm0,xmm0 | |
ffxiv_dx11.exe+7EA7FB - 0F2F C8 - comiss xmm1,xmm0 | |
ffxiv_dx11.exe+7EA7FE - 0F86 85000000 - jbe ffxiv_dx11.exe+7EA889 # If the remaining animation time is 0, skip queueing (Label K) | |
# More research into action resource to figure out what's at offset 0x20 and 0x3A | |
H: ffxiv_dx11.exe+7EA804 - 41 0FB6 4D 20 - movzx ecx,byte ptr [r13+20] # Moves action resource + 0x20 (ACTION CATEGORY) into ecx | |
ffxiv_dx11.exe+7EA809 - 8D 41 FE - lea eax,[rcx-02] # Subtract 2 and put it in rax | |
ffxiv_dx11.exe+7EA80C - 3C 01 - cmp al,01 | |
ffxiv_dx11.exe+7EA80E - 76 30 - jna ffxiv_dx11.exe+7EA840 # Label J if action category is 3 or less (spell and weaponskill) | |
ffxiv_dx11.exe+7EA810 - 80 F9 04 - cmp cl,04 | |
# This is how sprint, items, etc skip the queue: | |
ffxiv_dx11.exe+7EA813 - 75 07 - jne ffxiv_dx11.exe+7EA81C # Label I if category is not 4 | |
ffxiv_dx11.exe+7EA815 - 41 F6 45 3A 01 - test byte ptr [r13+3A],01 # Some sort of target flags | |
ffxiv_dx11.exe+7EA81A - 74 24 - je ffxiv_dx11.exe+7EA840 # Label J if not ground target | |
I: ffxiv_dx11.exe+7EA81C - 41 81 FE F50D0000 - cmp r14d,00000DF5 | |
ffxiv_dx11.exe+7EA823 - 74 1B - je ffxiv_dx11.exe+7EA840 # Label J if Ley Lines | |
ffxiv_dx11.exe+7EA825 - 41 81 FE FB1C0000 - cmp r14d,00001CFB | |
ffxiv_dx11.exe+7EA82C - 74 12 - je ffxiv_dx11.exe+7EA840 # Label J if Between the Lines | |
ffxiv_dx11.exe+7EA82E - 41 81 FE 535F0000 - cmp r14d,00005F53 | |
ffxiv_dx11.exe+7EA835 - 74 09 - je ffxiv_dx11.exe+7EA840 # Label J if Regresss | |
ffxiv_dx11.exe+7EA837 - 41 81 FE AB6C0000 - cmp r14d,00006CAB | |
ffxiv_dx11.exe+7EA83E - 75 49 - jne ffxiv_dx11.exe+7EA889 # Label K if not Regress (PVP) | |
J: ffxiv_dx11.exe+7EA840 - 44 8B C3 - mov r8d,ebx # action id to r8 | |
ffxiv_dx11.exe+7EA843 - 41 8B D7 - mov edx,r15d # action type to rdx | |
ffxiv_dx11.exe+7EA846 - 48 8B CF - mov rcx,rdi # Action manager to rcx | |
ffxiv_dx11.exe+7EA849 - E8 C20D0000 - call ffxiv_dx11.exe+7EB610 # bool ActionManager.CanQueue(ActionType, ActionId) | |
ffxiv_dx11.exe+7EA84E - 84 C0 - test al,al | |
ffxiv_dx11.exe+7EA850 - 74 37 - je ffxiv_dx11.exe+7EA889 | |
ffxiv_dx11.exe+7EA852 - 8B 84 24 90000000 - mov eax,[rsp+00000090] | |
ffxiv_dx11.exe+7EA859 - 89 47 70 - mov [rdi+70],eax # ActionManager + 0x70 = Action ID | |
ffxiv_dx11.exe+7EA85C - 8B 84 24 A8000000 - mov eax,[rsp+000000A8] | |
ffxiv_dx11.exe+7EA863 - 89 87 80000000 - mov [rdi+00000080],eax # ActionManager + 0x80 = Origin (should always be 0, nothing else can get here ATM) | |
ffxiv_dx11.exe+7EA869 - 8B 84 24 B0000000 - mov eax,[rsp+000000B0] | |
ffxiv_dx11.exe+7EA870 - 89 87 84000000 - mov [rdi+00000084],eax # ActionManager + 0x84 = action param | |
ffxiv_dx11.exe+7EA876 - B0 01 - mov al,01 # Set return to 1 (true) | |
ffxiv_dx11.exe+7EA878 - C6 47 68 01 - mov byte ptr [rdi+68],01 # ActionManager + 0x68 = 1 (this is a bool that indicates something is queued) | |
ffxiv_dx11.exe+7EA87C - 44 89 7F 6C - mov [rdi+6C],r15d # ActionManager + 0x6C = Action Type | |
ffxiv_dx11.exe+7EA880 - 48 89 6F 78 - mov [rdi+78],rbp # ActionManager + 0x78 = target id | |
ffxiv_dx11.exe+7EA884 - E9 18040000 - jmp ffxiv_dx11.exe+7EACA1 # jump to return | |
K: ffxiv_dx11.exe+7EA889 - 85 F6 - test esi,esi # This is the return from the status check earlier | |
ffxiv_dx11.exe+7EA88B - 74 65 - je ffxiv_dx11.exe+7EA8F2 # Label M if status was 0 (ok) | |
# If the code gets here, the spell won't cast, there is some cleanup before jumping to the return code | |
ffxiv_dx11.exe+7EA88D - 81 FE 46020000 - cmp esi,00000246 # This happens if something is on recast usually | |
ffxiv_dx11.exe+7EA893 - 75 1D - jne ffxiv_dx11.exe+7EA8B2 # L if status is not "recast" | |
ffxiv_dx11.exe+7EA895 - 48 8B 0D ACEB6601 - mov rcx,[ffxiv_dx11.exe+1E59448] # Gets some game object | |
ffxiv_dx11.exe+7EA89C - 8D 56 25 - lea edx,[rsi+25] | |
ffxiv_dx11.exe+7EA89F - 48 83 C1 10 - add rcx,10 | |
ffxiv_dx11.exe+7EA8A3 - E8 C8EE87FF - call ffxiv_dx11.exe+69770 # UnknownGameObject.UnknownFunction(action status + 0x25) | |
ffxiv_dx11.exe+7EA8A8 - 83 78 20 00 - cmp dword ptr [rax+20],00 | |
ffxiv_dx11.exe+7EA8AC - 0F84 B0000000 - je ffxiv_dx11.exe+7EA962 # Label N if 0 | |
L: ffxiv_dx11.exe+7EA8B2 - F3 0F10 05 5ADCF100 - movss xmm0,[ffxiv_dx11.exe+1708514] # const 100.0 to xmm0 | |
ffxiv_dx11.exe+7EA8BA - 33 C0 - xor eax,eax # eax to 0 | |
ffxiv_dx11.exe+7EA8BC - 48 8B 94 24 B8000000 - mov rdx,[rsp+000000B8] # location to rdx | |
ffxiv_dx11.exe+7EA8C4 - 45 8B CF - mov r9d,r15d # action type to r9 | |
ffxiv_dx11.exe+7EA8C7 - F3 0F11 44 24 48 - movss [rsp+48],xmm0 # 100.0 to rsp+48 | |
ffxiv_dx11.exe+7EA8CD - 45 33 C0 - xor r8d,r8d # r8 to 0 | |
ffxiv_dx11.exe+7EA8D0 - 89 44 24 40 - mov [rsp+40],eax # rsp+40 to 0 | |
ffxiv_dx11.exe+7EA8D4 - 8B CE - mov ecx,esi # status to rcx | |
ffxiv_dx11.exe+7EA8D6 - 89 44 24 38 - mov [rsp+38],eax # rsp+38 to 0 | |
ffxiv_dx11.exe+7EA8DA - 89 44 24 30 - mov [rsp+30],eax # rsp+30 to 0 | |
ffxiv_dx11.exe+7EA8DE - 89 44 24 28 - mov [rsp+28],eax # rsp+28 to 0 | |
ffxiv_dx11.exe+7EA8E2 - 89 5C 24 20 - mov [rsp+20],ebx # rsp+20 to | |
ffxiv_dx11.exe+7EA8E6 - E8 F535FDFF - call ffxiv_dx11.exe+7BDEE0 # Error toast call | |
ffxiv_dx11.exe+7EA8EB - 32 C0 - xor al,al # set return to 0 (false) | |
ffxiv_dx11.exe+7EA8ED - E9 AF030000 - jmp ffxiv_dx11.exe+7EACA1 # jump to return | |
# If you got here this means that the queue was empty and it's possible to use the action | |
M: ffxiv_dx11.exe+7EA8F2 - 41 F6 45 3A 01 - test byte ptr [r13+3A],01 # Check action resource + 0x3A | |
ffxiv_dx11.exe+7EA8F7 - 74 70 - je ffxiv_dx11.exe+7EA969 # Label O if 1 | |
ffxiv_dx11.exe+7EA8F9 - 41 81 FE F50D0000 - cmp r14d,00000DF5 | |
ffxiv_dx11.exe+7EA900 - 74 67 - je ffxiv_dx11.exe+7EA969 # Label O if Ley Lines | |
ffxiv_dx11.exe+7EA902 - 41 81 FE FB1C0000 - cmp r14d,00001CFB | |
ffxiv_dx11.exe+7EA909 - 74 5E - je ffxiv_dx11.exe+7EA969 # Label O if Between the Lines | |
ffxiv_dx11.exe+7EA90B - 41 81 FE 535F0000 - cmp r14d,00005F53 | |
ffxiv_dx11.exe+7EA912 - 74 55 - je ffxiv_dx11.exe+7EA969 # Label O if Regress | |
ffxiv_dx11.exe+7EA914 - 41 81 FE AB6C0000 - cmp r14d,00006CAB | |
ffxiv_dx11.exe+7EA91B - 74 4C - je ffxiv_dx11.exe+7EA969 # Label O if Regress (PVP) | |
ffxiv_dx11.exe+7EA91D - 4D 85 E4 - test r12,r12 # Check if location is null | |
ffxiv_dx11.exe+7EA920 - 74 05 - je ffxiv_dx11.exe+7EA927 | |
ffxiv_dx11.exe+7EA922 - 41 C6 04 24 01 - mov byte ptr [r12],01 # If not, make it true | |
ffxiv_dx11.exe+7EA927 - 33 C0 - xor eax,eax # eax to 0 | |
ffxiv_dx11.exe+7EA929 - 44 8B CB - mov r9d,ebx # action id to r9 | |
ffxiv_dx11.exe+7EA92C - 45 8B C7 - mov r8d,r15d # action type to r8 | |
ffxiv_dx11.exe+7EA92F - 89 44 24 20 - mov [rsp+20],eax # rsp+0x20 to 0 | |
ffxiv_dx11.exe+7EA933 - 41 8B D6 - mov edx,r14d # action id to rdx | |
ffxiv_dx11.exe+7EA936 - 48 8B CF - mov rcx,rdi # actionmanager to rcx | |
# This function will create the orange ground circle, or immediately place the action if it was specified with a target, eg <t> | |
ffxiv_dx11.exe+7EA939 - E8 B22B0000 - call ffxiv_dx11.exe+7ED4F0 # ActionManager.CreateGroundTarget(uint circle_id, uint action_id, ActionType); | |
ffxiv_dx11.exe+7EA93E - 41 80 7D 20 08 - cmp byte ptr [r13+20],08 | |
ffxiv_dx11.exe+7EA943 - 75 1D - jne ffxiv_dx11.exe+7EA962 # Label N if resource+0x20 is not 8 | |
# Gets the same unknown game object from earlier, note that the below code paths all lead to N which returns early with false | |
ffxiv_dx11.exe+7EA945 - 48 8B 0D FCEA6601 - mov rcx,[ffxiv_dx11.exe+1E59448] | |
ffxiv_dx11.exe+7EA94C - E8 AF828AFF - call ffxiv_dx11.exe+92C00 | |
ffxiv_dx11.exe+7EA951 - 48 85 C0 - test rax,rax | |
ffxiv_dx11.exe+7EA954 - 74 0C - je ffxiv_dx11.exe+7EA962 # Conditional jump to Label N | |
ffxiv_dx11.exe+7EA956 - 48 8B 10 - mov rdx,[rax] | |
ffxiv_dx11.exe+7EA959 - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EA95C - FF 92 48030000 - call qword ptr [rdx+00000348] | |
N: ffxiv_dx11.exe+7EA962 - 32 C0 - xor al,al # return value false | |
ffxiv_dx11.exe+7EA964 - E9 38030000 - jmp ffxiv_dx11.exe+7EACA1 # label END | |
O: ffxiv_dx11.exe+7EA969 - E8 62409700 - call ffxiv_dx11.exe+115E9D0 | |
ffxiv_dx11.exe+7EA96E - 41 8D 47 FF - lea eax,[r15-01] | |
ffxiv_dx11.exe+7EA972 - 40 B6 01 - mov sil,01 { 1 } | |
ffxiv_dx11.exe+7EA975 - 83 F8 13 - cmp eax,13 { 19 } | |
ffxiv_dx11.exe+7EA978 - 0F87 0D030000 - ja ffxiv_dx11.exe+7EAC8B | |
ffxiv_dx11.exe+7EA97E - 48 8D 15 7B5681FF - lea rdx,[ffxiv_dx11.exe] { (9460301) } | |
ffxiv_dx11.exe+7EA985 - 48 98 - cdqe | |
ffxiv_dx11.exe+7EA987 - 8B 8C 82 A0AD7E00 - mov ecx,[rdx+rax*4+007EADA0] | |
ffxiv_dx11.exe+7EA98E - 48 03 CA - add rcx,rdx | |
ffxiv_dx11.exe+7EA991 - FF E1 - jmp rcx | |
ffxiv_dx11.exe+7EA993 - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EA995 - 48 8D 0D A4676B01 - lea rcx,[ffxiv_dx11.exe+1EA1140] { (0) } | |
ffxiv_dx11.exe+7EA99C - E8 2FF1EEFF - call ffxiv_dx11.exe+6D9AD0 | |
ffxiv_dx11.exe+7EA9A1 - 84 C0 - test al,al | |
ffxiv_dx11.exe+7EA9A3 - 0F85 B4030000 - jne ffxiv_dx11.exe+7EAD5D | |
ffxiv_dx11.exe+7EA9A9 - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EA9AB - 48 8D 0D 8E676B01 - lea rcx,[ffxiv_dx11.exe+1EA1140] { (0) } | |
ffxiv_dx11.exe+7EA9B2 - E8 39DFEEFF - call ffxiv_dx11.exe+6D88F0 | |
ffxiv_dx11.exe+7EA9B7 - 84 C0 - test al,al | |
ffxiv_dx11.exe+7EA9B9 - 0F85 EF000000 - jne ffxiv_dx11.exe+7EAAAE | |
ffxiv_dx11.exe+7EA9BF - 41 81 FE 22040000 - cmp r14d,00000422 { 1058 } | |
ffxiv_dx11.exe+7EA9C6 - 75 6D - jne ffxiv_dx11.exe+7EAA35 | |
ffxiv_dx11.exe+7EA9C8 - 48 8B 0D 79EA6601 - mov rcx,[ffxiv_dx11.exe+1E59448] { (20BC0B368E0) } | |
ffxiv_dx11.exe+7EA9CF - E8 2C828AFF - call ffxiv_dx11.exe+92C00 | |
ffxiv_dx11.exe+7EA9D4 - 48 85 C0 - test rax,rax | |
ffxiv_dx11.exe+7EA9D7 - 74 89 - je ffxiv_dx11.exe+7EA962 | |
ffxiv_dx11.exe+7EA9D9 - 48 8B 10 - mov rdx,[rax] | |
ffxiv_dx11.exe+7EA9DC - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EA9DF - FF 92 10010000 - call qword ptr [rdx+00000110] | |
ffxiv_dx11.exe+7EA9E5 - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EA9E8 - BA 8C000000 - mov edx,0000008C { 140 } | |
ffxiv_dx11.exe+7EA9ED - E8 7EAEA1FF - call ffxiv_dx11.exe+205870 | |
ffxiv_dx11.exe+7EA9F2 - 48 8B F8 - mov rdi,rax | |
ffxiv_dx11.exe+7EA9F5 - 48 85 C0 - test rax,rax | |
ffxiv_dx11.exe+7EA9F8 - 0F84 64FFFFFF - je ffxiv_dx11.exe+7EA962 | |
ffxiv_dx11.exe+7EA9FE - 33 C0 - xor eax,eax | |
ffxiv_dx11.exe+7EAA00 - 48 8D 0D 59676B01 - lea rcx,[ffxiv_dx11.exe+1EA1160] { (1) } | |
ffxiv_dx11.exe+7EAA07 - 66 89 44 24 30 - mov [rsp+30],ax | |
ffxiv_dx11.exe+7EAA0C - 45 33 C9 - xor r9d,r9d | |
ffxiv_dx11.exe+7EAA0F - C6 44 24 28 01 - mov byte ptr [rsp+28],01 { 1 } | |
ffxiv_dx11.exe+7EAA14 - 45 33 C0 - xor r8d,r8d | |
ffxiv_dx11.exe+7EAA17 - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EAA19 - C6 44 24 20 01 - mov byte ptr [rsp+20],01 { 1 } | |
ffxiv_dx11.exe+7EAA1E - E8 6DC9ECFF - call ffxiv_dx11.exe+6B7390 | |
ffxiv_dx11.exe+7EAA23 - 48 8B D0 - mov rdx,rax | |
ffxiv_dx11.exe+7EAA26 - 48 8B CF - mov rcx,rdi | |
ffxiv_dx11.exe+7EAA29 - E8 D2951400 - call ffxiv_dx11.exe+934000 | |
ffxiv_dx11.exe+7EAA2E - B0 01 - mov al,01 { 1 } | |
ffxiv_dx11.exe+7EAA30 - E9 6C020000 - jmp ffxiv_dx11.exe+7EACA1 | |
ffxiv_dx11.exe+7EAA35 - 41 83 FF 02 - cmp r15d,02 { 2 } | |
ffxiv_dx11.exe+7EAA39 - 75 7A - jne ffxiv_dx11.exe+7EAAB5 | |
ffxiv_dx11.exe+7EAA3B - 81 FB D3210000 - cmp ebx,000021D3 { 8659 } | |
ffxiv_dx11.exe+7EAA41 - 75 72 - jne ffxiv_dx11.exe+7EAAB5 | |
ffxiv_dx11.exe+7EAA43 - 48 8B 0D FEE96601 - mov rcx,[ffxiv_dx11.exe+1E59448] { (20BC0B368E0) } | |
ffxiv_dx11.exe+7EAA4A - E8 B1818AFF - call ffxiv_dx11.exe+92C00 | |
ffxiv_dx11.exe+7EAA4F - 48 85 C0 - test rax,rax | |
ffxiv_dx11.exe+7EAA52 - 0F84 0AFFFFFF - je ffxiv_dx11.exe+7EA962 | |
ffxiv_dx11.exe+7EAA58 - 48 8B 10 - mov rdx,[rax] | |
ffxiv_dx11.exe+7EAA5B - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EAA5E - FF 92 10010000 - call qword ptr [rdx+00000110] | |
ffxiv_dx11.exe+7EAA64 - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EAA67 - BA 8A000000 - mov edx,0000008A { 138 } | |
ffxiv_dx11.exe+7EAA6C - E8 FFADA1FF - call ffxiv_dx11.exe+205870 | |
ffxiv_dx11.exe+7EAA71 - 48 8B D8 - mov rbx,rax | |
ffxiv_dx11.exe+7EAA74 - 48 85 C0 - test rax,rax | |
ffxiv_dx11.exe+7EAA77 - 0F84 E5FEFFFF - je ffxiv_dx11.exe+7EA962 | |
ffxiv_dx11.exe+7EAA7D - 33 C0 - xor eax,eax | |
ffxiv_dx11.exe+7EAA7F - 48 8D 0D DA666B01 - lea rcx,[ffxiv_dx11.exe+1EA1160] { (1) } | |
ffxiv_dx11.exe+7EAA86 - 66 89 44 24 30 - mov [rsp+30],ax | |
ffxiv_dx11.exe+7EAA8B - 45 33 C9 - xor r9d,r9d | |
ffxiv_dx11.exe+7EAA8E - 88 44 24 28 - mov [rsp+28],al | |
ffxiv_dx11.exe+7EAA92 - 45 33 C0 - xor r8d,r8d | |
ffxiv_dx11.exe+7EAA95 - BA D3210000 - mov edx,000021D3 { 8659 } | |
ffxiv_dx11.exe+7EAA9A - 88 44 24 20 - mov [rsp+20],al | |
ffxiv_dx11.exe+7EAA9E - E8 EDC8ECFF - call ffxiv_dx11.exe+6B7390 | |
ffxiv_dx11.exe+7EAAA3 - 48 8B D0 - mov rdx,rax | |
ffxiv_dx11.exe+7EAAA6 - 48 8B CB - mov rcx,rbx | |
ffxiv_dx11.exe+7EAAA9 - E8 12641400 - call ffxiv_dx11.exe+930EC0 | |
ffxiv_dx11.exe+7EAAAE - B0 01 - mov al,01 { 1 } | |
ffxiv_dx11.exe+7EAAB0 - E9 EC010000 - jmp ffxiv_dx11.exe+7EACA1 | |
ffxiv_dx11.exe+7EAAB5 - 41 0FB6 45 35 - movzx eax,byte ptr [r13+35] | |
ffxiv_dx11.exe+7EAABA - 3C 12 - cmp al,12 { 18 } | |
ffxiv_dx11.exe+7EAABC - 75 22 - jne ffxiv_dx11.exe+7EAAE0 | |
ffxiv_dx11.exe+7EAABE - 41 80 7D 21 06 - cmp byte ptr [r13+21],06 { 6 } | |
ffxiv_dx11.exe+7EAAC3 - 0F85 94020000 - jne ffxiv_dx11.exe+7EAD5D | |
ffxiv_dx11.exe+7EAAC9 - E8 72D02600 - call ffxiv_dx11.exe+A57B40 | |
ffxiv_dx11.exe+7EAACE - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EAAD1 - 4C 8B C5 - mov r8,rbp | |
ffxiv_dx11.exe+7EAAD4 - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EAAD6 - E8 65222700 - call ffxiv_dx11.exe+A5CD40 | |
ffxiv_dx11.exe+7EAADB - E9 A5020000 - jmp ffxiv_dx11.exe+7EAD85 | |
ffxiv_dx11.exe+7EAAE0 - 2C 10 - sub al,10 { 16 } | |
ffxiv_dx11.exe+7EAAE2 - 3C 01 - cmp al,01 { 1 } | |
ffxiv_dx11.exe+7EAAE4 - 0F86 5B010000 - jbe ffxiv_dx11.exe+7EAC45 | |
ffxiv_dx11.exe+7EAAEA - 41 83 FF 01 - cmp r15d,01 { 1 } | |
ffxiv_dx11.exe+7EAAEE - 0F85 69020000 - jne ffxiv_dx11.exe+7EAD5D | |
ffxiv_dx11.exe+7EAAF4 - 81 FB C6640000 - cmp ebx,000064C6 { 25798 } | |
ffxiv_dx11.exe+7EAAFA - 0F84 31010000 - je ffxiv_dx11.exe+7EAC31 | |
ffxiv_dx11.exe+7EAB00 - 8D 83 339BFFFF - lea eax,[rbx-000064CD] | |
ffxiv_dx11.exe+7EAB06 - 83 F8 02 - cmp eax,02 { 2 } | |
ffxiv_dx11.exe+7EAB09 - 0F86 22010000 - jbe ffxiv_dx11.exe+7EAC31 | |
ffxiv_dx11.exe+7EAB0F - 81 FB F50D0000 - cmp ebx,00000DF5 { 3573 } | |
ffxiv_dx11.exe+7EAB15 - 75 36 - jne ffxiv_dx11.exe+7EAB4D | |
ffxiv_dx11.exe+7EAB17 - 4C 8B B4 24 B8000000 - mov r14,[rsp+000000B8] | |
ffxiv_dx11.exe+7EAB1F - 49 8B CE - mov rcx,r14 | |
ffxiv_dx11.exe+7EAB22 - E8 D94CEFFF - call ffxiv_dx11.exe+6DF800 | |
ffxiv_dx11.exe+7EAB27 - 8B 8C 24 A0000000 - mov ecx,[rsp+000000A0] | |
ffxiv_dx11.exe+7EAB2E - 4C 8B CD - mov r9,rbp | |
ffxiv_dx11.exe+7EAB31 - 89 4C 24 28 - mov [rsp+28],ecx | |
ffxiv_dx11.exe+7EAB35 - 41 8B D7 - mov edx,r15d | |
ffxiv_dx11.exe+7EAB38 - 48 8B CF - mov rcx,rdi | |
ffxiv_dx11.exe+7EAB3B - 48 89 44 24 20 - mov [rsp+20],rax | |
ffxiv_dx11.exe+7EAB40 - 44 8B C3 - mov r8d,ebx | |
ffxiv_dx11.exe+7EAB43 - E8 1867FFFF - call ffxiv_dx11.exe+7E1260 # Use action | |
ffxiv_dx11.exe+7EAB48 - E9 40020000 - jmp ffxiv_dx11.exe+7EAD8D | |
ffxiv_dx11.exe+7EAB4D - 81 FB FB1C0000 - cmp ebx,00001CFB { 7419 } | |
ffxiv_dx11.exe+7EAB53 - 75 47 - jne ffxiv_dx11.exe+7EAB9C | |
ffxiv_dx11.exe+7EAB55 - 48 8B 0D 2CBF6801 - mov rcx,[ffxiv_dx11.exe+1E76A88] { (144) } | |
ffxiv_dx11.exe+7EAB5C - 48 85 C9 - test rcx,rcx | |
ffxiv_dx11.exe+7EAB5F - 74 33 - je ffxiv_dx11.exe+7EAB94 | |
ffxiv_dx11.exe+7EAB61 - 48 8B 05 78BF6801 - mov rax,[ffxiv_dx11.exe+1E76AE0] { (37) } | |
ffxiv_dx11.exe+7EAB68 - 3C 07 - cmp al,07 { 7 } | |
ffxiv_dx11.exe+7EAB6A - 74 04 - je ffxiv_dx11.exe+7EAB70 | |
ffxiv_dx11.exe+7EAB6C - 3C 19 - cmp al,19 { 25 } | |
ffxiv_dx11.exe+7EAB6E - 75 24 - jne ffxiv_dx11.exe+7EAB94 | |
ffxiv_dx11.exe+7EAB70 - 8B 84 24 A0000000 - mov eax,[rsp+000000A0] | |
ffxiv_dx11.exe+7EAB77 - 48 83 C1 10 - add rcx,10 { 16 } | |
ffxiv_dx11.exe+7EAB7B - 89 44 24 28 - mov [rsp+28],eax | |
ffxiv_dx11.exe+7EAB7F - BA 01000000 - mov edx,00000001 { 1 } | |
ffxiv_dx11.exe+7EAB84 - 48 89 4C 24 20 - mov [rsp+20],rcx | |
ffxiv_dx11.exe+7EAB89 - 41 B8 FB1C0000 - mov r8d,00001CFB { 7419 } | |
ffxiv_dx11.exe+7EAB8F - E9 E6010000 - jmp ffxiv_dx11.exe+7EAD7A | |
ffxiv_dx11.exe+7EAB94 - 40 32 F6 - xor sil,sil | |
ffxiv_dx11.exe+7EAB97 - E9 01010000 - jmp ffxiv_dx11.exe+7EAC9D | |
ffxiv_dx11.exe+7EAB9C - 8D 83 AFA0FFFF - lea eax,[rbx-00005F51] | |
ffxiv_dx11.exe+7EABA2 - 83 F8 01 - cmp eax,01 { 1 } | |
ffxiv_dx11.exe+7EABA5 - 76 52 - jna ffxiv_dx11.exe+7EABF9 | |
ffxiv_dx11.exe+7EABA7 - 8D 83 5793FFFF - lea eax,[rbx-00006CA9] | |
ffxiv_dx11.exe+7EABAD - 83 F8 01 - cmp eax,01 { 1 } | |
ffxiv_dx11.exe+7EABB0 - 76 47 - jna ffxiv_dx11.exe+7EABF9 | |
ffxiv_dx11.exe+7EABB2 - 81 FB 535F0000 - cmp ebx,00005F53 { 24403 } | |
ffxiv_dx11.exe+7EABB8 - 74 0C - je ffxiv_dx11.exe+7EABC6 | |
ffxiv_dx11.exe+7EABBA - 81 FB AB6C0000 - cmp ebx,00006CAB { 27819 } | |
ffxiv_dx11.exe+7EABC0 - 0F85 97010000 - jne ffxiv_dx11.exe+7EAD5D | |
ffxiv_dx11.exe+7EABC6 - 48 8B 0D BBBE6801 - mov rcx,[ffxiv_dx11.exe+1E76A88] { (144) } | |
ffxiv_dx11.exe+7EABCD - 48 85 C9 - test rcx,rcx | |
ffxiv_dx11.exe+7EABD0 - 74 C2 - je ffxiv_dx11.exe+7EAB94 | |
ffxiv_dx11.exe+7EABD2 - 80 3D 07BF6801 27 - cmp byte ptr [ffxiv_dx11.exe+1E76AE0],27 { (37),39 } | |
ffxiv_dx11.exe+7EABD9 - 75 B9 - jne ffxiv_dx11.exe+7EAB94 | |
ffxiv_dx11.exe+7EABDB - 8B 84 24 A0000000 - mov eax,[rsp+000000A0] | |
ffxiv_dx11.exe+7EABE2 - 48 83 C1 10 - add rcx,10 { 16 } | |
ffxiv_dx11.exe+7EABE6 - 89 44 24 28 - mov [rsp+28],eax | |
ffxiv_dx11.exe+7EABEA - BA 01000000 - mov edx,00000001 { 1 } | |
ffxiv_dx11.exe+7EABEF - 48 89 4C 24 20 - mov [rsp+20],rcx | |
ffxiv_dx11.exe+7EABF4 - E9 7E010000 - jmp ffxiv_dx11.exe+7EAD77 | |
ffxiv_dx11.exe+7EABF9 - 4C 8B B4 24 B8000000 - mov r14,[rsp+000000B8] | |
ffxiv_dx11.exe+7EAC01 - 49 8B CE - mov rcx,r14 | |
ffxiv_dx11.exe+7EAC04 - E8 F74BEFFF - call ffxiv_dx11.exe+6DF800 | |
ffxiv_dx11.exe+7EAC09 - 8B 8C 24 A0000000 - mov ecx,[rsp+000000A0] | |
ffxiv_dx11.exe+7EAC10 - 4C 8B CD - mov r9,rbp | |
ffxiv_dx11.exe+7EAC13 - 89 4C 24 28 - mov [rsp+28],ecx | |
ffxiv_dx11.exe+7EAC17 - 44 8B C3 - mov r8d,ebx | |
ffxiv_dx11.exe+7EAC1A - 48 8B CF - mov rcx,rdi | |
ffxiv_dx11.exe+7EAC1D - 48 89 44 24 20 - mov [rsp+20],rax | |
ffxiv_dx11.exe+7EAC22 - BA 01000000 - mov edx,00000001 { 1 } | |
ffxiv_dx11.exe+7EAC27 - E8 3466FFFF - call ffxiv_dx11.exe+7E1260 # Use Action | |
ffxiv_dx11.exe+7EAC2C - E9 5C010000 - jmp ffxiv_dx11.exe+7EAD8D | |
ffxiv_dx11.exe+7EAC31 - 8B CB - mov ecx,ebx | |
ffxiv_dx11.exe+7EAC33 - E8 98FEF6FF - call ffxiv_dx11.exe+75AAD0 | |
ffxiv_dx11.exe+7EAC38 - 0FB6 C0 - movzx eax,al | |
ffxiv_dx11.exe+7EAC3B - BA 01000000 - mov edx,00000001 { 1 } | |
ffxiv_dx11.exe+7EAC40 - E9 22010000 - jmp ffxiv_dx11.exe+7EAD67 | |
ffxiv_dx11.exe+7EAC45 - 41 80 7D 21 06 - cmp byte ptr [r13+21],06 { 6 } | |
ffxiv_dx11.exe+7EAC4A - 0F85 0D010000 - jne ffxiv_dx11.exe+7EAD5D | |
ffxiv_dx11.exe+7EAC50 - E8 EBCE2600 - call ffxiv_dx11.exe+A57B40 | |
ffxiv_dx11.exe+7EAC55 - 48 8B C8 - mov rcx,rax | |
ffxiv_dx11.exe+7EAC58 - 4C 8B C5 - mov r8,rbp | |
ffxiv_dx11.exe+7EAC5B - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EAC5D - E8 AEF92600 - call ffxiv_dx11.exe+A5A610 | |
ffxiv_dx11.exe+7EAC62 - E9 1E010000 - jmp ffxiv_dx11.exe+7EAD85 # jumps to LBL3 or LBL2 based on function success | |
ffxiv_dx11.exe+7EAC67 - 44 8B 8C 24 A8000000 - mov r9d,[rsp+000000A8] | |
ffxiv_dx11.exe+7EAC6F - 4C 8B C5 - mov r8,rbp | |
ffxiv_dx11.exe+7EAC72 - 8B D3 - mov edx,ebx | |
ffxiv_dx11.exe+7EAC74 - 4C 89 64 24 20 - mov [rsp+20],r12 | |
ffxiv_dx11.exe+7EAC79 - 48 8B CF - mov rcx,rdi | |
ffxiv_dx11.exe+7EAC7C - E8 FF73FFFF - call ffxiv_dx11.exe+7E2080 | |
ffxiv_dx11.exe+7EAC81 - 83 FB 0A - cmp ebx,0A # ebx is 10 | |
ffxiv_dx11.exe+7EAC84 - 0F95 C0 - setne al | |
ffxiv_dx11.exe+7EAC87 - 84 C0 - test al,al | |
ffxiv_dx11.exe+7EAC89 - 74 12 - je ffxiv_dx11.exe+7EAC9D # LBL2 if | |
LBL1: ffxiv_dx11.exe+7EAC8B - 4C 8B B4 24 B8000000 - mov r14,[rsp+000000B8] # location to r14 | |
LBL3: ffxiv_dx11.exe+7EAC93 - B2 01 - mov dl,01 # 1 to rdx | |
ffxiv_dx11.exe+7EAC95 - 49 8B CE - mov rcx,r14 # location to rcx | |
ffxiv_dx11.exe+7EAC98 - E8 B3FAF0FF - call ffxiv_dx11.exe+6FA750 | |
LBL2: ffxiv_dx11.exe+7EAC9D - 40 0FB6 C6 - movzx eax,sil # use esi for return value, 1 if "success" | |
END: ffxiv_dx11.exe+7EACA1 - 4C 8B AC 24 88000000 - mov r13,[rsp+00000088] # restore r13 | |
ffxiv_dx11.exe+7EACA9 - 4C 8B B4 24 98000000 - mov r14,[rsp+00000098] # restore r14 | |
ffxiv_dx11.exe+7EACB1 - 48 8B B4 24 80000000 - mov rsi,[rsp+00000080] # restore rsi | |
ffxiv_dx11.exe+7EACB9 - 48 83 C4 50 - add rsp,50 # restore stack | |
ffxiv_dx11.exe+7EACBD - 41 5F - pop r15 | |
ffxiv_dx11.exe+7EACBF - 41 5C - pop r12 | |
ffxiv_dx11.exe+7EACC1 - 5F - pop rdi | |
ffxiv_dx11.exe+7EACC2 - 5D - pop rbp | |
ffxiv_dx11.exe+7EACC3 - 5B - pop rbx | |
ffxiv_dx11.exe+7EACC4 - C3 - ret # the end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment