Skip to content

Instantly share code, notes, and snippets.

@janisozaur
Created October 22, 2015 22:14
Show Gist options
  • Save janisozaur/5129cb3cdc263b07c9ad to your computer and use it in GitHub Desktop.
Save janisozaur/5129cb3cdc263b07c9ad to your computer and use it in GitHub Desktop.
CMakeFiles/openrct2.dir/src/audio/audio.c.o: file format elf32-i386
Disassembly of section .text.RCT2_CALLFUNC_X:
00000000 <RCT2_CALLFUNC_X>:
*A = Adjust flag
*P = Parity flag
*All other bits are undefined.
*/
static int RCT2_CALLFUNC_X(int address, int *_eax, int *_ebx, int *_ecx, int *_edx, int *_esi, int *_edi, int *_ebp)
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 57 push %edi
4: 56 push %esi
5: 83 ec 10 sub $0x10,%esp
8: 55 push %ebp
9: 53 push %ebx
a: ff 75 08 pushl 0x8(%ebp)
d: 8b 45 0c mov 0xc(%ebp),%eax
10: 8b 00 mov (%eax),%eax
*A = Adjust flag
*P = Parity flag
*All other bits are undefined.
*/
static int RCT2_CALLPROC_X(int address, int _eax, int _ebx, int _ecx, int _edx, int _esi, int _edi, int _ebp)
{
12: 8b 5d 10 mov 0x10(%ebp),%ebx
15: 8b 1b mov (%ebx),%ebx
17: 8b 4d 14 mov 0x14(%ebp),%ecx
pop ebp
/* Load result with flags */
mov result, eax
}
#else
__asm__ ( "\
1a: 8b 09 mov (%ecx),%ecx
1c: 8b 55 18 mov 0x18(%ebp),%edx
1f: 8b 12 mov (%edx),%edx
21: 8b 75 1c mov 0x1c(%ebp),%esi
24: 8b 36 mov (%esi),%esi
26: 8b 7d 20 mov 0x20(%ebp),%edi
29: 8b 3f mov (%edi),%edi
2b: 8b 6d 24 mov 0x24(%ebp),%ebp
2e: 8b 6d 00 mov 0x0(%ebp),%ebp
31: ff 14 24 call *(%esp)
34: 50 push %eax
35: 55 push %ebp
36: 53 push %ebx
37: 8b 6c 24 14 mov 0x14(%esp),%ebp
3b: 8b 5c 24 10 mov 0x10(%esp),%ebx
:
: "eax","ecx","edx","esi","edi"
);
#endif
// lahf only modifies ah, zero out the rest
return result & 0xFF00;
3f: 8b 45 20 mov 0x20(%ebp),%eax
42: 89 38 mov %edi,(%eax)
44: 8b 45 1c mov 0x1c(%ebp),%eax
}
47: 89 30 mov %esi,(%eax)
49: 8b 45 18 mov 0x18(%ebp),%eax
4c: 89 10 mov %edx,(%eax)
static int RCT2_CALLPROC_EBPSAFE(int address)
{
4e: 8b 45 14 mov 0x14(%ebp),%eax
return RCT2_CALLPROC_X(address, 0xBBBBBBBB, 0xBBBBBBBB, 0xBBBBBBBB, 0xBBBBBBBB, 0xBBBBBBBB, 0xBBBBBBBB, 0xBBBBBBBB);
51: 89 08 mov %ecx,(%eax)
53: 59 pop %ecx
54: 8b 45 10 mov 0x10(%ebp),%eax
57: 89 08 mov %ecx,(%eax)
59: 59 pop %ecx
5a: 8b 45 24 mov 0x24(%ebp),%eax
5d: 89 08 mov %ecx,(%eax)
5f: 58 pop %eax
60: 8b 4d 0c mov 0xc(%ebp),%ecx
63: 89 01 mov %eax,(%ecx)
65: 9f lahf
66: 5d pop %ebp
67: 5b pop %ebx
68: 5d pop %ebp
69: 89 45 f4 mov %eax,-0xc(%ebp)
6c: 8b 45 f4 mov -0xc(%ebp),%eax
6f: 25 00 ff 00 00 and $0xff00,%eax
74: 83 c4 10 add $0x10,%esp
77: 5e pop %esi
78: 5f pop %edi
79: 5d pop %ebp
7a: c3 ret
CMakeFiles/openrct2.dir/src/audio/audio.c.o: file format elf32-i386
Disassembly of section .text.RCT2_CALLPROC_X:
00000000 <RCT2_CALLPROC_X>:
*A = Adjust flag
*P = Parity flag
*All other bits are undefined.
*/
static int RCT2_CALLPROC_X(int address, int _eax, int _ebx, int _ecx, int _edx, int _esi, int _edi, int _ebp)
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 57 push %edi
4: 56 push %esi
5: 83 ec 10 sub $0x10,%esp
8: 53 push %ebx
9: 55 push %ebp
a: ff 75 08 pushl 0x8(%ebp)
d: 8b 45 0c mov 0xc(%ebp),%eax
10: 8b 5d 10 mov 0x10(%ebp),%ebx
13: 8b 4d 14 mov 0x14(%ebp),%ecx
16: 8b 55 18 mov 0x18(%ebp),%edx
pop ebp
/* Load result with flags */
mov result, eax
}
#else
__asm__ ( "\
19: 8b 75 1c mov 0x1c(%ebp),%esi
1c: 8b 7d 20 mov 0x20(%ebp),%edi
1f: 8b 6d 24 mov 0x24(%ebp),%ebp
22: ff 14 24 call *(%esp)
25: 9f lahf
26: 83 c4 04 add $0x4,%esp
29: 5d pop %ebp
2a: 5b pop %ebx
2b: 89 45 f4 mov %eax,-0xc(%ebp)
2e: 8b 45 f4 mov -0xc(%ebp),%eax
31: 25 00 ff 00 00 and $0xff00,%eax
36: 83 c4 10 add $0x10,%esp
39: 5e pop %esi
3a: 5f pop %edi
3b: 5d pop %ebp
3c: c3 ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment