#include <stdio.h>
#include <string.h>
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned char BYTE;
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xFFFF))
#define LOBYTE(w) ((BYTE)(w))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xFF))
int shl(unsigned long int a, int n);
int shl(unsigned long int a, int n) {
return (a << n);
}
int main() {
int edi = 0x00000000;
int ebx = 0x00000000;
int ecx = 0x00000000;
int esi = 0x00000000;
int edx = 0x00000000;
int eax = 0x00000000;
char str [] = "12";
do {
int eax = str[ecx];
eax = eax + esi;
edx = eax%0xFF;//idiv
eax = eax/0xFF;//idiv
edi = LOWORD(edx);
esi = LOWORD(edi);
eax = LOWORD(ebx);
eax = eax + esi;
edx = eax%0xFF;//idiv
eax = eax/0XFF;//idiv
ebx = LOWORD(edx);
ecx++;
}while(ecx < strlen(str));
eax = LOWORD(ebx);
eax = shl(eax,8);
eax = eax | edi;
printf("%X",eax);
}