Skip to content

Instantly share code, notes, and snippets.

@karai17
Created October 28, 2018 18:53
Show Gist options
  • Save karai17/1b0d93d9cb8390016363e51c3390442d to your computer and use it in GitHub Desktop.
Save karai17/1b0d93d9cb8390016363e51c3390442d to your computer and use it in GitHub Desktop.
NecroDancer ITG2 PIUIO Support (Linux v1.29 Assembly)
Dump of assembler code for function _ZN9gxtkInput11BeginUpdateEv:
0x080d6fd0 <+0>: 55 push ebp
0x080d6fd1 <+1>: 57 push edi
0x080d6fd2 <+2>: bf 18 00 00 00 mov edi,0x18
0x080d6fd7 <+7>: 56 push esi
0x080d6fd8 <+8>: 53 push ebx
0x080d6fd9 <+9>: 83 ec 5c sub esp,0x5c
0x080d6fdc <+12>: 65 a1 14 00 00 00 mov eax,gs:0x14
0x080d6fe2 <+18>: 89 44 24 4c mov DWORD PTR [esp+0x4c],eax
0x080d6fe6 <+22>: 31 c0 xor eax,eax
0x080d6fe8 <+24>: 8d 44 24 28 lea eax,[esp+0x28]
0x080d6fec <+28>: 8b 5c 24 70 mov ebx,DWORD PTR [esp+0x70]
0x080d6ff0 <+32>: 89 44 24 04 mov DWORD PTR [esp+0x4],eax
0x080d6ff4 <+36>: 8d 44 24 24 lea eax,[esp+0x24]
0x080d6ff8 <+40>: 89 04 24 mov DWORD PTR [esp],eax
0x080d6ffb <+43>: c7 44 24 24 00 00 00 00 mov DWORD PTR [esp+0x24],0x0
0x080d7003 <+51>: c7 44 24 28 00 00 00 00 mov DWORD PTR [esp+0x28],0x0
0x080d700b <+59>: e8 70 5d f7 ff call 0x804cd80 <glfwGetMousePos@plt>
0x080d7010 <+64>: db 44 24 24 fild DWORD PTR [esp+0x24]
0x080d7014 <+68>: d9 9b 98 08 00 00 fstp DWORD PTR [ebx+0x898]
0x080d701a <+74>: db 44 24 28 fild DWORD PTR [esp+0x28]
0x080d701e <+78>: d9 9b 9c 08 00 00 fstp DWORD PTR [ebx+0x89c]
0x080d7024 <+84>: c7 44 24 04 02 00 05 00 mov DWORD PTR [esp+0x4],0x50002
0x080d702c <+92>: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0
0x080d7033 <+99>: e8 d8 57 f7 ff call 0x804c810 <glfwGetJoystickParam@plt>
0x080d7038 <+104>: c7 44 24 04 03 00 05 00 mov DWORD PTR [esp+0x4],0x50003
0x080d7040 <+112>: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0
0x080d7047 <+119>: 89 44 24 1c mov DWORD PTR [esp+0x1c],eax
0x080d704b <+123>: e8 c0 57 f7 ff call 0x804c810 <glfwGetJoystickParam@plt>
0x080d7050 <+128>: 8d 8b a0 08 00 00 lea ecx,[ebx+0x8a0]
0x080d7056 <+134>: f6 c1 01 test cl,0x1
0x080d7059 <+137>: 89 ca mov edx,ecx
0x080d705b <+139>: 89 c6 mov esi,eax
0x080d705d <+141>: 0f 85 35 01 00 00 jne 0x80d7198 <_ZN9gxtkInput11BeginUpdateEv+456>
0x080d7063 <+147>: f6 c2 02 test dl,0x2
0x080d7066 <+150>: 0f 85 46 01 00 00 jne 0x80d71b2 <_ZN9gxtkInput11BeginUpdateEv+482>
0x080d706c <+156>: 89 fd mov ebp,edi
0x080d706e <+158>: 31 c0 xor eax,eax
0x080d7070 <+160>: 83 e5 fc and ebp,0xfffffffc
0x080d7073 <+163>: c7 04 02 00 00 00 00 mov DWORD PTR [edx+eax*1],0x0
0x080d707a <+170>: 83 c0 04 add eax,0x4
0x080d707d <+173>: 39 e8 cmp eax,ebp
0x080d707f <+175>: 72 f2 jb 0x80d7073 <_ZN9gxtkInput11BeginUpdateEv+163>
0x080d7081 <+177>: 01 c2 add edx,eax
0x080d7083 <+179>: f7 c7 02 00 00 00 test edi,0x2
0x080d7089 <+185>: 74 08 je 0x80d7093 <_ZN9gxtkInput11BeginUpdateEv+195>
0x080d708b <+187>: 66 c7 02 00 00 mov WORD PTR [edx],0x0
0x080d7090 <+192>: 83 c2 02 add edx,0x2
0x080d7093 <+195>: 83 e7 01 and edi,0x1
0x080d7096 <+198>: 74 03 je 0x80d709b <_ZN9gxtkInput11BeginUpdateEv+203>
0x080d7098 <+200>: c6 02 00 mov BYTE PTR [edx],0x0
0x080d709b <+203>: 8b 44 24 1c mov eax,DWORD PTR [esp+0x1c]
0x080d709f <+207>: 89 4c 24 04 mov DWORD PTR [esp+0x4],ecx
0x080d70a3 <+211>: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0
0x080d70aa <+218>: 89 44 24 08 mov DWORD PTR [esp+0x8],eax
0x080d70ae <+222>: e8 ed 5a f7 ff call 0x804cba0 <glfwGetJoystickPos@plt>
0x080d70b3 <+227>: 31 c0 xor eax,eax
0x080d70b5 <+229>: c7 44 04 2c 00 00 00 00 mov DWORD PTR [esp+eax*1+0x2c],0x0 ; memset(buttons, 0, sizeof(buttons))
0x080d70bd <+237>: 83 c0 04 add eax,0x4 ;
0x080d70c0 <+240>: 83 f8 20 cmp eax,0x20 ; Change to 0x30 for all 48 buttons
0x080d70c3 <+243>: 72 f0 jb 0x80d70b5 <_ZN9gxtkInput11BeginUpdateEv+229> ;
0x080d70c5 <+245>: 8d 44 24 2c lea eax,[esp+0x2c]
0x080d70c9 <+249>: 89 74 24 08 mov DWORD PTR [esp+0x8],esi
0x080d70cd <+253>: 89 44 24 04 mov DWORD PTR [esp+0x4],eax
0x080d70d1 <+257>: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0
0x080d70d8 <+264>: e8 43 58 f7 ff call 0x804c920 <glfwGetJoystickButtons@plt>
0x080d70dd <+269>: 83 7c 24 1c 04 cmp DWORD PTR [esp+0x1c],0x4
0x080d70e2 <+274>: 0f 84 6c 01 00 00 je 0x80d7254 <_ZN9gxtkInput11BeginUpdateEv+644>
0x080d70e8 <+280>: 83 7c 24 1c 05 cmp DWORD PTR [esp+0x1c],0x5
0x080d70ed <+285>: 75 18 jne 0x80d7107 <_ZN9gxtkInput11BeginUpdateEv+311>
0x080d70ef <+287>: 8b 83 ac 08 00 00 mov eax,DWORD PTR [ebx+0x8ac]
0x080d70f5 <+293>: 8b 93 b0 08 00 00 mov edx,DWORD PTR [ebx+0x8b0]
0x080d70fb <+299>: 89 83 b0 08 00 00 mov DWORD PTR [ebx+0x8b0],eax
0x080d7101 <+305>: 89 93 ac 08 00 00 mov DWORD PTR [ebx+0x8ac],edx
0x080d7107 <+311>: 85 f6 test esi,esi
0x080d7109 <+313>: 7e 74 jle 0x80d717f <_ZN9gxtkInput11BeginUpdateEv+431>
0x080d710b <+315>: 81 c6 00 01 00 00 add esi,0x100
0x080d7111 <+321>: bf 00 01 00 00 mov edi,0x100
0x080d7116 <+326>: 66 90 xchg ax,ax
0x080d7118 <+328>: 80 bc 3c 2c ff ff ff 01 cmp BYTE PTR [esp+edi*1-0xd4],0x1
0x080d7120 <+336>: 89 f8 mov eax,edi
0x080d7122 <+338>: 0f 84 b8 00 00 00 je 0x80d71e0 <_ZN9gxtkInput11BeginUpdateEv+528>
0x080d7128 <+344>: 8d 50 04 lea edx,[eax+0x4]
0x080d712b <+347>: 8b 0c 93 mov ecx,DWORD PTR [ebx+edx*4]
0x080d712e <+350>: f6 c5 01 test ch,0x1
0x080d7131 <+353>: 74 45 je 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d7133 <+355>: 81 e1 ff 00 00 00 and ecx,0xff
0x080d7139 <+361>: 3d a0 00 00 00 cmp eax,0xa0
0x080d713e <+366>: 89 0c 93 mov DWORD PTR [ebx+edx*4],ecx
0x080d7141 <+369>: 7c 35 jl 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d7143 <+371>: 3d a1 00 00 00 cmp eax,0xa1
0x080d7148 <+376>: 0f 8e e2 00 00 00 jle 0x80d7230 <_ZN9gxtkInput11BeginUpdateEv+608>
0x080d714e <+382>: 3d a3 00 00 00 cmp eax,0xa3
0x080d7153 <+387>: 7f 23 jg 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d7155 <+389>: f6 83 99 02 00 00 01 test BYTE PTR [ebx+0x299],0x1
0x080d715c <+396>: 75 1a jne 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d715e <+398>: f6 83 9d 02 00 00 01 test BYTE PTR [ebx+0x29d],0x1
0x080d7165 <+405>: 75 11 jne 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d7167 <+407>: b8 11 00 00 00 mov eax,0x11
0x080d716c <+412>: 8d 50 04 lea edx,[eax+0x4]
0x080d716f <+415>: 8b 0c 93 mov ecx,DWORD PTR [ebx+edx*4]
0x080d7172 <+418>: f6 c5 01 test ch,0x1
0x080d7175 <+421>: 75 bc jne 0x80d7133 <_ZN9gxtkInput11BeginUpdateEv+355>
0x080d7177 <+423>: 90 nop
0x080d7178 <+424>: 83 c7 01 add edi,0x1
0x080d717b <+427>: 39 f7 cmp edi,esi
0x080d717d <+429>: 75 99 jne 0x80d7118 <_ZN9gxtkInput11BeginUpdateEv+328>
0x080d717f <+431>: 8b 44 24 4c mov eax,DWORD PTR [esp+0x4c]
0x080d7183 <+435>: 65 33 05 14 00 00 00 xor eax,DWORD PTR gs:0x14
0x080d718a <+442>: 0f 85 df 00 00 00 jne 0x80d726f <_ZN9gxtkInput11BeginUpdateEv+671> ; Change to 90 90 90 90 90 90 to disable
0x080d7190 <+448>: 83 c4 5c add esp,0x5c
0x080d7193 <+451>: 5b pop ebx
0x080d7194 <+452>: 5e pop esi
0x080d7195 <+453>: 5f pop edi
0x080d7196 <+454>: 5d pop ebp
0x080d7197 <+455>: c3 ret
0x080d7198 <+456>: 8d 93 a1 08 00 00 lea edx,[ebx+0x8a1]
0x080d719e <+462>: 66 bf 17 00 mov di,0x17
0x080d71a2 <+466>: f6 c2 02 test dl,0x2
0x080d71a5 <+469>: c6 83 a0 08 00 00 00 mov BYTE PTR [ebx+0x8a0],0x0
0x080d71ac <+476>: 0f 84 ba fe ff ff je 0x80d706c <_ZN9gxtkInput11BeginUpdateEv+156>
0x080d71b2 <+482>: 66 c7 02 00 00 mov WORD PTR [edx],0x0
0x080d71b7 <+487>: 83 ef 02 sub edi,0x2
0x080d71ba <+490>: 83 c2 02 add edx,0x2
0x080d71bd <+493>: e9 aa fe ff ff jmp 0x80d706c <_ZN9gxtkInput11BeginUpdateEv+156>
0x080d71c2 <+498>: 8d b6 00 00 00 00 lea esi,[esi+0x0]
0x080d71c8 <+504>: f6 83 91 02 00 00 01 test BYTE PTR [ebx+0x291],0x1
0x080d71cf <+511>: b8 10 00 00 00 mov eax,0x10
0x080d71d4 <+516>: 75 0a jne 0x80d71e0 <_ZN9gxtkInput11BeginUpdateEv+528>
0x080d71d6 <+518>: f6 83 95 02 00 00 01 test BYTE PTR [ebx+0x295],0x1
0x080d71dd <+525>: 74 99 je 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d71df <+527>: 90 nop
0x080d71e0 <+528>: 8d 50 04 lea edx,[eax+0x4]
0x080d71e3 <+531>: 8b 0c 93 mov ecx,DWORD PTR [ebx+edx*4]
0x080d71e6 <+534>: f6 c5 01 test ch,0x1
0x080d71e9 <+537>: 75 8d jne 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d71eb <+539>: 80 cd 01 or ch,0x1
0x080d71ee <+542>: 83 c1 01 add ecx,0x1
0x080d71f1 <+545>: 3d a0 00 00 00 cmp eax,0xa0
0x080d71f6 <+550>: 89 0c 93 mov DWORD PTR [ebx+edx*4],ecx
0x080d71f9 <+553>: 0f 8c 79 ff ff ff jl 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d71ff <+559>: 3d a1 00 00 00 cmp eax,0xa1
0x080d7204 <+564>: 7e c2 jle 0x80d71c8 <_ZN9gxtkInput11BeginUpdateEv+504>
0x080d7206 <+566>: 3d a3 00 00 00 cmp eax,0xa3
0x080d720b <+571>: 0f 8f 67 ff ff ff jg 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d7211 <+577>: f6 83 99 02 00 00 01 test BYTE PTR [ebx+0x299],0x1
0x080d7218 <+584>: b8 11 00 00 00 mov eax,0x11
0x080d721d <+589>: 75 c1 jne 0x80d71e0 <_ZN9gxtkInput11BeginUpdateEv+528>
0x080d721f <+591>: f6 83 9d 02 00 00 01 test BYTE PTR [ebx+0x29d],0x1
0x080d7226 <+598>: 75 b8 jne 0x80d71e0 <_ZN9gxtkInput11BeginUpdateEv+528>
0x080d7228 <+600>: e9 4b ff ff ff jmp 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d722d <+605>: 8d 76 00 lea esi,[esi+0x0]
0x080d7230 <+608>: f6 83 91 02 00 00 01 test BYTE PTR [ebx+0x291],0x1
0x080d7237 <+615>: 0f 85 3b ff ff ff jne 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d723d <+621>: f6 83 95 02 00 00 01 test BYTE PTR [ebx+0x295],0x1
0x080d7244 <+628>: 0f 85 2e ff ff ff jne 0x80d7178 <_ZN9gxtkInput11BeginUpdateEv+424>
0x080d724a <+634>: b8 10 00 00 00 mov eax,0x10
0x080d724f <+639>: e9 d4 fe ff ff jmp 0x80d7128 <_ZN9gxtkInput11BeginUpdateEv+344>
0x080d7254 <+644>: 8b 83 a8 08 00 00 mov eax,DWORD PTR [ebx+0x8a8]
0x080d725a <+650>: c7 83 a8 08 00 00 00 00 00 00 mov DWORD PTR [ebx+0x8a8],0x0
0x080d7264 <+660>: 89 83 b0 08 00 00 mov DWORD PTR [ebx+0x8b0],eax
0x080d726a <+666>: e9 98 fe ff ff jmp 0x80d7107 <_ZN9gxtkInput11BeginUpdateEv+311>
0x080d726f <+671>: e8 3c 53 f7 ff call 0x804c5b0 <__stack_chk_fail@plt> ; This is never called
End of assembler dump.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment