// File: /workspace/github_c_makefile_star2_O0/micahstairs[P]ScrambleChecker/movedelta.cpp
// Function: parsemoveseq(char const*)
moveseq parsemoveseq(const char *s) {
  moveseq r ;
  const char *faces = "UuFfRrDdBbLlIiJjKk" ;
  while (*s) {
    while (*s && *s <= ' ')
       s++ ;
    if (*s == 0 || *s == '/')
       break ;
    const char *fp = strchr(faces, *s) ;
    if (fp == 0) {
       cerr << "Illegal face in " << *s << endl ;
       exit(10) ;
    }
    int f = (fp - faces) / 2 ;
    if (f * TWISTS > NMOVES)
       error("! bad face for this metric") ;
    s++ ;
    switch (*s) {
case '-':
case '3':
case '\'':
       r.push_back(f*TWISTS+2) ;
       s++ ;
       break ;
case '2':
       r.push_back(f*TWISTS+1) ;
       s++ ;
       break ;
case '+':
case '1':
       s++ ;
default:
       r.push_back(f*TWISTS) ;
       break ;
    }
  }
  return r ;
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x20(%rsp)
movq %rdi, %rax
movq %rax, 0x28(%rsp)
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movb $0x0, 0x67(%rsp)
callq 0x3480
leaq 0x8a14(%rip), %rax      # 0xb040
movq %rax, 0x58(%rsp)
movq 0x68(%rsp), %rax
cmpb $0x0, (%rax)
je 0x2849
jmp 0x2641
movq 0x68(%rsp), %rcx
xorl %eax, %eax
cmpb $0x0, (%rcx)
movb %al, 0x1f(%rsp)
je 0x2663
movq 0x68(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
setle %al
movb %al, 0x1f(%rsp)
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0x266d
jmp 0x267d
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x2641
movq 0x68(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x2697
movq 0x68(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x269c
jmp 0x2849
movq 0x58(%rsp), %rdi
movq 0x68(%rsp), %rax
movsbl (%rax), %esi
callq 0x2060
movq %rax, 0x50(%rsp)
cmpq $0x0, 0x50(%rsp)
jne 0x2728
movq 0xd926(%rip), %rdi      # 0xffe8
leaq 0x898a(%rip), %rsi      # 0xb053
callq 0x2110
movq %rax, 0x10(%rsp)
jmp 0x26d5
movq 0x10(%rsp), %rdi
movq 0x68(%rsp), %rax
movsbl (%rax), %esi
callq 0x2160
movq %rax, 0x8(%rsp)
jmp 0x26ee
movq 0x8(%rsp), %rdi
movq 0xd8ae(%rip), %rsi      # 0xffa8
callq 0x2150
jmp 0x2701
movl $0xa, %edi
callq 0x2180
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
callq 0x34c0
jmp 0x2869
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
subq %rcx, %rax
movl $0x2, %ecx
cqto
idivq %rcx
movl %eax, 0x40(%rsp)
imull $0x3, 0x40(%rsp), %eax
cmpl $0x12, %eax
jle 0x275d
leaq 0x8910(%rip), %rdi      # 0xb064
callq 0x9430
jmp 0x275b
jmp 0x275d
movq 0x68(%rsp), %rax
incq %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movsbl (%rax), %eax
movl %eax, 0x4(%rsp)
subl $0x27, %eax
je 0x27b8
jmp 0x277d
movl 0x4(%rsp), %eax
subl $0x2b, %eax
je 0x2816
jmp 0x278c
movl 0x4(%rsp), %eax
subl $0x2d, %eax
je 0x27b8
jmp 0x2797
movl 0x4(%rsp), %eax
subl $0x31, %eax
je 0x2816
jmp 0x27a2
movl 0x4(%rsp), %eax
subl $0x32, %eax
je 0x27e7
jmp 0x27ad
movl 0x4(%rsp), %eax
subl $0x33, %eax
jne 0x2824
jmp 0x27b8
movq 0x20(%rsp), %rdi
movl 0x40(%rsp), %ecx
movl %ecx, %eax
leal 0x2(%rax,%rax,2), %eax
movl %eax, 0x3c(%rsp)
leaq 0x3c(%rsp), %rsi
callq 0x3490
jmp 0x27d7
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x2844
movq 0x20(%rsp), %rdi
movl 0x40(%rsp), %ecx
movl %ecx, %eax
leal 0x1(%rax,%rax,2), %eax
movl %eax, 0x38(%rsp)
leaq 0x38(%rsp), %rsi
callq 0x3490
jmp 0x2806
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x2844
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
movq 0x20(%rsp), %rdi
movl 0x40(%rsp), %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
movl %eax, 0x34(%rsp)
leaq 0x34(%rsp), %rsi
callq 0x3490
jmp 0x2842
jmp 0x2844
jmp 0x2631
movb $0x1, 0x67(%rsp)
testb $0x1, 0x67(%rsp)
jne 0x285f
movq 0x20(%rsp), %rdi
callq 0x34c0
movq 0x28(%rsp), %rax
addq $0x78, %rsp
retq
movq 0x48(%rsp), %rdi
callq 0x2220
nopw %cs:(%rax,%rax)