char LInt_Div(unsigned char *A, unsigned char *B, unsigned char *Quo,
              unsigned char *Odd) {
  unsigned char Odd1[256], *OddA, *OddB, *Tmp, Adr[256], RtCod;
  int Cnt, Cnt1, Shft;
  unsigned int ASub, DivSub, QuoSub, BLth, OLth, QuoSubB;
  char LInt_Add(unsigned char *, unsigned char *);
  for (BLth = (int)*B; BLth != 0 && *(B + BLth) == (char)0; BLth--)
    ;
  if (BLth == 0)
    return (char)1;
  for (OLth = (int)*A; OLth != 0 && *(A + OLth) == (char)0; OLth--)
    ;
  *Quo = (char)0;
  for (Cnt = 1; Cnt <= OLth; Cnt++)
    *(Odd + Cnt) = *(A + Cnt);
  *Odd = (char)OLth;
  if ((OLth < BLth) || ((OLth == BLth) && (*(A + OLth) < *(B + BLth))))
    return (char)0;
  OddA = Odd;
  OddB = Odd1;
  do {
    QuoSubB = (int)*(OddA + OLth) / ((int)*(B + BLth) + 1);
    QuoSub = (int)*(OddA + OLth) / (int)*(B + BLth);
    RtCod = (char)0;
    do {
      if (QuoSub != 0) {
        Shft = OLth - BLth;
        ASub = (int)*(OddA + OLth);
        DivSub = (int)*(B + BLth) * QuoSub;
        ASub -= DivSub;
        ASub = (ASub & 0xff) << 8;
      } else if (OLth == BLth)
        RtCod = (char)2;
      else {
        QuoSub = ((unsigned int)*(OddA + OLth) << 8) +
                 (unsigned int)*(OddA + OLth - 1);
        ASub = QuoSub;
        QuoSub /= ((int)*(B + BLth) + 1);
        Shft = OLth - BLth - 1;
        DivSub = (int)*(B + BLth) * QuoSub;
        ASub -= DivSub;
        *(OddB + OLth) = (char)(ASub >> 8);
        ASub = (ASub & 0xff) << 8;
      }
      if (RtCod == (char)1)
        RtCod = (char)0;
      for (Cnt = BLth - 1; Cnt > 0 && RtCod == (char)0; Cnt--) {
        ASub += (int)*(OddA + Cnt + Shft);
        DivSub = (int)*(B + Cnt) * QuoSub;
        if (ASub >= DivSub) {
          ASub -= DivSub;
          *(OddB + Cnt + Shft + 1) = (char)(ASub >> 8);
          ASub = (ASub & 0xff) << 8;
        } else {
          for (Cnt1 = Cnt + Shft + 2; Cnt1 <= OLth && *(OddB + Cnt1) == (char)0;
               Cnt1++)
            ;
          if (Cnt1 <= OLth) {
            *(OddB + Cnt1) -= 1;
            for (Cnt1--; Cnt1 >= Cnt + Shft + 2; Cnt1--)
              *(OddB + Cnt1) = (char)0xff;
            ASub += (0xffff - DivSub) + 1;
            *(OddB + Cnt1) = (char)(ASub >> 8);
            ASub = (ASub & 0xff) << 8;
          } else {
            QuoSub -= (QuoSub - QuoSubB + 1) >> 1;
            RtCod = (char)1;
          }
        }
      }
      if (RtCod == (char)0) {
        *(OddB + Shft + 1) = (char)(ASub >> 8);
        if (((int)OddA - Shft) <= Shft) {
          for (Cnt = Shft; Cnt >= 0; Cnt--)
            *(OddB + Cnt) = *(OddA + Cnt);
          Tmp = OddB;
          OddB = OddA;
          OddA = Tmp;
        } else
          for (Cnt = (int)*OddA; Cnt > Shft; Cnt--)
            *(OddA + Cnt) = *(OddB + Cnt);
        for (OLth = (int)*OddA; OLth != 0 && *(OddA + OLth) == (char)0; OLth--)
          ;
        *OddA = (char)OLth;
        Adr[0] = Shft + 1;
        for (Cnt = 1; Cnt <= Shft; Cnt++)
          Adr[Cnt] = (char)0;
        Adr[Cnt] = QuoSub;
        LInt_Add(Quo, Adr);
        if (OLth >= BLth)
          RtCod = (char)0;
        else
          RtCod = (char)2;
      }
    } while (RtCod == (char)1);
  } while (RtCod == (char)0);
  if (OddB == Odd)
    for (Cnt = 0; Cnt <= (int)*OddA; Cnt++)
      *(Odd + Cnt) = *(OddA + Cnt);
  return (char)0;
}


x86 assembly (clang, -O0):
<LInt_Div>:
push   %rbp
mov    %rsp,%rbp
sub    $0x280,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    -0x18(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x270(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x270(%rbp)
mov    %al,-0x279(%rbp)
je     1167 <LInt_Div+0x57>
mov    -0x18(%rbp),%rax
mov    -0x270(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
sete   %al
mov    %al,-0x279(%rbp)
mov    -0x279(%rbp),%al
test   $0x1,%al
jne    117a <LInt_Div+0x6a>
jmp    1193 <LInt_Div+0x83>
jmp    117f <LInt_Div+0x6f>
mov    -0x270(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x270(%rbp)
jmp    1138 <LInt_Div+0x28>
cmpl   $0x0,-0x270(%rbp)
jne    11a9 <LInt_Div+0x99>
movb   $0x1,-0x1(%rbp)
jmp    1a10 <LInt_Div+0x900>
mov    -0x10(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x274(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x274(%rbp)
mov    %al,-0x27a(%rbp)
je     11e5 <LInt_Div+0xd5>
mov    -0x10(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
sete   %al
mov    %al,-0x27a(%rbp)
mov    -0x27a(%rbp),%al
test   $0x1,%al
jne    11f8 <LInt_Div+0xe8>
jmp    1211 <LInt_Div+0x101>
jmp    11fd <LInt_Div+0xed>
mov    -0x274(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x274(%rbp)
jmp    11b6 <LInt_Div+0xa6>
mov    -0x20(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x1,-0x258(%rbp)
mov    -0x258(%rbp),%eax
cmp    -0x274(%rbp),%eax
ja     1264 <LInt_Div+0x154>
mov    -0x10(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x28(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x258(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x258(%rbp)
jmp    1222 <LInt_Div+0x112>
mov    -0x274(%rbp),%eax
mov    %al,%cl
mov    -0x28(%rbp),%rax
mov    %cl,(%rax)
mov    -0x274(%rbp),%eax
cmp    -0x270(%rbp),%eax
jb     12ba <LInt_Div+0x1aa>
mov    -0x274(%rbp),%eax
cmp    -0x270(%rbp),%eax
jne    12c3 <LInt_Div+0x1b3>
mov    -0x10(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
mov    -0x18(%rbp),%rcx
mov    -0x270(%rbp),%edx
movzbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
jge    12c3 <LInt_Div+0x1b3>
movb   $0x0,-0x1(%rbp)
jmp    1a10 <LInt_Div+0x900>
mov    -0x28(%rbp),%rax
mov    %rax,-0x138(%rbp)
lea    -0x130(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x138(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
mov    -0x18(%rbp),%rcx
mov    -0x270(%rbp),%edx
movzbl (%rcx,%rdx,1),%ecx
add    $0x1,%ecx
cltd
idiv   %ecx
mov    %eax,-0x278(%rbp)
mov    -0x138(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
mov    -0x18(%rbp),%rcx
mov    -0x270(%rbp),%edx
movzbl (%rcx,%rdx,1),%ecx
cltd
idiv   %ecx
mov    %eax,-0x26c(%rbp)
movb   $0x0,-0x251(%rbp)
cmpl   $0x0,-0x26c(%rbp)
je     13b4 <LInt_Div+0x2a4>
mov    -0x274(%rbp),%eax
sub    -0x270(%rbp),%eax
mov    %eax,-0x260(%rbp)
mov    -0x138(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x264(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x270(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
imul   -0x26c(%rbp),%eax
mov    %eax,-0x268(%rbp)
mov    -0x268(%rbp),%ecx
mov    -0x264(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
and    $0xff,%eax
shl    $0x8,%eax
mov    %eax,-0x264(%rbp)
jmp    14a5 <LInt_Div+0x395>
mov    -0x274(%rbp),%eax
cmp    -0x270(%rbp),%eax
jne    13d2 <LInt_Div+0x2c2>
movb   $0x2,-0x251(%rbp)
jmp    14a0 <LInt_Div+0x390>
mov    -0x138(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
shl    $0x8,%eax
mov    -0x138(%rbp),%rcx
mov    -0x274(%rbp),%edx
movzbl -0x1(%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    %eax,-0x26c(%rbp)
mov    -0x26c(%rbp),%eax
mov    %eax,-0x264(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x270(%rbp),%ecx
movzbl (%rax,%rcx,1),%ecx
add    $0x1,%ecx
mov    -0x26c(%rbp),%eax
xor    %edx,%edx
div    %ecx
mov    %eax,-0x26c(%rbp)
mov    -0x274(%rbp),%eax
sub    -0x270(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x260(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x270(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
imul   -0x26c(%rbp),%eax
mov    %eax,-0x268(%rbp)
mov    -0x268(%rbp),%ecx
mov    -0x264(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x140(%rbp),%rax
mov    -0x274(%rbp),%ecx
mov    %dl,(%rax,%rcx,1)
mov    -0x264(%rbp),%eax
and    $0xff,%eax
shl    $0x8,%eax
mov    %eax,-0x264(%rbp)
jmp    14a5 <LInt_Div+0x395>
movzbl -0x251(%rbp),%eax
cmp    $0x1,%eax
jne    14bc <LInt_Div+0x3ac>
movb   $0x0,-0x251(%rbp)
mov    -0x270(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x258(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x258(%rbp)
mov    %al,-0x27b(%rbp)
jle    14f3 <LInt_Div+0x3e3>
movzbl -0x251(%rbp),%eax
cmp    $0x0,%eax
sete   %al
mov    %al,-0x27b(%rbp)
mov    -0x27b(%rbp),%al
test   $0x1,%al
jne    1506 <LInt_Div+0x3f6>
jmp    1739 <LInt_Div+0x629>
mov    -0x138(%rbp),%rax
movslq -0x258(%rbp),%rcx
add    %rcx,%rax
movslq -0x260(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
add    -0x264(%rbp),%eax
mov    %eax,-0x264(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x258(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
imul   -0x26c(%rbp),%eax
mov    %eax,-0x268(%rbp)
mov    -0x264(%rbp),%eax
cmp    -0x268(%rbp),%eax
jb     15b0 <LInt_Div+0x4a0>
mov    -0x268(%rbp),%ecx
mov    -0x264(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x140(%rbp),%rax
movslq -0x258(%rbp),%rcx
add    %rcx,%rax
movslq -0x260(%rbp),%rcx
mov    %dl,0x1(%rax,%rcx,1)
mov    -0x264(%rbp),%eax
and    $0xff,%eax
shl    $0x8,%eax
mov    %eax,-0x264(%rbp)
jmp    1720 <LInt_Div+0x610>
mov    -0x258(%rbp),%eax
add    -0x260(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x25c(%rbp)
mov    -0x25c(%rbp),%ecx
xor    %eax,%eax
cmp    -0x274(%rbp),%ecx
mov    %al,-0x27c(%rbp)
ja     15fd <LInt_Div+0x4ed>
mov    -0x140(%rbp),%rax
movslq -0x25c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
sete   %al
mov    %al,-0x27c(%rbp)
mov    -0x27c(%rbp),%al
test   $0x1,%al
jne    1610 <LInt_Div+0x500>
jmp    1629 <LInt_Div+0x519>
jmp    1615 <LInt_Div+0x505>
mov    -0x25c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x25c(%rbp)
jmp    15c5 <LInt_Div+0x4b5>
mov    -0x25c(%rbp),%eax
cmp    -0x274(%rbp),%eax
ja     16f4 <LInt_Div+0x5e4>
mov    -0x140(%rbp),%rax
movslq -0x25c(%rbp),%rcx
movzbl (%rax,%rcx,1),%edx
sub    $0x1,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x25c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x25c(%rbp)
mov    -0x25c(%rbp),%eax
mov    -0x258(%rbp),%ecx
add    -0x260(%rbp),%ecx
add    $0x2,%ecx
cmp    %ecx,%eax
jl     16a5 <LInt_Div+0x595>
mov    -0x140(%rbp),%rax
movslq -0x25c(%rbp),%rcx
movb   $0xff,(%rax,%rcx,1)
mov    -0x25c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x25c(%rbp)
jmp    1662 <LInt_Div+0x552>
mov    $0xffff,%eax
sub    -0x268(%rbp),%eax
add    $0x1,%eax
add    -0x264(%rbp),%eax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x140(%rbp),%rax
movslq -0x25c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x264(%rbp),%eax
and    $0xff,%eax
shl    $0x8,%eax
mov    %eax,-0x264(%rbp)
jmp    171b <LInt_Div+0x60b>
mov    -0x26c(%rbp),%ecx
sub    -0x278(%rbp),%ecx
add    $0x1,%ecx
shr    $0x1,%ecx
mov    -0x26c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x26c(%rbp)
movb   $0x1,-0x251(%rbp)
jmp    1720 <LInt_Div+0x610>
jmp    1725 <LInt_Div+0x615>
mov    -0x258(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x258(%rbp)
jmp    14cb <LInt_Div+0x3bb>
movzbl -0x251(%rbp),%eax
cmp    $0x0,%eax
jne    1977 <LInt_Div+0x867>
mov    -0x264(%rbp),%eax
shr    $0x8,%eax
mov    %al,%dl
mov    -0x140(%rbp),%rax
movslq -0x260(%rbp),%rcx
mov    %dl,0x1(%rax,%rcx,1)
mov    -0x138(%rbp),%rax
sub    -0x260(%rbp),%eax
cmp    -0x260(%rbp),%eax
jg     17fd <LInt_Div+0x6ed>
mov    -0x260(%rbp),%eax
mov    %eax,-0x258(%rbp)
cmpl   $0x0,-0x258(%rbp)
jl     17ce <LInt_Div+0x6be>
mov    -0x138(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x140(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x258(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x258(%rbp)
jmp    178b <LInt_Div+0x67b>
mov    -0x140(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x138(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x138(%rbp)
jmp    185a <LInt_Div+0x74a>
mov    -0x138(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x258(%rbp)
mov    -0x258(%rbp),%eax
cmp    -0x260(%rbp),%eax
jle    1855 <LInt_Div+0x745>
mov    -0x140(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x138(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x258(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x258(%rbp)
jmp    180d <LInt_Div+0x6fd>
jmp    185a <LInt_Div+0x74a>
mov    -0x138(%rbp),%rax
movzbl (%rax),%eax
mov    %eax,-0x274(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x274(%rbp)
mov    %al,-0x27d(%rbp)
je     189c <LInt_Div+0x78c>
mov    -0x138(%rbp),%rax
mov    -0x274(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
sete   %al
mov    %al,-0x27d(%rbp)
mov    -0x27d(%rbp),%al
test   $0x1,%al
jne    18af <LInt_Div+0x79f>
jmp    18c8 <LInt_Div+0x7b8>
jmp    18b4 <LInt_Div+0x7a4>
mov    -0x274(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x274(%rbp)
jmp    186a <LInt_Div+0x75a>
mov    -0x274(%rbp),%eax
mov    %al,%cl
mov    -0x138(%rbp),%rax
mov    %cl,(%rax)
mov    -0x260(%rbp),%eax
add    $0x1,%eax
mov    %al,-0x250(%rbp)
movl   $0x1,-0x258(%rbp)
mov    -0x258(%rbp),%eax
cmp    -0x260(%rbp),%eax
jg     1927 <LInt_Div+0x817>
movslq -0x258(%rbp),%rax
movb   $0x0,-0x250(%rbp,%rax,1)
mov    -0x258(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x258(%rbp)
jmp    18f2 <LInt_Div+0x7e2>
mov    -0x26c(%rbp),%eax
mov    %al,%cl
movslq -0x258(%rbp),%rax
mov    %cl,-0x250(%rbp,%rax,1)
mov    -0x20(%rbp),%rdi
lea    -0x250(%rbp),%rsi
call   1030 <LInt_Add@plt>
mov    -0x274(%rbp),%eax
cmp    -0x270(%rbp),%eax
jb     196b <LInt_Div+0x85b>
movb   $0x0,-0x251(%rbp)
jmp    1972 <LInt_Div+0x862>
movb   $0x2,-0x251(%rbp)
jmp    1977 <LInt_Div+0x867>
jmp    197c <LInt_Div+0x86c>
movzbl -0x251(%rbp),%eax
cmp    $0x1,%eax
je     1336 <LInt_Div+0x226>
jmp    1991 <LInt_Div+0x881>
movzbl -0x251(%rbp),%eax
cmp    $0x0,%eax
je     12dc <LInt_Div+0x1cc>
mov    -0x140(%rbp),%rax
cmp    -0x28(%rbp),%rax
jne    1a0c <LInt_Div+0x8fc>
movl   $0x0,-0x258(%rbp)
mov    -0x258(%rbp),%eax
mov    -0x138(%rbp),%rcx
movzbl (%rcx),%ecx
cmp    %ecx,%eax
jg     1a07 <LInt_Div+0x8f7>
mov    -0x138(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x28(%rbp),%rax
movslq -0x258(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x258(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x258(%rbp)
jmp    19bc <LInt_Div+0x8ac>
jmp    1a0c <LInt_Div+0x8fc>
movb   $0x0,-0x1(%rbp)
movsbl -0x1(%rbp),%eax
add    $0x280,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<LInt_Div>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2d8,%rsp
mov    %rcx,(%rsp)
movzbl (%rsi),%r8d
mov    $0x1,%al
test   %r8,%r8
je     1919 <LInt_Div+0x7e9>
mov    %rdx,%r14
mov    %rsi,%r9
mov    (%rsp),%rdx
xchg   %ax,%ax
mov    %r8d,%ebx
cmpb   $0x0,(%r9,%rbx,1)
jne    1178 <LInt_Div+0x48>
add    $0xffffffffffffffff,%r8
test   %r8d,%r8d
jne    1160 <LInt_Div+0x30>
jmp    1919 <LInt_Div+0x7e9>
movzbl (%rdi),%ebp
test   %ebp,%ebp
mov    %r9,0x28(%rsp)
mov    %r8,0x20(%rsp)
mov    %rbx,0x18(%rsp)
je     11b0 <LInt_Div+0x80>
lea    0x1(%rbp),%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %ebp,%eax
cmpb   $0x0,(%rdi,%rax,1)
jne    11bc <LInt_Div+0x8c>
add    $0x3,%cl
add    $0xffffffff,%ebp
jne    11a0 <LInt_Div+0x70>
movb   $0x0,(%r14)
xor    %r15d,%r15d
jmp    13f0 <LInt_Div+0x2c0>
movb   $0x0,(%r14)
test   %ebp,%ebp
je     120d <LInt_Div+0xdd>
mov    %rbp,%r15
lea    0x1(%rbp),%r10d
lea    -0x1(%r10),%r12
mov    $0x1,%ebx
cmp    $0x8,%r12
jb     136b <LInt_Div+0x23b>
add    $0x1,%rdx
lea    (%rdi,%r10,1),%rbp
cmp    %rbp,%rdx
jae    1200 <LInt_Div+0xd0>
mov    (%rsp),%rax
lea    (%rax,%r10,1),%rdx
lea    0x1(%rdi),%rbp
cmp    %rdx,%rbp
jb     136b <LInt_Div+0x23b>
cmp    $0x20,%r12
jae    1215 <LInt_Div+0xe5>
xor    %edx,%edx
jmp    131e <LInt_Div+0x1ee>
xor    %r15d,%r15d
jmp    13f0 <LInt_Div+0x2c0>
mov    %r12,%rdx
and    $0xffffffffffffffe0,%rdx
lea    -0x20(%rdx),%rsi
mov    %rsi,%r8
shr    $0x5,%r8
add    $0x1,%r8
cmp    $0x60,%rsi
jae    123c <LInt_Div+0x10c>
xor    %eax,%eax
mov    (%rsp),%r11
jmp    12bf <LInt_Div+0x18f>
mov    %r10d,%ebx
add    $0xffffffffffffffff,%rbx
and    $0xffffffffffffffe0,%rbx
add    $0xffffffffffffffe0,%rbx
shr    $0x5,%rbx
add    $0x1,%rbx
and    $0xfffffffffffffffc,%rbx
xor    %eax,%eax
mov    (%rsp),%r11
movups 0x1(%rdi,%rax,1),%xmm0
movups 0x11(%rdi,%rax,1),%xmm1
movups %xmm0,0x1(%r11,%rax,1)
movups %xmm1,0x11(%r11,%rax,1)
movups 0x21(%rdi,%rax,1),%xmm0
movups 0x31(%rdi,%rax,1),%xmm1
movups %xmm0,0x21(%r11,%rax,1)
movups %xmm1,0x31(%r11,%rax,1)
movups 0x41(%rdi,%rax,1),%xmm0
movups 0x51(%rdi,%rax,1),%xmm1
movups %xmm0,0x41(%r11,%rax,1)
movups %xmm1,0x51(%r11,%rax,1)
movups 0x61(%rdi,%rax,1),%xmm0
movups 0x71(%rdi,%rax,1),%xmm1
movups %xmm0,0x61(%r11,%rax,1)
movups %xmm1,0x71(%r11,%rax,1)
sub    $0xffffffffffffff80,%rax
add    $0xfffffffffffffffc,%rbx
jne    125d <LInt_Div+0x12d>
test   $0x3,%r8b
je     1305 <LInt_Div+0x1d5>
lea    -0x1(%r10),%ebp
and    $0x60,%bpl
add    $0xe0,%bpl
shr    $0x5,%bpl
add    $0x1,%bpl
movzbl %bpl,%ebx
and    $0x3,%ebx
mov    %rax,%rsi
or     $0x1,%rsi
movups (%rdi,%rsi,1),%xmm0
movups 0x10(%rdi,%rsi,1),%xmm1
movups %xmm0,(%r11,%rsi,1)
movups %xmm1,0x10(%r11,%rsi,1)
add    $0x20,%rax
add    $0xffffffffffffffff,%rbx
jne    12e0 <LInt_Div+0x1b0>
cmp    %rdx,%r12
mov    0x28(%rsp),%r9
mov    0x20(%rsp),%r8
je     13a8 <LInt_Div+0x278>
test   $0x18,%r12b
je     1364 <LInt_Div+0x234>
mov    %r12,%r8
and    $0xfffffffffffffff8,%r8
lea    0x1(%r8),%rbx
mov    %r10d,%esi
add    $0xffffffffffffffff,%rsi
and    $0xfffffffffffffff8,%rsi
mov    (%rsp),%rbp
nopl   0x0(%rax,%rax,1)
mov    0x1(%rdi,%rdx,1),%rax
mov    %rax,0x1(%rbp,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rsi
jne    1340 <LInt_Div+0x210>
cmp    %r8,%r12
mov    0x28(%rsp),%r9
mov    0x20(%rsp),%r8
jne    136b <LInt_Div+0x23b>
jmp    13a8 <LInt_Div+0x278>
or     $0x1,%rdx
mov    %rdx,%rbx
mov    %r10d,%eax
sub    %ebx,%eax
mov    %rbx,%rdx
not    %rdx
add    %r10,%rdx
test   $0x3,%al
je     13a2 <LInt_Div+0x272>
sub    %bl,%cl
movzbl %cl,%ecx
and    $0x3,%ecx
mov    (%rsp),%rbp
nopl   0x0(%rax)
movzbl (%rdi,%rbx,1),%eax
mov    %al,0x0(%rbp,%rbx,1)
add    $0x1,%rbx
add    $0xffffffffffffffff,%rcx
jne    1390 <LInt_Div+0x260>
cmp    $0x3,%rdx
jae    13ae <LInt_Div+0x27e>
mov    (%rsp),%rdx
jmp    13eb <LInt_Div+0x2bb>
mov    %r10d,%eax
mov    (%rsp),%rdx
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rdi,%rbx,1),%ecx
mov    %cl,(%rdx,%rbx,1)
movzbl 0x1(%rdi,%rbx,1),%ecx
mov    %cl,0x1(%rdx,%rbx,1)
movzbl 0x2(%rdi,%rbx,1),%ecx
mov    %cl,0x2(%rdx,%rbx,1)
movzbl 0x3(%rdi,%rbx,1),%ecx
mov    %cl,0x3(%rdx,%rbx,1)
add    $0x4,%rbx
cmp    %rbx,%rax
jne    13c0 <LInt_Div+0x290>
mov    0x18(%rsp),%rbx
mov    %r15b,(%rdx)
cmp    %r8d,%r15d
jb     1917 <LInt_Div+0x7e7>
jne    140b <LInt_Div+0x2db>
mov    (%rdi,%rbx,1),%al
cmp    (%r9,%rbx,1),%al
jb     1917 <LInt_Div+0x7e7>
mov    %r14,0x70(%rsp)
lea    0x1d0(%rsp),%rax
mov    %rax,0x8(%rsp)
lea    -0x1(%r8),%eax
mov    %eax,0x64(%rsp)
mov    %r8d,%eax
not    %eax
mov    %eax,0x58(%rsp)
mov    %r8d,%eax
neg    %eax
mov    %rax,0x90(%rsp)
mov    %rdx,%r14
jmp    14a7 <LInt_Div+0x377>
mov    %eax,%edx
mov    %dl,(%r14)
lea    0x1(%rbx),%eax
mov    %al,0xd0(%rsp)
test   %ebx,%ebx
mov    %rdi,0x8(%rsp)
mov    %rdx,%r15
jle    18e0 <LInt_Div+0x7b0>
mov    %ebx,%edx
lea    0xd1(%rsp),%rdi
xor    %esi,%esi
call   1040 <memset@plt>
add    $0x1,%ebx
mov    0x70(%rsp),%rdi
mov    %ebx,%eax
mov    %r12b,0xd0(%rsp,%rax,1)
lea    0xd0(%rsp),%rsi
call   1030 <LInt_Add@plt>
mov    0x20(%rsp),%r8
cmp    %r8d,%r15d
mov    0x28(%rsp),%r9
mov    0x18(%rsp),%rbx
jb     18ea <LInt_Div+0x7ba>
mov    %r15d,%eax
mov    %rax,0x30(%rsp)
movzbl (%r14,%rax,1),%ecx
movzbl (%r9,%rbx,1),%ebp
mov    %ebp,%edi
add    $0x1,%edi
mov    %ecx,%eax
xor    %edx,%edx
div    %di
movzwl %ax,%edx
movzbl %cl,%eax
div    %bpl
movzbl %al,%r12d
mov    $0x1,%eax
sub    %edx,%eax
mov    %rax,0xb0(%rsp)
mov    0x90(%rsp),%rax
add    %r15d,%eax
mov    %eax,0x60(%rsp)
add    0x58(%rsp),%r15d
mov    %r15,0x98(%rsp)
mov    0x8(%rsp),%rdi
lea    -0x1(%rdi),%rax
mov    %rax,0xa0(%rsp)
lea    0x1(%rdi),%rax
mov    %rax,0xb8(%rsp)
mov    %r14,0x80(%rsp)
jmp    1552 <LInt_Div+0x422>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x48(%rsp),%r12
mov    0xb0(%rsp),%rax
add    %r12d,%eax
shr    %eax
sub    %eax,%r12d
mov    0x80(%rsp),%r14
mov    0x18(%rsp),%rbx
test   %r12d,%r12d
je     1580 <LInt_Div+0x450>
mov    0x30(%rsp),%rax
movzbl (%r14,%rax,1),%ecx
movzbl (%r9,%rbx,1),%eax
imul   %r12d,%eax
sub    %eax,%ecx
mov    0x60(%rsp),%eax
mov    %eax,%edx
jmp    15bd <LInt_Div+0x48d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x30(%rsp),%rbp
cmp    %r8d,%ebp
je     18ea <LInt_Div+0x7ba>
movzwl -0x1(%r14,%rbp,1),%ecx
movzbl (%r9,%rbx,1),%esi
mov    %r14,%r10
lea    0x1(%rsi),%edi
mov    %ecx,%eax
xor    %edx,%edx
div    %edi
mov    %eax,%r12d
imul   %esi,%eax
sub    %eax,%ecx
mov    0x8(%rsp),%rdi
mov    %ch,(%rdi,%rbp,1)
mov    0x98(%rsp),%rdx
shl    $0x8,%ecx
movzwl %cx,%eax
movslq %edx,%rsi
cmpl   $0x0,0x64(%rsp)
mov    %rdx,0x78(%rsp)
mov    %rdi,%r10
jle    182b <LInt_Div+0x6fb>
lea    (%r14,%rsi,1),%r11
mov    %rsi,0x50(%rsp)
mov    0xb8(%rsp),%rcx
mov    0x50(%rsp),%rbx
add    %rbx,%rcx
mov    %rcx,0xc8(%rsp)
mov    0x50(%rsp),%rsi
add    %r8d,%edx
mov    %edx,0x6c(%rsp)
lea    0x2(%rsi),%r15d
lea    (%r8,%rsi,1),%r13d
add    $0x1,%r13d
xor    %ebp,%ebp
mov    %r8,%rdi
mov    %r12,0x48(%rsp)
mov    %r11,0x38(%rsp)
mov    %r15,0x88(%rsp)
lea    -0x1(%rdi),%rdx
movzbl -0x1(%r11,%rdi,1),%ebx
or     %eax,%ebx
movzbl -0x1(%r9,%rdi,1),%ecx
imul   %r12d,%ecx
mov    %ebx,%eax
sub    %ecx,%eax
jae    16e0 <LInt_Div+0x5b0>
mov    %ecx,0x68(%rsp)
mov    %rdi,0xc0(%rsp)
mov    %ebp,0x14(%rsp)
mov    %rdx,0x40(%rsp)
lea    (%r15,%rdx,1),%esi
cmp    0x30(%rsp),%esi
mov    %r10,%rdi
ja     1530 <LInt_Div+0x400>
movslq %r13d,%r14
lea    (%rdi,%r14,1),%rcx
lea    -0x1(%r14),%rax
shl    $0x20,%r14
mov    0x6c(%rsp),%edx
sub    0x14(%rsp),%edx
add    $0x1,%edx
movslq %edx,%r11
xor    %ebp,%ebp
mov    %r13d,%r15d
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movzbl (%rcx,%r12,1),%edx
test   %dl,%dl
jne    1700 <LInt_Div+0x5d0>
add    $0x1,%r12
lea    (%r12,%r13,1),%edx
movabs $0x100000000,%r10
add    %r10,%r14
add    $0x1,%r15d
add    $0x1,%bpl
cmp    %edx,0x30(%rsp)
jae    16a0 <LInt_Div+0x570>
jmp    1530 <LInt_Div+0x400>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rdx,%rbx
mov    0xc8(%rsp),%rdx
mov    %ah,(%rdx,%rbx,1)
mov    %rbx,%rdx
jmp    1811 <LInt_Div+0x6e1>
cs nopw 0x0(%rax,%rax,1)
lea    (%r12,%r13,1),%edi
add    $0xff,%dl
mov    %dl,(%rcx,%r12,1)
cmp    %edi,%esi
jge    1777 <LInt_Div+0x647>
mov    %esi,0x5c(%rsp)
sar    $0x20,%r14
lea    -0x1(%r12),%edx
mov    %r14,%rdi
sub    %rdx,%rdi
add    0xa0(%rsp),%rdi
add    $0x1,%rdx
mov    $0xff,%esi
mov    %r11,0xa8(%rsp)
call   1040 <memset@plt>
mov    0xa8(%rsp),%rcx
not    %rcx
add    %r14,%rcx
test   $0x7,%r12b
je     179c <LInt_Div+0x66c>
movzbl %bpl,%eax
and    $0x7,%eax
xor    %r14d,%r14d
xchg   %ax,%ax
add    $0x1,%r14
cmp    %r14,%rax
jne    1760 <LInt_Div+0x630>
movslq %r15d,%rax
not    %r14
add    %rax,%r14
mov    %r14,%rax
jmp    17a0 <LInt_Div+0x670>
add    %r12,%rax
mov    0x8(%rsp),%r10
mov    0x48(%rsp),%r12
mov    0x38(%rsp),%r11
mov    0x88(%rsp),%r15
mov    0x14(%rsp),%ebp
mov    0x40(%rsp),%rdx
jmp    17f0 <LInt_Div+0x6c0>
add    $0xffffffffffffffff,%r14
mov    0x28(%rsp),%r9
mov    0x20(%rsp),%r8
mov    0x8(%rsp),%r10
mov    0x38(%rsp),%r11
mov    0x40(%rsp),%rdx
cmp    $0x7,%rcx
mov    0x48(%rsp),%r12
mov    0x88(%rsp),%r15
mov    0x14(%rsp),%ebp
jb     17f0 <LInt_Div+0x6c0>
movslq 0x5c(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x8(%r14),%rax
add    $0xfffffffffffffff9,%r14
cmp    %rcx,%r14
mov    %rax,%r14
jg     17e0 <LInt_Div+0x6b0>
sub    0x68(%rsp),%ebx
add    $0x10000,%ebx
cltq
mov    %r10,%rcx
mov    %bh,(%rcx,%rax,1)
mov    %ebx,%eax
mov    0x50(%rsp),%rsi
mov    0xc0(%rsp),%rdi
shl    $0x8,%eax
movzwl %ax,%eax
add    $0xffffffffffffffff,%r13
add    $0x1,%ebp
cmp    $0x2,%rdi
mov    %rdx,%rdi
jg     1629 <LInt_Div+0x4f9>
mov    %r10,%rdi
mov    %ah,0x1(%rdi,%rsi,1)
mov    0x80(%rsp),%r14
mov    %r14d,%eax
sub    %esi,%eax
cmp    %esi,%eax
jle    1880 <LInt_Div+0x750>
mov    (%r14),%al
movzbl %al,%esi
mov    0x78(%rsp),%rbx
cmp    %esi,%ebx
jge    18ac <LInt_Div+0x77c>
mov    %ebx,%edx
not    %edx
add    %esi,%edx
sub    %rdx,%rsi
mov    %rdi,%r15
lea    (%r14,%rsi,1),%rdi
add    %r15,%rsi
add    $0x1,%rdx
call   1050 <memcpy@plt>
mov    %r15,%rcx
mov    %r14,%rdi
jmp    18a4 <LInt_Div+0x774>
cs nopw 0x0(%rax,%rax,1)
mov    0x78(%rsp),%rbx
test   %ebx,%ebx
js     18a1 <LInt_Div+0x771>
mov    %ebx,%edx
add    $0x1,%rdx
mov    0x8(%rsp),%rdi
mov    %r14,%rsi
call   1050 <memcpy@plt>
mov    0x8(%rsp),%rdi
mov    %r14,%rcx
mov    %rdi,%r14
mov    (%rdi),%al
mov    %rcx,%rdi
xor    %edx,%edx
test   %al,%al
je     1442 <LInt_Div+0x312>
movzbl %al,%eax
nopl   0x0(%rax)
mov    %eax,%ecx
cmpb   $0x0,(%r14,%rcx,1)
jne    1440 <LInt_Div+0x310>
add    $0xffffffff,%eax
jne    18c0 <LInt_Div+0x790>
jmp    1442 <LInt_Div+0x312>
nopw   0x0(%rax,%rax,1)
mov    $0x1,%ebx
jmp    1473 <LInt_Div+0x343>
mov    (%rsp),%rdx
cmp    %rdx,0x8(%rsp)
jne    1917 <LInt_Div+0x7e7>
mov    $0xffffffffffffffff,%rax
nopl   0x0(%rax)
movzbl 0x1(%r14,%rax,1),%ecx
mov    %cl,0x1(%rdx,%rax,1)
movzbl (%r14),%ecx
add    $0x1,%rax
cmp    %rcx,%rax
jb     1900 <LInt_Div+0x7d0>
xor    %eax,%eax
add    $0x2d8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define signext i8 @LInt_Div(i8* %0, i8* %1, i8* %2, i8* %3) {
%5 = alloca i8
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca [256 x i8]
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca [256 x i8]
%15 = alloca i8
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
store i8* %0, i8** %6
store i8* %1, i8** %7
store i8* %2, i8** %8
store i8* %3, i8** %9
%25 = load i8*, i8** %7
%26 = load i8, i8* %25
%27 = zext i8 %26 to i32
store i32 %27, i32* %22
br label %28
28: ; preds = %42, %4
%29 = load i32, i32* %22
%30 = icmp ne i32 %29, 0
br i1 %30, label %31, label %39
31: ; preds = %28
%32 = load i8*, i8** %7
%33 = load i32, i32* %22
%34 = zext i32 %33 to i64
%35 = getelementptr inbounds i8, i8* %32, i64 %34
%36 = load i8, i8* %35
%37 = zext i8 %36 to i32
%38 = icmp eq i32 %37, 0
br label %39
39: ; preds = %31, %28
%40 = phi i1 [ false, %28 ], [ %38, %31 ]
br i1 %40, label %41, label %45
41: ; preds = %39
br label %42
42: ; preds = %41
%43 = load i32, i32* %22
%44 = add i32 %43, -1
store i32 %44, i32* %22
br label %28
45: ; preds = %39
%46 = load i32, i32* %22
%47 = icmp eq i32 %46, 0
br i1 %47, label %48, label %49
48: ; preds = %45
store i8 1, i8* %5
br label %524
49: ; preds = %45
%50 = load i8*, i8** %6
%51 = load i8, i8* %50
%52 = zext i8 %51 to i32
store i32 %52, i32* %23
br label %53
53: ; preds = %67, %49
%54 = load i32, i32* %23
%55 = icmp ne i32 %54, 0
br i1 %55, label %56, label %64
56: ; preds = %53
%57 = load i8*, i8** %6
%58 = load i32, i32* %23
%59 = zext i32 %58 to i64
%60 = getelementptr inbounds i8, i8* %57, i64 %59
%61 = load i8, i8* %60
%62 = zext i8 %61 to i32
%63 = icmp eq i32 %62, 0
br label %64
64: ; preds = %56, %53
%65 = phi i1 [ false, %53 ], [ %63, %56 ]
br i1 %65, label %66, label %70
66: ; preds = %64
br label %67
67: ; preds = %66
%68 = load i32, i32* %23
%69 = add i32 %68, -1
store i32 %69, i32* %23
br label %53
70: ; preds = %64
%71 = load i8*, i8** %8
store i8 0, i8* %71
store i32 1, i32* %16
br label %72
72: ; preds = %86, %70
%73 = load i32, i32* %16
%74 = load i32, i32* %23
%75 = icmp ule i32 %73, %74
br i1 %75, label %76, label %89
76: ; preds = %72
%77 = load i8*, i8** %6
%78 = load i32, i32* %16
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i8, i8* %77, i64 %79
%81 = load i8, i8* %80
%82 = load i8*, i8** %9
%83 = load i32, i32* %16
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i8, i8* %82, i64 %84
store i8 %81, i8* %85
br label %86
86: ; preds = %76
%87 = load i32, i32* %16
%88 = add nsw i32 %87, 1
store i32 %88, i32* %16
br label %72
89: ; preds = %72
%90 = load i32, i32* %23
%91 = trunc i32 %90 to i8
%92 = load i8*, i8** %9
store i8 %91, i8* %92
%93 = load i32, i32* %23
%94 = load i32, i32* %22
%95 = icmp ult i32 %93, %94
br i1 %95, label %114, label %96
96: ; preds = %89
%97 = load i32, i32* %23
%98 = load i32, i32* %22
%99 = icmp eq i32 %97, %98
br i1 %99, label %100, label %115
100: ; preds = %96
%101 = load i8*, i8** %6
%102 = load i32, i32* %23
%103 = zext i32 %102 to i64
%104 = getelementptr inbounds i8, i8* %101, i64 %103
%105 = load i8, i8* %104
%106 = zext i8 %105 to i32
%107 = load i8*, i8** %7
%108 = load i32, i32* %22
%109 = zext i32 %108 to i64
%110 = getelementptr inbounds i8, i8* %107, i64 %109
%111 = load i8, i8* %110
%112 = zext i8 %111 to i32
%113 = icmp slt i32 %106, %112
br i1 %113, label %114, label %115
114: ; preds = %100, %89
store i8 0, i8* %5
br label %524
115: ; preds = %100, %96
%116 = load i8*, i8** %9
store i8* %116, i8** %11
%117 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
store i8* %117, i8** %12
br label %118
118: ; preds = %494, %115
%119 = load i8*, i8** %11
%120 = load i32, i32* %23
%121 = zext i32 %120 to i64
%122 = getelementptr inbounds i8, i8* %119, i64 %121
%123 = load i8, i8* %122
%124 = zext i8 %123 to i32
%125 = load i8*, i8** %7
%126 = load i32, i32* %22
%127 = zext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %125, i64 %127
%129 = load i8, i8* %128
%130 = zext i8 %129 to i32
%131 = add nsw i32 %130, 1
%132 = sdiv i32 %124, %131
store i32 %132, i32* %24
%133 = load i8*, i8** %11
%134 = load i32, i32* %23
%135 = zext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %133, i64 %135
%137 = load i8, i8* %136
%138 = zext i8 %137 to i32
%139 = load i8*, i8** %7
%140 = load i32, i32* %22
%141 = zext i32 %140 to i64
%142 = getelementptr inbounds i8, i8* %139, i64 %141
%143 = load i8, i8* %142
%144 = zext i8 %143 to i32
%145 = sdiv i32 %138, %144
store i32 %145, i32* %21
store i8 0, i8* %15
br label %146
146: ; preds = %489, %118
%147 = load i32, i32* %21
%148 = icmp ne i32 %147, 0
br i1 %148, label %149, label %173
149: ; preds = %146
%150 = load i32, i32* %23
%151 = load i32, i32* %22
%152 = sub i32 %150, %151
store i32 %152, i32* %18
%153 = load i8*, i8** %11
%154 = load i32, i32* %23
%155 = zext i32 %154 to i64
%156 = getelementptr inbounds i8, i8* %153, i64 %155
%157 = load i8, i8* %156
%158 = zext i8 %157 to i32
store i32 %158, i32* %19
%159 = load i8*, i8** %7
%160 = load i32, i32* %22
%161 = zext i32 %160 to i64
%162 = getelementptr inbounds i8, i8* %159, i64 %161
%163 = load i8, i8* %162
%164 = zext i8 %163 to i32
%165 = load i32, i32* %21
%166 = mul i32 %164, %165
store i32 %166, i32* %20
%167 = load i32, i32* %20
%168 = load i32, i32* %19
%169 = sub i32 %168, %167
store i32 %169, i32* %19
%170 = load i32, i32* %19
%171 = and i32 %170, 255
%172 = shl i32 %171, 8
store i32 %172, i32* %19
br label %230
173: ; preds = %146
%174 = load i32, i32* %23
%175 = load i32, i32* %22
%176 = icmp eq i32 %174, %175
br i1 %176, label %177, label %178
177: ; preds = %173
store i8 2, i8* %15
br label %229
178: ; preds = %173
%179 = load i8*, i8** %11
%180 = load i32, i32* %23
%181 = zext i32 %180 to i64
%182 = getelementptr inbounds i8, i8* %179, i64 %181
%183 = load i8, i8* %182
%184 = zext i8 %183 to i32
%185 = shl i32 %184, 8
%186 = load i8*, i8** %11
%187 = load i32, i32* %23
%188 = zext i32 %187 to i64
%189 = getelementptr inbounds i8, i8* %186, i64 %188
%190 = getelementptr inbounds i8, i8* %189, i64 -1
%191 = load i8, i8* %190
%192 = zext i8 %191 to i32
%193 = add i32 %185, %192
store i32 %193, i32* %21
%194 = load i32, i32* %21
store i32 %194, i32* %19
%195 = load i8*, i8** %7
%196 = load i32, i32* %22
%197 = zext i32 %196 to i64
%198 = getelementptr inbounds i8, i8* %195, i64 %197
%199 = load i8, i8* %198
%200 = zext i8 %199 to i32
%201 = add nsw i32 %200, 1
%202 = load i32, i32* %21
%203 = udiv i32 %202, %201
store i32 %203, i32* %21
%204 = load i32, i32* %23
%205 = load i32, i32* %22
%206 = sub i32 %204, %205
%207 = sub i32 %206, 1
store i32 %207, i32* %18
%208 = load i8*, i8** %7
%209 = load i32, i32* %22
%210 = zext i32 %209 to i64
%211 = getelementptr inbounds i8, i8* %208, i64 %210
%212 = load i8, i8* %211
%213 = zext i8 %212 to i32
%214 = load i32, i32* %21
%215 = mul i32 %213, %214
store i32 %215, i32* %20
%216 = load i32, i32* %20
%217 = load i32, i32* %19
%218 = sub i32 %217, %216
store i32 %218, i32* %19
%219 = load i32, i32* %19
%220 = lshr i32 %219, 8
%221 = trunc i32 %220 to i8
%222 = load i8*, i8** %12
%223 = load i32, i32* %23
%224 = zext i32 %223 to i64
%225 = getelementptr inbounds i8, i8* %222, i64 %224
store i8 %221, i8* %225
%226 = load i32, i32* %19
%227 = and i32 %226, 255
%228 = shl i32 %227, 8
store i32 %228, i32* %19
br label %229
229: ; preds = %178, %177
br label %230
230: ; preds = %229, %149
%231 = load i8, i8* %15
%232 = zext i8 %231 to i32
%233 = icmp eq i32 %232, 1
br i1 %233, label %234, label %235
234: ; preds = %230
store i8 0, i8* %15
br label %235
235: ; preds = %234, %230
%236 = load i32, i32* %22
%237 = sub i32 %236, 1
store i32 %237, i32* %16
br label %238
238: ; preds = %367, %235
%239 = load i32, i32* %16
%240 = icmp sgt i32 %239, 0
br i1 %240, label %241, label %245
241: ; preds = %238
%242 = load i8, i8* %15
%243 = zext i8 %242 to i32
%244 = icmp eq i32 %243, 0
br label %245
245: ; preds = %241, %238
%246 = phi i1 [ false, %238 ], [ %244, %241 ]
br i1 %246, label %247, label %370
247: ; preds = %245
%248 = load i8*, i8** %11
%249 = load i32, i32* %16
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds i8, i8* %248, i64 %250
%252 = load i32, i32* %18
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds i8, i8* %251, i64 %253
%255 = load i8, i8* %254
%256 = zext i8 %255 to i32
%257 = load i32, i32* %19
%258 = add i32 %257, %256
store i32 %258, i32* %19
%259 = load i8*, i8** %7
%260 = load i32, i32* %16
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds i8, i8* %259, i64 %261
%263 = load i8, i8* %262
%264 = zext i8 %263 to i32
%265 = load i32, i32* %21
%266 = mul i32 %264, %265
store i32 %266, i32* %20
%267 = load i32, i32* %19
%268 = load i32, i32* %20
%269 = icmp uge i32 %267, %268
br i1 %269, label %270, label %288
270: ; preds = %247
%271 = load i32, i32* %20
%272 = load i32, i32* %19
%273 = sub i32 %272, %271
store i32 %273, i32* %19
%274 = load i32, i32* %19
%275 = lshr i32 %274, 8
%276 = trunc i32 %275 to i8
%277 = load i8*, i8** %12
%278 = load i32, i32* %16
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds i8, i8* %277, i64 %279
%281 = load i32, i32* %18
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds i8, i8* %280, i64 %282
%284 = getelementptr inbounds i8, i8* %283, i64 1
store i8 %276, i8* %284
%285 = load i32, i32* %19
%286 = and i32 %285, 255
%287 = shl i32 %286, 8
store i32 %287, i32* %19
br label %366
288: ; preds = %247
%289 = load i32, i32* %16
%290 = load i32, i32* %18
%291 = add nsw i32 %289, %290
%292 = add nsw i32 %291, 2
store i32 %292, i32* %17
br label %293
293: ; preds = %308, %288
%294 = load i32, i32* %17
%295 = load i32, i32* %23
%296 = icmp ule i32 %294, %295
br i1 %296, label %297, label %305
297: ; preds = %293
%298 = load i8*, i8** %12
%299 = load i32, i32* %17
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds i8, i8* %298, i64 %300
%302 = load i8, i8* %301
%303 = zext i8 %302 to i32
%304 = icmp eq i32 %303, 0
br label %305
305: ; preds = %297, %293
%306 = phi i1 [ false, %293 ], [ %304, %297 ]
br i1 %306, label %307, label %311
307: ; preds = %305
br label %308
308: ; preds = %307
%309 = load i32, i32* %17
%310 = add nsw i32 %309, 1
store i32 %310, i32* %17
br label %293
311: ; preds = %305
%312 = load i32, i32* %17
%313 = load i32, i32* %23
%314 = icmp ule i32 %312, %313
br i1 %314, label %315, label %357
315: ; preds = %311
%316 = load i8*, i8** %12
%317 = load i32, i32* %17
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds i8, i8* %316, i64 %318
%320 = load i8, i8* %319
%321 = zext i8 %320 to i32
%322 = sub nsw i32 %321, 1
%323 = trunc i32 %322 to i8
store i8 %323, i8* %319
%324 = load i32, i32* %17
%325 = add nsw i32 %324, -1
store i32 %325, i32* %17
br label %326
326: ; preds = %338, %315
%327 = load i32, i32* %17
%328 = load i32, i32* %16
%329 = load i32, i32* %18
%330 = add nsw i32 %328, %329
%331 = add nsw i32 %330, 2
%332 = icmp sge i32 %327, %331
br i1 %332, label %333, label %341
333: ; preds = %326
%334 = load i8*, i8** %12
%335 = load i32, i32* %17
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds i8, i8* %334, i64 %336
store i8 -1, i8* %337
br label %338
338: ; preds = %333
%339 = load i32, i32* %17
%340 = add nsw i32 %339, -1
store i32 %340, i32* %17
br label %326
341: ; preds = %326
%342 = load i32, i32* %20
%343 = sub i32 65535, %342
%344 = add i32 %343, 1
%345 = load i32, i32* %19
%346 = add i32 %345, %344
store i32 %346, i32* %19
%347 = load i32, i32* %19
%348 = lshr i32 %347, 8
%349 = trunc i32 %348 to i8
%350 = load i8*, i8** %12
%351 = load i32, i32* %17
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds i8, i8* %350, i64 %352
store i8 %349, i8* %353
%354 = load i32, i32* %19
%355 = and i32 %354, 255
%356 = shl i32 %355, 8
store i32 %356, i32* %19
br label %365
357: ; preds = %311
%358 = load i32, i32* %21
%359 = load i32, i32* %24
%360 = sub i32 %358, %359
%361 = add i32 %360, 1
%362 = lshr i32 %361, 1
%363 = load i32, i32* %21
%364 = sub i32 %363, %362
store i32 %364, i32* %21
store i8 1, i8* %15
br label %365
365: ; preds = %357, %341
br label %366
366: ; preds = %365, %270
br label %367
367: ; preds = %366
%368 = load i32, i32* %16
%369 = add nsw i32 %368, -1
store i32 %369, i32* %16
br label %238
370: ; preds = %245
%371 = load i8, i8* %15
%372 = zext i8 %371 to i32
%373 = icmp eq i32 %372, 0
br i1 %373, label %374, label %488
374: ; preds = %370
%375 = load i32, i32* %19
%376 = lshr i32 %375, 8
%377 = trunc i32 %376 to i8
%378 = load i8*, i8** %12
%379 = load i32, i32* %18
%380 = sext i32 %379 to i64
%381 = getelementptr inbounds i8, i8* %378, i64 %380
%382 = getelementptr inbounds i8, i8* %381, i64 1
store i8 %377, i8* %382
%383 = load i8*, i8** %11
%384 = ptrtoint i8* %383 to i32
%385 = load i32, i32* %18
%386 = sub nsw i32 %384, %385
%387 = load i32, i32* %18
%388 = icmp sle i32 %386, %387
br i1 %388, label %389, label %411
389: ; preds = %374
%390 = load i32, i32* %18
store i32 %390, i32* %16
br label %391
391: ; preds = %404, %389
%392 = load i32, i32* %16
%393 = icmp sge i32 %392, 0
br i1 %393, label %394, label %407
394: ; preds = %391
%395 = load i8*, i8** %11
%396 = load i32, i32* %16
%397 = sext i32 %396 to i64
%398 = getelementptr inbounds i8, i8* %395, i64 %397
%399 = load i8, i8* %398
%400 = load i8*, i8** %12
%401 = load i32, i32* %16
%402 = sext i32 %401 to i64
%403 = getelementptr inbounds i8, i8* %400, i64 %402
store i8 %399, i8* %403
br label %404
404: ; preds = %394
%405 = load i32, i32* %16
%406 = add nsw i32 %405, -1
store i32 %406, i32* %16
br label %391
407: ; preds = %391
%408 = load i8*, i8** %12
store i8* %408, i8** %13
%409 = load i8*, i8** %11
store i8* %409, i8** %12
%410 = load i8*, i8** %13
store i8* %410, i8** %11
br label %433
411: ; preds = %374
%412 = load i8*, i8** %11
%413 = load i8, i8* %412
%414 = zext i8 %413 to i32
store i32 %414, i32* %16
br label %415
415: ; preds = %429, %411
%416 = load i32, i32* %16
%417 = load i32, i32* %18
%418 = icmp sgt i32 %416, %417
br i1 %418, label %419, label %432
419: ; preds = %415
%420 = load i8*, i8** %12
%421 = load i32, i32* %16
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds i8, i8* %420, i64 %422
%424 = load i8, i8* %423
%425 = load i8*, i8** %11
%426 = load i32, i32* %16
%427 = sext i32 %426 to i64
%428 = getelementptr inbounds i8, i8* %425, i64 %427
store i8 %424, i8* %428
br label %429
429: ; preds = %419
%430 = load i32, i32* %16
%431 = add nsw i32 %430, -1
store i32 %431, i32* %16
br label %415
432: ; preds = %415
br label %433
433: ; preds = %432, %407
%434 = load i8*, i8** %11
%435 = load i8, i8* %434
%436 = zext i8 %435 to i32
store i32 %436, i32* %23
br label %437
437: ; preds = %451, %433
%438 = load i32, i32* %23
%439 = icmp ne i32 %438, 0
br i1 %439, label %440, label %448
440: ; preds = %437
%441 = load i8*, i8** %11
%442 = load i32, i32* %23
%443 = zext i32 %442 to i64
%444 = getelementptr inbounds i8, i8* %441, i64 %443
%445 = load i8, i8* %444
%446 = zext i8 %445 to i32
%447 = icmp eq i32 %446, 0
br label %448
448: ; preds = %440, %437
%449 = phi i1 [ false, %437 ], [ %447, %440 ]
br i1 %449, label %450, label %454
450: ; preds = %448
br label %451
451: ; preds = %450
%452 = load i32, i32* %23
%453 = add i32 %452, -1
store i32 %453, i32* %23
br label %437
454: ; preds = %448
%455 = load i32, i32* %23
%456 = trunc i32 %455 to i8
%457 = load i8*, i8** %11
store i8 %456, i8* %457
%458 = load i32, i32* %18
%459 = add nsw i32 %458, 1
%460 = trunc i32 %459 to i8
%461 = getelementptr inbounds [256 x i8], [256 x i8]* %14, i64 0, i64 0
store i8 %460, i8* %461
store i32 1, i32* %16
br label %462
462: ; preds = %470, %454
%463 = load i32, i32* %16
%464 = load i32, i32* %18
%465 = icmp sle i32 %463, %464
br i1 %465, label %466, label %473
466: ; preds = %462
%467 = load i32, i32* %16
%468 = sext i32 %467 to i64
%469 = getelementptr inbounds [256 x i8], [256 x i8]* %14, i64 0, i64 %468
store i8 0, i8* %469
br label %470
470: ; preds = %466
%471 = load i32, i32* %16
%472 = add nsw i32 %471, 1
store i32 %472, i32* %16
br label %462
473: ; preds = %462
%474 = load i32, i32* %21
%475 = trunc i32 %474 to i8
%476 = load i32, i32* %16
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds [256 x i8], [256 x i8]* %14, i64 0, i64 %477
store i8 %475, i8* %478
%479 = load i8*, i8** %8
%480 = getelementptr inbounds [256 x i8], [256 x i8]* %14, i64 0, i64 0
%481 = call signext i8 @LInt_Add(i8* %479, i8* %480)
%482 = load i32, i32* %23
%483 = load i32, i32* %22
%484 = icmp uge i32 %482, %483
br i1 %484, label %485, label %486
485: ; preds = %473
store i8 0, i8* %15
br label %487
486: ; preds = %473
store i8 2, i8* %15
br label %487
487: ; preds = %486, %485
br label %488
488: ; preds = %487, %370
br label %489
489: ; preds = %488
%490 = load i8, i8* %15
%491 = zext i8 %490 to i32
%492 = icmp eq i32 %491, 1
br i1 %492, label %146, label %493
493: ; preds = %489
br label %494
494: ; preds = %493
%495 = load i8, i8* %15
%496 = zext i8 %495 to i32
%497 = icmp eq i32 %496, 0
br i1 %497, label %118, label %498
498: ; preds = %494
%499 = load i8*, i8** %12
%500 = load i8*, i8** %9
%501 = icmp eq i8* %499, %500
br i1 %501, label %502, label %523
502: ; preds = %498
store i32 0, i32* %16
br label %503
503: ; preds = %519, %502
%504 = load i32, i32* %16
%505 = load i8*, i8** %11
%506 = load i8, i8* %505
%507 = zext i8 %506 to i32
%508 = icmp sle i32 %504, %507
br i1 %508, label %509, label %522
509: ; preds = %503
%510 = load i8*, i8** %11
%511 = load i32, i32* %16
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds i8, i8* %510, i64 %512
%514 = load i8, i8* %513
%515 = load i8*, i8** %9
%516 = load i32, i32* %16
%517 = sext i32 %516 to i64
%518 = getelementptr inbounds i8, i8* %515, i64 %517
store i8 %514, i8* %518
br label %519
519: ; preds = %509
%520 = load i32, i32* %16
%521 = add nsw i32 %520, 1
store i32 %521, i32* %16
br label %503
522: ; preds = %503
br label %523
523: ; preds = %522, %498
store i8 0, i8* %5
br label %524
524: ; preds = %523, %114, %48
%525 = load i8, i8* %5
ret i8 %525
}

LLVM IR (-O2):
define signext i8 @LInt_Div(i8* nocapture %0, i8* nocapture %1, i8* %2, i8* %3) {
%5 = alloca [256 x i8]
%6 = alloca [256 x i8]
%7 = getelementptr inbounds [256 x i8], [256 x i8]* %5, i64 0, i64 0
%8 = getelementptr inbounds [256 x i8], [256 x i8]* %6, i64 0, i64 0
%9 = load i8, i8* %1
%10 = icmp eq i8 %9, 0
br i1 %10, label %453, label %11
11: ; preds = %4
%12 = zext i8 %9 to i32
br label %13
13: ; preds = %11, %19
%14 = phi i32 [ %20, %19 ], [ %12, %11 ]
%15 = zext i32 %14 to i64
%16 = getelementptr inbounds i8, i8* %1, i64 %15
%17 = load i8, i8* %16
%18 = icmp eq i8 %17, 0
br i1 %18, label %19, label %22
19: ; preds = %13
%20 = add nsw i32 %14, -1
%21 = icmp eq i32 %20, 0
br i1 %21, label %453, label %13
22: ; preds = %13
%23 = zext i32 %14 to i64
%24 = getelementptr inbounds i8, i8* %1, i64 %23
%25 = load i8, i8* %0
%26 = icmp eq i8 %25, 0
br i1 %26, label %38, label %27
27: ; preds = %22
%28 = zext i8 %25 to i32
br label %29
29: ; preds = %27, %35
%30 = phi i32 [ %36, %35 ], [ %28, %27 ]
%31 = zext i32 %30 to i64
%32 = getelementptr inbounds i8, i8* %0, i64 %31
%33 = load i8, i8* %32
%34 = icmp eq i8 %33, 0
br i1 %34, label %35, label %39
35: ; preds = %29
%36 = add nsw i32 %30, -1
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %29
38: ; preds = %35, %22
store i8 0, i8* %2
br label %196
39: ; preds = %29
store i8 0, i8* %2
%40 = icmp eq i32 %30, 0
br i1 %40, label %196, label %41
41: ; preds = %39
%42 = add nsw i32 %30, 1
%43 = zext i32 %42 to i64
%44 = add nsw i64 %43, -1
%45 = icmp ult i64 %44, 8
br i1 %45, label %158, label %46
46: ; preds = %41
%47 = getelementptr i8, i8* %3, i64 1
%48 = getelementptr i8, i8* %3, i64 %43
%49 = getelementptr i8, i8* %0, i64 1
%50 = getelementptr i8, i8* %0, i64 %43
%51 = icmp ult i8* %47, %50
%52 = icmp ult i8* %49, %48
%53 = and i1 %51, %52
br i1 %53, label %158, label %54
54: ; preds = %46
%55 = icmp ult i64 %44, 32
br i1 %55, label %141, label %56
56: ; preds = %54
%57 = and i64 %44, -32
%58 = add nsw i64 %57, -32
%59 = lshr exact i64 %58, 5
%60 = add nuw nsw i64 %59, 1
%61 = and i64 %60, 3
%62 = icmp ult i64 %58, 96
br i1 %62, label %115, label %63
63: ; preds = %56
%64 = and i64 %60, 1152921504606846972
br label %65
65: ; preds = %65, %63
%66 = phi i64 [ 0, %63 ], [ %112, %65 ]
%67 = phi i64 [ 0, %63 ], [ %113, %65 ]
%68 = or i64 %66, 1
%69 = getelementptr inbounds i8, i8* %0, i64 %68
%70 = bitcast i8* %69 to <16 x i8>*
%71 = load <16 x i8>, <16 x i8>* %70
%72 = getelementptr inbounds i8, i8* %69, i64 16
%73 = bitcast i8* %72 to <16 x i8>*
%74 = load <16 x i8>, <16 x i8>* %73
%75 = getelementptr inbounds i8, i8* %3, i64 %68
%76 = bitcast i8* %75 to <16 x i8>*
store <16 x i8> %71, <16 x i8>* %76
%77 = getelementptr inbounds i8, i8* %75, i64 16
%78 = bitcast i8* %77 to <16 x i8>*
store <16 x i8> %74, <16 x i8>* %78
%79 = or i64 %66, 33
%80 = getelementptr inbounds i8, i8* %0, i64 %79
%81 = bitcast i8* %80 to <16 x i8>*
%82 = load <16 x i8>, <16 x i8>* %81
%83 = getelementptr inbounds i8, i8* %80, i64 16
%84 = bitcast i8* %83 to <16 x i8>*
%85 = load <16 x i8>, <16 x i8>* %84
%86 = getelementptr inbounds i8, i8* %3, i64 %79
%87 = bitcast i8* %86 to <16 x i8>*
store <16 x i8> %82, <16 x i8>* %87
%88 = getelementptr inbounds i8, i8* %86, i64 16
%89 = bitcast i8* %88 to <16 x i8>*
store <16 x i8> %85, <16 x i8>* %89
%90 = or i64 %66, 65
%91 = getelementptr inbounds i8, i8* %0, i64 %90
%92 = bitcast i8* %91 to <16 x i8>*
%93 = load <16 x i8>, <16 x i8>* %92
%94 = getelementptr inbounds i8, i8* %91, i64 16
%95 = bitcast i8* %94 to <16 x i8>*
%96 = load <16 x i8>, <16 x i8>* %95
%97 = getelementptr inbounds i8, i8* %3, i64 %90
%98 = bitcast i8* %97 to <16 x i8>*
store <16 x i8> %93, <16 x i8>* %98
%99 = getelementptr inbounds i8, i8* %97, i64 16
%100 = bitcast i8* %99 to <16 x i8>*
store <16 x i8> %96, <16 x i8>* %100
%101 = or i64 %66, 97
%102 = getelementptr inbounds i8, i8* %0, i64 %101
%103 = bitcast i8* %102 to <16 x i8>*
%104 = load <16 x i8>, <16 x i8>* %103
%105 = getelementptr inbounds i8, i8* %102, i64 16
%106 = bitcast i8* %105 to <16 x i8>*
%107 = load <16 x i8>, <16 x i8>* %106
%108 = getelementptr inbounds i8, i8* %3, i64 %101
%109 = bitcast i8* %108 to <16 x i8>*
store <16 x i8> %104, <16 x i8>* %109
%110 = getelementptr inbounds i8, i8* %108, i64 16
%111 = bitcast i8* %110 to <16 x i8>*
store <16 x i8> %107, <16 x i8>* %111
%112 = add nuw i64 %66, 128
%113 = add i64 %67, 4
%114 = icmp eq i64 %113, %64
br i1 %114, label %115, label %65
115: ; preds = %65, %56
%116 = phi i64 [ 0, %56 ], [ %112, %65 ]
%117 = icmp eq i64 %61, 0
br i1 %117, label %135, label %118
118: ; preds = %115, %118
%119 = phi i64 [ %132, %118 ], [ %116, %115 ]
%120 = phi i64 [ %133, %118 ], [ 0, %115 ]
%121 = or i64 %119, 1
%122 = getelementptr inbounds i8, i8* %0, i64 %121
%123 = bitcast i8* %122 to <16 x i8>*
%124 = load <16 x i8>, <16 x i8>* %123
%125 = getelementptr inbounds i8, i8* %122, i64 16
%126 = bitcast i8* %125 to <16 x i8>*
%127 = load <16 x i8>, <16 x i8>* %126
%128 = getelementptr inbounds i8, i8* %3, i64 %121
%129 = bitcast i8* %128 to <16 x i8>*
store <16 x i8> %124, <16 x i8>* %129
%130 = getelementptr inbounds i8, i8* %128, i64 16
%131 = bitcast i8* %130 to <16 x i8>*
store <16 x i8> %127, <16 x i8>* %131
%132 = add nuw i64 %119, 32
%133 = add i64 %120, 1
%134 = icmp eq i64 %133, %61
br i1 %134, label %135, label %118
135: ; preds = %118, %115
%136 = icmp eq i64 %44, %57
br i1 %136, label %196, label %137
137: ; preds = %135
%138 = or i64 %57, 1
%139 = and i64 %44, 24
%140 = icmp eq i64 %139, 0
br i1 %140, label %158, label %141
141: ; preds = %54, %137
%142 = phi i64 [ %57, %137 ], [ 0, %54 ]
%143 = add nsw i64 %43, -1
%144 = and i64 %143, -8
%145 = or i64 %144, 1
br label %146
146: ; preds = %146, %141
%147 = phi i64 [ %142, %141 ], [ %154, %146 ]
%148 = or i64 %147, 1
%149 = getelementptr inbounds i8, i8* %0, i64 %148
%150 = bitcast i8* %149 to <8 x i8>*
%151 = load <8 x i8>, <8 x i8>* %150
%152 = getelementptr inbounds i8, i8* %3, i64 %148
%153 = bitcast i8* %152 to <8 x i8>*
store <8 x i8> %151, <8 x i8>* %153
%154 = add nuw i64 %147, 8
%155 = icmp eq i64 %154, %144
br i1 %155, label %156, label %146
156: ; preds = %146
%157 = icmp eq i64 %143, %144
br i1 %157, label %196, label %158
158: ; preds = %46, %41, %137, %156
%159 = phi i64 [ 1, %41 ], [ 1, %46 ], [ %138, %137 ], [ %145, %156 ]
%160 = sub nsw i64 %43, %159
%161 = xor i64 %159, -1
%162 = add nsw i64 %161, %43
%163 = and i64 %160, 3
%164 = icmp eq i64 %163, 0
br i1 %164, label %174, label %165
165: ; preds = %158, %165
%166 = phi i64 [ %171, %165 ], [ %159, %158 ]
%167 = phi i64 [ %172, %165 ], [ 0, %158 ]
%168 = getelementptr inbounds i8, i8* %0, i64 %166
%169 = load i8, i8* %168
%170 = getelementptr inbounds i8, i8* %3, i64 %166
store i8 %169, i8* %170
%171 = add nuw nsw i64 %166, 1
%172 = add i64 %167, 1
%173 = icmp eq i64 %172, %163
br i1 %173, label %174, label %165
174: ; preds = %165, %158
%175 = phi i64 [ %159, %158 ], [ %171, %165 ]
%176 = icmp ult i64 %162, 3
br i1 %176, label %196, label %177
177: ; preds = %174, %177
%178 = phi i64 [ %194, %177 ], [ %175, %174 ]
%179 = getelementptr inbounds i8, i8* %0, i64 %178
%180 = load i8, i8* %179
%181 = getelementptr inbounds i8, i8* %3, i64 %178
store i8 %180, i8* %181
%182 = add nuw nsw i64 %178, 1
%183 = getelementptr inbounds i8, i8* %0, i64 %182
%184 = load i8, i8* %183
%185 = getelementptr inbounds i8, i8* %3, i64 %182
store i8 %184, i8* %185
%186 = add nuw nsw i64 %178, 2
%187 = getelementptr inbounds i8, i8* %0, i64 %186
%188 = load i8, i8* %187
%189 = getelementptr inbounds i8, i8* %3, i64 %186
store i8 %188, i8* %189
%190 = add nuw nsw i64 %178, 3
%191 = getelementptr inbounds i8, i8* %0, i64 %190
%192 = load i8, i8* %191
%193 = getelementptr inbounds i8, i8* %3, i64 %190
store i8 %192, i8* %193
%194 = add nuw nsw i64 %178, 4
%195 = icmp eq i64 %194, %43
br i1 %195, label %196, label %177
196: ; preds = %174, %177, %135, %156, %38, %39
%197 = phi i32 [ 0, %38 ], [ 0, %39 ], [ %30, %156 ], [ %30, %135 ], [ %30, %177 ], [ %30, %174 ]
%198 = trunc i32 %197 to i8
store i8 %198, i8* %3
%199 = icmp ult i32 %197, %14
br i1 %199, label %453, label %200
200: ; preds = %196
%201 = icmp eq i32 %197, %14
br i1 %201, label %202, label %207
202: ; preds = %200
%203 = getelementptr inbounds i8, i8* %0, i64 %23
%204 = load i8, i8* %203
%205 = load i8, i8* %24
%206 = icmp ult i8 %204, %205
br i1 %206, label %453, label %207
207: ; preds = %202, %200
%208 = add i32 %14, -1
%209 = icmp sgt i32 %208, 0
%210 = xor i32 %14, -1
%211 = add i32 %14, 1
%212 = sext i32 %14 to i64
%213 = getelementptr inbounds [256 x i8], [256 x i8]* %6, i64 0, i64 1
br label %214
214: ; preds = %433, %207
%215 = phi i8* [ %7, %207 ], [ %410, %433 ]
%216 = phi i8* [ %3, %207 ], [ %411, %433 ]
%217 = phi i32 [ %197, %207 ], [ %425, %433 ]
%218 = zext i32 %217 to i64
%219 = getelementptr inbounds i8, i8* %216, i64 %218
%220 = load i8, i8* %219
%221 = load i8, i8* %24
%222 = zext i8 %220 to i16
%223 = zext i8 %221 to i16
%224 = add nuw nsw i16 %223, 1
%225 = udiv i16 %222, %224
%226 = zext i16 %225 to i32
%227 = udiv i8 %220, %221
%228 = zext i8 %227 to i32
%229 = sub nsw i32 1, %226
%230 = sub i32 %217, %14
%231 = zext i32 %217 to i64
%232 = getelementptr inbounds i8, i8* %216, i64 %231
%233 = icmp eq i32 %217, %14
%234 = zext i32 %217 to i64
%235 = getelementptr inbounds i8, i8* %216, i64 %234
%236 = getelementptr inbounds i8, i8* %235, i64 -1
%237 = add i32 %217, %210
%238 = getelementptr inbounds i8, i8* %215, i64 %234
%239 = getelementptr i8, i8* %215, i64 -1
%240 = getelementptr inbounds i8, i8* %215, i64 1
br label %241
241: ; preds = %364, %214
%242 = phi i32 [ %228, %214 ], [ %367, %364 ]
%243 = icmp eq i32 %242, 0
br i1 %243, label %251, label %244
244: ; preds = %241
%245 = load i8, i8* %232
%246 = zext i8 %245 to i32
%247 = load i8, i8* %24
%248 = zext i8 %247 to i32
%249 = mul i32 %242, %248
%250 = sub i32 %246, %249
br label %267
251: ; preds = %241
br i1 %233, label %440, label %252
252: ; preds = %251
%253 = load i8, i8* %235
%254 = zext i8 %253 to i32
%255 = shl nuw nsw i32 %254, 8
%256 = load i8, i8* %236
%257 = zext i8 %256 to i32
%258 = or i32 %255, %257
%259 = load i8, i8* %24
%260 = zext i8 %259 to i32
%261 = add nuw nsw i32 %260, 1
%262 = udiv i32 %258, %261
%263 = mul nuw nsw i32 %262, %260
%264 = sub nsw i32 %258, %263
%265 = lshr i32 %264, 8
%266 = trunc i32 %265 to i8
store i8 %266, i8* %238
br label %267
267: ; preds = %244, %252
%268 = phi i32 [ %250, %244 ], [ %264, %252 ]
%269 = phi i32 [ %242, %244 ], [ %262, %252 ]
%270 = phi i32 [ %230, %244 ], [ %237, %252 ]
%271 = shl i32 %268, 8
%272 = and i32 %271, 65280
br i1 %209, label %273, label %375
273: ; preds = %267
%274 = sext i32 %270 to i64
%275 = add i32 %270, 2
%276 = add i32 %211, %270
%277 = add i32 %14, %270
%278 = sub i32 -2, %277
%279 = getelementptr inbounds i8, i8* %216, i64 %274
%280 = getelementptr inbounds i8, i8* %240, i64 %274
br label %281
281: ; preds = %273, %368
%282 = phi i64 [ %212, %273 ], [ %288, %368 ]
%283 = phi i32 [ 0, %273 ], [ %374, %368 ]
%284 = phi i32 [ %276, %273 ], [ %373, %368 ]
%285 = phi i32 [ %272, %273 ], [ %371, %368 ]
%286 = sub i32 %276, %283
%287 = sext i32 %286 to i64
%288 = add nsw i64 %282, -1
%289 = add i32 %278, %283
%290 = getelementptr inbounds i8, i8* %279, i64 %288
%291 = load i8, i8* %290
%292 = zext i8 %291 to i32
%293 = or i32 %285, %292
%294 = getelementptr inbounds i8, i8* %1, i64 %288
%295 = load i8, i8* %294
%296 = zext i8 %295 to i32
%297 = mul i32 %269, %296
%298 = icmp ult i32 %293, %297
br i1 %298, label %304, label %299
299: ; preds = %281
%300 = sub i32 %293, %297
%301 = lshr i32 %300, 8
%302 = trunc i32 %301 to i8
%303 = getelementptr inbounds i8, i8* %280, i64 %288
store i8 %302, i8* %303
br label %368
304: ; preds = %281
%305 = trunc i64 %288 to i32
%306 = add i32 %275, %305
%307 = icmp ugt i32 %306, %217
br i1 %307, label %364, label %308
308: ; preds = %304
%309 = sext i32 %284 to i64
br label %310
310: ; preds = %308, %315
%311 = phi i64 [ %316, %315 ], [ %309, %308 ]
%312 = getelementptr inbounds i8, i8* %215, i64 %311
%313 = load i8, i8* %312
%314 = icmp eq i8 %313, 0
br i1 %314, label %315, label %319
315: ; preds = %310
%316 = add i64 %311, 1
%317 = trunc i64 %316 to i32
%318 = icmp ult i32 %217, %317
br i1 %318, label %364, label %310
319: ; preds = %310
%320 = getelementptr inbounds i8, i8* %215, i64 %311
%321 = trunc i64 %311 to i32
%322 = add i8 %313, -1
store i8 %322, i8* %320
%323 = add i64 %311, -1
%324 = icmp slt i32 %306, %321
br i1 %324, label %325, label %355
325: ; preds = %319
%326 = shl i64 %311, 32
%327 = ashr exact i64 %326, 32
%328 = add i32 %289, %321
%329 = zext i32 %328 to i64
%330 = sub nsw i64 %327, %329
%331 = getelementptr i8, i8* %239, i64 %330
%332 = add nuw nsw i64 %329, 1
%333 = add nsw i64 %327, -1
%334 = sext i32 %306 to i64
%335 = sub i64 %311, %287
%336 = xor i64 %287, -1
%337 = add nsw i64 %327, %336
%338 = and i64 %335, 7
%339 = icmp eq i64 %338, 0
br i1 %339, label %346, label %340
340: ; preds = %325, %340
%341 = phi i64 [ %343, %340 ], [ %333, %325 ]
%342 = phi i64 [ %344, %340 ], [ 0, %325 ]
%343 = add nsw i64 %341, -1
%344 = add i64 %342, 1
%345 = icmp eq i64 %344, %338
br i1 %345, label %346, label %340
346: ; preds = %340, %325
%347 = phi i64 [ %333, %325 ], [ %343, %340 ]
%348 = phi i64 [ undef, %325 ], [ %343, %340 ]
%349 = icmp ult i64 %337, 7
br i1 %349, label %355, label %350
350: ; preds = %346, %350
%351 = phi i64 [ %353, %350 ], [ %347, %346 ]
%352 = add nsw i64 %351, -7
%353 = add nsw i64 %351, -8
%354 = icmp sgt i64 %352, %334
br i1 %354, label %350, label %355
355: ; preds = %346, %350, %319
%356 = phi i64 [ %323, %319 ], [ %348, %346 ], [ %353, %350 ]
%357 = sub i32 65536, %297
%358 = add i32 %357, %293
%359 = lshr i32 %358, 8
%360 = trunc i32 %359 to i8
%361 = shl i64 %356, 32
%362 = ashr exact i64 %361, 32
%363 = getelementptr inbounds i8, i8* %215, i64 %362
store i8 %360, i8* %363
br label %368
364: ; preds = %304, %315
%365 = add i32 %229, %269
%366 = lshr i32 %365, 1
%367 = sub i32 %269, %366
br label %241
368: ; preds = %299, %355
%369 = phi i32 [ %300, %299 ], [ %358, %355 ]
%370 = shl i32 %369, 8
%371 = and i32 %370, 65280
%372 = icmp sgt i64 %282, 2
%373 = add i32 %284, -1
%374 = add nuw nsw i32 %283, 1
br i1 %372, label %281, label %375
375: ; preds = %267, %368
%376 = phi i32 [ %371, %368 ], [ %272, %267 ]
%377 = lshr exact i32 %376, 8
%378 = trunc i32 %377 to i8
%379 = sext i32 %270 to i64
%380 = getelementptr inbounds i8, i8* %215, i64 1
%381 = getelementptr inbounds i8, i8* %380, i64 %379
store i8 %378, i8* %381
%382 = ptrtoint i8* %216 to i64
%383 = trunc i64 %382 to i32
%384 = sub nsw i32 %383, %270
%385 = icmp sgt i32 %384, %270
br i1 %385, label %391, label %386
386: ; preds = %375
%387 = icmp sgt i32 %270, -1
br i1 %387, label %388, label %404
388: ; preds = %386
%389 = zext i32 %270 to i64
%390 = add nuw nsw i64 %389, 1
br label %404
391: ; preds = %375
%392 = load i8, i8* %216
%393 = zext i8 %392 to i32
%394 = icmp slt i32 %270, %393
br i1 %394, label %395, label %408
395: ; preds = %391
%396 = zext i8 %392 to i64
%397 = xor i32 %270, -1
%398 = add i32 %397, %393
%399 = zext i32 %398 to i64
%400 = sub nsw i64 %396, %399
%401 = getelementptr i8, i8* %216, i64 %400
%402 = getelementptr i8, i8* %215, i64 %400
%403 = add nuw nsw i64 %399, 1
br label %404
404: ; preds = %386, %395, %388
%405 = phi i8* [ %216, %388 ], [ %215, %395 ], [ %216, %386 ]
%406 = phi i8* [ %215, %388 ], [ %216, %395 ], [ %215, %386 ]
%407 = load i8, i8* %406
br label %408
408: ; preds = %404, %391
%409 = phi i8 [ %407, %404 ], [ %392, %391 ]
%410 = phi i8* [ %405, %404 ], [ %215, %391 ]
%411 = phi i8* [ %406, %404 ], [ %216, %391 ]
%412 = icmp eq i8 %409, 0
br i1 %412, label %424, label %413
413: ; preds = %408
%414 = zext i8 %409 to i32
br label %415
415: ; preds = %413, %421
%416 = phi i32 [ %422, %421 ], [ %414, %413 ]
%417 = zext i32 %416 to i64
%418 = getelementptr inbounds i8, i8* %411, i64 %417
%419 = load i8, i8* %418
%420 = icmp eq i8 %419, 0
br i1 %420, label %421, label %424
421: ; preds = %415
%422 = add nsw i32 %416, -1
%423 = icmp eq i32 %422, 0
br i1 %423, label %424, label %415
424: ; preds = %415, %421, %408
%425 = phi i32 [ 0, %408 ], [ 0, %421 ], [ %416, %415 ]
%426 = trunc i32 %425 to i8
store i8 %426, i8* %411
%427 = trunc i32 %270 to i8
%428 = add i8 %427, 1
store i8 %428, i8* %8
%429 = icmp slt i32 %270, 1
br i1 %429, label %433, label %430
430: ; preds = %424
%431 = zext i32 %270 to i64
%432 = add nuw i32 %270, 1
br label %433
433: ; preds = %430, %424
%434 = phi i32 [ 1, %424 ], [ %432, %430 ]
%435 = trunc i32 %269 to i8
%436 = zext i32 %434 to i64
%437 = getelementptr inbounds [256 x i8], [256 x i8]* %6, i64 0, i64 %436
store i8 %435, i8* %437
%438 = call signext i8 @LInt_Add(i8* %2, i8* %8)
%439 = icmp ult i32 %425, %14
br i1 %439, label %440, label %214
440: ; preds = %433, %251
%441 = phi i8* [ %216, %251 ], [ %411, %433 ]
%442 = phi i8* [ %215, %251 ], [ %410, %433 ]
%443 = icmp eq i8* %442, %3
br i1 %443, label %444, label %453
444: ; preds = %440, %444
%445 = phi i64 [ %449, %444 ], [ 0, %440 ]
%446 = getelementptr inbounds i8, i8* %441, i64 %445
%447 = load i8, i8* %446
%448 = getelementptr inbounds i8, i8* %3, i64 %445
store i8 %447, i8* %448
%449 = add nuw nsw i64 %445, 1
%450 = load i8, i8* %441
%451 = zext i8 %450 to i64
%452 = icmp ult i64 %445, %451
br i1 %452, label %444, label %453
453: ; preds = %19, %444, %4, %440, %196, %202
%454 = phi i8 [ 0, %202 ], [ 0, %196 ], [ 0, %440 ], [ 1, %4 ], [ 0, %444 ], [ 1, %19 ]
ret i8 %454
}