Keylok II Dongle

Kfunc()
mov     dx, word ptr [ValidateCode2]
mov     cx, word ptr [ValidateCode1]
mov     ax, dx
xor     dh, 7Ch
shr     dx, 8
xor     al, 3Ah
movzx   edi, ax
movzx   eax, dx
shl     edi, 8
or      edi, eax
mov     ax, cx
and     edi, 0FFFFh
xor     ah, 49h
shr     ax, 8
movzx   eax, ax
shl     eax, 10h
or      edi, eax
movzx   eax, cx
xor     eax, 0FFFFFFD5h
shl     eax, 18h
or      edi, eax
mov ClientIDCode, edi
ClientIDCode1 = (unsigned int) (ClientIDCode & 0XFFFF);
ClientIDCode2 = (unsigned int) (ClientIDCode >> 16);
ClientIDCode1 =(ClientIDCode1 & 0xFFFF);
ClientIDCode2 =(ClientIDCode2 & 0xFFFF);
sprintf (clientidbuf, "%04x", ClientIDCode1);
sprintf (clientidbuf2, "%04x", ClientIDCode2);