0,0 → 1,156 |
format ELF |
section '.text' executable |
|
public _msys_draw_window |
_msys_draw_window: |
;arg1 - xcoord |
;arg2 - ycoord |
;arg3 - xsize |
;arg4 - ysize |
;arg5 - workcolor |
;arg6 - type |
;arg7 - captioncolor |
;arg8 - windowtype |
;arg9 - bordercolor |
push ebp |
mov ebp,esp |
push ebx esi edi |
mov ebx,[ebp+8] |
shl ebx,16 |
mov bx,[ebp+16] |
mov ecx,[ebp+12] |
shl ecx,16 |
mov cx,[ebp+20] |
mov edx,[ebp+28] |
shl edx,24 |
add edx,[ebp+24] |
mov esi,[ebp+36] |
shl esi,24 |
add esi,[ebp+32] |
mov edi,[ebp+40] |
xor eax,eax |
int 0x40 |
pop edi esi ebx |
pop ebp |
ret |
|
public _msys_read_file |
_msys_read_file: |
;arg1 - file name |
;arg2 - file offset |
;arg3 - size to read |
;arg4 - data |
;arg5 - temp buffer |
;arg6 - file size |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.offset],eax |
mov eax,[ebp+16] |
mov [file_struct.offset],eax |
mov eax,[ebp+20] |
mov [file_struct.offset],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov ebx,file_struct |
mov eax,58 |
int 0x40 |
mov ecx,[ebp+28] |
test ecx,ecx |
jz .no_file_size |
mov [ecx],ebx |
.no_file_size: |
pop ebx |
pop ebp |
ret |
|
copy_file_name: |
push esi edi |
cld |
mov edi,edx |
xor eax,eax |
xor ecx,ecx |
dec ecx |
repnz scasb |
not ecx |
mov edi,file_struct.path |
mov esi,edx |
rep movsb |
pop edi esi |
ret |
|
public _msys_write_file |
_msys_write_file: |
;arg1 - file name |
;arg2 - size |
;arg3 - data |
push ebp |
mov ebp,esp |
xor eax,eax |
mov [file_struct.offset],eax |
inc eax |
mov [file_struct.operation],eax |
mov eax,[ebp+12] |
mov [file_struct.size],eax |
mov eax,[ebp+16] |
mov [file_struct.data],eax |
mov [file_struct.temp_buffer],temp_buffer |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret |
|
public _msys_run_program |
_msys_run_program: |
;arg1 - program name |
;arg2 - parameters |
push ebp |
mov ebp,esp |
mov [file_struct.operation],16 |
xor eax,eax |
mov [file_struct.offset],eax |
mov [file_struct.data],eax |
mov eax,[ebp+12] |
mov [file_struct.param],eax |
mov [file_struct.temp_buffer],temp_buffer; |
mov edx,[ebp+8] |
call copy_file_name |
push ebx |
mov eax,58 |
mov ebx,file_struct |
int 0x40 |
pop ebx |
pop ebp |
ret |
|
public _msys_debug_out |
_msys_debug_out: |
;arg1 - char to out |
push ebx |
mov ecx,[esp+8] |
mov ebx,1 |
mov eax,63 |
int 0x40 |
pop ebx |
ret |
section '.data' writeable |
section '.bss' writeable |
file_struct: |
.operation rd 1 |
.offset rd 1 |
.param: |
.size rd 1 |
.data rd 1 |
.temp_buffer rd 1 |
.path rb 1024 |
temp_buffer rb 4096 |
|