char jump(char *seqnc) {
  char *ptr7, *ptr8, *ptr9, cnt;
  ptr7 = seqnc + 7;
  ptr8 = ptr7 + 1;
  ptr9 = ptr8 + 1;
  if (*ptr7 > *ptr8) {
    if (*ptr8 > 1)
      *ptr7 = *ptr8 - 1;
    else if (*ptr9 > 3) {
      (*ptr9)--;
      *ptr8 = *ptr9 - 1;
      *ptr7 = *ptr8 - 1;
    } else
      return (1);
    ptr7--;
    for (cnt = 9; cnt > 0; cnt--) {
      if (cnt != *ptr9) {
        *ptr7 = cnt;
        ptr7--;
      } else
        ptr9--;
    }
  }
  return (0);
}


x86 assembly (clang, -O0):
<jump>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
mov    -0x20(%rbp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
jle    1228 <jump+0x128>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x1,%eax
jle    1169 <jump+0x69>
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
sub    $0x1,%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
jmp    11bb <jump+0xbb>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3,%eax
jle    11ad <jump+0xad>
mov    -0x28(%rbp),%rax
mov    (%rax),%cl
add    $0xff,%cl
mov    %cl,(%rax)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
sub    $0x1,%eax
mov    %al,%cl
mov    -0x20(%rbp),%rax
mov    %cl,(%rax)
mov    -0x20(%rbp),%rax
movsbl (%rax),%eax
sub    $0x1,%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
jmp    11b6 <jump+0xb6>
movb   $0x1,-0x1(%rbp)
jmp    122c <jump+0x12c>
jmp    11bb <jump+0xbb>
mov    -0x18(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x18(%rbp)
movb   $0x9,-0x29(%rbp)
movsbl -0x29(%rbp),%eax
cmp    $0x0,%eax
jle    1223 <jump+0x123>
movsbl -0x29(%rbp),%eax
mov    -0x28(%rbp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
je     1205 <jump+0x105>
mov    -0x29(%rbp),%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x18(%rbp)
jmp    1211 <jump+0x111>
mov    -0x28(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
jmp    1216 <jump+0x116>
mov    -0x29(%rbp),%al
add    $0xff,%al
mov    %al,-0x29(%rbp)
jmp    11cb <jump+0xcb>
jmp    1228 <jump+0x128>
movb   $0x0,-0x1(%rbp)
movsbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<jump>:
mov    0x8(%rdi),%dl
cmp    %dl,0x7(%rdi)
jle    11f8 <jump+0xf8>
lea    0x9(%rdi),%rcx
cmp    $0x2,%dl
jl     111c <jump+0x1c>
lea    -0x1(%rdx),%esi
mov    (%rcx),%al
jmp    113b <jump+0x3b>
mov    (%rcx),%sil
mov    $0x1,%al
cmp    $0x4,%sil
jl     11fa <jump+0xfa>
lea    -0x1(%rsi),%eax
mov    %al,0x9(%rdi)
lea    -0x2(%rsi),%edx
mov    %dl,0x8(%rdi)
add    $0xfd,%sil
mov    %sil,0x7(%rdi)
cmp    $0x9,%al
jne    11aa <jump+0xaa>
mov    %rdi,%rcx
add    $0x6,%rdi
add    $0x8,%rcx
mov    %edx,%eax
cmp    $0x8,%al
je     11b6 <jump+0xb6>
movb   $0x8,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x7,(%rcx)
je     11bf <jump+0xbf>
movb   $0x7,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x6,(%rcx)
je     11c8 <jump+0xc8>
movb   $0x6,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x5,(%rcx)
je     11d1 <jump+0xd1>
movb   $0x5,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x4,(%rcx)
je     11da <jump+0xda>
movb   $0x4,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x3,(%rcx)
je     11e3 <jump+0xe3>
movb   $0x3,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x2,(%rcx)
je     11ec <jump+0xec>
movb   $0x2,(%rdi)
add    $0xffffffffffffffff,%rdi
cmpb   $0x1,(%rcx)
jne    11f5 <jump+0xf5>
jmp    11f8 <jump+0xf8>
movb   $0x9,0x6(%rdi)
add    $0x5,%rdi
cmp    $0x8,%al
jne    1154 <jump+0x54>
add    $0xffffffffffffffff,%rcx
cmpb   $0x7,(%rcx)
jne    1160 <jump+0x60>
add    $0xffffffffffffffff,%rcx
cmpb   $0x6,(%rcx)
jne    116c <jump+0x6c>
add    $0xffffffffffffffff,%rcx
cmpb   $0x5,(%rcx)
jne    1178 <jump+0x78>
add    $0xffffffffffffffff,%rcx
cmpb   $0x4,(%rcx)
jne    1184 <jump+0x84>
add    $0xffffffffffffffff,%rcx
cmpb   $0x3,(%rcx)
jne    1190 <jump+0x90>
add    $0xffffffffffffffff,%rcx
cmpb   $0x2,(%rcx)
jne    119c <jump+0x9c>
add    $0xffffffffffffffff,%rcx
cmpb   $0x1,(%rcx)
je     11f8 <jump+0xf8>
movb   $0x1,(%rdi)
xor    %eax,%eax
ret

LLVM IR (-O0):
define signext i8 @jump(i8* %0) {
%2 = alloca i8
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i8
store i8* %0, i8** %3
%8 = load i8*, i8** %3
%9 = getelementptr inbounds i8, i8* %8, i64 7
store i8* %9, i8** %4
%10 = load i8*, i8** %4
%11 = getelementptr inbounds i8, i8* %10, i64 1
store i8* %11, i8** %5
%12 = load i8*, i8** %5
%13 = getelementptr inbounds i8, i8* %12, i64 1
store i8* %13, i8** %6
%14 = load i8*, i8** %4
%15 = load i8, i8* %14
%16 = sext i8 %15 to i32
%17 = load i8*, i8** %5
%18 = load i8, i8* %17
%19 = sext i8 %18 to i32
%20 = icmp sgt i32 %16, %19
br i1 %20, label %21, label %83
21: ; preds = %1
%22 = load i8*, i8** %5
%23 = load i8, i8* %22
%24 = sext i8 %23 to i32
%25 = icmp sgt i32 %24, 1
br i1 %25, label %26, label %33
26: ; preds = %21
%27 = load i8*, i8** %5
%28 = load i8, i8* %27
%29 = sext i8 %28 to i32
%30 = sub nsw i32 %29, 1
%31 = trunc i32 %30 to i8
%32 = load i8*, i8** %4
store i8 %31, i8* %32
br label %56
33: ; preds = %21
%34 = load i8*, i8** %6
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = icmp sgt i32 %36, 3
br i1 %37, label %38, label %54
38: ; preds = %33
%39 = load i8*, i8** %6
%40 = load i8, i8* %39
%41 = add i8 %40, -1
store i8 %41, i8* %39
%42 = load i8*, i8** %6
%43 = load i8, i8* %42
%44 = sext i8 %43 to i32
%45 = sub nsw i32 %44, 1
%46 = trunc i32 %45 to i8
%47 = load i8*, i8** %5
store i8 %46, i8* %47
%48 = load i8*, i8** %5
%49 = load i8, i8* %48
%50 = sext i8 %49 to i32
%51 = sub nsw i32 %50, 1
%52 = trunc i32 %51 to i8
%53 = load i8*, i8** %4
store i8 %52, i8* %53
br label %55
54: ; preds = %33
store i8 1, i8* %2
br label %84
55: ; preds = %38
br label %56
56: ; preds = %55, %26
%57 = load i8*, i8** %4
%58 = getelementptr inbounds i8, i8* %57, i32 -1
store i8* %58, i8** %4
store i8 9, i8* %7
br label %59
59: ; preds = %79, %56
%60 = load i8, i8* %7
%61 = sext i8 %60 to i32
%62 = icmp sgt i32 %61, 0
br i1 %62, label %63, label %82
63: ; preds = %59
%64 = load i8, i8* %7
%65 = sext i8 %64 to i32
%66 = load i8*, i8** %6
%67 = load i8, i8* %66
%68 = sext i8 %67 to i32
%69 = icmp ne i32 %65, %68
br i1 %69, label %70, label %75
70: ; preds = %63
%71 = load i8, i8* %7
%72 = load i8*, i8** %4
store i8 %71, i8* %72
%73 = load i8*, i8** %4
%74 = getelementptr inbounds i8, i8* %73, i32 -1
store i8* %74, i8** %4
br label %78
75: ; preds = %63
%76 = load i8*, i8** %6
%77 = getelementptr inbounds i8, i8* %76, i32 -1
store i8* %77, i8** %6
br label %78
78: ; preds = %75, %70
br label %79
79: ; preds = %78
%80 = load i8, i8* %7
%81 = add i8 %80, -1
store i8 %81, i8* %7
br label %59
82: ; preds = %59
br label %83
83: ; preds = %82, %1
store i8 0, i8* %2
br label %84
84: ; preds = %83, %54
%85 = load i8, i8* %2
ret i8 %85
}

LLVM IR (-O2):
define signext i8 @jump(i8* nocapture %0) {
%2 = getelementptr inbounds i8, i8* %0, i64 7
%3 = getelementptr inbounds i8, i8* %0, i64 8
%4 = getelementptr inbounds i8, i8* %0, i64 9
%5 = load i8, i8* %2
%6 = load i8, i8* %3
%7 = icmp sgt i8 %5, %6
br i1 %7, label %8, label %99
8: ; preds = %1
%9 = icmp sgt i8 %6, 1
br i1 %9, label %10, label %13
10: ; preds = %8
%11 = add nsw i8 %6, -1
%12 = load i8, i8* %4
br label %20
13: ; preds = %8
%14 = load i8, i8* %4
%15 = icmp sgt i8 %14, 3
br i1 %15, label %16, label %99
16: ; preds = %13
%17 = add nsw i8 %14, -1
store i8 %17, i8* %4
%18 = add nsw i8 %14, -2
store i8 %18, i8* %3
%19 = add nsw i8 %14, -3
br label %20
20: ; preds = %16, %10
%21 = phi i8 [ %18, %16 ], [ %6, %10 ]
%22 = phi i8 [ %17, %16 ], [ %12, %10 ]
%23 = phi i8 [ %19, %16 ], [ %11, %10 ]
store i8 %23, i8* %2
%24 = getelementptr inbounds i8, i8* %0, i64 6
%25 = icmp eq i8 %22, 9
br i1 %25, label %28, label %26
26: ; preds = %20
store i8 9, i8* %24
%27 = getelementptr inbounds i8, i8* %0, i64 5
br label %30
28: ; preds = %20
%29 = getelementptr inbounds i8, i8* %0, i64 8
br label %30
30: ; preds = %26, %28
%31 = phi i8 [ %22, %26 ], [ %21, %28 ]
%32 = phi i8* [ %27, %26 ], [ %24, %28 ]
%33 = phi i8* [ %4, %26 ], [ %29, %28 ]
%34 = icmp eq i8 %31, 8
br i1 %34, label %37, label %35
35: ; preds = %30
store i8 8, i8* %32
%36 = getelementptr inbounds i8, i8* %32, i64 -1
br label %39
37: ; preds = %30
%38 = getelementptr inbounds i8, i8* %33, i64 -1
br label %39
39: ; preds = %37, %35
%40 = phi i8* [ %36, %35 ], [ %32, %37 ]
%41 = phi i8* [ %33, %35 ], [ %38, %37 ]
%42 = load i8, i8* %41
%43 = icmp eq i8 %42, 7
br i1 %43, label %46, label %44
44: ; preds = %39
store i8 7, i8* %40
%45 = getelementptr inbounds i8, i8* %40, i64 -1
br label %48
46: ; preds = %39
%47 = getelementptr inbounds i8, i8* %41, i64 -1
br label %48
48: ; preds = %46, %44
%49 = phi i8* [ %45, %44 ], [ %40, %46 ]
%50 = phi i8* [ %41, %44 ], [ %47, %46 ]
%51 = load i8, i8* %50
%52 = icmp eq i8 %51, 6
br i1 %52, label %55, label %53
53: ; preds = %48
store i8 6, i8* %49
%54 = getelementptr inbounds i8, i8* %49, i64 -1
br label %57
55: ; preds = %48
%56 = getelementptr inbounds i8, i8* %50, i64 -1
br label %57
57: ; preds = %55, %53
%58 = phi i8* [ %54, %53 ], [ %49, %55 ]
%59 = phi i8* [ %50, %53 ], [ %56, %55 ]
%60 = load i8, i8* %59
%61 = icmp eq i8 %60, 5
br i1 %61, label %64, label %62
62: ; preds = %57
store i8 5, i8* %58
%63 = getelementptr inbounds i8, i8* %58, i64 -1
br label %66
64: ; preds = %57
%65 = getelementptr inbounds i8, i8* %59, i64 -1
br label %66
66: ; preds = %64, %62
%67 = phi i8* [ %63, %62 ], [ %58, %64 ]
%68 = phi i8* [ %59, %62 ], [ %65, %64 ]
%69 = load i8, i8* %68
%70 = icmp eq i8 %69, 4
br i1 %70, label %73, label %71
71: ; preds = %66
store i8 4, i8* %67
%72 = getelementptr inbounds i8, i8* %67, i64 -1
br label %75
73: ; preds = %66
%74 = getelementptr inbounds i8, i8* %68, i64 -1
br label %75
75: ; preds = %73, %71
%76 = phi i8* [ %72, %71 ], [ %67, %73 ]
%77 = phi i8* [ %68, %71 ], [ %74, %73 ]
%78 = load i8, i8* %77
%79 = icmp eq i8 %78, 3
br i1 %79, label %82, label %80
80: ; preds = %75
store i8 3, i8* %76
%81 = getelementptr inbounds i8, i8* %76, i64 -1
br label %84
82: ; preds = %75
%83 = getelementptr inbounds i8, i8* %77, i64 -1
br label %84
84: ; preds = %82, %80
%85 = phi i8* [ %81, %80 ], [ %76, %82 ]
%86 = phi i8* [ %77, %80 ], [ %83, %82 ]
%87 = load i8, i8* %86
%88 = icmp eq i8 %87, 2
br i1 %88, label %91, label %89
89: ; preds = %84
store i8 2, i8* %85
%90 = getelementptr inbounds i8, i8* %85, i64 -1
br label %93
91: ; preds = %84
%92 = getelementptr inbounds i8, i8* %86, i64 -1
br label %93
93: ; preds = %91, %89
%94 = phi i8* [ %90, %89 ], [ %85, %91 ]
%95 = phi i8* [ %86, %89 ], [ %92, %91 ]
%96 = load i8, i8* %95
%97 = icmp eq i8 %96, 1
br i1 %97, label %99, label %98
98: ; preds = %93
store i8 1, i8* %94
br label %99
99: ; preds = %98, %93, %1, %13
%100 = phi i8 [ 1, %13 ], [ 0, %1 ], [ 0, %93 ], [ 0, %98 ]
ret i8 %100
}