Download Pelles C here: http://www.smorgasbordet.com/pellesc/
include DlgBox.inc
.data
DialogBox:
INCBIN "MyDlg.bin"
.code
start:
mov eax,RichEditANSIWndProc
invoke GetModuleHandle,0
xor ecx,ecx
invoke DialogBoxIndirectParam,eax,\
ADDR DialogBox,ecx,ADDR DlgProc,ecx
invoke ExitProcess,eax
DlgProc PROC hWnd:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
.IF uMsg==WM_CLOSE
invoke EndDialog,hWnd,0
.ELSE
xor eax,eax
ret
.ENDIF
mov eax,1
ret
DlgProc ENDP
END start
Quote from: TimoVJL on November 06, 2025, 07:06:38 PMLike in this:
https://github.com/kuba--/zip
but structurally it has changed a lot so a file difference does not highlight changes compared to what I did in 1.19 SO it is basically going to be starting all over...... 
#ifdef _PELLESC__
#define MD_ASSERT(cond) do {} while(0)
#define MD_UNREACHABLE() do {} while(0)
#elif at the beginning of the block there.#include <stdlib.h>
#include <stdint.h>
// All Railgun variants are written by Georgi 'Kaze', they are free, however I expect the user to mention its homepage, that is: http://www.sanmayce.com/Railgun/index.html
// Author's email: sanmayce@sanmayce.com
// Caution: For better speed the case 'if (cbPattern==1)' was removed, so Pattern must be longer than 1 char.
char * Railgun_Doublet (char * pbTarget, char * pbPattern, uint32_t cbTarget, uint32_t cbPattern)
{
char * pbTargetMax = pbTarget + cbTarget;
register uint32_t ulHashPattern;
uint32_t ulHashTarget, count, countSTATIC;
if (cbPattern > cbTarget) return(NULL);
countSTATIC = cbPattern-2;
pbTarget = pbTarget+cbPattern;
ulHashPattern = (*(uint16_t *)(pbPattern));
for ( ;; ) {
if ( ulHashPattern == (*(uint16_t *)(pbTarget-cbPattern)) ) {
count = countSTATIC;
while ( count && *(char *)(pbPattern+2+(countSTATIC-count)) == *(char *)(pbTarget-cbPattern+2+(countSTATIC-count)) ) {
count--;
}
if ( count == 0 ) return((pbTarget-cbPattern));
}
pbTarget++;
if (pbTarget > pbTargetMax) return(NULL);
}
}
Page created in 0.062 seconds with 15 queries.