//--------------------------------------
# include <stdio.h>
# include <Windows.h>
# include <stdlib.h>
# include <time.h>
//--------------------------------------
void __init__(PVOID ptrValue);
void __RandomChoice__(PVOID ptrValue);
int main(void) {
__int32 number[50] = { 0, };
__asm LEA EDI, dword ptr[number];
__asm PUSH EDI;
__asm CALL dword ptr[__init__];
__asm POP ebx;
__asm CALL dword ptr[__RandomChoice__];
//TEST
/*
for (int i = 0; i < 50; i++) {
printf("%d ", number[i]);
}
*/
return 0;
} // end of main function
void __init__(PVOID ptrValue) {
int t_value = 0x1;
__asm {
MOV ECX, 50; // ecx = 50
// --------------------------------------------
MOV EBX, 0x0;
L: // COUNT
PUSH ECX; // 1
PUSH EBX; // 2
MOV EAX, dword ptr[t_value];
MOV EDI, dword ptr[EBP + 0x8];
POP EBX; // 1
MOV dword ptr[EDI + EBX], EAX;
ADD EBX, 0x4; // ebx += 0x4
PUSH EBX; // 2
INC EAX;
MOV dword ptr[t_value], EAX;
pop EBX;
POP ECX;
Loop L;
}
} // end of __init__ function
void __RandomChoice__(PVOID ptrValue) {
//srand((unsigned)time(NULL));
// rand()%10
__int32 x = 0x0;
char *str_value = "result is %d\n";
__asm {
//-------------------------------
push 0;
call dword ptr[time];
pop ebx;
//-------------------------------
push eax;
call dword ptr[srand];
pop ebx;
//-------------------------------
call dword ptr[rand];
mov ebx, 0Ah;
xor edx, edx;
idiv ebx;
add edx, 1;
mov dword ptr[x], edx;
//-------------------------------
push dword ptr[x];
push dword ptr[str_value];
call dword ptr[printf];
pop ebx;
pop ebx;
leave;
retn;
}
} // end of __RandomChoice__ function