int isshuixh(int num) {
  if (num == (num / 100) * (num / 100) * (num / 100) +
                 (num % 100 / 10) * (num % 100 / 10) * (num % 100 / 10) +
                 (num % 100 % 10) * (num % 100 % 10) * (num % 100 % 10))
    return 1;
  else
    return 0;
}


x86 assembly (clang, -O0):
<isshuixh>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
imul   %eax,%ecx
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
imul   %eax,%ecx
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x1c(%rbp),%eax
imul   %edx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x18(%rbp),%eax
imul   %edx,%eax
add    %eax,%ecx
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    %edx,-0x14(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    -0x14(%rbp),%edx
imul   %eax,%edx
mov    %edx,-0xc(%rbp)
mov    -0x8(%rbp),%eax
mov    $0x64,%esi
cltd
idiv   %esi
mov    %edx,%eax
mov    $0xa,%esi
cltd
idiv   %esi
mov    -0x10(%rbp),%eax
mov    %edx,%esi
mov    -0xc(%rbp),%edx
imul   %esi,%edx
add    %edx,%ecx
cmp    %ecx,%eax
jne    11fb <isshuixh+0xfb>
movl   $0x1,-0x4(%rbp)
jmp    1202 <isshuixh+0x102>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<isshuixh>:
movslq %edi,%rcx
imul   $0x51eb851f,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x25,%rax
add    %edx,%eax
mov    %eax,%edx
imul   %eax,%edx
imul   %eax,%edx
imul   $0x64,%eax,%esi
mov    %ecx,%eax
sub    %esi,%eax
movsbl %al,%esi
imul   $0x67,%esi,%esi
movzwl %si,%esi
movswl %si,%edi
shr    $0xf,%esi
shr    $0xa,%edi
add    %sil,%dil
movsbl %dil,%esi
mov    %esi,%edi
imul   %esi,%edi
imul   %esi,%edi
add    %edx,%edi
movzbl %sil,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
sub    %dl,%al
movsbl %al,%eax
mov    %eax,%edx
imul   %eax,%edx
imul   %eax,%edx
add    %edi,%edx
xor    %eax,%eax
cmp    %ecx,%edx
sete   %al
ret

LLVM IR (-O0):
define i32 @isshuixh(i32 %0) {
%2 = alloca i32
%3 = alloca i32
store i32 %0, i32* %3
%4 = load i32, i32* %3
%5 = load i32, i32* %3
%6 = sdiv i32 %5, 100
%7 = load i32, i32* %3
%8 = sdiv i32 %7, 100
%9 = mul nsw i32 %6, %8
%10 = load i32, i32* %3
%11 = sdiv i32 %10, 100
%12 = mul nsw i32 %9, %11
%13 = load i32, i32* %3
%14 = srem i32 %13, 100
%15 = sdiv i32 %14, 10
%16 = load i32, i32* %3
%17 = srem i32 %16, 100
%18 = sdiv i32 %17, 10
%19 = mul nsw i32 %15, %18
%20 = load i32, i32* %3
%21 = srem i32 %20, 100
%22 = sdiv i32 %21, 10
%23 = mul nsw i32 %19, %22
%24 = add nsw i32 %12, %23
%25 = load i32, i32* %3
%26 = srem i32 %25, 100
%27 = srem i32 %26, 10
%28 = load i32, i32* %3
%29 = srem i32 %28, 100
%30 = srem i32 %29, 10
%31 = mul nsw i32 %27, %30
%32 = load i32, i32* %3
%33 = srem i32 %32, 100
%34 = srem i32 %33, 10
%35 = mul nsw i32 %31, %34
%36 = add nsw i32 %24, %35
%37 = icmp eq i32 %4, %36
br i1 %37, label %38, label %39
38: ; preds = %1
store i32 1, i32* %2
br label %40
39: ; preds = %1
store i32 0, i32* %2
br label %40
40: ; preds = %39, %38
%41 = load i32, i32* %2
ret i32 %41
}

LLVM IR (-O2):
define i32 @isshuixh(i32 %0) {
%2 = sdiv i32 %0, 100
%3 = mul nsw i32 %2, %2
%4 = mul nsw i32 %3, %2
%5 = srem i32 %0, 100
%6 = trunc i32 %5 to i8
%7 = sdiv i8 %6, 10
%8 = sext i8 %7 to i32
%9 = mul nsw i32 %8, %8
%10 = mul nsw i32 %9, %8
%11 = add nsw i32 %10, %4
%12 = srem i8 %6, 10
%13 = sext i8 %12 to i32
%14 = mul nsw i32 %13, %13
%15 = mul nsw i32 %14, %13
%16 = add nsw i32 %11, %15
%17 = icmp eq i32 %16, %0
%18 = zext i1 %17 to i32
ret i32 %18
}