Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- whatis_position:
- push rbp
- mov rbp, rsp
- mov DWORD PTR [rbp-4], edi
- mov eax, DWORD PTR [rbp-4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 1
- je .L3
- cmp eax, 1
- jb .L4
- cmp eax, 2
- je .L5
- jmp .L7
- .L4:
- mov eax, 79
- jmp .L1
- .L3:
- mov eax, 88
- jmp .L1
- .L5:
- mov eax, 32
- jmp .L1
- .L7:
- .L1:
- pop rbp
- ret
- .LC0:
- .string "\n%c|%c|%c\n-----\n%c|%c|%c\n-----\n%c|%c|%c\n"
- display_board:
- push rbp
- mov rbp, rsp
- push r15
- push r14
- push r13
- push r12
- push rbx
- sub rsp, 24
- mov edi, 3
- call whatis_position
- movsx eax, al
- mov DWORD PTR [rbp-52], eax
- mov edi, 2
- call whatis_position
- movsx r15d, al
- mov edi, 1
- call whatis_position
- movsx r14d, al
- mov edi, 6
- call whatis_position
- movsx r13d, al
- mov edi, 5
- call whatis_position
- movsx ecx, al
- mov DWORD PTR [rbp-56], ecx
- mov edi, 4
- call whatis_position
- movsx esi, al
- mov DWORD PTR [rbp-60], esi
- mov edi, 9
- call whatis_position
- movsx r12d, al
- mov edi, 8
- call whatis_position
- movsx ebx, al
- mov edi, 7
- call whatis_position
- movsx eax, al
- mov edx, DWORD PTR [rbp-52]
- push rdx
- push r15
- push r14
- push r13
- mov r9d, DWORD PTR [rbp-56]
- mov r8d, DWORD PTR [rbp-60]
- mov ecx, r12d
- mov edx, ebx
- mov esi, eax
- mov edi, OFFSET FLAT:.LC0
- mov eax, 0
- call printf
- add rsp, 32
- nop
- lea rsp, [rbp-40]
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- initialise_board:
- push rbp
- mov rbp, rsp
- mov DWORD PTR [rbp-4], 1
- jmp .L10
- .L11:
- mov eax, DWORD PTR [rbp-4]
- cdqe
- mov DWORD PTR board[0+rax*4], 2
- add DWORD PTR [rbp-4], 1
- .L10:
- cmp DWORD PTR [rbp-4], 9
- jle .L11
- nop
- pop rbp
- ret
- .LC1:
- .string "\nCross, please press desired position on numpad > "
- .LC2:
- .string "\nNought, please press desired position on numpad > "
- .LC3:
- .string "ERROR"
- .LC4:
- .string "%d"
- make_move:
- push rbp
- mov rbp, rsp
- sub rsp, 32
- mov DWORD PTR [rbp-20], edi
- .L17:
- mov eax, DWORD PTR [rbp-20]
- test eax, eax
- je .L14
- cmp eax, 1
- jne .L19
- mov edi, OFFSET FLAT:.LC1
- mov eax, 0
- call printf
- jmp .L16
- .L14:
- mov edi, OFFSET FLAT:.LC2
- mov eax, 0
- call printf
- jmp .L16
- .L19:
- mov edi, OFFSET FLAT:.LC3
- mov eax, 0
- call printf
- .L16:
- lea rax, [rbp-4]
- mov rsi, rax
- mov edi, OFFSET FLAT:.LC4
- mov eax, 0
- call __isoc99_scanf
- mov eax, DWORD PTR [rbp-4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- jne .L17
- mov eax, DWORD PTR [rbp-4]
- leave
- ret
- .LC5:
- .string "\nAI plays %d to win or block\n"
- .LC6:
- .string "\nAI plays %d to fork or prevent a fork\n"
- .LC7:
- .string "\nAI plays the centre"
- .LC8:
- .string "\nAI plays the opposite corner"
- .LC9:
- .string "\nAI plays 1"
- .LC10:
- .string "\nAI plays 3"
- .LC11:
- .string "\nAI plays 7"
- .LC12:
- .string "\nAI plays 9"
- .LC13:
- .string "\nAI plays 2"
- .LC14:
- .string "\nAI plays 4"
- .LC15:
- .string "\nAI plays 6"
- .LC16:
- .string "\nAI plays 8"
- make_computer_move:
- push rbp
- mov rbp, rsp
- add rsp, -128
- mov DWORD PTR [rbp-116], edi
- mov DWORD PTR [rbp-112], 1
- mov DWORD PTR [rbp-108], 2
- mov DWORD PTR [rbp-104], 3
- mov DWORD PTR [rbp-100], 4
- mov DWORD PTR [rbp-96], 5
- mov DWORD PTR [rbp-92], 6
- mov DWORD PTR [rbp-88], 7
- mov DWORD PTR [rbp-84], 8
- mov DWORD PTR [rbp-80], 9
- mov DWORD PTR [rbp-76], 1
- mov DWORD PTR [rbp-72], 4
- mov DWORD PTR [rbp-68], 7
- mov DWORD PTR [rbp-64], 2
- mov DWORD PTR [rbp-60], 5
- mov DWORD PTR [rbp-56], 8
- mov DWORD PTR [rbp-52], 3
- mov DWORD PTR [rbp-48], 6
- mov DWORD PTR [rbp-44], 9
- mov DWORD PTR [rbp-40], 1
- mov DWORD PTR [rbp-36], 5
- mov DWORD PTR [rbp-32], 9
- mov DWORD PTR [rbp-28], 3
- mov DWORD PTR [rbp-24], 5
- mov DWORD PTR [rbp-20], 7
- mov DWORD PTR [rbp-12], 0
- mov DWORD PTR [rbp-16], 0
- mov DWORD PTR [rbp-4], 0
- jmp .L21
- .L26:
- mov DWORD PTR [rbp-8], 0
- jmp .L22
- .L25:
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov esi, DWORD PTR board[0+rax*4]
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+1]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp esi, eax
- jne .L23
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+2]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- jne .L23
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- je .L23
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+2]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- mov esi, eax
- mov edi, OFFSET FLAT:.LC5
- mov eax, 0
- call printf
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+2]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- jmp .L20
- .L23:
- add DWORD PTR [rbp-8], 1
- .L22:
- cmp DWORD PTR [rbp-8], 2
- jle .L25
- add DWORD PTR [rbp-4], 1
- .L21:
- cmp DWORD PTR [rbp-4], 7
- jle .L26
- mov DWORD PTR [rbp-4], 1
- jmp .L27
- .L35:
- mov DWORD PTR [rbp-8], 0
- jmp .L28
- .L34:
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov esi, DWORD PTR board[0+rax*4]
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+1]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp esi, eax
- jne .L29
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+2]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- je .L29
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- jne .L29
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cmp DWORD PTR [rbp-12], eax
- je .L30
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+1]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cmp DWORD PTR [rbp-12], eax
- jne .L31
- .L30:
- mov eax, DWORD PTR [rbp-12]
- mov esi, eax
- mov edi, OFFSET FLAT:.LC6
- mov eax, 0
- call printf
- mov eax, DWORD PTR [rbp-12]
- jmp .L20
- .L31:
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cmp DWORD PTR [rbp-16], eax
- je .L32
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+1]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- cmp DWORD PTR [rbp-16], eax
- jne .L33
- .L32:
- mov eax, DWORD PTR [rbp-16]
- mov esi, eax
- mov edi, OFFSET FLAT:.LC6
- mov eax, 0
- call printf
- mov eax, DWORD PTR [rbp-16]
- jmp .L20
- .L33:
- mov eax, DWORD PTR [rbp-8]
- movsx rcx, eax
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- mov DWORD PTR [rbp-12], eax
- mov eax, DWORD PTR [rbp-8]
- lea ecx, [rax+1]
- mov edx, 1431655766
- mov eax, ecx
- imul edx
- mov eax, ecx
- sar eax, 31
- sub edx, eax
- mov eax, edx
- add eax, eax
- add eax, edx
- sub ecx, eax
- mov edx, ecx
- movsx rcx, edx
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- add rax, rcx
- mov eax, DWORD PTR [rbp-112+rax*4]
- mov DWORD PTR [rbp-16], eax
- .L29:
- add DWORD PTR [rbp-8], 1
- .L28:
- cmp DWORD PTR [rbp-8], 1
- jle .L34
- add DWORD PTR [rbp-4], 1
- .L27:
- cmp DWORD PTR [rbp-4], 7
- jle .L35
- mov eax, DWORD PTR board[rip+20]
- cmp eax, 2
- jne .L36
- mov edi, OFFSET FLAT:.LC7
- call puts
- mov eax, 5
- jmp .L20
- .L36:
- mov edx, DWORD PTR board[rip+4]
- cmp DWORD PTR [rbp-116], 0
- sete al
- movzx eax, al
- cmp edx, eax
- jne .L37
- mov eax, DWORD PTR board[rip+36]
- cmp eax, 2
- jne .L37
- mov edi, OFFSET FLAT:.LC8
- call puts
- mov eax, 9
- jmp .L20
- .L37:
- mov edx, DWORD PTR board[rip+36]
- cmp DWORD PTR [rbp-116], 0
- sete al
- movzx eax, al
- cmp edx, eax
- jne .L38
- mov eax, DWORD PTR board[rip+4]
- cmp eax, 2
- jne .L38
- mov edi, OFFSET FLAT:.LC8
- call puts
- mov eax, 1
- jmp .L20
- .L38:
- mov edx, DWORD PTR board[rip+28]
- cmp DWORD PTR [rbp-116], 0
- sete al
- movzx eax, al
- cmp edx, eax
- jne .L39
- mov eax, DWORD PTR board[rip+12]
- cmp eax, 2
- jne .L39
- mov edi, OFFSET FLAT:.LC8
- call puts
- mov eax, 3
- jmp .L20
- .L39:
- mov edx, DWORD PTR board[rip+12]
- cmp DWORD PTR [rbp-116], 0
- sete al
- movzx eax, al
- cmp edx, eax
- jne .L40
- mov eax, DWORD PTR board[rip+28]
- cmp eax, 2
- jne .L40
- mov edi, OFFSET FLAT:.LC8
- call puts
- mov eax, 7
- jmp .L20
- .L40:
- mov eax, DWORD PTR board[rip+4]
- cmp eax, 2
- jne .L41
- mov edi, OFFSET FLAT:.LC9
- call puts
- mov eax, 1
- jmp .L20
- .L41:
- mov eax, DWORD PTR board[rip+12]
- cmp eax, 2
- jne .L42
- mov edi, OFFSET FLAT:.LC10
- call puts
- mov eax, 3
- jmp .L20
- .L42:
- mov eax, DWORD PTR board[rip+28]
- cmp eax, 2
- jne .L43
- mov edi, OFFSET FLAT:.LC11
- call puts
- mov eax, 7
- jmp .L20
- .L43:
- mov eax, DWORD PTR board[rip+36]
- cmp eax, 2
- jne .L44
- mov edi, OFFSET FLAT:.LC12
- call puts
- mov eax, 9
- jmp .L20
- .L44:
- mov eax, DWORD PTR board[rip+8]
- cmp eax, 2
- jne .L45
- mov edi, OFFSET FLAT:.LC13
- call puts
- mov eax, 2
- jmp .L20
- .L45:
- mov eax, DWORD PTR board[rip+16]
- cmp eax, 2
- jne .L46
- mov edi, OFFSET FLAT:.LC14
- call puts
- mov eax, 4
- jmp .L20
- .L46:
- mov eax, DWORD PTR board[rip+24]
- cmp eax, 2
- jne .L47
- mov edi, OFFSET FLAT:.LC15
- call puts
- mov eax, 6
- jmp .L20
- .L47:
- mov eax, DWORD PTR board[rip+32]
- cmp eax, 2
- jne .L48
- mov edi, OFFSET FLAT:.LC16
- call puts
- mov eax, 8
- jmp .L20
- .L48:
- .L20:
- leave
- ret
- update_board:
- push rbp
- mov rbp, rsp
- mov DWORD PTR [rbp-4], edi
- mov DWORD PTR [rbp-8], esi
- mov eax, DWORD PTR [rbp-8]
- cdqe
- mov edx, DWORD PTR [rbp-4]
- mov DWORD PTR board[0+rax*4], edx
- nop
- pop rbp
- ret
- gamewon:
- push rbp
- mov rbp, rsp
- mov DWORD PTR [rbp-112], 1
- mov DWORD PTR [rbp-108], 2
- mov DWORD PTR [rbp-104], 3
- mov DWORD PTR [rbp-100], 4
- mov DWORD PTR [rbp-96], 5
- mov DWORD PTR [rbp-92], 6
- mov DWORD PTR [rbp-88], 7
- mov DWORD PTR [rbp-84], 8
- mov DWORD PTR [rbp-80], 9
- mov DWORD PTR [rbp-76], 1
- mov DWORD PTR [rbp-72], 4
- mov DWORD PTR [rbp-68], 7
- mov DWORD PTR [rbp-64], 2
- mov DWORD PTR [rbp-60], 5
- mov DWORD PTR [rbp-56], 8
- mov DWORD PTR [rbp-52], 3
- mov DWORD PTR [rbp-48], 6
- mov DWORD PTR [rbp-44], 9
- mov DWORD PTR [rbp-40], 1
- mov DWORD PTR [rbp-36], 5
- mov DWORD PTR [rbp-32], 9
- mov DWORD PTR [rbp-28], 3
- mov DWORD PTR [rbp-24], 5
- mov DWORD PTR [rbp-20], 7
- mov DWORD PTR [rbp-8], 0
- mov DWORD PTR [rbp-4], 0
- jmp .L52
- .L56:
- cmp DWORD PTR [rbp-8], 0
- jne .L53
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- sal rax, 2
- add rax, rbp
- sub rax, 112
- mov eax, DWORD PTR [rax]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- je .L54
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- sal rax, 2
- add rax, rbp
- sub rax, 112
- mov eax, DWORD PTR [rax]
- cdqe
- mov ecx, DWORD PTR board[0+rax*4]
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- sal rax, 2
- add rax, rbp
- sub rax, 108
- mov eax, DWORD PTR [rax]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp ecx, eax
- jne .L54
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- sal rax, 2
- add rax, rbp
- sub rax, 108
- mov eax, DWORD PTR [rax]
- cdqe
- mov ecx, DWORD PTR board[0+rax*4]
- mov eax, DWORD PTR [rbp-4]
- movsx rdx, eax
- mov rax, rdx
- add rax, rax
- add rax, rdx
- sal rax, 2
- add rax, rbp
- sub rax, 104
- mov eax, DWORD PTR [rax]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp ecx, eax
- jne .L54
- .L53:
- mov eax, 1
- jmp .L55
- .L54:
- mov eax, 0
- .L55:
- mov DWORD PTR [rbp-8], eax
- add DWORD PTR [rbp-4], 1
- .L52:
- cmp DWORD PTR [rbp-4], 7
- jle .L56
- mov eax, DWORD PTR [rbp-8]
- pop rbp
- ret
- gamedrawn:
- push rbp
- mov rbp, rsp
- sub rsp, 16
- mov DWORD PTR [rbp-8], 0
- mov DWORD PTR [rbp-12], 0
- mov DWORD PTR [rbp-4], 1
- jmp .L59
- .L63:
- cmp DWORD PTR [rbp-8], 0
- jne .L60
- mov eax, DWORD PTR [rbp-4]
- cdqe
- mov eax, DWORD PTR board[0+rax*4]
- cmp eax, 2
- jne .L61
- .L60:
- mov eax, 1
- jmp .L62
- .L61:
- mov eax, 0
- .L62:
- mov DWORD PTR [rbp-8], eax
- add DWORD PTR [rbp-4], 1
- .L59:
- cmp DWORD PTR [rbp-4], 9
- jle .L63
- cmp DWORD PTR [rbp-8], 0
- jne .L64
- call gamewon
- test eax, eax
- jne .L64
- mov eax, 1
- jmp .L65
- .L64:
- mov eax, 0
- .L65:
- mov DWORD PTR [rbp-16], eax
- mov eax, DWORD PTR [rbp-16]
- leave
- ret
- .LC17:
- .string "\nYou lose. To a computer."
- .LC18:
- .string "\nCongratulations, Crosses, you have won."
- .LC19:
- .string "\nERROR"
- .LC20:
- .string "\nIt's a draw."
- main:
- push rbp
- mov rbp, rsp
- sub rsp, 16
- mov DWORD PTR [rbp-4], 1
- call initialise_board
- call display_board
- jmp .L68
- .L72:
- cmp DWORD PTR [rbp-4], 1
- jne .L69
- mov eax, DWORD PTR [rbp-4]
- mov edi, eax
- call make_move
- mov edx, eax
- mov eax, DWORD PTR [rbp-4]
- mov esi, edx
- mov edi, eax
- call update_board
- jmp .L70
- .L69:
- mov eax, DWORD PTR [rbp-4]
- mov edi, eax
- call make_computer_move
- mov edx, eax
- mov eax, DWORD PTR [rbp-4]
- mov esi, edx
- mov edi, eax
- call update_board
- .L70:
- call display_board
- cmp DWORD PTR [rbp-4], 0
- sete al
- movzx eax, al
- mov DWORD PTR [rbp-4], eax
- .L68:
- call gamewon
- test eax, eax
- jne .L71
- call gamedrawn
- test eax, eax
- je .L72
- .L71:
- call gamewon
- cmp eax, 1
- jne .L73
- mov eax, DWORD PTR [rbp-4]
- test eax, eax
- je .L75
- cmp eax, 1
- jne .L80
- mov edi, OFFSET FLAT:.LC17
- mov eax, 0
- call printf
- jmp .L78
- .L75:
- mov edi, OFFSET FLAT:.LC18
- mov eax, 0
- call printf
- jmp .L78
- .L80:
- mov edi, OFFSET FLAT:.LC19
- mov eax, 0
- call printf
- jmp .L78
- .L73:
- mov edi, OFFSET FLAT:.LC20
- call puts
- .L78:
- mov eax, 0
- leave
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement