int create_32bit_table(unsigned int *table) {
  unsigned int generator = 0x04C11DB7;
  short delenec = 0;
  while (delenec <= 255) {
    unsigned int aktualny = (unsigned int)(delenec << 24);
    for (short bit = 0; bit < 8; bit++) {
      if ((aktualny & 0x80000000) == 0) {
        aktualny = aktualny << 1;
      } else {
        aktualny = aktualny << 1;
        aktualny = aktualny ^ generator;
      }
    }
    table[delenec] = aktualny;
    delenec++;
  }
}


x86 assembly (clang, -O0):
<create_32bit_table>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movl   $0x4c11db7,-0x14(%rbp)
movw   $0x0,-0x16(%rbp)
movswl -0x16(%rbp),%eax
cmp    $0xff,%eax
jg     11a8 <create_32bit_table+0xa8>
movswl -0x16(%rbp),%eax
shl    $0x18,%eax
mov    %eax,-0x1c(%rbp)
movw   $0x0,-0x1e(%rbp)
movswl -0x1e(%rbp),%eax
cmp    $0x8,%eax
jge    1188 <create_32bit_table+0x88>
mov    -0x1c(%rbp),%eax
and    $0x80000000,%eax
cmp    $0x0,%eax
jne    1160 <create_32bit_table+0x60>
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1172 <create_32bit_table+0x72>
mov    -0x1c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
xor    -0x14(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1177 <create_32bit_table+0x77>
mov    -0x1e(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x1e(%rbp)
jmp    1134 <create_32bit_table+0x34>
mov    -0x1c(%rbp),%edx
mov    -0x10(%rbp),%rax
movswq -0x16(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x16(%rbp),%ax
add    $0x1,%ax
mov    %ax,-0x16(%rbp)
jmp    1115 <create_32bit_table+0x15>
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<create_32bit_table>:
movdqa 0xef8(%rip),%xmm0
xor    %eax,%eax
movdqa 0xefe(%rip),%xmm1
pcmpeqd %xmm2,%xmm2
movdqa 0xf02(%rip),%xmm3
xchg   %ax,%ax
movdqa %xmm0,%xmm4
pslld  $0x19,%xmm4
movdqa %xmm0,%xmm5
pslld  $0x18,%xmm5
psrad  $0x1f,%xmm5
movdqa %xmm5,%xmm6
pandn  %xmm4,%xmm6
pxor   %xmm1,%xmm4
pand   %xmm5,%xmm4
por    %xmm6,%xmm4
movdqa %xmm4,%xmm5
pcmpgtd %xmm2,%xmm5
paddd  %xmm4,%xmm4
movdqa %xmm4,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm5,%xmm4
pandn  %xmm6,%xmm5
por    %xmm4,%xmm5
movdqa %xmm5,%xmm4
pcmpgtd %xmm2,%xmm4
paddd  %xmm5,%xmm5
movdqa %xmm5,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm4,%xmm5
pandn  %xmm6,%xmm4
por    %xmm5,%xmm4
movdqa %xmm4,%xmm5
pcmpgtd %xmm2,%xmm5
paddd  %xmm4,%xmm4
movdqa %xmm4,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm5,%xmm4
pandn  %xmm6,%xmm5
por    %xmm4,%xmm5
movdqa %xmm5,%xmm4
pcmpgtd %xmm2,%xmm4
paddd  %xmm5,%xmm5
movdqa %xmm5,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm4,%xmm5
pandn  %xmm6,%xmm4
por    %xmm5,%xmm4
movdqa %xmm4,%xmm5
pcmpgtd %xmm2,%xmm5
paddd  %xmm4,%xmm4
movdqa %xmm4,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm5,%xmm4
pandn  %xmm6,%xmm5
por    %xmm4,%xmm5
movdqa %xmm5,%xmm4
pcmpgtd %xmm2,%xmm4
paddd  %xmm5,%xmm5
movdqa %xmm5,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm4,%xmm5
pandn  %xmm6,%xmm4
por    %xmm5,%xmm4
movdqa %xmm4,%xmm5
pcmpgtd %xmm2,%xmm5
paddd  %xmm4,%xmm4
movdqa %xmm4,%xmm6
pxor   %xmm1,%xmm6
pand   %xmm5,%xmm4
pandn  %xmm6,%xmm5
por    %xmm4,%xmm5
movdqu %xmm5,(%rdi,%rax,4)
add    $0x4,%rax
paddd  %xmm3,%xmm0
cmp    $0x100,%rax
jne    1120 <create_32bit_table+0x20>
ret

LLVM IR (-O0):
define i32 @create_32bit_table(i32* %0) {
%2 = alloca i32
%3 = alloca i32*
%4 = alloca i32
%5 = alloca i16
%6 = alloca i32
%7 = alloca i16
store i32* %0, i32** %3
store i32 79764919, i32* %4
store i16 0, i16* %5
br label %8
8: ; preds = %37, %1
%9 = load i16, i16* %5
%10 = sext i16 %9 to i32
%11 = icmp sle i32 %10, 255
br i1 %11, label %12, label %45
12: ; preds = %8
%13 = load i16, i16* %5
%14 = sext i16 %13 to i32
%15 = shl i32 %14, 24
store i32 %15, i32* %6
store i16 0, i16* %7
br label %16
16: ; preds = %34, %12
%17 = load i16, i16* %7
%18 = sext i16 %17 to i32
%19 = icmp slt i32 %18, 8
br i1 %19, label %20, label %37
20: ; preds = %16
%21 = load i32, i32* %6
%22 = and i32 %21, -2147483648
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %27
24: ; preds = %20
%25 = load i32, i32* %6
%26 = shl i32 %25, 1
store i32 %26, i32* %6
br label %33
27: ; preds = %20
%28 = load i32, i32* %6
%29 = shl i32 %28, 1
store i32 %29, i32* %6
%30 = load i32, i32* %6
%31 = load i32, i32* %4
%32 = xor i32 %30, %31
store i32 %32, i32* %6
br label %33
33: ; preds = %27, %24
br label %34
34: ; preds = %33
%35 = load i16, i16* %7
%36 = add i16 %35, 1
store i16 %36, i16* %7
br label %16
37: ; preds = %16
%38 = load i32, i32* %6
%39 = load i32*, i32** %3
%40 = load i16, i16* %5
%41 = sext i16 %40 to i64
%42 = getelementptr inbounds i32, i32* %39, i64 %41
store i32 %38, i32* %42
%43 = load i16, i16* %5
%44 = add i16 %43, 1
store i16 %44, i16* %5
br label %8
45: ; preds = %8
%46 = load i32, i32* %2
ret i32 %46
}

LLVM IR (-O2):
define i32 @create_32bit_table(i32* nocapture writeonly %0) {
br label %2
2: ; preds = %2, %1
%3 = phi i64 [ 0, %1 ], [ %40, %2 ]
%4 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %1 ], [ %41, %2 ]
%5 = and <4 x i32> %4, <i32 128, i32 128, i32 128, i32 128>
%6 = icmp eq <4 x i32> %5, zeroinitializer
%7 = shl <4 x i32> %4, <i32 25, i32 25, i32 25, i32 25>
%8 = xor <4 x i32> %7, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%9 = select <4 x i1> %6, <4 x i32> %7, <4 x i32> %8
%10 = icmp sgt <4 x i32> %9, <i32 -1, i32 -1, i32 -1, i32 -1>
%11 = shl <4 x i32> %9, <i32 1, i32 1, i32 1, i32 1>
%12 = xor <4 x i32> %11, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%13 = select <4 x i1> %10, <4 x i32> %11, <4 x i32> %12
%14 = icmp sgt <4 x i32> %13, <i32 -1, i32 -1, i32 -1, i32 -1>
%15 = shl <4 x i32> %13, <i32 1, i32 1, i32 1, i32 1>
%16 = xor <4 x i32> %15, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%17 = select <4 x i1> %14, <4 x i32> %15, <4 x i32> %16
%18 = icmp sgt <4 x i32> %17, <i32 -1, i32 -1, i32 -1, i32 -1>
%19 = shl <4 x i32> %17, <i32 1, i32 1, i32 1, i32 1>
%20 = xor <4 x i32> %19, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%21 = select <4 x i1> %18, <4 x i32> %19, <4 x i32> %20
%22 = icmp sgt <4 x i32> %21, <i32 -1, i32 -1, i32 -1, i32 -1>
%23 = shl <4 x i32> %21, <i32 1, i32 1, i32 1, i32 1>
%24 = xor <4 x i32> %23, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%25 = select <4 x i1> %22, <4 x i32> %23, <4 x i32> %24
%26 = icmp sgt <4 x i32> %25, <i32 -1, i32 -1, i32 -1, i32 -1>
%27 = shl <4 x i32> %25, <i32 1, i32 1, i32 1, i32 1>
%28 = xor <4 x i32> %27, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%29 = select <4 x i1> %26, <4 x i32> %27, <4 x i32> %28
%30 = icmp sgt <4 x i32> %29, <i32 -1, i32 -1, i32 -1, i32 -1>
%31 = shl <4 x i32> %29, <i32 1, i32 1, i32 1, i32 1>
%32 = xor <4 x i32> %31, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%33 = select <4 x i1> %30, <4 x i32> %31, <4 x i32> %32
%34 = icmp sgt <4 x i32> %33, <i32 -1, i32 -1, i32 -1, i32 -1>
%35 = shl <4 x i32> %33, <i32 1, i32 1, i32 1, i32 1>
%36 = xor <4 x i32> %35, <i32 79764919, i32 79764919, i32 79764919, i32 79764919>
%37 = select <4 x i1> %34, <4 x i32> %35, <4 x i32> %36
%38 = getelementptr inbounds i32, i32* %0, i64 %3
%39 = bitcast i32* %38 to <4 x i32>*
store <4 x i32> %37, <4 x i32>* %39
%40 = add nuw i64 %3, 4
%41 = add <4 x i32> %4, <i32 4, i32 4, i32 4, i32 4>
%42 = icmp eq i64 %40, 256
br i1 %42, label %43, label %2
43: ; preds = %2
ret i32 undef
}