void _sign_meld_delete(int *js, int *num_joker) {
  int i, left_joker;
  if (!js || !num_joker)
    return;
  left_joker = *num_joker;
  if (left_joker < 0)
    left_joker = 0;
  for (i = 0; i < 7; ++i) {
    if (js[i] % 3 == 0) {
      js[i] = 0;
      continue;
    } else if (js[i] % 3 == 1) {
      if (js[i + 1] > 0 && js[i + 2] > 0) {
        js[i] = 0;
        js[i + 1]--;
        js[i + 2]--;
        continue;
      } else {
        if (left_joker == 0)
          continue;
        if (js[i + 1] > 0) {
          js[i] = 0;
          js[i + 1]--;
          left_joker--;
          continue;
        } else if (js[i + 2] > 0) {
          js[i] = 0;
          js[i + 2]--;
          left_joker--;
          continue;
        } else {
          if (left_joker < 2)
            continue;
          js[i] = 0;
          left_joker -= 2;
          continue;
        }
      }
    } else if (js[i] % 3 == 2) {
      if (js[i + 1] >= 2 && js[i + 2] >= 2) {
        js[i] = 0;
        js[i + 1] -= 2;
        js[i + 2] -= 2;
        continue;
      } else {
        if (left_joker == 0)
          continue;
        if (js[i + 1] == 1 && js[i + 2] >= 2) {
          js[i] = 0;
          js[i + 1] = 0;
          left_joker--;
          js[i + 2] -= 2;
          continue;
        } else if (js[i + 2] == 1 && js[i + 1] >= 2) {
          js[i] = 0;
          js[i + 1] -= 2;
          js[i + 2] = 0;
          left_joker--;
          continue;
        } else {
          left_joker--;
          js[i] = 0;
          continue;
        }
      }
    }
  }
  if (js[7] % 3 == 1) {
    if (js[8] % 3 == 1 && left_joker > 0) {
      js[8] -= 1;
      left_joker--;
      js[7] = 0;
    } else if (left_joker >= 2) {
      js[7] = 0;
      left_joker -= 2;
    } else {
    }
  } else if (js[7] % 3 == 2) {
    if (left_joker > 0) {
      left_joker--;
      js[7] = 0;
    }
  } else {
    js[7] = 0;
  }
  if (js[8] % 3 == 1) {
    if (left_joker >= 2) {
      left_joker -= 2;
      js[8] = 0;
    } else {
    }
  } else if (js[8] % 3 == 2) {
    if (left_joker > 0) {
      left_joker--;
      js[8] = 0;
    }
  } else {
    js[8] = 0;
  }
  *num_joker = left_joker;
}


x86 assembly (clang, -O0):
<_sign_meld_delete>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpq   $0x0,-0x8(%rbp)
je     1122 <_sign_meld_delete+0x22>
cmpq   $0x0,-0x10(%rbp)
jne    1127 <_sign_meld_delete+0x27>
jmp    160e <_sign_meld_delete+0x50e>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jge    1141 <_sign_meld_delete+0x41>
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x7,-0x14(%rbp)
jge    1498 <_sign_meld_delete+0x398>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1182 <_sign_meld_delete+0x82>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    12db <_sign_meld_delete+0x1db>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    120c <_sign_meld_delete+0x10c>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    120c <_sign_meld_delete+0x10c>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0xffffffff,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0xffffffff,%edx
mov    %edx,(%rax,%rcx,4)
jmp    148a <_sign_meld_delete+0x38a>
cmpl   $0x0,-0x18(%rbp)
jne    121b <_sign_meld_delete+0x11b>
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    1265 <_sign_meld_delete+0x165>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0xffffffff,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jle    12af <_sign_meld_delete+0x1af>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
add    $0xffffffff,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    148a <_sign_meld_delete+0x38a>
cmpl   $0x2,-0x18(%rbp)
jge    12be <_sign_meld_delete+0x1be>
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    147b <_sign_meld_delete+0x37b>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x2,(%rax,%rcx,4)
jl     1365 <_sign_meld_delete+0x265>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x2,(%rax,%rcx,4)
jl     1365 <_sign_meld_delete+0x265>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    $0x2,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    $0x2,%edx
mov    %edx,(%rax,%rcx,4)
jmp    148a <_sign_meld_delete+0x38a>
cmpl   $0x0,-0x18(%rbp)
jne    1374 <_sign_meld_delete+0x274>
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    13e9 <_sign_meld_delete+0x2e9>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x2,(%rax,%rcx,4)
jl     13e9 <_sign_meld_delete+0x2e9>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    $0x2,%edx
mov    %edx,(%rax,%rcx,4)
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    145e <_sign_meld_delete+0x35e>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x2,(%rax,%rcx,4)
jl     145e <_sign_meld_delete+0x35e>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    $0x2,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    148a <_sign_meld_delete+0x38a>
jmp    1480 <_sign_meld_delete+0x380>
jmp    1485 <_sign_meld_delete+0x385>
jmp    148a <_sign_meld_delete+0x38a>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1148 <_sign_meld_delete+0x48>
mov    -0x8(%rbp),%rax
mov    0x1c(%rax),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    152a <_sign_meld_delete+0x42a>
mov    -0x8(%rbp),%rax
mov    0x20(%rax),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    14f8 <_sign_meld_delete+0x3f8>
cmpl   $0x0,-0x18(%rbp)
jle    14f8 <_sign_meld_delete+0x3f8>
mov    -0x8(%rbp),%rax
mov    0x20(%rax),%ecx
sub    $0x1,%ecx
mov    %ecx,0x20(%rax)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movl   $0x0,0x1c(%rax)
jmp    1525 <_sign_meld_delete+0x425>
cmpl   $0x2,-0x18(%rbp)
jl     151b <_sign_meld_delete+0x41b>
mov    -0x8(%rbp),%rax
movl   $0x0,0x1c(%rax)
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
jmp    1520 <_sign_meld_delete+0x420>
jmp    1520 <_sign_meld_delete+0x420>
jmp    1525 <_sign_meld_delete+0x425>
jmp    1575 <_sign_meld_delete+0x475>
mov    -0x8(%rbp),%rax
mov    0x1c(%rax),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1565 <_sign_meld_delete+0x465>
cmpl   $0x0,-0x18(%rbp)
jle    1560 <_sign_meld_delete+0x460>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movl   $0x0,0x1c(%rax)
jmp    1570 <_sign_meld_delete+0x470>
mov    -0x8(%rbp),%rax
movl   $0x0,0x1c(%rax)
jmp    1575 <_sign_meld_delete+0x475>
mov    -0x8(%rbp),%rax
mov    0x20(%rax),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
jne    15ba <_sign_meld_delete+0x4ba>
cmpl   $0x2,-0x18(%rbp)
jl     15b0 <_sign_meld_delete+0x4b0>
mov    -0x18(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movl   $0x0,0x20(%rax)
jmp    15b5 <_sign_meld_delete+0x4b5>
jmp    15b5 <_sign_meld_delete+0x4b5>
jmp    1605 <_sign_meld_delete+0x505>
mov    -0x8(%rbp),%rax
mov    0x20(%rax),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    15f5 <_sign_meld_delete+0x4f5>
cmpl   $0x0,-0x18(%rbp)
jle    15f0 <_sign_meld_delete+0x4f0>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movl   $0x0,0x20(%rax)
jmp    1600 <_sign_meld_delete+0x500>
mov    -0x8(%rbp),%rax
movl   $0x0,0x20(%rax)
jmp    1605 <_sign_meld_delete+0x505>
mov    -0x18(%rbp),%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<_sign_meld_delete>:
test   %rdi,%rdi
je     135b <_sign_meld_delete+0x25b>
test   %rsi,%rsi
je     135b <_sign_meld_delete+0x25b>
mov    (%rsi),%r8d
xor    %r9d,%r9d
test   %r8d,%r8d
cmovs  %r9d,%r8d
jmp    113e <_sign_meld_delete+0x3e>
xor    %r8d,%r8d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r9
cmp    $0x7,%r9
je     12ad <_sign_meld_delete+0x1ad>
movslq (%rdi,%r9,4),%rdx
imul   $0x55555556,%rdx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
shr    $0x20,%rax
add    %ecx,%eax
lea    (%rax,%rax,2),%eax
sub    %eax,%edx
cmp    $0x2,%edx
je     1180 <_sign_meld_delete+0x80>
cmp    $0x1,%edx
je     11b0 <_sign_meld_delete+0xb0>
test   %edx,%edx
jne    1130 <_sign_meld_delete+0x30>
movl   $0x0,(%rdi,%r9,4)
jmp    1130 <_sign_meld_delete+0x30>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x4(%rdi,%r9,4),%edx
cmp    $0x2,%edx
jl     11df <_sign_meld_delete+0xdf>
mov    0x8(%rdi,%r9,4),%eax
cmp    $0x2,%eax
jl     11df <_sign_meld_delete+0xdf>
movl   $0x0,(%rdi,%r9,4)
add    $0xfffffffe,%edx
mov    %edx,0x4(%rdi,%r9,4)
jmp    1203 <_sign_meld_delete+0x103>
cs nopw 0x0(%rax,%rax,1)
mov    0x4(%rdi,%r9,4),%edx
test   %edx,%edx
jle    1210 <_sign_meld_delete+0x110>
mov    0x8(%rdi,%r9,4),%eax
test   %eax,%eax
jle    123b <_sign_meld_delete+0x13b>
movl   $0x0,(%rdi,%r9,4)
add    $0xffffffff,%edx
mov    %edx,0x4(%rdi,%r9,4)
add    $0xffffffff,%eax
mov    %eax,0x8(%rdi,%r9,4)
jmp    1130 <_sign_meld_delete+0x30>
test   %r8d,%r8d
je     1121 <_sign_meld_delete+0x21>
mov    0x8(%rdi,%r9,4),%eax
cmp    $0x1,%edx
jne    125d <_sign_meld_delete+0x15d>
cmp    $0x2,%eax
jl     125d <_sign_meld_delete+0x15d>
movq   $0x0,(%rdi,%r9,4)
add    $0xffffffff,%r8d
add    $0xfffffffe,%eax
mov    %eax,0x8(%rdi,%r9,4)
jmp    1130 <_sign_meld_delete+0x30>
test   %r8d,%r8d
je     1121 <_sign_meld_delete+0x21>
mov    0x8(%rdi,%r9,4),%eax
test   %eax,%eax
jle    1292 <_sign_meld_delete+0x192>
movl   $0x0,(%rdi,%r9,4)
add    $0xffffffff,%eax
mov    %eax,0x8(%rdi,%r9,4)
add    $0xffffffff,%r8d
jmp    1130 <_sign_meld_delete+0x30>
test   %r8d,%r8d
je     1121 <_sign_meld_delete+0x21>
movl   $0x0,(%rdi,%r9,4)
add    $0xffffffff,%edx
mov    %edx,0x4(%rdi,%r9,4)
add    $0xffffffff,%r8d
jmp    1130 <_sign_meld_delete+0x30>
cmp    $0x1,%eax
jne    1289 <_sign_meld_delete+0x189>
cmp    $0x2,%edx
jl     1289 <_sign_meld_delete+0x189>
movl   $0x0,(%rdi,%r9,4)
add    $0xfffffffe,%edx
mov    %edx,0x4(%rdi,%r9,4)
movl   $0x0,0x8(%rdi,%r9,4)
add    $0xffffffff,%r8d
jmp    1130 <_sign_meld_delete+0x30>
add    $0xffffffff,%r8d
jmp    1169 <_sign_meld_delete+0x69>
cmp    $0x2,%r8d
jl     1130 <_sign_meld_delete+0x30>
movl   $0x0,(%rdi,%r9,4)
add    $0xfffffffe,%r8d
jmp    1130 <_sign_meld_delete+0x30>
movslq 0x1c(%rdi),%rcx
imul   $0x55555556,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rax
add    %edx,%eax
lea    (%rax,%rax,2),%eax
sub    %eax,%ecx
cmp    $0x2,%ecx
je     1305 <_sign_meld_delete+0x205>
cmp    $0x1,%ecx
jne    130e <_sign_meld_delete+0x20e>
movslq 0x20(%rdi),%rcx
imul   $0x55555556,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rax
add    %edx,%eax
lea    (%rax,%rax,2),%eax
mov    %ecx,%edx
sub    %eax,%edx
cmp    $0x1,%edx
jne    135c <_sign_meld_delete+0x25c>
test   %r8d,%r8d
jle    135c <_sign_meld_delete+0x25c>
lea    -0x1(%rcx),%eax
mov    %eax,0x20(%rdi)
jmp    130a <_sign_meld_delete+0x20a>
test   %r8d,%r8d
jle    1315 <_sign_meld_delete+0x215>
add    $0xffffffff,%r8d
movl   $0x0,0x1c(%rdi)
movslq 0x20(%rdi),%rcx
imul   $0x55555556,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rax
add    %edx,%eax
lea    (%rax,%rax,2),%eax
sub    %eax,%ecx
cmp    $0x2,%ecx
je     1348 <_sign_meld_delete+0x248>
cmp    $0x1,%ecx
jne    1351 <_sign_meld_delete+0x251>
cmp    $0x2,%r8d
jl     1358 <_sign_meld_delete+0x258>
add    $0xfffffffe,%r8d
jmp    1351 <_sign_meld_delete+0x251>
test   %r8d,%r8d
jle    1358 <_sign_meld_delete+0x258>
add    $0xffffffff,%r8d
movl   $0x0,0x20(%rdi)
mov    %r8d,(%rsi)
ret
cmp    $0x2,%r8d
jl     1315 <_sign_meld_delete+0x215>
movl   $0x0,0x1c(%rdi)
add    $0xfffffffe,%r8d
jmp    1315 <_sign_meld_delete+0x215>

LLVM IR (-O0):
define void @_sign_meld_delete(i32* %0, i32* %1) {
%3 = alloca i32*
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32
store i32* %0, i32** %3
store i32* %1, i32** %4
%7 = load i32*, i32** %3
%8 = icmp ne i32* %7, null
br i1 %8, label %9, label %12
9: ; preds = %2
%10 = load i32*, i32** %4
%11 = icmp ne i32* %10, null
br i1 %11, label %13, label %12
12: ; preds = %9, %2
br label %360
13: ; preds = %9
%14 = load i32*, i32** %4
%15 = load i32, i32* %14
store i32 %15, i32* %6
%16 = load i32, i32* %6
%17 = icmp slt i32 %16, 0
br i1 %17, label %18, label %19
18: ; preds = %13
store i32 0, i32* %6
br label %19
19: ; preds = %18, %13
store i32 0, i32* %5
br label %20
20: ; preds = %265, %19
%21 = load i32, i32* %5
%22 = icmp slt i32 %21, 7
br i1 %22, label %23, label %268
23: ; preds = %20
%24 = load i32*, i32** %3
%25 = load i32, i32* %5
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i32, i32* %24, i64 %26
%28 = load i32, i32* %27
%29 = srem i32 %28, 3
%30 = icmp eq i32 %29, 0
br i1 %30, label %31, label %36
31: ; preds = %23
%32 = load i32*, i32** %3
%33 = load i32, i32* %5
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds i32, i32* %32, i64 %34
store i32 0, i32* %35
br label %265
36: ; preds = %23
%37 = load i32*, i32** %3
%38 = load i32, i32* %5
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i32, i32* %37, i64 %39
%41 = load i32, i32* %40
%42 = srem i32 %41, 3
%43 = icmp eq i32 %42, 1
br i1 %43, label %44, label %138
44: ; preds = %36
%45 = load i32*, i32** %3
%46 = load i32, i32* %5
%47 = add nsw i32 %46, 1
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i32, i32* %45, i64 %48
%50 = load i32, i32* %49
%51 = icmp sgt i32 %50, 0
br i1 %51, label %52, label %79
52: ; preds = %44
%53 = load i32*, i32** %3
%54 = load i32, i32* %5
%55 = add nsw i32 %54, 2
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds i32, i32* %53, i64 %56
%58 = load i32, i32* %57
%59 = icmp sgt i32 %58, 0
br i1 %59, label %60, label %79
60: ; preds = %52
%61 = load i32*, i32** %3
%62 = load i32, i32* %5
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i32, i32* %61, i64 %63
store i32 0, i32* %64
%65 = load i32*, i32** %3
%66 = load i32, i32* %5
%67 = add nsw i32 %66, 1
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds i32, i32* %65, i64 %68
%70 = load i32, i32* %69
%71 = add nsw i32 %70, -1
store i32 %71, i32* %69
%72 = load i32*, i32** %3
%73 = load i32, i32* %5
%74 = add nsw i32 %73, 2
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i32, i32* %72, i64 %75
%77 = load i32, i32* %76
%78 = add nsw i32 %77, -1
store i32 %78, i32* %76
br label %265
79: ; preds = %52, %44
%80 = load i32, i32* %6
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %83
82: ; preds = %79
br label %265
83: ; preds = %79
%84 = load i32*, i32** %3
%85 = load i32, i32* %5
%86 = add nsw i32 %85, 1
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds i32, i32* %84, i64 %87
%89 = load i32, i32* %88
%90 = icmp sgt i32 %89, 0
br i1 %90, label %91, label %105
91: ; preds = %83
%92 = load i32*, i32** %3
%93 = load i32, i32* %5
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i32, i32* %92, i64 %94
store i32 0, i32* %95
%96 = load i32*, i32** %3
%97 = load i32, i32* %5
%98 = add nsw i32 %97, 1
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds i32, i32* %96, i64 %99
%101 = load i32, i32* %100
%102 = add nsw i32 %101, -1
store i32 %102, i32* %100
%103 = load i32, i32* %6
%104 = add nsw i32 %103, -1
store i32 %104, i32* %6
br label %265
105: ; preds = %83
%106 = load i32*, i32** %3
%107 = load i32, i32* %5
%108 = add nsw i32 %107, 2
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds i32, i32* %106, i64 %109
%111 = load i32, i32* %110
%112 = icmp sgt i32 %111, 0
br i1 %112, label %113, label %127
113: ; preds = %105
%114 = load i32*, i32** %3
%115 = load i32, i32* %5
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i32, i32* %114, i64 %116
store i32 0, i32* %117
%118 = load i32*, i32** %3
%119 = load i32, i32* %5
%120 = add nsw i32 %119, 2
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i32, i32* %118, i64 %121
%123 = load i32, i32* %122
%124 = add nsw i32 %123, -1
store i32 %124, i32* %122
%125 = load i32, i32* %6
%126 = add nsw i32 %125, -1
store i32 %126, i32* %6
br label %265
127: ; preds = %105
%128 = load i32, i32* %6
%129 = icmp slt i32 %128, 2
br i1 %129, label %130, label %131
130: ; preds = %127
br label %265
131: ; preds = %127
%132 = load i32*, i32** %3
%133 = load i32, i32* %5
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds i32, i32* %132, i64 %134
store i32 0, i32* %135
%136 = load i32, i32* %6
%137 = sub nsw i32 %136, 2
store i32 %137, i32* %6
br label %265
138: ; preds = %36
%139 = load i32*, i32** %3
%140 = load i32, i32* %5
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds i32, i32* %139, i64 %141
%143 = load i32, i32* %142
%144 = srem i32 %143, 3
%145 = icmp eq i32 %144, 2
br i1 %145, label %146, label %262
146: ; preds = %138
%147 = load i32*, i32** %3
%148 = load i32, i32* %5
%149 = add nsw i32 %148, 1
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds i32, i32* %147, i64 %150
%152 = load i32, i32* %151
%153 = icmp sge i32 %152, 2
br i1 %153, label %154, label %181
154: ; preds = %146
%155 = load i32*, i32** %3
%156 = load i32, i32* %5
%157 = add nsw i32 %156, 2
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds i32, i32* %155, i64 %158
%160 = load i32, i32* %159
%161 = icmp sge i32 %160, 2
br i1 %161, label %162, label %181
162: ; preds = %154
%163 = load i32*, i32** %3
%164 = load i32, i32* %5
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds i32, i32* %163, i64 %165
store i32 0, i32* %166
%167 = load i32*, i32** %3
%168 = load i32, i32* %5
%169 = add nsw i32 %168, 1
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds i32, i32* %167, i64 %170
%172 = load i32, i32* %171
%173 = sub nsw i32 %172, 2
store i32 %173, i32* %171
%174 = load i32*, i32** %3
%175 = load i32, i32* %5
%176 = add nsw i32 %175, 2
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds i32, i32* %174, i64 %177
%179 = load i32, i32* %178
%180 = sub nsw i32 %179, 2
store i32 %180, i32* %178
br label %265
181: ; preds = %154, %146
%182 = load i32, i32* %6
%183 = icmp eq i32 %182, 0
br i1 %183, label %184, label %185
184: ; preds = %181
br label %265
185: ; preds = %181
%186 = load i32*, i32** %3
%187 = load i32, i32* %5
%188 = add nsw i32 %187, 1
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds i32, i32* %186, i64 %189
%191 = load i32, i32* %190
%192 = icmp eq i32 %191, 1
br i1 %192, label %193, label %220
193: ; preds = %185
%194 = load i32*, i32** %3
%195 = load i32, i32* %5
%196 = add nsw i32 %195, 2
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds i32, i32* %194, i64 %197
%199 = load i32, i32* %198
%200 = icmp sge i32 %199, 2
br i1 %200, label %201, label %220
201: ; preds = %193
%202 = load i32*, i32** %3
%203 = load i32, i32* %5
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i32, i32* %202, i64 %204
store i32 0, i32* %205
%206 = load i32*, i32** %3
%207 = load i32, i32* %5
%208 = add nsw i32 %207, 1
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds i32, i32* %206, i64 %209
store i32 0, i32* %210
%211 = load i32, i32* %6
%212 = add nsw i32 %211, -1
store i32 %212, i32* %6
%213 = load i32*, i32** %3
%214 = load i32, i32* %5
%215 = add nsw i32 %214, 2
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i32, i32* %213, i64 %216
%218 = load i32, i32* %217
%219 = sub nsw i32 %218, 2
store i32 %219, i32* %217
br label %265
220: ; preds = %193, %185
%221 = load i32*, i32** %3
%222 = load i32, i32* %5
%223 = add nsw i32 %222, 2
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds i32, i32* %221, i64 %224
%226 = load i32, i32* %225
%227 = icmp eq i32 %226, 1
br i1 %227, label %228, label %255
228: ; preds = %220
%229 = load i32*, i32** %3
%230 = load i32, i32* %5
%231 = add nsw i32 %230, 1
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds i32, i32* %229, i64 %232
%234 = load i32, i32* %233
%235 = icmp sge i32 %234, 2
br i1 %235, label %236, label %255
236: ; preds = %228
%237 = load i32*, i32** %3
%238 = load i32, i32* %5
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds i32, i32* %237, i64 %239
store i32 0, i32* %240
%241 = load i32*, i32** %3
%242 = load i32, i32* %5
%243 = add nsw i32 %242, 1
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds i32, i32* %241, i64 %244
%246 = load i32, i32* %245
%247 = sub nsw i32 %246, 2
store i32 %247, i32* %245
%248 = load i32*, i32** %3
%249 = load i32, i32* %5
%250 = add nsw i32 %249, 2
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds i32, i32* %248, i64 %251
store i32 0, i32* %252
%253 = load i32, i32* %6
%254 = add nsw i32 %253, -1
store i32 %254, i32* %6
br label %265
255: ; preds = %228, %220
%256 = load i32, i32* %6
%257 = add nsw i32 %256, -1
store i32 %257, i32* %6
%258 = load i32*, i32** %3
%259 = load i32, i32* %5
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds i32, i32* %258, i64 %260
store i32 0, i32* %261
br label %265
262: ; preds = %138
br label %263
263: ; preds = %262
br label %264
264: ; preds = %263
br label %265
265: ; preds = %264, %255, %236, %201, %184, %162, %131, %130, %113, %91, %82, %60, %31
%266 = load i32, i32* %5
%267 = add nsw i32 %266, 1
store i32 %267, i32* %5
br label %20
268: ; preds = %20
%269 = load i32*, i32** %3
%270 = getelementptr inbounds i32, i32* %269, i64 7
%271 = load i32, i32* %270
%272 = srem i32 %271, 3
%273 = icmp eq i32 %272, 1
br i1 %273, label %274, label %303
274: ; preds = %268
%275 = load i32*, i32** %3
%276 = getelementptr inbounds i32, i32* %275, i64 8
%277 = load i32, i32* %276
%278 = srem i32 %277, 3
%279 = icmp eq i32 %278, 1
br i1 %279, label %280, label %292
280: ; preds = %274
%281 = load i32, i32* %6
%282 = icmp sgt i32 %281, 0
br i1 %282, label %283, label %292
283: ; preds = %280
%284 = load i32*, i32** %3
%285 = getelementptr inbounds i32, i32* %284, i64 8
%286 = load i32, i32* %285
%287 = sub nsw i32 %286, 1
store i32 %287, i32* %285
%288 = load i32, i32* %6
%289 = add nsw i32 %288, -1
store i32 %289, i32* %6
%290 = load i32*, i32** %3
%291 = getelementptr inbounds i32, i32* %290, i64 7
store i32 0, i32* %291
br label %302
292: ; preds = %280, %274
%293 = load i32, i32* %6
%294 = icmp sge i32 %293, 2
br i1 %294, label %295, label %300
295: ; preds = %292
%296 = load i32*, i32** %3
%297 = getelementptr inbounds i32, i32* %296, i64 7
store i32 0, i32* %297
%298 = load i32, i32* %6
%299 = sub nsw i32 %298, 2
store i32 %299, i32* %6
br label %301
300: ; preds = %292
br label %301
301: ; preds = %300, %295
br label %302
302: ; preds = %301, %283
br label %322
303: ; preds = %268
%304 = load i32*, i32** %3
%305 = getelementptr inbounds i32, i32* %304, i64 7
%306 = load i32, i32* %305
%307 = srem i32 %306, 3
%308 = icmp eq i32 %307, 2
br i1 %308, label %309, label %318
309: ; preds = %303
%310 = load i32, i32* %6
%311 = icmp sgt i32 %310, 0
br i1 %311, label %312, label %317
312: ; preds = %309
%313 = load i32, i32* %6
%314 = add nsw i32 %313, -1
store i32 %314, i32* %6
%315 = load i32*, i32** %3
%316 = getelementptr inbounds i32, i32* %315, i64 7
store i32 0, i32* %316
br label %317
317: ; preds = %312, %309
br label %321
318: ; preds = %303
%319 = load i32*, i32** %3
%320 = getelementptr inbounds i32, i32* %319, i64 7
store i32 0, i32* %320
br label %321
321: ; preds = %318, %317
br label %322
322: ; preds = %321, %302
%323 = load i32*, i32** %3
%324 = getelementptr inbounds i32, i32* %323, i64 8
%325 = load i32, i32* %324
%326 = srem i32 %325, 3
%327 = icmp eq i32 %326, 1
br i1 %327, label %328, label %338
328: ; preds = %322
%329 = load i32, i32* %6
%330 = icmp sge i32 %329, 2
br i1 %330, label %331, label %336
331: ; preds = %328
%332 = load i32, i32* %6
%333 = sub nsw i32 %332, 2
store i32 %333, i32* %6
%334 = load i32*, i32** %3
%335 = getelementptr inbounds i32, i32* %334, i64 8
store i32 0, i32* %335
br label %337
336: ; preds = %328
br label %337
337: ; preds = %336, %331
br label %357
338: ; preds = %322
%339 = load i32*, i32** %3
%340 = getelementptr inbounds i32, i32* %339, i64 8
%341 = load i32, i32* %340
%342 = srem i32 %341, 3
%343 = icmp eq i32 %342, 2
br i1 %343, label %344, label %353
344: ; preds = %338
%345 = load i32, i32* %6
%346 = icmp sgt i32 %345, 0
br i1 %346, label %347, label %352
347: ; preds = %344
%348 = load i32, i32* %6
%349 = add nsw i32 %348, -1
store i32 %349, i32* %6
%350 = load i32*, i32** %3
%351 = getelementptr inbounds i32, i32* %350, i64 8
store i32 0, i32* %351
br label %352
352: ; preds = %347, %344
br label %356
353: ; preds = %338
%354 = load i32*, i32** %3
%355 = getelementptr inbounds i32, i32* %354, i64 8
store i32 0, i32* %355
br label %356
356: ; preds = %353, %352
br label %357
357: ; preds = %356, %337
%358 = load i32, i32* %6
%359 = load i32*, i32** %4
store i32 %358, i32* %359
br label %360
360: ; preds = %357, %12
ret void
}

LLVM IR (-O2):
define void @_sign_meld_delete(i32* %0, i32* %1) {
%3 = icmp ne i32* %0, null
%4 = icmp ne i32* %1, null
%5 = and i1 %3, %4
br i1 %5, label %6, label %128
6: ; preds = %2
%7 = load i32, i32* %1
%8 = icmp sgt i32 %7, 0
%9 = select i1 %8, i32 %7, i32 0
br label %10
10: ; preds = %6, %84
%11 = phi i64 [ 0, %6 ], [ %86, %84 ]
%12 = phi i32 [ %9, %6 ], [ %85, %84 ]
%13 = getelementptr inbounds i32, i32* %0, i64 %11
%14 = load i32, i32* %13
%15 = srem i32 %14, 3
switch i32 %15, label %84 [
i32 0, label %16
i32 1, label %17
i32 2, label %49
]
16: ; preds = %10
store i32 0, i32* %13
br label %84
17: ; preds = %10
%18 = add nuw nsw i64 %11, 1
%19 = getelementptr inbounds i32, i32* %0, i64 %18
%20 = load i32, i32* %19
%21 = icmp sgt i32 %20, 0
br i1 %21, label %22, label %32
22: ; preds = %17
%23 = add nuw nsw i64 %11, 2
%24 = getelementptr inbounds i32, i32* %0, i64 %23
%25 = load i32, i32* %24
%26 = icmp sgt i32 %25, 0
br i1 %26, label %27, label %30
27: ; preds = %22
store i32 0, i32* %13
%28 = add nsw i32 %20, -1
store i32 %28, i32* %19
%29 = add nsw i32 %25, -1
store i32 %29, i32* %24
br label %84
30: ; preds = %22
%31 = icmp eq i32 %12, 0
br i1 %31, label %84, label %34
32: ; preds = %17
%33 = icmp eq i32 %12, 0
br i1 %33, label %84, label %37
34: ; preds = %30
store i32 0, i32* %13
%35 = add nsw i32 %20, -1
store i32 %35, i32* %19
%36 = add nsw i32 %12, -1
br label %84
37: ; preds = %32
%38 = add nuw nsw i64 %11, 2
%39 = getelementptr inbounds i32, i32* %0, i64 %38
%40 = load i32, i32* %39
%41 = icmp sgt i32 %40, 0
br i1 %41, label %42, label %45
42: ; preds = %37
store i32 0, i32* %13
%43 = add nsw i32 %40, -1
store i32 %43, i32* %39
%44 = add nsw i32 %12, -1
br label %84
45: ; preds = %37
%46 = icmp slt i32 %12, 2
br i1 %46, label %84, label %47
47: ; preds = %45
store i32 0, i32* %13
%48 = add nsw i32 %12, -2
br label %84
49: ; preds = %10
%50 = add nuw nsw i64 %11, 1
%51 = getelementptr inbounds i32, i32* %0, i64 %50
%52 = load i32, i32* %51
%53 = icmp sgt i32 %52, 1
br i1 %53, label %54, label %62
54: ; preds = %49
%55 = add nuw nsw i64 %11, 2
%56 = getelementptr inbounds i32, i32* %0, i64 %55
%57 = load i32, i32* %56
%58 = icmp sgt i32 %57, 1
br i1 %58, label %59, label %62
59: ; preds = %54
store i32 0, i32* %13
%60 = add nsw i32 %52, -2
store i32 %60, i32* %51
%61 = add nsw i32 %57, -2
store i32 %61, i32* %56
br label %84
62: ; preds = %54, %49
%63 = icmp eq i32 %12, 0
br i1 %63, label %84, label %64
64: ; preds = %62
%65 = icmp eq i32 %52, 1
%66 = add nuw nsw i64 %11, 2
%67 = getelementptr inbounds i32, i32* %0, i64 %66
%68 = load i32, i32* %67
%69 = icmp sgt i32 %68, 1
%70 = select i1 %65, i1 %69, i1 false
br i1 %70, label %71, label %74
71: ; preds = %64
store i32 0, i32* %13
store i32 0, i32* %51
%72 = add nsw i32 %12, -1
%73 = add nsw i32 %68, -2
store i32 %73, i32* %67
br label %84
74: ; preds = %64
%75 = icmp ne i32 %68, 1
%76 = xor i1 %53, true
%77 = select i1 %75, i1 true, i1 %76
br i1 %77, label %82, label %78
78: ; preds = %74
%79 = getelementptr inbounds i32, i32* %0, i64 %66
store i32 0, i32* %13
%80 = add nsw i32 %52, -2
store i32 %80, i32* %51
store i32 0, i32* %79
%81 = add nsw i32 %12, -1
br label %84
82: ; preds = %74
%83 = add nsw i32 %12, -1
store i32 0, i32* %13
br label %84
84: ; preds = %32, %10, %62, %45, %30, %82, %78, %71, %59, %47, %42, %34, %27, %16
%85 = phi i32 [ %12, %16 ], [ %12, %27 ], [ 0, %30 ], [ %36, %34 ], [ %44, %42 ], [ %12, %45 ], [ %48, %47 ], [ %12, %59 ], [ 0, %62 ], [ %72, %71 ], [ %81, %78 ], [ %83, %82 ], [ %12, %10 ], [ 0, %32 ]
%86 = add nuw nsw i64 %11, 1
%87 = icmp eq i64 %86, 7
br i1 %87, label %88, label %10
88: ; preds = %84
%89 = getelementptr inbounds i32, i32* %0, i64 7
%90 = load i32, i32* %89
%91 = srem i32 %90, 3
switch i32 %91, label %110 [
i32 1, label %92
i32 2, label %106
]
92: ; preds = %88
%93 = getelementptr inbounds i32, i32* %0, i64 8
%94 = load i32, i32* %93
%95 = srem i32 %94, 3
%96 = icmp eq i32 %95, 1
%97 = icmp sgt i32 %85, 0
%98 = select i1 %96, i1 %97, i1 false
br i1 %98, label %99, label %102
99: ; preds = %92
%100 = add nsw i32 %94, -1
store i32 %100, i32* %93
%101 = add nsw i32 %85, -1
store i32 0, i32* %89
br label %111
102: ; preds = %92
%103 = icmp sgt i32 %85, 1
br i1 %103, label %104, label %111
104: ; preds = %102
store i32 0, i32* %89
%105 = add nsw i32 %85, -2
br label %111
106: ; preds = %88
%107 = icmp sgt i32 %85, 0
br i1 %107, label %108, label %111
108: ; preds = %106
%109 = add nsw i32 %85, -1
store i32 0, i32* %89
br label %111
110: ; preds = %88
store i32 0, i32* %89
br label %111
111: ; preds = %110, %108, %106, %99, %102, %104
%112 = phi i32 [ %101, %99 ], [ %105, %104 ], [ %85, %102 ], [ %109, %108 ], [ %85, %106 ], [ %85, %110 ]
%113 = getelementptr inbounds i32, i32* %0, i64 8
%114 = load i32, i32* %113
%115 = srem i32 %114, 3
switch i32 %115, label %124 [
i32 1, label %116
i32 2, label %120
]
116: ; preds = %111
%117 = icmp sgt i32 %112, 1
br i1 %117, label %118, label %126
118: ; preds = %116
%119 = add nsw i32 %112, -2
br label %124
120: ; preds = %111
%121 = icmp sgt i32 %112, 0
br i1 %121, label %122, label %126
122: ; preds = %120
%123 = add nsw i32 %112, -1
br label %124
124: ; preds = %111, %118, %122
%125 = phi i32 [ %123, %122 ], [ %119, %118 ], [ %112, %111 ]
store i32 0, i32* %113
br label %126
126: ; preds = %124, %120, %116
%127 = phi i32 [ %112, %116 ], [ %112, %120 ], [ %125, %124 ]
store i32 %127, i32* %1
br label %128
128: ; preds = %2, %126
ret void
}