void MiniDrawSpace(unsigned char *pixMap, short pixBytes, long rowBytes) {
  short x, y;
  for (y = 13; y > 0; y--) {
    for (x = 7; x > 0; x--) {
      if (pixBytes == 4)
        pixMap++;
      *(pixMap++) = 0;
      *(pixMap++) = 0;
      *(pixMap++) = 0;
    }
    pixMap += rowBytes - 7 * pixBytes;
  }
}


x86 assembly (clang, -O0):
<MiniDrawSpace>:
push   %rbp
mov    %rsp,%rbp
mov    %si,%ax
mov    %rdi,-0x8(%rbp)
mov    %ax,-0xa(%rbp)
mov    %rdx,-0x18(%rbp)
movw   $0xd,-0x1c(%rbp)
movswl -0x1c(%rbp),%eax
cmp    $0x0,%eax
jle    11c3 <MiniDrawSpace+0xc3>
movw   $0x7,-0x1a(%rbp)
movswl -0x1a(%rbp),%eax
cmp    $0x0,%eax
jle    1199 <MiniDrawSpace+0x99>
movswl -0xa(%rbp),%eax
cmp    $0x4,%eax
jne    1152 <MiniDrawSpace+0x52>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x0,(%rax)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x0,(%rax)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x0,(%rax)
mov    -0x1a(%rbp),%ax
add    $0xffff,%ax
mov    %ax,-0x1a(%rbp)
jmp    112c <MiniDrawSpace+0x2c>
mov    -0x18(%rbp),%rax
movswl -0xa(%rbp),%ecx
imul   $0x7,%ecx,%ecx
movslq %ecx,%rcx
sub    %rcx,%rax
add    -0x8(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x1c(%rbp),%ax
add    $0xffff,%ax
mov    %ax,-0x1c(%rbp)
jmp    1119 <MiniDrawSpace+0x19>
pop    %rbp
ret

x86 assembly (clang, -O2):
<MiniDrawSpace>:
xor    %eax,%eax
cmp    $0x4,%si
sete   %al
movslq %esi,%rcx
add    %rax,%rdi
lea    0x0(,%rax,8),%rsi
sub    %rax,%rsi
add    %rdx,%rsi
lea    0x0(,%rcx,8),%rdx
sub    %rdx,%rcx
lea    (%rsi,%rcx,1),%r8
add    $0x15,%r8
lea    0x3(%rax),%r9
mov    $0xfff3,%si
nopl   0x0(%rax,%rax,1)
movw   $0x0,(%rdi)
movb   $0x0,0x2(%rdi)
lea    (%rdi,%r9,1),%rcx
movw   $0x0,0x3(%rdi,%rax,1)
movb   $0x0,0x5(%rdi,%rax,1)
lea    (%rcx,%r9,1),%rdx
movw   $0x0,0x3(%rax,%rcx,1)
movb   $0x0,0x5(%rax,%rcx,1)
lea    (%rdx,%r9,1),%rcx
movw   $0x0,0x3(%rax,%rdx,1)
movb   $0x0,0x5(%rax,%rdx,1)
lea    (%rcx,%r9,1),%rdx
movw   $0x0,0x3(%rax,%rcx,1)
movb   $0x0,0x5(%rax,%rcx,1)
lea    (%rdx,%r9,1),%rcx
movw   $0x0,0x3(%rax,%rdx,1)
movb   $0x0,0x5(%rax,%rdx,1)
movw   $0x0,0x3(%rax,%rcx,1)
movb   $0x0,0x5(%rax,%rcx,1)
add    %r8,%rdi
inc    %si
jne    1140 <MiniDrawSpace+0x40>
ret

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

LLVM IR (-O2):
define void @MiniDrawSpace(i8* nocapture writeonly %0, i16 signext %1, i64 %2) {
%4 = icmp eq i16 %1, 4
%5 = zext i1 %4 to i64
%6 = sext i16 %1 to i64
%7 = mul nsw i64 %6, -7
%8 = add i64 %7, %2
br label %9
9: ; preds = %3, %9
%10 = phi i16 [ 13, %3 ], [ %41, %9 ]
%11 = phi i8* [ %0, %3 ], [ %40, %9 ]
%12 = getelementptr i8, i8* %11, i64 %5
%13 = getelementptr inbounds i8, i8* %12, i64 1
store i8 0, i8* %12
%14 = getelementptr inbounds i8, i8* %12, i64 2
store i8 0, i8* %13
%15 = getelementptr inbounds i8, i8* %12, i64 3
store i8 0, i8* %14
%16 = getelementptr i8, i8* %15, i64 %5
%17 = getelementptr inbounds i8, i8* %16, i64 1
store i8 0, i8* %16
%18 = getelementptr inbounds i8, i8* %16, i64 2
store i8 0, i8* %17
%19 = getelementptr inbounds i8, i8* %16, i64 3
store i8 0, i8* %18
%20 = getelementptr i8, i8* %19, i64 %5
%21 = getelementptr inbounds i8, i8* %20, i64 1
store i8 0, i8* %20
%22 = getelementptr inbounds i8, i8* %20, i64 2
store i8 0, i8* %21
%23 = getelementptr inbounds i8, i8* %20, i64 3
store i8 0, i8* %22
%24 = getelementptr i8, i8* %23, i64 %5
%25 = getelementptr inbounds i8, i8* %24, i64 1
store i8 0, i8* %24
%26 = getelementptr inbounds i8, i8* %24, i64 2
store i8 0, i8* %25
%27 = getelementptr inbounds i8, i8* %24, i64 3
store i8 0, i8* %26
%28 = getelementptr i8, i8* %27, i64 %5
%29 = getelementptr inbounds i8, i8* %28, i64 1
store i8 0, i8* %28
%30 = getelementptr inbounds i8, i8* %28, i64 2
store i8 0, i8* %29
%31 = getelementptr inbounds i8, i8* %28, i64 3
store i8 0, i8* %30
%32 = getelementptr i8, i8* %31, i64 %5
%33 = getelementptr inbounds i8, i8* %32, i64 1
store i8 0, i8* %32
%34 = getelementptr inbounds i8, i8* %32, i64 2
store i8 0, i8* %33
%35 = getelementptr inbounds i8, i8* %32, i64 3
store i8 0, i8* %34
%36 = getelementptr i8, i8* %35, i64 %5
%37 = getelementptr inbounds i8, i8* %36, i64 1
store i8 0, i8* %36
%38 = getelementptr inbounds i8, i8* %36, i64 2
store i8 0, i8* %37
%39 = getelementptr inbounds i8, i8* %36, i64 3
store i8 0, i8* %38
%40 = getelementptr inbounds i8, i8* %39, i64 %8
%41 = add nsw i16 %10, -1
%42 = icmp eq i16 %41, 0
br i1 %42, label %43, label %9
43: ; preds = %9
ret void
}