there were actually 2 bugs :icon_eek:
the second one was popping out RCX 2 times, here:
#if AMD64_SUPPORT
else if (ModuleInfo.Ofssize == USE64) {
AddLineQueueX("pop rdi");
AddLineQueueX("pop rsi");
AddLineQueueX("pop rbx");
AddLineQueueX("pop rcx"); this was the bug
GetLabelStr(hll->labels[LDATA1], buff);
AddLineQueueX("lea rcx,%s", buff);
AddLineQueueX("mov rax, qword ptr[rcx+rax*8]");
AddLineQueueX("pop rcx");
AddLineQueueX("xchg rax,[rsp]");
AddLineQueueX("retn");
}
#endif
so, thank you again to make me aware of it :t
now your source works flowlesly
and this is data that is created for the cases:
* ALIGN 8
* @C0004 dq @C0009, @C000A, @C000B, @C000C, @C000D, @C000E, @C000F, @C0010, @C0011, @C0012, @C0013, @C0014, @C0015, @C0016, @C0017
* dq @C0018, @C0019, @C001A, @C001B, @C001C, @C001D, @C001E, @C001F, @C0020, @C0021, @C0022, @C0023, @C0024, @C0025, @C0026
* dq @C0027, @C0028, @C0029, @C002A, @C002B, @C002C, @C002D, @C002E, @C002F, @C0030, @C0031, @C0032, @C0033, @C0034, @C0035
* dq @C0036, @C0037, @C0038, @C0039, @C003A, @C003B, @C003C, @C003D, @C003E, @C003F, @C0040, @C0041, @C0042, @C0043, @C0044
* dq @C0045, @C0046, @C0047, @C0048, @C0049, @C004A, @C004B, @C004C, @C004D, @C004E, @C004F, @C0050, @C0051, @C0052, @C0053
* dq @C0054, @C0055, @C0056, @C0057, @C0058, @C0059, @C005A, @C005B, @C005C, @C005D, @C005E, @C005F, @C0060, @C0061, @C0062
* dq @C0063, @C0064, @C0065, @C0066, @C0067, @C0068, @C0069, @C006A, @C006B, @C006C, @C006D, @C006E, @C006F, @C0070, @C0071
* dq @C0072, @C0073, @C0074, @C0075, @C0076, @C0077, @C0078, @C0079, @C007A, @C007B, @C007C, @C007D, @C007E, @C007F, @C0080
* dq @C0081, @C0082, @C0083, @C0084, @C0085, @C0086, @C0087, @C0088, @C0089, @C008A, @C008B, @C008C, @C008D, @C008E, @C008F
* dq @C0090, @C0091, @C0092, @C0093, @C0094, @C0095, @C0096, @C0097, @C0098, @C0099, @C009A, @C009B, @C009C, @C009D, @C009E
* dq @C009F, @C00A0, @C00A1, @C00A2, @C00A3, @C00A4, @C00A5, @C00A6, @C00A7, @C00A8, @C00A9, @C00AA, @C00AB, @C00AC, @C00AD
* dq @C00AE, @C00AF, @C00B0, @C00B1, @C00B2, @C00B3, @C00B4, @C00B5, @C00B6, @C00B7, @C00B8, @C00B9, @C00BA, @C00BB, @C00BC
* dq @C00BD, @C00BE, @C00BF, @C00C0, @C00C1, @C00C2, @C00C3, @C00C4, @C00C5, @C00C6, @C00C7, @C00C8, @C00C9, @C00CA, @C00CB
* dq @C00CC, @C00CD, @C00CE, @C00CF, @C00D0
* @C0006 dd 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29
* dd 30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59
* dd 60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89
* dd 90,91,92,93,94,95,96,97,98,99,100000,100001,100002,100003,100004,100005,100006,100007,100008,100009,100010,100011,100012,100013,100014,100015,100016,100017,100018,100019
* dd 100020,100021,100022,100023,100024,100025,100026,100027,100028,100029,100030,100031,100032,100033,100034,100035,100036,100037,100038,100039,100040,100041,100042,100043,100044,100045,100046,100047,100048,100049
* dd 100050,100051,100052,100053,100054,100055,100056,100057,100058,100059,100060,100061,100062,100063,100064,100065,100066,100067,100068,100069,100070,100071,100072,100073,100074,100075,100076,100077,100078,100079
* dd 100080,100081,100082,100083,100084,100085,100086,100087,100088,100089,100090,100091,100092,100093,100094,100095,100096,100097,100098,100099