Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Generated by toASM
- KERN_INT equ 80h
- SYS_OUT equ 4
- SYS_IN equ 3
- SYS_EXIT equ 1
- STDOUT equ 1
- STDIN equ 0
- section .data
- _s0 db "WIDTH: "
- _len0 equ $-_s0
- _s1 db "HEIGHT: "
- _len1 equ $-_s1
- _s2 db "Total positions = "
- _len2 equ $-_s2
- _s3 db "",10,""
- _len3 equ $-_s3
- _s4 db "Depth\tPositions",10,"0\t\t1",10,""
- _len4 equ $-_s4
- _s5 db "kek"
- _len5 equ $-_s5
- section .bss
- _sbuf resb 255
- _ibuf resd 1
- _vsbuf resd 1
- _a0 resd 9
- _i0 resd 1 ;gap
- _vs0 resd 1
- _i1 resd 1 ;t
- _vs1 resd 1
- _i2 resd 1 ;i
- _vs2 resd 1
- _i3 resd 1 ;j
- _vs3 resd 1
- _i4 resd 1 ;buffer
- _vs4 resd 1
- _i5 resd 1 ;buf
- _vs5 resd 1
- _i6 resd 1 ;buf2
- _vs6 resd 1
- _i7 resd 1 ;a
- _vs7 resd 1
- _i8 resd 1 ;b
- _vs8 resd 1
- _i9 resd 1 ;w
- _vs9 resd 1
- _i10 resd 1 ;h
- _vs10 resd 1
- _i11 resd 1 ;size
- _vs11 resd 1
- _i12 resd 1 ;_size
- _vs12 resd 1
- _i13 resd 1 ;__size
- _vs13 resd 1
- _i14 resd 1 ;totpositions
- _vs14 resd 1
- _i15 resd 1 ;cnt
- _vs15 resd 1
- _i16 resd 1 ;NEW_STATE
- _vs16 resd 1
- _a1 resd 500000000
- _i17 resd 1 ;index
- _vs17 resd 1
- _i18 resd 1 ;currentDepth
- _vs18 resd 1
- _i19 resd 1 ;newPositions
- _vs19 resd 1
- _i20 resd 1 ;aa
- _vs20 resd 1
- _i21 resd 1 ;.buf
- _vs21 resd 1
- _i22 resd 1 ;.buf2
- _vs22 resd 1
- _i23 resd 1 ;.buf3
- _vs23 resd 1
- section .text
- global _start
- _start:
- ;assign(t,0)
- mov eax, 0
- mov [_i1], eax
- ;assign(i,0)
- mov eax, 0
- mov [_i2], eax
- ;print("WIDTH: ")
- mov ecx, _s0
- mov edx, _len0
- call _print
- ;read(w)
- mov ecx, _sbuf
- mov edx, 255
- call _read
- mov eax, [_vsbuf]
- mov [_vs9], eax
- call string_to_int
- mov eax, [_ibuf]
- mov [_i9], eax
- ;print("HEIGHT: ")
- mov ecx, _s1
- mov edx, _len1
- call _print
- ;read(h)
- mov ecx, _sbuf
- mov edx, 255
- call _read
- mov eax, [_vsbuf]
- mov [_vs10], eax
- call string_to_int
- mov eax, [_ibuf]
- mov [_i10], eax
- ;assign(size,w)
- mov eax, [_i9]
- mov [_i11], eax
- ;mul(size,h)
- mov eax, [_i11]
- imul eax, [_i10]
- mov [_i11], eax
- ;assign(_size, size)
- mov eax, [_i11]
- mov [_i12], eax
- ;assign(__size, size)
- mov eax, [_i11]
- mov [_i13], eax
- ;inc(__size)
- inc DWORD [_i13]
- ;dec(_size)
- dec DWORD [_i12]
- ;while(i[<]size)[ assign(buf,i) | inc(buf) | assign_array(tiles, i, buf) | inc(i)]
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop2 ;Depth 0->1
- jmp ._loop3
- ._loop2: ;LOOP @ Depth=1
- ;assign(buf,i)
- mov eax, [_i2]
- mov [_i5], eax
- ;inc(buf)
- inc DWORD [_i5]
- ;assign_array(tiles, i, buf)
- mov eax, [_i5]
- mov ebx, [_i2]
- mov [_a0+ebx*4], eax
- ;inc(i)
- inc DWORD [_i2]
- ;loop if i<size
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop2
- ._loop3:
- ;assign(i,0)
- mov eax, 0
- mov [_i2], eax
- ;while(i[<]size)[assign(buffer,size)|dec(buffer,i)|mul(t,buffer)|assign(buf2, i)|inc(buf2)|assign(j,buf2)|while(j[<]size)[arr(a,tiles,i)|arr(b,tiles,j)|if(a[>]b) [inc(t)]|inc(j)] | inc(i)]
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop4 ;Depth 0->1
- jmp ._loop5
- ._loop4: ;LOOP @ Depth=1
- ;assign(buffer,size)
- mov eax, [_i11]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;mul(t,buffer)
- mov eax, [_i1]
- imul eax, [_i4]
- mov [_i1], eax
- ;assign(buf2, i)
- mov eax, [_i2]
- mov [_i6], eax
- ;inc(buf2)
- inc DWORD [_i6]
- ;assign(j,buf2)
- mov eax, [_i6]
- mov [_i3], eax
- ;while(j[<]size)[arr(a,tiles,i)|arr(b,tiles,j)|if(a[>]b) [inc(t)]|inc(j)]
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop6 ;Depth 1->2
- jmp ._loop7
- ._loop6: ;LOOP @ Depth=2
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;arr(b,tiles,j)
- mov eax, [_i3]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i8], ebx
- ;if(a[>]b) [inc(t)]
- mov eax, [_i7]
- mov ebx, [_i8]
- cmp eax, ebx
- jg ._loop8 ;Depth 2->3
- jmp ._loop9
- ._loop8: ;OK @ Depth=3
- ;inc(t)
- inc DWORD [_i1]
- jmp ._loop10
- ._loop9: ;ELSE @ Depth=3
- ._loop10:
- ;inc(j)
- inc DWORD [_i3]
- ;loop if j<size
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop6
- ._loop7:
- ;inc(i)
- inc DWORD [_i2]
- ;loop if i<size
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop4
- ._loop5:
- ;assign_array(tiles,_size,1)
- mov eax, 1
- mov ebx, [_i12]
- mov [_a0+ebx*4], eax
- ;assign(i,_size)
- mov eax, [_i12]
- mov [_i2], eax
- ;while(i[>=]1)[assign(buf,i)|dec(buf) | assign(buffer, __size) | dec(buffer,i) | assign(buf2, t) | mod(buf2, buffer)| inc(buf2) | assign_array(tiles,buf,buf2) | assign(buffer, __size) | dec(buffer,i) | div(t,buffer) | assign(j,i) | inc(j) | while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)] |dec(i)]
- mov eax, [_i2]
- mov ebx, 1
- cmp eax, ebx
- jge ._loop12 ;Depth 0->1
- jmp ._loop13
- ._loop12: ;LOOP @ Depth=1
- ;assign(buf,i)
- mov eax, [_i2]
- mov [_i5], eax
- ;dec(buf)
- dec DWORD [_i5]
- ;assign(buffer, __size)
- mov eax, [_i13]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;assign(buf2, t)
- mov eax, [_i1]
- mov [_i6], eax
- ;mod(buf2, buffer)
- xor edx, edx
- mov eax, [_i6]
- idiv DWORD [_i4]
- mov [_i6], edx
- ;inc(buf2)
- inc DWORD [_i6]
- ;assign_array(tiles,buf,buf2)
- mov eax, [_i6]
- mov ebx, [_i5]
- mov [_a0+ebx*4], eax
- ;assign(buffer, __size)
- mov eax, [_i13]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;div(t,buffer)
- xor edx, edx
- mov eax, [_i1]
- idiv DWORD [_i4]
- mov [_i1], eax
- ;assign(j,i)
- mov eax, [_i2]
- mov [_i3], eax
- ;inc(j)
- inc DWORD [_i3]
- ;while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)]
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop14 ;Depth 1->2
- jmp ._loop15
- ._loop14: ;LOOP @ Depth=2
- ;dec(i)
- dec DWORD [_i2]
- ;dec(j)
- dec DWORD [_i3]
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;arr(b,tiles,j)
- mov eax, [_i3]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i8], ebx
- ;if(b[>=]a)[inc(b) | assign_array(tiles,j,b)]
- mov eax, [_i8]
- mov ebx, [_i7]
- cmp eax, ebx
- jge ._loop16 ;Depth 2->3
- jmp ._loop17
- ._loop16: ;OK @ Depth=3
- ;inc(b)
- inc DWORD [_i8]
- ;assign_array(tiles,j,b)
- mov eax, [_i8]
- mov ebx, [_i3]
- mov [_a0+ebx*4], eax
- jmp ._loop18
- ._loop17: ;ELSE @ Depth=3
- ._loop18:
- ;inc(j)
- inc DWORD [_i3]
- ;inc(i)
- inc DWORD [_i2]
- ;inc(j)
- inc DWORD [_i3]
- ;loop if j<=size
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop14
- ._loop15:
- ;dec(i)
- dec DWORD [_i2]
- ;loop if i>=1
- mov eax, [_i2]
- mov ebx, 1
- cmp eax, ebx
- jge ._loop12
- ._loop13:
- ;while(i[<]size)[arr(a,tiles,i) | if(a[==]size)[assign(gap, i)] | inc(i)]
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop20 ;Depth 0->1
- jmp ._loop21
- ._loop20: ;LOOP @ Depth=1
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;if(a[==]size)[assign(gap, i)]
- mov eax, [_i7]
- mov ebx, [_i11]
- cmp eax, ebx
- je ._loop22 ;Depth 1->2
- jmp ._loop23
- ._loop22: ;OK @ Depth=2
- ;assign(gap, i)
- mov eax, [_i2]
- mov [_i0], eax
- jmp ._loop24
- ._loop23: ;ELSE @ Depth=2
- ._loop24:
- ;inc(i)
- inc DWORD [_i2]
- ;loop if i<size
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop20
- ._loop21:
- ;assign(cnt,1)
- mov eax, 1
- mov [_i15], eax
- ;assign(NEW_STATE, 255)
- mov eax, 255
- mov [_i16], eax
- ;assign(totpositions, 1)
- mov eax, 1
- mov [_i14], eax
- ;while(cnt[<=]size)[ mul(totpositions,cnt) | inc(cnt)]
- mov eax, [_i15]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop26 ;Depth 0->1
- jmp ._loop27
- ._loop26: ;LOOP @ Depth=1
- ;mul(totpositions,cnt)
- mov eax, [_i14]
- imul eax, [_i15]
- mov [_i14], eax
- ;inc(cnt)
- inc DWORD [_i15]
- ;loop if cnt<=size
- mov eax, [_i15]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop26
- ._loop27:
- ;print("Total positions = ".totpositions."\n")
- mov ecx, _s2
- mov edx, _len2
- call _print
- mov eax, [_i14]
- mov [_ibuf], eax
- mov eax, [_vs14]
- mov [_vsbuf], eax
- call int_to_string
- mov eax, [_vsbuf]
- mov [_vs14], eax
- inc DWORD [_vs14]
- mov ecx, _sbuf
- mov edx, [_vs14]
- call _print
- dec DWORD [_vs14]
- mov ecx, _s3
- mov edx, _len3
- call _print
- ;assign(cnt,0)
- mov eax, 0
- mov [_i15], eax
- ;while(cnt[<]totpositions)[assign_array(positions,cnt,NEW_STATE) | inc(cnt)]
- mov eax, [_i15]
- mov ebx, [_i14]
- cmp eax, ebx
- jl ._loop28 ;Depth 0->1
- jmp ._loop29
- ._loop28: ;LOOP @ Depth=1
- ;assign_array(positions,cnt,NEW_STATE)
- mov eax, [_i16]
- mov ebx, [_i15]
- mov [_a1+ebx*4], eax
- ;inc(cnt)
- inc DWORD [_i15]
- ;loop if cnt<totpositions
- mov eax, [_i15]
- mov ebx, [_i14]
- cmp eax, ebx
- jl ._loop28
- ._loop29:
- ;assign(i,0)
- mov eax, 0
- mov [_i2], eax
- ;while(i[<]size)[assign(buffer,size)|dec(buffer,i)|mul(t,buffer)|assign(buf2, i)|inc(buf2)|assign(j,buf2)|while(j[<]size)[arr(a,tiles,i)|arr(b,tiles,j)|if(a[>]b) [inc(t)]|inc(j)] | inc(i)]
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop30 ;Depth 0->1
- jmp ._loop31
- ._loop30: ;LOOP @ Depth=1
- ;assign(buffer,size)
- mov eax, [_i11]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;mul(t,buffer)
- mov eax, [_i1]
- imul eax, [_i4]
- mov [_i1], eax
- ;assign(buf2, i)
- mov eax, [_i2]
- mov [_i6], eax
- ;inc(buf2)
- inc DWORD [_i6]
- ;assign(j,buf2)
- mov eax, [_i6]
- mov [_i3], eax
- ;while(j[<]size)[arr(a,tiles,i)|arr(b,tiles,j)|if(a[>]b) [inc(t)]|inc(j)]
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop32 ;Depth 1->2
- jmp ._loop33
- ._loop32: ;LOOP @ Depth=2
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;arr(b,tiles,j)
- mov eax, [_i3]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i8], ebx
- ;if(a[>]b) [inc(t)]
- mov eax, [_i7]
- mov ebx, [_i8]
- cmp eax, ebx
- jg ._loop34 ;Depth 2->3
- jmp ._loop35
- ._loop34: ;OK @ Depth=3
- ;inc(t)
- inc DWORD [_i1]
- jmp ._loop36
- ._loop35: ;ELSE @ Depth=3
- ._loop36:
- ;inc(j)
- inc DWORD [_i3]
- ;loop if j<size
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop32
- ._loop33:
- ;inc(i)
- inc DWORD [_i2]
- ;loop if i<size
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop30
- ._loop31:
- ;assign_array(positions,t,0)
- mov eax, 0
- mov ebx, [_i1]
- mov [_a1+ebx*4], eax
- ;assign(currentDepth,0)
- mov eax, 0
- mov [_i18], eax
- ;print("Depth\tPositions\n0\t\t1\n")
- mov ecx, _s4
- mov edx, _len4
- call _print
- ;exit(1)
- mov ebx, 1 ;Return code
- jmp ._exit_point
- ;do_while(newPositions[!=]0)[assign(aa,0) |assign(newPositions,0) |while(aa[<]totpositions)[arr(.buf, positions, aa)|if(.buf[==]currentDepth)[assign_array(tiles,_size,1)|assign(i,_size)|while(i[>=]1)[assign(buf,i)|dec(buf) | assign(buffer, __size) | dec(buffer,i) | assign(buf2, t) | mod(buf2, buffer)| inc(buf2) | assign_array(tiles,buf,buf2) | assign(buffer, __size) | dec(buffer,i) | div(t,buffer) | assign(j,i) | inc(j) | while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)] |dec(i)]| while(i[<]size)[arr(a,tiles,i) | if(a[==]size)[assign(gap, i)] | inc(i)]| assign(i,0)| while(i[<=]4)[print("kek")]]|inc(aa)]]
- ._loop38: ;LOOP @ Depth=1
- ;assign(aa,0)
- mov eax, 0
- mov [_i20], eax
- ;assign(newPositions,0)
- mov eax, 0
- mov [_i19], eax
- ;while(aa[<]totpositions)[arr(.buf, positions, aa)|if(.buf[==]currentDepth)[assign_array(tiles,_size,1)|assign(i,_size)|while(i[>=]1)[assign(buf,i)|dec(buf) | assign(buffer, __size) | dec(buffer,i) | assign(buf2, t) | mod(buf2, buffer)| inc(buf2) | assign_array(tiles,buf,buf2) | assign(buffer, __size) | dec(buffer,i) | div(t,buffer) | assign(j,i) | inc(j) | while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)] |dec(i)]| while(i[<]size)[arr(a,tiles,i) | if(a[==]size)[assign(gap, i)] | inc(i)]| assign(i,0)| while(i[<=]4)[print("kek")]]|inc(aa)]
- mov eax, [_i20]
- mov ebx, [_i14]
- cmp eax, ebx
- jl ._loop39 ;Depth 1->2
- jmp ._loop40
- ._loop39: ;LOOP @ Depth=2
- ;arr(.buf, positions, aa)
- mov eax, [_i20]
- imul eax, eax, 4
- add eax, _a1
- mov ebx, [eax]
- mov [_i21], ebx
- ;if(.buf[==]currentDepth)[assign_array(tiles,_size,1)|assign(i,_size)|while(i[>=]1)[assign(buf,i)|dec(buf) | assign(buffer, __size) | dec(buffer,i) | assign(buf2, t) | mod(buf2, buffer)| inc(buf2) | assign_array(tiles,buf,buf2) | assign(buffer, __size) | dec(buffer,i) | div(t,buffer) | assign(j,i) | inc(j) | while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)] |dec(i)]| while(i[<]size)[arr(a,tiles,i) | if(a[==]size)[assign(gap, i)] | inc(i)]| assign(i,0)| while(i[<=]4)[print("kek")]]
- mov eax, [_i21]
- mov ebx, [_i18]
- cmp eax, ebx
- je ._loop41 ;Depth 2->3
- jmp ._loop42
- ._loop41: ;OK @ Depth=3
- ;assign_array(tiles,_size,1)
- mov eax, 1
- mov ebx, [_i12]
- mov [_a0+ebx*4], eax
- ;assign(i,_size)
- mov eax, [_i12]
- mov [_i2], eax
- ;while(i[>=]1)[assign(buf,i)|dec(buf) | assign(buffer, __size) | dec(buffer,i) | assign(buf2, t) | mod(buf2, buffer)| inc(buf2) | assign_array(tiles,buf,buf2) | assign(buffer, __size) | dec(buffer,i) | div(t,buffer) | assign(j,i) | inc(j) | while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)] |dec(i)]
- mov eax, [_i2]
- mov ebx, 1
- cmp eax, ebx
- jge ._loop45 ;Depth 3->4
- jmp ._loop46
- ._loop45: ;LOOP @ Depth=4
- ;assign(buf,i)
- mov eax, [_i2]
- mov [_i5], eax
- ;dec(buf)
- dec DWORD [_i5]
- ;assign(buffer, __size)
- mov eax, [_i13]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;assign(buf2, t)
- mov eax, [_i1]
- mov [_i6], eax
- ;mod(buf2, buffer)
- xor edx, edx
- mov eax, [_i6]
- idiv DWORD [_i4]
- mov [_i6], edx
- ;inc(buf2)
- inc DWORD [_i6]
- ;assign_array(tiles,buf,buf2)
- mov eax, [_i6]
- mov ebx, [_i5]
- mov [_a0+ebx*4], eax
- ;assign(buffer, __size)
- mov eax, [_i13]
- mov [_i4], eax
- ;dec(buffer,i)
- mov eax, [_i4]
- sub DWORD eax, [_i2]
- mov [_i4], eax
- ;div(t,buffer)
- xor edx, edx
- mov eax, [_i1]
- idiv DWORD [_i4]
- mov [_i1], eax
- ;assign(j,i)
- mov eax, [_i2]
- mov [_i3], eax
- ;inc(j)
- inc DWORD [_i3]
- ;while(j[<=]size)[ dec(i) | dec(j) | arr(a,tiles,i) | arr(b,tiles,j) | if(b[>=]a)[inc(b) | assign_array(tiles,j,b)] | inc(j) | inc(i) | inc(j)]
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop47 ;Depth 4->5
- jmp ._loop48
- ._loop47: ;LOOP @ Depth=5
- ;dec(i)
- dec DWORD [_i2]
- ;dec(j)
- dec DWORD [_i3]
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;arr(b,tiles,j)
- mov eax, [_i3]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i8], ebx
- ;if(b[>=]a)[inc(b) | assign_array(tiles,j,b)]
- mov eax, [_i8]
- mov ebx, [_i7]
- cmp eax, ebx
- jge ._loop49 ;Depth 5->6
- jmp ._loop50
- ._loop49: ;OK @ Depth=6
- ;inc(b)
- inc DWORD [_i8]
- ;assign_array(tiles,j,b)
- mov eax, [_i8]
- mov ebx, [_i3]
- mov [_a0+ebx*4], eax
- jmp ._loop51
- ._loop50: ;ELSE @ Depth=6
- ._loop51:
- ;inc(j)
- inc DWORD [_i3]
- ;inc(i)
- inc DWORD [_i2]
- ;inc(j)
- inc DWORD [_i3]
- ;loop if j<=size
- mov eax, [_i3]
- mov ebx, [_i11]
- cmp eax, ebx
- jle ._loop47
- ._loop48:
- ;dec(i)
- dec DWORD [_i2]
- ;loop if i>=1
- mov eax, [_i2]
- mov ebx, 1
- cmp eax, ebx
- jge ._loop45
- ._loop46:
- ;while(i[<]size)[arr(a,tiles,i) | if(a[==]size)[assign(gap, i)] | inc(i)]
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop53 ;Depth 3->4
- jmp ._loop54
- ._loop53: ;LOOP @ Depth=4
- ;arr(a,tiles,i)
- mov eax, [_i2]
- imul eax, eax, 4
- add eax, _a0
- mov ebx, [eax]
- mov [_i7], ebx
- ;if(a[==]size)[assign(gap, i)]
- mov eax, [_i7]
- mov ebx, [_i11]
- cmp eax, ebx
- je ._loop55 ;Depth 4->5
- jmp ._loop56
- ._loop55: ;OK @ Depth=5
- ;assign(gap, i)
- mov eax, [_i2]
- mov [_i0], eax
- jmp ._loop57
- ._loop56: ;ELSE @ Depth=5
- ._loop57:
- ;inc(i)
- inc DWORD [_i2]
- ;loop if i<size
- mov eax, [_i2]
- mov ebx, [_i11]
- cmp eax, ebx
- jl ._loop53
- ._loop54:
- ;assign(i,0)
- mov eax, 0
- mov [_i2], eax
- ;while(i[<=]4)[print("kek")]
- mov eax, [_i2]
- mov ebx, 4
- cmp eax, ebx
- jle ._loop59 ;Depth 3->4
- jmp ._loop60
- ._loop59: ;LOOP @ Depth=4
- ;print("kek")
- mov ecx, _s5
- mov edx, _len5
- call _print
- ;loop if i<=4
- mov eax, [_i2]
- mov ebx, 4
- cmp eax, ebx
- jle ._loop59
- ._loop60:
- jmp ._loop43
- ._loop42: ;ELSE @ Depth=3
- ._loop43:
- ;inc(aa)
- inc DWORD [_i20]
- ;loop if aa<totpositions
- mov eax, [_i20]
- mov ebx, [_i14]
- cmp eax, ebx
- jl ._loop39
- ._loop40:
- ;loop if newPositions!=0
- mov eax, [_i19]
- mov ebx, 0
- cmp eax, ebx
- jne ._loop38
- ._exit_point:
- mov eax, SYS_EXIT
- int KERN_INT
- ; Subroutines
- _print:
- push eax
- push ebx
- mov eax, SYS_OUT
- mov ebx, STDOUT
- int KERN_INT
- pop ebx
- pop eax
- ret
- _read:
- push eax
- push ebx
- mov eax, SYS_IN
- mov ebx, STDIN
- int KERN_INT
- dec eax
- mov [_vsbuf], eax
- pop ebx
- pop eax
- ret
- string_to_int:
- push ebx
- push ecx
- push edx
- push esi
- push edi
- mov eax, [_vsbuf]
- xor edi, edi
- mov ebx, 0
- .loop:
- imul ebx, ebx, 10
- add bl, [_sbuf+edi]
- sub bl, '0'
- inc edi
- cmp edi, eax
- jl .loop
- mov [_ibuf], ebx
- pop edi
- pop esi
- pop edx
- pop ecx
- pop ebx
- ret
- int_to_string:
- push eax
- push ebx
- push ecx
- push edx
- push esi
- push edi
- mov eax, [_ibuf]
- xor edi, edi
- mov ecx, 10
- .ciclo:
- xor edx, edx
- idiv ecx
- add edx, '0'
- mov [_sbuf+edi], dl
- inc edi
- cmp eax, 0
- jg .ciclo
- mov BYTE [_sbuf+edi], 0
- mov [_vsbuf], edi
- mov edx, edi
- shr edx, 1
- xor esi, esi
- .invert:
- mov al, [_sbuf+esi]
- mov bl, [_sbuf+edi]
- xchg al, bl
- mov [_sbuf+esi], al
- mov [_sbuf+edi], bl
- dec edi
- inc esi
- cmp edi, edx
- jg .invert
- pop edi
- pop esi
- pop edx
- pop ecx
- pop ebx
- pop eax
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement