void place_align(unsigned char grid[], const int size, int x, int y) {
  int xp, yp;
  char alignment[] = {0x1F, 0x11, 0x15, 0x11, 0x1F};
  x -= 2;
  y -= 2;
  for (xp = 0; xp < 5; xp++) {
    for (yp = 0; yp < 5; yp++) {
      if (alignment[yp] & 0x10 >> xp) {
        grid[((yp + y) * size) + (xp + x)] = 0x11;
      } else {
        grid[((yp + y) * size) + (xp + x)] = 0x10;
      }
    }
  }
}


x86 assembly (clang, -O0):
<place_align>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    0xee9(%rip),%eax
mov    %eax,-0x21(%rbp)
mov    0xee4(%rip),%al
mov    %al,-0x1d(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x14(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x5,-0x18(%rbp)
jge    11dc <place_align+0xdc>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x5,-0x1c(%rbp)
jge    11c9 <place_align+0xc9>
movslq -0x1c(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
mov    -0x18(%rbp),%ecx
mov    $0x10,%edx
sar    %cl,%edx
mov    %edx,%ecx
and    %ecx,%eax
cmp    $0x0,%eax
je     1199 <place_align+0x99>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x14(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x18(%rbp),%edx
add    -0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movb   $0x11,(%rax,%rcx,1)
jmp    11b6 <place_align+0xb6>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x14(%rbp),%ecx
imul   -0xc(%rbp),%ecx
mov    -0x18(%rbp),%edx
add    -0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movb   $0x10,(%rax,%rcx,1)
jmp    11bb <place_align+0xbb>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    114d <place_align+0x4d>
jmp    11ce <place_align+0xce>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    113c <place_align+0x3c>
pop    %rbp
ret

x86 assembly (clang, -O2):
<place_align>:
movslq %ecx,%rax
lea    -0x2(%rax),%r8
movslq %esi,%rsi
movslq %edx,%rcx
imul   %rsi,%r8
lea    (%r8,%rcx,1),%rdx
add    $0xfffffffffffffffe,%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    -0x1(%rax),%r9
imul   %rsi,%r9
lea    (%r9,%rcx,1),%rdx
add    $0xfffffffffffffffe,%rdx
movb   $0x11,(%rdi,%rdx,1)
mov    %rax,%r10
imul   %rsi,%r10
lea    (%r10,%rcx,1),%rdx
add    $0xfffffffffffffffe,%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x1(%rax),%r11
imul   %rsi,%r11
lea    (%r11,%rcx,1),%rdx
add    $0xfffffffffffffffe,%rdx
movb   $0x11,(%rdi,%rdx,1)
add    $0x2,%rax
imul   %rsi,%rax
lea    (%rax,%rcx,1),%rdx
add    $0xfffffffffffffffe,%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    -0x1(%rcx,%r8,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    -0x1(%rcx,%r9,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    -0x1(%rcx,%r10,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    -0x1(%rcx,%r11,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    -0x1(%rcx,%rax,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    (%rcx,%r8,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    (%rcx,%r9,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    (%rcx,%r10,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    (%rcx,%r11,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    (%rcx,%rax,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x1(%rcx,%r8,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x1(%rcx,%r9,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    0x1(%rcx,%r10,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    0x1(%rcx,%r11,1),%rdx
movb   $0x10,(%rdi,%rdx,1)
lea    0x1(%rcx,%rax,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x2(%rcx,%r8,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x2(%rcx,%r9,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x2(%rcx,%r10,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
lea    0x2(%rcx,%r11,1),%rdx
movb   $0x11,(%rdi,%rdx,1)
add    %rcx,%rax
add    $0x2,%rax
movb   $0x11,(%rdi,%rax,1)
ret

LLVM IR (-O0):
@__const.place_align.alignment = [5 x i8] c"\1F\11\15\11\1F"
define void @place_align(i8* %0, i32 %1, i32 %2, i32 %3) {
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca [5 x i8]
store i8* %0, i8** %5
store i32 %1, i32* %6
store i32 %2, i32* %7
store i32 %3, i32* %8
%12 = bitcast [5 x i8]* %11 to i8*
%13 = load i32, i32* %7
%14 = sub nsw i32 %13, 2
store i32 %14, i32* %7
%15 = load i32, i32* %8
%16 = sub nsw i32 %15, 2
store i32 %16, i32* %8
store i32 0, i32* %9
br label %17
17: ; preds = %65, %4
%18 = load i32, i32* %9
%19 = icmp slt i32 %18, 5
br i1 %19, label %20, label %68
20: ; preds = %17
store i32 0, i32* %10
br label %21
21: ; preds = %61, %20
%22 = load i32, i32* %10
%23 = icmp slt i32 %22, 5
br i1 %23, label %24, label %64
24: ; preds = %21
%25 = load i32, i32* %10
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [5 x i8], [5 x i8]* %11, i64 0, i64 %26
%28 = load i8, i8* %27
%29 = sext i8 %28 to i32
%30 = load i32, i32* %9
%31 = ashr i32 16, %30
%32 = and i32 %29, %31
%33 = icmp ne i32 %32, 0
br i1 %33, label %34, label %47
34: ; preds = %24
%35 = load i8*, i8** %5
%36 = load i32, i32* %10
%37 = load i32, i32* %8
%38 = add nsw i32 %36, %37
%39 = load i32, i32* %6
%40 = mul nsw i32 %38, %39
%41 = load i32, i32* %9
%42 = load i32, i32* %7
%43 = add nsw i32 %41, %42
%44 = add nsw i32 %40, %43
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %35, i64 %45
store i8 17, i8* %46
br label %60
47: ; preds = %24
%48 = load i8*, i8** %5
%49 = load i32, i32* %10
%50 = load i32, i32* %8
%51 = add nsw i32 %49, %50
%52 = load i32, i32* %6
%53 = mul nsw i32 %51, %52
%54 = load i32, i32* %9
%55 = load i32, i32* %7
%56 = add nsw i32 %54, %55
%57 = add nsw i32 %53, %56
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds i8, i8* %48, i64 %58
store i8 16, i8* %59
br label %60
60: ; preds = %47, %34
br label %61
61: ; preds = %60
%62 = load i32, i32* %10
%63 = add nsw i32 %62, 1
store i32 %63, i32* %10
br label %21
64: ; preds = %21
br label %65
65: ; preds = %64
%66 = load i32, i32* %9
%67 = add nsw i32 %66, 1
store i32 %67, i32* %9
br label %17
68: ; preds = %17
ret void
}

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