// File: /workspace/github_cpp_makefile_star2_O1/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 0x2134
movq %r14, -0x30(%rbp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x1de6
orb %al, 0x386a(%rip)       # 0x50ea
movq -0xe8(%rbp), %rdi
cmpq %r12, %rdi
je 0x189b
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x10f0
leaq 0x17b8(%rip), %rsi      # 0x305a
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x1990
leaq 0x17a2(%rip), %rsi      # 0x305c
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x1a5f
leaq 0x178c(%rip), %rsi      # 0x305e
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
je 0x1b21
leaq 0x1776(%rip), %rsi      # 0x3060
movq -0x38(%rbp), %rdi
callq 0x1050
testl %eax, %eax
jne 0x1bba
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 0x197e
movl (%r13,%r14), %ecx
cmpl %ecx, %eax
jne 0x1974
addl %eax, %ecx
movl %ecx, -0x10(%r13,%r14)
movl $0x0, (%r13,%r14)
movb $0x1, 0x37b1(%rip)      # 0x50ea
movq %r12, -0x68(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2134
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1de6
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x1974
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $0x10, %r14
cmpq $0x30, %r14
jne 0x1910
incq %rbx
addq $0x4, %r13
cmpq $0x4, %rbx
jne 0x190d
jmp 0x1bba
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 0x1a41
movl (%r15), %ecx
cmpl %ecx, %eax
jne 0x1a33
leaq (,%r14,4), %rdx
addq %r13, %rdx
addl %eax, %ecx
movl %ecx, (%rdx)
movl $0x0, (%r15)
movb $0x1, 0x3702(%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 0x2134
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x1de6
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1a33
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $-0x4, %r15
cmpl $0x1, %r14d
ja 0x19b8
movq -0x48(%rbp), %r13
incq %r13
movq -0x40(%rbp), %r15
addq $0x10, %r15
cmpq $0x4, %r13
jne 0x19a2
jmp 0x1bba
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 0x1b07
movl (%r15), %edx
cmpl %edx, %ecx
jne 0x1af9
leaq (%rax,%r13,4), %rax
addl %ecx, %edx
movl %edx, (%rax)
movl $0x0, (%r15)
movb $0x1, 0x363c(%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 0x2134
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x1de6
movq -0xa8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1af9
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x10f0
addq $-0x10, %r15
cmpl $0x1, %r14d
ja 0x1a7b
incq %r13
movq -0x40(%rbp), %r15
addq $0x4, %r15
cmpq $0x4, %r13
jne 0x1a71
jmp 0x1bba
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 0x1ba9
movl (%r14,%r13,4), %ecx
cmpl %ecx, %eax
jne 0x1ba0
addl %eax, %ecx
movl %ecx, -0x4(%r14,%r13,4)
movl $0x0, (%r14,%r13,4)
movb $0x1, 0x358b(%rip)      # 0x50ea
movq %r12, -0x88(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2134
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x1de6
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x1ba0
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x10f0
incq %r13
cmpq $0x4, %r13
jne 0x1b38
incq %rbx
addq $0x10, %r14
cmpq $0x4, %rbx
jne 0x1b32
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq -0xe8(%rbp), %rdi
jmp 0x1beb
movq %rax, %r14
movq -0x68(%rbp), %rdi
jmp 0x1beb
movq %rax, %r14
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
jne 0x1c10
jmp 0x1c1c
movq %rax, %r14
movq -0xa8(%rbp), %rdi
jmp 0x1c08
movq %rax, %r14
movq -0xc8(%rbp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r12
je 0x1c1c
movq (%r12), %rsi
incq %rsi
callq 0x10f0
movq %r14, %rdi
callq 0x1180