// File: /workspace/github_cpp_makefile_star2_O3/sanket143[P]2048-Terminal-Game/./src/board.h
// Function: gb::Board::move(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void move(std::string direction) {
        flag |= shift(direction);
        if(direction == "R") {
          for(int row = 0; row < 4; row++) {
            for(int col = 3; col > 0; col--) {
              if(tiles[row][col] == 0) {
                break;
              }

              if(tiles[row][col] == tiles[row][col - 1]) {
                tiles[row][col] += tiles[row][col - 1];
                tiles[row][col - 1] = 0;
                flag |= true;
                shift(direction);
              }
            }
          }
        }
        else if(direction == "D") {
          for(int col = 0; col < 4; col++) {
            for(int row = 3; row > 0; row--) {
              if(tiles[row][col] == 0) {
                break;
              }

              if(tiles[row][col] == tiles[row - 1][col]) {
                tiles[row][col] += tiles[row - 1][col];
                tiles[row - 1][col] = 0;
                flag |= true;
                shift(direction);
              }
            }
          } 
        }
        else if(direction == "L") {
          for(int row = 0; row < 4; row++) {
            for(int col = 0; col < 3; col++) {
              if(tiles[row][col] == 0) {
                break;
              }

              if(tiles[row][col] == tiles[row][col + 1]) {
                tiles[row][col] += tiles[row][col + 1];
                tiles[row][col + 1] = 0;
                flag |= true;
                shift(direction);
              }
            }
          }
        }
        else if(direction == "U") {
          for(int col = 0; col < 4; col++) {
            for(int row = 0; row < 3; row++) {
              if(tiles[row][col] == 0) {
                break;
              }

              if(tiles[row][col] == tiles[row + 1][col]) {
                tiles[row][col] += tiles[row + 1][col];
                tiles[row + 1][col] = 0;
                flag |= true;
                shift(direction);
              }
            }
          }
        }
      }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %rax
movq %rdi, %r14
leaq -0xd8(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rsi), %rsi
movq %rax, -0x38(%rbp)
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %r15
movq %r15, %rdi
callq 0x2114
movq %r14, -0x30(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x1dc6
orb %al, 0x387e(%rip)       # 0x50ea
movq -0xe8(%rbp), %rdi
cmpq %r12, %rdi
je 0x1887
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x10f0
leaq 0x17cc(%rip), %rsi      # 0x305a
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x197a
leaq 0x17b6(%rip), %rsi      # 0x305c
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x1a47
leaq 0x17a0(%rip), %rsi      # 0x305e
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x1b07
leaq 0x178a(%rip), %rsi      # 0x3060
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
jne 0x1b9e
leaq -0x58(%rbp), %r12
movq -0x30(%rbp), %rax
leaq 0x10(%rax), %r13
xorl %ebx, %ebx
leaq -0x68(%rbp), %r15
xorl %r14d, %r14d
movl -0x10(%r13,%r14), %eax
testl %eax, %eax
je 0x1968
cmpl (%r13,%r14), %eax
jne 0x195e
addl %eax, %eax
movl %eax, -0x10(%r13,%r14)
movl $0x0, (%r13,%r14)
movb $0x1, 0x37c7(%rip)      # 0x50ea
movq %r12, -0x68(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2114
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1dc6
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x195e
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $0x10, %r14
cmpq $0x30, %r14
jne 0x18fc
incq %rbx
addq $0x4, %r13
cmpq $0x4, %rbx
jne 0x18f9
jmp 0x1b9e
leaq -0xb8(%rbp), %rbx
movq -0x30(%rbp), %rax
leaq 0x8(%rax), %r15
xorl %r13d, %r13d
movl $0x4, %r14d
movq %r13, -0x48(%rbp)
shlq $0x4, %r13
addq -0x30(%rbp), %r13
movq %r15, -0x40(%rbp)
decl %r14d
movl (%r13,%r14,4), %eax
testl %eax, %eax
je 0x1a29
cmpl (%r15), %eax
jne 0x1a1b
leaq (,%r14,4), %rcx
addq %r13, %rcx
addl %eax, %eax
movl %eax, (%rcx)
movl $0x0, (%r15)
movb $0x1, 0x371a(%rip)      # 0x50ea
movq %rbx, -0xc8(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xc8(%rbp), %r12
movq %r12, %rdi
callq 0x2114
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x1dc6
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1a1b
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $-0x4, %r15
cmpl $0x1, %r14d
ja 0x19a2
movq -0x48(%rbp), %r13
incq %r13
movq -0x40(%rbp), %r15
addq $0x10, %r15
cmpq $0x4, %r13
jne 0x198c
jmp 0x1b9e
leaq -0x98(%rbp), %rbx
movq -0x30(%rbp), %rax
leaq 0x20(%rax), %r15
xorl %r13d, %r13d
movl $0x4, %r14d
movq %r15, -0x40(%rbp)
decl %r14d
movq %r14, %rax
shlq $0x4, %rax
addq -0x30(%rbp), %rax
movl (%rax,%r13,4), %ecx
testl %ecx, %ecx
je 0x1aed
cmpl (%r15), %ecx
jne 0x1adf
leaq (%rax,%r13,4), %rax
addl %ecx, %ecx
movl %ecx, (%rax)
movl $0x0, (%r15)
movb $0x1, 0x3656(%rip)      # 0x50ea
movq %rbx, -0xa8(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0xa8(%rbp), %r12
movq %r12, %rdi
callq 0x2114
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x1dc6
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1adf
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $-0x10, %r15
cmpl $0x1, %r14d
ja 0x1a63
incq %r13
movq -0x40(%rbp), %r15
addq $0x4, %r15
cmpq $0x4, %r13
jne 0x1a59
jmp 0x1b9e
leaq -0x78(%rbp), %r12
xorl %ebx, %ebx
leaq -0x88(%rbp), %r15
movq -0x30(%rbp), %r14
movl $0x1, %r13d
movl -0x4(%r14,%r13,4), %eax
testl %eax, %eax
je 0x1b8d
cmpl (%r14,%r13,4), %eax
jne 0x1b84
addl %eax, %eax
movl %eax, -0x4(%r14,%r13,4)
movl $0x0, (%r14,%r13,4)
movb $0x1, 0x35a7(%rip)      # 0x50ea
movq %r12, -0x88(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2114
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1dc6
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x1b84
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x10f0
incq %r13
cmpq $0x4, %r13
jne 0x1b1e
incq %rbx
addq $0x10, %r14
cmpq $0x4, %rbx
jne 0x1b18
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq -0xe8(%rbp), %rdi
jmp 0x1bcf
movq %rax, %r14
movq -0x68(%rbp), %rdi
jmp 0x1bcf
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
jne 0x1bf4
jmp 0x1c00
movq %rax, %r14
movq -0xa8(%rbp), %rdi
jmp 0x1bec
movq %rax, %r14
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r12
je 0x1c00
movq (%r12), %rsi
incq %rsi
callq 0x10f0
movq %r14, %rdi
callq 0x1180