#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, int);
int main(void) {
  int sum[50];
  int num[100][50];
  char numbers[] =
      "371072875339021027987979982208375902465101357402504637693767749000971264"
      "812489697007805041701826053874324986199524741059474233309513058123726617"
      "309629919422133635741615725224305633018110724061549082502306758820753934"
      "617117198031042104751377806324667689261670696623633820136378418383684178"
      "734361726757281128798128499794080654819315926216912758898327384427422891"
      "743252032192358942287679648767027218931847451445736001306439091167216856"
      "844588711603153276703864861058430254399396198289175936656867579349516217"
      "645714185656062950215722319658675507932419333164906352462741904929101432"
      "445813822663347944758178925758677183372176619637515905792397282455988384"
      "075820356532535939900840263356894883018945862822782880181199384826282014"
      "278194139940567587151170094390353986643728271126538299872407844730531901"
      "042935868651550600629586486153207527337195919142051725582971693888707715"
      "466499115593487603532921714970056938543700705768266846246214956500764717"
      "872944383776045328265410875682844319119063469403785521777929514536123272"
      "525000296071075082563815656710885258350721458765761724109764473391106072"
      "182652368772236360451742370690585186066044820762120981328786073396941281"
      "142660418086830619328460811191061556940512689692519343254517283886419180"
      "470492932150586425630494836246722164843507620172791803994469300473295634"
      "069115732444386908125794514089057706229429197107928209550376875256787730"
      "918625407449698445083303936821261833638482533015468619612434876768129753"
      "437594651580386287592878490201521685554828717201219257766954781828337579"
      "931036147403568564490955270978647975811672632010043689784255353992093183"
      "744149780686098448403098129077791799088218795327364475675590848030870869"
      "875513927118545170785441618524243206931503325995940689575653678210707492"
      "696653767632623544721069793950679652694742597709739166693763042633987085"
      "410526847082990852113994273657341161827603150012716537860736150108085700"
      "914993951255702819874600437535829035317434717326932123578154982629742552"
      "737307949537597651053059469660676831565743771674018752758890280257173322"
      "961917666871381993181104877019027125267680276078003013678680992525463401"
      "061632866526362702185404977055856299465806362379931407462559622407448690"
      "823117497779236546625724692332281091714191430288197103288597806669760892"
      "938638285025333403344130655780161278159218150055618688364684200904702305"
      "308117281643048762379196984248725503663878458311487696932154902810424020"
      "138335124462181441773470637832994906362596664985876182212252255124867645"
      "336772018697169854431241957240991395900895231005882295548255300263520781"
      "532296796249481641953868218774760853271322857231104248034561248676970645"
      "079952363777424253541129168427686553892620502491032657296723701913275725"
      "675285653248258265463092207058596522297988602722583319131263751473419948"
      "895347657455011849570145487928898485682772607771372140379887971538298203"
      "783031473527721580348144513491373226651381348295438291999181802789165224"
      "310273922511228695394095795306640523263253804410005965493915987959363529"
      "746152185502371307642255121183693803580388584903416981162220729771861582"
      "366784246891579935329619226246795719440126904387710727504810239089552359"
      "745723189706772547915061505504953922979530901129967519861880882258753145"
      "295840992512038290094077707756721130673970830472448381653387350234084564"
      "705807730882959174767140363198008187129011875491310547126581976233310448"
      "183862695154563349263665728975634005004284628018351707052783183942588214"
      "552122725125032755121603546981200581762165212827652751691296897789322381"
      "957343293399464375019078369457658833523998867550616496518477518073816883"
      "786109152735792970133762177842752192623401942399639168044983993173312731"
      "329241857071473495669166746876346609150359146775049951867143023521962889"
      "489010242332511691361962662273267460800591547471830798392868535206946944"
      "540724768418225246744171615140364279822733480555562148189714261791034259"
      "864720451689398942217982608807685287783646182799346313767754307809363333"
      "018982642090108488025216746708832151201858835432238128769527867132961247"
      "478246453863699300904931036361976387803962184073572399794223406235393808"
      "339651327408011116666278919814880877979418768761442300309844908514116066"
      "182629368283676474477923918033511098906979071485786944089552990653640447"
      "425576083659976645795096660243964099053896071201982199760475994901972302"
      "976491398268003297315603712004137790378556608508925216730939319872750275"
      "468906903707539413042652315011948093772450487951509541009216458637547105"
      "984367917863916702118749243199570064191796977759902830069915368713711936"
      "614952811305876380278410754449733078407899231155355625611423224232550336"
      "854424889173534488991150144064802036906806396067232219320414953541503128"
      "880339536053299340368006977710650566631954812348806732101467390585685579"
      "345814036278227032808261657077394832759223284594170652509451232523060822"
      "918802058777319719839450180888072429661980811197771585425020165450904132"
      "458097868827789487218596177210783843506918615543566288406225747369228450"
      "951620849603980134001723930671666823555245252804609722535035342264725242"
      "50874054075591789781264330331690";
  int count, count2;
  for (count = 0; count < 100; count++)
    for (count2 = 0; count2 < 50; count2++)
      num[count][count2] = numbers[50 * count + count2] - 48;
  int count3;
  for (count3 = 0; count3 < 50; count3++)
    sum[count3] = 0;
  int carry = 0, tempSum = 0;
  for (count2 = 49; count2 >= 0; count2--) {
    tempSum = tempSum + carry;
    for (count = 0; count < 100; count++)
      tempSum += num[count][count2];
    sum[count2] = tempSum % 10;
    if (count2 == 0)
      sum[count2] = tempSum;
    carry = tempSum / 10;
    tempSum = 0;
  }
  for (count2 = 0; count2 < 50; count2++)
    printf("%i", sum[count2]);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x62a0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x6280(%rbp),%rdi
lea    0xec0(%rip),%rsi
mov    $0x1389,%edx
call   1040 <memcpy@plt>
movl   $0x0,-0x6284(%rbp)
cmpl   $0x64,-0x6284(%rbp)
jge    11e1 <main+0xc1>
movl   $0x0,-0x6288(%rbp)
cmpl   $0x32,-0x6288(%rbp)
jge    11c8 <main+0xa8>
imul   $0x32,-0x6284(%rbp),%eax
add    -0x6288(%rbp),%eax
cltq
movsbl -0x6280(%rbp,%rax,1),%edx
ff
sub    $0x30,%edx
movslq -0x6284(%rbp),%rcx
lea    -0x4ef0(%rbp),%rax
imul   $0xc8,%rcx,%rcx
add    %rcx,%rax
movslq -0x6288(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x6288(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6288(%rbp)
jmp    116b <main+0x4b>
jmp    11cd <main+0xad>
mov    -0x6284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6284(%rbp)
jmp    1154 <main+0x34>
movl   $0x0,-0x628c(%rbp)
cmpl   $0x32,-0x628c(%rbp)
jge    121e <main+0xfe>
movslq -0x628c(%rbp),%rax
movl   $0x0,-0xd0(%rbp,%rax,4)
mov    -0x628c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x628c(%rbp)
jmp    11eb <main+0xcb>
movl   $0x0,-0x6290(%rbp)
movl   $0x0,-0x6294(%rbp)
movl   $0x31,-0x6288(%rbp)
cmpl   $0x0,-0x6288(%rbp)
jl     1323 <main+0x203>
mov    -0x6294(%rbp),%eax
add    -0x6290(%rbp),%eax
mov    %eax,-0x6294(%rbp)
movl   $0x0,-0x6284(%rbp)
cmpl   $0x64,-0x6284(%rbp)
jge    12b4 <main+0x194>
movslq -0x6284(%rbp),%rcx
lea    -0x4ef0(%rbp),%rax
imul   $0xc8,%rcx,%rcx
add    %rcx,%rax
movslq -0x6288(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
add    -0x6294(%rbp),%eax
mov    %eax,-0x6294(%rbp)
mov    -0x6284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6284(%rbp)
jmp    1265 <main+0x145>
mov    -0x6294(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq -0x6288(%rbp),%rax
mov    %edx,-0xd0(%rbp,%rax,4)
cmpl   $0x0,-0x6288(%rbp)
jne    12f1 <main+0x1d1>
mov    -0x6294(%rbp),%ecx
movslq -0x6288(%rbp),%rax
mov    %ecx,-0xd0(%rbp,%rax,4)
mov    -0x6294(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x6290(%rbp)
movl   $0x0,-0x6294(%rbp)
mov    -0x6288(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x6288(%rbp)
jmp    123c <main+0x11c>
movl   $0x0,-0x6288(%rbp)
cmpl   $0x32,-0x6288(%rbp)
jge    1368 <main+0x248>
movslq -0x6288(%rbp),%rax
mov    -0xd0(%rbp,%rax,4),%esi
lea    0x203a(%rip),%rdi
call   1030 <printf@plt>
mov    -0x6288(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6288(%rbp)
jmp    132d <main+0x20d>
xor    %eax,%eax
add    $0x62a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x4ef8,%rsp
mov    $0x31,%eax
lea    0xeea(%rip),%rcx
movdqa 0xed2(%rip),%xmm0
xchg   %ax,%ax
movd   -0x31(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xc(%rsp,%rax,4)
movd   -0x2d(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1c(%rsp,%rax,4)
movd   -0x29(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x2c(%rsp,%rax,4)
movd   -0x25(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x3c(%rsp,%rax,4)
movd   -0x21(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x4c(%rsp,%rax,4)
movd   -0x1d(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x5c(%rsp,%rax,4)
movd   -0x19(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x6c(%rsp,%rax,4)
movd   -0x15(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x7c(%rsp,%rax,4)
movd   -0x11(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x8c(%rsp,%rax,4)
movd   -0xd(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x9c(%rsp,%rax,4)
movd   -0x9(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xac(%rsp,%rax,4)
movd   -0x5(%rax,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xbc(%rsp,%rax,4)
movsbl -0x1(%rax,%rcx,1),%edx
add    $0xffffffd0,%edx
mov    %edx,0xcc(%rsp,%rax,4)
movsbl (%rax,%rcx,1),%edx
add    $0xffffffd0,%edx
mov    %edx,0xd0(%rsp,%rax,4)
add    $0x32,%rax
cmp    $0x13b9,%rax
jne    1130 <main+0x20>
pxor   %xmm0,%xmm0
movdqa %xmm0,0xb0(%rsp)
movdqa %xmm0,0xa0(%rsp)
movdqa %xmm0,0x90(%rsp)
movdqa %xmm0,0x80(%rsp)
movdqa %xmm0,0x70(%rsp)
movdqa %xmm0,0x60(%rsp)
movdqa %xmm0,0x50(%rsp)
movdqa %xmm0,0x40(%rsp)
movdqa %xmm0,0x30(%rsp)
movdqa %xmm0,0x20(%rsp)
movdqa %xmm0,0x10(%rsp)
movdqa %xmm0,(%rsp)
movq   $0x0,0xc0(%rsp)
xor    %edx,%edx
mov    $0x31,%ecx
lea    0xd0(%rsp),%rax
nopw   0x0(%rax,%rax,1)
movd   %edx,%xmm0
mov    $0x31c,%edx
nopl   0x0(%rax)
movd   (%rax,%rdx,1),%xmm1
movd   -0xc8(%rax,%rdx,1),%xmm2
ff ff
punpckldq %xmm1,%xmm2
movd   -0x190(%rax,%rdx,1),%xmm1
ff ff
movd   -0x258(%rax,%rdx,1),%xmm3
ff ff
punpckldq %xmm1,%xmm3
punpcklqdq %xmm2,%xmm3
paddd  %xmm3,%xmm0
add    $0x320,%rdx
cmp    $0x513c,%rdx
jne    1350 <main+0x240>
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%edx
movslq %edx,%rsi
imul   $0x66666667,%rsi,%rdx
mov    %rdx,%rdi
shr    $0x3f,%rdi
sar    $0x22,%rdx
add    %edi,%edx
lea    (%rdx,%rdx,1),%edi
lea    (%rdi,%rdi,4),%edi
mov    %esi,%ebx
sub    %edi,%ebx
mov    %rcx,%rdi
sub    $0x1,%rdi
cmovb  %esi,%ebx
mov    %ebx,(%rsp,%rcx,4)
add    $0xfffffffffffffffc,%rax
test   %rcx,%rcx
mov    %rdi,%rcx
jne    1340 <main+0x230>
xor    %ebx,%ebx
lea    0x1fac(%rip),%r14
nopl   (%rax)
mov    (%rsp,%rbx,4),%esi
mov    %r14,%rdi
call   1030 <printf@plt>
add    $0x1,%rbx
cmp    $0x32,%rbx
jne    13f0 <main+0x2e0>
xor    %eax,%eax
add    $0x4ef8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@__const.main.numbers = [5001 x i8] c"37107287533902102798797998220837590246510135740250463769376774900097126481248969700780504170182605387432498619952474105947423330951305812372661730962991942213363574161572522430563301811072406154908250230675882075393461711719803104210475137780632466768926167069662363382013637841838368417873436172675728112879812849979408065481931592621691275889832738442742289174325203219235894228767964876702721893184745144573600130643909116721685684458871160315327670386486105843025439939619828917593665686757934951621764571418565606295021572231965867550793241933316490635246274190492910143244581382266334794475817892575867718337217661963751590579239728245598838407582035653253593990084026335689488301894586282278288018119938482628201427819413994056758715117009439035398664372827112653829987240784473053190104293586865155060062958648615320752733719591914205172558297169388870771546649911559348760353292171497005693854370070576826684624621495650076471787294438377604532826541087568284431911906346940378552177792951453612327252500029607107508256381565671088525835072145876576172410976447339110607218265236877223636045174237069058518606604482076212098132878607339694128114266041808683061932846081119106155694051268969251934325451728388641918047049293215058642563049483624672216484350762017279180399446930047329563406911573244438690812579451408905770622942919710792820955037687525678773091862540744969844508330393682126183363848253301546861961243487676812975343759465158038628759287849020152168555482871720121925776695478182833757993103614740356856449095527097864797581167263201004368978425535399209318374414978068609844840309812907779179908821879532736447567559084803087086987551392711854517078544161852424320693150332599594068957565367821070749269665376763262354472106979395067965269474259770973916669376304263398708541052684708299085211399427365734116182760315001271653786073615010808570091499395125570281987460043753582903531743471732693212357815498262974255273730794953759765105305946966067683156574377167401875275889028025717332296191766687138199318110487701902712526768027607800301367868099252546340106163286652636270218540497705585629946580636237993140746255962240744869082311749777923654662572469233228109171419143028819710328859780666976089293863828502533340334413065578016127815921815005561868836468420090470230530811728164304876237919698424872550366387845831148769693215490281042402013833512446218144177347063783299490636259666498587618221225225512486764533677201869716985443124195724099139590089523100588229554825530026352078153229679624948164195386821877476085327132285723110424803456124867697064507995236377742425354112916842768655389262050249103265729672370191327572567528565324825826546309220705859652229798860272258331913126375147341994889534765745501184957014548792889848568277260777137214037988797153829820378303147352772158034814451349137322665138134829543829199918180278916522431027392251122869539409579530664052326325380441000596549391598795936352974615218550237130764225512118369380358038858490341698116222072977186158236678424689157993532961922624679571944012690438771072750481023908955235974572318970677254791506150550495392297953090112996751986188088225875314529584099251203829009407770775672113067397083047244838165338735023408456470580773088295917476714036319800818712901187549131054712658197623331044818386269515456334926366572897563400500428462801835170705278318394258821455212272512503275512160354698120058176216521282765275169129689778932238195734329339946437501907836945765883352399886755061649651847751807381688378610915273579297013376217784275219262340194239963916804498399317331273132924185707147349566916674687634660915035914677504995186714302352196288948901024233251169136196266227326746080059154747183079839286853520694694454072476841822524674417161514036427982273348055556214818971426179103425986472045168939894221798260880768528778364618279934631376775430780936333301898264209010848802521674670883215120185883543223812876952786713296124747824645386369930090493103636197638780396218407357239979422340623539380833965132740801111666627891981488087797941876876144230030984490851411606618262936828367647447792391803351109890697907148578694408955299065364044742557608365997664579509666024396409905389607120198219976047599490197230297649139826800329731560371200413779037855660850892521673093931987275027546890690370753941304265231501194809377245048795150954100921645863754710598436791786391670211874924319957006419179697775990283006991536871371193661495281130587638027841075444973307840789923115535562561142322423255033685442488917353448899115014406480203690680639606723221932041495354150312888033953605329934036800697771065056663195481234880673210146739058568557934581403627822703280826165707739483275922328459417065250945123252306082291880205877731971983945018088807242966198081119777158542502016545090413245809786882778948721859617721078384350691861554356628840622574736922845095162084960398013400172393067166682355524525280460972253503534226472524250874054075591789781264330331690\00"
@.str = [3 x i8] c"%i\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [50 x i32]
%3 = alloca [100 x [50 x i32]]
%4 = alloca [5001 x i8]
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i32 0, i32* %1
%10 = bitcast [5001 x i8]* %4 to i8*
store i32 0, i32* %5
br label %11
11: ; preds = %38, %0
%12 = load i32, i32* %5
%13 = icmp slt i32 %12, 100
br i1 %13, label %14, label %41
14: ; preds = %11
store i32 0, i32* %6
br label %15
15: ; preds = %34, %14
%16 = load i32, i32* %6
%17 = icmp slt i32 %16, 50
br i1 %17, label %18, label %37
18: ; preds = %15
%19 = load i32, i32* %5
%20 = mul nsw i32 50, %19
%21 = load i32, i32* %6
%22 = add nsw i32 %20, %21
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [5001 x i8], [5001 x i8]* %4, i64 0, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = sub nsw i32 %26, 48
%28 = load i32, i32* %5
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %29
%31 = load i32, i32* %6
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds [50 x i32], [50 x i32]* %30, i64 0, i64 %32
store i32 %27, i32* %33
br label %34
34: ; preds = %18
%35 = load i32, i32* %6
%36 = add nsw i32 %35, 1
store i32 %36, i32* %6
br label %15
37: ; preds = %15
br label %38
38: ; preds = %37
%39 = load i32, i32* %5
%40 = add nsw i32 %39, 1
store i32 %40, i32* %5
br label %11
41: ; preds = %11
store i32 0, i32* %7
br label %42
42: ; preds = %49, %41
%43 = load i32, i32* %7
%44 = icmp slt i32 %43, 50
br i1 %44, label %45, label %52
45: ; preds = %42
%46 = load i32, i32* %7
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %47
store i32 0, i32* %48
br label %49
49: ; preds = %45
%50 = load i32, i32* %7
%51 = add nsw i32 %50, 1
store i32 %51, i32* %7
br label %42
52: ; preds = %42
store i32 0, i32* %8
store i32 0, i32* %9
store i32 49, i32* %6
br label %53
53: ; preds = %92, %52
%54 = load i32, i32* %6
%55 = icmp sge i32 %54, 0
br i1 %55, label %56, label %95
56: ; preds = %53
%57 = load i32, i32* %9
%58 = load i32, i32* %8
%59 = add nsw i32 %57, %58
store i32 %59, i32* %9
store i32 0, i32* %5
br label %60
60: ; preds = %73, %56
%61 = load i32, i32* %5
%62 = icmp slt i32 %61, 100
br i1 %62, label %63, label %76
63: ; preds = %60
%64 = load i32, i32* %5
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %65
%67 = load i32, i32* %6
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [50 x i32], [50 x i32]* %66, i64 0, i64 %68
%70 = load i32, i32* %69
%71 = load i32, i32* %9
%72 = add nsw i32 %71, %70
store i32 %72, i32* %9
br label %73
73: ; preds = %63
%74 = load i32, i32* %5
%75 = add nsw i32 %74, 1
store i32 %75, i32* %5
br label %60
76: ; preds = %60
%77 = load i32, i32* %9
%78 = srem i32 %77, 10
%79 = load i32, i32* %6
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %80
store i32 %78, i32* %81
%82 = load i32, i32* %6
%83 = icmp eq i32 %82, 0
br i1 %83, label %84, label %89
84: ; preds = %76
%85 = load i32, i32* %9
%86 = load i32, i32* %6
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %87
store i32 %85, i32* %88
br label %89
89: ; preds = %84, %76
%90 = load i32, i32* %9
%91 = sdiv i32 %90, 10
store i32 %91, i32* %8
store i32 0, i32* %9
br label %92
92: ; preds = %89
%93 = load i32, i32* %6
%94 = add nsw i32 %93, -1
store i32 %94, i32* %6
br label %53
95: ; preds = %53
store i32 0, i32* %6
br label %96
96: ; preds = %105, %95
%97 = load i32, i32* %6
%98 = icmp slt i32 %97, 50
br i1 %98, label %99, label %108
99: ; preds = %96
%100 = load i32, i32* %6
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds [50 x i32], [50 x i32]* %2, i64 0, i64 %101
%103 = load i32, i32* %102
%104 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %103)
br label %105
105: ; preds = %99
%106 = load i32, i32* %6
%107 = add nsw i32 %106, 1
store i32 %107, i32* %6
br label %96
108: ; preds = %96
ret i32 0
}

LLVM IR (-O2):
@__const.main.numbers = [5001 x i8] c"37107287533902102798797998220837590246510135740250463769376774900097126481248969700780504170182605387432498619952474105947423330951305812372661730962991942213363574161572522430563301811072406154908250230675882075393461711719803104210475137780632466768926167069662363382013637841838368417873436172675728112879812849979408065481931592621691275889832738442742289174325203219235894228767964876702721893184745144573600130643909116721685684458871160315327670386486105843025439939619828917593665686757934951621764571418565606295021572231965867550793241933316490635246274190492910143244581382266334794475817892575867718337217661963751590579239728245598838407582035653253593990084026335689488301894586282278288018119938482628201427819413994056758715117009439035398664372827112653829987240784473053190104293586865155060062958648615320752733719591914205172558297169388870771546649911559348760353292171497005693854370070576826684624621495650076471787294438377604532826541087568284431911906346940378552177792951453612327252500029607107508256381565671088525835072145876576172410976447339110607218265236877223636045174237069058518606604482076212098132878607339694128114266041808683061932846081119106155694051268969251934325451728388641918047049293215058642563049483624672216484350762017279180399446930047329563406911573244438690812579451408905770622942919710792820955037687525678773091862540744969844508330393682126183363848253301546861961243487676812975343759465158038628759287849020152168555482871720121925776695478182833757993103614740356856449095527097864797581167263201004368978425535399209318374414978068609844840309812907779179908821879532736447567559084803087086987551392711854517078544161852424320693150332599594068957565367821070749269665376763262354472106979395067965269474259770973916669376304263398708541052684708299085211399427365734116182760315001271653786073615010808570091499395125570281987460043753582903531743471732693212357815498262974255273730794953759765105305946966067683156574377167401875275889028025717332296191766687138199318110487701902712526768027607800301367868099252546340106163286652636270218540497705585629946580636237993140746255962240744869082311749777923654662572469233228109171419143028819710328859780666976089293863828502533340334413065578016127815921815005561868836468420090470230530811728164304876237919698424872550366387845831148769693215490281042402013833512446218144177347063783299490636259666498587618221225225512486764533677201869716985443124195724099139590089523100588229554825530026352078153229679624948164195386821877476085327132285723110424803456124867697064507995236377742425354112916842768655389262050249103265729672370191327572567528565324825826546309220705859652229798860272258331913126375147341994889534765745501184957014548792889848568277260777137214037988797153829820378303147352772158034814451349137322665138134829543829199918180278916522431027392251122869539409579530664052326325380441000596549391598795936352974615218550237130764225512118369380358038858490341698116222072977186158236678424689157993532961922624679571944012690438771072750481023908955235974572318970677254791506150550495392297953090112996751986188088225875314529584099251203829009407770775672113067397083047244838165338735023408456470580773088295917476714036319800818712901187549131054712658197623331044818386269515456334926366572897563400500428462801835170705278318394258821455212272512503275512160354698120058176216521282765275169129689778932238195734329339946437501907836945765883352399886755061649651847751807381688378610915273579297013376217784275219262340194239963916804498399317331273132924185707147349566916674687634660915035914677504995186714302352196288948901024233251169136196266227326746080059154747183079839286853520694694454072476841822524674417161514036427982273348055556214818971426179103425986472045168939894221798260880768528778364618279934631376775430780936333301898264209010848802521674670883215120185883543223812876952786713296124747824645386369930090493103636197638780396218407357239979422340623539380833965132740801111666627891981488087797941876876144230030984490851411606618262936828367647447792391803351109890697907148578694408955299065364044742557608365997664579509666024396409905389607120198219976047599490197230297649139826800329731560371200413779037855660850892521673093931987275027546890690370753941304265231501194809377245048795150954100921645863754710598436791786391670211874924319957006419179697775990283006991536871371193661495281130587638027841075444973307840789923115535562561142322423255033685442488917353448899115014406480203690680639606723221932041495354150312888033953605329934036800697771065056663195481234880673210146739058568557934581403627822703280826165707739483275922328459417065250945123252306082291880205877731971983945018088807242966198081119777158542502016545090413245809786882778948721859617721078384350691861554356628840622574736922845095162084960398013400172393067166682355524525280460972253503534226472524250874054075591789781264330331690\00"
@.str = [3 x i8] c"%i\00"
define i32 @main() {
%1 = alloca [50 x i32]
%2 = bitcast [50 x i32]* %1 to i8*
%3 = alloca [100 x [50 x i32]]
%4 = bitcast [100 x [50 x i32]]* %3 to i8*
br label %5
5: ; preds = %0, %5
%6 = phi i64 [ 0, %0 ], [ %115, %5 ]
%7 = mul nuw nsw i64 %6, 50
%8 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %7
%9 = bitcast i8* %8 to <4 x i8>*
%10 = load <4 x i8>, <4 x i8>* %9
%11 = sext <4 x i8> %10 to <4 x i32>
%12 = add nsw <4 x i32> %11, <i32 -48, i32 -48, i32 -48, i32 -48>
%13 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 0
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> %12, <4 x i32>* %14
%15 = add nuw nsw i64 %7, 4
%16 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %15
%17 = bitcast i8* %16 to <4 x i8>*
%18 = load <4 x i8>, <4 x i8>* %17
%19 = sext <4 x i8> %18 to <4 x i32>
%20 = add nsw <4 x i32> %19, <i32 -48, i32 -48, i32 -48, i32 -48>
%21 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 4
%22 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> %20, <4 x i32>* %22
%23 = add nuw nsw i64 %7, 8
%24 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %23
%25 = bitcast i8* %24 to <4 x i8>*
%26 = load <4 x i8>, <4 x i8>* %25
%27 = sext <4 x i8> %26 to <4 x i32>
%28 = add nsw <4 x i32> %27, <i32 -48, i32 -48, i32 -48, i32 -48>
%29 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 8
%30 = bitcast i32* %29 to <4 x i32>*
store <4 x i32> %28, <4 x i32>* %30
%31 = add nuw nsw i64 %7, 12
%32 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %31
%33 = bitcast i8* %32 to <4 x i8>*
%34 = load <4 x i8>, <4 x i8>* %33
%35 = sext <4 x i8> %34 to <4 x i32>
%36 = add nsw <4 x i32> %35, <i32 -48, i32 -48, i32 -48, i32 -48>
%37 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 12
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> %36, <4 x i32>* %38
%39 = add nuw nsw i64 %7, 16
%40 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %39
%41 = bitcast i8* %40 to <4 x i8>*
%42 = load <4 x i8>, <4 x i8>* %41
%43 = sext <4 x i8> %42 to <4 x i32>
%44 = add nsw <4 x i32> %43, <i32 -48, i32 -48, i32 -48, i32 -48>
%45 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 16
%46 = bitcast i32* %45 to <4 x i32>*
store <4 x i32> %44, <4 x i32>* %46
%47 = add nuw nsw i64 %7, 20
%48 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %47
%49 = bitcast i8* %48 to <4 x i8>*
%50 = load <4 x i8>, <4 x i8>* %49
%51 = sext <4 x i8> %50 to <4 x i32>
%52 = add nsw <4 x i32> %51, <i32 -48, i32 -48, i32 -48, i32 -48>
%53 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 20
%54 = bitcast i32* %53 to <4 x i32>*
store <4 x i32> %52, <4 x i32>* %54
%55 = add nuw nsw i64 %7, 24
%56 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %55
%57 = bitcast i8* %56 to <4 x i8>*
%58 = load <4 x i8>, <4 x i8>* %57
%59 = sext <4 x i8> %58 to <4 x i32>
%60 = add nsw <4 x i32> %59, <i32 -48, i32 -48, i32 -48, i32 -48>
%61 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 24
%62 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> %60, <4 x i32>* %62
%63 = add nuw nsw i64 %7, 28
%64 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %63
%65 = bitcast i8* %64 to <4 x i8>*
%66 = load <4 x i8>, <4 x i8>* %65
%67 = sext <4 x i8> %66 to <4 x i32>
%68 = add nsw <4 x i32> %67, <i32 -48, i32 -48, i32 -48, i32 -48>
%69 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 28
%70 = bitcast i32* %69 to <4 x i32>*
store <4 x i32> %68, <4 x i32>* %70
%71 = add nuw nsw i64 %7, 32
%72 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %71
%73 = bitcast i8* %72 to <4 x i8>*
%74 = load <4 x i8>, <4 x i8>* %73
%75 = sext <4 x i8> %74 to <4 x i32>
%76 = add nsw <4 x i32> %75, <i32 -48, i32 -48, i32 -48, i32 -48>
%77 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 32
%78 = bitcast i32* %77 to <4 x i32>*
store <4 x i32> %76, <4 x i32>* %78
%79 = add nuw nsw i64 %7, 36
%80 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %79
%81 = bitcast i8* %80 to <4 x i8>*
%82 = load <4 x i8>, <4 x i8>* %81
%83 = sext <4 x i8> %82 to <4 x i32>
%84 = add nsw <4 x i32> %83, <i32 -48, i32 -48, i32 -48, i32 -48>
%85 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 36
%86 = bitcast i32* %85 to <4 x i32>*
store <4 x i32> %84, <4 x i32>* %86
%87 = add nuw nsw i64 %7, 40
%88 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %87
%89 = bitcast i8* %88 to <4 x i8>*
%90 = load <4 x i8>, <4 x i8>* %89
%91 = sext <4 x i8> %90 to <4 x i32>
%92 = add nsw <4 x i32> %91, <i32 -48, i32 -48, i32 -48, i32 -48>
%93 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 40
%94 = bitcast i32* %93 to <4 x i32>*
store <4 x i32> %92, <4 x i32>* %94
%95 = add nuw nsw i64 %7, 44
%96 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %95
%97 = bitcast i8* %96 to <4 x i8>*
%98 = load <4 x i8>, <4 x i8>* %97
%99 = sext <4 x i8> %98 to <4 x i32>
%100 = add nsw <4 x i32> %99, <i32 -48, i32 -48, i32 -48, i32 -48>
%101 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 44
%102 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> %100, <4 x i32>* %102
%103 = add nuw nsw i64 %7, 48
%104 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %103
%105 = load i8, i8* %104
%106 = sext i8 %105 to i32
%107 = add nsw i32 %106, -48
%108 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 48
store i32 %107, i32* %108
%109 = add nuw nsw i64 %7, 49
%110 = getelementptr inbounds [5001 x i8], [5001 x i8]* @__const.main.numbers, i64 0, i64 %109
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = add nsw i32 %112, -48
%114 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %6, i64 49
store i32 %113, i32* %114
%115 = add nuw nsw i64 %6, 1
%116 = icmp eq i64 %115, 100
br i1 %116, label %117, label %5
117: ; preds = %5
br label %118
118: ; preds = %143, %117
%119 = phi i64 [ 49, %117 ], [ %150, %143 ]
%120 = phi i32 [ 0, %117 ], [ %149, %143 ]
%121 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %120, i64 0
br label %122
122: ; preds = %122, %118
%123 = phi i64 [ 0, %118 ], [ %141, %122 ]
%124 = phi <4 x i32> [ %121, %118 ], [ %140, %122 ]
%125 = or i64 %123, 1
%126 = or i64 %123, 2
%127 = or i64 %123, 3
%128 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %123, i64 %119
%129 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %125, i64 %119
%130 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %126, i64 %119
%131 = getelementptr inbounds [100 x [50 x i32]], [100 x [50 x i32]]* %3, i64 0, i64 %127, i64 %119
%132 = load i32, i32* %128
%133 = load i32, i32* %129
%134 = load i32, i32* %130
%135 = load i32, i32* %131
%136 = insertelement <4 x i32> poison, i32 %132, i64 0
%137 = insertelement <4 x i32> %136, i32 %133, i64 1
%138 = insertelement <4 x i32> %137, i32 %134, i64 2
%139 = insertelement <4 x i32> %138, i32 %135, i64 3
%140 = add <4 x i32> %139, %124
%141 = add nuw i64 %123, 4
%142 = icmp eq i64 %141, 100
br i1 %142, label %143, label %122
143: ; preds = %122
%144 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %140)
%145 = srem i32 %144, 10
%146 = getelementptr inbounds [50 x i32], [50 x i32]* %1, i64 0, i64 %119
%147 = icmp eq i64 %119, 0
%148 = select i1 %147, i32 %144, i32 %145
store i32 %148, i32* %146
%149 = sdiv i32 %144, 10
%150 = add nsw i64 %119, -1
%151 = icmp eq i64 %119, 0
br i1 %151, label %152, label %118
152: ; preds = %143, %152
%153 = phi i64 [ %157, %152 ], [ 0, %143 ]
%154 = getelementptr inbounds [50 x i32], [50 x i32]* %1, i64 0, i64 %153
%155 = load i32, i32* %154
%156 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %155)
%157 = add nuw nsw i64 %153, 1
%158 = icmp eq i64 %157, 50
br i1 %158, label %159, label %152
159: ; preds = %152
ret i32 0
}