проблема не в инструкциях, проблема в синтаксисе. АТ-шный отличается сильно.
Code:
int __attribute__((naked)) NewLuckCode() asm("new_luck");
asm
(
".intel_syntax noprefix\n" // use intel syntax
"new_luck: \n"
"xor eax, eax \n"
"mov ecx, edi \n"
"loop_1: \n"
"cmp dword ptr ds:[ecx], 0x2D \n"
"je calc_bonuses_1 \n"
"inc eax \n"
"add ecx, 0x8 \n"
"cmp eax, 0x13 \n"
"jl loop_1 \n"
"mov ecx, dword ptr ds:[0x660b68] \n"
"mov eax, dword ptr ds:[ecx+0x5D8] \n"
"cmp eax, -1 \n"
"je art_2 \n"
"lea edx, [eax*2+eax] \n"
"mov eax, dword ptr ds:[0x660B6C] \n"
"mov ecx, dword ptr ds:[edx*8+eax] \n"
"push ecx \n"
"mov ecx, esi \n"
"mov eax, 0x4d9460 \n"
"call eax \n"
"test al, al \n"
"je art_2 \n"
"calc_bonuses_1: \n"
"inc dword ptr ss:[ebp+0x0C] \n"
"art_2: \n"
"xor eax, eax \n"
"mov ecx, edi \n"
"loop_2: \n"
"cmp dword ptr ds:[ecx], 163 \n"
"je calc_bonuses_2 \n"
"inc eax \n"
"add ecx, 0x8 \n"
"cmp eax, 0x13 \n"
"jl loop_2 \n"
"mov ecx, dword ptr ds:[0x660b68] \n"
"mov eax, dword ptr ds:[ecx+0x5D8] \n"
"cmp eax, -1 \n"
"je art_3 \n"
"lea edx, [eax*2+eax] \n"
"mov eax, dword ptr ds:[0x660B6C] \n"
"mov ecx, dword ptr ds:[edx*8+eax] \n"
"push ecx \n"
"mov ecx, esi \n"
"mov eax, 0x4d9460 \n"
"call eax \n"
"test al, al \n"
"je art_3 \n"
"calc_bonuses_2: \n"
"add dword ptr ss:[ebp+0x0C],-2 \n"
"art_3:"
"ret_section: \n"
"mov eax, 0x4E3AC7 \n"
"jmp eax \n"
".att_syntax noprefix\n" // reset AT&T syntax or there will be errors
);