__attribute__((const, pure)) unsigned int __get_isowk(unsigned int y) {
  switch (y % 400) {
  default:
    break;
  case 4:
  case 9:
  case 15:
  case 20:
  case 26:
  case 32:
  case 37:
  case 43:
  case 48:
  case 54:
  case 60:
  case 65:
  case 71:
  case 76:
  case 82:
  case 88:
  case 93:
  case 99:
  case 105:
  case 111:
  case 116:
  case 122:
  case 128:
  case 133:
  case 139:
  case 144:
  case 150:
  case 156:
  case 161:
  case 167:
  case 172:
  case 178:
  case 184:
  case 189:
  case 195:
  case 201:
  case 207:
  case 212:
  case 218:
  case 224:
  case 229:
  case 235:
  case 240:
  case 246:
  case 252:
  case 257:
  case 263:
  case 268:
  case 274:
  case 280:
  case 285:
  case 291:
  case 296:
  case 303:
  case 308:
  case 314:
  case 320:
  case 325:
  case 331:
  case 336:
  case 342:
  case 348:
  case 353:
  case 359:
  case 364:
  case 370:
  case 376:
  case 381:
  case 387:
  case 392:
  case 398:
    return 53;
  }
  return 52;
}


x86 assembly (clang, -O0):
<__get_isowk>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
mov    %ecx,%eax
imul   $0x51eb851f,%rcx,%rcx
shr    $0x27,%rcx
imul   $0x190,%ecx,%ecx
sub    %ecx,%eax
add    $0xfffffffc,%eax
mov    %eax,%ecx
mov    %rcx,-0x10(%rbp)
sub    $0x18a,%eax
ja     1149 <__get_isowk+0x49>
mov    -0x10(%rbp),%rax
lea    0xec0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    115a <__get_isowk+0x5a>
movl   $0x35,-0x4(%rbp)
jmp    1161 <__get_isowk+0x61>
movl   $0x34,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<__get_isowk>:
mov    %edi,%eax
imul   $0x51eb851f,%rax,%rax
shr    $0x27,%rax
imul   $0x190,%eax,%eax
neg    %eax
lea    (%rdi,%rax,1),%ecx
add    $0xfffffffc,%ecx
cmp    $0x18a,%ecx
ja     1139 <__get_isowk+0x39>
mov    $0x35,%eax
lea    0xed1(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
ret
mov    $0x34,%eax
ret

LLVM IR (-O0):
define i32 @__get_isowk(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
%5 = urem i32 %4, 400
switch i32 %5, label %6 [
i32 4, label %7
i32 9, label %7
i32 15, label %7
i32 20, label %7
i32 26, label %7
i32 32, label %7
i32 37, label %7
i32 43, label %7
i32 48, label %7
i32 54, label %7
i32 60, label %7
i32 65, label %7
i32 71, label %7
i32 76, label %7
i32 82, label %7
i32 88, label %7
i32 93, label %7
i32 99, label %7
i32 105, label %7
i32 111, label %7
i32 116, label %7
i32 122, label %7
i32 128, label %7
i32 133, label %7
i32 139, label %7
i32 144, label %7
i32 150, label %7
i32 156, label %7
i32 161, label %7
i32 167, label %7
i32 172, label %7
i32 178, label %7
i32 184, label %7
i32 189, label %7
i32 195, label %7
i32 201, label %7
i32 207, label %7
i32 212, label %7
i32 218, label %7
i32 224, label %7
i32 229, label %7
i32 235, label %7
i32 240, label %7
i32 246, label %7
i32 252, label %7
i32 257, label %7
i32 263, label %7
i32 268, label %7
i32 274, label %7
i32 280, label %7
i32 285, label %7
i32 291, label %7
i32 296, label %7
i32 303, label %7
i32 308, label %7
i32 314, label %7
i32 320, label %7
i32 325, label %7
i32 331, label %7
i32 336, label %7
i32 342, label %7
i32 348, label %7
i32 353, label %7
i32 359, label %7
i32 364, label %7
i32 370, label %7
i32 376, label %7
i32 381, label %7
i32 387, label %7
i32 392, label %7
i32 398, label %7
]
6: ; preds = %1
br label %8
7: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1
store i32 53, i32* %2
br label %9
8: ; preds = %6
store i32 52, i32* %2
br label %9
9: ; preds = %8, %7
%10 = load i32, i32* %2
ret i32 %10
}

LLVM IR (-O2):
define i32 @__get_isowk(i32 %0) {
%2 = urem i32 %0, 400
switch i32 %2, label %3 [
i32 4, label %4
i32 9, label %4
i32 15, label %4
i32 20, label %4
i32 26, label %4
i32 32, label %4
i32 37, label %4
i32 43, label %4
i32 48, label %4
i32 54, label %4
i32 60, label %4
i32 65, label %4
i32 71, label %4
i32 76, label %4
i32 82, label %4
i32 88, label %4
i32 93, label %4
i32 99, label %4
i32 105, label %4
i32 111, label %4
i32 116, label %4
i32 122, label %4
i32 128, label %4
i32 133, label %4
i32 139, label %4
i32 144, label %4
i32 150, label %4
i32 156, label %4
i32 161, label %4
i32 167, label %4
i32 172, label %4
i32 178, label %4
i32 184, label %4
i32 189, label %4
i32 195, label %4
i32 201, label %4
i32 207, label %4
i32 212, label %4
i32 218, label %4
i32 224, label %4
i32 229, label %4
i32 235, label %4
i32 240, label %4
i32 246, label %4
i32 252, label %4
i32 257, label %4
i32 263, label %4
i32 268, label %4
i32 274, label %4
i32 280, label %4
i32 285, label %4
i32 291, label %4
i32 296, label %4
i32 303, label %4
i32 308, label %4
i32 314, label %4
i32 320, label %4
i32 325, label %4
i32 331, label %4
i32 336, label %4
i32 342, label %4
i32 348, label %4
i32 353, label %4
i32 359, label %4
i32 364, label %4
i32 370, label %4
i32 376, label %4
i32 381, label %4
i32 387, label %4
i32 392, label %4
i32 398, label %4
]
3: ; preds = %1
br label %4
4: ; preds = %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %1, %3
%5 = phi i32 [ 52, %3 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ], [ 53, %1 ]
ret i32 %5
}