void Rename_IncYearMonthDay(int *_inc_ymd, int _ymd, int _days) {
  int _loop_n = _days;
  int _dd = _ymd - 100 * (_ymd / 100);
  int _mm = (_ymd / 100) - 100 * (_ymd / 10000);
  int _yy = _ymd / 10000;
  while (_loop_n) {
    switch (_dd) {
    case 31: {
      _dd = 1;
      _mm++;
      if (_mm == 13) {
        _mm = 1;
        _yy++;
      }
    }; break;
    case 30:
      switch (_mm) {
      case 9:
      case 4:
      case 6:
      case 11: {
        _dd = 1;
        _mm++;
        if (_mm == 13) {
          _mm = 1;
          _yy++;
        }
      }; break;
      default:
        _dd++;
        break;
      }
      break;
    case 29:
      switch (_mm) {
      case 2: {
        _dd = 1;
        _mm++;
        if (_mm == 13) {
          _mm = 1;
          _yy++;
        }
      }; break;
      default:
        _dd++;
        break;
      }
      break;
    case 28:
      switch (_mm) {
      case 2:
        if (_yy == _yy - 4 * (_yy / 4))
          _dd++;
        else {
          _dd = 1;
          _mm++;
          if (_mm == 13) {
            _mm = 1;
            _yy++;
          }
        };
        break;
      default:
        _dd++;
        break;
      }
      break;
    default:
      _dd++;
      break;
    }
    _loop_n--;
  }
  *_inc_ymd = (_yy * 10000) + (_mm * 100) + _dd;
}


x86 assembly (clang, -O0):
<Rename_IncYearMonthDay>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x28(%rbp),%eax
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,-0x24(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2710,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x24(%rbp),%eax
imul   $0x64,%ecx,%ecx
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2710,%ecx
cltd
idiv   %ecx
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x14(%rbp)
je     1338 <Rename_IncYearMonthDay+0x238>
mov    -0x18(%rbp),%eax
add    $0xffffffe4,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x3,%eax
ja     1321 <Rename_IncYearMonthDay+0x221>
mov    -0x30(%rbp),%rax
lea    0xe70(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jne    11c3 <Rename_IncYearMonthDay+0xc3>
movl   $0x1,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    132a <Rename_IncYearMonthDay+0x22a>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x34(%rbp)
sub    $0x4,%eax
je     120f <Rename_IncYearMonthDay+0x10f>
jmp    11dc <Rename_IncYearMonthDay+0xdc>
mov    -0x34(%rbp),%eax
sub    $0x6,%eax
je     120f <Rename_IncYearMonthDay+0x10f>
jmp    11ed <Rename_IncYearMonthDay+0xed>
mov    -0x34(%rbp),%eax
sub    $0x9,%eax
je     120f <Rename_IncYearMonthDay+0x10f>
jmp    11fe <Rename_IncYearMonthDay+0xfe>
mov    -0x34(%rbp),%eax
sub    $0xb,%eax
jne    123e <Rename_IncYearMonthDay+0x13e>
jmp    120f <Rename_IncYearMonthDay+0x10f>
movl   $0x1,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jne    1239 <Rename_IncYearMonthDay+0x139>
movl   $0x1,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1247 <Rename_IncYearMonthDay+0x147>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    132a <Rename_IncYearMonthDay+0x22a>
mov    -0x1c(%rbp),%eax
sub    $0x2,%eax
jne    128c <Rename_IncYearMonthDay+0x18c>
jmp    125d <Rename_IncYearMonthDay+0x15d>
movl   $0x1,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jne    1287 <Rename_IncYearMonthDay+0x187>
movl   $0x1,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1295 <Rename_IncYearMonthDay+0x195>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    132a <Rename_IncYearMonthDay+0x22a>
mov    -0x1c(%rbp),%eax
sub    $0x2,%eax
jne    1313 <Rename_IncYearMonthDay+0x213>
jmp    12ab <Rename_IncYearMonthDay+0x1ab>
mov    -0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0x20(%rbp),%eax
mov    $0x4,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x38(%rbp),%eax
shl    $0x2,%edx
sub    %edx,%ecx
cmp    %ecx,%eax
jne    12df <Rename_IncYearMonthDay+0x1df>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    130e <Rename_IncYearMonthDay+0x20e>
movl   $0x1,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jne    1309 <Rename_IncYearMonthDay+0x209>
movl   $0x1,-0x1c(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    130e <Rename_IncYearMonthDay+0x20e>
jmp    131c <Rename_IncYearMonthDay+0x21c>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    132a <Rename_IncYearMonthDay+0x22a>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x14(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x14(%rbp)
jmp    1166 <Rename_IncYearMonthDay+0x66>
imul   $0x2710,-0x20(%rbp),%ecx
imul   $0x64,-0x1c(%rbp),%eax
add    %eax,%ecx
add    -0x18(%rbp),%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<Rename_IncYearMonthDay>:
push   %rbp
push   %rbx
movslq %esi,%rax
imul   $0x51eb851f,%rax,%rbp
mov    %rbp,%rcx
shr    $0x3f,%rcx
sar    $0x25,%rbp
add    %ecx,%ebp
imul   $0xffffff9c,%ebp,%ecx
lea    (%rax,%rcx,1),%esi
imul   $0x68db8bad,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x2c,%rax
add    %ecx,%eax
imul   $0xffffff9c,%eax,%ecx
add    %ebp,%ecx
test   %edx,%edx
je     121a <Rename_IncYearMonthDay+0x11a>
lea    0xeb9(%rip),%r8
mov    $0x1d,%r9d
mov    $0x1,%r10d
mov    $0x3,%r11d
mov    $0xa50,%ebp
jmp    1179 <Rename_IncYearMonthDay+0x79>
add    $0x1,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    $0xffffffff,%edx
je     121a <Rename_IncYearMonthDay+0x11a>
lea    -0x1c(%rsi),%ebx
cmp    $0x3,%ebx
ja     1160 <Rename_IncYearMonthDay+0x60>
movslq (%r8,%rbx,4),%rsi
add    %r8,%rsi
jmp    *%rsi
mov    $0x1d,%esi
cmp    $0x2,%ecx
jne    1170 <Rename_IncYearMonthDay+0x70>
lea    0x3(%rax),%esi
test   %eax,%eax
cmovns %eax,%esi
xor    %ecx,%ecx
test   $0xfffffffc,%esi
sete   %cl
mov    $0x1,%esi
cmove  %r9d,%esi
xor    $0x3,%ecx
jmp    1170 <Rename_IncYearMonthDay+0x70>
cs nopw 0x0(%rax,%rax,1)
nop
cmp    $0x2,%ecx
mov    $0x1e,%esi
cmove  %r10d,%esi
cmove  %r11d,%ecx
jmp    1170 <Rename_IncYearMonthDay+0x70>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x1f,%esi
cmp    $0xb,%ecx
ja     1170 <Rename_IncYearMonthDay+0x70>
bt     %ecx,%ebp
jae    1170 <Rename_IncYearMonthDay+0x70>
add    $0x1,%ecx
mov    $0x1,%esi
jmp    1170 <Rename_IncYearMonthDay+0x70>
nopl   0x0(%rax)
add    $0x1,%ecx
xor    %ebx,%ebx
cmp    $0xd,%ecx
sete   %bl
mov    $0x1,%esi
cmove  %esi,%ecx
add    %ebx,%eax
jmp    1170 <Rename_IncYearMonthDay+0x70>
imul   $0x2710,%eax,%eax
imul   $0x64,%ecx,%ecx
add    %esi,%ecx
add    %eax,%ecx
mov    %ecx,(%rdi)
pop    %rbx
pop    %rbp
ret

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

LLVM IR (-O2):
define void @Rename_IncYearMonthDay(i32* nocapture writeonly %0, i32 %1, i32 %2) {
%4 = sdiv i32 %1, 100
%5 = mul nsw i32 %4, -100
%6 = add i32 %5, %1
%7 = sdiv i32 %1, 10000
%8 = mul nsw i32 %7, -100
%9 = add nsw i32 %8, %4
%10 = icmp eq i32 %2, 0
br i1 %10, label %44, label %11
11: ; preds = %3, %38
%12 = phi i32 [ %41, %38 ], [ %7, %3 ]
%13 = phi i32 [ %40, %38 ], [ %9, %3 ]
%14 = phi i32 [ %39, %38 ], [ %6, %3 ]
%15 = phi i32 [ %42, %38 ], [ %2, %3 ]
switch i32 %14, label %36 [
i32 31, label %16
i32 30, label %22
i32 29, label %25
i32 28, label %29
]
16: ; preds = %11
%17 = add nsw i32 %13, 1
%18 = icmp eq i32 %17, 13
%19 = select i1 %18, i32 1, i32 %17
%20 = zext i1 %18 to i32
%21 = add nsw i32 %12, %20
br label %38
22: ; preds = %11
switch i32 %13, label %38 [
i32 9, label %23
i32 4, label %23
i32 6, label %23
i32 11, label %23
]
23: ; preds = %22, %22, %22, %22
%24 = add nuw nsw i32 %13, 1
br label %38
25: ; preds = %11
%26 = icmp eq i32 %13, 2
%27 = select i1 %26, i32 1, i32 30
%28 = select i1 %26, i32 3, i32 %13
br label %38
29: ; preds = %11
%30 = icmp eq i32 %13, 2
br i1 %30, label %31, label %38
31: ; preds = %29
%32 = srem i32 %12, 4
%33 = icmp eq i32 %12, %32
%34 = select i1 %33, i32 29, i32 1
%35 = select i1 %33, i32 2, i32 3
br label %38
36: ; preds = %11
%37 = add nsw i32 %14, 1
br label %38
38: ; preds = %23, %16, %29, %31, %25, %22, %36
%39 = phi i32 [ %37, %36 ], [ 1, %16 ], [ 1, %23 ], [ 31, %22 ], [ %27, %25 ], [ %34, %31 ], [ 29, %29 ]
%40 = phi i32 [ %13, %36 ], [ %19, %16 ], [ %24, %23 ], [ %13, %22 ], [ %28, %25 ], [ %35, %31 ], [ %13, %29 ]
%41 = phi i32 [ %12, %36 ], [ %21, %16 ], [ %12, %23 ], [ %12, %22 ], [ %12, %25 ], [ %12, %31 ], [ %12, %29 ]
%42 = add nsw i32 %15, -1
%43 = icmp eq i32 %42, 0
br i1 %43, label %44, label %11
44: ; preds = %38, %3
%45 = phi i32 [ %6, %3 ], [ %39, %38 ]
%46 = phi i32 [ %9, %3 ], [ %40, %38 ]
%47 = phi i32 [ %7, %3 ], [ %41, %38 ]
%48 = mul nsw i32 %47, 10000
%49 = mul nsw i32 %46, 100
%50 = add i32 %49, %45
%51 = add i32 %50, %48
store i32 %51, i32* %0
ret void
}