From b965c2c143ba1266f8027d7109bd8fe311a91812 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Mon, 15 Mar 2021 12:30:45 +0900 Subject: [PATCH] reduced base.ll --- src/base32.ll | 68204 ++++++++++++------------------------------------ src/base64.ll | 19538 +++++--------- 2 files changed, 23262 insertions(+), 64480 deletions(-) diff --git a/src/base32.ll b/src/base32.ll index 1cfbbe8..fb4ff4e 100644 --- a/src/base32.ll +++ b/src/base32.ll @@ -124,29 +124,29 @@ define void @mcl_fpDbl_mod_NIST_P192L(i32* noalias %r1, i32* noalias %r2, i32* %r102 = trunc i256 %r101 to i1 %r103 = select i1 %r102, i256 %r97, i256 %r100 %r104 = trunc i256 %r103 to i192 -%r105 = trunc i192 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 0 -store i32 %r105, i32* %r107 +%r106 = getelementptr i32, i32* %r1, i32 0 +%r107 = trunc i192 %r104 to i32 +store i32 %r107, i32* %r106 %r108 = lshr i192 %r104, 32 -%r109 = trunc i192 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 1 -store i32 %r109, i32* %r111 +%r110 = getelementptr i32, i32* %r1, i32 1 +%r111 = trunc i192 %r108 to i32 +store i32 %r111, i32* %r110 %r112 = lshr i192 %r108, 32 -%r113 = trunc i192 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 2 -store i32 %r113, i32* %r115 +%r114 = getelementptr i32, i32* %r1, i32 2 +%r115 = trunc i192 %r112 to i32 +store i32 %r115, i32* %r114 %r116 = lshr i192 %r112, 32 -%r117 = trunc i192 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 3 -store i32 %r117, i32* %r119 +%r118 = getelementptr i32, i32* %r1, i32 3 +%r119 = trunc i192 %r116 to i32 +store i32 %r119, i32* %r118 %r120 = lshr i192 %r116, 32 -%r121 = trunc i192 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 4 -store i32 %r121, i32* %r123 +%r122 = getelementptr i32, i32* %r1, i32 4 +%r123 = trunc i192 %r120 to i32 +store i32 %r123, i32* %r122 %r124 = lshr i192 %r120, 32 -%r125 = trunc i192 %r124 to i32 -%r127 = getelementptr i32, i32* %r1, i32 5 -store i32 %r125, i32* %r127 +%r126 = getelementptr i32, i32* %r1, i32 5 +%r127 = trunc i192 %r124 to i32 +store i32 %r127, i32* %r126 ret void } define void @mcl_fp_sqr_NIST_P192L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) @@ -457,550 +457,569 @@ store i32 0, i32* %r339 store i32 0, i32* %r342 ret void nonzero: -%r343 = trunc i544 %r239 to i32 -%r345 = getelementptr i32, i32* %r1, i32 0 -store i32 %r343, i32* %r345 +%r344 = getelementptr i32, i32* %r1, i32 0 +%r345 = trunc i544 %r239 to i32 +store i32 %r345, i32* %r344 %r346 = lshr i544 %r239, 32 -%r347 = trunc i544 %r346 to i32 -%r349 = getelementptr i32, i32* %r1, i32 1 -store i32 %r347, i32* %r349 +%r348 = getelementptr i32, i32* %r1, i32 1 +%r349 = trunc i544 %r346 to i32 +store i32 %r349, i32* %r348 %r350 = lshr i544 %r346, 32 -%r351 = trunc i544 %r350 to i32 -%r353 = getelementptr i32, i32* %r1, i32 2 -store i32 %r351, i32* %r353 +%r352 = getelementptr i32, i32* %r1, i32 2 +%r353 = trunc i544 %r350 to i32 +store i32 %r353, i32* %r352 %r354 = lshr i544 %r350, 32 -%r355 = trunc i544 %r354 to i32 -%r357 = getelementptr i32, i32* %r1, i32 3 -store i32 %r355, i32* %r357 +%r356 = getelementptr i32, i32* %r1, i32 3 +%r357 = trunc i544 %r354 to i32 +store i32 %r357, i32* %r356 %r358 = lshr i544 %r354, 32 -%r359 = trunc i544 %r358 to i32 -%r361 = getelementptr i32, i32* %r1, i32 4 -store i32 %r359, i32* %r361 +%r360 = getelementptr i32, i32* %r1, i32 4 +%r361 = trunc i544 %r358 to i32 +store i32 %r361, i32* %r360 %r362 = lshr i544 %r358, 32 -%r363 = trunc i544 %r362 to i32 -%r365 = getelementptr i32, i32* %r1, i32 5 -store i32 %r363, i32* %r365 +%r364 = getelementptr i32, i32* %r1, i32 5 +%r365 = trunc i544 %r362 to i32 +store i32 %r365, i32* %r364 %r366 = lshr i544 %r362, 32 -%r367 = trunc i544 %r366 to i32 -%r369 = getelementptr i32, i32* %r1, i32 6 -store i32 %r367, i32* %r369 +%r368 = getelementptr i32, i32* %r1, i32 6 +%r369 = trunc i544 %r366 to i32 +store i32 %r369, i32* %r368 %r370 = lshr i544 %r366, 32 -%r371 = trunc i544 %r370 to i32 -%r373 = getelementptr i32, i32* %r1, i32 7 -store i32 %r371, i32* %r373 +%r372 = getelementptr i32, i32* %r1, i32 7 +%r373 = trunc i544 %r370 to i32 +store i32 %r373, i32* %r372 %r374 = lshr i544 %r370, 32 -%r375 = trunc i544 %r374 to i32 -%r377 = getelementptr i32, i32* %r1, i32 8 -store i32 %r375, i32* %r377 +%r376 = getelementptr i32, i32* %r1, i32 8 +%r377 = trunc i544 %r374 to i32 +store i32 %r377, i32* %r376 %r378 = lshr i544 %r374, 32 -%r379 = trunc i544 %r378 to i32 -%r381 = getelementptr i32, i32* %r1, i32 9 -store i32 %r379, i32* %r381 +%r380 = getelementptr i32, i32* %r1, i32 9 +%r381 = trunc i544 %r378 to i32 +store i32 %r381, i32* %r380 %r382 = lshr i544 %r378, 32 -%r383 = trunc i544 %r382 to i32 -%r385 = getelementptr i32, i32* %r1, i32 10 -store i32 %r383, i32* %r385 +%r384 = getelementptr i32, i32* %r1, i32 10 +%r385 = trunc i544 %r382 to i32 +store i32 %r385, i32* %r384 %r386 = lshr i544 %r382, 32 -%r387 = trunc i544 %r386 to i32 -%r389 = getelementptr i32, i32* %r1, i32 11 -store i32 %r387, i32* %r389 +%r388 = getelementptr i32, i32* %r1, i32 11 +%r389 = trunc i544 %r386 to i32 +store i32 %r389, i32* %r388 %r390 = lshr i544 %r386, 32 -%r391 = trunc i544 %r390 to i32 -%r393 = getelementptr i32, i32* %r1, i32 12 -store i32 %r391, i32* %r393 +%r392 = getelementptr i32, i32* %r1, i32 12 +%r393 = trunc i544 %r390 to i32 +store i32 %r393, i32* %r392 %r394 = lshr i544 %r390, 32 -%r395 = trunc i544 %r394 to i32 -%r397 = getelementptr i32, i32* %r1, i32 13 -store i32 %r395, i32* %r397 +%r396 = getelementptr i32, i32* %r1, i32 13 +%r397 = trunc i544 %r394 to i32 +store i32 %r397, i32* %r396 %r398 = lshr i544 %r394, 32 -%r399 = trunc i544 %r398 to i32 -%r401 = getelementptr i32, i32* %r1, i32 14 -store i32 %r399, i32* %r401 +%r400 = getelementptr i32, i32* %r1, i32 14 +%r401 = trunc i544 %r398 to i32 +store i32 %r401, i32* %r400 %r402 = lshr i544 %r398, 32 -%r403 = trunc i544 %r402 to i32 -%r405 = getelementptr i32, i32* %r1, i32 15 -store i32 %r403, i32* %r405 +%r404 = getelementptr i32, i32* %r1, i32 15 +%r405 = trunc i544 %r402 to i32 +store i32 %r405, i32* %r404 %r406 = lshr i544 %r402, 32 -%r407 = trunc i544 %r406 to i32 -%r409 = getelementptr i32, i32* %r1, i32 16 -store i32 %r407, i32* %r409 +%r408 = getelementptr i32, i32* %r1, i32 16 +%r409 = trunc i544 %r406 to i32 +store i32 %r409, i32* %r408 ret void } -define i64 @mulPv32x32(i32* noalias %r2, i32 %r3) +define i224 @mulPv192x32(i32* noalias %r2, i32 %r3) { %r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) %r6 = trunc i64 %r5 to i32 %r7 = call i32 @extractHigh32(i64 %r5) -%r8 = zext i32 %r6 to i64 -%r9 = zext i32 %r7 to i64 -%r10 = shl i64 %r9, 32 -%r11 = add i64 %r8, %r10 -ret i64 %r11 +%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) +%r10 = trunc i64 %r9 to i32 +%r11 = call i32 @extractHigh32(i64 %r9) +%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) +%r14 = trunc i64 %r13 to i32 +%r15 = call i32 @extractHigh32(i64 %r13) +%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) +%r18 = trunc i64 %r17 to i32 +%r19 = call i32 @extractHigh32(i64 %r17) +%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) +%r22 = trunc i64 %r21 to i32 +%r23 = call i32 @extractHigh32(i64 %r21) +%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) +%r26 = trunc i64 %r25 to i32 +%r27 = call i32 @extractHigh32(i64 %r25) +%r28 = zext i32 %r6 to i64 +%r29 = zext i32 %r10 to i64 +%r30 = shl i64 %r29, 32 +%r31 = or i64 %r28, %r30 +%r32 = zext i64 %r31 to i96 +%r33 = zext i32 %r14 to i96 +%r34 = shl i96 %r33, 64 +%r35 = or i96 %r32, %r34 +%r36 = zext i96 %r35 to i128 +%r37 = zext i32 %r18 to i128 +%r38 = shl i128 %r37, 96 +%r39 = or i128 %r36, %r38 +%r40 = zext i128 %r39 to i160 +%r41 = zext i32 %r22 to i160 +%r42 = shl i160 %r41, 128 +%r43 = or i160 %r40, %r42 +%r44 = zext i160 %r43 to i192 +%r45 = zext i32 %r26 to i192 +%r46 = shl i192 %r45, 160 +%r47 = or i192 %r44, %r46 +%r48 = zext i32 %r7 to i64 +%r49 = zext i32 %r11 to i64 +%r50 = shl i64 %r49, 32 +%r51 = or i64 %r48, %r50 +%r52 = zext i64 %r51 to i96 +%r53 = zext i32 %r15 to i96 +%r54 = shl i96 %r53, 64 +%r55 = or i96 %r52, %r54 +%r56 = zext i96 %r55 to i128 +%r57 = zext i32 %r19 to i128 +%r58 = shl i128 %r57, 96 +%r59 = or i128 %r56, %r58 +%r60 = zext i128 %r59 to i160 +%r61 = zext i32 %r23 to i160 +%r62 = shl i160 %r61, 128 +%r63 = or i160 %r60, %r62 +%r64 = zext i160 %r63 to i192 +%r65 = zext i32 %r27 to i192 +%r66 = shl i192 %r65, 160 +%r67 = or i192 %r64, %r66 +%r68 = zext i192 %r47 to i224 +%r69 = zext i192 %r67 to i224 +%r70 = shl i224 %r69, 32 +%r71 = add i224 %r68, %r70 +ret i224 %r71 } -define void @mcl_fp_mulUnitPre1L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +define void @mcl_fp_mulUnitPre6L(i32* noalias %r1, i32* noalias %r2, i32 %r3) { -%r4 = call i64 @mulPv32x32(i32* %r2, i32 %r3) -%r5 = trunc i64 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i64 %r4, 32 -%r9 = trunc i64 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 +%r4 = call i224 @mulPv192x32(i32* %r2, i32 %r3) +%r6 = getelementptr i32, i32* %r1, i32 0 +%r7 = trunc i224 %r4 to i32 +store i32 %r7, i32* %r6 +%r8 = lshr i224 %r4, 32 +%r10 = getelementptr i32, i32* %r1, i32 1 +%r11 = trunc i224 %r8 to i32 +store i32 %r11, i32* %r10 +%r12 = lshr i224 %r8, 32 +%r14 = getelementptr i32, i32* %r1, i32 2 +%r15 = trunc i224 %r12 to i32 +store i32 %r15, i32* %r14 +%r16 = lshr i224 %r12, 32 +%r18 = getelementptr i32, i32* %r1, i32 3 +%r19 = trunc i224 %r16 to i32 +store i32 %r19, i32* %r18 +%r20 = lshr i224 %r16, 32 +%r22 = getelementptr i32, i32* %r1, i32 4 +%r23 = trunc i224 %r20 to i32 +store i32 %r23, i32* %r22 +%r24 = lshr i224 %r20, 32 +%r26 = getelementptr i32, i32* %r1, i32 5 +%r27 = trunc i224 %r24 to i32 +store i32 %r27, i32* %r26 +%r28 = lshr i224 %r24, 32 +%r30 = getelementptr i32, i32* %r1, i32 6 +%r31 = trunc i224 %r28 to i32 +store i32 %r31, i32* %r30 ret void } -define void @mcl_fpDbl_mulPre1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +define void @mcl_fpDbl_mulPre6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { -%r4 = load i32, i32* %r2 -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r4 to i64 -%r7 = zext i32 %r5 to i64 -%r8 = mul i64 %r6, %r7 -%r9 = trunc i64 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 0 -store i32 %r9, i32* %r11 -%r12 = lshr i64 %r8, 32 -%r13 = trunc i64 %r12 to i32 +%r4 = load i32, i32* %r3 +%r5 = call i224 @mulPv192x32(i32* %r2, i32 %r4) +%r6 = trunc i224 %r5 to i32 +store i32 %r6, i32* %r1 +%r7 = lshr i224 %r5, 32 +%r9 = getelementptr i32, i32* %r3, i32 1 +%r10 = load i32, i32* %r9 +%r11 = call i224 @mulPv192x32(i32* %r2, i32 %r10) +%r12 = add i224 %r7, %r11 +%r13 = trunc i224 %r12 to i32 %r15 = getelementptr i32, i32* %r1, i32 1 store i32 %r13, i32* %r15 +%r16 = lshr i224 %r12, 32 +%r18 = getelementptr i32, i32* %r3, i32 2 +%r19 = load i32, i32* %r18 +%r20 = call i224 @mulPv192x32(i32* %r2, i32 %r19) +%r21 = add i224 %r16, %r20 +%r22 = trunc i224 %r21 to i32 +%r24 = getelementptr i32, i32* %r1, i32 2 +store i32 %r22, i32* %r24 +%r25 = lshr i224 %r21, 32 +%r27 = getelementptr i32, i32* %r3, i32 3 +%r28 = load i32, i32* %r27 +%r29 = call i224 @mulPv192x32(i32* %r2, i32 %r28) +%r30 = add i224 %r25, %r29 +%r31 = trunc i224 %r30 to i32 +%r33 = getelementptr i32, i32* %r1, i32 3 +store i32 %r31, i32* %r33 +%r34 = lshr i224 %r30, 32 +%r36 = getelementptr i32, i32* %r3, i32 4 +%r37 = load i32, i32* %r36 +%r38 = call i224 @mulPv192x32(i32* %r2, i32 %r37) +%r39 = add i224 %r34, %r38 +%r40 = trunc i224 %r39 to i32 +%r42 = getelementptr i32, i32* %r1, i32 4 +store i32 %r40, i32* %r42 +%r43 = lshr i224 %r39, 32 +%r45 = getelementptr i32, i32* %r3, i32 5 +%r46 = load i32, i32* %r45 +%r47 = call i224 @mulPv192x32(i32* %r2, i32 %r46) +%r48 = add i224 %r43, %r47 +%r50 = getelementptr i32, i32* %r1, i32 5 +%r52 = getelementptr i32, i32* %r50, i32 0 +%r53 = trunc i224 %r48 to i32 +store i32 %r53, i32* %r52 +%r54 = lshr i224 %r48, 32 +%r56 = getelementptr i32, i32* %r50, i32 1 +%r57 = trunc i224 %r54 to i32 +store i32 %r57, i32* %r56 +%r58 = lshr i224 %r54, 32 +%r60 = getelementptr i32, i32* %r50, i32 2 +%r61 = trunc i224 %r58 to i32 +store i32 %r61, i32* %r60 +%r62 = lshr i224 %r58, 32 +%r64 = getelementptr i32, i32* %r50, i32 3 +%r65 = trunc i224 %r62 to i32 +store i32 %r65, i32* %r64 +%r66 = lshr i224 %r62, 32 +%r68 = getelementptr i32, i32* %r50, i32 4 +%r69 = trunc i224 %r66 to i32 +store i32 %r69, i32* %r68 +%r70 = lshr i224 %r66, 32 +%r72 = getelementptr i32, i32* %r50, i32 5 +%r73 = trunc i224 %r70 to i32 +store i32 %r73, i32* %r72 +%r74 = lshr i224 %r70, 32 +%r76 = getelementptr i32, i32* %r50, i32 6 +%r77 = trunc i224 %r74 to i32 +store i32 %r77, i32* %r76 ret void } -define void @mcl_fpDbl_sqrPre1L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fpDbl_sqrPre6L(i32* noalias %r1, i32* noalias %r2) { %r3 = load i32, i32* %r2 -%r4 = load i32, i32* %r2 -%r5 = zext i32 %r3 to i64 -%r6 = zext i32 %r4 to i64 -%r7 = mul i64 %r5, %r6 -%r8 = trunc i64 %r7 to i32 -%r10 = getelementptr i32, i32* %r1, i32 0 -store i32 %r8, i32* %r10 -%r11 = lshr i64 %r7, 32 -%r12 = trunc i64 %r11 to i32 +%r4 = call i224 @mulPv192x32(i32* %r2, i32 %r3) +%r5 = trunc i224 %r4 to i32 +store i32 %r5, i32* %r1 +%r6 = lshr i224 %r4, 32 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = call i224 @mulPv192x32(i32* %r2, i32 %r9) +%r11 = add i224 %r6, %r10 +%r12 = trunc i224 %r11 to i32 %r14 = getelementptr i32, i32* %r1, i32 1 store i32 %r12, i32* %r14 +%r15 = lshr i224 %r11, 32 +%r17 = getelementptr i32, i32* %r2, i32 2 +%r18 = load i32, i32* %r17 +%r19 = call i224 @mulPv192x32(i32* %r2, i32 %r18) +%r20 = add i224 %r15, %r19 +%r21 = trunc i224 %r20 to i32 +%r23 = getelementptr i32, i32* %r1, i32 2 +store i32 %r21, i32* %r23 +%r24 = lshr i224 %r20, 32 +%r26 = getelementptr i32, i32* %r2, i32 3 +%r27 = load i32, i32* %r26 +%r28 = call i224 @mulPv192x32(i32* %r2, i32 %r27) +%r29 = add i224 %r24, %r28 +%r30 = trunc i224 %r29 to i32 +%r32 = getelementptr i32, i32* %r1, i32 3 +store i32 %r30, i32* %r32 +%r33 = lshr i224 %r29, 32 +%r35 = getelementptr i32, i32* %r2, i32 4 +%r36 = load i32, i32* %r35 +%r37 = call i224 @mulPv192x32(i32* %r2, i32 %r36) +%r38 = add i224 %r33, %r37 +%r39 = trunc i224 %r38 to i32 +%r41 = getelementptr i32, i32* %r1, i32 4 +store i32 %r39, i32* %r41 +%r42 = lshr i224 %r38, 32 +%r44 = getelementptr i32, i32* %r2, i32 5 +%r45 = load i32, i32* %r44 +%r46 = call i224 @mulPv192x32(i32* %r2, i32 %r45) +%r47 = add i224 %r42, %r46 +%r49 = getelementptr i32, i32* %r1, i32 5 +%r51 = getelementptr i32, i32* %r49, i32 0 +%r52 = trunc i224 %r47 to i32 +store i32 %r52, i32* %r51 +%r53 = lshr i224 %r47, 32 +%r55 = getelementptr i32, i32* %r49, i32 1 +%r56 = trunc i224 %r53 to i32 +store i32 %r56, i32* %r55 +%r57 = lshr i224 %r53, 32 +%r59 = getelementptr i32, i32* %r49, i32 2 +%r60 = trunc i224 %r57 to i32 +store i32 %r60, i32* %r59 +%r61 = lshr i224 %r57, 32 +%r63 = getelementptr i32, i32* %r49, i32 3 +%r64 = trunc i224 %r61 to i32 +store i32 %r64, i32* %r63 +%r65 = lshr i224 %r61, 32 +%r67 = getelementptr i32, i32* %r49, i32 4 +%r68 = trunc i224 %r65 to i32 +store i32 %r68, i32* %r67 +%r69 = lshr i224 %r65, 32 +%r71 = getelementptr i32, i32* %r49, i32 5 +%r72 = trunc i224 %r69 to i32 +store i32 %r72, i32* %r71 +%r73 = lshr i224 %r69, 32 +%r75 = getelementptr i32, i32* %r49, i32 6 +%r76 = trunc i224 %r73 to i32 +store i32 %r76, i32* %r75 ret void } -define void @mcl_fp_mont1L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_mont6L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 %r9 = getelementptr i32, i32* %r3, i32 0 %r10 = load i32, i32* %r9 -%r11 = call i64 @mulPv32x32(i32* %r2, i32 %r10) -%r12 = zext i64 %r11 to i96 -%r13 = trunc i64 %r11 to i32 +%r11 = call i224 @mulPv192x32(i32* %r2, i32 %r10) +%r12 = zext i224 %r11 to i256 +%r13 = trunc i224 %r11 to i32 %r14 = mul i32 %r13, %r7 -%r15 = call i64 @mulPv32x32(i32* %r4, i32 %r14) -%r16 = zext i64 %r15 to i96 -%r17 = add i96 %r12, %r16 -%r18 = lshr i96 %r17, 32 -%r19 = trunc i96 %r18 to i64 -%r20 = load i32, i32* %r4 -%r21 = zext i32 %r20 to i64 -%r22 = sub i64 %r19, %r21 -%r23 = lshr i64 %r22, 32 -%r24 = trunc i64 %r23 to i1 -%r25 = select i1 %r24, i64 %r19, i64 %r22 -%r26 = trunc i64 %r25 to i32 -store i32 %r26, i32* %r1 -ret void -} -define void @mcl_fp_montNF1L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i64 @mulPv32x32(i32* %r2, i32 %r8) -%r10 = trunc i64 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i64 @mulPv32x32(i32* %r4, i32 %r11) -%r13 = add i64 %r9, %r12 -%r14 = lshr i64 %r13, 32 -%r15 = trunc i64 %r14 to i32 -%r16 = load i32, i32* %r4 -%r17 = sub i32 %r15, %r16 -%r18 = lshr i32 %r17, 31 -%r19 = trunc i32 %r18 to i1 -%r20 = select i1 %r19, i32 %r15, i32 %r17 -store i32 %r20, i32* %r1 -ret void -} -define void @mcl_fp_montRed1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = load i32, i32* %r2 -%r9 = zext i32 %r8 to i64 -%r11 = getelementptr i32, i32* %r2, i32 1 -%r12 = load i32, i32* %r11 -%r13 = zext i32 %r12 to i64 -%r14 = shl i64 %r13, 32 -%r15 = or i64 %r9, %r14 -%r16 = zext i64 %r15 to i96 -%r17 = trunc i96 %r16 to i32 -%r18 = mul i32 %r17, %r6 -%r19 = call i64 @mulPv32x32(i32* %r3, i32 %r18) -%r20 = zext i64 %r19 to i96 -%r21 = add i96 %r16, %r20 -%r22 = lshr i96 %r21, 32 -%r23 = trunc i96 %r22 to i64 -%r24 = zext i32 %r7 to i64 -%r25 = sub i64 %r23, %r24 -%r26 = lshr i64 %r25, 32 -%r27 = trunc i64 %r26 to i1 -%r28 = select i1 %r27, i64 %r23, i64 %r25 -%r29 = trunc i64 %r28 to i32 -store i32 %r29, i32* %r1 -ret void -} -define i32 @mcl_fp_addPre1L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r7 = load i32, i32* %r4 -%r8 = zext i32 %r7 to i64 -%r9 = add i64 %r6, %r8 -%r10 = trunc i64 %r9 to i32 -store i32 %r10, i32* %r2 -%r11 = lshr i64 %r9, 32 -%r12 = trunc i64 %r11 to i32 -ret i32 %r12 -} -define i32 @mcl_fp_subPre1L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r7 = load i32, i32* %r4 -%r8 = zext i32 %r7 to i64 -%r9 = sub i64 %r6, %r8 -%r10 = trunc i64 %r9 to i32 -store i32 %r10, i32* %r2 -%r11 = lshr i64 %r9, 32 -%r12 = trunc i64 %r11 to i32 -%r14 = and i32 %r12, 1 -ret i32 %r14 -} -define void @mcl_fp_shr1_1L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = lshr i32 %r3, 1 -store i32 %r4, i32* %r1 -ret void -} -define void @mcl_fp_add1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = load i32, i32* %r3 -%r7 = zext i32 %r5 to i64 -%r8 = zext i32 %r6 to i64 -%r9 = add i64 %r7, %r8 -%r10 = trunc i64 %r9 to i32 -store i32 %r10, i32* %r1 -%r11 = load i32, i32* %r4 -%r12 = zext i32 %r11 to i64 -%r13 = sub i64 %r9, %r12 -%r14 = lshr i64 %r13, 32 -%r15 = trunc i64 %r14 to i1 -br i1%r15, label %carry, label %nocarry -nocarry: -%r16 = trunc i64 %r13 to i32 -store i32 %r16, i32* %r1 -ret void -carry: -ret void -} -define void @mcl_fp_addNF1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = load i32, i32* %r3 -%r7 = add i32 %r5, %r6 -%r8 = load i32, i32* %r4 -%r9 = sub i32 %r7, %r8 -%r10 = lshr i32 %r9, 31 -%r11 = trunc i32 %r10 to i1 -%r12 = select i1 %r11, i32 %r7, i32 %r9 -store i32 %r12, i32* %r1 -ret void -} -define void @mcl_fp_sub1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = load i32, i32* %r3 -%r7 = zext i32 %r5 to i64 -%r8 = zext i32 %r6 to i64 -%r9 = sub i64 %r7, %r8 -%r10 = trunc i64 %r9 to i32 -%r11 = lshr i64 %r9, 32 -%r12 = trunc i64 %r11 to i1 -store i32 %r10, i32* %r1 -br i1%r12, label %carry, label %nocarry -nocarry: -ret void -carry: -%r13 = load i32, i32* %r4 -%r14 = add i32 %r10, %r13 -store i32 %r14, i32* %r1 -ret void -} -define void @mcl_fp_subNF1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = load i32, i32* %r3 -%r7 = sub i32 %r5, %r6 -%r8 = lshr i32 %r7, 31 -%r9 = trunc i32 %r8 to i1 -%r10 = load i32, i32* %r4 -%r12 = select i1 %r9, i32 %r10, i32 0 -%r13 = add i32 %r7, %r12 -store i32 %r13, i32* %r1 -ret void -} -define void @mcl_fpDbl_add1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = zext i64 %r12 to i96 -%r22 = zext i64 %r20 to i96 -%r23 = add i96 %r21, %r22 -%r24 = trunc i96 %r23 to i32 -store i32 %r24, i32* %r1 -%r25 = lshr i96 %r23, 32 -%r26 = trunc i96 %r25 to i64 -%r27 = load i32, i32* %r4 -%r28 = zext i32 %r27 to i64 -%r29 = sub i64 %r26, %r28 -%r30 = lshr i64 %r29, 32 -%r31 = trunc i64 %r30 to i1 -%r32 = select i1 %r31, i64 %r26, i64 %r29 -%r33 = trunc i64 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 1 -store i32 %r33, i32* %r35 -ret void -} -define void @mcl_fpDbl_sub1L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = zext i64 %r12 to i96 -%r22 = zext i64 %r20 to i96 -%r23 = sub i96 %r21, %r22 -%r24 = trunc i96 %r23 to i32 -store i32 %r24, i32* %r1 -%r25 = lshr i96 %r23, 32 -%r26 = trunc i96 %r25 to i32 -%r27 = lshr i96 %r23, 64 -%r28 = trunc i96 %r27 to i1 -%r29 = load i32, i32* %r4 -%r31 = select i1 %r28, i32 %r29, i32 0 -%r32 = add i32 %r26, %r31 -%r34 = getelementptr i32, i32* %r1, i32 1 -store i32 %r32, i32* %r34 -ret void -} -define i96 @mulPv64x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r12 = zext i32 %r6 to i64 -%r13 = zext i32 %r10 to i64 -%r14 = shl i64 %r13, 32 -%r15 = or i64 %r12, %r14 -%r16 = zext i32 %r7 to i64 -%r17 = zext i32 %r11 to i64 -%r18 = shl i64 %r17, 32 -%r19 = or i64 %r16, %r18 -%r20 = zext i64 %r15 to i96 -%r21 = zext i64 %r19 to i96 -%r22 = shl i96 %r21, 32 -%r23 = add i96 %r20, %r22 -ret i96 %r23 -} -define void @mcl_fp_mulUnitPre2L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i96 @mulPv64x32(i32* %r2, i32 %r3) -%r5 = trunc i96 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i96 %r4, 32 -%r9 = trunc i96 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i96 %r8, 32 -%r13 = trunc i96 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -ret void -} -define void @mcl_fpDbl_mulPre2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i96 @mulPv64x32(i32* %r2, i32 %r4) -%r6 = trunc i96 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i96 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i96 @mulPv64x32(i32* %r2, i32 %r10) -%r12 = add i96 %r7, %r11 -%r14 = getelementptr i32, i32* %r1, i32 1 -%r15 = trunc i96 %r12 to i32 -%r17 = getelementptr i32, i32* %r14, i32 0 -store i32 %r15, i32* %r17 -%r18 = lshr i96 %r12, 32 -%r19 = trunc i96 %r18 to i32 -%r21 = getelementptr i32, i32* %r14, i32 1 -store i32 %r19, i32* %r21 -%r22 = lshr i96 %r18, 32 -%r23 = trunc i96 %r22 to i32 -%r25 = getelementptr i32, i32* %r14, i32 2 -store i32 %r23, i32* %r25 -ret void -} -define void @mcl_fpDbl_sqrPre2L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i96 @mulPv64x32(i32* %r2, i32 %r3) -%r5 = trunc i96 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i96 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i96 @mulPv64x32(i32* %r2, i32 %r9) -%r11 = add i96 %r6, %r10 -%r13 = getelementptr i32, i32* %r1, i32 1 -%r14 = trunc i96 %r11 to i32 -%r16 = getelementptr i32, i32* %r13, i32 0 -store i32 %r14, i32* %r16 -%r17 = lshr i96 %r11, 32 -%r18 = trunc i96 %r17 to i32 -%r20 = getelementptr i32, i32* %r13, i32 1 -store i32 %r18, i32* %r20 -%r21 = lshr i96 %r17, 32 -%r22 = trunc i96 %r21 to i32 -%r24 = getelementptr i32, i32* %r13, i32 2 -store i32 %r22, i32* %r24 -ret void -} -define void @mcl_fp_mont2L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i96 @mulPv64x32(i32* %r2, i32 %r10) -%r12 = zext i96 %r11 to i128 -%r13 = trunc i96 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i96 @mulPv64x32(i32* %r4, i32 %r14) -%r16 = zext i96 %r15 to i128 -%r17 = add i128 %r12, %r16 -%r18 = lshr i128 %r17, 32 +%r15 = call i224 @mulPv192x32(i32* %r4, i32 %r14) +%r16 = zext i224 %r15 to i256 +%r17 = add i256 %r12, %r16 +%r18 = lshr i256 %r17, 32 %r20 = getelementptr i32, i32* %r3, i32 1 %r21 = load i32, i32* %r20 -%r22 = call i96 @mulPv64x32(i32* %r2, i32 %r21) -%r23 = zext i96 %r22 to i128 -%r24 = add i128 %r18, %r23 -%r25 = trunc i128 %r24 to i32 +%r22 = call i224 @mulPv192x32(i32* %r2, i32 %r21) +%r23 = zext i224 %r22 to i256 +%r24 = add i256 %r18, %r23 +%r25 = trunc i256 %r24 to i32 %r26 = mul i32 %r25, %r7 -%r27 = call i96 @mulPv64x32(i32* %r4, i32 %r26) -%r28 = zext i96 %r27 to i128 -%r29 = add i128 %r24, %r28 -%r30 = lshr i128 %r29, 32 -%r31 = trunc i128 %r30 to i96 -%r32 = load i32, i32* %r4 -%r33 = zext i32 %r32 to i64 -%r35 = getelementptr i32, i32* %r4, i32 1 -%r36 = load i32, i32* %r35 -%r37 = zext i32 %r36 to i64 -%r38 = shl i64 %r37, 32 -%r39 = or i64 %r33, %r38 -%r40 = zext i64 %r39 to i96 -%r41 = sub i96 %r31, %r40 -%r42 = lshr i96 %r41, 64 -%r43 = trunc i96 %r42 to i1 -%r44 = select i1 %r43, i96 %r31, i96 %r41 -%r45 = trunc i96 %r44 to i64 -%r46 = trunc i64 %r45 to i32 -%r48 = getelementptr i32, i32* %r1, i32 0 -store i32 %r46, i32* %r48 -%r49 = lshr i64 %r45, 32 -%r50 = trunc i64 %r49 to i32 -%r52 = getelementptr i32, i32* %r1, i32 1 -store i32 %r50, i32* %r52 +%r27 = call i224 @mulPv192x32(i32* %r4, i32 %r26) +%r28 = zext i224 %r27 to i256 +%r29 = add i256 %r24, %r28 +%r30 = lshr i256 %r29, 32 +%r32 = getelementptr i32, i32* %r3, i32 2 +%r33 = load i32, i32* %r32 +%r34 = call i224 @mulPv192x32(i32* %r2, i32 %r33) +%r35 = zext i224 %r34 to i256 +%r36 = add i256 %r30, %r35 +%r37 = trunc i256 %r36 to i32 +%r38 = mul i32 %r37, %r7 +%r39 = call i224 @mulPv192x32(i32* %r4, i32 %r38) +%r40 = zext i224 %r39 to i256 +%r41 = add i256 %r36, %r40 +%r42 = lshr i256 %r41, 32 +%r44 = getelementptr i32, i32* %r3, i32 3 +%r45 = load i32, i32* %r44 +%r46 = call i224 @mulPv192x32(i32* %r2, i32 %r45) +%r47 = zext i224 %r46 to i256 +%r48 = add i256 %r42, %r47 +%r49 = trunc i256 %r48 to i32 +%r50 = mul i32 %r49, %r7 +%r51 = call i224 @mulPv192x32(i32* %r4, i32 %r50) +%r52 = zext i224 %r51 to i256 +%r53 = add i256 %r48, %r52 +%r54 = lshr i256 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 4 +%r57 = load i32, i32* %r56 +%r58 = call i224 @mulPv192x32(i32* %r2, i32 %r57) +%r59 = zext i224 %r58 to i256 +%r60 = add i256 %r54, %r59 +%r61 = trunc i256 %r60 to i32 +%r62 = mul i32 %r61, %r7 +%r63 = call i224 @mulPv192x32(i32* %r4, i32 %r62) +%r64 = zext i224 %r63 to i256 +%r65 = add i256 %r60, %r64 +%r66 = lshr i256 %r65, 32 +%r68 = getelementptr i32, i32* %r3, i32 5 +%r69 = load i32, i32* %r68 +%r70 = call i224 @mulPv192x32(i32* %r2, i32 %r69) +%r71 = zext i224 %r70 to i256 +%r72 = add i256 %r66, %r71 +%r73 = trunc i256 %r72 to i32 +%r74 = mul i32 %r73, %r7 +%r75 = call i224 @mulPv192x32(i32* %r4, i32 %r74) +%r76 = zext i224 %r75 to i256 +%r77 = add i256 %r72, %r76 +%r78 = lshr i256 %r77, 32 +%r79 = trunc i256 %r78 to i224 +%r80 = load i32, i32* %r4 +%r81 = zext i32 %r80 to i64 +%r83 = getelementptr i32, i32* %r4, i32 1 +%r84 = load i32, i32* %r83 +%r85 = zext i32 %r84 to i64 +%r86 = shl i64 %r85, 32 +%r87 = or i64 %r81, %r86 +%r88 = zext i64 %r87 to i96 +%r90 = getelementptr i32, i32* %r4, i32 2 +%r91 = load i32, i32* %r90 +%r92 = zext i32 %r91 to i96 +%r93 = shl i96 %r92, 64 +%r94 = or i96 %r88, %r93 +%r95 = zext i96 %r94 to i128 +%r97 = getelementptr i32, i32* %r4, i32 3 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i128 +%r100 = shl i128 %r99, 96 +%r101 = or i128 %r95, %r100 +%r102 = zext i128 %r101 to i160 +%r104 = getelementptr i32, i32* %r4, i32 4 +%r105 = load i32, i32* %r104 +%r106 = zext i32 %r105 to i160 +%r107 = shl i160 %r106, 128 +%r108 = or i160 %r102, %r107 +%r109 = zext i160 %r108 to i192 +%r111 = getelementptr i32, i32* %r4, i32 5 +%r112 = load i32, i32* %r111 +%r113 = zext i32 %r112 to i192 +%r114 = shl i192 %r113, 160 +%r115 = or i192 %r109, %r114 +%r116 = zext i192 %r115 to i224 +%r117 = sub i224 %r79, %r116 +%r118 = lshr i224 %r117, 192 +%r119 = trunc i224 %r118 to i1 +%r120 = select i1 %r119, i224 %r79, i224 %r117 +%r121 = trunc i224 %r120 to i192 +%r123 = getelementptr i32, i32* %r1, i32 0 +%r124 = trunc i192 %r121 to i32 +store i32 %r124, i32* %r123 +%r125 = lshr i192 %r121, 32 +%r127 = getelementptr i32, i32* %r1, i32 1 +%r128 = trunc i192 %r125 to i32 +store i32 %r128, i32* %r127 +%r129 = lshr i192 %r125, 32 +%r131 = getelementptr i32, i32* %r1, i32 2 +%r132 = trunc i192 %r129 to i32 +store i32 %r132, i32* %r131 +%r133 = lshr i192 %r129, 32 +%r135 = getelementptr i32, i32* %r1, i32 3 +%r136 = trunc i192 %r133 to i32 +store i32 %r136, i32* %r135 +%r137 = lshr i192 %r133, 32 +%r139 = getelementptr i32, i32* %r1, i32 4 +%r140 = trunc i192 %r137 to i32 +store i32 %r140, i32* %r139 +%r141 = lshr i192 %r137, 32 +%r143 = getelementptr i32, i32* %r1, i32 5 +%r144 = trunc i192 %r141 to i32 +store i32 %r144, i32* %r143 ret void } -define void @mcl_fp_montNF2L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_montNF6L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 %r8 = load i32, i32* %r3 -%r9 = call i96 @mulPv64x32(i32* %r2, i32 %r8) -%r10 = trunc i96 %r9 to i32 +%r9 = call i224 @mulPv192x32(i32* %r2, i32 %r8) +%r10 = trunc i224 %r9 to i32 %r11 = mul i32 %r10, %r7 -%r12 = call i96 @mulPv64x32(i32* %r4, i32 %r11) -%r13 = add i96 %r9, %r12 -%r14 = lshr i96 %r13, 32 +%r12 = call i224 @mulPv192x32(i32* %r4, i32 %r11) +%r13 = add i224 %r9, %r12 +%r14 = lshr i224 %r13, 32 %r16 = getelementptr i32, i32* %r3, i32 1 %r17 = load i32, i32* %r16 -%r18 = call i96 @mulPv64x32(i32* %r2, i32 %r17) -%r19 = add i96 %r14, %r18 -%r20 = trunc i96 %r19 to i32 +%r18 = call i224 @mulPv192x32(i32* %r2, i32 %r17) +%r19 = add i224 %r14, %r18 +%r20 = trunc i224 %r19 to i32 %r21 = mul i32 %r20, %r7 -%r22 = call i96 @mulPv64x32(i32* %r4, i32 %r21) -%r23 = add i96 %r19, %r22 -%r24 = lshr i96 %r23, 32 -%r25 = trunc i96 %r24 to i64 -%r26 = load i32, i32* %r4 -%r27 = zext i32 %r26 to i64 -%r29 = getelementptr i32, i32* %r4, i32 1 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i64 -%r32 = shl i64 %r31, 32 -%r33 = or i64 %r27, %r32 -%r34 = sub i64 %r25, %r33 -%r35 = lshr i64 %r34, 63 -%r36 = trunc i64 %r35 to i1 -%r37 = select i1 %r36, i64 %r25, i64 %r34 -%r38 = trunc i64 %r37 to i32 -%r40 = getelementptr i32, i32* %r1, i32 0 -store i32 %r38, i32* %r40 -%r41 = lshr i64 %r37, 32 -%r42 = trunc i64 %r41 to i32 -%r44 = getelementptr i32, i32* %r1, i32 1 -store i32 %r42, i32* %r44 +%r22 = call i224 @mulPv192x32(i32* %r4, i32 %r21) +%r23 = add i224 %r19, %r22 +%r24 = lshr i224 %r23, 32 +%r26 = getelementptr i32, i32* %r3, i32 2 +%r27 = load i32, i32* %r26 +%r28 = call i224 @mulPv192x32(i32* %r2, i32 %r27) +%r29 = add i224 %r24, %r28 +%r30 = trunc i224 %r29 to i32 +%r31 = mul i32 %r30, %r7 +%r32 = call i224 @mulPv192x32(i32* %r4, i32 %r31) +%r33 = add i224 %r29, %r32 +%r34 = lshr i224 %r33, 32 +%r36 = getelementptr i32, i32* %r3, i32 3 +%r37 = load i32, i32* %r36 +%r38 = call i224 @mulPv192x32(i32* %r2, i32 %r37) +%r39 = add i224 %r34, %r38 +%r40 = trunc i224 %r39 to i32 +%r41 = mul i32 %r40, %r7 +%r42 = call i224 @mulPv192x32(i32* %r4, i32 %r41) +%r43 = add i224 %r39, %r42 +%r44 = lshr i224 %r43, 32 +%r46 = getelementptr i32, i32* %r3, i32 4 +%r47 = load i32, i32* %r46 +%r48 = call i224 @mulPv192x32(i32* %r2, i32 %r47) +%r49 = add i224 %r44, %r48 +%r50 = trunc i224 %r49 to i32 +%r51 = mul i32 %r50, %r7 +%r52 = call i224 @mulPv192x32(i32* %r4, i32 %r51) +%r53 = add i224 %r49, %r52 +%r54 = lshr i224 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 5 +%r57 = load i32, i32* %r56 +%r58 = call i224 @mulPv192x32(i32* %r2, i32 %r57) +%r59 = add i224 %r54, %r58 +%r60 = trunc i224 %r59 to i32 +%r61 = mul i32 %r60, %r7 +%r62 = call i224 @mulPv192x32(i32* %r4, i32 %r61) +%r63 = add i224 %r59, %r62 +%r64 = lshr i224 %r63, 32 +%r65 = trunc i224 %r64 to i192 +%r66 = load i32, i32* %r4 +%r67 = zext i32 %r66 to i64 +%r69 = getelementptr i32, i32* %r4, i32 1 +%r70 = load i32, i32* %r69 +%r71 = zext i32 %r70 to i64 +%r72 = shl i64 %r71, 32 +%r73 = or i64 %r67, %r72 +%r74 = zext i64 %r73 to i96 +%r76 = getelementptr i32, i32* %r4, i32 2 +%r77 = load i32, i32* %r76 +%r78 = zext i32 %r77 to i96 +%r79 = shl i96 %r78, 64 +%r80 = or i96 %r74, %r79 +%r81 = zext i96 %r80 to i128 +%r83 = getelementptr i32, i32* %r4, i32 3 +%r84 = load i32, i32* %r83 +%r85 = zext i32 %r84 to i128 +%r86 = shl i128 %r85, 96 +%r87 = or i128 %r81, %r86 +%r88 = zext i128 %r87 to i160 +%r90 = getelementptr i32, i32* %r4, i32 4 +%r91 = load i32, i32* %r90 +%r92 = zext i32 %r91 to i160 +%r93 = shl i160 %r92, 128 +%r94 = or i160 %r88, %r93 +%r95 = zext i160 %r94 to i192 +%r97 = getelementptr i32, i32* %r4, i32 5 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i192 +%r100 = shl i192 %r99, 160 +%r101 = or i192 %r95, %r100 +%r102 = sub i192 %r65, %r101 +%r103 = lshr i192 %r102, 191 +%r104 = trunc i192 %r103 to i1 +%r105 = select i1 %r104, i192 %r65, i192 %r102 +%r107 = getelementptr i32, i32* %r1, i32 0 +%r108 = trunc i192 %r105 to i32 +store i32 %r108, i32* %r107 +%r109 = lshr i192 %r105, 32 +%r111 = getelementptr i32, i32* %r1, i32 1 +%r112 = trunc i192 %r109 to i32 +store i32 %r112, i32* %r111 +%r113 = lshr i192 %r109, 32 +%r115 = getelementptr i32, i32* %r1, i32 2 +%r116 = trunc i192 %r113 to i32 +store i32 %r116, i32* %r115 +%r117 = lshr i192 %r113, 32 +%r119 = getelementptr i32, i32* %r1, i32 3 +%r120 = trunc i192 %r117 to i32 +store i32 %r120, i32* %r119 +%r121 = lshr i192 %r117, 32 +%r123 = getelementptr i32, i32* %r1, i32 4 +%r124 = trunc i192 %r121 to i32 +store i32 %r124, i32* %r123 +%r125 = lshr i192 %r121, 32 +%r127 = getelementptr i32, i32* %r1, i32 5 +%r128 = trunc i192 %r125 to i32 +store i32 %r128, i32* %r127 ret void } -define void @mcl_fp_montRed2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +define void @mcl_fp_montRed6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { %r5 = getelementptr i32, i32* %r3, i32 -1 %r6 = load i32, i32* %r5 @@ -1011,57 +1030,424 @@ define void @mcl_fp_montRed2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r12 = zext i32 %r11 to i64 %r13 = shl i64 %r12, 32 %r14 = or i64 %r8, %r13 -%r15 = load i32, i32* %r2 -%r16 = zext i32 %r15 to i64 -%r18 = getelementptr i32, i32* %r2, i32 1 -%r19 = load i32, i32* %r18 -%r20 = zext i32 %r19 to i64 -%r21 = shl i64 %r20, 32 -%r22 = or i64 %r16, %r21 -%r23 = zext i64 %r22 to i96 -%r25 = getelementptr i32, i32* %r2, i32 2 -%r26 = load i32, i32* %r25 -%r27 = zext i32 %r26 to i96 -%r28 = shl i96 %r27, 64 -%r29 = or i96 %r23, %r28 -%r30 = zext i96 %r29 to i128 -%r32 = getelementptr i32, i32* %r2, i32 3 -%r33 = load i32, i32* %r32 -%r34 = zext i32 %r33 to i128 -%r35 = shl i128 %r34, 96 -%r36 = or i128 %r30, %r35 -%r37 = zext i128 %r36 to i160 -%r38 = trunc i160 %r37 to i32 -%r39 = mul i32 %r38, %r6 -%r40 = call i96 @mulPv64x32(i32* %r3, i32 %r39) -%r41 = zext i96 %r40 to i160 -%r42 = add i160 %r37, %r41 -%r43 = lshr i160 %r42, 32 -%r44 = trunc i160 %r43 to i128 -%r45 = trunc i128 %r44 to i32 -%r46 = mul i32 %r45, %r6 -%r47 = call i96 @mulPv64x32(i32* %r3, i32 %r46) -%r48 = zext i96 %r47 to i128 -%r49 = add i128 %r44, %r48 -%r50 = lshr i128 %r49, 32 -%r51 = trunc i128 %r50 to i96 -%r52 = zext i64 %r14 to i96 -%r53 = sub i96 %r51, %r52 -%r54 = lshr i96 %r53, 64 -%r55 = trunc i96 %r54 to i1 -%r56 = select i1 %r55, i96 %r51, i96 %r53 -%r57 = trunc i96 %r56 to i64 -%r58 = trunc i64 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 0 -store i32 %r58, i32* %r60 -%r61 = lshr i64 %r57, 32 -%r62 = trunc i64 %r61 to i32 -%r64 = getelementptr i32, i32* %r1, i32 1 -store i32 %r62, i32* %r64 -ret void -} -define i32 @mcl_fp_addPre2L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = load i32, i32* %r2 +%r44 = zext i32 %r43 to i64 +%r46 = getelementptr i32, i32* %r2, i32 1 +%r47 = load i32, i32* %r46 +%r48 = zext i32 %r47 to i64 +%r49 = shl i64 %r48, 32 +%r50 = or i64 %r44, %r49 +%r51 = zext i64 %r50 to i96 +%r53 = getelementptr i32, i32* %r2, i32 2 +%r54 = load i32, i32* %r53 +%r55 = zext i32 %r54 to i96 +%r56 = shl i96 %r55, 64 +%r57 = or i96 %r51, %r56 +%r58 = zext i96 %r57 to i128 +%r60 = getelementptr i32, i32* %r2, i32 3 +%r61 = load i32, i32* %r60 +%r62 = zext i32 %r61 to i128 +%r63 = shl i128 %r62, 96 +%r64 = or i128 %r58, %r63 +%r65 = zext i128 %r64 to i160 +%r67 = getelementptr i32, i32* %r2, i32 4 +%r68 = load i32, i32* %r67 +%r69 = zext i32 %r68 to i160 +%r70 = shl i160 %r69, 128 +%r71 = or i160 %r65, %r70 +%r72 = zext i160 %r71 to i192 +%r74 = getelementptr i32, i32* %r2, i32 5 +%r75 = load i32, i32* %r74 +%r76 = zext i32 %r75 to i192 +%r77 = shl i192 %r76, 160 +%r78 = or i192 %r72, %r77 +%r79 = trunc i192 %r78 to i32 +%r80 = mul i32 %r79, %r6 +%r81 = call i224 @mulPv192x32(i32* %r3, i32 %r80) +%r83 = getelementptr i32, i32* %r2, i32 6 +%r84 = load i32, i32* %r83 +%r85 = zext i32 %r84 to i224 +%r86 = shl i224 %r85, 192 +%r87 = zext i192 %r78 to i224 +%r88 = or i224 %r86, %r87 +%r89 = zext i224 %r88 to i256 +%r90 = zext i224 %r81 to i256 +%r91 = add i256 %r89, %r90 +%r92 = lshr i256 %r91, 32 +%r93 = trunc i256 %r92 to i224 +%r94 = lshr i224 %r93, 192 +%r95 = trunc i224 %r94 to i32 +%r96 = trunc i224 %r93 to i192 +%r97 = trunc i192 %r96 to i32 +%r98 = mul i32 %r97, %r6 +%r99 = call i224 @mulPv192x32(i32* %r3, i32 %r98) +%r100 = zext i32 %r95 to i224 +%r101 = shl i224 %r100, 192 +%r102 = add i224 %r99, %r101 +%r104 = getelementptr i32, i32* %r2, i32 7 +%r105 = load i32, i32* %r104 +%r106 = zext i32 %r105 to i224 +%r107 = shl i224 %r106, 192 +%r108 = zext i192 %r96 to i224 +%r109 = or i224 %r107, %r108 +%r110 = zext i224 %r109 to i256 +%r111 = zext i224 %r102 to i256 +%r112 = add i256 %r110, %r111 +%r113 = lshr i256 %r112, 32 +%r114 = trunc i256 %r113 to i224 +%r115 = lshr i224 %r114, 192 +%r116 = trunc i224 %r115 to i32 +%r117 = trunc i224 %r114 to i192 +%r118 = trunc i192 %r117 to i32 +%r119 = mul i32 %r118, %r6 +%r120 = call i224 @mulPv192x32(i32* %r3, i32 %r119) +%r121 = zext i32 %r116 to i224 +%r122 = shl i224 %r121, 192 +%r123 = add i224 %r120, %r122 +%r125 = getelementptr i32, i32* %r2, i32 8 +%r126 = load i32, i32* %r125 +%r127 = zext i32 %r126 to i224 +%r128 = shl i224 %r127, 192 +%r129 = zext i192 %r117 to i224 +%r130 = or i224 %r128, %r129 +%r131 = zext i224 %r130 to i256 +%r132 = zext i224 %r123 to i256 +%r133 = add i256 %r131, %r132 +%r134 = lshr i256 %r133, 32 +%r135 = trunc i256 %r134 to i224 +%r136 = lshr i224 %r135, 192 +%r137 = trunc i224 %r136 to i32 +%r138 = trunc i224 %r135 to i192 +%r139 = trunc i192 %r138 to i32 +%r140 = mul i32 %r139, %r6 +%r141 = call i224 @mulPv192x32(i32* %r3, i32 %r140) +%r142 = zext i32 %r137 to i224 +%r143 = shl i224 %r142, 192 +%r144 = add i224 %r141, %r143 +%r146 = getelementptr i32, i32* %r2, i32 9 +%r147 = load i32, i32* %r146 +%r148 = zext i32 %r147 to i224 +%r149 = shl i224 %r148, 192 +%r150 = zext i192 %r138 to i224 +%r151 = or i224 %r149, %r150 +%r152 = zext i224 %r151 to i256 +%r153 = zext i224 %r144 to i256 +%r154 = add i256 %r152, %r153 +%r155 = lshr i256 %r154, 32 +%r156 = trunc i256 %r155 to i224 +%r157 = lshr i224 %r156, 192 +%r158 = trunc i224 %r157 to i32 +%r159 = trunc i224 %r156 to i192 +%r160 = trunc i192 %r159 to i32 +%r161 = mul i32 %r160, %r6 +%r162 = call i224 @mulPv192x32(i32* %r3, i32 %r161) +%r163 = zext i32 %r158 to i224 +%r164 = shl i224 %r163, 192 +%r165 = add i224 %r162, %r164 +%r167 = getelementptr i32, i32* %r2, i32 10 +%r168 = load i32, i32* %r167 +%r169 = zext i32 %r168 to i224 +%r170 = shl i224 %r169, 192 +%r171 = zext i192 %r159 to i224 +%r172 = or i224 %r170, %r171 +%r173 = zext i224 %r172 to i256 +%r174 = zext i224 %r165 to i256 +%r175 = add i256 %r173, %r174 +%r176 = lshr i256 %r175, 32 +%r177 = trunc i256 %r176 to i224 +%r178 = lshr i224 %r177, 192 +%r179 = trunc i224 %r178 to i32 +%r180 = trunc i224 %r177 to i192 +%r181 = trunc i192 %r180 to i32 +%r182 = mul i32 %r181, %r6 +%r183 = call i224 @mulPv192x32(i32* %r3, i32 %r182) +%r184 = zext i32 %r179 to i224 +%r185 = shl i224 %r184, 192 +%r186 = add i224 %r183, %r185 +%r188 = getelementptr i32, i32* %r2, i32 11 +%r189 = load i32, i32* %r188 +%r190 = zext i32 %r189 to i224 +%r191 = shl i224 %r190, 192 +%r192 = zext i192 %r180 to i224 +%r193 = or i224 %r191, %r192 +%r194 = zext i224 %r193 to i256 +%r195 = zext i224 %r186 to i256 +%r196 = add i256 %r194, %r195 +%r197 = lshr i256 %r196, 32 +%r198 = trunc i256 %r197 to i224 +%r199 = lshr i224 %r198, 192 +%r200 = trunc i224 %r199 to i32 +%r201 = trunc i224 %r198 to i192 +%r202 = zext i192 %r42 to i224 +%r203 = zext i192 %r201 to i224 +%r204 = sub i224 %r203, %r202 +%r205 = lshr i224 %r204, 192 +%r206 = trunc i224 %r205 to i1 +%r207 = select i1 %r206, i224 %r203, i224 %r204 +%r208 = trunc i224 %r207 to i192 +%r210 = getelementptr i32, i32* %r1, i32 0 +%r211 = trunc i192 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = lshr i192 %r208, 32 +%r214 = getelementptr i32, i32* %r1, i32 1 +%r215 = trunc i192 %r212 to i32 +store i32 %r215, i32* %r214 +%r216 = lshr i192 %r212, 32 +%r218 = getelementptr i32, i32* %r1, i32 2 +%r219 = trunc i192 %r216 to i32 +store i32 %r219, i32* %r218 +%r220 = lshr i192 %r216, 32 +%r222 = getelementptr i32, i32* %r1, i32 3 +%r223 = trunc i192 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i192 %r220, 32 +%r226 = getelementptr i32, i32* %r1, i32 4 +%r227 = trunc i192 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i192 %r224, 32 +%r230 = getelementptr i32, i32* %r1, i32 5 +%r231 = trunc i192 %r228 to i32 +store i32 %r231, i32* %r230 +ret void +} +define void @mcl_fp_montRedNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = load i32, i32* %r2 +%r44 = zext i32 %r43 to i64 +%r46 = getelementptr i32, i32* %r2, i32 1 +%r47 = load i32, i32* %r46 +%r48 = zext i32 %r47 to i64 +%r49 = shl i64 %r48, 32 +%r50 = or i64 %r44, %r49 +%r51 = zext i64 %r50 to i96 +%r53 = getelementptr i32, i32* %r2, i32 2 +%r54 = load i32, i32* %r53 +%r55 = zext i32 %r54 to i96 +%r56 = shl i96 %r55, 64 +%r57 = or i96 %r51, %r56 +%r58 = zext i96 %r57 to i128 +%r60 = getelementptr i32, i32* %r2, i32 3 +%r61 = load i32, i32* %r60 +%r62 = zext i32 %r61 to i128 +%r63 = shl i128 %r62, 96 +%r64 = or i128 %r58, %r63 +%r65 = zext i128 %r64 to i160 +%r67 = getelementptr i32, i32* %r2, i32 4 +%r68 = load i32, i32* %r67 +%r69 = zext i32 %r68 to i160 +%r70 = shl i160 %r69, 128 +%r71 = or i160 %r65, %r70 +%r72 = zext i160 %r71 to i192 +%r74 = getelementptr i32, i32* %r2, i32 5 +%r75 = load i32, i32* %r74 +%r76 = zext i32 %r75 to i192 +%r77 = shl i192 %r76, 160 +%r78 = or i192 %r72, %r77 +%r79 = trunc i192 %r78 to i32 +%r80 = mul i32 %r79, %r6 +%r81 = call i224 @mulPv192x32(i32* %r3, i32 %r80) +%r83 = getelementptr i32, i32* %r2, i32 6 +%r84 = load i32, i32* %r83 +%r85 = zext i32 %r84 to i224 +%r86 = shl i224 %r85, 192 +%r87 = zext i192 %r78 to i224 +%r88 = or i224 %r86, %r87 +%r89 = zext i224 %r88 to i256 +%r90 = zext i224 %r81 to i256 +%r91 = add i256 %r89, %r90 +%r92 = lshr i256 %r91, 32 +%r93 = trunc i256 %r92 to i224 +%r94 = lshr i224 %r93, 192 +%r95 = trunc i224 %r94 to i32 +%r96 = trunc i224 %r93 to i192 +%r97 = trunc i192 %r96 to i32 +%r98 = mul i32 %r97, %r6 +%r99 = call i224 @mulPv192x32(i32* %r3, i32 %r98) +%r100 = zext i32 %r95 to i224 +%r101 = shl i224 %r100, 192 +%r102 = add i224 %r99, %r101 +%r104 = getelementptr i32, i32* %r2, i32 7 +%r105 = load i32, i32* %r104 +%r106 = zext i32 %r105 to i224 +%r107 = shl i224 %r106, 192 +%r108 = zext i192 %r96 to i224 +%r109 = or i224 %r107, %r108 +%r110 = zext i224 %r109 to i256 +%r111 = zext i224 %r102 to i256 +%r112 = add i256 %r110, %r111 +%r113 = lshr i256 %r112, 32 +%r114 = trunc i256 %r113 to i224 +%r115 = lshr i224 %r114, 192 +%r116 = trunc i224 %r115 to i32 +%r117 = trunc i224 %r114 to i192 +%r118 = trunc i192 %r117 to i32 +%r119 = mul i32 %r118, %r6 +%r120 = call i224 @mulPv192x32(i32* %r3, i32 %r119) +%r121 = zext i32 %r116 to i224 +%r122 = shl i224 %r121, 192 +%r123 = add i224 %r120, %r122 +%r125 = getelementptr i32, i32* %r2, i32 8 +%r126 = load i32, i32* %r125 +%r127 = zext i32 %r126 to i224 +%r128 = shl i224 %r127, 192 +%r129 = zext i192 %r117 to i224 +%r130 = or i224 %r128, %r129 +%r131 = zext i224 %r130 to i256 +%r132 = zext i224 %r123 to i256 +%r133 = add i256 %r131, %r132 +%r134 = lshr i256 %r133, 32 +%r135 = trunc i256 %r134 to i224 +%r136 = lshr i224 %r135, 192 +%r137 = trunc i224 %r136 to i32 +%r138 = trunc i224 %r135 to i192 +%r139 = trunc i192 %r138 to i32 +%r140 = mul i32 %r139, %r6 +%r141 = call i224 @mulPv192x32(i32* %r3, i32 %r140) +%r142 = zext i32 %r137 to i224 +%r143 = shl i224 %r142, 192 +%r144 = add i224 %r141, %r143 +%r146 = getelementptr i32, i32* %r2, i32 9 +%r147 = load i32, i32* %r146 +%r148 = zext i32 %r147 to i224 +%r149 = shl i224 %r148, 192 +%r150 = zext i192 %r138 to i224 +%r151 = or i224 %r149, %r150 +%r152 = zext i224 %r151 to i256 +%r153 = zext i224 %r144 to i256 +%r154 = add i256 %r152, %r153 +%r155 = lshr i256 %r154, 32 +%r156 = trunc i256 %r155 to i224 +%r157 = lshr i224 %r156, 192 +%r158 = trunc i224 %r157 to i32 +%r159 = trunc i224 %r156 to i192 +%r160 = trunc i192 %r159 to i32 +%r161 = mul i32 %r160, %r6 +%r162 = call i224 @mulPv192x32(i32* %r3, i32 %r161) +%r163 = zext i32 %r158 to i224 +%r164 = shl i224 %r163, 192 +%r165 = add i224 %r162, %r164 +%r167 = getelementptr i32, i32* %r2, i32 10 +%r168 = load i32, i32* %r167 +%r169 = zext i32 %r168 to i224 +%r170 = shl i224 %r169, 192 +%r171 = zext i192 %r159 to i224 +%r172 = or i224 %r170, %r171 +%r173 = zext i224 %r172 to i256 +%r174 = zext i224 %r165 to i256 +%r175 = add i256 %r173, %r174 +%r176 = lshr i256 %r175, 32 +%r177 = trunc i256 %r176 to i224 +%r178 = lshr i224 %r177, 192 +%r179 = trunc i224 %r178 to i32 +%r180 = trunc i224 %r177 to i192 +%r181 = trunc i192 %r180 to i32 +%r182 = mul i32 %r181, %r6 +%r183 = call i224 @mulPv192x32(i32* %r3, i32 %r182) +%r184 = zext i32 %r179 to i224 +%r185 = shl i224 %r184, 192 +%r186 = add i224 %r183, %r185 +%r188 = getelementptr i32, i32* %r2, i32 11 +%r189 = load i32, i32* %r188 +%r190 = zext i32 %r189 to i224 +%r191 = shl i224 %r190, 192 +%r192 = zext i192 %r180 to i224 +%r193 = or i224 %r191, %r192 +%r194 = zext i224 %r193 to i256 +%r195 = zext i224 %r186 to i256 +%r196 = add i256 %r194, %r195 +%r197 = lshr i256 %r196, 32 +%r198 = trunc i256 %r197 to i224 +%r199 = lshr i224 %r198, 192 +%r200 = trunc i224 %r199 to i32 +%r201 = trunc i224 %r198 to i192 +%r202 = sub i192 %r201, %r42 +%r203 = lshr i192 %r202, 191 +%r204 = trunc i192 %r203 to i1 +%r205 = select i1 %r204, i192 %r201, i192 %r202 +%r207 = getelementptr i32, i32* %r1, i32 0 +%r208 = trunc i192 %r205 to i32 +store i32 %r208, i32* %r207 +%r209 = lshr i192 %r205, 32 +%r211 = getelementptr i32, i32* %r1, i32 1 +%r212 = trunc i192 %r209 to i32 +store i32 %r212, i32* %r211 +%r213 = lshr i192 %r209, 32 +%r215 = getelementptr i32, i32* %r1, i32 2 +%r216 = trunc i192 %r213 to i32 +store i32 %r216, i32* %r215 +%r217 = lshr i192 %r213, 32 +%r219 = getelementptr i32, i32* %r1, i32 3 +%r220 = trunc i192 %r217 to i32 +store i32 %r220, i32* %r219 +%r221 = lshr i192 %r217, 32 +%r223 = getelementptr i32, i32* %r1, i32 4 +%r224 = trunc i192 %r221 to i32 +store i32 %r224, i32* %r223 +%r225 = lshr i192 %r221, 32 +%r227 = getelementptr i32, i32* %r1, i32 5 +%r228 = trunc i192 %r225 to i32 +store i32 %r228, i32* %r227 +ret void +} +define i32 @mcl_fp_addPre6L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ %r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 %r8 = getelementptr i32, i32* %r3, i32 1 @@ -1070,28 +1456,92 @@ define i32 @mcl_fp_addPre2L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r14 = load i32, i32* %r4 -%r15 = zext i32 %r14 to i64 -%r17 = getelementptr i32, i32* %r4, i32 1 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i64 -%r20 = shl i64 %r19, 32 -%r21 = or i64 %r15, %r20 -%r22 = zext i64 %r21 to i96 -%r23 = add i96 %r13, %r22 -%r24 = trunc i96 %r23 to i64 -%r25 = trunc i64 %r24 to i32 -%r27 = getelementptr i32, i32* %r2, i32 0 -store i32 %r25, i32* %r27 -%r28 = lshr i64 %r24, 32 -%r29 = trunc i64 %r28 to i32 -%r31 = getelementptr i32, i32* %r2, i32 1 -store i32 %r29, i32* %r31 -%r32 = lshr i96 %r23, 64 -%r33 = trunc i96 %r32 to i32 -ret i32 %r33 +%r15 = getelementptr i32, i32* %r3, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r3, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r3, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r42 = load i32, i32* %r4 +%r43 = zext i32 %r42 to i64 +%r45 = getelementptr i32, i32* %r4, i32 1 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i64 +%r48 = shl i64 %r47, 32 +%r49 = or i64 %r43, %r48 +%r50 = zext i64 %r49 to i96 +%r52 = getelementptr i32, i32* %r4, i32 2 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i96 +%r55 = shl i96 %r54, 64 +%r56 = or i96 %r50, %r55 +%r57 = zext i96 %r56 to i128 +%r59 = getelementptr i32, i32* %r4, i32 3 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i128 +%r62 = shl i128 %r61, 96 +%r63 = or i128 %r57, %r62 +%r64 = zext i128 %r63 to i160 +%r66 = getelementptr i32, i32* %r4, i32 4 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i160 +%r69 = shl i160 %r68, 128 +%r70 = or i160 %r64, %r69 +%r71 = zext i160 %r70 to i192 +%r73 = getelementptr i32, i32* %r4, i32 5 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i192 +%r76 = shl i192 %r75, 160 +%r77 = or i192 %r71, %r76 +%r78 = zext i192 %r77 to i224 +%r79 = add i224 %r41, %r78 +%r80 = trunc i224 %r79 to i192 +%r82 = getelementptr i32, i32* %r2, i32 0 +%r83 = trunc i192 %r80 to i32 +store i32 %r83, i32* %r82 +%r84 = lshr i192 %r80, 32 +%r86 = getelementptr i32, i32* %r2, i32 1 +%r87 = trunc i192 %r84 to i32 +store i32 %r87, i32* %r86 +%r88 = lshr i192 %r84, 32 +%r90 = getelementptr i32, i32* %r2, i32 2 +%r91 = trunc i192 %r88 to i32 +store i32 %r91, i32* %r90 +%r92 = lshr i192 %r88, 32 +%r94 = getelementptr i32, i32* %r2, i32 3 +%r95 = trunc i192 %r92 to i32 +store i32 %r95, i32* %r94 +%r96 = lshr i192 %r92, 32 +%r98 = getelementptr i32, i32* %r2, i32 4 +%r99 = trunc i192 %r96 to i32 +store i32 %r99, i32* %r98 +%r100 = lshr i192 %r96, 32 +%r102 = getelementptr i32, i32* %r2, i32 5 +%r103 = trunc i192 %r100 to i32 +store i32 %r103, i32* %r102 +%r104 = lshr i224 %r79, 192 +%r105 = trunc i224 %r104 to i32 +ret i32 %r105 } -define i32 @mcl_fp_subPre2L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_subPre6L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 @@ -1101,300 +1551,152 @@ define i32 @mcl_fp_subPre2L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r14 = load i32, i32* %r4 -%r15 = zext i32 %r14 to i64 -%r17 = getelementptr i32, i32* %r4, i32 1 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i64 -%r20 = shl i64 %r19, 32 -%r21 = or i64 %r15, %r20 -%r22 = zext i64 %r21 to i96 -%r23 = sub i96 %r13, %r22 -%r24 = trunc i96 %r23 to i64 -%r25 = trunc i64 %r24 to i32 -%r27 = getelementptr i32, i32* %r2, i32 0 -store i32 %r25, i32* %r27 -%r28 = lshr i64 %r24, 32 -%r29 = trunc i64 %r28 to i32 -%r31 = getelementptr i32, i32* %r2, i32 1 -store i32 %r29, i32* %r31 -%r32 = lshr i96 %r23, 64 -%r33 = trunc i96 %r32 to i32 -%r35 = and i32 %r33, 1 -ret i32 %r35 -} -define void @mcl_fp_shr1_2L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = lshr i64 %r10, 1 -%r12 = trunc i64 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 0 -store i32 %r12, i32* %r14 -%r15 = lshr i64 %r11, 32 -%r16 = trunc i64 %r15 to i32 -%r18 = getelementptr i32, i32* %r1, i32 1 -store i32 %r16, i32* %r18 -ret void -} -define void @mcl_fp_add2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = zext i64 %r12 to i96 -%r22 = zext i64 %r20 to i96 -%r23 = add i96 %r21, %r22 -%r24 = trunc i96 %r23 to i64 -%r25 = trunc i64 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 0 -store i32 %r25, i32* %r27 -%r28 = lshr i64 %r24, 32 -%r29 = trunc i64 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 1 -store i32 %r29, i32* %r31 -%r32 = load i32, i32* %r4 -%r33 = zext i32 %r32 to i64 -%r35 = getelementptr i32, i32* %r4, i32 1 -%r36 = load i32, i32* %r35 -%r37 = zext i32 %r36 to i64 -%r38 = shl i64 %r37, 32 -%r39 = or i64 %r33, %r38 -%r40 = zext i64 %r39 to i96 -%r41 = sub i96 %r23, %r40 -%r42 = lshr i96 %r41, 64 -%r43 = trunc i96 %r42 to i1 -br i1%r43, label %carry, label %nocarry -nocarry: -%r44 = trunc i96 %r41 to i64 -%r45 = trunc i64 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 0 -store i32 %r45, i32* %r47 -%r48 = lshr i64 %r44, 32 -%r49 = trunc i64 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 1 -store i32 %r49, i32* %r51 -ret void -carry: -ret void -} -define void @mcl_fp_addNF2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = add i64 %r12, %r20 -%r22 = load i32, i32* %r4 -%r23 = zext i32 %r22 to i64 -%r25 = getelementptr i32, i32* %r4, i32 1 -%r26 = load i32, i32* %r25 -%r27 = zext i32 %r26 to i64 -%r28 = shl i64 %r27, 32 -%r29 = or i64 %r23, %r28 -%r30 = sub i64 %r21, %r29 -%r31 = lshr i64 %r30, 63 -%r32 = trunc i64 %r31 to i1 -%r33 = select i1 %r32, i64 %r21, i64 %r30 -%r34 = trunc i64 %r33 to i32 -%r36 = getelementptr i32, i32* %r1, i32 0 -store i32 %r34, i32* %r36 -%r37 = lshr i64 %r33, 32 -%r38 = trunc i64 %r37 to i32 -%r40 = getelementptr i32, i32* %r1, i32 1 -store i32 %r38, i32* %r40 -ret void -} -define void @mcl_fp_sub2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = zext i64 %r12 to i96 -%r22 = zext i64 %r20 to i96 -%r23 = sub i96 %r21, %r22 -%r24 = trunc i96 %r23 to i64 -%r25 = lshr i96 %r23, 64 -%r26 = trunc i96 %r25 to i1 -%r27 = trunc i64 %r24 to i32 -%r29 = getelementptr i32, i32* %r1, i32 0 -store i32 %r27, i32* %r29 -%r30 = lshr i64 %r24, 32 -%r31 = trunc i64 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 1 -store i32 %r31, i32* %r33 -br i1%r26, label %carry, label %nocarry -nocarry: -ret void -carry: -%r34 = load i32, i32* %r4 -%r35 = zext i32 %r34 to i64 -%r37 = getelementptr i32, i32* %r4, i32 1 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i64 -%r40 = shl i64 %r39, 32 -%r41 = or i64 %r35, %r40 -%r42 = add i64 %r24, %r41 -%r43 = trunc i64 %r42 to i32 -%r45 = getelementptr i32, i32* %r1, i32 0 -store i32 %r43, i32* %r45 -%r46 = lshr i64 %r42, 32 -%r47 = trunc i64 %r46 to i32 -%r49 = getelementptr i32, i32* %r1, i32 1 -store i32 %r47, i32* %r49 -ret void -} -define void @mcl_fp_subNF2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = load i32, i32* %r3 -%r14 = zext i32 %r13 to i64 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = zext i32 %r17 to i64 -%r19 = shl i64 %r18, 32 -%r20 = or i64 %r14, %r19 -%r21 = sub i64 %r12, %r20 -%r22 = lshr i64 %r21, 63 -%r23 = trunc i64 %r22 to i1 -%r24 = load i32, i32* %r4 -%r25 = zext i32 %r24 to i64 -%r27 = getelementptr i32, i32* %r4, i32 1 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i64 -%r30 = shl i64 %r29, 32 -%r31 = or i64 %r25, %r30 -%r33 = select i1 %r23, i64 %r31, i64 0 -%r34 = add i64 %r21, %r33 -%r35 = trunc i64 %r34 to i32 -%r37 = getelementptr i32, i32* %r1, i32 0 -store i32 %r35, i32* %r37 -%r38 = lshr i64 %r34, 32 -%r39 = trunc i64 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 1 -store i32 %r39, i32* %r41 -ret void -} -define void @mcl_fpDbl_add2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 +%r15 = getelementptr i32, i32* %r3, i32 2 %r16 = load i32, i32* %r15 %r17 = zext i32 %r16 to i96 %r18 = shl i96 %r17, 64 %r19 = or i96 %r13, %r18 %r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 +%r22 = getelementptr i32, i32* %r3, i32 3 %r23 = load i32, i32* %r22 %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r26 to i160 -%r50 = zext i128 %r48 to i160 -%r51 = add i160 %r49, %r50 -%r52 = trunc i160 %r51 to i64 -%r53 = trunc i64 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 0 -store i32 %r53, i32* %r55 -%r56 = lshr i64 %r52, 32 -%r57 = trunc i64 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 1 -store i32 %r57, i32* %r59 -%r60 = lshr i160 %r51, 64 -%r61 = trunc i160 %r60 to i96 -%r62 = load i32, i32* %r4 -%r63 = zext i32 %r62 to i64 -%r65 = getelementptr i32, i32* %r4, i32 1 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i64 -%r68 = shl i64 %r67, 32 -%r69 = or i64 %r63, %r68 -%r70 = zext i64 %r69 to i96 -%r71 = sub i96 %r61, %r70 -%r72 = lshr i96 %r71, 64 -%r73 = trunc i96 %r72 to i1 -%r74 = select i1 %r73, i96 %r61, i96 %r71 -%r75 = trunc i96 %r74 to i64 -%r77 = getelementptr i32, i32* %r1, i32 2 -%r78 = trunc i64 %r75 to i32 -%r80 = getelementptr i32, i32* %r77, i32 0 -store i32 %r78, i32* %r80 -%r81 = lshr i64 %r75, 32 -%r82 = trunc i64 %r81 to i32 -%r84 = getelementptr i32, i32* %r77, i32 1 -store i32 %r82, i32* %r84 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r3, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r42 = load i32, i32* %r4 +%r43 = zext i32 %r42 to i64 +%r45 = getelementptr i32, i32* %r4, i32 1 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i64 +%r48 = shl i64 %r47, 32 +%r49 = or i64 %r43, %r48 +%r50 = zext i64 %r49 to i96 +%r52 = getelementptr i32, i32* %r4, i32 2 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i96 +%r55 = shl i96 %r54, 64 +%r56 = or i96 %r50, %r55 +%r57 = zext i96 %r56 to i128 +%r59 = getelementptr i32, i32* %r4, i32 3 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i128 +%r62 = shl i128 %r61, 96 +%r63 = or i128 %r57, %r62 +%r64 = zext i128 %r63 to i160 +%r66 = getelementptr i32, i32* %r4, i32 4 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i160 +%r69 = shl i160 %r68, 128 +%r70 = or i160 %r64, %r69 +%r71 = zext i160 %r70 to i192 +%r73 = getelementptr i32, i32* %r4, i32 5 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i192 +%r76 = shl i192 %r75, 160 +%r77 = or i192 %r71, %r76 +%r78 = zext i192 %r77 to i224 +%r79 = sub i224 %r41, %r78 +%r80 = trunc i224 %r79 to i192 +%r82 = getelementptr i32, i32* %r2, i32 0 +%r83 = trunc i192 %r80 to i32 +store i32 %r83, i32* %r82 +%r84 = lshr i192 %r80, 32 +%r86 = getelementptr i32, i32* %r2, i32 1 +%r87 = trunc i192 %r84 to i32 +store i32 %r87, i32* %r86 +%r88 = lshr i192 %r84, 32 +%r90 = getelementptr i32, i32* %r2, i32 2 +%r91 = trunc i192 %r88 to i32 +store i32 %r91, i32* %r90 +%r92 = lshr i192 %r88, 32 +%r94 = getelementptr i32, i32* %r2, i32 3 +%r95 = trunc i192 %r92 to i32 +store i32 %r95, i32* %r94 +%r96 = lshr i192 %r92, 32 +%r98 = getelementptr i32, i32* %r2, i32 4 +%r99 = trunc i192 %r96 to i32 +store i32 %r99, i32* %r98 +%r100 = lshr i192 %r96, 32 +%r102 = getelementptr i32, i32* %r2, i32 5 +%r103 = trunc i192 %r100 to i32 +store i32 %r103, i32* %r102 +%r105 = lshr i224 %r79, 192 +%r106 = trunc i224 %r105 to i32 +%r107 = and i32 %r106, 1 +ret i32 %r107 +} +define void @mcl_fp_shr1_6L(i32* noalias %r1, i32* noalias %r2) +{ +%r3 = load i32, i32* %r2 +%r4 = zext i32 %r3 to i64 +%r6 = getelementptr i32, i32* %r2, i32 1 +%r7 = load i32, i32* %r6 +%r8 = zext i32 %r7 to i64 +%r9 = shl i64 %r8, 32 +%r10 = or i64 %r4, %r9 +%r11 = zext i64 %r10 to i96 +%r13 = getelementptr i32, i32* %r2, i32 2 +%r14 = load i32, i32* %r13 +%r15 = zext i32 %r14 to i96 +%r16 = shl i96 %r15, 64 +%r17 = or i96 %r11, %r16 +%r18 = zext i96 %r17 to i128 +%r20 = getelementptr i32, i32* %r2, i32 3 +%r21 = load i32, i32* %r20 +%r22 = zext i32 %r21 to i128 +%r23 = shl i128 %r22, 96 +%r24 = or i128 %r18, %r23 +%r25 = zext i128 %r24 to i160 +%r27 = getelementptr i32, i32* %r2, i32 4 +%r28 = load i32, i32* %r27 +%r29 = zext i32 %r28 to i160 +%r30 = shl i160 %r29, 128 +%r31 = or i160 %r25, %r30 +%r32 = zext i160 %r31 to i192 +%r34 = getelementptr i32, i32* %r2, i32 5 +%r35 = load i32, i32* %r34 +%r36 = zext i32 %r35 to i192 +%r37 = shl i192 %r36, 160 +%r38 = or i192 %r32, %r37 +%r39 = lshr i192 %r38, 1 +%r41 = getelementptr i32, i32* %r1, i32 0 +%r42 = trunc i192 %r39 to i32 +store i32 %r42, i32* %r41 +%r43 = lshr i192 %r39, 32 +%r45 = getelementptr i32, i32* %r1, i32 1 +%r46 = trunc i192 %r43 to i32 +store i32 %r46, i32* %r45 +%r47 = lshr i192 %r43, 32 +%r49 = getelementptr i32, i32* %r1, i32 2 +%r50 = trunc i192 %r47 to i32 +store i32 %r50, i32* %r49 +%r51 = lshr i192 %r47, 32 +%r53 = getelementptr i32, i32* %r1, i32 3 +%r54 = trunc i192 %r51 to i32 +store i32 %r54, i32* %r53 +%r55 = lshr i192 %r51, 32 +%r57 = getelementptr i32, i32* %r1, i32 4 +%r58 = trunc i192 %r55 to i32 +store i32 %r58, i32* %r57 +%r59 = lshr i192 %r55, 32 +%r61 = getelementptr i32, i32* %r1, i32 5 +%r62 = trunc i192 %r59 to i32 +store i32 %r62, i32* %r61 ret void } -define void @mcl_fpDbl_sub2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -1415,836 +1717,21 @@ define void @mcl_fpDbl_sub2L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r26 to i160 -%r50 = zext i128 %r48 to i160 -%r51 = sub i160 %r49, %r50 -%r52 = trunc i160 %r51 to i64 -%r53 = trunc i64 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 0 -store i32 %r53, i32* %r55 -%r56 = lshr i64 %r52, 32 -%r57 = trunc i64 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 1 -store i32 %r57, i32* %r59 -%r60 = lshr i160 %r51, 64 -%r61 = trunc i160 %r60 to i64 -%r62 = lshr i160 %r51, 128 -%r63 = trunc i160 %r62 to i1 -%r64 = load i32, i32* %r4 -%r65 = zext i32 %r64 to i64 -%r67 = getelementptr i32, i32* %r4, i32 1 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i64 -%r70 = shl i64 %r69, 32 -%r71 = or i64 %r65, %r70 -%r73 = select i1 %r63, i64 %r71, i64 0 -%r74 = add i64 %r61, %r73 -%r76 = getelementptr i32, i32* %r1, i32 2 -%r77 = trunc i64 %r74 to i32 -%r79 = getelementptr i32, i32* %r76, i32 0 -store i32 %r77, i32* %r79 -%r80 = lshr i64 %r74, 32 -%r81 = trunc i64 %r80 to i32 -%r83 = getelementptr i32, i32* %r76, i32 1 -store i32 %r81, i32* %r83 -ret void -} -define i128 @mulPv96x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r16 = zext i32 %r6 to i64 -%r17 = zext i32 %r10 to i64 -%r18 = shl i64 %r17, 32 -%r19 = or i64 %r16, %r18 -%r20 = zext i64 %r19 to i96 -%r21 = zext i32 %r14 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r20, %r22 -%r24 = zext i32 %r7 to i64 -%r25 = zext i32 %r11 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r24, %r26 -%r28 = zext i64 %r27 to i96 -%r29 = zext i32 %r15 to i96 -%r30 = shl i96 %r29, 64 -%r31 = or i96 %r28, %r30 -%r32 = zext i96 %r23 to i128 -%r33 = zext i96 %r31 to i128 -%r34 = shl i128 %r33, 32 -%r35 = add i128 %r32, %r34 -ret i128 %r35 -} -define void @mcl_fp_mulUnitPre3L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i128 @mulPv96x32(i32* %r2, i32 %r3) -%r5 = trunc i128 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i128 %r4, 32 -%r9 = trunc i128 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i128 %r8, 32 -%r13 = trunc i128 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i128 %r12, 32 -%r17 = trunc i128 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -ret void -} -define void @mcl_fpDbl_mulPre3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i128 @mulPv96x32(i32* %r2, i32 %r4) -%r6 = trunc i128 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i128 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i128 @mulPv96x32(i32* %r2, i32 %r10) -%r12 = add i128 %r7, %r11 -%r13 = trunc i128 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i128 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i128 @mulPv96x32(i32* %r2, i32 %r19) -%r21 = add i128 %r16, %r20 -%r23 = getelementptr i32, i32* %r1, i32 2 -%r24 = trunc i128 %r21 to i32 -%r26 = getelementptr i32, i32* %r23, i32 0 -store i32 %r24, i32* %r26 -%r27 = lshr i128 %r21, 32 -%r28 = trunc i128 %r27 to i32 -%r30 = getelementptr i32, i32* %r23, i32 1 -store i32 %r28, i32* %r30 -%r31 = lshr i128 %r27, 32 -%r32 = trunc i128 %r31 to i32 -%r34 = getelementptr i32, i32* %r23, i32 2 -store i32 %r32, i32* %r34 -%r35 = lshr i128 %r31, 32 -%r36 = trunc i128 %r35 to i32 -%r38 = getelementptr i32, i32* %r23, i32 3 -store i32 %r36, i32* %r38 -ret void -} -define void @mcl_fpDbl_sqrPre3L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i128 @mulPv96x32(i32* %r2, i32 %r3) -%r5 = trunc i128 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i128 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i128 @mulPv96x32(i32* %r2, i32 %r9) -%r11 = add i128 %r6, %r10 -%r12 = trunc i128 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i128 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i128 @mulPv96x32(i32* %r2, i32 %r18) -%r20 = add i128 %r15, %r19 -%r22 = getelementptr i32, i32* %r1, i32 2 -%r23 = trunc i128 %r20 to i32 -%r25 = getelementptr i32, i32* %r22, i32 0 -store i32 %r23, i32* %r25 -%r26 = lshr i128 %r20, 32 -%r27 = trunc i128 %r26 to i32 -%r29 = getelementptr i32, i32* %r22, i32 1 -store i32 %r27, i32* %r29 -%r30 = lshr i128 %r26, 32 -%r31 = trunc i128 %r30 to i32 -%r33 = getelementptr i32, i32* %r22, i32 2 -store i32 %r31, i32* %r33 -%r34 = lshr i128 %r30, 32 -%r35 = trunc i128 %r34 to i32 -%r37 = getelementptr i32, i32* %r22, i32 3 -store i32 %r35, i32* %r37 -ret void -} -define void @mcl_fp_mont3L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i128 @mulPv96x32(i32* %r2, i32 %r10) -%r12 = zext i128 %r11 to i160 -%r13 = trunc i128 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i128 @mulPv96x32(i32* %r4, i32 %r14) -%r16 = zext i128 %r15 to i160 -%r17 = add i160 %r12, %r16 -%r18 = lshr i160 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i128 @mulPv96x32(i32* %r2, i32 %r21) -%r23 = zext i128 %r22 to i160 -%r24 = add i160 %r18, %r23 -%r25 = trunc i160 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i128 @mulPv96x32(i32* %r4, i32 %r26) -%r28 = zext i128 %r27 to i160 -%r29 = add i160 %r24, %r28 -%r30 = lshr i160 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i128 @mulPv96x32(i32* %r2, i32 %r33) -%r35 = zext i128 %r34 to i160 -%r36 = add i160 %r30, %r35 -%r37 = trunc i160 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i128 @mulPv96x32(i32* %r4, i32 %r38) -%r40 = zext i128 %r39 to i160 -%r41 = add i160 %r36, %r40 -%r42 = lshr i160 %r41, 32 -%r43 = trunc i160 %r42 to i128 -%r44 = load i32, i32* %r4 -%r45 = zext i32 %r44 to i64 -%r47 = getelementptr i32, i32* %r4, i32 1 -%r48 = load i32, i32* %r47 -%r49 = zext i32 %r48 to i64 -%r50 = shl i64 %r49, 32 -%r51 = or i64 %r45, %r50 -%r52 = zext i64 %r51 to i96 -%r54 = getelementptr i32, i32* %r4, i32 2 -%r55 = load i32, i32* %r54 -%r56 = zext i32 %r55 to i96 -%r57 = shl i96 %r56, 64 -%r58 = or i96 %r52, %r57 -%r59 = zext i96 %r58 to i128 -%r60 = sub i128 %r43, %r59 -%r61 = lshr i128 %r60, 96 -%r62 = trunc i128 %r61 to i1 -%r63 = select i1 %r62, i128 %r43, i128 %r60 -%r64 = trunc i128 %r63 to i96 -%r65 = trunc i96 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 0 -store i32 %r65, i32* %r67 -%r68 = lshr i96 %r64, 32 -%r69 = trunc i96 %r68 to i32 -%r71 = getelementptr i32, i32* %r1, i32 1 -store i32 %r69, i32* %r71 -%r72 = lshr i96 %r68, 32 -%r73 = trunc i96 %r72 to i32 -%r75 = getelementptr i32, i32* %r1, i32 2 -store i32 %r73, i32* %r75 -ret void -} -define void @mcl_fp_montNF3L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i128 @mulPv96x32(i32* %r2, i32 %r8) -%r10 = trunc i128 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i128 @mulPv96x32(i32* %r4, i32 %r11) -%r13 = add i128 %r9, %r12 -%r14 = lshr i128 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i128 @mulPv96x32(i32* %r2, i32 %r17) -%r19 = add i128 %r14, %r18 -%r20 = trunc i128 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i128 @mulPv96x32(i32* %r4, i32 %r21) -%r23 = add i128 %r19, %r22 -%r24 = lshr i128 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i128 @mulPv96x32(i32* %r2, i32 %r27) -%r29 = add i128 %r24, %r28 -%r30 = trunc i128 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i128 @mulPv96x32(i32* %r4, i32 %r31) -%r33 = add i128 %r29, %r32 -%r34 = lshr i128 %r33, 32 -%r35 = trunc i128 %r34 to i96 -%r36 = load i32, i32* %r4 -%r37 = zext i32 %r36 to i64 -%r39 = getelementptr i32, i32* %r4, i32 1 -%r40 = load i32, i32* %r39 -%r41 = zext i32 %r40 to i64 -%r42 = shl i64 %r41, 32 -%r43 = or i64 %r37, %r42 -%r44 = zext i64 %r43 to i96 -%r46 = getelementptr i32, i32* %r4, i32 2 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i96 -%r49 = shl i96 %r48, 64 -%r50 = or i96 %r44, %r49 -%r51 = sub i96 %r35, %r50 -%r52 = lshr i96 %r51, 95 -%r53 = trunc i96 %r52 to i1 -%r54 = select i1 %r53, i96 %r35, i96 %r51 -%r55 = trunc i96 %r54 to i32 -%r57 = getelementptr i32, i32* %r1, i32 0 -store i32 %r55, i32* %r57 -%r58 = lshr i96 %r54, 32 -%r59 = trunc i96 %r58 to i32 -%r61 = getelementptr i32, i32* %r1, i32 1 -store i32 %r59, i32* %r61 -%r62 = lshr i96 %r58, 32 -%r63 = trunc i96 %r62 to i32 -%r65 = getelementptr i32, i32* %r1, i32 2 -store i32 %r63, i32* %r65 -ret void -} -define void @mcl_fp_montRed3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = load i32, i32* %r2 -%r23 = zext i32 %r22 to i64 -%r25 = getelementptr i32, i32* %r2, i32 1 -%r26 = load i32, i32* %r25 -%r27 = zext i32 %r26 to i64 -%r28 = shl i64 %r27, 32 -%r29 = or i64 %r23, %r28 -%r30 = zext i64 %r29 to i96 -%r32 = getelementptr i32, i32* %r2, i32 2 -%r33 = load i32, i32* %r32 -%r34 = zext i32 %r33 to i96 -%r35 = shl i96 %r34, 64 -%r36 = or i96 %r30, %r35 -%r37 = zext i96 %r36 to i128 -%r39 = getelementptr i32, i32* %r2, i32 3 -%r40 = load i32, i32* %r39 -%r41 = zext i32 %r40 to i128 -%r42 = shl i128 %r41, 96 -%r43 = or i128 %r37, %r42 -%r44 = zext i128 %r43 to i160 -%r46 = getelementptr i32, i32* %r2, i32 4 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i160 -%r49 = shl i160 %r48, 128 -%r50 = or i160 %r44, %r49 -%r51 = zext i160 %r50 to i192 -%r53 = getelementptr i32, i32* %r2, i32 5 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i192 -%r56 = shl i192 %r55, 160 -%r57 = or i192 %r51, %r56 -%r58 = zext i192 %r57 to i224 -%r59 = trunc i224 %r58 to i32 -%r60 = mul i32 %r59, %r6 -%r61 = call i128 @mulPv96x32(i32* %r3, i32 %r60) -%r62 = zext i128 %r61 to i224 -%r63 = add i224 %r58, %r62 -%r64 = lshr i224 %r63, 32 -%r65 = trunc i224 %r64 to i192 -%r66 = trunc i192 %r65 to i32 -%r67 = mul i32 %r66, %r6 -%r68 = call i128 @mulPv96x32(i32* %r3, i32 %r67) -%r69 = zext i128 %r68 to i192 -%r70 = add i192 %r65, %r69 -%r71 = lshr i192 %r70, 32 -%r72 = trunc i192 %r71 to i160 -%r73 = trunc i160 %r72 to i32 -%r74 = mul i32 %r73, %r6 -%r75 = call i128 @mulPv96x32(i32* %r3, i32 %r74) -%r76 = zext i128 %r75 to i160 -%r77 = add i160 %r72, %r76 -%r78 = lshr i160 %r77, 32 -%r79 = trunc i160 %r78 to i128 -%r80 = zext i96 %r21 to i128 -%r81 = sub i128 %r79, %r80 -%r82 = lshr i128 %r81, 96 -%r83 = trunc i128 %r82 to i1 -%r84 = select i1 %r83, i128 %r79, i128 %r81 -%r85 = trunc i128 %r84 to i96 -%r86 = trunc i96 %r85 to i32 -%r88 = getelementptr i32, i32* %r1, i32 0 -store i32 %r86, i32* %r88 -%r89 = lshr i96 %r85, 32 -%r90 = trunc i96 %r89 to i32 -%r92 = getelementptr i32, i32* %r1, i32 1 -store i32 %r90, i32* %r92 -%r93 = lshr i96 %r89, 32 -%r94 = trunc i96 %r93 to i32 -%r96 = getelementptr i32, i32* %r1, i32 2 -store i32 %r94, i32* %r96 -ret void -} -define i32 @mcl_fp_addPre3L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r21 = load i32, i32* %r4 -%r22 = zext i32 %r21 to i64 -%r24 = getelementptr i32, i32* %r4, i32 1 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i64 -%r27 = shl i64 %r26, 32 -%r28 = or i64 %r22, %r27 -%r29 = zext i64 %r28 to i96 -%r31 = getelementptr i32, i32* %r4, i32 2 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i96 -%r34 = shl i96 %r33, 64 -%r35 = or i96 %r29, %r34 -%r36 = zext i96 %r35 to i128 -%r37 = add i128 %r20, %r36 -%r38 = trunc i128 %r37 to i96 -%r39 = trunc i96 %r38 to i32 -%r41 = getelementptr i32, i32* %r2, i32 0 -store i32 %r39, i32* %r41 -%r42 = lshr i96 %r38, 32 -%r43 = trunc i96 %r42 to i32 -%r45 = getelementptr i32, i32* %r2, i32 1 -store i32 %r43, i32* %r45 -%r46 = lshr i96 %r42, 32 -%r47 = trunc i96 %r46 to i32 -%r49 = getelementptr i32, i32* %r2, i32 2 -store i32 %r47, i32* %r49 -%r50 = lshr i128 %r37, 96 -%r51 = trunc i128 %r50 to i32 -ret i32 %r51 -} -define i32 @mcl_fp_subPre3L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r21 = load i32, i32* %r4 -%r22 = zext i32 %r21 to i64 -%r24 = getelementptr i32, i32* %r4, i32 1 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i64 -%r27 = shl i64 %r26, 32 -%r28 = or i64 %r22, %r27 -%r29 = zext i64 %r28 to i96 -%r31 = getelementptr i32, i32* %r4, i32 2 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i96 -%r34 = shl i96 %r33, 64 -%r35 = or i96 %r29, %r34 -%r36 = zext i96 %r35 to i128 -%r37 = sub i128 %r20, %r36 -%r38 = trunc i128 %r37 to i96 -%r39 = trunc i96 %r38 to i32 -%r41 = getelementptr i32, i32* %r2, i32 0 -store i32 %r39, i32* %r41 -%r42 = lshr i96 %r38, 32 -%r43 = trunc i96 %r42 to i32 -%r45 = getelementptr i32, i32* %r2, i32 1 -store i32 %r43, i32* %r45 -%r46 = lshr i96 %r42, 32 -%r47 = trunc i96 %r46 to i32 -%r49 = getelementptr i32, i32* %r2, i32 2 -store i32 %r47, i32* %r49 -%r50 = lshr i128 %r37, 96 -%r51 = trunc i128 %r50 to i32 -%r53 = and i32 %r51, 1 -ret i32 %r53 -} -define void @mcl_fp_shr1_3L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = lshr i96 %r17, 1 -%r19 = trunc i96 %r18 to i32 -%r21 = getelementptr i32, i32* %r1, i32 0 -store i32 %r19, i32* %r21 -%r22 = lshr i96 %r18, 32 -%r23 = trunc i96 %r22 to i32 -%r25 = getelementptr i32, i32* %r1, i32 1 -store i32 %r23, i32* %r25 -%r26 = lshr i96 %r22, 32 -%r27 = trunc i96 %r26 to i32 -%r29 = getelementptr i32, i32* %r1, i32 2 -store i32 %r27, i32* %r29 -ret void -} -define void @mcl_fp_add3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = load i32, i32* %r3 -%r21 = zext i32 %r20 to i64 -%r23 = getelementptr i32, i32* %r3, i32 1 -%r24 = load i32, i32* %r23 -%r25 = zext i32 %r24 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r21, %r26 -%r28 = zext i64 %r27 to i96 -%r30 = getelementptr i32, i32* %r3, i32 2 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i96 -%r33 = shl i96 %r32, 64 -%r34 = or i96 %r28, %r33 -%r35 = zext i96 %r19 to i128 -%r36 = zext i96 %r34 to i128 -%r37 = add i128 %r35, %r36 -%r38 = trunc i128 %r37 to i96 -%r39 = trunc i96 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 0 -store i32 %r39, i32* %r41 -%r42 = lshr i96 %r38, 32 -%r43 = trunc i96 %r42 to i32 -%r45 = getelementptr i32, i32* %r1, i32 1 -store i32 %r43, i32* %r45 -%r46 = lshr i96 %r42, 32 -%r47 = trunc i96 %r46 to i32 -%r49 = getelementptr i32, i32* %r1, i32 2 -store i32 %r47, i32* %r49 -%r50 = load i32, i32* %r4 -%r51 = zext i32 %r50 to i64 -%r53 = getelementptr i32, i32* %r4, i32 1 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i64 -%r56 = shl i64 %r55, 32 -%r57 = or i64 %r51, %r56 -%r58 = zext i64 %r57 to i96 -%r60 = getelementptr i32, i32* %r4, i32 2 -%r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i96 -%r63 = shl i96 %r62, 64 -%r64 = or i96 %r58, %r63 -%r65 = zext i96 %r64 to i128 -%r66 = sub i128 %r37, %r65 -%r67 = lshr i128 %r66, 96 -%r68 = trunc i128 %r67 to i1 -br i1%r68, label %carry, label %nocarry -nocarry: -%r69 = trunc i128 %r66 to i96 -%r70 = trunc i96 %r69 to i32 -%r72 = getelementptr i32, i32* %r1, i32 0 -store i32 %r70, i32* %r72 -%r73 = lshr i96 %r69, 32 -%r74 = trunc i96 %r73 to i32 -%r76 = getelementptr i32, i32* %r1, i32 1 -store i32 %r74, i32* %r76 -%r77 = lshr i96 %r73, 32 -%r78 = trunc i96 %r77 to i32 -%r80 = getelementptr i32, i32* %r1, i32 2 -store i32 %r78, i32* %r80 -ret void -carry: -ret void -} -define void @mcl_fp_addNF3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = load i32, i32* %r3 -%r21 = zext i32 %r20 to i64 -%r23 = getelementptr i32, i32* %r3, i32 1 -%r24 = load i32, i32* %r23 -%r25 = zext i32 %r24 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r21, %r26 -%r28 = zext i64 %r27 to i96 -%r30 = getelementptr i32, i32* %r3, i32 2 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i96 -%r33 = shl i96 %r32, 64 -%r34 = or i96 %r28, %r33 -%r35 = add i96 %r19, %r34 -%r36 = load i32, i32* %r4 -%r37 = zext i32 %r36 to i64 -%r39 = getelementptr i32, i32* %r4, i32 1 -%r40 = load i32, i32* %r39 -%r41 = zext i32 %r40 to i64 -%r42 = shl i64 %r41, 32 -%r43 = or i64 %r37, %r42 -%r44 = zext i64 %r43 to i96 -%r46 = getelementptr i32, i32* %r4, i32 2 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i96 -%r49 = shl i96 %r48, 64 -%r50 = or i96 %r44, %r49 -%r51 = sub i96 %r35, %r50 -%r52 = lshr i96 %r51, 95 -%r53 = trunc i96 %r52 to i1 -%r54 = select i1 %r53, i96 %r35, i96 %r51 -%r55 = trunc i96 %r54 to i32 -%r57 = getelementptr i32, i32* %r1, i32 0 -store i32 %r55, i32* %r57 -%r58 = lshr i96 %r54, 32 -%r59 = trunc i96 %r58 to i32 -%r61 = getelementptr i32, i32* %r1, i32 1 -store i32 %r59, i32* %r61 -%r62 = lshr i96 %r58, 32 -%r63 = trunc i96 %r62 to i32 -%r65 = getelementptr i32, i32* %r1, i32 2 -store i32 %r63, i32* %r65 -ret void -} -define void @mcl_fp_sub3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = load i32, i32* %r3 -%r21 = zext i32 %r20 to i64 -%r23 = getelementptr i32, i32* %r3, i32 1 -%r24 = load i32, i32* %r23 -%r25 = zext i32 %r24 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r21, %r26 -%r28 = zext i64 %r27 to i96 -%r30 = getelementptr i32, i32* %r3, i32 2 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i96 -%r33 = shl i96 %r32, 64 -%r34 = or i96 %r28, %r33 -%r35 = zext i96 %r19 to i128 -%r36 = zext i96 %r34 to i128 -%r37 = sub i128 %r35, %r36 -%r38 = trunc i128 %r37 to i96 -%r39 = lshr i128 %r37, 96 -%r40 = trunc i128 %r39 to i1 -%r41 = trunc i96 %r38 to i32 -%r43 = getelementptr i32, i32* %r1, i32 0 -store i32 %r41, i32* %r43 -%r44 = lshr i96 %r38, 32 -%r45 = trunc i96 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 1 -store i32 %r45, i32* %r47 -%r48 = lshr i96 %r44, 32 -%r49 = trunc i96 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 2 -store i32 %r49, i32* %r51 -br i1%r40, label %carry, label %nocarry -nocarry: -ret void -carry: -%r52 = load i32, i32* %r4 -%r53 = zext i32 %r52 to i64 -%r55 = getelementptr i32, i32* %r4, i32 1 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i64 -%r58 = shl i64 %r57, 32 -%r59 = or i64 %r53, %r58 -%r60 = zext i64 %r59 to i96 -%r62 = getelementptr i32, i32* %r4, i32 2 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i96 -%r65 = shl i96 %r64, 64 -%r66 = or i96 %r60, %r65 -%r67 = add i96 %r38, %r66 -%r68 = trunc i96 %r67 to i32 -%r70 = getelementptr i32, i32* %r1, i32 0 -store i32 %r68, i32* %r70 -%r71 = lshr i96 %r67, 32 -%r72 = trunc i96 %r71 to i32 -%r74 = getelementptr i32, i32* %r1, i32 1 -store i32 %r72, i32* %r74 -%r75 = lshr i96 %r71, 32 -%r76 = trunc i96 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 2 -store i32 %r76, i32* %r78 -ret void -} -define void @mcl_fp_subNF3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = load i32, i32* %r3 -%r21 = zext i32 %r20 to i64 -%r23 = getelementptr i32, i32* %r3, i32 1 -%r24 = load i32, i32* %r23 -%r25 = zext i32 %r24 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r21, %r26 -%r28 = zext i64 %r27 to i96 -%r30 = getelementptr i32, i32* %r3, i32 2 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i96 -%r33 = shl i96 %r32, 64 -%r34 = or i96 %r28, %r33 -%r35 = sub i96 %r19, %r34 -%r36 = lshr i96 %r35, 95 -%r37 = trunc i96 %r36 to i1 -%r38 = load i32, i32* %r4 -%r39 = zext i32 %r38 to i64 -%r41 = getelementptr i32, i32* %r4, i32 1 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i64 -%r44 = shl i64 %r43, 32 -%r45 = or i64 %r39, %r44 -%r46 = zext i64 %r45 to i96 -%r48 = getelementptr i32, i32* %r4, i32 2 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i96 -%r51 = shl i96 %r50, 64 -%r52 = or i96 %r46, %r51 -%r54 = select i1 %r37, i96 %r52, i96 0 -%r55 = add i96 %r35, %r54 -%r56 = trunc i96 %r55 to i32 -%r58 = getelementptr i32, i32* %r1, i32 0 -store i32 %r56, i32* %r58 -%r59 = lshr i96 %r55, 32 -%r60 = trunc i96 %r59 to i32 -%r62 = getelementptr i32, i32* %r1, i32 1 -store i32 %r60, i32* %r62 -%r63 = lshr i96 %r59, 32 -%r64 = trunc i96 %r63 to i32 -%r66 = getelementptr i32, i32* %r1, i32 2 -store i32 %r64, i32* %r66 -ret void -} -define void @mcl_fpDbl_add3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = load i32, i32* %r3 -%r42 = zext i32 %r41 to i64 -%r44 = getelementptr i32, i32* %r3, i32 1 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = load i32, i32* %r3 +%r42 = zext i32 %r41 to i64 +%r44 = getelementptr i32, i32* %r3, i32 1 %r45 = load i32, i32* %r44 %r46 = zext i32 %r45 to i64 %r47 = shl i64 %r46, 32 @@ -2276,54 +1763,96 @@ define void @mcl_fpDbl_add3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r77 = zext i192 %r40 to i224 %r78 = zext i192 %r76 to i224 %r79 = add i224 %r77, %r78 -%r80 = trunc i224 %r79 to i96 -%r81 = trunc i96 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 0 -store i32 %r81, i32* %r83 -%r84 = lshr i96 %r80, 32 -%r85 = trunc i96 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 1 -store i32 %r85, i32* %r87 -%r88 = lshr i96 %r84, 32 -%r89 = trunc i96 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 2 -store i32 %r89, i32* %r91 -%r92 = lshr i224 %r79, 96 -%r93 = trunc i224 %r92 to i128 -%r94 = load i32, i32* %r4 -%r95 = zext i32 %r94 to i64 -%r97 = getelementptr i32, i32* %r4, i32 1 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i64 -%r100 = shl i64 %r99, 32 -%r101 = or i64 %r95, %r100 -%r102 = zext i64 %r101 to i96 -%r104 = getelementptr i32, i32* %r4, i32 2 -%r105 = load i32, i32* %r104 -%r106 = zext i32 %r105 to i96 -%r107 = shl i96 %r106, 64 -%r108 = or i96 %r102, %r107 -%r109 = zext i96 %r108 to i128 -%r110 = sub i128 %r93, %r109 -%r111 = lshr i128 %r110, 96 -%r112 = trunc i128 %r111 to i1 -%r113 = select i1 %r112, i128 %r93, i128 %r110 -%r114 = trunc i128 %r113 to i96 -%r116 = getelementptr i32, i32* %r1, i32 3 -%r117 = trunc i96 %r114 to i32 -%r119 = getelementptr i32, i32* %r116, i32 0 -store i32 %r117, i32* %r119 -%r120 = lshr i96 %r114, 32 -%r121 = trunc i96 %r120 to i32 -%r123 = getelementptr i32, i32* %r116, i32 1 -store i32 %r121, i32* %r123 -%r124 = lshr i96 %r120, 32 -%r125 = trunc i96 %r124 to i32 -%r127 = getelementptr i32, i32* %r116, i32 2 -store i32 %r125, i32* %r127 +%r80 = trunc i224 %r79 to i192 +%r82 = getelementptr i32, i32* %r1, i32 0 +%r83 = trunc i192 %r80 to i32 +store i32 %r83, i32* %r82 +%r84 = lshr i192 %r80, 32 +%r86 = getelementptr i32, i32* %r1, i32 1 +%r87 = trunc i192 %r84 to i32 +store i32 %r87, i32* %r86 +%r88 = lshr i192 %r84, 32 +%r90 = getelementptr i32, i32* %r1, i32 2 +%r91 = trunc i192 %r88 to i32 +store i32 %r91, i32* %r90 +%r92 = lshr i192 %r88, 32 +%r94 = getelementptr i32, i32* %r1, i32 3 +%r95 = trunc i192 %r92 to i32 +store i32 %r95, i32* %r94 +%r96 = lshr i192 %r92, 32 +%r98 = getelementptr i32, i32* %r1, i32 4 +%r99 = trunc i192 %r96 to i32 +store i32 %r99, i32* %r98 +%r100 = lshr i192 %r96, 32 +%r102 = getelementptr i32, i32* %r1, i32 5 +%r103 = trunc i192 %r100 to i32 +store i32 %r103, i32* %r102 +%r104 = load i32, i32* %r4 +%r105 = zext i32 %r104 to i64 +%r107 = getelementptr i32, i32* %r4, i32 1 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i64 +%r110 = shl i64 %r109, 32 +%r111 = or i64 %r105, %r110 +%r112 = zext i64 %r111 to i96 +%r114 = getelementptr i32, i32* %r4, i32 2 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i96 +%r117 = shl i96 %r116, 64 +%r118 = or i96 %r112, %r117 +%r119 = zext i96 %r118 to i128 +%r121 = getelementptr i32, i32* %r4, i32 3 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i128 +%r124 = shl i128 %r123, 96 +%r125 = or i128 %r119, %r124 +%r126 = zext i128 %r125 to i160 +%r128 = getelementptr i32, i32* %r4, i32 4 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i160 +%r131 = shl i160 %r130, 128 +%r132 = or i160 %r126, %r131 +%r133 = zext i160 %r132 to i192 +%r135 = getelementptr i32, i32* %r4, i32 5 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i192 +%r138 = shl i192 %r137, 160 +%r139 = or i192 %r133, %r138 +%r140 = zext i192 %r139 to i224 +%r141 = sub i224 %r79, %r140 +%r142 = lshr i224 %r141, 192 +%r143 = trunc i224 %r142 to i1 +br i1%r143, label %carry, label %nocarry +nocarry: +%r144 = trunc i224 %r141 to i192 +%r146 = getelementptr i32, i32* %r1, i32 0 +%r147 = trunc i192 %r144 to i32 +store i32 %r147, i32* %r146 +%r148 = lshr i192 %r144, 32 +%r150 = getelementptr i32, i32* %r1, i32 1 +%r151 = trunc i192 %r148 to i32 +store i32 %r151, i32* %r150 +%r152 = lshr i192 %r148, 32 +%r154 = getelementptr i32, i32* %r1, i32 2 +%r155 = trunc i192 %r152 to i32 +store i32 %r155, i32* %r154 +%r156 = lshr i192 %r152, 32 +%r158 = getelementptr i32, i32* %r1, i32 3 +%r159 = trunc i192 %r156 to i32 +store i32 %r159, i32* %r158 +%r160 = lshr i192 %r156, 32 +%r162 = getelementptr i32, i32* %r1, i32 4 +%r163 = trunc i192 %r160 to i32 +store i32 %r163, i32* %r162 +%r164 = lshr i192 %r160, 32 +%r166 = getelementptr i32, i32* %r1, i32 5 +%r167 = trunc i192 %r164 to i32 +store i32 %r167, i32* %r166 +ret void +carry: ret void } -define void @mcl_fpDbl_sub3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_addNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -2387,1046 +1916,351 @@ define void @mcl_fpDbl_sub3L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r74 = zext i32 %r73 to i192 %r75 = shl i192 %r74, 160 %r76 = or i192 %r70, %r75 -%r77 = zext i192 %r40 to i224 -%r78 = zext i192 %r76 to i224 -%r79 = sub i224 %r77, %r78 -%r80 = trunc i224 %r79 to i96 -%r81 = trunc i96 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 0 -store i32 %r81, i32* %r83 -%r84 = lshr i96 %r80, 32 -%r85 = trunc i96 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 1 -store i32 %r85, i32* %r87 -%r88 = lshr i96 %r84, 32 -%r89 = trunc i96 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 2 -store i32 %r89, i32* %r91 -%r92 = lshr i224 %r79, 96 -%r93 = trunc i224 %r92 to i96 -%r94 = lshr i224 %r79, 192 -%r95 = trunc i224 %r94 to i1 -%r96 = load i32, i32* %r4 -%r97 = zext i32 %r96 to i64 -%r99 = getelementptr i32, i32* %r4, i32 1 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i64 -%r102 = shl i64 %r101, 32 -%r103 = or i64 %r97, %r102 -%r104 = zext i64 %r103 to i96 -%r106 = getelementptr i32, i32* %r4, i32 2 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i96 -%r109 = shl i96 %r108, 64 -%r110 = or i96 %r104, %r109 -%r112 = select i1 %r95, i96 %r110, i96 0 -%r113 = add i96 %r93, %r112 -%r115 = getelementptr i32, i32* %r1, i32 3 -%r116 = trunc i96 %r113 to i32 -%r118 = getelementptr i32, i32* %r115, i32 0 -store i32 %r116, i32* %r118 -%r119 = lshr i96 %r113, 32 -%r120 = trunc i96 %r119 to i32 -%r122 = getelementptr i32, i32* %r115, i32 1 -store i32 %r120, i32* %r122 -%r123 = lshr i96 %r119, 32 -%r124 = trunc i96 %r123 to i32 -%r126 = getelementptr i32, i32* %r115, i32 2 -store i32 %r124, i32* %r126 -ret void -} -define i160 @mulPv128x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r20 = zext i32 %r6 to i64 -%r21 = zext i32 %r10 to i64 -%r22 = shl i64 %r21, 32 -%r23 = or i64 %r20, %r22 -%r24 = zext i64 %r23 to i96 -%r25 = zext i32 %r14 to i96 -%r26 = shl i96 %r25, 64 -%r27 = or i96 %r24, %r26 -%r28 = zext i96 %r27 to i128 -%r29 = zext i32 %r18 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r28, %r30 -%r32 = zext i32 %r7 to i64 -%r33 = zext i32 %r11 to i64 -%r34 = shl i64 %r33, 32 -%r35 = or i64 %r32, %r34 -%r36 = zext i64 %r35 to i96 -%r37 = zext i32 %r15 to i96 -%r38 = shl i96 %r37, 64 -%r39 = or i96 %r36, %r38 -%r40 = zext i96 %r39 to i128 -%r41 = zext i32 %r19 to i128 -%r42 = shl i128 %r41, 96 -%r43 = or i128 %r40, %r42 -%r44 = zext i128 %r31 to i160 -%r45 = zext i128 %r43 to i160 -%r46 = shl i160 %r45, 32 -%r47 = add i160 %r44, %r46 -ret i160 %r47 -} -define void @mcl_fp_mulUnitPre4L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i160 @mulPv128x32(i32* %r2, i32 %r3) -%r5 = trunc i160 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i160 %r4, 32 -%r9 = trunc i160 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i160 %r8, 32 -%r13 = trunc i160 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i160 %r12, 32 -%r17 = trunc i160 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i160 %r16, 32 -%r21 = trunc i160 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -ret void -} -define void @mcl_fpDbl_mulPre4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i160 @mulPv128x32(i32* %r2, i32 %r4) -%r6 = trunc i160 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i160 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i160 @mulPv128x32(i32* %r2, i32 %r10) -%r12 = add i160 %r7, %r11 -%r13 = trunc i160 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i160 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i160 @mulPv128x32(i32* %r2, i32 %r19) -%r21 = add i160 %r16, %r20 -%r22 = trunc i160 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i160 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i160 @mulPv128x32(i32* %r2, i32 %r28) -%r30 = add i160 %r25, %r29 -%r32 = getelementptr i32, i32* %r1, i32 3 -%r33 = trunc i160 %r30 to i32 -%r35 = getelementptr i32, i32* %r32, i32 0 -store i32 %r33, i32* %r35 -%r36 = lshr i160 %r30, 32 -%r37 = trunc i160 %r36 to i32 -%r39 = getelementptr i32, i32* %r32, i32 1 -store i32 %r37, i32* %r39 -%r40 = lshr i160 %r36, 32 -%r41 = trunc i160 %r40 to i32 -%r43 = getelementptr i32, i32* %r32, i32 2 -store i32 %r41, i32* %r43 -%r44 = lshr i160 %r40, 32 -%r45 = trunc i160 %r44 to i32 -%r47 = getelementptr i32, i32* %r32, i32 3 -store i32 %r45, i32* %r47 -%r48 = lshr i160 %r44, 32 -%r49 = trunc i160 %r48 to i32 -%r51 = getelementptr i32, i32* %r32, i32 4 -store i32 %r49, i32* %r51 +%r77 = add i192 %r40, %r76 +%r78 = load i32, i32* %r4 +%r79 = zext i32 %r78 to i64 +%r81 = getelementptr i32, i32* %r4, i32 1 +%r82 = load i32, i32* %r81 +%r83 = zext i32 %r82 to i64 +%r84 = shl i64 %r83, 32 +%r85 = or i64 %r79, %r84 +%r86 = zext i64 %r85 to i96 +%r88 = getelementptr i32, i32* %r4, i32 2 +%r89 = load i32, i32* %r88 +%r90 = zext i32 %r89 to i96 +%r91 = shl i96 %r90, 64 +%r92 = or i96 %r86, %r91 +%r93 = zext i96 %r92 to i128 +%r95 = getelementptr i32, i32* %r4, i32 3 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i128 +%r98 = shl i128 %r97, 96 +%r99 = or i128 %r93, %r98 +%r100 = zext i128 %r99 to i160 +%r102 = getelementptr i32, i32* %r4, i32 4 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i160 +%r105 = shl i160 %r104, 128 +%r106 = or i160 %r100, %r105 +%r107 = zext i160 %r106 to i192 +%r109 = getelementptr i32, i32* %r4, i32 5 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i192 +%r112 = shl i192 %r111, 160 +%r113 = or i192 %r107, %r112 +%r114 = sub i192 %r77, %r113 +%r115 = lshr i192 %r114, 191 +%r116 = trunc i192 %r115 to i1 +%r117 = select i1 %r116, i192 %r77, i192 %r114 +%r119 = getelementptr i32, i32* %r1, i32 0 +%r120 = trunc i192 %r117 to i32 +store i32 %r120, i32* %r119 +%r121 = lshr i192 %r117, 32 +%r123 = getelementptr i32, i32* %r1, i32 1 +%r124 = trunc i192 %r121 to i32 +store i32 %r124, i32* %r123 +%r125 = lshr i192 %r121, 32 +%r127 = getelementptr i32, i32* %r1, i32 2 +%r128 = trunc i192 %r125 to i32 +store i32 %r128, i32* %r127 +%r129 = lshr i192 %r125, 32 +%r131 = getelementptr i32, i32* %r1, i32 3 +%r132 = trunc i192 %r129 to i32 +store i32 %r132, i32* %r131 +%r133 = lshr i192 %r129, 32 +%r135 = getelementptr i32, i32* %r1, i32 4 +%r136 = trunc i192 %r133 to i32 +store i32 %r136, i32* %r135 +%r137 = lshr i192 %r133, 32 +%r139 = getelementptr i32, i32* %r1, i32 5 +%r140 = trunc i192 %r137 to i32 +store i32 %r140, i32* %r139 ret void } -define void @mcl_fpDbl_sqrPre4L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fp_sub6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r3 = load i32, i32* %r2 -%r4 = call i160 @mulPv128x32(i32* %r2, i32 %r3) -%r5 = trunc i160 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i160 %r4, 32 +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 %r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 -%r10 = call i160 @mulPv128x32(i32* %r2, i32 %r9) -%r11 = add i160 %r6, %r10 -%r12 = trunc i160 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i160 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i160 @mulPv128x32(i32* %r2, i32 %r18) -%r20 = add i160 %r15, %r19 -%r21 = trunc i160 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i160 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i160 @mulPv128x32(i32* %r2, i32 %r27) -%r29 = add i160 %r24, %r28 -%r31 = getelementptr i32, i32* %r1, i32 3 -%r32 = trunc i160 %r29 to i32 -%r34 = getelementptr i32, i32* %r31, i32 0 -store i32 %r32, i32* %r34 -%r35 = lshr i160 %r29, 32 -%r36 = trunc i160 %r35 to i32 -%r38 = getelementptr i32, i32* %r31, i32 1 -store i32 %r36, i32* %r38 -%r39 = lshr i160 %r35, 32 -%r40 = trunc i160 %r39 to i32 -%r42 = getelementptr i32, i32* %r31, i32 2 -store i32 %r40, i32* %r42 -%r43 = lshr i160 %r39, 32 -%r44 = trunc i160 %r43 to i32 -%r46 = getelementptr i32, i32* %r31, i32 3 -store i32 %r44, i32* %r46 -%r47 = lshr i160 %r43, 32 -%r48 = trunc i160 %r47 to i32 -%r50 = getelementptr i32, i32* %r31, i32 4 -store i32 %r48, i32* %r50 -ret void -} -define void @mcl_fp_mont4L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i160 @mulPv128x32(i32* %r2, i32 %r10) -%r12 = zext i160 %r11 to i192 -%r13 = trunc i160 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i160 @mulPv128x32(i32* %r4, i32 %r14) -%r16 = zext i160 %r15 to i192 -%r17 = add i192 %r12, %r16 -%r18 = lshr i192 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i160 @mulPv128x32(i32* %r2, i32 %r21) -%r23 = zext i160 %r22 to i192 -%r24 = add i192 %r18, %r23 -%r25 = trunc i192 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i160 @mulPv128x32(i32* %r4, i32 %r26) -%r28 = zext i160 %r27 to i192 -%r29 = add i192 %r24, %r28 -%r30 = lshr i192 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i160 @mulPv128x32(i32* %r2, i32 %r33) -%r35 = zext i160 %r34 to i192 -%r36 = add i192 %r30, %r35 -%r37 = trunc i192 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i160 @mulPv128x32(i32* %r4, i32 %r38) -%r40 = zext i160 %r39 to i192 -%r41 = add i192 %r36, %r40 -%r42 = lshr i192 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i160 @mulPv128x32(i32* %r2, i32 %r45) -%r47 = zext i160 %r46 to i192 -%r48 = add i192 %r42, %r47 -%r49 = trunc i192 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i160 @mulPv128x32(i32* %r4, i32 %r50) -%r52 = zext i160 %r51 to i192 -%r53 = add i192 %r48, %r52 -%r54 = lshr i192 %r53, 32 -%r55 = trunc i192 %r54 to i160 -%r56 = load i32, i32* %r4 -%r57 = zext i32 %r56 to i64 -%r59 = getelementptr i32, i32* %r4, i32 1 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r57, %r62 -%r64 = zext i64 %r63 to i96 -%r66 = getelementptr i32, i32* %r4, i32 2 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i96 -%r69 = shl i96 %r68, 64 -%r70 = or i96 %r64, %r69 -%r71 = zext i96 %r70 to i128 -%r73 = getelementptr i32, i32* %r4, i32 3 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i128 -%r76 = shl i128 %r75, 96 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i160 -%r79 = sub i160 %r55, %r78 -%r80 = lshr i160 %r79, 128 -%r81 = trunc i160 %r80 to i1 -%r82 = select i1 %r81, i160 %r55, i160 %r79 -%r83 = trunc i160 %r82 to i128 -%r84 = trunc i128 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 0 -store i32 %r84, i32* %r86 -%r87 = lshr i128 %r83, 32 -%r88 = trunc i128 %r87 to i32 -%r90 = getelementptr i32, i32* %r1, i32 1 -store i32 %r88, i32* %r90 -%r91 = lshr i128 %r87, 32 -%r92 = trunc i128 %r91 to i32 -%r94 = getelementptr i32, i32* %r1, i32 2 -store i32 %r92, i32* %r94 -%r95 = lshr i128 %r91, 32 -%r96 = trunc i128 %r95 to i32 -%r98 = getelementptr i32, i32* %r1, i32 3 -store i32 %r96, i32* %r98 -ret void -} -define void @mcl_fp_montNF4L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i160 @mulPv128x32(i32* %r2, i32 %r8) -%r10 = trunc i160 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i160 @mulPv128x32(i32* %r4, i32 %r11) -%r13 = add i160 %r9, %r12 -%r14 = lshr i160 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i160 @mulPv128x32(i32* %r2, i32 %r17) -%r19 = add i160 %r14, %r18 -%r20 = trunc i160 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i160 @mulPv128x32(i32* %r4, i32 %r21) -%r23 = add i160 %r19, %r22 -%r24 = lshr i160 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i160 @mulPv128x32(i32* %r2, i32 %r27) -%r29 = add i160 %r24, %r28 -%r30 = trunc i160 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i160 @mulPv128x32(i32* %r4, i32 %r31) -%r33 = add i160 %r29, %r32 -%r34 = lshr i160 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 %r37 = load i32, i32* %r36 -%r38 = call i160 @mulPv128x32(i32* %r2, i32 %r37) -%r39 = add i160 %r34, %r38 -%r40 = trunc i160 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i160 @mulPv128x32(i32* %r4, i32 %r41) -%r43 = add i160 %r39, %r42 -%r44 = lshr i160 %r43, 32 -%r45 = trunc i160 %r44 to i128 -%r46 = load i32, i32* %r4 -%r47 = zext i32 %r46 to i64 -%r49 = getelementptr i32, i32* %r4, i32 1 -%r50 = load i32, i32* %r49 -%r51 = zext i32 %r50 to i64 -%r52 = shl i64 %r51, 32 -%r53 = or i64 %r47, %r52 -%r54 = zext i64 %r53 to i96 -%r56 = getelementptr i32, i32* %r4, i32 2 -%r57 = load i32, i32* %r56 -%r58 = zext i32 %r57 to i96 -%r59 = shl i96 %r58, 64 -%r60 = or i96 %r54, %r59 -%r61 = zext i96 %r60 to i128 -%r63 = getelementptr i32, i32* %r4, i32 3 -%r64 = load i32, i32* %r63 -%r65 = zext i32 %r64 to i128 -%r66 = shl i128 %r65, 96 -%r67 = or i128 %r61, %r66 -%r68 = sub i128 %r45, %r67 -%r69 = lshr i128 %r68, 127 -%r70 = trunc i128 %r69 to i1 -%r71 = select i1 %r70, i128 %r45, i128 %r68 -%r72 = trunc i128 %r71 to i32 -%r74 = getelementptr i32, i32* %r1, i32 0 -store i32 %r72, i32* %r74 -%r75 = lshr i128 %r71, 32 -%r76 = trunc i128 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 1 -store i32 %r76, i32* %r78 -%r79 = lshr i128 %r75, 32 -%r80 = trunc i128 %r79 to i32 -%r82 = getelementptr i32, i32* %r1, i32 2 -store i32 %r80, i32* %r82 -%r83 = lshr i128 %r79, 32 -%r84 = trunc i128 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 3 -store i32 %r84, i32* %r86 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = load i32, i32* %r3 +%r42 = zext i32 %r41 to i64 +%r44 = getelementptr i32, i32* %r3, i32 1 +%r45 = load i32, i32* %r44 +%r46 = zext i32 %r45 to i64 +%r47 = shl i64 %r46, 32 +%r48 = or i64 %r42, %r47 +%r49 = zext i64 %r48 to i96 +%r51 = getelementptr i32, i32* %r3, i32 2 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i96 +%r54 = shl i96 %r53, 64 +%r55 = or i96 %r49, %r54 +%r56 = zext i96 %r55 to i128 +%r58 = getelementptr i32, i32* %r3, i32 3 +%r59 = load i32, i32* %r58 +%r60 = zext i32 %r59 to i128 +%r61 = shl i128 %r60, 96 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i160 +%r65 = getelementptr i32, i32* %r3, i32 4 +%r66 = load i32, i32* %r65 +%r67 = zext i32 %r66 to i160 +%r68 = shl i160 %r67, 128 +%r69 = or i160 %r63, %r68 +%r70 = zext i160 %r69 to i192 +%r72 = getelementptr i32, i32* %r3, i32 5 +%r73 = load i32, i32* %r72 +%r74 = zext i32 %r73 to i192 +%r75 = shl i192 %r74, 160 +%r76 = or i192 %r70, %r75 +%r77 = zext i192 %r40 to i224 +%r78 = zext i192 %r76 to i224 +%r79 = sub i224 %r77, %r78 +%r80 = trunc i224 %r79 to i192 +%r81 = lshr i224 %r79, 192 +%r82 = trunc i224 %r81 to i1 +%r84 = getelementptr i32, i32* %r1, i32 0 +%r85 = trunc i192 %r80 to i32 +store i32 %r85, i32* %r84 +%r86 = lshr i192 %r80, 32 +%r88 = getelementptr i32, i32* %r1, i32 1 +%r89 = trunc i192 %r86 to i32 +store i32 %r89, i32* %r88 +%r90 = lshr i192 %r86, 32 +%r92 = getelementptr i32, i32* %r1, i32 2 +%r93 = trunc i192 %r90 to i32 +store i32 %r93, i32* %r92 +%r94 = lshr i192 %r90, 32 +%r96 = getelementptr i32, i32* %r1, i32 3 +%r97 = trunc i192 %r94 to i32 +store i32 %r97, i32* %r96 +%r98 = lshr i192 %r94, 32 +%r100 = getelementptr i32, i32* %r1, i32 4 +%r101 = trunc i192 %r98 to i32 +store i32 %r101, i32* %r100 +%r102 = lshr i192 %r98, 32 +%r104 = getelementptr i32, i32* %r1, i32 5 +%r105 = trunc i192 %r102 to i32 +store i32 %r105, i32* %r104 +br i1%r82, label %carry, label %nocarry +nocarry: ret void -} -define void @mcl_fp_montRed4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = load i32, i32* %r2 -%r30 = zext i32 %r29 to i64 -%r32 = getelementptr i32, i32* %r2, i32 1 -%r33 = load i32, i32* %r32 -%r34 = zext i32 %r33 to i64 -%r35 = shl i64 %r34, 32 -%r36 = or i64 %r30, %r35 -%r37 = zext i64 %r36 to i96 -%r39 = getelementptr i32, i32* %r2, i32 2 -%r40 = load i32, i32* %r39 -%r41 = zext i32 %r40 to i96 -%r42 = shl i96 %r41, 64 -%r43 = or i96 %r37, %r42 -%r44 = zext i96 %r43 to i128 -%r46 = getelementptr i32, i32* %r2, i32 3 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i128 -%r49 = shl i128 %r48, 96 -%r50 = or i128 %r44, %r49 -%r51 = zext i128 %r50 to i160 -%r53 = getelementptr i32, i32* %r2, i32 4 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i160 -%r56 = shl i160 %r55, 128 -%r57 = or i160 %r51, %r56 -%r58 = zext i160 %r57 to i192 -%r60 = getelementptr i32, i32* %r2, i32 5 -%r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i192 -%r63 = shl i192 %r62, 160 -%r64 = or i192 %r58, %r63 -%r65 = zext i192 %r64 to i224 -%r67 = getelementptr i32, i32* %r2, i32 6 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i224 -%r70 = shl i224 %r69, 192 -%r71 = or i224 %r65, %r70 -%r72 = zext i224 %r71 to i256 -%r74 = getelementptr i32, i32* %r2, i32 7 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i256 -%r77 = shl i256 %r76, 224 -%r78 = or i256 %r72, %r77 -%r79 = zext i256 %r78 to i288 -%r80 = trunc i288 %r79 to i32 -%r81 = mul i32 %r80, %r6 -%r82 = call i160 @mulPv128x32(i32* %r3, i32 %r81) -%r83 = zext i160 %r82 to i288 -%r84 = add i288 %r79, %r83 -%r85 = lshr i288 %r84, 32 -%r86 = trunc i288 %r85 to i256 -%r87 = trunc i256 %r86 to i32 -%r88 = mul i32 %r87, %r6 -%r89 = call i160 @mulPv128x32(i32* %r3, i32 %r88) -%r90 = zext i160 %r89 to i256 -%r91 = add i256 %r86, %r90 -%r92 = lshr i256 %r91, 32 -%r93 = trunc i256 %r92 to i224 -%r94 = trunc i224 %r93 to i32 -%r95 = mul i32 %r94, %r6 -%r96 = call i160 @mulPv128x32(i32* %r3, i32 %r95) -%r97 = zext i160 %r96 to i224 -%r98 = add i224 %r93, %r97 -%r99 = lshr i224 %r98, 32 -%r100 = trunc i224 %r99 to i192 -%r101 = trunc i192 %r100 to i32 -%r102 = mul i32 %r101, %r6 -%r103 = call i160 @mulPv128x32(i32* %r3, i32 %r102) -%r104 = zext i160 %r103 to i192 -%r105 = add i192 %r100, %r104 -%r106 = lshr i192 %r105, 32 -%r107 = trunc i192 %r106 to i160 -%r108 = zext i128 %r28 to i160 -%r109 = sub i160 %r107, %r108 -%r110 = lshr i160 %r109, 128 -%r111 = trunc i160 %r110 to i1 -%r112 = select i1 %r111, i160 %r107, i160 %r109 -%r113 = trunc i160 %r112 to i128 -%r114 = trunc i128 %r113 to i32 -%r116 = getelementptr i32, i32* %r1, i32 0 -store i32 %r114, i32* %r116 -%r117 = lshr i128 %r113, 32 -%r118 = trunc i128 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 1 -store i32 %r118, i32* %r120 -%r121 = lshr i128 %r117, 32 -%r122 = trunc i128 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 2 -store i32 %r122, i32* %r124 -%r125 = lshr i128 %r121, 32 -%r126 = trunc i128 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 3 -store i32 %r126, i32* %r128 +carry: +%r106 = load i32, i32* %r4 +%r107 = zext i32 %r106 to i64 +%r109 = getelementptr i32, i32* %r4, i32 1 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i64 +%r112 = shl i64 %r111, 32 +%r113 = or i64 %r107, %r112 +%r114 = zext i64 %r113 to i96 +%r116 = getelementptr i32, i32* %r4, i32 2 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i96 +%r119 = shl i96 %r118, 64 +%r120 = or i96 %r114, %r119 +%r121 = zext i96 %r120 to i128 +%r123 = getelementptr i32, i32* %r4, i32 3 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i128 +%r126 = shl i128 %r125, 96 +%r127 = or i128 %r121, %r126 +%r128 = zext i128 %r127 to i160 +%r130 = getelementptr i32, i32* %r4, i32 4 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i160 +%r133 = shl i160 %r132, 128 +%r134 = or i160 %r128, %r133 +%r135 = zext i160 %r134 to i192 +%r137 = getelementptr i32, i32* %r4, i32 5 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i192 +%r140 = shl i192 %r139, 160 +%r141 = or i192 %r135, %r140 +%r142 = add i192 %r80, %r141 +%r144 = getelementptr i32, i32* %r1, i32 0 +%r145 = trunc i192 %r142 to i32 +store i32 %r145, i32* %r144 +%r146 = lshr i192 %r142, 32 +%r148 = getelementptr i32, i32* %r1, i32 1 +%r149 = trunc i192 %r146 to i32 +store i32 %r149, i32* %r148 +%r150 = lshr i192 %r146, 32 +%r152 = getelementptr i32, i32* %r1, i32 2 +%r153 = trunc i192 %r150 to i32 +store i32 %r153, i32* %r152 +%r154 = lshr i192 %r150, 32 +%r156 = getelementptr i32, i32* %r1, i32 3 +%r157 = trunc i192 %r154 to i32 +store i32 %r157, i32* %r156 +%r158 = lshr i192 %r154, 32 +%r160 = getelementptr i32, i32* %r1, i32 4 +%r161 = trunc i192 %r158 to i32 +store i32 %r161, i32* %r160 +%r162 = lshr i192 %r158, 32 +%r164 = getelementptr i32, i32* %r1, i32 5 +%r165 = trunc i192 %r162 to i32 +store i32 %r165, i32* %r164 ret void } -define i32 @mcl_fp_addPre4L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_subNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r5 = load i32, i32* %r3 +%r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 +%r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 %r10 = zext i32 %r9 to i64 %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 +%r15 = getelementptr i32, i32* %r2, i32 2 %r16 = load i32, i32* %r15 %r17 = zext i32 %r16 to i96 %r18 = shl i96 %r17, 64 %r19 = or i96 %r13, %r18 %r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 +%r22 = getelementptr i32, i32* %r2, i32 3 %r23 = load i32, i32* %r22 %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 %r27 = zext i128 %r26 to i160 -%r28 = load i32, i32* %r4 -%r29 = zext i32 %r28 to i64 -%r31 = getelementptr i32, i32* %r4, i32 1 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i64 -%r34 = shl i64 %r33, 32 -%r35 = or i64 %r29, %r34 -%r36 = zext i64 %r35 to i96 -%r38 = getelementptr i32, i32* %r4, i32 2 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i96 -%r41 = shl i96 %r40, 64 -%r42 = or i96 %r36, %r41 -%r43 = zext i96 %r42 to i128 -%r45 = getelementptr i32, i32* %r4, i32 3 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i128 -%r48 = shl i128 %r47, 96 -%r49 = or i128 %r43, %r48 -%r50 = zext i128 %r49 to i160 -%r51 = add i160 %r27, %r50 -%r52 = trunc i160 %r51 to i128 -%r53 = trunc i128 %r52 to i32 -%r55 = getelementptr i32, i32* %r2, i32 0 -store i32 %r53, i32* %r55 -%r56 = lshr i128 %r52, 32 -%r57 = trunc i128 %r56 to i32 -%r59 = getelementptr i32, i32* %r2, i32 1 -store i32 %r57, i32* %r59 -%r60 = lshr i128 %r56, 32 -%r61 = trunc i128 %r60 to i32 -%r63 = getelementptr i32, i32* %r2, i32 2 -store i32 %r61, i32* %r63 -%r64 = lshr i128 %r60, 32 -%r65 = trunc i128 %r64 to i32 -%r67 = getelementptr i32, i32* %r2, i32 3 -store i32 %r65, i32* %r67 -%r68 = lshr i160 %r51, 128 -%r69 = trunc i160 %r68 to i32 -ret i32 %r69 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = load i32, i32* %r3 +%r42 = zext i32 %r41 to i64 +%r44 = getelementptr i32, i32* %r3, i32 1 +%r45 = load i32, i32* %r44 +%r46 = zext i32 %r45 to i64 +%r47 = shl i64 %r46, 32 +%r48 = or i64 %r42, %r47 +%r49 = zext i64 %r48 to i96 +%r51 = getelementptr i32, i32* %r3, i32 2 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i96 +%r54 = shl i96 %r53, 64 +%r55 = or i96 %r49, %r54 +%r56 = zext i96 %r55 to i128 +%r58 = getelementptr i32, i32* %r3, i32 3 +%r59 = load i32, i32* %r58 +%r60 = zext i32 %r59 to i128 +%r61 = shl i128 %r60, 96 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i160 +%r65 = getelementptr i32, i32* %r3, i32 4 +%r66 = load i32, i32* %r65 +%r67 = zext i32 %r66 to i160 +%r68 = shl i160 %r67, 128 +%r69 = or i160 %r63, %r68 +%r70 = zext i160 %r69 to i192 +%r72 = getelementptr i32, i32* %r3, i32 5 +%r73 = load i32, i32* %r72 +%r74 = zext i32 %r73 to i192 +%r75 = shl i192 %r74, 160 +%r76 = or i192 %r70, %r75 +%r77 = sub i192 %r40, %r76 +%r78 = lshr i192 %r77, 191 +%r79 = trunc i192 %r78 to i1 +%r80 = load i32, i32* %r4 +%r81 = zext i32 %r80 to i64 +%r83 = getelementptr i32, i32* %r4, i32 1 +%r84 = load i32, i32* %r83 +%r85 = zext i32 %r84 to i64 +%r86 = shl i64 %r85, 32 +%r87 = or i64 %r81, %r86 +%r88 = zext i64 %r87 to i96 +%r90 = getelementptr i32, i32* %r4, i32 2 +%r91 = load i32, i32* %r90 +%r92 = zext i32 %r91 to i96 +%r93 = shl i96 %r92, 64 +%r94 = or i96 %r88, %r93 +%r95 = zext i96 %r94 to i128 +%r97 = getelementptr i32, i32* %r4, i32 3 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i128 +%r100 = shl i128 %r99, 96 +%r101 = or i128 %r95, %r100 +%r102 = zext i128 %r101 to i160 +%r104 = getelementptr i32, i32* %r4, i32 4 +%r105 = load i32, i32* %r104 +%r106 = zext i32 %r105 to i160 +%r107 = shl i160 %r106, 128 +%r108 = or i160 %r102, %r107 +%r109 = zext i160 %r108 to i192 +%r111 = getelementptr i32, i32* %r4, i32 5 +%r112 = load i32, i32* %r111 +%r113 = zext i32 %r112 to i192 +%r114 = shl i192 %r113, 160 +%r115 = or i192 %r109, %r114 +%r117 = select i1 %r79, i192 %r115, i192 0 +%r118 = add i192 %r77, %r117 +%r120 = getelementptr i32, i32* %r1, i32 0 +%r121 = trunc i192 %r118 to i32 +store i32 %r121, i32* %r120 +%r122 = lshr i192 %r118, 32 +%r124 = getelementptr i32, i32* %r1, i32 1 +%r125 = trunc i192 %r122 to i32 +store i32 %r125, i32* %r124 +%r126 = lshr i192 %r122, 32 +%r128 = getelementptr i32, i32* %r1, i32 2 +%r129 = trunc i192 %r126 to i32 +store i32 %r129, i32* %r128 +%r130 = lshr i192 %r126, 32 +%r132 = getelementptr i32, i32* %r1, i32 3 +%r133 = trunc i192 %r130 to i32 +store i32 %r133, i32* %r132 +%r134 = lshr i192 %r130, 32 +%r136 = getelementptr i32, i32* %r1, i32 4 +%r137 = trunc i192 %r134 to i32 +store i32 %r137, i32* %r136 +%r138 = lshr i192 %r134, 32 +%r140 = getelementptr i32, i32* %r1, i32 5 +%r141 = trunc i192 %r138 to i32 +store i32 %r141, i32* %r140 +ret void } -define i32 @mcl_fp_subPre4L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r5 = load i32, i32* %r3 +%r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r28 = load i32, i32* %r4 -%r29 = zext i32 %r28 to i64 -%r31 = getelementptr i32, i32* %r4, i32 1 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i64 -%r34 = shl i64 %r33, 32 -%r35 = or i64 %r29, %r34 -%r36 = zext i64 %r35 to i96 -%r38 = getelementptr i32, i32* %r4, i32 2 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i96 -%r41 = shl i96 %r40, 64 -%r42 = or i96 %r36, %r41 -%r43 = zext i96 %r42 to i128 -%r45 = getelementptr i32, i32* %r4, i32 3 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i128 -%r48 = shl i128 %r47, 96 -%r49 = or i128 %r43, %r48 -%r50 = zext i128 %r49 to i160 -%r51 = sub i160 %r27, %r50 -%r52 = trunc i160 %r51 to i128 -%r53 = trunc i128 %r52 to i32 -%r55 = getelementptr i32, i32* %r2, i32 0 -store i32 %r53, i32* %r55 -%r56 = lshr i128 %r52, 32 -%r57 = trunc i128 %r56 to i32 -%r59 = getelementptr i32, i32* %r2, i32 1 -store i32 %r57, i32* %r59 -%r60 = lshr i128 %r56, 32 -%r61 = trunc i128 %r60 to i32 -%r63 = getelementptr i32, i32* %r2, i32 2 -store i32 %r61, i32* %r63 -%r64 = lshr i128 %r60, 32 -%r65 = trunc i128 %r64 to i32 -%r67 = getelementptr i32, i32* %r2, i32 3 -store i32 %r65, i32* %r67 -%r68 = lshr i160 %r51, 128 -%r69 = trunc i160 %r68 to i32 -%r71 = and i32 %r69, 1 -ret i32 %r71 -} -define void @mcl_fp_shr1_4L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = lshr i128 %r24, 1 -%r26 = trunc i128 %r25 to i32 -%r28 = getelementptr i32, i32* %r1, i32 0 -store i32 %r26, i32* %r28 -%r29 = lshr i128 %r25, 32 -%r30 = trunc i128 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 1 -store i32 %r30, i32* %r32 -%r33 = lshr i128 %r29, 32 -%r34 = trunc i128 %r33 to i32 -%r36 = getelementptr i32, i32* %r1, i32 2 -store i32 %r34, i32* %r36 -%r37 = lshr i128 %r33, 32 -%r38 = trunc i128 %r37 to i32 -%r40 = getelementptr i32, i32* %r1, i32 3 -store i32 %r38, i32* %r40 -ret void -} -define void @mcl_fp_add4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r26 to i160 -%r50 = zext i128 %r48 to i160 -%r51 = add i160 %r49, %r50 -%r52 = trunc i160 %r51 to i128 -%r53 = trunc i128 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 0 -store i32 %r53, i32* %r55 -%r56 = lshr i128 %r52, 32 -%r57 = trunc i128 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 1 -store i32 %r57, i32* %r59 -%r60 = lshr i128 %r56, 32 -%r61 = trunc i128 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 2 -store i32 %r61, i32* %r63 -%r64 = lshr i128 %r60, 32 -%r65 = trunc i128 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 3 -store i32 %r65, i32* %r67 -%r68 = load i32, i32* %r4 -%r69 = zext i32 %r68 to i64 -%r71 = getelementptr i32, i32* %r4, i32 1 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i64 -%r74 = shl i64 %r73, 32 -%r75 = or i64 %r69, %r74 -%r76 = zext i64 %r75 to i96 -%r78 = getelementptr i32, i32* %r4, i32 2 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i96 -%r81 = shl i96 %r80, 64 -%r82 = or i96 %r76, %r81 -%r83 = zext i96 %r82 to i128 -%r85 = getelementptr i32, i32* %r4, i32 3 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i128 -%r88 = shl i128 %r87, 96 -%r89 = or i128 %r83, %r88 -%r90 = zext i128 %r89 to i160 -%r91 = sub i160 %r51, %r90 -%r92 = lshr i160 %r91, 128 -%r93 = trunc i160 %r92 to i1 -br i1%r93, label %carry, label %nocarry -nocarry: -%r94 = trunc i160 %r91 to i128 -%r95 = trunc i128 %r94 to i32 -%r97 = getelementptr i32, i32* %r1, i32 0 -store i32 %r95, i32* %r97 -%r98 = lshr i128 %r94, 32 -%r99 = trunc i128 %r98 to i32 -%r101 = getelementptr i32, i32* %r1, i32 1 -store i32 %r99, i32* %r101 -%r102 = lshr i128 %r98, 32 -%r103 = trunc i128 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 2 -store i32 %r103, i32* %r105 -%r106 = lshr i128 %r102, 32 -%r107 = trunc i128 %r106 to i32 -%r109 = getelementptr i32, i32* %r1, i32 3 -store i32 %r107, i32* %r109 -ret void -carry: -ret void -} -define void @mcl_fp_addNF4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = add i128 %r26, %r48 -%r50 = load i32, i32* %r4 -%r51 = zext i32 %r50 to i64 -%r53 = getelementptr i32, i32* %r4, i32 1 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i64 -%r56 = shl i64 %r55, 32 -%r57 = or i64 %r51, %r56 -%r58 = zext i64 %r57 to i96 -%r60 = getelementptr i32, i32* %r4, i32 2 -%r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i96 -%r63 = shl i96 %r62, 64 -%r64 = or i96 %r58, %r63 -%r65 = zext i96 %r64 to i128 -%r67 = getelementptr i32, i32* %r4, i32 3 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i128 -%r70 = shl i128 %r69, 96 -%r71 = or i128 %r65, %r70 -%r72 = sub i128 %r49, %r71 -%r73 = lshr i128 %r72, 127 -%r74 = trunc i128 %r73 to i1 -%r75 = select i1 %r74, i128 %r49, i128 %r72 -%r76 = trunc i128 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 0 -store i32 %r76, i32* %r78 -%r79 = lshr i128 %r75, 32 -%r80 = trunc i128 %r79 to i32 -%r82 = getelementptr i32, i32* %r1, i32 1 -store i32 %r80, i32* %r82 -%r83 = lshr i128 %r79, 32 -%r84 = trunc i128 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 2 -store i32 %r84, i32* %r86 -%r87 = lshr i128 %r83, 32 -%r88 = trunc i128 %r87 to i32 -%r90 = getelementptr i32, i32* %r1, i32 3 -store i32 %r88, i32* %r90 -ret void -} -define void @mcl_fp_sub4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r26 to i160 -%r50 = zext i128 %r48 to i160 -%r51 = sub i160 %r49, %r50 -%r52 = trunc i160 %r51 to i128 -%r53 = lshr i160 %r51, 128 -%r54 = trunc i160 %r53 to i1 -%r55 = trunc i128 %r52 to i32 -%r57 = getelementptr i32, i32* %r1, i32 0 -store i32 %r55, i32* %r57 -%r58 = lshr i128 %r52, 32 -%r59 = trunc i128 %r58 to i32 -%r61 = getelementptr i32, i32* %r1, i32 1 -store i32 %r59, i32* %r61 -%r62 = lshr i128 %r58, 32 -%r63 = trunc i128 %r62 to i32 -%r65 = getelementptr i32, i32* %r1, i32 2 -store i32 %r63, i32* %r65 -%r66 = lshr i128 %r62, 32 -%r67 = trunc i128 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 3 -store i32 %r67, i32* %r69 -br i1%r54, label %carry, label %nocarry -nocarry: -ret void -carry: -%r70 = load i32, i32* %r4 -%r71 = zext i32 %r70 to i64 -%r73 = getelementptr i32, i32* %r4, i32 1 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i64 -%r76 = shl i64 %r75, 32 -%r77 = or i64 %r71, %r76 -%r78 = zext i64 %r77 to i96 -%r80 = getelementptr i32, i32* %r4, i32 2 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i96 -%r83 = shl i96 %r82, 64 -%r84 = or i96 %r78, %r83 -%r85 = zext i96 %r84 to i128 -%r87 = getelementptr i32, i32* %r4, i32 3 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i128 -%r90 = shl i128 %r89, 96 -%r91 = or i128 %r85, %r90 -%r92 = add i128 %r52, %r91 -%r93 = trunc i128 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 0 -store i32 %r93, i32* %r95 -%r96 = lshr i128 %r92, 32 -%r97 = trunc i128 %r96 to i32 -%r99 = getelementptr i32, i32* %r1, i32 1 -store i32 %r97, i32* %r99 -%r100 = lshr i128 %r96, 32 -%r101 = trunc i128 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 2 -store i32 %r101, i32* %r103 -%r104 = lshr i128 %r100, 32 -%r105 = trunc i128 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 3 -store i32 %r105, i32* %r107 -ret void -} -define void @mcl_fp_subNF4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = load i32, i32* %r3 -%r28 = zext i32 %r27 to i64 -%r30 = getelementptr i32, i32* %r3, i32 1 -%r31 = load i32, i32* %r30 -%r32 = zext i32 %r31 to i64 -%r33 = shl i64 %r32, 32 -%r34 = or i64 %r28, %r33 -%r35 = zext i64 %r34 to i96 -%r37 = getelementptr i32, i32* %r3, i32 2 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i96 -%r40 = shl i96 %r39, 64 -%r41 = or i96 %r35, %r40 -%r42 = zext i96 %r41 to i128 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i128 -%r47 = shl i128 %r46, 96 -%r48 = or i128 %r42, %r47 -%r49 = sub i128 %r26, %r48 -%r50 = lshr i128 %r49, 127 -%r51 = trunc i128 %r50 to i1 -%r52 = load i32, i32* %r4 -%r53 = zext i32 %r52 to i64 -%r55 = getelementptr i32, i32* %r4, i32 1 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i64 -%r58 = shl i64 %r57, 32 -%r59 = or i64 %r53, %r58 -%r60 = zext i64 %r59 to i96 -%r62 = getelementptr i32, i32* %r4, i32 2 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i96 -%r65 = shl i96 %r64, 64 -%r66 = or i96 %r60, %r65 -%r67 = zext i96 %r66 to i128 -%r69 = getelementptr i32, i32* %r4, i32 3 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i128 -%r72 = shl i128 %r71, 96 -%r73 = or i128 %r67, %r72 -%r75 = select i1 %r51, i128 %r73, i128 0 -%r76 = add i128 %r49, %r75 -%r77 = trunc i128 %r76 to i32 -%r79 = getelementptr i32, i32* %r1, i32 0 -store i32 %r77, i32* %r79 -%r80 = lshr i128 %r76, 32 -%r81 = trunc i128 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 1 -store i32 %r81, i32* %r83 -%r84 = lshr i128 %r80, 32 -%r85 = trunc i128 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 2 -store i32 %r85, i32* %r87 -%r88 = lshr i128 %r84, 32 -%r89 = trunc i128 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 3 -store i32 %r89, i32* %r91 -ret void -} -define void @mcl_fpDbl_add4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 +%r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 %r10 = zext i32 %r9 to i64 %r11 = shl i64 %r10, 32 @@ -3467,114 +2301,190 @@ define void @mcl_fpDbl_add4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r52 = zext i32 %r51 to i256 %r53 = shl i256 %r52, 224 %r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 %r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 %r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r54 to i288 -%r106 = zext i256 %r104 to i288 -%r107 = add i288 %r105, %r106 -%r108 = trunc i288 %r107 to i128 -%r109 = trunc i128 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 0 -store i32 %r109, i32* %r111 -%r112 = lshr i128 %r108, 32 -%r113 = trunc i128 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 1 -store i32 %r113, i32* %r115 -%r116 = lshr i128 %r112, 32 -%r117 = trunc i128 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 2 -store i32 %r117, i32* %r119 -%r120 = lshr i128 %r116, 32 -%r121 = trunc i128 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 3 -store i32 %r121, i32* %r123 -%r124 = lshr i288 %r107, 128 -%r125 = trunc i288 %r124 to i160 -%r126 = load i32, i32* %r4 -%r127 = zext i32 %r126 to i64 -%r129 = getelementptr i32, i32* %r4, i32 1 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i64 -%r132 = shl i64 %r131, 32 -%r133 = or i64 %r127, %r132 -%r134 = zext i64 %r133 to i96 -%r136 = getelementptr i32, i32* %r4, i32 2 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i96 -%r139 = shl i96 %r138, 64 -%r140 = or i96 %r134, %r139 -%r141 = zext i96 %r140 to i128 -%r143 = getelementptr i32, i32* %r4, i32 3 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i128 -%r146 = shl i128 %r145, 96 -%r147 = or i128 %r141, %r146 -%r148 = zext i128 %r147 to i160 -%r149 = sub i160 %r125, %r148 -%r150 = lshr i160 %r149, 128 -%r151 = trunc i160 %r150 to i1 -%r152 = select i1 %r151, i160 %r125, i160 %r149 -%r153 = trunc i160 %r152 to i128 -%r155 = getelementptr i32, i32* %r1, i32 4 -%r156 = trunc i128 %r153 to i32 -%r158 = getelementptr i32, i32* %r155, i32 0 -store i32 %r156, i32* %r158 -%r159 = lshr i128 %r153, 32 -%r160 = trunc i128 %r159 to i32 -%r162 = getelementptr i32, i32* %r155, i32 1 -store i32 %r160, i32* %r162 -%r163 = lshr i128 %r159, 32 -%r164 = trunc i128 %r163 to i32 -%r166 = getelementptr i32, i32* %r155, i32 2 -store i32 %r164, i32* %r166 -%r167 = lshr i128 %r163, 32 -%r168 = trunc i128 %r167 to i32 -%r170 = getelementptr i32, i32* %r155, i32 3 -store i32 %r168, i32* %r170 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = zext i384 %r82 to i416 +%r162 = zext i384 %r160 to i416 +%r163 = add i416 %r161, %r162 +%r164 = trunc i416 %r163 to i192 +%r166 = getelementptr i32, i32* %r1, i32 0 +%r167 = trunc i192 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i192 %r164, 32 +%r170 = getelementptr i32, i32* %r1, i32 1 +%r171 = trunc i192 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i192 %r168, 32 +%r174 = getelementptr i32, i32* %r1, i32 2 +%r175 = trunc i192 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i192 %r172, 32 +%r178 = getelementptr i32, i32* %r1, i32 3 +%r179 = trunc i192 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i192 %r176, 32 +%r182 = getelementptr i32, i32* %r1, i32 4 +%r183 = trunc i192 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i192 %r180, 32 +%r186 = getelementptr i32, i32* %r1, i32 5 +%r187 = trunc i192 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i416 %r163, 192 +%r189 = trunc i416 %r188 to i224 +%r190 = load i32, i32* %r4 +%r191 = zext i32 %r190 to i64 +%r193 = getelementptr i32, i32* %r4, i32 1 +%r194 = load i32, i32* %r193 +%r195 = zext i32 %r194 to i64 +%r196 = shl i64 %r195, 32 +%r197 = or i64 %r191, %r196 +%r198 = zext i64 %r197 to i96 +%r200 = getelementptr i32, i32* %r4, i32 2 +%r201 = load i32, i32* %r200 +%r202 = zext i32 %r201 to i96 +%r203 = shl i96 %r202, 64 +%r204 = or i96 %r198, %r203 +%r205 = zext i96 %r204 to i128 +%r207 = getelementptr i32, i32* %r4, i32 3 +%r208 = load i32, i32* %r207 +%r209 = zext i32 %r208 to i128 +%r210 = shl i128 %r209, 96 +%r211 = or i128 %r205, %r210 +%r212 = zext i128 %r211 to i160 +%r214 = getelementptr i32, i32* %r4, i32 4 +%r215 = load i32, i32* %r214 +%r216 = zext i32 %r215 to i160 +%r217 = shl i160 %r216, 128 +%r218 = or i160 %r212, %r217 +%r219 = zext i160 %r218 to i192 +%r221 = getelementptr i32, i32* %r4, i32 5 +%r222 = load i32, i32* %r221 +%r223 = zext i32 %r222 to i192 +%r224 = shl i192 %r223, 160 +%r225 = or i192 %r219, %r224 +%r226 = zext i192 %r225 to i224 +%r227 = sub i224 %r189, %r226 +%r228 = lshr i224 %r227, 192 +%r229 = trunc i224 %r228 to i1 +%r230 = select i1 %r229, i224 %r189, i224 %r227 +%r231 = trunc i224 %r230 to i192 +%r233 = getelementptr i32, i32* %r1, i32 6 +%r235 = getelementptr i32, i32* %r233, i32 0 +%r236 = trunc i192 %r231 to i32 +store i32 %r236, i32* %r235 +%r237 = lshr i192 %r231, 32 +%r239 = getelementptr i32, i32* %r233, i32 1 +%r240 = trunc i192 %r237 to i32 +store i32 %r240, i32* %r239 +%r241 = lshr i192 %r237, 32 +%r243 = getelementptr i32, i32* %r233, i32 2 +%r244 = trunc i192 %r241 to i32 +store i32 %r244, i32* %r243 +%r245 = lshr i192 %r241, 32 +%r247 = getelementptr i32, i32* %r233, i32 3 +%r248 = trunc i192 %r245 to i32 +store i32 %r248, i32* %r247 +%r249 = lshr i192 %r245, 32 +%r251 = getelementptr i32, i32* %r233, i32 4 +%r252 = trunc i192 %r249 to i32 +store i32 %r252, i32* %r251 +%r253 = lshr i192 %r249, 32 +%r255 = getelementptr i32, i32* %r233, i32 5 +%r256 = trunc i192 %r253 to i32 +store i32 %r256, i32* %r255 ret void } -define void @mcl_fpDbl_sub4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_sub6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -3619,1535 +2529,1551 @@ define void @mcl_fpDbl_sub4L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r52 = zext i32 %r51 to i256 %r53 = shl i256 %r52, 224 %r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 %r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 %r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r54 to i288 -%r106 = zext i256 %r104 to i288 -%r107 = sub i288 %r105, %r106 -%r108 = trunc i288 %r107 to i128 -%r109 = trunc i128 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 0 -store i32 %r109, i32* %r111 -%r112 = lshr i128 %r108, 32 -%r113 = trunc i128 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 1 -store i32 %r113, i32* %r115 -%r116 = lshr i128 %r112, 32 -%r117 = trunc i128 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 2 -store i32 %r117, i32* %r119 -%r120 = lshr i128 %r116, 32 -%r121 = trunc i128 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 3 -store i32 %r121, i32* %r123 -%r124 = lshr i288 %r107, 128 -%r125 = trunc i288 %r124 to i128 -%r126 = lshr i288 %r107, 256 -%r127 = trunc i288 %r126 to i1 -%r128 = load i32, i32* %r4 -%r129 = zext i32 %r128 to i64 -%r131 = getelementptr i32, i32* %r4, i32 1 -%r132 = load i32, i32* %r131 -%r133 = zext i32 %r132 to i64 -%r134 = shl i64 %r133, 32 -%r135 = or i64 %r129, %r134 -%r136 = zext i64 %r135 to i96 -%r138 = getelementptr i32, i32* %r4, i32 2 -%r139 = load i32, i32* %r138 -%r140 = zext i32 %r139 to i96 -%r141 = shl i96 %r140, 64 -%r142 = or i96 %r136, %r141 -%r143 = zext i96 %r142 to i128 -%r145 = getelementptr i32, i32* %r4, i32 3 -%r146 = load i32, i32* %r145 -%r147 = zext i32 %r146 to i128 -%r148 = shl i128 %r147, 96 -%r149 = or i128 %r143, %r148 -%r151 = select i1 %r127, i128 %r149, i128 0 -%r152 = add i128 %r125, %r151 -%r154 = getelementptr i32, i32* %r1, i32 4 -%r155 = trunc i128 %r152 to i32 -%r157 = getelementptr i32, i32* %r154, i32 0 -store i32 %r155, i32* %r157 -%r158 = lshr i128 %r152, 32 -%r159 = trunc i128 %r158 to i32 -%r161 = getelementptr i32, i32* %r154, i32 1 -store i32 %r159, i32* %r161 -%r162 = lshr i128 %r158, 32 -%r163 = trunc i128 %r162 to i32 -%r165 = getelementptr i32, i32* %r154, i32 2 -store i32 %r163, i32* %r165 -%r166 = lshr i128 %r162, 32 -%r167 = trunc i128 %r166 to i32 -%r169 = getelementptr i32, i32* %r154, i32 3 -store i32 %r167, i32* %r169 -ret void -} -define i192 @mulPv160x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r24 = zext i32 %r6 to i64 -%r25 = zext i32 %r10 to i64 -%r26 = shl i64 %r25, 32 -%r27 = or i64 %r24, %r26 -%r28 = zext i64 %r27 to i96 -%r29 = zext i32 %r14 to i96 -%r30 = shl i96 %r29, 64 -%r31 = or i96 %r28, %r30 -%r32 = zext i96 %r31 to i128 -%r33 = zext i32 %r18 to i128 -%r34 = shl i128 %r33, 96 -%r35 = or i128 %r32, %r34 -%r36 = zext i128 %r35 to i160 -%r37 = zext i32 %r22 to i160 -%r38 = shl i160 %r37, 128 -%r39 = or i160 %r36, %r38 -%r40 = zext i32 %r7 to i64 -%r41 = zext i32 %r11 to i64 -%r42 = shl i64 %r41, 32 -%r43 = or i64 %r40, %r42 -%r44 = zext i64 %r43 to i96 -%r45 = zext i32 %r15 to i96 -%r46 = shl i96 %r45, 64 -%r47 = or i96 %r44, %r46 -%r48 = zext i96 %r47 to i128 -%r49 = zext i32 %r19 to i128 -%r50 = shl i128 %r49, 96 -%r51 = or i128 %r48, %r50 -%r52 = zext i128 %r51 to i160 -%r53 = zext i32 %r23 to i160 -%r54 = shl i160 %r53, 128 -%r55 = or i160 %r52, %r54 -%r56 = zext i160 %r39 to i192 -%r57 = zext i160 %r55 to i192 -%r58 = shl i192 %r57, 32 -%r59 = add i192 %r56, %r58 -ret i192 %r59 -} -define void @mcl_fp_mulUnitPre5L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i192 @mulPv160x32(i32* %r2, i32 %r3) -%r5 = trunc i192 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i192 %r4, 32 -%r9 = trunc i192 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i192 %r8, 32 -%r13 = trunc i192 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i192 %r12, 32 -%r17 = trunc i192 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i192 %r16, 32 -%r21 = trunc i192 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i192 %r20, 32 -%r25 = trunc i192 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -ret void -} -define void @mcl_fpDbl_mulPre5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i192 @mulPv160x32(i32* %r2, i32 %r4) -%r6 = trunc i192 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i192 %r5, 32 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = zext i384 %r82 to i416 +%r162 = zext i384 %r160 to i416 +%r163 = sub i416 %r161, %r162 +%r164 = trunc i416 %r163 to i192 +%r166 = getelementptr i32, i32* %r1, i32 0 +%r167 = trunc i192 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i192 %r164, 32 +%r170 = getelementptr i32, i32* %r1, i32 1 +%r171 = trunc i192 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i192 %r168, 32 +%r174 = getelementptr i32, i32* %r1, i32 2 +%r175 = trunc i192 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i192 %r172, 32 +%r178 = getelementptr i32, i32* %r1, i32 3 +%r179 = trunc i192 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i192 %r176, 32 +%r182 = getelementptr i32, i32* %r1, i32 4 +%r183 = trunc i192 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i192 %r180, 32 +%r186 = getelementptr i32, i32* %r1, i32 5 +%r187 = trunc i192 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i416 %r163, 192 +%r189 = trunc i416 %r188 to i192 +%r190 = lshr i416 %r163, 384 +%r191 = trunc i416 %r190 to i1 +%r192 = load i32, i32* %r4 +%r193 = zext i32 %r192 to i64 +%r195 = getelementptr i32, i32* %r4, i32 1 +%r196 = load i32, i32* %r195 +%r197 = zext i32 %r196 to i64 +%r198 = shl i64 %r197, 32 +%r199 = or i64 %r193, %r198 +%r200 = zext i64 %r199 to i96 +%r202 = getelementptr i32, i32* %r4, i32 2 +%r203 = load i32, i32* %r202 +%r204 = zext i32 %r203 to i96 +%r205 = shl i96 %r204, 64 +%r206 = or i96 %r200, %r205 +%r207 = zext i96 %r206 to i128 +%r209 = getelementptr i32, i32* %r4, i32 3 +%r210 = load i32, i32* %r209 +%r211 = zext i32 %r210 to i128 +%r212 = shl i128 %r211, 96 +%r213 = or i128 %r207, %r212 +%r214 = zext i128 %r213 to i160 +%r216 = getelementptr i32, i32* %r4, i32 4 +%r217 = load i32, i32* %r216 +%r218 = zext i32 %r217 to i160 +%r219 = shl i160 %r218, 128 +%r220 = or i160 %r214, %r219 +%r221 = zext i160 %r220 to i192 +%r223 = getelementptr i32, i32* %r4, i32 5 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i192 +%r226 = shl i192 %r225, 160 +%r227 = or i192 %r221, %r226 +%r229 = select i1 %r191, i192 %r227, i192 0 +%r230 = add i192 %r189, %r229 +%r232 = getelementptr i32, i32* %r1, i32 6 +%r234 = getelementptr i32, i32* %r232, i32 0 +%r235 = trunc i192 %r230 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i192 %r230, 32 +%r238 = getelementptr i32, i32* %r232, i32 1 +%r239 = trunc i192 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i192 %r236, 32 +%r242 = getelementptr i32, i32* %r232, i32 2 +%r243 = trunc i192 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i192 %r240, 32 +%r246 = getelementptr i32, i32* %r232, i32 3 +%r247 = trunc i192 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i192 %r244, 32 +%r250 = getelementptr i32, i32* %r232, i32 4 +%r251 = trunc i192 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i192 %r248, 32 +%r254 = getelementptr i32, i32* %r232, i32 5 +%r255 = trunc i192 %r252 to i32 +store i32 %r255, i32* %r254 +ret void +} +define i256 @mulPv224x32(i32* noalias %r2, i32 %r3) +{ +%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) +%r6 = trunc i64 %r5 to i32 +%r7 = call i32 @extractHigh32(i64 %r5) +%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) +%r10 = trunc i64 %r9 to i32 +%r11 = call i32 @extractHigh32(i64 %r9) +%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) +%r14 = trunc i64 %r13 to i32 +%r15 = call i32 @extractHigh32(i64 %r13) +%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) +%r18 = trunc i64 %r17 to i32 +%r19 = call i32 @extractHigh32(i64 %r17) +%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) +%r22 = trunc i64 %r21 to i32 +%r23 = call i32 @extractHigh32(i64 %r21) +%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) +%r26 = trunc i64 %r25 to i32 +%r27 = call i32 @extractHigh32(i64 %r25) +%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) +%r30 = trunc i64 %r29 to i32 +%r31 = call i32 @extractHigh32(i64 %r29) +%r32 = zext i32 %r6 to i64 +%r33 = zext i32 %r10 to i64 +%r34 = shl i64 %r33, 32 +%r35 = or i64 %r32, %r34 +%r36 = zext i64 %r35 to i96 +%r37 = zext i32 %r14 to i96 +%r38 = shl i96 %r37, 64 +%r39 = or i96 %r36, %r38 +%r40 = zext i96 %r39 to i128 +%r41 = zext i32 %r18 to i128 +%r42 = shl i128 %r41, 96 +%r43 = or i128 %r40, %r42 +%r44 = zext i128 %r43 to i160 +%r45 = zext i32 %r22 to i160 +%r46 = shl i160 %r45, 128 +%r47 = or i160 %r44, %r46 +%r48 = zext i160 %r47 to i192 +%r49 = zext i32 %r26 to i192 +%r50 = shl i192 %r49, 160 +%r51 = or i192 %r48, %r50 +%r52 = zext i192 %r51 to i224 +%r53 = zext i32 %r30 to i224 +%r54 = shl i224 %r53, 192 +%r55 = or i224 %r52, %r54 +%r56 = zext i32 %r7 to i64 +%r57 = zext i32 %r11 to i64 +%r58 = shl i64 %r57, 32 +%r59 = or i64 %r56, %r58 +%r60 = zext i64 %r59 to i96 +%r61 = zext i32 %r15 to i96 +%r62 = shl i96 %r61, 64 +%r63 = or i96 %r60, %r62 +%r64 = zext i96 %r63 to i128 +%r65 = zext i32 %r19 to i128 +%r66 = shl i128 %r65, 96 +%r67 = or i128 %r64, %r66 +%r68 = zext i128 %r67 to i160 +%r69 = zext i32 %r23 to i160 +%r70 = shl i160 %r69, 128 +%r71 = or i160 %r68, %r70 +%r72 = zext i160 %r71 to i192 +%r73 = zext i32 %r27 to i192 +%r74 = shl i192 %r73, 160 +%r75 = or i192 %r72, %r74 +%r76 = zext i192 %r75 to i224 +%r77 = zext i32 %r31 to i224 +%r78 = shl i224 %r77, 192 +%r79 = or i224 %r76, %r78 +%r80 = zext i224 %r55 to i256 +%r81 = zext i224 %r79 to i256 +%r82 = shl i256 %r81, 32 +%r83 = add i256 %r80, %r82 +ret i256 %r83 +} +define void @mcl_fp_mulUnitPre7L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +{ +%r4 = call i256 @mulPv224x32(i32* %r2, i32 %r3) +%r6 = getelementptr i32, i32* %r1, i32 0 +%r7 = trunc i256 %r4 to i32 +store i32 %r7, i32* %r6 +%r8 = lshr i256 %r4, 32 +%r10 = getelementptr i32, i32* %r1, i32 1 +%r11 = trunc i256 %r8 to i32 +store i32 %r11, i32* %r10 +%r12 = lshr i256 %r8, 32 +%r14 = getelementptr i32, i32* %r1, i32 2 +%r15 = trunc i256 %r12 to i32 +store i32 %r15, i32* %r14 +%r16 = lshr i256 %r12, 32 +%r18 = getelementptr i32, i32* %r1, i32 3 +%r19 = trunc i256 %r16 to i32 +store i32 %r19, i32* %r18 +%r20 = lshr i256 %r16, 32 +%r22 = getelementptr i32, i32* %r1, i32 4 +%r23 = trunc i256 %r20 to i32 +store i32 %r23, i32* %r22 +%r24 = lshr i256 %r20, 32 +%r26 = getelementptr i32, i32* %r1, i32 5 +%r27 = trunc i256 %r24 to i32 +store i32 %r27, i32* %r26 +%r28 = lshr i256 %r24, 32 +%r30 = getelementptr i32, i32* %r1, i32 6 +%r31 = trunc i256 %r28 to i32 +store i32 %r31, i32* %r30 +%r32 = lshr i256 %r28, 32 +%r34 = getelementptr i32, i32* %r1, i32 7 +%r35 = trunc i256 %r32 to i32 +store i32 %r35, i32* %r34 +ret void +} +define void @mcl_fpDbl_mulPre7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r4 = load i32, i32* %r3 +%r5 = call i256 @mulPv224x32(i32* %r2, i32 %r4) +%r6 = trunc i256 %r5 to i32 +store i32 %r6, i32* %r1 +%r7 = lshr i256 %r5, 32 %r9 = getelementptr i32, i32* %r3, i32 1 %r10 = load i32, i32* %r9 -%r11 = call i192 @mulPv160x32(i32* %r2, i32 %r10) -%r12 = add i192 %r7, %r11 -%r13 = trunc i192 %r12 to i32 +%r11 = call i256 @mulPv224x32(i32* %r2, i32 %r10) +%r12 = add i256 %r7, %r11 +%r13 = trunc i256 %r12 to i32 %r15 = getelementptr i32, i32* %r1, i32 1 store i32 %r13, i32* %r15 -%r16 = lshr i192 %r12, 32 +%r16 = lshr i256 %r12, 32 %r18 = getelementptr i32, i32* %r3, i32 2 %r19 = load i32, i32* %r18 -%r20 = call i192 @mulPv160x32(i32* %r2, i32 %r19) -%r21 = add i192 %r16, %r20 -%r22 = trunc i192 %r21 to i32 +%r20 = call i256 @mulPv224x32(i32* %r2, i32 %r19) +%r21 = add i256 %r16, %r20 +%r22 = trunc i256 %r21 to i32 %r24 = getelementptr i32, i32* %r1, i32 2 store i32 %r22, i32* %r24 -%r25 = lshr i192 %r21, 32 +%r25 = lshr i256 %r21, 32 %r27 = getelementptr i32, i32* %r3, i32 3 %r28 = load i32, i32* %r27 -%r29 = call i192 @mulPv160x32(i32* %r2, i32 %r28) -%r30 = add i192 %r25, %r29 -%r31 = trunc i192 %r30 to i32 +%r29 = call i256 @mulPv224x32(i32* %r2, i32 %r28) +%r30 = add i256 %r25, %r29 +%r31 = trunc i256 %r30 to i32 %r33 = getelementptr i32, i32* %r1, i32 3 store i32 %r31, i32* %r33 -%r34 = lshr i192 %r30, 32 +%r34 = lshr i256 %r30, 32 %r36 = getelementptr i32, i32* %r3, i32 4 %r37 = load i32, i32* %r36 -%r38 = call i192 @mulPv160x32(i32* %r2, i32 %r37) -%r39 = add i192 %r34, %r38 -%r41 = getelementptr i32, i32* %r1, i32 4 -%r42 = trunc i192 %r39 to i32 -%r44 = getelementptr i32, i32* %r41, i32 0 -store i32 %r42, i32* %r44 -%r45 = lshr i192 %r39, 32 -%r46 = trunc i192 %r45 to i32 -%r48 = getelementptr i32, i32* %r41, i32 1 -store i32 %r46, i32* %r48 -%r49 = lshr i192 %r45, 32 -%r50 = trunc i192 %r49 to i32 -%r52 = getelementptr i32, i32* %r41, i32 2 -store i32 %r50, i32* %r52 -%r53 = lshr i192 %r49, 32 -%r54 = trunc i192 %r53 to i32 -%r56 = getelementptr i32, i32* %r41, i32 3 -store i32 %r54, i32* %r56 -%r57 = lshr i192 %r53, 32 -%r58 = trunc i192 %r57 to i32 -%r60 = getelementptr i32, i32* %r41, i32 4 -store i32 %r58, i32* %r60 -%r61 = lshr i192 %r57, 32 -%r62 = trunc i192 %r61 to i32 -%r64 = getelementptr i32, i32* %r41, i32 5 -store i32 %r62, i32* %r64 +%r38 = call i256 @mulPv224x32(i32* %r2, i32 %r37) +%r39 = add i256 %r34, %r38 +%r40 = trunc i256 %r39 to i32 +%r42 = getelementptr i32, i32* %r1, i32 4 +store i32 %r40, i32* %r42 +%r43 = lshr i256 %r39, 32 +%r45 = getelementptr i32, i32* %r3, i32 5 +%r46 = load i32, i32* %r45 +%r47 = call i256 @mulPv224x32(i32* %r2, i32 %r46) +%r48 = add i256 %r43, %r47 +%r49 = trunc i256 %r48 to i32 +%r51 = getelementptr i32, i32* %r1, i32 5 +store i32 %r49, i32* %r51 +%r52 = lshr i256 %r48, 32 +%r54 = getelementptr i32, i32* %r3, i32 6 +%r55 = load i32, i32* %r54 +%r56 = call i256 @mulPv224x32(i32* %r2, i32 %r55) +%r57 = add i256 %r52, %r56 +%r59 = getelementptr i32, i32* %r1, i32 6 +%r61 = getelementptr i32, i32* %r59, i32 0 +%r62 = trunc i256 %r57 to i32 +store i32 %r62, i32* %r61 +%r63 = lshr i256 %r57, 32 +%r65 = getelementptr i32, i32* %r59, i32 1 +%r66 = trunc i256 %r63 to i32 +store i32 %r66, i32* %r65 +%r67 = lshr i256 %r63, 32 +%r69 = getelementptr i32, i32* %r59, i32 2 +%r70 = trunc i256 %r67 to i32 +store i32 %r70, i32* %r69 +%r71 = lshr i256 %r67, 32 +%r73 = getelementptr i32, i32* %r59, i32 3 +%r74 = trunc i256 %r71 to i32 +store i32 %r74, i32* %r73 +%r75 = lshr i256 %r71, 32 +%r77 = getelementptr i32, i32* %r59, i32 4 +%r78 = trunc i256 %r75 to i32 +store i32 %r78, i32* %r77 +%r79 = lshr i256 %r75, 32 +%r81 = getelementptr i32, i32* %r59, i32 5 +%r82 = trunc i256 %r79 to i32 +store i32 %r82, i32* %r81 +%r83 = lshr i256 %r79, 32 +%r85 = getelementptr i32, i32* %r59, i32 6 +%r86 = trunc i256 %r83 to i32 +store i32 %r86, i32* %r85 +%r87 = lshr i256 %r83, 32 +%r89 = getelementptr i32, i32* %r59, i32 7 +%r90 = trunc i256 %r87 to i32 +store i32 %r90, i32* %r89 ret void } -define void @mcl_fpDbl_sqrPre5L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fpDbl_sqrPre7L(i32* noalias %r1, i32* noalias %r2) { %r3 = load i32, i32* %r2 -%r4 = call i192 @mulPv160x32(i32* %r2, i32 %r3) -%r5 = trunc i192 %r4 to i32 +%r4 = call i256 @mulPv224x32(i32* %r2, i32 %r3) +%r5 = trunc i256 %r4 to i32 store i32 %r5, i32* %r1 -%r6 = lshr i192 %r4, 32 +%r6 = lshr i256 %r4, 32 %r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 -%r10 = call i192 @mulPv160x32(i32* %r2, i32 %r9) -%r11 = add i192 %r6, %r10 -%r12 = trunc i192 %r11 to i32 +%r10 = call i256 @mulPv224x32(i32* %r2, i32 %r9) +%r11 = add i256 %r6, %r10 +%r12 = trunc i256 %r11 to i32 %r14 = getelementptr i32, i32* %r1, i32 1 store i32 %r12, i32* %r14 -%r15 = lshr i192 %r11, 32 +%r15 = lshr i256 %r11, 32 %r17 = getelementptr i32, i32* %r2, i32 2 %r18 = load i32, i32* %r17 -%r19 = call i192 @mulPv160x32(i32* %r2, i32 %r18) -%r20 = add i192 %r15, %r19 -%r21 = trunc i192 %r20 to i32 +%r19 = call i256 @mulPv224x32(i32* %r2, i32 %r18) +%r20 = add i256 %r15, %r19 +%r21 = trunc i256 %r20 to i32 %r23 = getelementptr i32, i32* %r1, i32 2 store i32 %r21, i32* %r23 -%r24 = lshr i192 %r20, 32 +%r24 = lshr i256 %r20, 32 %r26 = getelementptr i32, i32* %r2, i32 3 %r27 = load i32, i32* %r26 -%r28 = call i192 @mulPv160x32(i32* %r2, i32 %r27) -%r29 = add i192 %r24, %r28 -%r30 = trunc i192 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i192 %r29, 32 +%r28 = call i256 @mulPv224x32(i32* %r2, i32 %r27) +%r29 = add i256 %r24, %r28 +%r30 = trunc i256 %r29 to i32 +%r32 = getelementptr i32, i32* %r1, i32 3 +store i32 %r30, i32* %r32 +%r33 = lshr i256 %r29, 32 %r35 = getelementptr i32, i32* %r2, i32 4 %r36 = load i32, i32* %r35 -%r37 = call i192 @mulPv160x32(i32* %r2, i32 %r36) -%r38 = add i192 %r33, %r37 -%r40 = getelementptr i32, i32* %r1, i32 4 -%r41 = trunc i192 %r38 to i32 -%r43 = getelementptr i32, i32* %r40, i32 0 -store i32 %r41, i32* %r43 -%r44 = lshr i192 %r38, 32 -%r45 = trunc i192 %r44 to i32 -%r47 = getelementptr i32, i32* %r40, i32 1 -store i32 %r45, i32* %r47 -%r48 = lshr i192 %r44, 32 -%r49 = trunc i192 %r48 to i32 -%r51 = getelementptr i32, i32* %r40, i32 2 -store i32 %r49, i32* %r51 -%r52 = lshr i192 %r48, 32 -%r53 = trunc i192 %r52 to i32 -%r55 = getelementptr i32, i32* %r40, i32 3 -store i32 %r53, i32* %r55 -%r56 = lshr i192 %r52, 32 -%r57 = trunc i192 %r56 to i32 -%r59 = getelementptr i32, i32* %r40, i32 4 -store i32 %r57, i32* %r59 -%r60 = lshr i192 %r56, 32 -%r61 = trunc i192 %r60 to i32 -%r63 = getelementptr i32, i32* %r40, i32 5 -store i32 %r61, i32* %r63 +%r37 = call i256 @mulPv224x32(i32* %r2, i32 %r36) +%r38 = add i256 %r33, %r37 +%r39 = trunc i256 %r38 to i32 +%r41 = getelementptr i32, i32* %r1, i32 4 +store i32 %r39, i32* %r41 +%r42 = lshr i256 %r38, 32 +%r44 = getelementptr i32, i32* %r2, i32 5 +%r45 = load i32, i32* %r44 +%r46 = call i256 @mulPv224x32(i32* %r2, i32 %r45) +%r47 = add i256 %r42, %r46 +%r48 = trunc i256 %r47 to i32 +%r50 = getelementptr i32, i32* %r1, i32 5 +store i32 %r48, i32* %r50 +%r51 = lshr i256 %r47, 32 +%r53 = getelementptr i32, i32* %r2, i32 6 +%r54 = load i32, i32* %r53 +%r55 = call i256 @mulPv224x32(i32* %r2, i32 %r54) +%r56 = add i256 %r51, %r55 +%r58 = getelementptr i32, i32* %r1, i32 6 +%r60 = getelementptr i32, i32* %r58, i32 0 +%r61 = trunc i256 %r56 to i32 +store i32 %r61, i32* %r60 +%r62 = lshr i256 %r56, 32 +%r64 = getelementptr i32, i32* %r58, i32 1 +%r65 = trunc i256 %r62 to i32 +store i32 %r65, i32* %r64 +%r66 = lshr i256 %r62, 32 +%r68 = getelementptr i32, i32* %r58, i32 2 +%r69 = trunc i256 %r66 to i32 +store i32 %r69, i32* %r68 +%r70 = lshr i256 %r66, 32 +%r72 = getelementptr i32, i32* %r58, i32 3 +%r73 = trunc i256 %r70 to i32 +store i32 %r73, i32* %r72 +%r74 = lshr i256 %r70, 32 +%r76 = getelementptr i32, i32* %r58, i32 4 +%r77 = trunc i256 %r74 to i32 +store i32 %r77, i32* %r76 +%r78 = lshr i256 %r74, 32 +%r80 = getelementptr i32, i32* %r58, i32 5 +%r81 = trunc i256 %r78 to i32 +store i32 %r81, i32* %r80 +%r82 = lshr i256 %r78, 32 +%r84 = getelementptr i32, i32* %r58, i32 6 +%r85 = trunc i256 %r82 to i32 +store i32 %r85, i32* %r84 +%r86 = lshr i256 %r82, 32 +%r88 = getelementptr i32, i32* %r58, i32 7 +%r89 = trunc i256 %r86 to i32 +store i32 %r89, i32* %r88 ret void } -define void @mcl_fp_mont5L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_mont7L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 %r9 = getelementptr i32, i32* %r3, i32 0 %r10 = load i32, i32* %r9 -%r11 = call i192 @mulPv160x32(i32* %r2, i32 %r10) -%r12 = zext i192 %r11 to i224 -%r13 = trunc i192 %r11 to i32 +%r11 = call i256 @mulPv224x32(i32* %r2, i32 %r10) +%r12 = zext i256 %r11 to i288 +%r13 = trunc i256 %r11 to i32 %r14 = mul i32 %r13, %r7 -%r15 = call i192 @mulPv160x32(i32* %r4, i32 %r14) -%r16 = zext i192 %r15 to i224 -%r17 = add i224 %r12, %r16 -%r18 = lshr i224 %r17, 32 +%r15 = call i256 @mulPv224x32(i32* %r4, i32 %r14) +%r16 = zext i256 %r15 to i288 +%r17 = add i288 %r12, %r16 +%r18 = lshr i288 %r17, 32 %r20 = getelementptr i32, i32* %r3, i32 1 %r21 = load i32, i32* %r20 -%r22 = call i192 @mulPv160x32(i32* %r2, i32 %r21) -%r23 = zext i192 %r22 to i224 -%r24 = add i224 %r18, %r23 -%r25 = trunc i224 %r24 to i32 +%r22 = call i256 @mulPv224x32(i32* %r2, i32 %r21) +%r23 = zext i256 %r22 to i288 +%r24 = add i288 %r18, %r23 +%r25 = trunc i288 %r24 to i32 %r26 = mul i32 %r25, %r7 -%r27 = call i192 @mulPv160x32(i32* %r4, i32 %r26) -%r28 = zext i192 %r27 to i224 -%r29 = add i224 %r24, %r28 -%r30 = lshr i224 %r29, 32 +%r27 = call i256 @mulPv224x32(i32* %r4, i32 %r26) +%r28 = zext i256 %r27 to i288 +%r29 = add i288 %r24, %r28 +%r30 = lshr i288 %r29, 32 %r32 = getelementptr i32, i32* %r3, i32 2 %r33 = load i32, i32* %r32 -%r34 = call i192 @mulPv160x32(i32* %r2, i32 %r33) -%r35 = zext i192 %r34 to i224 -%r36 = add i224 %r30, %r35 -%r37 = trunc i224 %r36 to i32 +%r34 = call i256 @mulPv224x32(i32* %r2, i32 %r33) +%r35 = zext i256 %r34 to i288 +%r36 = add i288 %r30, %r35 +%r37 = trunc i288 %r36 to i32 %r38 = mul i32 %r37, %r7 -%r39 = call i192 @mulPv160x32(i32* %r4, i32 %r38) -%r40 = zext i192 %r39 to i224 -%r41 = add i224 %r36, %r40 -%r42 = lshr i224 %r41, 32 +%r39 = call i256 @mulPv224x32(i32* %r4, i32 %r38) +%r40 = zext i256 %r39 to i288 +%r41 = add i288 %r36, %r40 +%r42 = lshr i288 %r41, 32 %r44 = getelementptr i32, i32* %r3, i32 3 %r45 = load i32, i32* %r44 -%r46 = call i192 @mulPv160x32(i32* %r2, i32 %r45) -%r47 = zext i192 %r46 to i224 -%r48 = add i224 %r42, %r47 -%r49 = trunc i224 %r48 to i32 +%r46 = call i256 @mulPv224x32(i32* %r2, i32 %r45) +%r47 = zext i256 %r46 to i288 +%r48 = add i288 %r42, %r47 +%r49 = trunc i288 %r48 to i32 %r50 = mul i32 %r49, %r7 -%r51 = call i192 @mulPv160x32(i32* %r4, i32 %r50) -%r52 = zext i192 %r51 to i224 -%r53 = add i224 %r48, %r52 -%r54 = lshr i224 %r53, 32 +%r51 = call i256 @mulPv224x32(i32* %r4, i32 %r50) +%r52 = zext i256 %r51 to i288 +%r53 = add i288 %r48, %r52 +%r54 = lshr i288 %r53, 32 %r56 = getelementptr i32, i32* %r3, i32 4 %r57 = load i32, i32* %r56 -%r58 = call i192 @mulPv160x32(i32* %r2, i32 %r57) -%r59 = zext i192 %r58 to i224 -%r60 = add i224 %r54, %r59 -%r61 = trunc i224 %r60 to i32 +%r58 = call i256 @mulPv224x32(i32* %r2, i32 %r57) +%r59 = zext i256 %r58 to i288 +%r60 = add i288 %r54, %r59 +%r61 = trunc i288 %r60 to i32 %r62 = mul i32 %r61, %r7 -%r63 = call i192 @mulPv160x32(i32* %r4, i32 %r62) -%r64 = zext i192 %r63 to i224 -%r65 = add i224 %r60, %r64 -%r66 = lshr i224 %r65, 32 -%r67 = trunc i224 %r66 to i192 -%r68 = load i32, i32* %r4 -%r69 = zext i32 %r68 to i64 -%r71 = getelementptr i32, i32* %r4, i32 1 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i64 -%r74 = shl i64 %r73, 32 -%r75 = or i64 %r69, %r74 -%r76 = zext i64 %r75 to i96 -%r78 = getelementptr i32, i32* %r4, i32 2 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i96 -%r81 = shl i96 %r80, 64 -%r82 = or i96 %r76, %r81 -%r83 = zext i96 %r82 to i128 -%r85 = getelementptr i32, i32* %r4, i32 3 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i128 -%r88 = shl i128 %r87, 96 -%r89 = or i128 %r83, %r88 -%r90 = zext i128 %r89 to i160 -%r92 = getelementptr i32, i32* %r4, i32 4 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i160 -%r95 = shl i160 %r94, 128 -%r96 = or i160 %r90, %r95 -%r97 = zext i160 %r96 to i192 -%r98 = sub i192 %r67, %r97 -%r99 = lshr i192 %r98, 160 -%r100 = trunc i192 %r99 to i1 -%r101 = select i1 %r100, i192 %r67, i192 %r98 -%r102 = trunc i192 %r101 to i160 -%r103 = trunc i160 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 0 -store i32 %r103, i32* %r105 -%r106 = lshr i160 %r102, 32 -%r107 = trunc i160 %r106 to i32 -%r109 = getelementptr i32, i32* %r1, i32 1 -store i32 %r107, i32* %r109 -%r110 = lshr i160 %r106, 32 -%r111 = trunc i160 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 2 -store i32 %r111, i32* %r113 -%r114 = lshr i160 %r110, 32 -%r115 = trunc i160 %r114 to i32 -%r117 = getelementptr i32, i32* %r1, i32 3 -store i32 %r115, i32* %r117 -%r118 = lshr i160 %r114, 32 -%r119 = trunc i160 %r118 to i32 -%r121 = getelementptr i32, i32* %r1, i32 4 -store i32 %r119, i32* %r121 +%r63 = call i256 @mulPv224x32(i32* %r4, i32 %r62) +%r64 = zext i256 %r63 to i288 +%r65 = add i288 %r60, %r64 +%r66 = lshr i288 %r65, 32 +%r68 = getelementptr i32, i32* %r3, i32 5 +%r69 = load i32, i32* %r68 +%r70 = call i256 @mulPv224x32(i32* %r2, i32 %r69) +%r71 = zext i256 %r70 to i288 +%r72 = add i288 %r66, %r71 +%r73 = trunc i288 %r72 to i32 +%r74 = mul i32 %r73, %r7 +%r75 = call i256 @mulPv224x32(i32* %r4, i32 %r74) +%r76 = zext i256 %r75 to i288 +%r77 = add i288 %r72, %r76 +%r78 = lshr i288 %r77, 32 +%r80 = getelementptr i32, i32* %r3, i32 6 +%r81 = load i32, i32* %r80 +%r82 = call i256 @mulPv224x32(i32* %r2, i32 %r81) +%r83 = zext i256 %r82 to i288 +%r84 = add i288 %r78, %r83 +%r85 = trunc i288 %r84 to i32 +%r86 = mul i32 %r85, %r7 +%r87 = call i256 @mulPv224x32(i32* %r4, i32 %r86) +%r88 = zext i256 %r87 to i288 +%r89 = add i288 %r84, %r88 +%r90 = lshr i288 %r89, 32 +%r91 = trunc i288 %r90 to i256 +%r92 = load i32, i32* %r4 +%r93 = zext i32 %r92 to i64 +%r95 = getelementptr i32, i32* %r4, i32 1 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i64 +%r98 = shl i64 %r97, 32 +%r99 = or i64 %r93, %r98 +%r100 = zext i64 %r99 to i96 +%r102 = getelementptr i32, i32* %r4, i32 2 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i96 +%r105 = shl i96 %r104, 64 +%r106 = or i96 %r100, %r105 +%r107 = zext i96 %r106 to i128 +%r109 = getelementptr i32, i32* %r4, i32 3 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i128 +%r112 = shl i128 %r111, 96 +%r113 = or i128 %r107, %r112 +%r114 = zext i128 %r113 to i160 +%r116 = getelementptr i32, i32* %r4, i32 4 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i160 +%r119 = shl i160 %r118, 128 +%r120 = or i160 %r114, %r119 +%r121 = zext i160 %r120 to i192 +%r123 = getelementptr i32, i32* %r4, i32 5 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i192 +%r126 = shl i192 %r125, 160 +%r127 = or i192 %r121, %r126 +%r128 = zext i192 %r127 to i224 +%r130 = getelementptr i32, i32* %r4, i32 6 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i224 +%r133 = shl i224 %r132, 192 +%r134 = or i224 %r128, %r133 +%r135 = zext i224 %r134 to i256 +%r136 = sub i256 %r91, %r135 +%r137 = lshr i256 %r136, 224 +%r138 = trunc i256 %r137 to i1 +%r139 = select i1 %r138, i256 %r91, i256 %r136 +%r140 = trunc i256 %r139 to i224 +%r142 = getelementptr i32, i32* %r1, i32 0 +%r143 = trunc i224 %r140 to i32 +store i32 %r143, i32* %r142 +%r144 = lshr i224 %r140, 32 +%r146 = getelementptr i32, i32* %r1, i32 1 +%r147 = trunc i224 %r144 to i32 +store i32 %r147, i32* %r146 +%r148 = lshr i224 %r144, 32 +%r150 = getelementptr i32, i32* %r1, i32 2 +%r151 = trunc i224 %r148 to i32 +store i32 %r151, i32* %r150 +%r152 = lshr i224 %r148, 32 +%r154 = getelementptr i32, i32* %r1, i32 3 +%r155 = trunc i224 %r152 to i32 +store i32 %r155, i32* %r154 +%r156 = lshr i224 %r152, 32 +%r158 = getelementptr i32, i32* %r1, i32 4 +%r159 = trunc i224 %r156 to i32 +store i32 %r159, i32* %r158 +%r160 = lshr i224 %r156, 32 +%r162 = getelementptr i32, i32* %r1, i32 5 +%r163 = trunc i224 %r160 to i32 +store i32 %r163, i32* %r162 +%r164 = lshr i224 %r160, 32 +%r166 = getelementptr i32, i32* %r1, i32 6 +%r167 = trunc i224 %r164 to i32 +store i32 %r167, i32* %r166 ret void } -define void @mcl_fp_montNF5L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_montNF7L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 %r8 = load i32, i32* %r3 -%r9 = call i192 @mulPv160x32(i32* %r2, i32 %r8) -%r10 = trunc i192 %r9 to i32 +%r9 = call i256 @mulPv224x32(i32* %r2, i32 %r8) +%r10 = trunc i256 %r9 to i32 %r11 = mul i32 %r10, %r7 -%r12 = call i192 @mulPv160x32(i32* %r4, i32 %r11) -%r13 = add i192 %r9, %r12 -%r14 = lshr i192 %r13, 32 +%r12 = call i256 @mulPv224x32(i32* %r4, i32 %r11) +%r13 = add i256 %r9, %r12 +%r14 = lshr i256 %r13, 32 %r16 = getelementptr i32, i32* %r3, i32 1 %r17 = load i32, i32* %r16 -%r18 = call i192 @mulPv160x32(i32* %r2, i32 %r17) -%r19 = add i192 %r14, %r18 -%r20 = trunc i192 %r19 to i32 +%r18 = call i256 @mulPv224x32(i32* %r2, i32 %r17) +%r19 = add i256 %r14, %r18 +%r20 = trunc i256 %r19 to i32 %r21 = mul i32 %r20, %r7 -%r22 = call i192 @mulPv160x32(i32* %r4, i32 %r21) -%r23 = add i192 %r19, %r22 -%r24 = lshr i192 %r23, 32 +%r22 = call i256 @mulPv224x32(i32* %r4, i32 %r21) +%r23 = add i256 %r19, %r22 +%r24 = lshr i256 %r23, 32 %r26 = getelementptr i32, i32* %r3, i32 2 %r27 = load i32, i32* %r26 -%r28 = call i192 @mulPv160x32(i32* %r2, i32 %r27) -%r29 = add i192 %r24, %r28 -%r30 = trunc i192 %r29 to i32 +%r28 = call i256 @mulPv224x32(i32* %r2, i32 %r27) +%r29 = add i256 %r24, %r28 +%r30 = trunc i256 %r29 to i32 %r31 = mul i32 %r30, %r7 -%r32 = call i192 @mulPv160x32(i32* %r4, i32 %r31) -%r33 = add i192 %r29, %r32 -%r34 = lshr i192 %r33, 32 +%r32 = call i256 @mulPv224x32(i32* %r4, i32 %r31) +%r33 = add i256 %r29, %r32 +%r34 = lshr i256 %r33, 32 %r36 = getelementptr i32, i32* %r3, i32 3 %r37 = load i32, i32* %r36 -%r38 = call i192 @mulPv160x32(i32* %r2, i32 %r37) -%r39 = add i192 %r34, %r38 -%r40 = trunc i192 %r39 to i32 +%r38 = call i256 @mulPv224x32(i32* %r2, i32 %r37) +%r39 = add i256 %r34, %r38 +%r40 = trunc i256 %r39 to i32 %r41 = mul i32 %r40, %r7 -%r42 = call i192 @mulPv160x32(i32* %r4, i32 %r41) -%r43 = add i192 %r39, %r42 -%r44 = lshr i192 %r43, 32 +%r42 = call i256 @mulPv224x32(i32* %r4, i32 %r41) +%r43 = add i256 %r39, %r42 +%r44 = lshr i256 %r43, 32 %r46 = getelementptr i32, i32* %r3, i32 4 %r47 = load i32, i32* %r46 -%r48 = call i192 @mulPv160x32(i32* %r2, i32 %r47) -%r49 = add i192 %r44, %r48 -%r50 = trunc i192 %r49 to i32 +%r48 = call i256 @mulPv224x32(i32* %r2, i32 %r47) +%r49 = add i256 %r44, %r48 +%r50 = trunc i256 %r49 to i32 %r51 = mul i32 %r50, %r7 -%r52 = call i192 @mulPv160x32(i32* %r4, i32 %r51) -%r53 = add i192 %r49, %r52 -%r54 = lshr i192 %r53, 32 -%r55 = trunc i192 %r54 to i160 -%r56 = load i32, i32* %r4 -%r57 = zext i32 %r56 to i64 -%r59 = getelementptr i32, i32* %r4, i32 1 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r57, %r62 -%r64 = zext i64 %r63 to i96 -%r66 = getelementptr i32, i32* %r4, i32 2 +%r52 = call i256 @mulPv224x32(i32* %r4, i32 %r51) +%r53 = add i256 %r49, %r52 +%r54 = lshr i256 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 5 +%r57 = load i32, i32* %r56 +%r58 = call i256 @mulPv224x32(i32* %r2, i32 %r57) +%r59 = add i256 %r54, %r58 +%r60 = trunc i256 %r59 to i32 +%r61 = mul i32 %r60, %r7 +%r62 = call i256 @mulPv224x32(i32* %r4, i32 %r61) +%r63 = add i256 %r59, %r62 +%r64 = lshr i256 %r63, 32 +%r66 = getelementptr i32, i32* %r3, i32 6 %r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i96 -%r69 = shl i96 %r68, 64 -%r70 = or i96 %r64, %r69 -%r71 = zext i96 %r70 to i128 -%r73 = getelementptr i32, i32* %r4, i32 3 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i128 -%r76 = shl i128 %r75, 96 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i160 -%r80 = getelementptr i32, i32* %r4, i32 4 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i160 -%r83 = shl i160 %r82, 128 -%r84 = or i160 %r78, %r83 -%r85 = sub i160 %r55, %r84 -%r86 = lshr i160 %r85, 159 -%r87 = trunc i160 %r86 to i1 -%r88 = select i1 %r87, i160 %r55, i160 %r85 -%r89 = trunc i160 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 0 -store i32 %r89, i32* %r91 -%r92 = lshr i160 %r88, 32 -%r93 = trunc i160 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 1 -store i32 %r93, i32* %r95 -%r96 = lshr i160 %r92, 32 -%r97 = trunc i160 %r96 to i32 -%r99 = getelementptr i32, i32* %r1, i32 2 -store i32 %r97, i32* %r99 -%r100 = lshr i160 %r96, 32 -%r101 = trunc i160 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 3 -store i32 %r101, i32* %r103 -%r104 = lshr i160 %r100, 32 -%r105 = trunc i160 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 4 -store i32 %r105, i32* %r107 -ret void -} -define void @mcl_fp_montRed5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = load i32, i32* %r2 -%r37 = zext i32 %r36 to i64 -%r39 = getelementptr i32, i32* %r2, i32 1 -%r40 = load i32, i32* %r39 -%r41 = zext i32 %r40 to i64 -%r42 = shl i64 %r41, 32 -%r43 = or i64 %r37, %r42 -%r44 = zext i64 %r43 to i96 -%r46 = getelementptr i32, i32* %r2, i32 2 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i96 -%r49 = shl i96 %r48, 64 -%r50 = or i96 %r44, %r49 -%r51 = zext i96 %r50 to i128 -%r53 = getelementptr i32, i32* %r2, i32 3 +%r68 = call i256 @mulPv224x32(i32* %r2, i32 %r67) +%r69 = add i256 %r64, %r68 +%r70 = trunc i256 %r69 to i32 +%r71 = mul i32 %r70, %r7 +%r72 = call i256 @mulPv224x32(i32* %r4, i32 %r71) +%r73 = add i256 %r69, %r72 +%r74 = lshr i256 %r73, 32 +%r75 = trunc i256 %r74 to i224 +%r76 = load i32, i32* %r4 +%r77 = zext i32 %r76 to i64 +%r79 = getelementptr i32, i32* %r4, i32 1 +%r80 = load i32, i32* %r79 +%r81 = zext i32 %r80 to i64 +%r82 = shl i64 %r81, 32 +%r83 = or i64 %r77, %r82 +%r84 = zext i64 %r83 to i96 +%r86 = getelementptr i32, i32* %r4, i32 2 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i96 +%r89 = shl i96 %r88, 64 +%r90 = or i96 %r84, %r89 +%r91 = zext i96 %r90 to i128 +%r93 = getelementptr i32, i32* %r4, i32 3 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i128 +%r96 = shl i128 %r95, 96 +%r97 = or i128 %r91, %r96 +%r98 = zext i128 %r97 to i160 +%r100 = getelementptr i32, i32* %r4, i32 4 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i160 +%r103 = shl i160 %r102, 128 +%r104 = or i160 %r98, %r103 +%r105 = zext i160 %r104 to i192 +%r107 = getelementptr i32, i32* %r4, i32 5 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i192 +%r110 = shl i192 %r109, 160 +%r111 = or i192 %r105, %r110 +%r112 = zext i192 %r111 to i224 +%r114 = getelementptr i32, i32* %r4, i32 6 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i224 +%r117 = shl i224 %r116, 192 +%r118 = or i224 %r112, %r117 +%r119 = sub i224 %r75, %r118 +%r120 = lshr i224 %r119, 223 +%r121 = trunc i224 %r120 to i1 +%r122 = select i1 %r121, i224 %r75, i224 %r119 +%r124 = getelementptr i32, i32* %r1, i32 0 +%r125 = trunc i224 %r122 to i32 +store i32 %r125, i32* %r124 +%r126 = lshr i224 %r122, 32 +%r128 = getelementptr i32, i32* %r1, i32 1 +%r129 = trunc i224 %r126 to i32 +store i32 %r129, i32* %r128 +%r130 = lshr i224 %r126, 32 +%r132 = getelementptr i32, i32* %r1, i32 2 +%r133 = trunc i224 %r130 to i32 +store i32 %r133, i32* %r132 +%r134 = lshr i224 %r130, 32 +%r136 = getelementptr i32, i32* %r1, i32 3 +%r137 = trunc i224 %r134 to i32 +store i32 %r137, i32* %r136 +%r138 = lshr i224 %r134, 32 +%r140 = getelementptr i32, i32* %r1, i32 4 +%r141 = trunc i224 %r138 to i32 +store i32 %r141, i32* %r140 +%r142 = lshr i224 %r138, 32 +%r144 = getelementptr i32, i32* %r1, i32 5 +%r145 = trunc i224 %r142 to i32 +store i32 %r145, i32* %r144 +%r146 = lshr i224 %r142, 32 +%r148 = getelementptr i32, i32* %r1, i32 6 +%r149 = trunc i224 %r146 to i32 +store i32 %r149, i32* %r148 +ret void +} +define void @mcl_fp_montRed7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = load i32, i32* %r2 +%r51 = zext i32 %r50 to i64 +%r53 = getelementptr i32, i32* %r2, i32 1 %r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i128 -%r56 = shl i128 %r55, 96 -%r57 = or i128 %r51, %r56 -%r58 = zext i128 %r57 to i160 -%r60 = getelementptr i32, i32* %r2, i32 4 +%r55 = zext i32 %r54 to i64 +%r56 = shl i64 %r55, 32 +%r57 = or i64 %r51, %r56 +%r58 = zext i64 %r57 to i96 +%r60 = getelementptr i32, i32* %r2, i32 2 %r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i160 -%r63 = shl i160 %r62, 128 -%r64 = or i160 %r58, %r63 -%r65 = zext i160 %r64 to i192 -%r67 = getelementptr i32, i32* %r2, i32 5 +%r62 = zext i32 %r61 to i96 +%r63 = shl i96 %r62, 64 +%r64 = or i96 %r58, %r63 +%r65 = zext i96 %r64 to i128 +%r67 = getelementptr i32, i32* %r2, i32 3 %r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i192 -%r70 = shl i192 %r69, 160 -%r71 = or i192 %r65, %r70 -%r72 = zext i192 %r71 to i224 -%r74 = getelementptr i32, i32* %r2, i32 6 +%r69 = zext i32 %r68 to i128 +%r70 = shl i128 %r69, 96 +%r71 = or i128 %r65, %r70 +%r72 = zext i128 %r71 to i160 +%r74 = getelementptr i32, i32* %r2, i32 4 %r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i224 -%r77 = shl i224 %r76, 192 -%r78 = or i224 %r72, %r77 -%r79 = zext i224 %r78 to i256 -%r81 = getelementptr i32, i32* %r2, i32 7 +%r76 = zext i32 %r75 to i160 +%r77 = shl i160 %r76, 128 +%r78 = or i160 %r72, %r77 +%r79 = zext i160 %r78 to i192 +%r81 = getelementptr i32, i32* %r2, i32 5 %r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i256 -%r84 = shl i256 %r83, 224 -%r85 = or i256 %r79, %r84 -%r86 = zext i256 %r85 to i288 -%r88 = getelementptr i32, i32* %r2, i32 8 +%r83 = zext i32 %r82 to i192 +%r84 = shl i192 %r83, 160 +%r85 = or i192 %r79, %r84 +%r86 = zext i192 %r85 to i224 +%r88 = getelementptr i32, i32* %r2, i32 6 %r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i288 -%r91 = shl i288 %r90, 256 -%r92 = or i288 %r86, %r91 -%r93 = zext i288 %r92 to i320 -%r95 = getelementptr i32, i32* %r2, i32 9 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i320 -%r98 = shl i320 %r97, 288 -%r99 = or i320 %r93, %r98 -%r100 = zext i320 %r99 to i352 -%r101 = trunc i352 %r100 to i32 -%r102 = mul i32 %r101, %r6 -%r103 = call i192 @mulPv160x32(i32* %r3, i32 %r102) -%r104 = zext i192 %r103 to i352 -%r105 = add i352 %r100, %r104 -%r106 = lshr i352 %r105, 32 -%r107 = trunc i352 %r106 to i320 -%r108 = trunc i320 %r107 to i32 -%r109 = mul i32 %r108, %r6 -%r110 = call i192 @mulPv160x32(i32* %r3, i32 %r109) -%r111 = zext i192 %r110 to i320 -%r112 = add i320 %r107, %r111 -%r113 = lshr i320 %r112, 32 -%r114 = trunc i320 %r113 to i288 -%r115 = trunc i288 %r114 to i32 -%r116 = mul i32 %r115, %r6 -%r117 = call i192 @mulPv160x32(i32* %r3, i32 %r116) -%r118 = zext i192 %r117 to i288 -%r119 = add i288 %r114, %r118 -%r120 = lshr i288 %r119, 32 -%r121 = trunc i288 %r120 to i256 -%r122 = trunc i256 %r121 to i32 -%r123 = mul i32 %r122, %r6 -%r124 = call i192 @mulPv160x32(i32* %r3, i32 %r123) -%r125 = zext i192 %r124 to i256 -%r126 = add i256 %r121, %r125 -%r127 = lshr i256 %r126, 32 -%r128 = trunc i256 %r127 to i224 -%r129 = trunc i224 %r128 to i32 -%r130 = mul i32 %r129, %r6 -%r131 = call i192 @mulPv160x32(i32* %r3, i32 %r130) -%r132 = zext i192 %r131 to i224 -%r133 = add i224 %r128, %r132 -%r134 = lshr i224 %r133, 32 -%r135 = trunc i224 %r134 to i192 -%r136 = zext i160 %r35 to i192 -%r137 = sub i192 %r135, %r136 -%r138 = lshr i192 %r137, 160 -%r139 = trunc i192 %r138 to i1 -%r140 = select i1 %r139, i192 %r135, i192 %r137 -%r141 = trunc i192 %r140 to i160 -%r142 = trunc i160 %r141 to i32 -%r144 = getelementptr i32, i32* %r1, i32 0 -store i32 %r142, i32* %r144 -%r145 = lshr i160 %r141, 32 -%r146 = trunc i160 %r145 to i32 -%r148 = getelementptr i32, i32* %r1, i32 1 -store i32 %r146, i32* %r148 -%r149 = lshr i160 %r145, 32 -%r150 = trunc i160 %r149 to i32 -%r152 = getelementptr i32, i32* %r1, i32 2 -store i32 %r150, i32* %r152 -%r153 = lshr i160 %r149, 32 -%r154 = trunc i160 %r153 to i32 -%r156 = getelementptr i32, i32* %r1, i32 3 -store i32 %r154, i32* %r156 -%r157 = lshr i160 %r153, 32 -%r158 = trunc i160 %r157 to i32 -%r160 = getelementptr i32, i32* %r1, i32 4 -store i32 %r158, i32* %r160 +%r90 = zext i32 %r89 to i224 +%r91 = shl i224 %r90, 192 +%r92 = or i224 %r86, %r91 +%r93 = trunc i224 %r92 to i32 +%r94 = mul i32 %r93, %r6 +%r95 = call i256 @mulPv224x32(i32* %r3, i32 %r94) +%r97 = getelementptr i32, i32* %r2, i32 7 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i256 +%r100 = shl i256 %r99, 224 +%r101 = zext i224 %r92 to i256 +%r102 = or i256 %r100, %r101 +%r103 = zext i256 %r102 to i288 +%r104 = zext i256 %r95 to i288 +%r105 = add i288 %r103, %r104 +%r106 = lshr i288 %r105, 32 +%r107 = trunc i288 %r106 to i256 +%r108 = lshr i256 %r107, 224 +%r109 = trunc i256 %r108 to i32 +%r110 = trunc i256 %r107 to i224 +%r111 = trunc i224 %r110 to i32 +%r112 = mul i32 %r111, %r6 +%r113 = call i256 @mulPv224x32(i32* %r3, i32 %r112) +%r114 = zext i32 %r109 to i256 +%r115 = shl i256 %r114, 224 +%r116 = add i256 %r113, %r115 +%r118 = getelementptr i32, i32* %r2, i32 8 +%r119 = load i32, i32* %r118 +%r120 = zext i32 %r119 to i256 +%r121 = shl i256 %r120, 224 +%r122 = zext i224 %r110 to i256 +%r123 = or i256 %r121, %r122 +%r124 = zext i256 %r123 to i288 +%r125 = zext i256 %r116 to i288 +%r126 = add i288 %r124, %r125 +%r127 = lshr i288 %r126, 32 +%r128 = trunc i288 %r127 to i256 +%r129 = lshr i256 %r128, 224 +%r130 = trunc i256 %r129 to i32 +%r131 = trunc i256 %r128 to i224 +%r132 = trunc i224 %r131 to i32 +%r133 = mul i32 %r132, %r6 +%r134 = call i256 @mulPv224x32(i32* %r3, i32 %r133) +%r135 = zext i32 %r130 to i256 +%r136 = shl i256 %r135, 224 +%r137 = add i256 %r134, %r136 +%r139 = getelementptr i32, i32* %r2, i32 9 +%r140 = load i32, i32* %r139 +%r141 = zext i32 %r140 to i256 +%r142 = shl i256 %r141, 224 +%r143 = zext i224 %r131 to i256 +%r144 = or i256 %r142, %r143 +%r145 = zext i256 %r144 to i288 +%r146 = zext i256 %r137 to i288 +%r147 = add i288 %r145, %r146 +%r148 = lshr i288 %r147, 32 +%r149 = trunc i288 %r148 to i256 +%r150 = lshr i256 %r149, 224 +%r151 = trunc i256 %r150 to i32 +%r152 = trunc i256 %r149 to i224 +%r153 = trunc i224 %r152 to i32 +%r154 = mul i32 %r153, %r6 +%r155 = call i256 @mulPv224x32(i32* %r3, i32 %r154) +%r156 = zext i32 %r151 to i256 +%r157 = shl i256 %r156, 224 +%r158 = add i256 %r155, %r157 +%r160 = getelementptr i32, i32* %r2, i32 10 +%r161 = load i32, i32* %r160 +%r162 = zext i32 %r161 to i256 +%r163 = shl i256 %r162, 224 +%r164 = zext i224 %r152 to i256 +%r165 = or i256 %r163, %r164 +%r166 = zext i256 %r165 to i288 +%r167 = zext i256 %r158 to i288 +%r168 = add i288 %r166, %r167 +%r169 = lshr i288 %r168, 32 +%r170 = trunc i288 %r169 to i256 +%r171 = lshr i256 %r170, 224 +%r172 = trunc i256 %r171 to i32 +%r173 = trunc i256 %r170 to i224 +%r174 = trunc i224 %r173 to i32 +%r175 = mul i32 %r174, %r6 +%r176 = call i256 @mulPv224x32(i32* %r3, i32 %r175) +%r177 = zext i32 %r172 to i256 +%r178 = shl i256 %r177, 224 +%r179 = add i256 %r176, %r178 +%r181 = getelementptr i32, i32* %r2, i32 11 +%r182 = load i32, i32* %r181 +%r183 = zext i32 %r182 to i256 +%r184 = shl i256 %r183, 224 +%r185 = zext i224 %r173 to i256 +%r186 = or i256 %r184, %r185 +%r187 = zext i256 %r186 to i288 +%r188 = zext i256 %r179 to i288 +%r189 = add i288 %r187, %r188 +%r190 = lshr i288 %r189, 32 +%r191 = trunc i288 %r190 to i256 +%r192 = lshr i256 %r191, 224 +%r193 = trunc i256 %r192 to i32 +%r194 = trunc i256 %r191 to i224 +%r195 = trunc i224 %r194 to i32 +%r196 = mul i32 %r195, %r6 +%r197 = call i256 @mulPv224x32(i32* %r3, i32 %r196) +%r198 = zext i32 %r193 to i256 +%r199 = shl i256 %r198, 224 +%r200 = add i256 %r197, %r199 +%r202 = getelementptr i32, i32* %r2, i32 12 +%r203 = load i32, i32* %r202 +%r204 = zext i32 %r203 to i256 +%r205 = shl i256 %r204, 224 +%r206 = zext i224 %r194 to i256 +%r207 = or i256 %r205, %r206 +%r208 = zext i256 %r207 to i288 +%r209 = zext i256 %r200 to i288 +%r210 = add i288 %r208, %r209 +%r211 = lshr i288 %r210, 32 +%r212 = trunc i288 %r211 to i256 +%r213 = lshr i256 %r212, 224 +%r214 = trunc i256 %r213 to i32 +%r215 = trunc i256 %r212 to i224 +%r216 = trunc i224 %r215 to i32 +%r217 = mul i32 %r216, %r6 +%r218 = call i256 @mulPv224x32(i32* %r3, i32 %r217) +%r219 = zext i32 %r214 to i256 +%r220 = shl i256 %r219, 224 +%r221 = add i256 %r218, %r220 +%r223 = getelementptr i32, i32* %r2, i32 13 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i256 +%r226 = shl i256 %r225, 224 +%r227 = zext i224 %r215 to i256 +%r228 = or i256 %r226, %r227 +%r229 = zext i256 %r228 to i288 +%r230 = zext i256 %r221 to i288 +%r231 = add i288 %r229, %r230 +%r232 = lshr i288 %r231, 32 +%r233 = trunc i288 %r232 to i256 +%r234 = lshr i256 %r233, 224 +%r235 = trunc i256 %r234 to i32 +%r236 = trunc i256 %r233 to i224 +%r237 = zext i224 %r49 to i256 +%r238 = zext i224 %r236 to i256 +%r239 = sub i256 %r238, %r237 +%r240 = lshr i256 %r239, 224 +%r241 = trunc i256 %r240 to i1 +%r242 = select i1 %r241, i256 %r238, i256 %r239 +%r243 = trunc i256 %r242 to i224 +%r245 = getelementptr i32, i32* %r1, i32 0 +%r246 = trunc i224 %r243 to i32 +store i32 %r246, i32* %r245 +%r247 = lshr i224 %r243, 32 +%r249 = getelementptr i32, i32* %r1, i32 1 +%r250 = trunc i224 %r247 to i32 +store i32 %r250, i32* %r249 +%r251 = lshr i224 %r247, 32 +%r253 = getelementptr i32, i32* %r1, i32 2 +%r254 = trunc i224 %r251 to i32 +store i32 %r254, i32* %r253 +%r255 = lshr i224 %r251, 32 +%r257 = getelementptr i32, i32* %r1, i32 3 +%r258 = trunc i224 %r255 to i32 +store i32 %r258, i32* %r257 +%r259 = lshr i224 %r255, 32 +%r261 = getelementptr i32, i32* %r1, i32 4 +%r262 = trunc i224 %r259 to i32 +store i32 %r262, i32* %r261 +%r263 = lshr i224 %r259, 32 +%r265 = getelementptr i32, i32* %r1, i32 5 +%r266 = trunc i224 %r263 to i32 +store i32 %r266, i32* %r265 +%r267 = lshr i224 %r263, 32 +%r269 = getelementptr i32, i32* %r1, i32 6 +%r270 = trunc i224 %r267 to i32 +store i32 %r270, i32* %r269 ret void } -define i32 @mcl_fp_addPre5L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_montRedNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r35 = load i32, i32* %r4 -%r36 = zext i32 %r35 to i64 -%r38 = getelementptr i32, i32* %r4, i32 1 +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 %r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i64 -%r41 = shl i64 %r40, 32 -%r42 = or i64 %r36, %r41 -%r43 = zext i64 %r42 to i96 -%r45 = getelementptr i32, i32* %r4, i32 2 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 %r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i96 -%r48 = shl i96 %r47, 64 -%r49 = or i96 %r43, %r48 -%r50 = zext i96 %r49 to i128 -%r52 = getelementptr i32, i32* %r4, i32 3 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i128 -%r55 = shl i128 %r54, 96 -%r56 = or i128 %r50, %r55 -%r57 = zext i128 %r56 to i160 -%r59 = getelementptr i32, i32* %r4, i32 4 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i160 -%r62 = shl i160 %r61, 128 -%r63 = or i160 %r57, %r62 -%r64 = zext i160 %r63 to i192 -%r65 = add i192 %r34, %r64 -%r66 = trunc i192 %r65 to i160 -%r67 = trunc i160 %r66 to i32 -%r69 = getelementptr i32, i32* %r2, i32 0 -store i32 %r67, i32* %r69 -%r70 = lshr i160 %r66, 32 -%r71 = trunc i160 %r70 to i32 -%r73 = getelementptr i32, i32* %r2, i32 1 -store i32 %r71, i32* %r73 -%r74 = lshr i160 %r70, 32 -%r75 = trunc i160 %r74 to i32 -%r77 = getelementptr i32, i32* %r2, i32 2 -store i32 %r75, i32* %r77 -%r78 = lshr i160 %r74, 32 -%r79 = trunc i160 %r78 to i32 -%r81 = getelementptr i32, i32* %r2, i32 3 -store i32 %r79, i32* %r81 -%r82 = lshr i160 %r78, 32 -%r83 = trunc i160 %r82 to i32 -%r85 = getelementptr i32, i32* %r2, i32 4 -store i32 %r83, i32* %r85 -%r86 = lshr i192 %r65, 160 -%r87 = trunc i192 %r86 to i32 -ret i32 %r87 -} -define i32 @mcl_fp_subPre5L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r35 = load i32, i32* %r4 -%r36 = zext i32 %r35 to i64 -%r38 = getelementptr i32, i32* %r4, i32 1 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i64 -%r41 = shl i64 %r40, 32 -%r42 = or i64 %r36, %r41 -%r43 = zext i64 %r42 to i96 -%r45 = getelementptr i32, i32* %r4, i32 2 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i96 -%r48 = shl i96 %r47, 64 -%r49 = or i96 %r43, %r48 -%r50 = zext i96 %r49 to i128 -%r52 = getelementptr i32, i32* %r4, i32 3 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i128 -%r55 = shl i128 %r54, 96 -%r56 = or i128 %r50, %r55 -%r57 = zext i128 %r56 to i160 -%r59 = getelementptr i32, i32* %r4, i32 4 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i160 -%r62 = shl i160 %r61, 128 -%r63 = or i160 %r57, %r62 -%r64 = zext i160 %r63 to i192 -%r65 = sub i192 %r34, %r64 -%r66 = trunc i192 %r65 to i160 -%r67 = trunc i160 %r66 to i32 -%r69 = getelementptr i32, i32* %r2, i32 0 -store i32 %r67, i32* %r69 -%r70 = lshr i160 %r66, 32 -%r71 = trunc i160 %r70 to i32 -%r73 = getelementptr i32, i32* %r2, i32 1 -store i32 %r71, i32* %r73 -%r74 = lshr i160 %r70, 32 -%r75 = trunc i160 %r74 to i32 -%r77 = getelementptr i32, i32* %r2, i32 2 -store i32 %r75, i32* %r77 -%r78 = lshr i160 %r74, 32 -%r79 = trunc i160 %r78 to i32 -%r81 = getelementptr i32, i32* %r2, i32 3 -store i32 %r79, i32* %r81 -%r82 = lshr i160 %r78, 32 -%r83 = trunc i160 %r82 to i32 -%r85 = getelementptr i32, i32* %r2, i32 4 -store i32 %r83, i32* %r85 -%r86 = lshr i192 %r65, 160 -%r87 = trunc i192 %r86 to i32 -%r89 = and i32 %r87, 1 -ret i32 %r89 -} -define void @mcl_fp_shr1_5L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = lshr i160 %r31, 1 -%r33 = trunc i160 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 0 -store i32 %r33, i32* %r35 -%r36 = lshr i160 %r32, 32 -%r37 = trunc i160 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 1 -store i32 %r37, i32* %r39 -%r40 = lshr i160 %r36, 32 -%r41 = trunc i160 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 2 -store i32 %r41, i32* %r43 -%r44 = lshr i160 %r40, 32 -%r45 = trunc i160 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 3 -store i32 %r45, i32* %r47 -%r48 = lshr i160 %r44, 32 -%r49 = trunc i160 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 4 -store i32 %r49, i32* %r51 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = load i32, i32* %r2 +%r51 = zext i32 %r50 to i64 +%r53 = getelementptr i32, i32* %r2, i32 1 +%r54 = load i32, i32* %r53 +%r55 = zext i32 %r54 to i64 +%r56 = shl i64 %r55, 32 +%r57 = or i64 %r51, %r56 +%r58 = zext i64 %r57 to i96 +%r60 = getelementptr i32, i32* %r2, i32 2 +%r61 = load i32, i32* %r60 +%r62 = zext i32 %r61 to i96 +%r63 = shl i96 %r62, 64 +%r64 = or i96 %r58, %r63 +%r65 = zext i96 %r64 to i128 +%r67 = getelementptr i32, i32* %r2, i32 3 +%r68 = load i32, i32* %r67 +%r69 = zext i32 %r68 to i128 +%r70 = shl i128 %r69, 96 +%r71 = or i128 %r65, %r70 +%r72 = zext i128 %r71 to i160 +%r74 = getelementptr i32, i32* %r2, i32 4 +%r75 = load i32, i32* %r74 +%r76 = zext i32 %r75 to i160 +%r77 = shl i160 %r76, 128 +%r78 = or i160 %r72, %r77 +%r79 = zext i160 %r78 to i192 +%r81 = getelementptr i32, i32* %r2, i32 5 +%r82 = load i32, i32* %r81 +%r83 = zext i32 %r82 to i192 +%r84 = shl i192 %r83, 160 +%r85 = or i192 %r79, %r84 +%r86 = zext i192 %r85 to i224 +%r88 = getelementptr i32, i32* %r2, i32 6 +%r89 = load i32, i32* %r88 +%r90 = zext i32 %r89 to i224 +%r91 = shl i224 %r90, 192 +%r92 = or i224 %r86, %r91 +%r93 = trunc i224 %r92 to i32 +%r94 = mul i32 %r93, %r6 +%r95 = call i256 @mulPv224x32(i32* %r3, i32 %r94) +%r97 = getelementptr i32, i32* %r2, i32 7 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i256 +%r100 = shl i256 %r99, 224 +%r101 = zext i224 %r92 to i256 +%r102 = or i256 %r100, %r101 +%r103 = zext i256 %r102 to i288 +%r104 = zext i256 %r95 to i288 +%r105 = add i288 %r103, %r104 +%r106 = lshr i288 %r105, 32 +%r107 = trunc i288 %r106 to i256 +%r108 = lshr i256 %r107, 224 +%r109 = trunc i256 %r108 to i32 +%r110 = trunc i256 %r107 to i224 +%r111 = trunc i224 %r110 to i32 +%r112 = mul i32 %r111, %r6 +%r113 = call i256 @mulPv224x32(i32* %r3, i32 %r112) +%r114 = zext i32 %r109 to i256 +%r115 = shl i256 %r114, 224 +%r116 = add i256 %r113, %r115 +%r118 = getelementptr i32, i32* %r2, i32 8 +%r119 = load i32, i32* %r118 +%r120 = zext i32 %r119 to i256 +%r121 = shl i256 %r120, 224 +%r122 = zext i224 %r110 to i256 +%r123 = or i256 %r121, %r122 +%r124 = zext i256 %r123 to i288 +%r125 = zext i256 %r116 to i288 +%r126 = add i288 %r124, %r125 +%r127 = lshr i288 %r126, 32 +%r128 = trunc i288 %r127 to i256 +%r129 = lshr i256 %r128, 224 +%r130 = trunc i256 %r129 to i32 +%r131 = trunc i256 %r128 to i224 +%r132 = trunc i224 %r131 to i32 +%r133 = mul i32 %r132, %r6 +%r134 = call i256 @mulPv224x32(i32* %r3, i32 %r133) +%r135 = zext i32 %r130 to i256 +%r136 = shl i256 %r135, 224 +%r137 = add i256 %r134, %r136 +%r139 = getelementptr i32, i32* %r2, i32 9 +%r140 = load i32, i32* %r139 +%r141 = zext i32 %r140 to i256 +%r142 = shl i256 %r141, 224 +%r143 = zext i224 %r131 to i256 +%r144 = or i256 %r142, %r143 +%r145 = zext i256 %r144 to i288 +%r146 = zext i256 %r137 to i288 +%r147 = add i288 %r145, %r146 +%r148 = lshr i288 %r147, 32 +%r149 = trunc i288 %r148 to i256 +%r150 = lshr i256 %r149, 224 +%r151 = trunc i256 %r150 to i32 +%r152 = trunc i256 %r149 to i224 +%r153 = trunc i224 %r152 to i32 +%r154 = mul i32 %r153, %r6 +%r155 = call i256 @mulPv224x32(i32* %r3, i32 %r154) +%r156 = zext i32 %r151 to i256 +%r157 = shl i256 %r156, 224 +%r158 = add i256 %r155, %r157 +%r160 = getelementptr i32, i32* %r2, i32 10 +%r161 = load i32, i32* %r160 +%r162 = zext i32 %r161 to i256 +%r163 = shl i256 %r162, 224 +%r164 = zext i224 %r152 to i256 +%r165 = or i256 %r163, %r164 +%r166 = zext i256 %r165 to i288 +%r167 = zext i256 %r158 to i288 +%r168 = add i288 %r166, %r167 +%r169 = lshr i288 %r168, 32 +%r170 = trunc i288 %r169 to i256 +%r171 = lshr i256 %r170, 224 +%r172 = trunc i256 %r171 to i32 +%r173 = trunc i256 %r170 to i224 +%r174 = trunc i224 %r173 to i32 +%r175 = mul i32 %r174, %r6 +%r176 = call i256 @mulPv224x32(i32* %r3, i32 %r175) +%r177 = zext i32 %r172 to i256 +%r178 = shl i256 %r177, 224 +%r179 = add i256 %r176, %r178 +%r181 = getelementptr i32, i32* %r2, i32 11 +%r182 = load i32, i32* %r181 +%r183 = zext i32 %r182 to i256 +%r184 = shl i256 %r183, 224 +%r185 = zext i224 %r173 to i256 +%r186 = or i256 %r184, %r185 +%r187 = zext i256 %r186 to i288 +%r188 = zext i256 %r179 to i288 +%r189 = add i288 %r187, %r188 +%r190 = lshr i288 %r189, 32 +%r191 = trunc i288 %r190 to i256 +%r192 = lshr i256 %r191, 224 +%r193 = trunc i256 %r192 to i32 +%r194 = trunc i256 %r191 to i224 +%r195 = trunc i224 %r194 to i32 +%r196 = mul i32 %r195, %r6 +%r197 = call i256 @mulPv224x32(i32* %r3, i32 %r196) +%r198 = zext i32 %r193 to i256 +%r199 = shl i256 %r198, 224 +%r200 = add i256 %r197, %r199 +%r202 = getelementptr i32, i32* %r2, i32 12 +%r203 = load i32, i32* %r202 +%r204 = zext i32 %r203 to i256 +%r205 = shl i256 %r204, 224 +%r206 = zext i224 %r194 to i256 +%r207 = or i256 %r205, %r206 +%r208 = zext i256 %r207 to i288 +%r209 = zext i256 %r200 to i288 +%r210 = add i288 %r208, %r209 +%r211 = lshr i288 %r210, 32 +%r212 = trunc i288 %r211 to i256 +%r213 = lshr i256 %r212, 224 +%r214 = trunc i256 %r213 to i32 +%r215 = trunc i256 %r212 to i224 +%r216 = trunc i224 %r215 to i32 +%r217 = mul i32 %r216, %r6 +%r218 = call i256 @mulPv224x32(i32* %r3, i32 %r217) +%r219 = zext i32 %r214 to i256 +%r220 = shl i256 %r219, 224 +%r221 = add i256 %r218, %r220 +%r223 = getelementptr i32, i32* %r2, i32 13 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i256 +%r226 = shl i256 %r225, 224 +%r227 = zext i224 %r215 to i256 +%r228 = or i256 %r226, %r227 +%r229 = zext i256 %r228 to i288 +%r230 = zext i256 %r221 to i288 +%r231 = add i288 %r229, %r230 +%r232 = lshr i288 %r231, 32 +%r233 = trunc i288 %r232 to i256 +%r234 = lshr i256 %r233, 224 +%r235 = trunc i256 %r234 to i32 +%r236 = trunc i256 %r233 to i224 +%r237 = sub i224 %r236, %r49 +%r238 = lshr i224 %r237, 223 +%r239 = trunc i224 %r238 to i1 +%r240 = select i1 %r239, i224 %r236, i224 %r237 +%r242 = getelementptr i32, i32* %r1, i32 0 +%r243 = trunc i224 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i224 %r240, 32 +%r246 = getelementptr i32, i32* %r1, i32 1 +%r247 = trunc i224 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i224 %r244, 32 +%r250 = getelementptr i32, i32* %r1, i32 2 +%r251 = trunc i224 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i224 %r248, 32 +%r254 = getelementptr i32, i32* %r1, i32 3 +%r255 = trunc i224 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i224 %r252, 32 +%r258 = getelementptr i32, i32* %r1, i32 4 +%r259 = trunc i224 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i224 %r256, 32 +%r262 = getelementptr i32, i32* %r1, i32 5 +%r263 = trunc i224 %r260 to i32 +store i32 %r263, i32* %r262 +%r264 = lshr i224 %r260, 32 +%r266 = getelementptr i32, i32* %r1, i32 6 +%r267 = trunc i224 %r264 to i32 +store i32 %r267, i32* %r266 ret void } -define void @mcl_fp_add5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_addPre7L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r5 = load i32, i32* %r2 +%r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 +%r8 = getelementptr i32, i32* %r3, i32 1 %r9 = load i32, i32* %r8 %r10 = zext i32 %r9 to i64 %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 +%r15 = getelementptr i32, i32* %r3, i32 2 %r16 = load i32, i32* %r15 %r17 = zext i32 %r16 to i96 %r18 = shl i96 %r17, 64 %r19 = or i96 %r13, %r18 %r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 +%r22 = getelementptr i32, i32* %r3, i32 3 %r23 = load i32, i32* %r22 %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 %r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 +%r29 = getelementptr i32, i32* %r3, i32 4 %r30 = load i32, i32* %r29 %r31 = zext i32 %r30 to i160 %r32 = shl i160 %r31, 128 %r33 = or i160 %r27, %r32 -%r34 = load i32, i32* %r3 -%r35 = zext i32 %r34 to i64 -%r37 = getelementptr i32, i32* %r3, i32 1 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i64 -%r40 = shl i64 %r39, 32 -%r41 = or i64 %r35, %r40 -%r42 = zext i64 %r41 to i96 -%r44 = getelementptr i32, i32* %r3, i32 2 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i96 -%r47 = shl i96 %r46, 64 -%r48 = or i96 %r42, %r47 -%r49 = zext i96 %r48 to i128 -%r51 = getelementptr i32, i32* %r3, i32 3 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i128 -%r54 = shl i128 %r53, 96 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i160 -%r58 = getelementptr i32, i32* %r3, i32 4 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i160 -%r61 = shl i160 %r60, 128 -%r62 = or i160 %r56, %r61 -%r63 = zext i160 %r33 to i192 -%r64 = zext i160 %r62 to i192 -%r65 = add i192 %r63, %r64 -%r66 = trunc i192 %r65 to i160 -%r67 = trunc i160 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 0 -store i32 %r67, i32* %r69 -%r70 = lshr i160 %r66, 32 -%r71 = trunc i160 %r70 to i32 -%r73 = getelementptr i32, i32* %r1, i32 1 -store i32 %r71, i32* %r73 -%r74 = lshr i160 %r70, 32 -%r75 = trunc i160 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 2 -store i32 %r75, i32* %r77 -%r78 = lshr i160 %r74, 32 -%r79 = trunc i160 %r78 to i32 -%r81 = getelementptr i32, i32* %r1, i32 3 -store i32 %r79, i32* %r81 -%r82 = lshr i160 %r78, 32 -%r83 = trunc i160 %r82 to i32 -%r85 = getelementptr i32, i32* %r1, i32 4 -store i32 %r83, i32* %r85 -%r86 = load i32, i32* %r4 -%r87 = zext i32 %r86 to i64 -%r89 = getelementptr i32, i32* %r4, i32 1 -%r90 = load i32, i32* %r89 -%r91 = zext i32 %r90 to i64 -%r92 = shl i64 %r91, 32 -%r93 = or i64 %r87, %r92 -%r94 = zext i64 %r93 to i96 -%r96 = getelementptr i32, i32* %r4, i32 2 -%r97 = load i32, i32* %r96 -%r98 = zext i32 %r97 to i96 -%r99 = shl i96 %r98, 64 -%r100 = or i96 %r94, %r99 -%r101 = zext i96 %r100 to i128 -%r103 = getelementptr i32, i32* %r4, i32 3 -%r104 = load i32, i32* %r103 -%r105 = zext i32 %r104 to i128 -%r106 = shl i128 %r105, 96 -%r107 = or i128 %r101, %r106 -%r108 = zext i128 %r107 to i160 -%r110 = getelementptr i32, i32* %r4, i32 4 -%r111 = load i32, i32* %r110 -%r112 = zext i32 %r111 to i160 -%r113 = shl i160 %r112, 128 -%r114 = or i160 %r108, %r113 -%r115 = zext i160 %r114 to i192 -%r116 = sub i192 %r65, %r115 -%r117 = lshr i192 %r116, 160 -%r118 = trunc i192 %r117 to i1 -br i1%r118, label %carry, label %nocarry -nocarry: -%r119 = trunc i192 %r116 to i160 -%r120 = trunc i160 %r119 to i32 -%r122 = getelementptr i32, i32* %r1, i32 0 -store i32 %r120, i32* %r122 -%r123 = lshr i160 %r119, 32 -%r124 = trunc i160 %r123 to i32 -%r126 = getelementptr i32, i32* %r1, i32 1 -store i32 %r124, i32* %r126 -%r127 = lshr i160 %r123, 32 -%r128 = trunc i160 %r127 to i32 -%r130 = getelementptr i32, i32* %r1, i32 2 -store i32 %r128, i32* %r130 -%r131 = lshr i160 %r127, 32 -%r132 = trunc i160 %r131 to i32 -%r134 = getelementptr i32, i32* %r1, i32 3 -store i32 %r132, i32* %r134 -%r135 = lshr i160 %r131, 32 -%r136 = trunc i160 %r135 to i32 -%r138 = getelementptr i32, i32* %r1, i32 4 -store i32 %r136, i32* %r138 -ret void -carry: -ret void +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r3, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r49 = load i32, i32* %r4 +%r50 = zext i32 %r49 to i64 +%r52 = getelementptr i32, i32* %r4, i32 1 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i64 +%r55 = shl i64 %r54, 32 +%r56 = or i64 %r50, %r55 +%r57 = zext i64 %r56 to i96 +%r59 = getelementptr i32, i32* %r4, i32 2 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i96 +%r62 = shl i96 %r61, 64 +%r63 = or i96 %r57, %r62 +%r64 = zext i96 %r63 to i128 +%r66 = getelementptr i32, i32* %r4, i32 3 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i128 +%r69 = shl i128 %r68, 96 +%r70 = or i128 %r64, %r69 +%r71 = zext i128 %r70 to i160 +%r73 = getelementptr i32, i32* %r4, i32 4 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i160 +%r76 = shl i160 %r75, 128 +%r77 = or i160 %r71, %r76 +%r78 = zext i160 %r77 to i192 +%r80 = getelementptr i32, i32* %r4, i32 5 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i192 +%r83 = shl i192 %r82, 160 +%r84 = or i192 %r78, %r83 +%r85 = zext i192 %r84 to i224 +%r87 = getelementptr i32, i32* %r4, i32 6 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i224 +%r90 = shl i224 %r89, 192 +%r91 = or i224 %r85, %r90 +%r92 = zext i224 %r91 to i256 +%r93 = add i256 %r48, %r92 +%r94 = trunc i256 %r93 to i224 +%r96 = getelementptr i32, i32* %r2, i32 0 +%r97 = trunc i224 %r94 to i32 +store i32 %r97, i32* %r96 +%r98 = lshr i224 %r94, 32 +%r100 = getelementptr i32, i32* %r2, i32 1 +%r101 = trunc i224 %r98 to i32 +store i32 %r101, i32* %r100 +%r102 = lshr i224 %r98, 32 +%r104 = getelementptr i32, i32* %r2, i32 2 +%r105 = trunc i224 %r102 to i32 +store i32 %r105, i32* %r104 +%r106 = lshr i224 %r102, 32 +%r108 = getelementptr i32, i32* %r2, i32 3 +%r109 = trunc i224 %r106 to i32 +store i32 %r109, i32* %r108 +%r110 = lshr i224 %r106, 32 +%r112 = getelementptr i32, i32* %r2, i32 4 +%r113 = trunc i224 %r110 to i32 +store i32 %r113, i32* %r112 +%r114 = lshr i224 %r110, 32 +%r116 = getelementptr i32, i32* %r2, i32 5 +%r117 = trunc i224 %r114 to i32 +store i32 %r117, i32* %r116 +%r118 = lshr i224 %r114, 32 +%r120 = getelementptr i32, i32* %r2, i32 6 +%r121 = trunc i224 %r118 to i32 +store i32 %r121, i32* %r120 +%r122 = lshr i256 %r93, 224 +%r123 = trunc i256 %r122 to i32 +ret i32 %r123 } -define void @mcl_fp_addNF5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_subPre7L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r5 = load i32, i32* %r2 +%r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 +%r8 = getelementptr i32, i32* %r3, i32 1 %r9 = load i32, i32* %r8 %r10 = zext i32 %r9 to i64 %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 +%r15 = getelementptr i32, i32* %r3, i32 2 %r16 = load i32, i32* %r15 %r17 = zext i32 %r16 to i96 %r18 = shl i96 %r17, 64 %r19 = or i96 %r13, %r18 %r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 +%r22 = getelementptr i32, i32* %r3, i32 3 %r23 = load i32, i32* %r22 %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 %r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = load i32, i32* %r3 -%r35 = zext i32 %r34 to i64 -%r37 = getelementptr i32, i32* %r3, i32 1 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i64 -%r40 = shl i64 %r39, 32 -%r41 = or i64 %r35, %r40 -%r42 = zext i64 %r41 to i96 -%r44 = getelementptr i32, i32* %r3, i32 2 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i96 -%r47 = shl i96 %r46, 64 -%r48 = or i96 %r42, %r47 -%r49 = zext i96 %r48 to i128 -%r51 = getelementptr i32, i32* %r3, i32 3 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i128 -%r54 = shl i128 %r53, 96 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i160 -%r58 = getelementptr i32, i32* %r3, i32 4 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i160 -%r61 = shl i160 %r60, 128 -%r62 = or i160 %r56, %r61 -%r63 = add i160 %r33, %r62 -%r64 = load i32, i32* %r4 -%r65 = zext i32 %r64 to i64 -%r67 = getelementptr i32, i32* %r4, i32 1 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i64 -%r70 = shl i64 %r69, 32 -%r71 = or i64 %r65, %r70 -%r72 = zext i64 %r71 to i96 -%r74 = getelementptr i32, i32* %r4, i32 2 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i96 -%r77 = shl i96 %r76, 64 -%r78 = or i96 %r72, %r77 -%r79 = zext i96 %r78 to i128 -%r81 = getelementptr i32, i32* %r4, i32 3 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i128 -%r84 = shl i128 %r83, 96 -%r85 = or i128 %r79, %r84 -%r86 = zext i128 %r85 to i160 -%r88 = getelementptr i32, i32* %r4, i32 4 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i160 -%r91 = shl i160 %r90, 128 -%r92 = or i160 %r86, %r91 -%r93 = sub i160 %r63, %r92 -%r94 = lshr i160 %r93, 159 -%r95 = trunc i160 %r94 to i1 -%r96 = select i1 %r95, i160 %r63, i160 %r93 -%r97 = trunc i160 %r96 to i32 -%r99 = getelementptr i32, i32* %r1, i32 0 -store i32 %r97, i32* %r99 -%r100 = lshr i160 %r96, 32 -%r101 = trunc i160 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 1 -store i32 %r101, i32* %r103 -%r104 = lshr i160 %r100, 32 -%r105 = trunc i160 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 2 -store i32 %r105, i32* %r107 -%r108 = lshr i160 %r104, 32 -%r109 = trunc i160 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 3 -store i32 %r109, i32* %r111 -%r112 = lshr i160 %r108, 32 -%r113 = trunc i160 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 4 -store i32 %r113, i32* %r115 -ret void -} -define void @mcl_fp_sub5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = load i32, i32* %r3 -%r35 = zext i32 %r34 to i64 -%r37 = getelementptr i32, i32* %r3, i32 1 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i64 -%r40 = shl i64 %r39, 32 -%r41 = or i64 %r35, %r40 -%r42 = zext i64 %r41 to i96 -%r44 = getelementptr i32, i32* %r3, i32 2 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i96 -%r47 = shl i96 %r46, 64 -%r48 = or i96 %r42, %r47 -%r49 = zext i96 %r48 to i128 -%r51 = getelementptr i32, i32* %r3, i32 3 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i128 -%r54 = shl i128 %r53, 96 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i160 -%r58 = getelementptr i32, i32* %r3, i32 4 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i160 -%r61 = shl i160 %r60, 128 -%r62 = or i160 %r56, %r61 -%r63 = zext i160 %r33 to i192 -%r64 = zext i160 %r62 to i192 -%r65 = sub i192 %r63, %r64 -%r66 = trunc i192 %r65 to i160 -%r67 = lshr i192 %r65, 160 -%r68 = trunc i192 %r67 to i1 -%r69 = trunc i160 %r66 to i32 -%r71 = getelementptr i32, i32* %r1, i32 0 -store i32 %r69, i32* %r71 -%r72 = lshr i160 %r66, 32 -%r73 = trunc i160 %r72 to i32 -%r75 = getelementptr i32, i32* %r1, i32 1 -store i32 %r73, i32* %r75 -%r76 = lshr i160 %r72, 32 -%r77 = trunc i160 %r76 to i32 -%r79 = getelementptr i32, i32* %r1, i32 2 -store i32 %r77, i32* %r79 -%r80 = lshr i160 %r76, 32 -%r81 = trunc i160 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 3 -store i32 %r81, i32* %r83 -%r84 = lshr i160 %r80, 32 -%r85 = trunc i160 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 4 -store i32 %r85, i32* %r87 -br i1%r68, label %carry, label %nocarry -nocarry: -ret void -carry: -%r88 = load i32, i32* %r4 -%r89 = zext i32 %r88 to i64 -%r91 = getelementptr i32, i32* %r4, i32 1 -%r92 = load i32, i32* %r91 -%r93 = zext i32 %r92 to i64 -%r94 = shl i64 %r93, 32 -%r95 = or i64 %r89, %r94 -%r96 = zext i64 %r95 to i96 -%r98 = getelementptr i32, i32* %r4, i32 2 -%r99 = load i32, i32* %r98 -%r100 = zext i32 %r99 to i96 -%r101 = shl i96 %r100, 64 -%r102 = or i96 %r96, %r101 -%r103 = zext i96 %r102 to i128 -%r105 = getelementptr i32, i32* %r4, i32 3 -%r106 = load i32, i32* %r105 -%r107 = zext i32 %r106 to i128 -%r108 = shl i128 %r107, 96 -%r109 = or i128 %r103, %r108 -%r110 = zext i128 %r109 to i160 -%r112 = getelementptr i32, i32* %r4, i32 4 -%r113 = load i32, i32* %r112 -%r114 = zext i32 %r113 to i160 -%r115 = shl i160 %r114, 128 -%r116 = or i160 %r110, %r115 -%r117 = add i160 %r66, %r116 -%r118 = trunc i160 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 0 -store i32 %r118, i32* %r120 -%r121 = lshr i160 %r117, 32 -%r122 = trunc i160 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 1 -store i32 %r122, i32* %r124 -%r125 = lshr i160 %r121, 32 -%r126 = trunc i160 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 2 -store i32 %r126, i32* %r128 -%r129 = lshr i160 %r125, 32 -%r130 = trunc i160 %r129 to i32 -%r132 = getelementptr i32, i32* %r1, i32 3 -store i32 %r130, i32* %r132 -%r133 = lshr i160 %r129, 32 -%r134 = trunc i160 %r133 to i32 -%r136 = getelementptr i32, i32* %r1, i32 4 -store i32 %r134, i32* %r136 -ret void -} -define void @mcl_fp_subNF5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = load i32, i32* %r3 -%r35 = zext i32 %r34 to i64 -%r37 = getelementptr i32, i32* %r3, i32 1 -%r38 = load i32, i32* %r37 -%r39 = zext i32 %r38 to i64 -%r40 = shl i64 %r39, 32 -%r41 = or i64 %r35, %r40 -%r42 = zext i64 %r41 to i96 -%r44 = getelementptr i32, i32* %r3, i32 2 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i96 -%r47 = shl i96 %r46, 64 -%r48 = or i96 %r42, %r47 -%r49 = zext i96 %r48 to i128 -%r51 = getelementptr i32, i32* %r3, i32 3 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i128 -%r54 = shl i128 %r53, 96 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i160 -%r58 = getelementptr i32, i32* %r3, i32 4 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i160 -%r61 = shl i160 %r60, 128 -%r62 = or i160 %r56, %r61 -%r63 = sub i160 %r33, %r62 -%r64 = lshr i160 %r63, 159 -%r65 = trunc i160 %r64 to i1 -%r66 = load i32, i32* %r4 -%r67 = zext i32 %r66 to i64 -%r69 = getelementptr i32, i32* %r4, i32 1 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i64 -%r72 = shl i64 %r71, 32 -%r73 = or i64 %r67, %r72 -%r74 = zext i64 %r73 to i96 -%r76 = getelementptr i32, i32* %r4, i32 2 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i96 -%r79 = shl i96 %r78, 64 -%r80 = or i96 %r74, %r79 -%r81 = zext i96 %r80 to i128 -%r83 = getelementptr i32, i32* %r4, i32 3 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i128 -%r86 = shl i128 %r85, 96 -%r87 = or i128 %r81, %r86 -%r88 = zext i128 %r87 to i160 -%r90 = getelementptr i32, i32* %r4, i32 4 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i160 -%r93 = shl i160 %r92, 128 -%r94 = or i160 %r88, %r93 -%r96 = select i1 %r65, i160 %r94, i160 0 -%r97 = add i160 %r63, %r96 -%r98 = trunc i160 %r97 to i32 -%r100 = getelementptr i32, i32* %r1, i32 0 -store i32 %r98, i32* %r100 -%r101 = lshr i160 %r97, 32 -%r102 = trunc i160 %r101 to i32 -%r104 = getelementptr i32, i32* %r1, i32 1 -store i32 %r102, i32* %r104 -%r105 = lshr i160 %r101, 32 -%r106 = trunc i160 %r105 to i32 -%r108 = getelementptr i32, i32* %r1, i32 2 -store i32 %r106, i32* %r108 -%r109 = lshr i160 %r105, 32 -%r110 = trunc i160 %r109 to i32 -%r112 = getelementptr i32, i32* %r1, i32 3 -store i32 %r110, i32* %r112 -%r113 = lshr i160 %r109, 32 -%r114 = trunc i160 %r113 to i32 -%r116 = getelementptr i32, i32* %r1, i32 4 -store i32 %r114, i32* %r116 -ret void -} -define void @mcl_fpDbl_add5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 +%r29 = getelementptr i32, i32* %r3, i32 4 %r30 = load i32, i32* %r29 %r31 = zext i32 %r30 to i160 %r32 = shl i160 %r31, 128 %r33 = or i160 %r27, %r32 %r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 +%r36 = getelementptr i32, i32* %r3, i32 5 %r37 = load i32, i32* %r36 %r38 = zext i32 %r37 to i192 %r39 = shl i192 %r38, 160 %r40 = or i192 %r34, %r39 %r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 +%r43 = getelementptr i32, i32* %r3, i32 6 %r44 = load i32, i32* %r43 %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 %r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r68 to i352 -%r134 = zext i320 %r132 to i352 -%r135 = add i352 %r133, %r134 -%r136 = trunc i352 %r135 to i160 -%r137 = trunc i160 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 0 -store i32 %r137, i32* %r139 -%r140 = lshr i160 %r136, 32 -%r141 = trunc i160 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 1 -store i32 %r141, i32* %r143 -%r144 = lshr i160 %r140, 32 -%r145 = trunc i160 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 2 -store i32 %r145, i32* %r147 -%r148 = lshr i160 %r144, 32 -%r149 = trunc i160 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 3 -store i32 %r149, i32* %r151 -%r152 = lshr i160 %r148, 32 -%r153 = trunc i160 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 4 -store i32 %r153, i32* %r155 -%r156 = lshr i352 %r135, 160 -%r157 = trunc i352 %r156 to i192 -%r158 = load i32, i32* %r4 -%r159 = zext i32 %r158 to i64 -%r161 = getelementptr i32, i32* %r4, i32 1 -%r162 = load i32, i32* %r161 -%r163 = zext i32 %r162 to i64 -%r164 = shl i64 %r163, 32 -%r165 = or i64 %r159, %r164 -%r166 = zext i64 %r165 to i96 -%r168 = getelementptr i32, i32* %r4, i32 2 -%r169 = load i32, i32* %r168 -%r170 = zext i32 %r169 to i96 -%r171 = shl i96 %r170, 64 -%r172 = or i96 %r166, %r171 -%r173 = zext i96 %r172 to i128 -%r175 = getelementptr i32, i32* %r4, i32 3 -%r176 = load i32, i32* %r175 -%r177 = zext i32 %r176 to i128 -%r178 = shl i128 %r177, 96 -%r179 = or i128 %r173, %r178 -%r180 = zext i128 %r179 to i160 -%r182 = getelementptr i32, i32* %r4, i32 4 -%r183 = load i32, i32* %r182 -%r184 = zext i32 %r183 to i160 -%r185 = shl i160 %r184, 128 -%r186 = or i160 %r180, %r185 -%r187 = zext i160 %r186 to i192 -%r188 = sub i192 %r157, %r187 -%r189 = lshr i192 %r188, 160 -%r190 = trunc i192 %r189 to i1 -%r191 = select i1 %r190, i192 %r157, i192 %r188 -%r192 = trunc i192 %r191 to i160 -%r194 = getelementptr i32, i32* %r1, i32 5 -%r195 = trunc i160 %r192 to i32 -%r197 = getelementptr i32, i32* %r194, i32 0 -store i32 %r195, i32* %r197 -%r198 = lshr i160 %r192, 32 -%r199 = trunc i160 %r198 to i32 -%r201 = getelementptr i32, i32* %r194, i32 1 -store i32 %r199, i32* %r201 -%r202 = lshr i160 %r198, 32 -%r203 = trunc i160 %r202 to i32 -%r205 = getelementptr i32, i32* %r194, i32 2 -store i32 %r203, i32* %r205 -%r206 = lshr i160 %r202, 32 -%r207 = trunc i160 %r206 to i32 -%r209 = getelementptr i32, i32* %r194, i32 3 -store i32 %r207, i32* %r209 -%r210 = lshr i160 %r206, 32 -%r211 = trunc i160 %r210 to i32 -%r213 = getelementptr i32, i32* %r194, i32 4 -store i32 %r211, i32* %r213 +%r49 = load i32, i32* %r4 +%r50 = zext i32 %r49 to i64 +%r52 = getelementptr i32, i32* %r4, i32 1 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i64 +%r55 = shl i64 %r54, 32 +%r56 = or i64 %r50, %r55 +%r57 = zext i64 %r56 to i96 +%r59 = getelementptr i32, i32* %r4, i32 2 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i96 +%r62 = shl i96 %r61, 64 +%r63 = or i96 %r57, %r62 +%r64 = zext i96 %r63 to i128 +%r66 = getelementptr i32, i32* %r4, i32 3 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i128 +%r69 = shl i128 %r68, 96 +%r70 = or i128 %r64, %r69 +%r71 = zext i128 %r70 to i160 +%r73 = getelementptr i32, i32* %r4, i32 4 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i160 +%r76 = shl i160 %r75, 128 +%r77 = or i160 %r71, %r76 +%r78 = zext i160 %r77 to i192 +%r80 = getelementptr i32, i32* %r4, i32 5 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i192 +%r83 = shl i192 %r82, 160 +%r84 = or i192 %r78, %r83 +%r85 = zext i192 %r84 to i224 +%r87 = getelementptr i32, i32* %r4, i32 6 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i224 +%r90 = shl i224 %r89, 192 +%r91 = or i224 %r85, %r90 +%r92 = zext i224 %r91 to i256 +%r93 = sub i256 %r48, %r92 +%r94 = trunc i256 %r93 to i224 +%r96 = getelementptr i32, i32* %r2, i32 0 +%r97 = trunc i224 %r94 to i32 +store i32 %r97, i32* %r96 +%r98 = lshr i224 %r94, 32 +%r100 = getelementptr i32, i32* %r2, i32 1 +%r101 = trunc i224 %r98 to i32 +store i32 %r101, i32* %r100 +%r102 = lshr i224 %r98, 32 +%r104 = getelementptr i32, i32* %r2, i32 2 +%r105 = trunc i224 %r102 to i32 +store i32 %r105, i32* %r104 +%r106 = lshr i224 %r102, 32 +%r108 = getelementptr i32, i32* %r2, i32 3 +%r109 = trunc i224 %r106 to i32 +store i32 %r109, i32* %r108 +%r110 = lshr i224 %r106, 32 +%r112 = getelementptr i32, i32* %r2, i32 4 +%r113 = trunc i224 %r110 to i32 +store i32 %r113, i32* %r112 +%r114 = lshr i224 %r110, 32 +%r116 = getelementptr i32, i32* %r2, i32 5 +%r117 = trunc i224 %r114 to i32 +store i32 %r117, i32* %r116 +%r118 = lshr i224 %r114, 32 +%r120 = getelementptr i32, i32* %r2, i32 6 +%r121 = trunc i224 %r118 to i32 +store i32 %r121, i32* %r120 +%r123 = lshr i256 %r93, 224 +%r124 = trunc i256 %r123 to i32 +%r125 = and i32 %r124, 1 +ret i32 %r125 +} +define void @mcl_fp_shr1_7L(i32* noalias %r1, i32* noalias %r2) +{ +%r3 = load i32, i32* %r2 +%r4 = zext i32 %r3 to i64 +%r6 = getelementptr i32, i32* %r2, i32 1 +%r7 = load i32, i32* %r6 +%r8 = zext i32 %r7 to i64 +%r9 = shl i64 %r8, 32 +%r10 = or i64 %r4, %r9 +%r11 = zext i64 %r10 to i96 +%r13 = getelementptr i32, i32* %r2, i32 2 +%r14 = load i32, i32* %r13 +%r15 = zext i32 %r14 to i96 +%r16 = shl i96 %r15, 64 +%r17 = or i96 %r11, %r16 +%r18 = zext i96 %r17 to i128 +%r20 = getelementptr i32, i32* %r2, i32 3 +%r21 = load i32, i32* %r20 +%r22 = zext i32 %r21 to i128 +%r23 = shl i128 %r22, 96 +%r24 = or i128 %r18, %r23 +%r25 = zext i128 %r24 to i160 +%r27 = getelementptr i32, i32* %r2, i32 4 +%r28 = load i32, i32* %r27 +%r29 = zext i32 %r28 to i160 +%r30 = shl i160 %r29, 128 +%r31 = or i160 %r25, %r30 +%r32 = zext i160 %r31 to i192 +%r34 = getelementptr i32, i32* %r2, i32 5 +%r35 = load i32, i32* %r34 +%r36 = zext i32 %r35 to i192 +%r37 = shl i192 %r36, 160 +%r38 = or i192 %r32, %r37 +%r39 = zext i192 %r38 to i224 +%r41 = getelementptr i32, i32* %r2, i32 6 +%r42 = load i32, i32* %r41 +%r43 = zext i32 %r42 to i224 +%r44 = shl i224 %r43, 192 +%r45 = or i224 %r39, %r44 +%r46 = lshr i224 %r45, 1 +%r48 = getelementptr i32, i32* %r1, i32 0 +%r49 = trunc i224 %r46 to i32 +store i32 %r49, i32* %r48 +%r50 = lshr i224 %r46, 32 +%r52 = getelementptr i32, i32* %r1, i32 1 +%r53 = trunc i224 %r50 to i32 +store i32 %r53, i32* %r52 +%r54 = lshr i224 %r50, 32 +%r56 = getelementptr i32, i32* %r1, i32 2 +%r57 = trunc i224 %r54 to i32 +store i32 %r57, i32* %r56 +%r58 = lshr i224 %r54, 32 +%r60 = getelementptr i32, i32* %r1, i32 3 +%r61 = trunc i224 %r58 to i32 +store i32 %r61, i32* %r60 +%r62 = lshr i224 %r58, 32 +%r64 = getelementptr i32, i32* %r1, i32 4 +%r65 = trunc i224 %r62 to i32 +store i32 %r65, i32* %r64 +%r66 = lshr i224 %r62, 32 +%r68 = getelementptr i32, i32* %r1, i32 5 +%r69 = trunc i224 %r66 to i32 +store i32 %r69, i32* %r68 +%r70 = lshr i224 %r66, 32 +%r72 = getelementptr i32, i32* %r1, i32 6 +%r73 = trunc i224 %r70 to i32 +store i32 %r73, i32* %r72 ret void } -define void @mcl_fpDbl_sub5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -5186,1075 +4112,477 @@ define void @mcl_fpDbl_sub5L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 +%r48 = load i32, i32* %r3 +%r49 = zext i32 %r48 to i64 +%r51 = getelementptr i32, i32* %r3, i32 1 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i64 +%r54 = shl i64 %r53, 32 +%r55 = or i64 %r49, %r54 +%r56 = zext i64 %r55 to i96 +%r58 = getelementptr i32, i32* %r3, i32 2 +%r59 = load i32, i32* %r58 +%r60 = zext i32 %r59 to i96 +%r61 = shl i96 %r60, 64 +%r62 = or i96 %r56, %r61 +%r63 = zext i96 %r62 to i128 +%r65 = getelementptr i32, i32* %r3, i32 3 +%r66 = load i32, i32* %r65 +%r67 = zext i32 %r66 to i128 +%r68 = shl i128 %r67, 96 +%r69 = or i128 %r63, %r68 +%r70 = zext i128 %r69 to i160 +%r72 = getelementptr i32, i32* %r3, i32 4 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 +%r74 = zext i32 %r73 to i160 +%r75 = shl i160 %r74, 128 +%r76 = or i160 %r70, %r75 +%r77 = zext i160 %r76 to i192 +%r79 = getelementptr i32, i32* %r3, i32 5 %r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 +%r81 = zext i32 %r80 to i192 +%r82 = shl i192 %r81, 160 +%r83 = or i192 %r77, %r82 +%r84 = zext i192 %r83 to i224 +%r86 = getelementptr i32, i32* %r3, i32 6 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r68 to i352 -%r134 = zext i320 %r132 to i352 -%r135 = sub i352 %r133, %r134 -%r136 = trunc i352 %r135 to i160 -%r137 = trunc i160 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 0 -store i32 %r137, i32* %r139 -%r140 = lshr i160 %r136, 32 -%r141 = trunc i160 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 1 -store i32 %r141, i32* %r143 -%r144 = lshr i160 %r140, 32 -%r145 = trunc i160 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 2 -store i32 %r145, i32* %r147 -%r148 = lshr i160 %r144, 32 -%r149 = trunc i160 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 3 -store i32 %r149, i32* %r151 -%r152 = lshr i160 %r148, 32 -%r153 = trunc i160 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 4 -store i32 %r153, i32* %r155 -%r156 = lshr i352 %r135, 160 -%r157 = trunc i352 %r156 to i160 -%r158 = lshr i352 %r135, 320 -%r159 = trunc i352 %r158 to i1 -%r160 = load i32, i32* %r4 -%r161 = zext i32 %r160 to i64 -%r163 = getelementptr i32, i32* %r4, i32 1 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i64 -%r166 = shl i64 %r165, 32 -%r167 = or i64 %r161, %r166 -%r168 = zext i64 %r167 to i96 -%r170 = getelementptr i32, i32* %r4, i32 2 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i96 -%r173 = shl i96 %r172, 64 -%r174 = or i96 %r168, %r173 -%r175 = zext i96 %r174 to i128 -%r177 = getelementptr i32, i32* %r4, i32 3 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i128 -%r180 = shl i128 %r179, 96 -%r181 = or i128 %r175, %r180 -%r182 = zext i128 %r181 to i160 -%r184 = getelementptr i32, i32* %r4, i32 4 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i160 -%r187 = shl i160 %r186, 128 -%r188 = or i160 %r182, %r187 -%r190 = select i1 %r159, i160 %r188, i160 0 -%r191 = add i160 %r157, %r190 -%r193 = getelementptr i32, i32* %r1, i32 5 -%r194 = trunc i160 %r191 to i32 -%r196 = getelementptr i32, i32* %r193, i32 0 -store i32 %r194, i32* %r196 -%r197 = lshr i160 %r191, 32 -%r198 = trunc i160 %r197 to i32 -%r200 = getelementptr i32, i32* %r193, i32 1 -store i32 %r198, i32* %r200 -%r201 = lshr i160 %r197, 32 -%r202 = trunc i160 %r201 to i32 -%r204 = getelementptr i32, i32* %r193, i32 2 -store i32 %r202, i32* %r204 -%r205 = lshr i160 %r201, 32 -%r206 = trunc i160 %r205 to i32 -%r208 = getelementptr i32, i32* %r193, i32 3 -store i32 %r206, i32* %r208 -%r209 = lshr i160 %r205, 32 -%r210 = trunc i160 %r209 to i32 -%r212 = getelementptr i32, i32* %r193, i32 4 -store i32 %r210, i32* %r212 -ret void -} -define i224 @mulPv192x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r28 = zext i32 %r6 to i64 -%r29 = zext i32 %r10 to i64 -%r30 = shl i64 %r29, 32 -%r31 = or i64 %r28, %r30 -%r32 = zext i64 %r31 to i96 -%r33 = zext i32 %r14 to i96 -%r34 = shl i96 %r33, 64 -%r35 = or i96 %r32, %r34 -%r36 = zext i96 %r35 to i128 -%r37 = zext i32 %r18 to i128 -%r38 = shl i128 %r37, 96 -%r39 = or i128 %r36, %r38 -%r40 = zext i128 %r39 to i160 -%r41 = zext i32 %r22 to i160 -%r42 = shl i160 %r41, 128 -%r43 = or i160 %r40, %r42 -%r44 = zext i160 %r43 to i192 -%r45 = zext i32 %r26 to i192 -%r46 = shl i192 %r45, 160 -%r47 = or i192 %r44, %r46 -%r48 = zext i32 %r7 to i64 -%r49 = zext i32 %r11 to i64 -%r50 = shl i64 %r49, 32 -%r51 = or i64 %r48, %r50 -%r52 = zext i64 %r51 to i96 -%r53 = zext i32 %r15 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r52, %r54 -%r56 = zext i96 %r55 to i128 -%r57 = zext i32 %r19 to i128 -%r58 = shl i128 %r57, 96 -%r59 = or i128 %r56, %r58 -%r60 = zext i128 %r59 to i160 -%r61 = zext i32 %r23 to i160 -%r62 = shl i160 %r61, 128 -%r63 = or i160 %r60, %r62 -%r64 = zext i160 %r63 to i192 -%r65 = zext i32 %r27 to i192 -%r66 = shl i192 %r65, 160 -%r67 = or i192 %r64, %r66 -%r68 = zext i192 %r47 to i224 -%r69 = zext i192 %r67 to i224 -%r70 = shl i224 %r69, 32 -%r71 = add i224 %r68, %r70 -ret i224 %r71 -} -define void @mcl_fp_mulUnitPre6L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i224 @mulPv192x32(i32* %r2, i32 %r3) -%r5 = trunc i224 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i224 %r4, 32 -%r9 = trunc i224 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i224 %r8, 32 -%r13 = trunc i224 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i224 %r12, 32 -%r17 = trunc i224 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i224 %r16, 32 -%r21 = trunc i224 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i224 %r20, 32 -%r25 = trunc i224 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i224 %r24, 32 -%r29 = trunc i224 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 +%r88 = zext i32 %r87 to i224 +%r89 = shl i224 %r88, 192 +%r90 = or i224 %r84, %r89 +%r91 = zext i224 %r47 to i256 +%r92 = zext i224 %r90 to i256 +%r93 = add i256 %r91, %r92 +%r94 = trunc i256 %r93 to i224 +%r96 = getelementptr i32, i32* %r1, i32 0 +%r97 = trunc i224 %r94 to i32 +store i32 %r97, i32* %r96 +%r98 = lshr i224 %r94, 32 +%r100 = getelementptr i32, i32* %r1, i32 1 +%r101 = trunc i224 %r98 to i32 +store i32 %r101, i32* %r100 +%r102 = lshr i224 %r98, 32 +%r104 = getelementptr i32, i32* %r1, i32 2 +%r105 = trunc i224 %r102 to i32 +store i32 %r105, i32* %r104 +%r106 = lshr i224 %r102, 32 +%r108 = getelementptr i32, i32* %r1, i32 3 +%r109 = trunc i224 %r106 to i32 +store i32 %r109, i32* %r108 +%r110 = lshr i224 %r106, 32 +%r112 = getelementptr i32, i32* %r1, i32 4 +%r113 = trunc i224 %r110 to i32 +store i32 %r113, i32* %r112 +%r114 = lshr i224 %r110, 32 +%r116 = getelementptr i32, i32* %r1, i32 5 +%r117 = trunc i224 %r114 to i32 +store i32 %r117, i32* %r116 +%r118 = lshr i224 %r114, 32 +%r120 = getelementptr i32, i32* %r1, i32 6 +%r121 = trunc i224 %r118 to i32 +store i32 %r121, i32* %r120 +%r122 = load i32, i32* %r4 +%r123 = zext i32 %r122 to i64 +%r125 = getelementptr i32, i32* %r4, i32 1 +%r126 = load i32, i32* %r125 +%r127 = zext i32 %r126 to i64 +%r128 = shl i64 %r127, 32 +%r129 = or i64 %r123, %r128 +%r130 = zext i64 %r129 to i96 +%r132 = getelementptr i32, i32* %r4, i32 2 +%r133 = load i32, i32* %r132 +%r134 = zext i32 %r133 to i96 +%r135 = shl i96 %r134, 64 +%r136 = or i96 %r130, %r135 +%r137 = zext i96 %r136 to i128 +%r139 = getelementptr i32, i32* %r4, i32 3 +%r140 = load i32, i32* %r139 +%r141 = zext i32 %r140 to i128 +%r142 = shl i128 %r141, 96 +%r143 = or i128 %r137, %r142 +%r144 = zext i128 %r143 to i160 +%r146 = getelementptr i32, i32* %r4, i32 4 +%r147 = load i32, i32* %r146 +%r148 = zext i32 %r147 to i160 +%r149 = shl i160 %r148, 128 +%r150 = or i160 %r144, %r149 +%r151 = zext i160 %r150 to i192 +%r153 = getelementptr i32, i32* %r4, i32 5 +%r154 = load i32, i32* %r153 +%r155 = zext i32 %r154 to i192 +%r156 = shl i192 %r155, 160 +%r157 = or i192 %r151, %r156 +%r158 = zext i192 %r157 to i224 +%r160 = getelementptr i32, i32* %r4, i32 6 +%r161 = load i32, i32* %r160 +%r162 = zext i32 %r161 to i224 +%r163 = shl i224 %r162, 192 +%r164 = or i224 %r158, %r163 +%r165 = zext i224 %r164 to i256 +%r166 = sub i256 %r93, %r165 +%r167 = lshr i256 %r166, 224 +%r168 = trunc i256 %r167 to i1 +br i1%r168, label %carry, label %nocarry +nocarry: +%r169 = trunc i256 %r166 to i224 +%r171 = getelementptr i32, i32* %r1, i32 0 +%r172 = trunc i224 %r169 to i32 +store i32 %r172, i32* %r171 +%r173 = lshr i224 %r169, 32 +%r175 = getelementptr i32, i32* %r1, i32 1 +%r176 = trunc i224 %r173 to i32 +store i32 %r176, i32* %r175 +%r177 = lshr i224 %r173, 32 +%r179 = getelementptr i32, i32* %r1, i32 2 +%r180 = trunc i224 %r177 to i32 +store i32 %r180, i32* %r179 +%r181 = lshr i224 %r177, 32 +%r183 = getelementptr i32, i32* %r1, i32 3 +%r184 = trunc i224 %r181 to i32 +store i32 %r184, i32* %r183 +%r185 = lshr i224 %r181, 32 +%r187 = getelementptr i32, i32* %r1, i32 4 +%r188 = trunc i224 %r185 to i32 +store i32 %r188, i32* %r187 +%r189 = lshr i224 %r185, 32 +%r191 = getelementptr i32, i32* %r1, i32 5 +%r192 = trunc i224 %r189 to i32 +store i32 %r192, i32* %r191 +%r193 = lshr i224 %r189, 32 +%r195 = getelementptr i32, i32* %r1, i32 6 +%r196 = trunc i224 %r193 to i32 +store i32 %r196, i32* %r195 ret void -} -define void @mcl_fpDbl_mulPre6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i224 @mulPv192x32(i32* %r2, i32 %r4) -%r6 = trunc i224 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i224 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i224 @mulPv192x32(i32* %r2, i32 %r10) -%r12 = add i224 %r7, %r11 -%r13 = trunc i224 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i224 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i224 @mulPv192x32(i32* %r2, i32 %r19) -%r21 = add i224 %r16, %r20 -%r22 = trunc i224 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i224 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i224 @mulPv192x32(i32* %r2, i32 %r28) -%r30 = add i224 %r25, %r29 -%r31 = trunc i224 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i224 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i224 @mulPv192x32(i32* %r2, i32 %r37) -%r39 = add i224 %r34, %r38 -%r40 = trunc i224 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i224 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i224 @mulPv192x32(i32* %r2, i32 %r46) -%r48 = add i224 %r43, %r47 -%r50 = getelementptr i32, i32* %r1, i32 5 -%r51 = trunc i224 %r48 to i32 -%r53 = getelementptr i32, i32* %r50, i32 0 -store i32 %r51, i32* %r53 -%r54 = lshr i224 %r48, 32 -%r55 = trunc i224 %r54 to i32 -%r57 = getelementptr i32, i32* %r50, i32 1 -store i32 %r55, i32* %r57 -%r58 = lshr i224 %r54, 32 -%r59 = trunc i224 %r58 to i32 -%r61 = getelementptr i32, i32* %r50, i32 2 -store i32 %r59, i32* %r61 -%r62 = lshr i224 %r58, 32 -%r63 = trunc i224 %r62 to i32 -%r65 = getelementptr i32, i32* %r50, i32 3 -store i32 %r63, i32* %r65 -%r66 = lshr i224 %r62, 32 -%r67 = trunc i224 %r66 to i32 -%r69 = getelementptr i32, i32* %r50, i32 4 -store i32 %r67, i32* %r69 -%r70 = lshr i224 %r66, 32 -%r71 = trunc i224 %r70 to i32 -%r73 = getelementptr i32, i32* %r50, i32 5 -store i32 %r71, i32* %r73 -%r74 = lshr i224 %r70, 32 -%r75 = trunc i224 %r74 to i32 -%r77 = getelementptr i32, i32* %r50, i32 6 -store i32 %r75, i32* %r77 +carry: ret void } -define void @mcl_fpDbl_sqrPre6L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fp_addNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r3 = load i32, i32* %r2 -%r4 = call i224 @mulPv192x32(i32* %r2, i32 %r3) -%r5 = trunc i224 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i224 %r4, 32 +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 %r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 -%r10 = call i224 @mulPv192x32(i32* %r2, i32 %r9) -%r11 = add i224 %r6, %r10 -%r12 = trunc i224 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i224 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i224 @mulPv192x32(i32* %r2, i32 %r18) -%r20 = add i224 %r15, %r19 -%r21 = trunc i224 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i224 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i224 @mulPv192x32(i32* %r2, i32 %r27) -%r29 = add i224 %r24, %r28 -%r30 = trunc i224 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i224 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i224 @mulPv192x32(i32* %r2, i32 %r36) -%r38 = add i224 %r33, %r37 -%r39 = trunc i224 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i224 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i224 @mulPv192x32(i32* %r2, i32 %r45) -%r47 = add i224 %r42, %r46 -%r49 = getelementptr i32, i32* %r1, i32 5 -%r50 = trunc i224 %r47 to i32 -%r52 = getelementptr i32, i32* %r49, i32 0 -store i32 %r50, i32* %r52 -%r53 = lshr i224 %r47, 32 -%r54 = trunc i224 %r53 to i32 -%r56 = getelementptr i32, i32* %r49, i32 1 -store i32 %r54, i32* %r56 -%r57 = lshr i224 %r53, 32 -%r58 = trunc i224 %r57 to i32 -%r60 = getelementptr i32, i32* %r49, i32 2 -store i32 %r58, i32* %r60 -%r61 = lshr i224 %r57, 32 -%r62 = trunc i224 %r61 to i32 -%r64 = getelementptr i32, i32* %r49, i32 3 -store i32 %r62, i32* %r64 -%r65 = lshr i224 %r61, 32 -%r66 = trunc i224 %r65 to i32 -%r68 = getelementptr i32, i32* %r49, i32 4 -store i32 %r66, i32* %r68 -%r69 = lshr i224 %r65, 32 -%r70 = trunc i224 %r69 to i32 -%r72 = getelementptr i32, i32* %r49, i32 5 -store i32 %r70, i32* %r72 -%r73 = lshr i224 %r69, 32 -%r74 = trunc i224 %r73 to i32 -%r76 = getelementptr i32, i32* %r49, i32 6 -store i32 %r74, i32* %r76 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = load i32, i32* %r3 +%r49 = zext i32 %r48 to i64 +%r51 = getelementptr i32, i32* %r3, i32 1 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i64 +%r54 = shl i64 %r53, 32 +%r55 = or i64 %r49, %r54 +%r56 = zext i64 %r55 to i96 +%r58 = getelementptr i32, i32* %r3, i32 2 +%r59 = load i32, i32* %r58 +%r60 = zext i32 %r59 to i96 +%r61 = shl i96 %r60, 64 +%r62 = or i96 %r56, %r61 +%r63 = zext i96 %r62 to i128 +%r65 = getelementptr i32, i32* %r3, i32 3 +%r66 = load i32, i32* %r65 +%r67 = zext i32 %r66 to i128 +%r68 = shl i128 %r67, 96 +%r69 = or i128 %r63, %r68 +%r70 = zext i128 %r69 to i160 +%r72 = getelementptr i32, i32* %r3, i32 4 +%r73 = load i32, i32* %r72 +%r74 = zext i32 %r73 to i160 +%r75 = shl i160 %r74, 128 +%r76 = or i160 %r70, %r75 +%r77 = zext i160 %r76 to i192 +%r79 = getelementptr i32, i32* %r3, i32 5 +%r80 = load i32, i32* %r79 +%r81 = zext i32 %r80 to i192 +%r82 = shl i192 %r81, 160 +%r83 = or i192 %r77, %r82 +%r84 = zext i192 %r83 to i224 +%r86 = getelementptr i32, i32* %r3, i32 6 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i224 +%r89 = shl i224 %r88, 192 +%r90 = or i224 %r84, %r89 +%r91 = add i224 %r47, %r90 +%r92 = load i32, i32* %r4 +%r93 = zext i32 %r92 to i64 +%r95 = getelementptr i32, i32* %r4, i32 1 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i64 +%r98 = shl i64 %r97, 32 +%r99 = or i64 %r93, %r98 +%r100 = zext i64 %r99 to i96 +%r102 = getelementptr i32, i32* %r4, i32 2 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i96 +%r105 = shl i96 %r104, 64 +%r106 = or i96 %r100, %r105 +%r107 = zext i96 %r106 to i128 +%r109 = getelementptr i32, i32* %r4, i32 3 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i128 +%r112 = shl i128 %r111, 96 +%r113 = or i128 %r107, %r112 +%r114 = zext i128 %r113 to i160 +%r116 = getelementptr i32, i32* %r4, i32 4 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i160 +%r119 = shl i160 %r118, 128 +%r120 = or i160 %r114, %r119 +%r121 = zext i160 %r120 to i192 +%r123 = getelementptr i32, i32* %r4, i32 5 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i192 +%r126 = shl i192 %r125, 160 +%r127 = or i192 %r121, %r126 +%r128 = zext i192 %r127 to i224 +%r130 = getelementptr i32, i32* %r4, i32 6 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i224 +%r133 = shl i224 %r132, 192 +%r134 = or i224 %r128, %r133 +%r135 = sub i224 %r91, %r134 +%r136 = lshr i224 %r135, 223 +%r137 = trunc i224 %r136 to i1 +%r138 = select i1 %r137, i224 %r91, i224 %r135 +%r140 = getelementptr i32, i32* %r1, i32 0 +%r141 = trunc i224 %r138 to i32 +store i32 %r141, i32* %r140 +%r142 = lshr i224 %r138, 32 +%r144 = getelementptr i32, i32* %r1, i32 1 +%r145 = trunc i224 %r142 to i32 +store i32 %r145, i32* %r144 +%r146 = lshr i224 %r142, 32 +%r148 = getelementptr i32, i32* %r1, i32 2 +%r149 = trunc i224 %r146 to i32 +store i32 %r149, i32* %r148 +%r150 = lshr i224 %r146, 32 +%r152 = getelementptr i32, i32* %r1, i32 3 +%r153 = trunc i224 %r150 to i32 +store i32 %r153, i32* %r152 +%r154 = lshr i224 %r150, 32 +%r156 = getelementptr i32, i32* %r1, i32 4 +%r157 = trunc i224 %r154 to i32 +store i32 %r157, i32* %r156 +%r158 = lshr i224 %r154, 32 +%r160 = getelementptr i32, i32* %r1, i32 5 +%r161 = trunc i224 %r158 to i32 +store i32 %r161, i32* %r160 +%r162 = lshr i224 %r158, 32 +%r164 = getelementptr i32, i32* %r1, i32 6 +%r165 = trunc i224 %r162 to i32 +store i32 %r165, i32* %r164 ret void } -define void @mcl_fp_mont6L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i224 @mulPv192x32(i32* %r2, i32 %r10) -%r12 = zext i224 %r11 to i256 -%r13 = trunc i224 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i224 @mulPv192x32(i32* %r4, i32 %r14) -%r16 = zext i224 %r15 to i256 -%r17 = add i256 %r12, %r16 -%r18 = lshr i256 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i224 @mulPv192x32(i32* %r2, i32 %r21) -%r23 = zext i224 %r22 to i256 -%r24 = add i256 %r18, %r23 -%r25 = trunc i256 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i224 @mulPv192x32(i32* %r4, i32 %r26) -%r28 = zext i224 %r27 to i256 -%r29 = add i256 %r24, %r28 -%r30 = lshr i256 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i224 @mulPv192x32(i32* %r2, i32 %r33) -%r35 = zext i224 %r34 to i256 -%r36 = add i256 %r30, %r35 -%r37 = trunc i256 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i224 @mulPv192x32(i32* %r4, i32 %r38) -%r40 = zext i224 %r39 to i256 -%r41 = add i256 %r36, %r40 -%r42 = lshr i256 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i224 @mulPv192x32(i32* %r2, i32 %r45) -%r47 = zext i224 %r46 to i256 -%r48 = add i256 %r42, %r47 -%r49 = trunc i256 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i224 @mulPv192x32(i32* %r4, i32 %r50) -%r52 = zext i224 %r51 to i256 -%r53 = add i256 %r48, %r52 -%r54 = lshr i256 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i224 @mulPv192x32(i32* %r2, i32 %r57) -%r59 = zext i224 %r58 to i256 -%r60 = add i256 %r54, %r59 -%r61 = trunc i256 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i224 @mulPv192x32(i32* %r4, i32 %r62) -%r64 = zext i224 %r63 to i256 -%r65 = add i256 %r60, %r64 -%r66 = lshr i256 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i224 @mulPv192x32(i32* %r2, i32 %r69) -%r71 = zext i224 %r70 to i256 -%r72 = add i256 %r66, %r71 -%r73 = trunc i256 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i224 @mulPv192x32(i32* %r4, i32 %r74) -%r76 = zext i224 %r75 to i256 -%r77 = add i256 %r72, %r76 -%r78 = lshr i256 %r77, 32 -%r79 = trunc i256 %r78 to i224 -%r80 = load i32, i32* %r4 -%r81 = zext i32 %r80 to i64 -%r83 = getelementptr i32, i32* %r4, i32 1 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i64 -%r86 = shl i64 %r85, 32 -%r87 = or i64 %r81, %r86 -%r88 = zext i64 %r87 to i96 -%r90 = getelementptr i32, i32* %r4, i32 2 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i96 -%r93 = shl i96 %r92, 64 -%r94 = or i96 %r88, %r93 -%r95 = zext i96 %r94 to i128 -%r97 = getelementptr i32, i32* %r4, i32 3 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i128 -%r100 = shl i128 %r99, 96 -%r101 = or i128 %r95, %r100 -%r102 = zext i128 %r101 to i160 -%r104 = getelementptr i32, i32* %r4, i32 4 -%r105 = load i32, i32* %r104 -%r106 = zext i32 %r105 to i160 -%r107 = shl i160 %r106, 128 -%r108 = or i160 %r102, %r107 -%r109 = zext i160 %r108 to i192 -%r111 = getelementptr i32, i32* %r4, i32 5 -%r112 = load i32, i32* %r111 -%r113 = zext i32 %r112 to i192 -%r114 = shl i192 %r113, 160 -%r115 = or i192 %r109, %r114 -%r116 = zext i192 %r115 to i224 -%r117 = sub i224 %r79, %r116 -%r118 = lshr i224 %r117, 192 -%r119 = trunc i224 %r118 to i1 -%r120 = select i1 %r119, i224 %r79, i224 %r117 -%r121 = trunc i224 %r120 to i192 -%r122 = trunc i192 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 0 -store i32 %r122, i32* %r124 -%r125 = lshr i192 %r121, 32 -%r126 = trunc i192 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 1 -store i32 %r126, i32* %r128 -%r129 = lshr i192 %r125, 32 -%r130 = trunc i192 %r129 to i32 -%r132 = getelementptr i32, i32* %r1, i32 2 -store i32 %r130, i32* %r132 -%r133 = lshr i192 %r129, 32 -%r134 = trunc i192 %r133 to i32 -%r136 = getelementptr i32, i32* %r1, i32 3 -store i32 %r134, i32* %r136 -%r137 = lshr i192 %r133, 32 -%r138 = trunc i192 %r137 to i32 -%r140 = getelementptr i32, i32* %r1, i32 4 -store i32 %r138, i32* %r140 -%r141 = lshr i192 %r137, 32 -%r142 = trunc i192 %r141 to i32 -%r144 = getelementptr i32, i32* %r1, i32 5 -store i32 %r142, i32* %r144 -ret void -} -define void @mcl_fp_montNF6L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i224 @mulPv192x32(i32* %r2, i32 %r8) -%r10 = trunc i224 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i224 @mulPv192x32(i32* %r4, i32 %r11) -%r13 = add i224 %r9, %r12 -%r14 = lshr i224 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i224 @mulPv192x32(i32* %r2, i32 %r17) -%r19 = add i224 %r14, %r18 -%r20 = trunc i224 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i224 @mulPv192x32(i32* %r4, i32 %r21) -%r23 = add i224 %r19, %r22 -%r24 = lshr i224 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i224 @mulPv192x32(i32* %r2, i32 %r27) -%r29 = add i224 %r24, %r28 -%r30 = trunc i224 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i224 @mulPv192x32(i32* %r4, i32 %r31) -%r33 = add i224 %r29, %r32 -%r34 = lshr i224 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i224 @mulPv192x32(i32* %r2, i32 %r37) -%r39 = add i224 %r34, %r38 -%r40 = trunc i224 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i224 @mulPv192x32(i32* %r4, i32 %r41) -%r43 = add i224 %r39, %r42 -%r44 = lshr i224 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i224 @mulPv192x32(i32* %r2, i32 %r47) -%r49 = add i224 %r44, %r48 -%r50 = trunc i224 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i224 @mulPv192x32(i32* %r4, i32 %r51) -%r53 = add i224 %r49, %r52 -%r54 = lshr i224 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i224 @mulPv192x32(i32* %r2, i32 %r57) -%r59 = add i224 %r54, %r58 -%r60 = trunc i224 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i224 @mulPv192x32(i32* %r4, i32 %r61) -%r63 = add i224 %r59, %r62 -%r64 = lshr i224 %r63, 32 -%r65 = trunc i224 %r64 to i192 -%r66 = load i32, i32* %r4 -%r67 = zext i32 %r66 to i64 -%r69 = getelementptr i32, i32* %r4, i32 1 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i64 -%r72 = shl i64 %r71, 32 -%r73 = or i64 %r67, %r72 -%r74 = zext i64 %r73 to i96 -%r76 = getelementptr i32, i32* %r4, i32 2 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i96 -%r79 = shl i96 %r78, 64 -%r80 = or i96 %r74, %r79 -%r81 = zext i96 %r80 to i128 -%r83 = getelementptr i32, i32* %r4, i32 3 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i128 -%r86 = shl i128 %r85, 96 -%r87 = or i128 %r81, %r86 -%r88 = zext i128 %r87 to i160 -%r90 = getelementptr i32, i32* %r4, i32 4 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i160 -%r93 = shl i160 %r92, 128 -%r94 = or i160 %r88, %r93 -%r95 = zext i160 %r94 to i192 -%r97 = getelementptr i32, i32* %r4, i32 5 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i192 -%r100 = shl i192 %r99, 160 -%r101 = or i192 %r95, %r100 -%r102 = sub i192 %r65, %r101 -%r103 = lshr i192 %r102, 191 -%r104 = trunc i192 %r103 to i1 -%r105 = select i1 %r104, i192 %r65, i192 %r102 -%r106 = trunc i192 %r105 to i32 -%r108 = getelementptr i32, i32* %r1, i32 0 -store i32 %r106, i32* %r108 -%r109 = lshr i192 %r105, 32 -%r110 = trunc i192 %r109 to i32 -%r112 = getelementptr i32, i32* %r1, i32 1 -store i32 %r110, i32* %r112 -%r113 = lshr i192 %r109, 32 -%r114 = trunc i192 %r113 to i32 -%r116 = getelementptr i32, i32* %r1, i32 2 -store i32 %r114, i32* %r116 -%r117 = lshr i192 %r113, 32 -%r118 = trunc i192 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 3 -store i32 %r118, i32* %r120 -%r121 = lshr i192 %r117, 32 -%r122 = trunc i192 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 4 -store i32 %r122, i32* %r124 -%r125 = lshr i192 %r121, 32 -%r126 = trunc i192 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 5 -store i32 %r126, i32* %r128 -ret void -} -define void @mcl_fp_montRed6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = load i32, i32* %r2 -%r44 = zext i32 %r43 to i64 -%r46 = getelementptr i32, i32* %r2, i32 1 -%r47 = load i32, i32* %r46 -%r48 = zext i32 %r47 to i64 -%r49 = shl i64 %r48, 32 -%r50 = or i64 %r44, %r49 -%r51 = zext i64 %r50 to i96 -%r53 = getelementptr i32, i32* %r2, i32 2 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i96 -%r56 = shl i96 %r55, 64 -%r57 = or i96 %r51, %r56 -%r58 = zext i96 %r57 to i128 -%r60 = getelementptr i32, i32* %r2, i32 3 -%r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i128 -%r63 = shl i128 %r62, 96 -%r64 = or i128 %r58, %r63 -%r65 = zext i128 %r64 to i160 -%r67 = getelementptr i32, i32* %r2, i32 4 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i160 -%r70 = shl i160 %r69, 128 -%r71 = or i160 %r65, %r70 -%r72 = zext i160 %r71 to i192 -%r74 = getelementptr i32, i32* %r2, i32 5 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i192 -%r77 = shl i192 %r76, 160 -%r78 = or i192 %r72, %r77 -%r79 = zext i192 %r78 to i224 -%r81 = getelementptr i32, i32* %r2, i32 6 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i224 -%r84 = shl i224 %r83, 192 -%r85 = or i224 %r79, %r84 -%r86 = zext i224 %r85 to i256 -%r88 = getelementptr i32, i32* %r2, i32 7 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i256 -%r91 = shl i256 %r90, 224 -%r92 = or i256 %r86, %r91 -%r93 = zext i256 %r92 to i288 -%r95 = getelementptr i32, i32* %r2, i32 8 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i288 -%r98 = shl i288 %r97, 256 -%r99 = or i288 %r93, %r98 -%r100 = zext i288 %r99 to i320 -%r102 = getelementptr i32, i32* %r2, i32 9 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i320 -%r105 = shl i320 %r104, 288 -%r106 = or i320 %r100, %r105 -%r107 = zext i320 %r106 to i352 -%r109 = getelementptr i32, i32* %r2, i32 10 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i352 -%r112 = shl i352 %r111, 320 -%r113 = or i352 %r107, %r112 -%r114 = zext i352 %r113 to i384 -%r116 = getelementptr i32, i32* %r2, i32 11 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i384 -%r119 = shl i384 %r118, 352 -%r120 = or i384 %r114, %r119 -%r121 = zext i384 %r120 to i416 -%r122 = trunc i416 %r121 to i32 -%r123 = mul i32 %r122, %r6 -%r124 = call i224 @mulPv192x32(i32* %r3, i32 %r123) -%r125 = zext i224 %r124 to i416 -%r126 = add i416 %r121, %r125 -%r127 = lshr i416 %r126, 32 -%r128 = trunc i416 %r127 to i384 -%r129 = trunc i384 %r128 to i32 -%r130 = mul i32 %r129, %r6 -%r131 = call i224 @mulPv192x32(i32* %r3, i32 %r130) -%r132 = zext i224 %r131 to i384 -%r133 = add i384 %r128, %r132 -%r134 = lshr i384 %r133, 32 -%r135 = trunc i384 %r134 to i352 -%r136 = trunc i352 %r135 to i32 -%r137 = mul i32 %r136, %r6 -%r138 = call i224 @mulPv192x32(i32* %r3, i32 %r137) -%r139 = zext i224 %r138 to i352 -%r140 = add i352 %r135, %r139 -%r141 = lshr i352 %r140, 32 -%r142 = trunc i352 %r141 to i320 -%r143 = trunc i320 %r142 to i32 -%r144 = mul i32 %r143, %r6 -%r145 = call i224 @mulPv192x32(i32* %r3, i32 %r144) -%r146 = zext i224 %r145 to i320 -%r147 = add i320 %r142, %r146 -%r148 = lshr i320 %r147, 32 -%r149 = trunc i320 %r148 to i288 -%r150 = trunc i288 %r149 to i32 -%r151 = mul i32 %r150, %r6 -%r152 = call i224 @mulPv192x32(i32* %r3, i32 %r151) -%r153 = zext i224 %r152 to i288 -%r154 = add i288 %r149, %r153 -%r155 = lshr i288 %r154, 32 -%r156 = trunc i288 %r155 to i256 -%r157 = trunc i256 %r156 to i32 -%r158 = mul i32 %r157, %r6 -%r159 = call i224 @mulPv192x32(i32* %r3, i32 %r158) -%r160 = zext i224 %r159 to i256 -%r161 = add i256 %r156, %r160 -%r162 = lshr i256 %r161, 32 -%r163 = trunc i256 %r162 to i224 -%r164 = zext i192 %r42 to i224 -%r165 = sub i224 %r163, %r164 -%r166 = lshr i224 %r165, 192 -%r167 = trunc i224 %r166 to i1 -%r168 = select i1 %r167, i224 %r163, i224 %r165 -%r169 = trunc i224 %r168 to i192 -%r170 = trunc i192 %r169 to i32 -%r172 = getelementptr i32, i32* %r1, i32 0 -store i32 %r170, i32* %r172 -%r173 = lshr i192 %r169, 32 -%r174 = trunc i192 %r173 to i32 -%r176 = getelementptr i32, i32* %r1, i32 1 -store i32 %r174, i32* %r176 -%r177 = lshr i192 %r173, 32 -%r178 = trunc i192 %r177 to i32 -%r180 = getelementptr i32, i32* %r1, i32 2 -store i32 %r178, i32* %r180 -%r181 = lshr i192 %r177, 32 -%r182 = trunc i192 %r181 to i32 -%r184 = getelementptr i32, i32* %r1, i32 3 -store i32 %r182, i32* %r184 -%r185 = lshr i192 %r181, 32 -%r186 = trunc i192 %r185 to i32 -%r188 = getelementptr i32, i32* %r1, i32 4 -store i32 %r186, i32* %r188 -%r189 = lshr i192 %r185, 32 -%r190 = trunc i192 %r189 to i32 -%r192 = getelementptr i32, i32* %r1, i32 5 -store i32 %r190, i32* %r192 -ret void -} -define i32 @mcl_fp_addPre6L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 +%r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 +%r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 %r10 = zext i32 %r9 to i64 %r11 = shl i64 %r10, 32 %r12 = or i64 %r6, %r11 %r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 +%r15 = getelementptr i32, i32* %r2, i32 2 %r16 = load i32, i32* %r15 %r17 = zext i32 %r16 to i96 %r18 = shl i96 %r17, 64 %r19 = or i96 %r13, %r18 %r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 +%r22 = getelementptr i32, i32* %r2, i32 3 %r23 = load i32, i32* %r22 %r24 = zext i32 %r23 to i128 %r25 = shl i128 %r24, 96 %r26 = or i128 %r20, %r25 %r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 +%r29 = getelementptr i32, i32* %r2, i32 4 %r30 = load i32, i32* %r29 %r31 = zext i32 %r30 to i160 %r32 = shl i160 %r31, 128 %r33 = or i160 %r27, %r32 %r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 +%r36 = getelementptr i32, i32* %r2, i32 5 %r37 = load i32, i32* %r36 %r38 = zext i32 %r37 to i192 %r39 = shl i192 %r38, 160 %r40 = or i192 %r34, %r39 %r41 = zext i192 %r40 to i224 -%r42 = load i32, i32* %r4 -%r43 = zext i32 %r42 to i64 -%r45 = getelementptr i32, i32* %r4, i32 1 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i64 -%r48 = shl i64 %r47, 32 -%r49 = or i64 %r43, %r48 -%r50 = zext i64 %r49 to i96 -%r52 = getelementptr i32, i32* %r4, i32 2 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i96 -%r55 = shl i96 %r54, 64 -%r56 = or i96 %r50, %r55 -%r57 = zext i96 %r56 to i128 -%r59 = getelementptr i32, i32* %r4, i32 3 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i128 -%r62 = shl i128 %r61, 96 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i160 -%r66 = getelementptr i32, i32* %r4, i32 4 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i160 -%r69 = shl i160 %r68, 128 -%r70 = or i160 %r64, %r69 -%r71 = zext i160 %r70 to i192 -%r73 = getelementptr i32, i32* %r4, i32 5 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i192 -%r76 = shl i192 %r75, 160 -%r77 = or i192 %r71, %r76 -%r78 = zext i192 %r77 to i224 -%r79 = add i224 %r41, %r78 -%r80 = trunc i224 %r79 to i192 -%r81 = trunc i192 %r80 to i32 -%r83 = getelementptr i32, i32* %r2, i32 0 -store i32 %r81, i32* %r83 -%r84 = lshr i192 %r80, 32 -%r85 = trunc i192 %r84 to i32 -%r87 = getelementptr i32, i32* %r2, i32 1 -store i32 %r85, i32* %r87 -%r88 = lshr i192 %r84, 32 -%r89 = trunc i192 %r88 to i32 -%r91 = getelementptr i32, i32* %r2, i32 2 -store i32 %r89, i32* %r91 -%r92 = lshr i192 %r88, 32 -%r93 = trunc i192 %r92 to i32 -%r95 = getelementptr i32, i32* %r2, i32 3 -store i32 %r93, i32* %r95 -%r96 = lshr i192 %r92, 32 -%r97 = trunc i192 %r96 to i32 -%r99 = getelementptr i32, i32* %r2, i32 4 -store i32 %r97, i32* %r99 -%r100 = lshr i192 %r96, 32 -%r101 = trunc i192 %r100 to i32 -%r103 = getelementptr i32, i32* %r2, i32 5 -store i32 %r101, i32* %r103 -%r104 = lshr i224 %r79, 192 -%r105 = trunc i224 %r104 to i32 -ret i32 %r105 -} -define i32 @mcl_fp_subPre6L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r42 = load i32, i32* %r4 -%r43 = zext i32 %r42 to i64 -%r45 = getelementptr i32, i32* %r4, i32 1 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i64 -%r48 = shl i64 %r47, 32 -%r49 = or i64 %r43, %r48 -%r50 = zext i64 %r49 to i96 -%r52 = getelementptr i32, i32* %r4, i32 2 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i96 -%r55 = shl i96 %r54, 64 -%r56 = or i96 %r50, %r55 -%r57 = zext i96 %r56 to i128 -%r59 = getelementptr i32, i32* %r4, i32 3 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i128 -%r62 = shl i128 %r61, 96 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i160 -%r66 = getelementptr i32, i32* %r4, i32 4 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i160 -%r69 = shl i160 %r68, 128 -%r70 = or i160 %r64, %r69 -%r71 = zext i160 %r70 to i192 -%r73 = getelementptr i32, i32* %r4, i32 5 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i192 -%r76 = shl i192 %r75, 160 -%r77 = or i192 %r71, %r76 -%r78 = zext i192 %r77 to i224 -%r79 = sub i224 %r41, %r78 -%r80 = trunc i224 %r79 to i192 -%r81 = trunc i192 %r80 to i32 -%r83 = getelementptr i32, i32* %r2, i32 0 -store i32 %r81, i32* %r83 -%r84 = lshr i192 %r80, 32 -%r85 = trunc i192 %r84 to i32 -%r87 = getelementptr i32, i32* %r2, i32 1 -store i32 %r85, i32* %r87 -%r88 = lshr i192 %r84, 32 -%r89 = trunc i192 %r88 to i32 -%r91 = getelementptr i32, i32* %r2, i32 2 -store i32 %r89, i32* %r91 -%r92 = lshr i192 %r88, 32 -%r93 = trunc i192 %r92 to i32 -%r95 = getelementptr i32, i32* %r2, i32 3 -store i32 %r93, i32* %r95 -%r96 = lshr i192 %r92, 32 -%r97 = trunc i192 %r96 to i32 -%r99 = getelementptr i32, i32* %r2, i32 4 -store i32 %r97, i32* %r99 -%r100 = lshr i192 %r96, 32 -%r101 = trunc i192 %r100 to i32 -%r103 = getelementptr i32, i32* %r2, i32 5 -store i32 %r101, i32* %r103 -%r104 = lshr i224 %r79, 192 -%r105 = trunc i224 %r104 to i32 -%r107 = and i32 %r105, 1 -ret i32 %r107 -} -define void @mcl_fp_shr1_6L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = lshr i192 %r38, 1 -%r40 = trunc i192 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 0 -store i32 %r40, i32* %r42 -%r43 = lshr i192 %r39, 32 -%r44 = trunc i192 %r43 to i32 -%r46 = getelementptr i32, i32* %r1, i32 1 -store i32 %r44, i32* %r46 -%r47 = lshr i192 %r43, 32 -%r48 = trunc i192 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 2 -store i32 %r48, i32* %r50 -%r51 = lshr i192 %r47, 32 -%r52 = trunc i192 %r51 to i32 -%r54 = getelementptr i32, i32* %r1, i32 3 -store i32 %r52, i32* %r54 -%r55 = lshr i192 %r51, 32 -%r56 = trunc i192 %r55 to i32 -%r58 = getelementptr i32, i32* %r1, i32 4 -store i32 %r56, i32* %r58 -%r59 = lshr i192 %r55, 32 -%r60 = trunc i192 %r59 to i32 -%r62 = getelementptr i32, i32* %r1, i32 5 -store i32 %r60, i32* %r62 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = load i32, i32* %r3 +%r49 = zext i32 %r48 to i64 +%r51 = getelementptr i32, i32* %r3, i32 1 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i64 +%r54 = shl i64 %r53, 32 +%r55 = or i64 %r49, %r54 +%r56 = zext i64 %r55 to i96 +%r58 = getelementptr i32, i32* %r3, i32 2 +%r59 = load i32, i32* %r58 +%r60 = zext i32 %r59 to i96 +%r61 = shl i96 %r60, 64 +%r62 = or i96 %r56, %r61 +%r63 = zext i96 %r62 to i128 +%r65 = getelementptr i32, i32* %r3, i32 3 +%r66 = load i32, i32* %r65 +%r67 = zext i32 %r66 to i128 +%r68 = shl i128 %r67, 96 +%r69 = or i128 %r63, %r68 +%r70 = zext i128 %r69 to i160 +%r72 = getelementptr i32, i32* %r3, i32 4 +%r73 = load i32, i32* %r72 +%r74 = zext i32 %r73 to i160 +%r75 = shl i160 %r74, 128 +%r76 = or i160 %r70, %r75 +%r77 = zext i160 %r76 to i192 +%r79 = getelementptr i32, i32* %r3, i32 5 +%r80 = load i32, i32* %r79 +%r81 = zext i32 %r80 to i192 +%r82 = shl i192 %r81, 160 +%r83 = or i192 %r77, %r82 +%r84 = zext i192 %r83 to i224 +%r86 = getelementptr i32, i32* %r3, i32 6 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i224 +%r89 = shl i224 %r88, 192 +%r90 = or i224 %r84, %r89 +%r91 = zext i224 %r47 to i256 +%r92 = zext i224 %r90 to i256 +%r93 = sub i256 %r91, %r92 +%r94 = trunc i256 %r93 to i224 +%r95 = lshr i256 %r93, 224 +%r96 = trunc i256 %r95 to i1 +%r98 = getelementptr i32, i32* %r1, i32 0 +%r99 = trunc i224 %r94 to i32 +store i32 %r99, i32* %r98 +%r100 = lshr i224 %r94, 32 +%r102 = getelementptr i32, i32* %r1, i32 1 +%r103 = trunc i224 %r100 to i32 +store i32 %r103, i32* %r102 +%r104 = lshr i224 %r100, 32 +%r106 = getelementptr i32, i32* %r1, i32 2 +%r107 = trunc i224 %r104 to i32 +store i32 %r107, i32* %r106 +%r108 = lshr i224 %r104, 32 +%r110 = getelementptr i32, i32* %r1, i32 3 +%r111 = trunc i224 %r108 to i32 +store i32 %r111, i32* %r110 +%r112 = lshr i224 %r108, 32 +%r114 = getelementptr i32, i32* %r1, i32 4 +%r115 = trunc i224 %r112 to i32 +store i32 %r115, i32* %r114 +%r116 = lshr i224 %r112, 32 +%r118 = getelementptr i32, i32* %r1, i32 5 +%r119 = trunc i224 %r116 to i32 +store i32 %r119, i32* %r118 +%r120 = lshr i224 %r116, 32 +%r122 = getelementptr i32, i32* %r1, i32 6 +%r123 = trunc i224 %r120 to i32 +store i32 %r123, i32* %r122 +br i1%r96, label %carry, label %nocarry +nocarry: +ret void +carry: +%r124 = load i32, i32* %r4 +%r125 = zext i32 %r124 to i64 +%r127 = getelementptr i32, i32* %r4, i32 1 +%r128 = load i32, i32* %r127 +%r129 = zext i32 %r128 to i64 +%r130 = shl i64 %r129, 32 +%r131 = or i64 %r125, %r130 +%r132 = zext i64 %r131 to i96 +%r134 = getelementptr i32, i32* %r4, i32 2 +%r135 = load i32, i32* %r134 +%r136 = zext i32 %r135 to i96 +%r137 = shl i96 %r136, 64 +%r138 = or i96 %r132, %r137 +%r139 = zext i96 %r138 to i128 +%r141 = getelementptr i32, i32* %r4, i32 3 +%r142 = load i32, i32* %r141 +%r143 = zext i32 %r142 to i128 +%r144 = shl i128 %r143, 96 +%r145 = or i128 %r139, %r144 +%r146 = zext i128 %r145 to i160 +%r148 = getelementptr i32, i32* %r4, i32 4 +%r149 = load i32, i32* %r148 +%r150 = zext i32 %r149 to i160 +%r151 = shl i160 %r150, 128 +%r152 = or i160 %r146, %r151 +%r153 = zext i160 %r152 to i192 +%r155 = getelementptr i32, i32* %r4, i32 5 +%r156 = load i32, i32* %r155 +%r157 = zext i32 %r156 to i192 +%r158 = shl i192 %r157, 160 +%r159 = or i192 %r153, %r158 +%r160 = zext i192 %r159 to i224 +%r162 = getelementptr i32, i32* %r4, i32 6 +%r163 = load i32, i32* %r162 +%r164 = zext i32 %r163 to i224 +%r165 = shl i224 %r164, 192 +%r166 = or i224 %r160, %r165 +%r167 = add i224 %r94, %r166 +%r169 = getelementptr i32, i32* %r1, i32 0 +%r170 = trunc i224 %r167 to i32 +store i32 %r170, i32* %r169 +%r171 = lshr i224 %r167, 32 +%r173 = getelementptr i32, i32* %r1, i32 1 +%r174 = trunc i224 %r171 to i32 +store i32 %r174, i32* %r173 +%r175 = lshr i224 %r171, 32 +%r177 = getelementptr i32, i32* %r1, i32 2 +%r178 = trunc i224 %r175 to i32 +store i32 %r178, i32* %r177 +%r179 = lshr i224 %r175, 32 +%r181 = getelementptr i32, i32* %r1, i32 3 +%r182 = trunc i224 %r179 to i32 +store i32 %r182, i32* %r181 +%r183 = lshr i224 %r179, 32 +%r185 = getelementptr i32, i32* %r1, i32 4 +%r186 = trunc i224 %r183 to i32 +store i32 %r186, i32* %r185 +%r187 = lshr i224 %r183, 32 +%r189 = getelementptr i32, i32* %r1, i32 5 +%r190 = trunc i224 %r187 to i32 +store i32 %r190, i32* %r189 +%r191 = lshr i224 %r187, 32 +%r193 = getelementptr i32, i32* %r1, i32 6 +%r194 = trunc i224 %r191 to i32 +store i32 %r194, i32* %r193 ret void } -define void @mcl_fp_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_subNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -6287,130 +4615,121 @@ define void @mcl_fp_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r %r38 = zext i32 %r37 to i192 %r39 = shl i192 %r38, 160 %r40 = or i192 %r34, %r39 -%r41 = load i32, i32* %r3 -%r42 = zext i32 %r41 to i64 -%r44 = getelementptr i32, i32* %r3, i32 1 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i64 -%r47 = shl i64 %r46, 32 -%r48 = or i64 %r42, %r47 -%r49 = zext i64 %r48 to i96 -%r51 = getelementptr i32, i32* %r3, i32 2 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r49, %r54 -%r56 = zext i96 %r55 to i128 -%r58 = getelementptr i32, i32* %r3, i32 3 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = load i32, i32* %r3 +%r49 = zext i32 %r48 to i64 +%r51 = getelementptr i32, i32* %r3, i32 1 +%r52 = load i32, i32* %r51 +%r53 = zext i32 %r52 to i64 +%r54 = shl i64 %r53, 32 +%r55 = or i64 %r49, %r54 +%r56 = zext i64 %r55 to i96 +%r58 = getelementptr i32, i32* %r3, i32 2 %r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i128 -%r61 = shl i128 %r60, 96 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i160 -%r65 = getelementptr i32, i32* %r3, i32 4 +%r60 = zext i32 %r59 to i96 +%r61 = shl i96 %r60, 64 +%r62 = or i96 %r56, %r61 +%r63 = zext i96 %r62 to i128 +%r65 = getelementptr i32, i32* %r3, i32 3 %r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i160 -%r68 = shl i160 %r67, 128 -%r69 = or i160 %r63, %r68 -%r70 = zext i160 %r69 to i192 -%r72 = getelementptr i32, i32* %r3, i32 5 +%r67 = zext i32 %r66 to i128 +%r68 = shl i128 %r67, 96 +%r69 = or i128 %r63, %r68 +%r70 = zext i128 %r69 to i160 +%r72 = getelementptr i32, i32* %r3, i32 4 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i192 -%r75 = shl i192 %r74, 160 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r40 to i224 -%r78 = zext i192 %r76 to i224 -%r79 = add i224 %r77, %r78 -%r80 = trunc i224 %r79 to i192 -%r81 = trunc i192 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 0 -store i32 %r81, i32* %r83 -%r84 = lshr i192 %r80, 32 -%r85 = trunc i192 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 1 -store i32 %r85, i32* %r87 -%r88 = lshr i192 %r84, 32 -%r89 = trunc i192 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 2 -store i32 %r89, i32* %r91 -%r92 = lshr i192 %r88, 32 -%r93 = trunc i192 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 3 -store i32 %r93, i32* %r95 -%r96 = lshr i192 %r92, 32 -%r97 = trunc i192 %r96 to i32 -%r99 = getelementptr i32, i32* %r1, i32 4 -store i32 %r97, i32* %r99 -%r100 = lshr i192 %r96, 32 -%r101 = trunc i192 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 5 -store i32 %r101, i32* %r103 -%r104 = load i32, i32* %r4 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r4, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r4, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r4, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r4, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r4, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r141 = sub i224 %r79, %r140 -%r142 = lshr i224 %r141, 192 -%r143 = trunc i224 %r142 to i1 -br i1%r143, label %carry, label %nocarry -nocarry: -%r144 = trunc i224 %r141 to i192 -%r145 = trunc i192 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 0 -store i32 %r145, i32* %r147 -%r148 = lshr i192 %r144, 32 -%r149 = trunc i192 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 1 -store i32 %r149, i32* %r151 -%r152 = lshr i192 %r148, 32 -%r153 = trunc i192 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 2 -store i32 %r153, i32* %r155 -%r156 = lshr i192 %r152, 32 -%r157 = trunc i192 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 3 -store i32 %r157, i32* %r159 -%r160 = lshr i192 %r156, 32 -%r161 = trunc i192 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 4 -store i32 %r161, i32* %r163 -%r164 = lshr i192 %r160, 32 -%r165 = trunc i192 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 5 -store i32 %r165, i32* %r167 -ret void -carry: +%r74 = zext i32 %r73 to i160 +%r75 = shl i160 %r74, 128 +%r76 = or i160 %r70, %r75 +%r77 = zext i160 %r76 to i192 +%r79 = getelementptr i32, i32* %r3, i32 5 +%r80 = load i32, i32* %r79 +%r81 = zext i32 %r80 to i192 +%r82 = shl i192 %r81, 160 +%r83 = or i192 %r77, %r82 +%r84 = zext i192 %r83 to i224 +%r86 = getelementptr i32, i32* %r3, i32 6 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i224 +%r89 = shl i224 %r88, 192 +%r90 = or i224 %r84, %r89 +%r91 = sub i224 %r47, %r90 +%r92 = lshr i224 %r91, 223 +%r93 = trunc i224 %r92 to i1 +%r94 = load i32, i32* %r4 +%r95 = zext i32 %r94 to i64 +%r97 = getelementptr i32, i32* %r4, i32 1 +%r98 = load i32, i32* %r97 +%r99 = zext i32 %r98 to i64 +%r100 = shl i64 %r99, 32 +%r101 = or i64 %r95, %r100 +%r102 = zext i64 %r101 to i96 +%r104 = getelementptr i32, i32* %r4, i32 2 +%r105 = load i32, i32* %r104 +%r106 = zext i32 %r105 to i96 +%r107 = shl i96 %r106, 64 +%r108 = or i96 %r102, %r107 +%r109 = zext i96 %r108 to i128 +%r111 = getelementptr i32, i32* %r4, i32 3 +%r112 = load i32, i32* %r111 +%r113 = zext i32 %r112 to i128 +%r114 = shl i128 %r113, 96 +%r115 = or i128 %r109, %r114 +%r116 = zext i128 %r115 to i160 +%r118 = getelementptr i32, i32* %r4, i32 4 +%r119 = load i32, i32* %r118 +%r120 = zext i32 %r119 to i160 +%r121 = shl i160 %r120, 128 +%r122 = or i160 %r116, %r121 +%r123 = zext i160 %r122 to i192 +%r125 = getelementptr i32, i32* %r4, i32 5 +%r126 = load i32, i32* %r125 +%r127 = zext i32 %r126 to i192 +%r128 = shl i192 %r127, 160 +%r129 = or i192 %r123, %r128 +%r130 = zext i192 %r129 to i224 +%r132 = getelementptr i32, i32* %r4, i32 6 +%r133 = load i32, i32* %r132 +%r134 = zext i32 %r133 to i224 +%r135 = shl i224 %r134, 192 +%r136 = or i224 %r130, %r135 +%r138 = select i1 %r93, i224 %r136, i224 0 +%r139 = add i224 %r91, %r138 +%r141 = getelementptr i32, i32* %r1, i32 0 +%r142 = trunc i224 %r139 to i32 +store i32 %r142, i32* %r141 +%r143 = lshr i224 %r139, 32 +%r145 = getelementptr i32, i32* %r1, i32 1 +%r146 = trunc i224 %r143 to i32 +store i32 %r146, i32* %r145 +%r147 = lshr i224 %r143, 32 +%r149 = getelementptr i32, i32* %r1, i32 2 +%r150 = trunc i224 %r147 to i32 +store i32 %r150, i32* %r149 +%r151 = lshr i224 %r147, 32 +%r153 = getelementptr i32, i32* %r1, i32 3 +%r154 = trunc i224 %r151 to i32 +store i32 %r154, i32* %r153 +%r155 = lshr i224 %r151, 32 +%r157 = getelementptr i32, i32* %r1, i32 4 +%r158 = trunc i224 %r155 to i32 +store i32 %r158, i32* %r157 +%r159 = lshr i224 %r155, 32 +%r161 = getelementptr i32, i32* %r1, i32 5 +%r162 = trunc i224 %r159 to i32 +store i32 %r162, i32* %r161 +%r163 = lshr i224 %r159, 32 +%r165 = getelementptr i32, i32* %r1, i32 6 +%r166 = trunc i224 %r163 to i32 +store i32 %r166, i32* %r165 ret void } -define void @mcl_fp_addNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -6443,378 +4762,240 @@ define void @mcl_fp_addNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r38 = zext i32 %r37 to i192 %r39 = shl i192 %r38, 160 %r40 = or i192 %r34, %r39 -%r41 = load i32, i32* %r3 -%r42 = zext i32 %r41 to i64 -%r44 = getelementptr i32, i32* %r3, i32 1 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i64 -%r47 = shl i64 %r46, 32 -%r48 = or i64 %r42, %r47 -%r49 = zext i64 %r48 to i96 -%r51 = getelementptr i32, i32* %r3, i32 2 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r49, %r54 -%r56 = zext i96 %r55 to i128 -%r58 = getelementptr i32, i32* %r3, i32 3 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i128 -%r61 = shl i128 %r60, 96 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i160 -%r65 = getelementptr i32, i32* %r3, i32 4 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i160 -%r68 = shl i160 %r67, 128 -%r69 = or i160 %r63, %r68 -%r70 = zext i160 %r69 to i192 -%r72 = getelementptr i32, i32* %r3, i32 5 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i192 -%r75 = shl i192 %r74, 160 -%r76 = or i192 %r70, %r75 -%r77 = add i192 %r40, %r76 -%r78 = load i32, i32* %r4 -%r79 = zext i32 %r78 to i64 -%r81 = getelementptr i32, i32* %r4, i32 1 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i64 -%r84 = shl i64 %r83, 32 -%r85 = or i64 %r79, %r84 -%r86 = zext i64 %r85 to i96 -%r88 = getelementptr i32, i32* %r4, i32 2 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i96 -%r91 = shl i96 %r90, 64 -%r92 = or i96 %r86, %r91 -%r93 = zext i96 %r92 to i128 -%r95 = getelementptr i32, i32* %r4, i32 3 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i128 -%r98 = shl i128 %r97, 96 -%r99 = or i128 %r93, %r98 -%r100 = zext i128 %r99 to i160 -%r102 = getelementptr i32, i32* %r4, i32 4 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i160 -%r105 = shl i160 %r104, 128 -%r106 = or i160 %r100, %r105 -%r107 = zext i160 %r106 to i192 -%r109 = getelementptr i32, i32* %r4, i32 5 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i192 -%r112 = shl i192 %r111, 160 -%r113 = or i192 %r107, %r112 -%r114 = sub i192 %r77, %r113 -%r115 = lshr i192 %r114, 191 -%r116 = trunc i192 %r115 to i1 -%r117 = select i1 %r116, i192 %r77, i192 %r114 -%r118 = trunc i192 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 0 -store i32 %r118, i32* %r120 -%r121 = lshr i192 %r117, 32 -%r122 = trunc i192 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 1 -store i32 %r122, i32* %r124 -%r125 = lshr i192 %r121, 32 -%r126 = trunc i192 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 2 -store i32 %r126, i32* %r128 -%r129 = lshr i192 %r125, 32 -%r130 = trunc i192 %r129 to i32 -%r132 = getelementptr i32, i32* %r1, i32 3 -store i32 %r130, i32* %r132 -%r133 = lshr i192 %r129, 32 -%r134 = trunc i192 %r133 to i32 -%r136 = getelementptr i32, i32* %r1, i32 4 -store i32 %r134, i32* %r136 -%r137 = lshr i192 %r133, 32 -%r138 = trunc i192 %r137 to i32 -%r140 = getelementptr i32, i32* %r1, i32 5 -store i32 %r138, i32* %r140 -ret void -} -define void @mcl_fp_sub6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = load i32, i32* %r3 -%r42 = zext i32 %r41 to i64 -%r44 = getelementptr i32, i32* %r3, i32 1 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i64 -%r47 = shl i64 %r46, 32 -%r48 = or i64 %r42, %r47 -%r49 = zext i64 %r48 to i96 -%r51 = getelementptr i32, i32* %r3, i32 2 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r49, %r54 -%r56 = zext i96 %r55 to i128 -%r58 = getelementptr i32, i32* %r3, i32 3 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i128 -%r61 = shl i128 %r60, 96 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i160 -%r65 = getelementptr i32, i32* %r3, i32 4 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i160 -%r68 = shl i160 %r67, 128 -%r69 = or i160 %r63, %r68 -%r70 = zext i160 %r69 to i192 -%r72 = getelementptr i32, i32* %r3, i32 5 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i192 -%r75 = shl i192 %r74, 160 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r40 to i224 -%r78 = zext i192 %r76 to i224 -%r79 = sub i224 %r77, %r78 -%r80 = trunc i224 %r79 to i192 -%r81 = lshr i224 %r79, 192 -%r82 = trunc i224 %r81 to i1 -%r83 = trunc i192 %r80 to i32 -%r85 = getelementptr i32, i32* %r1, i32 0 -store i32 %r83, i32* %r85 -%r86 = lshr i192 %r80, 32 -%r87 = trunc i192 %r86 to i32 -%r89 = getelementptr i32, i32* %r1, i32 1 -store i32 %r87, i32* %r89 -%r90 = lshr i192 %r86, 32 -%r91 = trunc i192 %r90 to i32 -%r93 = getelementptr i32, i32* %r1, i32 2 -store i32 %r91, i32* %r93 -%r94 = lshr i192 %r90, 32 -%r95 = trunc i192 %r94 to i32 -%r97 = getelementptr i32, i32* %r1, i32 3 -store i32 %r95, i32* %r97 -%r98 = lshr i192 %r94, 32 -%r99 = trunc i192 %r98 to i32 -%r101 = getelementptr i32, i32* %r1, i32 4 -store i32 %r99, i32* %r101 -%r102 = lshr i192 %r98, 32 -%r103 = trunc i192 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 5 -store i32 %r103, i32* %r105 -br i1%r82, label %carry, label %nocarry -nocarry: -ret void -carry: -%r106 = load i32, i32* %r4 -%r107 = zext i32 %r106 to i64 -%r109 = getelementptr i32, i32* %r4, i32 1 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i64 -%r112 = shl i64 %r111, 32 -%r113 = or i64 %r107, %r112 -%r114 = zext i64 %r113 to i96 -%r116 = getelementptr i32, i32* %r4, i32 2 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i96 -%r119 = shl i96 %r118, 64 -%r120 = or i96 %r114, %r119 -%r121 = zext i96 %r120 to i128 -%r123 = getelementptr i32, i32* %r4, i32 3 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i128 -%r126 = shl i128 %r125, 96 -%r127 = or i128 %r121, %r126 -%r128 = zext i128 %r127 to i160 -%r130 = getelementptr i32, i32* %r4, i32 4 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i160 -%r133 = shl i160 %r132, 128 -%r134 = or i160 %r128, %r133 -%r135 = zext i160 %r134 to i192 -%r137 = getelementptr i32, i32* %r4, i32 5 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i192 -%r140 = shl i192 %r139, 160 -%r141 = or i192 %r135, %r140 -%r142 = add i192 %r80, %r141 -%r143 = trunc i192 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 0 -store i32 %r143, i32* %r145 -%r146 = lshr i192 %r142, 32 -%r147 = trunc i192 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 1 -store i32 %r147, i32* %r149 -%r150 = lshr i192 %r146, 32 -%r151 = trunc i192 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 2 -store i32 %r151, i32* %r153 -%r154 = lshr i192 %r150, 32 -%r155 = trunc i192 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 3 -store i32 %r155, i32* %r157 -%r158 = lshr i192 %r154, 32 -%r159 = trunc i192 %r158 to i32 -%r161 = getelementptr i32, i32* %r1, i32 4 -store i32 %r159, i32* %r161 -%r162 = lshr i192 %r158, 32 -%r163 = trunc i192 %r162 to i32 -%r165 = getelementptr i32, i32* %r1, i32 5 -store i32 %r163, i32* %r165 -ret void -} -define void @mcl_fp_subNF6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = load i32, i32* %r3 -%r42 = zext i32 %r41 to i64 -%r44 = getelementptr i32, i32* %r3, i32 1 -%r45 = load i32, i32* %r44 -%r46 = zext i32 %r45 to i64 -%r47 = shl i64 %r46, 32 -%r48 = or i64 %r42, %r47 -%r49 = zext i64 %r48 to i96 -%r51 = getelementptr i32, i32* %r3, i32 2 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r49, %r54 -%r56 = zext i96 %r55 to i128 -%r58 = getelementptr i32, i32* %r3, i32 3 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i128 -%r61 = shl i128 %r60, 96 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i160 -%r65 = getelementptr i32, i32* %r3, i32 4 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i160 -%r68 = shl i160 %r67, 128 -%r69 = or i160 %r63, %r68 -%r70 = zext i160 %r69 to i192 -%r72 = getelementptr i32, i32* %r3, i32 5 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i192 -%r75 = shl i192 %r74, 160 -%r76 = or i192 %r70, %r75 -%r77 = sub i192 %r40, %r76 -%r78 = lshr i192 %r77, 191 -%r79 = trunc i192 %r78 to i1 -%r80 = load i32, i32* %r4 -%r81 = zext i32 %r80 to i64 -%r83 = getelementptr i32, i32* %r4, i32 1 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i64 -%r86 = shl i64 %r85, 32 -%r87 = or i64 %r81, %r86 -%r88 = zext i64 %r87 to i96 -%r90 = getelementptr i32, i32* %r4, i32 2 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i96 -%r93 = shl i96 %r92, 64 -%r94 = or i96 %r88, %r93 -%r95 = zext i96 %r94 to i128 -%r97 = getelementptr i32, i32* %r4, i32 3 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i128 -%r100 = shl i128 %r99, 96 -%r101 = or i128 %r95, %r100 -%r102 = zext i128 %r101 to i160 -%r104 = getelementptr i32, i32* %r4, i32 4 -%r105 = load i32, i32* %r104 -%r106 = zext i32 %r105 to i160 -%r107 = shl i160 %r106, 128 -%r108 = or i160 %r102, %r107 -%r109 = zext i160 %r108 to i192 -%r111 = getelementptr i32, i32* %r4, i32 5 -%r112 = load i32, i32* %r111 -%r113 = zext i32 %r112 to i192 -%r114 = shl i192 %r113, 160 -%r115 = or i192 %r109, %r114 -%r117 = select i1 %r79, i192 %r115, i192 0 -%r118 = add i192 %r77, %r117 -%r119 = trunc i192 %r118 to i32 -%r121 = getelementptr i32, i32* %r1, i32 0 -store i32 %r119, i32* %r121 -%r122 = lshr i192 %r118, 32 -%r123 = trunc i192 %r122 to i32 -%r125 = getelementptr i32, i32* %r1, i32 1 -store i32 %r123, i32* %r125 -%r126 = lshr i192 %r122, 32 -%r127 = trunc i192 %r126 to i32 -%r129 = getelementptr i32, i32* %r1, i32 2 -store i32 %r127, i32* %r129 -%r130 = lshr i192 %r126, 32 -%r131 = trunc i192 %r130 to i32 -%r133 = getelementptr i32, i32* %r1, i32 3 -store i32 %r131, i32* %r133 -%r134 = lshr i192 %r130, 32 -%r135 = trunc i192 %r134 to i32 -%r137 = getelementptr i32, i32* %r1, i32 4 -store i32 %r135, i32* %r137 -%r138 = lshr i192 %r134, 32 -%r139 = trunc i192 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 5 -store i32 %r139, i32* %r141 -ret void -} -define void @mcl_fpDbl_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = zext i384 %r82 to i416 +%r85 = getelementptr i32, i32* %r2, i32 12 +%r86 = load i32, i32* %r85 +%r87 = zext i32 %r86 to i416 +%r88 = shl i416 %r87, 384 +%r89 = or i416 %r83, %r88 +%r90 = zext i416 %r89 to i448 +%r92 = getelementptr i32, i32* %r2, i32 13 +%r93 = load i32, i32* %r92 +%r94 = zext i32 %r93 to i448 +%r95 = shl i448 %r94, 416 +%r96 = or i448 %r90, %r95 +%r97 = load i32, i32* %r3 +%r98 = zext i32 %r97 to i64 +%r100 = getelementptr i32, i32* %r3, i32 1 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i64 +%r103 = shl i64 %r102, 32 +%r104 = or i64 %r98, %r103 +%r105 = zext i64 %r104 to i96 +%r107 = getelementptr i32, i32* %r3, i32 2 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i96 +%r110 = shl i96 %r109, 64 +%r111 = or i96 %r105, %r110 +%r112 = zext i96 %r111 to i128 +%r114 = getelementptr i32, i32* %r3, i32 3 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i128 +%r117 = shl i128 %r116, 96 +%r118 = or i128 %r112, %r117 +%r119 = zext i128 %r118 to i160 +%r121 = getelementptr i32, i32* %r3, i32 4 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i160 +%r124 = shl i160 %r123, 128 +%r125 = or i160 %r119, %r124 +%r126 = zext i160 %r125 to i192 +%r128 = getelementptr i32, i32* %r3, i32 5 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i192 +%r131 = shl i192 %r130, 160 +%r132 = or i192 %r126, %r131 +%r133 = zext i192 %r132 to i224 +%r135 = getelementptr i32, i32* %r3, i32 6 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i224 +%r138 = shl i224 %r137, 192 +%r139 = or i224 %r133, %r138 +%r140 = zext i224 %r139 to i256 +%r142 = getelementptr i32, i32* %r3, i32 7 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i256 +%r145 = shl i256 %r144, 224 +%r146 = or i256 %r140, %r145 +%r147 = zext i256 %r146 to i288 +%r149 = getelementptr i32, i32* %r3, i32 8 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i288 +%r152 = shl i288 %r151, 256 +%r153 = or i288 %r147, %r152 +%r154 = zext i288 %r153 to i320 +%r156 = getelementptr i32, i32* %r3, i32 9 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i320 +%r159 = shl i320 %r158, 288 +%r160 = or i320 %r154, %r159 +%r161 = zext i320 %r160 to i352 +%r163 = getelementptr i32, i32* %r3, i32 10 +%r164 = load i32, i32* %r163 +%r165 = zext i32 %r164 to i352 +%r166 = shl i352 %r165, 320 +%r167 = or i352 %r161, %r166 +%r168 = zext i352 %r167 to i384 +%r170 = getelementptr i32, i32* %r3, i32 11 +%r171 = load i32, i32* %r170 +%r172 = zext i32 %r171 to i384 +%r173 = shl i384 %r172, 352 +%r174 = or i384 %r168, %r173 +%r175 = zext i384 %r174 to i416 +%r177 = getelementptr i32, i32* %r3, i32 12 +%r178 = load i32, i32* %r177 +%r179 = zext i32 %r178 to i416 +%r180 = shl i416 %r179, 384 +%r181 = or i416 %r175, %r180 +%r182 = zext i416 %r181 to i448 +%r184 = getelementptr i32, i32* %r3, i32 13 +%r185 = load i32, i32* %r184 +%r186 = zext i32 %r185 to i448 +%r187 = shl i448 %r186, 416 +%r188 = or i448 %r182, %r187 +%r189 = zext i448 %r96 to i480 +%r190 = zext i448 %r188 to i480 +%r191 = add i480 %r189, %r190 +%r192 = trunc i480 %r191 to i224 +%r194 = getelementptr i32, i32* %r1, i32 0 +%r195 = trunc i224 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i224 %r192, 32 +%r198 = getelementptr i32, i32* %r1, i32 1 +%r199 = trunc i224 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i224 %r196, 32 +%r202 = getelementptr i32, i32* %r1, i32 2 +%r203 = trunc i224 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i224 %r200, 32 +%r206 = getelementptr i32, i32* %r1, i32 3 +%r207 = trunc i224 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i224 %r204, 32 +%r210 = getelementptr i32, i32* %r1, i32 4 +%r211 = trunc i224 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = lshr i224 %r208, 32 +%r214 = getelementptr i32, i32* %r1, i32 5 +%r215 = trunc i224 %r212 to i32 +store i32 %r215, i32* %r214 +%r216 = lshr i224 %r212, 32 +%r218 = getelementptr i32, i32* %r1, i32 6 +%r219 = trunc i224 %r216 to i32 +store i32 %r219, i32* %r218 +%r220 = lshr i480 %r191, 224 +%r221 = trunc i480 %r220 to i256 +%r222 = load i32, i32* %r4 +%r223 = zext i32 %r222 to i64 +%r225 = getelementptr i32, i32* %r4, i32 1 +%r226 = load i32, i32* %r225 +%r227 = zext i32 %r226 to i64 +%r228 = shl i64 %r227, 32 +%r229 = or i64 %r223, %r228 +%r230 = zext i64 %r229 to i96 +%r232 = getelementptr i32, i32* %r4, i32 2 +%r233 = load i32, i32* %r232 +%r234 = zext i32 %r233 to i96 +%r235 = shl i96 %r234, 64 +%r236 = or i96 %r230, %r235 +%r237 = zext i96 %r236 to i128 +%r239 = getelementptr i32, i32* %r4, i32 3 +%r240 = load i32, i32* %r239 +%r241 = zext i32 %r240 to i128 +%r242 = shl i128 %r241, 96 +%r243 = or i128 %r237, %r242 +%r244 = zext i128 %r243 to i160 +%r246 = getelementptr i32, i32* %r4, i32 4 +%r247 = load i32, i32* %r246 +%r248 = zext i32 %r247 to i160 +%r249 = shl i160 %r248, 128 +%r250 = or i160 %r244, %r249 +%r251 = zext i160 %r250 to i192 +%r253 = getelementptr i32, i32* %r4, i32 5 +%r254 = load i32, i32* %r253 +%r255 = zext i32 %r254 to i192 +%r256 = shl i192 %r255, 160 +%r257 = or i192 %r251, %r256 +%r258 = zext i192 %r257 to i224 +%r260 = getelementptr i32, i32* %r4, i32 6 +%r261 = load i32, i32* %r260 +%r262 = zext i32 %r261 to i224 +%r263 = shl i224 %r262, 192 +%r264 = or i224 %r258, %r263 +%r265 = zext i224 %r264 to i256 +%r266 = sub i256 %r221, %r265 +%r267 = lshr i256 %r266, 224 +%r268 = trunc i256 %r267 to i1 +%r269 = select i1 %r268, i256 %r221, i256 %r266 +%r270 = trunc i256 %r269 to i224 +%r272 = getelementptr i32, i32* %r1, i32 7 +%r274 = getelementptr i32, i32* %r272, i32 0 +%r275 = trunc i224 %r270 to i32 +store i32 %r275, i32* %r274 +%r276 = lshr i224 %r270, 32 +%r278 = getelementptr i32, i32* %r272, i32 1 +%r279 = trunc i224 %r276 to i32 +store i32 %r279, i32* %r278 +%r280 = lshr i224 %r276, 32 +%r282 = getelementptr i32, i32* %r272, i32 2 +%r283 = trunc i224 %r280 to i32 +store i32 %r283, i32* %r282 +%r284 = lshr i224 %r280, 32 +%r286 = getelementptr i32, i32* %r272, i32 3 +%r287 = trunc i224 %r284 to i32 +store i32 %r287, i32* %r286 +%r288 = lshr i224 %r284, 32 +%r290 = getelementptr i32, i32* %r272, i32 4 +%r291 = trunc i224 %r288 to i32 +store i32 %r291, i32* %r290 +%r292 = lshr i224 %r288, 32 +%r294 = getelementptr i32, i32* %r272, i32 5 +%r295 = trunc i224 %r292 to i32 +store i32 %r295, i32* %r294 +%r296 = lshr i224 %r292, 32 +%r298 = getelementptr i32, i32* %r272, i32 6 +%r299 = trunc i224 %r296 to i32 +store i32 %r299, i32* %r298 +ret void +} +define void @mcl_fpDbl_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -6883,392 +5064,202 @@ define void @mcl_fpDbl_add6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r80 = zext i32 %r79 to i384 %r81 = shl i384 %r80, 352 %r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 +%r83 = zext i384 %r82 to i416 +%r85 = getelementptr i32, i32* %r2, i32 12 +%r86 = load i32, i32* %r85 +%r87 = zext i32 %r86 to i416 +%r88 = shl i416 %r87, 384 +%r89 = or i416 %r83, %r88 +%r90 = zext i416 %r89 to i448 +%r92 = getelementptr i32, i32* %r2, i32 13 +%r93 = load i32, i32* %r92 +%r94 = zext i32 %r93 to i448 +%r95 = shl i448 %r94, 416 +%r96 = or i448 %r90, %r95 +%r97 = load i32, i32* %r3 +%r98 = zext i32 %r97 to i64 +%r100 = getelementptr i32, i32* %r3, i32 1 %r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 +%r102 = zext i32 %r101 to i64 +%r103 = shl i64 %r102, 32 +%r104 = or i64 %r98, %r103 +%r105 = zext i64 %r104 to i96 +%r107 = getelementptr i32, i32* %r3, i32 2 %r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 +%r109 = zext i32 %r108 to i96 +%r110 = shl i96 %r109, 64 +%r111 = or i96 %r105, %r110 +%r112 = zext i96 %r111 to i128 +%r114 = getelementptr i32, i32* %r3, i32 3 %r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 +%r116 = zext i32 %r115 to i128 +%r117 = shl i128 %r116, 96 +%r118 = or i128 %r112, %r117 +%r119 = zext i128 %r118 to i160 +%r121 = getelementptr i32, i32* %r3, i32 4 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 +%r123 = zext i32 %r122 to i160 +%r124 = shl i160 %r123, 128 +%r125 = or i160 %r119, %r124 +%r126 = zext i160 %r125 to i192 +%r128 = getelementptr i32, i32* %r3, i32 5 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 +%r130 = zext i32 %r129 to i192 +%r131 = shl i192 %r130, 160 +%r132 = or i192 %r126, %r131 +%r133 = zext i192 %r132 to i224 +%r135 = getelementptr i32, i32* %r3, i32 6 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 +%r137 = zext i32 %r136 to i224 +%r138 = shl i224 %r137, 192 +%r139 = or i224 %r133, %r138 +%r140 = zext i224 %r139 to i256 +%r142 = getelementptr i32, i32* %r3, i32 7 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 +%r144 = zext i32 %r143 to i256 +%r145 = shl i256 %r144, 224 +%r146 = or i256 %r140, %r145 +%r147 = zext i256 %r146 to i288 +%r149 = getelementptr i32, i32* %r3, i32 8 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 +%r151 = zext i32 %r150 to i288 +%r152 = shl i288 %r151, 256 +%r153 = or i288 %r147, %r152 +%r154 = zext i288 %r153 to i320 +%r156 = getelementptr i32, i32* %r3, i32 9 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r82 to i416 -%r162 = zext i384 %r160 to i416 -%r163 = add i416 %r161, %r162 -%r164 = trunc i416 %r163 to i192 -%r165 = trunc i192 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 0 -store i32 %r165, i32* %r167 -%r168 = lshr i192 %r164, 32 -%r169 = trunc i192 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 1 -store i32 %r169, i32* %r171 -%r172 = lshr i192 %r168, 32 -%r173 = trunc i192 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 2 -store i32 %r173, i32* %r175 -%r176 = lshr i192 %r172, 32 -%r177 = trunc i192 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 3 -store i32 %r177, i32* %r179 -%r180 = lshr i192 %r176, 32 -%r181 = trunc i192 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 4 -store i32 %r181, i32* %r183 -%r184 = lshr i192 %r180, 32 -%r185 = trunc i192 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 5 -store i32 %r185, i32* %r187 -%r188 = lshr i416 %r163, 192 -%r189 = trunc i416 %r188 to i224 -%r190 = load i32, i32* %r4 -%r191 = zext i32 %r190 to i64 -%r193 = getelementptr i32, i32* %r4, i32 1 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i64 -%r196 = shl i64 %r195, 32 -%r197 = or i64 %r191, %r196 -%r198 = zext i64 %r197 to i96 -%r200 = getelementptr i32, i32* %r4, i32 2 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i96 -%r203 = shl i96 %r202, 64 -%r204 = or i96 %r198, %r203 -%r205 = zext i96 %r204 to i128 -%r207 = getelementptr i32, i32* %r4, i32 3 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i128 -%r210 = shl i128 %r209, 96 -%r211 = or i128 %r205, %r210 -%r212 = zext i128 %r211 to i160 -%r214 = getelementptr i32, i32* %r4, i32 4 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i160 -%r217 = shl i160 %r216, 128 -%r218 = or i160 %r212, %r217 -%r219 = zext i160 %r218 to i192 -%r221 = getelementptr i32, i32* %r4, i32 5 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i192 -%r224 = shl i192 %r223, 160 -%r225 = or i192 %r219, %r224 -%r226 = zext i192 %r225 to i224 -%r227 = sub i224 %r189, %r226 -%r228 = lshr i224 %r227, 192 -%r229 = trunc i224 %r228 to i1 -%r230 = select i1 %r229, i224 %r189, i224 %r227 -%r231 = trunc i224 %r230 to i192 -%r233 = getelementptr i32, i32* %r1, i32 6 -%r234 = trunc i192 %r231 to i32 -%r236 = getelementptr i32, i32* %r233, i32 0 -store i32 %r234, i32* %r236 -%r237 = lshr i192 %r231, 32 -%r238 = trunc i192 %r237 to i32 -%r240 = getelementptr i32, i32* %r233, i32 1 -store i32 %r238, i32* %r240 -%r241 = lshr i192 %r237, 32 -%r242 = trunc i192 %r241 to i32 -%r244 = getelementptr i32, i32* %r233, i32 2 -store i32 %r242, i32* %r244 -%r245 = lshr i192 %r241, 32 -%r246 = trunc i192 %r245 to i32 -%r248 = getelementptr i32, i32* %r233, i32 3 -store i32 %r246, i32* %r248 -%r249 = lshr i192 %r245, 32 -%r250 = trunc i192 %r249 to i32 -%r252 = getelementptr i32, i32* %r233, i32 4 -store i32 %r250, i32* %r252 -%r253 = lshr i192 %r249, 32 -%r254 = trunc i192 %r253 to i32 -%r256 = getelementptr i32, i32* %r233, i32 5 -store i32 %r254, i32* %r256 +%r158 = zext i32 %r157 to i320 +%r159 = shl i320 %r158, 288 +%r160 = or i320 %r154, %r159 +%r161 = zext i320 %r160 to i352 +%r163 = getelementptr i32, i32* %r3, i32 10 +%r164 = load i32, i32* %r163 +%r165 = zext i32 %r164 to i352 +%r166 = shl i352 %r165, 320 +%r167 = or i352 %r161, %r166 +%r168 = zext i352 %r167 to i384 +%r170 = getelementptr i32, i32* %r3, i32 11 +%r171 = load i32, i32* %r170 +%r172 = zext i32 %r171 to i384 +%r173 = shl i384 %r172, 352 +%r174 = or i384 %r168, %r173 +%r175 = zext i384 %r174 to i416 +%r177 = getelementptr i32, i32* %r3, i32 12 +%r178 = load i32, i32* %r177 +%r179 = zext i32 %r178 to i416 +%r180 = shl i416 %r179, 384 +%r181 = or i416 %r175, %r180 +%r182 = zext i416 %r181 to i448 +%r184 = getelementptr i32, i32* %r3, i32 13 +%r185 = load i32, i32* %r184 +%r186 = zext i32 %r185 to i448 +%r187 = shl i448 %r186, 416 +%r188 = or i448 %r182, %r187 +%r189 = zext i448 %r96 to i480 +%r190 = zext i448 %r188 to i480 +%r191 = sub i480 %r189, %r190 +%r192 = trunc i480 %r191 to i224 +%r194 = getelementptr i32, i32* %r1, i32 0 +%r195 = trunc i224 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i224 %r192, 32 +%r198 = getelementptr i32, i32* %r1, i32 1 +%r199 = trunc i224 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i224 %r196, 32 +%r202 = getelementptr i32, i32* %r1, i32 2 +%r203 = trunc i224 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i224 %r200, 32 +%r206 = getelementptr i32, i32* %r1, i32 3 +%r207 = trunc i224 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i224 %r204, 32 +%r210 = getelementptr i32, i32* %r1, i32 4 +%r211 = trunc i224 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = lshr i224 %r208, 32 +%r214 = getelementptr i32, i32* %r1, i32 5 +%r215 = trunc i224 %r212 to i32 +store i32 %r215, i32* %r214 +%r216 = lshr i224 %r212, 32 +%r218 = getelementptr i32, i32* %r1, i32 6 +%r219 = trunc i224 %r216 to i32 +store i32 %r219, i32* %r218 +%r220 = lshr i480 %r191, 224 +%r221 = trunc i480 %r220 to i224 +%r222 = lshr i480 %r191, 448 +%r223 = trunc i480 %r222 to i1 +%r224 = load i32, i32* %r4 +%r225 = zext i32 %r224 to i64 +%r227 = getelementptr i32, i32* %r4, i32 1 +%r228 = load i32, i32* %r227 +%r229 = zext i32 %r228 to i64 +%r230 = shl i64 %r229, 32 +%r231 = or i64 %r225, %r230 +%r232 = zext i64 %r231 to i96 +%r234 = getelementptr i32, i32* %r4, i32 2 +%r235 = load i32, i32* %r234 +%r236 = zext i32 %r235 to i96 +%r237 = shl i96 %r236, 64 +%r238 = or i96 %r232, %r237 +%r239 = zext i96 %r238 to i128 +%r241 = getelementptr i32, i32* %r4, i32 3 +%r242 = load i32, i32* %r241 +%r243 = zext i32 %r242 to i128 +%r244 = shl i128 %r243, 96 +%r245 = or i128 %r239, %r244 +%r246 = zext i128 %r245 to i160 +%r248 = getelementptr i32, i32* %r4, i32 4 +%r249 = load i32, i32* %r248 +%r250 = zext i32 %r249 to i160 +%r251 = shl i160 %r250, 128 +%r252 = or i160 %r246, %r251 +%r253 = zext i160 %r252 to i192 +%r255 = getelementptr i32, i32* %r4, i32 5 +%r256 = load i32, i32* %r255 +%r257 = zext i32 %r256 to i192 +%r258 = shl i192 %r257, 160 +%r259 = or i192 %r253, %r258 +%r260 = zext i192 %r259 to i224 +%r262 = getelementptr i32, i32* %r4, i32 6 +%r263 = load i32, i32* %r262 +%r264 = zext i32 %r263 to i224 +%r265 = shl i224 %r264, 192 +%r266 = or i224 %r260, %r265 +%r268 = select i1 %r223, i224 %r266, i224 0 +%r269 = add i224 %r221, %r268 +%r271 = getelementptr i32, i32* %r1, i32 7 +%r273 = getelementptr i32, i32* %r271, i32 0 +%r274 = trunc i224 %r269 to i32 +store i32 %r274, i32* %r273 +%r275 = lshr i224 %r269, 32 +%r277 = getelementptr i32, i32* %r271, i32 1 +%r278 = trunc i224 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i224 %r275, 32 +%r281 = getelementptr i32, i32* %r271, i32 2 +%r282 = trunc i224 %r279 to i32 +store i32 %r282, i32* %r281 +%r283 = lshr i224 %r279, 32 +%r285 = getelementptr i32, i32* %r271, i32 3 +%r286 = trunc i224 %r283 to i32 +store i32 %r286, i32* %r285 +%r287 = lshr i224 %r283, 32 +%r289 = getelementptr i32, i32* %r271, i32 4 +%r290 = trunc i224 %r287 to i32 +store i32 %r290, i32* %r289 +%r291 = lshr i224 %r287, 32 +%r293 = getelementptr i32, i32* %r271, i32 5 +%r294 = trunc i224 %r291 to i32 +store i32 %r294, i32* %r293 +%r295 = lshr i224 %r291, 32 +%r297 = getelementptr i32, i32* %r271, i32 6 +%r298 = trunc i224 %r295 to i32 +store i32 %r298, i32* %r297 ret void } -define void @mcl_fpDbl_sub6L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r82 to i416 -%r162 = zext i384 %r160 to i416 -%r163 = sub i416 %r161, %r162 -%r164 = trunc i416 %r163 to i192 -%r165 = trunc i192 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 0 -store i32 %r165, i32* %r167 -%r168 = lshr i192 %r164, 32 -%r169 = trunc i192 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 1 -store i32 %r169, i32* %r171 -%r172 = lshr i192 %r168, 32 -%r173 = trunc i192 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 2 -store i32 %r173, i32* %r175 -%r176 = lshr i192 %r172, 32 -%r177 = trunc i192 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 3 -store i32 %r177, i32* %r179 -%r180 = lshr i192 %r176, 32 -%r181 = trunc i192 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 4 -store i32 %r181, i32* %r183 -%r184 = lshr i192 %r180, 32 -%r185 = trunc i192 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 5 -store i32 %r185, i32* %r187 -%r188 = lshr i416 %r163, 192 -%r189 = trunc i416 %r188 to i192 -%r190 = lshr i416 %r163, 384 -%r191 = trunc i416 %r190 to i1 -%r192 = load i32, i32* %r4 -%r193 = zext i32 %r192 to i64 -%r195 = getelementptr i32, i32* %r4, i32 1 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i64 -%r198 = shl i64 %r197, 32 -%r199 = or i64 %r193, %r198 -%r200 = zext i64 %r199 to i96 -%r202 = getelementptr i32, i32* %r4, i32 2 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i96 -%r205 = shl i96 %r204, 64 -%r206 = or i96 %r200, %r205 -%r207 = zext i96 %r206 to i128 -%r209 = getelementptr i32, i32* %r4, i32 3 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i128 -%r212 = shl i128 %r211, 96 -%r213 = or i128 %r207, %r212 -%r214 = zext i128 %r213 to i160 -%r216 = getelementptr i32, i32* %r4, i32 4 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i160 -%r219 = shl i160 %r218, 128 -%r220 = or i160 %r214, %r219 -%r221 = zext i160 %r220 to i192 -%r223 = getelementptr i32, i32* %r4, i32 5 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i192 -%r226 = shl i192 %r225, 160 -%r227 = or i192 %r221, %r226 -%r229 = select i1 %r191, i192 %r227, i192 0 -%r230 = add i192 %r189, %r229 -%r232 = getelementptr i32, i32* %r1, i32 6 -%r233 = trunc i192 %r230 to i32 -%r235 = getelementptr i32, i32* %r232, i32 0 -store i32 %r233, i32* %r235 -%r236 = lshr i192 %r230, 32 -%r237 = trunc i192 %r236 to i32 -%r239 = getelementptr i32, i32* %r232, i32 1 -store i32 %r237, i32* %r239 -%r240 = lshr i192 %r236, 32 -%r241 = trunc i192 %r240 to i32 -%r243 = getelementptr i32, i32* %r232, i32 2 -store i32 %r241, i32* %r243 -%r244 = lshr i192 %r240, 32 -%r245 = trunc i192 %r244 to i32 -%r247 = getelementptr i32, i32* %r232, i32 3 -store i32 %r245, i32* %r247 -%r248 = lshr i192 %r244, 32 -%r249 = trunc i192 %r248 to i32 -%r251 = getelementptr i32, i32* %r232, i32 4 -store i32 %r249, i32* %r251 -%r252 = lshr i192 %r248, 32 -%r253 = trunc i192 %r252 to i32 -%r255 = getelementptr i32, i32* %r232, i32 5 -store i32 %r253, i32* %r255 -ret void -} -define i256 @mulPv224x32(i32* noalias %r2, i32 %r3) +define i288 @mulPv256x32(i32* noalias %r2, i32 %r3) { %r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) %r6 = trunc i64 %r5 to i32 @@ -7291,872 +5282,1206 @@ define i256 @mulPv224x32(i32* noalias %r2, i32 %r3) %r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) %r30 = trunc i64 %r29 to i32 %r31 = call i32 @extractHigh32(i64 %r29) -%r32 = zext i32 %r6 to i64 -%r33 = zext i32 %r10 to i64 -%r34 = shl i64 %r33, 32 -%r35 = or i64 %r32, %r34 -%r36 = zext i64 %r35 to i96 -%r37 = zext i32 %r14 to i96 -%r38 = shl i96 %r37, 64 -%r39 = or i96 %r36, %r38 -%r40 = zext i96 %r39 to i128 -%r41 = zext i32 %r18 to i128 -%r42 = shl i128 %r41, 96 -%r43 = or i128 %r40, %r42 -%r44 = zext i128 %r43 to i160 -%r45 = zext i32 %r22 to i160 -%r46 = shl i160 %r45, 128 -%r47 = or i160 %r44, %r46 -%r48 = zext i160 %r47 to i192 -%r49 = zext i32 %r26 to i192 -%r50 = shl i192 %r49, 160 -%r51 = or i192 %r48, %r50 -%r52 = zext i192 %r51 to i224 -%r53 = zext i32 %r30 to i224 -%r54 = shl i224 %r53, 192 -%r55 = or i224 %r52, %r54 -%r56 = zext i32 %r7 to i64 -%r57 = zext i32 %r11 to i64 -%r58 = shl i64 %r57, 32 -%r59 = or i64 %r56, %r58 -%r60 = zext i64 %r59 to i96 -%r61 = zext i32 %r15 to i96 -%r62 = shl i96 %r61, 64 -%r63 = or i96 %r60, %r62 -%r64 = zext i96 %r63 to i128 -%r65 = zext i32 %r19 to i128 -%r66 = shl i128 %r65, 96 -%r67 = or i128 %r64, %r66 -%r68 = zext i128 %r67 to i160 -%r69 = zext i32 %r23 to i160 -%r70 = shl i160 %r69, 128 -%r71 = or i160 %r68, %r70 -%r72 = zext i160 %r71 to i192 -%r73 = zext i32 %r27 to i192 -%r74 = shl i192 %r73, 160 -%r75 = or i192 %r72, %r74 -%r76 = zext i192 %r75 to i224 -%r77 = zext i32 %r31 to i224 -%r78 = shl i224 %r77, 192 -%r79 = or i224 %r76, %r78 -%r80 = zext i224 %r55 to i256 -%r81 = zext i224 %r79 to i256 -%r82 = shl i256 %r81, 32 -%r83 = add i256 %r80, %r82 -ret i256 %r83 +%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) +%r34 = trunc i64 %r33 to i32 +%r35 = call i32 @extractHigh32(i64 %r33) +%r36 = zext i32 %r6 to i64 +%r37 = zext i32 %r10 to i64 +%r38 = shl i64 %r37, 32 +%r39 = or i64 %r36, %r38 +%r40 = zext i64 %r39 to i96 +%r41 = zext i32 %r14 to i96 +%r42 = shl i96 %r41, 64 +%r43 = or i96 %r40, %r42 +%r44 = zext i96 %r43 to i128 +%r45 = zext i32 %r18 to i128 +%r46 = shl i128 %r45, 96 +%r47 = or i128 %r44, %r46 +%r48 = zext i128 %r47 to i160 +%r49 = zext i32 %r22 to i160 +%r50 = shl i160 %r49, 128 +%r51 = or i160 %r48, %r50 +%r52 = zext i160 %r51 to i192 +%r53 = zext i32 %r26 to i192 +%r54 = shl i192 %r53, 160 +%r55 = or i192 %r52, %r54 +%r56 = zext i192 %r55 to i224 +%r57 = zext i32 %r30 to i224 +%r58 = shl i224 %r57, 192 +%r59 = or i224 %r56, %r58 +%r60 = zext i224 %r59 to i256 +%r61 = zext i32 %r34 to i256 +%r62 = shl i256 %r61, 224 +%r63 = or i256 %r60, %r62 +%r64 = zext i32 %r7 to i64 +%r65 = zext i32 %r11 to i64 +%r66 = shl i64 %r65, 32 +%r67 = or i64 %r64, %r66 +%r68 = zext i64 %r67 to i96 +%r69 = zext i32 %r15 to i96 +%r70 = shl i96 %r69, 64 +%r71 = or i96 %r68, %r70 +%r72 = zext i96 %r71 to i128 +%r73 = zext i32 %r19 to i128 +%r74 = shl i128 %r73, 96 +%r75 = or i128 %r72, %r74 +%r76 = zext i128 %r75 to i160 +%r77 = zext i32 %r23 to i160 +%r78 = shl i160 %r77, 128 +%r79 = or i160 %r76, %r78 +%r80 = zext i160 %r79 to i192 +%r81 = zext i32 %r27 to i192 +%r82 = shl i192 %r81, 160 +%r83 = or i192 %r80, %r82 +%r84 = zext i192 %r83 to i224 +%r85 = zext i32 %r31 to i224 +%r86 = shl i224 %r85, 192 +%r87 = or i224 %r84, %r86 +%r88 = zext i224 %r87 to i256 +%r89 = zext i32 %r35 to i256 +%r90 = shl i256 %r89, 224 +%r91 = or i256 %r88, %r90 +%r92 = zext i256 %r63 to i288 +%r93 = zext i256 %r91 to i288 +%r94 = shl i288 %r93, 32 +%r95 = add i288 %r92, %r94 +ret i288 %r95 } -define void @mcl_fp_mulUnitPre7L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +define void @mcl_fp_mulUnitPre8L(i32* noalias %r1, i32* noalias %r2, i32 %r3) { -%r4 = call i256 @mulPv224x32(i32* %r2, i32 %r3) -%r5 = trunc i256 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i256 %r4, 32 -%r9 = trunc i256 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i256 %r8, 32 -%r13 = trunc i256 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i256 %r12, 32 -%r17 = trunc i256 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i256 %r16, 32 -%r21 = trunc i256 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i256 %r20, 32 -%r25 = trunc i256 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i256 %r24, 32 -%r29 = trunc i256 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i256 %r28, 32 -%r33 = trunc i256 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 +%r4 = call i288 @mulPv256x32(i32* %r2, i32 %r3) +%r6 = getelementptr i32, i32* %r1, i32 0 +%r7 = trunc i288 %r4 to i32 +store i32 %r7, i32* %r6 +%r8 = lshr i288 %r4, 32 +%r10 = getelementptr i32, i32* %r1, i32 1 +%r11 = trunc i288 %r8 to i32 +store i32 %r11, i32* %r10 +%r12 = lshr i288 %r8, 32 +%r14 = getelementptr i32, i32* %r1, i32 2 +%r15 = trunc i288 %r12 to i32 +store i32 %r15, i32* %r14 +%r16 = lshr i288 %r12, 32 +%r18 = getelementptr i32, i32* %r1, i32 3 +%r19 = trunc i288 %r16 to i32 +store i32 %r19, i32* %r18 +%r20 = lshr i288 %r16, 32 +%r22 = getelementptr i32, i32* %r1, i32 4 +%r23 = trunc i288 %r20 to i32 +store i32 %r23, i32* %r22 +%r24 = lshr i288 %r20, 32 +%r26 = getelementptr i32, i32* %r1, i32 5 +%r27 = trunc i288 %r24 to i32 +store i32 %r27, i32* %r26 +%r28 = lshr i288 %r24, 32 +%r30 = getelementptr i32, i32* %r1, i32 6 +%r31 = trunc i288 %r28 to i32 +store i32 %r31, i32* %r30 +%r32 = lshr i288 %r28, 32 +%r34 = getelementptr i32, i32* %r1, i32 7 +%r35 = trunc i288 %r32 to i32 +store i32 %r35, i32* %r34 +%r36 = lshr i288 %r32, 32 +%r38 = getelementptr i32, i32* %r1, i32 8 +%r39 = trunc i288 %r36 to i32 +store i32 %r39, i32* %r38 ret void } -define void @mcl_fpDbl_mulPre7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +define void @mcl_fpDbl_mulPre8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { %r4 = load i32, i32* %r3 -%r5 = call i256 @mulPv224x32(i32* %r2, i32 %r4) -%r6 = trunc i256 %r5 to i32 +%r5 = call i288 @mulPv256x32(i32* %r2, i32 %r4) +%r6 = trunc i288 %r5 to i32 store i32 %r6, i32* %r1 -%r7 = lshr i256 %r5, 32 +%r7 = lshr i288 %r5, 32 %r9 = getelementptr i32, i32* %r3, i32 1 %r10 = load i32, i32* %r9 -%r11 = call i256 @mulPv224x32(i32* %r2, i32 %r10) -%r12 = add i256 %r7, %r11 -%r13 = trunc i256 %r12 to i32 +%r11 = call i288 @mulPv256x32(i32* %r2, i32 %r10) +%r12 = add i288 %r7, %r11 +%r13 = trunc i288 %r12 to i32 %r15 = getelementptr i32, i32* %r1, i32 1 store i32 %r13, i32* %r15 -%r16 = lshr i256 %r12, 32 +%r16 = lshr i288 %r12, 32 %r18 = getelementptr i32, i32* %r3, i32 2 %r19 = load i32, i32* %r18 -%r20 = call i256 @mulPv224x32(i32* %r2, i32 %r19) -%r21 = add i256 %r16, %r20 -%r22 = trunc i256 %r21 to i32 +%r20 = call i288 @mulPv256x32(i32* %r2, i32 %r19) +%r21 = add i288 %r16, %r20 +%r22 = trunc i288 %r21 to i32 %r24 = getelementptr i32, i32* %r1, i32 2 store i32 %r22, i32* %r24 -%r25 = lshr i256 %r21, 32 +%r25 = lshr i288 %r21, 32 %r27 = getelementptr i32, i32* %r3, i32 3 %r28 = load i32, i32* %r27 -%r29 = call i256 @mulPv224x32(i32* %r2, i32 %r28) -%r30 = add i256 %r25, %r29 -%r31 = trunc i256 %r30 to i32 +%r29 = call i288 @mulPv256x32(i32* %r2, i32 %r28) +%r30 = add i288 %r25, %r29 +%r31 = trunc i288 %r30 to i32 %r33 = getelementptr i32, i32* %r1, i32 3 store i32 %r31, i32* %r33 -%r34 = lshr i256 %r30, 32 +%r34 = lshr i288 %r30, 32 %r36 = getelementptr i32, i32* %r3, i32 4 %r37 = load i32, i32* %r36 -%r38 = call i256 @mulPv224x32(i32* %r2, i32 %r37) -%r39 = add i256 %r34, %r38 -%r40 = trunc i256 %r39 to i32 +%r38 = call i288 @mulPv256x32(i32* %r2, i32 %r37) +%r39 = add i288 %r34, %r38 +%r40 = trunc i288 %r39 to i32 %r42 = getelementptr i32, i32* %r1, i32 4 store i32 %r40, i32* %r42 -%r43 = lshr i256 %r39, 32 +%r43 = lshr i288 %r39, 32 %r45 = getelementptr i32, i32* %r3, i32 5 %r46 = load i32, i32* %r45 -%r47 = call i256 @mulPv224x32(i32* %r2, i32 %r46) -%r48 = add i256 %r43, %r47 -%r49 = trunc i256 %r48 to i32 +%r47 = call i288 @mulPv256x32(i32* %r2, i32 %r46) +%r48 = add i288 %r43, %r47 +%r49 = trunc i288 %r48 to i32 %r51 = getelementptr i32, i32* %r1, i32 5 store i32 %r49, i32* %r51 -%r52 = lshr i256 %r48, 32 +%r52 = lshr i288 %r48, 32 %r54 = getelementptr i32, i32* %r3, i32 6 %r55 = load i32, i32* %r54 -%r56 = call i256 @mulPv224x32(i32* %r2, i32 %r55) -%r57 = add i256 %r52, %r56 -%r59 = getelementptr i32, i32* %r1, i32 6 -%r60 = trunc i256 %r57 to i32 -%r62 = getelementptr i32, i32* %r59, i32 0 -store i32 %r60, i32* %r62 -%r63 = lshr i256 %r57, 32 -%r64 = trunc i256 %r63 to i32 -%r66 = getelementptr i32, i32* %r59, i32 1 -store i32 %r64, i32* %r66 -%r67 = lshr i256 %r63, 32 -%r68 = trunc i256 %r67 to i32 -%r70 = getelementptr i32, i32* %r59, i32 2 -store i32 %r68, i32* %r70 -%r71 = lshr i256 %r67, 32 -%r72 = trunc i256 %r71 to i32 -%r74 = getelementptr i32, i32* %r59, i32 3 -store i32 %r72, i32* %r74 -%r75 = lshr i256 %r71, 32 -%r76 = trunc i256 %r75 to i32 -%r78 = getelementptr i32, i32* %r59, i32 4 -store i32 %r76, i32* %r78 -%r79 = lshr i256 %r75, 32 -%r80 = trunc i256 %r79 to i32 -%r82 = getelementptr i32, i32* %r59, i32 5 -store i32 %r80, i32* %r82 -%r83 = lshr i256 %r79, 32 -%r84 = trunc i256 %r83 to i32 -%r86 = getelementptr i32, i32* %r59, i32 6 -store i32 %r84, i32* %r86 -%r87 = lshr i256 %r83, 32 -%r88 = trunc i256 %r87 to i32 -%r90 = getelementptr i32, i32* %r59, i32 7 -store i32 %r88, i32* %r90 +%r56 = call i288 @mulPv256x32(i32* %r2, i32 %r55) +%r57 = add i288 %r52, %r56 +%r58 = trunc i288 %r57 to i32 +%r60 = getelementptr i32, i32* %r1, i32 6 +store i32 %r58, i32* %r60 +%r61 = lshr i288 %r57, 32 +%r63 = getelementptr i32, i32* %r3, i32 7 +%r64 = load i32, i32* %r63 +%r65 = call i288 @mulPv256x32(i32* %r2, i32 %r64) +%r66 = add i288 %r61, %r65 +%r68 = getelementptr i32, i32* %r1, i32 7 +%r70 = getelementptr i32, i32* %r68, i32 0 +%r71 = trunc i288 %r66 to i32 +store i32 %r71, i32* %r70 +%r72 = lshr i288 %r66, 32 +%r74 = getelementptr i32, i32* %r68, i32 1 +%r75 = trunc i288 %r72 to i32 +store i32 %r75, i32* %r74 +%r76 = lshr i288 %r72, 32 +%r78 = getelementptr i32, i32* %r68, i32 2 +%r79 = trunc i288 %r76 to i32 +store i32 %r79, i32* %r78 +%r80 = lshr i288 %r76, 32 +%r82 = getelementptr i32, i32* %r68, i32 3 +%r83 = trunc i288 %r80 to i32 +store i32 %r83, i32* %r82 +%r84 = lshr i288 %r80, 32 +%r86 = getelementptr i32, i32* %r68, i32 4 +%r87 = trunc i288 %r84 to i32 +store i32 %r87, i32* %r86 +%r88 = lshr i288 %r84, 32 +%r90 = getelementptr i32, i32* %r68, i32 5 +%r91 = trunc i288 %r88 to i32 +store i32 %r91, i32* %r90 +%r92 = lshr i288 %r88, 32 +%r94 = getelementptr i32, i32* %r68, i32 6 +%r95 = trunc i288 %r92 to i32 +store i32 %r95, i32* %r94 +%r96 = lshr i288 %r92, 32 +%r98 = getelementptr i32, i32* %r68, i32 7 +%r99 = trunc i288 %r96 to i32 +store i32 %r99, i32* %r98 +%r100 = lshr i288 %r96, 32 +%r102 = getelementptr i32, i32* %r68, i32 8 +%r103 = trunc i288 %r100 to i32 +store i32 %r103, i32* %r102 ret void } -define void @mcl_fpDbl_sqrPre7L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fpDbl_sqrPre8L(i32* noalias %r1, i32* noalias %r2) { %r3 = load i32, i32* %r2 -%r4 = call i256 @mulPv224x32(i32* %r2, i32 %r3) -%r5 = trunc i256 %r4 to i32 +%r4 = call i288 @mulPv256x32(i32* %r2, i32 %r3) +%r5 = trunc i288 %r4 to i32 store i32 %r5, i32* %r1 -%r6 = lshr i256 %r4, 32 +%r6 = lshr i288 %r4, 32 %r8 = getelementptr i32, i32* %r2, i32 1 %r9 = load i32, i32* %r8 -%r10 = call i256 @mulPv224x32(i32* %r2, i32 %r9) -%r11 = add i256 %r6, %r10 -%r12 = trunc i256 %r11 to i32 +%r10 = call i288 @mulPv256x32(i32* %r2, i32 %r9) +%r11 = add i288 %r6, %r10 +%r12 = trunc i288 %r11 to i32 %r14 = getelementptr i32, i32* %r1, i32 1 store i32 %r12, i32* %r14 -%r15 = lshr i256 %r11, 32 +%r15 = lshr i288 %r11, 32 %r17 = getelementptr i32, i32* %r2, i32 2 %r18 = load i32, i32* %r17 -%r19 = call i256 @mulPv224x32(i32* %r2, i32 %r18) -%r20 = add i256 %r15, %r19 -%r21 = trunc i256 %r20 to i32 +%r19 = call i288 @mulPv256x32(i32* %r2, i32 %r18) +%r20 = add i288 %r15, %r19 +%r21 = trunc i288 %r20 to i32 %r23 = getelementptr i32, i32* %r1, i32 2 store i32 %r21, i32* %r23 -%r24 = lshr i256 %r20, 32 +%r24 = lshr i288 %r20, 32 %r26 = getelementptr i32, i32* %r2, i32 3 %r27 = load i32, i32* %r26 -%r28 = call i256 @mulPv224x32(i32* %r2, i32 %r27) -%r29 = add i256 %r24, %r28 -%r30 = trunc i256 %r29 to i32 +%r28 = call i288 @mulPv256x32(i32* %r2, i32 %r27) +%r29 = add i288 %r24, %r28 +%r30 = trunc i288 %r29 to i32 %r32 = getelementptr i32, i32* %r1, i32 3 store i32 %r30, i32* %r32 -%r33 = lshr i256 %r29, 32 +%r33 = lshr i288 %r29, 32 %r35 = getelementptr i32, i32* %r2, i32 4 %r36 = load i32, i32* %r35 -%r37 = call i256 @mulPv224x32(i32* %r2, i32 %r36) -%r38 = add i256 %r33, %r37 -%r39 = trunc i256 %r38 to i32 +%r37 = call i288 @mulPv256x32(i32* %r2, i32 %r36) +%r38 = add i288 %r33, %r37 +%r39 = trunc i288 %r38 to i32 %r41 = getelementptr i32, i32* %r1, i32 4 store i32 %r39, i32* %r41 -%r42 = lshr i256 %r38, 32 +%r42 = lshr i288 %r38, 32 %r44 = getelementptr i32, i32* %r2, i32 5 %r45 = load i32, i32* %r44 -%r46 = call i256 @mulPv224x32(i32* %r2, i32 %r45) -%r47 = add i256 %r42, %r46 -%r48 = trunc i256 %r47 to i32 +%r46 = call i288 @mulPv256x32(i32* %r2, i32 %r45) +%r47 = add i288 %r42, %r46 +%r48 = trunc i288 %r47 to i32 %r50 = getelementptr i32, i32* %r1, i32 5 store i32 %r48, i32* %r50 -%r51 = lshr i256 %r47, 32 +%r51 = lshr i288 %r47, 32 %r53 = getelementptr i32, i32* %r2, i32 6 %r54 = load i32, i32* %r53 -%r55 = call i256 @mulPv224x32(i32* %r2, i32 %r54) -%r56 = add i256 %r51, %r55 -%r58 = getelementptr i32, i32* %r1, i32 6 -%r59 = trunc i256 %r56 to i32 -%r61 = getelementptr i32, i32* %r58, i32 0 -store i32 %r59, i32* %r61 -%r62 = lshr i256 %r56, 32 -%r63 = trunc i256 %r62 to i32 -%r65 = getelementptr i32, i32* %r58, i32 1 -store i32 %r63, i32* %r65 -%r66 = lshr i256 %r62, 32 -%r67 = trunc i256 %r66 to i32 -%r69 = getelementptr i32, i32* %r58, i32 2 -store i32 %r67, i32* %r69 -%r70 = lshr i256 %r66, 32 -%r71 = trunc i256 %r70 to i32 -%r73 = getelementptr i32, i32* %r58, i32 3 -store i32 %r71, i32* %r73 -%r74 = lshr i256 %r70, 32 -%r75 = trunc i256 %r74 to i32 -%r77 = getelementptr i32, i32* %r58, i32 4 -store i32 %r75, i32* %r77 -%r78 = lshr i256 %r74, 32 -%r79 = trunc i256 %r78 to i32 -%r81 = getelementptr i32, i32* %r58, i32 5 -store i32 %r79, i32* %r81 -%r82 = lshr i256 %r78, 32 -%r83 = trunc i256 %r82 to i32 -%r85 = getelementptr i32, i32* %r58, i32 6 -store i32 %r83, i32* %r85 -%r86 = lshr i256 %r82, 32 -%r87 = trunc i256 %r86 to i32 -%r89 = getelementptr i32, i32* %r58, i32 7 -store i32 %r87, i32* %r89 +%r55 = call i288 @mulPv256x32(i32* %r2, i32 %r54) +%r56 = add i288 %r51, %r55 +%r57 = trunc i288 %r56 to i32 +%r59 = getelementptr i32, i32* %r1, i32 6 +store i32 %r57, i32* %r59 +%r60 = lshr i288 %r56, 32 +%r62 = getelementptr i32, i32* %r2, i32 7 +%r63 = load i32, i32* %r62 +%r64 = call i288 @mulPv256x32(i32* %r2, i32 %r63) +%r65 = add i288 %r60, %r64 +%r67 = getelementptr i32, i32* %r1, i32 7 +%r69 = getelementptr i32, i32* %r67, i32 0 +%r70 = trunc i288 %r65 to i32 +store i32 %r70, i32* %r69 +%r71 = lshr i288 %r65, 32 +%r73 = getelementptr i32, i32* %r67, i32 1 +%r74 = trunc i288 %r71 to i32 +store i32 %r74, i32* %r73 +%r75 = lshr i288 %r71, 32 +%r77 = getelementptr i32, i32* %r67, i32 2 +%r78 = trunc i288 %r75 to i32 +store i32 %r78, i32* %r77 +%r79 = lshr i288 %r75, 32 +%r81 = getelementptr i32, i32* %r67, i32 3 +%r82 = trunc i288 %r79 to i32 +store i32 %r82, i32* %r81 +%r83 = lshr i288 %r79, 32 +%r85 = getelementptr i32, i32* %r67, i32 4 +%r86 = trunc i288 %r83 to i32 +store i32 %r86, i32* %r85 +%r87 = lshr i288 %r83, 32 +%r89 = getelementptr i32, i32* %r67, i32 5 +%r90 = trunc i288 %r87 to i32 +store i32 %r90, i32* %r89 +%r91 = lshr i288 %r87, 32 +%r93 = getelementptr i32, i32* %r67, i32 6 +%r94 = trunc i288 %r91 to i32 +store i32 %r94, i32* %r93 +%r95 = lshr i288 %r91, 32 +%r97 = getelementptr i32, i32* %r67, i32 7 +%r98 = trunc i288 %r95 to i32 +store i32 %r98, i32* %r97 +%r99 = lshr i288 %r95, 32 +%r101 = getelementptr i32, i32* %r67, i32 8 +%r102 = trunc i288 %r99 to i32 +store i32 %r102, i32* %r101 ret void } -define void @mcl_fp_mont7L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_mont8L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 %r9 = getelementptr i32, i32* %r3, i32 0 %r10 = load i32, i32* %r9 -%r11 = call i256 @mulPv224x32(i32* %r2, i32 %r10) -%r12 = zext i256 %r11 to i288 -%r13 = trunc i256 %r11 to i32 +%r11 = call i288 @mulPv256x32(i32* %r2, i32 %r10) +%r12 = zext i288 %r11 to i320 +%r13 = trunc i288 %r11 to i32 %r14 = mul i32 %r13, %r7 -%r15 = call i256 @mulPv224x32(i32* %r4, i32 %r14) -%r16 = zext i256 %r15 to i288 -%r17 = add i288 %r12, %r16 -%r18 = lshr i288 %r17, 32 +%r15 = call i288 @mulPv256x32(i32* %r4, i32 %r14) +%r16 = zext i288 %r15 to i320 +%r17 = add i320 %r12, %r16 +%r18 = lshr i320 %r17, 32 %r20 = getelementptr i32, i32* %r3, i32 1 %r21 = load i32, i32* %r20 -%r22 = call i256 @mulPv224x32(i32* %r2, i32 %r21) -%r23 = zext i256 %r22 to i288 -%r24 = add i288 %r18, %r23 -%r25 = trunc i288 %r24 to i32 +%r22 = call i288 @mulPv256x32(i32* %r2, i32 %r21) +%r23 = zext i288 %r22 to i320 +%r24 = add i320 %r18, %r23 +%r25 = trunc i320 %r24 to i32 %r26 = mul i32 %r25, %r7 -%r27 = call i256 @mulPv224x32(i32* %r4, i32 %r26) -%r28 = zext i256 %r27 to i288 -%r29 = add i288 %r24, %r28 -%r30 = lshr i288 %r29, 32 +%r27 = call i288 @mulPv256x32(i32* %r4, i32 %r26) +%r28 = zext i288 %r27 to i320 +%r29 = add i320 %r24, %r28 +%r30 = lshr i320 %r29, 32 %r32 = getelementptr i32, i32* %r3, i32 2 %r33 = load i32, i32* %r32 -%r34 = call i256 @mulPv224x32(i32* %r2, i32 %r33) -%r35 = zext i256 %r34 to i288 -%r36 = add i288 %r30, %r35 -%r37 = trunc i288 %r36 to i32 +%r34 = call i288 @mulPv256x32(i32* %r2, i32 %r33) +%r35 = zext i288 %r34 to i320 +%r36 = add i320 %r30, %r35 +%r37 = trunc i320 %r36 to i32 %r38 = mul i32 %r37, %r7 -%r39 = call i256 @mulPv224x32(i32* %r4, i32 %r38) -%r40 = zext i256 %r39 to i288 -%r41 = add i288 %r36, %r40 -%r42 = lshr i288 %r41, 32 +%r39 = call i288 @mulPv256x32(i32* %r4, i32 %r38) +%r40 = zext i288 %r39 to i320 +%r41 = add i320 %r36, %r40 +%r42 = lshr i320 %r41, 32 %r44 = getelementptr i32, i32* %r3, i32 3 %r45 = load i32, i32* %r44 -%r46 = call i256 @mulPv224x32(i32* %r2, i32 %r45) -%r47 = zext i256 %r46 to i288 -%r48 = add i288 %r42, %r47 -%r49 = trunc i288 %r48 to i32 +%r46 = call i288 @mulPv256x32(i32* %r2, i32 %r45) +%r47 = zext i288 %r46 to i320 +%r48 = add i320 %r42, %r47 +%r49 = trunc i320 %r48 to i32 %r50 = mul i32 %r49, %r7 -%r51 = call i256 @mulPv224x32(i32* %r4, i32 %r50) -%r52 = zext i256 %r51 to i288 -%r53 = add i288 %r48, %r52 -%r54 = lshr i288 %r53, 32 +%r51 = call i288 @mulPv256x32(i32* %r4, i32 %r50) +%r52 = zext i288 %r51 to i320 +%r53 = add i320 %r48, %r52 +%r54 = lshr i320 %r53, 32 %r56 = getelementptr i32, i32* %r3, i32 4 %r57 = load i32, i32* %r56 -%r58 = call i256 @mulPv224x32(i32* %r2, i32 %r57) -%r59 = zext i256 %r58 to i288 -%r60 = add i288 %r54, %r59 -%r61 = trunc i288 %r60 to i32 +%r58 = call i288 @mulPv256x32(i32* %r2, i32 %r57) +%r59 = zext i288 %r58 to i320 +%r60 = add i320 %r54, %r59 +%r61 = trunc i320 %r60 to i32 %r62 = mul i32 %r61, %r7 -%r63 = call i256 @mulPv224x32(i32* %r4, i32 %r62) -%r64 = zext i256 %r63 to i288 -%r65 = add i288 %r60, %r64 -%r66 = lshr i288 %r65, 32 +%r63 = call i288 @mulPv256x32(i32* %r4, i32 %r62) +%r64 = zext i288 %r63 to i320 +%r65 = add i320 %r60, %r64 +%r66 = lshr i320 %r65, 32 %r68 = getelementptr i32, i32* %r3, i32 5 %r69 = load i32, i32* %r68 -%r70 = call i256 @mulPv224x32(i32* %r2, i32 %r69) -%r71 = zext i256 %r70 to i288 -%r72 = add i288 %r66, %r71 -%r73 = trunc i288 %r72 to i32 +%r70 = call i288 @mulPv256x32(i32* %r2, i32 %r69) +%r71 = zext i288 %r70 to i320 +%r72 = add i320 %r66, %r71 +%r73 = trunc i320 %r72 to i32 %r74 = mul i32 %r73, %r7 -%r75 = call i256 @mulPv224x32(i32* %r4, i32 %r74) -%r76 = zext i256 %r75 to i288 -%r77 = add i288 %r72, %r76 -%r78 = lshr i288 %r77, 32 +%r75 = call i288 @mulPv256x32(i32* %r4, i32 %r74) +%r76 = zext i288 %r75 to i320 +%r77 = add i320 %r72, %r76 +%r78 = lshr i320 %r77, 32 %r80 = getelementptr i32, i32* %r3, i32 6 %r81 = load i32, i32* %r80 -%r82 = call i256 @mulPv224x32(i32* %r2, i32 %r81) -%r83 = zext i256 %r82 to i288 -%r84 = add i288 %r78, %r83 -%r85 = trunc i288 %r84 to i32 +%r82 = call i288 @mulPv256x32(i32* %r2, i32 %r81) +%r83 = zext i288 %r82 to i320 +%r84 = add i320 %r78, %r83 +%r85 = trunc i320 %r84 to i32 %r86 = mul i32 %r85, %r7 -%r87 = call i256 @mulPv224x32(i32* %r4, i32 %r86) -%r88 = zext i256 %r87 to i288 -%r89 = add i288 %r84, %r88 -%r90 = lshr i288 %r89, 32 -%r91 = trunc i288 %r90 to i256 -%r92 = load i32, i32* %r4 -%r93 = zext i32 %r92 to i64 -%r95 = getelementptr i32, i32* %r4, i32 1 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i64 -%r98 = shl i64 %r97, 32 -%r99 = or i64 %r93, %r98 -%r100 = zext i64 %r99 to i96 -%r102 = getelementptr i32, i32* %r4, i32 2 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i96 -%r105 = shl i96 %r104, 64 -%r106 = or i96 %r100, %r105 -%r107 = zext i96 %r106 to i128 -%r109 = getelementptr i32, i32* %r4, i32 3 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i128 -%r112 = shl i128 %r111, 96 -%r113 = or i128 %r107, %r112 -%r114 = zext i128 %r113 to i160 -%r116 = getelementptr i32, i32* %r4, i32 4 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i160 -%r119 = shl i160 %r118, 128 -%r120 = or i160 %r114, %r119 -%r121 = zext i160 %r120 to i192 -%r123 = getelementptr i32, i32* %r4, i32 5 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i192 -%r126 = shl i192 %r125, 160 -%r127 = or i192 %r121, %r126 -%r128 = zext i192 %r127 to i224 -%r130 = getelementptr i32, i32* %r4, i32 6 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i224 -%r133 = shl i224 %r132, 192 -%r134 = or i224 %r128, %r133 -%r135 = zext i224 %r134 to i256 -%r136 = sub i256 %r91, %r135 -%r137 = lshr i256 %r136, 224 -%r138 = trunc i256 %r137 to i1 -%r139 = select i1 %r138, i256 %r91, i256 %r136 -%r140 = trunc i256 %r139 to i224 -%r141 = trunc i224 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 0 -store i32 %r141, i32* %r143 -%r144 = lshr i224 %r140, 32 -%r145 = trunc i224 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 1 -store i32 %r145, i32* %r147 -%r148 = lshr i224 %r144, 32 -%r149 = trunc i224 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 2 -store i32 %r149, i32* %r151 -%r152 = lshr i224 %r148, 32 -%r153 = trunc i224 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 3 -store i32 %r153, i32* %r155 -%r156 = lshr i224 %r152, 32 -%r157 = trunc i224 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 4 -store i32 %r157, i32* %r159 -%r160 = lshr i224 %r156, 32 -%r161 = trunc i224 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 5 -store i32 %r161, i32* %r163 -%r164 = lshr i224 %r160, 32 -%r165 = trunc i224 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 6 -store i32 %r165, i32* %r167 -ret void -} -define void @mcl_fp_montNF7L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i256 @mulPv224x32(i32* %r2, i32 %r8) -%r10 = trunc i256 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i256 @mulPv224x32(i32* %r4, i32 %r11) -%r13 = add i256 %r9, %r12 -%r14 = lshr i256 %r13, 32 +%r87 = call i288 @mulPv256x32(i32* %r4, i32 %r86) +%r88 = zext i288 %r87 to i320 +%r89 = add i320 %r84, %r88 +%r90 = lshr i320 %r89, 32 +%r92 = getelementptr i32, i32* %r3, i32 7 +%r93 = load i32, i32* %r92 +%r94 = call i288 @mulPv256x32(i32* %r2, i32 %r93) +%r95 = zext i288 %r94 to i320 +%r96 = add i320 %r90, %r95 +%r97 = trunc i320 %r96 to i32 +%r98 = mul i32 %r97, %r7 +%r99 = call i288 @mulPv256x32(i32* %r4, i32 %r98) +%r100 = zext i288 %r99 to i320 +%r101 = add i320 %r96, %r100 +%r102 = lshr i320 %r101, 32 +%r103 = trunc i320 %r102 to i288 +%r104 = load i32, i32* %r4 +%r105 = zext i32 %r104 to i64 +%r107 = getelementptr i32, i32* %r4, i32 1 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i64 +%r110 = shl i64 %r109, 32 +%r111 = or i64 %r105, %r110 +%r112 = zext i64 %r111 to i96 +%r114 = getelementptr i32, i32* %r4, i32 2 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i96 +%r117 = shl i96 %r116, 64 +%r118 = or i96 %r112, %r117 +%r119 = zext i96 %r118 to i128 +%r121 = getelementptr i32, i32* %r4, i32 3 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i128 +%r124 = shl i128 %r123, 96 +%r125 = or i128 %r119, %r124 +%r126 = zext i128 %r125 to i160 +%r128 = getelementptr i32, i32* %r4, i32 4 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i160 +%r131 = shl i160 %r130, 128 +%r132 = or i160 %r126, %r131 +%r133 = zext i160 %r132 to i192 +%r135 = getelementptr i32, i32* %r4, i32 5 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i192 +%r138 = shl i192 %r137, 160 +%r139 = or i192 %r133, %r138 +%r140 = zext i192 %r139 to i224 +%r142 = getelementptr i32, i32* %r4, i32 6 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i224 +%r145 = shl i224 %r144, 192 +%r146 = or i224 %r140, %r145 +%r147 = zext i224 %r146 to i256 +%r149 = getelementptr i32, i32* %r4, i32 7 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i256 +%r152 = shl i256 %r151, 224 +%r153 = or i256 %r147, %r152 +%r154 = zext i256 %r153 to i288 +%r155 = sub i288 %r103, %r154 +%r156 = lshr i288 %r155, 256 +%r157 = trunc i288 %r156 to i1 +%r158 = select i1 %r157, i288 %r103, i288 %r155 +%r159 = trunc i288 %r158 to i256 +%r161 = getelementptr i32, i32* %r1, i32 0 +%r162 = trunc i256 %r159 to i32 +store i32 %r162, i32* %r161 +%r163 = lshr i256 %r159, 32 +%r165 = getelementptr i32, i32* %r1, i32 1 +%r166 = trunc i256 %r163 to i32 +store i32 %r166, i32* %r165 +%r167 = lshr i256 %r163, 32 +%r169 = getelementptr i32, i32* %r1, i32 2 +%r170 = trunc i256 %r167 to i32 +store i32 %r170, i32* %r169 +%r171 = lshr i256 %r167, 32 +%r173 = getelementptr i32, i32* %r1, i32 3 +%r174 = trunc i256 %r171 to i32 +store i32 %r174, i32* %r173 +%r175 = lshr i256 %r171, 32 +%r177 = getelementptr i32, i32* %r1, i32 4 +%r178 = trunc i256 %r175 to i32 +store i32 %r178, i32* %r177 +%r179 = lshr i256 %r175, 32 +%r181 = getelementptr i32, i32* %r1, i32 5 +%r182 = trunc i256 %r179 to i32 +store i32 %r182, i32* %r181 +%r183 = lshr i256 %r179, 32 +%r185 = getelementptr i32, i32* %r1, i32 6 +%r186 = trunc i256 %r183 to i32 +store i32 %r186, i32* %r185 +%r187 = lshr i256 %r183, 32 +%r189 = getelementptr i32, i32* %r1, i32 7 +%r190 = trunc i256 %r187 to i32 +store i32 %r190, i32* %r189 +ret void +} +define void @mcl_fp_montNF8L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +{ +%r6 = getelementptr i32, i32* %r4, i32 -1 +%r7 = load i32, i32* %r6 +%r8 = load i32, i32* %r3 +%r9 = call i288 @mulPv256x32(i32* %r2, i32 %r8) +%r10 = trunc i288 %r9 to i32 +%r11 = mul i32 %r10, %r7 +%r12 = call i288 @mulPv256x32(i32* %r4, i32 %r11) +%r13 = add i288 %r9, %r12 +%r14 = lshr i288 %r13, 32 %r16 = getelementptr i32, i32* %r3, i32 1 %r17 = load i32, i32* %r16 -%r18 = call i256 @mulPv224x32(i32* %r2, i32 %r17) -%r19 = add i256 %r14, %r18 -%r20 = trunc i256 %r19 to i32 +%r18 = call i288 @mulPv256x32(i32* %r2, i32 %r17) +%r19 = add i288 %r14, %r18 +%r20 = trunc i288 %r19 to i32 %r21 = mul i32 %r20, %r7 -%r22 = call i256 @mulPv224x32(i32* %r4, i32 %r21) -%r23 = add i256 %r19, %r22 -%r24 = lshr i256 %r23, 32 +%r22 = call i288 @mulPv256x32(i32* %r4, i32 %r21) +%r23 = add i288 %r19, %r22 +%r24 = lshr i288 %r23, 32 %r26 = getelementptr i32, i32* %r3, i32 2 %r27 = load i32, i32* %r26 -%r28 = call i256 @mulPv224x32(i32* %r2, i32 %r27) -%r29 = add i256 %r24, %r28 -%r30 = trunc i256 %r29 to i32 +%r28 = call i288 @mulPv256x32(i32* %r2, i32 %r27) +%r29 = add i288 %r24, %r28 +%r30 = trunc i288 %r29 to i32 %r31 = mul i32 %r30, %r7 -%r32 = call i256 @mulPv224x32(i32* %r4, i32 %r31) -%r33 = add i256 %r29, %r32 -%r34 = lshr i256 %r33, 32 +%r32 = call i288 @mulPv256x32(i32* %r4, i32 %r31) +%r33 = add i288 %r29, %r32 +%r34 = lshr i288 %r33, 32 %r36 = getelementptr i32, i32* %r3, i32 3 %r37 = load i32, i32* %r36 -%r38 = call i256 @mulPv224x32(i32* %r2, i32 %r37) -%r39 = add i256 %r34, %r38 -%r40 = trunc i256 %r39 to i32 +%r38 = call i288 @mulPv256x32(i32* %r2, i32 %r37) +%r39 = add i288 %r34, %r38 +%r40 = trunc i288 %r39 to i32 %r41 = mul i32 %r40, %r7 -%r42 = call i256 @mulPv224x32(i32* %r4, i32 %r41) -%r43 = add i256 %r39, %r42 -%r44 = lshr i256 %r43, 32 +%r42 = call i288 @mulPv256x32(i32* %r4, i32 %r41) +%r43 = add i288 %r39, %r42 +%r44 = lshr i288 %r43, 32 %r46 = getelementptr i32, i32* %r3, i32 4 %r47 = load i32, i32* %r46 -%r48 = call i256 @mulPv224x32(i32* %r2, i32 %r47) -%r49 = add i256 %r44, %r48 -%r50 = trunc i256 %r49 to i32 +%r48 = call i288 @mulPv256x32(i32* %r2, i32 %r47) +%r49 = add i288 %r44, %r48 +%r50 = trunc i288 %r49 to i32 %r51 = mul i32 %r50, %r7 -%r52 = call i256 @mulPv224x32(i32* %r4, i32 %r51) -%r53 = add i256 %r49, %r52 -%r54 = lshr i256 %r53, 32 +%r52 = call i288 @mulPv256x32(i32* %r4, i32 %r51) +%r53 = add i288 %r49, %r52 +%r54 = lshr i288 %r53, 32 %r56 = getelementptr i32, i32* %r3, i32 5 %r57 = load i32, i32* %r56 -%r58 = call i256 @mulPv224x32(i32* %r2, i32 %r57) -%r59 = add i256 %r54, %r58 -%r60 = trunc i256 %r59 to i32 +%r58 = call i288 @mulPv256x32(i32* %r2, i32 %r57) +%r59 = add i288 %r54, %r58 +%r60 = trunc i288 %r59 to i32 %r61 = mul i32 %r60, %r7 -%r62 = call i256 @mulPv224x32(i32* %r4, i32 %r61) -%r63 = add i256 %r59, %r62 -%r64 = lshr i256 %r63, 32 +%r62 = call i288 @mulPv256x32(i32* %r4, i32 %r61) +%r63 = add i288 %r59, %r62 +%r64 = lshr i288 %r63, 32 %r66 = getelementptr i32, i32* %r3, i32 6 %r67 = load i32, i32* %r66 -%r68 = call i256 @mulPv224x32(i32* %r2, i32 %r67) -%r69 = add i256 %r64, %r68 -%r70 = trunc i256 %r69 to i32 +%r68 = call i288 @mulPv256x32(i32* %r2, i32 %r67) +%r69 = add i288 %r64, %r68 +%r70 = trunc i288 %r69 to i32 %r71 = mul i32 %r70, %r7 -%r72 = call i256 @mulPv224x32(i32* %r4, i32 %r71) -%r73 = add i256 %r69, %r72 -%r74 = lshr i256 %r73, 32 -%r75 = trunc i256 %r74 to i224 -%r76 = load i32, i32* %r4 -%r77 = zext i32 %r76 to i64 -%r79 = getelementptr i32, i32* %r4, i32 1 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r77, %r82 -%r84 = zext i64 %r83 to i96 -%r86 = getelementptr i32, i32* %r4, i32 2 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i96 -%r89 = shl i96 %r88, 64 -%r90 = or i96 %r84, %r89 -%r91 = zext i96 %r90 to i128 -%r93 = getelementptr i32, i32* %r4, i32 3 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i128 -%r96 = shl i128 %r95, 96 -%r97 = or i128 %r91, %r96 -%r98 = zext i128 %r97 to i160 -%r100 = getelementptr i32, i32* %r4, i32 4 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i160 -%r103 = shl i160 %r102, 128 -%r104 = or i160 %r98, %r103 -%r105 = zext i160 %r104 to i192 -%r107 = getelementptr i32, i32* %r4, i32 5 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i192 -%r110 = shl i192 %r109, 160 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i224 -%r114 = getelementptr i32, i32* %r4, i32 6 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i224 -%r117 = shl i224 %r116, 192 -%r118 = or i224 %r112, %r117 -%r119 = sub i224 %r75, %r118 -%r120 = lshr i224 %r119, 223 -%r121 = trunc i224 %r120 to i1 -%r122 = select i1 %r121, i224 %r75, i224 %r119 -%r123 = trunc i224 %r122 to i32 -%r125 = getelementptr i32, i32* %r1, i32 0 -store i32 %r123, i32* %r125 -%r126 = lshr i224 %r122, 32 -%r127 = trunc i224 %r126 to i32 -%r129 = getelementptr i32, i32* %r1, i32 1 -store i32 %r127, i32* %r129 -%r130 = lshr i224 %r126, 32 -%r131 = trunc i224 %r130 to i32 -%r133 = getelementptr i32, i32* %r1, i32 2 -store i32 %r131, i32* %r133 -%r134 = lshr i224 %r130, 32 -%r135 = trunc i224 %r134 to i32 -%r137 = getelementptr i32, i32* %r1, i32 3 -store i32 %r135, i32* %r137 -%r138 = lshr i224 %r134, 32 -%r139 = trunc i224 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 4 -store i32 %r139, i32* %r141 -%r142 = lshr i224 %r138, 32 -%r143 = trunc i224 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 5 -store i32 %r143, i32* %r145 -%r146 = lshr i224 %r142, 32 -%r147 = trunc i224 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 6 -store i32 %r147, i32* %r149 -ret void -} -define void @mcl_fp_montRed7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = load i32, i32* %r2 -%r51 = zext i32 %r50 to i64 -%r53 = getelementptr i32, i32* %r2, i32 1 -%r54 = load i32, i32* %r53 -%r55 = zext i32 %r54 to i64 -%r56 = shl i64 %r55, 32 -%r57 = or i64 %r51, %r56 -%r58 = zext i64 %r57 to i96 -%r60 = getelementptr i32, i32* %r2, i32 2 +%r72 = call i288 @mulPv256x32(i32* %r4, i32 %r71) +%r73 = add i288 %r69, %r72 +%r74 = lshr i288 %r73, 32 +%r76 = getelementptr i32, i32* %r3, i32 7 +%r77 = load i32, i32* %r76 +%r78 = call i288 @mulPv256x32(i32* %r2, i32 %r77) +%r79 = add i288 %r74, %r78 +%r80 = trunc i288 %r79 to i32 +%r81 = mul i32 %r80, %r7 +%r82 = call i288 @mulPv256x32(i32* %r4, i32 %r81) +%r83 = add i288 %r79, %r82 +%r84 = lshr i288 %r83, 32 +%r85 = trunc i288 %r84 to i256 +%r86 = load i32, i32* %r4 +%r87 = zext i32 %r86 to i64 +%r89 = getelementptr i32, i32* %r4, i32 1 +%r90 = load i32, i32* %r89 +%r91 = zext i32 %r90 to i64 +%r92 = shl i64 %r91, 32 +%r93 = or i64 %r87, %r92 +%r94 = zext i64 %r93 to i96 +%r96 = getelementptr i32, i32* %r4, i32 2 +%r97 = load i32, i32* %r96 +%r98 = zext i32 %r97 to i96 +%r99 = shl i96 %r98, 64 +%r100 = or i96 %r94, %r99 +%r101 = zext i96 %r100 to i128 +%r103 = getelementptr i32, i32* %r4, i32 3 +%r104 = load i32, i32* %r103 +%r105 = zext i32 %r104 to i128 +%r106 = shl i128 %r105, 96 +%r107 = or i128 %r101, %r106 +%r108 = zext i128 %r107 to i160 +%r110 = getelementptr i32, i32* %r4, i32 4 +%r111 = load i32, i32* %r110 +%r112 = zext i32 %r111 to i160 +%r113 = shl i160 %r112, 128 +%r114 = or i160 %r108, %r113 +%r115 = zext i160 %r114 to i192 +%r117 = getelementptr i32, i32* %r4, i32 5 +%r118 = load i32, i32* %r117 +%r119 = zext i32 %r118 to i192 +%r120 = shl i192 %r119, 160 +%r121 = or i192 %r115, %r120 +%r122 = zext i192 %r121 to i224 +%r124 = getelementptr i32, i32* %r4, i32 6 +%r125 = load i32, i32* %r124 +%r126 = zext i32 %r125 to i224 +%r127 = shl i224 %r126, 192 +%r128 = or i224 %r122, %r127 +%r129 = zext i224 %r128 to i256 +%r131 = getelementptr i32, i32* %r4, i32 7 +%r132 = load i32, i32* %r131 +%r133 = zext i32 %r132 to i256 +%r134 = shl i256 %r133, 224 +%r135 = or i256 %r129, %r134 +%r136 = sub i256 %r85, %r135 +%r137 = lshr i256 %r136, 255 +%r138 = trunc i256 %r137 to i1 +%r139 = select i1 %r138, i256 %r85, i256 %r136 +%r141 = getelementptr i32, i32* %r1, i32 0 +%r142 = trunc i256 %r139 to i32 +store i32 %r142, i32* %r141 +%r143 = lshr i256 %r139, 32 +%r145 = getelementptr i32, i32* %r1, i32 1 +%r146 = trunc i256 %r143 to i32 +store i32 %r146, i32* %r145 +%r147 = lshr i256 %r143, 32 +%r149 = getelementptr i32, i32* %r1, i32 2 +%r150 = trunc i256 %r147 to i32 +store i32 %r150, i32* %r149 +%r151 = lshr i256 %r147, 32 +%r153 = getelementptr i32, i32* %r1, i32 3 +%r154 = trunc i256 %r151 to i32 +store i32 %r154, i32* %r153 +%r155 = lshr i256 %r151, 32 +%r157 = getelementptr i32, i32* %r1, i32 4 +%r158 = trunc i256 %r155 to i32 +store i32 %r158, i32* %r157 +%r159 = lshr i256 %r155, 32 +%r161 = getelementptr i32, i32* %r1, i32 5 +%r162 = trunc i256 %r159 to i32 +store i32 %r162, i32* %r161 +%r163 = lshr i256 %r159, 32 +%r165 = getelementptr i32, i32* %r1, i32 6 +%r166 = trunc i256 %r163 to i32 +store i32 %r166, i32* %r165 +%r167 = lshr i256 %r163, 32 +%r169 = getelementptr i32, i32* %r1, i32 7 +%r170 = trunc i256 %r167 to i32 +store i32 %r170, i32* %r169 +ret void +} +define void @mcl_fp_montRed8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = zext i224 %r49 to i256 +%r52 = getelementptr i32, i32* %r3, i32 7 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i256 +%r55 = shl i256 %r54, 224 +%r56 = or i256 %r50, %r55 +%r57 = load i32, i32* %r2 +%r58 = zext i32 %r57 to i64 +%r60 = getelementptr i32, i32* %r2, i32 1 %r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i96 -%r63 = shl i96 %r62, 64 -%r64 = or i96 %r58, %r63 -%r65 = zext i96 %r64 to i128 -%r67 = getelementptr i32, i32* %r2, i32 3 +%r62 = zext i32 %r61 to i64 +%r63 = shl i64 %r62, 32 +%r64 = or i64 %r58, %r63 +%r65 = zext i64 %r64 to i96 +%r67 = getelementptr i32, i32* %r2, i32 2 %r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i128 -%r70 = shl i128 %r69, 96 -%r71 = or i128 %r65, %r70 -%r72 = zext i128 %r71 to i160 -%r74 = getelementptr i32, i32* %r2, i32 4 +%r69 = zext i32 %r68 to i96 +%r70 = shl i96 %r69, 64 +%r71 = or i96 %r65, %r70 +%r72 = zext i96 %r71 to i128 +%r74 = getelementptr i32, i32* %r2, i32 3 %r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i160 -%r77 = shl i160 %r76, 128 -%r78 = or i160 %r72, %r77 -%r79 = zext i160 %r78 to i192 -%r81 = getelementptr i32, i32* %r2, i32 5 +%r76 = zext i32 %r75 to i128 +%r77 = shl i128 %r76, 96 +%r78 = or i128 %r72, %r77 +%r79 = zext i128 %r78 to i160 +%r81 = getelementptr i32, i32* %r2, i32 4 %r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i192 -%r84 = shl i192 %r83, 160 -%r85 = or i192 %r79, %r84 -%r86 = zext i192 %r85 to i224 -%r88 = getelementptr i32, i32* %r2, i32 6 +%r83 = zext i32 %r82 to i160 +%r84 = shl i160 %r83, 128 +%r85 = or i160 %r79, %r84 +%r86 = zext i160 %r85 to i192 +%r88 = getelementptr i32, i32* %r2, i32 5 %r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i224 -%r91 = shl i224 %r90, 192 -%r92 = or i224 %r86, %r91 -%r93 = zext i224 %r92 to i256 -%r95 = getelementptr i32, i32* %r2, i32 7 +%r90 = zext i32 %r89 to i192 +%r91 = shl i192 %r90, 160 +%r92 = or i192 %r86, %r91 +%r93 = zext i192 %r92 to i224 +%r95 = getelementptr i32, i32* %r2, i32 6 %r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i256 -%r98 = shl i256 %r97, 224 -%r99 = or i256 %r93, %r98 -%r100 = zext i256 %r99 to i288 -%r102 = getelementptr i32, i32* %r2, i32 8 +%r97 = zext i32 %r96 to i224 +%r98 = shl i224 %r97, 192 +%r99 = or i224 %r93, %r98 +%r100 = zext i224 %r99 to i256 +%r102 = getelementptr i32, i32* %r2, i32 7 %r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i288 -%r105 = shl i288 %r104, 256 -%r106 = or i288 %r100, %r105 -%r107 = zext i288 %r106 to i320 -%r109 = getelementptr i32, i32* %r2, i32 9 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i320 -%r112 = shl i320 %r111, 288 -%r113 = or i320 %r107, %r112 -%r114 = zext i320 %r113 to i352 -%r116 = getelementptr i32, i32* %r2, i32 10 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i352 -%r119 = shl i352 %r118, 320 -%r120 = or i352 %r114, %r119 -%r121 = zext i352 %r120 to i384 -%r123 = getelementptr i32, i32* %r2, i32 11 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i384 -%r126 = shl i384 %r125, 352 -%r127 = or i384 %r121, %r126 -%r128 = zext i384 %r127 to i416 -%r130 = getelementptr i32, i32* %r2, i32 12 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i416 -%r133 = shl i416 %r132, 384 -%r134 = or i416 %r128, %r133 -%r135 = zext i416 %r134 to i448 -%r137 = getelementptr i32, i32* %r2, i32 13 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i448 -%r140 = shl i448 %r139, 416 -%r141 = or i448 %r135, %r140 -%r142 = zext i448 %r141 to i480 -%r143 = trunc i480 %r142 to i32 -%r144 = mul i32 %r143, %r6 -%r145 = call i256 @mulPv224x32(i32* %r3, i32 %r144) -%r146 = zext i256 %r145 to i480 -%r147 = add i480 %r142, %r146 -%r148 = lshr i480 %r147, 32 -%r149 = trunc i480 %r148 to i448 -%r150 = trunc i448 %r149 to i32 -%r151 = mul i32 %r150, %r6 -%r152 = call i256 @mulPv224x32(i32* %r3, i32 %r151) -%r153 = zext i256 %r152 to i448 -%r154 = add i448 %r149, %r153 -%r155 = lshr i448 %r154, 32 -%r156 = trunc i448 %r155 to i416 -%r157 = trunc i416 %r156 to i32 -%r158 = mul i32 %r157, %r6 -%r159 = call i256 @mulPv224x32(i32* %r3, i32 %r158) -%r160 = zext i256 %r159 to i416 -%r161 = add i416 %r156, %r160 -%r162 = lshr i416 %r161, 32 -%r163 = trunc i416 %r162 to i384 -%r164 = trunc i384 %r163 to i32 -%r165 = mul i32 %r164, %r6 -%r166 = call i256 @mulPv224x32(i32* %r3, i32 %r165) -%r167 = zext i256 %r166 to i384 -%r168 = add i384 %r163, %r167 -%r169 = lshr i384 %r168, 32 -%r170 = trunc i384 %r169 to i352 -%r171 = trunc i352 %r170 to i32 -%r172 = mul i32 %r171, %r6 -%r173 = call i256 @mulPv224x32(i32* %r3, i32 %r172) -%r174 = zext i256 %r173 to i352 -%r175 = add i352 %r170, %r174 -%r176 = lshr i352 %r175, 32 -%r177 = trunc i352 %r176 to i320 -%r178 = trunc i320 %r177 to i32 -%r179 = mul i32 %r178, %r6 -%r180 = call i256 @mulPv224x32(i32* %r3, i32 %r179) -%r181 = zext i256 %r180 to i320 -%r182 = add i320 %r177, %r181 +%r104 = zext i32 %r103 to i256 +%r105 = shl i256 %r104, 224 +%r106 = or i256 %r100, %r105 +%r107 = trunc i256 %r106 to i32 +%r108 = mul i32 %r107, %r6 +%r109 = call i288 @mulPv256x32(i32* %r3, i32 %r108) +%r111 = getelementptr i32, i32* %r2, i32 8 +%r112 = load i32, i32* %r111 +%r113 = zext i32 %r112 to i288 +%r114 = shl i288 %r113, 256 +%r115 = zext i256 %r106 to i288 +%r116 = or i288 %r114, %r115 +%r117 = zext i288 %r116 to i320 +%r118 = zext i288 %r109 to i320 +%r119 = add i320 %r117, %r118 +%r120 = lshr i320 %r119, 32 +%r121 = trunc i320 %r120 to i288 +%r122 = lshr i288 %r121, 256 +%r123 = trunc i288 %r122 to i32 +%r124 = trunc i288 %r121 to i256 +%r125 = trunc i256 %r124 to i32 +%r126 = mul i32 %r125, %r6 +%r127 = call i288 @mulPv256x32(i32* %r3, i32 %r126) +%r128 = zext i32 %r123 to i288 +%r129 = shl i288 %r128, 256 +%r130 = add i288 %r127, %r129 +%r132 = getelementptr i32, i32* %r2, i32 9 +%r133 = load i32, i32* %r132 +%r134 = zext i32 %r133 to i288 +%r135 = shl i288 %r134, 256 +%r136 = zext i256 %r124 to i288 +%r137 = or i288 %r135, %r136 +%r138 = zext i288 %r137 to i320 +%r139 = zext i288 %r130 to i320 +%r140 = add i320 %r138, %r139 +%r141 = lshr i320 %r140, 32 +%r142 = trunc i320 %r141 to i288 +%r143 = lshr i288 %r142, 256 +%r144 = trunc i288 %r143 to i32 +%r145 = trunc i288 %r142 to i256 +%r146 = trunc i256 %r145 to i32 +%r147 = mul i32 %r146, %r6 +%r148 = call i288 @mulPv256x32(i32* %r3, i32 %r147) +%r149 = zext i32 %r144 to i288 +%r150 = shl i288 %r149, 256 +%r151 = add i288 %r148, %r150 +%r153 = getelementptr i32, i32* %r2, i32 10 +%r154 = load i32, i32* %r153 +%r155 = zext i32 %r154 to i288 +%r156 = shl i288 %r155, 256 +%r157 = zext i256 %r145 to i288 +%r158 = or i288 %r156, %r157 +%r159 = zext i288 %r158 to i320 +%r160 = zext i288 %r151 to i320 +%r161 = add i320 %r159, %r160 +%r162 = lshr i320 %r161, 32 +%r163 = trunc i320 %r162 to i288 +%r164 = lshr i288 %r163, 256 +%r165 = trunc i288 %r164 to i32 +%r166 = trunc i288 %r163 to i256 +%r167 = trunc i256 %r166 to i32 +%r168 = mul i32 %r167, %r6 +%r169 = call i288 @mulPv256x32(i32* %r3, i32 %r168) +%r170 = zext i32 %r165 to i288 +%r171 = shl i288 %r170, 256 +%r172 = add i288 %r169, %r171 +%r174 = getelementptr i32, i32* %r2, i32 11 +%r175 = load i32, i32* %r174 +%r176 = zext i32 %r175 to i288 +%r177 = shl i288 %r176, 256 +%r178 = zext i256 %r166 to i288 +%r179 = or i288 %r177, %r178 +%r180 = zext i288 %r179 to i320 +%r181 = zext i288 %r172 to i320 +%r182 = add i320 %r180, %r181 %r183 = lshr i320 %r182, 32 %r184 = trunc i320 %r183 to i288 -%r185 = trunc i288 %r184 to i32 -%r186 = mul i32 %r185, %r6 -%r187 = call i256 @mulPv224x32(i32* %r3, i32 %r186) -%r188 = zext i256 %r187 to i288 -%r189 = add i288 %r184, %r188 -%r190 = lshr i288 %r189, 32 -%r191 = trunc i288 %r190 to i256 -%r192 = zext i224 %r49 to i256 -%r193 = sub i256 %r191, %r192 -%r194 = lshr i256 %r193, 224 -%r195 = trunc i256 %r194 to i1 -%r196 = select i1 %r195, i256 %r191, i256 %r193 -%r197 = trunc i256 %r196 to i224 -%r198 = trunc i224 %r197 to i32 -%r200 = getelementptr i32, i32* %r1, i32 0 -store i32 %r198, i32* %r200 -%r201 = lshr i224 %r197, 32 -%r202 = trunc i224 %r201 to i32 -%r204 = getelementptr i32, i32* %r1, i32 1 -store i32 %r202, i32* %r204 -%r205 = lshr i224 %r201, 32 -%r206 = trunc i224 %r205 to i32 -%r208 = getelementptr i32, i32* %r1, i32 2 -store i32 %r206, i32* %r208 -%r209 = lshr i224 %r205, 32 -%r210 = trunc i224 %r209 to i32 -%r212 = getelementptr i32, i32* %r1, i32 3 -store i32 %r210, i32* %r212 -%r213 = lshr i224 %r209, 32 -%r214 = trunc i224 %r213 to i32 -%r216 = getelementptr i32, i32* %r1, i32 4 -store i32 %r214, i32* %r216 -%r217 = lshr i224 %r213, 32 -%r218 = trunc i224 %r217 to i32 -%r220 = getelementptr i32, i32* %r1, i32 5 -store i32 %r218, i32* %r220 -%r221 = lshr i224 %r217, 32 -%r222 = trunc i224 %r221 to i32 -%r224 = getelementptr i32, i32* %r1, i32 6 -store i32 %r222, i32* %r224 -ret void -} -define i32 @mcl_fp_addPre7L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +%r185 = lshr i288 %r184, 256 +%r186 = trunc i288 %r185 to i32 +%r187 = trunc i288 %r184 to i256 +%r188 = trunc i256 %r187 to i32 +%r189 = mul i32 %r188, %r6 +%r190 = call i288 @mulPv256x32(i32* %r3, i32 %r189) +%r191 = zext i32 %r186 to i288 +%r192 = shl i288 %r191, 256 +%r193 = add i288 %r190, %r192 +%r195 = getelementptr i32, i32* %r2, i32 12 +%r196 = load i32, i32* %r195 +%r197 = zext i32 %r196 to i288 +%r198 = shl i288 %r197, 256 +%r199 = zext i256 %r187 to i288 +%r200 = or i288 %r198, %r199 +%r201 = zext i288 %r200 to i320 +%r202 = zext i288 %r193 to i320 +%r203 = add i320 %r201, %r202 +%r204 = lshr i320 %r203, 32 +%r205 = trunc i320 %r204 to i288 +%r206 = lshr i288 %r205, 256 +%r207 = trunc i288 %r206 to i32 +%r208 = trunc i288 %r205 to i256 +%r209 = trunc i256 %r208 to i32 +%r210 = mul i32 %r209, %r6 +%r211 = call i288 @mulPv256x32(i32* %r3, i32 %r210) +%r212 = zext i32 %r207 to i288 +%r213 = shl i288 %r212, 256 +%r214 = add i288 %r211, %r213 +%r216 = getelementptr i32, i32* %r2, i32 13 +%r217 = load i32, i32* %r216 +%r218 = zext i32 %r217 to i288 +%r219 = shl i288 %r218, 256 +%r220 = zext i256 %r208 to i288 +%r221 = or i288 %r219, %r220 +%r222 = zext i288 %r221 to i320 +%r223 = zext i288 %r214 to i320 +%r224 = add i320 %r222, %r223 +%r225 = lshr i320 %r224, 32 +%r226 = trunc i320 %r225 to i288 +%r227 = lshr i288 %r226, 256 +%r228 = trunc i288 %r227 to i32 +%r229 = trunc i288 %r226 to i256 +%r230 = trunc i256 %r229 to i32 +%r231 = mul i32 %r230, %r6 +%r232 = call i288 @mulPv256x32(i32* %r3, i32 %r231) +%r233 = zext i32 %r228 to i288 +%r234 = shl i288 %r233, 256 +%r235 = add i288 %r232, %r234 +%r237 = getelementptr i32, i32* %r2, i32 14 +%r238 = load i32, i32* %r237 +%r239 = zext i32 %r238 to i288 +%r240 = shl i288 %r239, 256 +%r241 = zext i256 %r229 to i288 +%r242 = or i288 %r240, %r241 +%r243 = zext i288 %r242 to i320 +%r244 = zext i288 %r235 to i320 +%r245 = add i320 %r243, %r244 +%r246 = lshr i320 %r245, 32 +%r247 = trunc i320 %r246 to i288 +%r248 = lshr i288 %r247, 256 +%r249 = trunc i288 %r248 to i32 +%r250 = trunc i288 %r247 to i256 +%r251 = trunc i256 %r250 to i32 +%r252 = mul i32 %r251, %r6 +%r253 = call i288 @mulPv256x32(i32* %r3, i32 %r252) +%r254 = zext i32 %r249 to i288 +%r255 = shl i288 %r254, 256 +%r256 = add i288 %r253, %r255 +%r258 = getelementptr i32, i32* %r2, i32 15 +%r259 = load i32, i32* %r258 +%r260 = zext i32 %r259 to i288 +%r261 = shl i288 %r260, 256 +%r262 = zext i256 %r250 to i288 +%r263 = or i288 %r261, %r262 +%r264 = zext i288 %r263 to i320 +%r265 = zext i288 %r256 to i320 +%r266 = add i320 %r264, %r265 +%r267 = lshr i320 %r266, 32 +%r268 = trunc i320 %r267 to i288 +%r269 = lshr i288 %r268, 256 +%r270 = trunc i288 %r269 to i32 +%r271 = trunc i288 %r268 to i256 +%r272 = zext i256 %r56 to i288 +%r273 = zext i256 %r271 to i288 +%r274 = sub i288 %r273, %r272 +%r275 = lshr i288 %r274, 256 +%r276 = trunc i288 %r275 to i1 +%r277 = select i1 %r276, i288 %r273, i288 %r274 +%r278 = trunc i288 %r277 to i256 +%r280 = getelementptr i32, i32* %r1, i32 0 +%r281 = trunc i256 %r278 to i32 +store i32 %r281, i32* %r280 +%r282 = lshr i256 %r278, 32 +%r284 = getelementptr i32, i32* %r1, i32 1 +%r285 = trunc i256 %r282 to i32 +store i32 %r285, i32* %r284 +%r286 = lshr i256 %r282, 32 +%r288 = getelementptr i32, i32* %r1, i32 2 +%r289 = trunc i256 %r286 to i32 +store i32 %r289, i32* %r288 +%r290 = lshr i256 %r286, 32 +%r292 = getelementptr i32, i32* %r1, i32 3 +%r293 = trunc i256 %r290 to i32 +store i32 %r293, i32* %r292 +%r294 = lshr i256 %r290, 32 +%r296 = getelementptr i32, i32* %r1, i32 4 +%r297 = trunc i256 %r294 to i32 +store i32 %r297, i32* %r296 +%r298 = lshr i256 %r294, 32 +%r300 = getelementptr i32, i32* %r1, i32 5 +%r301 = trunc i256 %r298 to i32 +store i32 %r301, i32* %r300 +%r302 = lshr i256 %r298, 32 +%r304 = getelementptr i32, i32* %r1, i32 6 +%r305 = trunc i256 %r302 to i32 +store i32 %r305, i32* %r304 +%r306 = lshr i256 %r302, 32 +%r308 = getelementptr i32, i32* %r1, i32 7 +%r309 = trunc i256 %r306 to i32 +store i32 %r309, i32* %r308 +ret void +} +define void @mcl_fp_montRedNF8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r49 = load i32, i32* %r4 -%r50 = zext i32 %r49 to i64 -%r52 = getelementptr i32, i32* %r4, i32 1 +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = zext i224 %r49 to i256 +%r52 = getelementptr i32, i32* %r3, i32 7 %r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i64 -%r55 = shl i64 %r54, 32 -%r56 = or i64 %r50, %r55 -%r57 = zext i64 %r56 to i96 -%r59 = getelementptr i32, i32* %r4, i32 2 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i96 -%r62 = shl i96 %r61, 64 -%r63 = or i96 %r57, %r62 -%r64 = zext i96 %r63 to i128 -%r66 = getelementptr i32, i32* %r4, i32 3 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i128 -%r69 = shl i128 %r68, 96 -%r70 = or i128 %r64, %r69 -%r71 = zext i128 %r70 to i160 -%r73 = getelementptr i32, i32* %r4, i32 4 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i160 -%r76 = shl i160 %r75, 128 -%r77 = or i160 %r71, %r76 -%r78 = zext i160 %r77 to i192 -%r80 = getelementptr i32, i32* %r4, i32 5 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i192 -%r83 = shl i192 %r82, 160 -%r84 = or i192 %r78, %r83 -%r85 = zext i192 %r84 to i224 -%r87 = getelementptr i32, i32* %r4, i32 6 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i224 -%r90 = shl i224 %r89, 192 -%r91 = or i224 %r85, %r90 -%r92 = zext i224 %r91 to i256 -%r93 = add i256 %r48, %r92 -%r94 = trunc i256 %r93 to i224 -%r95 = trunc i224 %r94 to i32 -%r97 = getelementptr i32, i32* %r2, i32 0 -store i32 %r95, i32* %r97 -%r98 = lshr i224 %r94, 32 -%r99 = trunc i224 %r98 to i32 -%r101 = getelementptr i32, i32* %r2, i32 1 -store i32 %r99, i32* %r101 -%r102 = lshr i224 %r98, 32 -%r103 = trunc i224 %r102 to i32 -%r105 = getelementptr i32, i32* %r2, i32 2 -store i32 %r103, i32* %r105 -%r106 = lshr i224 %r102, 32 -%r107 = trunc i224 %r106 to i32 -%r109 = getelementptr i32, i32* %r2, i32 3 -store i32 %r107, i32* %r109 -%r110 = lshr i224 %r106, 32 -%r111 = trunc i224 %r110 to i32 -%r113 = getelementptr i32, i32* %r2, i32 4 -store i32 %r111, i32* %r113 -%r114 = lshr i224 %r110, 32 -%r115 = trunc i224 %r114 to i32 -%r117 = getelementptr i32, i32* %r2, i32 5 -store i32 %r115, i32* %r117 -%r118 = lshr i224 %r114, 32 -%r119 = trunc i224 %r118 to i32 -%r121 = getelementptr i32, i32* %r2, i32 6 -store i32 %r119, i32* %r121 -%r122 = lshr i256 %r93, 224 -%r123 = trunc i256 %r122 to i32 -ret i32 %r123 +%r54 = zext i32 %r53 to i256 +%r55 = shl i256 %r54, 224 +%r56 = or i256 %r50, %r55 +%r57 = load i32, i32* %r2 +%r58 = zext i32 %r57 to i64 +%r60 = getelementptr i32, i32* %r2, i32 1 +%r61 = load i32, i32* %r60 +%r62 = zext i32 %r61 to i64 +%r63 = shl i64 %r62, 32 +%r64 = or i64 %r58, %r63 +%r65 = zext i64 %r64 to i96 +%r67 = getelementptr i32, i32* %r2, i32 2 +%r68 = load i32, i32* %r67 +%r69 = zext i32 %r68 to i96 +%r70 = shl i96 %r69, 64 +%r71 = or i96 %r65, %r70 +%r72 = zext i96 %r71 to i128 +%r74 = getelementptr i32, i32* %r2, i32 3 +%r75 = load i32, i32* %r74 +%r76 = zext i32 %r75 to i128 +%r77 = shl i128 %r76, 96 +%r78 = or i128 %r72, %r77 +%r79 = zext i128 %r78 to i160 +%r81 = getelementptr i32, i32* %r2, i32 4 +%r82 = load i32, i32* %r81 +%r83 = zext i32 %r82 to i160 +%r84 = shl i160 %r83, 128 +%r85 = or i160 %r79, %r84 +%r86 = zext i160 %r85 to i192 +%r88 = getelementptr i32, i32* %r2, i32 5 +%r89 = load i32, i32* %r88 +%r90 = zext i32 %r89 to i192 +%r91 = shl i192 %r90, 160 +%r92 = or i192 %r86, %r91 +%r93 = zext i192 %r92 to i224 +%r95 = getelementptr i32, i32* %r2, i32 6 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i224 +%r98 = shl i224 %r97, 192 +%r99 = or i224 %r93, %r98 +%r100 = zext i224 %r99 to i256 +%r102 = getelementptr i32, i32* %r2, i32 7 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i256 +%r105 = shl i256 %r104, 224 +%r106 = or i256 %r100, %r105 +%r107 = trunc i256 %r106 to i32 +%r108 = mul i32 %r107, %r6 +%r109 = call i288 @mulPv256x32(i32* %r3, i32 %r108) +%r111 = getelementptr i32, i32* %r2, i32 8 +%r112 = load i32, i32* %r111 +%r113 = zext i32 %r112 to i288 +%r114 = shl i288 %r113, 256 +%r115 = zext i256 %r106 to i288 +%r116 = or i288 %r114, %r115 +%r117 = zext i288 %r116 to i320 +%r118 = zext i288 %r109 to i320 +%r119 = add i320 %r117, %r118 +%r120 = lshr i320 %r119, 32 +%r121 = trunc i320 %r120 to i288 +%r122 = lshr i288 %r121, 256 +%r123 = trunc i288 %r122 to i32 +%r124 = trunc i288 %r121 to i256 +%r125 = trunc i256 %r124 to i32 +%r126 = mul i32 %r125, %r6 +%r127 = call i288 @mulPv256x32(i32* %r3, i32 %r126) +%r128 = zext i32 %r123 to i288 +%r129 = shl i288 %r128, 256 +%r130 = add i288 %r127, %r129 +%r132 = getelementptr i32, i32* %r2, i32 9 +%r133 = load i32, i32* %r132 +%r134 = zext i32 %r133 to i288 +%r135 = shl i288 %r134, 256 +%r136 = zext i256 %r124 to i288 +%r137 = or i288 %r135, %r136 +%r138 = zext i288 %r137 to i320 +%r139 = zext i288 %r130 to i320 +%r140 = add i320 %r138, %r139 +%r141 = lshr i320 %r140, 32 +%r142 = trunc i320 %r141 to i288 +%r143 = lshr i288 %r142, 256 +%r144 = trunc i288 %r143 to i32 +%r145 = trunc i288 %r142 to i256 +%r146 = trunc i256 %r145 to i32 +%r147 = mul i32 %r146, %r6 +%r148 = call i288 @mulPv256x32(i32* %r3, i32 %r147) +%r149 = zext i32 %r144 to i288 +%r150 = shl i288 %r149, 256 +%r151 = add i288 %r148, %r150 +%r153 = getelementptr i32, i32* %r2, i32 10 +%r154 = load i32, i32* %r153 +%r155 = zext i32 %r154 to i288 +%r156 = shl i288 %r155, 256 +%r157 = zext i256 %r145 to i288 +%r158 = or i288 %r156, %r157 +%r159 = zext i288 %r158 to i320 +%r160 = zext i288 %r151 to i320 +%r161 = add i320 %r159, %r160 +%r162 = lshr i320 %r161, 32 +%r163 = trunc i320 %r162 to i288 +%r164 = lshr i288 %r163, 256 +%r165 = trunc i288 %r164 to i32 +%r166 = trunc i288 %r163 to i256 +%r167 = trunc i256 %r166 to i32 +%r168 = mul i32 %r167, %r6 +%r169 = call i288 @mulPv256x32(i32* %r3, i32 %r168) +%r170 = zext i32 %r165 to i288 +%r171 = shl i288 %r170, 256 +%r172 = add i288 %r169, %r171 +%r174 = getelementptr i32, i32* %r2, i32 11 +%r175 = load i32, i32* %r174 +%r176 = zext i32 %r175 to i288 +%r177 = shl i288 %r176, 256 +%r178 = zext i256 %r166 to i288 +%r179 = or i288 %r177, %r178 +%r180 = zext i288 %r179 to i320 +%r181 = zext i288 %r172 to i320 +%r182 = add i320 %r180, %r181 +%r183 = lshr i320 %r182, 32 +%r184 = trunc i320 %r183 to i288 +%r185 = lshr i288 %r184, 256 +%r186 = trunc i288 %r185 to i32 +%r187 = trunc i288 %r184 to i256 +%r188 = trunc i256 %r187 to i32 +%r189 = mul i32 %r188, %r6 +%r190 = call i288 @mulPv256x32(i32* %r3, i32 %r189) +%r191 = zext i32 %r186 to i288 +%r192 = shl i288 %r191, 256 +%r193 = add i288 %r190, %r192 +%r195 = getelementptr i32, i32* %r2, i32 12 +%r196 = load i32, i32* %r195 +%r197 = zext i32 %r196 to i288 +%r198 = shl i288 %r197, 256 +%r199 = zext i256 %r187 to i288 +%r200 = or i288 %r198, %r199 +%r201 = zext i288 %r200 to i320 +%r202 = zext i288 %r193 to i320 +%r203 = add i320 %r201, %r202 +%r204 = lshr i320 %r203, 32 +%r205 = trunc i320 %r204 to i288 +%r206 = lshr i288 %r205, 256 +%r207 = trunc i288 %r206 to i32 +%r208 = trunc i288 %r205 to i256 +%r209 = trunc i256 %r208 to i32 +%r210 = mul i32 %r209, %r6 +%r211 = call i288 @mulPv256x32(i32* %r3, i32 %r210) +%r212 = zext i32 %r207 to i288 +%r213 = shl i288 %r212, 256 +%r214 = add i288 %r211, %r213 +%r216 = getelementptr i32, i32* %r2, i32 13 +%r217 = load i32, i32* %r216 +%r218 = zext i32 %r217 to i288 +%r219 = shl i288 %r218, 256 +%r220 = zext i256 %r208 to i288 +%r221 = or i288 %r219, %r220 +%r222 = zext i288 %r221 to i320 +%r223 = zext i288 %r214 to i320 +%r224 = add i320 %r222, %r223 +%r225 = lshr i320 %r224, 32 +%r226 = trunc i320 %r225 to i288 +%r227 = lshr i288 %r226, 256 +%r228 = trunc i288 %r227 to i32 +%r229 = trunc i288 %r226 to i256 +%r230 = trunc i256 %r229 to i32 +%r231 = mul i32 %r230, %r6 +%r232 = call i288 @mulPv256x32(i32* %r3, i32 %r231) +%r233 = zext i32 %r228 to i288 +%r234 = shl i288 %r233, 256 +%r235 = add i288 %r232, %r234 +%r237 = getelementptr i32, i32* %r2, i32 14 +%r238 = load i32, i32* %r237 +%r239 = zext i32 %r238 to i288 +%r240 = shl i288 %r239, 256 +%r241 = zext i256 %r229 to i288 +%r242 = or i288 %r240, %r241 +%r243 = zext i288 %r242 to i320 +%r244 = zext i288 %r235 to i320 +%r245 = add i320 %r243, %r244 +%r246 = lshr i320 %r245, 32 +%r247 = trunc i320 %r246 to i288 +%r248 = lshr i288 %r247, 256 +%r249 = trunc i288 %r248 to i32 +%r250 = trunc i288 %r247 to i256 +%r251 = trunc i256 %r250 to i32 +%r252 = mul i32 %r251, %r6 +%r253 = call i288 @mulPv256x32(i32* %r3, i32 %r252) +%r254 = zext i32 %r249 to i288 +%r255 = shl i288 %r254, 256 +%r256 = add i288 %r253, %r255 +%r258 = getelementptr i32, i32* %r2, i32 15 +%r259 = load i32, i32* %r258 +%r260 = zext i32 %r259 to i288 +%r261 = shl i288 %r260, 256 +%r262 = zext i256 %r250 to i288 +%r263 = or i288 %r261, %r262 +%r264 = zext i288 %r263 to i320 +%r265 = zext i288 %r256 to i320 +%r266 = add i320 %r264, %r265 +%r267 = lshr i320 %r266, 32 +%r268 = trunc i320 %r267 to i288 +%r269 = lshr i288 %r268, 256 +%r270 = trunc i288 %r269 to i32 +%r271 = trunc i288 %r268 to i256 +%r272 = sub i256 %r271, %r56 +%r273 = lshr i256 %r272, 255 +%r274 = trunc i256 %r273 to i1 +%r275 = select i1 %r274, i256 %r271, i256 %r272 +%r277 = getelementptr i32, i32* %r1, i32 0 +%r278 = trunc i256 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i256 %r275, 32 +%r281 = getelementptr i32, i32* %r1, i32 1 +%r282 = trunc i256 %r279 to i32 +store i32 %r282, i32* %r281 +%r283 = lshr i256 %r279, 32 +%r285 = getelementptr i32, i32* %r1, i32 2 +%r286 = trunc i256 %r283 to i32 +store i32 %r286, i32* %r285 +%r287 = lshr i256 %r283, 32 +%r289 = getelementptr i32, i32* %r1, i32 3 +%r290 = trunc i256 %r287 to i32 +store i32 %r290, i32* %r289 +%r291 = lshr i256 %r287, 32 +%r293 = getelementptr i32, i32* %r1, i32 4 +%r294 = trunc i256 %r291 to i32 +store i32 %r294, i32* %r293 +%r295 = lshr i256 %r291, 32 +%r297 = getelementptr i32, i32* %r1, i32 5 +%r298 = trunc i256 %r295 to i32 +store i32 %r298, i32* %r297 +%r299 = lshr i256 %r295, 32 +%r301 = getelementptr i32, i32* %r1, i32 6 +%r302 = trunc i256 %r299 to i32 +store i32 %r302, i32* %r301 +%r303 = lshr i256 %r299, 32 +%r305 = getelementptr i32, i32* %r1, i32 7 +%r306 = trunc i256 %r303 to i32 +store i32 %r306, i32* %r305 +ret void } -define i32 @mcl_fp_subPre7L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_addPre8L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 @@ -8196,79 +6521,222 @@ define i32 @mcl_fp_subPre7L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 %r48 = zext i224 %r47 to i256 -%r49 = load i32, i32* %r4 -%r50 = zext i32 %r49 to i64 -%r52 = getelementptr i32, i32* %r4, i32 1 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i64 -%r55 = shl i64 %r54, 32 -%r56 = or i64 %r50, %r55 -%r57 = zext i64 %r56 to i96 -%r59 = getelementptr i32, i32* %r4, i32 2 +%r50 = getelementptr i32, i32* %r3, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r56 = load i32, i32* %r4 +%r57 = zext i32 %r56 to i64 +%r59 = getelementptr i32, i32* %r4, i32 1 %r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i96 -%r62 = shl i96 %r61, 64 -%r63 = or i96 %r57, %r62 -%r64 = zext i96 %r63 to i128 -%r66 = getelementptr i32, i32* %r4, i32 3 +%r61 = zext i32 %r60 to i64 +%r62 = shl i64 %r61, 32 +%r63 = or i64 %r57, %r62 +%r64 = zext i64 %r63 to i96 +%r66 = getelementptr i32, i32* %r4, i32 2 %r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i128 -%r69 = shl i128 %r68, 96 -%r70 = or i128 %r64, %r69 -%r71 = zext i128 %r70 to i160 -%r73 = getelementptr i32, i32* %r4, i32 4 +%r68 = zext i32 %r67 to i96 +%r69 = shl i96 %r68, 64 +%r70 = or i96 %r64, %r69 +%r71 = zext i96 %r70 to i128 +%r73 = getelementptr i32, i32* %r4, i32 3 %r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i160 -%r76 = shl i160 %r75, 128 -%r77 = or i160 %r71, %r76 -%r78 = zext i160 %r77 to i192 -%r80 = getelementptr i32, i32* %r4, i32 5 +%r75 = zext i32 %r74 to i128 +%r76 = shl i128 %r75, 96 +%r77 = or i128 %r71, %r76 +%r78 = zext i128 %r77 to i160 +%r80 = getelementptr i32, i32* %r4, i32 4 %r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i192 -%r83 = shl i192 %r82, 160 -%r84 = or i192 %r78, %r83 -%r85 = zext i192 %r84 to i224 -%r87 = getelementptr i32, i32* %r4, i32 6 +%r82 = zext i32 %r81 to i160 +%r83 = shl i160 %r82, 128 +%r84 = or i160 %r78, %r83 +%r85 = zext i160 %r84 to i192 +%r87 = getelementptr i32, i32* %r4, i32 5 %r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i224 -%r90 = shl i224 %r89, 192 -%r91 = or i224 %r85, %r90 -%r92 = zext i224 %r91 to i256 -%r93 = sub i256 %r48, %r92 -%r94 = trunc i256 %r93 to i224 -%r95 = trunc i224 %r94 to i32 -%r97 = getelementptr i32, i32* %r2, i32 0 -store i32 %r95, i32* %r97 -%r98 = lshr i224 %r94, 32 -%r99 = trunc i224 %r98 to i32 -%r101 = getelementptr i32, i32* %r2, i32 1 -store i32 %r99, i32* %r101 -%r102 = lshr i224 %r98, 32 -%r103 = trunc i224 %r102 to i32 -%r105 = getelementptr i32, i32* %r2, i32 2 -store i32 %r103, i32* %r105 -%r106 = lshr i224 %r102, 32 -%r107 = trunc i224 %r106 to i32 -%r109 = getelementptr i32, i32* %r2, i32 3 -store i32 %r107, i32* %r109 -%r110 = lshr i224 %r106, 32 -%r111 = trunc i224 %r110 to i32 -%r113 = getelementptr i32, i32* %r2, i32 4 -store i32 %r111, i32* %r113 -%r114 = lshr i224 %r110, 32 -%r115 = trunc i224 %r114 to i32 -%r117 = getelementptr i32, i32* %r2, i32 5 -store i32 %r115, i32* %r117 -%r118 = lshr i224 %r114, 32 -%r119 = trunc i224 %r118 to i32 -%r121 = getelementptr i32, i32* %r2, i32 6 -store i32 %r119, i32* %r121 -%r122 = lshr i256 %r93, 224 -%r123 = trunc i256 %r122 to i32 -%r125 = and i32 %r123, 1 -ret i32 %r125 +%r89 = zext i32 %r88 to i192 +%r90 = shl i192 %r89, 160 +%r91 = or i192 %r85, %r90 +%r92 = zext i192 %r91 to i224 +%r94 = getelementptr i32, i32* %r4, i32 6 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i224 +%r97 = shl i224 %r96, 192 +%r98 = or i224 %r92, %r97 +%r99 = zext i224 %r98 to i256 +%r101 = getelementptr i32, i32* %r4, i32 7 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i256 +%r104 = shl i256 %r103, 224 +%r105 = or i256 %r99, %r104 +%r106 = zext i256 %r105 to i288 +%r107 = add i288 %r55, %r106 +%r108 = trunc i288 %r107 to i256 +%r110 = getelementptr i32, i32* %r2, i32 0 +%r111 = trunc i256 %r108 to i32 +store i32 %r111, i32* %r110 +%r112 = lshr i256 %r108, 32 +%r114 = getelementptr i32, i32* %r2, i32 1 +%r115 = trunc i256 %r112 to i32 +store i32 %r115, i32* %r114 +%r116 = lshr i256 %r112, 32 +%r118 = getelementptr i32, i32* %r2, i32 2 +%r119 = trunc i256 %r116 to i32 +store i32 %r119, i32* %r118 +%r120 = lshr i256 %r116, 32 +%r122 = getelementptr i32, i32* %r2, i32 3 +%r123 = trunc i256 %r120 to i32 +store i32 %r123, i32* %r122 +%r124 = lshr i256 %r120, 32 +%r126 = getelementptr i32, i32* %r2, i32 4 +%r127 = trunc i256 %r124 to i32 +store i32 %r127, i32* %r126 +%r128 = lshr i256 %r124, 32 +%r130 = getelementptr i32, i32* %r2, i32 5 +%r131 = trunc i256 %r128 to i32 +store i32 %r131, i32* %r130 +%r132 = lshr i256 %r128, 32 +%r134 = getelementptr i32, i32* %r2, i32 6 +%r135 = trunc i256 %r132 to i32 +store i32 %r135, i32* %r134 +%r136 = lshr i256 %r132, 32 +%r138 = getelementptr i32, i32* %r2, i32 7 +%r139 = trunc i256 %r136 to i32 +store i32 %r139, i32* %r138 +%r140 = lshr i288 %r107, 256 +%r141 = trunc i288 %r140 to i32 +ret i32 %r141 } -define void @mcl_fp_shr1_7L(i32* noalias %r1, i32* noalias %r2) +define i32 @mcl_fp_subPre8L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r3 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r3, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r3, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r3, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r3, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r3, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r3, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r56 = load i32, i32* %r4 +%r57 = zext i32 %r56 to i64 +%r59 = getelementptr i32, i32* %r4, i32 1 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i64 +%r62 = shl i64 %r61, 32 +%r63 = or i64 %r57, %r62 +%r64 = zext i64 %r63 to i96 +%r66 = getelementptr i32, i32* %r4, i32 2 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i96 +%r69 = shl i96 %r68, 64 +%r70 = or i96 %r64, %r69 +%r71 = zext i96 %r70 to i128 +%r73 = getelementptr i32, i32* %r4, i32 3 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i128 +%r76 = shl i128 %r75, 96 +%r77 = or i128 %r71, %r76 +%r78 = zext i128 %r77 to i160 +%r80 = getelementptr i32, i32* %r4, i32 4 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i160 +%r83 = shl i160 %r82, 128 +%r84 = or i160 %r78, %r83 +%r85 = zext i160 %r84 to i192 +%r87 = getelementptr i32, i32* %r4, i32 5 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i192 +%r90 = shl i192 %r89, 160 +%r91 = or i192 %r85, %r90 +%r92 = zext i192 %r91 to i224 +%r94 = getelementptr i32, i32* %r4, i32 6 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i224 +%r97 = shl i224 %r96, 192 +%r98 = or i224 %r92, %r97 +%r99 = zext i224 %r98 to i256 +%r101 = getelementptr i32, i32* %r4, i32 7 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i256 +%r104 = shl i256 %r103, 224 +%r105 = or i256 %r99, %r104 +%r106 = zext i256 %r105 to i288 +%r107 = sub i288 %r55, %r106 +%r108 = trunc i288 %r107 to i256 +%r110 = getelementptr i32, i32* %r2, i32 0 +%r111 = trunc i256 %r108 to i32 +store i32 %r111, i32* %r110 +%r112 = lshr i256 %r108, 32 +%r114 = getelementptr i32, i32* %r2, i32 1 +%r115 = trunc i256 %r112 to i32 +store i32 %r115, i32* %r114 +%r116 = lshr i256 %r112, 32 +%r118 = getelementptr i32, i32* %r2, i32 2 +%r119 = trunc i256 %r116 to i32 +store i32 %r119, i32* %r118 +%r120 = lshr i256 %r116, 32 +%r122 = getelementptr i32, i32* %r2, i32 3 +%r123 = trunc i256 %r120 to i32 +store i32 %r123, i32* %r122 +%r124 = lshr i256 %r120, 32 +%r126 = getelementptr i32, i32* %r2, i32 4 +%r127 = trunc i256 %r124 to i32 +store i32 %r127, i32* %r126 +%r128 = lshr i256 %r124, 32 +%r130 = getelementptr i32, i32* %r2, i32 5 +%r131 = trunc i256 %r128 to i32 +store i32 %r131, i32* %r130 +%r132 = lshr i256 %r128, 32 +%r134 = getelementptr i32, i32* %r2, i32 6 +%r135 = trunc i256 %r132 to i32 +store i32 %r135, i32* %r134 +%r136 = lshr i256 %r132, 32 +%r138 = getelementptr i32, i32* %r2, i32 7 +%r139 = trunc i256 %r136 to i32 +store i32 %r139, i32* %r138 +%r141 = lshr i288 %r107, 256 +%r142 = trunc i288 %r141 to i32 +%r143 = and i32 %r142, 1 +ret i32 %r143 +} +define void @mcl_fp_shr1_8L(i32* noalias %r1, i32* noalias %r2) { %r3 = load i32, i32* %r2 %r4 = zext i32 %r3 to i64 @@ -8307,37 +6775,47 @@ define void @mcl_fp_shr1_7L(i32* noalias %r1, i32* noalias %r2) %r43 = zext i32 %r42 to i224 %r44 = shl i224 %r43, 192 %r45 = or i224 %r39, %r44 -%r46 = lshr i224 %r45, 1 -%r47 = trunc i224 %r46 to i32 -%r49 = getelementptr i32, i32* %r1, i32 0 -store i32 %r47, i32* %r49 -%r50 = lshr i224 %r46, 32 -%r51 = trunc i224 %r50 to i32 -%r53 = getelementptr i32, i32* %r1, i32 1 -store i32 %r51, i32* %r53 -%r54 = lshr i224 %r50, 32 -%r55 = trunc i224 %r54 to i32 -%r57 = getelementptr i32, i32* %r1, i32 2 -store i32 %r55, i32* %r57 -%r58 = lshr i224 %r54, 32 -%r59 = trunc i224 %r58 to i32 -%r61 = getelementptr i32, i32* %r1, i32 3 -store i32 %r59, i32* %r61 -%r62 = lshr i224 %r58, 32 -%r63 = trunc i224 %r62 to i32 -%r65 = getelementptr i32, i32* %r1, i32 4 -store i32 %r63, i32* %r65 -%r66 = lshr i224 %r62, 32 -%r67 = trunc i224 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 5 -store i32 %r67, i32* %r69 -%r70 = lshr i224 %r66, 32 -%r71 = trunc i224 %r70 to i32 -%r73 = getelementptr i32, i32* %r1, i32 6 -store i32 %r71, i32* %r73 +%r46 = zext i224 %r45 to i256 +%r48 = getelementptr i32, i32* %r2, i32 7 +%r49 = load i32, i32* %r48 +%r50 = zext i32 %r49 to i256 +%r51 = shl i256 %r50, 224 +%r52 = or i256 %r46, %r51 +%r53 = lshr i256 %r52, 1 +%r55 = getelementptr i32, i32* %r1, i32 0 +%r56 = trunc i256 %r53 to i32 +store i32 %r56, i32* %r55 +%r57 = lshr i256 %r53, 32 +%r59 = getelementptr i32, i32* %r1, i32 1 +%r60 = trunc i256 %r57 to i32 +store i32 %r60, i32* %r59 +%r61 = lshr i256 %r57, 32 +%r63 = getelementptr i32, i32* %r1, i32 2 +%r64 = trunc i256 %r61 to i32 +store i32 %r64, i32* %r63 +%r65 = lshr i256 %r61, 32 +%r67 = getelementptr i32, i32* %r1, i32 3 +%r68 = trunc i256 %r65 to i32 +store i32 %r68, i32* %r67 +%r69 = lshr i256 %r65, 32 +%r71 = getelementptr i32, i32* %r1, i32 4 +%r72 = trunc i256 %r69 to i32 +store i32 %r72, i32* %r71 +%r73 = lshr i256 %r69, 32 +%r75 = getelementptr i32, i32* %r1, i32 5 +%r76 = trunc i256 %r73 to i32 +store i32 %r76, i32* %r75 +%r77 = lshr i256 %r73, 32 +%r79 = getelementptr i32, i32* %r1, i32 6 +%r80 = trunc i256 %r77 to i32 +store i32 %r80, i32* %r79 +%r81 = lshr i256 %r77, 32 +%r83 = getelementptr i32, i32* %r1, i32 7 +%r84 = trunc i256 %r81 to i32 +store i32 %r84, i32* %r83 ret void } -define void @mcl_fp_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_add8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -8376,150 +6854,176 @@ define void @mcl_fp_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 -%r48 = load i32, i32* %r3 -%r49 = zext i32 %r48 to i64 -%r51 = getelementptr i32, i32* %r3, i32 1 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i64 -%r54 = shl i64 %r53, 32 -%r55 = or i64 %r49, %r54 -%r56 = zext i64 %r55 to i96 -%r58 = getelementptr i32, i32* %r3, i32 2 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = load i32, i32* %r3 +%r56 = zext i32 %r55 to i64 +%r58 = getelementptr i32, i32* %r3, i32 1 %r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i96 -%r61 = shl i96 %r60, 64 -%r62 = or i96 %r56, %r61 -%r63 = zext i96 %r62 to i128 -%r65 = getelementptr i32, i32* %r3, i32 3 +%r60 = zext i32 %r59 to i64 +%r61 = shl i64 %r60, 32 +%r62 = or i64 %r56, %r61 +%r63 = zext i64 %r62 to i96 +%r65 = getelementptr i32, i32* %r3, i32 2 %r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i128 -%r68 = shl i128 %r67, 96 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i160 -%r72 = getelementptr i32, i32* %r3, i32 4 +%r67 = zext i32 %r66 to i96 +%r68 = shl i96 %r67, 64 +%r69 = or i96 %r63, %r68 +%r70 = zext i96 %r69 to i128 +%r72 = getelementptr i32, i32* %r3, i32 3 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i160 -%r75 = shl i160 %r74, 128 -%r76 = or i160 %r70, %r75 -%r77 = zext i160 %r76 to i192 -%r79 = getelementptr i32, i32* %r3, i32 5 +%r74 = zext i32 %r73 to i128 +%r75 = shl i128 %r74, 96 +%r76 = or i128 %r70, %r75 +%r77 = zext i128 %r76 to i160 +%r79 = getelementptr i32, i32* %r3, i32 4 %r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i224 -%r86 = getelementptr i32, i32* %r3, i32 6 +%r81 = zext i32 %r80 to i160 +%r82 = shl i160 %r81, 128 +%r83 = or i160 %r77, %r82 +%r84 = zext i160 %r83 to i192 +%r86 = getelementptr i32, i32* %r3, i32 5 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i224 -%r89 = shl i224 %r88, 192 -%r90 = or i224 %r84, %r89 -%r91 = zext i224 %r47 to i256 -%r92 = zext i224 %r90 to i256 -%r93 = add i256 %r91, %r92 -%r94 = trunc i256 %r93 to i224 -%r95 = trunc i224 %r94 to i32 -%r97 = getelementptr i32, i32* %r1, i32 0 -store i32 %r95, i32* %r97 -%r98 = lshr i224 %r94, 32 -%r99 = trunc i224 %r98 to i32 -%r101 = getelementptr i32, i32* %r1, i32 1 -store i32 %r99, i32* %r101 -%r102 = lshr i224 %r98, 32 -%r103 = trunc i224 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 2 -store i32 %r103, i32* %r105 -%r106 = lshr i224 %r102, 32 -%r107 = trunc i224 %r106 to i32 -%r109 = getelementptr i32, i32* %r1, i32 3 -store i32 %r107, i32* %r109 -%r110 = lshr i224 %r106, 32 -%r111 = trunc i224 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 4 -store i32 %r111, i32* %r113 -%r114 = lshr i224 %r110, 32 -%r115 = trunc i224 %r114 to i32 -%r117 = getelementptr i32, i32* %r1, i32 5 -store i32 %r115, i32* %r117 -%r118 = lshr i224 %r114, 32 -%r119 = trunc i224 %r118 to i32 -%r121 = getelementptr i32, i32* %r1, i32 6 -store i32 %r119, i32* %r121 -%r122 = load i32, i32* %r4 -%r123 = zext i32 %r122 to i64 -%r125 = getelementptr i32, i32* %r4, i32 1 -%r126 = load i32, i32* %r125 -%r127 = zext i32 %r126 to i64 -%r128 = shl i64 %r127, 32 -%r129 = or i64 %r123, %r128 -%r130 = zext i64 %r129 to i96 -%r132 = getelementptr i32, i32* %r4, i32 2 -%r133 = load i32, i32* %r132 -%r134 = zext i32 %r133 to i96 -%r135 = shl i96 %r134, 64 -%r136 = or i96 %r130, %r135 -%r137 = zext i96 %r136 to i128 -%r139 = getelementptr i32, i32* %r4, i32 3 -%r140 = load i32, i32* %r139 -%r141 = zext i32 %r140 to i128 -%r142 = shl i128 %r141, 96 -%r143 = or i128 %r137, %r142 -%r144 = zext i128 %r143 to i160 -%r146 = getelementptr i32, i32* %r4, i32 4 -%r147 = load i32, i32* %r146 -%r148 = zext i32 %r147 to i160 -%r149 = shl i160 %r148, 128 -%r150 = or i160 %r144, %r149 -%r151 = zext i160 %r150 to i192 -%r153 = getelementptr i32, i32* %r4, i32 5 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i192 -%r156 = shl i192 %r155, 160 -%r157 = or i192 %r151, %r156 -%r158 = zext i192 %r157 to i224 -%r160 = getelementptr i32, i32* %r4, i32 6 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i224 -%r163 = shl i224 %r162, 192 -%r164 = or i224 %r158, %r163 -%r165 = zext i224 %r164 to i256 -%r166 = sub i256 %r93, %r165 -%r167 = lshr i256 %r166, 224 -%r168 = trunc i256 %r167 to i1 -br i1%r168, label %carry, label %nocarry +%r88 = zext i32 %r87 to i192 +%r89 = shl i192 %r88, 160 +%r90 = or i192 %r84, %r89 +%r91 = zext i192 %r90 to i224 +%r93 = getelementptr i32, i32* %r3, i32 6 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i224 +%r96 = shl i224 %r95, 192 +%r97 = or i224 %r91, %r96 +%r98 = zext i224 %r97 to i256 +%r100 = getelementptr i32, i32* %r3, i32 7 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i256 +%r103 = shl i256 %r102, 224 +%r104 = or i256 %r98, %r103 +%r105 = zext i256 %r54 to i288 +%r106 = zext i256 %r104 to i288 +%r107 = add i288 %r105, %r106 +%r108 = trunc i288 %r107 to i256 +%r110 = getelementptr i32, i32* %r1, i32 0 +%r111 = trunc i256 %r108 to i32 +store i32 %r111, i32* %r110 +%r112 = lshr i256 %r108, 32 +%r114 = getelementptr i32, i32* %r1, i32 1 +%r115 = trunc i256 %r112 to i32 +store i32 %r115, i32* %r114 +%r116 = lshr i256 %r112, 32 +%r118 = getelementptr i32, i32* %r1, i32 2 +%r119 = trunc i256 %r116 to i32 +store i32 %r119, i32* %r118 +%r120 = lshr i256 %r116, 32 +%r122 = getelementptr i32, i32* %r1, i32 3 +%r123 = trunc i256 %r120 to i32 +store i32 %r123, i32* %r122 +%r124 = lshr i256 %r120, 32 +%r126 = getelementptr i32, i32* %r1, i32 4 +%r127 = trunc i256 %r124 to i32 +store i32 %r127, i32* %r126 +%r128 = lshr i256 %r124, 32 +%r130 = getelementptr i32, i32* %r1, i32 5 +%r131 = trunc i256 %r128 to i32 +store i32 %r131, i32* %r130 +%r132 = lshr i256 %r128, 32 +%r134 = getelementptr i32, i32* %r1, i32 6 +%r135 = trunc i256 %r132 to i32 +store i32 %r135, i32* %r134 +%r136 = lshr i256 %r132, 32 +%r138 = getelementptr i32, i32* %r1, i32 7 +%r139 = trunc i256 %r136 to i32 +store i32 %r139, i32* %r138 +%r140 = load i32, i32* %r4 +%r141 = zext i32 %r140 to i64 +%r143 = getelementptr i32, i32* %r4, i32 1 +%r144 = load i32, i32* %r143 +%r145 = zext i32 %r144 to i64 +%r146 = shl i64 %r145, 32 +%r147 = or i64 %r141, %r146 +%r148 = zext i64 %r147 to i96 +%r150 = getelementptr i32, i32* %r4, i32 2 +%r151 = load i32, i32* %r150 +%r152 = zext i32 %r151 to i96 +%r153 = shl i96 %r152, 64 +%r154 = or i96 %r148, %r153 +%r155 = zext i96 %r154 to i128 +%r157 = getelementptr i32, i32* %r4, i32 3 +%r158 = load i32, i32* %r157 +%r159 = zext i32 %r158 to i128 +%r160 = shl i128 %r159, 96 +%r161 = or i128 %r155, %r160 +%r162 = zext i128 %r161 to i160 +%r164 = getelementptr i32, i32* %r4, i32 4 +%r165 = load i32, i32* %r164 +%r166 = zext i32 %r165 to i160 +%r167 = shl i160 %r166, 128 +%r168 = or i160 %r162, %r167 +%r169 = zext i160 %r168 to i192 +%r171 = getelementptr i32, i32* %r4, i32 5 +%r172 = load i32, i32* %r171 +%r173 = zext i32 %r172 to i192 +%r174 = shl i192 %r173, 160 +%r175 = or i192 %r169, %r174 +%r176 = zext i192 %r175 to i224 +%r178 = getelementptr i32, i32* %r4, i32 6 +%r179 = load i32, i32* %r178 +%r180 = zext i32 %r179 to i224 +%r181 = shl i224 %r180, 192 +%r182 = or i224 %r176, %r181 +%r183 = zext i224 %r182 to i256 +%r185 = getelementptr i32, i32* %r4, i32 7 +%r186 = load i32, i32* %r185 +%r187 = zext i32 %r186 to i256 +%r188 = shl i256 %r187, 224 +%r189 = or i256 %r183, %r188 +%r190 = zext i256 %r189 to i288 +%r191 = sub i288 %r107, %r190 +%r192 = lshr i288 %r191, 256 +%r193 = trunc i288 %r192 to i1 +br i1%r193, label %carry, label %nocarry nocarry: -%r169 = trunc i256 %r166 to i224 -%r170 = trunc i224 %r169 to i32 -%r172 = getelementptr i32, i32* %r1, i32 0 -store i32 %r170, i32* %r172 -%r173 = lshr i224 %r169, 32 -%r174 = trunc i224 %r173 to i32 -%r176 = getelementptr i32, i32* %r1, i32 1 -store i32 %r174, i32* %r176 -%r177 = lshr i224 %r173, 32 -%r178 = trunc i224 %r177 to i32 -%r180 = getelementptr i32, i32* %r1, i32 2 -store i32 %r178, i32* %r180 -%r181 = lshr i224 %r177, 32 -%r182 = trunc i224 %r181 to i32 -%r184 = getelementptr i32, i32* %r1, i32 3 -store i32 %r182, i32* %r184 -%r185 = lshr i224 %r181, 32 -%r186 = trunc i224 %r185 to i32 -%r188 = getelementptr i32, i32* %r1, i32 4 -store i32 %r186, i32* %r188 -%r189 = lshr i224 %r185, 32 -%r190 = trunc i224 %r189 to i32 -%r192 = getelementptr i32, i32* %r1, i32 5 -store i32 %r190, i32* %r192 -%r193 = lshr i224 %r189, 32 -%r194 = trunc i224 %r193 to i32 -%r196 = getelementptr i32, i32* %r1, i32 6 -store i32 %r194, i32* %r196 +%r194 = trunc i288 %r191 to i256 +%r196 = getelementptr i32, i32* %r1, i32 0 +%r197 = trunc i256 %r194 to i32 +store i32 %r197, i32* %r196 +%r198 = lshr i256 %r194, 32 +%r200 = getelementptr i32, i32* %r1, i32 1 +%r201 = trunc i256 %r198 to i32 +store i32 %r201, i32* %r200 +%r202 = lshr i256 %r198, 32 +%r204 = getelementptr i32, i32* %r1, i32 2 +%r205 = trunc i256 %r202 to i32 +store i32 %r205, i32* %r204 +%r206 = lshr i256 %r202, 32 +%r208 = getelementptr i32, i32* %r1, i32 3 +%r209 = trunc i256 %r206 to i32 +store i32 %r209, i32* %r208 +%r210 = lshr i256 %r206, 32 +%r212 = getelementptr i32, i32* %r1, i32 4 +%r213 = trunc i256 %r210 to i32 +store i32 %r213, i32* %r212 +%r214 = lshr i256 %r210, 32 +%r216 = getelementptr i32, i32* %r1, i32 5 +%r217 = trunc i256 %r214 to i32 +store i32 %r217, i32* %r216 +%r218 = lshr i256 %r214, 32 +%r220 = getelementptr i32, i32* %r1, i32 6 +%r221 = trunc i256 %r218 to i32 +store i32 %r221, i32* %r220 +%r222 = lshr i256 %r218, 32 +%r224 = getelementptr i32, i32* %r1, i32 7 +%r225 = trunc i256 %r222 to i32 +store i32 %r225, i32* %r224 ret void carry: ret void } -define void @mcl_fp_addNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_addNF8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -8558,115 +7062,137 @@ define void @mcl_fp_addNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 -%r48 = load i32, i32* %r3 -%r49 = zext i32 %r48 to i64 -%r51 = getelementptr i32, i32* %r3, i32 1 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i64 -%r54 = shl i64 %r53, 32 -%r55 = or i64 %r49, %r54 -%r56 = zext i64 %r55 to i96 -%r58 = getelementptr i32, i32* %r3, i32 2 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = load i32, i32* %r3 +%r56 = zext i32 %r55 to i64 +%r58 = getelementptr i32, i32* %r3, i32 1 %r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i96 -%r61 = shl i96 %r60, 64 -%r62 = or i96 %r56, %r61 -%r63 = zext i96 %r62 to i128 -%r65 = getelementptr i32, i32* %r3, i32 3 +%r60 = zext i32 %r59 to i64 +%r61 = shl i64 %r60, 32 +%r62 = or i64 %r56, %r61 +%r63 = zext i64 %r62 to i96 +%r65 = getelementptr i32, i32* %r3, i32 2 %r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i128 -%r68 = shl i128 %r67, 96 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i160 -%r72 = getelementptr i32, i32* %r3, i32 4 +%r67 = zext i32 %r66 to i96 +%r68 = shl i96 %r67, 64 +%r69 = or i96 %r63, %r68 +%r70 = zext i96 %r69 to i128 +%r72 = getelementptr i32, i32* %r3, i32 3 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i160 -%r75 = shl i160 %r74, 128 -%r76 = or i160 %r70, %r75 -%r77 = zext i160 %r76 to i192 -%r79 = getelementptr i32, i32* %r3, i32 5 +%r74 = zext i32 %r73 to i128 +%r75 = shl i128 %r74, 96 +%r76 = or i128 %r70, %r75 +%r77 = zext i128 %r76 to i160 +%r79 = getelementptr i32, i32* %r3, i32 4 %r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i224 -%r86 = getelementptr i32, i32* %r3, i32 6 +%r81 = zext i32 %r80 to i160 +%r82 = shl i160 %r81, 128 +%r83 = or i160 %r77, %r82 +%r84 = zext i160 %r83 to i192 +%r86 = getelementptr i32, i32* %r3, i32 5 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i224 -%r89 = shl i224 %r88, 192 -%r90 = or i224 %r84, %r89 -%r91 = add i224 %r47, %r90 -%r92 = load i32, i32* %r4 -%r93 = zext i32 %r92 to i64 -%r95 = getelementptr i32, i32* %r4, i32 1 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i64 -%r98 = shl i64 %r97, 32 -%r99 = or i64 %r93, %r98 -%r100 = zext i64 %r99 to i96 -%r102 = getelementptr i32, i32* %r4, i32 2 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i96 -%r105 = shl i96 %r104, 64 -%r106 = or i96 %r100, %r105 -%r107 = zext i96 %r106 to i128 -%r109 = getelementptr i32, i32* %r4, i32 3 +%r88 = zext i32 %r87 to i192 +%r89 = shl i192 %r88, 160 +%r90 = or i192 %r84, %r89 +%r91 = zext i192 %r90 to i224 +%r93 = getelementptr i32, i32* %r3, i32 6 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i224 +%r96 = shl i224 %r95, 192 +%r97 = or i224 %r91, %r96 +%r98 = zext i224 %r97 to i256 +%r100 = getelementptr i32, i32* %r3, i32 7 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i256 +%r103 = shl i256 %r102, 224 +%r104 = or i256 %r98, %r103 +%r105 = add i256 %r54, %r104 +%r106 = load i32, i32* %r4 +%r107 = zext i32 %r106 to i64 +%r109 = getelementptr i32, i32* %r4, i32 1 %r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i128 -%r112 = shl i128 %r111, 96 -%r113 = or i128 %r107, %r112 -%r114 = zext i128 %r113 to i160 -%r116 = getelementptr i32, i32* %r4, i32 4 +%r111 = zext i32 %r110 to i64 +%r112 = shl i64 %r111, 32 +%r113 = or i64 %r107, %r112 +%r114 = zext i64 %r113 to i96 +%r116 = getelementptr i32, i32* %r4, i32 2 %r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i160 -%r119 = shl i160 %r118, 128 -%r120 = or i160 %r114, %r119 -%r121 = zext i160 %r120 to i192 -%r123 = getelementptr i32, i32* %r4, i32 5 +%r118 = zext i32 %r117 to i96 +%r119 = shl i96 %r118, 64 +%r120 = or i96 %r114, %r119 +%r121 = zext i96 %r120 to i128 +%r123 = getelementptr i32, i32* %r4, i32 3 %r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i192 -%r126 = shl i192 %r125, 160 -%r127 = or i192 %r121, %r126 -%r128 = zext i192 %r127 to i224 -%r130 = getelementptr i32, i32* %r4, i32 6 +%r125 = zext i32 %r124 to i128 +%r126 = shl i128 %r125, 96 +%r127 = or i128 %r121, %r126 +%r128 = zext i128 %r127 to i160 +%r130 = getelementptr i32, i32* %r4, i32 4 %r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i224 -%r133 = shl i224 %r132, 192 -%r134 = or i224 %r128, %r133 -%r135 = sub i224 %r91, %r134 -%r136 = lshr i224 %r135, 223 -%r137 = trunc i224 %r136 to i1 -%r138 = select i1 %r137, i224 %r91, i224 %r135 -%r139 = trunc i224 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 0 -store i32 %r139, i32* %r141 -%r142 = lshr i224 %r138, 32 -%r143 = trunc i224 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 1 -store i32 %r143, i32* %r145 -%r146 = lshr i224 %r142, 32 -%r147 = trunc i224 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 2 -store i32 %r147, i32* %r149 -%r150 = lshr i224 %r146, 32 -%r151 = trunc i224 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 3 -store i32 %r151, i32* %r153 -%r154 = lshr i224 %r150, 32 -%r155 = trunc i224 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 4 -store i32 %r155, i32* %r157 -%r158 = lshr i224 %r154, 32 -%r159 = trunc i224 %r158 to i32 -%r161 = getelementptr i32, i32* %r1, i32 5 -store i32 %r159, i32* %r161 -%r162 = lshr i224 %r158, 32 -%r163 = trunc i224 %r162 to i32 -%r165 = getelementptr i32, i32* %r1, i32 6 -store i32 %r163, i32* %r165 +%r132 = zext i32 %r131 to i160 +%r133 = shl i160 %r132, 128 +%r134 = or i160 %r128, %r133 +%r135 = zext i160 %r134 to i192 +%r137 = getelementptr i32, i32* %r4, i32 5 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i192 +%r140 = shl i192 %r139, 160 +%r141 = or i192 %r135, %r140 +%r142 = zext i192 %r141 to i224 +%r144 = getelementptr i32, i32* %r4, i32 6 +%r145 = load i32, i32* %r144 +%r146 = zext i32 %r145 to i224 +%r147 = shl i224 %r146, 192 +%r148 = or i224 %r142, %r147 +%r149 = zext i224 %r148 to i256 +%r151 = getelementptr i32, i32* %r4, i32 7 +%r152 = load i32, i32* %r151 +%r153 = zext i32 %r152 to i256 +%r154 = shl i256 %r153, 224 +%r155 = or i256 %r149, %r154 +%r156 = sub i256 %r105, %r155 +%r157 = lshr i256 %r156, 255 +%r158 = trunc i256 %r157 to i1 +%r159 = select i1 %r158, i256 %r105, i256 %r156 +%r161 = getelementptr i32, i32* %r1, i32 0 +%r162 = trunc i256 %r159 to i32 +store i32 %r162, i32* %r161 +%r163 = lshr i256 %r159, 32 +%r165 = getelementptr i32, i32* %r1, i32 1 +%r166 = trunc i256 %r163 to i32 +store i32 %r166, i32* %r165 +%r167 = lshr i256 %r163, 32 +%r169 = getelementptr i32, i32* %r1, i32 2 +%r170 = trunc i256 %r167 to i32 +store i32 %r170, i32* %r169 +%r171 = lshr i256 %r167, 32 +%r173 = getelementptr i32, i32* %r1, i32 3 +%r174 = trunc i256 %r171 to i32 +store i32 %r174, i32* %r173 +%r175 = lshr i256 %r171, 32 +%r177 = getelementptr i32, i32* %r1, i32 4 +%r178 = trunc i256 %r175 to i32 +store i32 %r178, i32* %r177 +%r179 = lshr i256 %r175, 32 +%r181 = getelementptr i32, i32* %r1, i32 5 +%r182 = trunc i256 %r179 to i32 +store i32 %r182, i32* %r181 +%r183 = lshr i256 %r179, 32 +%r185 = getelementptr i32, i32* %r1, i32 6 +%r186 = trunc i256 %r183 to i32 +store i32 %r186, i32* %r185 +%r187 = lshr i256 %r183, 32 +%r189 = getelementptr i32, i32* %r1, i32 7 +%r190 = trunc i256 %r187 to i32 +store i32 %r190, i32* %r189 ret void } -define void @mcl_fp_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_sub8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -8705,148 +7231,174 @@ define void @mcl_fp_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 -%r48 = load i32, i32* %r3 -%r49 = zext i32 %r48 to i64 -%r51 = getelementptr i32, i32* %r3, i32 1 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i64 -%r54 = shl i64 %r53, 32 -%r55 = or i64 %r49, %r54 -%r56 = zext i64 %r55 to i96 -%r58 = getelementptr i32, i32* %r3, i32 2 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = load i32, i32* %r3 +%r56 = zext i32 %r55 to i64 +%r58 = getelementptr i32, i32* %r3, i32 1 %r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i96 -%r61 = shl i96 %r60, 64 -%r62 = or i96 %r56, %r61 -%r63 = zext i96 %r62 to i128 -%r65 = getelementptr i32, i32* %r3, i32 3 +%r60 = zext i32 %r59 to i64 +%r61 = shl i64 %r60, 32 +%r62 = or i64 %r56, %r61 +%r63 = zext i64 %r62 to i96 +%r65 = getelementptr i32, i32* %r3, i32 2 %r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i128 -%r68 = shl i128 %r67, 96 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i160 -%r72 = getelementptr i32, i32* %r3, i32 4 +%r67 = zext i32 %r66 to i96 +%r68 = shl i96 %r67, 64 +%r69 = or i96 %r63, %r68 +%r70 = zext i96 %r69 to i128 +%r72 = getelementptr i32, i32* %r3, i32 3 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i160 -%r75 = shl i160 %r74, 128 -%r76 = or i160 %r70, %r75 -%r77 = zext i160 %r76 to i192 -%r79 = getelementptr i32, i32* %r3, i32 5 +%r74 = zext i32 %r73 to i128 +%r75 = shl i128 %r74, 96 +%r76 = or i128 %r70, %r75 +%r77 = zext i128 %r76 to i160 +%r79 = getelementptr i32, i32* %r3, i32 4 %r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i224 -%r86 = getelementptr i32, i32* %r3, i32 6 +%r81 = zext i32 %r80 to i160 +%r82 = shl i160 %r81, 128 +%r83 = or i160 %r77, %r82 +%r84 = zext i160 %r83 to i192 +%r86 = getelementptr i32, i32* %r3, i32 5 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i224 -%r89 = shl i224 %r88, 192 -%r90 = or i224 %r84, %r89 -%r91 = zext i224 %r47 to i256 -%r92 = zext i224 %r90 to i256 -%r93 = sub i256 %r91, %r92 -%r94 = trunc i256 %r93 to i224 -%r95 = lshr i256 %r93, 224 -%r96 = trunc i256 %r95 to i1 -%r97 = trunc i224 %r94 to i32 -%r99 = getelementptr i32, i32* %r1, i32 0 -store i32 %r97, i32* %r99 -%r100 = lshr i224 %r94, 32 -%r101 = trunc i224 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 1 -store i32 %r101, i32* %r103 -%r104 = lshr i224 %r100, 32 -%r105 = trunc i224 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 2 -store i32 %r105, i32* %r107 -%r108 = lshr i224 %r104, 32 -%r109 = trunc i224 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 3 -store i32 %r109, i32* %r111 -%r112 = lshr i224 %r108, 32 -%r113 = trunc i224 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 4 -store i32 %r113, i32* %r115 -%r116 = lshr i224 %r112, 32 -%r117 = trunc i224 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 5 -store i32 %r117, i32* %r119 -%r120 = lshr i224 %r116, 32 -%r121 = trunc i224 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 6 -store i32 %r121, i32* %r123 -br i1%r96, label %carry, label %nocarry +%r88 = zext i32 %r87 to i192 +%r89 = shl i192 %r88, 160 +%r90 = or i192 %r84, %r89 +%r91 = zext i192 %r90 to i224 +%r93 = getelementptr i32, i32* %r3, i32 6 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i224 +%r96 = shl i224 %r95, 192 +%r97 = or i224 %r91, %r96 +%r98 = zext i224 %r97 to i256 +%r100 = getelementptr i32, i32* %r3, i32 7 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i256 +%r103 = shl i256 %r102, 224 +%r104 = or i256 %r98, %r103 +%r105 = zext i256 %r54 to i288 +%r106 = zext i256 %r104 to i288 +%r107 = sub i288 %r105, %r106 +%r108 = trunc i288 %r107 to i256 +%r109 = lshr i288 %r107, 256 +%r110 = trunc i288 %r109 to i1 +%r112 = getelementptr i32, i32* %r1, i32 0 +%r113 = trunc i256 %r108 to i32 +store i32 %r113, i32* %r112 +%r114 = lshr i256 %r108, 32 +%r116 = getelementptr i32, i32* %r1, i32 1 +%r117 = trunc i256 %r114 to i32 +store i32 %r117, i32* %r116 +%r118 = lshr i256 %r114, 32 +%r120 = getelementptr i32, i32* %r1, i32 2 +%r121 = trunc i256 %r118 to i32 +store i32 %r121, i32* %r120 +%r122 = lshr i256 %r118, 32 +%r124 = getelementptr i32, i32* %r1, i32 3 +%r125 = trunc i256 %r122 to i32 +store i32 %r125, i32* %r124 +%r126 = lshr i256 %r122, 32 +%r128 = getelementptr i32, i32* %r1, i32 4 +%r129 = trunc i256 %r126 to i32 +store i32 %r129, i32* %r128 +%r130 = lshr i256 %r126, 32 +%r132 = getelementptr i32, i32* %r1, i32 5 +%r133 = trunc i256 %r130 to i32 +store i32 %r133, i32* %r132 +%r134 = lshr i256 %r130, 32 +%r136 = getelementptr i32, i32* %r1, i32 6 +%r137 = trunc i256 %r134 to i32 +store i32 %r137, i32* %r136 +%r138 = lshr i256 %r134, 32 +%r140 = getelementptr i32, i32* %r1, i32 7 +%r141 = trunc i256 %r138 to i32 +store i32 %r141, i32* %r140 +br i1%r110, label %carry, label %nocarry nocarry: ret void carry: -%r124 = load i32, i32* %r4 -%r125 = zext i32 %r124 to i64 -%r127 = getelementptr i32, i32* %r4, i32 1 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i64 -%r130 = shl i64 %r129, 32 -%r131 = or i64 %r125, %r130 -%r132 = zext i64 %r131 to i96 -%r134 = getelementptr i32, i32* %r4, i32 2 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i96 -%r137 = shl i96 %r136, 64 -%r138 = or i96 %r132, %r137 -%r139 = zext i96 %r138 to i128 -%r141 = getelementptr i32, i32* %r4, i32 3 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i128 -%r144 = shl i128 %r143, 96 -%r145 = or i128 %r139, %r144 -%r146 = zext i128 %r145 to i160 -%r148 = getelementptr i32, i32* %r4, i32 4 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i160 -%r151 = shl i160 %r150, 128 -%r152 = or i160 %r146, %r151 -%r153 = zext i160 %r152 to i192 -%r155 = getelementptr i32, i32* %r4, i32 5 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i192 -%r158 = shl i192 %r157, 160 -%r159 = or i192 %r153, %r158 -%r160 = zext i192 %r159 to i224 -%r162 = getelementptr i32, i32* %r4, i32 6 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i224 -%r165 = shl i224 %r164, 192 -%r166 = or i224 %r160, %r165 -%r167 = add i224 %r94, %r166 -%r168 = trunc i224 %r167 to i32 -%r170 = getelementptr i32, i32* %r1, i32 0 -store i32 %r168, i32* %r170 -%r171 = lshr i224 %r167, 32 -%r172 = trunc i224 %r171 to i32 -%r174 = getelementptr i32, i32* %r1, i32 1 -store i32 %r172, i32* %r174 -%r175 = lshr i224 %r171, 32 -%r176 = trunc i224 %r175 to i32 -%r178 = getelementptr i32, i32* %r1, i32 2 -store i32 %r176, i32* %r178 -%r179 = lshr i224 %r175, 32 -%r180 = trunc i224 %r179 to i32 -%r182 = getelementptr i32, i32* %r1, i32 3 -store i32 %r180, i32* %r182 -%r183 = lshr i224 %r179, 32 -%r184 = trunc i224 %r183 to i32 -%r186 = getelementptr i32, i32* %r1, i32 4 -store i32 %r184, i32* %r186 -%r187 = lshr i224 %r183, 32 -%r188 = trunc i224 %r187 to i32 -%r190 = getelementptr i32, i32* %r1, i32 5 -store i32 %r188, i32* %r190 -%r191 = lshr i224 %r187, 32 -%r192 = trunc i224 %r191 to i32 -%r194 = getelementptr i32, i32* %r1, i32 6 -store i32 %r192, i32* %r194 +%r142 = load i32, i32* %r4 +%r143 = zext i32 %r142 to i64 +%r145 = getelementptr i32, i32* %r4, i32 1 +%r146 = load i32, i32* %r145 +%r147 = zext i32 %r146 to i64 +%r148 = shl i64 %r147, 32 +%r149 = or i64 %r143, %r148 +%r150 = zext i64 %r149 to i96 +%r152 = getelementptr i32, i32* %r4, i32 2 +%r153 = load i32, i32* %r152 +%r154 = zext i32 %r153 to i96 +%r155 = shl i96 %r154, 64 +%r156 = or i96 %r150, %r155 +%r157 = zext i96 %r156 to i128 +%r159 = getelementptr i32, i32* %r4, i32 3 +%r160 = load i32, i32* %r159 +%r161 = zext i32 %r160 to i128 +%r162 = shl i128 %r161, 96 +%r163 = or i128 %r157, %r162 +%r164 = zext i128 %r163 to i160 +%r166 = getelementptr i32, i32* %r4, i32 4 +%r167 = load i32, i32* %r166 +%r168 = zext i32 %r167 to i160 +%r169 = shl i160 %r168, 128 +%r170 = or i160 %r164, %r169 +%r171 = zext i160 %r170 to i192 +%r173 = getelementptr i32, i32* %r4, i32 5 +%r174 = load i32, i32* %r173 +%r175 = zext i32 %r174 to i192 +%r176 = shl i192 %r175, 160 +%r177 = or i192 %r171, %r176 +%r178 = zext i192 %r177 to i224 +%r180 = getelementptr i32, i32* %r4, i32 6 +%r181 = load i32, i32* %r180 +%r182 = zext i32 %r181 to i224 +%r183 = shl i224 %r182, 192 +%r184 = or i224 %r178, %r183 +%r185 = zext i224 %r184 to i256 +%r187 = getelementptr i32, i32* %r4, i32 7 +%r188 = load i32, i32* %r187 +%r189 = zext i32 %r188 to i256 +%r190 = shl i256 %r189, 224 +%r191 = or i256 %r185, %r190 +%r192 = add i256 %r108, %r191 +%r194 = getelementptr i32, i32* %r1, i32 0 +%r195 = trunc i256 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i256 %r192, 32 +%r198 = getelementptr i32, i32* %r1, i32 1 +%r199 = trunc i256 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i256 %r196, 32 +%r202 = getelementptr i32, i32* %r1, i32 2 +%r203 = trunc i256 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i256 %r200, 32 +%r206 = getelementptr i32, i32* %r1, i32 3 +%r207 = trunc i256 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i256 %r204, 32 +%r210 = getelementptr i32, i32* %r1, i32 4 +%r211 = trunc i256 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = lshr i256 %r208, 32 +%r214 = getelementptr i32, i32* %r1, i32 5 +%r215 = trunc i256 %r212 to i32 +store i32 %r215, i32* %r214 +%r216 = lshr i256 %r212, 32 +%r218 = getelementptr i32, i32* %r1, i32 6 +%r219 = trunc i256 %r216 to i32 +store i32 %r219, i32* %r218 +%r220 = lshr i256 %r216, 32 +%r222 = getelementptr i32, i32* %r1, i32 7 +%r223 = trunc i256 %r220 to i32 +store i32 %r223, i32* %r222 ret void } -define void @mcl_fp_subNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_subNF8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -8885,115 +7437,137 @@ define void @mcl_fp_subNF7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r45 = zext i32 %r44 to i224 %r46 = shl i224 %r45, 192 %r47 = or i224 %r41, %r46 -%r48 = load i32, i32* %r3 -%r49 = zext i32 %r48 to i64 -%r51 = getelementptr i32, i32* %r3, i32 1 -%r52 = load i32, i32* %r51 -%r53 = zext i32 %r52 to i64 -%r54 = shl i64 %r53, 32 -%r55 = or i64 %r49, %r54 -%r56 = zext i64 %r55 to i96 -%r58 = getelementptr i32, i32* %r3, i32 2 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = load i32, i32* %r3 +%r56 = zext i32 %r55 to i64 +%r58 = getelementptr i32, i32* %r3, i32 1 %r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i96 -%r61 = shl i96 %r60, 64 -%r62 = or i96 %r56, %r61 -%r63 = zext i96 %r62 to i128 -%r65 = getelementptr i32, i32* %r3, i32 3 +%r60 = zext i32 %r59 to i64 +%r61 = shl i64 %r60, 32 +%r62 = or i64 %r56, %r61 +%r63 = zext i64 %r62 to i96 +%r65 = getelementptr i32, i32* %r3, i32 2 %r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i128 -%r68 = shl i128 %r67, 96 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i160 -%r72 = getelementptr i32, i32* %r3, i32 4 +%r67 = zext i32 %r66 to i96 +%r68 = shl i96 %r67, 64 +%r69 = or i96 %r63, %r68 +%r70 = zext i96 %r69 to i128 +%r72 = getelementptr i32, i32* %r3, i32 3 %r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i160 -%r75 = shl i160 %r74, 128 -%r76 = or i160 %r70, %r75 -%r77 = zext i160 %r76 to i192 -%r79 = getelementptr i32, i32* %r3, i32 5 +%r74 = zext i32 %r73 to i128 +%r75 = shl i128 %r74, 96 +%r76 = or i128 %r70, %r75 +%r77 = zext i128 %r76 to i160 +%r79 = getelementptr i32, i32* %r3, i32 4 %r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i224 -%r86 = getelementptr i32, i32* %r3, i32 6 +%r81 = zext i32 %r80 to i160 +%r82 = shl i160 %r81, 128 +%r83 = or i160 %r77, %r82 +%r84 = zext i160 %r83 to i192 +%r86 = getelementptr i32, i32* %r3, i32 5 %r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i224 -%r89 = shl i224 %r88, 192 -%r90 = or i224 %r84, %r89 -%r91 = sub i224 %r47, %r90 -%r92 = lshr i224 %r91, 223 -%r93 = trunc i224 %r92 to i1 -%r94 = load i32, i32* %r4 -%r95 = zext i32 %r94 to i64 -%r97 = getelementptr i32, i32* %r4, i32 1 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i64 -%r100 = shl i64 %r99, 32 -%r101 = or i64 %r95, %r100 -%r102 = zext i64 %r101 to i96 -%r104 = getelementptr i32, i32* %r4, i32 2 -%r105 = load i32, i32* %r104 -%r106 = zext i32 %r105 to i96 -%r107 = shl i96 %r106, 64 -%r108 = or i96 %r102, %r107 -%r109 = zext i96 %r108 to i128 -%r111 = getelementptr i32, i32* %r4, i32 3 +%r88 = zext i32 %r87 to i192 +%r89 = shl i192 %r88, 160 +%r90 = or i192 %r84, %r89 +%r91 = zext i192 %r90 to i224 +%r93 = getelementptr i32, i32* %r3, i32 6 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i224 +%r96 = shl i224 %r95, 192 +%r97 = or i224 %r91, %r96 +%r98 = zext i224 %r97 to i256 +%r100 = getelementptr i32, i32* %r3, i32 7 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i256 +%r103 = shl i256 %r102, 224 +%r104 = or i256 %r98, %r103 +%r105 = sub i256 %r54, %r104 +%r106 = lshr i256 %r105, 255 +%r107 = trunc i256 %r106 to i1 +%r108 = load i32, i32* %r4 +%r109 = zext i32 %r108 to i64 +%r111 = getelementptr i32, i32* %r4, i32 1 %r112 = load i32, i32* %r111 -%r113 = zext i32 %r112 to i128 -%r114 = shl i128 %r113, 96 -%r115 = or i128 %r109, %r114 -%r116 = zext i128 %r115 to i160 -%r118 = getelementptr i32, i32* %r4, i32 4 +%r113 = zext i32 %r112 to i64 +%r114 = shl i64 %r113, 32 +%r115 = or i64 %r109, %r114 +%r116 = zext i64 %r115 to i96 +%r118 = getelementptr i32, i32* %r4, i32 2 %r119 = load i32, i32* %r118 -%r120 = zext i32 %r119 to i160 -%r121 = shl i160 %r120, 128 -%r122 = or i160 %r116, %r121 -%r123 = zext i160 %r122 to i192 -%r125 = getelementptr i32, i32* %r4, i32 5 +%r120 = zext i32 %r119 to i96 +%r121 = shl i96 %r120, 64 +%r122 = or i96 %r116, %r121 +%r123 = zext i96 %r122 to i128 +%r125 = getelementptr i32, i32* %r4, i32 3 %r126 = load i32, i32* %r125 -%r127 = zext i32 %r126 to i192 -%r128 = shl i192 %r127, 160 -%r129 = or i192 %r123, %r128 -%r130 = zext i192 %r129 to i224 -%r132 = getelementptr i32, i32* %r4, i32 6 +%r127 = zext i32 %r126 to i128 +%r128 = shl i128 %r127, 96 +%r129 = or i128 %r123, %r128 +%r130 = zext i128 %r129 to i160 +%r132 = getelementptr i32, i32* %r4, i32 4 %r133 = load i32, i32* %r132 -%r134 = zext i32 %r133 to i224 -%r135 = shl i224 %r134, 192 -%r136 = or i224 %r130, %r135 -%r138 = select i1 %r93, i224 %r136, i224 0 -%r139 = add i224 %r91, %r138 -%r140 = trunc i224 %r139 to i32 -%r142 = getelementptr i32, i32* %r1, i32 0 -store i32 %r140, i32* %r142 -%r143 = lshr i224 %r139, 32 -%r144 = trunc i224 %r143 to i32 -%r146 = getelementptr i32, i32* %r1, i32 1 -store i32 %r144, i32* %r146 -%r147 = lshr i224 %r143, 32 -%r148 = trunc i224 %r147 to i32 -%r150 = getelementptr i32, i32* %r1, i32 2 -store i32 %r148, i32* %r150 -%r151 = lshr i224 %r147, 32 -%r152 = trunc i224 %r151 to i32 -%r154 = getelementptr i32, i32* %r1, i32 3 -store i32 %r152, i32* %r154 -%r155 = lshr i224 %r151, 32 -%r156 = trunc i224 %r155 to i32 -%r158 = getelementptr i32, i32* %r1, i32 4 -store i32 %r156, i32* %r158 -%r159 = lshr i224 %r155, 32 -%r160 = trunc i224 %r159 to i32 -%r162 = getelementptr i32, i32* %r1, i32 5 -store i32 %r160, i32* %r162 -%r163 = lshr i224 %r159, 32 -%r164 = trunc i224 %r163 to i32 -%r166 = getelementptr i32, i32* %r1, i32 6 -store i32 %r164, i32* %r166 +%r134 = zext i32 %r133 to i160 +%r135 = shl i160 %r134, 128 +%r136 = or i160 %r130, %r135 +%r137 = zext i160 %r136 to i192 +%r139 = getelementptr i32, i32* %r4, i32 5 +%r140 = load i32, i32* %r139 +%r141 = zext i32 %r140 to i192 +%r142 = shl i192 %r141, 160 +%r143 = or i192 %r137, %r142 +%r144 = zext i192 %r143 to i224 +%r146 = getelementptr i32, i32* %r4, i32 6 +%r147 = load i32, i32* %r146 +%r148 = zext i32 %r147 to i224 +%r149 = shl i224 %r148, 192 +%r150 = or i224 %r144, %r149 +%r151 = zext i224 %r150 to i256 +%r153 = getelementptr i32, i32* %r4, i32 7 +%r154 = load i32, i32* %r153 +%r155 = zext i32 %r154 to i256 +%r156 = shl i256 %r155, 224 +%r157 = or i256 %r151, %r156 +%r159 = select i1 %r107, i256 %r157, i256 0 +%r160 = add i256 %r105, %r159 +%r162 = getelementptr i32, i32* %r1, i32 0 +%r163 = trunc i256 %r160 to i32 +store i32 %r163, i32* %r162 +%r164 = lshr i256 %r160, 32 +%r166 = getelementptr i32, i32* %r1, i32 1 +%r167 = trunc i256 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i256 %r164, 32 +%r170 = getelementptr i32, i32* %r1, i32 2 +%r171 = trunc i256 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i256 %r168, 32 +%r174 = getelementptr i32, i32* %r1, i32 3 +%r175 = trunc i256 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i256 %r172, 32 +%r178 = getelementptr i32, i32* %r1, i32 4 +%r179 = trunc i256 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i256 %r176, 32 +%r182 = getelementptr i32, i32* %r1, i32 5 +%r183 = trunc i256 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i256 %r180, 32 +%r186 = getelementptr i32, i32* %r1, i32 6 +%r187 = trunc i256 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i256 %r184, 32 +%r190 = getelementptr i32, i32* %r1, i32 7 +%r191 = trunc i256 %r188 to i32 +store i32 %r191, i32* %r190 ret void } -define void @mcl_fpDbl_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_add8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -9074,192 +7648,230 @@ define void @mcl_fpDbl_add7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r94 = zext i32 %r93 to i448 %r95 = shl i448 %r94, 416 %r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 +%r97 = zext i448 %r96 to i480 +%r99 = getelementptr i32, i32* %r2, i32 14 +%r100 = load i32, i32* %r99 +%r101 = zext i32 %r100 to i480 +%r102 = shl i480 %r101, 448 +%r103 = or i480 %r97, %r102 +%r104 = zext i480 %r103 to i512 +%r106 = getelementptr i32, i32* %r2, i32 15 +%r107 = load i32, i32* %r106 +%r108 = zext i32 %r107 to i512 +%r109 = shl i512 %r108, 480 +%r110 = or i512 %r104, %r109 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 %r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = zext i448 %r96 to i480 -%r190 = zext i448 %r188 to i480 -%r191 = add i480 %r189, %r190 -%r192 = trunc i480 %r191 to i224 -%r193 = trunc i224 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i224 %r192, 32 -%r197 = trunc i224 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i224 %r196, 32 -%r201 = trunc i224 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i224 %r200, 32 -%r205 = trunc i224 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i224 %r204, 32 -%r209 = trunc i224 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i224 %r208, 32 -%r213 = trunc i224 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i224 %r212, 32 -%r217 = trunc i224 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i480 %r191, 224 -%r221 = trunc i480 %r220 to i256 -%r222 = load i32, i32* %r4 -%r223 = zext i32 %r222 to i64 -%r225 = getelementptr i32, i32* %r4, i32 1 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i64 -%r228 = shl i64 %r227, 32 -%r229 = or i64 %r223, %r228 -%r230 = zext i64 %r229 to i96 -%r232 = getelementptr i32, i32* %r4, i32 2 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i96 -%r235 = shl i96 %r234, 64 -%r236 = or i96 %r230, %r235 -%r237 = zext i96 %r236 to i128 -%r239 = getelementptr i32, i32* %r4, i32 3 -%r240 = load i32, i32* %r239 -%r241 = zext i32 %r240 to i128 -%r242 = shl i128 %r241, 96 -%r243 = or i128 %r237, %r242 -%r244 = zext i128 %r243 to i160 -%r246 = getelementptr i32, i32* %r4, i32 4 -%r247 = load i32, i32* %r246 -%r248 = zext i32 %r247 to i160 -%r249 = shl i160 %r248, 128 -%r250 = or i160 %r244, %r249 -%r251 = zext i160 %r250 to i192 -%r253 = getelementptr i32, i32* %r4, i32 5 -%r254 = load i32, i32* %r253 -%r255 = zext i32 %r254 to i192 -%r256 = shl i192 %r255, 160 -%r257 = or i192 %r251, %r256 -%r258 = zext i192 %r257 to i224 -%r260 = getelementptr i32, i32* %r4, i32 6 -%r261 = load i32, i32* %r260 -%r262 = zext i32 %r261 to i224 -%r263 = shl i224 %r262, 192 -%r264 = or i224 %r258, %r263 -%r265 = zext i224 %r264 to i256 -%r266 = sub i256 %r221, %r265 -%r267 = lshr i256 %r266, 224 -%r268 = trunc i256 %r267 to i1 -%r269 = select i1 %r268, i256 %r221, i256 %r266 -%r270 = trunc i256 %r269 to i224 -%r272 = getelementptr i32, i32* %r1, i32 7 -%r273 = trunc i224 %r270 to i32 -%r275 = getelementptr i32, i32* %r272, i32 0 -store i32 %r273, i32* %r275 -%r276 = lshr i224 %r270, 32 -%r277 = trunc i224 %r276 to i32 -%r279 = getelementptr i32, i32* %r272, i32 1 -store i32 %r277, i32* %r279 -%r280 = lshr i224 %r276, 32 -%r281 = trunc i224 %r280 to i32 -%r283 = getelementptr i32, i32* %r272, i32 2 -store i32 %r281, i32* %r283 -%r284 = lshr i224 %r280, 32 -%r285 = trunc i224 %r284 to i32 -%r287 = getelementptr i32, i32* %r272, i32 3 -store i32 %r285, i32* %r287 -%r288 = lshr i224 %r284, 32 -%r289 = trunc i224 %r288 to i32 -%r291 = getelementptr i32, i32* %r272, i32 4 -store i32 %r289, i32* %r291 -%r292 = lshr i224 %r288, 32 -%r293 = trunc i224 %r292 to i32 -%r295 = getelementptr i32, i32* %r272, i32 5 -store i32 %r293, i32* %r295 -%r296 = lshr i224 %r292, 32 -%r297 = trunc i224 %r296 to i32 -%r299 = getelementptr i32, i32* %r272, i32 6 -store i32 %r297, i32* %r299 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 +%r192 = load i32, i32* %r191 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 +%r199 = load i32, i32* %r198 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 +%r206 = load i32, i32* %r205 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 +%r213 = load i32, i32* %r212 +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = zext i512 %r110 to i544 +%r218 = zext i512 %r216 to i544 +%r219 = add i544 %r217, %r218 +%r220 = trunc i544 %r219 to i256 +%r222 = getelementptr i32, i32* %r1, i32 0 +%r223 = trunc i256 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i256 %r220, 32 +%r226 = getelementptr i32, i32* %r1, i32 1 +%r227 = trunc i256 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i256 %r224, 32 +%r230 = getelementptr i32, i32* %r1, i32 2 +%r231 = trunc i256 %r228 to i32 +store i32 %r231, i32* %r230 +%r232 = lshr i256 %r228, 32 +%r234 = getelementptr i32, i32* %r1, i32 3 +%r235 = trunc i256 %r232 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i256 %r232, 32 +%r238 = getelementptr i32, i32* %r1, i32 4 +%r239 = trunc i256 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i256 %r236, 32 +%r242 = getelementptr i32, i32* %r1, i32 5 +%r243 = trunc i256 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i256 %r240, 32 +%r246 = getelementptr i32, i32* %r1, i32 6 +%r247 = trunc i256 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i256 %r244, 32 +%r250 = getelementptr i32, i32* %r1, i32 7 +%r251 = trunc i256 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i544 %r219, 256 +%r253 = trunc i544 %r252 to i288 +%r254 = load i32, i32* %r4 +%r255 = zext i32 %r254 to i64 +%r257 = getelementptr i32, i32* %r4, i32 1 +%r258 = load i32, i32* %r257 +%r259 = zext i32 %r258 to i64 +%r260 = shl i64 %r259, 32 +%r261 = or i64 %r255, %r260 +%r262 = zext i64 %r261 to i96 +%r264 = getelementptr i32, i32* %r4, i32 2 +%r265 = load i32, i32* %r264 +%r266 = zext i32 %r265 to i96 +%r267 = shl i96 %r266, 64 +%r268 = or i96 %r262, %r267 +%r269 = zext i96 %r268 to i128 +%r271 = getelementptr i32, i32* %r4, i32 3 +%r272 = load i32, i32* %r271 +%r273 = zext i32 %r272 to i128 +%r274 = shl i128 %r273, 96 +%r275 = or i128 %r269, %r274 +%r276 = zext i128 %r275 to i160 +%r278 = getelementptr i32, i32* %r4, i32 4 +%r279 = load i32, i32* %r278 +%r280 = zext i32 %r279 to i160 +%r281 = shl i160 %r280, 128 +%r282 = or i160 %r276, %r281 +%r283 = zext i160 %r282 to i192 +%r285 = getelementptr i32, i32* %r4, i32 5 +%r286 = load i32, i32* %r285 +%r287 = zext i32 %r286 to i192 +%r288 = shl i192 %r287, 160 +%r289 = or i192 %r283, %r288 +%r290 = zext i192 %r289 to i224 +%r292 = getelementptr i32, i32* %r4, i32 6 +%r293 = load i32, i32* %r292 +%r294 = zext i32 %r293 to i224 +%r295 = shl i224 %r294, 192 +%r296 = or i224 %r290, %r295 +%r297 = zext i224 %r296 to i256 +%r299 = getelementptr i32, i32* %r4, i32 7 +%r300 = load i32, i32* %r299 +%r301 = zext i32 %r300 to i256 +%r302 = shl i256 %r301, 224 +%r303 = or i256 %r297, %r302 +%r304 = zext i256 %r303 to i288 +%r305 = sub i288 %r253, %r304 +%r306 = lshr i288 %r305, 256 +%r307 = trunc i288 %r306 to i1 +%r308 = select i1 %r307, i288 %r253, i288 %r305 +%r309 = trunc i288 %r308 to i256 +%r311 = getelementptr i32, i32* %r1, i32 8 +%r313 = getelementptr i32, i32* %r311, i32 0 +%r314 = trunc i256 %r309 to i32 +store i32 %r314, i32* %r313 +%r315 = lshr i256 %r309, 32 +%r317 = getelementptr i32, i32* %r311, i32 1 +%r318 = trunc i256 %r315 to i32 +store i32 %r318, i32* %r317 +%r319 = lshr i256 %r315, 32 +%r321 = getelementptr i32, i32* %r311, i32 2 +%r322 = trunc i256 %r319 to i32 +store i32 %r322, i32* %r321 +%r323 = lshr i256 %r319, 32 +%r325 = getelementptr i32, i32* %r311, i32 3 +%r326 = trunc i256 %r323 to i32 +store i32 %r326, i32* %r325 +%r327 = lshr i256 %r323, 32 +%r329 = getelementptr i32, i32* %r311, i32 4 +%r330 = trunc i256 %r327 to i32 +store i32 %r330, i32* %r329 +%r331 = lshr i256 %r327, 32 +%r333 = getelementptr i32, i32* %r311, i32 5 +%r334 = trunc i256 %r331 to i32 +store i32 %r334, i32* %r333 +%r335 = lshr i256 %r331, 32 +%r337 = getelementptr i32, i32* %r311, i32 6 +%r338 = trunc i256 %r335 to i32 +store i32 %r338, i32* %r337 +%r339 = lshr i256 %r335, 32 +%r341 = getelementptr i32, i32* %r311, i32 7 +%r342 = trunc i256 %r339 to i32 +store i32 %r342, i32* %r341 ret void } -define void @mcl_fpDbl_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_sub8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -9340,38839 +7952,5042 @@ define void @mcl_fpDbl_sub7L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r94 = zext i32 %r93 to i448 %r95 = shl i448 %r94, 416 %r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 +%r97 = zext i448 %r96 to i480 +%r99 = getelementptr i32, i32* %r2, i32 14 +%r100 = load i32, i32* %r99 +%r101 = zext i32 %r100 to i480 +%r102 = shl i480 %r101, 448 +%r103 = or i480 %r97, %r102 +%r104 = zext i480 %r103 to i512 +%r106 = getelementptr i32, i32* %r2, i32 15 +%r107 = load i32, i32* %r106 +%r108 = zext i32 %r107 to i512 +%r109 = shl i512 %r108, 480 +%r110 = or i512 %r104, %r109 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = zext i448 %r96 to i480 -%r190 = zext i448 %r188 to i480 -%r191 = sub i480 %r189, %r190 -%r192 = trunc i480 %r191 to i224 -%r193 = trunc i224 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i224 %r192, 32 -%r197 = trunc i224 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i224 %r196, 32 -%r201 = trunc i224 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i224 %r200, 32 -%r205 = trunc i224 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i224 %r204, 32 -%r209 = trunc i224 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i224 %r208, 32 -%r213 = trunc i224 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i224 %r212, 32 -%r217 = trunc i224 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i480 %r191, 224 -%r221 = trunc i480 %r220 to i224 -%r222 = lshr i480 %r191, 448 -%r223 = trunc i480 %r222 to i1 -%r224 = load i32, i32* %r4 -%r225 = zext i32 %r224 to i64 -%r227 = getelementptr i32, i32* %r4, i32 1 -%r228 = load i32, i32* %r227 -%r229 = zext i32 %r228 to i64 -%r230 = shl i64 %r229, 32 -%r231 = or i64 %r225, %r230 -%r232 = zext i64 %r231 to i96 -%r234 = getelementptr i32, i32* %r4, i32 2 -%r235 = load i32, i32* %r234 -%r236 = zext i32 %r235 to i96 -%r237 = shl i96 %r236, 64 -%r238 = or i96 %r232, %r237 -%r239 = zext i96 %r238 to i128 -%r241 = getelementptr i32, i32* %r4, i32 3 -%r242 = load i32, i32* %r241 -%r243 = zext i32 %r242 to i128 -%r244 = shl i128 %r243, 96 -%r245 = or i128 %r239, %r244 -%r246 = zext i128 %r245 to i160 -%r248 = getelementptr i32, i32* %r4, i32 4 -%r249 = load i32, i32* %r248 -%r250 = zext i32 %r249 to i160 -%r251 = shl i160 %r250, 128 -%r252 = or i160 %r246, %r251 -%r253 = zext i160 %r252 to i192 -%r255 = getelementptr i32, i32* %r4, i32 5 -%r256 = load i32, i32* %r255 -%r257 = zext i32 %r256 to i192 -%r258 = shl i192 %r257, 160 -%r259 = or i192 %r253, %r258 -%r260 = zext i192 %r259 to i224 -%r262 = getelementptr i32, i32* %r4, i32 6 -%r263 = load i32, i32* %r262 -%r264 = zext i32 %r263 to i224 -%r265 = shl i224 %r264, 192 -%r266 = or i224 %r260, %r265 -%r268 = select i1 %r223, i224 %r266, i224 0 -%r269 = add i224 %r221, %r268 -%r271 = getelementptr i32, i32* %r1, i32 7 -%r272 = trunc i224 %r269 to i32 -%r274 = getelementptr i32, i32* %r271, i32 0 -store i32 %r272, i32* %r274 -%r275 = lshr i224 %r269, 32 -%r276 = trunc i224 %r275 to i32 -%r278 = getelementptr i32, i32* %r271, i32 1 -store i32 %r276, i32* %r278 -%r279 = lshr i224 %r275, 32 -%r280 = trunc i224 %r279 to i32 -%r282 = getelementptr i32, i32* %r271, i32 2 -store i32 %r280, i32* %r282 -%r283 = lshr i224 %r279, 32 -%r284 = trunc i224 %r283 to i32 -%r286 = getelementptr i32, i32* %r271, i32 3 -store i32 %r284, i32* %r286 -%r287 = lshr i224 %r283, 32 -%r288 = trunc i224 %r287 to i32 -%r290 = getelementptr i32, i32* %r271, i32 4 -store i32 %r288, i32* %r290 -%r291 = lshr i224 %r287, 32 -%r292 = trunc i224 %r291 to i32 -%r294 = getelementptr i32, i32* %r271, i32 5 -store i32 %r292, i32* %r294 -%r295 = lshr i224 %r291, 32 -%r296 = trunc i224 %r295 to i32 -%r298 = getelementptr i32, i32* %r271, i32 6 -store i32 %r296, i32* %r298 -ret void -} -define i288 @mulPv256x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r36 = zext i32 %r6 to i64 -%r37 = zext i32 %r10 to i64 -%r38 = shl i64 %r37, 32 -%r39 = or i64 %r36, %r38 -%r40 = zext i64 %r39 to i96 -%r41 = zext i32 %r14 to i96 -%r42 = shl i96 %r41, 64 -%r43 = or i96 %r40, %r42 -%r44 = zext i96 %r43 to i128 -%r45 = zext i32 %r18 to i128 -%r46 = shl i128 %r45, 96 -%r47 = or i128 %r44, %r46 -%r48 = zext i128 %r47 to i160 -%r49 = zext i32 %r22 to i160 -%r50 = shl i160 %r49, 128 -%r51 = or i160 %r48, %r50 -%r52 = zext i160 %r51 to i192 -%r53 = zext i32 %r26 to i192 -%r54 = shl i192 %r53, 160 -%r55 = or i192 %r52, %r54 -%r56 = zext i192 %r55 to i224 -%r57 = zext i32 %r30 to i224 -%r58 = shl i224 %r57, 192 -%r59 = or i224 %r56, %r58 -%r60 = zext i224 %r59 to i256 -%r61 = zext i32 %r34 to i256 -%r62 = shl i256 %r61, 224 -%r63 = or i256 %r60, %r62 -%r64 = zext i32 %r7 to i64 -%r65 = zext i32 %r11 to i64 -%r66 = shl i64 %r65, 32 -%r67 = or i64 %r64, %r66 -%r68 = zext i64 %r67 to i96 -%r69 = zext i32 %r15 to i96 -%r70 = shl i96 %r69, 64 -%r71 = or i96 %r68, %r70 -%r72 = zext i96 %r71 to i128 -%r73 = zext i32 %r19 to i128 -%r74 = shl i128 %r73, 96 -%r75 = or i128 %r72, %r74 -%r76 = zext i128 %r75 to i160 -%r77 = zext i32 %r23 to i160 -%r78 = shl i160 %r77, 128 -%r79 = or i160 %r76, %r78 -%r80 = zext i160 %r79 to i192 -%r81 = zext i32 %r27 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r80, %r82 -%r84 = zext i192 %r83 to i224 -%r85 = zext i32 %r31 to i224 -%r86 = shl i224 %r85, 192 -%r87 = or i224 %r84, %r86 -%r88 = zext i224 %r87 to i256 -%r89 = zext i32 %r35 to i256 -%r90 = shl i256 %r89, 224 -%r91 = or i256 %r88, %r90 -%r92 = zext i256 %r63 to i288 -%r93 = zext i256 %r91 to i288 -%r94 = shl i288 %r93, 32 -%r95 = add i288 %r92, %r94 -ret i288 %r95 -} -define void @mcl_fp_mulUnitPre8L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i288 @mulPv256x32(i32* %r2, i32 %r3) -%r5 = trunc i288 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i288 %r4, 32 -%r9 = trunc i288 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i288 %r8, 32 -%r13 = trunc i288 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i288 %r12, 32 -%r17 = trunc i288 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i288 %r16, 32 -%r21 = trunc i288 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i288 %r20, 32 -%r25 = trunc i288 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i288 %r24, 32 -%r29 = trunc i288 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i288 %r28, 32 -%r33 = trunc i288 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i288 %r32, 32 -%r37 = trunc i288 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -ret void -} -define void @mcl_fpDbl_mulPre8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r2, i32 4 -%r7 = getelementptr i32, i32* %r3, i32 4 -%r9 = getelementptr i32, i32* %r1, i32 8 -call void @mcl_fpDbl_mulPre4L(i32* %r1, i32* %r2, i32* %r3) -call void @mcl_fpDbl_mulPre4L(i32* %r9, i32* %r5, i32* %r7) -%r10 = load i32, i32* %r5 -%r11 = zext i32 %r10 to i64 -%r13 = getelementptr i32, i32* %r5, i32 1 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i64 -%r16 = shl i64 %r15, 32 -%r17 = or i64 %r11, %r16 -%r18 = zext i64 %r17 to i96 -%r20 = getelementptr i32, i32* %r5, i32 2 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i96 -%r23 = shl i96 %r22, 64 -%r24 = or i96 %r18, %r23 -%r25 = zext i96 %r24 to i128 -%r27 = getelementptr i32, i32* %r5, i32 3 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r25, %r30 -%r32 = zext i128 %r31 to i160 -%r33 = load i32, i32* %r2 -%r34 = zext i32 %r33 to i64 -%r36 = getelementptr i32, i32* %r2, i32 1 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i64 -%r39 = shl i64 %r38, 32 -%r40 = or i64 %r34, %r39 -%r41 = zext i64 %r40 to i96 -%r43 = getelementptr i32, i32* %r2, i32 2 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i96 -%r46 = shl i96 %r45, 64 -%r47 = or i96 %r41, %r46 -%r48 = zext i96 %r47 to i128 -%r50 = getelementptr i32, i32* %r2, i32 3 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i128 -%r53 = shl i128 %r52, 96 -%r54 = or i128 %r48, %r53 -%r55 = zext i128 %r54 to i160 -%r56 = load i32, i32* %r7 -%r57 = zext i32 %r56 to i64 -%r59 = getelementptr i32, i32* %r7, i32 1 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r57, %r62 -%r64 = zext i64 %r63 to i96 -%r66 = getelementptr i32, i32* %r7, i32 2 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i96 -%r69 = shl i96 %r68, 64 -%r70 = or i96 %r64, %r69 -%r71 = zext i96 %r70 to i128 -%r73 = getelementptr i32, i32* %r7, i32 3 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i128 -%r76 = shl i128 %r75, 96 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i160 -%r79 = load i32, i32* %r3 -%r80 = zext i32 %r79 to i64 -%r82 = getelementptr i32, i32* %r3, i32 1 -%r83 = load i32, i32* %r82 -%r84 = zext i32 %r83 to i64 -%r85 = shl i64 %r84, 32 -%r86 = or i64 %r80, %r85 -%r87 = zext i64 %r86 to i96 -%r89 = getelementptr i32, i32* %r3, i32 2 -%r90 = load i32, i32* %r89 -%r91 = zext i32 %r90 to i96 -%r92 = shl i96 %r91, 64 -%r93 = or i96 %r87, %r92 -%r94 = zext i96 %r93 to i128 -%r96 = getelementptr i32, i32* %r3, i32 3 -%r97 = load i32, i32* %r96 -%r98 = zext i32 %r97 to i128 -%r99 = shl i128 %r98, 96 -%r100 = or i128 %r94, %r99 -%r101 = zext i128 %r100 to i160 -%r102 = add i160 %r32, %r55 -%r103 = add i160 %r78, %r101 -%r105 = alloca i32, i32 8 -%r106 = trunc i160 %r102 to i128 -%r107 = trunc i160 %r103 to i128 -%r108 = lshr i160 %r102, 128 -%r109 = trunc i160 %r108 to i1 -%r110 = lshr i160 %r103, 128 -%r111 = trunc i160 %r110 to i1 -%r112 = and i1 %r109, %r111 -%r114 = select i1 %r109, i128 %r107, i128 0 -%r116 = select i1 %r111, i128 %r106, i128 0 -%r118 = alloca i32, i32 4 -%r120 = alloca i32, i32 4 -%r121 = trunc i128 %r106 to i32 -%r123 = getelementptr i32, i32* %r118, i32 0 -store i32 %r121, i32* %r123 -%r124 = lshr i128 %r106, 32 -%r125 = trunc i128 %r124 to i32 -%r127 = getelementptr i32, i32* %r118, i32 1 -store i32 %r125, i32* %r127 -%r128 = lshr i128 %r124, 32 -%r129 = trunc i128 %r128 to i32 -%r131 = getelementptr i32, i32* %r118, i32 2 -store i32 %r129, i32* %r131 -%r132 = lshr i128 %r128, 32 -%r133 = trunc i128 %r132 to i32 -%r135 = getelementptr i32, i32* %r118, i32 3 -store i32 %r133, i32* %r135 -%r136 = trunc i128 %r107 to i32 -%r138 = getelementptr i32, i32* %r120, i32 0 -store i32 %r136, i32* %r138 -%r139 = lshr i128 %r107, 32 -%r140 = trunc i128 %r139 to i32 -%r142 = getelementptr i32, i32* %r120, i32 1 -store i32 %r140, i32* %r142 -%r143 = lshr i128 %r139, 32 -%r144 = trunc i128 %r143 to i32 -%r146 = getelementptr i32, i32* %r120, i32 2 -store i32 %r144, i32* %r146 -%r147 = lshr i128 %r143, 32 -%r148 = trunc i128 %r147 to i32 -%r150 = getelementptr i32, i32* %r120, i32 3 -store i32 %r148, i32* %r150 -call void @mcl_fpDbl_mulPre4L(i32* %r105, i32* %r118, i32* %r120) -%r151 = load i32, i32* %r105 -%r152 = zext i32 %r151 to i64 -%r154 = getelementptr i32, i32* %r105, i32 1 -%r155 = load i32, i32* %r154 -%r156 = zext i32 %r155 to i64 -%r157 = shl i64 %r156, 32 -%r158 = or i64 %r152, %r157 -%r159 = zext i64 %r158 to i96 -%r161 = getelementptr i32, i32* %r105, i32 2 -%r162 = load i32, i32* %r161 -%r163 = zext i32 %r162 to i96 -%r164 = shl i96 %r163, 64 -%r165 = or i96 %r159, %r164 -%r166 = zext i96 %r165 to i128 -%r168 = getelementptr i32, i32* %r105, i32 3 -%r169 = load i32, i32* %r168 -%r170 = zext i32 %r169 to i128 -%r171 = shl i128 %r170, 96 -%r172 = or i128 %r166, %r171 -%r173 = zext i128 %r172 to i160 -%r175 = getelementptr i32, i32* %r105, i32 4 -%r176 = load i32, i32* %r175 -%r177 = zext i32 %r176 to i160 -%r178 = shl i160 %r177, 128 -%r179 = or i160 %r173, %r178 -%r180 = zext i160 %r179 to i192 -%r182 = getelementptr i32, i32* %r105, i32 5 -%r183 = load i32, i32* %r182 -%r184 = zext i32 %r183 to i192 -%r185 = shl i192 %r184, 160 -%r186 = or i192 %r180, %r185 -%r187 = zext i192 %r186 to i224 -%r189 = getelementptr i32, i32* %r105, i32 6 -%r190 = load i32, i32* %r189 -%r191 = zext i32 %r190 to i224 -%r192 = shl i224 %r191, 192 -%r193 = or i224 %r187, %r192 -%r194 = zext i224 %r193 to i256 -%r196 = getelementptr i32, i32* %r105, i32 7 -%r197 = load i32, i32* %r196 -%r198 = zext i32 %r197 to i256 -%r199 = shl i256 %r198, 224 -%r200 = or i256 %r194, %r199 -%r201 = zext i256 %r200 to i288 -%r202 = zext i1 %r112 to i288 -%r203 = shl i288 %r202, 256 -%r204 = or i288 %r201, %r203 -%r205 = zext i128 %r114 to i288 -%r206 = zext i128 %r116 to i288 -%r207 = shl i288 %r205, 128 -%r208 = shl i288 %r206, 128 -%r209 = add i288 %r204, %r207 -%r210 = add i288 %r209, %r208 -%r211 = load i32, i32* %r1 -%r212 = zext i32 %r211 to i64 -%r214 = getelementptr i32, i32* %r1, i32 1 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i64 -%r217 = shl i64 %r216, 32 -%r218 = or i64 %r212, %r217 -%r219 = zext i64 %r218 to i96 -%r221 = getelementptr i32, i32* %r1, i32 2 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i96 -%r224 = shl i96 %r223, 64 -%r225 = or i96 %r219, %r224 -%r226 = zext i96 %r225 to i128 -%r228 = getelementptr i32, i32* %r1, i32 3 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i128 -%r231 = shl i128 %r230, 96 -%r232 = or i128 %r226, %r231 -%r233 = zext i128 %r232 to i160 -%r235 = getelementptr i32, i32* %r1, i32 4 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i160 -%r238 = shl i160 %r237, 128 -%r239 = or i160 %r233, %r238 -%r240 = zext i160 %r239 to i192 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 +%r192 = load i32, i32* %r191 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 +%r199 = load i32, i32* %r198 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 +%r206 = load i32, i32* %r205 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 +%r213 = load i32, i32* %r212 +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = zext i512 %r110 to i544 +%r218 = zext i512 %r216 to i544 +%r219 = sub i544 %r217, %r218 +%r220 = trunc i544 %r219 to i256 +%r222 = getelementptr i32, i32* %r1, i32 0 +%r223 = trunc i256 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i256 %r220, 32 +%r226 = getelementptr i32, i32* %r1, i32 1 +%r227 = trunc i256 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i256 %r224, 32 +%r230 = getelementptr i32, i32* %r1, i32 2 +%r231 = trunc i256 %r228 to i32 +store i32 %r231, i32* %r230 +%r232 = lshr i256 %r228, 32 +%r234 = getelementptr i32, i32* %r1, i32 3 +%r235 = trunc i256 %r232 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i256 %r232, 32 +%r238 = getelementptr i32, i32* %r1, i32 4 +%r239 = trunc i256 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i256 %r236, 32 %r242 = getelementptr i32, i32* %r1, i32 5 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i192 -%r245 = shl i192 %r244, 160 -%r246 = or i192 %r240, %r245 -%r247 = zext i192 %r246 to i224 -%r249 = getelementptr i32, i32* %r1, i32 6 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i224 -%r252 = shl i224 %r251, 192 -%r253 = or i224 %r247, %r252 -%r254 = zext i224 %r253 to i256 -%r256 = getelementptr i32, i32* %r1, i32 7 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i256 -%r259 = shl i256 %r258, 224 -%r260 = or i256 %r254, %r259 -%r261 = zext i256 %r260 to i288 -%r262 = sub i288 %r210, %r261 -%r264 = getelementptr i32, i32* %r1, i32 8 -%r265 = load i32, i32* %r264 -%r266 = zext i32 %r265 to i64 -%r268 = getelementptr i32, i32* %r264, i32 1 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i64 -%r271 = shl i64 %r270, 32 -%r272 = or i64 %r266, %r271 -%r273 = zext i64 %r272 to i96 -%r275 = getelementptr i32, i32* %r264, i32 2 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i96 -%r278 = shl i96 %r277, 64 -%r279 = or i96 %r273, %r278 -%r280 = zext i96 %r279 to i128 -%r282 = getelementptr i32, i32* %r264, i32 3 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i128 -%r285 = shl i128 %r284, 96 -%r286 = or i128 %r280, %r285 -%r287 = zext i128 %r286 to i160 -%r289 = getelementptr i32, i32* %r264, i32 4 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i160 -%r292 = shl i160 %r291, 128 -%r293 = or i160 %r287, %r292 -%r294 = zext i160 %r293 to i192 -%r296 = getelementptr i32, i32* %r264, i32 5 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i192 -%r299 = shl i192 %r298, 160 -%r300 = or i192 %r294, %r299 -%r301 = zext i192 %r300 to i224 -%r303 = getelementptr i32, i32* %r264, i32 6 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i224 -%r306 = shl i224 %r305, 192 -%r307 = or i224 %r301, %r306 -%r308 = zext i224 %r307 to i256 -%r310 = getelementptr i32, i32* %r264, i32 7 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i256 -%r313 = shl i256 %r312, 224 -%r314 = or i256 %r308, %r313 -%r315 = zext i256 %r314 to i288 -%r316 = sub i288 %r262, %r315 -%r317 = zext i288 %r316 to i384 -%r319 = getelementptr i32, i32* %r1, i32 4 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i64 -%r323 = getelementptr i32, i32* %r319, i32 1 -%r324 = load i32, i32* %r323 -%r325 = zext i32 %r324 to i64 -%r326 = shl i64 %r325, 32 -%r327 = or i64 %r321, %r326 -%r328 = zext i64 %r327 to i96 -%r330 = getelementptr i32, i32* %r319, i32 2 -%r331 = load i32, i32* %r330 -%r332 = zext i32 %r331 to i96 -%r333 = shl i96 %r332, 64 -%r334 = or i96 %r328, %r333 -%r335 = zext i96 %r334 to i128 -%r337 = getelementptr i32, i32* %r319, i32 3 -%r338 = load i32, i32* %r337 -%r339 = zext i32 %r338 to i128 -%r340 = shl i128 %r339, 96 -%r341 = or i128 %r335, %r340 -%r342 = zext i128 %r341 to i160 -%r344 = getelementptr i32, i32* %r319, i32 4 -%r345 = load i32, i32* %r344 -%r346 = zext i32 %r345 to i160 -%r347 = shl i160 %r346, 128 -%r348 = or i160 %r342, %r347 -%r349 = zext i160 %r348 to i192 -%r351 = getelementptr i32, i32* %r319, i32 5 -%r352 = load i32, i32* %r351 -%r353 = zext i32 %r352 to i192 -%r354 = shl i192 %r353, 160 -%r355 = or i192 %r349, %r354 -%r356 = zext i192 %r355 to i224 -%r358 = getelementptr i32, i32* %r319, i32 6 -%r359 = load i32, i32* %r358 -%r360 = zext i32 %r359 to i224 -%r361 = shl i224 %r360, 192 -%r362 = or i224 %r356, %r361 -%r363 = zext i224 %r362 to i256 -%r365 = getelementptr i32, i32* %r319, i32 7 -%r366 = load i32, i32* %r365 -%r367 = zext i32 %r366 to i256 -%r368 = shl i256 %r367, 224 -%r369 = or i256 %r363, %r368 -%r370 = zext i256 %r369 to i288 -%r372 = getelementptr i32, i32* %r319, i32 8 -%r373 = load i32, i32* %r372 -%r374 = zext i32 %r373 to i288 -%r375 = shl i288 %r374, 256 -%r376 = or i288 %r370, %r375 -%r377 = zext i288 %r376 to i320 -%r379 = getelementptr i32, i32* %r319, i32 9 -%r380 = load i32, i32* %r379 -%r381 = zext i32 %r380 to i320 -%r382 = shl i320 %r381, 288 -%r383 = or i320 %r377, %r382 -%r384 = zext i320 %r383 to i352 -%r386 = getelementptr i32, i32* %r319, i32 10 -%r387 = load i32, i32* %r386 -%r388 = zext i32 %r387 to i352 -%r389 = shl i352 %r388, 320 -%r390 = or i352 %r384, %r389 -%r391 = zext i352 %r390 to i384 -%r393 = getelementptr i32, i32* %r319, i32 11 -%r394 = load i32, i32* %r393 -%r395 = zext i32 %r394 to i384 -%r396 = shl i384 %r395, 352 -%r397 = or i384 %r391, %r396 -%r398 = add i384 %r317, %r397 -%r400 = getelementptr i32, i32* %r1, i32 4 -%r401 = trunc i384 %r398 to i32 -%r403 = getelementptr i32, i32* %r400, i32 0 -store i32 %r401, i32* %r403 -%r404 = lshr i384 %r398, 32 -%r405 = trunc i384 %r404 to i32 -%r407 = getelementptr i32, i32* %r400, i32 1 -store i32 %r405, i32* %r407 -%r408 = lshr i384 %r404, 32 -%r409 = trunc i384 %r408 to i32 -%r411 = getelementptr i32, i32* %r400, i32 2 -store i32 %r409, i32* %r411 -%r412 = lshr i384 %r408, 32 -%r413 = trunc i384 %r412 to i32 -%r415 = getelementptr i32, i32* %r400, i32 3 -store i32 %r413, i32* %r415 -%r416 = lshr i384 %r412, 32 -%r417 = trunc i384 %r416 to i32 -%r419 = getelementptr i32, i32* %r400, i32 4 -store i32 %r417, i32* %r419 -%r420 = lshr i384 %r416, 32 -%r421 = trunc i384 %r420 to i32 -%r423 = getelementptr i32, i32* %r400, i32 5 -store i32 %r421, i32* %r423 -%r424 = lshr i384 %r420, 32 -%r425 = trunc i384 %r424 to i32 -%r427 = getelementptr i32, i32* %r400, i32 6 -store i32 %r425, i32* %r427 -%r428 = lshr i384 %r424, 32 -%r429 = trunc i384 %r428 to i32 -%r431 = getelementptr i32, i32* %r400, i32 7 -store i32 %r429, i32* %r431 -%r432 = lshr i384 %r428, 32 -%r433 = trunc i384 %r432 to i32 -%r435 = getelementptr i32, i32* %r400, i32 8 -store i32 %r433, i32* %r435 -%r436 = lshr i384 %r432, 32 -%r437 = trunc i384 %r436 to i32 -%r439 = getelementptr i32, i32* %r400, i32 9 -store i32 %r437, i32* %r439 -%r440 = lshr i384 %r436, 32 -%r441 = trunc i384 %r440 to i32 -%r443 = getelementptr i32, i32* %r400, i32 10 -store i32 %r441, i32* %r443 -%r444 = lshr i384 %r440, 32 -%r445 = trunc i384 %r444 to i32 -%r447 = getelementptr i32, i32* %r400, i32 11 -store i32 %r445, i32* %r447 +%r243 = trunc i256 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i256 %r240, 32 +%r246 = getelementptr i32, i32* %r1, i32 6 +%r247 = trunc i256 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i256 %r244, 32 +%r250 = getelementptr i32, i32* %r1, i32 7 +%r251 = trunc i256 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i544 %r219, 256 +%r253 = trunc i544 %r252 to i256 +%r254 = lshr i544 %r219, 512 +%r255 = trunc i544 %r254 to i1 +%r256 = load i32, i32* %r4 +%r257 = zext i32 %r256 to i64 +%r259 = getelementptr i32, i32* %r4, i32 1 +%r260 = load i32, i32* %r259 +%r261 = zext i32 %r260 to i64 +%r262 = shl i64 %r261, 32 +%r263 = or i64 %r257, %r262 +%r264 = zext i64 %r263 to i96 +%r266 = getelementptr i32, i32* %r4, i32 2 +%r267 = load i32, i32* %r266 +%r268 = zext i32 %r267 to i96 +%r269 = shl i96 %r268, 64 +%r270 = or i96 %r264, %r269 +%r271 = zext i96 %r270 to i128 +%r273 = getelementptr i32, i32* %r4, i32 3 +%r274 = load i32, i32* %r273 +%r275 = zext i32 %r274 to i128 +%r276 = shl i128 %r275, 96 +%r277 = or i128 %r271, %r276 +%r278 = zext i128 %r277 to i160 +%r280 = getelementptr i32, i32* %r4, i32 4 +%r281 = load i32, i32* %r280 +%r282 = zext i32 %r281 to i160 +%r283 = shl i160 %r282, 128 +%r284 = or i160 %r278, %r283 +%r285 = zext i160 %r284 to i192 +%r287 = getelementptr i32, i32* %r4, i32 5 +%r288 = load i32, i32* %r287 +%r289 = zext i32 %r288 to i192 +%r290 = shl i192 %r289, 160 +%r291 = or i192 %r285, %r290 +%r292 = zext i192 %r291 to i224 +%r294 = getelementptr i32, i32* %r4, i32 6 +%r295 = load i32, i32* %r294 +%r296 = zext i32 %r295 to i224 +%r297 = shl i224 %r296, 192 +%r298 = or i224 %r292, %r297 +%r299 = zext i224 %r298 to i256 +%r301 = getelementptr i32, i32* %r4, i32 7 +%r302 = load i32, i32* %r301 +%r303 = zext i32 %r302 to i256 +%r304 = shl i256 %r303, 224 +%r305 = or i256 %r299, %r304 +%r307 = select i1 %r255, i256 %r305, i256 0 +%r308 = add i256 %r253, %r307 +%r310 = getelementptr i32, i32* %r1, i32 8 +%r312 = getelementptr i32, i32* %r310, i32 0 +%r313 = trunc i256 %r308 to i32 +store i32 %r313, i32* %r312 +%r314 = lshr i256 %r308, 32 +%r316 = getelementptr i32, i32* %r310, i32 1 +%r317 = trunc i256 %r314 to i32 +store i32 %r317, i32* %r316 +%r318 = lshr i256 %r314, 32 +%r320 = getelementptr i32, i32* %r310, i32 2 +%r321 = trunc i256 %r318 to i32 +store i32 %r321, i32* %r320 +%r322 = lshr i256 %r318, 32 +%r324 = getelementptr i32, i32* %r310, i32 3 +%r325 = trunc i256 %r322 to i32 +store i32 %r325, i32* %r324 +%r326 = lshr i256 %r322, 32 +%r328 = getelementptr i32, i32* %r310, i32 4 +%r329 = trunc i256 %r326 to i32 +store i32 %r329, i32* %r328 +%r330 = lshr i256 %r326, 32 +%r332 = getelementptr i32, i32* %r310, i32 5 +%r333 = trunc i256 %r330 to i32 +store i32 %r333, i32* %r332 +%r334 = lshr i256 %r330, 32 +%r336 = getelementptr i32, i32* %r310, i32 6 +%r337 = trunc i256 %r334 to i32 +store i32 %r337, i32* %r336 +%r338 = lshr i256 %r334, 32 +%r340 = getelementptr i32, i32* %r310, i32 7 +%r341 = trunc i256 %r338 to i32 +store i32 %r341, i32* %r340 ret void } -define void @mcl_fpDbl_sqrPre8L(i32* noalias %r1, i32* noalias %r2) +define i416 @mulPv384x32(i32* noalias %r2, i32 %r3) { -%r4 = getelementptr i32, i32* %r2, i32 4 -%r6 = getelementptr i32, i32* %r2, i32 4 -%r8 = getelementptr i32, i32* %r1, i32 8 -call void @mcl_fpDbl_mulPre4L(i32* %r1, i32* %r2, i32* %r2) -call void @mcl_fpDbl_mulPre4L(i32* %r8, i32* %r4, i32* %r6) -%r9 = load i32, i32* %r4 -%r10 = zext i32 %r9 to i64 -%r12 = getelementptr i32, i32* %r4, i32 1 -%r13 = load i32, i32* %r12 -%r14 = zext i32 %r13 to i64 -%r15 = shl i64 %r14, 32 -%r16 = or i64 %r10, %r15 -%r17 = zext i64 %r16 to i96 -%r19 = getelementptr i32, i32* %r4, i32 2 -%r20 = load i32, i32* %r19 -%r21 = zext i32 %r20 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r17, %r22 -%r24 = zext i96 %r23 to i128 -%r26 = getelementptr i32, i32* %r4, i32 3 -%r27 = load i32, i32* %r26 -%r28 = zext i32 %r27 to i128 -%r29 = shl i128 %r28, 96 -%r30 = or i128 %r24, %r29 -%r31 = zext i128 %r30 to i160 -%r32 = load i32, i32* %r2 -%r33 = zext i32 %r32 to i64 -%r35 = getelementptr i32, i32* %r2, i32 1 -%r36 = load i32, i32* %r35 -%r37 = zext i32 %r36 to i64 -%r38 = shl i64 %r37, 32 -%r39 = or i64 %r33, %r38 -%r40 = zext i64 %r39 to i96 -%r42 = getelementptr i32, i32* %r2, i32 2 -%r43 = load i32, i32* %r42 -%r44 = zext i32 %r43 to i96 -%r45 = shl i96 %r44, 64 -%r46 = or i96 %r40, %r45 -%r47 = zext i96 %r46 to i128 -%r49 = getelementptr i32, i32* %r2, i32 3 -%r50 = load i32, i32* %r49 -%r51 = zext i32 %r50 to i128 -%r52 = shl i128 %r51, 96 -%r53 = or i128 %r47, %r52 -%r54 = zext i128 %r53 to i160 -%r55 = load i32, i32* %r6 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r6, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r6, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r6, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r78 = load i32, i32* %r2 -%r79 = zext i32 %r78 to i64 -%r81 = getelementptr i32, i32* %r2, i32 1 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i64 -%r84 = shl i64 %r83, 32 -%r85 = or i64 %r79, %r84 -%r86 = zext i64 %r85 to i96 -%r88 = getelementptr i32, i32* %r2, i32 2 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i96 -%r91 = shl i96 %r90, 64 -%r92 = or i96 %r86, %r91 -%r93 = zext i96 %r92 to i128 -%r95 = getelementptr i32, i32* %r2, i32 3 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i128 -%r98 = shl i128 %r97, 96 -%r99 = or i128 %r93, %r98 -%r100 = zext i128 %r99 to i160 -%r101 = add i160 %r31, %r54 -%r102 = add i160 %r77, %r100 -%r104 = alloca i32, i32 8 -%r105 = trunc i160 %r101 to i128 -%r106 = trunc i160 %r102 to i128 -%r107 = lshr i160 %r101, 128 -%r108 = trunc i160 %r107 to i1 -%r109 = lshr i160 %r102, 128 -%r110 = trunc i160 %r109 to i1 -%r111 = and i1 %r108, %r110 -%r113 = select i1 %r108, i128 %r106, i128 0 -%r115 = select i1 %r110, i128 %r105, i128 0 -%r117 = alloca i32, i32 4 -%r119 = alloca i32, i32 4 -%r120 = trunc i128 %r105 to i32 -%r122 = getelementptr i32, i32* %r117, i32 0 -store i32 %r120, i32* %r122 -%r123 = lshr i128 %r105, 32 -%r124 = trunc i128 %r123 to i32 -%r126 = getelementptr i32, i32* %r117, i32 1 -store i32 %r124, i32* %r126 -%r127 = lshr i128 %r123, 32 -%r128 = trunc i128 %r127 to i32 -%r130 = getelementptr i32, i32* %r117, i32 2 -store i32 %r128, i32* %r130 -%r131 = lshr i128 %r127, 32 -%r132 = trunc i128 %r131 to i32 -%r134 = getelementptr i32, i32* %r117, i32 3 -store i32 %r132, i32* %r134 -%r135 = trunc i128 %r106 to i32 -%r137 = getelementptr i32, i32* %r119, i32 0 -store i32 %r135, i32* %r137 -%r138 = lshr i128 %r106, 32 -%r139 = trunc i128 %r138 to i32 -%r141 = getelementptr i32, i32* %r119, i32 1 -store i32 %r139, i32* %r141 -%r142 = lshr i128 %r138, 32 -%r143 = trunc i128 %r142 to i32 -%r145 = getelementptr i32, i32* %r119, i32 2 -store i32 %r143, i32* %r145 -%r146 = lshr i128 %r142, 32 -%r147 = trunc i128 %r146 to i32 -%r149 = getelementptr i32, i32* %r119, i32 3 -store i32 %r147, i32* %r149 -call void @mcl_fpDbl_mulPre4L(i32* %r104, i32* %r117, i32* %r119) -%r150 = load i32, i32* %r104 -%r151 = zext i32 %r150 to i64 -%r153 = getelementptr i32, i32* %r104, i32 1 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i64 -%r156 = shl i64 %r155, 32 -%r157 = or i64 %r151, %r156 -%r158 = zext i64 %r157 to i96 -%r160 = getelementptr i32, i32* %r104, i32 2 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i96 -%r163 = shl i96 %r162, 64 -%r164 = or i96 %r158, %r163 -%r165 = zext i96 %r164 to i128 -%r167 = getelementptr i32, i32* %r104, i32 3 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i128 -%r170 = shl i128 %r169, 96 -%r171 = or i128 %r165, %r170 -%r172 = zext i128 %r171 to i160 -%r174 = getelementptr i32, i32* %r104, i32 4 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i160 -%r177 = shl i160 %r176, 128 -%r178 = or i160 %r172, %r177 -%r179 = zext i160 %r178 to i192 -%r181 = getelementptr i32, i32* %r104, i32 5 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i192 -%r184 = shl i192 %r183, 160 -%r185 = or i192 %r179, %r184 -%r186 = zext i192 %r185 to i224 -%r188 = getelementptr i32, i32* %r104, i32 6 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i224 -%r191 = shl i224 %r190, 192 -%r192 = or i224 %r186, %r191 -%r193 = zext i224 %r192 to i256 -%r195 = getelementptr i32, i32* %r104, i32 7 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i256 -%r198 = shl i256 %r197, 224 -%r199 = or i256 %r193, %r198 -%r200 = zext i256 %r199 to i288 -%r201 = zext i1 %r111 to i288 -%r202 = shl i288 %r201, 256 -%r203 = or i288 %r200, %r202 -%r204 = zext i128 %r113 to i288 -%r205 = zext i128 %r115 to i288 -%r206 = shl i288 %r204, 128 -%r207 = shl i288 %r205, 128 -%r208 = add i288 %r203, %r206 -%r209 = add i288 %r208, %r207 -%r210 = load i32, i32* %r1 -%r211 = zext i32 %r210 to i64 -%r213 = getelementptr i32, i32* %r1, i32 1 -%r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i64 -%r216 = shl i64 %r215, 32 -%r217 = or i64 %r211, %r216 -%r218 = zext i64 %r217 to i96 -%r220 = getelementptr i32, i32* %r1, i32 2 -%r221 = load i32, i32* %r220 -%r222 = zext i32 %r221 to i96 -%r223 = shl i96 %r222, 64 -%r224 = or i96 %r218, %r223 -%r225 = zext i96 %r224 to i128 -%r227 = getelementptr i32, i32* %r1, i32 3 -%r228 = load i32, i32* %r227 -%r229 = zext i32 %r228 to i128 -%r230 = shl i128 %r229, 96 -%r231 = or i128 %r225, %r230 -%r232 = zext i128 %r231 to i160 -%r234 = getelementptr i32, i32* %r1, i32 4 -%r235 = load i32, i32* %r234 -%r236 = zext i32 %r235 to i160 -%r237 = shl i160 %r236, 128 -%r238 = or i160 %r232, %r237 -%r239 = zext i160 %r238 to i192 -%r241 = getelementptr i32, i32* %r1, i32 5 -%r242 = load i32, i32* %r241 -%r243 = zext i32 %r242 to i192 -%r244 = shl i192 %r243, 160 -%r245 = or i192 %r239, %r244 -%r246 = zext i192 %r245 to i224 -%r248 = getelementptr i32, i32* %r1, i32 6 -%r249 = load i32, i32* %r248 -%r250 = zext i32 %r249 to i224 -%r251 = shl i224 %r250, 192 -%r252 = or i224 %r246, %r251 -%r253 = zext i224 %r252 to i256 -%r255 = getelementptr i32, i32* %r1, i32 7 -%r256 = load i32, i32* %r255 -%r257 = zext i32 %r256 to i256 -%r258 = shl i256 %r257, 224 -%r259 = or i256 %r253, %r258 -%r260 = zext i256 %r259 to i288 -%r261 = sub i288 %r209, %r260 -%r263 = getelementptr i32, i32* %r1, i32 8 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i64 -%r267 = getelementptr i32, i32* %r263, i32 1 -%r268 = load i32, i32* %r267 -%r269 = zext i32 %r268 to i64 -%r270 = shl i64 %r269, 32 -%r271 = or i64 %r265, %r270 -%r272 = zext i64 %r271 to i96 -%r274 = getelementptr i32, i32* %r263, i32 2 -%r275 = load i32, i32* %r274 -%r276 = zext i32 %r275 to i96 -%r277 = shl i96 %r276, 64 -%r278 = or i96 %r272, %r277 -%r279 = zext i96 %r278 to i128 -%r281 = getelementptr i32, i32* %r263, i32 3 -%r282 = load i32, i32* %r281 -%r283 = zext i32 %r282 to i128 -%r284 = shl i128 %r283, 96 -%r285 = or i128 %r279, %r284 -%r286 = zext i128 %r285 to i160 -%r288 = getelementptr i32, i32* %r263, i32 4 -%r289 = load i32, i32* %r288 -%r290 = zext i32 %r289 to i160 -%r291 = shl i160 %r290, 128 -%r292 = or i160 %r286, %r291 -%r293 = zext i160 %r292 to i192 -%r295 = getelementptr i32, i32* %r263, i32 5 -%r296 = load i32, i32* %r295 -%r297 = zext i32 %r296 to i192 -%r298 = shl i192 %r297, 160 -%r299 = or i192 %r293, %r298 -%r300 = zext i192 %r299 to i224 -%r302 = getelementptr i32, i32* %r263, i32 6 -%r303 = load i32, i32* %r302 -%r304 = zext i32 %r303 to i224 -%r305 = shl i224 %r304, 192 -%r306 = or i224 %r300, %r305 -%r307 = zext i224 %r306 to i256 -%r309 = getelementptr i32, i32* %r263, i32 7 -%r310 = load i32, i32* %r309 -%r311 = zext i32 %r310 to i256 -%r312 = shl i256 %r311, 224 -%r313 = or i256 %r307, %r312 -%r314 = zext i256 %r313 to i288 -%r315 = sub i288 %r261, %r314 -%r316 = zext i288 %r315 to i384 -%r318 = getelementptr i32, i32* %r1, i32 4 -%r319 = load i32, i32* %r318 -%r320 = zext i32 %r319 to i64 -%r322 = getelementptr i32, i32* %r318, i32 1 -%r323 = load i32, i32* %r322 -%r324 = zext i32 %r323 to i64 -%r325 = shl i64 %r324, 32 -%r326 = or i64 %r320, %r325 -%r327 = zext i64 %r326 to i96 -%r329 = getelementptr i32, i32* %r318, i32 2 -%r330 = load i32, i32* %r329 -%r331 = zext i32 %r330 to i96 -%r332 = shl i96 %r331, 64 -%r333 = or i96 %r327, %r332 -%r334 = zext i96 %r333 to i128 -%r336 = getelementptr i32, i32* %r318, i32 3 -%r337 = load i32, i32* %r336 -%r338 = zext i32 %r337 to i128 -%r339 = shl i128 %r338, 96 -%r340 = or i128 %r334, %r339 -%r341 = zext i128 %r340 to i160 -%r343 = getelementptr i32, i32* %r318, i32 4 -%r344 = load i32, i32* %r343 -%r345 = zext i32 %r344 to i160 -%r346 = shl i160 %r345, 128 -%r347 = or i160 %r341, %r346 -%r348 = zext i160 %r347 to i192 -%r350 = getelementptr i32, i32* %r318, i32 5 -%r351 = load i32, i32* %r350 -%r352 = zext i32 %r351 to i192 -%r353 = shl i192 %r352, 160 -%r354 = or i192 %r348, %r353 -%r355 = zext i192 %r354 to i224 -%r357 = getelementptr i32, i32* %r318, i32 6 -%r358 = load i32, i32* %r357 -%r359 = zext i32 %r358 to i224 -%r360 = shl i224 %r359, 192 -%r361 = or i224 %r355, %r360 -%r362 = zext i224 %r361 to i256 -%r364 = getelementptr i32, i32* %r318, i32 7 -%r365 = load i32, i32* %r364 -%r366 = zext i32 %r365 to i256 -%r367 = shl i256 %r366, 224 -%r368 = or i256 %r362, %r367 -%r369 = zext i256 %r368 to i288 -%r371 = getelementptr i32, i32* %r318, i32 8 -%r372 = load i32, i32* %r371 -%r373 = zext i32 %r372 to i288 -%r374 = shl i288 %r373, 256 -%r375 = or i288 %r369, %r374 -%r376 = zext i288 %r375 to i320 -%r378 = getelementptr i32, i32* %r318, i32 9 -%r379 = load i32, i32* %r378 -%r380 = zext i32 %r379 to i320 -%r381 = shl i320 %r380, 288 -%r382 = or i320 %r376, %r381 -%r383 = zext i320 %r382 to i352 -%r385 = getelementptr i32, i32* %r318, i32 10 -%r386 = load i32, i32* %r385 -%r387 = zext i32 %r386 to i352 -%r388 = shl i352 %r387, 320 -%r389 = or i352 %r383, %r388 -%r390 = zext i352 %r389 to i384 -%r392 = getelementptr i32, i32* %r318, i32 11 -%r393 = load i32, i32* %r392 -%r394 = zext i32 %r393 to i384 -%r395 = shl i384 %r394, 352 -%r396 = or i384 %r390, %r395 -%r397 = add i384 %r316, %r396 -%r399 = getelementptr i32, i32* %r1, i32 4 -%r400 = trunc i384 %r397 to i32 -%r402 = getelementptr i32, i32* %r399, i32 0 -store i32 %r400, i32* %r402 -%r403 = lshr i384 %r397, 32 -%r404 = trunc i384 %r403 to i32 -%r406 = getelementptr i32, i32* %r399, i32 1 -store i32 %r404, i32* %r406 -%r407 = lshr i384 %r403, 32 -%r408 = trunc i384 %r407 to i32 -%r410 = getelementptr i32, i32* %r399, i32 2 -store i32 %r408, i32* %r410 -%r411 = lshr i384 %r407, 32 -%r412 = trunc i384 %r411 to i32 -%r414 = getelementptr i32, i32* %r399, i32 3 -store i32 %r412, i32* %r414 -%r415 = lshr i384 %r411, 32 -%r416 = trunc i384 %r415 to i32 -%r418 = getelementptr i32, i32* %r399, i32 4 -store i32 %r416, i32* %r418 -%r419 = lshr i384 %r415, 32 -%r420 = trunc i384 %r419 to i32 -%r422 = getelementptr i32, i32* %r399, i32 5 -store i32 %r420, i32* %r422 -%r423 = lshr i384 %r419, 32 -%r424 = trunc i384 %r423 to i32 -%r426 = getelementptr i32, i32* %r399, i32 6 -store i32 %r424, i32* %r426 -%r427 = lshr i384 %r423, 32 -%r428 = trunc i384 %r427 to i32 -%r430 = getelementptr i32, i32* %r399, i32 7 -store i32 %r428, i32* %r430 -%r431 = lshr i384 %r427, 32 -%r432 = trunc i384 %r431 to i32 -%r434 = getelementptr i32, i32* %r399, i32 8 -store i32 %r432, i32* %r434 -%r435 = lshr i384 %r431, 32 -%r436 = trunc i384 %r435 to i32 -%r438 = getelementptr i32, i32* %r399, i32 9 -store i32 %r436, i32* %r438 -%r439 = lshr i384 %r435, 32 -%r440 = trunc i384 %r439 to i32 -%r442 = getelementptr i32, i32* %r399, i32 10 -store i32 %r440, i32* %r442 -%r443 = lshr i384 %r439, 32 -%r444 = trunc i384 %r443 to i32 -%r446 = getelementptr i32, i32* %r399, i32 11 -store i32 %r444, i32* %r446 +%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) +%r6 = trunc i64 %r5 to i32 +%r7 = call i32 @extractHigh32(i64 %r5) +%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) +%r10 = trunc i64 %r9 to i32 +%r11 = call i32 @extractHigh32(i64 %r9) +%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) +%r14 = trunc i64 %r13 to i32 +%r15 = call i32 @extractHigh32(i64 %r13) +%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) +%r18 = trunc i64 %r17 to i32 +%r19 = call i32 @extractHigh32(i64 %r17) +%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) +%r22 = trunc i64 %r21 to i32 +%r23 = call i32 @extractHigh32(i64 %r21) +%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) +%r26 = trunc i64 %r25 to i32 +%r27 = call i32 @extractHigh32(i64 %r25) +%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) +%r30 = trunc i64 %r29 to i32 +%r31 = call i32 @extractHigh32(i64 %r29) +%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) +%r34 = trunc i64 %r33 to i32 +%r35 = call i32 @extractHigh32(i64 %r33) +%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) +%r38 = trunc i64 %r37 to i32 +%r39 = call i32 @extractHigh32(i64 %r37) +%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) +%r42 = trunc i64 %r41 to i32 +%r43 = call i32 @extractHigh32(i64 %r41) +%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) +%r46 = trunc i64 %r45 to i32 +%r47 = call i32 @extractHigh32(i64 %r45) +%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) +%r50 = trunc i64 %r49 to i32 +%r51 = call i32 @extractHigh32(i64 %r49) +%r52 = zext i32 %r6 to i64 +%r53 = zext i32 %r10 to i64 +%r54 = shl i64 %r53, 32 +%r55 = or i64 %r52, %r54 +%r56 = zext i64 %r55 to i96 +%r57 = zext i32 %r14 to i96 +%r58 = shl i96 %r57, 64 +%r59 = or i96 %r56, %r58 +%r60 = zext i96 %r59 to i128 +%r61 = zext i32 %r18 to i128 +%r62 = shl i128 %r61, 96 +%r63 = or i128 %r60, %r62 +%r64 = zext i128 %r63 to i160 +%r65 = zext i32 %r22 to i160 +%r66 = shl i160 %r65, 128 +%r67 = or i160 %r64, %r66 +%r68 = zext i160 %r67 to i192 +%r69 = zext i32 %r26 to i192 +%r70 = shl i192 %r69, 160 +%r71 = or i192 %r68, %r70 +%r72 = zext i192 %r71 to i224 +%r73 = zext i32 %r30 to i224 +%r74 = shl i224 %r73, 192 +%r75 = or i224 %r72, %r74 +%r76 = zext i224 %r75 to i256 +%r77 = zext i32 %r34 to i256 +%r78 = shl i256 %r77, 224 +%r79 = or i256 %r76, %r78 +%r80 = zext i256 %r79 to i288 +%r81 = zext i32 %r38 to i288 +%r82 = shl i288 %r81, 256 +%r83 = or i288 %r80, %r82 +%r84 = zext i288 %r83 to i320 +%r85 = zext i32 %r42 to i320 +%r86 = shl i320 %r85, 288 +%r87 = or i320 %r84, %r86 +%r88 = zext i320 %r87 to i352 +%r89 = zext i32 %r46 to i352 +%r90 = shl i352 %r89, 320 +%r91 = or i352 %r88, %r90 +%r92 = zext i352 %r91 to i384 +%r93 = zext i32 %r50 to i384 +%r94 = shl i384 %r93, 352 +%r95 = or i384 %r92, %r94 +%r96 = zext i32 %r7 to i64 +%r97 = zext i32 %r11 to i64 +%r98 = shl i64 %r97, 32 +%r99 = or i64 %r96, %r98 +%r100 = zext i64 %r99 to i96 +%r101 = zext i32 %r15 to i96 +%r102 = shl i96 %r101, 64 +%r103 = or i96 %r100, %r102 +%r104 = zext i96 %r103 to i128 +%r105 = zext i32 %r19 to i128 +%r106 = shl i128 %r105, 96 +%r107 = or i128 %r104, %r106 +%r108 = zext i128 %r107 to i160 +%r109 = zext i32 %r23 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r108, %r110 +%r112 = zext i160 %r111 to i192 +%r113 = zext i32 %r27 to i192 +%r114 = shl i192 %r113, 160 +%r115 = or i192 %r112, %r114 +%r116 = zext i192 %r115 to i224 +%r117 = zext i32 %r31 to i224 +%r118 = shl i224 %r117, 192 +%r119 = or i224 %r116, %r118 +%r120 = zext i224 %r119 to i256 +%r121 = zext i32 %r35 to i256 +%r122 = shl i256 %r121, 224 +%r123 = or i256 %r120, %r122 +%r124 = zext i256 %r123 to i288 +%r125 = zext i32 %r39 to i288 +%r126 = shl i288 %r125, 256 +%r127 = or i288 %r124, %r126 +%r128 = zext i288 %r127 to i320 +%r129 = zext i32 %r43 to i320 +%r130 = shl i320 %r129, 288 +%r131 = or i320 %r128, %r130 +%r132 = zext i320 %r131 to i352 +%r133 = zext i32 %r47 to i352 +%r134 = shl i352 %r133, 320 +%r135 = or i352 %r132, %r134 +%r136 = zext i352 %r135 to i384 +%r137 = zext i32 %r51 to i384 +%r138 = shl i384 %r137, 352 +%r139 = or i384 %r136, %r138 +%r140 = zext i384 %r95 to i416 +%r141 = zext i384 %r139 to i416 +%r142 = shl i416 %r141, 32 +%r143 = add i416 %r140, %r142 +ret i416 %r143 +} +define void @mcl_fp_mulUnitPre12L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +{ +%r4 = call i416 @mulPv384x32(i32* %r2, i32 %r3) +%r6 = getelementptr i32, i32* %r1, i32 0 +%r7 = trunc i416 %r4 to i32 +store i32 %r7, i32* %r6 +%r8 = lshr i416 %r4, 32 +%r10 = getelementptr i32, i32* %r1, i32 1 +%r11 = trunc i416 %r8 to i32 +store i32 %r11, i32* %r10 +%r12 = lshr i416 %r8, 32 +%r14 = getelementptr i32, i32* %r1, i32 2 +%r15 = trunc i416 %r12 to i32 +store i32 %r15, i32* %r14 +%r16 = lshr i416 %r12, 32 +%r18 = getelementptr i32, i32* %r1, i32 3 +%r19 = trunc i416 %r16 to i32 +store i32 %r19, i32* %r18 +%r20 = lshr i416 %r16, 32 +%r22 = getelementptr i32, i32* %r1, i32 4 +%r23 = trunc i416 %r20 to i32 +store i32 %r23, i32* %r22 +%r24 = lshr i416 %r20, 32 +%r26 = getelementptr i32, i32* %r1, i32 5 +%r27 = trunc i416 %r24 to i32 +store i32 %r27, i32* %r26 +%r28 = lshr i416 %r24, 32 +%r30 = getelementptr i32, i32* %r1, i32 6 +%r31 = trunc i416 %r28 to i32 +store i32 %r31, i32* %r30 +%r32 = lshr i416 %r28, 32 +%r34 = getelementptr i32, i32* %r1, i32 7 +%r35 = trunc i416 %r32 to i32 +store i32 %r35, i32* %r34 +%r36 = lshr i416 %r32, 32 +%r38 = getelementptr i32, i32* %r1, i32 8 +%r39 = trunc i416 %r36 to i32 +store i32 %r39, i32* %r38 +%r40 = lshr i416 %r36, 32 +%r42 = getelementptr i32, i32* %r1, i32 9 +%r43 = trunc i416 %r40 to i32 +store i32 %r43, i32* %r42 +%r44 = lshr i416 %r40, 32 +%r46 = getelementptr i32, i32* %r1, i32 10 +%r47 = trunc i416 %r44 to i32 +store i32 %r47, i32* %r46 +%r48 = lshr i416 %r44, 32 +%r50 = getelementptr i32, i32* %r1, i32 11 +%r51 = trunc i416 %r48 to i32 +store i32 %r51, i32* %r50 +%r52 = lshr i416 %r48, 32 +%r54 = getelementptr i32, i32* %r1, i32 12 +%r55 = trunc i416 %r52 to i32 +store i32 %r55, i32* %r54 ret void } -define void @mcl_fp_mont8L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fpDbl_mulPre12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i288 @mulPv256x32(i32* %r2, i32 %r10) -%r12 = zext i288 %r11 to i320 -%r13 = trunc i288 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i288 @mulPv256x32(i32* %r4, i32 %r14) -%r16 = zext i288 %r15 to i320 -%r17 = add i320 %r12, %r16 -%r18 = lshr i320 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 +%r5 = getelementptr i32, i32* %r2, i32 6 +%r7 = getelementptr i32, i32* %r3, i32 6 +%r9 = getelementptr i32, i32* %r1, i32 12 +call void @mcl_fpDbl_mulPre6L(i32* %r1, i32* %r2, i32* %r3) +call void @mcl_fpDbl_mulPre6L(i32* %r9, i32* %r5, i32* %r7) +%r10 = load i32, i32* %r5 +%r11 = zext i32 %r10 to i64 +%r13 = getelementptr i32, i32* %r5, i32 1 +%r14 = load i32, i32* %r13 +%r15 = zext i32 %r14 to i64 +%r16 = shl i64 %r15, 32 +%r17 = or i64 %r11, %r16 +%r18 = zext i64 %r17 to i96 +%r20 = getelementptr i32, i32* %r5, i32 2 %r21 = load i32, i32* %r20 -%r22 = call i288 @mulPv256x32(i32* %r2, i32 %r21) -%r23 = zext i288 %r22 to i320 -%r24 = add i320 %r18, %r23 -%r25 = trunc i320 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i288 @mulPv256x32(i32* %r4, i32 %r26) -%r28 = zext i288 %r27 to i320 -%r29 = add i320 %r24, %r28 -%r30 = lshr i320 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i288 @mulPv256x32(i32* %r2, i32 %r33) -%r35 = zext i288 %r34 to i320 -%r36 = add i320 %r30, %r35 -%r37 = trunc i320 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i288 @mulPv256x32(i32* %r4, i32 %r38) -%r40 = zext i288 %r39 to i320 -%r41 = add i320 %r36, %r40 -%r42 = lshr i320 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i288 @mulPv256x32(i32* %r2, i32 %r45) -%r47 = zext i288 %r46 to i320 -%r48 = add i320 %r42, %r47 -%r49 = trunc i320 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i288 @mulPv256x32(i32* %r4, i32 %r50) -%r52 = zext i288 %r51 to i320 -%r53 = add i320 %r48, %r52 -%r54 = lshr i320 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i288 @mulPv256x32(i32* %r2, i32 %r57) -%r59 = zext i288 %r58 to i320 -%r60 = add i320 %r54, %r59 -%r61 = trunc i320 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i288 @mulPv256x32(i32* %r4, i32 %r62) -%r64 = zext i288 %r63 to i320 -%r65 = add i320 %r60, %r64 -%r66 = lshr i320 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i288 @mulPv256x32(i32* %r2, i32 %r69) -%r71 = zext i288 %r70 to i320 -%r72 = add i320 %r66, %r71 -%r73 = trunc i320 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i288 @mulPv256x32(i32* %r4, i32 %r74) -%r76 = zext i288 %r75 to i320 -%r77 = add i320 %r72, %r76 -%r78 = lshr i320 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i288 @mulPv256x32(i32* %r2, i32 %r81) -%r83 = zext i288 %r82 to i320 -%r84 = add i320 %r78, %r83 -%r85 = trunc i320 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i288 @mulPv256x32(i32* %r4, i32 %r86) -%r88 = zext i288 %r87 to i320 -%r89 = add i320 %r84, %r88 -%r90 = lshr i320 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i288 @mulPv256x32(i32* %r2, i32 %r93) -%r95 = zext i288 %r94 to i320 -%r96 = add i320 %r90, %r95 -%r97 = trunc i320 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i288 @mulPv256x32(i32* %r4, i32 %r98) -%r100 = zext i288 %r99 to i320 -%r101 = add i320 %r96, %r100 -%r102 = lshr i320 %r101, 32 -%r103 = trunc i320 %r102 to i288 -%r104 = load i32, i32* %r4 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r4, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r4, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r4, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r4, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r4, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r142 = getelementptr i32, i32* %r4, i32 6 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i224 -%r145 = shl i224 %r144, 192 -%r146 = or i224 %r140, %r145 -%r147 = zext i224 %r146 to i256 -%r149 = getelementptr i32, i32* %r4, i32 7 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i256 -%r152 = shl i256 %r151, 224 -%r153 = or i256 %r147, %r152 -%r154 = zext i256 %r153 to i288 -%r155 = sub i288 %r103, %r154 -%r156 = lshr i288 %r155, 256 -%r157 = trunc i288 %r156 to i1 -%r158 = select i1 %r157, i288 %r103, i288 %r155 -%r159 = trunc i288 %r158 to i256 -%r160 = trunc i256 %r159 to i32 -%r162 = getelementptr i32, i32* %r1, i32 0 -store i32 %r160, i32* %r162 -%r163 = lshr i256 %r159, 32 -%r164 = trunc i256 %r163 to i32 -%r166 = getelementptr i32, i32* %r1, i32 1 -store i32 %r164, i32* %r166 -%r167 = lshr i256 %r163, 32 -%r168 = trunc i256 %r167 to i32 -%r170 = getelementptr i32, i32* %r1, i32 2 -store i32 %r168, i32* %r170 -%r171 = lshr i256 %r167, 32 -%r172 = trunc i256 %r171 to i32 -%r174 = getelementptr i32, i32* %r1, i32 3 -store i32 %r172, i32* %r174 -%r175 = lshr i256 %r171, 32 -%r176 = trunc i256 %r175 to i32 -%r178 = getelementptr i32, i32* %r1, i32 4 -store i32 %r176, i32* %r178 -%r179 = lshr i256 %r175, 32 -%r180 = trunc i256 %r179 to i32 -%r182 = getelementptr i32, i32* %r1, i32 5 -store i32 %r180, i32* %r182 -%r183 = lshr i256 %r179, 32 -%r184 = trunc i256 %r183 to i32 -%r186 = getelementptr i32, i32* %r1, i32 6 -store i32 %r184, i32* %r186 -%r187 = lshr i256 %r183, 32 -%r188 = trunc i256 %r187 to i32 -%r190 = getelementptr i32, i32* %r1, i32 7 -store i32 %r188, i32* %r190 -ret void -} -define void @mcl_fp_montNF8L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i288 @mulPv256x32(i32* %r2, i32 %r8) -%r10 = trunc i288 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i288 @mulPv256x32(i32* %r4, i32 %r11) -%r13 = add i288 %r9, %r12 -%r14 = lshr i288 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i288 @mulPv256x32(i32* %r2, i32 %r17) -%r19 = add i288 %r14, %r18 -%r20 = trunc i288 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i288 @mulPv256x32(i32* %r4, i32 %r21) -%r23 = add i288 %r19, %r22 -%r24 = lshr i288 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i288 @mulPv256x32(i32* %r2, i32 %r27) -%r29 = add i288 %r24, %r28 -%r30 = trunc i288 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i288 @mulPv256x32(i32* %r4, i32 %r31) -%r33 = add i288 %r29, %r32 -%r34 = lshr i288 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i288 @mulPv256x32(i32* %r2, i32 %r37) -%r39 = add i288 %r34, %r38 -%r40 = trunc i288 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i288 @mulPv256x32(i32* %r4, i32 %r41) -%r43 = add i288 %r39, %r42 -%r44 = lshr i288 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i288 @mulPv256x32(i32* %r2, i32 %r47) -%r49 = add i288 %r44, %r48 -%r50 = trunc i288 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i288 @mulPv256x32(i32* %r4, i32 %r51) -%r53 = add i288 %r49, %r52 -%r54 = lshr i288 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i288 @mulPv256x32(i32* %r2, i32 %r57) -%r59 = add i288 %r54, %r58 -%r60 = trunc i288 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i288 @mulPv256x32(i32* %r4, i32 %r61) -%r63 = add i288 %r59, %r62 -%r64 = lshr i288 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i288 @mulPv256x32(i32* %r2, i32 %r67) -%r69 = add i288 %r64, %r68 -%r70 = trunc i288 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i288 @mulPv256x32(i32* %r4, i32 %r71) -%r73 = add i288 %r69, %r72 -%r74 = lshr i288 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i288 @mulPv256x32(i32* %r2, i32 %r77) -%r79 = add i288 %r74, %r78 -%r80 = trunc i288 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i288 @mulPv256x32(i32* %r4, i32 %r81) -%r83 = add i288 %r79, %r82 -%r84 = lshr i288 %r83, 32 -%r85 = trunc i288 %r84 to i256 -%r86 = load i32, i32* %r4 -%r87 = zext i32 %r86 to i64 -%r89 = getelementptr i32, i32* %r4, i32 1 -%r90 = load i32, i32* %r89 -%r91 = zext i32 %r90 to i64 -%r92 = shl i64 %r91, 32 -%r93 = or i64 %r87, %r92 -%r94 = zext i64 %r93 to i96 -%r96 = getelementptr i32, i32* %r4, i32 2 -%r97 = load i32, i32* %r96 -%r98 = zext i32 %r97 to i96 -%r99 = shl i96 %r98, 64 -%r100 = or i96 %r94, %r99 -%r101 = zext i96 %r100 to i128 -%r103 = getelementptr i32, i32* %r4, i32 3 -%r104 = load i32, i32* %r103 -%r105 = zext i32 %r104 to i128 -%r106 = shl i128 %r105, 96 -%r107 = or i128 %r101, %r106 -%r108 = zext i128 %r107 to i160 -%r110 = getelementptr i32, i32* %r4, i32 4 -%r111 = load i32, i32* %r110 -%r112 = zext i32 %r111 to i160 -%r113 = shl i160 %r112, 128 -%r114 = or i160 %r108, %r113 -%r115 = zext i160 %r114 to i192 -%r117 = getelementptr i32, i32* %r4, i32 5 -%r118 = load i32, i32* %r117 -%r119 = zext i32 %r118 to i192 -%r120 = shl i192 %r119, 160 -%r121 = or i192 %r115, %r120 -%r122 = zext i192 %r121 to i224 -%r124 = getelementptr i32, i32* %r4, i32 6 -%r125 = load i32, i32* %r124 -%r126 = zext i32 %r125 to i224 -%r127 = shl i224 %r126, 192 -%r128 = or i224 %r122, %r127 -%r129 = zext i224 %r128 to i256 -%r131 = getelementptr i32, i32* %r4, i32 7 -%r132 = load i32, i32* %r131 -%r133 = zext i32 %r132 to i256 -%r134 = shl i256 %r133, 224 -%r135 = or i256 %r129, %r134 -%r136 = sub i256 %r85, %r135 -%r137 = lshr i256 %r136, 255 -%r138 = trunc i256 %r137 to i1 -%r139 = select i1 %r138, i256 %r85, i256 %r136 -%r140 = trunc i256 %r139 to i32 -%r142 = getelementptr i32, i32* %r1, i32 0 -store i32 %r140, i32* %r142 -%r143 = lshr i256 %r139, 32 -%r144 = trunc i256 %r143 to i32 -%r146 = getelementptr i32, i32* %r1, i32 1 -store i32 %r144, i32* %r146 -%r147 = lshr i256 %r143, 32 -%r148 = trunc i256 %r147 to i32 -%r150 = getelementptr i32, i32* %r1, i32 2 -store i32 %r148, i32* %r150 -%r151 = lshr i256 %r147, 32 -%r152 = trunc i256 %r151 to i32 -%r154 = getelementptr i32, i32* %r1, i32 3 -store i32 %r152, i32* %r154 -%r155 = lshr i256 %r151, 32 -%r156 = trunc i256 %r155 to i32 -%r158 = getelementptr i32, i32* %r1, i32 4 -store i32 %r156, i32* %r158 -%r159 = lshr i256 %r155, 32 -%r160 = trunc i256 %r159 to i32 -%r162 = getelementptr i32, i32* %r1, i32 5 -store i32 %r160, i32* %r162 -%r163 = lshr i256 %r159, 32 -%r164 = trunc i256 %r163 to i32 -%r166 = getelementptr i32, i32* %r1, i32 6 -store i32 %r164, i32* %r166 -%r167 = lshr i256 %r163, 32 -%r168 = trunc i256 %r167 to i32 -%r170 = getelementptr i32, i32* %r1, i32 7 -store i32 %r168, i32* %r170 -ret void -} -define void @mcl_fp_montRed8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = load i32, i32* %r2 -%r58 = zext i32 %r57 to i64 -%r60 = getelementptr i32, i32* %r2, i32 1 -%r61 = load i32, i32* %r60 -%r62 = zext i32 %r61 to i64 -%r63 = shl i64 %r62, 32 -%r64 = or i64 %r58, %r63 -%r65 = zext i64 %r64 to i96 -%r67 = getelementptr i32, i32* %r2, i32 2 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i96 -%r70 = shl i96 %r69, 64 -%r71 = or i96 %r65, %r70 -%r72 = zext i96 %r71 to i128 -%r74 = getelementptr i32, i32* %r2, i32 3 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i128 -%r77 = shl i128 %r76, 96 -%r78 = or i128 %r72, %r77 -%r79 = zext i128 %r78 to i160 -%r81 = getelementptr i32, i32* %r2, i32 4 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i160 -%r84 = shl i160 %r83, 128 -%r85 = or i160 %r79, %r84 -%r86 = zext i160 %r85 to i192 -%r88 = getelementptr i32, i32* %r2, i32 5 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i192 -%r91 = shl i192 %r90, 160 -%r92 = or i192 %r86, %r91 -%r93 = zext i192 %r92 to i224 -%r95 = getelementptr i32, i32* %r2, i32 6 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i224 -%r98 = shl i224 %r97, 192 -%r99 = or i224 %r93, %r98 -%r100 = zext i224 %r99 to i256 -%r102 = getelementptr i32, i32* %r2, i32 7 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i256 -%r105 = shl i256 %r104, 224 -%r106 = or i256 %r100, %r105 -%r107 = zext i256 %r106 to i288 -%r109 = getelementptr i32, i32* %r2, i32 8 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i288 -%r112 = shl i288 %r111, 256 -%r113 = or i288 %r107, %r112 -%r114 = zext i288 %r113 to i320 -%r116 = getelementptr i32, i32* %r2, i32 9 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i320 -%r119 = shl i320 %r118, 288 -%r120 = or i320 %r114, %r119 -%r121 = zext i320 %r120 to i352 -%r123 = getelementptr i32, i32* %r2, i32 10 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i352 -%r126 = shl i352 %r125, 320 -%r127 = or i352 %r121, %r126 -%r128 = zext i352 %r127 to i384 -%r130 = getelementptr i32, i32* %r2, i32 11 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i384 -%r133 = shl i384 %r132, 352 -%r134 = or i384 %r128, %r133 -%r135 = zext i384 %r134 to i416 -%r137 = getelementptr i32, i32* %r2, i32 12 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i416 -%r140 = shl i416 %r139, 384 -%r141 = or i416 %r135, %r140 -%r142 = zext i416 %r141 to i448 -%r144 = getelementptr i32, i32* %r2, i32 13 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i448 -%r147 = shl i448 %r146, 416 -%r148 = or i448 %r142, %r147 -%r149 = zext i448 %r148 to i480 -%r151 = getelementptr i32, i32* %r2, i32 14 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i480 -%r154 = shl i480 %r153, 448 -%r155 = or i480 %r149, %r154 -%r156 = zext i480 %r155 to i512 -%r158 = getelementptr i32, i32* %r2, i32 15 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i512 -%r161 = shl i512 %r160, 480 -%r162 = or i512 %r156, %r161 -%r163 = zext i512 %r162 to i544 -%r164 = trunc i544 %r163 to i32 -%r165 = mul i32 %r164, %r6 -%r166 = call i288 @mulPv256x32(i32* %r3, i32 %r165) -%r167 = zext i288 %r166 to i544 -%r168 = add i544 %r163, %r167 -%r169 = lshr i544 %r168, 32 -%r170 = trunc i544 %r169 to i512 -%r171 = trunc i512 %r170 to i32 -%r172 = mul i32 %r171, %r6 -%r173 = call i288 @mulPv256x32(i32* %r3, i32 %r172) -%r174 = zext i288 %r173 to i512 -%r175 = add i512 %r170, %r174 -%r176 = lshr i512 %r175, 32 -%r177 = trunc i512 %r176 to i480 -%r178 = trunc i480 %r177 to i32 -%r179 = mul i32 %r178, %r6 -%r180 = call i288 @mulPv256x32(i32* %r3, i32 %r179) -%r181 = zext i288 %r180 to i480 -%r182 = add i480 %r177, %r181 -%r183 = lshr i480 %r182, 32 -%r184 = trunc i480 %r183 to i448 -%r185 = trunc i448 %r184 to i32 -%r186 = mul i32 %r185, %r6 -%r187 = call i288 @mulPv256x32(i32* %r3, i32 %r186) -%r188 = zext i288 %r187 to i448 -%r189 = add i448 %r184, %r188 -%r190 = lshr i448 %r189, 32 -%r191 = trunc i448 %r190 to i416 -%r192 = trunc i416 %r191 to i32 -%r193 = mul i32 %r192, %r6 -%r194 = call i288 @mulPv256x32(i32* %r3, i32 %r193) -%r195 = zext i288 %r194 to i416 -%r196 = add i416 %r191, %r195 -%r197 = lshr i416 %r196, 32 -%r198 = trunc i416 %r197 to i384 -%r199 = trunc i384 %r198 to i32 -%r200 = mul i32 %r199, %r6 -%r201 = call i288 @mulPv256x32(i32* %r3, i32 %r200) -%r202 = zext i288 %r201 to i384 -%r203 = add i384 %r198, %r202 -%r204 = lshr i384 %r203, 32 -%r205 = trunc i384 %r204 to i352 -%r206 = trunc i352 %r205 to i32 -%r207 = mul i32 %r206, %r6 -%r208 = call i288 @mulPv256x32(i32* %r3, i32 %r207) -%r209 = zext i288 %r208 to i352 -%r210 = add i352 %r205, %r209 -%r211 = lshr i352 %r210, 32 -%r212 = trunc i352 %r211 to i320 -%r213 = trunc i320 %r212 to i32 -%r214 = mul i32 %r213, %r6 -%r215 = call i288 @mulPv256x32(i32* %r3, i32 %r214) -%r216 = zext i288 %r215 to i320 -%r217 = add i320 %r212, %r216 -%r218 = lshr i320 %r217, 32 -%r219 = trunc i320 %r218 to i288 -%r220 = zext i256 %r56 to i288 -%r221 = sub i288 %r219, %r220 -%r222 = lshr i288 %r221, 256 -%r223 = trunc i288 %r222 to i1 -%r224 = select i1 %r223, i288 %r219, i288 %r221 -%r225 = trunc i288 %r224 to i256 -%r226 = trunc i256 %r225 to i32 -%r228 = getelementptr i32, i32* %r1, i32 0 -store i32 %r226, i32* %r228 -%r229 = lshr i256 %r225, 32 -%r230 = trunc i256 %r229 to i32 -%r232 = getelementptr i32, i32* %r1, i32 1 -store i32 %r230, i32* %r232 -%r233 = lshr i256 %r229, 32 -%r234 = trunc i256 %r233 to i32 -%r236 = getelementptr i32, i32* %r1, i32 2 -store i32 %r234, i32* %r236 -%r237 = lshr i256 %r233, 32 -%r238 = trunc i256 %r237 to i32 -%r240 = getelementptr i32, i32* %r1, i32 3 -store i32 %r238, i32* %r240 -%r241 = lshr i256 %r237, 32 -%r242 = trunc i256 %r241 to i32 -%r244 = getelementptr i32, i32* %r1, i32 4 -store i32 %r242, i32* %r244 -%r245 = lshr i256 %r241, 32 -%r246 = trunc i256 %r245 to i32 -%r248 = getelementptr i32, i32* %r1, i32 5 -store i32 %r246, i32* %r248 -%r249 = lshr i256 %r245, 32 -%r250 = trunc i256 %r249 to i32 -%r252 = getelementptr i32, i32* %r1, i32 6 -store i32 %r250, i32* %r252 -%r253 = lshr i256 %r249, 32 -%r254 = trunc i256 %r253 to i32 -%r256 = getelementptr i32, i32* %r1, i32 7 -store i32 %r254, i32* %r256 -ret void -} -define i32 @mcl_fp_addPre8L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r56 = load i32, i32* %r4 -%r57 = zext i32 %r56 to i64 -%r59 = getelementptr i32, i32* %r4, i32 1 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r57, %r62 -%r64 = zext i64 %r63 to i96 -%r66 = getelementptr i32, i32* %r4, i32 2 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i96 -%r69 = shl i96 %r68, 64 -%r70 = or i96 %r64, %r69 -%r71 = zext i96 %r70 to i128 -%r73 = getelementptr i32, i32* %r4, i32 3 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i128 -%r76 = shl i128 %r75, 96 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i160 -%r80 = getelementptr i32, i32* %r4, i32 4 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i160 -%r83 = shl i160 %r82, 128 -%r84 = or i160 %r78, %r83 -%r85 = zext i160 %r84 to i192 -%r87 = getelementptr i32, i32* %r4, i32 5 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i192 -%r90 = shl i192 %r89, 160 -%r91 = or i192 %r85, %r90 -%r92 = zext i192 %r91 to i224 -%r94 = getelementptr i32, i32* %r4, i32 6 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i224 -%r97 = shl i224 %r96, 192 -%r98 = or i224 %r92, %r97 -%r99 = zext i224 %r98 to i256 -%r101 = getelementptr i32, i32* %r4, i32 7 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i256 -%r104 = shl i256 %r103, 224 -%r105 = or i256 %r99, %r104 -%r106 = zext i256 %r105 to i288 -%r107 = add i288 %r55, %r106 -%r108 = trunc i288 %r107 to i256 -%r109 = trunc i256 %r108 to i32 -%r111 = getelementptr i32, i32* %r2, i32 0 -store i32 %r109, i32* %r111 -%r112 = lshr i256 %r108, 32 -%r113 = trunc i256 %r112 to i32 -%r115 = getelementptr i32, i32* %r2, i32 1 -store i32 %r113, i32* %r115 -%r116 = lshr i256 %r112, 32 -%r117 = trunc i256 %r116 to i32 -%r119 = getelementptr i32, i32* %r2, i32 2 -store i32 %r117, i32* %r119 -%r120 = lshr i256 %r116, 32 -%r121 = trunc i256 %r120 to i32 -%r123 = getelementptr i32, i32* %r2, i32 3 -store i32 %r121, i32* %r123 -%r124 = lshr i256 %r120, 32 -%r125 = trunc i256 %r124 to i32 -%r127 = getelementptr i32, i32* %r2, i32 4 -store i32 %r125, i32* %r127 -%r128 = lshr i256 %r124, 32 -%r129 = trunc i256 %r128 to i32 -%r131 = getelementptr i32, i32* %r2, i32 5 -store i32 %r129, i32* %r131 -%r132 = lshr i256 %r128, 32 -%r133 = trunc i256 %r132 to i32 -%r135 = getelementptr i32, i32* %r2, i32 6 -store i32 %r133, i32* %r135 -%r136 = lshr i256 %r132, 32 -%r137 = trunc i256 %r136 to i32 -%r139 = getelementptr i32, i32* %r2, i32 7 -store i32 %r137, i32* %r139 -%r140 = lshr i288 %r107, 256 -%r141 = trunc i288 %r140 to i32 -ret i32 %r141 -} -define i32 @mcl_fp_subPre8L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r56 = load i32, i32* %r4 -%r57 = zext i32 %r56 to i64 -%r59 = getelementptr i32, i32* %r4, i32 1 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r57, %r62 -%r64 = zext i64 %r63 to i96 -%r66 = getelementptr i32, i32* %r4, i32 2 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i96 -%r69 = shl i96 %r68, 64 -%r70 = or i96 %r64, %r69 -%r71 = zext i96 %r70 to i128 -%r73 = getelementptr i32, i32* %r4, i32 3 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i128 -%r76 = shl i128 %r75, 96 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i160 -%r80 = getelementptr i32, i32* %r4, i32 4 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i160 -%r83 = shl i160 %r82, 128 -%r84 = or i160 %r78, %r83 -%r85 = zext i160 %r84 to i192 -%r87 = getelementptr i32, i32* %r4, i32 5 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i192 -%r90 = shl i192 %r89, 160 -%r91 = or i192 %r85, %r90 -%r92 = zext i192 %r91 to i224 -%r94 = getelementptr i32, i32* %r4, i32 6 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i224 -%r97 = shl i224 %r96, 192 -%r98 = or i224 %r92, %r97 -%r99 = zext i224 %r98 to i256 -%r101 = getelementptr i32, i32* %r4, i32 7 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i256 -%r104 = shl i256 %r103, 224 -%r105 = or i256 %r99, %r104 -%r106 = zext i256 %r105 to i288 -%r107 = sub i288 %r55, %r106 -%r108 = trunc i288 %r107 to i256 -%r109 = trunc i256 %r108 to i32 -%r111 = getelementptr i32, i32* %r2, i32 0 -store i32 %r109, i32* %r111 -%r112 = lshr i256 %r108, 32 -%r113 = trunc i256 %r112 to i32 -%r115 = getelementptr i32, i32* %r2, i32 1 -store i32 %r113, i32* %r115 -%r116 = lshr i256 %r112, 32 -%r117 = trunc i256 %r116 to i32 -%r119 = getelementptr i32, i32* %r2, i32 2 -store i32 %r117, i32* %r119 -%r120 = lshr i256 %r116, 32 -%r121 = trunc i256 %r120 to i32 -%r123 = getelementptr i32, i32* %r2, i32 3 -store i32 %r121, i32* %r123 -%r124 = lshr i256 %r120, 32 -%r125 = trunc i256 %r124 to i32 -%r127 = getelementptr i32, i32* %r2, i32 4 -store i32 %r125, i32* %r127 -%r128 = lshr i256 %r124, 32 -%r129 = trunc i256 %r128 to i32 -%r131 = getelementptr i32, i32* %r2, i32 5 -store i32 %r129, i32* %r131 -%r132 = lshr i256 %r128, 32 -%r133 = trunc i256 %r132 to i32 -%r135 = getelementptr i32, i32* %r2, i32 6 -store i32 %r133, i32* %r135 -%r136 = lshr i256 %r132, 32 -%r137 = trunc i256 %r136 to i32 -%r139 = getelementptr i32, i32* %r2, i32 7 -store i32 %r137, i32* %r139 -%r140 = lshr i288 %r107, 256 -%r141 = trunc i288 %r140 to i32 -%r143 = and i32 %r141, 1 -ret i32 %r143 -} -define void @mcl_fp_shr1_8L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = lshr i256 %r52, 1 -%r54 = trunc i256 %r53 to i32 -%r56 = getelementptr i32, i32* %r1, i32 0 -store i32 %r54, i32* %r56 -%r57 = lshr i256 %r53, 32 -%r58 = trunc i256 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 1 -store i32 %r58, i32* %r60 -%r61 = lshr i256 %r57, 32 -%r62 = trunc i256 %r61 to i32 -%r64 = getelementptr i32, i32* %r1, i32 2 -store i32 %r62, i32* %r64 -%r65 = lshr i256 %r61, 32 -%r66 = trunc i256 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 3 -store i32 %r66, i32* %r68 -%r69 = lshr i256 %r65, 32 -%r70 = trunc i256 %r69 to i32 -%r72 = getelementptr i32, i32* %r1, i32 4 -store i32 %r70, i32* %r72 -%r73 = lshr i256 %r69, 32 -%r74 = trunc i256 %r73 to i32 -%r76 = getelementptr i32, i32* %r1, i32 5 -store i32 %r74, i32* %r76 -%r77 = lshr i256 %r73, 32 -%r78 = trunc i256 %r77 to i32 -%r80 = getelementptr i32, i32* %r1, i32 6 -store i32 %r78, i32* %r80 -%r81 = lshr i256 %r77, 32 -%r82 = trunc i256 %r81 to i32 -%r84 = getelementptr i32, i32* %r1, i32 7 -store i32 %r82, i32* %r84 -ret void -} -define void @mcl_fp_add8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r54 to i288 -%r106 = zext i256 %r104 to i288 -%r107 = add i288 %r105, %r106 -%r108 = trunc i288 %r107 to i256 -%r109 = trunc i256 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 0 -store i32 %r109, i32* %r111 -%r112 = lshr i256 %r108, 32 -%r113 = trunc i256 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 1 -store i32 %r113, i32* %r115 -%r116 = lshr i256 %r112, 32 -%r117 = trunc i256 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 2 -store i32 %r117, i32* %r119 -%r120 = lshr i256 %r116, 32 -%r121 = trunc i256 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 3 -store i32 %r121, i32* %r123 -%r124 = lshr i256 %r120, 32 -%r125 = trunc i256 %r124 to i32 -%r127 = getelementptr i32, i32* %r1, i32 4 -store i32 %r125, i32* %r127 -%r128 = lshr i256 %r124, 32 -%r129 = trunc i256 %r128 to i32 -%r131 = getelementptr i32, i32* %r1, i32 5 -store i32 %r129, i32* %r131 -%r132 = lshr i256 %r128, 32 -%r133 = trunc i256 %r132 to i32 -%r135 = getelementptr i32, i32* %r1, i32 6 -store i32 %r133, i32* %r135 -%r136 = lshr i256 %r132, 32 -%r137 = trunc i256 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 7 -store i32 %r137, i32* %r139 -%r140 = load i32, i32* %r4 -%r141 = zext i32 %r140 to i64 -%r143 = getelementptr i32, i32* %r4, i32 1 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i64 -%r146 = shl i64 %r145, 32 -%r147 = or i64 %r141, %r146 -%r148 = zext i64 %r147 to i96 -%r150 = getelementptr i32, i32* %r4, i32 2 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i96 -%r153 = shl i96 %r152, 64 -%r154 = or i96 %r148, %r153 -%r155 = zext i96 %r154 to i128 -%r157 = getelementptr i32, i32* %r4, i32 3 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i128 -%r160 = shl i128 %r159, 96 -%r161 = or i128 %r155, %r160 -%r162 = zext i128 %r161 to i160 -%r164 = getelementptr i32, i32* %r4, i32 4 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i160 -%r167 = shl i160 %r166, 128 -%r168 = or i160 %r162, %r167 -%r169 = zext i160 %r168 to i192 -%r171 = getelementptr i32, i32* %r4, i32 5 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i192 -%r174 = shl i192 %r173, 160 -%r175 = or i192 %r169, %r174 -%r176 = zext i192 %r175 to i224 -%r178 = getelementptr i32, i32* %r4, i32 6 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i224 -%r181 = shl i224 %r180, 192 -%r182 = or i224 %r176, %r181 -%r183 = zext i224 %r182 to i256 -%r185 = getelementptr i32, i32* %r4, i32 7 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i256 -%r188 = shl i256 %r187, 224 -%r189 = or i256 %r183, %r188 -%r190 = zext i256 %r189 to i288 -%r191 = sub i288 %r107, %r190 -%r192 = lshr i288 %r191, 256 -%r193 = trunc i288 %r192 to i1 -br i1%r193, label %carry, label %nocarry -nocarry: -%r194 = trunc i288 %r191 to i256 -%r195 = trunc i256 %r194 to i32 -%r197 = getelementptr i32, i32* %r1, i32 0 -store i32 %r195, i32* %r197 -%r198 = lshr i256 %r194, 32 -%r199 = trunc i256 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 1 -store i32 %r199, i32* %r201 -%r202 = lshr i256 %r198, 32 -%r203 = trunc i256 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 2 -store i32 %r203, i32* %r205 -%r206 = lshr i256 %r202, 32 -%r207 = trunc i256 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 3 -store i32 %r207, i32* %r209 -%r210 = lshr i256 %r206, 32 -%r211 = trunc i256 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 4 -store i32 %r211, i32* %r213 -%r214 = lshr i256 %r210, 32 -%r215 = trunc i256 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 5 -store i32 %r215, i32* %r217 -%r218 = lshr i256 %r214, 32 -%r219 = trunc i256 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 6 -store i32 %r219, i32* %r221 -%r222 = lshr i256 %r218, 32 -%r223 = trunc i256 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 7 -store i32 %r223, i32* %r225 -ret void -carry: -ret void -} -define void @mcl_fp_addNF8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = add i256 %r54, %r104 -%r106 = load i32, i32* %r4 -%r107 = zext i32 %r106 to i64 -%r109 = getelementptr i32, i32* %r4, i32 1 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i64 -%r112 = shl i64 %r111, 32 -%r113 = or i64 %r107, %r112 -%r114 = zext i64 %r113 to i96 -%r116 = getelementptr i32, i32* %r4, i32 2 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i96 -%r119 = shl i96 %r118, 64 -%r120 = or i96 %r114, %r119 -%r121 = zext i96 %r120 to i128 -%r123 = getelementptr i32, i32* %r4, i32 3 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i128 -%r126 = shl i128 %r125, 96 -%r127 = or i128 %r121, %r126 -%r128 = zext i128 %r127 to i160 -%r130 = getelementptr i32, i32* %r4, i32 4 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i160 -%r133 = shl i160 %r132, 128 -%r134 = or i160 %r128, %r133 -%r135 = zext i160 %r134 to i192 -%r137 = getelementptr i32, i32* %r4, i32 5 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i192 -%r140 = shl i192 %r139, 160 -%r141 = or i192 %r135, %r140 -%r142 = zext i192 %r141 to i224 -%r144 = getelementptr i32, i32* %r4, i32 6 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i224 -%r147 = shl i224 %r146, 192 -%r148 = or i224 %r142, %r147 -%r149 = zext i224 %r148 to i256 -%r151 = getelementptr i32, i32* %r4, i32 7 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i256 -%r154 = shl i256 %r153, 224 -%r155 = or i256 %r149, %r154 -%r156 = sub i256 %r105, %r155 -%r157 = lshr i256 %r156, 255 -%r158 = trunc i256 %r157 to i1 -%r159 = select i1 %r158, i256 %r105, i256 %r156 -%r160 = trunc i256 %r159 to i32 -%r162 = getelementptr i32, i32* %r1, i32 0 -store i32 %r160, i32* %r162 -%r163 = lshr i256 %r159, 32 -%r164 = trunc i256 %r163 to i32 -%r166 = getelementptr i32, i32* %r1, i32 1 -store i32 %r164, i32* %r166 -%r167 = lshr i256 %r163, 32 -%r168 = trunc i256 %r167 to i32 -%r170 = getelementptr i32, i32* %r1, i32 2 -store i32 %r168, i32* %r170 -%r171 = lshr i256 %r167, 32 -%r172 = trunc i256 %r171 to i32 -%r174 = getelementptr i32, i32* %r1, i32 3 -store i32 %r172, i32* %r174 -%r175 = lshr i256 %r171, 32 -%r176 = trunc i256 %r175 to i32 -%r178 = getelementptr i32, i32* %r1, i32 4 -store i32 %r176, i32* %r178 -%r179 = lshr i256 %r175, 32 -%r180 = trunc i256 %r179 to i32 -%r182 = getelementptr i32, i32* %r1, i32 5 -store i32 %r180, i32* %r182 -%r183 = lshr i256 %r179, 32 -%r184 = trunc i256 %r183 to i32 -%r186 = getelementptr i32, i32* %r1, i32 6 -store i32 %r184, i32* %r186 -%r187 = lshr i256 %r183, 32 -%r188 = trunc i256 %r187 to i32 -%r190 = getelementptr i32, i32* %r1, i32 7 -store i32 %r188, i32* %r190 -ret void -} -define void @mcl_fp_sub8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r54 to i288 -%r106 = zext i256 %r104 to i288 -%r107 = sub i288 %r105, %r106 -%r108 = trunc i288 %r107 to i256 -%r109 = lshr i288 %r107, 256 -%r110 = trunc i288 %r109 to i1 -%r111 = trunc i256 %r108 to i32 -%r113 = getelementptr i32, i32* %r1, i32 0 -store i32 %r111, i32* %r113 -%r114 = lshr i256 %r108, 32 -%r115 = trunc i256 %r114 to i32 -%r117 = getelementptr i32, i32* %r1, i32 1 -store i32 %r115, i32* %r117 -%r118 = lshr i256 %r114, 32 -%r119 = trunc i256 %r118 to i32 -%r121 = getelementptr i32, i32* %r1, i32 2 -store i32 %r119, i32* %r121 -%r122 = lshr i256 %r118, 32 -%r123 = trunc i256 %r122 to i32 -%r125 = getelementptr i32, i32* %r1, i32 3 -store i32 %r123, i32* %r125 -%r126 = lshr i256 %r122, 32 -%r127 = trunc i256 %r126 to i32 -%r129 = getelementptr i32, i32* %r1, i32 4 -store i32 %r127, i32* %r129 -%r130 = lshr i256 %r126, 32 -%r131 = trunc i256 %r130 to i32 -%r133 = getelementptr i32, i32* %r1, i32 5 -store i32 %r131, i32* %r133 -%r134 = lshr i256 %r130, 32 -%r135 = trunc i256 %r134 to i32 -%r137 = getelementptr i32, i32* %r1, i32 6 -store i32 %r135, i32* %r137 -%r138 = lshr i256 %r134, 32 -%r139 = trunc i256 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 7 -store i32 %r139, i32* %r141 -br i1%r110, label %carry, label %nocarry -nocarry: -ret void -carry: -%r142 = load i32, i32* %r4 -%r143 = zext i32 %r142 to i64 -%r145 = getelementptr i32, i32* %r4, i32 1 -%r146 = load i32, i32* %r145 -%r147 = zext i32 %r146 to i64 -%r148 = shl i64 %r147, 32 -%r149 = or i64 %r143, %r148 -%r150 = zext i64 %r149 to i96 -%r152 = getelementptr i32, i32* %r4, i32 2 -%r153 = load i32, i32* %r152 -%r154 = zext i32 %r153 to i96 -%r155 = shl i96 %r154, 64 -%r156 = or i96 %r150, %r155 -%r157 = zext i96 %r156 to i128 -%r159 = getelementptr i32, i32* %r4, i32 3 -%r160 = load i32, i32* %r159 -%r161 = zext i32 %r160 to i128 -%r162 = shl i128 %r161, 96 -%r163 = or i128 %r157, %r162 -%r164 = zext i128 %r163 to i160 -%r166 = getelementptr i32, i32* %r4, i32 4 -%r167 = load i32, i32* %r166 -%r168 = zext i32 %r167 to i160 -%r169 = shl i160 %r168, 128 -%r170 = or i160 %r164, %r169 -%r171 = zext i160 %r170 to i192 -%r173 = getelementptr i32, i32* %r4, i32 5 -%r174 = load i32, i32* %r173 -%r175 = zext i32 %r174 to i192 -%r176 = shl i192 %r175, 160 -%r177 = or i192 %r171, %r176 -%r178 = zext i192 %r177 to i224 -%r180 = getelementptr i32, i32* %r4, i32 6 -%r181 = load i32, i32* %r180 -%r182 = zext i32 %r181 to i224 -%r183 = shl i224 %r182, 192 -%r184 = or i224 %r178, %r183 -%r185 = zext i224 %r184 to i256 -%r187 = getelementptr i32, i32* %r4, i32 7 -%r188 = load i32, i32* %r187 -%r189 = zext i32 %r188 to i256 -%r190 = shl i256 %r189, 224 -%r191 = or i256 %r185, %r190 -%r192 = add i256 %r108, %r191 -%r193 = trunc i256 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i256 %r192, 32 -%r197 = trunc i256 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i256 %r196, 32 -%r201 = trunc i256 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i256 %r200, 32 -%r205 = trunc i256 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i256 %r204, 32 -%r209 = trunc i256 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i256 %r208, 32 -%r213 = trunc i256 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i256 %r212, 32 -%r217 = trunc i256 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i256 %r216, 32 -%r221 = trunc i256 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 7 -store i32 %r221, i32* %r223 -ret void -} -define void @mcl_fp_subNF8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = load i32, i32* %r3 -%r56 = zext i32 %r55 to i64 -%r58 = getelementptr i32, i32* %r3, i32 1 -%r59 = load i32, i32* %r58 -%r60 = zext i32 %r59 to i64 -%r61 = shl i64 %r60, 32 -%r62 = or i64 %r56, %r61 -%r63 = zext i64 %r62 to i96 -%r65 = getelementptr i32, i32* %r3, i32 2 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i96 -%r68 = shl i96 %r67, 64 -%r69 = or i96 %r63, %r68 -%r70 = zext i96 %r69 to i128 -%r72 = getelementptr i32, i32* %r3, i32 3 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i128 -%r75 = shl i128 %r74, 96 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i160 -%r79 = getelementptr i32, i32* %r3, i32 4 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r77, %r82 -%r84 = zext i160 %r83 to i192 -%r86 = getelementptr i32, i32* %r3, i32 5 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i192 -%r89 = shl i192 %r88, 160 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i224 -%r93 = getelementptr i32, i32* %r3, i32 6 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i224 -%r96 = shl i224 %r95, 192 -%r97 = or i224 %r91, %r96 -%r98 = zext i224 %r97 to i256 -%r100 = getelementptr i32, i32* %r3, i32 7 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i256 -%r103 = shl i256 %r102, 224 -%r104 = or i256 %r98, %r103 -%r105 = sub i256 %r54, %r104 -%r106 = lshr i256 %r105, 255 -%r107 = trunc i256 %r106 to i1 -%r108 = load i32, i32* %r4 -%r109 = zext i32 %r108 to i64 -%r111 = getelementptr i32, i32* %r4, i32 1 -%r112 = load i32, i32* %r111 -%r113 = zext i32 %r112 to i64 -%r114 = shl i64 %r113, 32 -%r115 = or i64 %r109, %r114 -%r116 = zext i64 %r115 to i96 -%r118 = getelementptr i32, i32* %r4, i32 2 -%r119 = load i32, i32* %r118 -%r120 = zext i32 %r119 to i96 -%r121 = shl i96 %r120, 64 -%r122 = or i96 %r116, %r121 -%r123 = zext i96 %r122 to i128 -%r125 = getelementptr i32, i32* %r4, i32 3 -%r126 = load i32, i32* %r125 -%r127 = zext i32 %r126 to i128 -%r128 = shl i128 %r127, 96 -%r129 = or i128 %r123, %r128 -%r130 = zext i128 %r129 to i160 -%r132 = getelementptr i32, i32* %r4, i32 4 -%r133 = load i32, i32* %r132 -%r134 = zext i32 %r133 to i160 -%r135 = shl i160 %r134, 128 -%r136 = or i160 %r130, %r135 -%r137 = zext i160 %r136 to i192 -%r139 = getelementptr i32, i32* %r4, i32 5 -%r140 = load i32, i32* %r139 -%r141 = zext i32 %r140 to i192 -%r142 = shl i192 %r141, 160 -%r143 = or i192 %r137, %r142 -%r144 = zext i192 %r143 to i224 -%r146 = getelementptr i32, i32* %r4, i32 6 -%r147 = load i32, i32* %r146 -%r148 = zext i32 %r147 to i224 -%r149 = shl i224 %r148, 192 -%r150 = or i224 %r144, %r149 -%r151 = zext i224 %r150 to i256 -%r153 = getelementptr i32, i32* %r4, i32 7 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i256 -%r156 = shl i256 %r155, 224 -%r157 = or i256 %r151, %r156 -%r159 = select i1 %r107, i256 %r157, i256 0 -%r160 = add i256 %r105, %r159 -%r161 = trunc i256 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 0 -store i32 %r161, i32* %r163 -%r164 = lshr i256 %r160, 32 -%r165 = trunc i256 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 1 -store i32 %r165, i32* %r167 -%r168 = lshr i256 %r164, 32 -%r169 = trunc i256 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 2 -store i32 %r169, i32* %r171 -%r172 = lshr i256 %r168, 32 -%r173 = trunc i256 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 3 -store i32 %r173, i32* %r175 -%r176 = lshr i256 %r172, 32 -%r177 = trunc i256 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 4 -store i32 %r177, i32* %r179 -%r180 = lshr i256 %r176, 32 -%r181 = trunc i256 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 5 -store i32 %r181, i32* %r183 -%r184 = lshr i256 %r180, 32 -%r185 = trunc i256 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 6 -store i32 %r185, i32* %r187 -%r188 = lshr i256 %r184, 32 -%r189 = trunc i256 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 7 -store i32 %r189, i32* %r191 -ret void -} -define void @mcl_fpDbl_add8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = zext i512 %r110 to i544 -%r218 = zext i512 %r216 to i544 -%r219 = add i544 %r217, %r218 -%r220 = trunc i544 %r219 to i256 -%r221 = trunc i256 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 0 -store i32 %r221, i32* %r223 -%r224 = lshr i256 %r220, 32 -%r225 = trunc i256 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 1 -store i32 %r225, i32* %r227 -%r228 = lshr i256 %r224, 32 -%r229 = trunc i256 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 2 -store i32 %r229, i32* %r231 -%r232 = lshr i256 %r228, 32 -%r233 = trunc i256 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 3 -store i32 %r233, i32* %r235 -%r236 = lshr i256 %r232, 32 -%r237 = trunc i256 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 4 -store i32 %r237, i32* %r239 -%r240 = lshr i256 %r236, 32 -%r241 = trunc i256 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 5 -store i32 %r241, i32* %r243 -%r244 = lshr i256 %r240, 32 -%r245 = trunc i256 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 6 -store i32 %r245, i32* %r247 -%r248 = lshr i256 %r244, 32 -%r249 = trunc i256 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 7 -store i32 %r249, i32* %r251 -%r252 = lshr i544 %r219, 256 -%r253 = trunc i544 %r252 to i288 -%r254 = load i32, i32* %r4 -%r255 = zext i32 %r254 to i64 -%r257 = getelementptr i32, i32* %r4, i32 1 -%r258 = load i32, i32* %r257 -%r259 = zext i32 %r258 to i64 -%r260 = shl i64 %r259, 32 -%r261 = or i64 %r255, %r260 -%r262 = zext i64 %r261 to i96 -%r264 = getelementptr i32, i32* %r4, i32 2 -%r265 = load i32, i32* %r264 -%r266 = zext i32 %r265 to i96 -%r267 = shl i96 %r266, 64 -%r268 = or i96 %r262, %r267 -%r269 = zext i96 %r268 to i128 -%r271 = getelementptr i32, i32* %r4, i32 3 -%r272 = load i32, i32* %r271 -%r273 = zext i32 %r272 to i128 -%r274 = shl i128 %r273, 96 -%r275 = or i128 %r269, %r274 -%r276 = zext i128 %r275 to i160 -%r278 = getelementptr i32, i32* %r4, i32 4 -%r279 = load i32, i32* %r278 -%r280 = zext i32 %r279 to i160 -%r281 = shl i160 %r280, 128 -%r282 = or i160 %r276, %r281 -%r283 = zext i160 %r282 to i192 -%r285 = getelementptr i32, i32* %r4, i32 5 -%r286 = load i32, i32* %r285 -%r287 = zext i32 %r286 to i192 -%r288 = shl i192 %r287, 160 -%r289 = or i192 %r283, %r288 -%r290 = zext i192 %r289 to i224 -%r292 = getelementptr i32, i32* %r4, i32 6 -%r293 = load i32, i32* %r292 -%r294 = zext i32 %r293 to i224 -%r295 = shl i224 %r294, 192 -%r296 = or i224 %r290, %r295 -%r297 = zext i224 %r296 to i256 -%r299 = getelementptr i32, i32* %r4, i32 7 -%r300 = load i32, i32* %r299 -%r301 = zext i32 %r300 to i256 -%r302 = shl i256 %r301, 224 -%r303 = or i256 %r297, %r302 -%r304 = zext i256 %r303 to i288 -%r305 = sub i288 %r253, %r304 -%r306 = lshr i288 %r305, 256 -%r307 = trunc i288 %r306 to i1 -%r308 = select i1 %r307, i288 %r253, i288 %r305 -%r309 = trunc i288 %r308 to i256 -%r311 = getelementptr i32, i32* %r1, i32 8 -%r312 = trunc i256 %r309 to i32 -%r314 = getelementptr i32, i32* %r311, i32 0 -store i32 %r312, i32* %r314 -%r315 = lshr i256 %r309, 32 -%r316 = trunc i256 %r315 to i32 -%r318 = getelementptr i32, i32* %r311, i32 1 -store i32 %r316, i32* %r318 -%r319 = lshr i256 %r315, 32 -%r320 = trunc i256 %r319 to i32 -%r322 = getelementptr i32, i32* %r311, i32 2 -store i32 %r320, i32* %r322 -%r323 = lshr i256 %r319, 32 -%r324 = trunc i256 %r323 to i32 -%r326 = getelementptr i32, i32* %r311, i32 3 -store i32 %r324, i32* %r326 -%r327 = lshr i256 %r323, 32 -%r328 = trunc i256 %r327 to i32 -%r330 = getelementptr i32, i32* %r311, i32 4 -store i32 %r328, i32* %r330 -%r331 = lshr i256 %r327, 32 -%r332 = trunc i256 %r331 to i32 -%r334 = getelementptr i32, i32* %r311, i32 5 -store i32 %r332, i32* %r334 -%r335 = lshr i256 %r331, 32 -%r336 = trunc i256 %r335 to i32 -%r338 = getelementptr i32, i32* %r311, i32 6 -store i32 %r336, i32* %r338 -%r339 = lshr i256 %r335, 32 -%r340 = trunc i256 %r339 to i32 -%r342 = getelementptr i32, i32* %r311, i32 7 -store i32 %r340, i32* %r342 -ret void -} -define void @mcl_fpDbl_sub8L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = zext i512 %r110 to i544 -%r218 = zext i512 %r216 to i544 -%r219 = sub i544 %r217, %r218 -%r220 = trunc i544 %r219 to i256 -%r221 = trunc i256 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 0 -store i32 %r221, i32* %r223 -%r224 = lshr i256 %r220, 32 -%r225 = trunc i256 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 1 -store i32 %r225, i32* %r227 -%r228 = lshr i256 %r224, 32 -%r229 = trunc i256 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 2 -store i32 %r229, i32* %r231 -%r232 = lshr i256 %r228, 32 -%r233 = trunc i256 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 3 -store i32 %r233, i32* %r235 -%r236 = lshr i256 %r232, 32 -%r237 = trunc i256 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 4 -store i32 %r237, i32* %r239 -%r240 = lshr i256 %r236, 32 -%r241 = trunc i256 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 5 -store i32 %r241, i32* %r243 -%r244 = lshr i256 %r240, 32 -%r245 = trunc i256 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 6 -store i32 %r245, i32* %r247 -%r248 = lshr i256 %r244, 32 -%r249 = trunc i256 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 7 -store i32 %r249, i32* %r251 -%r252 = lshr i544 %r219, 256 -%r253 = trunc i544 %r252 to i256 -%r254 = lshr i544 %r219, 512 -%r255 = trunc i544 %r254 to i1 -%r256 = load i32, i32* %r4 -%r257 = zext i32 %r256 to i64 -%r259 = getelementptr i32, i32* %r4, i32 1 -%r260 = load i32, i32* %r259 -%r261 = zext i32 %r260 to i64 -%r262 = shl i64 %r261, 32 -%r263 = or i64 %r257, %r262 -%r264 = zext i64 %r263 to i96 -%r266 = getelementptr i32, i32* %r4, i32 2 -%r267 = load i32, i32* %r266 -%r268 = zext i32 %r267 to i96 -%r269 = shl i96 %r268, 64 -%r270 = or i96 %r264, %r269 -%r271 = zext i96 %r270 to i128 -%r273 = getelementptr i32, i32* %r4, i32 3 -%r274 = load i32, i32* %r273 -%r275 = zext i32 %r274 to i128 -%r276 = shl i128 %r275, 96 -%r277 = or i128 %r271, %r276 -%r278 = zext i128 %r277 to i160 -%r280 = getelementptr i32, i32* %r4, i32 4 -%r281 = load i32, i32* %r280 -%r282 = zext i32 %r281 to i160 -%r283 = shl i160 %r282, 128 -%r284 = or i160 %r278, %r283 -%r285 = zext i160 %r284 to i192 -%r287 = getelementptr i32, i32* %r4, i32 5 -%r288 = load i32, i32* %r287 -%r289 = zext i32 %r288 to i192 -%r290 = shl i192 %r289, 160 -%r291 = or i192 %r285, %r290 -%r292 = zext i192 %r291 to i224 -%r294 = getelementptr i32, i32* %r4, i32 6 -%r295 = load i32, i32* %r294 -%r296 = zext i32 %r295 to i224 -%r297 = shl i224 %r296, 192 -%r298 = or i224 %r292, %r297 -%r299 = zext i224 %r298 to i256 -%r301 = getelementptr i32, i32* %r4, i32 7 -%r302 = load i32, i32* %r301 -%r303 = zext i32 %r302 to i256 -%r304 = shl i256 %r303, 224 -%r305 = or i256 %r299, %r304 -%r307 = select i1 %r255, i256 %r305, i256 0 -%r308 = add i256 %r253, %r307 -%r310 = getelementptr i32, i32* %r1, i32 8 -%r311 = trunc i256 %r308 to i32 -%r313 = getelementptr i32, i32* %r310, i32 0 -store i32 %r311, i32* %r313 -%r314 = lshr i256 %r308, 32 -%r315 = trunc i256 %r314 to i32 -%r317 = getelementptr i32, i32* %r310, i32 1 -store i32 %r315, i32* %r317 -%r318 = lshr i256 %r314, 32 -%r319 = trunc i256 %r318 to i32 -%r321 = getelementptr i32, i32* %r310, i32 2 -store i32 %r319, i32* %r321 -%r322 = lshr i256 %r318, 32 -%r323 = trunc i256 %r322 to i32 -%r325 = getelementptr i32, i32* %r310, i32 3 -store i32 %r323, i32* %r325 -%r326 = lshr i256 %r322, 32 -%r327 = trunc i256 %r326 to i32 -%r329 = getelementptr i32, i32* %r310, i32 4 -store i32 %r327, i32* %r329 -%r330 = lshr i256 %r326, 32 -%r331 = trunc i256 %r330 to i32 -%r333 = getelementptr i32, i32* %r310, i32 5 -store i32 %r331, i32* %r333 -%r334 = lshr i256 %r330, 32 -%r335 = trunc i256 %r334 to i32 -%r337 = getelementptr i32, i32* %r310, i32 6 -store i32 %r335, i32* %r337 -%r338 = lshr i256 %r334, 32 -%r339 = trunc i256 %r338 to i32 -%r341 = getelementptr i32, i32* %r310, i32 7 -store i32 %r339, i32* %r341 -ret void -} -define i320 @mulPv288x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r40 = zext i32 %r6 to i64 -%r41 = zext i32 %r10 to i64 -%r42 = shl i64 %r41, 32 -%r43 = or i64 %r40, %r42 -%r44 = zext i64 %r43 to i96 -%r45 = zext i32 %r14 to i96 -%r46 = shl i96 %r45, 64 -%r47 = or i96 %r44, %r46 -%r48 = zext i96 %r47 to i128 -%r49 = zext i32 %r18 to i128 -%r50 = shl i128 %r49, 96 -%r51 = or i128 %r48, %r50 -%r52 = zext i128 %r51 to i160 -%r53 = zext i32 %r22 to i160 -%r54 = shl i160 %r53, 128 -%r55 = or i160 %r52, %r54 -%r56 = zext i160 %r55 to i192 -%r57 = zext i32 %r26 to i192 -%r58 = shl i192 %r57, 160 -%r59 = or i192 %r56, %r58 -%r60 = zext i192 %r59 to i224 -%r61 = zext i32 %r30 to i224 -%r62 = shl i224 %r61, 192 -%r63 = or i224 %r60, %r62 -%r64 = zext i224 %r63 to i256 -%r65 = zext i32 %r34 to i256 -%r66 = shl i256 %r65, 224 -%r67 = or i256 %r64, %r66 -%r68 = zext i256 %r67 to i288 -%r69 = zext i32 %r38 to i288 -%r70 = shl i288 %r69, 256 -%r71 = or i288 %r68, %r70 -%r72 = zext i32 %r7 to i64 -%r73 = zext i32 %r11 to i64 -%r74 = shl i64 %r73, 32 -%r75 = or i64 %r72, %r74 -%r76 = zext i64 %r75 to i96 -%r77 = zext i32 %r15 to i96 -%r78 = shl i96 %r77, 64 -%r79 = or i96 %r76, %r78 -%r80 = zext i96 %r79 to i128 -%r81 = zext i32 %r19 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r80, %r82 -%r84 = zext i128 %r83 to i160 -%r85 = zext i32 %r23 to i160 -%r86 = shl i160 %r85, 128 -%r87 = or i160 %r84, %r86 -%r88 = zext i160 %r87 to i192 -%r89 = zext i32 %r27 to i192 -%r90 = shl i192 %r89, 160 -%r91 = or i192 %r88, %r90 -%r92 = zext i192 %r91 to i224 -%r93 = zext i32 %r31 to i224 -%r94 = shl i224 %r93, 192 -%r95 = or i224 %r92, %r94 -%r96 = zext i224 %r95 to i256 -%r97 = zext i32 %r35 to i256 -%r98 = shl i256 %r97, 224 -%r99 = or i256 %r96, %r98 -%r100 = zext i256 %r99 to i288 -%r101 = zext i32 %r39 to i288 -%r102 = shl i288 %r101, 256 -%r103 = or i288 %r100, %r102 -%r104 = zext i288 %r71 to i320 -%r105 = zext i288 %r103 to i320 -%r106 = shl i320 %r105, 32 -%r107 = add i320 %r104, %r106 -ret i320 %r107 -} -define void @mcl_fp_mulUnitPre9L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i320 @mulPv288x32(i32* %r2, i32 %r3) -%r5 = trunc i320 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i320 %r4, 32 -%r9 = trunc i320 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i320 %r8, 32 -%r13 = trunc i320 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i320 %r12, 32 -%r17 = trunc i320 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i320 %r16, 32 -%r21 = trunc i320 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i320 %r20, 32 -%r25 = trunc i320 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i320 %r24, 32 -%r29 = trunc i320 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i320 %r28, 32 -%r33 = trunc i320 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i320 %r32, 32 -%r37 = trunc i320 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i320 %r36, 32 -%r41 = trunc i320 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -ret void -} -define void @mcl_fpDbl_mulPre9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i320 @mulPv288x32(i32* %r2, i32 %r4) -%r6 = trunc i320 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i320 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i320 @mulPv288x32(i32* %r2, i32 %r10) -%r12 = add i320 %r7, %r11 -%r13 = trunc i320 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i320 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i320 @mulPv288x32(i32* %r2, i32 %r19) -%r21 = add i320 %r16, %r20 -%r22 = trunc i320 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i320 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i320 @mulPv288x32(i32* %r2, i32 %r28) -%r30 = add i320 %r25, %r29 -%r31 = trunc i320 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i320 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i320 @mulPv288x32(i32* %r2, i32 %r37) -%r39 = add i320 %r34, %r38 -%r40 = trunc i320 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i320 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i320 @mulPv288x32(i32* %r2, i32 %r46) -%r48 = add i320 %r43, %r47 -%r49 = trunc i320 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 5 -store i32 %r49, i32* %r51 -%r52 = lshr i320 %r48, 32 -%r54 = getelementptr i32, i32* %r3, i32 6 -%r55 = load i32, i32* %r54 -%r56 = call i320 @mulPv288x32(i32* %r2, i32 %r55) -%r57 = add i320 %r52, %r56 -%r58 = trunc i320 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 6 -store i32 %r58, i32* %r60 -%r61 = lshr i320 %r57, 32 -%r63 = getelementptr i32, i32* %r3, i32 7 -%r64 = load i32, i32* %r63 -%r65 = call i320 @mulPv288x32(i32* %r2, i32 %r64) -%r66 = add i320 %r61, %r65 -%r67 = trunc i320 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 7 -store i32 %r67, i32* %r69 -%r70 = lshr i320 %r66, 32 -%r72 = getelementptr i32, i32* %r3, i32 8 -%r73 = load i32, i32* %r72 -%r74 = call i320 @mulPv288x32(i32* %r2, i32 %r73) -%r75 = add i320 %r70, %r74 -%r77 = getelementptr i32, i32* %r1, i32 8 -%r78 = trunc i320 %r75 to i32 -%r80 = getelementptr i32, i32* %r77, i32 0 -store i32 %r78, i32* %r80 -%r81 = lshr i320 %r75, 32 -%r82 = trunc i320 %r81 to i32 -%r84 = getelementptr i32, i32* %r77, i32 1 -store i32 %r82, i32* %r84 -%r85 = lshr i320 %r81, 32 -%r86 = trunc i320 %r85 to i32 -%r88 = getelementptr i32, i32* %r77, i32 2 -store i32 %r86, i32* %r88 -%r89 = lshr i320 %r85, 32 -%r90 = trunc i320 %r89 to i32 -%r92 = getelementptr i32, i32* %r77, i32 3 -store i32 %r90, i32* %r92 -%r93 = lshr i320 %r89, 32 -%r94 = trunc i320 %r93 to i32 -%r96 = getelementptr i32, i32* %r77, i32 4 -store i32 %r94, i32* %r96 -%r97 = lshr i320 %r93, 32 -%r98 = trunc i320 %r97 to i32 -%r100 = getelementptr i32, i32* %r77, i32 5 -store i32 %r98, i32* %r100 -%r101 = lshr i320 %r97, 32 -%r102 = trunc i320 %r101 to i32 -%r104 = getelementptr i32, i32* %r77, i32 6 -store i32 %r102, i32* %r104 -%r105 = lshr i320 %r101, 32 -%r106 = trunc i320 %r105 to i32 -%r108 = getelementptr i32, i32* %r77, i32 7 -store i32 %r106, i32* %r108 -%r109 = lshr i320 %r105, 32 -%r110 = trunc i320 %r109 to i32 -%r112 = getelementptr i32, i32* %r77, i32 8 -store i32 %r110, i32* %r112 -%r113 = lshr i320 %r109, 32 -%r114 = trunc i320 %r113 to i32 -%r116 = getelementptr i32, i32* %r77, i32 9 -store i32 %r114, i32* %r116 -ret void -} -define void @mcl_fpDbl_sqrPre9L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i320 @mulPv288x32(i32* %r2, i32 %r3) -%r5 = trunc i320 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i320 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i320 @mulPv288x32(i32* %r2, i32 %r9) -%r11 = add i320 %r6, %r10 -%r12 = trunc i320 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i320 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i320 @mulPv288x32(i32* %r2, i32 %r18) -%r20 = add i320 %r15, %r19 -%r21 = trunc i320 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i320 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i320 @mulPv288x32(i32* %r2, i32 %r27) -%r29 = add i320 %r24, %r28 -%r30 = trunc i320 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i320 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i320 @mulPv288x32(i32* %r2, i32 %r36) -%r38 = add i320 %r33, %r37 -%r39 = trunc i320 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i320 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i320 @mulPv288x32(i32* %r2, i32 %r45) -%r47 = add i320 %r42, %r46 -%r48 = trunc i320 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 5 -store i32 %r48, i32* %r50 -%r51 = lshr i320 %r47, 32 -%r53 = getelementptr i32, i32* %r2, i32 6 -%r54 = load i32, i32* %r53 -%r55 = call i320 @mulPv288x32(i32* %r2, i32 %r54) -%r56 = add i320 %r51, %r55 -%r57 = trunc i320 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 6 -store i32 %r57, i32* %r59 -%r60 = lshr i320 %r56, 32 -%r62 = getelementptr i32, i32* %r2, i32 7 -%r63 = load i32, i32* %r62 -%r64 = call i320 @mulPv288x32(i32* %r2, i32 %r63) -%r65 = add i320 %r60, %r64 -%r66 = trunc i320 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 7 -store i32 %r66, i32* %r68 -%r69 = lshr i320 %r65, 32 -%r71 = getelementptr i32, i32* %r2, i32 8 -%r72 = load i32, i32* %r71 -%r73 = call i320 @mulPv288x32(i32* %r2, i32 %r72) -%r74 = add i320 %r69, %r73 -%r76 = getelementptr i32, i32* %r1, i32 8 -%r77 = trunc i320 %r74 to i32 -%r79 = getelementptr i32, i32* %r76, i32 0 -store i32 %r77, i32* %r79 -%r80 = lshr i320 %r74, 32 -%r81 = trunc i320 %r80 to i32 -%r83 = getelementptr i32, i32* %r76, i32 1 -store i32 %r81, i32* %r83 -%r84 = lshr i320 %r80, 32 -%r85 = trunc i320 %r84 to i32 -%r87 = getelementptr i32, i32* %r76, i32 2 -store i32 %r85, i32* %r87 -%r88 = lshr i320 %r84, 32 -%r89 = trunc i320 %r88 to i32 -%r91 = getelementptr i32, i32* %r76, i32 3 -store i32 %r89, i32* %r91 -%r92 = lshr i320 %r88, 32 -%r93 = trunc i320 %r92 to i32 -%r95 = getelementptr i32, i32* %r76, i32 4 -store i32 %r93, i32* %r95 -%r96 = lshr i320 %r92, 32 -%r97 = trunc i320 %r96 to i32 -%r99 = getelementptr i32, i32* %r76, i32 5 -store i32 %r97, i32* %r99 -%r100 = lshr i320 %r96, 32 -%r101 = trunc i320 %r100 to i32 -%r103 = getelementptr i32, i32* %r76, i32 6 -store i32 %r101, i32* %r103 -%r104 = lshr i320 %r100, 32 -%r105 = trunc i320 %r104 to i32 -%r107 = getelementptr i32, i32* %r76, i32 7 -store i32 %r105, i32* %r107 -%r108 = lshr i320 %r104, 32 -%r109 = trunc i320 %r108 to i32 -%r111 = getelementptr i32, i32* %r76, i32 8 -store i32 %r109, i32* %r111 -%r112 = lshr i320 %r108, 32 -%r113 = trunc i320 %r112 to i32 -%r115 = getelementptr i32, i32* %r76, i32 9 -store i32 %r113, i32* %r115 -ret void -} -define void @mcl_fp_mont9L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i320 @mulPv288x32(i32* %r2, i32 %r10) -%r12 = zext i320 %r11 to i352 -%r13 = trunc i320 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i320 @mulPv288x32(i32* %r4, i32 %r14) -%r16 = zext i320 %r15 to i352 -%r17 = add i352 %r12, %r16 -%r18 = lshr i352 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i320 @mulPv288x32(i32* %r2, i32 %r21) -%r23 = zext i320 %r22 to i352 -%r24 = add i352 %r18, %r23 -%r25 = trunc i352 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i320 @mulPv288x32(i32* %r4, i32 %r26) -%r28 = zext i320 %r27 to i352 -%r29 = add i352 %r24, %r28 -%r30 = lshr i352 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i320 @mulPv288x32(i32* %r2, i32 %r33) -%r35 = zext i320 %r34 to i352 -%r36 = add i352 %r30, %r35 -%r37 = trunc i352 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i320 @mulPv288x32(i32* %r4, i32 %r38) -%r40 = zext i320 %r39 to i352 -%r41 = add i352 %r36, %r40 -%r42 = lshr i352 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i320 @mulPv288x32(i32* %r2, i32 %r45) -%r47 = zext i320 %r46 to i352 -%r48 = add i352 %r42, %r47 -%r49 = trunc i352 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i320 @mulPv288x32(i32* %r4, i32 %r50) -%r52 = zext i320 %r51 to i352 -%r53 = add i352 %r48, %r52 -%r54 = lshr i352 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i320 @mulPv288x32(i32* %r2, i32 %r57) -%r59 = zext i320 %r58 to i352 -%r60 = add i352 %r54, %r59 -%r61 = trunc i352 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i320 @mulPv288x32(i32* %r4, i32 %r62) -%r64 = zext i320 %r63 to i352 -%r65 = add i352 %r60, %r64 -%r66 = lshr i352 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i320 @mulPv288x32(i32* %r2, i32 %r69) -%r71 = zext i320 %r70 to i352 -%r72 = add i352 %r66, %r71 -%r73 = trunc i352 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i320 @mulPv288x32(i32* %r4, i32 %r74) -%r76 = zext i320 %r75 to i352 -%r77 = add i352 %r72, %r76 -%r78 = lshr i352 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i320 @mulPv288x32(i32* %r2, i32 %r81) -%r83 = zext i320 %r82 to i352 -%r84 = add i352 %r78, %r83 -%r85 = trunc i352 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i320 @mulPv288x32(i32* %r4, i32 %r86) -%r88 = zext i320 %r87 to i352 -%r89 = add i352 %r84, %r88 -%r90 = lshr i352 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i320 @mulPv288x32(i32* %r2, i32 %r93) -%r95 = zext i320 %r94 to i352 -%r96 = add i352 %r90, %r95 -%r97 = trunc i352 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i320 @mulPv288x32(i32* %r4, i32 %r98) -%r100 = zext i320 %r99 to i352 -%r101 = add i352 %r96, %r100 -%r102 = lshr i352 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i320 @mulPv288x32(i32* %r2, i32 %r105) -%r107 = zext i320 %r106 to i352 -%r108 = add i352 %r102, %r107 -%r109 = trunc i352 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i320 @mulPv288x32(i32* %r4, i32 %r110) -%r112 = zext i320 %r111 to i352 -%r113 = add i352 %r108, %r112 -%r114 = lshr i352 %r113, 32 -%r115 = trunc i352 %r114 to i320 -%r116 = load i32, i32* %r4 -%r117 = zext i32 %r116 to i64 -%r119 = getelementptr i32, i32* %r4, i32 1 -%r120 = load i32, i32* %r119 -%r121 = zext i32 %r120 to i64 -%r122 = shl i64 %r121, 32 -%r123 = or i64 %r117, %r122 -%r124 = zext i64 %r123 to i96 -%r126 = getelementptr i32, i32* %r4, i32 2 -%r127 = load i32, i32* %r126 -%r128 = zext i32 %r127 to i96 -%r129 = shl i96 %r128, 64 -%r130 = or i96 %r124, %r129 -%r131 = zext i96 %r130 to i128 -%r133 = getelementptr i32, i32* %r4, i32 3 -%r134 = load i32, i32* %r133 -%r135 = zext i32 %r134 to i128 -%r136 = shl i128 %r135, 96 -%r137 = or i128 %r131, %r136 -%r138 = zext i128 %r137 to i160 -%r140 = getelementptr i32, i32* %r4, i32 4 -%r141 = load i32, i32* %r140 -%r142 = zext i32 %r141 to i160 -%r143 = shl i160 %r142, 128 -%r144 = or i160 %r138, %r143 -%r145 = zext i160 %r144 to i192 -%r147 = getelementptr i32, i32* %r4, i32 5 -%r148 = load i32, i32* %r147 -%r149 = zext i32 %r148 to i192 -%r150 = shl i192 %r149, 160 -%r151 = or i192 %r145, %r150 -%r152 = zext i192 %r151 to i224 -%r154 = getelementptr i32, i32* %r4, i32 6 -%r155 = load i32, i32* %r154 -%r156 = zext i32 %r155 to i224 -%r157 = shl i224 %r156, 192 -%r158 = or i224 %r152, %r157 -%r159 = zext i224 %r158 to i256 -%r161 = getelementptr i32, i32* %r4, i32 7 -%r162 = load i32, i32* %r161 -%r163 = zext i32 %r162 to i256 -%r164 = shl i256 %r163, 224 -%r165 = or i256 %r159, %r164 -%r166 = zext i256 %r165 to i288 -%r168 = getelementptr i32, i32* %r4, i32 8 -%r169 = load i32, i32* %r168 -%r170 = zext i32 %r169 to i288 -%r171 = shl i288 %r170, 256 -%r172 = or i288 %r166, %r171 -%r173 = zext i288 %r172 to i320 -%r174 = sub i320 %r115, %r173 -%r175 = lshr i320 %r174, 288 -%r176 = trunc i320 %r175 to i1 -%r177 = select i1 %r176, i320 %r115, i320 %r174 -%r178 = trunc i320 %r177 to i288 -%r179 = trunc i288 %r178 to i32 -%r181 = getelementptr i32, i32* %r1, i32 0 -store i32 %r179, i32* %r181 -%r182 = lshr i288 %r178, 32 -%r183 = trunc i288 %r182 to i32 -%r185 = getelementptr i32, i32* %r1, i32 1 -store i32 %r183, i32* %r185 -%r186 = lshr i288 %r182, 32 -%r187 = trunc i288 %r186 to i32 -%r189 = getelementptr i32, i32* %r1, i32 2 -store i32 %r187, i32* %r189 -%r190 = lshr i288 %r186, 32 -%r191 = trunc i288 %r190 to i32 -%r193 = getelementptr i32, i32* %r1, i32 3 -store i32 %r191, i32* %r193 -%r194 = lshr i288 %r190, 32 -%r195 = trunc i288 %r194 to i32 -%r197 = getelementptr i32, i32* %r1, i32 4 -store i32 %r195, i32* %r197 -%r198 = lshr i288 %r194, 32 -%r199 = trunc i288 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 5 -store i32 %r199, i32* %r201 -%r202 = lshr i288 %r198, 32 -%r203 = trunc i288 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 6 -store i32 %r203, i32* %r205 -%r206 = lshr i288 %r202, 32 -%r207 = trunc i288 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 7 -store i32 %r207, i32* %r209 -%r210 = lshr i288 %r206, 32 -%r211 = trunc i288 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 8 -store i32 %r211, i32* %r213 -ret void -} -define void @mcl_fp_montNF9L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i320 @mulPv288x32(i32* %r2, i32 %r8) -%r10 = trunc i320 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i320 @mulPv288x32(i32* %r4, i32 %r11) -%r13 = add i320 %r9, %r12 -%r14 = lshr i320 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i320 @mulPv288x32(i32* %r2, i32 %r17) -%r19 = add i320 %r14, %r18 -%r20 = trunc i320 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i320 @mulPv288x32(i32* %r4, i32 %r21) -%r23 = add i320 %r19, %r22 -%r24 = lshr i320 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i320 @mulPv288x32(i32* %r2, i32 %r27) -%r29 = add i320 %r24, %r28 -%r30 = trunc i320 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i320 @mulPv288x32(i32* %r4, i32 %r31) -%r33 = add i320 %r29, %r32 -%r34 = lshr i320 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i320 @mulPv288x32(i32* %r2, i32 %r37) -%r39 = add i320 %r34, %r38 -%r40 = trunc i320 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i320 @mulPv288x32(i32* %r4, i32 %r41) -%r43 = add i320 %r39, %r42 -%r44 = lshr i320 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i320 @mulPv288x32(i32* %r2, i32 %r47) -%r49 = add i320 %r44, %r48 -%r50 = trunc i320 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i320 @mulPv288x32(i32* %r4, i32 %r51) -%r53 = add i320 %r49, %r52 -%r54 = lshr i320 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i320 @mulPv288x32(i32* %r2, i32 %r57) -%r59 = add i320 %r54, %r58 -%r60 = trunc i320 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i320 @mulPv288x32(i32* %r4, i32 %r61) -%r63 = add i320 %r59, %r62 -%r64 = lshr i320 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i320 @mulPv288x32(i32* %r2, i32 %r67) -%r69 = add i320 %r64, %r68 -%r70 = trunc i320 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i320 @mulPv288x32(i32* %r4, i32 %r71) -%r73 = add i320 %r69, %r72 -%r74 = lshr i320 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i320 @mulPv288x32(i32* %r2, i32 %r77) -%r79 = add i320 %r74, %r78 -%r80 = trunc i320 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i320 @mulPv288x32(i32* %r4, i32 %r81) -%r83 = add i320 %r79, %r82 -%r84 = lshr i320 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i320 @mulPv288x32(i32* %r2, i32 %r87) -%r89 = add i320 %r84, %r88 -%r90 = trunc i320 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i320 @mulPv288x32(i32* %r4, i32 %r91) -%r93 = add i320 %r89, %r92 -%r94 = lshr i320 %r93, 32 -%r95 = trunc i320 %r94 to i288 -%r96 = load i32, i32* %r4 -%r97 = zext i32 %r96 to i64 -%r99 = getelementptr i32, i32* %r4, i32 1 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i64 -%r102 = shl i64 %r101, 32 -%r103 = or i64 %r97, %r102 -%r104 = zext i64 %r103 to i96 -%r106 = getelementptr i32, i32* %r4, i32 2 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i96 -%r109 = shl i96 %r108, 64 -%r110 = or i96 %r104, %r109 -%r111 = zext i96 %r110 to i128 -%r113 = getelementptr i32, i32* %r4, i32 3 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i128 -%r116 = shl i128 %r115, 96 -%r117 = or i128 %r111, %r116 -%r118 = zext i128 %r117 to i160 -%r120 = getelementptr i32, i32* %r4, i32 4 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i160 -%r123 = shl i160 %r122, 128 -%r124 = or i160 %r118, %r123 -%r125 = zext i160 %r124 to i192 -%r127 = getelementptr i32, i32* %r4, i32 5 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i192 -%r130 = shl i192 %r129, 160 -%r131 = or i192 %r125, %r130 -%r132 = zext i192 %r131 to i224 -%r134 = getelementptr i32, i32* %r4, i32 6 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i224 -%r137 = shl i224 %r136, 192 -%r138 = or i224 %r132, %r137 -%r139 = zext i224 %r138 to i256 -%r141 = getelementptr i32, i32* %r4, i32 7 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i256 -%r144 = shl i256 %r143, 224 -%r145 = or i256 %r139, %r144 -%r146 = zext i256 %r145 to i288 -%r148 = getelementptr i32, i32* %r4, i32 8 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i288 -%r151 = shl i288 %r150, 256 -%r152 = or i288 %r146, %r151 -%r153 = sub i288 %r95, %r152 -%r154 = lshr i288 %r153, 287 -%r155 = trunc i288 %r154 to i1 -%r156 = select i1 %r155, i288 %r95, i288 %r153 -%r157 = trunc i288 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 0 -store i32 %r157, i32* %r159 -%r160 = lshr i288 %r156, 32 -%r161 = trunc i288 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 1 -store i32 %r161, i32* %r163 -%r164 = lshr i288 %r160, 32 -%r165 = trunc i288 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 2 -store i32 %r165, i32* %r167 -%r168 = lshr i288 %r164, 32 -%r169 = trunc i288 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 3 -store i32 %r169, i32* %r171 -%r172 = lshr i288 %r168, 32 -%r173 = trunc i288 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 4 -store i32 %r173, i32* %r175 -%r176 = lshr i288 %r172, 32 -%r177 = trunc i288 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 5 -store i32 %r177, i32* %r179 -%r180 = lshr i288 %r176, 32 -%r181 = trunc i288 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 6 -store i32 %r181, i32* %r183 -%r184 = lshr i288 %r180, 32 -%r185 = trunc i288 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 7 -store i32 %r185, i32* %r187 -%r188 = lshr i288 %r184, 32 -%r189 = trunc i288 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 8 -store i32 %r189, i32* %r191 -ret void -} -define void @mcl_fp_montRed9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = load i32, i32* %r2 -%r65 = zext i32 %r64 to i64 -%r67 = getelementptr i32, i32* %r2, i32 1 -%r68 = load i32, i32* %r67 -%r69 = zext i32 %r68 to i64 -%r70 = shl i64 %r69, 32 -%r71 = or i64 %r65, %r70 -%r72 = zext i64 %r71 to i96 -%r74 = getelementptr i32, i32* %r2, i32 2 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i96 -%r77 = shl i96 %r76, 64 -%r78 = or i96 %r72, %r77 -%r79 = zext i96 %r78 to i128 -%r81 = getelementptr i32, i32* %r2, i32 3 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i128 -%r84 = shl i128 %r83, 96 -%r85 = or i128 %r79, %r84 -%r86 = zext i128 %r85 to i160 -%r88 = getelementptr i32, i32* %r2, i32 4 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i160 -%r91 = shl i160 %r90, 128 -%r92 = or i160 %r86, %r91 -%r93 = zext i160 %r92 to i192 -%r95 = getelementptr i32, i32* %r2, i32 5 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i192 -%r98 = shl i192 %r97, 160 -%r99 = or i192 %r93, %r98 -%r100 = zext i192 %r99 to i224 -%r102 = getelementptr i32, i32* %r2, i32 6 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i224 -%r105 = shl i224 %r104, 192 -%r106 = or i224 %r100, %r105 -%r107 = zext i224 %r106 to i256 -%r109 = getelementptr i32, i32* %r2, i32 7 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i256 -%r112 = shl i256 %r111, 224 -%r113 = or i256 %r107, %r112 -%r114 = zext i256 %r113 to i288 -%r116 = getelementptr i32, i32* %r2, i32 8 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i288 -%r119 = shl i288 %r118, 256 -%r120 = or i288 %r114, %r119 -%r121 = zext i288 %r120 to i320 -%r123 = getelementptr i32, i32* %r2, i32 9 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i320 -%r126 = shl i320 %r125, 288 -%r127 = or i320 %r121, %r126 -%r128 = zext i320 %r127 to i352 -%r130 = getelementptr i32, i32* %r2, i32 10 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i352 -%r133 = shl i352 %r132, 320 -%r134 = or i352 %r128, %r133 -%r135 = zext i352 %r134 to i384 -%r137 = getelementptr i32, i32* %r2, i32 11 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i384 -%r140 = shl i384 %r139, 352 -%r141 = or i384 %r135, %r140 -%r142 = zext i384 %r141 to i416 -%r144 = getelementptr i32, i32* %r2, i32 12 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i416 -%r147 = shl i416 %r146, 384 -%r148 = or i416 %r142, %r147 -%r149 = zext i416 %r148 to i448 -%r151 = getelementptr i32, i32* %r2, i32 13 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i448 -%r154 = shl i448 %r153, 416 -%r155 = or i448 %r149, %r154 -%r156 = zext i448 %r155 to i480 -%r158 = getelementptr i32, i32* %r2, i32 14 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i480 -%r161 = shl i480 %r160, 448 -%r162 = or i480 %r156, %r161 -%r163 = zext i480 %r162 to i512 -%r165 = getelementptr i32, i32* %r2, i32 15 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i512 -%r168 = shl i512 %r167, 480 -%r169 = or i512 %r163, %r168 -%r170 = zext i512 %r169 to i544 -%r172 = getelementptr i32, i32* %r2, i32 16 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i544 -%r175 = shl i544 %r174, 512 -%r176 = or i544 %r170, %r175 -%r177 = zext i544 %r176 to i576 -%r179 = getelementptr i32, i32* %r2, i32 17 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i576 -%r182 = shl i576 %r181, 544 -%r183 = or i576 %r177, %r182 -%r184 = zext i576 %r183 to i608 -%r185 = trunc i608 %r184 to i32 -%r186 = mul i32 %r185, %r6 -%r187 = call i320 @mulPv288x32(i32* %r3, i32 %r186) -%r188 = zext i320 %r187 to i608 -%r189 = add i608 %r184, %r188 -%r190 = lshr i608 %r189, 32 -%r191 = trunc i608 %r190 to i576 -%r192 = trunc i576 %r191 to i32 -%r193 = mul i32 %r192, %r6 -%r194 = call i320 @mulPv288x32(i32* %r3, i32 %r193) -%r195 = zext i320 %r194 to i576 -%r196 = add i576 %r191, %r195 -%r197 = lshr i576 %r196, 32 -%r198 = trunc i576 %r197 to i544 -%r199 = trunc i544 %r198 to i32 -%r200 = mul i32 %r199, %r6 -%r201 = call i320 @mulPv288x32(i32* %r3, i32 %r200) -%r202 = zext i320 %r201 to i544 -%r203 = add i544 %r198, %r202 -%r204 = lshr i544 %r203, 32 -%r205 = trunc i544 %r204 to i512 -%r206 = trunc i512 %r205 to i32 -%r207 = mul i32 %r206, %r6 -%r208 = call i320 @mulPv288x32(i32* %r3, i32 %r207) -%r209 = zext i320 %r208 to i512 -%r210 = add i512 %r205, %r209 -%r211 = lshr i512 %r210, 32 -%r212 = trunc i512 %r211 to i480 -%r213 = trunc i480 %r212 to i32 -%r214 = mul i32 %r213, %r6 -%r215 = call i320 @mulPv288x32(i32* %r3, i32 %r214) -%r216 = zext i320 %r215 to i480 -%r217 = add i480 %r212, %r216 -%r218 = lshr i480 %r217, 32 -%r219 = trunc i480 %r218 to i448 -%r220 = trunc i448 %r219 to i32 -%r221 = mul i32 %r220, %r6 -%r222 = call i320 @mulPv288x32(i32* %r3, i32 %r221) -%r223 = zext i320 %r222 to i448 -%r224 = add i448 %r219, %r223 -%r225 = lshr i448 %r224, 32 -%r226 = trunc i448 %r225 to i416 -%r227 = trunc i416 %r226 to i32 -%r228 = mul i32 %r227, %r6 -%r229 = call i320 @mulPv288x32(i32* %r3, i32 %r228) -%r230 = zext i320 %r229 to i416 -%r231 = add i416 %r226, %r230 -%r232 = lshr i416 %r231, 32 -%r233 = trunc i416 %r232 to i384 -%r234 = trunc i384 %r233 to i32 -%r235 = mul i32 %r234, %r6 -%r236 = call i320 @mulPv288x32(i32* %r3, i32 %r235) -%r237 = zext i320 %r236 to i384 -%r238 = add i384 %r233, %r237 -%r239 = lshr i384 %r238, 32 -%r240 = trunc i384 %r239 to i352 -%r241 = trunc i352 %r240 to i32 -%r242 = mul i32 %r241, %r6 -%r243 = call i320 @mulPv288x32(i32* %r3, i32 %r242) -%r244 = zext i320 %r243 to i352 -%r245 = add i352 %r240, %r244 -%r246 = lshr i352 %r245, 32 -%r247 = trunc i352 %r246 to i320 -%r248 = zext i288 %r63 to i320 -%r249 = sub i320 %r247, %r248 -%r250 = lshr i320 %r249, 288 -%r251 = trunc i320 %r250 to i1 -%r252 = select i1 %r251, i320 %r247, i320 %r249 -%r253 = trunc i320 %r252 to i288 -%r254 = trunc i288 %r253 to i32 -%r256 = getelementptr i32, i32* %r1, i32 0 -store i32 %r254, i32* %r256 -%r257 = lshr i288 %r253, 32 -%r258 = trunc i288 %r257 to i32 -%r260 = getelementptr i32, i32* %r1, i32 1 -store i32 %r258, i32* %r260 -%r261 = lshr i288 %r257, 32 -%r262 = trunc i288 %r261 to i32 -%r264 = getelementptr i32, i32* %r1, i32 2 -store i32 %r262, i32* %r264 -%r265 = lshr i288 %r261, 32 -%r266 = trunc i288 %r265 to i32 -%r268 = getelementptr i32, i32* %r1, i32 3 -store i32 %r266, i32* %r268 -%r269 = lshr i288 %r265, 32 -%r270 = trunc i288 %r269 to i32 -%r272 = getelementptr i32, i32* %r1, i32 4 -store i32 %r270, i32* %r272 -%r273 = lshr i288 %r269, 32 -%r274 = trunc i288 %r273 to i32 -%r276 = getelementptr i32, i32* %r1, i32 5 -store i32 %r274, i32* %r276 -%r277 = lshr i288 %r273, 32 -%r278 = trunc i288 %r277 to i32 -%r280 = getelementptr i32, i32* %r1, i32 6 -store i32 %r278, i32* %r280 -%r281 = lshr i288 %r277, 32 -%r282 = trunc i288 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 7 -store i32 %r282, i32* %r284 -%r285 = lshr i288 %r281, 32 -%r286 = trunc i288 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 8 -store i32 %r286, i32* %r288 -ret void -} -define i32 @mcl_fp_addPre9L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r63 = load i32, i32* %r4 -%r64 = zext i32 %r63 to i64 -%r66 = getelementptr i32, i32* %r4, i32 1 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i64 -%r69 = shl i64 %r68, 32 -%r70 = or i64 %r64, %r69 -%r71 = zext i64 %r70 to i96 -%r73 = getelementptr i32, i32* %r4, i32 2 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i96 -%r76 = shl i96 %r75, 64 -%r77 = or i96 %r71, %r76 -%r78 = zext i96 %r77 to i128 -%r80 = getelementptr i32, i32* %r4, i32 3 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i128 -%r83 = shl i128 %r82, 96 -%r84 = or i128 %r78, %r83 -%r85 = zext i128 %r84 to i160 -%r87 = getelementptr i32, i32* %r4, i32 4 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i160 -%r90 = shl i160 %r89, 128 -%r91 = or i160 %r85, %r90 -%r92 = zext i160 %r91 to i192 -%r94 = getelementptr i32, i32* %r4, i32 5 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i192 -%r97 = shl i192 %r96, 160 -%r98 = or i192 %r92, %r97 -%r99 = zext i192 %r98 to i224 -%r101 = getelementptr i32, i32* %r4, i32 6 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i224 -%r104 = shl i224 %r103, 192 -%r105 = or i224 %r99, %r104 -%r106 = zext i224 %r105 to i256 -%r108 = getelementptr i32, i32* %r4, i32 7 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i256 -%r111 = shl i256 %r110, 224 -%r112 = or i256 %r106, %r111 -%r113 = zext i256 %r112 to i288 -%r115 = getelementptr i32, i32* %r4, i32 8 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i288 -%r118 = shl i288 %r117, 256 -%r119 = or i288 %r113, %r118 -%r120 = zext i288 %r119 to i320 -%r121 = add i320 %r62, %r120 -%r122 = trunc i320 %r121 to i288 -%r123 = trunc i288 %r122 to i32 -%r125 = getelementptr i32, i32* %r2, i32 0 -store i32 %r123, i32* %r125 -%r126 = lshr i288 %r122, 32 -%r127 = trunc i288 %r126 to i32 -%r129 = getelementptr i32, i32* %r2, i32 1 -store i32 %r127, i32* %r129 -%r130 = lshr i288 %r126, 32 -%r131 = trunc i288 %r130 to i32 -%r133 = getelementptr i32, i32* %r2, i32 2 -store i32 %r131, i32* %r133 -%r134 = lshr i288 %r130, 32 -%r135 = trunc i288 %r134 to i32 -%r137 = getelementptr i32, i32* %r2, i32 3 -store i32 %r135, i32* %r137 -%r138 = lshr i288 %r134, 32 -%r139 = trunc i288 %r138 to i32 -%r141 = getelementptr i32, i32* %r2, i32 4 -store i32 %r139, i32* %r141 -%r142 = lshr i288 %r138, 32 -%r143 = trunc i288 %r142 to i32 -%r145 = getelementptr i32, i32* %r2, i32 5 -store i32 %r143, i32* %r145 -%r146 = lshr i288 %r142, 32 -%r147 = trunc i288 %r146 to i32 -%r149 = getelementptr i32, i32* %r2, i32 6 -store i32 %r147, i32* %r149 -%r150 = lshr i288 %r146, 32 -%r151 = trunc i288 %r150 to i32 -%r153 = getelementptr i32, i32* %r2, i32 7 -store i32 %r151, i32* %r153 -%r154 = lshr i288 %r150, 32 -%r155 = trunc i288 %r154 to i32 -%r157 = getelementptr i32, i32* %r2, i32 8 -store i32 %r155, i32* %r157 -%r158 = lshr i320 %r121, 288 -%r159 = trunc i320 %r158 to i32 -ret i32 %r159 -} -define i32 @mcl_fp_subPre9L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r63 = load i32, i32* %r4 -%r64 = zext i32 %r63 to i64 -%r66 = getelementptr i32, i32* %r4, i32 1 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i64 -%r69 = shl i64 %r68, 32 -%r70 = or i64 %r64, %r69 -%r71 = zext i64 %r70 to i96 -%r73 = getelementptr i32, i32* %r4, i32 2 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i96 -%r76 = shl i96 %r75, 64 -%r77 = or i96 %r71, %r76 -%r78 = zext i96 %r77 to i128 -%r80 = getelementptr i32, i32* %r4, i32 3 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i128 -%r83 = shl i128 %r82, 96 -%r84 = or i128 %r78, %r83 -%r85 = zext i128 %r84 to i160 -%r87 = getelementptr i32, i32* %r4, i32 4 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i160 -%r90 = shl i160 %r89, 128 -%r91 = or i160 %r85, %r90 -%r92 = zext i160 %r91 to i192 -%r94 = getelementptr i32, i32* %r4, i32 5 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i192 -%r97 = shl i192 %r96, 160 -%r98 = or i192 %r92, %r97 -%r99 = zext i192 %r98 to i224 -%r101 = getelementptr i32, i32* %r4, i32 6 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i224 -%r104 = shl i224 %r103, 192 -%r105 = or i224 %r99, %r104 -%r106 = zext i224 %r105 to i256 -%r108 = getelementptr i32, i32* %r4, i32 7 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i256 -%r111 = shl i256 %r110, 224 -%r112 = or i256 %r106, %r111 -%r113 = zext i256 %r112 to i288 -%r115 = getelementptr i32, i32* %r4, i32 8 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i288 -%r118 = shl i288 %r117, 256 -%r119 = or i288 %r113, %r118 -%r120 = zext i288 %r119 to i320 -%r121 = sub i320 %r62, %r120 -%r122 = trunc i320 %r121 to i288 -%r123 = trunc i288 %r122 to i32 -%r125 = getelementptr i32, i32* %r2, i32 0 -store i32 %r123, i32* %r125 -%r126 = lshr i288 %r122, 32 -%r127 = trunc i288 %r126 to i32 -%r129 = getelementptr i32, i32* %r2, i32 1 -store i32 %r127, i32* %r129 -%r130 = lshr i288 %r126, 32 -%r131 = trunc i288 %r130 to i32 -%r133 = getelementptr i32, i32* %r2, i32 2 -store i32 %r131, i32* %r133 -%r134 = lshr i288 %r130, 32 -%r135 = trunc i288 %r134 to i32 -%r137 = getelementptr i32, i32* %r2, i32 3 -store i32 %r135, i32* %r137 -%r138 = lshr i288 %r134, 32 -%r139 = trunc i288 %r138 to i32 -%r141 = getelementptr i32, i32* %r2, i32 4 -store i32 %r139, i32* %r141 -%r142 = lshr i288 %r138, 32 -%r143 = trunc i288 %r142 to i32 -%r145 = getelementptr i32, i32* %r2, i32 5 -store i32 %r143, i32* %r145 -%r146 = lshr i288 %r142, 32 -%r147 = trunc i288 %r146 to i32 -%r149 = getelementptr i32, i32* %r2, i32 6 -store i32 %r147, i32* %r149 -%r150 = lshr i288 %r146, 32 -%r151 = trunc i288 %r150 to i32 -%r153 = getelementptr i32, i32* %r2, i32 7 -store i32 %r151, i32* %r153 -%r154 = lshr i288 %r150, 32 -%r155 = trunc i288 %r154 to i32 -%r157 = getelementptr i32, i32* %r2, i32 8 -store i32 %r155, i32* %r157 -%r158 = lshr i320 %r121, 288 -%r159 = trunc i320 %r158 to i32 -%r161 = and i32 %r159, 1 -ret i32 %r161 -} -define void @mcl_fp_shr1_9L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = lshr i288 %r59, 1 -%r61 = trunc i288 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 0 -store i32 %r61, i32* %r63 -%r64 = lshr i288 %r60, 32 -%r65 = trunc i288 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 1 -store i32 %r65, i32* %r67 -%r68 = lshr i288 %r64, 32 -%r69 = trunc i288 %r68 to i32 -%r71 = getelementptr i32, i32* %r1, i32 2 -store i32 %r69, i32* %r71 -%r72 = lshr i288 %r68, 32 -%r73 = trunc i288 %r72 to i32 -%r75 = getelementptr i32, i32* %r1, i32 3 -store i32 %r73, i32* %r75 -%r76 = lshr i288 %r72, 32 -%r77 = trunc i288 %r76 to i32 -%r79 = getelementptr i32, i32* %r1, i32 4 -store i32 %r77, i32* %r79 -%r80 = lshr i288 %r76, 32 -%r81 = trunc i288 %r80 to i32 -%r83 = getelementptr i32, i32* %r1, i32 5 -store i32 %r81, i32* %r83 -%r84 = lshr i288 %r80, 32 -%r85 = trunc i288 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 6 -store i32 %r85, i32* %r87 -%r88 = lshr i288 %r84, 32 -%r89 = trunc i288 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 7 -store i32 %r89, i32* %r91 -%r92 = lshr i288 %r88, 32 -%r93 = trunc i288 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 8 -store i32 %r93, i32* %r95 -ret void -} -define void @mcl_fp_add9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = load i32, i32* %r3 -%r63 = zext i32 %r62 to i64 -%r65 = getelementptr i32, i32* %r3, i32 1 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i64 -%r68 = shl i64 %r67, 32 -%r69 = or i64 %r63, %r68 -%r70 = zext i64 %r69 to i96 -%r72 = getelementptr i32, i32* %r3, i32 2 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i96 -%r75 = shl i96 %r74, 64 -%r76 = or i96 %r70, %r75 -%r77 = zext i96 %r76 to i128 -%r79 = getelementptr i32, i32* %r3, i32 3 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r77, %r82 -%r84 = zext i128 %r83 to i160 -%r86 = getelementptr i32, i32* %r3, i32 4 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i160 -%r89 = shl i160 %r88, 128 -%r90 = or i160 %r84, %r89 -%r91 = zext i160 %r90 to i192 -%r93 = getelementptr i32, i32* %r3, i32 5 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i192 -%r96 = shl i192 %r95, 160 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i224 -%r100 = getelementptr i32, i32* %r3, i32 6 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i224 -%r103 = shl i224 %r102, 192 -%r104 = or i224 %r98, %r103 -%r105 = zext i224 %r104 to i256 -%r107 = getelementptr i32, i32* %r3, i32 7 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i256 -%r110 = shl i256 %r109, 224 -%r111 = or i256 %r105, %r110 -%r112 = zext i256 %r111 to i288 -%r114 = getelementptr i32, i32* %r3, i32 8 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i288 -%r117 = shl i288 %r116, 256 -%r118 = or i288 %r112, %r117 -%r119 = zext i288 %r61 to i320 -%r120 = zext i288 %r118 to i320 -%r121 = add i320 %r119, %r120 -%r122 = trunc i320 %r121 to i288 -%r123 = trunc i288 %r122 to i32 -%r125 = getelementptr i32, i32* %r1, i32 0 -store i32 %r123, i32* %r125 -%r126 = lshr i288 %r122, 32 -%r127 = trunc i288 %r126 to i32 -%r129 = getelementptr i32, i32* %r1, i32 1 -store i32 %r127, i32* %r129 -%r130 = lshr i288 %r126, 32 -%r131 = trunc i288 %r130 to i32 -%r133 = getelementptr i32, i32* %r1, i32 2 -store i32 %r131, i32* %r133 -%r134 = lshr i288 %r130, 32 -%r135 = trunc i288 %r134 to i32 -%r137 = getelementptr i32, i32* %r1, i32 3 -store i32 %r135, i32* %r137 -%r138 = lshr i288 %r134, 32 -%r139 = trunc i288 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 4 -store i32 %r139, i32* %r141 -%r142 = lshr i288 %r138, 32 -%r143 = trunc i288 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 5 -store i32 %r143, i32* %r145 -%r146 = lshr i288 %r142, 32 -%r147 = trunc i288 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 6 -store i32 %r147, i32* %r149 -%r150 = lshr i288 %r146, 32 -%r151 = trunc i288 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 7 -store i32 %r151, i32* %r153 -%r154 = lshr i288 %r150, 32 -%r155 = trunc i288 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 8 -store i32 %r155, i32* %r157 -%r158 = load i32, i32* %r4 -%r159 = zext i32 %r158 to i64 -%r161 = getelementptr i32, i32* %r4, i32 1 -%r162 = load i32, i32* %r161 -%r163 = zext i32 %r162 to i64 -%r164 = shl i64 %r163, 32 -%r165 = or i64 %r159, %r164 -%r166 = zext i64 %r165 to i96 -%r168 = getelementptr i32, i32* %r4, i32 2 -%r169 = load i32, i32* %r168 -%r170 = zext i32 %r169 to i96 -%r171 = shl i96 %r170, 64 -%r172 = or i96 %r166, %r171 -%r173 = zext i96 %r172 to i128 -%r175 = getelementptr i32, i32* %r4, i32 3 -%r176 = load i32, i32* %r175 -%r177 = zext i32 %r176 to i128 -%r178 = shl i128 %r177, 96 -%r179 = or i128 %r173, %r178 -%r180 = zext i128 %r179 to i160 -%r182 = getelementptr i32, i32* %r4, i32 4 -%r183 = load i32, i32* %r182 -%r184 = zext i32 %r183 to i160 -%r185 = shl i160 %r184, 128 -%r186 = or i160 %r180, %r185 -%r187 = zext i160 %r186 to i192 -%r189 = getelementptr i32, i32* %r4, i32 5 -%r190 = load i32, i32* %r189 -%r191 = zext i32 %r190 to i192 -%r192 = shl i192 %r191, 160 -%r193 = or i192 %r187, %r192 -%r194 = zext i192 %r193 to i224 -%r196 = getelementptr i32, i32* %r4, i32 6 -%r197 = load i32, i32* %r196 -%r198 = zext i32 %r197 to i224 -%r199 = shl i224 %r198, 192 -%r200 = or i224 %r194, %r199 -%r201 = zext i224 %r200 to i256 -%r203 = getelementptr i32, i32* %r4, i32 7 -%r204 = load i32, i32* %r203 -%r205 = zext i32 %r204 to i256 -%r206 = shl i256 %r205, 224 -%r207 = or i256 %r201, %r206 -%r208 = zext i256 %r207 to i288 -%r210 = getelementptr i32, i32* %r4, i32 8 -%r211 = load i32, i32* %r210 -%r212 = zext i32 %r211 to i288 -%r213 = shl i288 %r212, 256 -%r214 = or i288 %r208, %r213 -%r215 = zext i288 %r214 to i320 -%r216 = sub i320 %r121, %r215 -%r217 = lshr i320 %r216, 288 -%r218 = trunc i320 %r217 to i1 -br i1%r218, label %carry, label %nocarry -nocarry: -%r219 = trunc i320 %r216 to i288 -%r220 = trunc i288 %r219 to i32 -%r222 = getelementptr i32, i32* %r1, i32 0 -store i32 %r220, i32* %r222 -%r223 = lshr i288 %r219, 32 -%r224 = trunc i288 %r223 to i32 -%r226 = getelementptr i32, i32* %r1, i32 1 -store i32 %r224, i32* %r226 -%r227 = lshr i288 %r223, 32 -%r228 = trunc i288 %r227 to i32 -%r230 = getelementptr i32, i32* %r1, i32 2 -store i32 %r228, i32* %r230 -%r231 = lshr i288 %r227, 32 -%r232 = trunc i288 %r231 to i32 -%r234 = getelementptr i32, i32* %r1, i32 3 -store i32 %r232, i32* %r234 -%r235 = lshr i288 %r231, 32 -%r236 = trunc i288 %r235 to i32 -%r238 = getelementptr i32, i32* %r1, i32 4 -store i32 %r236, i32* %r238 -%r239 = lshr i288 %r235, 32 -%r240 = trunc i288 %r239 to i32 -%r242 = getelementptr i32, i32* %r1, i32 5 -store i32 %r240, i32* %r242 -%r243 = lshr i288 %r239, 32 -%r244 = trunc i288 %r243 to i32 -%r246 = getelementptr i32, i32* %r1, i32 6 -store i32 %r244, i32* %r246 -%r247 = lshr i288 %r243, 32 -%r248 = trunc i288 %r247 to i32 -%r250 = getelementptr i32, i32* %r1, i32 7 -store i32 %r248, i32* %r250 -%r251 = lshr i288 %r247, 32 -%r252 = trunc i288 %r251 to i32 -%r254 = getelementptr i32, i32* %r1, i32 8 -store i32 %r252, i32* %r254 -ret void -carry: -ret void -} -define void @mcl_fp_addNF9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = load i32, i32* %r3 -%r63 = zext i32 %r62 to i64 -%r65 = getelementptr i32, i32* %r3, i32 1 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i64 -%r68 = shl i64 %r67, 32 -%r69 = or i64 %r63, %r68 -%r70 = zext i64 %r69 to i96 -%r72 = getelementptr i32, i32* %r3, i32 2 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i96 -%r75 = shl i96 %r74, 64 -%r76 = or i96 %r70, %r75 -%r77 = zext i96 %r76 to i128 -%r79 = getelementptr i32, i32* %r3, i32 3 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r77, %r82 -%r84 = zext i128 %r83 to i160 -%r86 = getelementptr i32, i32* %r3, i32 4 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i160 -%r89 = shl i160 %r88, 128 -%r90 = or i160 %r84, %r89 -%r91 = zext i160 %r90 to i192 -%r93 = getelementptr i32, i32* %r3, i32 5 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i192 -%r96 = shl i192 %r95, 160 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i224 -%r100 = getelementptr i32, i32* %r3, i32 6 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i224 -%r103 = shl i224 %r102, 192 -%r104 = or i224 %r98, %r103 -%r105 = zext i224 %r104 to i256 -%r107 = getelementptr i32, i32* %r3, i32 7 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i256 -%r110 = shl i256 %r109, 224 -%r111 = or i256 %r105, %r110 -%r112 = zext i256 %r111 to i288 -%r114 = getelementptr i32, i32* %r3, i32 8 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i288 -%r117 = shl i288 %r116, 256 -%r118 = or i288 %r112, %r117 -%r119 = add i288 %r61, %r118 -%r120 = load i32, i32* %r4 -%r121 = zext i32 %r120 to i64 -%r123 = getelementptr i32, i32* %r4, i32 1 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i64 -%r126 = shl i64 %r125, 32 -%r127 = or i64 %r121, %r126 -%r128 = zext i64 %r127 to i96 -%r130 = getelementptr i32, i32* %r4, i32 2 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i96 -%r133 = shl i96 %r132, 64 -%r134 = or i96 %r128, %r133 -%r135 = zext i96 %r134 to i128 -%r137 = getelementptr i32, i32* %r4, i32 3 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i128 -%r140 = shl i128 %r139, 96 -%r141 = or i128 %r135, %r140 -%r142 = zext i128 %r141 to i160 -%r144 = getelementptr i32, i32* %r4, i32 4 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i160 -%r147 = shl i160 %r146, 128 -%r148 = or i160 %r142, %r147 -%r149 = zext i160 %r148 to i192 -%r151 = getelementptr i32, i32* %r4, i32 5 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i192 -%r154 = shl i192 %r153, 160 -%r155 = or i192 %r149, %r154 -%r156 = zext i192 %r155 to i224 -%r158 = getelementptr i32, i32* %r4, i32 6 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i224 -%r161 = shl i224 %r160, 192 -%r162 = or i224 %r156, %r161 -%r163 = zext i224 %r162 to i256 -%r165 = getelementptr i32, i32* %r4, i32 7 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i256 -%r168 = shl i256 %r167, 224 -%r169 = or i256 %r163, %r168 -%r170 = zext i256 %r169 to i288 -%r172 = getelementptr i32, i32* %r4, i32 8 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i288 -%r175 = shl i288 %r174, 256 -%r176 = or i288 %r170, %r175 -%r177 = sub i288 %r119, %r176 -%r178 = lshr i288 %r177, 287 -%r179 = trunc i288 %r178 to i1 -%r180 = select i1 %r179, i288 %r119, i288 %r177 -%r181 = trunc i288 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 0 -store i32 %r181, i32* %r183 -%r184 = lshr i288 %r180, 32 -%r185 = trunc i288 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 1 -store i32 %r185, i32* %r187 -%r188 = lshr i288 %r184, 32 -%r189 = trunc i288 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 2 -store i32 %r189, i32* %r191 -%r192 = lshr i288 %r188, 32 -%r193 = trunc i288 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 3 -store i32 %r193, i32* %r195 -%r196 = lshr i288 %r192, 32 -%r197 = trunc i288 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 4 -store i32 %r197, i32* %r199 -%r200 = lshr i288 %r196, 32 -%r201 = trunc i288 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 5 -store i32 %r201, i32* %r203 -%r204 = lshr i288 %r200, 32 -%r205 = trunc i288 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 6 -store i32 %r205, i32* %r207 -%r208 = lshr i288 %r204, 32 -%r209 = trunc i288 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 7 -store i32 %r209, i32* %r211 -%r212 = lshr i288 %r208, 32 -%r213 = trunc i288 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 8 -store i32 %r213, i32* %r215 -ret void -} -define void @mcl_fp_sub9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = load i32, i32* %r3 -%r63 = zext i32 %r62 to i64 -%r65 = getelementptr i32, i32* %r3, i32 1 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i64 -%r68 = shl i64 %r67, 32 -%r69 = or i64 %r63, %r68 -%r70 = zext i64 %r69 to i96 -%r72 = getelementptr i32, i32* %r3, i32 2 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i96 -%r75 = shl i96 %r74, 64 -%r76 = or i96 %r70, %r75 -%r77 = zext i96 %r76 to i128 -%r79 = getelementptr i32, i32* %r3, i32 3 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r77, %r82 -%r84 = zext i128 %r83 to i160 -%r86 = getelementptr i32, i32* %r3, i32 4 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i160 -%r89 = shl i160 %r88, 128 -%r90 = or i160 %r84, %r89 -%r91 = zext i160 %r90 to i192 -%r93 = getelementptr i32, i32* %r3, i32 5 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i192 -%r96 = shl i192 %r95, 160 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i224 -%r100 = getelementptr i32, i32* %r3, i32 6 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i224 -%r103 = shl i224 %r102, 192 -%r104 = or i224 %r98, %r103 -%r105 = zext i224 %r104 to i256 -%r107 = getelementptr i32, i32* %r3, i32 7 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i256 -%r110 = shl i256 %r109, 224 -%r111 = or i256 %r105, %r110 -%r112 = zext i256 %r111 to i288 -%r114 = getelementptr i32, i32* %r3, i32 8 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i288 -%r117 = shl i288 %r116, 256 -%r118 = or i288 %r112, %r117 -%r119 = zext i288 %r61 to i320 -%r120 = zext i288 %r118 to i320 -%r121 = sub i320 %r119, %r120 -%r122 = trunc i320 %r121 to i288 -%r123 = lshr i320 %r121, 288 -%r124 = trunc i320 %r123 to i1 -%r125 = trunc i288 %r122 to i32 -%r127 = getelementptr i32, i32* %r1, i32 0 -store i32 %r125, i32* %r127 -%r128 = lshr i288 %r122, 32 -%r129 = trunc i288 %r128 to i32 -%r131 = getelementptr i32, i32* %r1, i32 1 -store i32 %r129, i32* %r131 -%r132 = lshr i288 %r128, 32 -%r133 = trunc i288 %r132 to i32 -%r135 = getelementptr i32, i32* %r1, i32 2 -store i32 %r133, i32* %r135 -%r136 = lshr i288 %r132, 32 -%r137 = trunc i288 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 3 -store i32 %r137, i32* %r139 -%r140 = lshr i288 %r136, 32 -%r141 = trunc i288 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 4 -store i32 %r141, i32* %r143 -%r144 = lshr i288 %r140, 32 -%r145 = trunc i288 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 5 -store i32 %r145, i32* %r147 -%r148 = lshr i288 %r144, 32 -%r149 = trunc i288 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 6 -store i32 %r149, i32* %r151 -%r152 = lshr i288 %r148, 32 -%r153 = trunc i288 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 7 -store i32 %r153, i32* %r155 -%r156 = lshr i288 %r152, 32 -%r157 = trunc i288 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 8 -store i32 %r157, i32* %r159 -br i1%r124, label %carry, label %nocarry -nocarry: -ret void -carry: -%r160 = load i32, i32* %r4 -%r161 = zext i32 %r160 to i64 -%r163 = getelementptr i32, i32* %r4, i32 1 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i64 -%r166 = shl i64 %r165, 32 -%r167 = or i64 %r161, %r166 -%r168 = zext i64 %r167 to i96 -%r170 = getelementptr i32, i32* %r4, i32 2 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i96 -%r173 = shl i96 %r172, 64 -%r174 = or i96 %r168, %r173 -%r175 = zext i96 %r174 to i128 -%r177 = getelementptr i32, i32* %r4, i32 3 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i128 -%r180 = shl i128 %r179, 96 -%r181 = or i128 %r175, %r180 -%r182 = zext i128 %r181 to i160 -%r184 = getelementptr i32, i32* %r4, i32 4 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i160 -%r187 = shl i160 %r186, 128 -%r188 = or i160 %r182, %r187 -%r189 = zext i160 %r188 to i192 -%r191 = getelementptr i32, i32* %r4, i32 5 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i192 -%r194 = shl i192 %r193, 160 -%r195 = or i192 %r189, %r194 -%r196 = zext i192 %r195 to i224 -%r198 = getelementptr i32, i32* %r4, i32 6 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i224 -%r201 = shl i224 %r200, 192 -%r202 = or i224 %r196, %r201 -%r203 = zext i224 %r202 to i256 -%r205 = getelementptr i32, i32* %r4, i32 7 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i256 -%r208 = shl i256 %r207, 224 -%r209 = or i256 %r203, %r208 -%r210 = zext i256 %r209 to i288 -%r212 = getelementptr i32, i32* %r4, i32 8 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i288 -%r215 = shl i288 %r214, 256 -%r216 = or i288 %r210, %r215 -%r217 = add i288 %r122, %r216 -%r218 = trunc i288 %r217 to i32 -%r220 = getelementptr i32, i32* %r1, i32 0 -store i32 %r218, i32* %r220 -%r221 = lshr i288 %r217, 32 -%r222 = trunc i288 %r221 to i32 -%r224 = getelementptr i32, i32* %r1, i32 1 -store i32 %r222, i32* %r224 -%r225 = lshr i288 %r221, 32 -%r226 = trunc i288 %r225 to i32 -%r228 = getelementptr i32, i32* %r1, i32 2 -store i32 %r226, i32* %r228 -%r229 = lshr i288 %r225, 32 -%r230 = trunc i288 %r229 to i32 -%r232 = getelementptr i32, i32* %r1, i32 3 -store i32 %r230, i32* %r232 -%r233 = lshr i288 %r229, 32 -%r234 = trunc i288 %r233 to i32 -%r236 = getelementptr i32, i32* %r1, i32 4 -store i32 %r234, i32* %r236 -%r237 = lshr i288 %r233, 32 -%r238 = trunc i288 %r237 to i32 -%r240 = getelementptr i32, i32* %r1, i32 5 -store i32 %r238, i32* %r240 -%r241 = lshr i288 %r237, 32 -%r242 = trunc i288 %r241 to i32 -%r244 = getelementptr i32, i32* %r1, i32 6 -store i32 %r242, i32* %r244 -%r245 = lshr i288 %r241, 32 -%r246 = trunc i288 %r245 to i32 -%r248 = getelementptr i32, i32* %r1, i32 7 -store i32 %r246, i32* %r248 -%r249 = lshr i288 %r245, 32 -%r250 = trunc i288 %r249 to i32 -%r252 = getelementptr i32, i32* %r1, i32 8 -store i32 %r250, i32* %r252 -ret void -} -define void @mcl_fp_subNF9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = load i32, i32* %r3 -%r63 = zext i32 %r62 to i64 -%r65 = getelementptr i32, i32* %r3, i32 1 -%r66 = load i32, i32* %r65 -%r67 = zext i32 %r66 to i64 -%r68 = shl i64 %r67, 32 -%r69 = or i64 %r63, %r68 -%r70 = zext i64 %r69 to i96 -%r72 = getelementptr i32, i32* %r3, i32 2 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i96 -%r75 = shl i96 %r74, 64 -%r76 = or i96 %r70, %r75 -%r77 = zext i96 %r76 to i128 -%r79 = getelementptr i32, i32* %r3, i32 3 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r77, %r82 -%r84 = zext i128 %r83 to i160 -%r86 = getelementptr i32, i32* %r3, i32 4 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i160 -%r89 = shl i160 %r88, 128 -%r90 = or i160 %r84, %r89 -%r91 = zext i160 %r90 to i192 -%r93 = getelementptr i32, i32* %r3, i32 5 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i192 -%r96 = shl i192 %r95, 160 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i224 -%r100 = getelementptr i32, i32* %r3, i32 6 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i224 -%r103 = shl i224 %r102, 192 -%r104 = or i224 %r98, %r103 -%r105 = zext i224 %r104 to i256 -%r107 = getelementptr i32, i32* %r3, i32 7 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i256 -%r110 = shl i256 %r109, 224 -%r111 = or i256 %r105, %r110 -%r112 = zext i256 %r111 to i288 -%r114 = getelementptr i32, i32* %r3, i32 8 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i288 -%r117 = shl i288 %r116, 256 -%r118 = or i288 %r112, %r117 -%r119 = sub i288 %r61, %r118 -%r120 = lshr i288 %r119, 287 -%r121 = trunc i288 %r120 to i1 -%r122 = load i32, i32* %r4 -%r123 = zext i32 %r122 to i64 -%r125 = getelementptr i32, i32* %r4, i32 1 -%r126 = load i32, i32* %r125 -%r127 = zext i32 %r126 to i64 -%r128 = shl i64 %r127, 32 -%r129 = or i64 %r123, %r128 -%r130 = zext i64 %r129 to i96 -%r132 = getelementptr i32, i32* %r4, i32 2 -%r133 = load i32, i32* %r132 -%r134 = zext i32 %r133 to i96 -%r135 = shl i96 %r134, 64 -%r136 = or i96 %r130, %r135 -%r137 = zext i96 %r136 to i128 -%r139 = getelementptr i32, i32* %r4, i32 3 -%r140 = load i32, i32* %r139 -%r141 = zext i32 %r140 to i128 -%r142 = shl i128 %r141, 96 -%r143 = or i128 %r137, %r142 -%r144 = zext i128 %r143 to i160 -%r146 = getelementptr i32, i32* %r4, i32 4 -%r147 = load i32, i32* %r146 -%r148 = zext i32 %r147 to i160 -%r149 = shl i160 %r148, 128 -%r150 = or i160 %r144, %r149 -%r151 = zext i160 %r150 to i192 -%r153 = getelementptr i32, i32* %r4, i32 5 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i192 -%r156 = shl i192 %r155, 160 -%r157 = or i192 %r151, %r156 -%r158 = zext i192 %r157 to i224 -%r160 = getelementptr i32, i32* %r4, i32 6 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i224 -%r163 = shl i224 %r162, 192 -%r164 = or i224 %r158, %r163 -%r165 = zext i224 %r164 to i256 -%r167 = getelementptr i32, i32* %r4, i32 7 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i256 -%r170 = shl i256 %r169, 224 -%r171 = or i256 %r165, %r170 -%r172 = zext i256 %r171 to i288 -%r174 = getelementptr i32, i32* %r4, i32 8 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i288 -%r177 = shl i288 %r176, 256 -%r178 = or i288 %r172, %r177 -%r180 = select i1 %r121, i288 %r178, i288 0 -%r181 = add i288 %r119, %r180 -%r182 = trunc i288 %r181 to i32 -%r184 = getelementptr i32, i32* %r1, i32 0 -store i32 %r182, i32* %r184 -%r185 = lshr i288 %r181, 32 -%r186 = trunc i288 %r185 to i32 -%r188 = getelementptr i32, i32* %r1, i32 1 -store i32 %r186, i32* %r188 -%r189 = lshr i288 %r185, 32 -%r190 = trunc i288 %r189 to i32 -%r192 = getelementptr i32, i32* %r1, i32 2 -store i32 %r190, i32* %r192 -%r193 = lshr i288 %r189, 32 -%r194 = trunc i288 %r193 to i32 -%r196 = getelementptr i32, i32* %r1, i32 3 -store i32 %r194, i32* %r196 -%r197 = lshr i288 %r193, 32 -%r198 = trunc i288 %r197 to i32 -%r200 = getelementptr i32, i32* %r1, i32 4 -store i32 %r198, i32* %r200 -%r201 = lshr i288 %r197, 32 -%r202 = trunc i288 %r201 to i32 -%r204 = getelementptr i32, i32* %r1, i32 5 -store i32 %r202, i32* %r204 -%r205 = lshr i288 %r201, 32 -%r206 = trunc i288 %r205 to i32 -%r208 = getelementptr i32, i32* %r1, i32 6 -store i32 %r206, i32* %r208 -%r209 = lshr i288 %r205, 32 -%r210 = trunc i288 %r209 to i32 -%r212 = getelementptr i32, i32* %r1, i32 7 -store i32 %r210, i32* %r212 -%r213 = lshr i288 %r209, 32 -%r214 = trunc i288 %r213 to i32 -%r216 = getelementptr i32, i32* %r1, i32 8 -store i32 %r214, i32* %r216 -ret void -} -define void @mcl_fpDbl_add9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = load i32, i32* %r3 -%r126 = zext i32 %r125 to i64 -%r128 = getelementptr i32, i32* %r3, i32 1 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i64 -%r131 = shl i64 %r130, 32 -%r132 = or i64 %r126, %r131 -%r133 = zext i64 %r132 to i96 -%r135 = getelementptr i32, i32* %r3, i32 2 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i96 -%r138 = shl i96 %r137, 64 -%r139 = or i96 %r133, %r138 -%r140 = zext i96 %r139 to i128 -%r142 = getelementptr i32, i32* %r3, i32 3 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i128 -%r145 = shl i128 %r144, 96 -%r146 = or i128 %r140, %r145 -%r147 = zext i128 %r146 to i160 -%r149 = getelementptr i32, i32* %r3, i32 4 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i160 -%r152 = shl i160 %r151, 128 -%r153 = or i160 %r147, %r152 -%r154 = zext i160 %r153 to i192 -%r156 = getelementptr i32, i32* %r3, i32 5 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i192 -%r159 = shl i192 %r158, 160 -%r160 = or i192 %r154, %r159 -%r161 = zext i192 %r160 to i224 -%r163 = getelementptr i32, i32* %r3, i32 6 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i224 -%r166 = shl i224 %r165, 192 -%r167 = or i224 %r161, %r166 -%r168 = zext i224 %r167 to i256 -%r170 = getelementptr i32, i32* %r3, i32 7 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i256 -%r173 = shl i256 %r172, 224 -%r174 = or i256 %r168, %r173 -%r175 = zext i256 %r174 to i288 -%r177 = getelementptr i32, i32* %r3, i32 8 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i288 -%r180 = shl i288 %r179, 256 -%r181 = or i288 %r175, %r180 -%r182 = zext i288 %r181 to i320 -%r184 = getelementptr i32, i32* %r3, i32 9 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i320 -%r187 = shl i320 %r186, 288 -%r188 = or i320 %r182, %r187 -%r189 = zext i320 %r188 to i352 -%r191 = getelementptr i32, i32* %r3, i32 10 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i352 -%r194 = shl i352 %r193, 320 -%r195 = or i352 %r189, %r194 -%r196 = zext i352 %r195 to i384 -%r198 = getelementptr i32, i32* %r3, i32 11 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i384 -%r201 = shl i384 %r200, 352 -%r202 = or i384 %r196, %r201 -%r203 = zext i384 %r202 to i416 -%r205 = getelementptr i32, i32* %r3, i32 12 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i416 -%r208 = shl i416 %r207, 384 -%r209 = or i416 %r203, %r208 -%r210 = zext i416 %r209 to i448 -%r212 = getelementptr i32, i32* %r3, i32 13 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i448 -%r215 = shl i448 %r214, 416 -%r216 = or i448 %r210, %r215 -%r217 = zext i448 %r216 to i480 -%r219 = getelementptr i32, i32* %r3, i32 14 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i480 -%r222 = shl i480 %r221, 448 -%r223 = or i480 %r217, %r222 -%r224 = zext i480 %r223 to i512 -%r226 = getelementptr i32, i32* %r3, i32 15 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i512 -%r229 = shl i512 %r228, 480 -%r230 = or i512 %r224, %r229 -%r231 = zext i512 %r230 to i544 -%r233 = getelementptr i32, i32* %r3, i32 16 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i544 -%r236 = shl i544 %r235, 512 -%r237 = or i544 %r231, %r236 -%r238 = zext i544 %r237 to i576 -%r240 = getelementptr i32, i32* %r3, i32 17 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i576 -%r243 = shl i576 %r242, 544 -%r244 = or i576 %r238, %r243 -%r245 = zext i576 %r124 to i608 -%r246 = zext i576 %r244 to i608 -%r247 = add i608 %r245, %r246 -%r248 = trunc i608 %r247 to i288 -%r249 = trunc i288 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 0 -store i32 %r249, i32* %r251 -%r252 = lshr i288 %r248, 32 -%r253 = trunc i288 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 1 -store i32 %r253, i32* %r255 -%r256 = lshr i288 %r252, 32 -%r257 = trunc i288 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 2 -store i32 %r257, i32* %r259 -%r260 = lshr i288 %r256, 32 -%r261 = trunc i288 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 3 -store i32 %r261, i32* %r263 -%r264 = lshr i288 %r260, 32 -%r265 = trunc i288 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 4 -store i32 %r265, i32* %r267 -%r268 = lshr i288 %r264, 32 -%r269 = trunc i288 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 5 -store i32 %r269, i32* %r271 -%r272 = lshr i288 %r268, 32 -%r273 = trunc i288 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 6 -store i32 %r273, i32* %r275 -%r276 = lshr i288 %r272, 32 -%r277 = trunc i288 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 7 -store i32 %r277, i32* %r279 -%r280 = lshr i288 %r276, 32 -%r281 = trunc i288 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 8 -store i32 %r281, i32* %r283 -%r284 = lshr i608 %r247, 288 -%r285 = trunc i608 %r284 to i320 -%r286 = load i32, i32* %r4 -%r287 = zext i32 %r286 to i64 -%r289 = getelementptr i32, i32* %r4, i32 1 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i64 -%r292 = shl i64 %r291, 32 -%r293 = or i64 %r287, %r292 -%r294 = zext i64 %r293 to i96 -%r296 = getelementptr i32, i32* %r4, i32 2 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i96 -%r299 = shl i96 %r298, 64 -%r300 = or i96 %r294, %r299 -%r301 = zext i96 %r300 to i128 -%r303 = getelementptr i32, i32* %r4, i32 3 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i128 -%r306 = shl i128 %r305, 96 -%r307 = or i128 %r301, %r306 -%r308 = zext i128 %r307 to i160 -%r310 = getelementptr i32, i32* %r4, i32 4 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i160 -%r313 = shl i160 %r312, 128 -%r314 = or i160 %r308, %r313 -%r315 = zext i160 %r314 to i192 -%r317 = getelementptr i32, i32* %r4, i32 5 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i192 -%r320 = shl i192 %r319, 160 -%r321 = or i192 %r315, %r320 -%r322 = zext i192 %r321 to i224 -%r324 = getelementptr i32, i32* %r4, i32 6 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i224 -%r327 = shl i224 %r326, 192 -%r328 = or i224 %r322, %r327 -%r329 = zext i224 %r328 to i256 -%r331 = getelementptr i32, i32* %r4, i32 7 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i256 -%r334 = shl i256 %r333, 224 -%r335 = or i256 %r329, %r334 -%r336 = zext i256 %r335 to i288 -%r338 = getelementptr i32, i32* %r4, i32 8 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i288 -%r341 = shl i288 %r340, 256 -%r342 = or i288 %r336, %r341 -%r343 = zext i288 %r342 to i320 -%r344 = sub i320 %r285, %r343 -%r345 = lshr i320 %r344, 288 -%r346 = trunc i320 %r345 to i1 -%r347 = select i1 %r346, i320 %r285, i320 %r344 -%r348 = trunc i320 %r347 to i288 -%r350 = getelementptr i32, i32* %r1, i32 9 -%r351 = trunc i288 %r348 to i32 -%r353 = getelementptr i32, i32* %r350, i32 0 -store i32 %r351, i32* %r353 -%r354 = lshr i288 %r348, 32 -%r355 = trunc i288 %r354 to i32 -%r357 = getelementptr i32, i32* %r350, i32 1 -store i32 %r355, i32* %r357 -%r358 = lshr i288 %r354, 32 -%r359 = trunc i288 %r358 to i32 -%r361 = getelementptr i32, i32* %r350, i32 2 -store i32 %r359, i32* %r361 -%r362 = lshr i288 %r358, 32 -%r363 = trunc i288 %r362 to i32 -%r365 = getelementptr i32, i32* %r350, i32 3 -store i32 %r363, i32* %r365 -%r366 = lshr i288 %r362, 32 -%r367 = trunc i288 %r366 to i32 -%r369 = getelementptr i32, i32* %r350, i32 4 -store i32 %r367, i32* %r369 -%r370 = lshr i288 %r366, 32 -%r371 = trunc i288 %r370 to i32 -%r373 = getelementptr i32, i32* %r350, i32 5 -store i32 %r371, i32* %r373 -%r374 = lshr i288 %r370, 32 -%r375 = trunc i288 %r374 to i32 -%r377 = getelementptr i32, i32* %r350, i32 6 -store i32 %r375, i32* %r377 -%r378 = lshr i288 %r374, 32 -%r379 = trunc i288 %r378 to i32 -%r381 = getelementptr i32, i32* %r350, i32 7 -store i32 %r379, i32* %r381 -%r382 = lshr i288 %r378, 32 -%r383 = trunc i288 %r382 to i32 -%r385 = getelementptr i32, i32* %r350, i32 8 -store i32 %r383, i32* %r385 -ret void -} -define void @mcl_fpDbl_sub9L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = load i32, i32* %r3 -%r126 = zext i32 %r125 to i64 -%r128 = getelementptr i32, i32* %r3, i32 1 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i64 -%r131 = shl i64 %r130, 32 -%r132 = or i64 %r126, %r131 -%r133 = zext i64 %r132 to i96 -%r135 = getelementptr i32, i32* %r3, i32 2 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i96 -%r138 = shl i96 %r137, 64 -%r139 = or i96 %r133, %r138 -%r140 = zext i96 %r139 to i128 -%r142 = getelementptr i32, i32* %r3, i32 3 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i128 -%r145 = shl i128 %r144, 96 -%r146 = or i128 %r140, %r145 -%r147 = zext i128 %r146 to i160 -%r149 = getelementptr i32, i32* %r3, i32 4 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i160 -%r152 = shl i160 %r151, 128 -%r153 = or i160 %r147, %r152 -%r154 = zext i160 %r153 to i192 -%r156 = getelementptr i32, i32* %r3, i32 5 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i192 -%r159 = shl i192 %r158, 160 -%r160 = or i192 %r154, %r159 -%r161 = zext i192 %r160 to i224 -%r163 = getelementptr i32, i32* %r3, i32 6 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i224 -%r166 = shl i224 %r165, 192 -%r167 = or i224 %r161, %r166 -%r168 = zext i224 %r167 to i256 -%r170 = getelementptr i32, i32* %r3, i32 7 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i256 -%r173 = shl i256 %r172, 224 -%r174 = or i256 %r168, %r173 -%r175 = zext i256 %r174 to i288 -%r177 = getelementptr i32, i32* %r3, i32 8 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i288 -%r180 = shl i288 %r179, 256 -%r181 = or i288 %r175, %r180 -%r182 = zext i288 %r181 to i320 -%r184 = getelementptr i32, i32* %r3, i32 9 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i320 -%r187 = shl i320 %r186, 288 -%r188 = or i320 %r182, %r187 -%r189 = zext i320 %r188 to i352 -%r191 = getelementptr i32, i32* %r3, i32 10 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i352 -%r194 = shl i352 %r193, 320 -%r195 = or i352 %r189, %r194 -%r196 = zext i352 %r195 to i384 -%r198 = getelementptr i32, i32* %r3, i32 11 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i384 -%r201 = shl i384 %r200, 352 -%r202 = or i384 %r196, %r201 -%r203 = zext i384 %r202 to i416 -%r205 = getelementptr i32, i32* %r3, i32 12 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i416 -%r208 = shl i416 %r207, 384 -%r209 = or i416 %r203, %r208 -%r210 = zext i416 %r209 to i448 -%r212 = getelementptr i32, i32* %r3, i32 13 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i448 -%r215 = shl i448 %r214, 416 -%r216 = or i448 %r210, %r215 -%r217 = zext i448 %r216 to i480 -%r219 = getelementptr i32, i32* %r3, i32 14 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i480 -%r222 = shl i480 %r221, 448 -%r223 = or i480 %r217, %r222 -%r224 = zext i480 %r223 to i512 -%r226 = getelementptr i32, i32* %r3, i32 15 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i512 -%r229 = shl i512 %r228, 480 -%r230 = or i512 %r224, %r229 -%r231 = zext i512 %r230 to i544 -%r233 = getelementptr i32, i32* %r3, i32 16 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i544 -%r236 = shl i544 %r235, 512 -%r237 = or i544 %r231, %r236 -%r238 = zext i544 %r237 to i576 -%r240 = getelementptr i32, i32* %r3, i32 17 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i576 -%r243 = shl i576 %r242, 544 -%r244 = or i576 %r238, %r243 -%r245 = zext i576 %r124 to i608 -%r246 = zext i576 %r244 to i608 -%r247 = sub i608 %r245, %r246 -%r248 = trunc i608 %r247 to i288 -%r249 = trunc i288 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 0 -store i32 %r249, i32* %r251 -%r252 = lshr i288 %r248, 32 -%r253 = trunc i288 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 1 -store i32 %r253, i32* %r255 -%r256 = lshr i288 %r252, 32 -%r257 = trunc i288 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 2 -store i32 %r257, i32* %r259 -%r260 = lshr i288 %r256, 32 -%r261 = trunc i288 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 3 -store i32 %r261, i32* %r263 -%r264 = lshr i288 %r260, 32 -%r265 = trunc i288 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 4 -store i32 %r265, i32* %r267 -%r268 = lshr i288 %r264, 32 -%r269 = trunc i288 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 5 -store i32 %r269, i32* %r271 -%r272 = lshr i288 %r268, 32 -%r273 = trunc i288 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 6 -store i32 %r273, i32* %r275 -%r276 = lshr i288 %r272, 32 -%r277 = trunc i288 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 7 -store i32 %r277, i32* %r279 -%r280 = lshr i288 %r276, 32 -%r281 = trunc i288 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 8 -store i32 %r281, i32* %r283 -%r284 = lshr i608 %r247, 288 -%r285 = trunc i608 %r284 to i288 -%r286 = lshr i608 %r247, 576 -%r287 = trunc i608 %r286 to i1 -%r288 = load i32, i32* %r4 -%r289 = zext i32 %r288 to i64 -%r291 = getelementptr i32, i32* %r4, i32 1 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i64 -%r294 = shl i64 %r293, 32 -%r295 = or i64 %r289, %r294 -%r296 = zext i64 %r295 to i96 -%r298 = getelementptr i32, i32* %r4, i32 2 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i96 -%r301 = shl i96 %r300, 64 -%r302 = or i96 %r296, %r301 -%r303 = zext i96 %r302 to i128 -%r305 = getelementptr i32, i32* %r4, i32 3 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i128 -%r308 = shl i128 %r307, 96 -%r309 = or i128 %r303, %r308 -%r310 = zext i128 %r309 to i160 -%r312 = getelementptr i32, i32* %r4, i32 4 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i160 -%r315 = shl i160 %r314, 128 -%r316 = or i160 %r310, %r315 -%r317 = zext i160 %r316 to i192 -%r319 = getelementptr i32, i32* %r4, i32 5 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i192 -%r322 = shl i192 %r321, 160 -%r323 = or i192 %r317, %r322 -%r324 = zext i192 %r323 to i224 -%r326 = getelementptr i32, i32* %r4, i32 6 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i224 -%r329 = shl i224 %r328, 192 -%r330 = or i224 %r324, %r329 -%r331 = zext i224 %r330 to i256 -%r333 = getelementptr i32, i32* %r4, i32 7 -%r334 = load i32, i32* %r333 -%r335 = zext i32 %r334 to i256 -%r336 = shl i256 %r335, 224 -%r337 = or i256 %r331, %r336 -%r338 = zext i256 %r337 to i288 -%r340 = getelementptr i32, i32* %r4, i32 8 -%r341 = load i32, i32* %r340 -%r342 = zext i32 %r341 to i288 -%r343 = shl i288 %r342, 256 -%r344 = or i288 %r338, %r343 -%r346 = select i1 %r287, i288 %r344, i288 0 -%r347 = add i288 %r285, %r346 -%r349 = getelementptr i32, i32* %r1, i32 9 -%r350 = trunc i288 %r347 to i32 -%r352 = getelementptr i32, i32* %r349, i32 0 -store i32 %r350, i32* %r352 -%r353 = lshr i288 %r347, 32 -%r354 = trunc i288 %r353 to i32 -%r356 = getelementptr i32, i32* %r349, i32 1 -store i32 %r354, i32* %r356 -%r357 = lshr i288 %r353, 32 -%r358 = trunc i288 %r357 to i32 -%r360 = getelementptr i32, i32* %r349, i32 2 -store i32 %r358, i32* %r360 -%r361 = lshr i288 %r357, 32 -%r362 = trunc i288 %r361 to i32 -%r364 = getelementptr i32, i32* %r349, i32 3 -store i32 %r362, i32* %r364 -%r365 = lshr i288 %r361, 32 -%r366 = trunc i288 %r365 to i32 -%r368 = getelementptr i32, i32* %r349, i32 4 -store i32 %r366, i32* %r368 -%r369 = lshr i288 %r365, 32 -%r370 = trunc i288 %r369 to i32 -%r372 = getelementptr i32, i32* %r349, i32 5 -store i32 %r370, i32* %r372 -%r373 = lshr i288 %r369, 32 -%r374 = trunc i288 %r373 to i32 -%r376 = getelementptr i32, i32* %r349, i32 6 -store i32 %r374, i32* %r376 -%r377 = lshr i288 %r373, 32 -%r378 = trunc i288 %r377 to i32 -%r380 = getelementptr i32, i32* %r349, i32 7 -store i32 %r378, i32* %r380 -%r381 = lshr i288 %r377, 32 -%r382 = trunc i288 %r381 to i32 -%r384 = getelementptr i32, i32* %r349, i32 8 -store i32 %r382, i32* %r384 -ret void -} -define i352 @mulPv320x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r44 = zext i32 %r6 to i64 -%r45 = zext i32 %r10 to i64 -%r46 = shl i64 %r45, 32 -%r47 = or i64 %r44, %r46 -%r48 = zext i64 %r47 to i96 -%r49 = zext i32 %r14 to i96 -%r50 = shl i96 %r49, 64 -%r51 = or i96 %r48, %r50 -%r52 = zext i96 %r51 to i128 -%r53 = zext i32 %r18 to i128 -%r54 = shl i128 %r53, 96 -%r55 = or i128 %r52, %r54 -%r56 = zext i128 %r55 to i160 -%r57 = zext i32 %r22 to i160 -%r58 = shl i160 %r57, 128 -%r59 = or i160 %r56, %r58 -%r60 = zext i160 %r59 to i192 -%r61 = zext i32 %r26 to i192 -%r62 = shl i192 %r61, 160 -%r63 = or i192 %r60, %r62 -%r64 = zext i192 %r63 to i224 -%r65 = zext i32 %r30 to i224 -%r66 = shl i224 %r65, 192 -%r67 = or i224 %r64, %r66 -%r68 = zext i224 %r67 to i256 -%r69 = zext i32 %r34 to i256 -%r70 = shl i256 %r69, 224 -%r71 = or i256 %r68, %r70 -%r72 = zext i256 %r71 to i288 -%r73 = zext i32 %r38 to i288 -%r74 = shl i288 %r73, 256 -%r75 = or i288 %r72, %r74 -%r76 = zext i288 %r75 to i320 -%r77 = zext i32 %r42 to i320 -%r78 = shl i320 %r77, 288 -%r79 = or i320 %r76, %r78 -%r80 = zext i32 %r7 to i64 -%r81 = zext i32 %r11 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r80, %r82 -%r84 = zext i64 %r83 to i96 -%r85 = zext i32 %r15 to i96 -%r86 = shl i96 %r85, 64 -%r87 = or i96 %r84, %r86 -%r88 = zext i96 %r87 to i128 -%r89 = zext i32 %r19 to i128 -%r90 = shl i128 %r89, 96 -%r91 = or i128 %r88, %r90 -%r92 = zext i128 %r91 to i160 -%r93 = zext i32 %r23 to i160 -%r94 = shl i160 %r93, 128 -%r95 = or i160 %r92, %r94 -%r96 = zext i160 %r95 to i192 -%r97 = zext i32 %r27 to i192 -%r98 = shl i192 %r97, 160 -%r99 = or i192 %r96, %r98 -%r100 = zext i192 %r99 to i224 -%r101 = zext i32 %r31 to i224 -%r102 = shl i224 %r101, 192 -%r103 = or i224 %r100, %r102 -%r104 = zext i224 %r103 to i256 -%r105 = zext i32 %r35 to i256 -%r106 = shl i256 %r105, 224 -%r107 = or i256 %r104, %r106 -%r108 = zext i256 %r107 to i288 -%r109 = zext i32 %r39 to i288 -%r110 = shl i288 %r109, 256 -%r111 = or i288 %r108, %r110 -%r112 = zext i288 %r111 to i320 -%r113 = zext i32 %r43 to i320 -%r114 = shl i320 %r113, 288 -%r115 = or i320 %r112, %r114 -%r116 = zext i320 %r79 to i352 -%r117 = zext i320 %r115 to i352 -%r118 = shl i352 %r117, 32 -%r119 = add i352 %r116, %r118 -ret i352 %r119 -} -define void @mcl_fp_mulUnitPre10L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i352 @mulPv320x32(i32* %r2, i32 %r3) -%r5 = trunc i352 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i352 %r4, 32 -%r9 = trunc i352 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i352 %r8, 32 -%r13 = trunc i352 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i352 %r12, 32 -%r17 = trunc i352 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i352 %r16, 32 -%r21 = trunc i352 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i352 %r20, 32 -%r25 = trunc i352 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i352 %r24, 32 -%r29 = trunc i352 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i352 %r28, 32 -%r33 = trunc i352 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i352 %r32, 32 -%r37 = trunc i352 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i352 %r36, 32 -%r41 = trunc i352 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i352 %r40, 32 -%r45 = trunc i352 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -ret void -} -define void @mcl_fpDbl_mulPre10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r2, i32 5 -%r7 = getelementptr i32, i32* %r3, i32 5 -%r9 = getelementptr i32, i32* %r1, i32 10 -call void @mcl_fpDbl_mulPre5L(i32* %r1, i32* %r2, i32* %r3) -call void @mcl_fpDbl_mulPre5L(i32* %r9, i32* %r5, i32* %r7) -%r10 = load i32, i32* %r5 -%r11 = zext i32 %r10 to i64 -%r13 = getelementptr i32, i32* %r5, i32 1 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i64 -%r16 = shl i64 %r15, 32 -%r17 = or i64 %r11, %r16 -%r18 = zext i64 %r17 to i96 -%r20 = getelementptr i32, i32* %r5, i32 2 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i96 -%r23 = shl i96 %r22, 64 -%r24 = or i96 %r18, %r23 -%r25 = zext i96 %r24 to i128 -%r27 = getelementptr i32, i32* %r5, i32 3 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r25, %r30 -%r32 = zext i128 %r31 to i160 -%r34 = getelementptr i32, i32* %r5, i32 4 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i160 -%r37 = shl i160 %r36, 128 -%r38 = or i160 %r32, %r37 -%r39 = zext i160 %r38 to i192 -%r40 = load i32, i32* %r2 -%r41 = zext i32 %r40 to i64 -%r43 = getelementptr i32, i32* %r2, i32 1 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i64 -%r46 = shl i64 %r45, 32 -%r47 = or i64 %r41, %r46 -%r48 = zext i64 %r47 to i96 -%r50 = getelementptr i32, i32* %r2, i32 2 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i96 -%r53 = shl i96 %r52, 64 -%r54 = or i96 %r48, %r53 -%r55 = zext i96 %r54 to i128 -%r57 = getelementptr i32, i32* %r2, i32 3 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i128 -%r60 = shl i128 %r59, 96 -%r61 = or i128 %r55, %r60 -%r62 = zext i128 %r61 to i160 -%r64 = getelementptr i32, i32* %r2, i32 4 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i160 -%r67 = shl i160 %r66, 128 -%r68 = or i160 %r62, %r67 -%r69 = zext i160 %r68 to i192 -%r70 = load i32, i32* %r7 -%r71 = zext i32 %r70 to i64 -%r73 = getelementptr i32, i32* %r7, i32 1 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i64 -%r76 = shl i64 %r75, 32 -%r77 = or i64 %r71, %r76 -%r78 = zext i64 %r77 to i96 -%r80 = getelementptr i32, i32* %r7, i32 2 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i96 -%r83 = shl i96 %r82, 64 -%r84 = or i96 %r78, %r83 -%r85 = zext i96 %r84 to i128 -%r87 = getelementptr i32, i32* %r7, i32 3 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i128 -%r90 = shl i128 %r89, 96 -%r91 = or i128 %r85, %r90 -%r92 = zext i128 %r91 to i160 -%r94 = getelementptr i32, i32* %r7, i32 4 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i160 -%r97 = shl i160 %r96, 128 -%r98 = or i160 %r92, %r97 -%r99 = zext i160 %r98 to i192 -%r100 = load i32, i32* %r3 -%r101 = zext i32 %r100 to i64 -%r103 = getelementptr i32, i32* %r3, i32 1 -%r104 = load i32, i32* %r103 -%r105 = zext i32 %r104 to i64 -%r106 = shl i64 %r105, 32 -%r107 = or i64 %r101, %r106 -%r108 = zext i64 %r107 to i96 -%r110 = getelementptr i32, i32* %r3, i32 2 -%r111 = load i32, i32* %r110 -%r112 = zext i32 %r111 to i96 -%r113 = shl i96 %r112, 64 -%r114 = or i96 %r108, %r113 -%r115 = zext i96 %r114 to i128 -%r117 = getelementptr i32, i32* %r3, i32 3 -%r118 = load i32, i32* %r117 -%r119 = zext i32 %r118 to i128 -%r120 = shl i128 %r119, 96 -%r121 = or i128 %r115, %r120 -%r122 = zext i128 %r121 to i160 -%r124 = getelementptr i32, i32* %r3, i32 4 -%r125 = load i32, i32* %r124 -%r126 = zext i32 %r125 to i160 -%r127 = shl i160 %r126, 128 -%r128 = or i160 %r122, %r127 -%r129 = zext i160 %r128 to i192 -%r130 = add i192 %r39, %r69 -%r131 = add i192 %r99, %r129 -%r133 = alloca i32, i32 10 -%r134 = trunc i192 %r130 to i160 -%r135 = trunc i192 %r131 to i160 -%r136 = lshr i192 %r130, 160 -%r137 = trunc i192 %r136 to i1 -%r138 = lshr i192 %r131, 160 -%r139 = trunc i192 %r138 to i1 -%r140 = and i1 %r137, %r139 -%r142 = select i1 %r137, i160 %r135, i160 0 -%r144 = select i1 %r139, i160 %r134, i160 0 -%r146 = alloca i32, i32 5 -%r148 = alloca i32, i32 5 -%r149 = trunc i160 %r134 to i32 -%r151 = getelementptr i32, i32* %r146, i32 0 -store i32 %r149, i32* %r151 -%r152 = lshr i160 %r134, 32 -%r153 = trunc i160 %r152 to i32 -%r155 = getelementptr i32, i32* %r146, i32 1 -store i32 %r153, i32* %r155 -%r156 = lshr i160 %r152, 32 -%r157 = trunc i160 %r156 to i32 -%r159 = getelementptr i32, i32* %r146, i32 2 -store i32 %r157, i32* %r159 -%r160 = lshr i160 %r156, 32 -%r161 = trunc i160 %r160 to i32 -%r163 = getelementptr i32, i32* %r146, i32 3 -store i32 %r161, i32* %r163 -%r164 = lshr i160 %r160, 32 -%r165 = trunc i160 %r164 to i32 -%r167 = getelementptr i32, i32* %r146, i32 4 -store i32 %r165, i32* %r167 -%r168 = trunc i160 %r135 to i32 -%r170 = getelementptr i32, i32* %r148, i32 0 -store i32 %r168, i32* %r170 -%r171 = lshr i160 %r135, 32 -%r172 = trunc i160 %r171 to i32 -%r174 = getelementptr i32, i32* %r148, i32 1 -store i32 %r172, i32* %r174 -%r175 = lshr i160 %r171, 32 -%r176 = trunc i160 %r175 to i32 -%r178 = getelementptr i32, i32* %r148, i32 2 -store i32 %r176, i32* %r178 -%r179 = lshr i160 %r175, 32 -%r180 = trunc i160 %r179 to i32 -%r182 = getelementptr i32, i32* %r148, i32 3 -store i32 %r180, i32* %r182 -%r183 = lshr i160 %r179, 32 -%r184 = trunc i160 %r183 to i32 -%r186 = getelementptr i32, i32* %r148, i32 4 -store i32 %r184, i32* %r186 -call void @mcl_fpDbl_mulPre5L(i32* %r133, i32* %r146, i32* %r148) -%r187 = load i32, i32* %r133 -%r188 = zext i32 %r187 to i64 -%r190 = getelementptr i32, i32* %r133, i32 1 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i64 -%r193 = shl i64 %r192, 32 -%r194 = or i64 %r188, %r193 -%r195 = zext i64 %r194 to i96 -%r197 = getelementptr i32, i32* %r133, i32 2 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i96 -%r200 = shl i96 %r199, 64 -%r201 = or i96 %r195, %r200 -%r202 = zext i96 %r201 to i128 -%r204 = getelementptr i32, i32* %r133, i32 3 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i128 -%r207 = shl i128 %r206, 96 -%r208 = or i128 %r202, %r207 -%r209 = zext i128 %r208 to i160 -%r211 = getelementptr i32, i32* %r133, i32 4 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i160 -%r214 = shl i160 %r213, 128 -%r215 = or i160 %r209, %r214 -%r216 = zext i160 %r215 to i192 -%r218 = getelementptr i32, i32* %r133, i32 5 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i192 -%r221 = shl i192 %r220, 160 -%r222 = or i192 %r216, %r221 -%r223 = zext i192 %r222 to i224 -%r225 = getelementptr i32, i32* %r133, i32 6 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i224 -%r228 = shl i224 %r227, 192 -%r229 = or i224 %r223, %r228 -%r230 = zext i224 %r229 to i256 -%r232 = getelementptr i32, i32* %r133, i32 7 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i256 -%r235 = shl i256 %r234, 224 -%r236 = or i256 %r230, %r235 -%r237 = zext i256 %r236 to i288 -%r239 = getelementptr i32, i32* %r133, i32 8 -%r240 = load i32, i32* %r239 -%r241 = zext i32 %r240 to i288 -%r242 = shl i288 %r241, 256 -%r243 = or i288 %r237, %r242 -%r244 = zext i288 %r243 to i320 -%r246 = getelementptr i32, i32* %r133, i32 9 -%r247 = load i32, i32* %r246 -%r248 = zext i32 %r247 to i320 -%r249 = shl i320 %r248, 288 -%r250 = or i320 %r244, %r249 -%r251 = zext i320 %r250 to i352 -%r252 = zext i1 %r140 to i352 -%r253 = shl i352 %r252, 320 -%r254 = or i352 %r251, %r253 -%r255 = zext i160 %r142 to i352 -%r256 = zext i160 %r144 to i352 -%r257 = shl i352 %r255, 160 -%r258 = shl i352 %r256, 160 -%r259 = add i352 %r254, %r257 -%r260 = add i352 %r259, %r258 -%r261 = load i32, i32* %r1 -%r262 = zext i32 %r261 to i64 -%r264 = getelementptr i32, i32* %r1, i32 1 -%r265 = load i32, i32* %r264 -%r266 = zext i32 %r265 to i64 -%r267 = shl i64 %r266, 32 -%r268 = or i64 %r262, %r267 -%r269 = zext i64 %r268 to i96 -%r271 = getelementptr i32, i32* %r1, i32 2 -%r272 = load i32, i32* %r271 -%r273 = zext i32 %r272 to i96 -%r274 = shl i96 %r273, 64 -%r275 = or i96 %r269, %r274 -%r276 = zext i96 %r275 to i128 -%r278 = getelementptr i32, i32* %r1, i32 3 -%r279 = load i32, i32* %r278 -%r280 = zext i32 %r279 to i128 -%r281 = shl i128 %r280, 96 -%r282 = or i128 %r276, %r281 -%r283 = zext i128 %r282 to i160 -%r285 = getelementptr i32, i32* %r1, i32 4 -%r286 = load i32, i32* %r285 -%r287 = zext i32 %r286 to i160 -%r288 = shl i160 %r287, 128 -%r289 = or i160 %r283, %r288 -%r290 = zext i160 %r289 to i192 -%r292 = getelementptr i32, i32* %r1, i32 5 -%r293 = load i32, i32* %r292 -%r294 = zext i32 %r293 to i192 -%r295 = shl i192 %r294, 160 -%r296 = or i192 %r290, %r295 -%r297 = zext i192 %r296 to i224 -%r299 = getelementptr i32, i32* %r1, i32 6 -%r300 = load i32, i32* %r299 -%r301 = zext i32 %r300 to i224 -%r302 = shl i224 %r301, 192 -%r303 = or i224 %r297, %r302 -%r304 = zext i224 %r303 to i256 -%r306 = getelementptr i32, i32* %r1, i32 7 -%r307 = load i32, i32* %r306 -%r308 = zext i32 %r307 to i256 -%r309 = shl i256 %r308, 224 -%r310 = or i256 %r304, %r309 -%r311 = zext i256 %r310 to i288 -%r313 = getelementptr i32, i32* %r1, i32 8 -%r314 = load i32, i32* %r313 -%r315 = zext i32 %r314 to i288 -%r316 = shl i288 %r315, 256 -%r317 = or i288 %r311, %r316 -%r318 = zext i288 %r317 to i320 -%r320 = getelementptr i32, i32* %r1, i32 9 -%r321 = load i32, i32* %r320 -%r322 = zext i32 %r321 to i320 -%r323 = shl i320 %r322, 288 -%r324 = or i320 %r318, %r323 -%r325 = zext i320 %r324 to i352 -%r326 = sub i352 %r260, %r325 -%r328 = getelementptr i32, i32* %r1, i32 10 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i64 -%r332 = getelementptr i32, i32* %r328, i32 1 -%r333 = load i32, i32* %r332 -%r334 = zext i32 %r333 to i64 -%r335 = shl i64 %r334, 32 -%r336 = or i64 %r330, %r335 -%r337 = zext i64 %r336 to i96 -%r339 = getelementptr i32, i32* %r328, i32 2 -%r340 = load i32, i32* %r339 -%r341 = zext i32 %r340 to i96 -%r342 = shl i96 %r341, 64 -%r343 = or i96 %r337, %r342 -%r344 = zext i96 %r343 to i128 -%r346 = getelementptr i32, i32* %r328, i32 3 -%r347 = load i32, i32* %r346 -%r348 = zext i32 %r347 to i128 -%r349 = shl i128 %r348, 96 -%r350 = or i128 %r344, %r349 -%r351 = zext i128 %r350 to i160 -%r353 = getelementptr i32, i32* %r328, i32 4 -%r354 = load i32, i32* %r353 -%r355 = zext i32 %r354 to i160 -%r356 = shl i160 %r355, 128 -%r357 = or i160 %r351, %r356 -%r358 = zext i160 %r357 to i192 -%r360 = getelementptr i32, i32* %r328, i32 5 -%r361 = load i32, i32* %r360 -%r362 = zext i32 %r361 to i192 -%r363 = shl i192 %r362, 160 -%r364 = or i192 %r358, %r363 -%r365 = zext i192 %r364 to i224 -%r367 = getelementptr i32, i32* %r328, i32 6 -%r368 = load i32, i32* %r367 -%r369 = zext i32 %r368 to i224 -%r370 = shl i224 %r369, 192 -%r371 = or i224 %r365, %r370 -%r372 = zext i224 %r371 to i256 -%r374 = getelementptr i32, i32* %r328, i32 7 -%r375 = load i32, i32* %r374 -%r376 = zext i32 %r375 to i256 -%r377 = shl i256 %r376, 224 -%r378 = or i256 %r372, %r377 -%r379 = zext i256 %r378 to i288 -%r381 = getelementptr i32, i32* %r328, i32 8 -%r382 = load i32, i32* %r381 -%r383 = zext i32 %r382 to i288 -%r384 = shl i288 %r383, 256 -%r385 = or i288 %r379, %r384 -%r386 = zext i288 %r385 to i320 -%r388 = getelementptr i32, i32* %r328, i32 9 -%r389 = load i32, i32* %r388 -%r390 = zext i32 %r389 to i320 -%r391 = shl i320 %r390, 288 -%r392 = or i320 %r386, %r391 -%r393 = zext i320 %r392 to i352 -%r394 = sub i352 %r326, %r393 -%r395 = zext i352 %r394 to i480 -%r397 = getelementptr i32, i32* %r1, i32 5 -%r398 = load i32, i32* %r397 -%r399 = zext i32 %r398 to i64 -%r401 = getelementptr i32, i32* %r397, i32 1 -%r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i64 -%r404 = shl i64 %r403, 32 -%r405 = or i64 %r399, %r404 -%r406 = zext i64 %r405 to i96 -%r408 = getelementptr i32, i32* %r397, i32 2 -%r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i96 -%r411 = shl i96 %r410, 64 -%r412 = or i96 %r406, %r411 -%r413 = zext i96 %r412 to i128 -%r415 = getelementptr i32, i32* %r397, i32 3 -%r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i128 -%r418 = shl i128 %r417, 96 -%r419 = or i128 %r413, %r418 -%r420 = zext i128 %r419 to i160 -%r422 = getelementptr i32, i32* %r397, i32 4 -%r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i160 -%r425 = shl i160 %r424, 128 -%r426 = or i160 %r420, %r425 -%r427 = zext i160 %r426 to i192 -%r429 = getelementptr i32, i32* %r397, i32 5 -%r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i192 -%r432 = shl i192 %r431, 160 -%r433 = or i192 %r427, %r432 -%r434 = zext i192 %r433 to i224 -%r436 = getelementptr i32, i32* %r397, i32 6 -%r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i224 -%r439 = shl i224 %r438, 192 -%r440 = or i224 %r434, %r439 -%r441 = zext i224 %r440 to i256 -%r443 = getelementptr i32, i32* %r397, i32 7 -%r444 = load i32, i32* %r443 -%r445 = zext i32 %r444 to i256 -%r446 = shl i256 %r445, 224 -%r447 = or i256 %r441, %r446 -%r448 = zext i256 %r447 to i288 -%r450 = getelementptr i32, i32* %r397, i32 8 -%r451 = load i32, i32* %r450 -%r452 = zext i32 %r451 to i288 -%r453 = shl i288 %r452, 256 -%r454 = or i288 %r448, %r453 -%r455 = zext i288 %r454 to i320 -%r457 = getelementptr i32, i32* %r397, i32 9 -%r458 = load i32, i32* %r457 -%r459 = zext i32 %r458 to i320 -%r460 = shl i320 %r459, 288 -%r461 = or i320 %r455, %r460 -%r462 = zext i320 %r461 to i352 -%r464 = getelementptr i32, i32* %r397, i32 10 -%r465 = load i32, i32* %r464 -%r466 = zext i32 %r465 to i352 -%r467 = shl i352 %r466, 320 -%r468 = or i352 %r462, %r467 -%r469 = zext i352 %r468 to i384 -%r471 = getelementptr i32, i32* %r397, i32 11 -%r472 = load i32, i32* %r471 -%r473 = zext i32 %r472 to i384 -%r474 = shl i384 %r473, 352 -%r475 = or i384 %r469, %r474 -%r476 = zext i384 %r475 to i416 -%r478 = getelementptr i32, i32* %r397, i32 12 -%r479 = load i32, i32* %r478 -%r480 = zext i32 %r479 to i416 -%r481 = shl i416 %r480, 384 -%r482 = or i416 %r476, %r481 -%r483 = zext i416 %r482 to i448 -%r485 = getelementptr i32, i32* %r397, i32 13 -%r486 = load i32, i32* %r485 -%r487 = zext i32 %r486 to i448 -%r488 = shl i448 %r487, 416 -%r489 = or i448 %r483, %r488 -%r490 = zext i448 %r489 to i480 -%r492 = getelementptr i32, i32* %r397, i32 14 -%r493 = load i32, i32* %r492 -%r494 = zext i32 %r493 to i480 -%r495 = shl i480 %r494, 448 -%r496 = or i480 %r490, %r495 -%r497 = add i480 %r395, %r496 -%r499 = getelementptr i32, i32* %r1, i32 5 -%r500 = trunc i480 %r497 to i32 -%r502 = getelementptr i32, i32* %r499, i32 0 -store i32 %r500, i32* %r502 -%r503 = lshr i480 %r497, 32 -%r504 = trunc i480 %r503 to i32 -%r506 = getelementptr i32, i32* %r499, i32 1 -store i32 %r504, i32* %r506 -%r507 = lshr i480 %r503, 32 -%r508 = trunc i480 %r507 to i32 -%r510 = getelementptr i32, i32* %r499, i32 2 -store i32 %r508, i32* %r510 -%r511 = lshr i480 %r507, 32 -%r512 = trunc i480 %r511 to i32 -%r514 = getelementptr i32, i32* %r499, i32 3 -store i32 %r512, i32* %r514 -%r515 = lshr i480 %r511, 32 -%r516 = trunc i480 %r515 to i32 -%r518 = getelementptr i32, i32* %r499, i32 4 -store i32 %r516, i32* %r518 -%r519 = lshr i480 %r515, 32 -%r520 = trunc i480 %r519 to i32 -%r522 = getelementptr i32, i32* %r499, i32 5 -store i32 %r520, i32* %r522 -%r523 = lshr i480 %r519, 32 -%r524 = trunc i480 %r523 to i32 -%r526 = getelementptr i32, i32* %r499, i32 6 -store i32 %r524, i32* %r526 -%r527 = lshr i480 %r523, 32 -%r528 = trunc i480 %r527 to i32 -%r530 = getelementptr i32, i32* %r499, i32 7 -store i32 %r528, i32* %r530 -%r531 = lshr i480 %r527, 32 -%r532 = trunc i480 %r531 to i32 -%r534 = getelementptr i32, i32* %r499, i32 8 -store i32 %r532, i32* %r534 -%r535 = lshr i480 %r531, 32 -%r536 = trunc i480 %r535 to i32 -%r538 = getelementptr i32, i32* %r499, i32 9 -store i32 %r536, i32* %r538 -%r539 = lshr i480 %r535, 32 -%r540 = trunc i480 %r539 to i32 -%r542 = getelementptr i32, i32* %r499, i32 10 -store i32 %r540, i32* %r542 -%r543 = lshr i480 %r539, 32 -%r544 = trunc i480 %r543 to i32 -%r546 = getelementptr i32, i32* %r499, i32 11 -store i32 %r544, i32* %r546 -%r547 = lshr i480 %r543, 32 -%r548 = trunc i480 %r547 to i32 -%r550 = getelementptr i32, i32* %r499, i32 12 -store i32 %r548, i32* %r550 -%r551 = lshr i480 %r547, 32 -%r552 = trunc i480 %r551 to i32 -%r554 = getelementptr i32, i32* %r499, i32 13 -store i32 %r552, i32* %r554 -%r555 = lshr i480 %r551, 32 -%r556 = trunc i480 %r555 to i32 -%r558 = getelementptr i32, i32* %r499, i32 14 -store i32 %r556, i32* %r558 -ret void -} -define void @mcl_fpDbl_sqrPre10L(i32* noalias %r1, i32* noalias %r2) -{ -%r4 = getelementptr i32, i32* %r2, i32 5 -%r6 = getelementptr i32, i32* %r2, i32 5 -%r8 = getelementptr i32, i32* %r1, i32 10 -call void @mcl_fpDbl_mulPre5L(i32* %r1, i32* %r2, i32* %r2) -call void @mcl_fpDbl_mulPre5L(i32* %r8, i32* %r4, i32* %r6) -%r9 = load i32, i32* %r4 -%r10 = zext i32 %r9 to i64 -%r12 = getelementptr i32, i32* %r4, i32 1 -%r13 = load i32, i32* %r12 -%r14 = zext i32 %r13 to i64 -%r15 = shl i64 %r14, 32 -%r16 = or i64 %r10, %r15 -%r17 = zext i64 %r16 to i96 -%r19 = getelementptr i32, i32* %r4, i32 2 -%r20 = load i32, i32* %r19 -%r21 = zext i32 %r20 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r17, %r22 -%r24 = zext i96 %r23 to i128 -%r26 = getelementptr i32, i32* %r4, i32 3 -%r27 = load i32, i32* %r26 -%r28 = zext i32 %r27 to i128 -%r29 = shl i128 %r28, 96 -%r30 = or i128 %r24, %r29 -%r31 = zext i128 %r30 to i160 -%r33 = getelementptr i32, i32* %r4, i32 4 -%r34 = load i32, i32* %r33 -%r35 = zext i32 %r34 to i160 -%r36 = shl i160 %r35, 128 -%r37 = or i160 %r31, %r36 -%r38 = zext i160 %r37 to i192 -%r39 = load i32, i32* %r2 -%r40 = zext i32 %r39 to i64 -%r42 = getelementptr i32, i32* %r2, i32 1 -%r43 = load i32, i32* %r42 -%r44 = zext i32 %r43 to i64 -%r45 = shl i64 %r44, 32 -%r46 = or i64 %r40, %r45 -%r47 = zext i64 %r46 to i96 -%r49 = getelementptr i32, i32* %r2, i32 2 -%r50 = load i32, i32* %r49 -%r51 = zext i32 %r50 to i96 -%r52 = shl i96 %r51, 64 -%r53 = or i96 %r47, %r52 -%r54 = zext i96 %r53 to i128 -%r56 = getelementptr i32, i32* %r2, i32 3 -%r57 = load i32, i32* %r56 -%r58 = zext i32 %r57 to i128 -%r59 = shl i128 %r58, 96 -%r60 = or i128 %r54, %r59 -%r61 = zext i128 %r60 to i160 -%r63 = getelementptr i32, i32* %r2, i32 4 -%r64 = load i32, i32* %r63 -%r65 = zext i32 %r64 to i160 -%r66 = shl i160 %r65, 128 -%r67 = or i160 %r61, %r66 -%r68 = zext i160 %r67 to i192 -%r69 = load i32, i32* %r6 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r6, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r6, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r6, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r6, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r99 = load i32, i32* %r2 -%r100 = zext i32 %r99 to i64 -%r102 = getelementptr i32, i32* %r2, i32 1 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i64 -%r105 = shl i64 %r104, 32 -%r106 = or i64 %r100, %r105 -%r107 = zext i64 %r106 to i96 -%r109 = getelementptr i32, i32* %r2, i32 2 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i96 -%r112 = shl i96 %r111, 64 -%r113 = or i96 %r107, %r112 -%r114 = zext i96 %r113 to i128 -%r116 = getelementptr i32, i32* %r2, i32 3 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i128 -%r119 = shl i128 %r118, 96 -%r120 = or i128 %r114, %r119 -%r121 = zext i128 %r120 to i160 -%r123 = getelementptr i32, i32* %r2, i32 4 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i160 -%r126 = shl i160 %r125, 128 -%r127 = or i160 %r121, %r126 -%r128 = zext i160 %r127 to i192 -%r129 = add i192 %r38, %r68 -%r130 = add i192 %r98, %r128 -%r132 = alloca i32, i32 10 -%r133 = trunc i192 %r129 to i160 -%r134 = trunc i192 %r130 to i160 -%r135 = lshr i192 %r129, 160 -%r136 = trunc i192 %r135 to i1 -%r137 = lshr i192 %r130, 160 -%r138 = trunc i192 %r137 to i1 -%r139 = and i1 %r136, %r138 -%r141 = select i1 %r136, i160 %r134, i160 0 -%r143 = select i1 %r138, i160 %r133, i160 0 -%r145 = alloca i32, i32 5 -%r147 = alloca i32, i32 5 -%r148 = trunc i160 %r133 to i32 -%r150 = getelementptr i32, i32* %r145, i32 0 -store i32 %r148, i32* %r150 -%r151 = lshr i160 %r133, 32 -%r152 = trunc i160 %r151 to i32 -%r154 = getelementptr i32, i32* %r145, i32 1 -store i32 %r152, i32* %r154 -%r155 = lshr i160 %r151, 32 -%r156 = trunc i160 %r155 to i32 -%r158 = getelementptr i32, i32* %r145, i32 2 -store i32 %r156, i32* %r158 -%r159 = lshr i160 %r155, 32 -%r160 = trunc i160 %r159 to i32 -%r162 = getelementptr i32, i32* %r145, i32 3 -store i32 %r160, i32* %r162 -%r163 = lshr i160 %r159, 32 -%r164 = trunc i160 %r163 to i32 -%r166 = getelementptr i32, i32* %r145, i32 4 -store i32 %r164, i32* %r166 -%r167 = trunc i160 %r134 to i32 -%r169 = getelementptr i32, i32* %r147, i32 0 -store i32 %r167, i32* %r169 -%r170 = lshr i160 %r134, 32 -%r171 = trunc i160 %r170 to i32 -%r173 = getelementptr i32, i32* %r147, i32 1 -store i32 %r171, i32* %r173 -%r174 = lshr i160 %r170, 32 -%r175 = trunc i160 %r174 to i32 -%r177 = getelementptr i32, i32* %r147, i32 2 -store i32 %r175, i32* %r177 -%r178 = lshr i160 %r174, 32 -%r179 = trunc i160 %r178 to i32 -%r181 = getelementptr i32, i32* %r147, i32 3 -store i32 %r179, i32* %r181 -%r182 = lshr i160 %r178, 32 -%r183 = trunc i160 %r182 to i32 -%r185 = getelementptr i32, i32* %r147, i32 4 -store i32 %r183, i32* %r185 -call void @mcl_fpDbl_mulPre5L(i32* %r132, i32* %r145, i32* %r147) -%r186 = load i32, i32* %r132 -%r187 = zext i32 %r186 to i64 -%r189 = getelementptr i32, i32* %r132, i32 1 -%r190 = load i32, i32* %r189 -%r191 = zext i32 %r190 to i64 -%r192 = shl i64 %r191, 32 -%r193 = or i64 %r187, %r192 -%r194 = zext i64 %r193 to i96 -%r196 = getelementptr i32, i32* %r132, i32 2 -%r197 = load i32, i32* %r196 -%r198 = zext i32 %r197 to i96 -%r199 = shl i96 %r198, 64 -%r200 = or i96 %r194, %r199 -%r201 = zext i96 %r200 to i128 -%r203 = getelementptr i32, i32* %r132, i32 3 -%r204 = load i32, i32* %r203 -%r205 = zext i32 %r204 to i128 -%r206 = shl i128 %r205, 96 -%r207 = or i128 %r201, %r206 -%r208 = zext i128 %r207 to i160 -%r210 = getelementptr i32, i32* %r132, i32 4 -%r211 = load i32, i32* %r210 -%r212 = zext i32 %r211 to i160 -%r213 = shl i160 %r212, 128 -%r214 = or i160 %r208, %r213 -%r215 = zext i160 %r214 to i192 -%r217 = getelementptr i32, i32* %r132, i32 5 -%r218 = load i32, i32* %r217 -%r219 = zext i32 %r218 to i192 -%r220 = shl i192 %r219, 160 -%r221 = or i192 %r215, %r220 -%r222 = zext i192 %r221 to i224 -%r224 = getelementptr i32, i32* %r132, i32 6 -%r225 = load i32, i32* %r224 -%r226 = zext i32 %r225 to i224 -%r227 = shl i224 %r226, 192 -%r228 = or i224 %r222, %r227 -%r229 = zext i224 %r228 to i256 -%r231 = getelementptr i32, i32* %r132, i32 7 -%r232 = load i32, i32* %r231 -%r233 = zext i32 %r232 to i256 -%r234 = shl i256 %r233, 224 -%r235 = or i256 %r229, %r234 -%r236 = zext i256 %r235 to i288 -%r238 = getelementptr i32, i32* %r132, i32 8 -%r239 = load i32, i32* %r238 -%r240 = zext i32 %r239 to i288 -%r241 = shl i288 %r240, 256 -%r242 = or i288 %r236, %r241 -%r243 = zext i288 %r242 to i320 -%r245 = getelementptr i32, i32* %r132, i32 9 -%r246 = load i32, i32* %r245 -%r247 = zext i32 %r246 to i320 -%r248 = shl i320 %r247, 288 -%r249 = or i320 %r243, %r248 -%r250 = zext i320 %r249 to i352 -%r251 = zext i1 %r139 to i352 -%r252 = shl i352 %r251, 320 -%r253 = or i352 %r250, %r252 -%r254 = zext i160 %r141 to i352 -%r255 = zext i160 %r143 to i352 -%r256 = shl i352 %r254, 160 -%r257 = shl i352 %r255, 160 -%r258 = add i352 %r253, %r256 -%r259 = add i352 %r258, %r257 -%r260 = load i32, i32* %r1 -%r261 = zext i32 %r260 to i64 -%r263 = getelementptr i32, i32* %r1, i32 1 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i64 -%r266 = shl i64 %r265, 32 -%r267 = or i64 %r261, %r266 -%r268 = zext i64 %r267 to i96 -%r270 = getelementptr i32, i32* %r1, i32 2 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i96 -%r273 = shl i96 %r272, 64 -%r274 = or i96 %r268, %r273 -%r275 = zext i96 %r274 to i128 -%r277 = getelementptr i32, i32* %r1, i32 3 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i128 -%r280 = shl i128 %r279, 96 -%r281 = or i128 %r275, %r280 -%r282 = zext i128 %r281 to i160 -%r284 = getelementptr i32, i32* %r1, i32 4 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i160 -%r287 = shl i160 %r286, 128 -%r288 = or i160 %r282, %r287 -%r289 = zext i160 %r288 to i192 -%r291 = getelementptr i32, i32* %r1, i32 5 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i192 -%r294 = shl i192 %r293, 160 -%r295 = or i192 %r289, %r294 -%r296 = zext i192 %r295 to i224 -%r298 = getelementptr i32, i32* %r1, i32 6 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i224 -%r301 = shl i224 %r300, 192 -%r302 = or i224 %r296, %r301 -%r303 = zext i224 %r302 to i256 -%r305 = getelementptr i32, i32* %r1, i32 7 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i256 -%r308 = shl i256 %r307, 224 -%r309 = or i256 %r303, %r308 -%r310 = zext i256 %r309 to i288 -%r312 = getelementptr i32, i32* %r1, i32 8 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i288 -%r315 = shl i288 %r314, 256 -%r316 = or i288 %r310, %r315 -%r317 = zext i288 %r316 to i320 -%r319 = getelementptr i32, i32* %r1, i32 9 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i320 -%r322 = shl i320 %r321, 288 -%r323 = or i320 %r317, %r322 -%r324 = zext i320 %r323 to i352 -%r325 = sub i352 %r259, %r324 -%r327 = getelementptr i32, i32* %r1, i32 10 -%r328 = load i32, i32* %r327 -%r329 = zext i32 %r328 to i64 -%r331 = getelementptr i32, i32* %r327, i32 1 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i64 -%r334 = shl i64 %r333, 32 -%r335 = or i64 %r329, %r334 -%r336 = zext i64 %r335 to i96 -%r338 = getelementptr i32, i32* %r327, i32 2 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i96 -%r341 = shl i96 %r340, 64 -%r342 = or i96 %r336, %r341 -%r343 = zext i96 %r342 to i128 -%r345 = getelementptr i32, i32* %r327, i32 3 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i128 -%r348 = shl i128 %r347, 96 -%r349 = or i128 %r343, %r348 -%r350 = zext i128 %r349 to i160 -%r352 = getelementptr i32, i32* %r327, i32 4 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i160 -%r355 = shl i160 %r354, 128 -%r356 = or i160 %r350, %r355 -%r357 = zext i160 %r356 to i192 -%r359 = getelementptr i32, i32* %r327, i32 5 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i192 -%r362 = shl i192 %r361, 160 -%r363 = or i192 %r357, %r362 -%r364 = zext i192 %r363 to i224 -%r366 = getelementptr i32, i32* %r327, i32 6 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i224 -%r369 = shl i224 %r368, 192 -%r370 = or i224 %r364, %r369 -%r371 = zext i224 %r370 to i256 -%r373 = getelementptr i32, i32* %r327, i32 7 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i256 -%r376 = shl i256 %r375, 224 -%r377 = or i256 %r371, %r376 -%r378 = zext i256 %r377 to i288 -%r380 = getelementptr i32, i32* %r327, i32 8 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i288 -%r383 = shl i288 %r382, 256 -%r384 = or i288 %r378, %r383 -%r385 = zext i288 %r384 to i320 -%r387 = getelementptr i32, i32* %r327, i32 9 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i320 -%r390 = shl i320 %r389, 288 -%r391 = or i320 %r385, %r390 -%r392 = zext i320 %r391 to i352 -%r393 = sub i352 %r325, %r392 -%r394 = zext i352 %r393 to i480 -%r396 = getelementptr i32, i32* %r1, i32 5 -%r397 = load i32, i32* %r396 -%r398 = zext i32 %r397 to i64 -%r400 = getelementptr i32, i32* %r396, i32 1 -%r401 = load i32, i32* %r400 -%r402 = zext i32 %r401 to i64 -%r403 = shl i64 %r402, 32 -%r404 = or i64 %r398, %r403 -%r405 = zext i64 %r404 to i96 -%r407 = getelementptr i32, i32* %r396, i32 2 -%r408 = load i32, i32* %r407 -%r409 = zext i32 %r408 to i96 -%r410 = shl i96 %r409, 64 -%r411 = or i96 %r405, %r410 -%r412 = zext i96 %r411 to i128 -%r414 = getelementptr i32, i32* %r396, i32 3 -%r415 = load i32, i32* %r414 -%r416 = zext i32 %r415 to i128 -%r417 = shl i128 %r416, 96 -%r418 = or i128 %r412, %r417 -%r419 = zext i128 %r418 to i160 -%r421 = getelementptr i32, i32* %r396, i32 4 -%r422 = load i32, i32* %r421 -%r423 = zext i32 %r422 to i160 -%r424 = shl i160 %r423, 128 -%r425 = or i160 %r419, %r424 -%r426 = zext i160 %r425 to i192 -%r428 = getelementptr i32, i32* %r396, i32 5 -%r429 = load i32, i32* %r428 -%r430 = zext i32 %r429 to i192 -%r431 = shl i192 %r430, 160 -%r432 = or i192 %r426, %r431 -%r433 = zext i192 %r432 to i224 -%r435 = getelementptr i32, i32* %r396, i32 6 -%r436 = load i32, i32* %r435 -%r437 = zext i32 %r436 to i224 -%r438 = shl i224 %r437, 192 -%r439 = or i224 %r433, %r438 -%r440 = zext i224 %r439 to i256 -%r442 = getelementptr i32, i32* %r396, i32 7 -%r443 = load i32, i32* %r442 -%r444 = zext i32 %r443 to i256 -%r445 = shl i256 %r444, 224 -%r446 = or i256 %r440, %r445 -%r447 = zext i256 %r446 to i288 -%r449 = getelementptr i32, i32* %r396, i32 8 -%r450 = load i32, i32* %r449 -%r451 = zext i32 %r450 to i288 -%r452 = shl i288 %r451, 256 -%r453 = or i288 %r447, %r452 -%r454 = zext i288 %r453 to i320 -%r456 = getelementptr i32, i32* %r396, i32 9 -%r457 = load i32, i32* %r456 -%r458 = zext i32 %r457 to i320 -%r459 = shl i320 %r458, 288 -%r460 = or i320 %r454, %r459 -%r461 = zext i320 %r460 to i352 -%r463 = getelementptr i32, i32* %r396, i32 10 -%r464 = load i32, i32* %r463 -%r465 = zext i32 %r464 to i352 -%r466 = shl i352 %r465, 320 -%r467 = or i352 %r461, %r466 -%r468 = zext i352 %r467 to i384 -%r470 = getelementptr i32, i32* %r396, i32 11 -%r471 = load i32, i32* %r470 -%r472 = zext i32 %r471 to i384 -%r473 = shl i384 %r472, 352 -%r474 = or i384 %r468, %r473 -%r475 = zext i384 %r474 to i416 -%r477 = getelementptr i32, i32* %r396, i32 12 -%r478 = load i32, i32* %r477 -%r479 = zext i32 %r478 to i416 -%r480 = shl i416 %r479, 384 -%r481 = or i416 %r475, %r480 -%r482 = zext i416 %r481 to i448 -%r484 = getelementptr i32, i32* %r396, i32 13 -%r485 = load i32, i32* %r484 -%r486 = zext i32 %r485 to i448 -%r487 = shl i448 %r486, 416 -%r488 = or i448 %r482, %r487 -%r489 = zext i448 %r488 to i480 -%r491 = getelementptr i32, i32* %r396, i32 14 -%r492 = load i32, i32* %r491 -%r493 = zext i32 %r492 to i480 -%r494 = shl i480 %r493, 448 -%r495 = or i480 %r489, %r494 -%r496 = add i480 %r394, %r495 -%r498 = getelementptr i32, i32* %r1, i32 5 -%r499 = trunc i480 %r496 to i32 -%r501 = getelementptr i32, i32* %r498, i32 0 -store i32 %r499, i32* %r501 -%r502 = lshr i480 %r496, 32 -%r503 = trunc i480 %r502 to i32 -%r505 = getelementptr i32, i32* %r498, i32 1 -store i32 %r503, i32* %r505 -%r506 = lshr i480 %r502, 32 -%r507 = trunc i480 %r506 to i32 -%r509 = getelementptr i32, i32* %r498, i32 2 -store i32 %r507, i32* %r509 -%r510 = lshr i480 %r506, 32 -%r511 = trunc i480 %r510 to i32 -%r513 = getelementptr i32, i32* %r498, i32 3 -store i32 %r511, i32* %r513 -%r514 = lshr i480 %r510, 32 -%r515 = trunc i480 %r514 to i32 -%r517 = getelementptr i32, i32* %r498, i32 4 -store i32 %r515, i32* %r517 -%r518 = lshr i480 %r514, 32 -%r519 = trunc i480 %r518 to i32 -%r521 = getelementptr i32, i32* %r498, i32 5 -store i32 %r519, i32* %r521 -%r522 = lshr i480 %r518, 32 -%r523 = trunc i480 %r522 to i32 -%r525 = getelementptr i32, i32* %r498, i32 6 -store i32 %r523, i32* %r525 -%r526 = lshr i480 %r522, 32 -%r527 = trunc i480 %r526 to i32 -%r529 = getelementptr i32, i32* %r498, i32 7 -store i32 %r527, i32* %r529 -%r530 = lshr i480 %r526, 32 -%r531 = trunc i480 %r530 to i32 -%r533 = getelementptr i32, i32* %r498, i32 8 -store i32 %r531, i32* %r533 -%r534 = lshr i480 %r530, 32 -%r535 = trunc i480 %r534 to i32 -%r537 = getelementptr i32, i32* %r498, i32 9 -store i32 %r535, i32* %r537 -%r538 = lshr i480 %r534, 32 -%r539 = trunc i480 %r538 to i32 -%r541 = getelementptr i32, i32* %r498, i32 10 -store i32 %r539, i32* %r541 -%r542 = lshr i480 %r538, 32 -%r543 = trunc i480 %r542 to i32 -%r545 = getelementptr i32, i32* %r498, i32 11 -store i32 %r543, i32* %r545 -%r546 = lshr i480 %r542, 32 -%r547 = trunc i480 %r546 to i32 -%r549 = getelementptr i32, i32* %r498, i32 12 -store i32 %r547, i32* %r549 -%r550 = lshr i480 %r546, 32 -%r551 = trunc i480 %r550 to i32 -%r553 = getelementptr i32, i32* %r498, i32 13 -store i32 %r551, i32* %r553 -%r554 = lshr i480 %r550, 32 -%r555 = trunc i480 %r554 to i32 -%r557 = getelementptr i32, i32* %r498, i32 14 -store i32 %r555, i32* %r557 -ret void -} -define void @mcl_fp_mont10L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i352 @mulPv320x32(i32* %r2, i32 %r10) -%r12 = zext i352 %r11 to i384 -%r13 = trunc i352 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i352 @mulPv320x32(i32* %r4, i32 %r14) -%r16 = zext i352 %r15 to i384 -%r17 = add i384 %r12, %r16 -%r18 = lshr i384 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i352 @mulPv320x32(i32* %r2, i32 %r21) -%r23 = zext i352 %r22 to i384 -%r24 = add i384 %r18, %r23 -%r25 = trunc i384 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i352 @mulPv320x32(i32* %r4, i32 %r26) -%r28 = zext i352 %r27 to i384 -%r29 = add i384 %r24, %r28 -%r30 = lshr i384 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i352 @mulPv320x32(i32* %r2, i32 %r33) -%r35 = zext i352 %r34 to i384 -%r36 = add i384 %r30, %r35 -%r37 = trunc i384 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i352 @mulPv320x32(i32* %r4, i32 %r38) -%r40 = zext i352 %r39 to i384 -%r41 = add i384 %r36, %r40 -%r42 = lshr i384 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i352 @mulPv320x32(i32* %r2, i32 %r45) -%r47 = zext i352 %r46 to i384 -%r48 = add i384 %r42, %r47 -%r49 = trunc i384 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i352 @mulPv320x32(i32* %r4, i32 %r50) -%r52 = zext i352 %r51 to i384 -%r53 = add i384 %r48, %r52 -%r54 = lshr i384 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i352 @mulPv320x32(i32* %r2, i32 %r57) -%r59 = zext i352 %r58 to i384 -%r60 = add i384 %r54, %r59 -%r61 = trunc i384 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i352 @mulPv320x32(i32* %r4, i32 %r62) -%r64 = zext i352 %r63 to i384 -%r65 = add i384 %r60, %r64 -%r66 = lshr i384 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i352 @mulPv320x32(i32* %r2, i32 %r69) -%r71 = zext i352 %r70 to i384 -%r72 = add i384 %r66, %r71 -%r73 = trunc i384 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i352 @mulPv320x32(i32* %r4, i32 %r74) -%r76 = zext i352 %r75 to i384 -%r77 = add i384 %r72, %r76 -%r78 = lshr i384 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i352 @mulPv320x32(i32* %r2, i32 %r81) -%r83 = zext i352 %r82 to i384 -%r84 = add i384 %r78, %r83 -%r85 = trunc i384 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i352 @mulPv320x32(i32* %r4, i32 %r86) -%r88 = zext i352 %r87 to i384 -%r89 = add i384 %r84, %r88 -%r90 = lshr i384 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i352 @mulPv320x32(i32* %r2, i32 %r93) -%r95 = zext i352 %r94 to i384 -%r96 = add i384 %r90, %r95 -%r97 = trunc i384 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i352 @mulPv320x32(i32* %r4, i32 %r98) -%r100 = zext i352 %r99 to i384 -%r101 = add i384 %r96, %r100 -%r102 = lshr i384 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i352 @mulPv320x32(i32* %r2, i32 %r105) -%r107 = zext i352 %r106 to i384 -%r108 = add i384 %r102, %r107 -%r109 = trunc i384 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i352 @mulPv320x32(i32* %r4, i32 %r110) -%r112 = zext i352 %r111 to i384 -%r113 = add i384 %r108, %r112 -%r114 = lshr i384 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i352 @mulPv320x32(i32* %r2, i32 %r117) -%r119 = zext i352 %r118 to i384 -%r120 = add i384 %r114, %r119 -%r121 = trunc i384 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i352 @mulPv320x32(i32* %r4, i32 %r122) -%r124 = zext i352 %r123 to i384 -%r125 = add i384 %r120, %r124 -%r126 = lshr i384 %r125, 32 -%r127 = trunc i384 %r126 to i352 -%r128 = load i32, i32* %r4 -%r129 = zext i32 %r128 to i64 -%r131 = getelementptr i32, i32* %r4, i32 1 -%r132 = load i32, i32* %r131 -%r133 = zext i32 %r132 to i64 -%r134 = shl i64 %r133, 32 -%r135 = or i64 %r129, %r134 -%r136 = zext i64 %r135 to i96 -%r138 = getelementptr i32, i32* %r4, i32 2 -%r139 = load i32, i32* %r138 -%r140 = zext i32 %r139 to i96 -%r141 = shl i96 %r140, 64 -%r142 = or i96 %r136, %r141 -%r143 = zext i96 %r142 to i128 -%r145 = getelementptr i32, i32* %r4, i32 3 -%r146 = load i32, i32* %r145 -%r147 = zext i32 %r146 to i128 -%r148 = shl i128 %r147, 96 -%r149 = or i128 %r143, %r148 -%r150 = zext i128 %r149 to i160 -%r152 = getelementptr i32, i32* %r4, i32 4 -%r153 = load i32, i32* %r152 -%r154 = zext i32 %r153 to i160 -%r155 = shl i160 %r154, 128 -%r156 = or i160 %r150, %r155 -%r157 = zext i160 %r156 to i192 -%r159 = getelementptr i32, i32* %r4, i32 5 -%r160 = load i32, i32* %r159 -%r161 = zext i32 %r160 to i192 -%r162 = shl i192 %r161, 160 -%r163 = or i192 %r157, %r162 -%r164 = zext i192 %r163 to i224 -%r166 = getelementptr i32, i32* %r4, i32 6 -%r167 = load i32, i32* %r166 -%r168 = zext i32 %r167 to i224 -%r169 = shl i224 %r168, 192 -%r170 = or i224 %r164, %r169 -%r171 = zext i224 %r170 to i256 -%r173 = getelementptr i32, i32* %r4, i32 7 -%r174 = load i32, i32* %r173 -%r175 = zext i32 %r174 to i256 -%r176 = shl i256 %r175, 224 -%r177 = or i256 %r171, %r176 -%r178 = zext i256 %r177 to i288 -%r180 = getelementptr i32, i32* %r4, i32 8 -%r181 = load i32, i32* %r180 -%r182 = zext i32 %r181 to i288 -%r183 = shl i288 %r182, 256 -%r184 = or i288 %r178, %r183 -%r185 = zext i288 %r184 to i320 -%r187 = getelementptr i32, i32* %r4, i32 9 -%r188 = load i32, i32* %r187 -%r189 = zext i32 %r188 to i320 -%r190 = shl i320 %r189, 288 -%r191 = or i320 %r185, %r190 -%r192 = zext i320 %r191 to i352 -%r193 = sub i352 %r127, %r192 -%r194 = lshr i352 %r193, 320 -%r195 = trunc i352 %r194 to i1 -%r196 = select i1 %r195, i352 %r127, i352 %r193 -%r197 = trunc i352 %r196 to i320 -%r198 = trunc i320 %r197 to i32 -%r200 = getelementptr i32, i32* %r1, i32 0 -store i32 %r198, i32* %r200 -%r201 = lshr i320 %r197, 32 -%r202 = trunc i320 %r201 to i32 -%r204 = getelementptr i32, i32* %r1, i32 1 -store i32 %r202, i32* %r204 -%r205 = lshr i320 %r201, 32 -%r206 = trunc i320 %r205 to i32 -%r208 = getelementptr i32, i32* %r1, i32 2 -store i32 %r206, i32* %r208 -%r209 = lshr i320 %r205, 32 -%r210 = trunc i320 %r209 to i32 -%r212 = getelementptr i32, i32* %r1, i32 3 -store i32 %r210, i32* %r212 -%r213 = lshr i320 %r209, 32 -%r214 = trunc i320 %r213 to i32 -%r216 = getelementptr i32, i32* %r1, i32 4 -store i32 %r214, i32* %r216 -%r217 = lshr i320 %r213, 32 -%r218 = trunc i320 %r217 to i32 -%r220 = getelementptr i32, i32* %r1, i32 5 -store i32 %r218, i32* %r220 -%r221 = lshr i320 %r217, 32 -%r222 = trunc i320 %r221 to i32 -%r224 = getelementptr i32, i32* %r1, i32 6 -store i32 %r222, i32* %r224 -%r225 = lshr i320 %r221, 32 -%r226 = trunc i320 %r225 to i32 -%r228 = getelementptr i32, i32* %r1, i32 7 -store i32 %r226, i32* %r228 -%r229 = lshr i320 %r225, 32 -%r230 = trunc i320 %r229 to i32 -%r232 = getelementptr i32, i32* %r1, i32 8 -store i32 %r230, i32* %r232 -%r233 = lshr i320 %r229, 32 -%r234 = trunc i320 %r233 to i32 -%r236 = getelementptr i32, i32* %r1, i32 9 -store i32 %r234, i32* %r236 -ret void -} -define void @mcl_fp_montNF10L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i352 @mulPv320x32(i32* %r2, i32 %r8) -%r10 = trunc i352 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i352 @mulPv320x32(i32* %r4, i32 %r11) -%r13 = add i352 %r9, %r12 -%r14 = lshr i352 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i352 @mulPv320x32(i32* %r2, i32 %r17) -%r19 = add i352 %r14, %r18 -%r20 = trunc i352 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i352 @mulPv320x32(i32* %r4, i32 %r21) -%r23 = add i352 %r19, %r22 -%r24 = lshr i352 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i352 @mulPv320x32(i32* %r2, i32 %r27) -%r29 = add i352 %r24, %r28 -%r30 = trunc i352 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i352 @mulPv320x32(i32* %r4, i32 %r31) -%r33 = add i352 %r29, %r32 -%r34 = lshr i352 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i352 @mulPv320x32(i32* %r2, i32 %r37) -%r39 = add i352 %r34, %r38 -%r40 = trunc i352 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i352 @mulPv320x32(i32* %r4, i32 %r41) -%r43 = add i352 %r39, %r42 -%r44 = lshr i352 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i352 @mulPv320x32(i32* %r2, i32 %r47) -%r49 = add i352 %r44, %r48 -%r50 = trunc i352 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i352 @mulPv320x32(i32* %r4, i32 %r51) -%r53 = add i352 %r49, %r52 -%r54 = lshr i352 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i352 @mulPv320x32(i32* %r2, i32 %r57) -%r59 = add i352 %r54, %r58 -%r60 = trunc i352 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i352 @mulPv320x32(i32* %r4, i32 %r61) -%r63 = add i352 %r59, %r62 -%r64 = lshr i352 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i352 @mulPv320x32(i32* %r2, i32 %r67) -%r69 = add i352 %r64, %r68 -%r70 = trunc i352 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i352 @mulPv320x32(i32* %r4, i32 %r71) -%r73 = add i352 %r69, %r72 -%r74 = lshr i352 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i352 @mulPv320x32(i32* %r2, i32 %r77) -%r79 = add i352 %r74, %r78 -%r80 = trunc i352 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i352 @mulPv320x32(i32* %r4, i32 %r81) -%r83 = add i352 %r79, %r82 -%r84 = lshr i352 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i352 @mulPv320x32(i32* %r2, i32 %r87) -%r89 = add i352 %r84, %r88 -%r90 = trunc i352 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i352 @mulPv320x32(i32* %r4, i32 %r91) -%r93 = add i352 %r89, %r92 -%r94 = lshr i352 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i352 @mulPv320x32(i32* %r2, i32 %r97) -%r99 = add i352 %r94, %r98 -%r100 = trunc i352 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i352 @mulPv320x32(i32* %r4, i32 %r101) -%r103 = add i352 %r99, %r102 -%r104 = lshr i352 %r103, 32 -%r105 = trunc i352 %r104 to i320 -%r106 = load i32, i32* %r4 -%r107 = zext i32 %r106 to i64 -%r109 = getelementptr i32, i32* %r4, i32 1 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i64 -%r112 = shl i64 %r111, 32 -%r113 = or i64 %r107, %r112 -%r114 = zext i64 %r113 to i96 -%r116 = getelementptr i32, i32* %r4, i32 2 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i96 -%r119 = shl i96 %r118, 64 -%r120 = or i96 %r114, %r119 -%r121 = zext i96 %r120 to i128 -%r123 = getelementptr i32, i32* %r4, i32 3 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i128 -%r126 = shl i128 %r125, 96 -%r127 = or i128 %r121, %r126 -%r128 = zext i128 %r127 to i160 -%r130 = getelementptr i32, i32* %r4, i32 4 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i160 -%r133 = shl i160 %r132, 128 -%r134 = or i160 %r128, %r133 -%r135 = zext i160 %r134 to i192 -%r137 = getelementptr i32, i32* %r4, i32 5 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i192 -%r140 = shl i192 %r139, 160 -%r141 = or i192 %r135, %r140 -%r142 = zext i192 %r141 to i224 -%r144 = getelementptr i32, i32* %r4, i32 6 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i224 -%r147 = shl i224 %r146, 192 -%r148 = or i224 %r142, %r147 -%r149 = zext i224 %r148 to i256 -%r151 = getelementptr i32, i32* %r4, i32 7 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i256 -%r154 = shl i256 %r153, 224 -%r155 = or i256 %r149, %r154 -%r156 = zext i256 %r155 to i288 -%r158 = getelementptr i32, i32* %r4, i32 8 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i288 -%r161 = shl i288 %r160, 256 -%r162 = or i288 %r156, %r161 -%r163 = zext i288 %r162 to i320 -%r165 = getelementptr i32, i32* %r4, i32 9 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i320 -%r168 = shl i320 %r167, 288 -%r169 = or i320 %r163, %r168 -%r170 = sub i320 %r105, %r169 -%r171 = lshr i320 %r170, 319 -%r172 = trunc i320 %r171 to i1 -%r173 = select i1 %r172, i320 %r105, i320 %r170 -%r174 = trunc i320 %r173 to i32 -%r176 = getelementptr i32, i32* %r1, i32 0 -store i32 %r174, i32* %r176 -%r177 = lshr i320 %r173, 32 -%r178 = trunc i320 %r177 to i32 -%r180 = getelementptr i32, i32* %r1, i32 1 -store i32 %r178, i32* %r180 -%r181 = lshr i320 %r177, 32 -%r182 = trunc i320 %r181 to i32 -%r184 = getelementptr i32, i32* %r1, i32 2 -store i32 %r182, i32* %r184 -%r185 = lshr i320 %r181, 32 -%r186 = trunc i320 %r185 to i32 -%r188 = getelementptr i32, i32* %r1, i32 3 -store i32 %r186, i32* %r188 -%r189 = lshr i320 %r185, 32 -%r190 = trunc i320 %r189 to i32 -%r192 = getelementptr i32, i32* %r1, i32 4 -store i32 %r190, i32* %r192 -%r193 = lshr i320 %r189, 32 -%r194 = trunc i320 %r193 to i32 -%r196 = getelementptr i32, i32* %r1, i32 5 -store i32 %r194, i32* %r196 -%r197 = lshr i320 %r193, 32 -%r198 = trunc i320 %r197 to i32 -%r200 = getelementptr i32, i32* %r1, i32 6 -store i32 %r198, i32* %r200 -%r201 = lshr i320 %r197, 32 -%r202 = trunc i320 %r201 to i32 -%r204 = getelementptr i32, i32* %r1, i32 7 -store i32 %r202, i32* %r204 -%r205 = lshr i320 %r201, 32 -%r206 = trunc i320 %r205 to i32 -%r208 = getelementptr i32, i32* %r1, i32 8 -store i32 %r206, i32* %r208 -%r209 = lshr i320 %r205, 32 -%r210 = trunc i320 %r209 to i32 -%r212 = getelementptr i32, i32* %r1, i32 9 -store i32 %r210, i32* %r212 -ret void -} -define void @mcl_fp_montRed10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = load i32, i32* %r2 -%r72 = zext i32 %r71 to i64 -%r74 = getelementptr i32, i32* %r2, i32 1 -%r75 = load i32, i32* %r74 -%r76 = zext i32 %r75 to i64 -%r77 = shl i64 %r76, 32 -%r78 = or i64 %r72, %r77 -%r79 = zext i64 %r78 to i96 -%r81 = getelementptr i32, i32* %r2, i32 2 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i96 -%r84 = shl i96 %r83, 64 -%r85 = or i96 %r79, %r84 -%r86 = zext i96 %r85 to i128 -%r88 = getelementptr i32, i32* %r2, i32 3 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i128 -%r91 = shl i128 %r90, 96 -%r92 = or i128 %r86, %r91 -%r93 = zext i128 %r92 to i160 -%r95 = getelementptr i32, i32* %r2, i32 4 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i160 -%r98 = shl i160 %r97, 128 -%r99 = or i160 %r93, %r98 -%r100 = zext i160 %r99 to i192 -%r102 = getelementptr i32, i32* %r2, i32 5 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i192 -%r105 = shl i192 %r104, 160 -%r106 = or i192 %r100, %r105 -%r107 = zext i192 %r106 to i224 -%r109 = getelementptr i32, i32* %r2, i32 6 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i224 -%r112 = shl i224 %r111, 192 -%r113 = or i224 %r107, %r112 -%r114 = zext i224 %r113 to i256 -%r116 = getelementptr i32, i32* %r2, i32 7 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i256 -%r119 = shl i256 %r118, 224 -%r120 = or i256 %r114, %r119 -%r121 = zext i256 %r120 to i288 -%r123 = getelementptr i32, i32* %r2, i32 8 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i288 -%r126 = shl i288 %r125, 256 -%r127 = or i288 %r121, %r126 -%r128 = zext i288 %r127 to i320 -%r130 = getelementptr i32, i32* %r2, i32 9 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i320 -%r133 = shl i320 %r132, 288 -%r134 = or i320 %r128, %r133 -%r135 = zext i320 %r134 to i352 -%r137 = getelementptr i32, i32* %r2, i32 10 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i352 -%r140 = shl i352 %r139, 320 -%r141 = or i352 %r135, %r140 -%r142 = zext i352 %r141 to i384 -%r144 = getelementptr i32, i32* %r2, i32 11 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i384 -%r147 = shl i384 %r146, 352 -%r148 = or i384 %r142, %r147 -%r149 = zext i384 %r148 to i416 -%r151 = getelementptr i32, i32* %r2, i32 12 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i416 -%r154 = shl i416 %r153, 384 -%r155 = or i416 %r149, %r154 -%r156 = zext i416 %r155 to i448 -%r158 = getelementptr i32, i32* %r2, i32 13 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i448 -%r161 = shl i448 %r160, 416 -%r162 = or i448 %r156, %r161 -%r163 = zext i448 %r162 to i480 -%r165 = getelementptr i32, i32* %r2, i32 14 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i480 -%r168 = shl i480 %r167, 448 -%r169 = or i480 %r163, %r168 -%r170 = zext i480 %r169 to i512 -%r172 = getelementptr i32, i32* %r2, i32 15 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i512 -%r175 = shl i512 %r174, 480 -%r176 = or i512 %r170, %r175 -%r177 = zext i512 %r176 to i544 -%r179 = getelementptr i32, i32* %r2, i32 16 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i544 -%r182 = shl i544 %r181, 512 -%r183 = or i544 %r177, %r182 -%r184 = zext i544 %r183 to i576 -%r186 = getelementptr i32, i32* %r2, i32 17 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i576 -%r189 = shl i576 %r188, 544 -%r190 = or i576 %r184, %r189 -%r191 = zext i576 %r190 to i608 -%r193 = getelementptr i32, i32* %r2, i32 18 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i608 -%r196 = shl i608 %r195, 576 -%r197 = or i608 %r191, %r196 -%r198 = zext i608 %r197 to i640 -%r200 = getelementptr i32, i32* %r2, i32 19 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i640 -%r203 = shl i640 %r202, 608 -%r204 = or i640 %r198, %r203 -%r205 = zext i640 %r204 to i672 -%r206 = trunc i672 %r205 to i32 -%r207 = mul i32 %r206, %r6 -%r208 = call i352 @mulPv320x32(i32* %r3, i32 %r207) -%r209 = zext i352 %r208 to i672 -%r210 = add i672 %r205, %r209 -%r211 = lshr i672 %r210, 32 -%r212 = trunc i672 %r211 to i640 -%r213 = trunc i640 %r212 to i32 -%r214 = mul i32 %r213, %r6 -%r215 = call i352 @mulPv320x32(i32* %r3, i32 %r214) -%r216 = zext i352 %r215 to i640 -%r217 = add i640 %r212, %r216 -%r218 = lshr i640 %r217, 32 -%r219 = trunc i640 %r218 to i608 -%r220 = trunc i608 %r219 to i32 -%r221 = mul i32 %r220, %r6 -%r222 = call i352 @mulPv320x32(i32* %r3, i32 %r221) -%r223 = zext i352 %r222 to i608 -%r224 = add i608 %r219, %r223 -%r225 = lshr i608 %r224, 32 -%r226 = trunc i608 %r225 to i576 -%r227 = trunc i576 %r226 to i32 -%r228 = mul i32 %r227, %r6 -%r229 = call i352 @mulPv320x32(i32* %r3, i32 %r228) -%r230 = zext i352 %r229 to i576 -%r231 = add i576 %r226, %r230 -%r232 = lshr i576 %r231, 32 -%r233 = trunc i576 %r232 to i544 -%r234 = trunc i544 %r233 to i32 -%r235 = mul i32 %r234, %r6 -%r236 = call i352 @mulPv320x32(i32* %r3, i32 %r235) -%r237 = zext i352 %r236 to i544 -%r238 = add i544 %r233, %r237 -%r239 = lshr i544 %r238, 32 -%r240 = trunc i544 %r239 to i512 -%r241 = trunc i512 %r240 to i32 -%r242 = mul i32 %r241, %r6 -%r243 = call i352 @mulPv320x32(i32* %r3, i32 %r242) -%r244 = zext i352 %r243 to i512 -%r245 = add i512 %r240, %r244 -%r246 = lshr i512 %r245, 32 -%r247 = trunc i512 %r246 to i480 -%r248 = trunc i480 %r247 to i32 -%r249 = mul i32 %r248, %r6 -%r250 = call i352 @mulPv320x32(i32* %r3, i32 %r249) -%r251 = zext i352 %r250 to i480 -%r252 = add i480 %r247, %r251 -%r253 = lshr i480 %r252, 32 -%r254 = trunc i480 %r253 to i448 -%r255 = trunc i448 %r254 to i32 -%r256 = mul i32 %r255, %r6 -%r257 = call i352 @mulPv320x32(i32* %r3, i32 %r256) -%r258 = zext i352 %r257 to i448 -%r259 = add i448 %r254, %r258 -%r260 = lshr i448 %r259, 32 -%r261 = trunc i448 %r260 to i416 -%r262 = trunc i416 %r261 to i32 -%r263 = mul i32 %r262, %r6 -%r264 = call i352 @mulPv320x32(i32* %r3, i32 %r263) -%r265 = zext i352 %r264 to i416 -%r266 = add i416 %r261, %r265 -%r267 = lshr i416 %r266, 32 -%r268 = trunc i416 %r267 to i384 -%r269 = trunc i384 %r268 to i32 -%r270 = mul i32 %r269, %r6 -%r271 = call i352 @mulPv320x32(i32* %r3, i32 %r270) -%r272 = zext i352 %r271 to i384 -%r273 = add i384 %r268, %r272 -%r274 = lshr i384 %r273, 32 -%r275 = trunc i384 %r274 to i352 -%r276 = zext i320 %r70 to i352 -%r277 = sub i352 %r275, %r276 -%r278 = lshr i352 %r277, 320 -%r279 = trunc i352 %r278 to i1 -%r280 = select i1 %r279, i352 %r275, i352 %r277 -%r281 = trunc i352 %r280 to i320 -%r282 = trunc i320 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 0 -store i32 %r282, i32* %r284 -%r285 = lshr i320 %r281, 32 -%r286 = trunc i320 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 1 -store i32 %r286, i32* %r288 -%r289 = lshr i320 %r285, 32 -%r290 = trunc i320 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 2 -store i32 %r290, i32* %r292 -%r293 = lshr i320 %r289, 32 -%r294 = trunc i320 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 3 -store i32 %r294, i32* %r296 -%r297 = lshr i320 %r293, 32 -%r298 = trunc i320 %r297 to i32 -%r300 = getelementptr i32, i32* %r1, i32 4 -store i32 %r298, i32* %r300 -%r301 = lshr i320 %r297, 32 -%r302 = trunc i320 %r301 to i32 -%r304 = getelementptr i32, i32* %r1, i32 5 -store i32 %r302, i32* %r304 -%r305 = lshr i320 %r301, 32 -%r306 = trunc i320 %r305 to i32 -%r308 = getelementptr i32, i32* %r1, i32 6 -store i32 %r306, i32* %r308 -%r309 = lshr i320 %r305, 32 -%r310 = trunc i320 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 7 -store i32 %r310, i32* %r312 -%r313 = lshr i320 %r309, 32 -%r314 = trunc i320 %r313 to i32 -%r316 = getelementptr i32, i32* %r1, i32 8 -store i32 %r314, i32* %r316 -%r317 = lshr i320 %r313, 32 -%r318 = trunc i320 %r317 to i32 -%r320 = getelementptr i32, i32* %r1, i32 9 -store i32 %r318, i32* %r320 -ret void -} -define i32 @mcl_fp_addPre10L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r70 = load i32, i32* %r4 -%r71 = zext i32 %r70 to i64 -%r73 = getelementptr i32, i32* %r4, i32 1 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i64 -%r76 = shl i64 %r75, 32 -%r77 = or i64 %r71, %r76 -%r78 = zext i64 %r77 to i96 -%r80 = getelementptr i32, i32* %r4, i32 2 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i96 -%r83 = shl i96 %r82, 64 -%r84 = or i96 %r78, %r83 -%r85 = zext i96 %r84 to i128 -%r87 = getelementptr i32, i32* %r4, i32 3 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i128 -%r90 = shl i128 %r89, 96 -%r91 = or i128 %r85, %r90 -%r92 = zext i128 %r91 to i160 -%r94 = getelementptr i32, i32* %r4, i32 4 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i160 -%r97 = shl i160 %r96, 128 -%r98 = or i160 %r92, %r97 -%r99 = zext i160 %r98 to i192 -%r101 = getelementptr i32, i32* %r4, i32 5 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i192 -%r104 = shl i192 %r103, 160 -%r105 = or i192 %r99, %r104 -%r106 = zext i192 %r105 to i224 -%r108 = getelementptr i32, i32* %r4, i32 6 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i224 -%r111 = shl i224 %r110, 192 -%r112 = or i224 %r106, %r111 -%r113 = zext i224 %r112 to i256 -%r115 = getelementptr i32, i32* %r4, i32 7 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i256 -%r118 = shl i256 %r117, 224 -%r119 = or i256 %r113, %r118 -%r120 = zext i256 %r119 to i288 -%r122 = getelementptr i32, i32* %r4, i32 8 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i288 -%r125 = shl i288 %r124, 256 -%r126 = or i288 %r120, %r125 -%r127 = zext i288 %r126 to i320 -%r129 = getelementptr i32, i32* %r4, i32 9 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i320 -%r132 = shl i320 %r131, 288 -%r133 = or i320 %r127, %r132 -%r134 = zext i320 %r133 to i352 -%r135 = add i352 %r69, %r134 -%r136 = trunc i352 %r135 to i320 -%r137 = trunc i320 %r136 to i32 -%r139 = getelementptr i32, i32* %r2, i32 0 -store i32 %r137, i32* %r139 -%r140 = lshr i320 %r136, 32 -%r141 = trunc i320 %r140 to i32 -%r143 = getelementptr i32, i32* %r2, i32 1 -store i32 %r141, i32* %r143 -%r144 = lshr i320 %r140, 32 -%r145 = trunc i320 %r144 to i32 -%r147 = getelementptr i32, i32* %r2, i32 2 -store i32 %r145, i32* %r147 -%r148 = lshr i320 %r144, 32 -%r149 = trunc i320 %r148 to i32 -%r151 = getelementptr i32, i32* %r2, i32 3 -store i32 %r149, i32* %r151 -%r152 = lshr i320 %r148, 32 -%r153 = trunc i320 %r152 to i32 -%r155 = getelementptr i32, i32* %r2, i32 4 -store i32 %r153, i32* %r155 -%r156 = lshr i320 %r152, 32 -%r157 = trunc i320 %r156 to i32 -%r159 = getelementptr i32, i32* %r2, i32 5 -store i32 %r157, i32* %r159 -%r160 = lshr i320 %r156, 32 -%r161 = trunc i320 %r160 to i32 -%r163 = getelementptr i32, i32* %r2, i32 6 -store i32 %r161, i32* %r163 -%r164 = lshr i320 %r160, 32 -%r165 = trunc i320 %r164 to i32 -%r167 = getelementptr i32, i32* %r2, i32 7 -store i32 %r165, i32* %r167 -%r168 = lshr i320 %r164, 32 -%r169 = trunc i320 %r168 to i32 -%r171 = getelementptr i32, i32* %r2, i32 8 -store i32 %r169, i32* %r171 -%r172 = lshr i320 %r168, 32 -%r173 = trunc i320 %r172 to i32 -%r175 = getelementptr i32, i32* %r2, i32 9 -store i32 %r173, i32* %r175 -%r176 = lshr i352 %r135, 320 -%r177 = trunc i352 %r176 to i32 -ret i32 %r177 -} -define i32 @mcl_fp_subPre10L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r70 = load i32, i32* %r4 -%r71 = zext i32 %r70 to i64 -%r73 = getelementptr i32, i32* %r4, i32 1 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i64 -%r76 = shl i64 %r75, 32 -%r77 = or i64 %r71, %r76 -%r78 = zext i64 %r77 to i96 -%r80 = getelementptr i32, i32* %r4, i32 2 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i96 -%r83 = shl i96 %r82, 64 -%r84 = or i96 %r78, %r83 -%r85 = zext i96 %r84 to i128 -%r87 = getelementptr i32, i32* %r4, i32 3 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i128 -%r90 = shl i128 %r89, 96 -%r91 = or i128 %r85, %r90 -%r92 = zext i128 %r91 to i160 -%r94 = getelementptr i32, i32* %r4, i32 4 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i160 -%r97 = shl i160 %r96, 128 -%r98 = or i160 %r92, %r97 -%r99 = zext i160 %r98 to i192 -%r101 = getelementptr i32, i32* %r4, i32 5 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i192 -%r104 = shl i192 %r103, 160 -%r105 = or i192 %r99, %r104 -%r106 = zext i192 %r105 to i224 -%r108 = getelementptr i32, i32* %r4, i32 6 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i224 -%r111 = shl i224 %r110, 192 -%r112 = or i224 %r106, %r111 -%r113 = zext i224 %r112 to i256 -%r115 = getelementptr i32, i32* %r4, i32 7 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i256 -%r118 = shl i256 %r117, 224 -%r119 = or i256 %r113, %r118 -%r120 = zext i256 %r119 to i288 -%r122 = getelementptr i32, i32* %r4, i32 8 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i288 -%r125 = shl i288 %r124, 256 -%r126 = or i288 %r120, %r125 -%r127 = zext i288 %r126 to i320 -%r129 = getelementptr i32, i32* %r4, i32 9 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i320 -%r132 = shl i320 %r131, 288 -%r133 = or i320 %r127, %r132 -%r134 = zext i320 %r133 to i352 -%r135 = sub i352 %r69, %r134 -%r136 = trunc i352 %r135 to i320 -%r137 = trunc i320 %r136 to i32 -%r139 = getelementptr i32, i32* %r2, i32 0 -store i32 %r137, i32* %r139 -%r140 = lshr i320 %r136, 32 -%r141 = trunc i320 %r140 to i32 -%r143 = getelementptr i32, i32* %r2, i32 1 -store i32 %r141, i32* %r143 -%r144 = lshr i320 %r140, 32 -%r145 = trunc i320 %r144 to i32 -%r147 = getelementptr i32, i32* %r2, i32 2 -store i32 %r145, i32* %r147 -%r148 = lshr i320 %r144, 32 -%r149 = trunc i320 %r148 to i32 -%r151 = getelementptr i32, i32* %r2, i32 3 -store i32 %r149, i32* %r151 -%r152 = lshr i320 %r148, 32 -%r153 = trunc i320 %r152 to i32 -%r155 = getelementptr i32, i32* %r2, i32 4 -store i32 %r153, i32* %r155 -%r156 = lshr i320 %r152, 32 -%r157 = trunc i320 %r156 to i32 -%r159 = getelementptr i32, i32* %r2, i32 5 -store i32 %r157, i32* %r159 -%r160 = lshr i320 %r156, 32 -%r161 = trunc i320 %r160 to i32 -%r163 = getelementptr i32, i32* %r2, i32 6 -store i32 %r161, i32* %r163 -%r164 = lshr i320 %r160, 32 -%r165 = trunc i320 %r164 to i32 -%r167 = getelementptr i32, i32* %r2, i32 7 -store i32 %r165, i32* %r167 -%r168 = lshr i320 %r164, 32 -%r169 = trunc i320 %r168 to i32 -%r171 = getelementptr i32, i32* %r2, i32 8 -store i32 %r169, i32* %r171 -%r172 = lshr i320 %r168, 32 -%r173 = trunc i320 %r172 to i32 -%r175 = getelementptr i32, i32* %r2, i32 9 -store i32 %r173, i32* %r175 -%r176 = lshr i352 %r135, 320 -%r177 = trunc i352 %r176 to i32 -%r179 = and i32 %r177, 1 -ret i32 %r179 -} -define void @mcl_fp_shr1_10L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = lshr i320 %r66, 1 -%r68 = trunc i320 %r67 to i32 -%r70 = getelementptr i32, i32* %r1, i32 0 -store i32 %r68, i32* %r70 -%r71 = lshr i320 %r67, 32 -%r72 = trunc i320 %r71 to i32 -%r74 = getelementptr i32, i32* %r1, i32 1 -store i32 %r72, i32* %r74 -%r75 = lshr i320 %r71, 32 -%r76 = trunc i320 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 2 -store i32 %r76, i32* %r78 -%r79 = lshr i320 %r75, 32 -%r80 = trunc i320 %r79 to i32 -%r82 = getelementptr i32, i32* %r1, i32 3 -store i32 %r80, i32* %r82 -%r83 = lshr i320 %r79, 32 -%r84 = trunc i320 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 4 -store i32 %r84, i32* %r86 -%r87 = lshr i320 %r83, 32 -%r88 = trunc i320 %r87 to i32 -%r90 = getelementptr i32, i32* %r1, i32 5 -store i32 %r88, i32* %r90 -%r91 = lshr i320 %r87, 32 -%r92 = trunc i320 %r91 to i32 -%r94 = getelementptr i32, i32* %r1, i32 6 -store i32 %r92, i32* %r94 -%r95 = lshr i320 %r91, 32 -%r96 = trunc i320 %r95 to i32 -%r98 = getelementptr i32, i32* %r1, i32 7 -store i32 %r96, i32* %r98 -%r99 = lshr i320 %r95, 32 -%r100 = trunc i320 %r99 to i32 -%r102 = getelementptr i32, i32* %r1, i32 8 -store i32 %r100, i32* %r102 -%r103 = lshr i320 %r99, 32 -%r104 = trunc i320 %r103 to i32 -%r106 = getelementptr i32, i32* %r1, i32 9 -store i32 %r104, i32* %r106 -ret void -} -define void @mcl_fp_add10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r68 to i352 -%r134 = zext i320 %r132 to i352 -%r135 = add i352 %r133, %r134 -%r136 = trunc i352 %r135 to i320 -%r137 = trunc i320 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 0 -store i32 %r137, i32* %r139 -%r140 = lshr i320 %r136, 32 -%r141 = trunc i320 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 1 -store i32 %r141, i32* %r143 -%r144 = lshr i320 %r140, 32 -%r145 = trunc i320 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 2 -store i32 %r145, i32* %r147 -%r148 = lshr i320 %r144, 32 -%r149 = trunc i320 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 3 -store i32 %r149, i32* %r151 -%r152 = lshr i320 %r148, 32 -%r153 = trunc i320 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 4 -store i32 %r153, i32* %r155 -%r156 = lshr i320 %r152, 32 -%r157 = trunc i320 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 5 -store i32 %r157, i32* %r159 -%r160 = lshr i320 %r156, 32 -%r161 = trunc i320 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 6 -store i32 %r161, i32* %r163 -%r164 = lshr i320 %r160, 32 -%r165 = trunc i320 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 7 -store i32 %r165, i32* %r167 -%r168 = lshr i320 %r164, 32 -%r169 = trunc i320 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 8 -store i32 %r169, i32* %r171 -%r172 = lshr i320 %r168, 32 -%r173 = trunc i320 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 9 -store i32 %r173, i32* %r175 -%r176 = load i32, i32* %r4 -%r177 = zext i32 %r176 to i64 -%r179 = getelementptr i32, i32* %r4, i32 1 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i64 -%r182 = shl i64 %r181, 32 -%r183 = or i64 %r177, %r182 -%r184 = zext i64 %r183 to i96 -%r186 = getelementptr i32, i32* %r4, i32 2 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i96 -%r189 = shl i96 %r188, 64 -%r190 = or i96 %r184, %r189 -%r191 = zext i96 %r190 to i128 -%r193 = getelementptr i32, i32* %r4, i32 3 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i128 -%r196 = shl i128 %r195, 96 -%r197 = or i128 %r191, %r196 -%r198 = zext i128 %r197 to i160 -%r200 = getelementptr i32, i32* %r4, i32 4 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i160 -%r203 = shl i160 %r202, 128 -%r204 = or i160 %r198, %r203 -%r205 = zext i160 %r204 to i192 -%r207 = getelementptr i32, i32* %r4, i32 5 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i192 -%r210 = shl i192 %r209, 160 -%r211 = or i192 %r205, %r210 -%r212 = zext i192 %r211 to i224 -%r214 = getelementptr i32, i32* %r4, i32 6 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i224 -%r217 = shl i224 %r216, 192 -%r218 = or i224 %r212, %r217 -%r219 = zext i224 %r218 to i256 -%r221 = getelementptr i32, i32* %r4, i32 7 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i256 -%r224 = shl i256 %r223, 224 -%r225 = or i256 %r219, %r224 -%r226 = zext i256 %r225 to i288 -%r228 = getelementptr i32, i32* %r4, i32 8 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i288 -%r231 = shl i288 %r230, 256 -%r232 = or i288 %r226, %r231 -%r233 = zext i288 %r232 to i320 -%r235 = getelementptr i32, i32* %r4, i32 9 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i320 -%r238 = shl i320 %r237, 288 -%r239 = or i320 %r233, %r238 -%r240 = zext i320 %r239 to i352 -%r241 = sub i352 %r135, %r240 -%r242 = lshr i352 %r241, 320 -%r243 = trunc i352 %r242 to i1 -br i1%r243, label %carry, label %nocarry -nocarry: -%r244 = trunc i352 %r241 to i320 -%r245 = trunc i320 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 0 -store i32 %r245, i32* %r247 -%r248 = lshr i320 %r244, 32 -%r249 = trunc i320 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 1 -store i32 %r249, i32* %r251 -%r252 = lshr i320 %r248, 32 -%r253 = trunc i320 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 2 -store i32 %r253, i32* %r255 -%r256 = lshr i320 %r252, 32 -%r257 = trunc i320 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 3 -store i32 %r257, i32* %r259 -%r260 = lshr i320 %r256, 32 -%r261 = trunc i320 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 4 -store i32 %r261, i32* %r263 -%r264 = lshr i320 %r260, 32 -%r265 = trunc i320 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 5 -store i32 %r265, i32* %r267 -%r268 = lshr i320 %r264, 32 -%r269 = trunc i320 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 6 -store i32 %r269, i32* %r271 -%r272 = lshr i320 %r268, 32 -%r273 = trunc i320 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 7 -store i32 %r273, i32* %r275 -%r276 = lshr i320 %r272, 32 -%r277 = trunc i320 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 8 -store i32 %r277, i32* %r279 -%r280 = lshr i320 %r276, 32 -%r281 = trunc i320 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 9 -store i32 %r281, i32* %r283 -ret void -carry: -ret void -} -define void @mcl_fp_addNF10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = add i320 %r68, %r132 -%r134 = load i32, i32* %r4 -%r135 = zext i32 %r134 to i64 -%r137 = getelementptr i32, i32* %r4, i32 1 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i64 -%r140 = shl i64 %r139, 32 -%r141 = or i64 %r135, %r140 -%r142 = zext i64 %r141 to i96 -%r144 = getelementptr i32, i32* %r4, i32 2 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i96 -%r147 = shl i96 %r146, 64 -%r148 = or i96 %r142, %r147 -%r149 = zext i96 %r148 to i128 -%r151 = getelementptr i32, i32* %r4, i32 3 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i128 -%r154 = shl i128 %r153, 96 -%r155 = or i128 %r149, %r154 -%r156 = zext i128 %r155 to i160 -%r158 = getelementptr i32, i32* %r4, i32 4 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i160 -%r161 = shl i160 %r160, 128 -%r162 = or i160 %r156, %r161 -%r163 = zext i160 %r162 to i192 -%r165 = getelementptr i32, i32* %r4, i32 5 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i192 -%r168 = shl i192 %r167, 160 -%r169 = or i192 %r163, %r168 -%r170 = zext i192 %r169 to i224 -%r172 = getelementptr i32, i32* %r4, i32 6 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i224 -%r175 = shl i224 %r174, 192 -%r176 = or i224 %r170, %r175 -%r177 = zext i224 %r176 to i256 -%r179 = getelementptr i32, i32* %r4, i32 7 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i256 -%r182 = shl i256 %r181, 224 -%r183 = or i256 %r177, %r182 -%r184 = zext i256 %r183 to i288 -%r186 = getelementptr i32, i32* %r4, i32 8 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i288 -%r189 = shl i288 %r188, 256 -%r190 = or i288 %r184, %r189 -%r191 = zext i288 %r190 to i320 -%r193 = getelementptr i32, i32* %r4, i32 9 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i320 -%r196 = shl i320 %r195, 288 -%r197 = or i320 %r191, %r196 -%r198 = sub i320 %r133, %r197 -%r199 = lshr i320 %r198, 319 -%r200 = trunc i320 %r199 to i1 -%r201 = select i1 %r200, i320 %r133, i320 %r198 -%r202 = trunc i320 %r201 to i32 -%r204 = getelementptr i32, i32* %r1, i32 0 -store i32 %r202, i32* %r204 -%r205 = lshr i320 %r201, 32 -%r206 = trunc i320 %r205 to i32 -%r208 = getelementptr i32, i32* %r1, i32 1 -store i32 %r206, i32* %r208 -%r209 = lshr i320 %r205, 32 -%r210 = trunc i320 %r209 to i32 -%r212 = getelementptr i32, i32* %r1, i32 2 -store i32 %r210, i32* %r212 -%r213 = lshr i320 %r209, 32 -%r214 = trunc i320 %r213 to i32 -%r216 = getelementptr i32, i32* %r1, i32 3 -store i32 %r214, i32* %r216 -%r217 = lshr i320 %r213, 32 -%r218 = trunc i320 %r217 to i32 -%r220 = getelementptr i32, i32* %r1, i32 4 -store i32 %r218, i32* %r220 -%r221 = lshr i320 %r217, 32 -%r222 = trunc i320 %r221 to i32 -%r224 = getelementptr i32, i32* %r1, i32 5 -store i32 %r222, i32* %r224 -%r225 = lshr i320 %r221, 32 -%r226 = trunc i320 %r225 to i32 -%r228 = getelementptr i32, i32* %r1, i32 6 -store i32 %r226, i32* %r228 -%r229 = lshr i320 %r225, 32 -%r230 = trunc i320 %r229 to i32 -%r232 = getelementptr i32, i32* %r1, i32 7 -store i32 %r230, i32* %r232 -%r233 = lshr i320 %r229, 32 -%r234 = trunc i320 %r233 to i32 -%r236 = getelementptr i32, i32* %r1, i32 8 -store i32 %r234, i32* %r236 -%r237 = lshr i320 %r233, 32 -%r238 = trunc i320 %r237 to i32 -%r240 = getelementptr i32, i32* %r1, i32 9 -store i32 %r238, i32* %r240 -ret void -} -define void @mcl_fp_sub10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r68 to i352 -%r134 = zext i320 %r132 to i352 -%r135 = sub i352 %r133, %r134 -%r136 = trunc i352 %r135 to i320 -%r137 = lshr i352 %r135, 320 -%r138 = trunc i352 %r137 to i1 -%r139 = trunc i320 %r136 to i32 -%r141 = getelementptr i32, i32* %r1, i32 0 -store i32 %r139, i32* %r141 -%r142 = lshr i320 %r136, 32 -%r143 = trunc i320 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 1 -store i32 %r143, i32* %r145 -%r146 = lshr i320 %r142, 32 -%r147 = trunc i320 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 2 -store i32 %r147, i32* %r149 -%r150 = lshr i320 %r146, 32 -%r151 = trunc i320 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 3 -store i32 %r151, i32* %r153 -%r154 = lshr i320 %r150, 32 -%r155 = trunc i320 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 4 -store i32 %r155, i32* %r157 -%r158 = lshr i320 %r154, 32 -%r159 = trunc i320 %r158 to i32 -%r161 = getelementptr i32, i32* %r1, i32 5 -store i32 %r159, i32* %r161 -%r162 = lshr i320 %r158, 32 -%r163 = trunc i320 %r162 to i32 -%r165 = getelementptr i32, i32* %r1, i32 6 -store i32 %r163, i32* %r165 -%r166 = lshr i320 %r162, 32 -%r167 = trunc i320 %r166 to i32 -%r169 = getelementptr i32, i32* %r1, i32 7 -store i32 %r167, i32* %r169 -%r170 = lshr i320 %r166, 32 -%r171 = trunc i320 %r170 to i32 -%r173 = getelementptr i32, i32* %r1, i32 8 -store i32 %r171, i32* %r173 -%r174 = lshr i320 %r170, 32 -%r175 = trunc i320 %r174 to i32 -%r177 = getelementptr i32, i32* %r1, i32 9 -store i32 %r175, i32* %r177 -br i1%r138, label %carry, label %nocarry -nocarry: -ret void -carry: -%r178 = load i32, i32* %r4 -%r179 = zext i32 %r178 to i64 -%r181 = getelementptr i32, i32* %r4, i32 1 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i64 -%r184 = shl i64 %r183, 32 -%r185 = or i64 %r179, %r184 -%r186 = zext i64 %r185 to i96 -%r188 = getelementptr i32, i32* %r4, i32 2 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i96 -%r191 = shl i96 %r190, 64 -%r192 = or i96 %r186, %r191 -%r193 = zext i96 %r192 to i128 -%r195 = getelementptr i32, i32* %r4, i32 3 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i128 -%r198 = shl i128 %r197, 96 -%r199 = or i128 %r193, %r198 -%r200 = zext i128 %r199 to i160 -%r202 = getelementptr i32, i32* %r4, i32 4 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i160 -%r205 = shl i160 %r204, 128 -%r206 = or i160 %r200, %r205 -%r207 = zext i160 %r206 to i192 -%r209 = getelementptr i32, i32* %r4, i32 5 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i192 -%r212 = shl i192 %r211, 160 -%r213 = or i192 %r207, %r212 -%r214 = zext i192 %r213 to i224 -%r216 = getelementptr i32, i32* %r4, i32 6 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i224 -%r219 = shl i224 %r218, 192 -%r220 = or i224 %r214, %r219 -%r221 = zext i224 %r220 to i256 -%r223 = getelementptr i32, i32* %r4, i32 7 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i256 -%r226 = shl i256 %r225, 224 -%r227 = or i256 %r221, %r226 -%r228 = zext i256 %r227 to i288 -%r230 = getelementptr i32, i32* %r4, i32 8 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i288 -%r233 = shl i288 %r232, 256 -%r234 = or i288 %r228, %r233 -%r235 = zext i288 %r234 to i320 -%r237 = getelementptr i32, i32* %r4, i32 9 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i320 -%r240 = shl i320 %r239, 288 -%r241 = or i320 %r235, %r240 -%r242 = add i320 %r136, %r241 -%r243 = trunc i320 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 0 -store i32 %r243, i32* %r245 -%r246 = lshr i320 %r242, 32 -%r247 = trunc i320 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 1 -store i32 %r247, i32* %r249 -%r250 = lshr i320 %r246, 32 -%r251 = trunc i320 %r250 to i32 -%r253 = getelementptr i32, i32* %r1, i32 2 -store i32 %r251, i32* %r253 -%r254 = lshr i320 %r250, 32 -%r255 = trunc i320 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 3 -store i32 %r255, i32* %r257 -%r258 = lshr i320 %r254, 32 -%r259 = trunc i320 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 4 -store i32 %r259, i32* %r261 -%r262 = lshr i320 %r258, 32 -%r263 = trunc i320 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 5 -store i32 %r263, i32* %r265 -%r266 = lshr i320 %r262, 32 -%r267 = trunc i320 %r266 to i32 -%r269 = getelementptr i32, i32* %r1, i32 6 -store i32 %r267, i32* %r269 -%r270 = lshr i320 %r266, 32 -%r271 = trunc i320 %r270 to i32 -%r273 = getelementptr i32, i32* %r1, i32 7 -store i32 %r271, i32* %r273 -%r274 = lshr i320 %r270, 32 -%r275 = trunc i320 %r274 to i32 -%r277 = getelementptr i32, i32* %r1, i32 8 -store i32 %r275, i32* %r277 -%r278 = lshr i320 %r274, 32 -%r279 = trunc i320 %r278 to i32 -%r281 = getelementptr i32, i32* %r1, i32 9 -store i32 %r279, i32* %r281 -ret void -} -define void @mcl_fp_subNF10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = load i32, i32* %r3 -%r70 = zext i32 %r69 to i64 -%r72 = getelementptr i32, i32* %r3, i32 1 -%r73 = load i32, i32* %r72 -%r74 = zext i32 %r73 to i64 -%r75 = shl i64 %r74, 32 -%r76 = or i64 %r70, %r75 -%r77 = zext i64 %r76 to i96 -%r79 = getelementptr i32, i32* %r3, i32 2 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i96 -%r82 = shl i96 %r81, 64 -%r83 = or i96 %r77, %r82 -%r84 = zext i96 %r83 to i128 -%r86 = getelementptr i32, i32* %r3, i32 3 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i128 -%r89 = shl i128 %r88, 96 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i160 -%r93 = getelementptr i32, i32* %r3, i32 4 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i160 -%r96 = shl i160 %r95, 128 -%r97 = or i160 %r91, %r96 -%r98 = zext i160 %r97 to i192 -%r100 = getelementptr i32, i32* %r3, i32 5 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i192 -%r103 = shl i192 %r102, 160 -%r104 = or i192 %r98, %r103 -%r105 = zext i192 %r104 to i224 -%r107 = getelementptr i32, i32* %r3, i32 6 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r105, %r110 -%r112 = zext i224 %r111 to i256 -%r114 = getelementptr i32, i32* %r3, i32 7 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i256 -%r117 = shl i256 %r116, 224 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i288 -%r121 = getelementptr i32, i32* %r3, i32 8 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i288 -%r124 = shl i288 %r123, 256 -%r125 = or i288 %r119, %r124 -%r126 = zext i288 %r125 to i320 -%r128 = getelementptr i32, i32* %r3, i32 9 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i320 -%r131 = shl i320 %r130, 288 -%r132 = or i320 %r126, %r131 -%r133 = sub i320 %r68, %r132 -%r134 = lshr i320 %r133, 319 -%r135 = trunc i320 %r134 to i1 -%r136 = load i32, i32* %r4 -%r137 = zext i32 %r136 to i64 -%r139 = getelementptr i32, i32* %r4, i32 1 -%r140 = load i32, i32* %r139 -%r141 = zext i32 %r140 to i64 -%r142 = shl i64 %r141, 32 -%r143 = or i64 %r137, %r142 -%r144 = zext i64 %r143 to i96 -%r146 = getelementptr i32, i32* %r4, i32 2 -%r147 = load i32, i32* %r146 -%r148 = zext i32 %r147 to i96 -%r149 = shl i96 %r148, 64 -%r150 = or i96 %r144, %r149 -%r151 = zext i96 %r150 to i128 -%r153 = getelementptr i32, i32* %r4, i32 3 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i128 -%r156 = shl i128 %r155, 96 -%r157 = or i128 %r151, %r156 -%r158 = zext i128 %r157 to i160 -%r160 = getelementptr i32, i32* %r4, i32 4 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i160 -%r163 = shl i160 %r162, 128 -%r164 = or i160 %r158, %r163 -%r165 = zext i160 %r164 to i192 -%r167 = getelementptr i32, i32* %r4, i32 5 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i192 -%r170 = shl i192 %r169, 160 -%r171 = or i192 %r165, %r170 -%r172 = zext i192 %r171 to i224 -%r174 = getelementptr i32, i32* %r4, i32 6 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i224 -%r177 = shl i224 %r176, 192 -%r178 = or i224 %r172, %r177 -%r179 = zext i224 %r178 to i256 -%r181 = getelementptr i32, i32* %r4, i32 7 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i256 -%r184 = shl i256 %r183, 224 -%r185 = or i256 %r179, %r184 -%r186 = zext i256 %r185 to i288 -%r188 = getelementptr i32, i32* %r4, i32 8 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i288 -%r191 = shl i288 %r190, 256 -%r192 = or i288 %r186, %r191 -%r193 = zext i288 %r192 to i320 -%r195 = getelementptr i32, i32* %r4, i32 9 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i320 -%r198 = shl i320 %r197, 288 -%r199 = or i320 %r193, %r198 -%r201 = select i1 %r135, i320 %r199, i320 0 -%r202 = add i320 %r133, %r201 -%r203 = trunc i320 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 0 -store i32 %r203, i32* %r205 -%r206 = lshr i320 %r202, 32 -%r207 = trunc i320 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 1 -store i32 %r207, i32* %r209 -%r210 = lshr i320 %r206, 32 -%r211 = trunc i320 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 2 -store i32 %r211, i32* %r213 -%r214 = lshr i320 %r210, 32 -%r215 = trunc i320 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 3 -store i32 %r215, i32* %r217 -%r218 = lshr i320 %r214, 32 -%r219 = trunc i320 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 4 -store i32 %r219, i32* %r221 -%r222 = lshr i320 %r218, 32 -%r223 = trunc i320 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 5 -store i32 %r223, i32* %r225 -%r226 = lshr i320 %r222, 32 -%r227 = trunc i320 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 6 -store i32 %r227, i32* %r229 -%r230 = lshr i320 %r226, 32 -%r231 = trunc i320 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 7 -store i32 %r231, i32* %r233 -%r234 = lshr i320 %r230, 32 -%r235 = trunc i320 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 8 -store i32 %r235, i32* %r237 -%r238 = lshr i320 %r234, 32 -%r239 = trunc i320 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 9 -store i32 %r239, i32* %r241 -ret void -} -define void @mcl_fpDbl_add10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = load i32, i32* %r3 -%r140 = zext i32 %r139 to i64 -%r142 = getelementptr i32, i32* %r3, i32 1 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i64 -%r145 = shl i64 %r144, 32 -%r146 = or i64 %r140, %r145 -%r147 = zext i64 %r146 to i96 -%r149 = getelementptr i32, i32* %r3, i32 2 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i96 -%r152 = shl i96 %r151, 64 -%r153 = or i96 %r147, %r152 -%r154 = zext i96 %r153 to i128 -%r156 = getelementptr i32, i32* %r3, i32 3 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i128 -%r159 = shl i128 %r158, 96 -%r160 = or i128 %r154, %r159 -%r161 = zext i128 %r160 to i160 -%r163 = getelementptr i32, i32* %r3, i32 4 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i160 -%r166 = shl i160 %r165, 128 -%r167 = or i160 %r161, %r166 -%r168 = zext i160 %r167 to i192 -%r170 = getelementptr i32, i32* %r3, i32 5 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i192 -%r173 = shl i192 %r172, 160 -%r174 = or i192 %r168, %r173 -%r175 = zext i192 %r174 to i224 -%r177 = getelementptr i32, i32* %r3, i32 6 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i224 -%r180 = shl i224 %r179, 192 -%r181 = or i224 %r175, %r180 -%r182 = zext i224 %r181 to i256 -%r184 = getelementptr i32, i32* %r3, i32 7 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i256 -%r187 = shl i256 %r186, 224 -%r188 = or i256 %r182, %r187 -%r189 = zext i256 %r188 to i288 -%r191 = getelementptr i32, i32* %r3, i32 8 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i288 -%r194 = shl i288 %r193, 256 -%r195 = or i288 %r189, %r194 -%r196 = zext i288 %r195 to i320 -%r198 = getelementptr i32, i32* %r3, i32 9 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i320 -%r201 = shl i320 %r200, 288 -%r202 = or i320 %r196, %r201 -%r203 = zext i320 %r202 to i352 -%r205 = getelementptr i32, i32* %r3, i32 10 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i352 -%r208 = shl i352 %r207, 320 -%r209 = or i352 %r203, %r208 -%r210 = zext i352 %r209 to i384 -%r212 = getelementptr i32, i32* %r3, i32 11 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i384 -%r215 = shl i384 %r214, 352 -%r216 = or i384 %r210, %r215 -%r217 = zext i384 %r216 to i416 -%r219 = getelementptr i32, i32* %r3, i32 12 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i416 -%r222 = shl i416 %r221, 384 -%r223 = or i416 %r217, %r222 -%r224 = zext i416 %r223 to i448 -%r226 = getelementptr i32, i32* %r3, i32 13 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i448 -%r229 = shl i448 %r228, 416 -%r230 = or i448 %r224, %r229 -%r231 = zext i448 %r230 to i480 -%r233 = getelementptr i32, i32* %r3, i32 14 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i480 -%r236 = shl i480 %r235, 448 -%r237 = or i480 %r231, %r236 -%r238 = zext i480 %r237 to i512 -%r240 = getelementptr i32, i32* %r3, i32 15 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i512 -%r243 = shl i512 %r242, 480 -%r244 = or i512 %r238, %r243 -%r245 = zext i512 %r244 to i544 -%r247 = getelementptr i32, i32* %r3, i32 16 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i544 -%r250 = shl i544 %r249, 512 -%r251 = or i544 %r245, %r250 -%r252 = zext i544 %r251 to i576 -%r254 = getelementptr i32, i32* %r3, i32 17 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i576 -%r257 = shl i576 %r256, 544 -%r258 = or i576 %r252, %r257 -%r259 = zext i576 %r258 to i608 -%r261 = getelementptr i32, i32* %r3, i32 18 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i608 -%r264 = shl i608 %r263, 576 -%r265 = or i608 %r259, %r264 -%r266 = zext i608 %r265 to i640 -%r268 = getelementptr i32, i32* %r3, i32 19 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i640 -%r271 = shl i640 %r270, 608 -%r272 = or i640 %r266, %r271 -%r273 = zext i640 %r138 to i672 -%r274 = zext i640 %r272 to i672 -%r275 = add i672 %r273, %r274 -%r276 = trunc i672 %r275 to i320 -%r277 = trunc i320 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 0 -store i32 %r277, i32* %r279 -%r280 = lshr i320 %r276, 32 -%r281 = trunc i320 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 1 -store i32 %r281, i32* %r283 -%r284 = lshr i320 %r280, 32 -%r285 = trunc i320 %r284 to i32 -%r287 = getelementptr i32, i32* %r1, i32 2 -store i32 %r285, i32* %r287 -%r288 = lshr i320 %r284, 32 -%r289 = trunc i320 %r288 to i32 -%r291 = getelementptr i32, i32* %r1, i32 3 -store i32 %r289, i32* %r291 -%r292 = lshr i320 %r288, 32 -%r293 = trunc i320 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 4 -store i32 %r293, i32* %r295 -%r296 = lshr i320 %r292, 32 -%r297 = trunc i320 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 5 -store i32 %r297, i32* %r299 -%r300 = lshr i320 %r296, 32 -%r301 = trunc i320 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 6 -store i32 %r301, i32* %r303 -%r304 = lshr i320 %r300, 32 -%r305 = trunc i320 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 7 -store i32 %r305, i32* %r307 -%r308 = lshr i320 %r304, 32 -%r309 = trunc i320 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 8 -store i32 %r309, i32* %r311 -%r312 = lshr i320 %r308, 32 -%r313 = trunc i320 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 9 -store i32 %r313, i32* %r315 -%r316 = lshr i672 %r275, 320 -%r317 = trunc i672 %r316 to i352 -%r318 = load i32, i32* %r4 -%r319 = zext i32 %r318 to i64 -%r321 = getelementptr i32, i32* %r4, i32 1 -%r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i64 -%r324 = shl i64 %r323, 32 -%r325 = or i64 %r319, %r324 -%r326 = zext i64 %r325 to i96 -%r328 = getelementptr i32, i32* %r4, i32 2 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i96 -%r331 = shl i96 %r330, 64 -%r332 = or i96 %r326, %r331 -%r333 = zext i96 %r332 to i128 -%r335 = getelementptr i32, i32* %r4, i32 3 -%r336 = load i32, i32* %r335 -%r337 = zext i32 %r336 to i128 -%r338 = shl i128 %r337, 96 -%r339 = or i128 %r333, %r338 -%r340 = zext i128 %r339 to i160 -%r342 = getelementptr i32, i32* %r4, i32 4 -%r343 = load i32, i32* %r342 -%r344 = zext i32 %r343 to i160 -%r345 = shl i160 %r344, 128 -%r346 = or i160 %r340, %r345 -%r347 = zext i160 %r346 to i192 -%r349 = getelementptr i32, i32* %r4, i32 5 -%r350 = load i32, i32* %r349 -%r351 = zext i32 %r350 to i192 -%r352 = shl i192 %r351, 160 -%r353 = or i192 %r347, %r352 -%r354 = zext i192 %r353 to i224 -%r356 = getelementptr i32, i32* %r4, i32 6 -%r357 = load i32, i32* %r356 -%r358 = zext i32 %r357 to i224 -%r359 = shl i224 %r358, 192 -%r360 = or i224 %r354, %r359 -%r361 = zext i224 %r360 to i256 -%r363 = getelementptr i32, i32* %r4, i32 7 -%r364 = load i32, i32* %r363 -%r365 = zext i32 %r364 to i256 -%r366 = shl i256 %r365, 224 -%r367 = or i256 %r361, %r366 -%r368 = zext i256 %r367 to i288 -%r370 = getelementptr i32, i32* %r4, i32 8 -%r371 = load i32, i32* %r370 -%r372 = zext i32 %r371 to i288 -%r373 = shl i288 %r372, 256 -%r374 = or i288 %r368, %r373 -%r375 = zext i288 %r374 to i320 -%r377 = getelementptr i32, i32* %r4, i32 9 -%r378 = load i32, i32* %r377 -%r379 = zext i32 %r378 to i320 -%r380 = shl i320 %r379, 288 -%r381 = or i320 %r375, %r380 -%r382 = zext i320 %r381 to i352 -%r383 = sub i352 %r317, %r382 -%r384 = lshr i352 %r383, 320 -%r385 = trunc i352 %r384 to i1 -%r386 = select i1 %r385, i352 %r317, i352 %r383 -%r387 = trunc i352 %r386 to i320 -%r389 = getelementptr i32, i32* %r1, i32 10 -%r390 = trunc i320 %r387 to i32 -%r392 = getelementptr i32, i32* %r389, i32 0 -store i32 %r390, i32* %r392 -%r393 = lshr i320 %r387, 32 -%r394 = trunc i320 %r393 to i32 -%r396 = getelementptr i32, i32* %r389, i32 1 -store i32 %r394, i32* %r396 -%r397 = lshr i320 %r393, 32 -%r398 = trunc i320 %r397 to i32 -%r400 = getelementptr i32, i32* %r389, i32 2 -store i32 %r398, i32* %r400 -%r401 = lshr i320 %r397, 32 -%r402 = trunc i320 %r401 to i32 -%r404 = getelementptr i32, i32* %r389, i32 3 -store i32 %r402, i32* %r404 -%r405 = lshr i320 %r401, 32 -%r406 = trunc i320 %r405 to i32 -%r408 = getelementptr i32, i32* %r389, i32 4 -store i32 %r406, i32* %r408 -%r409 = lshr i320 %r405, 32 -%r410 = trunc i320 %r409 to i32 -%r412 = getelementptr i32, i32* %r389, i32 5 -store i32 %r410, i32* %r412 -%r413 = lshr i320 %r409, 32 -%r414 = trunc i320 %r413 to i32 -%r416 = getelementptr i32, i32* %r389, i32 6 -store i32 %r414, i32* %r416 -%r417 = lshr i320 %r413, 32 -%r418 = trunc i320 %r417 to i32 -%r420 = getelementptr i32, i32* %r389, i32 7 -store i32 %r418, i32* %r420 -%r421 = lshr i320 %r417, 32 -%r422 = trunc i320 %r421 to i32 -%r424 = getelementptr i32, i32* %r389, i32 8 -store i32 %r422, i32* %r424 -%r425 = lshr i320 %r421, 32 -%r426 = trunc i320 %r425 to i32 -%r428 = getelementptr i32, i32* %r389, i32 9 -store i32 %r426, i32* %r428 -ret void -} -define void @mcl_fpDbl_sub10L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = load i32, i32* %r3 -%r140 = zext i32 %r139 to i64 -%r142 = getelementptr i32, i32* %r3, i32 1 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i64 -%r145 = shl i64 %r144, 32 -%r146 = or i64 %r140, %r145 -%r147 = zext i64 %r146 to i96 -%r149 = getelementptr i32, i32* %r3, i32 2 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i96 -%r152 = shl i96 %r151, 64 -%r153 = or i96 %r147, %r152 -%r154 = zext i96 %r153 to i128 -%r156 = getelementptr i32, i32* %r3, i32 3 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i128 -%r159 = shl i128 %r158, 96 -%r160 = or i128 %r154, %r159 -%r161 = zext i128 %r160 to i160 -%r163 = getelementptr i32, i32* %r3, i32 4 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i160 -%r166 = shl i160 %r165, 128 -%r167 = or i160 %r161, %r166 -%r168 = zext i160 %r167 to i192 -%r170 = getelementptr i32, i32* %r3, i32 5 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i192 -%r173 = shl i192 %r172, 160 -%r174 = or i192 %r168, %r173 -%r175 = zext i192 %r174 to i224 -%r177 = getelementptr i32, i32* %r3, i32 6 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i224 -%r180 = shl i224 %r179, 192 -%r181 = or i224 %r175, %r180 -%r182 = zext i224 %r181 to i256 -%r184 = getelementptr i32, i32* %r3, i32 7 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i256 -%r187 = shl i256 %r186, 224 -%r188 = or i256 %r182, %r187 -%r189 = zext i256 %r188 to i288 -%r191 = getelementptr i32, i32* %r3, i32 8 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i288 -%r194 = shl i288 %r193, 256 -%r195 = or i288 %r189, %r194 -%r196 = zext i288 %r195 to i320 -%r198 = getelementptr i32, i32* %r3, i32 9 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i320 -%r201 = shl i320 %r200, 288 -%r202 = or i320 %r196, %r201 -%r203 = zext i320 %r202 to i352 -%r205 = getelementptr i32, i32* %r3, i32 10 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i352 -%r208 = shl i352 %r207, 320 -%r209 = or i352 %r203, %r208 -%r210 = zext i352 %r209 to i384 -%r212 = getelementptr i32, i32* %r3, i32 11 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i384 -%r215 = shl i384 %r214, 352 -%r216 = or i384 %r210, %r215 -%r217 = zext i384 %r216 to i416 -%r219 = getelementptr i32, i32* %r3, i32 12 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i416 -%r222 = shl i416 %r221, 384 -%r223 = or i416 %r217, %r222 -%r224 = zext i416 %r223 to i448 -%r226 = getelementptr i32, i32* %r3, i32 13 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i448 -%r229 = shl i448 %r228, 416 -%r230 = or i448 %r224, %r229 -%r231 = zext i448 %r230 to i480 -%r233 = getelementptr i32, i32* %r3, i32 14 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i480 -%r236 = shl i480 %r235, 448 -%r237 = or i480 %r231, %r236 -%r238 = zext i480 %r237 to i512 -%r240 = getelementptr i32, i32* %r3, i32 15 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i512 -%r243 = shl i512 %r242, 480 -%r244 = or i512 %r238, %r243 -%r245 = zext i512 %r244 to i544 -%r247 = getelementptr i32, i32* %r3, i32 16 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i544 -%r250 = shl i544 %r249, 512 -%r251 = or i544 %r245, %r250 -%r252 = zext i544 %r251 to i576 -%r254 = getelementptr i32, i32* %r3, i32 17 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i576 -%r257 = shl i576 %r256, 544 -%r258 = or i576 %r252, %r257 -%r259 = zext i576 %r258 to i608 -%r261 = getelementptr i32, i32* %r3, i32 18 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i608 -%r264 = shl i608 %r263, 576 -%r265 = or i608 %r259, %r264 -%r266 = zext i608 %r265 to i640 -%r268 = getelementptr i32, i32* %r3, i32 19 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i640 -%r271 = shl i640 %r270, 608 -%r272 = or i640 %r266, %r271 -%r273 = zext i640 %r138 to i672 -%r274 = zext i640 %r272 to i672 -%r275 = sub i672 %r273, %r274 -%r276 = trunc i672 %r275 to i320 -%r277 = trunc i320 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 0 -store i32 %r277, i32* %r279 -%r280 = lshr i320 %r276, 32 -%r281 = trunc i320 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 1 -store i32 %r281, i32* %r283 -%r284 = lshr i320 %r280, 32 -%r285 = trunc i320 %r284 to i32 -%r287 = getelementptr i32, i32* %r1, i32 2 -store i32 %r285, i32* %r287 -%r288 = lshr i320 %r284, 32 -%r289 = trunc i320 %r288 to i32 -%r291 = getelementptr i32, i32* %r1, i32 3 -store i32 %r289, i32* %r291 -%r292 = lshr i320 %r288, 32 -%r293 = trunc i320 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 4 -store i32 %r293, i32* %r295 -%r296 = lshr i320 %r292, 32 -%r297 = trunc i320 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 5 -store i32 %r297, i32* %r299 -%r300 = lshr i320 %r296, 32 -%r301 = trunc i320 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 6 -store i32 %r301, i32* %r303 -%r304 = lshr i320 %r300, 32 -%r305 = trunc i320 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 7 -store i32 %r305, i32* %r307 -%r308 = lshr i320 %r304, 32 -%r309 = trunc i320 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 8 -store i32 %r309, i32* %r311 -%r312 = lshr i320 %r308, 32 -%r313 = trunc i320 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 9 -store i32 %r313, i32* %r315 -%r316 = lshr i672 %r275, 320 -%r317 = trunc i672 %r316 to i320 -%r318 = lshr i672 %r275, 640 -%r319 = trunc i672 %r318 to i1 -%r320 = load i32, i32* %r4 -%r321 = zext i32 %r320 to i64 -%r323 = getelementptr i32, i32* %r4, i32 1 -%r324 = load i32, i32* %r323 -%r325 = zext i32 %r324 to i64 -%r326 = shl i64 %r325, 32 -%r327 = or i64 %r321, %r326 -%r328 = zext i64 %r327 to i96 -%r330 = getelementptr i32, i32* %r4, i32 2 -%r331 = load i32, i32* %r330 -%r332 = zext i32 %r331 to i96 -%r333 = shl i96 %r332, 64 -%r334 = or i96 %r328, %r333 -%r335 = zext i96 %r334 to i128 -%r337 = getelementptr i32, i32* %r4, i32 3 -%r338 = load i32, i32* %r337 -%r339 = zext i32 %r338 to i128 -%r340 = shl i128 %r339, 96 -%r341 = or i128 %r335, %r340 -%r342 = zext i128 %r341 to i160 -%r344 = getelementptr i32, i32* %r4, i32 4 -%r345 = load i32, i32* %r344 -%r346 = zext i32 %r345 to i160 -%r347 = shl i160 %r346, 128 -%r348 = or i160 %r342, %r347 -%r349 = zext i160 %r348 to i192 -%r351 = getelementptr i32, i32* %r4, i32 5 -%r352 = load i32, i32* %r351 -%r353 = zext i32 %r352 to i192 -%r354 = shl i192 %r353, 160 -%r355 = or i192 %r349, %r354 -%r356 = zext i192 %r355 to i224 -%r358 = getelementptr i32, i32* %r4, i32 6 -%r359 = load i32, i32* %r358 -%r360 = zext i32 %r359 to i224 -%r361 = shl i224 %r360, 192 -%r362 = or i224 %r356, %r361 -%r363 = zext i224 %r362 to i256 -%r365 = getelementptr i32, i32* %r4, i32 7 -%r366 = load i32, i32* %r365 -%r367 = zext i32 %r366 to i256 -%r368 = shl i256 %r367, 224 -%r369 = or i256 %r363, %r368 -%r370 = zext i256 %r369 to i288 -%r372 = getelementptr i32, i32* %r4, i32 8 -%r373 = load i32, i32* %r372 -%r374 = zext i32 %r373 to i288 -%r375 = shl i288 %r374, 256 -%r376 = or i288 %r370, %r375 -%r377 = zext i288 %r376 to i320 -%r379 = getelementptr i32, i32* %r4, i32 9 -%r380 = load i32, i32* %r379 -%r381 = zext i32 %r380 to i320 -%r382 = shl i320 %r381, 288 -%r383 = or i320 %r377, %r382 -%r385 = select i1 %r319, i320 %r383, i320 0 -%r386 = add i320 %r317, %r385 -%r388 = getelementptr i32, i32* %r1, i32 10 -%r389 = trunc i320 %r386 to i32 -%r391 = getelementptr i32, i32* %r388, i32 0 -store i32 %r389, i32* %r391 -%r392 = lshr i320 %r386, 32 -%r393 = trunc i320 %r392 to i32 -%r395 = getelementptr i32, i32* %r388, i32 1 -store i32 %r393, i32* %r395 -%r396 = lshr i320 %r392, 32 -%r397 = trunc i320 %r396 to i32 -%r399 = getelementptr i32, i32* %r388, i32 2 -store i32 %r397, i32* %r399 -%r400 = lshr i320 %r396, 32 -%r401 = trunc i320 %r400 to i32 -%r403 = getelementptr i32, i32* %r388, i32 3 -store i32 %r401, i32* %r403 -%r404 = lshr i320 %r400, 32 -%r405 = trunc i320 %r404 to i32 -%r407 = getelementptr i32, i32* %r388, i32 4 -store i32 %r405, i32* %r407 -%r408 = lshr i320 %r404, 32 -%r409 = trunc i320 %r408 to i32 -%r411 = getelementptr i32, i32* %r388, i32 5 -store i32 %r409, i32* %r411 -%r412 = lshr i320 %r408, 32 -%r413 = trunc i320 %r412 to i32 -%r415 = getelementptr i32, i32* %r388, i32 6 -store i32 %r413, i32* %r415 -%r416 = lshr i320 %r412, 32 -%r417 = trunc i320 %r416 to i32 -%r419 = getelementptr i32, i32* %r388, i32 7 -store i32 %r417, i32* %r419 -%r420 = lshr i320 %r416, 32 -%r421 = trunc i320 %r420 to i32 -%r423 = getelementptr i32, i32* %r388, i32 8 -store i32 %r421, i32* %r423 -%r424 = lshr i320 %r420, 32 -%r425 = trunc i320 %r424 to i32 -%r427 = getelementptr i32, i32* %r388, i32 9 -store i32 %r425, i32* %r427 -ret void -} -define i384 @mulPv352x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r48 = zext i32 %r6 to i64 -%r49 = zext i32 %r10 to i64 -%r50 = shl i64 %r49, 32 -%r51 = or i64 %r48, %r50 -%r52 = zext i64 %r51 to i96 -%r53 = zext i32 %r14 to i96 -%r54 = shl i96 %r53, 64 -%r55 = or i96 %r52, %r54 -%r56 = zext i96 %r55 to i128 -%r57 = zext i32 %r18 to i128 -%r58 = shl i128 %r57, 96 -%r59 = or i128 %r56, %r58 -%r60 = zext i128 %r59 to i160 -%r61 = zext i32 %r22 to i160 -%r62 = shl i160 %r61, 128 -%r63 = or i160 %r60, %r62 -%r64 = zext i160 %r63 to i192 -%r65 = zext i32 %r26 to i192 -%r66 = shl i192 %r65, 160 -%r67 = or i192 %r64, %r66 -%r68 = zext i192 %r67 to i224 -%r69 = zext i32 %r30 to i224 -%r70 = shl i224 %r69, 192 -%r71 = or i224 %r68, %r70 -%r72 = zext i224 %r71 to i256 -%r73 = zext i32 %r34 to i256 -%r74 = shl i256 %r73, 224 -%r75 = or i256 %r72, %r74 -%r76 = zext i256 %r75 to i288 -%r77 = zext i32 %r38 to i288 -%r78 = shl i288 %r77, 256 -%r79 = or i288 %r76, %r78 -%r80 = zext i288 %r79 to i320 -%r81 = zext i32 %r42 to i320 -%r82 = shl i320 %r81, 288 -%r83 = or i320 %r80, %r82 -%r84 = zext i320 %r83 to i352 -%r85 = zext i32 %r46 to i352 -%r86 = shl i352 %r85, 320 -%r87 = or i352 %r84, %r86 -%r88 = zext i32 %r7 to i64 -%r89 = zext i32 %r11 to i64 -%r90 = shl i64 %r89, 32 -%r91 = or i64 %r88, %r90 -%r92 = zext i64 %r91 to i96 -%r93 = zext i32 %r15 to i96 -%r94 = shl i96 %r93, 64 -%r95 = or i96 %r92, %r94 -%r96 = zext i96 %r95 to i128 -%r97 = zext i32 %r19 to i128 -%r98 = shl i128 %r97, 96 -%r99 = or i128 %r96, %r98 -%r100 = zext i128 %r99 to i160 -%r101 = zext i32 %r23 to i160 -%r102 = shl i160 %r101, 128 -%r103 = or i160 %r100, %r102 -%r104 = zext i160 %r103 to i192 -%r105 = zext i32 %r27 to i192 -%r106 = shl i192 %r105, 160 -%r107 = or i192 %r104, %r106 -%r108 = zext i192 %r107 to i224 -%r109 = zext i32 %r31 to i224 -%r110 = shl i224 %r109, 192 -%r111 = or i224 %r108, %r110 -%r112 = zext i224 %r111 to i256 -%r113 = zext i32 %r35 to i256 -%r114 = shl i256 %r113, 224 -%r115 = or i256 %r112, %r114 -%r116 = zext i256 %r115 to i288 -%r117 = zext i32 %r39 to i288 -%r118 = shl i288 %r117, 256 -%r119 = or i288 %r116, %r118 -%r120 = zext i288 %r119 to i320 -%r121 = zext i32 %r43 to i320 -%r122 = shl i320 %r121, 288 -%r123 = or i320 %r120, %r122 -%r124 = zext i320 %r123 to i352 -%r125 = zext i32 %r47 to i352 -%r126 = shl i352 %r125, 320 -%r127 = or i352 %r124, %r126 -%r128 = zext i352 %r87 to i384 -%r129 = zext i352 %r127 to i384 -%r130 = shl i384 %r129, 32 -%r131 = add i384 %r128, %r130 -ret i384 %r131 -} -define void @mcl_fp_mulUnitPre11L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i384 @mulPv352x32(i32* %r2, i32 %r3) -%r5 = trunc i384 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i384 %r4, 32 -%r9 = trunc i384 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i384 %r8, 32 -%r13 = trunc i384 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i384 %r12, 32 -%r17 = trunc i384 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i384 %r16, 32 -%r21 = trunc i384 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i384 %r20, 32 -%r25 = trunc i384 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i384 %r24, 32 -%r29 = trunc i384 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i384 %r28, 32 -%r33 = trunc i384 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i384 %r32, 32 -%r37 = trunc i384 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i384 %r36, 32 -%r41 = trunc i384 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i384 %r40, 32 -%r45 = trunc i384 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i384 %r44, 32 -%r49 = trunc i384 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -ret void -} -define void @mcl_fpDbl_mulPre11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i384 @mulPv352x32(i32* %r2, i32 %r4) -%r6 = trunc i384 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i384 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i384 @mulPv352x32(i32* %r2, i32 %r10) -%r12 = add i384 %r7, %r11 -%r13 = trunc i384 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i384 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i384 @mulPv352x32(i32* %r2, i32 %r19) -%r21 = add i384 %r16, %r20 -%r22 = trunc i384 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i384 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i384 @mulPv352x32(i32* %r2, i32 %r28) -%r30 = add i384 %r25, %r29 -%r31 = trunc i384 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i384 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i384 @mulPv352x32(i32* %r2, i32 %r37) -%r39 = add i384 %r34, %r38 -%r40 = trunc i384 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i384 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i384 @mulPv352x32(i32* %r2, i32 %r46) -%r48 = add i384 %r43, %r47 -%r49 = trunc i384 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 5 -store i32 %r49, i32* %r51 -%r52 = lshr i384 %r48, 32 -%r54 = getelementptr i32, i32* %r3, i32 6 -%r55 = load i32, i32* %r54 -%r56 = call i384 @mulPv352x32(i32* %r2, i32 %r55) -%r57 = add i384 %r52, %r56 -%r58 = trunc i384 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 6 -store i32 %r58, i32* %r60 -%r61 = lshr i384 %r57, 32 -%r63 = getelementptr i32, i32* %r3, i32 7 -%r64 = load i32, i32* %r63 -%r65 = call i384 @mulPv352x32(i32* %r2, i32 %r64) -%r66 = add i384 %r61, %r65 -%r67 = trunc i384 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 7 -store i32 %r67, i32* %r69 -%r70 = lshr i384 %r66, 32 -%r72 = getelementptr i32, i32* %r3, i32 8 -%r73 = load i32, i32* %r72 -%r74 = call i384 @mulPv352x32(i32* %r2, i32 %r73) -%r75 = add i384 %r70, %r74 -%r76 = trunc i384 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 8 -store i32 %r76, i32* %r78 -%r79 = lshr i384 %r75, 32 -%r81 = getelementptr i32, i32* %r3, i32 9 -%r82 = load i32, i32* %r81 -%r83 = call i384 @mulPv352x32(i32* %r2, i32 %r82) -%r84 = add i384 %r79, %r83 -%r85 = trunc i384 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 9 -store i32 %r85, i32* %r87 -%r88 = lshr i384 %r84, 32 -%r90 = getelementptr i32, i32* %r3, i32 10 -%r91 = load i32, i32* %r90 -%r92 = call i384 @mulPv352x32(i32* %r2, i32 %r91) -%r93 = add i384 %r88, %r92 -%r95 = getelementptr i32, i32* %r1, i32 10 -%r96 = trunc i384 %r93 to i32 -%r98 = getelementptr i32, i32* %r95, i32 0 -store i32 %r96, i32* %r98 -%r99 = lshr i384 %r93, 32 -%r100 = trunc i384 %r99 to i32 -%r102 = getelementptr i32, i32* %r95, i32 1 -store i32 %r100, i32* %r102 -%r103 = lshr i384 %r99, 32 -%r104 = trunc i384 %r103 to i32 -%r106 = getelementptr i32, i32* %r95, i32 2 -store i32 %r104, i32* %r106 -%r107 = lshr i384 %r103, 32 -%r108 = trunc i384 %r107 to i32 -%r110 = getelementptr i32, i32* %r95, i32 3 -store i32 %r108, i32* %r110 -%r111 = lshr i384 %r107, 32 -%r112 = trunc i384 %r111 to i32 -%r114 = getelementptr i32, i32* %r95, i32 4 -store i32 %r112, i32* %r114 -%r115 = lshr i384 %r111, 32 -%r116 = trunc i384 %r115 to i32 -%r118 = getelementptr i32, i32* %r95, i32 5 -store i32 %r116, i32* %r118 -%r119 = lshr i384 %r115, 32 -%r120 = trunc i384 %r119 to i32 -%r122 = getelementptr i32, i32* %r95, i32 6 -store i32 %r120, i32* %r122 -%r123 = lshr i384 %r119, 32 -%r124 = trunc i384 %r123 to i32 -%r126 = getelementptr i32, i32* %r95, i32 7 -store i32 %r124, i32* %r126 -%r127 = lshr i384 %r123, 32 -%r128 = trunc i384 %r127 to i32 -%r130 = getelementptr i32, i32* %r95, i32 8 -store i32 %r128, i32* %r130 -%r131 = lshr i384 %r127, 32 -%r132 = trunc i384 %r131 to i32 -%r134 = getelementptr i32, i32* %r95, i32 9 -store i32 %r132, i32* %r134 -%r135 = lshr i384 %r131, 32 -%r136 = trunc i384 %r135 to i32 -%r138 = getelementptr i32, i32* %r95, i32 10 -store i32 %r136, i32* %r138 -%r139 = lshr i384 %r135, 32 -%r140 = trunc i384 %r139 to i32 -%r142 = getelementptr i32, i32* %r95, i32 11 -store i32 %r140, i32* %r142 -ret void -} -define void @mcl_fpDbl_sqrPre11L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i384 @mulPv352x32(i32* %r2, i32 %r3) -%r5 = trunc i384 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i384 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i384 @mulPv352x32(i32* %r2, i32 %r9) -%r11 = add i384 %r6, %r10 -%r12 = trunc i384 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i384 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i384 @mulPv352x32(i32* %r2, i32 %r18) -%r20 = add i384 %r15, %r19 -%r21 = trunc i384 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i384 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i384 @mulPv352x32(i32* %r2, i32 %r27) -%r29 = add i384 %r24, %r28 -%r30 = trunc i384 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i384 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i384 @mulPv352x32(i32* %r2, i32 %r36) -%r38 = add i384 %r33, %r37 -%r39 = trunc i384 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i384 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i384 @mulPv352x32(i32* %r2, i32 %r45) -%r47 = add i384 %r42, %r46 -%r48 = trunc i384 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 5 -store i32 %r48, i32* %r50 -%r51 = lshr i384 %r47, 32 -%r53 = getelementptr i32, i32* %r2, i32 6 -%r54 = load i32, i32* %r53 -%r55 = call i384 @mulPv352x32(i32* %r2, i32 %r54) -%r56 = add i384 %r51, %r55 -%r57 = trunc i384 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 6 -store i32 %r57, i32* %r59 -%r60 = lshr i384 %r56, 32 -%r62 = getelementptr i32, i32* %r2, i32 7 -%r63 = load i32, i32* %r62 -%r64 = call i384 @mulPv352x32(i32* %r2, i32 %r63) -%r65 = add i384 %r60, %r64 -%r66 = trunc i384 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 7 -store i32 %r66, i32* %r68 -%r69 = lshr i384 %r65, 32 -%r71 = getelementptr i32, i32* %r2, i32 8 -%r72 = load i32, i32* %r71 -%r73 = call i384 @mulPv352x32(i32* %r2, i32 %r72) -%r74 = add i384 %r69, %r73 -%r75 = trunc i384 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 8 -store i32 %r75, i32* %r77 -%r78 = lshr i384 %r74, 32 -%r80 = getelementptr i32, i32* %r2, i32 9 -%r81 = load i32, i32* %r80 -%r82 = call i384 @mulPv352x32(i32* %r2, i32 %r81) -%r83 = add i384 %r78, %r82 -%r84 = trunc i384 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 9 -store i32 %r84, i32* %r86 -%r87 = lshr i384 %r83, 32 -%r89 = getelementptr i32, i32* %r2, i32 10 -%r90 = load i32, i32* %r89 -%r91 = call i384 @mulPv352x32(i32* %r2, i32 %r90) -%r92 = add i384 %r87, %r91 -%r94 = getelementptr i32, i32* %r1, i32 10 -%r95 = trunc i384 %r92 to i32 -%r97 = getelementptr i32, i32* %r94, i32 0 -store i32 %r95, i32* %r97 -%r98 = lshr i384 %r92, 32 -%r99 = trunc i384 %r98 to i32 -%r101 = getelementptr i32, i32* %r94, i32 1 -store i32 %r99, i32* %r101 -%r102 = lshr i384 %r98, 32 -%r103 = trunc i384 %r102 to i32 -%r105 = getelementptr i32, i32* %r94, i32 2 -store i32 %r103, i32* %r105 -%r106 = lshr i384 %r102, 32 -%r107 = trunc i384 %r106 to i32 -%r109 = getelementptr i32, i32* %r94, i32 3 -store i32 %r107, i32* %r109 -%r110 = lshr i384 %r106, 32 -%r111 = trunc i384 %r110 to i32 -%r113 = getelementptr i32, i32* %r94, i32 4 -store i32 %r111, i32* %r113 -%r114 = lshr i384 %r110, 32 -%r115 = trunc i384 %r114 to i32 -%r117 = getelementptr i32, i32* %r94, i32 5 -store i32 %r115, i32* %r117 -%r118 = lshr i384 %r114, 32 -%r119 = trunc i384 %r118 to i32 -%r121 = getelementptr i32, i32* %r94, i32 6 -store i32 %r119, i32* %r121 -%r122 = lshr i384 %r118, 32 -%r123 = trunc i384 %r122 to i32 -%r125 = getelementptr i32, i32* %r94, i32 7 -store i32 %r123, i32* %r125 -%r126 = lshr i384 %r122, 32 -%r127 = trunc i384 %r126 to i32 -%r129 = getelementptr i32, i32* %r94, i32 8 -store i32 %r127, i32* %r129 -%r130 = lshr i384 %r126, 32 -%r131 = trunc i384 %r130 to i32 -%r133 = getelementptr i32, i32* %r94, i32 9 -store i32 %r131, i32* %r133 -%r134 = lshr i384 %r130, 32 -%r135 = trunc i384 %r134 to i32 -%r137 = getelementptr i32, i32* %r94, i32 10 -store i32 %r135, i32* %r137 -%r138 = lshr i384 %r134, 32 -%r139 = trunc i384 %r138 to i32 -%r141 = getelementptr i32, i32* %r94, i32 11 -store i32 %r139, i32* %r141 -ret void -} -define void @mcl_fp_mont11L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i384 @mulPv352x32(i32* %r2, i32 %r10) -%r12 = zext i384 %r11 to i416 -%r13 = trunc i384 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i384 @mulPv352x32(i32* %r4, i32 %r14) -%r16 = zext i384 %r15 to i416 -%r17 = add i416 %r12, %r16 -%r18 = lshr i416 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i384 @mulPv352x32(i32* %r2, i32 %r21) -%r23 = zext i384 %r22 to i416 -%r24 = add i416 %r18, %r23 -%r25 = trunc i416 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i384 @mulPv352x32(i32* %r4, i32 %r26) -%r28 = zext i384 %r27 to i416 -%r29 = add i416 %r24, %r28 -%r30 = lshr i416 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i384 @mulPv352x32(i32* %r2, i32 %r33) -%r35 = zext i384 %r34 to i416 -%r36 = add i416 %r30, %r35 -%r37 = trunc i416 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i384 @mulPv352x32(i32* %r4, i32 %r38) -%r40 = zext i384 %r39 to i416 -%r41 = add i416 %r36, %r40 -%r42 = lshr i416 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i384 @mulPv352x32(i32* %r2, i32 %r45) -%r47 = zext i384 %r46 to i416 -%r48 = add i416 %r42, %r47 -%r49 = trunc i416 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i384 @mulPv352x32(i32* %r4, i32 %r50) -%r52 = zext i384 %r51 to i416 -%r53 = add i416 %r48, %r52 -%r54 = lshr i416 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i384 @mulPv352x32(i32* %r2, i32 %r57) -%r59 = zext i384 %r58 to i416 -%r60 = add i416 %r54, %r59 -%r61 = trunc i416 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i384 @mulPv352x32(i32* %r4, i32 %r62) -%r64 = zext i384 %r63 to i416 -%r65 = add i416 %r60, %r64 -%r66 = lshr i416 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i384 @mulPv352x32(i32* %r2, i32 %r69) -%r71 = zext i384 %r70 to i416 -%r72 = add i416 %r66, %r71 -%r73 = trunc i416 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i384 @mulPv352x32(i32* %r4, i32 %r74) -%r76 = zext i384 %r75 to i416 -%r77 = add i416 %r72, %r76 -%r78 = lshr i416 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i384 @mulPv352x32(i32* %r2, i32 %r81) -%r83 = zext i384 %r82 to i416 -%r84 = add i416 %r78, %r83 -%r85 = trunc i416 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i384 @mulPv352x32(i32* %r4, i32 %r86) -%r88 = zext i384 %r87 to i416 -%r89 = add i416 %r84, %r88 -%r90 = lshr i416 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i384 @mulPv352x32(i32* %r2, i32 %r93) -%r95 = zext i384 %r94 to i416 -%r96 = add i416 %r90, %r95 -%r97 = trunc i416 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i384 @mulPv352x32(i32* %r4, i32 %r98) -%r100 = zext i384 %r99 to i416 -%r101 = add i416 %r96, %r100 -%r102 = lshr i416 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i384 @mulPv352x32(i32* %r2, i32 %r105) -%r107 = zext i384 %r106 to i416 -%r108 = add i416 %r102, %r107 -%r109 = trunc i416 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i384 @mulPv352x32(i32* %r4, i32 %r110) -%r112 = zext i384 %r111 to i416 -%r113 = add i416 %r108, %r112 -%r114 = lshr i416 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i384 @mulPv352x32(i32* %r2, i32 %r117) -%r119 = zext i384 %r118 to i416 -%r120 = add i416 %r114, %r119 -%r121 = trunc i416 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i384 @mulPv352x32(i32* %r4, i32 %r122) -%r124 = zext i384 %r123 to i416 -%r125 = add i416 %r120, %r124 -%r126 = lshr i416 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i384 @mulPv352x32(i32* %r2, i32 %r129) -%r131 = zext i384 %r130 to i416 -%r132 = add i416 %r126, %r131 -%r133 = trunc i416 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i384 @mulPv352x32(i32* %r4, i32 %r134) -%r136 = zext i384 %r135 to i416 -%r137 = add i416 %r132, %r136 -%r138 = lshr i416 %r137, 32 -%r139 = trunc i416 %r138 to i384 -%r140 = load i32, i32* %r4 -%r141 = zext i32 %r140 to i64 -%r143 = getelementptr i32, i32* %r4, i32 1 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i64 -%r146 = shl i64 %r145, 32 -%r147 = or i64 %r141, %r146 -%r148 = zext i64 %r147 to i96 -%r150 = getelementptr i32, i32* %r4, i32 2 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i96 -%r153 = shl i96 %r152, 64 -%r154 = or i96 %r148, %r153 -%r155 = zext i96 %r154 to i128 -%r157 = getelementptr i32, i32* %r4, i32 3 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i128 -%r160 = shl i128 %r159, 96 -%r161 = or i128 %r155, %r160 -%r162 = zext i128 %r161 to i160 -%r164 = getelementptr i32, i32* %r4, i32 4 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i160 -%r167 = shl i160 %r166, 128 -%r168 = or i160 %r162, %r167 -%r169 = zext i160 %r168 to i192 -%r171 = getelementptr i32, i32* %r4, i32 5 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i192 -%r174 = shl i192 %r173, 160 -%r175 = or i192 %r169, %r174 -%r176 = zext i192 %r175 to i224 -%r178 = getelementptr i32, i32* %r4, i32 6 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i224 -%r181 = shl i224 %r180, 192 -%r182 = or i224 %r176, %r181 -%r183 = zext i224 %r182 to i256 -%r185 = getelementptr i32, i32* %r4, i32 7 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i256 -%r188 = shl i256 %r187, 224 -%r189 = or i256 %r183, %r188 -%r190 = zext i256 %r189 to i288 -%r192 = getelementptr i32, i32* %r4, i32 8 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i288 -%r195 = shl i288 %r194, 256 -%r196 = or i288 %r190, %r195 -%r197 = zext i288 %r196 to i320 -%r199 = getelementptr i32, i32* %r4, i32 9 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i320 -%r202 = shl i320 %r201, 288 -%r203 = or i320 %r197, %r202 -%r204 = zext i320 %r203 to i352 -%r206 = getelementptr i32, i32* %r4, i32 10 -%r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i352 -%r209 = shl i352 %r208, 320 -%r210 = or i352 %r204, %r209 -%r211 = zext i352 %r210 to i384 -%r212 = sub i384 %r139, %r211 -%r213 = lshr i384 %r212, 352 -%r214 = trunc i384 %r213 to i1 -%r215 = select i1 %r214, i384 %r139, i384 %r212 -%r216 = trunc i384 %r215 to i352 -%r217 = trunc i352 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 0 -store i32 %r217, i32* %r219 -%r220 = lshr i352 %r216, 32 -%r221 = trunc i352 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 1 -store i32 %r221, i32* %r223 -%r224 = lshr i352 %r220, 32 -%r225 = trunc i352 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 2 -store i32 %r225, i32* %r227 -%r228 = lshr i352 %r224, 32 -%r229 = trunc i352 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 3 -store i32 %r229, i32* %r231 -%r232 = lshr i352 %r228, 32 -%r233 = trunc i352 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 4 -store i32 %r233, i32* %r235 -%r236 = lshr i352 %r232, 32 -%r237 = trunc i352 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 5 -store i32 %r237, i32* %r239 -%r240 = lshr i352 %r236, 32 -%r241 = trunc i352 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 6 -store i32 %r241, i32* %r243 -%r244 = lshr i352 %r240, 32 -%r245 = trunc i352 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 7 -store i32 %r245, i32* %r247 -%r248 = lshr i352 %r244, 32 -%r249 = trunc i352 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 8 -store i32 %r249, i32* %r251 -%r252 = lshr i352 %r248, 32 -%r253 = trunc i352 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 9 -store i32 %r253, i32* %r255 -%r256 = lshr i352 %r252, 32 -%r257 = trunc i352 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 10 -store i32 %r257, i32* %r259 -ret void -} -define void @mcl_fp_montNF11L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i384 @mulPv352x32(i32* %r2, i32 %r8) -%r10 = trunc i384 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i384 @mulPv352x32(i32* %r4, i32 %r11) -%r13 = add i384 %r9, %r12 -%r14 = lshr i384 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i384 @mulPv352x32(i32* %r2, i32 %r17) -%r19 = add i384 %r14, %r18 -%r20 = trunc i384 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i384 @mulPv352x32(i32* %r4, i32 %r21) -%r23 = add i384 %r19, %r22 -%r24 = lshr i384 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i384 @mulPv352x32(i32* %r2, i32 %r27) -%r29 = add i384 %r24, %r28 -%r30 = trunc i384 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i384 @mulPv352x32(i32* %r4, i32 %r31) -%r33 = add i384 %r29, %r32 -%r34 = lshr i384 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i384 @mulPv352x32(i32* %r2, i32 %r37) -%r39 = add i384 %r34, %r38 -%r40 = trunc i384 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i384 @mulPv352x32(i32* %r4, i32 %r41) -%r43 = add i384 %r39, %r42 -%r44 = lshr i384 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i384 @mulPv352x32(i32* %r2, i32 %r47) -%r49 = add i384 %r44, %r48 -%r50 = trunc i384 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i384 @mulPv352x32(i32* %r4, i32 %r51) -%r53 = add i384 %r49, %r52 -%r54 = lshr i384 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i384 @mulPv352x32(i32* %r2, i32 %r57) -%r59 = add i384 %r54, %r58 -%r60 = trunc i384 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i384 @mulPv352x32(i32* %r4, i32 %r61) -%r63 = add i384 %r59, %r62 -%r64 = lshr i384 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i384 @mulPv352x32(i32* %r2, i32 %r67) -%r69 = add i384 %r64, %r68 -%r70 = trunc i384 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i384 @mulPv352x32(i32* %r4, i32 %r71) -%r73 = add i384 %r69, %r72 -%r74 = lshr i384 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i384 @mulPv352x32(i32* %r2, i32 %r77) -%r79 = add i384 %r74, %r78 -%r80 = trunc i384 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i384 @mulPv352x32(i32* %r4, i32 %r81) -%r83 = add i384 %r79, %r82 -%r84 = lshr i384 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i384 @mulPv352x32(i32* %r2, i32 %r87) -%r89 = add i384 %r84, %r88 -%r90 = trunc i384 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i384 @mulPv352x32(i32* %r4, i32 %r91) -%r93 = add i384 %r89, %r92 -%r94 = lshr i384 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i384 @mulPv352x32(i32* %r2, i32 %r97) -%r99 = add i384 %r94, %r98 -%r100 = trunc i384 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i384 @mulPv352x32(i32* %r4, i32 %r101) -%r103 = add i384 %r99, %r102 -%r104 = lshr i384 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i384 @mulPv352x32(i32* %r2, i32 %r107) -%r109 = add i384 %r104, %r108 -%r110 = trunc i384 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i384 @mulPv352x32(i32* %r4, i32 %r111) -%r113 = add i384 %r109, %r112 -%r114 = lshr i384 %r113, 32 -%r115 = trunc i384 %r114 to i352 -%r116 = load i32, i32* %r4 -%r117 = zext i32 %r116 to i64 -%r119 = getelementptr i32, i32* %r4, i32 1 -%r120 = load i32, i32* %r119 -%r121 = zext i32 %r120 to i64 -%r122 = shl i64 %r121, 32 -%r123 = or i64 %r117, %r122 -%r124 = zext i64 %r123 to i96 -%r126 = getelementptr i32, i32* %r4, i32 2 -%r127 = load i32, i32* %r126 -%r128 = zext i32 %r127 to i96 -%r129 = shl i96 %r128, 64 -%r130 = or i96 %r124, %r129 -%r131 = zext i96 %r130 to i128 -%r133 = getelementptr i32, i32* %r4, i32 3 -%r134 = load i32, i32* %r133 -%r135 = zext i32 %r134 to i128 -%r136 = shl i128 %r135, 96 -%r137 = or i128 %r131, %r136 -%r138 = zext i128 %r137 to i160 -%r140 = getelementptr i32, i32* %r4, i32 4 -%r141 = load i32, i32* %r140 -%r142 = zext i32 %r141 to i160 -%r143 = shl i160 %r142, 128 -%r144 = or i160 %r138, %r143 -%r145 = zext i160 %r144 to i192 -%r147 = getelementptr i32, i32* %r4, i32 5 -%r148 = load i32, i32* %r147 -%r149 = zext i32 %r148 to i192 -%r150 = shl i192 %r149, 160 -%r151 = or i192 %r145, %r150 -%r152 = zext i192 %r151 to i224 -%r154 = getelementptr i32, i32* %r4, i32 6 -%r155 = load i32, i32* %r154 -%r156 = zext i32 %r155 to i224 -%r157 = shl i224 %r156, 192 -%r158 = or i224 %r152, %r157 -%r159 = zext i224 %r158 to i256 -%r161 = getelementptr i32, i32* %r4, i32 7 -%r162 = load i32, i32* %r161 -%r163 = zext i32 %r162 to i256 -%r164 = shl i256 %r163, 224 -%r165 = or i256 %r159, %r164 -%r166 = zext i256 %r165 to i288 -%r168 = getelementptr i32, i32* %r4, i32 8 -%r169 = load i32, i32* %r168 -%r170 = zext i32 %r169 to i288 -%r171 = shl i288 %r170, 256 -%r172 = or i288 %r166, %r171 -%r173 = zext i288 %r172 to i320 -%r175 = getelementptr i32, i32* %r4, i32 9 -%r176 = load i32, i32* %r175 -%r177 = zext i32 %r176 to i320 -%r178 = shl i320 %r177, 288 -%r179 = or i320 %r173, %r178 -%r180 = zext i320 %r179 to i352 -%r182 = getelementptr i32, i32* %r4, i32 10 -%r183 = load i32, i32* %r182 -%r184 = zext i32 %r183 to i352 -%r185 = shl i352 %r184, 320 -%r186 = or i352 %r180, %r185 -%r187 = sub i352 %r115, %r186 -%r188 = lshr i352 %r187, 351 -%r189 = trunc i352 %r188 to i1 -%r190 = select i1 %r189, i352 %r115, i352 %r187 -%r191 = trunc i352 %r190 to i32 -%r193 = getelementptr i32, i32* %r1, i32 0 -store i32 %r191, i32* %r193 -%r194 = lshr i352 %r190, 32 -%r195 = trunc i352 %r194 to i32 -%r197 = getelementptr i32, i32* %r1, i32 1 -store i32 %r195, i32* %r197 -%r198 = lshr i352 %r194, 32 -%r199 = trunc i352 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 2 -store i32 %r199, i32* %r201 -%r202 = lshr i352 %r198, 32 -%r203 = trunc i352 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 3 -store i32 %r203, i32* %r205 -%r206 = lshr i352 %r202, 32 -%r207 = trunc i352 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 4 -store i32 %r207, i32* %r209 -%r210 = lshr i352 %r206, 32 -%r211 = trunc i352 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 5 -store i32 %r211, i32* %r213 -%r214 = lshr i352 %r210, 32 -%r215 = trunc i352 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 6 -store i32 %r215, i32* %r217 -%r218 = lshr i352 %r214, 32 -%r219 = trunc i352 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 7 -store i32 %r219, i32* %r221 -%r222 = lshr i352 %r218, 32 -%r223 = trunc i352 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 8 -store i32 %r223, i32* %r225 -%r226 = lshr i352 %r222, 32 -%r227 = trunc i352 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 9 -store i32 %r227, i32* %r229 -%r230 = lshr i352 %r226, 32 -%r231 = trunc i352 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 10 -store i32 %r231, i32* %r233 -ret void -} -define void @mcl_fp_montRed11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = load i32, i32* %r2 -%r79 = zext i32 %r78 to i64 -%r81 = getelementptr i32, i32* %r2, i32 1 -%r82 = load i32, i32* %r81 -%r83 = zext i32 %r82 to i64 -%r84 = shl i64 %r83, 32 -%r85 = or i64 %r79, %r84 -%r86 = zext i64 %r85 to i96 -%r88 = getelementptr i32, i32* %r2, i32 2 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i96 -%r91 = shl i96 %r90, 64 -%r92 = or i96 %r86, %r91 -%r93 = zext i96 %r92 to i128 -%r95 = getelementptr i32, i32* %r2, i32 3 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i128 -%r98 = shl i128 %r97, 96 -%r99 = or i128 %r93, %r98 -%r100 = zext i128 %r99 to i160 -%r102 = getelementptr i32, i32* %r2, i32 4 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i160 -%r105 = shl i160 %r104, 128 -%r106 = or i160 %r100, %r105 -%r107 = zext i160 %r106 to i192 -%r109 = getelementptr i32, i32* %r2, i32 5 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i192 -%r112 = shl i192 %r111, 160 -%r113 = or i192 %r107, %r112 -%r114 = zext i192 %r113 to i224 -%r116 = getelementptr i32, i32* %r2, i32 6 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i224 -%r119 = shl i224 %r118, 192 -%r120 = or i224 %r114, %r119 -%r121 = zext i224 %r120 to i256 -%r123 = getelementptr i32, i32* %r2, i32 7 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i256 -%r126 = shl i256 %r125, 224 -%r127 = or i256 %r121, %r126 -%r128 = zext i256 %r127 to i288 -%r130 = getelementptr i32, i32* %r2, i32 8 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i288 -%r133 = shl i288 %r132, 256 -%r134 = or i288 %r128, %r133 -%r135 = zext i288 %r134 to i320 -%r137 = getelementptr i32, i32* %r2, i32 9 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i320 -%r140 = shl i320 %r139, 288 -%r141 = or i320 %r135, %r140 -%r142 = zext i320 %r141 to i352 -%r144 = getelementptr i32, i32* %r2, i32 10 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i352 -%r147 = shl i352 %r146, 320 -%r148 = or i352 %r142, %r147 -%r149 = zext i352 %r148 to i384 -%r151 = getelementptr i32, i32* %r2, i32 11 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i384 -%r154 = shl i384 %r153, 352 -%r155 = or i384 %r149, %r154 -%r156 = zext i384 %r155 to i416 -%r158 = getelementptr i32, i32* %r2, i32 12 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i416 -%r161 = shl i416 %r160, 384 -%r162 = or i416 %r156, %r161 -%r163 = zext i416 %r162 to i448 -%r165 = getelementptr i32, i32* %r2, i32 13 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i448 -%r168 = shl i448 %r167, 416 -%r169 = or i448 %r163, %r168 -%r170 = zext i448 %r169 to i480 -%r172 = getelementptr i32, i32* %r2, i32 14 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i480 -%r175 = shl i480 %r174, 448 -%r176 = or i480 %r170, %r175 -%r177 = zext i480 %r176 to i512 -%r179 = getelementptr i32, i32* %r2, i32 15 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i512 -%r182 = shl i512 %r181, 480 -%r183 = or i512 %r177, %r182 -%r184 = zext i512 %r183 to i544 -%r186 = getelementptr i32, i32* %r2, i32 16 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i544 -%r189 = shl i544 %r188, 512 -%r190 = or i544 %r184, %r189 -%r191 = zext i544 %r190 to i576 -%r193 = getelementptr i32, i32* %r2, i32 17 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i576 -%r196 = shl i576 %r195, 544 -%r197 = or i576 %r191, %r196 -%r198 = zext i576 %r197 to i608 -%r200 = getelementptr i32, i32* %r2, i32 18 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i608 -%r203 = shl i608 %r202, 576 -%r204 = or i608 %r198, %r203 -%r205 = zext i608 %r204 to i640 -%r207 = getelementptr i32, i32* %r2, i32 19 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i640 -%r210 = shl i640 %r209, 608 -%r211 = or i640 %r205, %r210 -%r212 = zext i640 %r211 to i672 -%r214 = getelementptr i32, i32* %r2, i32 20 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i672 -%r217 = shl i672 %r216, 640 -%r218 = or i672 %r212, %r217 -%r219 = zext i672 %r218 to i704 -%r221 = getelementptr i32, i32* %r2, i32 21 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i704 -%r224 = shl i704 %r223, 672 -%r225 = or i704 %r219, %r224 -%r226 = zext i704 %r225 to i736 -%r227 = trunc i736 %r226 to i32 -%r228 = mul i32 %r227, %r6 -%r229 = call i384 @mulPv352x32(i32* %r3, i32 %r228) -%r230 = zext i384 %r229 to i736 -%r231 = add i736 %r226, %r230 -%r232 = lshr i736 %r231, 32 -%r233 = trunc i736 %r232 to i704 -%r234 = trunc i704 %r233 to i32 -%r235 = mul i32 %r234, %r6 -%r236 = call i384 @mulPv352x32(i32* %r3, i32 %r235) -%r237 = zext i384 %r236 to i704 -%r238 = add i704 %r233, %r237 -%r239 = lshr i704 %r238, 32 -%r240 = trunc i704 %r239 to i672 -%r241 = trunc i672 %r240 to i32 -%r242 = mul i32 %r241, %r6 -%r243 = call i384 @mulPv352x32(i32* %r3, i32 %r242) -%r244 = zext i384 %r243 to i672 -%r245 = add i672 %r240, %r244 -%r246 = lshr i672 %r245, 32 -%r247 = trunc i672 %r246 to i640 -%r248 = trunc i640 %r247 to i32 -%r249 = mul i32 %r248, %r6 -%r250 = call i384 @mulPv352x32(i32* %r3, i32 %r249) -%r251 = zext i384 %r250 to i640 -%r252 = add i640 %r247, %r251 -%r253 = lshr i640 %r252, 32 -%r254 = trunc i640 %r253 to i608 -%r255 = trunc i608 %r254 to i32 -%r256 = mul i32 %r255, %r6 -%r257 = call i384 @mulPv352x32(i32* %r3, i32 %r256) -%r258 = zext i384 %r257 to i608 -%r259 = add i608 %r254, %r258 -%r260 = lshr i608 %r259, 32 -%r261 = trunc i608 %r260 to i576 -%r262 = trunc i576 %r261 to i32 -%r263 = mul i32 %r262, %r6 -%r264 = call i384 @mulPv352x32(i32* %r3, i32 %r263) -%r265 = zext i384 %r264 to i576 -%r266 = add i576 %r261, %r265 -%r267 = lshr i576 %r266, 32 -%r268 = trunc i576 %r267 to i544 -%r269 = trunc i544 %r268 to i32 -%r270 = mul i32 %r269, %r6 -%r271 = call i384 @mulPv352x32(i32* %r3, i32 %r270) -%r272 = zext i384 %r271 to i544 -%r273 = add i544 %r268, %r272 -%r274 = lshr i544 %r273, 32 -%r275 = trunc i544 %r274 to i512 -%r276 = trunc i512 %r275 to i32 -%r277 = mul i32 %r276, %r6 -%r278 = call i384 @mulPv352x32(i32* %r3, i32 %r277) -%r279 = zext i384 %r278 to i512 -%r280 = add i512 %r275, %r279 -%r281 = lshr i512 %r280, 32 -%r282 = trunc i512 %r281 to i480 -%r283 = trunc i480 %r282 to i32 -%r284 = mul i32 %r283, %r6 -%r285 = call i384 @mulPv352x32(i32* %r3, i32 %r284) -%r286 = zext i384 %r285 to i480 -%r287 = add i480 %r282, %r286 -%r288 = lshr i480 %r287, 32 -%r289 = trunc i480 %r288 to i448 -%r290 = trunc i448 %r289 to i32 -%r291 = mul i32 %r290, %r6 -%r292 = call i384 @mulPv352x32(i32* %r3, i32 %r291) -%r293 = zext i384 %r292 to i448 -%r294 = add i448 %r289, %r293 -%r295 = lshr i448 %r294, 32 -%r296 = trunc i448 %r295 to i416 -%r297 = trunc i416 %r296 to i32 -%r298 = mul i32 %r297, %r6 -%r299 = call i384 @mulPv352x32(i32* %r3, i32 %r298) -%r300 = zext i384 %r299 to i416 -%r301 = add i416 %r296, %r300 -%r302 = lshr i416 %r301, 32 -%r303 = trunc i416 %r302 to i384 -%r304 = zext i352 %r77 to i384 -%r305 = sub i384 %r303, %r304 -%r306 = lshr i384 %r305, 352 -%r307 = trunc i384 %r306 to i1 -%r308 = select i1 %r307, i384 %r303, i384 %r305 -%r309 = trunc i384 %r308 to i352 -%r310 = trunc i352 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 0 -store i32 %r310, i32* %r312 -%r313 = lshr i352 %r309, 32 -%r314 = trunc i352 %r313 to i32 -%r316 = getelementptr i32, i32* %r1, i32 1 -store i32 %r314, i32* %r316 -%r317 = lshr i352 %r313, 32 -%r318 = trunc i352 %r317 to i32 -%r320 = getelementptr i32, i32* %r1, i32 2 -store i32 %r318, i32* %r320 -%r321 = lshr i352 %r317, 32 -%r322 = trunc i352 %r321 to i32 -%r324 = getelementptr i32, i32* %r1, i32 3 -store i32 %r322, i32* %r324 -%r325 = lshr i352 %r321, 32 -%r326 = trunc i352 %r325 to i32 -%r328 = getelementptr i32, i32* %r1, i32 4 -store i32 %r326, i32* %r328 -%r329 = lshr i352 %r325, 32 -%r330 = trunc i352 %r329 to i32 -%r332 = getelementptr i32, i32* %r1, i32 5 -store i32 %r330, i32* %r332 -%r333 = lshr i352 %r329, 32 -%r334 = trunc i352 %r333 to i32 -%r336 = getelementptr i32, i32* %r1, i32 6 -store i32 %r334, i32* %r336 -%r337 = lshr i352 %r333, 32 -%r338 = trunc i352 %r337 to i32 -%r340 = getelementptr i32, i32* %r1, i32 7 -store i32 %r338, i32* %r340 -%r341 = lshr i352 %r337, 32 -%r342 = trunc i352 %r341 to i32 -%r344 = getelementptr i32, i32* %r1, i32 8 -store i32 %r342, i32* %r344 -%r345 = lshr i352 %r341, 32 -%r346 = trunc i352 %r345 to i32 -%r348 = getelementptr i32, i32* %r1, i32 9 -store i32 %r346, i32* %r348 -%r349 = lshr i352 %r345, 32 -%r350 = trunc i352 %r349 to i32 -%r352 = getelementptr i32, i32* %r1, i32 10 -store i32 %r350, i32* %r352 -ret void -} -define i32 @mcl_fp_addPre11L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r77 = load i32, i32* %r4 -%r78 = zext i32 %r77 to i64 -%r80 = getelementptr i32, i32* %r4, i32 1 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i64 -%r83 = shl i64 %r82, 32 -%r84 = or i64 %r78, %r83 -%r85 = zext i64 %r84 to i96 -%r87 = getelementptr i32, i32* %r4, i32 2 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i96 -%r90 = shl i96 %r89, 64 -%r91 = or i96 %r85, %r90 -%r92 = zext i96 %r91 to i128 -%r94 = getelementptr i32, i32* %r4, i32 3 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i128 -%r97 = shl i128 %r96, 96 -%r98 = or i128 %r92, %r97 -%r99 = zext i128 %r98 to i160 -%r101 = getelementptr i32, i32* %r4, i32 4 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i160 -%r104 = shl i160 %r103, 128 -%r105 = or i160 %r99, %r104 -%r106 = zext i160 %r105 to i192 -%r108 = getelementptr i32, i32* %r4, i32 5 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i192 -%r111 = shl i192 %r110, 160 -%r112 = or i192 %r106, %r111 -%r113 = zext i192 %r112 to i224 -%r115 = getelementptr i32, i32* %r4, i32 6 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i224 -%r118 = shl i224 %r117, 192 -%r119 = or i224 %r113, %r118 -%r120 = zext i224 %r119 to i256 -%r122 = getelementptr i32, i32* %r4, i32 7 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i256 -%r125 = shl i256 %r124, 224 -%r126 = or i256 %r120, %r125 -%r127 = zext i256 %r126 to i288 -%r129 = getelementptr i32, i32* %r4, i32 8 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i288 -%r132 = shl i288 %r131, 256 -%r133 = or i288 %r127, %r132 -%r134 = zext i288 %r133 to i320 -%r136 = getelementptr i32, i32* %r4, i32 9 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i320 -%r139 = shl i320 %r138, 288 -%r140 = or i320 %r134, %r139 -%r141 = zext i320 %r140 to i352 -%r143 = getelementptr i32, i32* %r4, i32 10 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i352 -%r146 = shl i352 %r145, 320 -%r147 = or i352 %r141, %r146 -%r148 = zext i352 %r147 to i384 -%r149 = add i384 %r76, %r148 -%r150 = trunc i384 %r149 to i352 -%r151 = trunc i352 %r150 to i32 -%r153 = getelementptr i32, i32* %r2, i32 0 -store i32 %r151, i32* %r153 -%r154 = lshr i352 %r150, 32 -%r155 = trunc i352 %r154 to i32 -%r157 = getelementptr i32, i32* %r2, i32 1 -store i32 %r155, i32* %r157 -%r158 = lshr i352 %r154, 32 -%r159 = trunc i352 %r158 to i32 -%r161 = getelementptr i32, i32* %r2, i32 2 -store i32 %r159, i32* %r161 -%r162 = lshr i352 %r158, 32 -%r163 = trunc i352 %r162 to i32 -%r165 = getelementptr i32, i32* %r2, i32 3 -store i32 %r163, i32* %r165 -%r166 = lshr i352 %r162, 32 -%r167 = trunc i352 %r166 to i32 -%r169 = getelementptr i32, i32* %r2, i32 4 -store i32 %r167, i32* %r169 -%r170 = lshr i352 %r166, 32 -%r171 = trunc i352 %r170 to i32 -%r173 = getelementptr i32, i32* %r2, i32 5 -store i32 %r171, i32* %r173 -%r174 = lshr i352 %r170, 32 -%r175 = trunc i352 %r174 to i32 -%r177 = getelementptr i32, i32* %r2, i32 6 -store i32 %r175, i32* %r177 -%r178 = lshr i352 %r174, 32 -%r179 = trunc i352 %r178 to i32 -%r181 = getelementptr i32, i32* %r2, i32 7 -store i32 %r179, i32* %r181 -%r182 = lshr i352 %r178, 32 -%r183 = trunc i352 %r182 to i32 -%r185 = getelementptr i32, i32* %r2, i32 8 -store i32 %r183, i32* %r185 -%r186 = lshr i352 %r182, 32 -%r187 = trunc i352 %r186 to i32 -%r189 = getelementptr i32, i32* %r2, i32 9 -store i32 %r187, i32* %r189 -%r190 = lshr i352 %r186, 32 -%r191 = trunc i352 %r190 to i32 -%r193 = getelementptr i32, i32* %r2, i32 10 -store i32 %r191, i32* %r193 -%r194 = lshr i384 %r149, 352 -%r195 = trunc i384 %r194 to i32 -ret i32 %r195 -} -define i32 @mcl_fp_subPre11L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r77 = load i32, i32* %r4 -%r78 = zext i32 %r77 to i64 -%r80 = getelementptr i32, i32* %r4, i32 1 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i64 -%r83 = shl i64 %r82, 32 -%r84 = or i64 %r78, %r83 -%r85 = zext i64 %r84 to i96 -%r87 = getelementptr i32, i32* %r4, i32 2 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i96 -%r90 = shl i96 %r89, 64 -%r91 = or i96 %r85, %r90 -%r92 = zext i96 %r91 to i128 -%r94 = getelementptr i32, i32* %r4, i32 3 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i128 -%r97 = shl i128 %r96, 96 -%r98 = or i128 %r92, %r97 -%r99 = zext i128 %r98 to i160 -%r101 = getelementptr i32, i32* %r4, i32 4 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i160 -%r104 = shl i160 %r103, 128 -%r105 = or i160 %r99, %r104 -%r106 = zext i160 %r105 to i192 -%r108 = getelementptr i32, i32* %r4, i32 5 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i192 -%r111 = shl i192 %r110, 160 -%r112 = or i192 %r106, %r111 -%r113 = zext i192 %r112 to i224 -%r115 = getelementptr i32, i32* %r4, i32 6 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i224 -%r118 = shl i224 %r117, 192 -%r119 = or i224 %r113, %r118 -%r120 = zext i224 %r119 to i256 -%r122 = getelementptr i32, i32* %r4, i32 7 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i256 -%r125 = shl i256 %r124, 224 -%r126 = or i256 %r120, %r125 -%r127 = zext i256 %r126 to i288 -%r129 = getelementptr i32, i32* %r4, i32 8 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i288 -%r132 = shl i288 %r131, 256 -%r133 = or i288 %r127, %r132 -%r134 = zext i288 %r133 to i320 -%r136 = getelementptr i32, i32* %r4, i32 9 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i320 -%r139 = shl i320 %r138, 288 -%r140 = or i320 %r134, %r139 -%r141 = zext i320 %r140 to i352 -%r143 = getelementptr i32, i32* %r4, i32 10 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i352 -%r146 = shl i352 %r145, 320 -%r147 = or i352 %r141, %r146 -%r148 = zext i352 %r147 to i384 -%r149 = sub i384 %r76, %r148 -%r150 = trunc i384 %r149 to i352 -%r151 = trunc i352 %r150 to i32 -%r153 = getelementptr i32, i32* %r2, i32 0 -store i32 %r151, i32* %r153 -%r154 = lshr i352 %r150, 32 -%r155 = trunc i352 %r154 to i32 -%r157 = getelementptr i32, i32* %r2, i32 1 -store i32 %r155, i32* %r157 -%r158 = lshr i352 %r154, 32 -%r159 = trunc i352 %r158 to i32 -%r161 = getelementptr i32, i32* %r2, i32 2 -store i32 %r159, i32* %r161 -%r162 = lshr i352 %r158, 32 -%r163 = trunc i352 %r162 to i32 -%r165 = getelementptr i32, i32* %r2, i32 3 -store i32 %r163, i32* %r165 -%r166 = lshr i352 %r162, 32 -%r167 = trunc i352 %r166 to i32 -%r169 = getelementptr i32, i32* %r2, i32 4 -store i32 %r167, i32* %r169 -%r170 = lshr i352 %r166, 32 -%r171 = trunc i352 %r170 to i32 -%r173 = getelementptr i32, i32* %r2, i32 5 -store i32 %r171, i32* %r173 -%r174 = lshr i352 %r170, 32 -%r175 = trunc i352 %r174 to i32 -%r177 = getelementptr i32, i32* %r2, i32 6 -store i32 %r175, i32* %r177 -%r178 = lshr i352 %r174, 32 -%r179 = trunc i352 %r178 to i32 -%r181 = getelementptr i32, i32* %r2, i32 7 -store i32 %r179, i32* %r181 -%r182 = lshr i352 %r178, 32 -%r183 = trunc i352 %r182 to i32 -%r185 = getelementptr i32, i32* %r2, i32 8 -store i32 %r183, i32* %r185 -%r186 = lshr i352 %r182, 32 -%r187 = trunc i352 %r186 to i32 -%r189 = getelementptr i32, i32* %r2, i32 9 -store i32 %r187, i32* %r189 -%r190 = lshr i352 %r186, 32 -%r191 = trunc i352 %r190 to i32 -%r193 = getelementptr i32, i32* %r2, i32 10 -store i32 %r191, i32* %r193 -%r194 = lshr i384 %r149, 352 -%r195 = trunc i384 %r194 to i32 -%r197 = and i32 %r195, 1 -ret i32 %r197 -} -define void @mcl_fp_shr1_11L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = lshr i352 %r73, 1 -%r75 = trunc i352 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 0 -store i32 %r75, i32* %r77 -%r78 = lshr i352 %r74, 32 -%r79 = trunc i352 %r78 to i32 -%r81 = getelementptr i32, i32* %r1, i32 1 -store i32 %r79, i32* %r81 -%r82 = lshr i352 %r78, 32 -%r83 = trunc i352 %r82 to i32 -%r85 = getelementptr i32, i32* %r1, i32 2 -store i32 %r83, i32* %r85 -%r86 = lshr i352 %r82, 32 -%r87 = trunc i352 %r86 to i32 -%r89 = getelementptr i32, i32* %r1, i32 3 -store i32 %r87, i32* %r89 -%r90 = lshr i352 %r86, 32 -%r91 = trunc i352 %r90 to i32 -%r93 = getelementptr i32, i32* %r1, i32 4 -store i32 %r91, i32* %r93 -%r94 = lshr i352 %r90, 32 -%r95 = trunc i352 %r94 to i32 -%r97 = getelementptr i32, i32* %r1, i32 5 -store i32 %r95, i32* %r97 -%r98 = lshr i352 %r94, 32 -%r99 = trunc i352 %r98 to i32 -%r101 = getelementptr i32, i32* %r1, i32 6 -store i32 %r99, i32* %r101 -%r102 = lshr i352 %r98, 32 -%r103 = trunc i352 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 7 -store i32 %r103, i32* %r105 -%r106 = lshr i352 %r102, 32 -%r107 = trunc i352 %r106 to i32 -%r109 = getelementptr i32, i32* %r1, i32 8 -store i32 %r107, i32* %r109 -%r110 = lshr i352 %r106, 32 -%r111 = trunc i352 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 9 -store i32 %r111, i32* %r113 -%r114 = lshr i352 %r110, 32 -%r115 = trunc i352 %r114 to i32 -%r117 = getelementptr i32, i32* %r1, i32 10 -store i32 %r115, i32* %r117 -ret void -} -define void @mcl_fp_add11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = load i32, i32* %r3 -%r77 = zext i32 %r76 to i64 -%r79 = getelementptr i32, i32* %r3, i32 1 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r77, %r82 -%r84 = zext i64 %r83 to i96 -%r86 = getelementptr i32, i32* %r3, i32 2 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i96 -%r89 = shl i96 %r88, 64 -%r90 = or i96 %r84, %r89 -%r91 = zext i96 %r90 to i128 -%r93 = getelementptr i32, i32* %r3, i32 3 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i128 -%r96 = shl i128 %r95, 96 -%r97 = or i128 %r91, %r96 -%r98 = zext i128 %r97 to i160 -%r100 = getelementptr i32, i32* %r3, i32 4 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i160 -%r103 = shl i160 %r102, 128 -%r104 = or i160 %r98, %r103 -%r105 = zext i160 %r104 to i192 -%r107 = getelementptr i32, i32* %r3, i32 5 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i192 -%r110 = shl i192 %r109, 160 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i224 -%r114 = getelementptr i32, i32* %r3, i32 6 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i224 -%r117 = shl i224 %r116, 192 -%r118 = or i224 %r112, %r117 -%r119 = zext i224 %r118 to i256 -%r121 = getelementptr i32, i32* %r3, i32 7 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i256 -%r124 = shl i256 %r123, 224 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i288 -%r128 = getelementptr i32, i32* %r3, i32 8 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i288 -%r131 = shl i288 %r130, 256 -%r132 = or i288 %r126, %r131 -%r133 = zext i288 %r132 to i320 -%r135 = getelementptr i32, i32* %r3, i32 9 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i320 -%r138 = shl i320 %r137, 288 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i352 -%r142 = getelementptr i32, i32* %r3, i32 10 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i352 -%r145 = shl i352 %r144, 320 -%r146 = or i352 %r140, %r145 -%r147 = zext i352 %r75 to i384 -%r148 = zext i352 %r146 to i384 -%r149 = add i384 %r147, %r148 -%r150 = trunc i384 %r149 to i352 -%r151 = trunc i352 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 0 -store i32 %r151, i32* %r153 -%r154 = lshr i352 %r150, 32 -%r155 = trunc i352 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 1 -store i32 %r155, i32* %r157 -%r158 = lshr i352 %r154, 32 -%r159 = trunc i352 %r158 to i32 -%r161 = getelementptr i32, i32* %r1, i32 2 -store i32 %r159, i32* %r161 -%r162 = lshr i352 %r158, 32 -%r163 = trunc i352 %r162 to i32 -%r165 = getelementptr i32, i32* %r1, i32 3 -store i32 %r163, i32* %r165 -%r166 = lshr i352 %r162, 32 -%r167 = trunc i352 %r166 to i32 -%r169 = getelementptr i32, i32* %r1, i32 4 -store i32 %r167, i32* %r169 -%r170 = lshr i352 %r166, 32 -%r171 = trunc i352 %r170 to i32 -%r173 = getelementptr i32, i32* %r1, i32 5 -store i32 %r171, i32* %r173 -%r174 = lshr i352 %r170, 32 -%r175 = trunc i352 %r174 to i32 -%r177 = getelementptr i32, i32* %r1, i32 6 -store i32 %r175, i32* %r177 -%r178 = lshr i352 %r174, 32 -%r179 = trunc i352 %r178 to i32 -%r181 = getelementptr i32, i32* %r1, i32 7 -store i32 %r179, i32* %r181 -%r182 = lshr i352 %r178, 32 -%r183 = trunc i352 %r182 to i32 -%r185 = getelementptr i32, i32* %r1, i32 8 -store i32 %r183, i32* %r185 -%r186 = lshr i352 %r182, 32 -%r187 = trunc i352 %r186 to i32 -%r189 = getelementptr i32, i32* %r1, i32 9 -store i32 %r187, i32* %r189 -%r190 = lshr i352 %r186, 32 -%r191 = trunc i352 %r190 to i32 -%r193 = getelementptr i32, i32* %r1, i32 10 -store i32 %r191, i32* %r193 -%r194 = load i32, i32* %r4 -%r195 = zext i32 %r194 to i64 -%r197 = getelementptr i32, i32* %r4, i32 1 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i64 -%r200 = shl i64 %r199, 32 -%r201 = or i64 %r195, %r200 -%r202 = zext i64 %r201 to i96 -%r204 = getelementptr i32, i32* %r4, i32 2 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i96 -%r207 = shl i96 %r206, 64 -%r208 = or i96 %r202, %r207 -%r209 = zext i96 %r208 to i128 -%r211 = getelementptr i32, i32* %r4, i32 3 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i128 -%r214 = shl i128 %r213, 96 -%r215 = or i128 %r209, %r214 -%r216 = zext i128 %r215 to i160 -%r218 = getelementptr i32, i32* %r4, i32 4 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i160 -%r221 = shl i160 %r220, 128 -%r222 = or i160 %r216, %r221 -%r223 = zext i160 %r222 to i192 -%r225 = getelementptr i32, i32* %r4, i32 5 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i192 -%r228 = shl i192 %r227, 160 -%r229 = or i192 %r223, %r228 -%r230 = zext i192 %r229 to i224 -%r232 = getelementptr i32, i32* %r4, i32 6 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i224 -%r235 = shl i224 %r234, 192 -%r236 = or i224 %r230, %r235 -%r237 = zext i224 %r236 to i256 -%r239 = getelementptr i32, i32* %r4, i32 7 -%r240 = load i32, i32* %r239 -%r241 = zext i32 %r240 to i256 -%r242 = shl i256 %r241, 224 -%r243 = or i256 %r237, %r242 -%r244 = zext i256 %r243 to i288 -%r246 = getelementptr i32, i32* %r4, i32 8 -%r247 = load i32, i32* %r246 -%r248 = zext i32 %r247 to i288 -%r249 = shl i288 %r248, 256 -%r250 = or i288 %r244, %r249 -%r251 = zext i288 %r250 to i320 -%r253 = getelementptr i32, i32* %r4, i32 9 -%r254 = load i32, i32* %r253 -%r255 = zext i32 %r254 to i320 -%r256 = shl i320 %r255, 288 -%r257 = or i320 %r251, %r256 -%r258 = zext i320 %r257 to i352 -%r260 = getelementptr i32, i32* %r4, i32 10 -%r261 = load i32, i32* %r260 -%r262 = zext i32 %r261 to i352 -%r263 = shl i352 %r262, 320 -%r264 = or i352 %r258, %r263 -%r265 = zext i352 %r264 to i384 -%r266 = sub i384 %r149, %r265 -%r267 = lshr i384 %r266, 352 -%r268 = trunc i384 %r267 to i1 -br i1%r268, label %carry, label %nocarry -nocarry: -%r269 = trunc i384 %r266 to i352 -%r270 = trunc i352 %r269 to i32 -%r272 = getelementptr i32, i32* %r1, i32 0 -store i32 %r270, i32* %r272 -%r273 = lshr i352 %r269, 32 -%r274 = trunc i352 %r273 to i32 -%r276 = getelementptr i32, i32* %r1, i32 1 -store i32 %r274, i32* %r276 -%r277 = lshr i352 %r273, 32 -%r278 = trunc i352 %r277 to i32 -%r280 = getelementptr i32, i32* %r1, i32 2 -store i32 %r278, i32* %r280 -%r281 = lshr i352 %r277, 32 -%r282 = trunc i352 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 3 -store i32 %r282, i32* %r284 -%r285 = lshr i352 %r281, 32 -%r286 = trunc i352 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 4 -store i32 %r286, i32* %r288 -%r289 = lshr i352 %r285, 32 -%r290 = trunc i352 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 5 -store i32 %r290, i32* %r292 -%r293 = lshr i352 %r289, 32 -%r294 = trunc i352 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 6 -store i32 %r294, i32* %r296 -%r297 = lshr i352 %r293, 32 -%r298 = trunc i352 %r297 to i32 -%r300 = getelementptr i32, i32* %r1, i32 7 -store i32 %r298, i32* %r300 -%r301 = lshr i352 %r297, 32 -%r302 = trunc i352 %r301 to i32 -%r304 = getelementptr i32, i32* %r1, i32 8 -store i32 %r302, i32* %r304 -%r305 = lshr i352 %r301, 32 -%r306 = trunc i352 %r305 to i32 -%r308 = getelementptr i32, i32* %r1, i32 9 -store i32 %r306, i32* %r308 -%r309 = lshr i352 %r305, 32 -%r310 = trunc i352 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 10 -store i32 %r310, i32* %r312 -ret void -carry: -ret void -} -define void @mcl_fp_addNF11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = load i32, i32* %r3 -%r77 = zext i32 %r76 to i64 -%r79 = getelementptr i32, i32* %r3, i32 1 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r77, %r82 -%r84 = zext i64 %r83 to i96 -%r86 = getelementptr i32, i32* %r3, i32 2 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i96 -%r89 = shl i96 %r88, 64 -%r90 = or i96 %r84, %r89 -%r91 = zext i96 %r90 to i128 -%r93 = getelementptr i32, i32* %r3, i32 3 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i128 -%r96 = shl i128 %r95, 96 -%r97 = or i128 %r91, %r96 -%r98 = zext i128 %r97 to i160 -%r100 = getelementptr i32, i32* %r3, i32 4 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i160 -%r103 = shl i160 %r102, 128 -%r104 = or i160 %r98, %r103 -%r105 = zext i160 %r104 to i192 -%r107 = getelementptr i32, i32* %r3, i32 5 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i192 -%r110 = shl i192 %r109, 160 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i224 -%r114 = getelementptr i32, i32* %r3, i32 6 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i224 -%r117 = shl i224 %r116, 192 -%r118 = or i224 %r112, %r117 -%r119 = zext i224 %r118 to i256 -%r121 = getelementptr i32, i32* %r3, i32 7 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i256 -%r124 = shl i256 %r123, 224 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i288 -%r128 = getelementptr i32, i32* %r3, i32 8 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i288 -%r131 = shl i288 %r130, 256 -%r132 = or i288 %r126, %r131 -%r133 = zext i288 %r132 to i320 -%r135 = getelementptr i32, i32* %r3, i32 9 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i320 -%r138 = shl i320 %r137, 288 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i352 -%r142 = getelementptr i32, i32* %r3, i32 10 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i352 -%r145 = shl i352 %r144, 320 -%r146 = or i352 %r140, %r145 -%r147 = add i352 %r75, %r146 -%r148 = load i32, i32* %r4 -%r149 = zext i32 %r148 to i64 -%r151 = getelementptr i32, i32* %r4, i32 1 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i64 -%r154 = shl i64 %r153, 32 -%r155 = or i64 %r149, %r154 -%r156 = zext i64 %r155 to i96 -%r158 = getelementptr i32, i32* %r4, i32 2 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i96 -%r161 = shl i96 %r160, 64 -%r162 = or i96 %r156, %r161 -%r163 = zext i96 %r162 to i128 -%r165 = getelementptr i32, i32* %r4, i32 3 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i128 -%r168 = shl i128 %r167, 96 -%r169 = or i128 %r163, %r168 -%r170 = zext i128 %r169 to i160 -%r172 = getelementptr i32, i32* %r4, i32 4 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i160 -%r175 = shl i160 %r174, 128 -%r176 = or i160 %r170, %r175 -%r177 = zext i160 %r176 to i192 -%r179 = getelementptr i32, i32* %r4, i32 5 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i192 -%r182 = shl i192 %r181, 160 -%r183 = or i192 %r177, %r182 -%r184 = zext i192 %r183 to i224 -%r186 = getelementptr i32, i32* %r4, i32 6 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i224 -%r189 = shl i224 %r188, 192 -%r190 = or i224 %r184, %r189 -%r191 = zext i224 %r190 to i256 -%r193 = getelementptr i32, i32* %r4, i32 7 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i256 -%r196 = shl i256 %r195, 224 -%r197 = or i256 %r191, %r196 -%r198 = zext i256 %r197 to i288 -%r200 = getelementptr i32, i32* %r4, i32 8 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i288 -%r203 = shl i288 %r202, 256 -%r204 = or i288 %r198, %r203 -%r205 = zext i288 %r204 to i320 -%r207 = getelementptr i32, i32* %r4, i32 9 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i320 -%r210 = shl i320 %r209, 288 -%r211 = or i320 %r205, %r210 -%r212 = zext i320 %r211 to i352 -%r214 = getelementptr i32, i32* %r4, i32 10 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i352 -%r217 = shl i352 %r216, 320 -%r218 = or i352 %r212, %r217 -%r219 = sub i352 %r147, %r218 -%r220 = lshr i352 %r219, 351 -%r221 = trunc i352 %r220 to i1 -%r222 = select i1 %r221, i352 %r147, i352 %r219 -%r223 = trunc i352 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 0 -store i32 %r223, i32* %r225 -%r226 = lshr i352 %r222, 32 -%r227 = trunc i352 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 1 -store i32 %r227, i32* %r229 -%r230 = lshr i352 %r226, 32 -%r231 = trunc i352 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 2 -store i32 %r231, i32* %r233 -%r234 = lshr i352 %r230, 32 -%r235 = trunc i352 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 3 -store i32 %r235, i32* %r237 -%r238 = lshr i352 %r234, 32 -%r239 = trunc i352 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 4 -store i32 %r239, i32* %r241 -%r242 = lshr i352 %r238, 32 -%r243 = trunc i352 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 5 -store i32 %r243, i32* %r245 -%r246 = lshr i352 %r242, 32 -%r247 = trunc i352 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 6 -store i32 %r247, i32* %r249 -%r250 = lshr i352 %r246, 32 -%r251 = trunc i352 %r250 to i32 -%r253 = getelementptr i32, i32* %r1, i32 7 -store i32 %r251, i32* %r253 -%r254 = lshr i352 %r250, 32 -%r255 = trunc i352 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 8 -store i32 %r255, i32* %r257 -%r258 = lshr i352 %r254, 32 -%r259 = trunc i352 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 9 -store i32 %r259, i32* %r261 -%r262 = lshr i352 %r258, 32 -%r263 = trunc i352 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 10 -store i32 %r263, i32* %r265 -ret void -} -define void @mcl_fp_sub11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = load i32, i32* %r3 -%r77 = zext i32 %r76 to i64 -%r79 = getelementptr i32, i32* %r3, i32 1 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r77, %r82 -%r84 = zext i64 %r83 to i96 -%r86 = getelementptr i32, i32* %r3, i32 2 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i96 -%r89 = shl i96 %r88, 64 -%r90 = or i96 %r84, %r89 -%r91 = zext i96 %r90 to i128 -%r93 = getelementptr i32, i32* %r3, i32 3 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i128 -%r96 = shl i128 %r95, 96 -%r97 = or i128 %r91, %r96 -%r98 = zext i128 %r97 to i160 -%r100 = getelementptr i32, i32* %r3, i32 4 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i160 -%r103 = shl i160 %r102, 128 -%r104 = or i160 %r98, %r103 -%r105 = zext i160 %r104 to i192 -%r107 = getelementptr i32, i32* %r3, i32 5 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i192 -%r110 = shl i192 %r109, 160 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i224 -%r114 = getelementptr i32, i32* %r3, i32 6 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i224 -%r117 = shl i224 %r116, 192 -%r118 = or i224 %r112, %r117 -%r119 = zext i224 %r118 to i256 -%r121 = getelementptr i32, i32* %r3, i32 7 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i256 -%r124 = shl i256 %r123, 224 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i288 -%r128 = getelementptr i32, i32* %r3, i32 8 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i288 -%r131 = shl i288 %r130, 256 -%r132 = or i288 %r126, %r131 -%r133 = zext i288 %r132 to i320 -%r135 = getelementptr i32, i32* %r3, i32 9 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i320 -%r138 = shl i320 %r137, 288 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i352 -%r142 = getelementptr i32, i32* %r3, i32 10 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i352 -%r145 = shl i352 %r144, 320 -%r146 = or i352 %r140, %r145 -%r147 = zext i352 %r75 to i384 -%r148 = zext i352 %r146 to i384 -%r149 = sub i384 %r147, %r148 -%r150 = trunc i384 %r149 to i352 -%r151 = lshr i384 %r149, 352 -%r152 = trunc i384 %r151 to i1 -%r153 = trunc i352 %r150 to i32 -%r155 = getelementptr i32, i32* %r1, i32 0 -store i32 %r153, i32* %r155 -%r156 = lshr i352 %r150, 32 -%r157 = trunc i352 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 1 -store i32 %r157, i32* %r159 -%r160 = lshr i352 %r156, 32 -%r161 = trunc i352 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 2 -store i32 %r161, i32* %r163 -%r164 = lshr i352 %r160, 32 -%r165 = trunc i352 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 3 -store i32 %r165, i32* %r167 -%r168 = lshr i352 %r164, 32 -%r169 = trunc i352 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 4 -store i32 %r169, i32* %r171 -%r172 = lshr i352 %r168, 32 -%r173 = trunc i352 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 5 -store i32 %r173, i32* %r175 -%r176 = lshr i352 %r172, 32 -%r177 = trunc i352 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 6 -store i32 %r177, i32* %r179 -%r180 = lshr i352 %r176, 32 -%r181 = trunc i352 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 7 -store i32 %r181, i32* %r183 -%r184 = lshr i352 %r180, 32 -%r185 = trunc i352 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 8 -store i32 %r185, i32* %r187 -%r188 = lshr i352 %r184, 32 -%r189 = trunc i352 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 9 -store i32 %r189, i32* %r191 -%r192 = lshr i352 %r188, 32 -%r193 = trunc i352 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 10 -store i32 %r193, i32* %r195 -br i1%r152, label %carry, label %nocarry -nocarry: -ret void -carry: -%r196 = load i32, i32* %r4 -%r197 = zext i32 %r196 to i64 -%r199 = getelementptr i32, i32* %r4, i32 1 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i64 -%r202 = shl i64 %r201, 32 -%r203 = or i64 %r197, %r202 -%r204 = zext i64 %r203 to i96 -%r206 = getelementptr i32, i32* %r4, i32 2 -%r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i96 -%r209 = shl i96 %r208, 64 -%r210 = or i96 %r204, %r209 -%r211 = zext i96 %r210 to i128 -%r213 = getelementptr i32, i32* %r4, i32 3 -%r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i128 -%r216 = shl i128 %r215, 96 -%r217 = or i128 %r211, %r216 -%r218 = zext i128 %r217 to i160 -%r220 = getelementptr i32, i32* %r4, i32 4 -%r221 = load i32, i32* %r220 -%r222 = zext i32 %r221 to i160 -%r223 = shl i160 %r222, 128 -%r224 = or i160 %r218, %r223 -%r225 = zext i160 %r224 to i192 -%r227 = getelementptr i32, i32* %r4, i32 5 -%r228 = load i32, i32* %r227 -%r229 = zext i32 %r228 to i192 -%r230 = shl i192 %r229, 160 -%r231 = or i192 %r225, %r230 -%r232 = zext i192 %r231 to i224 -%r234 = getelementptr i32, i32* %r4, i32 6 -%r235 = load i32, i32* %r234 -%r236 = zext i32 %r235 to i224 -%r237 = shl i224 %r236, 192 -%r238 = or i224 %r232, %r237 -%r239 = zext i224 %r238 to i256 -%r241 = getelementptr i32, i32* %r4, i32 7 -%r242 = load i32, i32* %r241 -%r243 = zext i32 %r242 to i256 -%r244 = shl i256 %r243, 224 -%r245 = or i256 %r239, %r244 -%r246 = zext i256 %r245 to i288 -%r248 = getelementptr i32, i32* %r4, i32 8 -%r249 = load i32, i32* %r248 -%r250 = zext i32 %r249 to i288 -%r251 = shl i288 %r250, 256 -%r252 = or i288 %r246, %r251 -%r253 = zext i288 %r252 to i320 -%r255 = getelementptr i32, i32* %r4, i32 9 -%r256 = load i32, i32* %r255 -%r257 = zext i32 %r256 to i320 -%r258 = shl i320 %r257, 288 -%r259 = or i320 %r253, %r258 -%r260 = zext i320 %r259 to i352 -%r262 = getelementptr i32, i32* %r4, i32 10 -%r263 = load i32, i32* %r262 -%r264 = zext i32 %r263 to i352 -%r265 = shl i352 %r264, 320 -%r266 = or i352 %r260, %r265 -%r267 = add i352 %r150, %r266 -%r268 = trunc i352 %r267 to i32 -%r270 = getelementptr i32, i32* %r1, i32 0 -store i32 %r268, i32* %r270 -%r271 = lshr i352 %r267, 32 -%r272 = trunc i352 %r271 to i32 -%r274 = getelementptr i32, i32* %r1, i32 1 -store i32 %r272, i32* %r274 -%r275 = lshr i352 %r271, 32 -%r276 = trunc i352 %r275 to i32 -%r278 = getelementptr i32, i32* %r1, i32 2 -store i32 %r276, i32* %r278 -%r279 = lshr i352 %r275, 32 -%r280 = trunc i352 %r279 to i32 -%r282 = getelementptr i32, i32* %r1, i32 3 -store i32 %r280, i32* %r282 -%r283 = lshr i352 %r279, 32 -%r284 = trunc i352 %r283 to i32 -%r286 = getelementptr i32, i32* %r1, i32 4 -store i32 %r284, i32* %r286 -%r287 = lshr i352 %r283, 32 -%r288 = trunc i352 %r287 to i32 -%r290 = getelementptr i32, i32* %r1, i32 5 -store i32 %r288, i32* %r290 -%r291 = lshr i352 %r287, 32 -%r292 = trunc i352 %r291 to i32 -%r294 = getelementptr i32, i32* %r1, i32 6 -store i32 %r292, i32* %r294 -%r295 = lshr i352 %r291, 32 -%r296 = trunc i352 %r295 to i32 -%r298 = getelementptr i32, i32* %r1, i32 7 -store i32 %r296, i32* %r298 -%r299 = lshr i352 %r295, 32 -%r300 = trunc i352 %r299 to i32 -%r302 = getelementptr i32, i32* %r1, i32 8 -store i32 %r300, i32* %r302 -%r303 = lshr i352 %r299, 32 -%r304 = trunc i352 %r303 to i32 -%r306 = getelementptr i32, i32* %r1, i32 9 -store i32 %r304, i32* %r306 -%r307 = lshr i352 %r303, 32 -%r308 = trunc i352 %r307 to i32 -%r310 = getelementptr i32, i32* %r1, i32 10 -store i32 %r308, i32* %r310 -ret void -} -define void @mcl_fp_subNF11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = load i32, i32* %r3 -%r77 = zext i32 %r76 to i64 -%r79 = getelementptr i32, i32* %r3, i32 1 -%r80 = load i32, i32* %r79 -%r81 = zext i32 %r80 to i64 -%r82 = shl i64 %r81, 32 -%r83 = or i64 %r77, %r82 -%r84 = zext i64 %r83 to i96 -%r86 = getelementptr i32, i32* %r3, i32 2 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i96 -%r89 = shl i96 %r88, 64 -%r90 = or i96 %r84, %r89 -%r91 = zext i96 %r90 to i128 -%r93 = getelementptr i32, i32* %r3, i32 3 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i128 -%r96 = shl i128 %r95, 96 -%r97 = or i128 %r91, %r96 -%r98 = zext i128 %r97 to i160 -%r100 = getelementptr i32, i32* %r3, i32 4 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i160 -%r103 = shl i160 %r102, 128 -%r104 = or i160 %r98, %r103 -%r105 = zext i160 %r104 to i192 -%r107 = getelementptr i32, i32* %r3, i32 5 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i192 -%r110 = shl i192 %r109, 160 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i224 -%r114 = getelementptr i32, i32* %r3, i32 6 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i224 -%r117 = shl i224 %r116, 192 -%r118 = or i224 %r112, %r117 -%r119 = zext i224 %r118 to i256 -%r121 = getelementptr i32, i32* %r3, i32 7 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i256 -%r124 = shl i256 %r123, 224 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i288 -%r128 = getelementptr i32, i32* %r3, i32 8 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i288 -%r131 = shl i288 %r130, 256 -%r132 = or i288 %r126, %r131 -%r133 = zext i288 %r132 to i320 -%r135 = getelementptr i32, i32* %r3, i32 9 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i320 -%r138 = shl i320 %r137, 288 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i352 -%r142 = getelementptr i32, i32* %r3, i32 10 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i352 -%r145 = shl i352 %r144, 320 -%r146 = or i352 %r140, %r145 -%r147 = sub i352 %r75, %r146 -%r148 = lshr i352 %r147, 351 -%r149 = trunc i352 %r148 to i1 -%r150 = load i32, i32* %r4 -%r151 = zext i32 %r150 to i64 -%r153 = getelementptr i32, i32* %r4, i32 1 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i64 -%r156 = shl i64 %r155, 32 -%r157 = or i64 %r151, %r156 -%r158 = zext i64 %r157 to i96 -%r160 = getelementptr i32, i32* %r4, i32 2 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i96 -%r163 = shl i96 %r162, 64 -%r164 = or i96 %r158, %r163 -%r165 = zext i96 %r164 to i128 -%r167 = getelementptr i32, i32* %r4, i32 3 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i128 -%r170 = shl i128 %r169, 96 -%r171 = or i128 %r165, %r170 -%r172 = zext i128 %r171 to i160 -%r174 = getelementptr i32, i32* %r4, i32 4 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i160 -%r177 = shl i160 %r176, 128 -%r178 = or i160 %r172, %r177 -%r179 = zext i160 %r178 to i192 -%r181 = getelementptr i32, i32* %r4, i32 5 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i192 -%r184 = shl i192 %r183, 160 -%r185 = or i192 %r179, %r184 -%r186 = zext i192 %r185 to i224 -%r188 = getelementptr i32, i32* %r4, i32 6 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i224 -%r191 = shl i224 %r190, 192 -%r192 = or i224 %r186, %r191 -%r193 = zext i224 %r192 to i256 -%r195 = getelementptr i32, i32* %r4, i32 7 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i256 -%r198 = shl i256 %r197, 224 -%r199 = or i256 %r193, %r198 -%r200 = zext i256 %r199 to i288 -%r202 = getelementptr i32, i32* %r4, i32 8 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i288 -%r205 = shl i288 %r204, 256 -%r206 = or i288 %r200, %r205 -%r207 = zext i288 %r206 to i320 -%r209 = getelementptr i32, i32* %r4, i32 9 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i320 -%r212 = shl i320 %r211, 288 -%r213 = or i320 %r207, %r212 -%r214 = zext i320 %r213 to i352 -%r216 = getelementptr i32, i32* %r4, i32 10 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i352 -%r219 = shl i352 %r218, 320 -%r220 = or i352 %r214, %r219 -%r222 = select i1 %r149, i352 %r220, i352 0 -%r223 = add i352 %r147, %r222 -%r224 = trunc i352 %r223 to i32 -%r226 = getelementptr i32, i32* %r1, i32 0 -store i32 %r224, i32* %r226 -%r227 = lshr i352 %r223, 32 -%r228 = trunc i352 %r227 to i32 -%r230 = getelementptr i32, i32* %r1, i32 1 -store i32 %r228, i32* %r230 -%r231 = lshr i352 %r227, 32 -%r232 = trunc i352 %r231 to i32 -%r234 = getelementptr i32, i32* %r1, i32 2 -store i32 %r232, i32* %r234 -%r235 = lshr i352 %r231, 32 -%r236 = trunc i352 %r235 to i32 -%r238 = getelementptr i32, i32* %r1, i32 3 -store i32 %r236, i32* %r238 -%r239 = lshr i352 %r235, 32 -%r240 = trunc i352 %r239 to i32 -%r242 = getelementptr i32, i32* %r1, i32 4 -store i32 %r240, i32* %r242 -%r243 = lshr i352 %r239, 32 -%r244 = trunc i352 %r243 to i32 -%r246 = getelementptr i32, i32* %r1, i32 5 -store i32 %r244, i32* %r246 -%r247 = lshr i352 %r243, 32 -%r248 = trunc i352 %r247 to i32 -%r250 = getelementptr i32, i32* %r1, i32 6 -store i32 %r248, i32* %r250 -%r251 = lshr i352 %r247, 32 -%r252 = trunc i352 %r251 to i32 -%r254 = getelementptr i32, i32* %r1, i32 7 -store i32 %r252, i32* %r254 -%r255 = lshr i352 %r251, 32 -%r256 = trunc i352 %r255 to i32 -%r258 = getelementptr i32, i32* %r1, i32 8 -store i32 %r256, i32* %r258 -%r259 = lshr i352 %r255, 32 -%r260 = trunc i352 %r259 to i32 -%r262 = getelementptr i32, i32* %r1, i32 9 -store i32 %r260, i32* %r262 -%r263 = lshr i352 %r259, 32 -%r264 = trunc i352 %r263 to i32 -%r266 = getelementptr i32, i32* %r1, i32 10 -store i32 %r264, i32* %r266 -ret void -} -define void @mcl_fpDbl_add11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = load i32, i32* %r3 -%r154 = zext i32 %r153 to i64 -%r156 = getelementptr i32, i32* %r3, i32 1 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i64 -%r159 = shl i64 %r158, 32 -%r160 = or i64 %r154, %r159 -%r161 = zext i64 %r160 to i96 -%r163 = getelementptr i32, i32* %r3, i32 2 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i96 -%r166 = shl i96 %r165, 64 -%r167 = or i96 %r161, %r166 -%r168 = zext i96 %r167 to i128 -%r170 = getelementptr i32, i32* %r3, i32 3 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i128 -%r173 = shl i128 %r172, 96 -%r174 = or i128 %r168, %r173 -%r175 = zext i128 %r174 to i160 -%r177 = getelementptr i32, i32* %r3, i32 4 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i160 -%r180 = shl i160 %r179, 128 -%r181 = or i160 %r175, %r180 -%r182 = zext i160 %r181 to i192 -%r184 = getelementptr i32, i32* %r3, i32 5 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i192 -%r187 = shl i192 %r186, 160 -%r188 = or i192 %r182, %r187 -%r189 = zext i192 %r188 to i224 -%r191 = getelementptr i32, i32* %r3, i32 6 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i224 -%r194 = shl i224 %r193, 192 -%r195 = or i224 %r189, %r194 -%r196 = zext i224 %r195 to i256 -%r198 = getelementptr i32, i32* %r3, i32 7 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i256 -%r201 = shl i256 %r200, 224 -%r202 = or i256 %r196, %r201 -%r203 = zext i256 %r202 to i288 -%r205 = getelementptr i32, i32* %r3, i32 8 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i288 -%r208 = shl i288 %r207, 256 -%r209 = or i288 %r203, %r208 -%r210 = zext i288 %r209 to i320 -%r212 = getelementptr i32, i32* %r3, i32 9 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i320 -%r215 = shl i320 %r214, 288 -%r216 = or i320 %r210, %r215 -%r217 = zext i320 %r216 to i352 -%r219 = getelementptr i32, i32* %r3, i32 10 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i352 -%r222 = shl i352 %r221, 320 -%r223 = or i352 %r217, %r222 -%r224 = zext i352 %r223 to i384 -%r226 = getelementptr i32, i32* %r3, i32 11 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i384 -%r229 = shl i384 %r228, 352 -%r230 = or i384 %r224, %r229 -%r231 = zext i384 %r230 to i416 -%r233 = getelementptr i32, i32* %r3, i32 12 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i416 -%r236 = shl i416 %r235, 384 -%r237 = or i416 %r231, %r236 -%r238 = zext i416 %r237 to i448 -%r240 = getelementptr i32, i32* %r3, i32 13 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i448 -%r243 = shl i448 %r242, 416 -%r244 = or i448 %r238, %r243 -%r245 = zext i448 %r244 to i480 -%r247 = getelementptr i32, i32* %r3, i32 14 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i480 -%r250 = shl i480 %r249, 448 -%r251 = or i480 %r245, %r250 -%r252 = zext i480 %r251 to i512 -%r254 = getelementptr i32, i32* %r3, i32 15 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i512 -%r257 = shl i512 %r256, 480 -%r258 = or i512 %r252, %r257 -%r259 = zext i512 %r258 to i544 -%r261 = getelementptr i32, i32* %r3, i32 16 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i544 -%r264 = shl i544 %r263, 512 -%r265 = or i544 %r259, %r264 -%r266 = zext i544 %r265 to i576 -%r268 = getelementptr i32, i32* %r3, i32 17 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i576 -%r271 = shl i576 %r270, 544 -%r272 = or i576 %r266, %r271 -%r273 = zext i576 %r272 to i608 -%r275 = getelementptr i32, i32* %r3, i32 18 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i608 -%r278 = shl i608 %r277, 576 -%r279 = or i608 %r273, %r278 -%r280 = zext i608 %r279 to i640 -%r282 = getelementptr i32, i32* %r3, i32 19 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i640 -%r285 = shl i640 %r284, 608 -%r286 = or i640 %r280, %r285 -%r287 = zext i640 %r286 to i672 -%r289 = getelementptr i32, i32* %r3, i32 20 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i672 -%r292 = shl i672 %r291, 640 -%r293 = or i672 %r287, %r292 -%r294 = zext i672 %r293 to i704 -%r296 = getelementptr i32, i32* %r3, i32 21 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i704 -%r299 = shl i704 %r298, 672 -%r300 = or i704 %r294, %r299 -%r301 = zext i704 %r152 to i736 -%r302 = zext i704 %r300 to i736 -%r303 = add i736 %r301, %r302 -%r304 = trunc i736 %r303 to i352 -%r305 = trunc i352 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 0 -store i32 %r305, i32* %r307 -%r308 = lshr i352 %r304, 32 -%r309 = trunc i352 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 1 -store i32 %r309, i32* %r311 -%r312 = lshr i352 %r308, 32 -%r313 = trunc i352 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 2 -store i32 %r313, i32* %r315 -%r316 = lshr i352 %r312, 32 -%r317 = trunc i352 %r316 to i32 -%r319 = getelementptr i32, i32* %r1, i32 3 -store i32 %r317, i32* %r319 -%r320 = lshr i352 %r316, 32 -%r321 = trunc i352 %r320 to i32 -%r323 = getelementptr i32, i32* %r1, i32 4 -store i32 %r321, i32* %r323 -%r324 = lshr i352 %r320, 32 -%r325 = trunc i352 %r324 to i32 -%r327 = getelementptr i32, i32* %r1, i32 5 -store i32 %r325, i32* %r327 -%r328 = lshr i352 %r324, 32 -%r329 = trunc i352 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 6 -store i32 %r329, i32* %r331 -%r332 = lshr i352 %r328, 32 -%r333 = trunc i352 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 7 -store i32 %r333, i32* %r335 -%r336 = lshr i352 %r332, 32 -%r337 = trunc i352 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 8 -store i32 %r337, i32* %r339 -%r340 = lshr i352 %r336, 32 -%r341 = trunc i352 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 9 -store i32 %r341, i32* %r343 -%r344 = lshr i352 %r340, 32 -%r345 = trunc i352 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 10 -store i32 %r345, i32* %r347 -%r348 = lshr i736 %r303, 352 -%r349 = trunc i736 %r348 to i384 -%r350 = load i32, i32* %r4 -%r351 = zext i32 %r350 to i64 -%r353 = getelementptr i32, i32* %r4, i32 1 -%r354 = load i32, i32* %r353 -%r355 = zext i32 %r354 to i64 -%r356 = shl i64 %r355, 32 -%r357 = or i64 %r351, %r356 -%r358 = zext i64 %r357 to i96 -%r360 = getelementptr i32, i32* %r4, i32 2 -%r361 = load i32, i32* %r360 -%r362 = zext i32 %r361 to i96 -%r363 = shl i96 %r362, 64 -%r364 = or i96 %r358, %r363 -%r365 = zext i96 %r364 to i128 -%r367 = getelementptr i32, i32* %r4, i32 3 -%r368 = load i32, i32* %r367 -%r369 = zext i32 %r368 to i128 -%r370 = shl i128 %r369, 96 -%r371 = or i128 %r365, %r370 -%r372 = zext i128 %r371 to i160 -%r374 = getelementptr i32, i32* %r4, i32 4 -%r375 = load i32, i32* %r374 -%r376 = zext i32 %r375 to i160 -%r377 = shl i160 %r376, 128 -%r378 = or i160 %r372, %r377 -%r379 = zext i160 %r378 to i192 -%r381 = getelementptr i32, i32* %r4, i32 5 -%r382 = load i32, i32* %r381 -%r383 = zext i32 %r382 to i192 -%r384 = shl i192 %r383, 160 -%r385 = or i192 %r379, %r384 -%r386 = zext i192 %r385 to i224 -%r388 = getelementptr i32, i32* %r4, i32 6 -%r389 = load i32, i32* %r388 -%r390 = zext i32 %r389 to i224 -%r391 = shl i224 %r390, 192 -%r392 = or i224 %r386, %r391 -%r393 = zext i224 %r392 to i256 -%r395 = getelementptr i32, i32* %r4, i32 7 -%r396 = load i32, i32* %r395 -%r397 = zext i32 %r396 to i256 -%r398 = shl i256 %r397, 224 -%r399 = or i256 %r393, %r398 -%r400 = zext i256 %r399 to i288 -%r402 = getelementptr i32, i32* %r4, i32 8 -%r403 = load i32, i32* %r402 -%r404 = zext i32 %r403 to i288 -%r405 = shl i288 %r404, 256 -%r406 = or i288 %r400, %r405 -%r407 = zext i288 %r406 to i320 -%r409 = getelementptr i32, i32* %r4, i32 9 -%r410 = load i32, i32* %r409 -%r411 = zext i32 %r410 to i320 -%r412 = shl i320 %r411, 288 -%r413 = or i320 %r407, %r412 -%r414 = zext i320 %r413 to i352 -%r416 = getelementptr i32, i32* %r4, i32 10 -%r417 = load i32, i32* %r416 -%r418 = zext i32 %r417 to i352 -%r419 = shl i352 %r418, 320 -%r420 = or i352 %r414, %r419 -%r421 = zext i352 %r420 to i384 -%r422 = sub i384 %r349, %r421 -%r423 = lshr i384 %r422, 352 -%r424 = trunc i384 %r423 to i1 -%r425 = select i1 %r424, i384 %r349, i384 %r422 -%r426 = trunc i384 %r425 to i352 -%r428 = getelementptr i32, i32* %r1, i32 11 -%r429 = trunc i352 %r426 to i32 -%r431 = getelementptr i32, i32* %r428, i32 0 -store i32 %r429, i32* %r431 -%r432 = lshr i352 %r426, 32 -%r433 = trunc i352 %r432 to i32 -%r435 = getelementptr i32, i32* %r428, i32 1 -store i32 %r433, i32* %r435 -%r436 = lshr i352 %r432, 32 -%r437 = trunc i352 %r436 to i32 -%r439 = getelementptr i32, i32* %r428, i32 2 -store i32 %r437, i32* %r439 -%r440 = lshr i352 %r436, 32 -%r441 = trunc i352 %r440 to i32 -%r443 = getelementptr i32, i32* %r428, i32 3 -store i32 %r441, i32* %r443 -%r444 = lshr i352 %r440, 32 -%r445 = trunc i352 %r444 to i32 -%r447 = getelementptr i32, i32* %r428, i32 4 -store i32 %r445, i32* %r447 -%r448 = lshr i352 %r444, 32 -%r449 = trunc i352 %r448 to i32 -%r451 = getelementptr i32, i32* %r428, i32 5 -store i32 %r449, i32* %r451 -%r452 = lshr i352 %r448, 32 -%r453 = trunc i352 %r452 to i32 -%r455 = getelementptr i32, i32* %r428, i32 6 -store i32 %r453, i32* %r455 -%r456 = lshr i352 %r452, 32 -%r457 = trunc i352 %r456 to i32 -%r459 = getelementptr i32, i32* %r428, i32 7 -store i32 %r457, i32* %r459 -%r460 = lshr i352 %r456, 32 -%r461 = trunc i352 %r460 to i32 -%r463 = getelementptr i32, i32* %r428, i32 8 -store i32 %r461, i32* %r463 -%r464 = lshr i352 %r460, 32 -%r465 = trunc i352 %r464 to i32 -%r467 = getelementptr i32, i32* %r428, i32 9 -store i32 %r465, i32* %r467 -%r468 = lshr i352 %r464, 32 -%r469 = trunc i352 %r468 to i32 -%r471 = getelementptr i32, i32* %r428, i32 10 -store i32 %r469, i32* %r471 -ret void -} -define void @mcl_fpDbl_sub11L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = load i32, i32* %r3 -%r154 = zext i32 %r153 to i64 -%r156 = getelementptr i32, i32* %r3, i32 1 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i64 -%r159 = shl i64 %r158, 32 -%r160 = or i64 %r154, %r159 -%r161 = zext i64 %r160 to i96 -%r163 = getelementptr i32, i32* %r3, i32 2 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i96 -%r166 = shl i96 %r165, 64 -%r167 = or i96 %r161, %r166 -%r168 = zext i96 %r167 to i128 -%r170 = getelementptr i32, i32* %r3, i32 3 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i128 -%r173 = shl i128 %r172, 96 -%r174 = or i128 %r168, %r173 -%r175 = zext i128 %r174 to i160 -%r177 = getelementptr i32, i32* %r3, i32 4 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i160 -%r180 = shl i160 %r179, 128 -%r181 = or i160 %r175, %r180 -%r182 = zext i160 %r181 to i192 -%r184 = getelementptr i32, i32* %r3, i32 5 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i192 -%r187 = shl i192 %r186, 160 -%r188 = or i192 %r182, %r187 -%r189 = zext i192 %r188 to i224 -%r191 = getelementptr i32, i32* %r3, i32 6 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i224 -%r194 = shl i224 %r193, 192 -%r195 = or i224 %r189, %r194 -%r196 = zext i224 %r195 to i256 -%r198 = getelementptr i32, i32* %r3, i32 7 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i256 -%r201 = shl i256 %r200, 224 -%r202 = or i256 %r196, %r201 -%r203 = zext i256 %r202 to i288 -%r205 = getelementptr i32, i32* %r3, i32 8 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i288 -%r208 = shl i288 %r207, 256 -%r209 = or i288 %r203, %r208 -%r210 = zext i288 %r209 to i320 -%r212 = getelementptr i32, i32* %r3, i32 9 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i320 -%r215 = shl i320 %r214, 288 -%r216 = or i320 %r210, %r215 -%r217 = zext i320 %r216 to i352 -%r219 = getelementptr i32, i32* %r3, i32 10 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i352 -%r222 = shl i352 %r221, 320 -%r223 = or i352 %r217, %r222 -%r224 = zext i352 %r223 to i384 -%r226 = getelementptr i32, i32* %r3, i32 11 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i384 -%r229 = shl i384 %r228, 352 -%r230 = or i384 %r224, %r229 -%r231 = zext i384 %r230 to i416 -%r233 = getelementptr i32, i32* %r3, i32 12 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i416 -%r236 = shl i416 %r235, 384 -%r237 = or i416 %r231, %r236 -%r238 = zext i416 %r237 to i448 -%r240 = getelementptr i32, i32* %r3, i32 13 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i448 -%r243 = shl i448 %r242, 416 -%r244 = or i448 %r238, %r243 -%r245 = zext i448 %r244 to i480 -%r247 = getelementptr i32, i32* %r3, i32 14 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i480 -%r250 = shl i480 %r249, 448 -%r251 = or i480 %r245, %r250 -%r252 = zext i480 %r251 to i512 -%r254 = getelementptr i32, i32* %r3, i32 15 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i512 -%r257 = shl i512 %r256, 480 -%r258 = or i512 %r252, %r257 -%r259 = zext i512 %r258 to i544 -%r261 = getelementptr i32, i32* %r3, i32 16 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i544 -%r264 = shl i544 %r263, 512 -%r265 = or i544 %r259, %r264 -%r266 = zext i544 %r265 to i576 -%r268 = getelementptr i32, i32* %r3, i32 17 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i576 -%r271 = shl i576 %r270, 544 -%r272 = or i576 %r266, %r271 -%r273 = zext i576 %r272 to i608 -%r275 = getelementptr i32, i32* %r3, i32 18 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i608 -%r278 = shl i608 %r277, 576 -%r279 = or i608 %r273, %r278 -%r280 = zext i608 %r279 to i640 -%r282 = getelementptr i32, i32* %r3, i32 19 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i640 -%r285 = shl i640 %r284, 608 -%r286 = or i640 %r280, %r285 -%r287 = zext i640 %r286 to i672 -%r289 = getelementptr i32, i32* %r3, i32 20 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i672 -%r292 = shl i672 %r291, 640 -%r293 = or i672 %r287, %r292 -%r294 = zext i672 %r293 to i704 -%r296 = getelementptr i32, i32* %r3, i32 21 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i704 -%r299 = shl i704 %r298, 672 -%r300 = or i704 %r294, %r299 -%r301 = zext i704 %r152 to i736 -%r302 = zext i704 %r300 to i736 -%r303 = sub i736 %r301, %r302 -%r304 = trunc i736 %r303 to i352 -%r305 = trunc i352 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 0 -store i32 %r305, i32* %r307 -%r308 = lshr i352 %r304, 32 -%r309 = trunc i352 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 1 -store i32 %r309, i32* %r311 -%r312 = lshr i352 %r308, 32 -%r313 = trunc i352 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 2 -store i32 %r313, i32* %r315 -%r316 = lshr i352 %r312, 32 -%r317 = trunc i352 %r316 to i32 -%r319 = getelementptr i32, i32* %r1, i32 3 -store i32 %r317, i32* %r319 -%r320 = lshr i352 %r316, 32 -%r321 = trunc i352 %r320 to i32 -%r323 = getelementptr i32, i32* %r1, i32 4 -store i32 %r321, i32* %r323 -%r324 = lshr i352 %r320, 32 -%r325 = trunc i352 %r324 to i32 -%r327 = getelementptr i32, i32* %r1, i32 5 -store i32 %r325, i32* %r327 -%r328 = lshr i352 %r324, 32 -%r329 = trunc i352 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 6 -store i32 %r329, i32* %r331 -%r332 = lshr i352 %r328, 32 -%r333 = trunc i352 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 7 -store i32 %r333, i32* %r335 -%r336 = lshr i352 %r332, 32 -%r337 = trunc i352 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 8 -store i32 %r337, i32* %r339 -%r340 = lshr i352 %r336, 32 -%r341 = trunc i352 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 9 -store i32 %r341, i32* %r343 -%r344 = lshr i352 %r340, 32 -%r345 = trunc i352 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 10 -store i32 %r345, i32* %r347 -%r348 = lshr i736 %r303, 352 -%r349 = trunc i736 %r348 to i352 -%r350 = lshr i736 %r303, 704 -%r351 = trunc i736 %r350 to i1 -%r352 = load i32, i32* %r4 -%r353 = zext i32 %r352 to i64 -%r355 = getelementptr i32, i32* %r4, i32 1 -%r356 = load i32, i32* %r355 -%r357 = zext i32 %r356 to i64 -%r358 = shl i64 %r357, 32 -%r359 = or i64 %r353, %r358 -%r360 = zext i64 %r359 to i96 -%r362 = getelementptr i32, i32* %r4, i32 2 -%r363 = load i32, i32* %r362 -%r364 = zext i32 %r363 to i96 -%r365 = shl i96 %r364, 64 -%r366 = or i96 %r360, %r365 -%r367 = zext i96 %r366 to i128 -%r369 = getelementptr i32, i32* %r4, i32 3 -%r370 = load i32, i32* %r369 -%r371 = zext i32 %r370 to i128 -%r372 = shl i128 %r371, 96 -%r373 = or i128 %r367, %r372 -%r374 = zext i128 %r373 to i160 -%r376 = getelementptr i32, i32* %r4, i32 4 -%r377 = load i32, i32* %r376 -%r378 = zext i32 %r377 to i160 -%r379 = shl i160 %r378, 128 -%r380 = or i160 %r374, %r379 -%r381 = zext i160 %r380 to i192 -%r383 = getelementptr i32, i32* %r4, i32 5 -%r384 = load i32, i32* %r383 -%r385 = zext i32 %r384 to i192 -%r386 = shl i192 %r385, 160 -%r387 = or i192 %r381, %r386 -%r388 = zext i192 %r387 to i224 -%r390 = getelementptr i32, i32* %r4, i32 6 -%r391 = load i32, i32* %r390 -%r392 = zext i32 %r391 to i224 -%r393 = shl i224 %r392, 192 -%r394 = or i224 %r388, %r393 -%r395 = zext i224 %r394 to i256 -%r397 = getelementptr i32, i32* %r4, i32 7 -%r398 = load i32, i32* %r397 -%r399 = zext i32 %r398 to i256 -%r400 = shl i256 %r399, 224 -%r401 = or i256 %r395, %r400 -%r402 = zext i256 %r401 to i288 -%r404 = getelementptr i32, i32* %r4, i32 8 -%r405 = load i32, i32* %r404 -%r406 = zext i32 %r405 to i288 -%r407 = shl i288 %r406, 256 -%r408 = or i288 %r402, %r407 -%r409 = zext i288 %r408 to i320 -%r411 = getelementptr i32, i32* %r4, i32 9 -%r412 = load i32, i32* %r411 -%r413 = zext i32 %r412 to i320 -%r414 = shl i320 %r413, 288 -%r415 = or i320 %r409, %r414 -%r416 = zext i320 %r415 to i352 -%r418 = getelementptr i32, i32* %r4, i32 10 -%r419 = load i32, i32* %r418 -%r420 = zext i32 %r419 to i352 -%r421 = shl i352 %r420, 320 -%r422 = or i352 %r416, %r421 -%r424 = select i1 %r351, i352 %r422, i352 0 -%r425 = add i352 %r349, %r424 -%r427 = getelementptr i32, i32* %r1, i32 11 -%r428 = trunc i352 %r425 to i32 -%r430 = getelementptr i32, i32* %r427, i32 0 -store i32 %r428, i32* %r430 -%r431 = lshr i352 %r425, 32 -%r432 = trunc i352 %r431 to i32 -%r434 = getelementptr i32, i32* %r427, i32 1 -store i32 %r432, i32* %r434 -%r435 = lshr i352 %r431, 32 -%r436 = trunc i352 %r435 to i32 -%r438 = getelementptr i32, i32* %r427, i32 2 -store i32 %r436, i32* %r438 -%r439 = lshr i352 %r435, 32 -%r440 = trunc i352 %r439 to i32 -%r442 = getelementptr i32, i32* %r427, i32 3 -store i32 %r440, i32* %r442 -%r443 = lshr i352 %r439, 32 -%r444 = trunc i352 %r443 to i32 -%r446 = getelementptr i32, i32* %r427, i32 4 -store i32 %r444, i32* %r446 -%r447 = lshr i352 %r443, 32 -%r448 = trunc i352 %r447 to i32 -%r450 = getelementptr i32, i32* %r427, i32 5 -store i32 %r448, i32* %r450 -%r451 = lshr i352 %r447, 32 -%r452 = trunc i352 %r451 to i32 -%r454 = getelementptr i32, i32* %r427, i32 6 -store i32 %r452, i32* %r454 -%r455 = lshr i352 %r451, 32 -%r456 = trunc i352 %r455 to i32 -%r458 = getelementptr i32, i32* %r427, i32 7 -store i32 %r456, i32* %r458 -%r459 = lshr i352 %r455, 32 -%r460 = trunc i352 %r459 to i32 -%r462 = getelementptr i32, i32* %r427, i32 8 -store i32 %r460, i32* %r462 -%r463 = lshr i352 %r459, 32 -%r464 = trunc i352 %r463 to i32 -%r466 = getelementptr i32, i32* %r427, i32 9 -store i32 %r464, i32* %r466 -%r467 = lshr i352 %r463, 32 -%r468 = trunc i352 %r467 to i32 -%r470 = getelementptr i32, i32* %r427, i32 10 -store i32 %r468, i32* %r470 -ret void -} -define i416 @mulPv384x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r52 = zext i32 %r6 to i64 -%r53 = zext i32 %r10 to i64 -%r54 = shl i64 %r53, 32 -%r55 = or i64 %r52, %r54 -%r56 = zext i64 %r55 to i96 -%r57 = zext i32 %r14 to i96 -%r58 = shl i96 %r57, 64 -%r59 = or i96 %r56, %r58 -%r60 = zext i96 %r59 to i128 -%r61 = zext i32 %r18 to i128 -%r62 = shl i128 %r61, 96 -%r63 = or i128 %r60, %r62 -%r64 = zext i128 %r63 to i160 -%r65 = zext i32 %r22 to i160 -%r66 = shl i160 %r65, 128 -%r67 = or i160 %r64, %r66 -%r68 = zext i160 %r67 to i192 -%r69 = zext i32 %r26 to i192 -%r70 = shl i192 %r69, 160 -%r71 = or i192 %r68, %r70 -%r72 = zext i192 %r71 to i224 -%r73 = zext i32 %r30 to i224 -%r74 = shl i224 %r73, 192 -%r75 = or i224 %r72, %r74 -%r76 = zext i224 %r75 to i256 -%r77 = zext i32 %r34 to i256 -%r78 = shl i256 %r77, 224 -%r79 = or i256 %r76, %r78 -%r80 = zext i256 %r79 to i288 -%r81 = zext i32 %r38 to i288 -%r82 = shl i288 %r81, 256 -%r83 = or i288 %r80, %r82 -%r84 = zext i288 %r83 to i320 -%r85 = zext i32 %r42 to i320 -%r86 = shl i320 %r85, 288 -%r87 = or i320 %r84, %r86 -%r88 = zext i320 %r87 to i352 -%r89 = zext i32 %r46 to i352 -%r90 = shl i352 %r89, 320 -%r91 = or i352 %r88, %r90 -%r92 = zext i352 %r91 to i384 -%r93 = zext i32 %r50 to i384 -%r94 = shl i384 %r93, 352 -%r95 = or i384 %r92, %r94 -%r96 = zext i32 %r7 to i64 -%r97 = zext i32 %r11 to i64 -%r98 = shl i64 %r97, 32 -%r99 = or i64 %r96, %r98 -%r100 = zext i64 %r99 to i96 -%r101 = zext i32 %r15 to i96 -%r102 = shl i96 %r101, 64 -%r103 = or i96 %r100, %r102 -%r104 = zext i96 %r103 to i128 -%r105 = zext i32 %r19 to i128 -%r106 = shl i128 %r105, 96 -%r107 = or i128 %r104, %r106 -%r108 = zext i128 %r107 to i160 -%r109 = zext i32 %r23 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r108, %r110 -%r112 = zext i160 %r111 to i192 -%r113 = zext i32 %r27 to i192 -%r114 = shl i192 %r113, 160 -%r115 = or i192 %r112, %r114 -%r116 = zext i192 %r115 to i224 -%r117 = zext i32 %r31 to i224 -%r118 = shl i224 %r117, 192 -%r119 = or i224 %r116, %r118 -%r120 = zext i224 %r119 to i256 -%r121 = zext i32 %r35 to i256 -%r122 = shl i256 %r121, 224 -%r123 = or i256 %r120, %r122 -%r124 = zext i256 %r123 to i288 -%r125 = zext i32 %r39 to i288 -%r126 = shl i288 %r125, 256 -%r127 = or i288 %r124, %r126 -%r128 = zext i288 %r127 to i320 -%r129 = zext i32 %r43 to i320 -%r130 = shl i320 %r129, 288 -%r131 = or i320 %r128, %r130 -%r132 = zext i320 %r131 to i352 -%r133 = zext i32 %r47 to i352 -%r134 = shl i352 %r133, 320 -%r135 = or i352 %r132, %r134 -%r136 = zext i352 %r135 to i384 -%r137 = zext i32 %r51 to i384 -%r138 = shl i384 %r137, 352 -%r139 = or i384 %r136, %r138 -%r140 = zext i384 %r95 to i416 -%r141 = zext i384 %r139 to i416 -%r142 = shl i416 %r141, 32 -%r143 = add i416 %r140, %r142 -ret i416 %r143 -} -define void @mcl_fp_mulUnitPre12L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i416 @mulPv384x32(i32* %r2, i32 %r3) -%r5 = trunc i416 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i416 %r4, 32 -%r9 = trunc i416 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i416 %r8, 32 -%r13 = trunc i416 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i416 %r12, 32 -%r17 = trunc i416 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i416 %r16, 32 -%r21 = trunc i416 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i416 %r20, 32 -%r25 = trunc i416 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i416 %r24, 32 -%r29 = trunc i416 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i416 %r28, 32 -%r33 = trunc i416 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i416 %r32, 32 -%r37 = trunc i416 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i416 %r36, 32 -%r41 = trunc i416 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i416 %r40, 32 -%r45 = trunc i416 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i416 %r44, 32 -%r49 = trunc i416 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i416 %r48, 32 -%r53 = trunc i416 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -ret void -} -define void @mcl_fpDbl_mulPre12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r2, i32 6 -%r7 = getelementptr i32, i32* %r3, i32 6 -%r9 = getelementptr i32, i32* %r1, i32 12 -call void @mcl_fpDbl_mulPre6L(i32* %r1, i32* %r2, i32* %r3) -call void @mcl_fpDbl_mulPre6L(i32* %r9, i32* %r5, i32* %r7) -%r10 = load i32, i32* %r5 -%r11 = zext i32 %r10 to i64 -%r13 = getelementptr i32, i32* %r5, i32 1 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i64 -%r16 = shl i64 %r15, 32 -%r17 = or i64 %r11, %r16 -%r18 = zext i64 %r17 to i96 -%r20 = getelementptr i32, i32* %r5, i32 2 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i96 -%r23 = shl i96 %r22, 64 -%r24 = or i96 %r18, %r23 -%r25 = zext i96 %r24 to i128 -%r27 = getelementptr i32, i32* %r5, i32 3 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r25, %r30 -%r32 = zext i128 %r31 to i160 -%r34 = getelementptr i32, i32* %r5, i32 4 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i160 -%r37 = shl i160 %r36, 128 -%r38 = or i160 %r32, %r37 -%r39 = zext i160 %r38 to i192 -%r41 = getelementptr i32, i32* %r5, i32 5 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i192 -%r44 = shl i192 %r43, 160 -%r45 = or i192 %r39, %r44 -%r46 = zext i192 %r45 to i224 -%r47 = load i32, i32* %r2 -%r48 = zext i32 %r47 to i64 -%r50 = getelementptr i32, i32* %r2, i32 1 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i64 -%r53 = shl i64 %r52, 32 -%r54 = or i64 %r48, %r53 -%r55 = zext i64 %r54 to i96 -%r57 = getelementptr i32, i32* %r2, i32 2 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i96 -%r60 = shl i96 %r59, 64 -%r61 = or i96 %r55, %r60 -%r62 = zext i96 %r61 to i128 -%r64 = getelementptr i32, i32* %r2, i32 3 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i128 -%r67 = shl i128 %r66, 96 -%r68 = or i128 %r62, %r67 -%r69 = zext i128 %r68 to i160 -%r71 = getelementptr i32, i32* %r2, i32 4 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i160 -%r74 = shl i160 %r73, 128 -%r75 = or i160 %r69, %r74 -%r76 = zext i160 %r75 to i192 -%r78 = getelementptr i32, i32* %r2, i32 5 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i192 -%r81 = shl i192 %r80, 160 -%r82 = or i192 %r76, %r81 -%r83 = zext i192 %r82 to i224 -%r84 = load i32, i32* %r7 -%r85 = zext i32 %r84 to i64 -%r87 = getelementptr i32, i32* %r7, i32 1 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i64 -%r90 = shl i64 %r89, 32 -%r91 = or i64 %r85, %r90 -%r92 = zext i64 %r91 to i96 -%r94 = getelementptr i32, i32* %r7, i32 2 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i96 -%r97 = shl i96 %r96, 64 -%r98 = or i96 %r92, %r97 -%r99 = zext i96 %r98 to i128 -%r101 = getelementptr i32, i32* %r7, i32 3 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i128 -%r104 = shl i128 %r103, 96 -%r105 = or i128 %r99, %r104 -%r106 = zext i128 %r105 to i160 -%r108 = getelementptr i32, i32* %r7, i32 4 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i160 -%r111 = shl i160 %r110, 128 -%r112 = or i160 %r106, %r111 -%r113 = zext i160 %r112 to i192 -%r115 = getelementptr i32, i32* %r7, i32 5 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i192 -%r118 = shl i192 %r117, 160 -%r119 = or i192 %r113, %r118 -%r120 = zext i192 %r119 to i224 -%r121 = load i32, i32* %r3 -%r122 = zext i32 %r121 to i64 -%r124 = getelementptr i32, i32* %r3, i32 1 -%r125 = load i32, i32* %r124 -%r126 = zext i32 %r125 to i64 -%r127 = shl i64 %r126, 32 -%r128 = or i64 %r122, %r127 -%r129 = zext i64 %r128 to i96 -%r131 = getelementptr i32, i32* %r3, i32 2 -%r132 = load i32, i32* %r131 -%r133 = zext i32 %r132 to i96 -%r134 = shl i96 %r133, 64 -%r135 = or i96 %r129, %r134 -%r136 = zext i96 %r135 to i128 -%r138 = getelementptr i32, i32* %r3, i32 3 -%r139 = load i32, i32* %r138 -%r140 = zext i32 %r139 to i128 -%r141 = shl i128 %r140, 96 -%r142 = or i128 %r136, %r141 -%r143 = zext i128 %r142 to i160 -%r145 = getelementptr i32, i32* %r3, i32 4 -%r146 = load i32, i32* %r145 -%r147 = zext i32 %r146 to i160 -%r148 = shl i160 %r147, 128 -%r149 = or i160 %r143, %r148 -%r150 = zext i160 %r149 to i192 -%r152 = getelementptr i32, i32* %r3, i32 5 -%r153 = load i32, i32* %r152 -%r154 = zext i32 %r153 to i192 -%r155 = shl i192 %r154, 160 -%r156 = or i192 %r150, %r155 -%r157 = zext i192 %r156 to i224 -%r158 = add i224 %r46, %r83 -%r159 = add i224 %r120, %r157 -%r161 = alloca i32, i32 12 -%r162 = trunc i224 %r158 to i192 -%r163 = trunc i224 %r159 to i192 -%r164 = lshr i224 %r158, 192 -%r165 = trunc i224 %r164 to i1 -%r166 = lshr i224 %r159, 192 -%r167 = trunc i224 %r166 to i1 -%r168 = and i1 %r165, %r167 -%r170 = select i1 %r165, i192 %r163, i192 0 -%r172 = select i1 %r167, i192 %r162, i192 0 -%r174 = alloca i32, i32 6 -%r176 = alloca i32, i32 6 -%r177 = trunc i192 %r162 to i32 -%r179 = getelementptr i32, i32* %r174, i32 0 -store i32 %r177, i32* %r179 -%r180 = lshr i192 %r162, 32 -%r181 = trunc i192 %r180 to i32 -%r183 = getelementptr i32, i32* %r174, i32 1 -store i32 %r181, i32* %r183 -%r184 = lshr i192 %r180, 32 -%r185 = trunc i192 %r184 to i32 -%r187 = getelementptr i32, i32* %r174, i32 2 -store i32 %r185, i32* %r187 -%r188 = lshr i192 %r184, 32 -%r189 = trunc i192 %r188 to i32 -%r191 = getelementptr i32, i32* %r174, i32 3 -store i32 %r189, i32* %r191 -%r192 = lshr i192 %r188, 32 -%r193 = trunc i192 %r192 to i32 -%r195 = getelementptr i32, i32* %r174, i32 4 -store i32 %r193, i32* %r195 -%r196 = lshr i192 %r192, 32 -%r197 = trunc i192 %r196 to i32 -%r199 = getelementptr i32, i32* %r174, i32 5 -store i32 %r197, i32* %r199 -%r200 = trunc i192 %r163 to i32 -%r202 = getelementptr i32, i32* %r176, i32 0 -store i32 %r200, i32* %r202 -%r203 = lshr i192 %r163, 32 -%r204 = trunc i192 %r203 to i32 -%r206 = getelementptr i32, i32* %r176, i32 1 -store i32 %r204, i32* %r206 -%r207 = lshr i192 %r203, 32 -%r208 = trunc i192 %r207 to i32 -%r210 = getelementptr i32, i32* %r176, i32 2 -store i32 %r208, i32* %r210 -%r211 = lshr i192 %r207, 32 -%r212 = trunc i192 %r211 to i32 -%r214 = getelementptr i32, i32* %r176, i32 3 -store i32 %r212, i32* %r214 -%r215 = lshr i192 %r211, 32 -%r216 = trunc i192 %r215 to i32 -%r218 = getelementptr i32, i32* %r176, i32 4 -store i32 %r216, i32* %r218 -%r219 = lshr i192 %r215, 32 -%r220 = trunc i192 %r219 to i32 -%r222 = getelementptr i32, i32* %r176, i32 5 -store i32 %r220, i32* %r222 -call void @mcl_fpDbl_mulPre6L(i32* %r161, i32* %r174, i32* %r176) -%r223 = load i32, i32* %r161 -%r224 = zext i32 %r223 to i64 -%r226 = getelementptr i32, i32* %r161, i32 1 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i64 -%r229 = shl i64 %r228, 32 -%r230 = or i64 %r224, %r229 -%r231 = zext i64 %r230 to i96 -%r233 = getelementptr i32, i32* %r161, i32 2 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i96 -%r236 = shl i96 %r235, 64 -%r237 = or i96 %r231, %r236 -%r238 = zext i96 %r237 to i128 -%r240 = getelementptr i32, i32* %r161, i32 3 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i128 -%r243 = shl i128 %r242, 96 -%r244 = or i128 %r238, %r243 -%r245 = zext i128 %r244 to i160 -%r247 = getelementptr i32, i32* %r161, i32 4 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i160 -%r250 = shl i160 %r249, 128 -%r251 = or i160 %r245, %r250 -%r252 = zext i160 %r251 to i192 -%r254 = getelementptr i32, i32* %r161, i32 5 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i192 -%r257 = shl i192 %r256, 160 -%r258 = or i192 %r252, %r257 -%r259 = zext i192 %r258 to i224 -%r261 = getelementptr i32, i32* %r161, i32 6 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i224 -%r264 = shl i224 %r263, 192 -%r265 = or i224 %r259, %r264 -%r266 = zext i224 %r265 to i256 -%r268 = getelementptr i32, i32* %r161, i32 7 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i256 -%r271 = shl i256 %r270, 224 -%r272 = or i256 %r266, %r271 -%r273 = zext i256 %r272 to i288 -%r275 = getelementptr i32, i32* %r161, i32 8 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i288 -%r278 = shl i288 %r277, 256 -%r279 = or i288 %r273, %r278 -%r280 = zext i288 %r279 to i320 -%r282 = getelementptr i32, i32* %r161, i32 9 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i320 -%r285 = shl i320 %r284, 288 -%r286 = or i320 %r280, %r285 -%r287 = zext i320 %r286 to i352 -%r289 = getelementptr i32, i32* %r161, i32 10 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i352 -%r292 = shl i352 %r291, 320 -%r293 = or i352 %r287, %r292 -%r294 = zext i352 %r293 to i384 -%r296 = getelementptr i32, i32* %r161, i32 11 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i384 -%r299 = shl i384 %r298, 352 -%r300 = or i384 %r294, %r299 -%r301 = zext i384 %r300 to i416 -%r302 = zext i1 %r168 to i416 -%r303 = shl i416 %r302, 384 -%r304 = or i416 %r301, %r303 -%r305 = zext i192 %r170 to i416 -%r306 = zext i192 %r172 to i416 -%r307 = shl i416 %r305, 192 -%r308 = shl i416 %r306, 192 -%r309 = add i416 %r304, %r307 -%r310 = add i416 %r309, %r308 -%r311 = load i32, i32* %r1 -%r312 = zext i32 %r311 to i64 -%r314 = getelementptr i32, i32* %r1, i32 1 -%r315 = load i32, i32* %r314 -%r316 = zext i32 %r315 to i64 -%r317 = shl i64 %r316, 32 -%r318 = or i64 %r312, %r317 -%r319 = zext i64 %r318 to i96 -%r321 = getelementptr i32, i32* %r1, i32 2 -%r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i96 -%r324 = shl i96 %r323, 64 -%r325 = or i96 %r319, %r324 -%r326 = zext i96 %r325 to i128 -%r328 = getelementptr i32, i32* %r1, i32 3 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i128 -%r331 = shl i128 %r330, 96 -%r332 = or i128 %r326, %r331 -%r333 = zext i128 %r332 to i160 -%r335 = getelementptr i32, i32* %r1, i32 4 -%r336 = load i32, i32* %r335 -%r337 = zext i32 %r336 to i160 -%r338 = shl i160 %r337, 128 -%r339 = or i160 %r333, %r338 -%r340 = zext i160 %r339 to i192 -%r342 = getelementptr i32, i32* %r1, i32 5 -%r343 = load i32, i32* %r342 -%r344 = zext i32 %r343 to i192 -%r345 = shl i192 %r344, 160 -%r346 = or i192 %r340, %r345 -%r347 = zext i192 %r346 to i224 -%r349 = getelementptr i32, i32* %r1, i32 6 -%r350 = load i32, i32* %r349 -%r351 = zext i32 %r350 to i224 -%r352 = shl i224 %r351, 192 -%r353 = or i224 %r347, %r352 -%r354 = zext i224 %r353 to i256 -%r356 = getelementptr i32, i32* %r1, i32 7 -%r357 = load i32, i32* %r356 -%r358 = zext i32 %r357 to i256 -%r359 = shl i256 %r358, 224 -%r360 = or i256 %r354, %r359 -%r361 = zext i256 %r360 to i288 -%r363 = getelementptr i32, i32* %r1, i32 8 -%r364 = load i32, i32* %r363 -%r365 = zext i32 %r364 to i288 -%r366 = shl i288 %r365, 256 -%r367 = or i288 %r361, %r366 -%r368 = zext i288 %r367 to i320 -%r370 = getelementptr i32, i32* %r1, i32 9 -%r371 = load i32, i32* %r370 -%r372 = zext i32 %r371 to i320 -%r373 = shl i320 %r372, 288 -%r374 = or i320 %r368, %r373 -%r375 = zext i320 %r374 to i352 -%r377 = getelementptr i32, i32* %r1, i32 10 -%r378 = load i32, i32* %r377 -%r379 = zext i32 %r378 to i352 -%r380 = shl i352 %r379, 320 -%r381 = or i352 %r375, %r380 -%r382 = zext i352 %r381 to i384 -%r384 = getelementptr i32, i32* %r1, i32 11 -%r385 = load i32, i32* %r384 -%r386 = zext i32 %r385 to i384 -%r387 = shl i384 %r386, 352 -%r388 = or i384 %r382, %r387 -%r389 = zext i384 %r388 to i416 -%r390 = sub i416 %r310, %r389 -%r392 = getelementptr i32, i32* %r1, i32 12 -%r393 = load i32, i32* %r392 -%r394 = zext i32 %r393 to i64 -%r396 = getelementptr i32, i32* %r392, i32 1 -%r397 = load i32, i32* %r396 -%r398 = zext i32 %r397 to i64 -%r399 = shl i64 %r398, 32 -%r400 = or i64 %r394, %r399 -%r401 = zext i64 %r400 to i96 -%r403 = getelementptr i32, i32* %r392, i32 2 -%r404 = load i32, i32* %r403 -%r405 = zext i32 %r404 to i96 -%r406 = shl i96 %r405, 64 -%r407 = or i96 %r401, %r406 -%r408 = zext i96 %r407 to i128 -%r410 = getelementptr i32, i32* %r392, i32 3 -%r411 = load i32, i32* %r410 -%r412 = zext i32 %r411 to i128 -%r413 = shl i128 %r412, 96 -%r414 = or i128 %r408, %r413 -%r415 = zext i128 %r414 to i160 -%r417 = getelementptr i32, i32* %r392, i32 4 -%r418 = load i32, i32* %r417 -%r419 = zext i32 %r418 to i160 -%r420 = shl i160 %r419, 128 -%r421 = or i160 %r415, %r420 -%r422 = zext i160 %r421 to i192 -%r424 = getelementptr i32, i32* %r392, i32 5 -%r425 = load i32, i32* %r424 -%r426 = zext i32 %r425 to i192 -%r427 = shl i192 %r426, 160 -%r428 = or i192 %r422, %r427 -%r429 = zext i192 %r428 to i224 -%r431 = getelementptr i32, i32* %r392, i32 6 -%r432 = load i32, i32* %r431 -%r433 = zext i32 %r432 to i224 -%r434 = shl i224 %r433, 192 -%r435 = or i224 %r429, %r434 -%r436 = zext i224 %r435 to i256 -%r438 = getelementptr i32, i32* %r392, i32 7 -%r439 = load i32, i32* %r438 -%r440 = zext i32 %r439 to i256 -%r441 = shl i256 %r440, 224 -%r442 = or i256 %r436, %r441 -%r443 = zext i256 %r442 to i288 -%r445 = getelementptr i32, i32* %r392, i32 8 -%r446 = load i32, i32* %r445 -%r447 = zext i32 %r446 to i288 -%r448 = shl i288 %r447, 256 -%r449 = or i288 %r443, %r448 -%r450 = zext i288 %r449 to i320 -%r452 = getelementptr i32, i32* %r392, i32 9 -%r453 = load i32, i32* %r452 -%r454 = zext i32 %r453 to i320 -%r455 = shl i320 %r454, 288 -%r456 = or i320 %r450, %r455 -%r457 = zext i320 %r456 to i352 -%r459 = getelementptr i32, i32* %r392, i32 10 -%r460 = load i32, i32* %r459 -%r461 = zext i32 %r460 to i352 -%r462 = shl i352 %r461, 320 -%r463 = or i352 %r457, %r462 -%r464 = zext i352 %r463 to i384 -%r466 = getelementptr i32, i32* %r392, i32 11 -%r467 = load i32, i32* %r466 -%r468 = zext i32 %r467 to i384 -%r469 = shl i384 %r468, 352 -%r470 = or i384 %r464, %r469 -%r471 = zext i384 %r470 to i416 -%r472 = sub i416 %r390, %r471 -%r473 = zext i416 %r472 to i576 -%r475 = getelementptr i32, i32* %r1, i32 6 -%r476 = load i32, i32* %r475 -%r477 = zext i32 %r476 to i64 -%r479 = getelementptr i32, i32* %r475, i32 1 -%r480 = load i32, i32* %r479 -%r481 = zext i32 %r480 to i64 -%r482 = shl i64 %r481, 32 -%r483 = or i64 %r477, %r482 -%r484 = zext i64 %r483 to i96 -%r486 = getelementptr i32, i32* %r475, i32 2 -%r487 = load i32, i32* %r486 -%r488 = zext i32 %r487 to i96 -%r489 = shl i96 %r488, 64 -%r490 = or i96 %r484, %r489 -%r491 = zext i96 %r490 to i128 -%r493 = getelementptr i32, i32* %r475, i32 3 -%r494 = load i32, i32* %r493 -%r495 = zext i32 %r494 to i128 -%r496 = shl i128 %r495, 96 -%r497 = or i128 %r491, %r496 -%r498 = zext i128 %r497 to i160 -%r500 = getelementptr i32, i32* %r475, i32 4 -%r501 = load i32, i32* %r500 -%r502 = zext i32 %r501 to i160 -%r503 = shl i160 %r502, 128 -%r504 = or i160 %r498, %r503 -%r505 = zext i160 %r504 to i192 -%r507 = getelementptr i32, i32* %r475, i32 5 -%r508 = load i32, i32* %r507 -%r509 = zext i32 %r508 to i192 -%r510 = shl i192 %r509, 160 -%r511 = or i192 %r505, %r510 -%r512 = zext i192 %r511 to i224 -%r514 = getelementptr i32, i32* %r475, i32 6 -%r515 = load i32, i32* %r514 -%r516 = zext i32 %r515 to i224 -%r517 = shl i224 %r516, 192 -%r518 = or i224 %r512, %r517 -%r519 = zext i224 %r518 to i256 -%r521 = getelementptr i32, i32* %r475, i32 7 -%r522 = load i32, i32* %r521 -%r523 = zext i32 %r522 to i256 -%r524 = shl i256 %r523, 224 -%r525 = or i256 %r519, %r524 -%r526 = zext i256 %r525 to i288 -%r528 = getelementptr i32, i32* %r475, i32 8 -%r529 = load i32, i32* %r528 -%r530 = zext i32 %r529 to i288 -%r531 = shl i288 %r530, 256 -%r532 = or i288 %r526, %r531 -%r533 = zext i288 %r532 to i320 -%r535 = getelementptr i32, i32* %r475, i32 9 -%r536 = load i32, i32* %r535 -%r537 = zext i32 %r536 to i320 -%r538 = shl i320 %r537, 288 -%r539 = or i320 %r533, %r538 -%r540 = zext i320 %r539 to i352 -%r542 = getelementptr i32, i32* %r475, i32 10 -%r543 = load i32, i32* %r542 -%r544 = zext i32 %r543 to i352 -%r545 = shl i352 %r544, 320 -%r546 = or i352 %r540, %r545 -%r547 = zext i352 %r546 to i384 -%r549 = getelementptr i32, i32* %r475, i32 11 -%r550 = load i32, i32* %r549 -%r551 = zext i32 %r550 to i384 -%r552 = shl i384 %r551, 352 -%r553 = or i384 %r547, %r552 -%r554 = zext i384 %r553 to i416 -%r556 = getelementptr i32, i32* %r475, i32 12 -%r557 = load i32, i32* %r556 -%r558 = zext i32 %r557 to i416 -%r559 = shl i416 %r558, 384 -%r560 = or i416 %r554, %r559 -%r561 = zext i416 %r560 to i448 -%r563 = getelementptr i32, i32* %r475, i32 13 -%r564 = load i32, i32* %r563 -%r565 = zext i32 %r564 to i448 -%r566 = shl i448 %r565, 416 -%r567 = or i448 %r561, %r566 -%r568 = zext i448 %r567 to i480 -%r570 = getelementptr i32, i32* %r475, i32 14 -%r571 = load i32, i32* %r570 -%r572 = zext i32 %r571 to i480 -%r573 = shl i480 %r572, 448 -%r574 = or i480 %r568, %r573 -%r575 = zext i480 %r574 to i512 -%r577 = getelementptr i32, i32* %r475, i32 15 -%r578 = load i32, i32* %r577 -%r579 = zext i32 %r578 to i512 -%r580 = shl i512 %r579, 480 -%r581 = or i512 %r575, %r580 -%r582 = zext i512 %r581 to i544 -%r584 = getelementptr i32, i32* %r475, i32 16 -%r585 = load i32, i32* %r584 -%r586 = zext i32 %r585 to i544 -%r587 = shl i544 %r586, 512 -%r588 = or i544 %r582, %r587 -%r589 = zext i544 %r588 to i576 -%r591 = getelementptr i32, i32* %r475, i32 17 -%r592 = load i32, i32* %r591 -%r593 = zext i32 %r592 to i576 -%r594 = shl i576 %r593, 544 -%r595 = or i576 %r589, %r594 -%r596 = add i576 %r473, %r595 -%r598 = getelementptr i32, i32* %r1, i32 6 -%r599 = trunc i576 %r596 to i32 -%r601 = getelementptr i32, i32* %r598, i32 0 -store i32 %r599, i32* %r601 -%r602 = lshr i576 %r596, 32 -%r603 = trunc i576 %r602 to i32 -%r605 = getelementptr i32, i32* %r598, i32 1 -store i32 %r603, i32* %r605 -%r606 = lshr i576 %r602, 32 -%r607 = trunc i576 %r606 to i32 -%r609 = getelementptr i32, i32* %r598, i32 2 -store i32 %r607, i32* %r609 -%r610 = lshr i576 %r606, 32 -%r611 = trunc i576 %r610 to i32 -%r613 = getelementptr i32, i32* %r598, i32 3 -store i32 %r611, i32* %r613 -%r614 = lshr i576 %r610, 32 -%r615 = trunc i576 %r614 to i32 -%r617 = getelementptr i32, i32* %r598, i32 4 -store i32 %r615, i32* %r617 -%r618 = lshr i576 %r614, 32 -%r619 = trunc i576 %r618 to i32 -%r621 = getelementptr i32, i32* %r598, i32 5 -store i32 %r619, i32* %r621 -%r622 = lshr i576 %r618, 32 -%r623 = trunc i576 %r622 to i32 -%r625 = getelementptr i32, i32* %r598, i32 6 -store i32 %r623, i32* %r625 -%r626 = lshr i576 %r622, 32 -%r627 = trunc i576 %r626 to i32 -%r629 = getelementptr i32, i32* %r598, i32 7 -store i32 %r627, i32* %r629 -%r630 = lshr i576 %r626, 32 -%r631 = trunc i576 %r630 to i32 -%r633 = getelementptr i32, i32* %r598, i32 8 -store i32 %r631, i32* %r633 -%r634 = lshr i576 %r630, 32 -%r635 = trunc i576 %r634 to i32 -%r637 = getelementptr i32, i32* %r598, i32 9 -store i32 %r635, i32* %r637 -%r638 = lshr i576 %r634, 32 -%r639 = trunc i576 %r638 to i32 -%r641 = getelementptr i32, i32* %r598, i32 10 -store i32 %r639, i32* %r641 -%r642 = lshr i576 %r638, 32 -%r643 = trunc i576 %r642 to i32 -%r645 = getelementptr i32, i32* %r598, i32 11 -store i32 %r643, i32* %r645 -%r646 = lshr i576 %r642, 32 -%r647 = trunc i576 %r646 to i32 -%r649 = getelementptr i32, i32* %r598, i32 12 -store i32 %r647, i32* %r649 -%r650 = lshr i576 %r646, 32 -%r651 = trunc i576 %r650 to i32 -%r653 = getelementptr i32, i32* %r598, i32 13 -store i32 %r651, i32* %r653 -%r654 = lshr i576 %r650, 32 -%r655 = trunc i576 %r654 to i32 -%r657 = getelementptr i32, i32* %r598, i32 14 -store i32 %r655, i32* %r657 -%r658 = lshr i576 %r654, 32 -%r659 = trunc i576 %r658 to i32 -%r661 = getelementptr i32, i32* %r598, i32 15 -store i32 %r659, i32* %r661 -%r662 = lshr i576 %r658, 32 -%r663 = trunc i576 %r662 to i32 -%r665 = getelementptr i32, i32* %r598, i32 16 -store i32 %r663, i32* %r665 -%r666 = lshr i576 %r662, 32 -%r667 = trunc i576 %r666 to i32 -%r669 = getelementptr i32, i32* %r598, i32 17 -store i32 %r667, i32* %r669 -ret void -} -define void @mcl_fpDbl_sqrPre12L(i32* noalias %r1, i32* noalias %r2) -{ -%r4 = getelementptr i32, i32* %r2, i32 6 -%r6 = getelementptr i32, i32* %r2, i32 6 -%r8 = getelementptr i32, i32* %r1, i32 12 -call void @mcl_fpDbl_mulPre6L(i32* %r1, i32* %r2, i32* %r2) -call void @mcl_fpDbl_mulPre6L(i32* %r8, i32* %r4, i32* %r6) -%r9 = load i32, i32* %r4 -%r10 = zext i32 %r9 to i64 -%r12 = getelementptr i32, i32* %r4, i32 1 -%r13 = load i32, i32* %r12 -%r14 = zext i32 %r13 to i64 -%r15 = shl i64 %r14, 32 -%r16 = or i64 %r10, %r15 -%r17 = zext i64 %r16 to i96 -%r19 = getelementptr i32, i32* %r4, i32 2 -%r20 = load i32, i32* %r19 -%r21 = zext i32 %r20 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r17, %r22 -%r24 = zext i96 %r23 to i128 -%r26 = getelementptr i32, i32* %r4, i32 3 -%r27 = load i32, i32* %r26 -%r28 = zext i32 %r27 to i128 -%r29 = shl i128 %r28, 96 -%r30 = or i128 %r24, %r29 -%r31 = zext i128 %r30 to i160 -%r33 = getelementptr i32, i32* %r4, i32 4 -%r34 = load i32, i32* %r33 -%r35 = zext i32 %r34 to i160 -%r36 = shl i160 %r35, 128 -%r37 = or i160 %r31, %r36 -%r38 = zext i160 %r37 to i192 -%r40 = getelementptr i32, i32* %r4, i32 5 -%r41 = load i32, i32* %r40 -%r42 = zext i32 %r41 to i192 -%r43 = shl i192 %r42, 160 -%r44 = or i192 %r38, %r43 -%r45 = zext i192 %r44 to i224 -%r46 = load i32, i32* %r2 -%r47 = zext i32 %r46 to i64 -%r49 = getelementptr i32, i32* %r2, i32 1 -%r50 = load i32, i32* %r49 -%r51 = zext i32 %r50 to i64 -%r52 = shl i64 %r51, 32 -%r53 = or i64 %r47, %r52 -%r54 = zext i64 %r53 to i96 -%r56 = getelementptr i32, i32* %r2, i32 2 -%r57 = load i32, i32* %r56 -%r58 = zext i32 %r57 to i96 -%r59 = shl i96 %r58, 64 -%r60 = or i96 %r54, %r59 -%r61 = zext i96 %r60 to i128 -%r63 = getelementptr i32, i32* %r2, i32 3 -%r64 = load i32, i32* %r63 -%r65 = zext i32 %r64 to i128 -%r66 = shl i128 %r65, 96 -%r67 = or i128 %r61, %r66 -%r68 = zext i128 %r67 to i160 -%r70 = getelementptr i32, i32* %r2, i32 4 -%r71 = load i32, i32* %r70 -%r72 = zext i32 %r71 to i160 -%r73 = shl i160 %r72, 128 -%r74 = or i160 %r68, %r73 -%r75 = zext i160 %r74 to i192 -%r77 = getelementptr i32, i32* %r2, i32 5 -%r78 = load i32, i32* %r77 -%r79 = zext i32 %r78 to i192 -%r80 = shl i192 %r79, 160 -%r81 = or i192 %r75, %r80 -%r82 = zext i192 %r81 to i224 -%r83 = load i32, i32* %r6 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r6, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r6, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r6, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r6, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r6, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r120 = load i32, i32* %r2 -%r121 = zext i32 %r120 to i64 -%r123 = getelementptr i32, i32* %r2, i32 1 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i64 -%r126 = shl i64 %r125, 32 -%r127 = or i64 %r121, %r126 -%r128 = zext i64 %r127 to i96 -%r130 = getelementptr i32, i32* %r2, i32 2 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i96 -%r133 = shl i96 %r132, 64 -%r134 = or i96 %r128, %r133 -%r135 = zext i96 %r134 to i128 -%r137 = getelementptr i32, i32* %r2, i32 3 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i128 -%r140 = shl i128 %r139, 96 -%r141 = or i128 %r135, %r140 -%r142 = zext i128 %r141 to i160 -%r144 = getelementptr i32, i32* %r2, i32 4 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i160 -%r147 = shl i160 %r146, 128 -%r148 = or i160 %r142, %r147 -%r149 = zext i160 %r148 to i192 -%r151 = getelementptr i32, i32* %r2, i32 5 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i192 -%r154 = shl i192 %r153, 160 -%r155 = or i192 %r149, %r154 -%r156 = zext i192 %r155 to i224 -%r157 = add i224 %r45, %r82 -%r158 = add i224 %r119, %r156 -%r160 = alloca i32, i32 12 -%r161 = trunc i224 %r157 to i192 -%r162 = trunc i224 %r158 to i192 -%r163 = lshr i224 %r157, 192 -%r164 = trunc i224 %r163 to i1 -%r165 = lshr i224 %r158, 192 -%r166 = trunc i224 %r165 to i1 -%r167 = and i1 %r164, %r166 -%r169 = select i1 %r164, i192 %r162, i192 0 -%r171 = select i1 %r166, i192 %r161, i192 0 -%r173 = alloca i32, i32 6 -%r175 = alloca i32, i32 6 -%r176 = trunc i192 %r161 to i32 -%r178 = getelementptr i32, i32* %r173, i32 0 -store i32 %r176, i32* %r178 -%r179 = lshr i192 %r161, 32 -%r180 = trunc i192 %r179 to i32 -%r182 = getelementptr i32, i32* %r173, i32 1 -store i32 %r180, i32* %r182 -%r183 = lshr i192 %r179, 32 -%r184 = trunc i192 %r183 to i32 -%r186 = getelementptr i32, i32* %r173, i32 2 -store i32 %r184, i32* %r186 -%r187 = lshr i192 %r183, 32 -%r188 = trunc i192 %r187 to i32 -%r190 = getelementptr i32, i32* %r173, i32 3 -store i32 %r188, i32* %r190 -%r191 = lshr i192 %r187, 32 -%r192 = trunc i192 %r191 to i32 -%r194 = getelementptr i32, i32* %r173, i32 4 -store i32 %r192, i32* %r194 -%r195 = lshr i192 %r191, 32 -%r196 = trunc i192 %r195 to i32 -%r198 = getelementptr i32, i32* %r173, i32 5 -store i32 %r196, i32* %r198 -%r199 = trunc i192 %r162 to i32 -%r201 = getelementptr i32, i32* %r175, i32 0 -store i32 %r199, i32* %r201 -%r202 = lshr i192 %r162, 32 -%r203 = trunc i192 %r202 to i32 -%r205 = getelementptr i32, i32* %r175, i32 1 -store i32 %r203, i32* %r205 -%r206 = lshr i192 %r202, 32 -%r207 = trunc i192 %r206 to i32 -%r209 = getelementptr i32, i32* %r175, i32 2 -store i32 %r207, i32* %r209 -%r210 = lshr i192 %r206, 32 -%r211 = trunc i192 %r210 to i32 -%r213 = getelementptr i32, i32* %r175, i32 3 -store i32 %r211, i32* %r213 -%r214 = lshr i192 %r210, 32 -%r215 = trunc i192 %r214 to i32 -%r217 = getelementptr i32, i32* %r175, i32 4 -store i32 %r215, i32* %r217 -%r218 = lshr i192 %r214, 32 -%r219 = trunc i192 %r218 to i32 -%r221 = getelementptr i32, i32* %r175, i32 5 -store i32 %r219, i32* %r221 -call void @mcl_fpDbl_mulPre6L(i32* %r160, i32* %r173, i32* %r175) -%r222 = load i32, i32* %r160 -%r223 = zext i32 %r222 to i64 -%r225 = getelementptr i32, i32* %r160, i32 1 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i64 -%r228 = shl i64 %r227, 32 -%r229 = or i64 %r223, %r228 -%r230 = zext i64 %r229 to i96 -%r232 = getelementptr i32, i32* %r160, i32 2 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i96 -%r235 = shl i96 %r234, 64 -%r236 = or i96 %r230, %r235 -%r237 = zext i96 %r236 to i128 -%r239 = getelementptr i32, i32* %r160, i32 3 -%r240 = load i32, i32* %r239 -%r241 = zext i32 %r240 to i128 -%r242 = shl i128 %r241, 96 -%r243 = or i128 %r237, %r242 -%r244 = zext i128 %r243 to i160 -%r246 = getelementptr i32, i32* %r160, i32 4 -%r247 = load i32, i32* %r246 -%r248 = zext i32 %r247 to i160 -%r249 = shl i160 %r248, 128 -%r250 = or i160 %r244, %r249 -%r251 = zext i160 %r250 to i192 -%r253 = getelementptr i32, i32* %r160, i32 5 -%r254 = load i32, i32* %r253 -%r255 = zext i32 %r254 to i192 -%r256 = shl i192 %r255, 160 -%r257 = or i192 %r251, %r256 -%r258 = zext i192 %r257 to i224 -%r260 = getelementptr i32, i32* %r160, i32 6 -%r261 = load i32, i32* %r260 -%r262 = zext i32 %r261 to i224 -%r263 = shl i224 %r262, 192 -%r264 = or i224 %r258, %r263 -%r265 = zext i224 %r264 to i256 -%r267 = getelementptr i32, i32* %r160, i32 7 -%r268 = load i32, i32* %r267 -%r269 = zext i32 %r268 to i256 -%r270 = shl i256 %r269, 224 -%r271 = or i256 %r265, %r270 -%r272 = zext i256 %r271 to i288 -%r274 = getelementptr i32, i32* %r160, i32 8 -%r275 = load i32, i32* %r274 -%r276 = zext i32 %r275 to i288 -%r277 = shl i288 %r276, 256 -%r278 = or i288 %r272, %r277 -%r279 = zext i288 %r278 to i320 -%r281 = getelementptr i32, i32* %r160, i32 9 -%r282 = load i32, i32* %r281 -%r283 = zext i32 %r282 to i320 -%r284 = shl i320 %r283, 288 -%r285 = or i320 %r279, %r284 -%r286 = zext i320 %r285 to i352 -%r288 = getelementptr i32, i32* %r160, i32 10 -%r289 = load i32, i32* %r288 -%r290 = zext i32 %r289 to i352 -%r291 = shl i352 %r290, 320 -%r292 = or i352 %r286, %r291 -%r293 = zext i352 %r292 to i384 -%r295 = getelementptr i32, i32* %r160, i32 11 -%r296 = load i32, i32* %r295 -%r297 = zext i32 %r296 to i384 -%r298 = shl i384 %r297, 352 -%r299 = or i384 %r293, %r298 -%r300 = zext i384 %r299 to i416 -%r301 = zext i1 %r167 to i416 -%r302 = shl i416 %r301, 384 -%r303 = or i416 %r300, %r302 -%r304 = zext i192 %r169 to i416 -%r305 = zext i192 %r171 to i416 -%r306 = shl i416 %r304, 192 -%r307 = shl i416 %r305, 192 -%r308 = add i416 %r303, %r306 -%r309 = add i416 %r308, %r307 -%r310 = load i32, i32* %r1 -%r311 = zext i32 %r310 to i64 -%r313 = getelementptr i32, i32* %r1, i32 1 -%r314 = load i32, i32* %r313 -%r315 = zext i32 %r314 to i64 -%r316 = shl i64 %r315, 32 -%r317 = or i64 %r311, %r316 -%r318 = zext i64 %r317 to i96 -%r320 = getelementptr i32, i32* %r1, i32 2 -%r321 = load i32, i32* %r320 -%r322 = zext i32 %r321 to i96 -%r323 = shl i96 %r322, 64 -%r324 = or i96 %r318, %r323 -%r325 = zext i96 %r324 to i128 -%r327 = getelementptr i32, i32* %r1, i32 3 -%r328 = load i32, i32* %r327 -%r329 = zext i32 %r328 to i128 -%r330 = shl i128 %r329, 96 -%r331 = or i128 %r325, %r330 -%r332 = zext i128 %r331 to i160 -%r334 = getelementptr i32, i32* %r1, i32 4 -%r335 = load i32, i32* %r334 -%r336 = zext i32 %r335 to i160 -%r337 = shl i160 %r336, 128 -%r338 = or i160 %r332, %r337 -%r339 = zext i160 %r338 to i192 -%r341 = getelementptr i32, i32* %r1, i32 5 -%r342 = load i32, i32* %r341 -%r343 = zext i32 %r342 to i192 -%r344 = shl i192 %r343, 160 -%r345 = or i192 %r339, %r344 -%r346 = zext i192 %r345 to i224 -%r348 = getelementptr i32, i32* %r1, i32 6 -%r349 = load i32, i32* %r348 -%r350 = zext i32 %r349 to i224 -%r351 = shl i224 %r350, 192 -%r352 = or i224 %r346, %r351 -%r353 = zext i224 %r352 to i256 -%r355 = getelementptr i32, i32* %r1, i32 7 -%r356 = load i32, i32* %r355 -%r357 = zext i32 %r356 to i256 -%r358 = shl i256 %r357, 224 -%r359 = or i256 %r353, %r358 -%r360 = zext i256 %r359 to i288 -%r362 = getelementptr i32, i32* %r1, i32 8 -%r363 = load i32, i32* %r362 -%r364 = zext i32 %r363 to i288 -%r365 = shl i288 %r364, 256 -%r366 = or i288 %r360, %r365 -%r367 = zext i288 %r366 to i320 -%r369 = getelementptr i32, i32* %r1, i32 9 -%r370 = load i32, i32* %r369 -%r371 = zext i32 %r370 to i320 -%r372 = shl i320 %r371, 288 -%r373 = or i320 %r367, %r372 -%r374 = zext i320 %r373 to i352 -%r376 = getelementptr i32, i32* %r1, i32 10 -%r377 = load i32, i32* %r376 -%r378 = zext i32 %r377 to i352 -%r379 = shl i352 %r378, 320 -%r380 = or i352 %r374, %r379 -%r381 = zext i352 %r380 to i384 -%r383 = getelementptr i32, i32* %r1, i32 11 -%r384 = load i32, i32* %r383 -%r385 = zext i32 %r384 to i384 -%r386 = shl i384 %r385, 352 -%r387 = or i384 %r381, %r386 -%r388 = zext i384 %r387 to i416 -%r389 = sub i416 %r309, %r388 -%r391 = getelementptr i32, i32* %r1, i32 12 -%r392 = load i32, i32* %r391 -%r393 = zext i32 %r392 to i64 -%r395 = getelementptr i32, i32* %r391, i32 1 -%r396 = load i32, i32* %r395 -%r397 = zext i32 %r396 to i64 -%r398 = shl i64 %r397, 32 -%r399 = or i64 %r393, %r398 -%r400 = zext i64 %r399 to i96 -%r402 = getelementptr i32, i32* %r391, i32 2 -%r403 = load i32, i32* %r402 -%r404 = zext i32 %r403 to i96 -%r405 = shl i96 %r404, 64 -%r406 = or i96 %r400, %r405 -%r407 = zext i96 %r406 to i128 -%r409 = getelementptr i32, i32* %r391, i32 3 -%r410 = load i32, i32* %r409 -%r411 = zext i32 %r410 to i128 -%r412 = shl i128 %r411, 96 -%r413 = or i128 %r407, %r412 -%r414 = zext i128 %r413 to i160 -%r416 = getelementptr i32, i32* %r391, i32 4 -%r417 = load i32, i32* %r416 -%r418 = zext i32 %r417 to i160 -%r419 = shl i160 %r418, 128 -%r420 = or i160 %r414, %r419 -%r421 = zext i160 %r420 to i192 -%r423 = getelementptr i32, i32* %r391, i32 5 -%r424 = load i32, i32* %r423 -%r425 = zext i32 %r424 to i192 -%r426 = shl i192 %r425, 160 -%r427 = or i192 %r421, %r426 -%r428 = zext i192 %r427 to i224 -%r430 = getelementptr i32, i32* %r391, i32 6 -%r431 = load i32, i32* %r430 -%r432 = zext i32 %r431 to i224 -%r433 = shl i224 %r432, 192 -%r434 = or i224 %r428, %r433 -%r435 = zext i224 %r434 to i256 -%r437 = getelementptr i32, i32* %r391, i32 7 -%r438 = load i32, i32* %r437 -%r439 = zext i32 %r438 to i256 -%r440 = shl i256 %r439, 224 -%r441 = or i256 %r435, %r440 -%r442 = zext i256 %r441 to i288 -%r444 = getelementptr i32, i32* %r391, i32 8 -%r445 = load i32, i32* %r444 -%r446 = zext i32 %r445 to i288 -%r447 = shl i288 %r446, 256 -%r448 = or i288 %r442, %r447 -%r449 = zext i288 %r448 to i320 -%r451 = getelementptr i32, i32* %r391, i32 9 -%r452 = load i32, i32* %r451 -%r453 = zext i32 %r452 to i320 -%r454 = shl i320 %r453, 288 -%r455 = or i320 %r449, %r454 -%r456 = zext i320 %r455 to i352 -%r458 = getelementptr i32, i32* %r391, i32 10 -%r459 = load i32, i32* %r458 -%r460 = zext i32 %r459 to i352 -%r461 = shl i352 %r460, 320 -%r462 = or i352 %r456, %r461 -%r463 = zext i352 %r462 to i384 -%r465 = getelementptr i32, i32* %r391, i32 11 -%r466 = load i32, i32* %r465 -%r467 = zext i32 %r466 to i384 -%r468 = shl i384 %r467, 352 -%r469 = or i384 %r463, %r468 -%r470 = zext i384 %r469 to i416 -%r471 = sub i416 %r389, %r470 -%r472 = zext i416 %r471 to i576 -%r474 = getelementptr i32, i32* %r1, i32 6 -%r475 = load i32, i32* %r474 -%r476 = zext i32 %r475 to i64 -%r478 = getelementptr i32, i32* %r474, i32 1 -%r479 = load i32, i32* %r478 -%r480 = zext i32 %r479 to i64 -%r481 = shl i64 %r480, 32 -%r482 = or i64 %r476, %r481 -%r483 = zext i64 %r482 to i96 -%r485 = getelementptr i32, i32* %r474, i32 2 -%r486 = load i32, i32* %r485 -%r487 = zext i32 %r486 to i96 -%r488 = shl i96 %r487, 64 -%r489 = or i96 %r483, %r488 -%r490 = zext i96 %r489 to i128 -%r492 = getelementptr i32, i32* %r474, i32 3 -%r493 = load i32, i32* %r492 -%r494 = zext i32 %r493 to i128 -%r495 = shl i128 %r494, 96 -%r496 = or i128 %r490, %r495 -%r497 = zext i128 %r496 to i160 -%r499 = getelementptr i32, i32* %r474, i32 4 -%r500 = load i32, i32* %r499 -%r501 = zext i32 %r500 to i160 -%r502 = shl i160 %r501, 128 -%r503 = or i160 %r497, %r502 -%r504 = zext i160 %r503 to i192 -%r506 = getelementptr i32, i32* %r474, i32 5 -%r507 = load i32, i32* %r506 -%r508 = zext i32 %r507 to i192 -%r509 = shl i192 %r508, 160 -%r510 = or i192 %r504, %r509 -%r511 = zext i192 %r510 to i224 -%r513 = getelementptr i32, i32* %r474, i32 6 -%r514 = load i32, i32* %r513 -%r515 = zext i32 %r514 to i224 -%r516 = shl i224 %r515, 192 -%r517 = or i224 %r511, %r516 -%r518 = zext i224 %r517 to i256 -%r520 = getelementptr i32, i32* %r474, i32 7 -%r521 = load i32, i32* %r520 -%r522 = zext i32 %r521 to i256 -%r523 = shl i256 %r522, 224 -%r524 = or i256 %r518, %r523 -%r525 = zext i256 %r524 to i288 -%r527 = getelementptr i32, i32* %r474, i32 8 -%r528 = load i32, i32* %r527 -%r529 = zext i32 %r528 to i288 -%r530 = shl i288 %r529, 256 -%r531 = or i288 %r525, %r530 -%r532 = zext i288 %r531 to i320 -%r534 = getelementptr i32, i32* %r474, i32 9 -%r535 = load i32, i32* %r534 -%r536 = zext i32 %r535 to i320 -%r537 = shl i320 %r536, 288 -%r538 = or i320 %r532, %r537 -%r539 = zext i320 %r538 to i352 -%r541 = getelementptr i32, i32* %r474, i32 10 -%r542 = load i32, i32* %r541 -%r543 = zext i32 %r542 to i352 -%r544 = shl i352 %r543, 320 -%r545 = or i352 %r539, %r544 -%r546 = zext i352 %r545 to i384 -%r548 = getelementptr i32, i32* %r474, i32 11 -%r549 = load i32, i32* %r548 -%r550 = zext i32 %r549 to i384 -%r551 = shl i384 %r550, 352 -%r552 = or i384 %r546, %r551 -%r553 = zext i384 %r552 to i416 -%r555 = getelementptr i32, i32* %r474, i32 12 -%r556 = load i32, i32* %r555 -%r557 = zext i32 %r556 to i416 -%r558 = shl i416 %r557, 384 -%r559 = or i416 %r553, %r558 -%r560 = zext i416 %r559 to i448 -%r562 = getelementptr i32, i32* %r474, i32 13 -%r563 = load i32, i32* %r562 -%r564 = zext i32 %r563 to i448 -%r565 = shl i448 %r564, 416 -%r566 = or i448 %r560, %r565 -%r567 = zext i448 %r566 to i480 -%r569 = getelementptr i32, i32* %r474, i32 14 -%r570 = load i32, i32* %r569 -%r571 = zext i32 %r570 to i480 -%r572 = shl i480 %r571, 448 -%r573 = or i480 %r567, %r572 -%r574 = zext i480 %r573 to i512 -%r576 = getelementptr i32, i32* %r474, i32 15 -%r577 = load i32, i32* %r576 -%r578 = zext i32 %r577 to i512 -%r579 = shl i512 %r578, 480 -%r580 = or i512 %r574, %r579 -%r581 = zext i512 %r580 to i544 -%r583 = getelementptr i32, i32* %r474, i32 16 -%r584 = load i32, i32* %r583 -%r585 = zext i32 %r584 to i544 -%r586 = shl i544 %r585, 512 -%r587 = or i544 %r581, %r586 -%r588 = zext i544 %r587 to i576 -%r590 = getelementptr i32, i32* %r474, i32 17 -%r591 = load i32, i32* %r590 -%r592 = zext i32 %r591 to i576 -%r593 = shl i576 %r592, 544 -%r594 = or i576 %r588, %r593 -%r595 = add i576 %r472, %r594 -%r597 = getelementptr i32, i32* %r1, i32 6 -%r598 = trunc i576 %r595 to i32 -%r600 = getelementptr i32, i32* %r597, i32 0 -store i32 %r598, i32* %r600 -%r601 = lshr i576 %r595, 32 -%r602 = trunc i576 %r601 to i32 -%r604 = getelementptr i32, i32* %r597, i32 1 -store i32 %r602, i32* %r604 -%r605 = lshr i576 %r601, 32 -%r606 = trunc i576 %r605 to i32 -%r608 = getelementptr i32, i32* %r597, i32 2 -store i32 %r606, i32* %r608 -%r609 = lshr i576 %r605, 32 -%r610 = trunc i576 %r609 to i32 -%r612 = getelementptr i32, i32* %r597, i32 3 -store i32 %r610, i32* %r612 -%r613 = lshr i576 %r609, 32 -%r614 = trunc i576 %r613 to i32 -%r616 = getelementptr i32, i32* %r597, i32 4 -store i32 %r614, i32* %r616 -%r617 = lshr i576 %r613, 32 -%r618 = trunc i576 %r617 to i32 -%r620 = getelementptr i32, i32* %r597, i32 5 -store i32 %r618, i32* %r620 -%r621 = lshr i576 %r617, 32 -%r622 = trunc i576 %r621 to i32 -%r624 = getelementptr i32, i32* %r597, i32 6 -store i32 %r622, i32* %r624 -%r625 = lshr i576 %r621, 32 -%r626 = trunc i576 %r625 to i32 -%r628 = getelementptr i32, i32* %r597, i32 7 -store i32 %r626, i32* %r628 -%r629 = lshr i576 %r625, 32 -%r630 = trunc i576 %r629 to i32 -%r632 = getelementptr i32, i32* %r597, i32 8 -store i32 %r630, i32* %r632 -%r633 = lshr i576 %r629, 32 -%r634 = trunc i576 %r633 to i32 -%r636 = getelementptr i32, i32* %r597, i32 9 -store i32 %r634, i32* %r636 -%r637 = lshr i576 %r633, 32 -%r638 = trunc i576 %r637 to i32 -%r640 = getelementptr i32, i32* %r597, i32 10 -store i32 %r638, i32* %r640 -%r641 = lshr i576 %r637, 32 -%r642 = trunc i576 %r641 to i32 -%r644 = getelementptr i32, i32* %r597, i32 11 -store i32 %r642, i32* %r644 -%r645 = lshr i576 %r641, 32 -%r646 = trunc i576 %r645 to i32 -%r648 = getelementptr i32, i32* %r597, i32 12 -store i32 %r646, i32* %r648 -%r649 = lshr i576 %r645, 32 -%r650 = trunc i576 %r649 to i32 -%r652 = getelementptr i32, i32* %r597, i32 13 -store i32 %r650, i32* %r652 -%r653 = lshr i576 %r649, 32 -%r654 = trunc i576 %r653 to i32 -%r656 = getelementptr i32, i32* %r597, i32 14 -store i32 %r654, i32* %r656 -%r657 = lshr i576 %r653, 32 -%r658 = trunc i576 %r657 to i32 -%r660 = getelementptr i32, i32* %r597, i32 15 -store i32 %r658, i32* %r660 -%r661 = lshr i576 %r657, 32 -%r662 = trunc i576 %r661 to i32 -%r664 = getelementptr i32, i32* %r597, i32 16 -store i32 %r662, i32* %r664 -%r665 = lshr i576 %r661, 32 -%r666 = trunc i576 %r665 to i32 -%r668 = getelementptr i32, i32* %r597, i32 17 -store i32 %r666, i32* %r668 -ret void -} -define void @mcl_fp_mont12L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i416 @mulPv384x32(i32* %r2, i32 %r10) -%r12 = zext i416 %r11 to i448 -%r13 = trunc i416 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i416 @mulPv384x32(i32* %r4, i32 %r14) -%r16 = zext i416 %r15 to i448 -%r17 = add i448 %r12, %r16 -%r18 = lshr i448 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i416 @mulPv384x32(i32* %r2, i32 %r21) -%r23 = zext i416 %r22 to i448 -%r24 = add i448 %r18, %r23 -%r25 = trunc i448 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i416 @mulPv384x32(i32* %r4, i32 %r26) -%r28 = zext i416 %r27 to i448 -%r29 = add i448 %r24, %r28 -%r30 = lshr i448 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i416 @mulPv384x32(i32* %r2, i32 %r33) -%r35 = zext i416 %r34 to i448 -%r36 = add i448 %r30, %r35 -%r37 = trunc i448 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i416 @mulPv384x32(i32* %r4, i32 %r38) -%r40 = zext i416 %r39 to i448 -%r41 = add i448 %r36, %r40 -%r42 = lshr i448 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i416 @mulPv384x32(i32* %r2, i32 %r45) -%r47 = zext i416 %r46 to i448 -%r48 = add i448 %r42, %r47 -%r49 = trunc i448 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i416 @mulPv384x32(i32* %r4, i32 %r50) -%r52 = zext i416 %r51 to i448 -%r53 = add i448 %r48, %r52 -%r54 = lshr i448 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i416 @mulPv384x32(i32* %r2, i32 %r57) -%r59 = zext i416 %r58 to i448 -%r60 = add i448 %r54, %r59 -%r61 = trunc i448 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i416 @mulPv384x32(i32* %r4, i32 %r62) -%r64 = zext i416 %r63 to i448 -%r65 = add i448 %r60, %r64 -%r66 = lshr i448 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i416 @mulPv384x32(i32* %r2, i32 %r69) -%r71 = zext i416 %r70 to i448 -%r72 = add i448 %r66, %r71 -%r73 = trunc i448 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i416 @mulPv384x32(i32* %r4, i32 %r74) -%r76 = zext i416 %r75 to i448 -%r77 = add i448 %r72, %r76 -%r78 = lshr i448 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i416 @mulPv384x32(i32* %r2, i32 %r81) -%r83 = zext i416 %r82 to i448 -%r84 = add i448 %r78, %r83 -%r85 = trunc i448 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i416 @mulPv384x32(i32* %r4, i32 %r86) -%r88 = zext i416 %r87 to i448 -%r89 = add i448 %r84, %r88 -%r90 = lshr i448 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i416 @mulPv384x32(i32* %r2, i32 %r93) -%r95 = zext i416 %r94 to i448 -%r96 = add i448 %r90, %r95 -%r97 = trunc i448 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i416 @mulPv384x32(i32* %r4, i32 %r98) -%r100 = zext i416 %r99 to i448 -%r101 = add i448 %r96, %r100 -%r102 = lshr i448 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i416 @mulPv384x32(i32* %r2, i32 %r105) -%r107 = zext i416 %r106 to i448 -%r108 = add i448 %r102, %r107 -%r109 = trunc i448 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i416 @mulPv384x32(i32* %r4, i32 %r110) -%r112 = zext i416 %r111 to i448 -%r113 = add i448 %r108, %r112 -%r114 = lshr i448 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i416 @mulPv384x32(i32* %r2, i32 %r117) -%r119 = zext i416 %r118 to i448 -%r120 = add i448 %r114, %r119 -%r121 = trunc i448 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i416 @mulPv384x32(i32* %r4, i32 %r122) -%r124 = zext i416 %r123 to i448 -%r125 = add i448 %r120, %r124 -%r126 = lshr i448 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i416 @mulPv384x32(i32* %r2, i32 %r129) -%r131 = zext i416 %r130 to i448 -%r132 = add i448 %r126, %r131 -%r133 = trunc i448 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i416 @mulPv384x32(i32* %r4, i32 %r134) -%r136 = zext i416 %r135 to i448 -%r137 = add i448 %r132, %r136 -%r138 = lshr i448 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i416 @mulPv384x32(i32* %r2, i32 %r141) -%r143 = zext i416 %r142 to i448 -%r144 = add i448 %r138, %r143 -%r145 = trunc i448 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i416 @mulPv384x32(i32* %r4, i32 %r146) -%r148 = zext i416 %r147 to i448 -%r149 = add i448 %r144, %r148 -%r150 = lshr i448 %r149, 32 -%r151 = trunc i448 %r150 to i416 -%r152 = load i32, i32* %r4 -%r153 = zext i32 %r152 to i64 -%r155 = getelementptr i32, i32* %r4, i32 1 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i64 -%r158 = shl i64 %r157, 32 -%r159 = or i64 %r153, %r158 -%r160 = zext i64 %r159 to i96 -%r162 = getelementptr i32, i32* %r4, i32 2 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i96 -%r165 = shl i96 %r164, 64 -%r166 = or i96 %r160, %r165 -%r167 = zext i96 %r166 to i128 -%r169 = getelementptr i32, i32* %r4, i32 3 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i128 -%r172 = shl i128 %r171, 96 -%r173 = or i128 %r167, %r172 -%r174 = zext i128 %r173 to i160 -%r176 = getelementptr i32, i32* %r4, i32 4 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i160 -%r179 = shl i160 %r178, 128 -%r180 = or i160 %r174, %r179 -%r181 = zext i160 %r180 to i192 -%r183 = getelementptr i32, i32* %r4, i32 5 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i192 -%r186 = shl i192 %r185, 160 -%r187 = or i192 %r181, %r186 -%r188 = zext i192 %r187 to i224 -%r190 = getelementptr i32, i32* %r4, i32 6 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i224 -%r193 = shl i224 %r192, 192 -%r194 = or i224 %r188, %r193 -%r195 = zext i224 %r194 to i256 -%r197 = getelementptr i32, i32* %r4, i32 7 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i256 -%r200 = shl i256 %r199, 224 -%r201 = or i256 %r195, %r200 -%r202 = zext i256 %r201 to i288 -%r204 = getelementptr i32, i32* %r4, i32 8 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i288 -%r207 = shl i288 %r206, 256 -%r208 = or i288 %r202, %r207 -%r209 = zext i288 %r208 to i320 -%r211 = getelementptr i32, i32* %r4, i32 9 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i320 -%r214 = shl i320 %r213, 288 -%r215 = or i320 %r209, %r214 -%r216 = zext i320 %r215 to i352 -%r218 = getelementptr i32, i32* %r4, i32 10 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i352 -%r221 = shl i352 %r220, 320 -%r222 = or i352 %r216, %r221 -%r223 = zext i352 %r222 to i384 -%r225 = getelementptr i32, i32* %r4, i32 11 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i384 -%r228 = shl i384 %r227, 352 -%r229 = or i384 %r223, %r228 -%r230 = zext i384 %r229 to i416 -%r231 = sub i416 %r151, %r230 -%r232 = lshr i416 %r231, 384 -%r233 = trunc i416 %r232 to i1 -%r234 = select i1 %r233, i416 %r151, i416 %r231 -%r235 = trunc i416 %r234 to i384 -%r236 = trunc i384 %r235 to i32 -%r238 = getelementptr i32, i32* %r1, i32 0 -store i32 %r236, i32* %r238 -%r239 = lshr i384 %r235, 32 -%r240 = trunc i384 %r239 to i32 -%r242 = getelementptr i32, i32* %r1, i32 1 -store i32 %r240, i32* %r242 -%r243 = lshr i384 %r239, 32 -%r244 = trunc i384 %r243 to i32 -%r246 = getelementptr i32, i32* %r1, i32 2 -store i32 %r244, i32* %r246 -%r247 = lshr i384 %r243, 32 -%r248 = trunc i384 %r247 to i32 -%r250 = getelementptr i32, i32* %r1, i32 3 -store i32 %r248, i32* %r250 -%r251 = lshr i384 %r247, 32 -%r252 = trunc i384 %r251 to i32 -%r254 = getelementptr i32, i32* %r1, i32 4 -store i32 %r252, i32* %r254 -%r255 = lshr i384 %r251, 32 -%r256 = trunc i384 %r255 to i32 -%r258 = getelementptr i32, i32* %r1, i32 5 -store i32 %r256, i32* %r258 -%r259 = lshr i384 %r255, 32 -%r260 = trunc i384 %r259 to i32 -%r262 = getelementptr i32, i32* %r1, i32 6 -store i32 %r260, i32* %r262 -%r263 = lshr i384 %r259, 32 -%r264 = trunc i384 %r263 to i32 -%r266 = getelementptr i32, i32* %r1, i32 7 -store i32 %r264, i32* %r266 -%r267 = lshr i384 %r263, 32 -%r268 = trunc i384 %r267 to i32 -%r270 = getelementptr i32, i32* %r1, i32 8 -store i32 %r268, i32* %r270 -%r271 = lshr i384 %r267, 32 -%r272 = trunc i384 %r271 to i32 -%r274 = getelementptr i32, i32* %r1, i32 9 -store i32 %r272, i32* %r274 -%r275 = lshr i384 %r271, 32 -%r276 = trunc i384 %r275 to i32 -%r278 = getelementptr i32, i32* %r1, i32 10 -store i32 %r276, i32* %r278 -%r279 = lshr i384 %r275, 32 -%r280 = trunc i384 %r279 to i32 -%r282 = getelementptr i32, i32* %r1, i32 11 -store i32 %r280, i32* %r282 -ret void -} -define void @mcl_fp_montNF12L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i416 @mulPv384x32(i32* %r2, i32 %r8) -%r10 = trunc i416 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i416 @mulPv384x32(i32* %r4, i32 %r11) -%r13 = add i416 %r9, %r12 -%r14 = lshr i416 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i416 @mulPv384x32(i32* %r2, i32 %r17) -%r19 = add i416 %r14, %r18 -%r20 = trunc i416 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i416 @mulPv384x32(i32* %r4, i32 %r21) -%r23 = add i416 %r19, %r22 -%r24 = lshr i416 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i416 @mulPv384x32(i32* %r2, i32 %r27) -%r29 = add i416 %r24, %r28 -%r30 = trunc i416 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i416 @mulPv384x32(i32* %r4, i32 %r31) -%r33 = add i416 %r29, %r32 -%r34 = lshr i416 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i416 @mulPv384x32(i32* %r2, i32 %r37) -%r39 = add i416 %r34, %r38 -%r40 = trunc i416 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i416 @mulPv384x32(i32* %r4, i32 %r41) -%r43 = add i416 %r39, %r42 -%r44 = lshr i416 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i416 @mulPv384x32(i32* %r2, i32 %r47) -%r49 = add i416 %r44, %r48 -%r50 = trunc i416 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i416 @mulPv384x32(i32* %r4, i32 %r51) -%r53 = add i416 %r49, %r52 -%r54 = lshr i416 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i416 @mulPv384x32(i32* %r2, i32 %r57) -%r59 = add i416 %r54, %r58 -%r60 = trunc i416 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i416 @mulPv384x32(i32* %r4, i32 %r61) -%r63 = add i416 %r59, %r62 -%r64 = lshr i416 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i416 @mulPv384x32(i32* %r2, i32 %r67) -%r69 = add i416 %r64, %r68 -%r70 = trunc i416 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i416 @mulPv384x32(i32* %r4, i32 %r71) -%r73 = add i416 %r69, %r72 -%r74 = lshr i416 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i416 @mulPv384x32(i32* %r2, i32 %r77) -%r79 = add i416 %r74, %r78 -%r80 = trunc i416 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i416 @mulPv384x32(i32* %r4, i32 %r81) -%r83 = add i416 %r79, %r82 -%r84 = lshr i416 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i416 @mulPv384x32(i32* %r2, i32 %r87) -%r89 = add i416 %r84, %r88 -%r90 = trunc i416 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i416 @mulPv384x32(i32* %r4, i32 %r91) -%r93 = add i416 %r89, %r92 -%r94 = lshr i416 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i416 @mulPv384x32(i32* %r2, i32 %r97) -%r99 = add i416 %r94, %r98 -%r100 = trunc i416 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i416 @mulPv384x32(i32* %r4, i32 %r101) -%r103 = add i416 %r99, %r102 -%r104 = lshr i416 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i416 @mulPv384x32(i32* %r2, i32 %r107) -%r109 = add i416 %r104, %r108 -%r110 = trunc i416 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i416 @mulPv384x32(i32* %r4, i32 %r111) -%r113 = add i416 %r109, %r112 -%r114 = lshr i416 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 -%r117 = load i32, i32* %r116 -%r118 = call i416 @mulPv384x32(i32* %r2, i32 %r117) -%r119 = add i416 %r114, %r118 -%r120 = trunc i416 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i416 @mulPv384x32(i32* %r4, i32 %r121) -%r123 = add i416 %r119, %r122 -%r124 = lshr i416 %r123, 32 -%r125 = trunc i416 %r124 to i384 -%r126 = load i32, i32* %r4 -%r127 = zext i32 %r126 to i64 -%r129 = getelementptr i32, i32* %r4, i32 1 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i64 -%r132 = shl i64 %r131, 32 -%r133 = or i64 %r127, %r132 -%r134 = zext i64 %r133 to i96 -%r136 = getelementptr i32, i32* %r4, i32 2 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i96 -%r139 = shl i96 %r138, 64 -%r140 = or i96 %r134, %r139 -%r141 = zext i96 %r140 to i128 -%r143 = getelementptr i32, i32* %r4, i32 3 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i128 -%r146 = shl i128 %r145, 96 -%r147 = or i128 %r141, %r146 -%r148 = zext i128 %r147 to i160 -%r150 = getelementptr i32, i32* %r4, i32 4 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i160 -%r153 = shl i160 %r152, 128 -%r154 = or i160 %r148, %r153 -%r155 = zext i160 %r154 to i192 -%r157 = getelementptr i32, i32* %r4, i32 5 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i192 -%r160 = shl i192 %r159, 160 -%r161 = or i192 %r155, %r160 -%r162 = zext i192 %r161 to i224 -%r164 = getelementptr i32, i32* %r4, i32 6 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i224 -%r167 = shl i224 %r166, 192 -%r168 = or i224 %r162, %r167 -%r169 = zext i224 %r168 to i256 -%r171 = getelementptr i32, i32* %r4, i32 7 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i256 -%r174 = shl i256 %r173, 224 -%r175 = or i256 %r169, %r174 -%r176 = zext i256 %r175 to i288 -%r178 = getelementptr i32, i32* %r4, i32 8 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i288 -%r181 = shl i288 %r180, 256 -%r182 = or i288 %r176, %r181 -%r183 = zext i288 %r182 to i320 -%r185 = getelementptr i32, i32* %r4, i32 9 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i320 -%r188 = shl i320 %r187, 288 -%r189 = or i320 %r183, %r188 -%r190 = zext i320 %r189 to i352 -%r192 = getelementptr i32, i32* %r4, i32 10 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i352 -%r195 = shl i352 %r194, 320 -%r196 = or i352 %r190, %r195 -%r197 = zext i352 %r196 to i384 -%r199 = getelementptr i32, i32* %r4, i32 11 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i384 -%r202 = shl i384 %r201, 352 -%r203 = or i384 %r197, %r202 -%r204 = sub i384 %r125, %r203 -%r205 = lshr i384 %r204, 383 -%r206 = trunc i384 %r205 to i1 -%r207 = select i1 %r206, i384 %r125, i384 %r204 -%r208 = trunc i384 %r207 to i32 -%r210 = getelementptr i32, i32* %r1, i32 0 -store i32 %r208, i32* %r210 -%r211 = lshr i384 %r207, 32 -%r212 = trunc i384 %r211 to i32 -%r214 = getelementptr i32, i32* %r1, i32 1 -store i32 %r212, i32* %r214 -%r215 = lshr i384 %r211, 32 -%r216 = trunc i384 %r215 to i32 -%r218 = getelementptr i32, i32* %r1, i32 2 -store i32 %r216, i32* %r218 -%r219 = lshr i384 %r215, 32 -%r220 = trunc i384 %r219 to i32 -%r222 = getelementptr i32, i32* %r1, i32 3 -store i32 %r220, i32* %r222 -%r223 = lshr i384 %r219, 32 -%r224 = trunc i384 %r223 to i32 -%r226 = getelementptr i32, i32* %r1, i32 4 -store i32 %r224, i32* %r226 -%r227 = lshr i384 %r223, 32 -%r228 = trunc i384 %r227 to i32 -%r230 = getelementptr i32, i32* %r1, i32 5 -store i32 %r228, i32* %r230 -%r231 = lshr i384 %r227, 32 -%r232 = trunc i384 %r231 to i32 -%r234 = getelementptr i32, i32* %r1, i32 6 -store i32 %r232, i32* %r234 -%r235 = lshr i384 %r231, 32 -%r236 = trunc i384 %r235 to i32 -%r238 = getelementptr i32, i32* %r1, i32 7 -store i32 %r236, i32* %r238 -%r239 = lshr i384 %r235, 32 -%r240 = trunc i384 %r239 to i32 -%r242 = getelementptr i32, i32* %r1, i32 8 -store i32 %r240, i32* %r242 -%r243 = lshr i384 %r239, 32 -%r244 = trunc i384 %r243 to i32 -%r246 = getelementptr i32, i32* %r1, i32 9 -store i32 %r244, i32* %r246 -%r247 = lshr i384 %r243, 32 -%r248 = trunc i384 %r247 to i32 -%r250 = getelementptr i32, i32* %r1, i32 10 -store i32 %r248, i32* %r250 -%r251 = lshr i384 %r247, 32 -%r252 = trunc i384 %r251 to i32 -%r254 = getelementptr i32, i32* %r1, i32 11 -store i32 %r252, i32* %r254 -ret void -} -define void @mcl_fp_montRed12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = zext i352 %r77 to i384 -%r80 = getelementptr i32, i32* %r3, i32 11 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i384 -%r83 = shl i384 %r82, 352 -%r84 = or i384 %r78, %r83 -%r85 = load i32, i32* %r2 -%r86 = zext i32 %r85 to i64 -%r88 = getelementptr i32, i32* %r2, i32 1 -%r89 = load i32, i32* %r88 -%r90 = zext i32 %r89 to i64 -%r91 = shl i64 %r90, 32 -%r92 = or i64 %r86, %r91 -%r93 = zext i64 %r92 to i96 -%r95 = getelementptr i32, i32* %r2, i32 2 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i96 -%r98 = shl i96 %r97, 64 -%r99 = or i96 %r93, %r98 -%r100 = zext i96 %r99 to i128 -%r102 = getelementptr i32, i32* %r2, i32 3 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i128 -%r105 = shl i128 %r104, 96 -%r106 = or i128 %r100, %r105 -%r107 = zext i128 %r106 to i160 -%r109 = getelementptr i32, i32* %r2, i32 4 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i160 -%r112 = shl i160 %r111, 128 -%r113 = or i160 %r107, %r112 -%r114 = zext i160 %r113 to i192 -%r116 = getelementptr i32, i32* %r2, i32 5 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i192 -%r119 = shl i192 %r118, 160 -%r120 = or i192 %r114, %r119 -%r121 = zext i192 %r120 to i224 -%r123 = getelementptr i32, i32* %r2, i32 6 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i224 -%r126 = shl i224 %r125, 192 -%r127 = or i224 %r121, %r126 -%r128 = zext i224 %r127 to i256 -%r130 = getelementptr i32, i32* %r2, i32 7 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i256 -%r133 = shl i256 %r132, 224 -%r134 = or i256 %r128, %r133 -%r135 = zext i256 %r134 to i288 -%r137 = getelementptr i32, i32* %r2, i32 8 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i288 -%r140 = shl i288 %r139, 256 -%r141 = or i288 %r135, %r140 -%r142 = zext i288 %r141 to i320 -%r144 = getelementptr i32, i32* %r2, i32 9 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i320 -%r147 = shl i320 %r146, 288 -%r148 = or i320 %r142, %r147 -%r149 = zext i320 %r148 to i352 -%r151 = getelementptr i32, i32* %r2, i32 10 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i352 -%r154 = shl i352 %r153, 320 -%r155 = or i352 %r149, %r154 -%r156 = zext i352 %r155 to i384 -%r158 = getelementptr i32, i32* %r2, i32 11 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i384 -%r161 = shl i384 %r160, 352 -%r162 = or i384 %r156, %r161 -%r163 = zext i384 %r162 to i416 -%r165 = getelementptr i32, i32* %r2, i32 12 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i416 -%r168 = shl i416 %r167, 384 -%r169 = or i416 %r163, %r168 -%r170 = zext i416 %r169 to i448 -%r172 = getelementptr i32, i32* %r2, i32 13 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i448 -%r175 = shl i448 %r174, 416 -%r176 = or i448 %r170, %r175 -%r177 = zext i448 %r176 to i480 -%r179 = getelementptr i32, i32* %r2, i32 14 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i480 -%r182 = shl i480 %r181, 448 -%r183 = or i480 %r177, %r182 -%r184 = zext i480 %r183 to i512 -%r186 = getelementptr i32, i32* %r2, i32 15 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i512 -%r189 = shl i512 %r188, 480 -%r190 = or i512 %r184, %r189 -%r191 = zext i512 %r190 to i544 -%r193 = getelementptr i32, i32* %r2, i32 16 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i544 -%r196 = shl i544 %r195, 512 -%r197 = or i544 %r191, %r196 -%r198 = zext i544 %r197 to i576 -%r200 = getelementptr i32, i32* %r2, i32 17 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i576 -%r203 = shl i576 %r202, 544 -%r204 = or i576 %r198, %r203 -%r205 = zext i576 %r204 to i608 -%r207 = getelementptr i32, i32* %r2, i32 18 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i608 -%r210 = shl i608 %r209, 576 -%r211 = or i608 %r205, %r210 -%r212 = zext i608 %r211 to i640 -%r214 = getelementptr i32, i32* %r2, i32 19 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i640 -%r217 = shl i640 %r216, 608 -%r218 = or i640 %r212, %r217 -%r219 = zext i640 %r218 to i672 -%r221 = getelementptr i32, i32* %r2, i32 20 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i672 -%r224 = shl i672 %r223, 640 -%r225 = or i672 %r219, %r224 -%r226 = zext i672 %r225 to i704 -%r228 = getelementptr i32, i32* %r2, i32 21 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i704 -%r231 = shl i704 %r230, 672 -%r232 = or i704 %r226, %r231 -%r233 = zext i704 %r232 to i736 -%r235 = getelementptr i32, i32* %r2, i32 22 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i736 -%r238 = shl i736 %r237, 704 -%r239 = or i736 %r233, %r238 -%r240 = zext i736 %r239 to i768 -%r242 = getelementptr i32, i32* %r2, i32 23 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i768 -%r245 = shl i768 %r244, 736 -%r246 = or i768 %r240, %r245 -%r247 = zext i768 %r246 to i800 -%r248 = trunc i800 %r247 to i32 -%r249 = mul i32 %r248, %r6 -%r250 = call i416 @mulPv384x32(i32* %r3, i32 %r249) -%r251 = zext i416 %r250 to i800 -%r252 = add i800 %r247, %r251 -%r253 = lshr i800 %r252, 32 -%r254 = trunc i800 %r253 to i768 -%r255 = trunc i768 %r254 to i32 -%r256 = mul i32 %r255, %r6 -%r257 = call i416 @mulPv384x32(i32* %r3, i32 %r256) -%r258 = zext i416 %r257 to i768 -%r259 = add i768 %r254, %r258 -%r260 = lshr i768 %r259, 32 -%r261 = trunc i768 %r260 to i736 -%r262 = trunc i736 %r261 to i32 -%r263 = mul i32 %r262, %r6 -%r264 = call i416 @mulPv384x32(i32* %r3, i32 %r263) -%r265 = zext i416 %r264 to i736 -%r266 = add i736 %r261, %r265 -%r267 = lshr i736 %r266, 32 -%r268 = trunc i736 %r267 to i704 -%r269 = trunc i704 %r268 to i32 -%r270 = mul i32 %r269, %r6 -%r271 = call i416 @mulPv384x32(i32* %r3, i32 %r270) -%r272 = zext i416 %r271 to i704 -%r273 = add i704 %r268, %r272 -%r274 = lshr i704 %r273, 32 -%r275 = trunc i704 %r274 to i672 -%r276 = trunc i672 %r275 to i32 -%r277 = mul i32 %r276, %r6 -%r278 = call i416 @mulPv384x32(i32* %r3, i32 %r277) -%r279 = zext i416 %r278 to i672 -%r280 = add i672 %r275, %r279 -%r281 = lshr i672 %r280, 32 -%r282 = trunc i672 %r281 to i640 -%r283 = trunc i640 %r282 to i32 -%r284 = mul i32 %r283, %r6 -%r285 = call i416 @mulPv384x32(i32* %r3, i32 %r284) -%r286 = zext i416 %r285 to i640 -%r287 = add i640 %r282, %r286 -%r288 = lshr i640 %r287, 32 -%r289 = trunc i640 %r288 to i608 -%r290 = trunc i608 %r289 to i32 -%r291 = mul i32 %r290, %r6 -%r292 = call i416 @mulPv384x32(i32* %r3, i32 %r291) -%r293 = zext i416 %r292 to i608 -%r294 = add i608 %r289, %r293 -%r295 = lshr i608 %r294, 32 -%r296 = trunc i608 %r295 to i576 -%r297 = trunc i576 %r296 to i32 -%r298 = mul i32 %r297, %r6 -%r299 = call i416 @mulPv384x32(i32* %r3, i32 %r298) -%r300 = zext i416 %r299 to i576 -%r301 = add i576 %r296, %r300 -%r302 = lshr i576 %r301, 32 -%r303 = trunc i576 %r302 to i544 -%r304 = trunc i544 %r303 to i32 -%r305 = mul i32 %r304, %r6 -%r306 = call i416 @mulPv384x32(i32* %r3, i32 %r305) -%r307 = zext i416 %r306 to i544 -%r308 = add i544 %r303, %r307 -%r309 = lshr i544 %r308, 32 -%r310 = trunc i544 %r309 to i512 -%r311 = trunc i512 %r310 to i32 -%r312 = mul i32 %r311, %r6 -%r313 = call i416 @mulPv384x32(i32* %r3, i32 %r312) -%r314 = zext i416 %r313 to i512 -%r315 = add i512 %r310, %r314 -%r316 = lshr i512 %r315, 32 -%r317 = trunc i512 %r316 to i480 -%r318 = trunc i480 %r317 to i32 -%r319 = mul i32 %r318, %r6 -%r320 = call i416 @mulPv384x32(i32* %r3, i32 %r319) -%r321 = zext i416 %r320 to i480 -%r322 = add i480 %r317, %r321 -%r323 = lshr i480 %r322, 32 -%r324 = trunc i480 %r323 to i448 -%r325 = trunc i448 %r324 to i32 -%r326 = mul i32 %r325, %r6 -%r327 = call i416 @mulPv384x32(i32* %r3, i32 %r326) -%r328 = zext i416 %r327 to i448 -%r329 = add i448 %r324, %r328 -%r330 = lshr i448 %r329, 32 -%r331 = trunc i448 %r330 to i416 -%r332 = zext i384 %r84 to i416 -%r333 = sub i416 %r331, %r332 -%r334 = lshr i416 %r333, 384 -%r335 = trunc i416 %r334 to i1 -%r336 = select i1 %r335, i416 %r331, i416 %r333 -%r337 = trunc i416 %r336 to i384 -%r338 = trunc i384 %r337 to i32 -%r340 = getelementptr i32, i32* %r1, i32 0 -store i32 %r338, i32* %r340 -%r341 = lshr i384 %r337, 32 -%r342 = trunc i384 %r341 to i32 -%r344 = getelementptr i32, i32* %r1, i32 1 -store i32 %r342, i32* %r344 -%r345 = lshr i384 %r341, 32 -%r346 = trunc i384 %r345 to i32 -%r348 = getelementptr i32, i32* %r1, i32 2 -store i32 %r346, i32* %r348 -%r349 = lshr i384 %r345, 32 -%r350 = trunc i384 %r349 to i32 -%r352 = getelementptr i32, i32* %r1, i32 3 -store i32 %r350, i32* %r352 -%r353 = lshr i384 %r349, 32 -%r354 = trunc i384 %r353 to i32 -%r356 = getelementptr i32, i32* %r1, i32 4 -store i32 %r354, i32* %r356 -%r357 = lshr i384 %r353, 32 -%r358 = trunc i384 %r357 to i32 -%r360 = getelementptr i32, i32* %r1, i32 5 -store i32 %r358, i32* %r360 -%r361 = lshr i384 %r357, 32 -%r362 = trunc i384 %r361 to i32 -%r364 = getelementptr i32, i32* %r1, i32 6 -store i32 %r362, i32* %r364 -%r365 = lshr i384 %r361, 32 -%r366 = trunc i384 %r365 to i32 -%r368 = getelementptr i32, i32* %r1, i32 7 -store i32 %r366, i32* %r368 -%r369 = lshr i384 %r365, 32 -%r370 = trunc i384 %r369 to i32 -%r372 = getelementptr i32, i32* %r1, i32 8 -store i32 %r370, i32* %r372 -%r373 = lshr i384 %r369, 32 -%r374 = trunc i384 %r373 to i32 -%r376 = getelementptr i32, i32* %r1, i32 9 -store i32 %r374, i32* %r376 -%r377 = lshr i384 %r373, 32 -%r378 = trunc i384 %r377 to i32 -%r380 = getelementptr i32, i32* %r1, i32 10 -store i32 %r378, i32* %r380 -%r381 = lshr i384 %r377, 32 -%r382 = trunc i384 %r381 to i32 -%r384 = getelementptr i32, i32* %r1, i32 11 -store i32 %r382, i32* %r384 -ret void -} -define i32 @mcl_fp_addPre12L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r84 = load i32, i32* %r4 -%r85 = zext i32 %r84 to i64 -%r87 = getelementptr i32, i32* %r4, i32 1 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i64 -%r90 = shl i64 %r89, 32 -%r91 = or i64 %r85, %r90 -%r92 = zext i64 %r91 to i96 -%r94 = getelementptr i32, i32* %r4, i32 2 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i96 -%r97 = shl i96 %r96, 64 -%r98 = or i96 %r92, %r97 -%r99 = zext i96 %r98 to i128 -%r101 = getelementptr i32, i32* %r4, i32 3 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i128 -%r104 = shl i128 %r103, 96 -%r105 = or i128 %r99, %r104 -%r106 = zext i128 %r105 to i160 -%r108 = getelementptr i32, i32* %r4, i32 4 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i160 -%r111 = shl i160 %r110, 128 -%r112 = or i160 %r106, %r111 -%r113 = zext i160 %r112 to i192 -%r115 = getelementptr i32, i32* %r4, i32 5 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i192 -%r118 = shl i192 %r117, 160 -%r119 = or i192 %r113, %r118 -%r120 = zext i192 %r119 to i224 -%r122 = getelementptr i32, i32* %r4, i32 6 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i224 -%r125 = shl i224 %r124, 192 -%r126 = or i224 %r120, %r125 -%r127 = zext i224 %r126 to i256 -%r129 = getelementptr i32, i32* %r4, i32 7 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i256 -%r132 = shl i256 %r131, 224 -%r133 = or i256 %r127, %r132 -%r134 = zext i256 %r133 to i288 -%r136 = getelementptr i32, i32* %r4, i32 8 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i288 -%r139 = shl i288 %r138, 256 -%r140 = or i288 %r134, %r139 -%r141 = zext i288 %r140 to i320 -%r143 = getelementptr i32, i32* %r4, i32 9 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i320 -%r146 = shl i320 %r145, 288 -%r147 = or i320 %r141, %r146 -%r148 = zext i320 %r147 to i352 -%r150 = getelementptr i32, i32* %r4, i32 10 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i352 -%r153 = shl i352 %r152, 320 -%r154 = or i352 %r148, %r153 -%r155 = zext i352 %r154 to i384 -%r157 = getelementptr i32, i32* %r4, i32 11 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i384 -%r160 = shl i384 %r159, 352 -%r161 = or i384 %r155, %r160 -%r162 = zext i384 %r161 to i416 -%r163 = add i416 %r83, %r162 -%r164 = trunc i416 %r163 to i384 -%r165 = trunc i384 %r164 to i32 -%r167 = getelementptr i32, i32* %r2, i32 0 -store i32 %r165, i32* %r167 -%r168 = lshr i384 %r164, 32 -%r169 = trunc i384 %r168 to i32 -%r171 = getelementptr i32, i32* %r2, i32 1 -store i32 %r169, i32* %r171 -%r172 = lshr i384 %r168, 32 -%r173 = trunc i384 %r172 to i32 -%r175 = getelementptr i32, i32* %r2, i32 2 -store i32 %r173, i32* %r175 -%r176 = lshr i384 %r172, 32 -%r177 = trunc i384 %r176 to i32 -%r179 = getelementptr i32, i32* %r2, i32 3 -store i32 %r177, i32* %r179 -%r180 = lshr i384 %r176, 32 -%r181 = trunc i384 %r180 to i32 -%r183 = getelementptr i32, i32* %r2, i32 4 -store i32 %r181, i32* %r183 -%r184 = lshr i384 %r180, 32 -%r185 = trunc i384 %r184 to i32 -%r187 = getelementptr i32, i32* %r2, i32 5 -store i32 %r185, i32* %r187 -%r188 = lshr i384 %r184, 32 -%r189 = trunc i384 %r188 to i32 -%r191 = getelementptr i32, i32* %r2, i32 6 -store i32 %r189, i32* %r191 -%r192 = lshr i384 %r188, 32 -%r193 = trunc i384 %r192 to i32 -%r195 = getelementptr i32, i32* %r2, i32 7 -store i32 %r193, i32* %r195 -%r196 = lshr i384 %r192, 32 -%r197 = trunc i384 %r196 to i32 -%r199 = getelementptr i32, i32* %r2, i32 8 -store i32 %r197, i32* %r199 -%r200 = lshr i384 %r196, 32 -%r201 = trunc i384 %r200 to i32 -%r203 = getelementptr i32, i32* %r2, i32 9 -store i32 %r201, i32* %r203 -%r204 = lshr i384 %r200, 32 -%r205 = trunc i384 %r204 to i32 -%r207 = getelementptr i32, i32* %r2, i32 10 -store i32 %r205, i32* %r207 -%r208 = lshr i384 %r204, 32 -%r209 = trunc i384 %r208 to i32 -%r211 = getelementptr i32, i32* %r2, i32 11 -store i32 %r209, i32* %r211 -%r212 = lshr i416 %r163, 384 -%r213 = trunc i416 %r212 to i32 -ret i32 %r213 -} -define i32 @mcl_fp_subPre12L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r84 = load i32, i32* %r4 -%r85 = zext i32 %r84 to i64 -%r87 = getelementptr i32, i32* %r4, i32 1 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i64 -%r90 = shl i64 %r89, 32 -%r91 = or i64 %r85, %r90 -%r92 = zext i64 %r91 to i96 -%r94 = getelementptr i32, i32* %r4, i32 2 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i96 -%r97 = shl i96 %r96, 64 -%r98 = or i96 %r92, %r97 -%r99 = zext i96 %r98 to i128 -%r101 = getelementptr i32, i32* %r4, i32 3 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i128 -%r104 = shl i128 %r103, 96 -%r105 = or i128 %r99, %r104 -%r106 = zext i128 %r105 to i160 -%r108 = getelementptr i32, i32* %r4, i32 4 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i160 -%r111 = shl i160 %r110, 128 -%r112 = or i160 %r106, %r111 -%r113 = zext i160 %r112 to i192 -%r115 = getelementptr i32, i32* %r4, i32 5 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i192 -%r118 = shl i192 %r117, 160 -%r119 = or i192 %r113, %r118 -%r120 = zext i192 %r119 to i224 -%r122 = getelementptr i32, i32* %r4, i32 6 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i224 -%r125 = shl i224 %r124, 192 -%r126 = or i224 %r120, %r125 -%r127 = zext i224 %r126 to i256 -%r129 = getelementptr i32, i32* %r4, i32 7 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i256 -%r132 = shl i256 %r131, 224 -%r133 = or i256 %r127, %r132 -%r134 = zext i256 %r133 to i288 -%r136 = getelementptr i32, i32* %r4, i32 8 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i288 -%r139 = shl i288 %r138, 256 -%r140 = or i288 %r134, %r139 -%r141 = zext i288 %r140 to i320 -%r143 = getelementptr i32, i32* %r4, i32 9 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i320 -%r146 = shl i320 %r145, 288 -%r147 = or i320 %r141, %r146 -%r148 = zext i320 %r147 to i352 -%r150 = getelementptr i32, i32* %r4, i32 10 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i352 -%r153 = shl i352 %r152, 320 -%r154 = or i352 %r148, %r153 -%r155 = zext i352 %r154 to i384 -%r157 = getelementptr i32, i32* %r4, i32 11 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i384 -%r160 = shl i384 %r159, 352 -%r161 = or i384 %r155, %r160 -%r162 = zext i384 %r161 to i416 -%r163 = sub i416 %r83, %r162 -%r164 = trunc i416 %r163 to i384 -%r165 = trunc i384 %r164 to i32 -%r167 = getelementptr i32, i32* %r2, i32 0 -store i32 %r165, i32* %r167 -%r168 = lshr i384 %r164, 32 -%r169 = trunc i384 %r168 to i32 -%r171 = getelementptr i32, i32* %r2, i32 1 -store i32 %r169, i32* %r171 -%r172 = lshr i384 %r168, 32 -%r173 = trunc i384 %r172 to i32 -%r175 = getelementptr i32, i32* %r2, i32 2 -store i32 %r173, i32* %r175 -%r176 = lshr i384 %r172, 32 -%r177 = trunc i384 %r176 to i32 -%r179 = getelementptr i32, i32* %r2, i32 3 -store i32 %r177, i32* %r179 -%r180 = lshr i384 %r176, 32 -%r181 = trunc i384 %r180 to i32 -%r183 = getelementptr i32, i32* %r2, i32 4 -store i32 %r181, i32* %r183 -%r184 = lshr i384 %r180, 32 -%r185 = trunc i384 %r184 to i32 -%r187 = getelementptr i32, i32* %r2, i32 5 -store i32 %r185, i32* %r187 -%r188 = lshr i384 %r184, 32 -%r189 = trunc i384 %r188 to i32 -%r191 = getelementptr i32, i32* %r2, i32 6 -store i32 %r189, i32* %r191 -%r192 = lshr i384 %r188, 32 -%r193 = trunc i384 %r192 to i32 -%r195 = getelementptr i32, i32* %r2, i32 7 -store i32 %r193, i32* %r195 -%r196 = lshr i384 %r192, 32 -%r197 = trunc i384 %r196 to i32 -%r199 = getelementptr i32, i32* %r2, i32 8 -store i32 %r197, i32* %r199 -%r200 = lshr i384 %r196, 32 -%r201 = trunc i384 %r200 to i32 -%r203 = getelementptr i32, i32* %r2, i32 9 -store i32 %r201, i32* %r203 -%r204 = lshr i384 %r200, 32 -%r205 = trunc i384 %r204 to i32 -%r207 = getelementptr i32, i32* %r2, i32 10 -store i32 %r205, i32* %r207 -%r208 = lshr i384 %r204, 32 -%r209 = trunc i384 %r208 to i32 -%r211 = getelementptr i32, i32* %r2, i32 11 -store i32 %r209, i32* %r211 -%r212 = lshr i416 %r163, 384 -%r213 = trunc i416 %r212 to i32 -%r215 = and i32 %r213, 1 -ret i32 %r215 -} -define void @mcl_fp_shr1_12L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = zext i352 %r73 to i384 -%r76 = getelementptr i32, i32* %r2, i32 11 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i384 -%r79 = shl i384 %r78, 352 -%r80 = or i384 %r74, %r79 -%r81 = lshr i384 %r80, 1 -%r82 = trunc i384 %r81 to i32 -%r84 = getelementptr i32, i32* %r1, i32 0 -store i32 %r82, i32* %r84 -%r85 = lshr i384 %r81, 32 -%r86 = trunc i384 %r85 to i32 -%r88 = getelementptr i32, i32* %r1, i32 1 -store i32 %r86, i32* %r88 -%r89 = lshr i384 %r85, 32 -%r90 = trunc i384 %r89 to i32 -%r92 = getelementptr i32, i32* %r1, i32 2 -store i32 %r90, i32* %r92 -%r93 = lshr i384 %r89, 32 -%r94 = trunc i384 %r93 to i32 -%r96 = getelementptr i32, i32* %r1, i32 3 -store i32 %r94, i32* %r96 -%r97 = lshr i384 %r93, 32 -%r98 = trunc i384 %r97 to i32 -%r100 = getelementptr i32, i32* %r1, i32 4 -store i32 %r98, i32* %r100 -%r101 = lshr i384 %r97, 32 -%r102 = trunc i384 %r101 to i32 -%r104 = getelementptr i32, i32* %r1, i32 5 -store i32 %r102, i32* %r104 -%r105 = lshr i384 %r101, 32 -%r106 = trunc i384 %r105 to i32 -%r108 = getelementptr i32, i32* %r1, i32 6 -store i32 %r106, i32* %r108 -%r109 = lshr i384 %r105, 32 -%r110 = trunc i384 %r109 to i32 -%r112 = getelementptr i32, i32* %r1, i32 7 -store i32 %r110, i32* %r112 -%r113 = lshr i384 %r109, 32 -%r114 = trunc i384 %r113 to i32 -%r116 = getelementptr i32, i32* %r1, i32 8 -store i32 %r114, i32* %r116 -%r117 = lshr i384 %r113, 32 -%r118 = trunc i384 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 9 -store i32 %r118, i32* %r120 -%r121 = lshr i384 %r117, 32 -%r122 = trunc i384 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 10 -store i32 %r122, i32* %r124 -%r125 = lshr i384 %r121, 32 -%r126 = trunc i384 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 11 -store i32 %r126, i32* %r128 -ret void -} -define void @mcl_fp_add12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r82 to i416 -%r162 = zext i384 %r160 to i416 -%r163 = add i416 %r161, %r162 -%r164 = trunc i416 %r163 to i384 -%r165 = trunc i384 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 0 -store i32 %r165, i32* %r167 -%r168 = lshr i384 %r164, 32 -%r169 = trunc i384 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 1 -store i32 %r169, i32* %r171 -%r172 = lshr i384 %r168, 32 -%r173 = trunc i384 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 2 -store i32 %r173, i32* %r175 -%r176 = lshr i384 %r172, 32 -%r177 = trunc i384 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 3 -store i32 %r177, i32* %r179 -%r180 = lshr i384 %r176, 32 -%r181 = trunc i384 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 4 -store i32 %r181, i32* %r183 -%r184 = lshr i384 %r180, 32 -%r185 = trunc i384 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 5 -store i32 %r185, i32* %r187 -%r188 = lshr i384 %r184, 32 -%r189 = trunc i384 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 6 -store i32 %r189, i32* %r191 -%r192 = lshr i384 %r188, 32 -%r193 = trunc i384 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 7 -store i32 %r193, i32* %r195 -%r196 = lshr i384 %r192, 32 -%r197 = trunc i384 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 8 -store i32 %r197, i32* %r199 -%r200 = lshr i384 %r196, 32 -%r201 = trunc i384 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 9 -store i32 %r201, i32* %r203 -%r204 = lshr i384 %r200, 32 -%r205 = trunc i384 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 10 -store i32 %r205, i32* %r207 -%r208 = lshr i384 %r204, 32 -%r209 = trunc i384 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 11 -store i32 %r209, i32* %r211 -%r212 = load i32, i32* %r4 -%r213 = zext i32 %r212 to i64 -%r215 = getelementptr i32, i32* %r4, i32 1 -%r216 = load i32, i32* %r215 -%r217 = zext i32 %r216 to i64 -%r218 = shl i64 %r217, 32 -%r219 = or i64 %r213, %r218 -%r220 = zext i64 %r219 to i96 -%r222 = getelementptr i32, i32* %r4, i32 2 -%r223 = load i32, i32* %r222 -%r224 = zext i32 %r223 to i96 -%r225 = shl i96 %r224, 64 -%r226 = or i96 %r220, %r225 -%r227 = zext i96 %r226 to i128 -%r229 = getelementptr i32, i32* %r4, i32 3 -%r230 = load i32, i32* %r229 -%r231 = zext i32 %r230 to i128 -%r232 = shl i128 %r231, 96 -%r233 = or i128 %r227, %r232 -%r234 = zext i128 %r233 to i160 -%r236 = getelementptr i32, i32* %r4, i32 4 -%r237 = load i32, i32* %r236 -%r238 = zext i32 %r237 to i160 -%r239 = shl i160 %r238, 128 -%r240 = or i160 %r234, %r239 -%r241 = zext i160 %r240 to i192 -%r243 = getelementptr i32, i32* %r4, i32 5 -%r244 = load i32, i32* %r243 -%r245 = zext i32 %r244 to i192 -%r246 = shl i192 %r245, 160 -%r247 = or i192 %r241, %r246 -%r248 = zext i192 %r247 to i224 -%r250 = getelementptr i32, i32* %r4, i32 6 -%r251 = load i32, i32* %r250 -%r252 = zext i32 %r251 to i224 -%r253 = shl i224 %r252, 192 -%r254 = or i224 %r248, %r253 -%r255 = zext i224 %r254 to i256 -%r257 = getelementptr i32, i32* %r4, i32 7 -%r258 = load i32, i32* %r257 -%r259 = zext i32 %r258 to i256 -%r260 = shl i256 %r259, 224 -%r261 = or i256 %r255, %r260 -%r262 = zext i256 %r261 to i288 -%r264 = getelementptr i32, i32* %r4, i32 8 -%r265 = load i32, i32* %r264 -%r266 = zext i32 %r265 to i288 -%r267 = shl i288 %r266, 256 -%r268 = or i288 %r262, %r267 -%r269 = zext i288 %r268 to i320 -%r271 = getelementptr i32, i32* %r4, i32 9 -%r272 = load i32, i32* %r271 -%r273 = zext i32 %r272 to i320 -%r274 = shl i320 %r273, 288 -%r275 = or i320 %r269, %r274 -%r276 = zext i320 %r275 to i352 -%r278 = getelementptr i32, i32* %r4, i32 10 -%r279 = load i32, i32* %r278 -%r280 = zext i32 %r279 to i352 -%r281 = shl i352 %r280, 320 -%r282 = or i352 %r276, %r281 -%r283 = zext i352 %r282 to i384 -%r285 = getelementptr i32, i32* %r4, i32 11 -%r286 = load i32, i32* %r285 -%r287 = zext i32 %r286 to i384 -%r288 = shl i384 %r287, 352 -%r289 = or i384 %r283, %r288 -%r290 = zext i384 %r289 to i416 -%r291 = sub i416 %r163, %r290 -%r292 = lshr i416 %r291, 384 -%r293 = trunc i416 %r292 to i1 -br i1%r293, label %carry, label %nocarry -nocarry: -%r294 = trunc i416 %r291 to i384 -%r295 = trunc i384 %r294 to i32 -%r297 = getelementptr i32, i32* %r1, i32 0 -store i32 %r295, i32* %r297 -%r298 = lshr i384 %r294, 32 -%r299 = trunc i384 %r298 to i32 -%r301 = getelementptr i32, i32* %r1, i32 1 -store i32 %r299, i32* %r301 -%r302 = lshr i384 %r298, 32 -%r303 = trunc i384 %r302 to i32 -%r305 = getelementptr i32, i32* %r1, i32 2 -store i32 %r303, i32* %r305 -%r306 = lshr i384 %r302, 32 -%r307 = trunc i384 %r306 to i32 -%r309 = getelementptr i32, i32* %r1, i32 3 -store i32 %r307, i32* %r309 -%r310 = lshr i384 %r306, 32 -%r311 = trunc i384 %r310 to i32 -%r313 = getelementptr i32, i32* %r1, i32 4 -store i32 %r311, i32* %r313 -%r314 = lshr i384 %r310, 32 -%r315 = trunc i384 %r314 to i32 -%r317 = getelementptr i32, i32* %r1, i32 5 -store i32 %r315, i32* %r317 -%r318 = lshr i384 %r314, 32 -%r319 = trunc i384 %r318 to i32 -%r321 = getelementptr i32, i32* %r1, i32 6 -store i32 %r319, i32* %r321 -%r322 = lshr i384 %r318, 32 -%r323 = trunc i384 %r322 to i32 -%r325 = getelementptr i32, i32* %r1, i32 7 -store i32 %r323, i32* %r325 -%r326 = lshr i384 %r322, 32 -%r327 = trunc i384 %r326 to i32 -%r329 = getelementptr i32, i32* %r1, i32 8 -store i32 %r327, i32* %r329 -%r330 = lshr i384 %r326, 32 -%r331 = trunc i384 %r330 to i32 -%r333 = getelementptr i32, i32* %r1, i32 9 -store i32 %r331, i32* %r333 -%r334 = lshr i384 %r330, 32 -%r335 = trunc i384 %r334 to i32 -%r337 = getelementptr i32, i32* %r1, i32 10 -store i32 %r335, i32* %r337 -%r338 = lshr i384 %r334, 32 -%r339 = trunc i384 %r338 to i32 -%r341 = getelementptr i32, i32* %r1, i32 11 -store i32 %r339, i32* %r341 -ret void -carry: -ret void -} -define void @mcl_fp_addNF12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = add i384 %r82, %r160 -%r162 = load i32, i32* %r4 -%r163 = zext i32 %r162 to i64 -%r165 = getelementptr i32, i32* %r4, i32 1 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i64 -%r168 = shl i64 %r167, 32 -%r169 = or i64 %r163, %r168 -%r170 = zext i64 %r169 to i96 -%r172 = getelementptr i32, i32* %r4, i32 2 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i96 -%r175 = shl i96 %r174, 64 -%r176 = or i96 %r170, %r175 -%r177 = zext i96 %r176 to i128 -%r179 = getelementptr i32, i32* %r4, i32 3 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i128 -%r182 = shl i128 %r181, 96 -%r183 = or i128 %r177, %r182 -%r184 = zext i128 %r183 to i160 -%r186 = getelementptr i32, i32* %r4, i32 4 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i160 -%r189 = shl i160 %r188, 128 -%r190 = or i160 %r184, %r189 -%r191 = zext i160 %r190 to i192 -%r193 = getelementptr i32, i32* %r4, i32 5 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i192 -%r196 = shl i192 %r195, 160 -%r197 = or i192 %r191, %r196 -%r198 = zext i192 %r197 to i224 -%r200 = getelementptr i32, i32* %r4, i32 6 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i224 -%r203 = shl i224 %r202, 192 -%r204 = or i224 %r198, %r203 -%r205 = zext i224 %r204 to i256 -%r207 = getelementptr i32, i32* %r4, i32 7 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i256 -%r210 = shl i256 %r209, 224 -%r211 = or i256 %r205, %r210 -%r212 = zext i256 %r211 to i288 -%r214 = getelementptr i32, i32* %r4, i32 8 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i288 -%r217 = shl i288 %r216, 256 -%r218 = or i288 %r212, %r217 -%r219 = zext i288 %r218 to i320 -%r221 = getelementptr i32, i32* %r4, i32 9 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i320 -%r224 = shl i320 %r223, 288 -%r225 = or i320 %r219, %r224 -%r226 = zext i320 %r225 to i352 -%r228 = getelementptr i32, i32* %r4, i32 10 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i352 -%r231 = shl i352 %r230, 320 -%r232 = or i352 %r226, %r231 -%r233 = zext i352 %r232 to i384 -%r235 = getelementptr i32, i32* %r4, i32 11 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i384 -%r238 = shl i384 %r237, 352 -%r239 = or i384 %r233, %r238 -%r240 = sub i384 %r161, %r239 -%r241 = lshr i384 %r240, 383 -%r242 = trunc i384 %r241 to i1 -%r243 = select i1 %r242, i384 %r161, i384 %r240 -%r244 = trunc i384 %r243 to i32 -%r246 = getelementptr i32, i32* %r1, i32 0 -store i32 %r244, i32* %r246 -%r247 = lshr i384 %r243, 32 -%r248 = trunc i384 %r247 to i32 -%r250 = getelementptr i32, i32* %r1, i32 1 -store i32 %r248, i32* %r250 -%r251 = lshr i384 %r247, 32 -%r252 = trunc i384 %r251 to i32 -%r254 = getelementptr i32, i32* %r1, i32 2 -store i32 %r252, i32* %r254 -%r255 = lshr i384 %r251, 32 -%r256 = trunc i384 %r255 to i32 -%r258 = getelementptr i32, i32* %r1, i32 3 -store i32 %r256, i32* %r258 -%r259 = lshr i384 %r255, 32 -%r260 = trunc i384 %r259 to i32 -%r262 = getelementptr i32, i32* %r1, i32 4 -store i32 %r260, i32* %r262 -%r263 = lshr i384 %r259, 32 -%r264 = trunc i384 %r263 to i32 -%r266 = getelementptr i32, i32* %r1, i32 5 -store i32 %r264, i32* %r266 -%r267 = lshr i384 %r263, 32 -%r268 = trunc i384 %r267 to i32 -%r270 = getelementptr i32, i32* %r1, i32 6 -store i32 %r268, i32* %r270 -%r271 = lshr i384 %r267, 32 -%r272 = trunc i384 %r271 to i32 -%r274 = getelementptr i32, i32* %r1, i32 7 -store i32 %r272, i32* %r274 -%r275 = lshr i384 %r271, 32 -%r276 = trunc i384 %r275 to i32 -%r278 = getelementptr i32, i32* %r1, i32 8 -store i32 %r276, i32* %r278 -%r279 = lshr i384 %r275, 32 -%r280 = trunc i384 %r279 to i32 -%r282 = getelementptr i32, i32* %r1, i32 9 -store i32 %r280, i32* %r282 -%r283 = lshr i384 %r279, 32 -%r284 = trunc i384 %r283 to i32 -%r286 = getelementptr i32, i32* %r1, i32 10 -store i32 %r284, i32* %r286 -%r287 = lshr i384 %r283, 32 -%r288 = trunc i384 %r287 to i32 -%r290 = getelementptr i32, i32* %r1, i32 11 -store i32 %r288, i32* %r290 -ret void -} -define void @mcl_fp_sub12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r82 to i416 -%r162 = zext i384 %r160 to i416 -%r163 = sub i416 %r161, %r162 -%r164 = trunc i416 %r163 to i384 -%r165 = lshr i416 %r163, 384 -%r166 = trunc i416 %r165 to i1 -%r167 = trunc i384 %r164 to i32 -%r169 = getelementptr i32, i32* %r1, i32 0 -store i32 %r167, i32* %r169 -%r170 = lshr i384 %r164, 32 -%r171 = trunc i384 %r170 to i32 -%r173 = getelementptr i32, i32* %r1, i32 1 -store i32 %r171, i32* %r173 -%r174 = lshr i384 %r170, 32 -%r175 = trunc i384 %r174 to i32 -%r177 = getelementptr i32, i32* %r1, i32 2 -store i32 %r175, i32* %r177 -%r178 = lshr i384 %r174, 32 -%r179 = trunc i384 %r178 to i32 -%r181 = getelementptr i32, i32* %r1, i32 3 -store i32 %r179, i32* %r181 -%r182 = lshr i384 %r178, 32 -%r183 = trunc i384 %r182 to i32 -%r185 = getelementptr i32, i32* %r1, i32 4 -store i32 %r183, i32* %r185 -%r186 = lshr i384 %r182, 32 -%r187 = trunc i384 %r186 to i32 -%r189 = getelementptr i32, i32* %r1, i32 5 -store i32 %r187, i32* %r189 -%r190 = lshr i384 %r186, 32 -%r191 = trunc i384 %r190 to i32 -%r193 = getelementptr i32, i32* %r1, i32 6 -store i32 %r191, i32* %r193 -%r194 = lshr i384 %r190, 32 -%r195 = trunc i384 %r194 to i32 -%r197 = getelementptr i32, i32* %r1, i32 7 -store i32 %r195, i32* %r197 -%r198 = lshr i384 %r194, 32 -%r199 = trunc i384 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 8 -store i32 %r199, i32* %r201 -%r202 = lshr i384 %r198, 32 -%r203 = trunc i384 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 9 -store i32 %r203, i32* %r205 -%r206 = lshr i384 %r202, 32 -%r207 = trunc i384 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 10 -store i32 %r207, i32* %r209 -%r210 = lshr i384 %r206, 32 -%r211 = trunc i384 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 11 -store i32 %r211, i32* %r213 -br i1%r166, label %carry, label %nocarry -nocarry: -ret void -carry: -%r214 = load i32, i32* %r4 -%r215 = zext i32 %r214 to i64 -%r217 = getelementptr i32, i32* %r4, i32 1 -%r218 = load i32, i32* %r217 -%r219 = zext i32 %r218 to i64 -%r220 = shl i64 %r219, 32 -%r221 = or i64 %r215, %r220 -%r222 = zext i64 %r221 to i96 -%r224 = getelementptr i32, i32* %r4, i32 2 -%r225 = load i32, i32* %r224 -%r226 = zext i32 %r225 to i96 -%r227 = shl i96 %r226, 64 -%r228 = or i96 %r222, %r227 -%r229 = zext i96 %r228 to i128 -%r231 = getelementptr i32, i32* %r4, i32 3 -%r232 = load i32, i32* %r231 -%r233 = zext i32 %r232 to i128 -%r234 = shl i128 %r233, 96 -%r235 = or i128 %r229, %r234 -%r236 = zext i128 %r235 to i160 -%r238 = getelementptr i32, i32* %r4, i32 4 -%r239 = load i32, i32* %r238 -%r240 = zext i32 %r239 to i160 -%r241 = shl i160 %r240, 128 -%r242 = or i160 %r236, %r241 -%r243 = zext i160 %r242 to i192 -%r245 = getelementptr i32, i32* %r4, i32 5 -%r246 = load i32, i32* %r245 -%r247 = zext i32 %r246 to i192 -%r248 = shl i192 %r247, 160 -%r249 = or i192 %r243, %r248 -%r250 = zext i192 %r249 to i224 -%r252 = getelementptr i32, i32* %r4, i32 6 -%r253 = load i32, i32* %r252 -%r254 = zext i32 %r253 to i224 -%r255 = shl i224 %r254, 192 -%r256 = or i224 %r250, %r255 -%r257 = zext i224 %r256 to i256 -%r259 = getelementptr i32, i32* %r4, i32 7 -%r260 = load i32, i32* %r259 -%r261 = zext i32 %r260 to i256 -%r262 = shl i256 %r261, 224 -%r263 = or i256 %r257, %r262 -%r264 = zext i256 %r263 to i288 -%r266 = getelementptr i32, i32* %r4, i32 8 -%r267 = load i32, i32* %r266 -%r268 = zext i32 %r267 to i288 -%r269 = shl i288 %r268, 256 -%r270 = or i288 %r264, %r269 -%r271 = zext i288 %r270 to i320 -%r273 = getelementptr i32, i32* %r4, i32 9 -%r274 = load i32, i32* %r273 -%r275 = zext i32 %r274 to i320 -%r276 = shl i320 %r275, 288 -%r277 = or i320 %r271, %r276 -%r278 = zext i320 %r277 to i352 -%r280 = getelementptr i32, i32* %r4, i32 10 -%r281 = load i32, i32* %r280 -%r282 = zext i32 %r281 to i352 -%r283 = shl i352 %r282, 320 -%r284 = or i352 %r278, %r283 -%r285 = zext i352 %r284 to i384 -%r287 = getelementptr i32, i32* %r4, i32 11 -%r288 = load i32, i32* %r287 -%r289 = zext i32 %r288 to i384 -%r290 = shl i384 %r289, 352 -%r291 = or i384 %r285, %r290 -%r292 = add i384 %r164, %r291 -%r293 = trunc i384 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 0 -store i32 %r293, i32* %r295 -%r296 = lshr i384 %r292, 32 -%r297 = trunc i384 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 1 -store i32 %r297, i32* %r299 -%r300 = lshr i384 %r296, 32 -%r301 = trunc i384 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 2 -store i32 %r301, i32* %r303 -%r304 = lshr i384 %r300, 32 -%r305 = trunc i384 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 3 -store i32 %r305, i32* %r307 -%r308 = lshr i384 %r304, 32 -%r309 = trunc i384 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 4 -store i32 %r309, i32* %r311 -%r312 = lshr i384 %r308, 32 -%r313 = trunc i384 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 5 -store i32 %r313, i32* %r315 -%r316 = lshr i384 %r312, 32 -%r317 = trunc i384 %r316 to i32 -%r319 = getelementptr i32, i32* %r1, i32 6 -store i32 %r317, i32* %r319 -%r320 = lshr i384 %r316, 32 -%r321 = trunc i384 %r320 to i32 -%r323 = getelementptr i32, i32* %r1, i32 7 -store i32 %r321, i32* %r323 -%r324 = lshr i384 %r320, 32 -%r325 = trunc i384 %r324 to i32 -%r327 = getelementptr i32, i32* %r1, i32 8 -store i32 %r325, i32* %r327 -%r328 = lshr i384 %r324, 32 -%r329 = trunc i384 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 9 -store i32 %r329, i32* %r331 -%r332 = lshr i384 %r328, 32 -%r333 = trunc i384 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 10 -store i32 %r333, i32* %r335 -%r336 = lshr i384 %r332, 32 -%r337 = trunc i384 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 11 -store i32 %r337, i32* %r339 -ret void -} -define void @mcl_fp_subNF12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = load i32, i32* %r3 -%r84 = zext i32 %r83 to i64 -%r86 = getelementptr i32, i32* %r3, i32 1 -%r87 = load i32, i32* %r86 -%r88 = zext i32 %r87 to i64 -%r89 = shl i64 %r88, 32 -%r90 = or i64 %r84, %r89 -%r91 = zext i64 %r90 to i96 -%r93 = getelementptr i32, i32* %r3, i32 2 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i96 -%r96 = shl i96 %r95, 64 -%r97 = or i96 %r91, %r96 -%r98 = zext i96 %r97 to i128 -%r100 = getelementptr i32, i32* %r3, i32 3 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i128 -%r103 = shl i128 %r102, 96 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i160 -%r107 = getelementptr i32, i32* %r3, i32 4 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i160 -%r110 = shl i160 %r109, 128 -%r111 = or i160 %r105, %r110 -%r112 = zext i160 %r111 to i192 -%r114 = getelementptr i32, i32* %r3, i32 5 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i192 -%r117 = shl i192 %r116, 160 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i224 -%r121 = getelementptr i32, i32* %r3, i32 6 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i224 -%r124 = shl i224 %r123, 192 -%r125 = or i224 %r119, %r124 -%r126 = zext i224 %r125 to i256 -%r128 = getelementptr i32, i32* %r3, i32 7 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i256 -%r131 = shl i256 %r130, 224 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i288 -%r135 = getelementptr i32, i32* %r3, i32 8 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i288 -%r138 = shl i288 %r137, 256 -%r139 = or i288 %r133, %r138 -%r140 = zext i288 %r139 to i320 -%r142 = getelementptr i32, i32* %r3, i32 9 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i320 -%r145 = shl i320 %r144, 288 -%r146 = or i320 %r140, %r145 -%r147 = zext i320 %r146 to i352 -%r149 = getelementptr i32, i32* %r3, i32 10 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i352 -%r152 = shl i352 %r151, 320 -%r153 = or i352 %r147, %r152 -%r154 = zext i352 %r153 to i384 -%r156 = getelementptr i32, i32* %r3, i32 11 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i384 -%r159 = shl i384 %r158, 352 -%r160 = or i384 %r154, %r159 -%r161 = sub i384 %r82, %r160 -%r162 = lshr i384 %r161, 383 -%r163 = trunc i384 %r162 to i1 -%r164 = load i32, i32* %r4 -%r165 = zext i32 %r164 to i64 -%r167 = getelementptr i32, i32* %r4, i32 1 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i64 -%r170 = shl i64 %r169, 32 -%r171 = or i64 %r165, %r170 -%r172 = zext i64 %r171 to i96 -%r174 = getelementptr i32, i32* %r4, i32 2 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i96 -%r177 = shl i96 %r176, 64 -%r178 = or i96 %r172, %r177 -%r179 = zext i96 %r178 to i128 -%r181 = getelementptr i32, i32* %r4, i32 3 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i128 -%r184 = shl i128 %r183, 96 -%r185 = or i128 %r179, %r184 -%r186 = zext i128 %r185 to i160 -%r188 = getelementptr i32, i32* %r4, i32 4 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i160 -%r191 = shl i160 %r190, 128 -%r192 = or i160 %r186, %r191 -%r193 = zext i160 %r192 to i192 -%r195 = getelementptr i32, i32* %r4, i32 5 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i192 -%r198 = shl i192 %r197, 160 -%r199 = or i192 %r193, %r198 -%r200 = zext i192 %r199 to i224 -%r202 = getelementptr i32, i32* %r4, i32 6 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i224 -%r205 = shl i224 %r204, 192 -%r206 = or i224 %r200, %r205 -%r207 = zext i224 %r206 to i256 -%r209 = getelementptr i32, i32* %r4, i32 7 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i256 -%r212 = shl i256 %r211, 224 -%r213 = or i256 %r207, %r212 -%r214 = zext i256 %r213 to i288 -%r216 = getelementptr i32, i32* %r4, i32 8 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i288 -%r219 = shl i288 %r218, 256 -%r220 = or i288 %r214, %r219 -%r221 = zext i288 %r220 to i320 -%r223 = getelementptr i32, i32* %r4, i32 9 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i320 -%r226 = shl i320 %r225, 288 -%r227 = or i320 %r221, %r226 -%r228 = zext i320 %r227 to i352 -%r230 = getelementptr i32, i32* %r4, i32 10 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i352 -%r233 = shl i352 %r232, 320 -%r234 = or i352 %r228, %r233 -%r235 = zext i352 %r234 to i384 -%r237 = getelementptr i32, i32* %r4, i32 11 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i384 -%r240 = shl i384 %r239, 352 -%r241 = or i384 %r235, %r240 -%r243 = select i1 %r163, i384 %r241, i384 0 -%r244 = add i384 %r161, %r243 -%r245 = trunc i384 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 0 -store i32 %r245, i32* %r247 -%r248 = lshr i384 %r244, 32 -%r249 = trunc i384 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 1 -store i32 %r249, i32* %r251 -%r252 = lshr i384 %r248, 32 -%r253 = trunc i384 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 2 -store i32 %r253, i32* %r255 -%r256 = lshr i384 %r252, 32 -%r257 = trunc i384 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 3 -store i32 %r257, i32* %r259 -%r260 = lshr i384 %r256, 32 -%r261 = trunc i384 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 4 -store i32 %r261, i32* %r263 -%r264 = lshr i384 %r260, 32 -%r265 = trunc i384 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 5 -store i32 %r265, i32* %r267 -%r268 = lshr i384 %r264, 32 -%r269 = trunc i384 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 6 -store i32 %r269, i32* %r271 -%r272 = lshr i384 %r268, 32 -%r273 = trunc i384 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 7 -store i32 %r273, i32* %r275 -%r276 = lshr i384 %r272, 32 -%r277 = trunc i384 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 8 -store i32 %r277, i32* %r279 -%r280 = lshr i384 %r276, 32 -%r281 = trunc i384 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 9 -store i32 %r281, i32* %r283 -%r284 = lshr i384 %r280, 32 -%r285 = trunc i384 %r284 to i32 -%r287 = getelementptr i32, i32* %r1, i32 10 -store i32 %r285, i32* %r287 -%r288 = lshr i384 %r284, 32 -%r289 = trunc i384 %r288 to i32 -%r291 = getelementptr i32, i32* %r1, i32 11 -store i32 %r289, i32* %r291 -ret void -} -define void @mcl_fpDbl_add12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = load i32, i32* %r3 -%r168 = zext i32 %r167 to i64 -%r170 = getelementptr i32, i32* %r3, i32 1 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i64 -%r173 = shl i64 %r172, 32 -%r174 = or i64 %r168, %r173 -%r175 = zext i64 %r174 to i96 -%r177 = getelementptr i32, i32* %r3, i32 2 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i96 -%r180 = shl i96 %r179, 64 -%r181 = or i96 %r175, %r180 -%r182 = zext i96 %r181 to i128 -%r184 = getelementptr i32, i32* %r3, i32 3 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i128 -%r187 = shl i128 %r186, 96 -%r188 = or i128 %r182, %r187 -%r189 = zext i128 %r188 to i160 -%r191 = getelementptr i32, i32* %r3, i32 4 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i160 -%r194 = shl i160 %r193, 128 -%r195 = or i160 %r189, %r194 -%r196 = zext i160 %r195 to i192 -%r198 = getelementptr i32, i32* %r3, i32 5 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i192 -%r201 = shl i192 %r200, 160 -%r202 = or i192 %r196, %r201 -%r203 = zext i192 %r202 to i224 -%r205 = getelementptr i32, i32* %r3, i32 6 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i224 -%r208 = shl i224 %r207, 192 -%r209 = or i224 %r203, %r208 -%r210 = zext i224 %r209 to i256 -%r212 = getelementptr i32, i32* %r3, i32 7 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i256 -%r215 = shl i256 %r214, 224 -%r216 = or i256 %r210, %r215 -%r217 = zext i256 %r216 to i288 -%r219 = getelementptr i32, i32* %r3, i32 8 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i288 -%r222 = shl i288 %r221, 256 -%r223 = or i288 %r217, %r222 -%r224 = zext i288 %r223 to i320 -%r226 = getelementptr i32, i32* %r3, i32 9 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i320 -%r229 = shl i320 %r228, 288 -%r230 = or i320 %r224, %r229 -%r231 = zext i320 %r230 to i352 -%r233 = getelementptr i32, i32* %r3, i32 10 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i352 -%r236 = shl i352 %r235, 320 -%r237 = or i352 %r231, %r236 -%r238 = zext i352 %r237 to i384 -%r240 = getelementptr i32, i32* %r3, i32 11 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i384 -%r243 = shl i384 %r242, 352 -%r244 = or i384 %r238, %r243 -%r245 = zext i384 %r244 to i416 -%r247 = getelementptr i32, i32* %r3, i32 12 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i416 -%r250 = shl i416 %r249, 384 -%r251 = or i416 %r245, %r250 -%r252 = zext i416 %r251 to i448 -%r254 = getelementptr i32, i32* %r3, i32 13 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i448 -%r257 = shl i448 %r256, 416 -%r258 = or i448 %r252, %r257 -%r259 = zext i448 %r258 to i480 -%r261 = getelementptr i32, i32* %r3, i32 14 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i480 -%r264 = shl i480 %r263, 448 -%r265 = or i480 %r259, %r264 -%r266 = zext i480 %r265 to i512 -%r268 = getelementptr i32, i32* %r3, i32 15 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i512 -%r271 = shl i512 %r270, 480 -%r272 = or i512 %r266, %r271 -%r273 = zext i512 %r272 to i544 -%r275 = getelementptr i32, i32* %r3, i32 16 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i544 -%r278 = shl i544 %r277, 512 -%r279 = or i544 %r273, %r278 -%r280 = zext i544 %r279 to i576 -%r282 = getelementptr i32, i32* %r3, i32 17 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i576 -%r285 = shl i576 %r284, 544 -%r286 = or i576 %r280, %r285 -%r287 = zext i576 %r286 to i608 -%r289 = getelementptr i32, i32* %r3, i32 18 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i608 -%r292 = shl i608 %r291, 576 -%r293 = or i608 %r287, %r292 -%r294 = zext i608 %r293 to i640 -%r296 = getelementptr i32, i32* %r3, i32 19 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i640 -%r299 = shl i640 %r298, 608 -%r300 = or i640 %r294, %r299 -%r301 = zext i640 %r300 to i672 -%r303 = getelementptr i32, i32* %r3, i32 20 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i672 -%r306 = shl i672 %r305, 640 -%r307 = or i672 %r301, %r306 -%r308 = zext i672 %r307 to i704 -%r310 = getelementptr i32, i32* %r3, i32 21 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i704 -%r313 = shl i704 %r312, 672 -%r314 = or i704 %r308, %r313 -%r315 = zext i704 %r314 to i736 -%r317 = getelementptr i32, i32* %r3, i32 22 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i736 -%r320 = shl i736 %r319, 704 -%r321 = or i736 %r315, %r320 -%r322 = zext i736 %r321 to i768 -%r324 = getelementptr i32, i32* %r3, i32 23 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i768 -%r327 = shl i768 %r326, 736 -%r328 = or i768 %r322, %r327 -%r329 = zext i768 %r166 to i800 -%r330 = zext i768 %r328 to i800 -%r331 = add i800 %r329, %r330 -%r332 = trunc i800 %r331 to i384 -%r333 = trunc i384 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 0 -store i32 %r333, i32* %r335 -%r336 = lshr i384 %r332, 32 -%r337 = trunc i384 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 1 -store i32 %r337, i32* %r339 -%r340 = lshr i384 %r336, 32 -%r341 = trunc i384 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 2 -store i32 %r341, i32* %r343 -%r344 = lshr i384 %r340, 32 -%r345 = trunc i384 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 3 -store i32 %r345, i32* %r347 -%r348 = lshr i384 %r344, 32 -%r349 = trunc i384 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 4 -store i32 %r349, i32* %r351 -%r352 = lshr i384 %r348, 32 -%r353 = trunc i384 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 5 -store i32 %r353, i32* %r355 -%r356 = lshr i384 %r352, 32 -%r357 = trunc i384 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 6 -store i32 %r357, i32* %r359 -%r360 = lshr i384 %r356, 32 -%r361 = trunc i384 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 7 -store i32 %r361, i32* %r363 -%r364 = lshr i384 %r360, 32 -%r365 = trunc i384 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 8 -store i32 %r365, i32* %r367 -%r368 = lshr i384 %r364, 32 -%r369 = trunc i384 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 9 -store i32 %r369, i32* %r371 -%r372 = lshr i384 %r368, 32 -%r373 = trunc i384 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 10 -store i32 %r373, i32* %r375 -%r376 = lshr i384 %r372, 32 -%r377 = trunc i384 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 11 -store i32 %r377, i32* %r379 -%r380 = lshr i800 %r331, 384 -%r381 = trunc i800 %r380 to i416 -%r382 = load i32, i32* %r4 -%r383 = zext i32 %r382 to i64 -%r385 = getelementptr i32, i32* %r4, i32 1 -%r386 = load i32, i32* %r385 -%r387 = zext i32 %r386 to i64 -%r388 = shl i64 %r387, 32 -%r389 = or i64 %r383, %r388 -%r390 = zext i64 %r389 to i96 -%r392 = getelementptr i32, i32* %r4, i32 2 -%r393 = load i32, i32* %r392 -%r394 = zext i32 %r393 to i96 -%r395 = shl i96 %r394, 64 -%r396 = or i96 %r390, %r395 -%r397 = zext i96 %r396 to i128 -%r399 = getelementptr i32, i32* %r4, i32 3 -%r400 = load i32, i32* %r399 -%r401 = zext i32 %r400 to i128 -%r402 = shl i128 %r401, 96 -%r403 = or i128 %r397, %r402 -%r404 = zext i128 %r403 to i160 -%r406 = getelementptr i32, i32* %r4, i32 4 -%r407 = load i32, i32* %r406 -%r408 = zext i32 %r407 to i160 -%r409 = shl i160 %r408, 128 -%r410 = or i160 %r404, %r409 -%r411 = zext i160 %r410 to i192 -%r413 = getelementptr i32, i32* %r4, i32 5 -%r414 = load i32, i32* %r413 -%r415 = zext i32 %r414 to i192 -%r416 = shl i192 %r415, 160 -%r417 = or i192 %r411, %r416 -%r418 = zext i192 %r417 to i224 -%r420 = getelementptr i32, i32* %r4, i32 6 -%r421 = load i32, i32* %r420 -%r422 = zext i32 %r421 to i224 -%r423 = shl i224 %r422, 192 -%r424 = or i224 %r418, %r423 -%r425 = zext i224 %r424 to i256 -%r427 = getelementptr i32, i32* %r4, i32 7 -%r428 = load i32, i32* %r427 -%r429 = zext i32 %r428 to i256 -%r430 = shl i256 %r429, 224 -%r431 = or i256 %r425, %r430 -%r432 = zext i256 %r431 to i288 -%r434 = getelementptr i32, i32* %r4, i32 8 -%r435 = load i32, i32* %r434 -%r436 = zext i32 %r435 to i288 -%r437 = shl i288 %r436, 256 -%r438 = or i288 %r432, %r437 -%r439 = zext i288 %r438 to i320 -%r441 = getelementptr i32, i32* %r4, i32 9 -%r442 = load i32, i32* %r441 -%r443 = zext i32 %r442 to i320 -%r444 = shl i320 %r443, 288 -%r445 = or i320 %r439, %r444 -%r446 = zext i320 %r445 to i352 -%r448 = getelementptr i32, i32* %r4, i32 10 -%r449 = load i32, i32* %r448 -%r450 = zext i32 %r449 to i352 -%r451 = shl i352 %r450, 320 -%r452 = or i352 %r446, %r451 -%r453 = zext i352 %r452 to i384 -%r455 = getelementptr i32, i32* %r4, i32 11 -%r456 = load i32, i32* %r455 -%r457 = zext i32 %r456 to i384 -%r458 = shl i384 %r457, 352 -%r459 = or i384 %r453, %r458 -%r460 = zext i384 %r459 to i416 -%r461 = sub i416 %r381, %r460 -%r462 = lshr i416 %r461, 384 -%r463 = trunc i416 %r462 to i1 -%r464 = select i1 %r463, i416 %r381, i416 %r461 -%r465 = trunc i416 %r464 to i384 -%r467 = getelementptr i32, i32* %r1, i32 12 -%r468 = trunc i384 %r465 to i32 -%r470 = getelementptr i32, i32* %r467, i32 0 -store i32 %r468, i32* %r470 -%r471 = lshr i384 %r465, 32 -%r472 = trunc i384 %r471 to i32 -%r474 = getelementptr i32, i32* %r467, i32 1 -store i32 %r472, i32* %r474 -%r475 = lshr i384 %r471, 32 -%r476 = trunc i384 %r475 to i32 -%r478 = getelementptr i32, i32* %r467, i32 2 -store i32 %r476, i32* %r478 -%r479 = lshr i384 %r475, 32 -%r480 = trunc i384 %r479 to i32 -%r482 = getelementptr i32, i32* %r467, i32 3 -store i32 %r480, i32* %r482 -%r483 = lshr i384 %r479, 32 -%r484 = trunc i384 %r483 to i32 -%r486 = getelementptr i32, i32* %r467, i32 4 -store i32 %r484, i32* %r486 -%r487 = lshr i384 %r483, 32 -%r488 = trunc i384 %r487 to i32 -%r490 = getelementptr i32, i32* %r467, i32 5 -store i32 %r488, i32* %r490 -%r491 = lshr i384 %r487, 32 -%r492 = trunc i384 %r491 to i32 -%r494 = getelementptr i32, i32* %r467, i32 6 -store i32 %r492, i32* %r494 -%r495 = lshr i384 %r491, 32 -%r496 = trunc i384 %r495 to i32 -%r498 = getelementptr i32, i32* %r467, i32 7 -store i32 %r496, i32* %r498 -%r499 = lshr i384 %r495, 32 -%r500 = trunc i384 %r499 to i32 -%r502 = getelementptr i32, i32* %r467, i32 8 -store i32 %r500, i32* %r502 -%r503 = lshr i384 %r499, 32 -%r504 = trunc i384 %r503 to i32 -%r506 = getelementptr i32, i32* %r467, i32 9 -store i32 %r504, i32* %r506 -%r507 = lshr i384 %r503, 32 -%r508 = trunc i384 %r507 to i32 -%r510 = getelementptr i32, i32* %r467, i32 10 -store i32 %r508, i32* %r510 -%r511 = lshr i384 %r507, 32 -%r512 = trunc i384 %r511 to i32 -%r514 = getelementptr i32, i32* %r467, i32 11 -store i32 %r512, i32* %r514 -ret void -} -define void @mcl_fpDbl_sub12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = load i32, i32* %r3 -%r168 = zext i32 %r167 to i64 -%r170 = getelementptr i32, i32* %r3, i32 1 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i64 -%r173 = shl i64 %r172, 32 -%r174 = or i64 %r168, %r173 -%r175 = zext i64 %r174 to i96 -%r177 = getelementptr i32, i32* %r3, i32 2 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i96 -%r180 = shl i96 %r179, 64 -%r181 = or i96 %r175, %r180 -%r182 = zext i96 %r181 to i128 -%r184 = getelementptr i32, i32* %r3, i32 3 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i128 -%r187 = shl i128 %r186, 96 -%r188 = or i128 %r182, %r187 -%r189 = zext i128 %r188 to i160 -%r191 = getelementptr i32, i32* %r3, i32 4 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i160 -%r194 = shl i160 %r193, 128 -%r195 = or i160 %r189, %r194 -%r196 = zext i160 %r195 to i192 -%r198 = getelementptr i32, i32* %r3, i32 5 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i192 -%r201 = shl i192 %r200, 160 -%r202 = or i192 %r196, %r201 -%r203 = zext i192 %r202 to i224 -%r205 = getelementptr i32, i32* %r3, i32 6 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i224 -%r208 = shl i224 %r207, 192 -%r209 = or i224 %r203, %r208 -%r210 = zext i224 %r209 to i256 -%r212 = getelementptr i32, i32* %r3, i32 7 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i256 -%r215 = shl i256 %r214, 224 -%r216 = or i256 %r210, %r215 -%r217 = zext i256 %r216 to i288 -%r219 = getelementptr i32, i32* %r3, i32 8 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i288 -%r222 = shl i288 %r221, 256 -%r223 = or i288 %r217, %r222 -%r224 = zext i288 %r223 to i320 -%r226 = getelementptr i32, i32* %r3, i32 9 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i320 -%r229 = shl i320 %r228, 288 -%r230 = or i320 %r224, %r229 -%r231 = zext i320 %r230 to i352 -%r233 = getelementptr i32, i32* %r3, i32 10 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i352 -%r236 = shl i352 %r235, 320 -%r237 = or i352 %r231, %r236 -%r238 = zext i352 %r237 to i384 -%r240 = getelementptr i32, i32* %r3, i32 11 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i384 -%r243 = shl i384 %r242, 352 -%r244 = or i384 %r238, %r243 -%r245 = zext i384 %r244 to i416 -%r247 = getelementptr i32, i32* %r3, i32 12 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i416 -%r250 = shl i416 %r249, 384 -%r251 = or i416 %r245, %r250 -%r252 = zext i416 %r251 to i448 -%r254 = getelementptr i32, i32* %r3, i32 13 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i448 -%r257 = shl i448 %r256, 416 -%r258 = or i448 %r252, %r257 -%r259 = zext i448 %r258 to i480 -%r261 = getelementptr i32, i32* %r3, i32 14 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i480 -%r264 = shl i480 %r263, 448 -%r265 = or i480 %r259, %r264 -%r266 = zext i480 %r265 to i512 -%r268 = getelementptr i32, i32* %r3, i32 15 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i512 -%r271 = shl i512 %r270, 480 -%r272 = or i512 %r266, %r271 -%r273 = zext i512 %r272 to i544 -%r275 = getelementptr i32, i32* %r3, i32 16 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i544 -%r278 = shl i544 %r277, 512 -%r279 = or i544 %r273, %r278 -%r280 = zext i544 %r279 to i576 -%r282 = getelementptr i32, i32* %r3, i32 17 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i576 -%r285 = shl i576 %r284, 544 -%r286 = or i576 %r280, %r285 -%r287 = zext i576 %r286 to i608 -%r289 = getelementptr i32, i32* %r3, i32 18 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i608 -%r292 = shl i608 %r291, 576 -%r293 = or i608 %r287, %r292 -%r294 = zext i608 %r293 to i640 -%r296 = getelementptr i32, i32* %r3, i32 19 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i640 -%r299 = shl i640 %r298, 608 -%r300 = or i640 %r294, %r299 -%r301 = zext i640 %r300 to i672 -%r303 = getelementptr i32, i32* %r3, i32 20 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i672 -%r306 = shl i672 %r305, 640 -%r307 = or i672 %r301, %r306 -%r308 = zext i672 %r307 to i704 -%r310 = getelementptr i32, i32* %r3, i32 21 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i704 -%r313 = shl i704 %r312, 672 -%r314 = or i704 %r308, %r313 -%r315 = zext i704 %r314 to i736 -%r317 = getelementptr i32, i32* %r3, i32 22 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i736 -%r320 = shl i736 %r319, 704 -%r321 = or i736 %r315, %r320 -%r322 = zext i736 %r321 to i768 -%r324 = getelementptr i32, i32* %r3, i32 23 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i768 -%r327 = shl i768 %r326, 736 -%r328 = or i768 %r322, %r327 -%r329 = zext i768 %r166 to i800 -%r330 = zext i768 %r328 to i800 -%r331 = sub i800 %r329, %r330 -%r332 = trunc i800 %r331 to i384 -%r333 = trunc i384 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 0 -store i32 %r333, i32* %r335 -%r336 = lshr i384 %r332, 32 -%r337 = trunc i384 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 1 -store i32 %r337, i32* %r339 -%r340 = lshr i384 %r336, 32 -%r341 = trunc i384 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 2 -store i32 %r341, i32* %r343 -%r344 = lshr i384 %r340, 32 -%r345 = trunc i384 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 3 -store i32 %r345, i32* %r347 -%r348 = lshr i384 %r344, 32 -%r349 = trunc i384 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 4 -store i32 %r349, i32* %r351 -%r352 = lshr i384 %r348, 32 -%r353 = trunc i384 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 5 -store i32 %r353, i32* %r355 -%r356 = lshr i384 %r352, 32 -%r357 = trunc i384 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 6 -store i32 %r357, i32* %r359 -%r360 = lshr i384 %r356, 32 -%r361 = trunc i384 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 7 -store i32 %r361, i32* %r363 -%r364 = lshr i384 %r360, 32 -%r365 = trunc i384 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 8 -store i32 %r365, i32* %r367 -%r368 = lshr i384 %r364, 32 -%r369 = trunc i384 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 9 -store i32 %r369, i32* %r371 -%r372 = lshr i384 %r368, 32 -%r373 = trunc i384 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 10 -store i32 %r373, i32* %r375 -%r376 = lshr i384 %r372, 32 -%r377 = trunc i384 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 11 -store i32 %r377, i32* %r379 -%r380 = lshr i800 %r331, 384 -%r381 = trunc i800 %r380 to i384 -%r382 = lshr i800 %r331, 768 -%r383 = trunc i800 %r382 to i1 -%r384 = load i32, i32* %r4 -%r385 = zext i32 %r384 to i64 -%r387 = getelementptr i32, i32* %r4, i32 1 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i64 -%r390 = shl i64 %r389, 32 -%r391 = or i64 %r385, %r390 -%r392 = zext i64 %r391 to i96 -%r394 = getelementptr i32, i32* %r4, i32 2 -%r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i96 -%r397 = shl i96 %r396, 64 -%r398 = or i96 %r392, %r397 -%r399 = zext i96 %r398 to i128 -%r401 = getelementptr i32, i32* %r4, i32 3 -%r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i128 -%r404 = shl i128 %r403, 96 -%r405 = or i128 %r399, %r404 -%r406 = zext i128 %r405 to i160 -%r408 = getelementptr i32, i32* %r4, i32 4 -%r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i160 -%r411 = shl i160 %r410, 128 -%r412 = or i160 %r406, %r411 -%r413 = zext i160 %r412 to i192 -%r415 = getelementptr i32, i32* %r4, i32 5 -%r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i192 -%r418 = shl i192 %r417, 160 -%r419 = or i192 %r413, %r418 -%r420 = zext i192 %r419 to i224 -%r422 = getelementptr i32, i32* %r4, i32 6 -%r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i224 -%r425 = shl i224 %r424, 192 -%r426 = or i224 %r420, %r425 -%r427 = zext i224 %r426 to i256 -%r429 = getelementptr i32, i32* %r4, i32 7 -%r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i256 -%r432 = shl i256 %r431, 224 -%r433 = or i256 %r427, %r432 -%r434 = zext i256 %r433 to i288 -%r436 = getelementptr i32, i32* %r4, i32 8 -%r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i288 -%r439 = shl i288 %r438, 256 -%r440 = or i288 %r434, %r439 -%r441 = zext i288 %r440 to i320 -%r443 = getelementptr i32, i32* %r4, i32 9 -%r444 = load i32, i32* %r443 -%r445 = zext i32 %r444 to i320 -%r446 = shl i320 %r445, 288 -%r447 = or i320 %r441, %r446 -%r448 = zext i320 %r447 to i352 -%r450 = getelementptr i32, i32* %r4, i32 10 -%r451 = load i32, i32* %r450 -%r452 = zext i32 %r451 to i352 -%r453 = shl i352 %r452, 320 -%r454 = or i352 %r448, %r453 -%r455 = zext i352 %r454 to i384 -%r457 = getelementptr i32, i32* %r4, i32 11 -%r458 = load i32, i32* %r457 -%r459 = zext i32 %r458 to i384 -%r460 = shl i384 %r459, 352 -%r461 = or i384 %r455, %r460 -%r463 = select i1 %r383, i384 %r461, i384 0 -%r464 = add i384 %r381, %r463 -%r466 = getelementptr i32, i32* %r1, i32 12 -%r467 = trunc i384 %r464 to i32 -%r469 = getelementptr i32, i32* %r466, i32 0 -store i32 %r467, i32* %r469 -%r470 = lshr i384 %r464, 32 -%r471 = trunc i384 %r470 to i32 -%r473 = getelementptr i32, i32* %r466, i32 1 -store i32 %r471, i32* %r473 -%r474 = lshr i384 %r470, 32 -%r475 = trunc i384 %r474 to i32 -%r477 = getelementptr i32, i32* %r466, i32 2 -store i32 %r475, i32* %r477 -%r478 = lshr i384 %r474, 32 -%r479 = trunc i384 %r478 to i32 -%r481 = getelementptr i32, i32* %r466, i32 3 -store i32 %r479, i32* %r481 -%r482 = lshr i384 %r478, 32 -%r483 = trunc i384 %r482 to i32 -%r485 = getelementptr i32, i32* %r466, i32 4 -store i32 %r483, i32* %r485 -%r486 = lshr i384 %r482, 32 -%r487 = trunc i384 %r486 to i32 -%r489 = getelementptr i32, i32* %r466, i32 5 -store i32 %r487, i32* %r489 -%r490 = lshr i384 %r486, 32 -%r491 = trunc i384 %r490 to i32 -%r493 = getelementptr i32, i32* %r466, i32 6 -store i32 %r491, i32* %r493 -%r494 = lshr i384 %r490, 32 -%r495 = trunc i384 %r494 to i32 -%r497 = getelementptr i32, i32* %r466, i32 7 -store i32 %r495, i32* %r497 -%r498 = lshr i384 %r494, 32 -%r499 = trunc i384 %r498 to i32 -%r501 = getelementptr i32, i32* %r466, i32 8 -store i32 %r499, i32* %r501 -%r502 = lshr i384 %r498, 32 -%r503 = trunc i384 %r502 to i32 -%r505 = getelementptr i32, i32* %r466, i32 9 -store i32 %r503, i32* %r505 -%r506 = lshr i384 %r502, 32 -%r507 = trunc i384 %r506 to i32 -%r509 = getelementptr i32, i32* %r466, i32 10 -store i32 %r507, i32* %r509 -%r510 = lshr i384 %r506, 32 -%r511 = trunc i384 %r510 to i32 -%r513 = getelementptr i32, i32* %r466, i32 11 -store i32 %r511, i32* %r513 -ret void -} -define i448 @mulPv416x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) -%r54 = trunc i64 %r53 to i32 -%r55 = call i32 @extractHigh32(i64 %r53) -%r56 = zext i32 %r6 to i64 -%r57 = zext i32 %r10 to i64 -%r58 = shl i64 %r57, 32 -%r59 = or i64 %r56, %r58 -%r60 = zext i64 %r59 to i96 -%r61 = zext i32 %r14 to i96 -%r62 = shl i96 %r61, 64 -%r63 = or i96 %r60, %r62 -%r64 = zext i96 %r63 to i128 -%r65 = zext i32 %r18 to i128 -%r66 = shl i128 %r65, 96 -%r67 = or i128 %r64, %r66 -%r68 = zext i128 %r67 to i160 -%r69 = zext i32 %r22 to i160 -%r70 = shl i160 %r69, 128 -%r71 = or i160 %r68, %r70 -%r72 = zext i160 %r71 to i192 -%r73 = zext i32 %r26 to i192 -%r74 = shl i192 %r73, 160 -%r75 = or i192 %r72, %r74 -%r76 = zext i192 %r75 to i224 -%r77 = zext i32 %r30 to i224 -%r78 = shl i224 %r77, 192 -%r79 = or i224 %r76, %r78 -%r80 = zext i224 %r79 to i256 -%r81 = zext i32 %r34 to i256 -%r82 = shl i256 %r81, 224 -%r83 = or i256 %r80, %r82 -%r84 = zext i256 %r83 to i288 -%r85 = zext i32 %r38 to i288 -%r86 = shl i288 %r85, 256 -%r87 = or i288 %r84, %r86 -%r88 = zext i288 %r87 to i320 -%r89 = zext i32 %r42 to i320 -%r90 = shl i320 %r89, 288 -%r91 = or i320 %r88, %r90 -%r92 = zext i320 %r91 to i352 -%r93 = zext i32 %r46 to i352 -%r94 = shl i352 %r93, 320 -%r95 = or i352 %r92, %r94 -%r96 = zext i352 %r95 to i384 -%r97 = zext i32 %r50 to i384 -%r98 = shl i384 %r97, 352 -%r99 = or i384 %r96, %r98 -%r100 = zext i384 %r99 to i416 -%r101 = zext i32 %r54 to i416 -%r102 = shl i416 %r101, 384 -%r103 = or i416 %r100, %r102 -%r104 = zext i32 %r7 to i64 -%r105 = zext i32 %r11 to i64 -%r106 = shl i64 %r105, 32 -%r107 = or i64 %r104, %r106 -%r108 = zext i64 %r107 to i96 -%r109 = zext i32 %r15 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r108, %r110 -%r112 = zext i96 %r111 to i128 -%r113 = zext i32 %r19 to i128 -%r114 = shl i128 %r113, 96 -%r115 = or i128 %r112, %r114 -%r116 = zext i128 %r115 to i160 -%r117 = zext i32 %r23 to i160 -%r118 = shl i160 %r117, 128 -%r119 = or i160 %r116, %r118 -%r120 = zext i160 %r119 to i192 -%r121 = zext i32 %r27 to i192 -%r122 = shl i192 %r121, 160 -%r123 = or i192 %r120, %r122 -%r124 = zext i192 %r123 to i224 -%r125 = zext i32 %r31 to i224 -%r126 = shl i224 %r125, 192 -%r127 = or i224 %r124, %r126 -%r128 = zext i224 %r127 to i256 -%r129 = zext i32 %r35 to i256 -%r130 = shl i256 %r129, 224 -%r131 = or i256 %r128, %r130 -%r132 = zext i256 %r131 to i288 -%r133 = zext i32 %r39 to i288 -%r134 = shl i288 %r133, 256 -%r135 = or i288 %r132, %r134 -%r136 = zext i288 %r135 to i320 -%r137 = zext i32 %r43 to i320 -%r138 = shl i320 %r137, 288 -%r139 = or i320 %r136, %r138 -%r140 = zext i320 %r139 to i352 -%r141 = zext i32 %r47 to i352 -%r142 = shl i352 %r141, 320 -%r143 = or i352 %r140, %r142 -%r144 = zext i352 %r143 to i384 -%r145 = zext i32 %r51 to i384 -%r146 = shl i384 %r145, 352 -%r147 = or i384 %r144, %r146 -%r148 = zext i384 %r147 to i416 -%r149 = zext i32 %r55 to i416 -%r150 = shl i416 %r149, 384 -%r151 = or i416 %r148, %r150 -%r152 = zext i416 %r103 to i448 -%r153 = zext i416 %r151 to i448 -%r154 = shl i448 %r153, 32 -%r155 = add i448 %r152, %r154 -ret i448 %r155 -} -define void @mcl_fp_mulUnitPre13L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i448 @mulPv416x32(i32* %r2, i32 %r3) -%r5 = trunc i448 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i448 %r4, 32 -%r9 = trunc i448 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i448 %r8, 32 -%r13 = trunc i448 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i448 %r12, 32 -%r17 = trunc i448 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i448 %r16, 32 -%r21 = trunc i448 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i448 %r20, 32 -%r25 = trunc i448 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i448 %r24, 32 -%r29 = trunc i448 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i448 %r28, 32 -%r33 = trunc i448 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i448 %r32, 32 -%r37 = trunc i448 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i448 %r36, 32 -%r41 = trunc i448 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i448 %r40, 32 -%r45 = trunc i448 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i448 %r44, 32 -%r49 = trunc i448 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i448 %r48, 32 -%r53 = trunc i448 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -%r56 = lshr i448 %r52, 32 -%r57 = trunc i448 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 13 -store i32 %r57, i32* %r59 -ret void -} -define void @mcl_fpDbl_mulPre13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i448 @mulPv416x32(i32* %r2, i32 %r4) -%r6 = trunc i448 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i448 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i448 @mulPv416x32(i32* %r2, i32 %r10) -%r12 = add i448 %r7, %r11 -%r13 = trunc i448 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i448 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i448 @mulPv416x32(i32* %r2, i32 %r19) -%r21 = add i448 %r16, %r20 -%r22 = trunc i448 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i448 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i448 @mulPv416x32(i32* %r2, i32 %r28) -%r30 = add i448 %r25, %r29 -%r31 = trunc i448 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i448 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i448 @mulPv416x32(i32* %r2, i32 %r37) -%r39 = add i448 %r34, %r38 -%r40 = trunc i448 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i448 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i448 @mulPv416x32(i32* %r2, i32 %r46) -%r48 = add i448 %r43, %r47 -%r49 = trunc i448 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 5 -store i32 %r49, i32* %r51 -%r52 = lshr i448 %r48, 32 -%r54 = getelementptr i32, i32* %r3, i32 6 -%r55 = load i32, i32* %r54 -%r56 = call i448 @mulPv416x32(i32* %r2, i32 %r55) -%r57 = add i448 %r52, %r56 -%r58 = trunc i448 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 6 -store i32 %r58, i32* %r60 -%r61 = lshr i448 %r57, 32 -%r63 = getelementptr i32, i32* %r3, i32 7 -%r64 = load i32, i32* %r63 -%r65 = call i448 @mulPv416x32(i32* %r2, i32 %r64) -%r66 = add i448 %r61, %r65 -%r67 = trunc i448 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 7 -store i32 %r67, i32* %r69 -%r70 = lshr i448 %r66, 32 -%r72 = getelementptr i32, i32* %r3, i32 8 -%r73 = load i32, i32* %r72 -%r74 = call i448 @mulPv416x32(i32* %r2, i32 %r73) -%r75 = add i448 %r70, %r74 -%r76 = trunc i448 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 8 -store i32 %r76, i32* %r78 -%r79 = lshr i448 %r75, 32 -%r81 = getelementptr i32, i32* %r3, i32 9 -%r82 = load i32, i32* %r81 -%r83 = call i448 @mulPv416x32(i32* %r2, i32 %r82) -%r84 = add i448 %r79, %r83 -%r85 = trunc i448 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 9 -store i32 %r85, i32* %r87 -%r88 = lshr i448 %r84, 32 -%r90 = getelementptr i32, i32* %r3, i32 10 -%r91 = load i32, i32* %r90 -%r92 = call i448 @mulPv416x32(i32* %r2, i32 %r91) -%r93 = add i448 %r88, %r92 -%r94 = trunc i448 %r93 to i32 -%r96 = getelementptr i32, i32* %r1, i32 10 -store i32 %r94, i32* %r96 -%r97 = lshr i448 %r93, 32 -%r99 = getelementptr i32, i32* %r3, i32 11 -%r100 = load i32, i32* %r99 -%r101 = call i448 @mulPv416x32(i32* %r2, i32 %r100) -%r102 = add i448 %r97, %r101 -%r103 = trunc i448 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 11 -store i32 %r103, i32* %r105 -%r106 = lshr i448 %r102, 32 -%r108 = getelementptr i32, i32* %r3, i32 12 -%r109 = load i32, i32* %r108 -%r110 = call i448 @mulPv416x32(i32* %r2, i32 %r109) -%r111 = add i448 %r106, %r110 -%r113 = getelementptr i32, i32* %r1, i32 12 -%r114 = trunc i448 %r111 to i32 -%r116 = getelementptr i32, i32* %r113, i32 0 -store i32 %r114, i32* %r116 -%r117 = lshr i448 %r111, 32 -%r118 = trunc i448 %r117 to i32 -%r120 = getelementptr i32, i32* %r113, i32 1 -store i32 %r118, i32* %r120 -%r121 = lshr i448 %r117, 32 -%r122 = trunc i448 %r121 to i32 -%r124 = getelementptr i32, i32* %r113, i32 2 -store i32 %r122, i32* %r124 -%r125 = lshr i448 %r121, 32 -%r126 = trunc i448 %r125 to i32 -%r128 = getelementptr i32, i32* %r113, i32 3 -store i32 %r126, i32* %r128 -%r129 = lshr i448 %r125, 32 -%r130 = trunc i448 %r129 to i32 -%r132 = getelementptr i32, i32* %r113, i32 4 -store i32 %r130, i32* %r132 -%r133 = lshr i448 %r129, 32 -%r134 = trunc i448 %r133 to i32 -%r136 = getelementptr i32, i32* %r113, i32 5 -store i32 %r134, i32* %r136 -%r137 = lshr i448 %r133, 32 -%r138 = trunc i448 %r137 to i32 -%r140 = getelementptr i32, i32* %r113, i32 6 -store i32 %r138, i32* %r140 -%r141 = lshr i448 %r137, 32 -%r142 = trunc i448 %r141 to i32 -%r144 = getelementptr i32, i32* %r113, i32 7 -store i32 %r142, i32* %r144 -%r145 = lshr i448 %r141, 32 -%r146 = trunc i448 %r145 to i32 -%r148 = getelementptr i32, i32* %r113, i32 8 -store i32 %r146, i32* %r148 -%r149 = lshr i448 %r145, 32 -%r150 = trunc i448 %r149 to i32 -%r152 = getelementptr i32, i32* %r113, i32 9 -store i32 %r150, i32* %r152 -%r153 = lshr i448 %r149, 32 -%r154 = trunc i448 %r153 to i32 -%r156 = getelementptr i32, i32* %r113, i32 10 -store i32 %r154, i32* %r156 -%r157 = lshr i448 %r153, 32 -%r158 = trunc i448 %r157 to i32 -%r160 = getelementptr i32, i32* %r113, i32 11 -store i32 %r158, i32* %r160 -%r161 = lshr i448 %r157, 32 -%r162 = trunc i448 %r161 to i32 -%r164 = getelementptr i32, i32* %r113, i32 12 -store i32 %r162, i32* %r164 -%r165 = lshr i448 %r161, 32 -%r166 = trunc i448 %r165 to i32 -%r168 = getelementptr i32, i32* %r113, i32 13 -store i32 %r166, i32* %r168 -ret void -} -define void @mcl_fpDbl_sqrPre13L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i448 @mulPv416x32(i32* %r2, i32 %r3) -%r5 = trunc i448 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i448 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i448 @mulPv416x32(i32* %r2, i32 %r9) -%r11 = add i448 %r6, %r10 -%r12 = trunc i448 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i448 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i448 @mulPv416x32(i32* %r2, i32 %r18) -%r20 = add i448 %r15, %r19 -%r21 = trunc i448 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i448 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i448 @mulPv416x32(i32* %r2, i32 %r27) -%r29 = add i448 %r24, %r28 -%r30 = trunc i448 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i448 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i448 @mulPv416x32(i32* %r2, i32 %r36) -%r38 = add i448 %r33, %r37 -%r39 = trunc i448 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i448 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i448 @mulPv416x32(i32* %r2, i32 %r45) -%r47 = add i448 %r42, %r46 -%r48 = trunc i448 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 5 -store i32 %r48, i32* %r50 -%r51 = lshr i448 %r47, 32 -%r53 = getelementptr i32, i32* %r2, i32 6 -%r54 = load i32, i32* %r53 -%r55 = call i448 @mulPv416x32(i32* %r2, i32 %r54) -%r56 = add i448 %r51, %r55 -%r57 = trunc i448 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 6 -store i32 %r57, i32* %r59 -%r60 = lshr i448 %r56, 32 -%r62 = getelementptr i32, i32* %r2, i32 7 -%r63 = load i32, i32* %r62 -%r64 = call i448 @mulPv416x32(i32* %r2, i32 %r63) -%r65 = add i448 %r60, %r64 -%r66 = trunc i448 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 7 -store i32 %r66, i32* %r68 -%r69 = lshr i448 %r65, 32 -%r71 = getelementptr i32, i32* %r2, i32 8 -%r72 = load i32, i32* %r71 -%r73 = call i448 @mulPv416x32(i32* %r2, i32 %r72) -%r74 = add i448 %r69, %r73 -%r75 = trunc i448 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 8 -store i32 %r75, i32* %r77 -%r78 = lshr i448 %r74, 32 -%r80 = getelementptr i32, i32* %r2, i32 9 -%r81 = load i32, i32* %r80 -%r82 = call i448 @mulPv416x32(i32* %r2, i32 %r81) -%r83 = add i448 %r78, %r82 -%r84 = trunc i448 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 9 -store i32 %r84, i32* %r86 -%r87 = lshr i448 %r83, 32 -%r89 = getelementptr i32, i32* %r2, i32 10 -%r90 = load i32, i32* %r89 -%r91 = call i448 @mulPv416x32(i32* %r2, i32 %r90) -%r92 = add i448 %r87, %r91 -%r93 = trunc i448 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 10 -store i32 %r93, i32* %r95 -%r96 = lshr i448 %r92, 32 -%r98 = getelementptr i32, i32* %r2, i32 11 -%r99 = load i32, i32* %r98 -%r100 = call i448 @mulPv416x32(i32* %r2, i32 %r99) -%r101 = add i448 %r96, %r100 -%r102 = trunc i448 %r101 to i32 -%r104 = getelementptr i32, i32* %r1, i32 11 -store i32 %r102, i32* %r104 -%r105 = lshr i448 %r101, 32 -%r107 = getelementptr i32, i32* %r2, i32 12 -%r108 = load i32, i32* %r107 -%r109 = call i448 @mulPv416x32(i32* %r2, i32 %r108) -%r110 = add i448 %r105, %r109 -%r112 = getelementptr i32, i32* %r1, i32 12 -%r113 = trunc i448 %r110 to i32 -%r115 = getelementptr i32, i32* %r112, i32 0 -store i32 %r113, i32* %r115 -%r116 = lshr i448 %r110, 32 -%r117 = trunc i448 %r116 to i32 -%r119 = getelementptr i32, i32* %r112, i32 1 -store i32 %r117, i32* %r119 -%r120 = lshr i448 %r116, 32 -%r121 = trunc i448 %r120 to i32 -%r123 = getelementptr i32, i32* %r112, i32 2 -store i32 %r121, i32* %r123 -%r124 = lshr i448 %r120, 32 -%r125 = trunc i448 %r124 to i32 -%r127 = getelementptr i32, i32* %r112, i32 3 -store i32 %r125, i32* %r127 -%r128 = lshr i448 %r124, 32 -%r129 = trunc i448 %r128 to i32 -%r131 = getelementptr i32, i32* %r112, i32 4 -store i32 %r129, i32* %r131 -%r132 = lshr i448 %r128, 32 -%r133 = trunc i448 %r132 to i32 -%r135 = getelementptr i32, i32* %r112, i32 5 -store i32 %r133, i32* %r135 -%r136 = lshr i448 %r132, 32 -%r137 = trunc i448 %r136 to i32 -%r139 = getelementptr i32, i32* %r112, i32 6 -store i32 %r137, i32* %r139 -%r140 = lshr i448 %r136, 32 -%r141 = trunc i448 %r140 to i32 -%r143 = getelementptr i32, i32* %r112, i32 7 -store i32 %r141, i32* %r143 -%r144 = lshr i448 %r140, 32 -%r145 = trunc i448 %r144 to i32 -%r147 = getelementptr i32, i32* %r112, i32 8 -store i32 %r145, i32* %r147 -%r148 = lshr i448 %r144, 32 -%r149 = trunc i448 %r148 to i32 -%r151 = getelementptr i32, i32* %r112, i32 9 -store i32 %r149, i32* %r151 -%r152 = lshr i448 %r148, 32 -%r153 = trunc i448 %r152 to i32 -%r155 = getelementptr i32, i32* %r112, i32 10 -store i32 %r153, i32* %r155 -%r156 = lshr i448 %r152, 32 -%r157 = trunc i448 %r156 to i32 -%r159 = getelementptr i32, i32* %r112, i32 11 -store i32 %r157, i32* %r159 -%r160 = lshr i448 %r156, 32 -%r161 = trunc i448 %r160 to i32 -%r163 = getelementptr i32, i32* %r112, i32 12 -store i32 %r161, i32* %r163 -%r164 = lshr i448 %r160, 32 -%r165 = trunc i448 %r164 to i32 -%r167 = getelementptr i32, i32* %r112, i32 13 -store i32 %r165, i32* %r167 -ret void -} -define void @mcl_fp_mont13L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i448 @mulPv416x32(i32* %r2, i32 %r10) -%r12 = zext i448 %r11 to i480 -%r13 = trunc i448 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i448 @mulPv416x32(i32* %r4, i32 %r14) -%r16 = zext i448 %r15 to i480 -%r17 = add i480 %r12, %r16 -%r18 = lshr i480 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i448 @mulPv416x32(i32* %r2, i32 %r21) -%r23 = zext i448 %r22 to i480 -%r24 = add i480 %r18, %r23 -%r25 = trunc i480 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i448 @mulPv416x32(i32* %r4, i32 %r26) -%r28 = zext i448 %r27 to i480 -%r29 = add i480 %r24, %r28 -%r30 = lshr i480 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i448 @mulPv416x32(i32* %r2, i32 %r33) -%r35 = zext i448 %r34 to i480 -%r36 = add i480 %r30, %r35 -%r37 = trunc i480 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i448 @mulPv416x32(i32* %r4, i32 %r38) -%r40 = zext i448 %r39 to i480 -%r41 = add i480 %r36, %r40 -%r42 = lshr i480 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i448 @mulPv416x32(i32* %r2, i32 %r45) -%r47 = zext i448 %r46 to i480 -%r48 = add i480 %r42, %r47 -%r49 = trunc i480 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i448 @mulPv416x32(i32* %r4, i32 %r50) -%r52 = zext i448 %r51 to i480 -%r53 = add i480 %r48, %r52 -%r54 = lshr i480 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i448 @mulPv416x32(i32* %r2, i32 %r57) -%r59 = zext i448 %r58 to i480 -%r60 = add i480 %r54, %r59 -%r61 = trunc i480 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i448 @mulPv416x32(i32* %r4, i32 %r62) -%r64 = zext i448 %r63 to i480 -%r65 = add i480 %r60, %r64 -%r66 = lshr i480 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i448 @mulPv416x32(i32* %r2, i32 %r69) -%r71 = zext i448 %r70 to i480 -%r72 = add i480 %r66, %r71 -%r73 = trunc i480 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i448 @mulPv416x32(i32* %r4, i32 %r74) -%r76 = zext i448 %r75 to i480 -%r77 = add i480 %r72, %r76 -%r78 = lshr i480 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i448 @mulPv416x32(i32* %r2, i32 %r81) -%r83 = zext i448 %r82 to i480 -%r84 = add i480 %r78, %r83 -%r85 = trunc i480 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i448 @mulPv416x32(i32* %r4, i32 %r86) -%r88 = zext i448 %r87 to i480 -%r89 = add i480 %r84, %r88 -%r90 = lshr i480 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i448 @mulPv416x32(i32* %r2, i32 %r93) -%r95 = zext i448 %r94 to i480 -%r96 = add i480 %r90, %r95 -%r97 = trunc i480 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i448 @mulPv416x32(i32* %r4, i32 %r98) -%r100 = zext i448 %r99 to i480 -%r101 = add i480 %r96, %r100 -%r102 = lshr i480 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i448 @mulPv416x32(i32* %r2, i32 %r105) -%r107 = zext i448 %r106 to i480 -%r108 = add i480 %r102, %r107 -%r109 = trunc i480 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i448 @mulPv416x32(i32* %r4, i32 %r110) -%r112 = zext i448 %r111 to i480 -%r113 = add i480 %r108, %r112 -%r114 = lshr i480 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i448 @mulPv416x32(i32* %r2, i32 %r117) -%r119 = zext i448 %r118 to i480 -%r120 = add i480 %r114, %r119 -%r121 = trunc i480 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i448 @mulPv416x32(i32* %r4, i32 %r122) -%r124 = zext i448 %r123 to i480 -%r125 = add i480 %r120, %r124 -%r126 = lshr i480 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i448 @mulPv416x32(i32* %r2, i32 %r129) -%r131 = zext i448 %r130 to i480 -%r132 = add i480 %r126, %r131 -%r133 = trunc i480 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i448 @mulPv416x32(i32* %r4, i32 %r134) -%r136 = zext i448 %r135 to i480 -%r137 = add i480 %r132, %r136 -%r138 = lshr i480 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i448 @mulPv416x32(i32* %r2, i32 %r141) -%r143 = zext i448 %r142 to i480 -%r144 = add i480 %r138, %r143 -%r145 = trunc i480 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i448 @mulPv416x32(i32* %r4, i32 %r146) -%r148 = zext i448 %r147 to i480 -%r149 = add i480 %r144, %r148 -%r150 = lshr i480 %r149, 32 -%r152 = getelementptr i32, i32* %r3, i32 12 -%r153 = load i32, i32* %r152 -%r154 = call i448 @mulPv416x32(i32* %r2, i32 %r153) -%r155 = zext i448 %r154 to i480 -%r156 = add i480 %r150, %r155 -%r157 = trunc i480 %r156 to i32 -%r158 = mul i32 %r157, %r7 -%r159 = call i448 @mulPv416x32(i32* %r4, i32 %r158) -%r160 = zext i448 %r159 to i480 -%r161 = add i480 %r156, %r160 -%r162 = lshr i480 %r161, 32 -%r163 = trunc i480 %r162 to i448 -%r164 = load i32, i32* %r4 -%r165 = zext i32 %r164 to i64 -%r167 = getelementptr i32, i32* %r4, i32 1 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i64 -%r170 = shl i64 %r169, 32 -%r171 = or i64 %r165, %r170 -%r172 = zext i64 %r171 to i96 -%r174 = getelementptr i32, i32* %r4, i32 2 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i96 -%r177 = shl i96 %r176, 64 -%r178 = or i96 %r172, %r177 -%r179 = zext i96 %r178 to i128 -%r181 = getelementptr i32, i32* %r4, i32 3 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i128 -%r184 = shl i128 %r183, 96 -%r185 = or i128 %r179, %r184 -%r186 = zext i128 %r185 to i160 -%r188 = getelementptr i32, i32* %r4, i32 4 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i160 -%r191 = shl i160 %r190, 128 -%r192 = or i160 %r186, %r191 -%r193 = zext i160 %r192 to i192 -%r195 = getelementptr i32, i32* %r4, i32 5 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i192 -%r198 = shl i192 %r197, 160 -%r199 = or i192 %r193, %r198 -%r200 = zext i192 %r199 to i224 -%r202 = getelementptr i32, i32* %r4, i32 6 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i224 -%r205 = shl i224 %r204, 192 -%r206 = or i224 %r200, %r205 -%r207 = zext i224 %r206 to i256 -%r209 = getelementptr i32, i32* %r4, i32 7 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i256 -%r212 = shl i256 %r211, 224 -%r213 = or i256 %r207, %r212 -%r214 = zext i256 %r213 to i288 -%r216 = getelementptr i32, i32* %r4, i32 8 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i288 -%r219 = shl i288 %r218, 256 -%r220 = or i288 %r214, %r219 -%r221 = zext i288 %r220 to i320 -%r223 = getelementptr i32, i32* %r4, i32 9 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i320 -%r226 = shl i320 %r225, 288 -%r227 = or i320 %r221, %r226 -%r228 = zext i320 %r227 to i352 -%r230 = getelementptr i32, i32* %r4, i32 10 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i352 -%r233 = shl i352 %r232, 320 -%r234 = or i352 %r228, %r233 -%r235 = zext i352 %r234 to i384 -%r237 = getelementptr i32, i32* %r4, i32 11 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i384 -%r240 = shl i384 %r239, 352 -%r241 = or i384 %r235, %r240 -%r242 = zext i384 %r241 to i416 -%r244 = getelementptr i32, i32* %r4, i32 12 -%r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i416 -%r247 = shl i416 %r246, 384 -%r248 = or i416 %r242, %r247 -%r249 = zext i416 %r248 to i448 -%r250 = sub i448 %r163, %r249 -%r251 = lshr i448 %r250, 416 -%r252 = trunc i448 %r251 to i1 -%r253 = select i1 %r252, i448 %r163, i448 %r250 -%r254 = trunc i448 %r253 to i416 -%r255 = trunc i416 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 0 -store i32 %r255, i32* %r257 -%r258 = lshr i416 %r254, 32 -%r259 = trunc i416 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 1 -store i32 %r259, i32* %r261 -%r262 = lshr i416 %r258, 32 -%r263 = trunc i416 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 2 -store i32 %r263, i32* %r265 -%r266 = lshr i416 %r262, 32 -%r267 = trunc i416 %r266 to i32 -%r269 = getelementptr i32, i32* %r1, i32 3 -store i32 %r267, i32* %r269 -%r270 = lshr i416 %r266, 32 -%r271 = trunc i416 %r270 to i32 -%r273 = getelementptr i32, i32* %r1, i32 4 -store i32 %r271, i32* %r273 -%r274 = lshr i416 %r270, 32 -%r275 = trunc i416 %r274 to i32 -%r277 = getelementptr i32, i32* %r1, i32 5 -store i32 %r275, i32* %r277 -%r278 = lshr i416 %r274, 32 -%r279 = trunc i416 %r278 to i32 -%r281 = getelementptr i32, i32* %r1, i32 6 -store i32 %r279, i32* %r281 -%r282 = lshr i416 %r278, 32 -%r283 = trunc i416 %r282 to i32 -%r285 = getelementptr i32, i32* %r1, i32 7 -store i32 %r283, i32* %r285 -%r286 = lshr i416 %r282, 32 -%r287 = trunc i416 %r286 to i32 -%r289 = getelementptr i32, i32* %r1, i32 8 -store i32 %r287, i32* %r289 -%r290 = lshr i416 %r286, 32 -%r291 = trunc i416 %r290 to i32 -%r293 = getelementptr i32, i32* %r1, i32 9 -store i32 %r291, i32* %r293 -%r294 = lshr i416 %r290, 32 -%r295 = trunc i416 %r294 to i32 -%r297 = getelementptr i32, i32* %r1, i32 10 -store i32 %r295, i32* %r297 -%r298 = lshr i416 %r294, 32 -%r299 = trunc i416 %r298 to i32 -%r301 = getelementptr i32, i32* %r1, i32 11 -store i32 %r299, i32* %r301 -%r302 = lshr i416 %r298, 32 -%r303 = trunc i416 %r302 to i32 -%r305 = getelementptr i32, i32* %r1, i32 12 -store i32 %r303, i32* %r305 -ret void -} -define void @mcl_fp_montNF13L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i448 @mulPv416x32(i32* %r2, i32 %r8) -%r10 = trunc i448 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i448 @mulPv416x32(i32* %r4, i32 %r11) -%r13 = add i448 %r9, %r12 -%r14 = lshr i448 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i448 @mulPv416x32(i32* %r2, i32 %r17) -%r19 = add i448 %r14, %r18 -%r20 = trunc i448 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i448 @mulPv416x32(i32* %r4, i32 %r21) -%r23 = add i448 %r19, %r22 -%r24 = lshr i448 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i448 @mulPv416x32(i32* %r2, i32 %r27) -%r29 = add i448 %r24, %r28 -%r30 = trunc i448 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i448 @mulPv416x32(i32* %r4, i32 %r31) -%r33 = add i448 %r29, %r32 -%r34 = lshr i448 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i448 @mulPv416x32(i32* %r2, i32 %r37) -%r39 = add i448 %r34, %r38 -%r40 = trunc i448 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i448 @mulPv416x32(i32* %r4, i32 %r41) -%r43 = add i448 %r39, %r42 -%r44 = lshr i448 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i448 @mulPv416x32(i32* %r2, i32 %r47) -%r49 = add i448 %r44, %r48 -%r50 = trunc i448 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i448 @mulPv416x32(i32* %r4, i32 %r51) -%r53 = add i448 %r49, %r52 -%r54 = lshr i448 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i448 @mulPv416x32(i32* %r2, i32 %r57) -%r59 = add i448 %r54, %r58 -%r60 = trunc i448 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i448 @mulPv416x32(i32* %r4, i32 %r61) -%r63 = add i448 %r59, %r62 -%r64 = lshr i448 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i448 @mulPv416x32(i32* %r2, i32 %r67) -%r69 = add i448 %r64, %r68 -%r70 = trunc i448 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i448 @mulPv416x32(i32* %r4, i32 %r71) -%r73 = add i448 %r69, %r72 -%r74 = lshr i448 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i448 @mulPv416x32(i32* %r2, i32 %r77) -%r79 = add i448 %r74, %r78 -%r80 = trunc i448 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i448 @mulPv416x32(i32* %r4, i32 %r81) -%r83 = add i448 %r79, %r82 -%r84 = lshr i448 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i448 @mulPv416x32(i32* %r2, i32 %r87) -%r89 = add i448 %r84, %r88 -%r90 = trunc i448 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i448 @mulPv416x32(i32* %r4, i32 %r91) -%r93 = add i448 %r89, %r92 -%r94 = lshr i448 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i448 @mulPv416x32(i32* %r2, i32 %r97) -%r99 = add i448 %r94, %r98 -%r100 = trunc i448 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i448 @mulPv416x32(i32* %r4, i32 %r101) -%r103 = add i448 %r99, %r102 -%r104 = lshr i448 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i448 @mulPv416x32(i32* %r2, i32 %r107) -%r109 = add i448 %r104, %r108 -%r110 = trunc i448 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i448 @mulPv416x32(i32* %r4, i32 %r111) -%r113 = add i448 %r109, %r112 -%r114 = lshr i448 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 -%r117 = load i32, i32* %r116 -%r118 = call i448 @mulPv416x32(i32* %r2, i32 %r117) -%r119 = add i448 %r114, %r118 -%r120 = trunc i448 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i448 @mulPv416x32(i32* %r4, i32 %r121) -%r123 = add i448 %r119, %r122 -%r124 = lshr i448 %r123, 32 -%r126 = getelementptr i32, i32* %r3, i32 12 -%r127 = load i32, i32* %r126 -%r128 = call i448 @mulPv416x32(i32* %r2, i32 %r127) -%r129 = add i448 %r124, %r128 -%r130 = trunc i448 %r129 to i32 -%r131 = mul i32 %r130, %r7 -%r132 = call i448 @mulPv416x32(i32* %r4, i32 %r131) -%r133 = add i448 %r129, %r132 -%r134 = lshr i448 %r133, 32 -%r135 = trunc i448 %r134 to i416 -%r136 = load i32, i32* %r4 -%r137 = zext i32 %r136 to i64 -%r139 = getelementptr i32, i32* %r4, i32 1 -%r140 = load i32, i32* %r139 -%r141 = zext i32 %r140 to i64 -%r142 = shl i64 %r141, 32 -%r143 = or i64 %r137, %r142 -%r144 = zext i64 %r143 to i96 -%r146 = getelementptr i32, i32* %r4, i32 2 -%r147 = load i32, i32* %r146 -%r148 = zext i32 %r147 to i96 -%r149 = shl i96 %r148, 64 -%r150 = or i96 %r144, %r149 -%r151 = zext i96 %r150 to i128 -%r153 = getelementptr i32, i32* %r4, i32 3 -%r154 = load i32, i32* %r153 -%r155 = zext i32 %r154 to i128 -%r156 = shl i128 %r155, 96 -%r157 = or i128 %r151, %r156 -%r158 = zext i128 %r157 to i160 -%r160 = getelementptr i32, i32* %r4, i32 4 -%r161 = load i32, i32* %r160 -%r162 = zext i32 %r161 to i160 -%r163 = shl i160 %r162, 128 -%r164 = or i160 %r158, %r163 -%r165 = zext i160 %r164 to i192 -%r167 = getelementptr i32, i32* %r4, i32 5 -%r168 = load i32, i32* %r167 -%r169 = zext i32 %r168 to i192 -%r170 = shl i192 %r169, 160 -%r171 = or i192 %r165, %r170 -%r172 = zext i192 %r171 to i224 -%r174 = getelementptr i32, i32* %r4, i32 6 -%r175 = load i32, i32* %r174 -%r176 = zext i32 %r175 to i224 -%r177 = shl i224 %r176, 192 -%r178 = or i224 %r172, %r177 -%r179 = zext i224 %r178 to i256 -%r181 = getelementptr i32, i32* %r4, i32 7 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i256 -%r184 = shl i256 %r183, 224 -%r185 = or i256 %r179, %r184 -%r186 = zext i256 %r185 to i288 -%r188 = getelementptr i32, i32* %r4, i32 8 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i288 -%r191 = shl i288 %r190, 256 -%r192 = or i288 %r186, %r191 -%r193 = zext i288 %r192 to i320 -%r195 = getelementptr i32, i32* %r4, i32 9 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i320 -%r198 = shl i320 %r197, 288 -%r199 = or i320 %r193, %r198 -%r200 = zext i320 %r199 to i352 -%r202 = getelementptr i32, i32* %r4, i32 10 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i352 -%r205 = shl i352 %r204, 320 -%r206 = or i352 %r200, %r205 -%r207 = zext i352 %r206 to i384 -%r209 = getelementptr i32, i32* %r4, i32 11 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i384 -%r212 = shl i384 %r211, 352 -%r213 = or i384 %r207, %r212 -%r214 = zext i384 %r213 to i416 -%r216 = getelementptr i32, i32* %r4, i32 12 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i416 -%r219 = shl i416 %r218, 384 -%r220 = or i416 %r214, %r219 -%r221 = sub i416 %r135, %r220 -%r222 = lshr i416 %r221, 415 -%r223 = trunc i416 %r222 to i1 -%r224 = select i1 %r223, i416 %r135, i416 %r221 -%r225 = trunc i416 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 0 -store i32 %r225, i32* %r227 -%r228 = lshr i416 %r224, 32 -%r229 = trunc i416 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 1 -store i32 %r229, i32* %r231 -%r232 = lshr i416 %r228, 32 -%r233 = trunc i416 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 2 -store i32 %r233, i32* %r235 -%r236 = lshr i416 %r232, 32 -%r237 = trunc i416 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 3 -store i32 %r237, i32* %r239 -%r240 = lshr i416 %r236, 32 -%r241 = trunc i416 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 4 -store i32 %r241, i32* %r243 -%r244 = lshr i416 %r240, 32 -%r245 = trunc i416 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 5 -store i32 %r245, i32* %r247 -%r248 = lshr i416 %r244, 32 -%r249 = trunc i416 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 6 -store i32 %r249, i32* %r251 -%r252 = lshr i416 %r248, 32 -%r253 = trunc i416 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 7 -store i32 %r253, i32* %r255 -%r256 = lshr i416 %r252, 32 -%r257 = trunc i416 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 8 -store i32 %r257, i32* %r259 -%r260 = lshr i416 %r256, 32 -%r261 = trunc i416 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 9 -store i32 %r261, i32* %r263 -%r264 = lshr i416 %r260, 32 -%r265 = trunc i416 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 10 -store i32 %r265, i32* %r267 -%r268 = lshr i416 %r264, 32 -%r269 = trunc i416 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 11 -store i32 %r269, i32* %r271 -%r272 = lshr i416 %r268, 32 -%r273 = trunc i416 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 12 -store i32 %r273, i32* %r275 -ret void -} -define void @mcl_fp_montRed13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = zext i352 %r77 to i384 -%r80 = getelementptr i32, i32* %r3, i32 11 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i384 -%r83 = shl i384 %r82, 352 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i416 -%r87 = getelementptr i32, i32* %r3, i32 12 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i416 -%r90 = shl i416 %r89, 384 -%r91 = or i416 %r85, %r90 -%r92 = load i32, i32* %r2 -%r93 = zext i32 %r92 to i64 -%r95 = getelementptr i32, i32* %r2, i32 1 -%r96 = load i32, i32* %r95 -%r97 = zext i32 %r96 to i64 -%r98 = shl i64 %r97, 32 -%r99 = or i64 %r93, %r98 -%r100 = zext i64 %r99 to i96 -%r102 = getelementptr i32, i32* %r2, i32 2 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i96 -%r105 = shl i96 %r104, 64 -%r106 = or i96 %r100, %r105 -%r107 = zext i96 %r106 to i128 -%r109 = getelementptr i32, i32* %r2, i32 3 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i128 -%r112 = shl i128 %r111, 96 -%r113 = or i128 %r107, %r112 -%r114 = zext i128 %r113 to i160 -%r116 = getelementptr i32, i32* %r2, i32 4 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i160 -%r119 = shl i160 %r118, 128 -%r120 = or i160 %r114, %r119 -%r121 = zext i160 %r120 to i192 -%r123 = getelementptr i32, i32* %r2, i32 5 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i192 -%r126 = shl i192 %r125, 160 -%r127 = or i192 %r121, %r126 -%r128 = zext i192 %r127 to i224 -%r130 = getelementptr i32, i32* %r2, i32 6 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i224 -%r133 = shl i224 %r132, 192 -%r134 = or i224 %r128, %r133 -%r135 = zext i224 %r134 to i256 -%r137 = getelementptr i32, i32* %r2, i32 7 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i256 -%r140 = shl i256 %r139, 224 -%r141 = or i256 %r135, %r140 -%r142 = zext i256 %r141 to i288 -%r144 = getelementptr i32, i32* %r2, i32 8 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i288 -%r147 = shl i288 %r146, 256 -%r148 = or i288 %r142, %r147 -%r149 = zext i288 %r148 to i320 -%r151 = getelementptr i32, i32* %r2, i32 9 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i320 -%r154 = shl i320 %r153, 288 -%r155 = or i320 %r149, %r154 -%r156 = zext i320 %r155 to i352 -%r158 = getelementptr i32, i32* %r2, i32 10 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i352 -%r161 = shl i352 %r160, 320 -%r162 = or i352 %r156, %r161 -%r163 = zext i352 %r162 to i384 -%r165 = getelementptr i32, i32* %r2, i32 11 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i384 -%r168 = shl i384 %r167, 352 -%r169 = or i384 %r163, %r168 -%r170 = zext i384 %r169 to i416 -%r172 = getelementptr i32, i32* %r2, i32 12 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i416 -%r175 = shl i416 %r174, 384 -%r176 = or i416 %r170, %r175 -%r177 = zext i416 %r176 to i448 -%r179 = getelementptr i32, i32* %r2, i32 13 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i448 -%r182 = shl i448 %r181, 416 -%r183 = or i448 %r177, %r182 -%r184 = zext i448 %r183 to i480 -%r186 = getelementptr i32, i32* %r2, i32 14 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i480 -%r189 = shl i480 %r188, 448 -%r190 = or i480 %r184, %r189 -%r191 = zext i480 %r190 to i512 -%r193 = getelementptr i32, i32* %r2, i32 15 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i512 -%r196 = shl i512 %r195, 480 -%r197 = or i512 %r191, %r196 -%r198 = zext i512 %r197 to i544 -%r200 = getelementptr i32, i32* %r2, i32 16 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i544 -%r203 = shl i544 %r202, 512 -%r204 = or i544 %r198, %r203 -%r205 = zext i544 %r204 to i576 -%r207 = getelementptr i32, i32* %r2, i32 17 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i576 -%r210 = shl i576 %r209, 544 -%r211 = or i576 %r205, %r210 -%r212 = zext i576 %r211 to i608 -%r214 = getelementptr i32, i32* %r2, i32 18 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i608 -%r217 = shl i608 %r216, 576 -%r218 = or i608 %r212, %r217 -%r219 = zext i608 %r218 to i640 -%r221 = getelementptr i32, i32* %r2, i32 19 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i640 -%r224 = shl i640 %r223, 608 -%r225 = or i640 %r219, %r224 -%r226 = zext i640 %r225 to i672 -%r228 = getelementptr i32, i32* %r2, i32 20 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i672 -%r231 = shl i672 %r230, 640 -%r232 = or i672 %r226, %r231 -%r233 = zext i672 %r232 to i704 -%r235 = getelementptr i32, i32* %r2, i32 21 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i704 -%r238 = shl i704 %r237, 672 -%r239 = or i704 %r233, %r238 -%r240 = zext i704 %r239 to i736 -%r242 = getelementptr i32, i32* %r2, i32 22 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i736 -%r245 = shl i736 %r244, 704 -%r246 = or i736 %r240, %r245 -%r247 = zext i736 %r246 to i768 -%r249 = getelementptr i32, i32* %r2, i32 23 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i768 -%r252 = shl i768 %r251, 736 -%r253 = or i768 %r247, %r252 -%r254 = zext i768 %r253 to i800 -%r256 = getelementptr i32, i32* %r2, i32 24 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i800 -%r259 = shl i800 %r258, 768 -%r260 = or i800 %r254, %r259 -%r261 = zext i800 %r260 to i832 -%r263 = getelementptr i32, i32* %r2, i32 25 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i832 -%r266 = shl i832 %r265, 800 -%r267 = or i832 %r261, %r266 -%r268 = zext i832 %r267 to i864 -%r269 = trunc i864 %r268 to i32 -%r270 = mul i32 %r269, %r6 -%r271 = call i448 @mulPv416x32(i32* %r3, i32 %r270) -%r272 = zext i448 %r271 to i864 -%r273 = add i864 %r268, %r272 -%r274 = lshr i864 %r273, 32 -%r275 = trunc i864 %r274 to i832 -%r276 = trunc i832 %r275 to i32 -%r277 = mul i32 %r276, %r6 -%r278 = call i448 @mulPv416x32(i32* %r3, i32 %r277) -%r279 = zext i448 %r278 to i832 -%r280 = add i832 %r275, %r279 -%r281 = lshr i832 %r280, 32 -%r282 = trunc i832 %r281 to i800 -%r283 = trunc i800 %r282 to i32 -%r284 = mul i32 %r283, %r6 -%r285 = call i448 @mulPv416x32(i32* %r3, i32 %r284) -%r286 = zext i448 %r285 to i800 -%r287 = add i800 %r282, %r286 -%r288 = lshr i800 %r287, 32 -%r289 = trunc i800 %r288 to i768 -%r290 = trunc i768 %r289 to i32 -%r291 = mul i32 %r290, %r6 -%r292 = call i448 @mulPv416x32(i32* %r3, i32 %r291) -%r293 = zext i448 %r292 to i768 -%r294 = add i768 %r289, %r293 -%r295 = lshr i768 %r294, 32 -%r296 = trunc i768 %r295 to i736 -%r297 = trunc i736 %r296 to i32 -%r298 = mul i32 %r297, %r6 -%r299 = call i448 @mulPv416x32(i32* %r3, i32 %r298) -%r300 = zext i448 %r299 to i736 -%r301 = add i736 %r296, %r300 -%r302 = lshr i736 %r301, 32 -%r303 = trunc i736 %r302 to i704 -%r304 = trunc i704 %r303 to i32 -%r305 = mul i32 %r304, %r6 -%r306 = call i448 @mulPv416x32(i32* %r3, i32 %r305) -%r307 = zext i448 %r306 to i704 -%r308 = add i704 %r303, %r307 -%r309 = lshr i704 %r308, 32 -%r310 = trunc i704 %r309 to i672 -%r311 = trunc i672 %r310 to i32 -%r312 = mul i32 %r311, %r6 -%r313 = call i448 @mulPv416x32(i32* %r3, i32 %r312) -%r314 = zext i448 %r313 to i672 -%r315 = add i672 %r310, %r314 -%r316 = lshr i672 %r315, 32 -%r317 = trunc i672 %r316 to i640 -%r318 = trunc i640 %r317 to i32 -%r319 = mul i32 %r318, %r6 -%r320 = call i448 @mulPv416x32(i32* %r3, i32 %r319) -%r321 = zext i448 %r320 to i640 -%r322 = add i640 %r317, %r321 -%r323 = lshr i640 %r322, 32 -%r324 = trunc i640 %r323 to i608 -%r325 = trunc i608 %r324 to i32 -%r326 = mul i32 %r325, %r6 -%r327 = call i448 @mulPv416x32(i32* %r3, i32 %r326) -%r328 = zext i448 %r327 to i608 -%r329 = add i608 %r324, %r328 -%r330 = lshr i608 %r329, 32 -%r331 = trunc i608 %r330 to i576 -%r332 = trunc i576 %r331 to i32 -%r333 = mul i32 %r332, %r6 -%r334 = call i448 @mulPv416x32(i32* %r3, i32 %r333) -%r335 = zext i448 %r334 to i576 -%r336 = add i576 %r331, %r335 -%r337 = lshr i576 %r336, 32 -%r338 = trunc i576 %r337 to i544 -%r339 = trunc i544 %r338 to i32 -%r340 = mul i32 %r339, %r6 -%r341 = call i448 @mulPv416x32(i32* %r3, i32 %r340) -%r342 = zext i448 %r341 to i544 -%r343 = add i544 %r338, %r342 -%r344 = lshr i544 %r343, 32 -%r345 = trunc i544 %r344 to i512 -%r346 = trunc i512 %r345 to i32 -%r347 = mul i32 %r346, %r6 -%r348 = call i448 @mulPv416x32(i32* %r3, i32 %r347) -%r349 = zext i448 %r348 to i512 -%r350 = add i512 %r345, %r349 -%r351 = lshr i512 %r350, 32 -%r352 = trunc i512 %r351 to i480 -%r353 = trunc i480 %r352 to i32 -%r354 = mul i32 %r353, %r6 -%r355 = call i448 @mulPv416x32(i32* %r3, i32 %r354) -%r356 = zext i448 %r355 to i480 -%r357 = add i480 %r352, %r356 -%r358 = lshr i480 %r357, 32 -%r359 = trunc i480 %r358 to i448 -%r360 = zext i416 %r91 to i448 -%r361 = sub i448 %r359, %r360 -%r362 = lshr i448 %r361, 416 -%r363 = trunc i448 %r362 to i1 -%r364 = select i1 %r363, i448 %r359, i448 %r361 -%r365 = trunc i448 %r364 to i416 -%r366 = trunc i416 %r365 to i32 -%r368 = getelementptr i32, i32* %r1, i32 0 -store i32 %r366, i32* %r368 -%r369 = lshr i416 %r365, 32 -%r370 = trunc i416 %r369 to i32 -%r372 = getelementptr i32, i32* %r1, i32 1 -store i32 %r370, i32* %r372 -%r373 = lshr i416 %r369, 32 -%r374 = trunc i416 %r373 to i32 -%r376 = getelementptr i32, i32* %r1, i32 2 -store i32 %r374, i32* %r376 -%r377 = lshr i416 %r373, 32 -%r378 = trunc i416 %r377 to i32 -%r380 = getelementptr i32, i32* %r1, i32 3 -store i32 %r378, i32* %r380 -%r381 = lshr i416 %r377, 32 -%r382 = trunc i416 %r381 to i32 -%r384 = getelementptr i32, i32* %r1, i32 4 -store i32 %r382, i32* %r384 -%r385 = lshr i416 %r381, 32 -%r386 = trunc i416 %r385 to i32 -%r388 = getelementptr i32, i32* %r1, i32 5 -store i32 %r386, i32* %r388 -%r389 = lshr i416 %r385, 32 -%r390 = trunc i416 %r389 to i32 -%r392 = getelementptr i32, i32* %r1, i32 6 -store i32 %r390, i32* %r392 -%r393 = lshr i416 %r389, 32 -%r394 = trunc i416 %r393 to i32 -%r396 = getelementptr i32, i32* %r1, i32 7 -store i32 %r394, i32* %r396 -%r397 = lshr i416 %r393, 32 -%r398 = trunc i416 %r397 to i32 -%r400 = getelementptr i32, i32* %r1, i32 8 -store i32 %r398, i32* %r400 -%r401 = lshr i416 %r397, 32 -%r402 = trunc i416 %r401 to i32 -%r404 = getelementptr i32, i32* %r1, i32 9 -store i32 %r402, i32* %r404 -%r405 = lshr i416 %r401, 32 -%r406 = trunc i416 %r405 to i32 -%r408 = getelementptr i32, i32* %r1, i32 10 -store i32 %r406, i32* %r408 -%r409 = lshr i416 %r405, 32 -%r410 = trunc i416 %r409 to i32 -%r412 = getelementptr i32, i32* %r1, i32 11 -store i32 %r410, i32* %r412 -%r413 = lshr i416 %r409, 32 -%r414 = trunc i416 %r413 to i32 -%r416 = getelementptr i32, i32* %r1, i32 12 -store i32 %r414, i32* %r416 -ret void -} -define i32 @mcl_fp_addPre13L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r91 = load i32, i32* %r4 -%r92 = zext i32 %r91 to i64 -%r94 = getelementptr i32, i32* %r4, i32 1 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i64 -%r97 = shl i64 %r96, 32 -%r98 = or i64 %r92, %r97 -%r99 = zext i64 %r98 to i96 -%r101 = getelementptr i32, i32* %r4, i32 2 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i96 -%r104 = shl i96 %r103, 64 -%r105 = or i96 %r99, %r104 -%r106 = zext i96 %r105 to i128 -%r108 = getelementptr i32, i32* %r4, i32 3 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i128 -%r111 = shl i128 %r110, 96 -%r112 = or i128 %r106, %r111 -%r113 = zext i128 %r112 to i160 -%r115 = getelementptr i32, i32* %r4, i32 4 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i160 -%r118 = shl i160 %r117, 128 -%r119 = or i160 %r113, %r118 -%r120 = zext i160 %r119 to i192 -%r122 = getelementptr i32, i32* %r4, i32 5 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i192 -%r125 = shl i192 %r124, 160 -%r126 = or i192 %r120, %r125 -%r127 = zext i192 %r126 to i224 -%r129 = getelementptr i32, i32* %r4, i32 6 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i224 -%r132 = shl i224 %r131, 192 -%r133 = or i224 %r127, %r132 -%r134 = zext i224 %r133 to i256 -%r136 = getelementptr i32, i32* %r4, i32 7 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i256 -%r139 = shl i256 %r138, 224 -%r140 = or i256 %r134, %r139 -%r141 = zext i256 %r140 to i288 -%r143 = getelementptr i32, i32* %r4, i32 8 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i288 -%r146 = shl i288 %r145, 256 -%r147 = or i288 %r141, %r146 -%r148 = zext i288 %r147 to i320 -%r150 = getelementptr i32, i32* %r4, i32 9 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i320 -%r153 = shl i320 %r152, 288 -%r154 = or i320 %r148, %r153 -%r155 = zext i320 %r154 to i352 -%r157 = getelementptr i32, i32* %r4, i32 10 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i352 -%r160 = shl i352 %r159, 320 -%r161 = or i352 %r155, %r160 -%r162 = zext i352 %r161 to i384 -%r164 = getelementptr i32, i32* %r4, i32 11 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i384 -%r167 = shl i384 %r166, 352 -%r168 = or i384 %r162, %r167 -%r169 = zext i384 %r168 to i416 -%r171 = getelementptr i32, i32* %r4, i32 12 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i416 -%r174 = shl i416 %r173, 384 -%r175 = or i416 %r169, %r174 -%r176 = zext i416 %r175 to i448 -%r177 = add i448 %r90, %r176 -%r178 = trunc i448 %r177 to i416 -%r179 = trunc i416 %r178 to i32 -%r181 = getelementptr i32, i32* %r2, i32 0 -store i32 %r179, i32* %r181 -%r182 = lshr i416 %r178, 32 -%r183 = trunc i416 %r182 to i32 -%r185 = getelementptr i32, i32* %r2, i32 1 -store i32 %r183, i32* %r185 -%r186 = lshr i416 %r182, 32 -%r187 = trunc i416 %r186 to i32 -%r189 = getelementptr i32, i32* %r2, i32 2 -store i32 %r187, i32* %r189 -%r190 = lshr i416 %r186, 32 -%r191 = trunc i416 %r190 to i32 -%r193 = getelementptr i32, i32* %r2, i32 3 -store i32 %r191, i32* %r193 -%r194 = lshr i416 %r190, 32 -%r195 = trunc i416 %r194 to i32 -%r197 = getelementptr i32, i32* %r2, i32 4 -store i32 %r195, i32* %r197 -%r198 = lshr i416 %r194, 32 -%r199 = trunc i416 %r198 to i32 -%r201 = getelementptr i32, i32* %r2, i32 5 -store i32 %r199, i32* %r201 -%r202 = lshr i416 %r198, 32 -%r203 = trunc i416 %r202 to i32 -%r205 = getelementptr i32, i32* %r2, i32 6 -store i32 %r203, i32* %r205 -%r206 = lshr i416 %r202, 32 -%r207 = trunc i416 %r206 to i32 -%r209 = getelementptr i32, i32* %r2, i32 7 -store i32 %r207, i32* %r209 -%r210 = lshr i416 %r206, 32 -%r211 = trunc i416 %r210 to i32 -%r213 = getelementptr i32, i32* %r2, i32 8 -store i32 %r211, i32* %r213 -%r214 = lshr i416 %r210, 32 -%r215 = trunc i416 %r214 to i32 -%r217 = getelementptr i32, i32* %r2, i32 9 -store i32 %r215, i32* %r217 -%r218 = lshr i416 %r214, 32 -%r219 = trunc i416 %r218 to i32 -%r221 = getelementptr i32, i32* %r2, i32 10 -store i32 %r219, i32* %r221 -%r222 = lshr i416 %r218, 32 -%r223 = trunc i416 %r222 to i32 -%r225 = getelementptr i32, i32* %r2, i32 11 -store i32 %r223, i32* %r225 -%r226 = lshr i416 %r222, 32 -%r227 = trunc i416 %r226 to i32 -%r229 = getelementptr i32, i32* %r2, i32 12 -store i32 %r227, i32* %r229 -%r230 = lshr i448 %r177, 416 -%r231 = trunc i448 %r230 to i32 -ret i32 %r231 -} -define i32 @mcl_fp_subPre13L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r91 = load i32, i32* %r4 -%r92 = zext i32 %r91 to i64 -%r94 = getelementptr i32, i32* %r4, i32 1 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i64 -%r97 = shl i64 %r96, 32 -%r98 = or i64 %r92, %r97 -%r99 = zext i64 %r98 to i96 -%r101 = getelementptr i32, i32* %r4, i32 2 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i96 -%r104 = shl i96 %r103, 64 -%r105 = or i96 %r99, %r104 -%r106 = zext i96 %r105 to i128 -%r108 = getelementptr i32, i32* %r4, i32 3 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i128 -%r111 = shl i128 %r110, 96 -%r112 = or i128 %r106, %r111 -%r113 = zext i128 %r112 to i160 -%r115 = getelementptr i32, i32* %r4, i32 4 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i160 -%r118 = shl i160 %r117, 128 -%r119 = or i160 %r113, %r118 -%r120 = zext i160 %r119 to i192 -%r122 = getelementptr i32, i32* %r4, i32 5 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i192 -%r125 = shl i192 %r124, 160 -%r126 = or i192 %r120, %r125 -%r127 = zext i192 %r126 to i224 -%r129 = getelementptr i32, i32* %r4, i32 6 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i224 -%r132 = shl i224 %r131, 192 -%r133 = or i224 %r127, %r132 -%r134 = zext i224 %r133 to i256 -%r136 = getelementptr i32, i32* %r4, i32 7 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i256 -%r139 = shl i256 %r138, 224 -%r140 = or i256 %r134, %r139 -%r141 = zext i256 %r140 to i288 -%r143 = getelementptr i32, i32* %r4, i32 8 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i288 -%r146 = shl i288 %r145, 256 -%r147 = or i288 %r141, %r146 -%r148 = zext i288 %r147 to i320 -%r150 = getelementptr i32, i32* %r4, i32 9 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i320 -%r153 = shl i320 %r152, 288 -%r154 = or i320 %r148, %r153 -%r155 = zext i320 %r154 to i352 -%r157 = getelementptr i32, i32* %r4, i32 10 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i352 -%r160 = shl i352 %r159, 320 -%r161 = or i352 %r155, %r160 -%r162 = zext i352 %r161 to i384 -%r164 = getelementptr i32, i32* %r4, i32 11 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i384 -%r167 = shl i384 %r166, 352 -%r168 = or i384 %r162, %r167 -%r169 = zext i384 %r168 to i416 -%r171 = getelementptr i32, i32* %r4, i32 12 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i416 -%r174 = shl i416 %r173, 384 -%r175 = or i416 %r169, %r174 -%r176 = zext i416 %r175 to i448 -%r177 = sub i448 %r90, %r176 -%r178 = trunc i448 %r177 to i416 -%r179 = trunc i416 %r178 to i32 -%r181 = getelementptr i32, i32* %r2, i32 0 -store i32 %r179, i32* %r181 -%r182 = lshr i416 %r178, 32 -%r183 = trunc i416 %r182 to i32 -%r185 = getelementptr i32, i32* %r2, i32 1 -store i32 %r183, i32* %r185 -%r186 = lshr i416 %r182, 32 -%r187 = trunc i416 %r186 to i32 -%r189 = getelementptr i32, i32* %r2, i32 2 -store i32 %r187, i32* %r189 -%r190 = lshr i416 %r186, 32 -%r191 = trunc i416 %r190 to i32 -%r193 = getelementptr i32, i32* %r2, i32 3 -store i32 %r191, i32* %r193 -%r194 = lshr i416 %r190, 32 -%r195 = trunc i416 %r194 to i32 -%r197 = getelementptr i32, i32* %r2, i32 4 -store i32 %r195, i32* %r197 -%r198 = lshr i416 %r194, 32 -%r199 = trunc i416 %r198 to i32 -%r201 = getelementptr i32, i32* %r2, i32 5 -store i32 %r199, i32* %r201 -%r202 = lshr i416 %r198, 32 -%r203 = trunc i416 %r202 to i32 -%r205 = getelementptr i32, i32* %r2, i32 6 -store i32 %r203, i32* %r205 -%r206 = lshr i416 %r202, 32 -%r207 = trunc i416 %r206 to i32 -%r209 = getelementptr i32, i32* %r2, i32 7 -store i32 %r207, i32* %r209 -%r210 = lshr i416 %r206, 32 -%r211 = trunc i416 %r210 to i32 -%r213 = getelementptr i32, i32* %r2, i32 8 -store i32 %r211, i32* %r213 -%r214 = lshr i416 %r210, 32 -%r215 = trunc i416 %r214 to i32 -%r217 = getelementptr i32, i32* %r2, i32 9 -store i32 %r215, i32* %r217 -%r218 = lshr i416 %r214, 32 -%r219 = trunc i416 %r218 to i32 -%r221 = getelementptr i32, i32* %r2, i32 10 -store i32 %r219, i32* %r221 -%r222 = lshr i416 %r218, 32 -%r223 = trunc i416 %r222 to i32 -%r225 = getelementptr i32, i32* %r2, i32 11 -store i32 %r223, i32* %r225 -%r226 = lshr i416 %r222, 32 -%r227 = trunc i416 %r226 to i32 -%r229 = getelementptr i32, i32* %r2, i32 12 -store i32 %r227, i32* %r229 -%r230 = lshr i448 %r177, 416 -%r231 = trunc i448 %r230 to i32 -%r233 = and i32 %r231, 1 -ret i32 %r233 -} -define void @mcl_fp_shr1_13L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = zext i352 %r73 to i384 -%r76 = getelementptr i32, i32* %r2, i32 11 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i384 -%r79 = shl i384 %r78, 352 -%r80 = or i384 %r74, %r79 -%r81 = zext i384 %r80 to i416 -%r83 = getelementptr i32, i32* %r2, i32 12 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i416 -%r86 = shl i416 %r85, 384 -%r87 = or i416 %r81, %r86 -%r88 = lshr i416 %r87, 1 -%r89 = trunc i416 %r88 to i32 -%r91 = getelementptr i32, i32* %r1, i32 0 -store i32 %r89, i32* %r91 -%r92 = lshr i416 %r88, 32 -%r93 = trunc i416 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 1 -store i32 %r93, i32* %r95 -%r96 = lshr i416 %r92, 32 -%r97 = trunc i416 %r96 to i32 -%r99 = getelementptr i32, i32* %r1, i32 2 -store i32 %r97, i32* %r99 -%r100 = lshr i416 %r96, 32 -%r101 = trunc i416 %r100 to i32 -%r103 = getelementptr i32, i32* %r1, i32 3 -store i32 %r101, i32* %r103 -%r104 = lshr i416 %r100, 32 -%r105 = trunc i416 %r104 to i32 -%r107 = getelementptr i32, i32* %r1, i32 4 -store i32 %r105, i32* %r107 -%r108 = lshr i416 %r104, 32 -%r109 = trunc i416 %r108 to i32 -%r111 = getelementptr i32, i32* %r1, i32 5 -store i32 %r109, i32* %r111 -%r112 = lshr i416 %r108, 32 -%r113 = trunc i416 %r112 to i32 -%r115 = getelementptr i32, i32* %r1, i32 6 -store i32 %r113, i32* %r115 -%r116 = lshr i416 %r112, 32 -%r117 = trunc i416 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 7 -store i32 %r117, i32* %r119 -%r120 = lshr i416 %r116, 32 -%r121 = trunc i416 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 8 -store i32 %r121, i32* %r123 -%r124 = lshr i416 %r120, 32 -%r125 = trunc i416 %r124 to i32 -%r127 = getelementptr i32, i32* %r1, i32 9 -store i32 %r125, i32* %r127 -%r128 = lshr i416 %r124, 32 -%r129 = trunc i416 %r128 to i32 -%r131 = getelementptr i32, i32* %r1, i32 10 -store i32 %r129, i32* %r131 -%r132 = lshr i416 %r128, 32 -%r133 = trunc i416 %r132 to i32 -%r135 = getelementptr i32, i32* %r1, i32 11 -store i32 %r133, i32* %r135 -%r136 = lshr i416 %r132, 32 -%r137 = trunc i416 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 12 -store i32 %r137, i32* %r139 -ret void -} -define void @mcl_fp_add13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = load i32, i32* %r3 -%r91 = zext i32 %r90 to i64 -%r93 = getelementptr i32, i32* %r3, i32 1 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i64 -%r96 = shl i64 %r95, 32 -%r97 = or i64 %r91, %r96 -%r98 = zext i64 %r97 to i96 -%r100 = getelementptr i32, i32* %r3, i32 2 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i96 -%r103 = shl i96 %r102, 64 -%r104 = or i96 %r98, %r103 -%r105 = zext i96 %r104 to i128 -%r107 = getelementptr i32, i32* %r3, i32 3 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i128 -%r110 = shl i128 %r109, 96 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i160 -%r114 = getelementptr i32, i32* %r3, i32 4 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i160 -%r117 = shl i160 %r116, 128 -%r118 = or i160 %r112, %r117 -%r119 = zext i160 %r118 to i192 -%r121 = getelementptr i32, i32* %r3, i32 5 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i192 -%r124 = shl i192 %r123, 160 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i224 -%r128 = getelementptr i32, i32* %r3, i32 6 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i224 -%r131 = shl i224 %r130, 192 -%r132 = or i224 %r126, %r131 -%r133 = zext i224 %r132 to i256 -%r135 = getelementptr i32, i32* %r3, i32 7 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i256 -%r138 = shl i256 %r137, 224 -%r139 = or i256 %r133, %r138 -%r140 = zext i256 %r139 to i288 -%r142 = getelementptr i32, i32* %r3, i32 8 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i288 -%r145 = shl i288 %r144, 256 -%r146 = or i288 %r140, %r145 -%r147 = zext i288 %r146 to i320 -%r149 = getelementptr i32, i32* %r3, i32 9 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i320 -%r152 = shl i320 %r151, 288 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i352 -%r156 = getelementptr i32, i32* %r3, i32 10 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i352 -%r159 = shl i352 %r158, 320 -%r160 = or i352 %r154, %r159 -%r161 = zext i352 %r160 to i384 -%r163 = getelementptr i32, i32* %r3, i32 11 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i384 -%r166 = shl i384 %r165, 352 -%r167 = or i384 %r161, %r166 -%r168 = zext i384 %r167 to i416 -%r170 = getelementptr i32, i32* %r3, i32 12 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i416 -%r173 = shl i416 %r172, 384 -%r174 = or i416 %r168, %r173 -%r175 = zext i416 %r89 to i448 -%r176 = zext i416 %r174 to i448 -%r177 = add i448 %r175, %r176 -%r178 = trunc i448 %r177 to i416 -%r179 = trunc i416 %r178 to i32 -%r181 = getelementptr i32, i32* %r1, i32 0 -store i32 %r179, i32* %r181 -%r182 = lshr i416 %r178, 32 -%r183 = trunc i416 %r182 to i32 -%r185 = getelementptr i32, i32* %r1, i32 1 -store i32 %r183, i32* %r185 -%r186 = lshr i416 %r182, 32 -%r187 = trunc i416 %r186 to i32 -%r189 = getelementptr i32, i32* %r1, i32 2 -store i32 %r187, i32* %r189 -%r190 = lshr i416 %r186, 32 -%r191 = trunc i416 %r190 to i32 -%r193 = getelementptr i32, i32* %r1, i32 3 -store i32 %r191, i32* %r193 -%r194 = lshr i416 %r190, 32 -%r195 = trunc i416 %r194 to i32 -%r197 = getelementptr i32, i32* %r1, i32 4 -store i32 %r195, i32* %r197 -%r198 = lshr i416 %r194, 32 -%r199 = trunc i416 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 5 -store i32 %r199, i32* %r201 -%r202 = lshr i416 %r198, 32 -%r203 = trunc i416 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 6 -store i32 %r203, i32* %r205 -%r206 = lshr i416 %r202, 32 -%r207 = trunc i416 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 7 -store i32 %r207, i32* %r209 -%r210 = lshr i416 %r206, 32 -%r211 = trunc i416 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 8 -store i32 %r211, i32* %r213 -%r214 = lshr i416 %r210, 32 -%r215 = trunc i416 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 9 -store i32 %r215, i32* %r217 -%r218 = lshr i416 %r214, 32 -%r219 = trunc i416 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 10 -store i32 %r219, i32* %r221 -%r222 = lshr i416 %r218, 32 -%r223 = trunc i416 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 11 -store i32 %r223, i32* %r225 -%r226 = lshr i416 %r222, 32 -%r227 = trunc i416 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 12 -store i32 %r227, i32* %r229 -%r230 = load i32, i32* %r4 -%r231 = zext i32 %r230 to i64 -%r233 = getelementptr i32, i32* %r4, i32 1 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i64 -%r236 = shl i64 %r235, 32 -%r237 = or i64 %r231, %r236 -%r238 = zext i64 %r237 to i96 -%r240 = getelementptr i32, i32* %r4, i32 2 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i96 -%r243 = shl i96 %r242, 64 -%r244 = or i96 %r238, %r243 -%r245 = zext i96 %r244 to i128 -%r247 = getelementptr i32, i32* %r4, i32 3 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i128 -%r250 = shl i128 %r249, 96 -%r251 = or i128 %r245, %r250 -%r252 = zext i128 %r251 to i160 -%r254 = getelementptr i32, i32* %r4, i32 4 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i160 -%r257 = shl i160 %r256, 128 -%r258 = or i160 %r252, %r257 -%r259 = zext i160 %r258 to i192 -%r261 = getelementptr i32, i32* %r4, i32 5 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i192 -%r264 = shl i192 %r263, 160 -%r265 = or i192 %r259, %r264 -%r266 = zext i192 %r265 to i224 -%r268 = getelementptr i32, i32* %r4, i32 6 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i224 -%r271 = shl i224 %r270, 192 -%r272 = or i224 %r266, %r271 -%r273 = zext i224 %r272 to i256 -%r275 = getelementptr i32, i32* %r4, i32 7 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i256 -%r278 = shl i256 %r277, 224 -%r279 = or i256 %r273, %r278 -%r280 = zext i256 %r279 to i288 -%r282 = getelementptr i32, i32* %r4, i32 8 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i288 -%r285 = shl i288 %r284, 256 -%r286 = or i288 %r280, %r285 -%r287 = zext i288 %r286 to i320 -%r289 = getelementptr i32, i32* %r4, i32 9 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i320 -%r292 = shl i320 %r291, 288 -%r293 = or i320 %r287, %r292 -%r294 = zext i320 %r293 to i352 -%r296 = getelementptr i32, i32* %r4, i32 10 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i352 -%r299 = shl i352 %r298, 320 -%r300 = or i352 %r294, %r299 -%r301 = zext i352 %r300 to i384 -%r303 = getelementptr i32, i32* %r4, i32 11 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i384 -%r306 = shl i384 %r305, 352 -%r307 = or i384 %r301, %r306 -%r308 = zext i384 %r307 to i416 -%r310 = getelementptr i32, i32* %r4, i32 12 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i416 -%r313 = shl i416 %r312, 384 -%r314 = or i416 %r308, %r313 -%r315 = zext i416 %r314 to i448 -%r316 = sub i448 %r177, %r315 -%r317 = lshr i448 %r316, 416 -%r318 = trunc i448 %r317 to i1 -br i1%r318, label %carry, label %nocarry -nocarry: -%r319 = trunc i448 %r316 to i416 -%r320 = trunc i416 %r319 to i32 -%r322 = getelementptr i32, i32* %r1, i32 0 -store i32 %r320, i32* %r322 -%r323 = lshr i416 %r319, 32 -%r324 = trunc i416 %r323 to i32 -%r326 = getelementptr i32, i32* %r1, i32 1 -store i32 %r324, i32* %r326 -%r327 = lshr i416 %r323, 32 -%r328 = trunc i416 %r327 to i32 -%r330 = getelementptr i32, i32* %r1, i32 2 -store i32 %r328, i32* %r330 -%r331 = lshr i416 %r327, 32 -%r332 = trunc i416 %r331 to i32 -%r334 = getelementptr i32, i32* %r1, i32 3 -store i32 %r332, i32* %r334 -%r335 = lshr i416 %r331, 32 -%r336 = trunc i416 %r335 to i32 -%r338 = getelementptr i32, i32* %r1, i32 4 -store i32 %r336, i32* %r338 -%r339 = lshr i416 %r335, 32 -%r340 = trunc i416 %r339 to i32 -%r342 = getelementptr i32, i32* %r1, i32 5 -store i32 %r340, i32* %r342 -%r343 = lshr i416 %r339, 32 -%r344 = trunc i416 %r343 to i32 -%r346 = getelementptr i32, i32* %r1, i32 6 -store i32 %r344, i32* %r346 -%r347 = lshr i416 %r343, 32 -%r348 = trunc i416 %r347 to i32 -%r350 = getelementptr i32, i32* %r1, i32 7 -store i32 %r348, i32* %r350 -%r351 = lshr i416 %r347, 32 -%r352 = trunc i416 %r351 to i32 -%r354 = getelementptr i32, i32* %r1, i32 8 -store i32 %r352, i32* %r354 -%r355 = lshr i416 %r351, 32 -%r356 = trunc i416 %r355 to i32 -%r358 = getelementptr i32, i32* %r1, i32 9 -store i32 %r356, i32* %r358 -%r359 = lshr i416 %r355, 32 -%r360 = trunc i416 %r359 to i32 -%r362 = getelementptr i32, i32* %r1, i32 10 -store i32 %r360, i32* %r362 -%r363 = lshr i416 %r359, 32 -%r364 = trunc i416 %r363 to i32 -%r366 = getelementptr i32, i32* %r1, i32 11 -store i32 %r364, i32* %r366 -%r367 = lshr i416 %r363, 32 -%r368 = trunc i416 %r367 to i32 -%r370 = getelementptr i32, i32* %r1, i32 12 -store i32 %r368, i32* %r370 -ret void -carry: -ret void -} -define void @mcl_fp_addNF13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = load i32, i32* %r3 -%r91 = zext i32 %r90 to i64 -%r93 = getelementptr i32, i32* %r3, i32 1 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i64 -%r96 = shl i64 %r95, 32 -%r97 = or i64 %r91, %r96 -%r98 = zext i64 %r97 to i96 -%r100 = getelementptr i32, i32* %r3, i32 2 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i96 -%r103 = shl i96 %r102, 64 -%r104 = or i96 %r98, %r103 -%r105 = zext i96 %r104 to i128 -%r107 = getelementptr i32, i32* %r3, i32 3 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i128 -%r110 = shl i128 %r109, 96 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i160 -%r114 = getelementptr i32, i32* %r3, i32 4 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i160 -%r117 = shl i160 %r116, 128 -%r118 = or i160 %r112, %r117 -%r119 = zext i160 %r118 to i192 -%r121 = getelementptr i32, i32* %r3, i32 5 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i192 -%r124 = shl i192 %r123, 160 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i224 -%r128 = getelementptr i32, i32* %r3, i32 6 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i224 -%r131 = shl i224 %r130, 192 -%r132 = or i224 %r126, %r131 -%r133 = zext i224 %r132 to i256 -%r135 = getelementptr i32, i32* %r3, i32 7 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i256 -%r138 = shl i256 %r137, 224 -%r139 = or i256 %r133, %r138 -%r140 = zext i256 %r139 to i288 -%r142 = getelementptr i32, i32* %r3, i32 8 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i288 -%r145 = shl i288 %r144, 256 -%r146 = or i288 %r140, %r145 -%r147 = zext i288 %r146 to i320 -%r149 = getelementptr i32, i32* %r3, i32 9 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i320 -%r152 = shl i320 %r151, 288 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i352 -%r156 = getelementptr i32, i32* %r3, i32 10 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i352 -%r159 = shl i352 %r158, 320 -%r160 = or i352 %r154, %r159 -%r161 = zext i352 %r160 to i384 -%r163 = getelementptr i32, i32* %r3, i32 11 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i384 -%r166 = shl i384 %r165, 352 -%r167 = or i384 %r161, %r166 -%r168 = zext i384 %r167 to i416 -%r170 = getelementptr i32, i32* %r3, i32 12 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i416 -%r173 = shl i416 %r172, 384 -%r174 = or i416 %r168, %r173 -%r175 = add i416 %r89, %r174 -%r176 = load i32, i32* %r4 -%r177 = zext i32 %r176 to i64 -%r179 = getelementptr i32, i32* %r4, i32 1 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i64 -%r182 = shl i64 %r181, 32 -%r183 = or i64 %r177, %r182 -%r184 = zext i64 %r183 to i96 -%r186 = getelementptr i32, i32* %r4, i32 2 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i96 -%r189 = shl i96 %r188, 64 -%r190 = or i96 %r184, %r189 -%r191 = zext i96 %r190 to i128 -%r193 = getelementptr i32, i32* %r4, i32 3 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i128 -%r196 = shl i128 %r195, 96 -%r197 = or i128 %r191, %r196 -%r198 = zext i128 %r197 to i160 -%r200 = getelementptr i32, i32* %r4, i32 4 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i160 -%r203 = shl i160 %r202, 128 -%r204 = or i160 %r198, %r203 -%r205 = zext i160 %r204 to i192 -%r207 = getelementptr i32, i32* %r4, i32 5 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i192 -%r210 = shl i192 %r209, 160 -%r211 = or i192 %r205, %r210 -%r212 = zext i192 %r211 to i224 -%r214 = getelementptr i32, i32* %r4, i32 6 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i224 -%r217 = shl i224 %r216, 192 -%r218 = or i224 %r212, %r217 -%r219 = zext i224 %r218 to i256 -%r221 = getelementptr i32, i32* %r4, i32 7 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i256 -%r224 = shl i256 %r223, 224 -%r225 = or i256 %r219, %r224 -%r226 = zext i256 %r225 to i288 -%r228 = getelementptr i32, i32* %r4, i32 8 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i288 -%r231 = shl i288 %r230, 256 -%r232 = or i288 %r226, %r231 -%r233 = zext i288 %r232 to i320 -%r235 = getelementptr i32, i32* %r4, i32 9 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i320 -%r238 = shl i320 %r237, 288 -%r239 = or i320 %r233, %r238 -%r240 = zext i320 %r239 to i352 -%r242 = getelementptr i32, i32* %r4, i32 10 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i352 -%r245 = shl i352 %r244, 320 -%r246 = or i352 %r240, %r245 -%r247 = zext i352 %r246 to i384 -%r249 = getelementptr i32, i32* %r4, i32 11 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i384 -%r252 = shl i384 %r251, 352 -%r253 = or i384 %r247, %r252 -%r254 = zext i384 %r253 to i416 -%r256 = getelementptr i32, i32* %r4, i32 12 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i416 -%r259 = shl i416 %r258, 384 -%r260 = or i416 %r254, %r259 -%r261 = sub i416 %r175, %r260 -%r262 = lshr i416 %r261, 415 -%r263 = trunc i416 %r262 to i1 -%r264 = select i1 %r263, i416 %r175, i416 %r261 -%r265 = trunc i416 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 0 -store i32 %r265, i32* %r267 -%r268 = lshr i416 %r264, 32 -%r269 = trunc i416 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 1 -store i32 %r269, i32* %r271 -%r272 = lshr i416 %r268, 32 -%r273 = trunc i416 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 2 -store i32 %r273, i32* %r275 -%r276 = lshr i416 %r272, 32 -%r277 = trunc i416 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 3 -store i32 %r277, i32* %r279 -%r280 = lshr i416 %r276, 32 -%r281 = trunc i416 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 4 -store i32 %r281, i32* %r283 -%r284 = lshr i416 %r280, 32 -%r285 = trunc i416 %r284 to i32 -%r287 = getelementptr i32, i32* %r1, i32 5 -store i32 %r285, i32* %r287 -%r288 = lshr i416 %r284, 32 -%r289 = trunc i416 %r288 to i32 -%r291 = getelementptr i32, i32* %r1, i32 6 -store i32 %r289, i32* %r291 -%r292 = lshr i416 %r288, 32 -%r293 = trunc i416 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 7 -store i32 %r293, i32* %r295 -%r296 = lshr i416 %r292, 32 -%r297 = trunc i416 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 8 -store i32 %r297, i32* %r299 -%r300 = lshr i416 %r296, 32 -%r301 = trunc i416 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 9 -store i32 %r301, i32* %r303 -%r304 = lshr i416 %r300, 32 -%r305 = trunc i416 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 10 -store i32 %r305, i32* %r307 -%r308 = lshr i416 %r304, 32 -%r309 = trunc i416 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 11 -store i32 %r309, i32* %r311 -%r312 = lshr i416 %r308, 32 -%r313 = trunc i416 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 12 -store i32 %r313, i32* %r315 -ret void -} -define void @mcl_fp_sub13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = load i32, i32* %r3 -%r91 = zext i32 %r90 to i64 -%r93 = getelementptr i32, i32* %r3, i32 1 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i64 -%r96 = shl i64 %r95, 32 -%r97 = or i64 %r91, %r96 -%r98 = zext i64 %r97 to i96 -%r100 = getelementptr i32, i32* %r3, i32 2 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i96 -%r103 = shl i96 %r102, 64 -%r104 = or i96 %r98, %r103 -%r105 = zext i96 %r104 to i128 -%r107 = getelementptr i32, i32* %r3, i32 3 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i128 -%r110 = shl i128 %r109, 96 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i160 -%r114 = getelementptr i32, i32* %r3, i32 4 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i160 -%r117 = shl i160 %r116, 128 -%r118 = or i160 %r112, %r117 -%r119 = zext i160 %r118 to i192 -%r121 = getelementptr i32, i32* %r3, i32 5 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i192 -%r124 = shl i192 %r123, 160 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i224 -%r128 = getelementptr i32, i32* %r3, i32 6 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i224 -%r131 = shl i224 %r130, 192 -%r132 = or i224 %r126, %r131 -%r133 = zext i224 %r132 to i256 -%r135 = getelementptr i32, i32* %r3, i32 7 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i256 -%r138 = shl i256 %r137, 224 -%r139 = or i256 %r133, %r138 -%r140 = zext i256 %r139 to i288 -%r142 = getelementptr i32, i32* %r3, i32 8 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i288 -%r145 = shl i288 %r144, 256 -%r146 = or i288 %r140, %r145 -%r147 = zext i288 %r146 to i320 -%r149 = getelementptr i32, i32* %r3, i32 9 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i320 -%r152 = shl i320 %r151, 288 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i352 -%r156 = getelementptr i32, i32* %r3, i32 10 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i352 -%r159 = shl i352 %r158, 320 -%r160 = or i352 %r154, %r159 -%r161 = zext i352 %r160 to i384 -%r163 = getelementptr i32, i32* %r3, i32 11 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i384 -%r166 = shl i384 %r165, 352 -%r167 = or i384 %r161, %r166 -%r168 = zext i384 %r167 to i416 -%r170 = getelementptr i32, i32* %r3, i32 12 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i416 -%r173 = shl i416 %r172, 384 -%r174 = or i416 %r168, %r173 -%r175 = zext i416 %r89 to i448 -%r176 = zext i416 %r174 to i448 -%r177 = sub i448 %r175, %r176 -%r178 = trunc i448 %r177 to i416 -%r179 = lshr i448 %r177, 416 -%r180 = trunc i448 %r179 to i1 -%r181 = trunc i416 %r178 to i32 -%r183 = getelementptr i32, i32* %r1, i32 0 -store i32 %r181, i32* %r183 -%r184 = lshr i416 %r178, 32 -%r185 = trunc i416 %r184 to i32 -%r187 = getelementptr i32, i32* %r1, i32 1 -store i32 %r185, i32* %r187 -%r188 = lshr i416 %r184, 32 -%r189 = trunc i416 %r188 to i32 -%r191 = getelementptr i32, i32* %r1, i32 2 -store i32 %r189, i32* %r191 -%r192 = lshr i416 %r188, 32 -%r193 = trunc i416 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 3 -store i32 %r193, i32* %r195 -%r196 = lshr i416 %r192, 32 -%r197 = trunc i416 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 4 -store i32 %r197, i32* %r199 -%r200 = lshr i416 %r196, 32 -%r201 = trunc i416 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 5 -store i32 %r201, i32* %r203 -%r204 = lshr i416 %r200, 32 -%r205 = trunc i416 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 6 -store i32 %r205, i32* %r207 -%r208 = lshr i416 %r204, 32 -%r209 = trunc i416 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 7 -store i32 %r209, i32* %r211 -%r212 = lshr i416 %r208, 32 -%r213 = trunc i416 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 8 -store i32 %r213, i32* %r215 -%r216 = lshr i416 %r212, 32 -%r217 = trunc i416 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 9 -store i32 %r217, i32* %r219 -%r220 = lshr i416 %r216, 32 -%r221 = trunc i416 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 10 -store i32 %r221, i32* %r223 -%r224 = lshr i416 %r220, 32 -%r225 = trunc i416 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 11 -store i32 %r225, i32* %r227 -%r228 = lshr i416 %r224, 32 -%r229 = trunc i416 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 12 -store i32 %r229, i32* %r231 -br i1%r180, label %carry, label %nocarry -nocarry: -ret void -carry: -%r232 = load i32, i32* %r4 -%r233 = zext i32 %r232 to i64 -%r235 = getelementptr i32, i32* %r4, i32 1 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i64 -%r238 = shl i64 %r237, 32 -%r239 = or i64 %r233, %r238 -%r240 = zext i64 %r239 to i96 -%r242 = getelementptr i32, i32* %r4, i32 2 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i96 -%r245 = shl i96 %r244, 64 -%r246 = or i96 %r240, %r245 -%r247 = zext i96 %r246 to i128 -%r249 = getelementptr i32, i32* %r4, i32 3 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i128 -%r252 = shl i128 %r251, 96 -%r253 = or i128 %r247, %r252 -%r254 = zext i128 %r253 to i160 -%r256 = getelementptr i32, i32* %r4, i32 4 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i160 -%r259 = shl i160 %r258, 128 -%r260 = or i160 %r254, %r259 -%r261 = zext i160 %r260 to i192 -%r263 = getelementptr i32, i32* %r4, i32 5 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i192 -%r266 = shl i192 %r265, 160 -%r267 = or i192 %r261, %r266 -%r268 = zext i192 %r267 to i224 -%r270 = getelementptr i32, i32* %r4, i32 6 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i224 -%r273 = shl i224 %r272, 192 -%r274 = or i224 %r268, %r273 -%r275 = zext i224 %r274 to i256 -%r277 = getelementptr i32, i32* %r4, i32 7 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i256 -%r280 = shl i256 %r279, 224 -%r281 = or i256 %r275, %r280 -%r282 = zext i256 %r281 to i288 -%r284 = getelementptr i32, i32* %r4, i32 8 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i288 -%r287 = shl i288 %r286, 256 -%r288 = or i288 %r282, %r287 -%r289 = zext i288 %r288 to i320 -%r291 = getelementptr i32, i32* %r4, i32 9 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i320 -%r294 = shl i320 %r293, 288 -%r295 = or i320 %r289, %r294 -%r296 = zext i320 %r295 to i352 -%r298 = getelementptr i32, i32* %r4, i32 10 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i352 -%r301 = shl i352 %r300, 320 -%r302 = or i352 %r296, %r301 -%r303 = zext i352 %r302 to i384 -%r305 = getelementptr i32, i32* %r4, i32 11 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i384 -%r308 = shl i384 %r307, 352 -%r309 = or i384 %r303, %r308 -%r310 = zext i384 %r309 to i416 -%r312 = getelementptr i32, i32* %r4, i32 12 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i416 -%r315 = shl i416 %r314, 384 -%r316 = or i416 %r310, %r315 -%r317 = add i416 %r178, %r316 -%r318 = trunc i416 %r317 to i32 -%r320 = getelementptr i32, i32* %r1, i32 0 -store i32 %r318, i32* %r320 -%r321 = lshr i416 %r317, 32 -%r322 = trunc i416 %r321 to i32 -%r324 = getelementptr i32, i32* %r1, i32 1 -store i32 %r322, i32* %r324 -%r325 = lshr i416 %r321, 32 -%r326 = trunc i416 %r325 to i32 -%r328 = getelementptr i32, i32* %r1, i32 2 -store i32 %r326, i32* %r328 -%r329 = lshr i416 %r325, 32 -%r330 = trunc i416 %r329 to i32 -%r332 = getelementptr i32, i32* %r1, i32 3 -store i32 %r330, i32* %r332 -%r333 = lshr i416 %r329, 32 -%r334 = trunc i416 %r333 to i32 -%r336 = getelementptr i32, i32* %r1, i32 4 -store i32 %r334, i32* %r336 -%r337 = lshr i416 %r333, 32 -%r338 = trunc i416 %r337 to i32 -%r340 = getelementptr i32, i32* %r1, i32 5 -store i32 %r338, i32* %r340 -%r341 = lshr i416 %r337, 32 -%r342 = trunc i416 %r341 to i32 -%r344 = getelementptr i32, i32* %r1, i32 6 -store i32 %r342, i32* %r344 -%r345 = lshr i416 %r341, 32 -%r346 = trunc i416 %r345 to i32 -%r348 = getelementptr i32, i32* %r1, i32 7 -store i32 %r346, i32* %r348 -%r349 = lshr i416 %r345, 32 -%r350 = trunc i416 %r349 to i32 -%r352 = getelementptr i32, i32* %r1, i32 8 -store i32 %r350, i32* %r352 -%r353 = lshr i416 %r349, 32 -%r354 = trunc i416 %r353 to i32 -%r356 = getelementptr i32, i32* %r1, i32 9 -store i32 %r354, i32* %r356 -%r357 = lshr i416 %r353, 32 -%r358 = trunc i416 %r357 to i32 -%r360 = getelementptr i32, i32* %r1, i32 10 -store i32 %r358, i32* %r360 -%r361 = lshr i416 %r357, 32 -%r362 = trunc i416 %r361 to i32 -%r364 = getelementptr i32, i32* %r1, i32 11 -store i32 %r362, i32* %r364 -%r365 = lshr i416 %r361, 32 -%r366 = trunc i416 %r365 to i32 -%r368 = getelementptr i32, i32* %r1, i32 12 -store i32 %r366, i32* %r368 -ret void -} -define void @mcl_fp_subNF13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = load i32, i32* %r3 -%r91 = zext i32 %r90 to i64 -%r93 = getelementptr i32, i32* %r3, i32 1 -%r94 = load i32, i32* %r93 -%r95 = zext i32 %r94 to i64 -%r96 = shl i64 %r95, 32 -%r97 = or i64 %r91, %r96 -%r98 = zext i64 %r97 to i96 -%r100 = getelementptr i32, i32* %r3, i32 2 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i96 -%r103 = shl i96 %r102, 64 -%r104 = or i96 %r98, %r103 -%r105 = zext i96 %r104 to i128 -%r107 = getelementptr i32, i32* %r3, i32 3 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i128 -%r110 = shl i128 %r109, 96 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i160 -%r114 = getelementptr i32, i32* %r3, i32 4 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i160 -%r117 = shl i160 %r116, 128 -%r118 = or i160 %r112, %r117 -%r119 = zext i160 %r118 to i192 -%r121 = getelementptr i32, i32* %r3, i32 5 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i192 -%r124 = shl i192 %r123, 160 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i224 -%r128 = getelementptr i32, i32* %r3, i32 6 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i224 -%r131 = shl i224 %r130, 192 -%r132 = or i224 %r126, %r131 -%r133 = zext i224 %r132 to i256 -%r135 = getelementptr i32, i32* %r3, i32 7 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i256 -%r138 = shl i256 %r137, 224 -%r139 = or i256 %r133, %r138 -%r140 = zext i256 %r139 to i288 -%r142 = getelementptr i32, i32* %r3, i32 8 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i288 -%r145 = shl i288 %r144, 256 -%r146 = or i288 %r140, %r145 -%r147 = zext i288 %r146 to i320 -%r149 = getelementptr i32, i32* %r3, i32 9 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i320 -%r152 = shl i320 %r151, 288 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i352 -%r156 = getelementptr i32, i32* %r3, i32 10 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i352 -%r159 = shl i352 %r158, 320 -%r160 = or i352 %r154, %r159 -%r161 = zext i352 %r160 to i384 -%r163 = getelementptr i32, i32* %r3, i32 11 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i384 -%r166 = shl i384 %r165, 352 -%r167 = or i384 %r161, %r166 -%r168 = zext i384 %r167 to i416 -%r170 = getelementptr i32, i32* %r3, i32 12 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i416 -%r173 = shl i416 %r172, 384 -%r174 = or i416 %r168, %r173 -%r175 = sub i416 %r89, %r174 -%r176 = lshr i416 %r175, 415 -%r177 = trunc i416 %r176 to i1 -%r178 = load i32, i32* %r4 -%r179 = zext i32 %r178 to i64 -%r181 = getelementptr i32, i32* %r4, i32 1 -%r182 = load i32, i32* %r181 -%r183 = zext i32 %r182 to i64 -%r184 = shl i64 %r183, 32 -%r185 = or i64 %r179, %r184 -%r186 = zext i64 %r185 to i96 -%r188 = getelementptr i32, i32* %r4, i32 2 -%r189 = load i32, i32* %r188 -%r190 = zext i32 %r189 to i96 -%r191 = shl i96 %r190, 64 -%r192 = or i96 %r186, %r191 -%r193 = zext i96 %r192 to i128 -%r195 = getelementptr i32, i32* %r4, i32 3 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i128 -%r198 = shl i128 %r197, 96 -%r199 = or i128 %r193, %r198 -%r200 = zext i128 %r199 to i160 -%r202 = getelementptr i32, i32* %r4, i32 4 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i160 -%r205 = shl i160 %r204, 128 -%r206 = or i160 %r200, %r205 -%r207 = zext i160 %r206 to i192 -%r209 = getelementptr i32, i32* %r4, i32 5 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i192 -%r212 = shl i192 %r211, 160 -%r213 = or i192 %r207, %r212 -%r214 = zext i192 %r213 to i224 -%r216 = getelementptr i32, i32* %r4, i32 6 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i224 -%r219 = shl i224 %r218, 192 -%r220 = or i224 %r214, %r219 -%r221 = zext i224 %r220 to i256 -%r223 = getelementptr i32, i32* %r4, i32 7 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i256 -%r226 = shl i256 %r225, 224 -%r227 = or i256 %r221, %r226 -%r228 = zext i256 %r227 to i288 -%r230 = getelementptr i32, i32* %r4, i32 8 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i288 -%r233 = shl i288 %r232, 256 -%r234 = or i288 %r228, %r233 -%r235 = zext i288 %r234 to i320 -%r237 = getelementptr i32, i32* %r4, i32 9 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i320 -%r240 = shl i320 %r239, 288 -%r241 = or i320 %r235, %r240 -%r242 = zext i320 %r241 to i352 -%r244 = getelementptr i32, i32* %r4, i32 10 -%r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i352 -%r247 = shl i352 %r246, 320 -%r248 = or i352 %r242, %r247 -%r249 = zext i352 %r248 to i384 -%r251 = getelementptr i32, i32* %r4, i32 11 -%r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i384 -%r254 = shl i384 %r253, 352 -%r255 = or i384 %r249, %r254 -%r256 = zext i384 %r255 to i416 -%r258 = getelementptr i32, i32* %r4, i32 12 -%r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i416 -%r261 = shl i416 %r260, 384 -%r262 = or i416 %r256, %r261 -%r264 = select i1 %r177, i416 %r262, i416 0 -%r265 = add i416 %r175, %r264 -%r266 = trunc i416 %r265 to i32 -%r268 = getelementptr i32, i32* %r1, i32 0 -store i32 %r266, i32* %r268 -%r269 = lshr i416 %r265, 32 -%r270 = trunc i416 %r269 to i32 -%r272 = getelementptr i32, i32* %r1, i32 1 -store i32 %r270, i32* %r272 -%r273 = lshr i416 %r269, 32 -%r274 = trunc i416 %r273 to i32 -%r276 = getelementptr i32, i32* %r1, i32 2 -store i32 %r274, i32* %r276 -%r277 = lshr i416 %r273, 32 -%r278 = trunc i416 %r277 to i32 -%r280 = getelementptr i32, i32* %r1, i32 3 -store i32 %r278, i32* %r280 -%r281 = lshr i416 %r277, 32 -%r282 = trunc i416 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 4 -store i32 %r282, i32* %r284 -%r285 = lshr i416 %r281, 32 -%r286 = trunc i416 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 5 -store i32 %r286, i32* %r288 -%r289 = lshr i416 %r285, 32 -%r290 = trunc i416 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 6 -store i32 %r290, i32* %r292 -%r293 = lshr i416 %r289, 32 -%r294 = trunc i416 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 7 -store i32 %r294, i32* %r296 -%r297 = lshr i416 %r293, 32 -%r298 = trunc i416 %r297 to i32 -%r300 = getelementptr i32, i32* %r1, i32 8 -store i32 %r298, i32* %r300 -%r301 = lshr i416 %r297, 32 -%r302 = trunc i416 %r301 to i32 -%r304 = getelementptr i32, i32* %r1, i32 9 -store i32 %r302, i32* %r304 -%r305 = lshr i416 %r301, 32 -%r306 = trunc i416 %r305 to i32 -%r308 = getelementptr i32, i32* %r1, i32 10 -store i32 %r306, i32* %r308 -%r309 = lshr i416 %r305, 32 -%r310 = trunc i416 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 11 -store i32 %r310, i32* %r312 -%r313 = lshr i416 %r309, 32 -%r314 = trunc i416 %r313 to i32 -%r316 = getelementptr i32, i32* %r1, i32 12 -store i32 %r314, i32* %r316 -ret void -} -define void @mcl_fpDbl_add13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = load i32, i32* %r3 -%r182 = zext i32 %r181 to i64 -%r184 = getelementptr i32, i32* %r3, i32 1 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i64 -%r187 = shl i64 %r186, 32 -%r188 = or i64 %r182, %r187 -%r189 = zext i64 %r188 to i96 -%r191 = getelementptr i32, i32* %r3, i32 2 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i96 -%r194 = shl i96 %r193, 64 -%r195 = or i96 %r189, %r194 -%r196 = zext i96 %r195 to i128 -%r198 = getelementptr i32, i32* %r3, i32 3 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i128 -%r201 = shl i128 %r200, 96 -%r202 = or i128 %r196, %r201 -%r203 = zext i128 %r202 to i160 -%r205 = getelementptr i32, i32* %r3, i32 4 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i160 -%r208 = shl i160 %r207, 128 -%r209 = or i160 %r203, %r208 -%r210 = zext i160 %r209 to i192 -%r212 = getelementptr i32, i32* %r3, i32 5 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i192 -%r215 = shl i192 %r214, 160 -%r216 = or i192 %r210, %r215 -%r217 = zext i192 %r216 to i224 -%r219 = getelementptr i32, i32* %r3, i32 6 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i224 -%r222 = shl i224 %r221, 192 -%r223 = or i224 %r217, %r222 -%r224 = zext i224 %r223 to i256 -%r226 = getelementptr i32, i32* %r3, i32 7 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i256 -%r229 = shl i256 %r228, 224 -%r230 = or i256 %r224, %r229 -%r231 = zext i256 %r230 to i288 -%r233 = getelementptr i32, i32* %r3, i32 8 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i288 -%r236 = shl i288 %r235, 256 -%r237 = or i288 %r231, %r236 -%r238 = zext i288 %r237 to i320 -%r240 = getelementptr i32, i32* %r3, i32 9 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i320 -%r243 = shl i320 %r242, 288 -%r244 = or i320 %r238, %r243 -%r245 = zext i320 %r244 to i352 -%r247 = getelementptr i32, i32* %r3, i32 10 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i352 -%r250 = shl i352 %r249, 320 -%r251 = or i352 %r245, %r250 -%r252 = zext i352 %r251 to i384 -%r254 = getelementptr i32, i32* %r3, i32 11 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i384 -%r257 = shl i384 %r256, 352 -%r258 = or i384 %r252, %r257 -%r259 = zext i384 %r258 to i416 -%r261 = getelementptr i32, i32* %r3, i32 12 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i416 -%r264 = shl i416 %r263, 384 -%r265 = or i416 %r259, %r264 -%r266 = zext i416 %r265 to i448 -%r268 = getelementptr i32, i32* %r3, i32 13 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i448 -%r271 = shl i448 %r270, 416 -%r272 = or i448 %r266, %r271 -%r273 = zext i448 %r272 to i480 -%r275 = getelementptr i32, i32* %r3, i32 14 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i480 -%r278 = shl i480 %r277, 448 -%r279 = or i480 %r273, %r278 -%r280 = zext i480 %r279 to i512 -%r282 = getelementptr i32, i32* %r3, i32 15 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i512 -%r285 = shl i512 %r284, 480 -%r286 = or i512 %r280, %r285 -%r287 = zext i512 %r286 to i544 -%r289 = getelementptr i32, i32* %r3, i32 16 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i544 -%r292 = shl i544 %r291, 512 -%r293 = or i544 %r287, %r292 -%r294 = zext i544 %r293 to i576 -%r296 = getelementptr i32, i32* %r3, i32 17 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i576 -%r299 = shl i576 %r298, 544 -%r300 = or i576 %r294, %r299 -%r301 = zext i576 %r300 to i608 -%r303 = getelementptr i32, i32* %r3, i32 18 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i608 -%r306 = shl i608 %r305, 576 -%r307 = or i608 %r301, %r306 -%r308 = zext i608 %r307 to i640 -%r310 = getelementptr i32, i32* %r3, i32 19 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i640 -%r313 = shl i640 %r312, 608 -%r314 = or i640 %r308, %r313 -%r315 = zext i640 %r314 to i672 -%r317 = getelementptr i32, i32* %r3, i32 20 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i672 -%r320 = shl i672 %r319, 640 -%r321 = or i672 %r315, %r320 -%r322 = zext i672 %r321 to i704 -%r324 = getelementptr i32, i32* %r3, i32 21 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i704 -%r327 = shl i704 %r326, 672 -%r328 = or i704 %r322, %r327 -%r329 = zext i704 %r328 to i736 -%r331 = getelementptr i32, i32* %r3, i32 22 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i736 -%r334 = shl i736 %r333, 704 -%r335 = or i736 %r329, %r334 -%r336 = zext i736 %r335 to i768 -%r338 = getelementptr i32, i32* %r3, i32 23 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i768 -%r341 = shl i768 %r340, 736 -%r342 = or i768 %r336, %r341 -%r343 = zext i768 %r342 to i800 -%r345 = getelementptr i32, i32* %r3, i32 24 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i800 -%r348 = shl i800 %r347, 768 -%r349 = or i800 %r343, %r348 -%r350 = zext i800 %r349 to i832 -%r352 = getelementptr i32, i32* %r3, i32 25 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i832 -%r355 = shl i832 %r354, 800 -%r356 = or i832 %r350, %r355 -%r357 = zext i832 %r180 to i864 -%r358 = zext i832 %r356 to i864 -%r359 = add i864 %r357, %r358 -%r360 = trunc i864 %r359 to i416 -%r361 = trunc i416 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 0 -store i32 %r361, i32* %r363 -%r364 = lshr i416 %r360, 32 -%r365 = trunc i416 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 1 -store i32 %r365, i32* %r367 -%r368 = lshr i416 %r364, 32 -%r369 = trunc i416 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 2 -store i32 %r369, i32* %r371 -%r372 = lshr i416 %r368, 32 -%r373 = trunc i416 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 3 -store i32 %r373, i32* %r375 -%r376 = lshr i416 %r372, 32 -%r377 = trunc i416 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 4 -store i32 %r377, i32* %r379 -%r380 = lshr i416 %r376, 32 -%r381 = trunc i416 %r380 to i32 -%r383 = getelementptr i32, i32* %r1, i32 5 -store i32 %r381, i32* %r383 -%r384 = lshr i416 %r380, 32 -%r385 = trunc i416 %r384 to i32 -%r387 = getelementptr i32, i32* %r1, i32 6 -store i32 %r385, i32* %r387 -%r388 = lshr i416 %r384, 32 -%r389 = trunc i416 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 7 -store i32 %r389, i32* %r391 -%r392 = lshr i416 %r388, 32 -%r393 = trunc i416 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 8 -store i32 %r393, i32* %r395 -%r396 = lshr i416 %r392, 32 -%r397 = trunc i416 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 9 -store i32 %r397, i32* %r399 -%r400 = lshr i416 %r396, 32 -%r401 = trunc i416 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 10 -store i32 %r401, i32* %r403 -%r404 = lshr i416 %r400, 32 -%r405 = trunc i416 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 11 -store i32 %r405, i32* %r407 -%r408 = lshr i416 %r404, 32 -%r409 = trunc i416 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 12 -store i32 %r409, i32* %r411 -%r412 = lshr i864 %r359, 416 -%r413 = trunc i864 %r412 to i448 -%r414 = load i32, i32* %r4 -%r415 = zext i32 %r414 to i64 -%r417 = getelementptr i32, i32* %r4, i32 1 -%r418 = load i32, i32* %r417 -%r419 = zext i32 %r418 to i64 -%r420 = shl i64 %r419, 32 -%r421 = or i64 %r415, %r420 -%r422 = zext i64 %r421 to i96 -%r424 = getelementptr i32, i32* %r4, i32 2 -%r425 = load i32, i32* %r424 -%r426 = zext i32 %r425 to i96 -%r427 = shl i96 %r426, 64 -%r428 = or i96 %r422, %r427 -%r429 = zext i96 %r428 to i128 -%r431 = getelementptr i32, i32* %r4, i32 3 -%r432 = load i32, i32* %r431 -%r433 = zext i32 %r432 to i128 -%r434 = shl i128 %r433, 96 -%r435 = or i128 %r429, %r434 -%r436 = zext i128 %r435 to i160 -%r438 = getelementptr i32, i32* %r4, i32 4 -%r439 = load i32, i32* %r438 -%r440 = zext i32 %r439 to i160 -%r441 = shl i160 %r440, 128 -%r442 = or i160 %r436, %r441 -%r443 = zext i160 %r442 to i192 -%r445 = getelementptr i32, i32* %r4, i32 5 -%r446 = load i32, i32* %r445 -%r447 = zext i32 %r446 to i192 -%r448 = shl i192 %r447, 160 -%r449 = or i192 %r443, %r448 -%r450 = zext i192 %r449 to i224 -%r452 = getelementptr i32, i32* %r4, i32 6 -%r453 = load i32, i32* %r452 -%r454 = zext i32 %r453 to i224 -%r455 = shl i224 %r454, 192 -%r456 = or i224 %r450, %r455 -%r457 = zext i224 %r456 to i256 -%r459 = getelementptr i32, i32* %r4, i32 7 -%r460 = load i32, i32* %r459 -%r461 = zext i32 %r460 to i256 -%r462 = shl i256 %r461, 224 -%r463 = or i256 %r457, %r462 -%r464 = zext i256 %r463 to i288 -%r466 = getelementptr i32, i32* %r4, i32 8 -%r467 = load i32, i32* %r466 -%r468 = zext i32 %r467 to i288 -%r469 = shl i288 %r468, 256 -%r470 = or i288 %r464, %r469 -%r471 = zext i288 %r470 to i320 -%r473 = getelementptr i32, i32* %r4, i32 9 -%r474 = load i32, i32* %r473 -%r475 = zext i32 %r474 to i320 -%r476 = shl i320 %r475, 288 -%r477 = or i320 %r471, %r476 -%r478 = zext i320 %r477 to i352 -%r480 = getelementptr i32, i32* %r4, i32 10 -%r481 = load i32, i32* %r480 -%r482 = zext i32 %r481 to i352 -%r483 = shl i352 %r482, 320 -%r484 = or i352 %r478, %r483 -%r485 = zext i352 %r484 to i384 -%r487 = getelementptr i32, i32* %r4, i32 11 -%r488 = load i32, i32* %r487 -%r489 = zext i32 %r488 to i384 -%r490 = shl i384 %r489, 352 -%r491 = or i384 %r485, %r490 -%r492 = zext i384 %r491 to i416 -%r494 = getelementptr i32, i32* %r4, i32 12 -%r495 = load i32, i32* %r494 -%r496 = zext i32 %r495 to i416 -%r497 = shl i416 %r496, 384 -%r498 = or i416 %r492, %r497 -%r499 = zext i416 %r498 to i448 -%r500 = sub i448 %r413, %r499 -%r501 = lshr i448 %r500, 416 -%r502 = trunc i448 %r501 to i1 -%r503 = select i1 %r502, i448 %r413, i448 %r500 -%r504 = trunc i448 %r503 to i416 -%r506 = getelementptr i32, i32* %r1, i32 13 -%r507 = trunc i416 %r504 to i32 -%r509 = getelementptr i32, i32* %r506, i32 0 -store i32 %r507, i32* %r509 -%r510 = lshr i416 %r504, 32 -%r511 = trunc i416 %r510 to i32 -%r513 = getelementptr i32, i32* %r506, i32 1 -store i32 %r511, i32* %r513 -%r514 = lshr i416 %r510, 32 -%r515 = trunc i416 %r514 to i32 -%r517 = getelementptr i32, i32* %r506, i32 2 -store i32 %r515, i32* %r517 -%r518 = lshr i416 %r514, 32 -%r519 = trunc i416 %r518 to i32 -%r521 = getelementptr i32, i32* %r506, i32 3 -store i32 %r519, i32* %r521 -%r522 = lshr i416 %r518, 32 -%r523 = trunc i416 %r522 to i32 -%r525 = getelementptr i32, i32* %r506, i32 4 -store i32 %r523, i32* %r525 -%r526 = lshr i416 %r522, 32 -%r527 = trunc i416 %r526 to i32 -%r529 = getelementptr i32, i32* %r506, i32 5 -store i32 %r527, i32* %r529 -%r530 = lshr i416 %r526, 32 -%r531 = trunc i416 %r530 to i32 -%r533 = getelementptr i32, i32* %r506, i32 6 -store i32 %r531, i32* %r533 -%r534 = lshr i416 %r530, 32 -%r535 = trunc i416 %r534 to i32 -%r537 = getelementptr i32, i32* %r506, i32 7 -store i32 %r535, i32* %r537 -%r538 = lshr i416 %r534, 32 -%r539 = trunc i416 %r538 to i32 -%r541 = getelementptr i32, i32* %r506, i32 8 -store i32 %r539, i32* %r541 -%r542 = lshr i416 %r538, 32 -%r543 = trunc i416 %r542 to i32 -%r545 = getelementptr i32, i32* %r506, i32 9 -store i32 %r543, i32* %r545 -%r546 = lshr i416 %r542, 32 -%r547 = trunc i416 %r546 to i32 -%r549 = getelementptr i32, i32* %r506, i32 10 -store i32 %r547, i32* %r549 -%r550 = lshr i416 %r546, 32 -%r551 = trunc i416 %r550 to i32 -%r553 = getelementptr i32, i32* %r506, i32 11 -store i32 %r551, i32* %r553 -%r554 = lshr i416 %r550, 32 -%r555 = trunc i416 %r554 to i32 -%r557 = getelementptr i32, i32* %r506, i32 12 -store i32 %r555, i32* %r557 -ret void -} -define void @mcl_fpDbl_sub13L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = load i32, i32* %r3 -%r182 = zext i32 %r181 to i64 -%r184 = getelementptr i32, i32* %r3, i32 1 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i64 -%r187 = shl i64 %r186, 32 -%r188 = or i64 %r182, %r187 -%r189 = zext i64 %r188 to i96 -%r191 = getelementptr i32, i32* %r3, i32 2 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i96 -%r194 = shl i96 %r193, 64 -%r195 = or i96 %r189, %r194 -%r196 = zext i96 %r195 to i128 -%r198 = getelementptr i32, i32* %r3, i32 3 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i128 -%r201 = shl i128 %r200, 96 -%r202 = or i128 %r196, %r201 -%r203 = zext i128 %r202 to i160 -%r205 = getelementptr i32, i32* %r3, i32 4 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i160 -%r208 = shl i160 %r207, 128 -%r209 = or i160 %r203, %r208 -%r210 = zext i160 %r209 to i192 -%r212 = getelementptr i32, i32* %r3, i32 5 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i192 -%r215 = shl i192 %r214, 160 -%r216 = or i192 %r210, %r215 -%r217 = zext i192 %r216 to i224 -%r219 = getelementptr i32, i32* %r3, i32 6 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i224 -%r222 = shl i224 %r221, 192 -%r223 = or i224 %r217, %r222 -%r224 = zext i224 %r223 to i256 -%r226 = getelementptr i32, i32* %r3, i32 7 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i256 -%r229 = shl i256 %r228, 224 -%r230 = or i256 %r224, %r229 -%r231 = zext i256 %r230 to i288 -%r233 = getelementptr i32, i32* %r3, i32 8 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i288 -%r236 = shl i288 %r235, 256 -%r237 = or i288 %r231, %r236 -%r238 = zext i288 %r237 to i320 -%r240 = getelementptr i32, i32* %r3, i32 9 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i320 -%r243 = shl i320 %r242, 288 -%r244 = or i320 %r238, %r243 -%r245 = zext i320 %r244 to i352 -%r247 = getelementptr i32, i32* %r3, i32 10 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i352 -%r250 = shl i352 %r249, 320 -%r251 = or i352 %r245, %r250 -%r252 = zext i352 %r251 to i384 -%r254 = getelementptr i32, i32* %r3, i32 11 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i384 -%r257 = shl i384 %r256, 352 -%r258 = or i384 %r252, %r257 -%r259 = zext i384 %r258 to i416 -%r261 = getelementptr i32, i32* %r3, i32 12 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i416 -%r264 = shl i416 %r263, 384 -%r265 = or i416 %r259, %r264 -%r266 = zext i416 %r265 to i448 -%r268 = getelementptr i32, i32* %r3, i32 13 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i448 -%r271 = shl i448 %r270, 416 -%r272 = or i448 %r266, %r271 -%r273 = zext i448 %r272 to i480 -%r275 = getelementptr i32, i32* %r3, i32 14 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i480 -%r278 = shl i480 %r277, 448 -%r279 = or i480 %r273, %r278 -%r280 = zext i480 %r279 to i512 -%r282 = getelementptr i32, i32* %r3, i32 15 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i512 -%r285 = shl i512 %r284, 480 -%r286 = or i512 %r280, %r285 -%r287 = zext i512 %r286 to i544 -%r289 = getelementptr i32, i32* %r3, i32 16 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i544 -%r292 = shl i544 %r291, 512 -%r293 = or i544 %r287, %r292 -%r294 = zext i544 %r293 to i576 -%r296 = getelementptr i32, i32* %r3, i32 17 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i576 -%r299 = shl i576 %r298, 544 -%r300 = or i576 %r294, %r299 -%r301 = zext i576 %r300 to i608 -%r303 = getelementptr i32, i32* %r3, i32 18 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i608 -%r306 = shl i608 %r305, 576 -%r307 = or i608 %r301, %r306 -%r308 = zext i608 %r307 to i640 -%r310 = getelementptr i32, i32* %r3, i32 19 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i640 -%r313 = shl i640 %r312, 608 -%r314 = or i640 %r308, %r313 -%r315 = zext i640 %r314 to i672 -%r317 = getelementptr i32, i32* %r3, i32 20 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i672 -%r320 = shl i672 %r319, 640 -%r321 = or i672 %r315, %r320 -%r322 = zext i672 %r321 to i704 -%r324 = getelementptr i32, i32* %r3, i32 21 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i704 -%r327 = shl i704 %r326, 672 -%r328 = or i704 %r322, %r327 -%r329 = zext i704 %r328 to i736 -%r331 = getelementptr i32, i32* %r3, i32 22 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i736 -%r334 = shl i736 %r333, 704 -%r335 = or i736 %r329, %r334 -%r336 = zext i736 %r335 to i768 -%r338 = getelementptr i32, i32* %r3, i32 23 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i768 -%r341 = shl i768 %r340, 736 -%r342 = or i768 %r336, %r341 -%r343 = zext i768 %r342 to i800 -%r345 = getelementptr i32, i32* %r3, i32 24 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i800 -%r348 = shl i800 %r347, 768 -%r349 = or i800 %r343, %r348 -%r350 = zext i800 %r349 to i832 -%r352 = getelementptr i32, i32* %r3, i32 25 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i832 -%r355 = shl i832 %r354, 800 -%r356 = or i832 %r350, %r355 -%r357 = zext i832 %r180 to i864 -%r358 = zext i832 %r356 to i864 -%r359 = sub i864 %r357, %r358 -%r360 = trunc i864 %r359 to i416 -%r361 = trunc i416 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 0 -store i32 %r361, i32* %r363 -%r364 = lshr i416 %r360, 32 -%r365 = trunc i416 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 1 -store i32 %r365, i32* %r367 -%r368 = lshr i416 %r364, 32 -%r369 = trunc i416 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 2 -store i32 %r369, i32* %r371 -%r372 = lshr i416 %r368, 32 -%r373 = trunc i416 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 3 -store i32 %r373, i32* %r375 -%r376 = lshr i416 %r372, 32 -%r377 = trunc i416 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 4 -store i32 %r377, i32* %r379 -%r380 = lshr i416 %r376, 32 -%r381 = trunc i416 %r380 to i32 -%r383 = getelementptr i32, i32* %r1, i32 5 -store i32 %r381, i32* %r383 -%r384 = lshr i416 %r380, 32 -%r385 = trunc i416 %r384 to i32 -%r387 = getelementptr i32, i32* %r1, i32 6 -store i32 %r385, i32* %r387 -%r388 = lshr i416 %r384, 32 -%r389 = trunc i416 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 7 -store i32 %r389, i32* %r391 -%r392 = lshr i416 %r388, 32 -%r393 = trunc i416 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 8 -store i32 %r393, i32* %r395 -%r396 = lshr i416 %r392, 32 -%r397 = trunc i416 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 9 -store i32 %r397, i32* %r399 -%r400 = lshr i416 %r396, 32 -%r401 = trunc i416 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 10 -store i32 %r401, i32* %r403 -%r404 = lshr i416 %r400, 32 -%r405 = trunc i416 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 11 -store i32 %r405, i32* %r407 -%r408 = lshr i416 %r404, 32 -%r409 = trunc i416 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 12 -store i32 %r409, i32* %r411 -%r412 = lshr i864 %r359, 416 -%r413 = trunc i864 %r412 to i416 -%r414 = lshr i864 %r359, 832 -%r415 = trunc i864 %r414 to i1 -%r416 = load i32, i32* %r4 -%r417 = zext i32 %r416 to i64 -%r419 = getelementptr i32, i32* %r4, i32 1 -%r420 = load i32, i32* %r419 -%r421 = zext i32 %r420 to i64 -%r422 = shl i64 %r421, 32 -%r423 = or i64 %r417, %r422 -%r424 = zext i64 %r423 to i96 -%r426 = getelementptr i32, i32* %r4, i32 2 -%r427 = load i32, i32* %r426 -%r428 = zext i32 %r427 to i96 -%r429 = shl i96 %r428, 64 -%r430 = or i96 %r424, %r429 -%r431 = zext i96 %r430 to i128 -%r433 = getelementptr i32, i32* %r4, i32 3 -%r434 = load i32, i32* %r433 -%r435 = zext i32 %r434 to i128 -%r436 = shl i128 %r435, 96 -%r437 = or i128 %r431, %r436 -%r438 = zext i128 %r437 to i160 -%r440 = getelementptr i32, i32* %r4, i32 4 -%r441 = load i32, i32* %r440 -%r442 = zext i32 %r441 to i160 -%r443 = shl i160 %r442, 128 -%r444 = or i160 %r438, %r443 -%r445 = zext i160 %r444 to i192 -%r447 = getelementptr i32, i32* %r4, i32 5 -%r448 = load i32, i32* %r447 -%r449 = zext i32 %r448 to i192 -%r450 = shl i192 %r449, 160 -%r451 = or i192 %r445, %r450 -%r452 = zext i192 %r451 to i224 -%r454 = getelementptr i32, i32* %r4, i32 6 -%r455 = load i32, i32* %r454 -%r456 = zext i32 %r455 to i224 -%r457 = shl i224 %r456, 192 -%r458 = or i224 %r452, %r457 -%r459 = zext i224 %r458 to i256 -%r461 = getelementptr i32, i32* %r4, i32 7 -%r462 = load i32, i32* %r461 -%r463 = zext i32 %r462 to i256 -%r464 = shl i256 %r463, 224 -%r465 = or i256 %r459, %r464 -%r466 = zext i256 %r465 to i288 -%r468 = getelementptr i32, i32* %r4, i32 8 -%r469 = load i32, i32* %r468 -%r470 = zext i32 %r469 to i288 -%r471 = shl i288 %r470, 256 -%r472 = or i288 %r466, %r471 -%r473 = zext i288 %r472 to i320 -%r475 = getelementptr i32, i32* %r4, i32 9 -%r476 = load i32, i32* %r475 -%r477 = zext i32 %r476 to i320 -%r478 = shl i320 %r477, 288 -%r479 = or i320 %r473, %r478 -%r480 = zext i320 %r479 to i352 -%r482 = getelementptr i32, i32* %r4, i32 10 -%r483 = load i32, i32* %r482 -%r484 = zext i32 %r483 to i352 -%r485 = shl i352 %r484, 320 -%r486 = or i352 %r480, %r485 -%r487 = zext i352 %r486 to i384 -%r489 = getelementptr i32, i32* %r4, i32 11 -%r490 = load i32, i32* %r489 -%r491 = zext i32 %r490 to i384 -%r492 = shl i384 %r491, 352 -%r493 = or i384 %r487, %r492 -%r494 = zext i384 %r493 to i416 -%r496 = getelementptr i32, i32* %r4, i32 12 -%r497 = load i32, i32* %r496 -%r498 = zext i32 %r497 to i416 -%r499 = shl i416 %r498, 384 -%r500 = or i416 %r494, %r499 -%r502 = select i1 %r415, i416 %r500, i416 0 -%r503 = add i416 %r413, %r502 -%r505 = getelementptr i32, i32* %r1, i32 13 -%r506 = trunc i416 %r503 to i32 -%r508 = getelementptr i32, i32* %r505, i32 0 -store i32 %r506, i32* %r508 -%r509 = lshr i416 %r503, 32 -%r510 = trunc i416 %r509 to i32 -%r512 = getelementptr i32, i32* %r505, i32 1 -store i32 %r510, i32* %r512 -%r513 = lshr i416 %r509, 32 -%r514 = trunc i416 %r513 to i32 -%r516 = getelementptr i32, i32* %r505, i32 2 -store i32 %r514, i32* %r516 -%r517 = lshr i416 %r513, 32 -%r518 = trunc i416 %r517 to i32 -%r520 = getelementptr i32, i32* %r505, i32 3 -store i32 %r518, i32* %r520 -%r521 = lshr i416 %r517, 32 -%r522 = trunc i416 %r521 to i32 -%r524 = getelementptr i32, i32* %r505, i32 4 -store i32 %r522, i32* %r524 -%r525 = lshr i416 %r521, 32 -%r526 = trunc i416 %r525 to i32 -%r528 = getelementptr i32, i32* %r505, i32 5 -store i32 %r526, i32* %r528 -%r529 = lshr i416 %r525, 32 -%r530 = trunc i416 %r529 to i32 -%r532 = getelementptr i32, i32* %r505, i32 6 -store i32 %r530, i32* %r532 -%r533 = lshr i416 %r529, 32 -%r534 = trunc i416 %r533 to i32 -%r536 = getelementptr i32, i32* %r505, i32 7 -store i32 %r534, i32* %r536 -%r537 = lshr i416 %r533, 32 -%r538 = trunc i416 %r537 to i32 -%r540 = getelementptr i32, i32* %r505, i32 8 -store i32 %r538, i32* %r540 -%r541 = lshr i416 %r537, 32 -%r542 = trunc i416 %r541 to i32 -%r544 = getelementptr i32, i32* %r505, i32 9 -store i32 %r542, i32* %r544 -%r545 = lshr i416 %r541, 32 -%r546 = trunc i416 %r545 to i32 -%r548 = getelementptr i32, i32* %r505, i32 10 -store i32 %r546, i32* %r548 -%r549 = lshr i416 %r545, 32 -%r550 = trunc i416 %r549 to i32 -%r552 = getelementptr i32, i32* %r505, i32 11 -store i32 %r550, i32* %r552 -%r553 = lshr i416 %r549, 32 -%r554 = trunc i416 %r553 to i32 -%r556 = getelementptr i32, i32* %r505, i32 12 -store i32 %r554, i32* %r556 -ret void -} -define i480 @mulPv448x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) -%r54 = trunc i64 %r53 to i32 -%r55 = call i32 @extractHigh32(i64 %r53) -%r57 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 13) -%r58 = trunc i64 %r57 to i32 -%r59 = call i32 @extractHigh32(i64 %r57) -%r60 = zext i32 %r6 to i64 -%r61 = zext i32 %r10 to i64 -%r62 = shl i64 %r61, 32 -%r63 = or i64 %r60, %r62 -%r64 = zext i64 %r63 to i96 -%r65 = zext i32 %r14 to i96 -%r66 = shl i96 %r65, 64 -%r67 = or i96 %r64, %r66 -%r68 = zext i96 %r67 to i128 -%r69 = zext i32 %r18 to i128 -%r70 = shl i128 %r69, 96 -%r71 = or i128 %r68, %r70 -%r72 = zext i128 %r71 to i160 -%r73 = zext i32 %r22 to i160 -%r74 = shl i160 %r73, 128 -%r75 = or i160 %r72, %r74 -%r76 = zext i160 %r75 to i192 -%r77 = zext i32 %r26 to i192 -%r78 = shl i192 %r77, 160 -%r79 = or i192 %r76, %r78 -%r80 = zext i192 %r79 to i224 -%r81 = zext i32 %r30 to i224 -%r82 = shl i224 %r81, 192 -%r83 = or i224 %r80, %r82 -%r84 = zext i224 %r83 to i256 -%r85 = zext i32 %r34 to i256 -%r86 = shl i256 %r85, 224 -%r87 = or i256 %r84, %r86 -%r88 = zext i256 %r87 to i288 -%r89 = zext i32 %r38 to i288 -%r90 = shl i288 %r89, 256 -%r91 = or i288 %r88, %r90 -%r92 = zext i288 %r91 to i320 -%r93 = zext i32 %r42 to i320 -%r94 = shl i320 %r93, 288 -%r95 = or i320 %r92, %r94 -%r96 = zext i320 %r95 to i352 -%r97 = zext i32 %r46 to i352 -%r98 = shl i352 %r97, 320 -%r99 = or i352 %r96, %r98 -%r100 = zext i352 %r99 to i384 -%r101 = zext i32 %r50 to i384 -%r102 = shl i384 %r101, 352 -%r103 = or i384 %r100, %r102 -%r104 = zext i384 %r103 to i416 -%r105 = zext i32 %r54 to i416 -%r106 = shl i416 %r105, 384 -%r107 = or i416 %r104, %r106 -%r108 = zext i416 %r107 to i448 -%r109 = zext i32 %r58 to i448 -%r110 = shl i448 %r109, 416 -%r111 = or i448 %r108, %r110 -%r112 = zext i32 %r7 to i64 -%r113 = zext i32 %r11 to i64 -%r114 = shl i64 %r113, 32 -%r115 = or i64 %r112, %r114 -%r116 = zext i64 %r115 to i96 -%r117 = zext i32 %r15 to i96 -%r118 = shl i96 %r117, 64 -%r119 = or i96 %r116, %r118 -%r120 = zext i96 %r119 to i128 -%r121 = zext i32 %r19 to i128 -%r122 = shl i128 %r121, 96 -%r123 = or i128 %r120, %r122 -%r124 = zext i128 %r123 to i160 -%r125 = zext i32 %r23 to i160 -%r126 = shl i160 %r125, 128 -%r127 = or i160 %r124, %r126 -%r128 = zext i160 %r127 to i192 -%r129 = zext i32 %r27 to i192 -%r130 = shl i192 %r129, 160 -%r131 = or i192 %r128, %r130 -%r132 = zext i192 %r131 to i224 -%r133 = zext i32 %r31 to i224 -%r134 = shl i224 %r133, 192 -%r135 = or i224 %r132, %r134 -%r136 = zext i224 %r135 to i256 -%r137 = zext i32 %r35 to i256 -%r138 = shl i256 %r137, 224 -%r139 = or i256 %r136, %r138 -%r140 = zext i256 %r139 to i288 -%r141 = zext i32 %r39 to i288 -%r142 = shl i288 %r141, 256 -%r143 = or i288 %r140, %r142 -%r144 = zext i288 %r143 to i320 -%r145 = zext i32 %r43 to i320 -%r146 = shl i320 %r145, 288 -%r147 = or i320 %r144, %r146 -%r148 = zext i320 %r147 to i352 -%r149 = zext i32 %r47 to i352 -%r150 = shl i352 %r149, 320 -%r151 = or i352 %r148, %r150 -%r152 = zext i352 %r151 to i384 -%r153 = zext i32 %r51 to i384 -%r154 = shl i384 %r153, 352 -%r155 = or i384 %r152, %r154 -%r156 = zext i384 %r155 to i416 -%r157 = zext i32 %r55 to i416 -%r158 = shl i416 %r157, 384 -%r159 = or i416 %r156, %r158 -%r160 = zext i416 %r159 to i448 -%r161 = zext i32 %r59 to i448 -%r162 = shl i448 %r161, 416 -%r163 = or i448 %r160, %r162 -%r164 = zext i448 %r111 to i480 -%r165 = zext i448 %r163 to i480 -%r166 = shl i480 %r165, 32 -%r167 = add i480 %r164, %r166 -ret i480 %r167 -} -define void @mcl_fp_mulUnitPre14L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i480 @mulPv448x32(i32* %r2, i32 %r3) -%r5 = trunc i480 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i480 %r4, 32 -%r9 = trunc i480 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i480 %r8, 32 -%r13 = trunc i480 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i480 %r12, 32 -%r17 = trunc i480 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i480 %r16, 32 -%r21 = trunc i480 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i480 %r20, 32 -%r25 = trunc i480 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i480 %r24, 32 -%r29 = trunc i480 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i480 %r28, 32 -%r33 = trunc i480 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i480 %r32, 32 -%r37 = trunc i480 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i480 %r36, 32 -%r41 = trunc i480 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i480 %r40, 32 -%r45 = trunc i480 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i480 %r44, 32 -%r49 = trunc i480 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i480 %r48, 32 -%r53 = trunc i480 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -%r56 = lshr i480 %r52, 32 -%r57 = trunc i480 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 13 -store i32 %r57, i32* %r59 -%r60 = lshr i480 %r56, 32 -%r61 = trunc i480 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 14 -store i32 %r61, i32* %r63 -ret void -} -define void @mcl_fpDbl_mulPre14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r2, i32 7 -%r7 = getelementptr i32, i32* %r3, i32 7 -%r9 = getelementptr i32, i32* %r1, i32 14 -call void @mcl_fpDbl_mulPre7L(i32* %r1, i32* %r2, i32* %r3) -call void @mcl_fpDbl_mulPre7L(i32* %r9, i32* %r5, i32* %r7) -%r10 = load i32, i32* %r5 -%r11 = zext i32 %r10 to i64 -%r13 = getelementptr i32, i32* %r5, i32 1 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i64 -%r16 = shl i64 %r15, 32 -%r17 = or i64 %r11, %r16 -%r18 = zext i64 %r17 to i96 -%r20 = getelementptr i32, i32* %r5, i32 2 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i96 -%r23 = shl i96 %r22, 64 -%r24 = or i96 %r18, %r23 -%r25 = zext i96 %r24 to i128 -%r27 = getelementptr i32, i32* %r5, i32 3 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r25, %r30 -%r32 = zext i128 %r31 to i160 -%r34 = getelementptr i32, i32* %r5, i32 4 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i160 -%r37 = shl i160 %r36, 128 -%r38 = or i160 %r32, %r37 -%r39 = zext i160 %r38 to i192 -%r41 = getelementptr i32, i32* %r5, i32 5 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i192 -%r44 = shl i192 %r43, 160 -%r45 = or i192 %r39, %r44 -%r46 = zext i192 %r45 to i224 -%r48 = getelementptr i32, i32* %r5, i32 6 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i224 -%r51 = shl i224 %r50, 192 -%r52 = or i224 %r46, %r51 -%r53 = zext i224 %r52 to i256 -%r54 = load i32, i32* %r2 -%r55 = zext i32 %r54 to i64 -%r57 = getelementptr i32, i32* %r2, i32 1 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i64 -%r60 = shl i64 %r59, 32 -%r61 = or i64 %r55, %r60 -%r62 = zext i64 %r61 to i96 -%r64 = getelementptr i32, i32* %r2, i32 2 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i96 -%r67 = shl i96 %r66, 64 -%r68 = or i96 %r62, %r67 -%r69 = zext i96 %r68 to i128 -%r71 = getelementptr i32, i32* %r2, i32 3 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i128 -%r74 = shl i128 %r73, 96 -%r75 = or i128 %r69, %r74 -%r76 = zext i128 %r75 to i160 -%r78 = getelementptr i32, i32* %r2, i32 4 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i160 -%r81 = shl i160 %r80, 128 -%r82 = or i160 %r76, %r81 -%r83 = zext i160 %r82 to i192 -%r85 = getelementptr i32, i32* %r2, i32 5 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i192 -%r88 = shl i192 %r87, 160 -%r89 = or i192 %r83, %r88 -%r90 = zext i192 %r89 to i224 -%r92 = getelementptr i32, i32* %r2, i32 6 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i224 -%r95 = shl i224 %r94, 192 -%r96 = or i224 %r90, %r95 -%r97 = zext i224 %r96 to i256 -%r98 = load i32, i32* %r7 -%r99 = zext i32 %r98 to i64 -%r101 = getelementptr i32, i32* %r7, i32 1 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i64 -%r104 = shl i64 %r103, 32 -%r105 = or i64 %r99, %r104 -%r106 = zext i64 %r105 to i96 -%r108 = getelementptr i32, i32* %r7, i32 2 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i96 -%r111 = shl i96 %r110, 64 -%r112 = or i96 %r106, %r111 -%r113 = zext i96 %r112 to i128 -%r115 = getelementptr i32, i32* %r7, i32 3 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i128 -%r118 = shl i128 %r117, 96 -%r119 = or i128 %r113, %r118 -%r120 = zext i128 %r119 to i160 -%r122 = getelementptr i32, i32* %r7, i32 4 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i160 -%r125 = shl i160 %r124, 128 -%r126 = or i160 %r120, %r125 -%r127 = zext i160 %r126 to i192 -%r129 = getelementptr i32, i32* %r7, i32 5 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i192 -%r132 = shl i192 %r131, 160 -%r133 = or i192 %r127, %r132 -%r134 = zext i192 %r133 to i224 -%r136 = getelementptr i32, i32* %r7, i32 6 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i224 -%r139 = shl i224 %r138, 192 -%r140 = or i224 %r134, %r139 -%r141 = zext i224 %r140 to i256 -%r142 = load i32, i32* %r3 -%r143 = zext i32 %r142 to i64 -%r145 = getelementptr i32, i32* %r3, i32 1 -%r146 = load i32, i32* %r145 -%r147 = zext i32 %r146 to i64 -%r148 = shl i64 %r147, 32 -%r149 = or i64 %r143, %r148 -%r150 = zext i64 %r149 to i96 -%r152 = getelementptr i32, i32* %r3, i32 2 -%r153 = load i32, i32* %r152 -%r154 = zext i32 %r153 to i96 -%r155 = shl i96 %r154, 64 -%r156 = or i96 %r150, %r155 -%r157 = zext i96 %r156 to i128 -%r159 = getelementptr i32, i32* %r3, i32 3 -%r160 = load i32, i32* %r159 -%r161 = zext i32 %r160 to i128 -%r162 = shl i128 %r161, 96 -%r163 = or i128 %r157, %r162 -%r164 = zext i128 %r163 to i160 -%r166 = getelementptr i32, i32* %r3, i32 4 -%r167 = load i32, i32* %r166 -%r168 = zext i32 %r167 to i160 -%r169 = shl i160 %r168, 128 -%r170 = or i160 %r164, %r169 -%r171 = zext i160 %r170 to i192 -%r173 = getelementptr i32, i32* %r3, i32 5 -%r174 = load i32, i32* %r173 -%r175 = zext i32 %r174 to i192 -%r176 = shl i192 %r175, 160 -%r177 = or i192 %r171, %r176 -%r178 = zext i192 %r177 to i224 -%r180 = getelementptr i32, i32* %r3, i32 6 -%r181 = load i32, i32* %r180 -%r182 = zext i32 %r181 to i224 -%r183 = shl i224 %r182, 192 -%r184 = or i224 %r178, %r183 -%r185 = zext i224 %r184 to i256 -%r186 = add i256 %r53, %r97 -%r187 = add i256 %r141, %r185 -%r189 = alloca i32, i32 14 -%r190 = trunc i256 %r186 to i224 -%r191 = trunc i256 %r187 to i224 -%r192 = lshr i256 %r186, 224 -%r193 = trunc i256 %r192 to i1 -%r194 = lshr i256 %r187, 224 -%r195 = trunc i256 %r194 to i1 -%r196 = and i1 %r193, %r195 -%r198 = select i1 %r193, i224 %r191, i224 0 -%r200 = select i1 %r195, i224 %r190, i224 0 -%r202 = alloca i32, i32 7 -%r204 = alloca i32, i32 7 -%r205 = trunc i224 %r190 to i32 -%r207 = getelementptr i32, i32* %r202, i32 0 -store i32 %r205, i32* %r207 -%r208 = lshr i224 %r190, 32 -%r209 = trunc i224 %r208 to i32 -%r211 = getelementptr i32, i32* %r202, i32 1 -store i32 %r209, i32* %r211 -%r212 = lshr i224 %r208, 32 -%r213 = trunc i224 %r212 to i32 -%r215 = getelementptr i32, i32* %r202, i32 2 -store i32 %r213, i32* %r215 -%r216 = lshr i224 %r212, 32 -%r217 = trunc i224 %r216 to i32 -%r219 = getelementptr i32, i32* %r202, i32 3 -store i32 %r217, i32* %r219 -%r220 = lshr i224 %r216, 32 -%r221 = trunc i224 %r220 to i32 -%r223 = getelementptr i32, i32* %r202, i32 4 -store i32 %r221, i32* %r223 -%r224 = lshr i224 %r220, 32 -%r225 = trunc i224 %r224 to i32 -%r227 = getelementptr i32, i32* %r202, i32 5 -store i32 %r225, i32* %r227 -%r228 = lshr i224 %r224, 32 -%r229 = trunc i224 %r228 to i32 -%r231 = getelementptr i32, i32* %r202, i32 6 -store i32 %r229, i32* %r231 -%r232 = trunc i224 %r191 to i32 -%r234 = getelementptr i32, i32* %r204, i32 0 -store i32 %r232, i32* %r234 -%r235 = lshr i224 %r191, 32 -%r236 = trunc i224 %r235 to i32 -%r238 = getelementptr i32, i32* %r204, i32 1 -store i32 %r236, i32* %r238 -%r239 = lshr i224 %r235, 32 -%r240 = trunc i224 %r239 to i32 -%r242 = getelementptr i32, i32* %r204, i32 2 -store i32 %r240, i32* %r242 -%r243 = lshr i224 %r239, 32 -%r244 = trunc i224 %r243 to i32 -%r246 = getelementptr i32, i32* %r204, i32 3 -store i32 %r244, i32* %r246 -%r247 = lshr i224 %r243, 32 -%r248 = trunc i224 %r247 to i32 -%r250 = getelementptr i32, i32* %r204, i32 4 -store i32 %r248, i32* %r250 -%r251 = lshr i224 %r247, 32 -%r252 = trunc i224 %r251 to i32 -%r254 = getelementptr i32, i32* %r204, i32 5 -store i32 %r252, i32* %r254 -%r255 = lshr i224 %r251, 32 -%r256 = trunc i224 %r255 to i32 -%r258 = getelementptr i32, i32* %r204, i32 6 -store i32 %r256, i32* %r258 -call void @mcl_fpDbl_mulPre7L(i32* %r189, i32* %r202, i32* %r204) -%r259 = load i32, i32* %r189 -%r260 = zext i32 %r259 to i64 -%r262 = getelementptr i32, i32* %r189, i32 1 -%r263 = load i32, i32* %r262 -%r264 = zext i32 %r263 to i64 -%r265 = shl i64 %r264, 32 -%r266 = or i64 %r260, %r265 -%r267 = zext i64 %r266 to i96 -%r269 = getelementptr i32, i32* %r189, i32 2 -%r270 = load i32, i32* %r269 -%r271 = zext i32 %r270 to i96 -%r272 = shl i96 %r271, 64 -%r273 = or i96 %r267, %r272 -%r274 = zext i96 %r273 to i128 -%r276 = getelementptr i32, i32* %r189, i32 3 -%r277 = load i32, i32* %r276 -%r278 = zext i32 %r277 to i128 -%r279 = shl i128 %r278, 96 -%r280 = or i128 %r274, %r279 -%r281 = zext i128 %r280 to i160 -%r283 = getelementptr i32, i32* %r189, i32 4 -%r284 = load i32, i32* %r283 -%r285 = zext i32 %r284 to i160 -%r286 = shl i160 %r285, 128 -%r287 = or i160 %r281, %r286 -%r288 = zext i160 %r287 to i192 -%r290 = getelementptr i32, i32* %r189, i32 5 -%r291 = load i32, i32* %r290 -%r292 = zext i32 %r291 to i192 -%r293 = shl i192 %r292, 160 -%r294 = or i192 %r288, %r293 -%r295 = zext i192 %r294 to i224 -%r297 = getelementptr i32, i32* %r189, i32 6 -%r298 = load i32, i32* %r297 -%r299 = zext i32 %r298 to i224 -%r300 = shl i224 %r299, 192 -%r301 = or i224 %r295, %r300 -%r302 = zext i224 %r301 to i256 -%r304 = getelementptr i32, i32* %r189, i32 7 -%r305 = load i32, i32* %r304 -%r306 = zext i32 %r305 to i256 -%r307 = shl i256 %r306, 224 -%r308 = or i256 %r302, %r307 -%r309 = zext i256 %r308 to i288 -%r311 = getelementptr i32, i32* %r189, i32 8 -%r312 = load i32, i32* %r311 -%r313 = zext i32 %r312 to i288 -%r314 = shl i288 %r313, 256 -%r315 = or i288 %r309, %r314 -%r316 = zext i288 %r315 to i320 -%r318 = getelementptr i32, i32* %r189, i32 9 -%r319 = load i32, i32* %r318 -%r320 = zext i32 %r319 to i320 -%r321 = shl i320 %r320, 288 -%r322 = or i320 %r316, %r321 -%r323 = zext i320 %r322 to i352 -%r325 = getelementptr i32, i32* %r189, i32 10 -%r326 = load i32, i32* %r325 -%r327 = zext i32 %r326 to i352 -%r328 = shl i352 %r327, 320 -%r329 = or i352 %r323, %r328 -%r330 = zext i352 %r329 to i384 -%r332 = getelementptr i32, i32* %r189, i32 11 -%r333 = load i32, i32* %r332 -%r334 = zext i32 %r333 to i384 -%r335 = shl i384 %r334, 352 -%r336 = or i384 %r330, %r335 -%r337 = zext i384 %r336 to i416 -%r339 = getelementptr i32, i32* %r189, i32 12 -%r340 = load i32, i32* %r339 -%r341 = zext i32 %r340 to i416 -%r342 = shl i416 %r341, 384 -%r343 = or i416 %r337, %r342 -%r344 = zext i416 %r343 to i448 -%r346 = getelementptr i32, i32* %r189, i32 13 -%r347 = load i32, i32* %r346 -%r348 = zext i32 %r347 to i448 -%r349 = shl i448 %r348, 416 -%r350 = or i448 %r344, %r349 -%r351 = zext i448 %r350 to i480 -%r352 = zext i1 %r196 to i480 -%r353 = shl i480 %r352, 448 -%r354 = or i480 %r351, %r353 -%r355 = zext i224 %r198 to i480 -%r356 = zext i224 %r200 to i480 -%r357 = shl i480 %r355, 224 -%r358 = shl i480 %r356, 224 -%r359 = add i480 %r354, %r357 -%r360 = add i480 %r359, %r358 -%r361 = load i32, i32* %r1 -%r362 = zext i32 %r361 to i64 -%r364 = getelementptr i32, i32* %r1, i32 1 -%r365 = load i32, i32* %r364 -%r366 = zext i32 %r365 to i64 -%r367 = shl i64 %r366, 32 -%r368 = or i64 %r362, %r367 -%r369 = zext i64 %r368 to i96 -%r371 = getelementptr i32, i32* %r1, i32 2 -%r372 = load i32, i32* %r371 -%r373 = zext i32 %r372 to i96 -%r374 = shl i96 %r373, 64 -%r375 = or i96 %r369, %r374 -%r376 = zext i96 %r375 to i128 -%r378 = getelementptr i32, i32* %r1, i32 3 -%r379 = load i32, i32* %r378 -%r380 = zext i32 %r379 to i128 -%r381 = shl i128 %r380, 96 -%r382 = or i128 %r376, %r381 -%r383 = zext i128 %r382 to i160 -%r385 = getelementptr i32, i32* %r1, i32 4 -%r386 = load i32, i32* %r385 -%r387 = zext i32 %r386 to i160 -%r388 = shl i160 %r387, 128 -%r389 = or i160 %r383, %r388 -%r390 = zext i160 %r389 to i192 -%r392 = getelementptr i32, i32* %r1, i32 5 -%r393 = load i32, i32* %r392 -%r394 = zext i32 %r393 to i192 -%r395 = shl i192 %r394, 160 -%r396 = or i192 %r390, %r395 -%r397 = zext i192 %r396 to i224 -%r399 = getelementptr i32, i32* %r1, i32 6 -%r400 = load i32, i32* %r399 -%r401 = zext i32 %r400 to i224 -%r402 = shl i224 %r401, 192 -%r403 = or i224 %r397, %r402 -%r404 = zext i224 %r403 to i256 -%r406 = getelementptr i32, i32* %r1, i32 7 -%r407 = load i32, i32* %r406 -%r408 = zext i32 %r407 to i256 -%r409 = shl i256 %r408, 224 -%r410 = or i256 %r404, %r409 -%r411 = zext i256 %r410 to i288 -%r413 = getelementptr i32, i32* %r1, i32 8 -%r414 = load i32, i32* %r413 -%r415 = zext i32 %r414 to i288 -%r416 = shl i288 %r415, 256 -%r417 = or i288 %r411, %r416 -%r418 = zext i288 %r417 to i320 -%r420 = getelementptr i32, i32* %r1, i32 9 -%r421 = load i32, i32* %r420 -%r422 = zext i32 %r421 to i320 -%r423 = shl i320 %r422, 288 -%r424 = or i320 %r418, %r423 -%r425 = zext i320 %r424 to i352 -%r427 = getelementptr i32, i32* %r1, i32 10 -%r428 = load i32, i32* %r427 -%r429 = zext i32 %r428 to i352 -%r430 = shl i352 %r429, 320 -%r431 = or i352 %r425, %r430 -%r432 = zext i352 %r431 to i384 -%r434 = getelementptr i32, i32* %r1, i32 11 -%r435 = load i32, i32* %r434 -%r436 = zext i32 %r435 to i384 -%r437 = shl i384 %r436, 352 -%r438 = or i384 %r432, %r437 -%r439 = zext i384 %r438 to i416 -%r441 = getelementptr i32, i32* %r1, i32 12 -%r442 = load i32, i32* %r441 -%r443 = zext i32 %r442 to i416 -%r444 = shl i416 %r443, 384 -%r445 = or i416 %r439, %r444 -%r446 = zext i416 %r445 to i448 -%r448 = getelementptr i32, i32* %r1, i32 13 -%r449 = load i32, i32* %r448 -%r450 = zext i32 %r449 to i448 -%r451 = shl i448 %r450, 416 -%r452 = or i448 %r446, %r451 -%r453 = zext i448 %r452 to i480 -%r454 = sub i480 %r360, %r453 -%r456 = getelementptr i32, i32* %r1, i32 14 -%r457 = load i32, i32* %r456 -%r458 = zext i32 %r457 to i64 -%r460 = getelementptr i32, i32* %r456, i32 1 -%r461 = load i32, i32* %r460 -%r462 = zext i32 %r461 to i64 -%r463 = shl i64 %r462, 32 -%r464 = or i64 %r458, %r463 -%r465 = zext i64 %r464 to i96 -%r467 = getelementptr i32, i32* %r456, i32 2 -%r468 = load i32, i32* %r467 -%r469 = zext i32 %r468 to i96 -%r470 = shl i96 %r469, 64 -%r471 = or i96 %r465, %r470 -%r472 = zext i96 %r471 to i128 -%r474 = getelementptr i32, i32* %r456, i32 3 -%r475 = load i32, i32* %r474 -%r476 = zext i32 %r475 to i128 -%r477 = shl i128 %r476, 96 -%r478 = or i128 %r472, %r477 -%r479 = zext i128 %r478 to i160 -%r481 = getelementptr i32, i32* %r456, i32 4 -%r482 = load i32, i32* %r481 -%r483 = zext i32 %r482 to i160 -%r484 = shl i160 %r483, 128 -%r485 = or i160 %r479, %r484 -%r486 = zext i160 %r485 to i192 -%r488 = getelementptr i32, i32* %r456, i32 5 -%r489 = load i32, i32* %r488 -%r490 = zext i32 %r489 to i192 -%r491 = shl i192 %r490, 160 -%r492 = or i192 %r486, %r491 -%r493 = zext i192 %r492 to i224 -%r495 = getelementptr i32, i32* %r456, i32 6 -%r496 = load i32, i32* %r495 -%r497 = zext i32 %r496 to i224 -%r498 = shl i224 %r497, 192 -%r499 = or i224 %r493, %r498 -%r500 = zext i224 %r499 to i256 -%r502 = getelementptr i32, i32* %r456, i32 7 -%r503 = load i32, i32* %r502 -%r504 = zext i32 %r503 to i256 -%r505 = shl i256 %r504, 224 -%r506 = or i256 %r500, %r505 -%r507 = zext i256 %r506 to i288 -%r509 = getelementptr i32, i32* %r456, i32 8 -%r510 = load i32, i32* %r509 -%r511 = zext i32 %r510 to i288 -%r512 = shl i288 %r511, 256 -%r513 = or i288 %r507, %r512 -%r514 = zext i288 %r513 to i320 -%r516 = getelementptr i32, i32* %r456, i32 9 -%r517 = load i32, i32* %r516 -%r518 = zext i32 %r517 to i320 -%r519 = shl i320 %r518, 288 -%r520 = or i320 %r514, %r519 -%r521 = zext i320 %r520 to i352 -%r523 = getelementptr i32, i32* %r456, i32 10 -%r524 = load i32, i32* %r523 -%r525 = zext i32 %r524 to i352 -%r526 = shl i352 %r525, 320 -%r527 = or i352 %r521, %r526 -%r528 = zext i352 %r527 to i384 -%r530 = getelementptr i32, i32* %r456, i32 11 -%r531 = load i32, i32* %r530 -%r532 = zext i32 %r531 to i384 -%r533 = shl i384 %r532, 352 -%r534 = or i384 %r528, %r533 -%r535 = zext i384 %r534 to i416 -%r537 = getelementptr i32, i32* %r456, i32 12 -%r538 = load i32, i32* %r537 -%r539 = zext i32 %r538 to i416 -%r540 = shl i416 %r539, 384 -%r541 = or i416 %r535, %r540 -%r542 = zext i416 %r541 to i448 -%r544 = getelementptr i32, i32* %r456, i32 13 -%r545 = load i32, i32* %r544 -%r546 = zext i32 %r545 to i448 -%r547 = shl i448 %r546, 416 -%r548 = or i448 %r542, %r547 -%r549 = zext i448 %r548 to i480 -%r550 = sub i480 %r454, %r549 -%r551 = zext i480 %r550 to i672 -%r553 = getelementptr i32, i32* %r1, i32 7 -%r554 = load i32, i32* %r553 -%r555 = zext i32 %r554 to i64 -%r557 = getelementptr i32, i32* %r553, i32 1 -%r558 = load i32, i32* %r557 -%r559 = zext i32 %r558 to i64 -%r560 = shl i64 %r559, 32 -%r561 = or i64 %r555, %r560 -%r562 = zext i64 %r561 to i96 -%r564 = getelementptr i32, i32* %r553, i32 2 -%r565 = load i32, i32* %r564 -%r566 = zext i32 %r565 to i96 -%r567 = shl i96 %r566, 64 -%r568 = or i96 %r562, %r567 -%r569 = zext i96 %r568 to i128 -%r571 = getelementptr i32, i32* %r553, i32 3 -%r572 = load i32, i32* %r571 -%r573 = zext i32 %r572 to i128 -%r574 = shl i128 %r573, 96 -%r575 = or i128 %r569, %r574 -%r576 = zext i128 %r575 to i160 -%r578 = getelementptr i32, i32* %r553, i32 4 -%r579 = load i32, i32* %r578 -%r580 = zext i32 %r579 to i160 -%r581 = shl i160 %r580, 128 -%r582 = or i160 %r576, %r581 -%r583 = zext i160 %r582 to i192 -%r585 = getelementptr i32, i32* %r553, i32 5 -%r586 = load i32, i32* %r585 -%r587 = zext i32 %r586 to i192 -%r588 = shl i192 %r587, 160 -%r589 = or i192 %r583, %r588 -%r590 = zext i192 %r589 to i224 -%r592 = getelementptr i32, i32* %r553, i32 6 -%r593 = load i32, i32* %r592 -%r594 = zext i32 %r593 to i224 -%r595 = shl i224 %r594, 192 -%r596 = or i224 %r590, %r595 -%r597 = zext i224 %r596 to i256 -%r599 = getelementptr i32, i32* %r553, i32 7 -%r600 = load i32, i32* %r599 -%r601 = zext i32 %r600 to i256 -%r602 = shl i256 %r601, 224 -%r603 = or i256 %r597, %r602 -%r604 = zext i256 %r603 to i288 -%r606 = getelementptr i32, i32* %r553, i32 8 -%r607 = load i32, i32* %r606 -%r608 = zext i32 %r607 to i288 -%r609 = shl i288 %r608, 256 -%r610 = or i288 %r604, %r609 -%r611 = zext i288 %r610 to i320 -%r613 = getelementptr i32, i32* %r553, i32 9 -%r614 = load i32, i32* %r613 -%r615 = zext i32 %r614 to i320 -%r616 = shl i320 %r615, 288 -%r617 = or i320 %r611, %r616 -%r618 = zext i320 %r617 to i352 -%r620 = getelementptr i32, i32* %r553, i32 10 -%r621 = load i32, i32* %r620 -%r622 = zext i32 %r621 to i352 -%r623 = shl i352 %r622, 320 -%r624 = or i352 %r618, %r623 -%r625 = zext i352 %r624 to i384 -%r627 = getelementptr i32, i32* %r553, i32 11 -%r628 = load i32, i32* %r627 -%r629 = zext i32 %r628 to i384 -%r630 = shl i384 %r629, 352 -%r631 = or i384 %r625, %r630 -%r632 = zext i384 %r631 to i416 -%r634 = getelementptr i32, i32* %r553, i32 12 -%r635 = load i32, i32* %r634 -%r636 = zext i32 %r635 to i416 -%r637 = shl i416 %r636, 384 -%r638 = or i416 %r632, %r637 -%r639 = zext i416 %r638 to i448 -%r641 = getelementptr i32, i32* %r553, i32 13 -%r642 = load i32, i32* %r641 -%r643 = zext i32 %r642 to i448 -%r644 = shl i448 %r643, 416 -%r645 = or i448 %r639, %r644 -%r646 = zext i448 %r645 to i480 -%r648 = getelementptr i32, i32* %r553, i32 14 -%r649 = load i32, i32* %r648 -%r650 = zext i32 %r649 to i480 -%r651 = shl i480 %r650, 448 -%r652 = or i480 %r646, %r651 -%r653 = zext i480 %r652 to i512 -%r655 = getelementptr i32, i32* %r553, i32 15 -%r656 = load i32, i32* %r655 -%r657 = zext i32 %r656 to i512 -%r658 = shl i512 %r657, 480 -%r659 = or i512 %r653, %r658 -%r660 = zext i512 %r659 to i544 -%r662 = getelementptr i32, i32* %r553, i32 16 -%r663 = load i32, i32* %r662 -%r664 = zext i32 %r663 to i544 -%r665 = shl i544 %r664, 512 -%r666 = or i544 %r660, %r665 -%r667 = zext i544 %r666 to i576 -%r669 = getelementptr i32, i32* %r553, i32 17 -%r670 = load i32, i32* %r669 -%r671 = zext i32 %r670 to i576 -%r672 = shl i576 %r671, 544 -%r673 = or i576 %r667, %r672 -%r674 = zext i576 %r673 to i608 -%r676 = getelementptr i32, i32* %r553, i32 18 -%r677 = load i32, i32* %r676 -%r678 = zext i32 %r677 to i608 -%r679 = shl i608 %r678, 576 -%r680 = or i608 %r674, %r679 -%r681 = zext i608 %r680 to i640 -%r683 = getelementptr i32, i32* %r553, i32 19 -%r684 = load i32, i32* %r683 -%r685 = zext i32 %r684 to i640 -%r686 = shl i640 %r685, 608 -%r687 = or i640 %r681, %r686 -%r688 = zext i640 %r687 to i672 -%r690 = getelementptr i32, i32* %r553, i32 20 -%r691 = load i32, i32* %r690 -%r692 = zext i32 %r691 to i672 -%r693 = shl i672 %r692, 640 -%r694 = or i672 %r688, %r693 -%r695 = add i672 %r551, %r694 -%r697 = getelementptr i32, i32* %r1, i32 7 -%r698 = trunc i672 %r695 to i32 -%r700 = getelementptr i32, i32* %r697, i32 0 -store i32 %r698, i32* %r700 -%r701 = lshr i672 %r695, 32 -%r702 = trunc i672 %r701 to i32 -%r704 = getelementptr i32, i32* %r697, i32 1 -store i32 %r702, i32* %r704 -%r705 = lshr i672 %r701, 32 -%r706 = trunc i672 %r705 to i32 -%r708 = getelementptr i32, i32* %r697, i32 2 -store i32 %r706, i32* %r708 -%r709 = lshr i672 %r705, 32 -%r710 = trunc i672 %r709 to i32 -%r712 = getelementptr i32, i32* %r697, i32 3 -store i32 %r710, i32* %r712 -%r713 = lshr i672 %r709, 32 -%r714 = trunc i672 %r713 to i32 -%r716 = getelementptr i32, i32* %r697, i32 4 -store i32 %r714, i32* %r716 -%r717 = lshr i672 %r713, 32 -%r718 = trunc i672 %r717 to i32 -%r720 = getelementptr i32, i32* %r697, i32 5 -store i32 %r718, i32* %r720 -%r721 = lshr i672 %r717, 32 -%r722 = trunc i672 %r721 to i32 -%r724 = getelementptr i32, i32* %r697, i32 6 -store i32 %r722, i32* %r724 -%r725 = lshr i672 %r721, 32 -%r726 = trunc i672 %r725 to i32 -%r728 = getelementptr i32, i32* %r697, i32 7 -store i32 %r726, i32* %r728 -%r729 = lshr i672 %r725, 32 -%r730 = trunc i672 %r729 to i32 -%r732 = getelementptr i32, i32* %r697, i32 8 -store i32 %r730, i32* %r732 -%r733 = lshr i672 %r729, 32 -%r734 = trunc i672 %r733 to i32 -%r736 = getelementptr i32, i32* %r697, i32 9 -store i32 %r734, i32* %r736 -%r737 = lshr i672 %r733, 32 -%r738 = trunc i672 %r737 to i32 -%r740 = getelementptr i32, i32* %r697, i32 10 -store i32 %r738, i32* %r740 -%r741 = lshr i672 %r737, 32 -%r742 = trunc i672 %r741 to i32 -%r744 = getelementptr i32, i32* %r697, i32 11 -store i32 %r742, i32* %r744 -%r745 = lshr i672 %r741, 32 -%r746 = trunc i672 %r745 to i32 -%r748 = getelementptr i32, i32* %r697, i32 12 -store i32 %r746, i32* %r748 -%r749 = lshr i672 %r745, 32 -%r750 = trunc i672 %r749 to i32 -%r752 = getelementptr i32, i32* %r697, i32 13 -store i32 %r750, i32* %r752 -%r753 = lshr i672 %r749, 32 -%r754 = trunc i672 %r753 to i32 -%r756 = getelementptr i32, i32* %r697, i32 14 -store i32 %r754, i32* %r756 -%r757 = lshr i672 %r753, 32 -%r758 = trunc i672 %r757 to i32 -%r760 = getelementptr i32, i32* %r697, i32 15 -store i32 %r758, i32* %r760 -%r761 = lshr i672 %r757, 32 -%r762 = trunc i672 %r761 to i32 -%r764 = getelementptr i32, i32* %r697, i32 16 -store i32 %r762, i32* %r764 -%r765 = lshr i672 %r761, 32 -%r766 = trunc i672 %r765 to i32 -%r768 = getelementptr i32, i32* %r697, i32 17 -store i32 %r766, i32* %r768 -%r769 = lshr i672 %r765, 32 -%r770 = trunc i672 %r769 to i32 -%r772 = getelementptr i32, i32* %r697, i32 18 -store i32 %r770, i32* %r772 -%r773 = lshr i672 %r769, 32 -%r774 = trunc i672 %r773 to i32 -%r776 = getelementptr i32, i32* %r697, i32 19 -store i32 %r774, i32* %r776 -%r777 = lshr i672 %r773, 32 -%r778 = trunc i672 %r777 to i32 -%r780 = getelementptr i32, i32* %r697, i32 20 -store i32 %r778, i32* %r780 -ret void -} -define void @mcl_fpDbl_sqrPre14L(i32* noalias %r1, i32* noalias %r2) -{ -%r4 = getelementptr i32, i32* %r2, i32 7 -%r6 = getelementptr i32, i32* %r2, i32 7 -%r8 = getelementptr i32, i32* %r1, i32 14 -call void @mcl_fpDbl_mulPre7L(i32* %r1, i32* %r2, i32* %r2) -call void @mcl_fpDbl_mulPre7L(i32* %r8, i32* %r4, i32* %r6) -%r9 = load i32, i32* %r4 -%r10 = zext i32 %r9 to i64 -%r12 = getelementptr i32, i32* %r4, i32 1 -%r13 = load i32, i32* %r12 -%r14 = zext i32 %r13 to i64 -%r15 = shl i64 %r14, 32 -%r16 = or i64 %r10, %r15 -%r17 = zext i64 %r16 to i96 -%r19 = getelementptr i32, i32* %r4, i32 2 -%r20 = load i32, i32* %r19 -%r21 = zext i32 %r20 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r17, %r22 -%r24 = zext i96 %r23 to i128 -%r26 = getelementptr i32, i32* %r4, i32 3 -%r27 = load i32, i32* %r26 -%r28 = zext i32 %r27 to i128 -%r29 = shl i128 %r28, 96 -%r30 = or i128 %r24, %r29 -%r31 = zext i128 %r30 to i160 -%r33 = getelementptr i32, i32* %r4, i32 4 -%r34 = load i32, i32* %r33 -%r35 = zext i32 %r34 to i160 -%r36 = shl i160 %r35, 128 -%r37 = or i160 %r31, %r36 -%r38 = zext i160 %r37 to i192 -%r40 = getelementptr i32, i32* %r4, i32 5 -%r41 = load i32, i32* %r40 -%r42 = zext i32 %r41 to i192 -%r43 = shl i192 %r42, 160 -%r44 = or i192 %r38, %r43 -%r45 = zext i192 %r44 to i224 -%r47 = getelementptr i32, i32* %r4, i32 6 -%r48 = load i32, i32* %r47 -%r49 = zext i32 %r48 to i224 -%r50 = shl i224 %r49, 192 -%r51 = or i224 %r45, %r50 -%r52 = zext i224 %r51 to i256 -%r53 = load i32, i32* %r2 -%r54 = zext i32 %r53 to i64 -%r56 = getelementptr i32, i32* %r2, i32 1 -%r57 = load i32, i32* %r56 -%r58 = zext i32 %r57 to i64 -%r59 = shl i64 %r58, 32 -%r60 = or i64 %r54, %r59 -%r61 = zext i64 %r60 to i96 -%r63 = getelementptr i32, i32* %r2, i32 2 -%r64 = load i32, i32* %r63 -%r65 = zext i32 %r64 to i96 -%r66 = shl i96 %r65, 64 -%r67 = or i96 %r61, %r66 -%r68 = zext i96 %r67 to i128 -%r70 = getelementptr i32, i32* %r2, i32 3 -%r71 = load i32, i32* %r70 -%r72 = zext i32 %r71 to i128 -%r73 = shl i128 %r72, 96 -%r74 = or i128 %r68, %r73 -%r75 = zext i128 %r74 to i160 -%r77 = getelementptr i32, i32* %r2, i32 4 -%r78 = load i32, i32* %r77 -%r79 = zext i32 %r78 to i160 -%r80 = shl i160 %r79, 128 -%r81 = or i160 %r75, %r80 -%r82 = zext i160 %r81 to i192 -%r84 = getelementptr i32, i32* %r2, i32 5 -%r85 = load i32, i32* %r84 -%r86 = zext i32 %r85 to i192 -%r87 = shl i192 %r86, 160 -%r88 = or i192 %r82, %r87 -%r89 = zext i192 %r88 to i224 -%r91 = getelementptr i32, i32* %r2, i32 6 -%r92 = load i32, i32* %r91 -%r93 = zext i32 %r92 to i224 -%r94 = shl i224 %r93, 192 -%r95 = or i224 %r89, %r94 -%r96 = zext i224 %r95 to i256 -%r97 = load i32, i32* %r6 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r6, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r6, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r6, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r6, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r6, i32 5 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r6, i32 6 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r141 = load i32, i32* %r2 -%r142 = zext i32 %r141 to i64 -%r144 = getelementptr i32, i32* %r2, i32 1 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i64 -%r147 = shl i64 %r146, 32 -%r148 = or i64 %r142, %r147 -%r149 = zext i64 %r148 to i96 -%r151 = getelementptr i32, i32* %r2, i32 2 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i96 -%r154 = shl i96 %r153, 64 -%r155 = or i96 %r149, %r154 -%r156 = zext i96 %r155 to i128 -%r158 = getelementptr i32, i32* %r2, i32 3 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i128 -%r161 = shl i128 %r160, 96 -%r162 = or i128 %r156, %r161 -%r163 = zext i128 %r162 to i160 -%r165 = getelementptr i32, i32* %r2, i32 4 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i160 -%r168 = shl i160 %r167, 128 -%r169 = or i160 %r163, %r168 -%r170 = zext i160 %r169 to i192 -%r172 = getelementptr i32, i32* %r2, i32 5 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i192 -%r175 = shl i192 %r174, 160 -%r176 = or i192 %r170, %r175 -%r177 = zext i192 %r176 to i224 -%r179 = getelementptr i32, i32* %r2, i32 6 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i224 -%r182 = shl i224 %r181, 192 -%r183 = or i224 %r177, %r182 -%r184 = zext i224 %r183 to i256 -%r185 = add i256 %r52, %r96 -%r186 = add i256 %r140, %r184 -%r188 = alloca i32, i32 14 -%r189 = trunc i256 %r185 to i224 -%r190 = trunc i256 %r186 to i224 -%r191 = lshr i256 %r185, 224 -%r192 = trunc i256 %r191 to i1 -%r193 = lshr i256 %r186, 224 -%r194 = trunc i256 %r193 to i1 -%r195 = and i1 %r192, %r194 -%r197 = select i1 %r192, i224 %r190, i224 0 -%r199 = select i1 %r194, i224 %r189, i224 0 -%r201 = alloca i32, i32 7 -%r203 = alloca i32, i32 7 -%r204 = trunc i224 %r189 to i32 -%r206 = getelementptr i32, i32* %r201, i32 0 -store i32 %r204, i32* %r206 -%r207 = lshr i224 %r189, 32 -%r208 = trunc i224 %r207 to i32 -%r210 = getelementptr i32, i32* %r201, i32 1 -store i32 %r208, i32* %r210 -%r211 = lshr i224 %r207, 32 -%r212 = trunc i224 %r211 to i32 -%r214 = getelementptr i32, i32* %r201, i32 2 -store i32 %r212, i32* %r214 -%r215 = lshr i224 %r211, 32 -%r216 = trunc i224 %r215 to i32 -%r218 = getelementptr i32, i32* %r201, i32 3 -store i32 %r216, i32* %r218 -%r219 = lshr i224 %r215, 32 -%r220 = trunc i224 %r219 to i32 -%r222 = getelementptr i32, i32* %r201, i32 4 -store i32 %r220, i32* %r222 -%r223 = lshr i224 %r219, 32 -%r224 = trunc i224 %r223 to i32 -%r226 = getelementptr i32, i32* %r201, i32 5 -store i32 %r224, i32* %r226 -%r227 = lshr i224 %r223, 32 -%r228 = trunc i224 %r227 to i32 -%r230 = getelementptr i32, i32* %r201, i32 6 -store i32 %r228, i32* %r230 -%r231 = trunc i224 %r190 to i32 -%r233 = getelementptr i32, i32* %r203, i32 0 -store i32 %r231, i32* %r233 -%r234 = lshr i224 %r190, 32 -%r235 = trunc i224 %r234 to i32 -%r237 = getelementptr i32, i32* %r203, i32 1 -store i32 %r235, i32* %r237 -%r238 = lshr i224 %r234, 32 -%r239 = trunc i224 %r238 to i32 -%r241 = getelementptr i32, i32* %r203, i32 2 -store i32 %r239, i32* %r241 -%r242 = lshr i224 %r238, 32 -%r243 = trunc i224 %r242 to i32 -%r245 = getelementptr i32, i32* %r203, i32 3 -store i32 %r243, i32* %r245 -%r246 = lshr i224 %r242, 32 -%r247 = trunc i224 %r246 to i32 -%r249 = getelementptr i32, i32* %r203, i32 4 -store i32 %r247, i32* %r249 -%r250 = lshr i224 %r246, 32 -%r251 = trunc i224 %r250 to i32 -%r253 = getelementptr i32, i32* %r203, i32 5 -store i32 %r251, i32* %r253 -%r254 = lshr i224 %r250, 32 -%r255 = trunc i224 %r254 to i32 -%r257 = getelementptr i32, i32* %r203, i32 6 -store i32 %r255, i32* %r257 -call void @mcl_fpDbl_mulPre7L(i32* %r188, i32* %r201, i32* %r203) -%r258 = load i32, i32* %r188 -%r259 = zext i32 %r258 to i64 -%r261 = getelementptr i32, i32* %r188, i32 1 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i64 -%r264 = shl i64 %r263, 32 -%r265 = or i64 %r259, %r264 -%r266 = zext i64 %r265 to i96 -%r268 = getelementptr i32, i32* %r188, i32 2 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i96 -%r271 = shl i96 %r270, 64 -%r272 = or i96 %r266, %r271 -%r273 = zext i96 %r272 to i128 -%r275 = getelementptr i32, i32* %r188, i32 3 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i128 -%r278 = shl i128 %r277, 96 -%r279 = or i128 %r273, %r278 -%r280 = zext i128 %r279 to i160 -%r282 = getelementptr i32, i32* %r188, i32 4 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i160 -%r285 = shl i160 %r284, 128 -%r286 = or i160 %r280, %r285 -%r287 = zext i160 %r286 to i192 -%r289 = getelementptr i32, i32* %r188, i32 5 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i192 -%r292 = shl i192 %r291, 160 -%r293 = or i192 %r287, %r292 -%r294 = zext i192 %r293 to i224 -%r296 = getelementptr i32, i32* %r188, i32 6 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i224 -%r299 = shl i224 %r298, 192 -%r300 = or i224 %r294, %r299 -%r301 = zext i224 %r300 to i256 -%r303 = getelementptr i32, i32* %r188, i32 7 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i256 -%r306 = shl i256 %r305, 224 -%r307 = or i256 %r301, %r306 -%r308 = zext i256 %r307 to i288 -%r310 = getelementptr i32, i32* %r188, i32 8 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i288 -%r313 = shl i288 %r312, 256 -%r314 = or i288 %r308, %r313 -%r315 = zext i288 %r314 to i320 -%r317 = getelementptr i32, i32* %r188, i32 9 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i320 -%r320 = shl i320 %r319, 288 -%r321 = or i320 %r315, %r320 -%r322 = zext i320 %r321 to i352 -%r324 = getelementptr i32, i32* %r188, i32 10 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i352 -%r327 = shl i352 %r326, 320 -%r328 = or i352 %r322, %r327 -%r329 = zext i352 %r328 to i384 -%r331 = getelementptr i32, i32* %r188, i32 11 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i384 -%r334 = shl i384 %r333, 352 -%r335 = or i384 %r329, %r334 -%r336 = zext i384 %r335 to i416 -%r338 = getelementptr i32, i32* %r188, i32 12 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i416 -%r341 = shl i416 %r340, 384 -%r342 = or i416 %r336, %r341 -%r343 = zext i416 %r342 to i448 -%r345 = getelementptr i32, i32* %r188, i32 13 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i448 -%r348 = shl i448 %r347, 416 -%r349 = or i448 %r343, %r348 -%r350 = zext i448 %r349 to i480 -%r351 = zext i1 %r195 to i480 -%r352 = shl i480 %r351, 448 -%r353 = or i480 %r350, %r352 -%r354 = zext i224 %r197 to i480 -%r355 = zext i224 %r199 to i480 -%r356 = shl i480 %r354, 224 -%r357 = shl i480 %r355, 224 -%r358 = add i480 %r353, %r356 -%r359 = add i480 %r358, %r357 -%r360 = load i32, i32* %r1 -%r361 = zext i32 %r360 to i64 -%r363 = getelementptr i32, i32* %r1, i32 1 -%r364 = load i32, i32* %r363 -%r365 = zext i32 %r364 to i64 -%r366 = shl i64 %r365, 32 -%r367 = or i64 %r361, %r366 -%r368 = zext i64 %r367 to i96 -%r370 = getelementptr i32, i32* %r1, i32 2 -%r371 = load i32, i32* %r370 -%r372 = zext i32 %r371 to i96 -%r373 = shl i96 %r372, 64 -%r374 = or i96 %r368, %r373 -%r375 = zext i96 %r374 to i128 -%r377 = getelementptr i32, i32* %r1, i32 3 -%r378 = load i32, i32* %r377 -%r379 = zext i32 %r378 to i128 -%r380 = shl i128 %r379, 96 -%r381 = or i128 %r375, %r380 -%r382 = zext i128 %r381 to i160 -%r384 = getelementptr i32, i32* %r1, i32 4 -%r385 = load i32, i32* %r384 -%r386 = zext i32 %r385 to i160 -%r387 = shl i160 %r386, 128 -%r388 = or i160 %r382, %r387 -%r389 = zext i160 %r388 to i192 -%r391 = getelementptr i32, i32* %r1, i32 5 -%r392 = load i32, i32* %r391 -%r393 = zext i32 %r392 to i192 -%r394 = shl i192 %r393, 160 -%r395 = or i192 %r389, %r394 -%r396 = zext i192 %r395 to i224 -%r398 = getelementptr i32, i32* %r1, i32 6 -%r399 = load i32, i32* %r398 -%r400 = zext i32 %r399 to i224 -%r401 = shl i224 %r400, 192 -%r402 = or i224 %r396, %r401 -%r403 = zext i224 %r402 to i256 -%r405 = getelementptr i32, i32* %r1, i32 7 -%r406 = load i32, i32* %r405 -%r407 = zext i32 %r406 to i256 -%r408 = shl i256 %r407, 224 -%r409 = or i256 %r403, %r408 -%r410 = zext i256 %r409 to i288 -%r412 = getelementptr i32, i32* %r1, i32 8 -%r413 = load i32, i32* %r412 -%r414 = zext i32 %r413 to i288 -%r415 = shl i288 %r414, 256 -%r416 = or i288 %r410, %r415 -%r417 = zext i288 %r416 to i320 -%r419 = getelementptr i32, i32* %r1, i32 9 -%r420 = load i32, i32* %r419 -%r421 = zext i32 %r420 to i320 -%r422 = shl i320 %r421, 288 -%r423 = or i320 %r417, %r422 -%r424 = zext i320 %r423 to i352 -%r426 = getelementptr i32, i32* %r1, i32 10 -%r427 = load i32, i32* %r426 -%r428 = zext i32 %r427 to i352 -%r429 = shl i352 %r428, 320 -%r430 = or i352 %r424, %r429 -%r431 = zext i352 %r430 to i384 -%r433 = getelementptr i32, i32* %r1, i32 11 -%r434 = load i32, i32* %r433 -%r435 = zext i32 %r434 to i384 -%r436 = shl i384 %r435, 352 -%r437 = or i384 %r431, %r436 -%r438 = zext i384 %r437 to i416 -%r440 = getelementptr i32, i32* %r1, i32 12 -%r441 = load i32, i32* %r440 -%r442 = zext i32 %r441 to i416 -%r443 = shl i416 %r442, 384 -%r444 = or i416 %r438, %r443 -%r445 = zext i416 %r444 to i448 -%r447 = getelementptr i32, i32* %r1, i32 13 -%r448 = load i32, i32* %r447 -%r449 = zext i32 %r448 to i448 -%r450 = shl i448 %r449, 416 -%r451 = or i448 %r445, %r450 -%r452 = zext i448 %r451 to i480 -%r453 = sub i480 %r359, %r452 -%r455 = getelementptr i32, i32* %r1, i32 14 -%r456 = load i32, i32* %r455 -%r457 = zext i32 %r456 to i64 -%r459 = getelementptr i32, i32* %r455, i32 1 -%r460 = load i32, i32* %r459 -%r461 = zext i32 %r460 to i64 -%r462 = shl i64 %r461, 32 -%r463 = or i64 %r457, %r462 -%r464 = zext i64 %r463 to i96 -%r466 = getelementptr i32, i32* %r455, i32 2 -%r467 = load i32, i32* %r466 -%r468 = zext i32 %r467 to i96 -%r469 = shl i96 %r468, 64 -%r470 = or i96 %r464, %r469 -%r471 = zext i96 %r470 to i128 -%r473 = getelementptr i32, i32* %r455, i32 3 -%r474 = load i32, i32* %r473 -%r475 = zext i32 %r474 to i128 -%r476 = shl i128 %r475, 96 -%r477 = or i128 %r471, %r476 -%r478 = zext i128 %r477 to i160 -%r480 = getelementptr i32, i32* %r455, i32 4 -%r481 = load i32, i32* %r480 -%r482 = zext i32 %r481 to i160 -%r483 = shl i160 %r482, 128 -%r484 = or i160 %r478, %r483 -%r485 = zext i160 %r484 to i192 -%r487 = getelementptr i32, i32* %r455, i32 5 -%r488 = load i32, i32* %r487 -%r489 = zext i32 %r488 to i192 -%r490 = shl i192 %r489, 160 -%r491 = or i192 %r485, %r490 -%r492 = zext i192 %r491 to i224 -%r494 = getelementptr i32, i32* %r455, i32 6 -%r495 = load i32, i32* %r494 -%r496 = zext i32 %r495 to i224 -%r497 = shl i224 %r496, 192 -%r498 = or i224 %r492, %r497 -%r499 = zext i224 %r498 to i256 -%r501 = getelementptr i32, i32* %r455, i32 7 -%r502 = load i32, i32* %r501 -%r503 = zext i32 %r502 to i256 -%r504 = shl i256 %r503, 224 -%r505 = or i256 %r499, %r504 -%r506 = zext i256 %r505 to i288 -%r508 = getelementptr i32, i32* %r455, i32 8 -%r509 = load i32, i32* %r508 -%r510 = zext i32 %r509 to i288 -%r511 = shl i288 %r510, 256 -%r512 = or i288 %r506, %r511 -%r513 = zext i288 %r512 to i320 -%r515 = getelementptr i32, i32* %r455, i32 9 -%r516 = load i32, i32* %r515 -%r517 = zext i32 %r516 to i320 -%r518 = shl i320 %r517, 288 -%r519 = or i320 %r513, %r518 -%r520 = zext i320 %r519 to i352 -%r522 = getelementptr i32, i32* %r455, i32 10 -%r523 = load i32, i32* %r522 -%r524 = zext i32 %r523 to i352 -%r525 = shl i352 %r524, 320 -%r526 = or i352 %r520, %r525 -%r527 = zext i352 %r526 to i384 -%r529 = getelementptr i32, i32* %r455, i32 11 -%r530 = load i32, i32* %r529 -%r531 = zext i32 %r530 to i384 -%r532 = shl i384 %r531, 352 -%r533 = or i384 %r527, %r532 -%r534 = zext i384 %r533 to i416 -%r536 = getelementptr i32, i32* %r455, i32 12 -%r537 = load i32, i32* %r536 -%r538 = zext i32 %r537 to i416 -%r539 = shl i416 %r538, 384 -%r540 = or i416 %r534, %r539 -%r541 = zext i416 %r540 to i448 -%r543 = getelementptr i32, i32* %r455, i32 13 -%r544 = load i32, i32* %r543 -%r545 = zext i32 %r544 to i448 -%r546 = shl i448 %r545, 416 -%r547 = or i448 %r541, %r546 -%r548 = zext i448 %r547 to i480 -%r549 = sub i480 %r453, %r548 -%r550 = zext i480 %r549 to i672 -%r552 = getelementptr i32, i32* %r1, i32 7 -%r553 = load i32, i32* %r552 -%r554 = zext i32 %r553 to i64 -%r556 = getelementptr i32, i32* %r552, i32 1 -%r557 = load i32, i32* %r556 -%r558 = zext i32 %r557 to i64 -%r559 = shl i64 %r558, 32 -%r560 = or i64 %r554, %r559 -%r561 = zext i64 %r560 to i96 -%r563 = getelementptr i32, i32* %r552, i32 2 -%r564 = load i32, i32* %r563 -%r565 = zext i32 %r564 to i96 -%r566 = shl i96 %r565, 64 -%r567 = or i96 %r561, %r566 -%r568 = zext i96 %r567 to i128 -%r570 = getelementptr i32, i32* %r552, i32 3 -%r571 = load i32, i32* %r570 -%r572 = zext i32 %r571 to i128 -%r573 = shl i128 %r572, 96 -%r574 = or i128 %r568, %r573 -%r575 = zext i128 %r574 to i160 -%r577 = getelementptr i32, i32* %r552, i32 4 -%r578 = load i32, i32* %r577 -%r579 = zext i32 %r578 to i160 -%r580 = shl i160 %r579, 128 -%r581 = or i160 %r575, %r580 -%r582 = zext i160 %r581 to i192 -%r584 = getelementptr i32, i32* %r552, i32 5 -%r585 = load i32, i32* %r584 -%r586 = zext i32 %r585 to i192 -%r587 = shl i192 %r586, 160 -%r588 = or i192 %r582, %r587 -%r589 = zext i192 %r588 to i224 -%r591 = getelementptr i32, i32* %r552, i32 6 -%r592 = load i32, i32* %r591 -%r593 = zext i32 %r592 to i224 -%r594 = shl i224 %r593, 192 -%r595 = or i224 %r589, %r594 -%r596 = zext i224 %r595 to i256 -%r598 = getelementptr i32, i32* %r552, i32 7 -%r599 = load i32, i32* %r598 -%r600 = zext i32 %r599 to i256 -%r601 = shl i256 %r600, 224 -%r602 = or i256 %r596, %r601 -%r603 = zext i256 %r602 to i288 -%r605 = getelementptr i32, i32* %r552, i32 8 -%r606 = load i32, i32* %r605 -%r607 = zext i32 %r606 to i288 -%r608 = shl i288 %r607, 256 -%r609 = or i288 %r603, %r608 -%r610 = zext i288 %r609 to i320 -%r612 = getelementptr i32, i32* %r552, i32 9 -%r613 = load i32, i32* %r612 -%r614 = zext i32 %r613 to i320 -%r615 = shl i320 %r614, 288 -%r616 = or i320 %r610, %r615 -%r617 = zext i320 %r616 to i352 -%r619 = getelementptr i32, i32* %r552, i32 10 -%r620 = load i32, i32* %r619 -%r621 = zext i32 %r620 to i352 -%r622 = shl i352 %r621, 320 -%r623 = or i352 %r617, %r622 -%r624 = zext i352 %r623 to i384 -%r626 = getelementptr i32, i32* %r552, i32 11 -%r627 = load i32, i32* %r626 -%r628 = zext i32 %r627 to i384 -%r629 = shl i384 %r628, 352 -%r630 = or i384 %r624, %r629 -%r631 = zext i384 %r630 to i416 -%r633 = getelementptr i32, i32* %r552, i32 12 -%r634 = load i32, i32* %r633 -%r635 = zext i32 %r634 to i416 -%r636 = shl i416 %r635, 384 -%r637 = or i416 %r631, %r636 -%r638 = zext i416 %r637 to i448 -%r640 = getelementptr i32, i32* %r552, i32 13 -%r641 = load i32, i32* %r640 -%r642 = zext i32 %r641 to i448 -%r643 = shl i448 %r642, 416 -%r644 = or i448 %r638, %r643 -%r645 = zext i448 %r644 to i480 -%r647 = getelementptr i32, i32* %r552, i32 14 -%r648 = load i32, i32* %r647 -%r649 = zext i32 %r648 to i480 -%r650 = shl i480 %r649, 448 -%r651 = or i480 %r645, %r650 -%r652 = zext i480 %r651 to i512 -%r654 = getelementptr i32, i32* %r552, i32 15 -%r655 = load i32, i32* %r654 -%r656 = zext i32 %r655 to i512 -%r657 = shl i512 %r656, 480 -%r658 = or i512 %r652, %r657 -%r659 = zext i512 %r658 to i544 -%r661 = getelementptr i32, i32* %r552, i32 16 -%r662 = load i32, i32* %r661 -%r663 = zext i32 %r662 to i544 -%r664 = shl i544 %r663, 512 -%r665 = or i544 %r659, %r664 -%r666 = zext i544 %r665 to i576 -%r668 = getelementptr i32, i32* %r552, i32 17 -%r669 = load i32, i32* %r668 -%r670 = zext i32 %r669 to i576 -%r671 = shl i576 %r670, 544 -%r672 = or i576 %r666, %r671 -%r673 = zext i576 %r672 to i608 -%r675 = getelementptr i32, i32* %r552, i32 18 -%r676 = load i32, i32* %r675 -%r677 = zext i32 %r676 to i608 -%r678 = shl i608 %r677, 576 -%r679 = or i608 %r673, %r678 -%r680 = zext i608 %r679 to i640 -%r682 = getelementptr i32, i32* %r552, i32 19 -%r683 = load i32, i32* %r682 -%r684 = zext i32 %r683 to i640 -%r685 = shl i640 %r684, 608 -%r686 = or i640 %r680, %r685 -%r687 = zext i640 %r686 to i672 -%r689 = getelementptr i32, i32* %r552, i32 20 -%r690 = load i32, i32* %r689 -%r691 = zext i32 %r690 to i672 -%r692 = shl i672 %r691, 640 -%r693 = or i672 %r687, %r692 -%r694 = add i672 %r550, %r693 -%r696 = getelementptr i32, i32* %r1, i32 7 -%r697 = trunc i672 %r694 to i32 -%r699 = getelementptr i32, i32* %r696, i32 0 -store i32 %r697, i32* %r699 -%r700 = lshr i672 %r694, 32 -%r701 = trunc i672 %r700 to i32 -%r703 = getelementptr i32, i32* %r696, i32 1 -store i32 %r701, i32* %r703 -%r704 = lshr i672 %r700, 32 -%r705 = trunc i672 %r704 to i32 -%r707 = getelementptr i32, i32* %r696, i32 2 -store i32 %r705, i32* %r707 -%r708 = lshr i672 %r704, 32 -%r709 = trunc i672 %r708 to i32 -%r711 = getelementptr i32, i32* %r696, i32 3 -store i32 %r709, i32* %r711 -%r712 = lshr i672 %r708, 32 -%r713 = trunc i672 %r712 to i32 -%r715 = getelementptr i32, i32* %r696, i32 4 -store i32 %r713, i32* %r715 -%r716 = lshr i672 %r712, 32 -%r717 = trunc i672 %r716 to i32 -%r719 = getelementptr i32, i32* %r696, i32 5 -store i32 %r717, i32* %r719 -%r720 = lshr i672 %r716, 32 -%r721 = trunc i672 %r720 to i32 -%r723 = getelementptr i32, i32* %r696, i32 6 -store i32 %r721, i32* %r723 -%r724 = lshr i672 %r720, 32 -%r725 = trunc i672 %r724 to i32 -%r727 = getelementptr i32, i32* %r696, i32 7 -store i32 %r725, i32* %r727 -%r728 = lshr i672 %r724, 32 -%r729 = trunc i672 %r728 to i32 -%r731 = getelementptr i32, i32* %r696, i32 8 -store i32 %r729, i32* %r731 -%r732 = lshr i672 %r728, 32 -%r733 = trunc i672 %r732 to i32 -%r735 = getelementptr i32, i32* %r696, i32 9 -store i32 %r733, i32* %r735 -%r736 = lshr i672 %r732, 32 -%r737 = trunc i672 %r736 to i32 -%r739 = getelementptr i32, i32* %r696, i32 10 -store i32 %r737, i32* %r739 -%r740 = lshr i672 %r736, 32 -%r741 = trunc i672 %r740 to i32 -%r743 = getelementptr i32, i32* %r696, i32 11 -store i32 %r741, i32* %r743 -%r744 = lshr i672 %r740, 32 -%r745 = trunc i672 %r744 to i32 -%r747 = getelementptr i32, i32* %r696, i32 12 -store i32 %r745, i32* %r747 -%r748 = lshr i672 %r744, 32 -%r749 = trunc i672 %r748 to i32 -%r751 = getelementptr i32, i32* %r696, i32 13 -store i32 %r749, i32* %r751 -%r752 = lshr i672 %r748, 32 -%r753 = trunc i672 %r752 to i32 -%r755 = getelementptr i32, i32* %r696, i32 14 -store i32 %r753, i32* %r755 -%r756 = lshr i672 %r752, 32 -%r757 = trunc i672 %r756 to i32 -%r759 = getelementptr i32, i32* %r696, i32 15 -store i32 %r757, i32* %r759 -%r760 = lshr i672 %r756, 32 -%r761 = trunc i672 %r760 to i32 -%r763 = getelementptr i32, i32* %r696, i32 16 -store i32 %r761, i32* %r763 -%r764 = lshr i672 %r760, 32 -%r765 = trunc i672 %r764 to i32 -%r767 = getelementptr i32, i32* %r696, i32 17 -store i32 %r765, i32* %r767 -%r768 = lshr i672 %r764, 32 -%r769 = trunc i672 %r768 to i32 -%r771 = getelementptr i32, i32* %r696, i32 18 -store i32 %r769, i32* %r771 -%r772 = lshr i672 %r768, 32 -%r773 = trunc i672 %r772 to i32 -%r775 = getelementptr i32, i32* %r696, i32 19 -store i32 %r773, i32* %r775 -%r776 = lshr i672 %r772, 32 -%r777 = trunc i672 %r776 to i32 -%r779 = getelementptr i32, i32* %r696, i32 20 -store i32 %r777, i32* %r779 -ret void -} -define void @mcl_fp_mont14L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i480 @mulPv448x32(i32* %r2, i32 %r10) -%r12 = zext i480 %r11 to i512 -%r13 = trunc i480 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i480 @mulPv448x32(i32* %r4, i32 %r14) -%r16 = zext i480 %r15 to i512 -%r17 = add i512 %r12, %r16 -%r18 = lshr i512 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i480 @mulPv448x32(i32* %r2, i32 %r21) -%r23 = zext i480 %r22 to i512 -%r24 = add i512 %r18, %r23 -%r25 = trunc i512 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i480 @mulPv448x32(i32* %r4, i32 %r26) -%r28 = zext i480 %r27 to i512 -%r29 = add i512 %r24, %r28 -%r30 = lshr i512 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i480 @mulPv448x32(i32* %r2, i32 %r33) -%r35 = zext i480 %r34 to i512 -%r36 = add i512 %r30, %r35 -%r37 = trunc i512 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i480 @mulPv448x32(i32* %r4, i32 %r38) -%r40 = zext i480 %r39 to i512 -%r41 = add i512 %r36, %r40 -%r42 = lshr i512 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i480 @mulPv448x32(i32* %r2, i32 %r45) -%r47 = zext i480 %r46 to i512 -%r48 = add i512 %r42, %r47 -%r49 = trunc i512 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i480 @mulPv448x32(i32* %r4, i32 %r50) -%r52 = zext i480 %r51 to i512 -%r53 = add i512 %r48, %r52 -%r54 = lshr i512 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i480 @mulPv448x32(i32* %r2, i32 %r57) -%r59 = zext i480 %r58 to i512 -%r60 = add i512 %r54, %r59 -%r61 = trunc i512 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i480 @mulPv448x32(i32* %r4, i32 %r62) -%r64 = zext i480 %r63 to i512 -%r65 = add i512 %r60, %r64 -%r66 = lshr i512 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i480 @mulPv448x32(i32* %r2, i32 %r69) -%r71 = zext i480 %r70 to i512 -%r72 = add i512 %r66, %r71 -%r73 = trunc i512 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i480 @mulPv448x32(i32* %r4, i32 %r74) -%r76 = zext i480 %r75 to i512 -%r77 = add i512 %r72, %r76 -%r78 = lshr i512 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i480 @mulPv448x32(i32* %r2, i32 %r81) -%r83 = zext i480 %r82 to i512 -%r84 = add i512 %r78, %r83 -%r85 = trunc i512 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i480 @mulPv448x32(i32* %r4, i32 %r86) -%r88 = zext i480 %r87 to i512 -%r89 = add i512 %r84, %r88 -%r90 = lshr i512 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i480 @mulPv448x32(i32* %r2, i32 %r93) -%r95 = zext i480 %r94 to i512 -%r96 = add i512 %r90, %r95 -%r97 = trunc i512 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i480 @mulPv448x32(i32* %r4, i32 %r98) -%r100 = zext i480 %r99 to i512 -%r101 = add i512 %r96, %r100 -%r102 = lshr i512 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i480 @mulPv448x32(i32* %r2, i32 %r105) -%r107 = zext i480 %r106 to i512 -%r108 = add i512 %r102, %r107 -%r109 = trunc i512 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i480 @mulPv448x32(i32* %r4, i32 %r110) -%r112 = zext i480 %r111 to i512 -%r113 = add i512 %r108, %r112 -%r114 = lshr i512 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i480 @mulPv448x32(i32* %r2, i32 %r117) -%r119 = zext i480 %r118 to i512 -%r120 = add i512 %r114, %r119 -%r121 = trunc i512 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i480 @mulPv448x32(i32* %r4, i32 %r122) -%r124 = zext i480 %r123 to i512 -%r125 = add i512 %r120, %r124 -%r126 = lshr i512 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i480 @mulPv448x32(i32* %r2, i32 %r129) -%r131 = zext i480 %r130 to i512 -%r132 = add i512 %r126, %r131 -%r133 = trunc i512 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i480 @mulPv448x32(i32* %r4, i32 %r134) -%r136 = zext i480 %r135 to i512 -%r137 = add i512 %r132, %r136 -%r138 = lshr i512 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i480 @mulPv448x32(i32* %r2, i32 %r141) -%r143 = zext i480 %r142 to i512 -%r144 = add i512 %r138, %r143 -%r145 = trunc i512 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i480 @mulPv448x32(i32* %r4, i32 %r146) -%r148 = zext i480 %r147 to i512 -%r149 = add i512 %r144, %r148 -%r150 = lshr i512 %r149, 32 -%r152 = getelementptr i32, i32* %r3, i32 12 -%r153 = load i32, i32* %r152 -%r154 = call i480 @mulPv448x32(i32* %r2, i32 %r153) -%r155 = zext i480 %r154 to i512 -%r156 = add i512 %r150, %r155 -%r157 = trunc i512 %r156 to i32 -%r158 = mul i32 %r157, %r7 -%r159 = call i480 @mulPv448x32(i32* %r4, i32 %r158) -%r160 = zext i480 %r159 to i512 -%r161 = add i512 %r156, %r160 -%r162 = lshr i512 %r161, 32 -%r164 = getelementptr i32, i32* %r3, i32 13 -%r165 = load i32, i32* %r164 -%r166 = call i480 @mulPv448x32(i32* %r2, i32 %r165) -%r167 = zext i480 %r166 to i512 -%r168 = add i512 %r162, %r167 -%r169 = trunc i512 %r168 to i32 -%r170 = mul i32 %r169, %r7 -%r171 = call i480 @mulPv448x32(i32* %r4, i32 %r170) -%r172 = zext i480 %r171 to i512 -%r173 = add i512 %r168, %r172 -%r174 = lshr i512 %r173, 32 -%r175 = trunc i512 %r174 to i480 -%r176 = load i32, i32* %r4 -%r177 = zext i32 %r176 to i64 -%r179 = getelementptr i32, i32* %r4, i32 1 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i64 -%r182 = shl i64 %r181, 32 -%r183 = or i64 %r177, %r182 -%r184 = zext i64 %r183 to i96 -%r186 = getelementptr i32, i32* %r4, i32 2 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i96 -%r189 = shl i96 %r188, 64 -%r190 = or i96 %r184, %r189 -%r191 = zext i96 %r190 to i128 -%r193 = getelementptr i32, i32* %r4, i32 3 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i128 -%r196 = shl i128 %r195, 96 -%r197 = or i128 %r191, %r196 -%r198 = zext i128 %r197 to i160 -%r200 = getelementptr i32, i32* %r4, i32 4 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i160 -%r203 = shl i160 %r202, 128 -%r204 = or i160 %r198, %r203 -%r205 = zext i160 %r204 to i192 -%r207 = getelementptr i32, i32* %r4, i32 5 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i192 -%r210 = shl i192 %r209, 160 -%r211 = or i192 %r205, %r210 -%r212 = zext i192 %r211 to i224 -%r214 = getelementptr i32, i32* %r4, i32 6 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i224 -%r217 = shl i224 %r216, 192 -%r218 = or i224 %r212, %r217 -%r219 = zext i224 %r218 to i256 -%r221 = getelementptr i32, i32* %r4, i32 7 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i256 -%r224 = shl i256 %r223, 224 -%r225 = or i256 %r219, %r224 -%r226 = zext i256 %r225 to i288 -%r228 = getelementptr i32, i32* %r4, i32 8 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i288 -%r231 = shl i288 %r230, 256 -%r232 = or i288 %r226, %r231 -%r233 = zext i288 %r232 to i320 -%r235 = getelementptr i32, i32* %r4, i32 9 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i320 -%r238 = shl i320 %r237, 288 -%r239 = or i320 %r233, %r238 -%r240 = zext i320 %r239 to i352 -%r242 = getelementptr i32, i32* %r4, i32 10 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i352 -%r245 = shl i352 %r244, 320 -%r246 = or i352 %r240, %r245 -%r247 = zext i352 %r246 to i384 -%r249 = getelementptr i32, i32* %r4, i32 11 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i384 -%r252 = shl i384 %r251, 352 -%r253 = or i384 %r247, %r252 -%r254 = zext i384 %r253 to i416 -%r256 = getelementptr i32, i32* %r4, i32 12 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i416 -%r259 = shl i416 %r258, 384 -%r260 = or i416 %r254, %r259 -%r261 = zext i416 %r260 to i448 -%r263 = getelementptr i32, i32* %r4, i32 13 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i448 -%r266 = shl i448 %r265, 416 -%r267 = or i448 %r261, %r266 -%r268 = zext i448 %r267 to i480 -%r269 = sub i480 %r175, %r268 -%r270 = lshr i480 %r269, 448 -%r271 = trunc i480 %r270 to i1 -%r272 = select i1 %r271, i480 %r175, i480 %r269 -%r273 = trunc i480 %r272 to i448 -%r274 = trunc i448 %r273 to i32 -%r276 = getelementptr i32, i32* %r1, i32 0 -store i32 %r274, i32* %r276 -%r277 = lshr i448 %r273, 32 -%r278 = trunc i448 %r277 to i32 -%r280 = getelementptr i32, i32* %r1, i32 1 -store i32 %r278, i32* %r280 -%r281 = lshr i448 %r277, 32 -%r282 = trunc i448 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 2 -store i32 %r282, i32* %r284 -%r285 = lshr i448 %r281, 32 -%r286 = trunc i448 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 3 -store i32 %r286, i32* %r288 -%r289 = lshr i448 %r285, 32 -%r290 = trunc i448 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 4 -store i32 %r290, i32* %r292 -%r293 = lshr i448 %r289, 32 -%r294 = trunc i448 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 5 -store i32 %r294, i32* %r296 -%r297 = lshr i448 %r293, 32 -%r298 = trunc i448 %r297 to i32 -%r300 = getelementptr i32, i32* %r1, i32 6 -store i32 %r298, i32* %r300 -%r301 = lshr i448 %r297, 32 -%r302 = trunc i448 %r301 to i32 -%r304 = getelementptr i32, i32* %r1, i32 7 -store i32 %r302, i32* %r304 -%r305 = lshr i448 %r301, 32 -%r306 = trunc i448 %r305 to i32 -%r308 = getelementptr i32, i32* %r1, i32 8 -store i32 %r306, i32* %r308 -%r309 = lshr i448 %r305, 32 -%r310 = trunc i448 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 9 -store i32 %r310, i32* %r312 -%r313 = lshr i448 %r309, 32 -%r314 = trunc i448 %r313 to i32 -%r316 = getelementptr i32, i32* %r1, i32 10 -store i32 %r314, i32* %r316 -%r317 = lshr i448 %r313, 32 -%r318 = trunc i448 %r317 to i32 -%r320 = getelementptr i32, i32* %r1, i32 11 -store i32 %r318, i32* %r320 -%r321 = lshr i448 %r317, 32 -%r322 = trunc i448 %r321 to i32 -%r324 = getelementptr i32, i32* %r1, i32 12 -store i32 %r322, i32* %r324 -%r325 = lshr i448 %r321, 32 -%r326 = trunc i448 %r325 to i32 -%r328 = getelementptr i32, i32* %r1, i32 13 -store i32 %r326, i32* %r328 -ret void -} -define void @mcl_fp_montNF14L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i480 @mulPv448x32(i32* %r2, i32 %r8) -%r10 = trunc i480 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i480 @mulPv448x32(i32* %r4, i32 %r11) -%r13 = add i480 %r9, %r12 -%r14 = lshr i480 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i480 @mulPv448x32(i32* %r2, i32 %r17) -%r19 = add i480 %r14, %r18 -%r20 = trunc i480 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i480 @mulPv448x32(i32* %r4, i32 %r21) -%r23 = add i480 %r19, %r22 -%r24 = lshr i480 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i480 @mulPv448x32(i32* %r2, i32 %r27) -%r29 = add i480 %r24, %r28 -%r30 = trunc i480 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i480 @mulPv448x32(i32* %r4, i32 %r31) -%r33 = add i480 %r29, %r32 -%r34 = lshr i480 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i480 @mulPv448x32(i32* %r2, i32 %r37) -%r39 = add i480 %r34, %r38 -%r40 = trunc i480 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i480 @mulPv448x32(i32* %r4, i32 %r41) -%r43 = add i480 %r39, %r42 -%r44 = lshr i480 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i480 @mulPv448x32(i32* %r2, i32 %r47) -%r49 = add i480 %r44, %r48 -%r50 = trunc i480 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i480 @mulPv448x32(i32* %r4, i32 %r51) -%r53 = add i480 %r49, %r52 -%r54 = lshr i480 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i480 @mulPv448x32(i32* %r2, i32 %r57) -%r59 = add i480 %r54, %r58 -%r60 = trunc i480 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i480 @mulPv448x32(i32* %r4, i32 %r61) -%r63 = add i480 %r59, %r62 -%r64 = lshr i480 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i480 @mulPv448x32(i32* %r2, i32 %r67) -%r69 = add i480 %r64, %r68 -%r70 = trunc i480 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i480 @mulPv448x32(i32* %r4, i32 %r71) -%r73 = add i480 %r69, %r72 -%r74 = lshr i480 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i480 @mulPv448x32(i32* %r2, i32 %r77) -%r79 = add i480 %r74, %r78 -%r80 = trunc i480 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i480 @mulPv448x32(i32* %r4, i32 %r81) -%r83 = add i480 %r79, %r82 -%r84 = lshr i480 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i480 @mulPv448x32(i32* %r2, i32 %r87) -%r89 = add i480 %r84, %r88 -%r90 = trunc i480 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i480 @mulPv448x32(i32* %r4, i32 %r91) -%r93 = add i480 %r89, %r92 -%r94 = lshr i480 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i480 @mulPv448x32(i32* %r2, i32 %r97) -%r99 = add i480 %r94, %r98 -%r100 = trunc i480 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i480 @mulPv448x32(i32* %r4, i32 %r101) -%r103 = add i480 %r99, %r102 -%r104 = lshr i480 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i480 @mulPv448x32(i32* %r2, i32 %r107) -%r109 = add i480 %r104, %r108 -%r110 = trunc i480 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i480 @mulPv448x32(i32* %r4, i32 %r111) -%r113 = add i480 %r109, %r112 -%r114 = lshr i480 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 -%r117 = load i32, i32* %r116 -%r118 = call i480 @mulPv448x32(i32* %r2, i32 %r117) -%r119 = add i480 %r114, %r118 -%r120 = trunc i480 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i480 @mulPv448x32(i32* %r4, i32 %r121) -%r123 = add i480 %r119, %r122 -%r124 = lshr i480 %r123, 32 -%r126 = getelementptr i32, i32* %r3, i32 12 -%r127 = load i32, i32* %r126 -%r128 = call i480 @mulPv448x32(i32* %r2, i32 %r127) -%r129 = add i480 %r124, %r128 -%r130 = trunc i480 %r129 to i32 -%r131 = mul i32 %r130, %r7 -%r132 = call i480 @mulPv448x32(i32* %r4, i32 %r131) -%r133 = add i480 %r129, %r132 -%r134 = lshr i480 %r133, 32 -%r136 = getelementptr i32, i32* %r3, i32 13 -%r137 = load i32, i32* %r136 -%r138 = call i480 @mulPv448x32(i32* %r2, i32 %r137) -%r139 = add i480 %r134, %r138 -%r140 = trunc i480 %r139 to i32 -%r141 = mul i32 %r140, %r7 -%r142 = call i480 @mulPv448x32(i32* %r4, i32 %r141) -%r143 = add i480 %r139, %r142 -%r144 = lshr i480 %r143, 32 -%r145 = trunc i480 %r144 to i448 -%r146 = load i32, i32* %r4 -%r147 = zext i32 %r146 to i64 -%r149 = getelementptr i32, i32* %r4, i32 1 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i64 -%r152 = shl i64 %r151, 32 -%r153 = or i64 %r147, %r152 -%r154 = zext i64 %r153 to i96 -%r156 = getelementptr i32, i32* %r4, i32 2 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i96 -%r159 = shl i96 %r158, 64 -%r160 = or i96 %r154, %r159 -%r161 = zext i96 %r160 to i128 -%r163 = getelementptr i32, i32* %r4, i32 3 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i128 -%r166 = shl i128 %r165, 96 -%r167 = or i128 %r161, %r166 -%r168 = zext i128 %r167 to i160 -%r170 = getelementptr i32, i32* %r4, i32 4 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i160 -%r173 = shl i160 %r172, 128 -%r174 = or i160 %r168, %r173 -%r175 = zext i160 %r174 to i192 -%r177 = getelementptr i32, i32* %r4, i32 5 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i192 -%r180 = shl i192 %r179, 160 -%r181 = or i192 %r175, %r180 -%r182 = zext i192 %r181 to i224 -%r184 = getelementptr i32, i32* %r4, i32 6 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i224 -%r187 = shl i224 %r186, 192 -%r188 = or i224 %r182, %r187 -%r189 = zext i224 %r188 to i256 -%r191 = getelementptr i32, i32* %r4, i32 7 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i256 -%r194 = shl i256 %r193, 224 -%r195 = or i256 %r189, %r194 -%r196 = zext i256 %r195 to i288 -%r198 = getelementptr i32, i32* %r4, i32 8 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i288 -%r201 = shl i288 %r200, 256 -%r202 = or i288 %r196, %r201 -%r203 = zext i288 %r202 to i320 -%r205 = getelementptr i32, i32* %r4, i32 9 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i320 -%r208 = shl i320 %r207, 288 -%r209 = or i320 %r203, %r208 -%r210 = zext i320 %r209 to i352 -%r212 = getelementptr i32, i32* %r4, i32 10 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i352 -%r215 = shl i352 %r214, 320 -%r216 = or i352 %r210, %r215 -%r217 = zext i352 %r216 to i384 -%r219 = getelementptr i32, i32* %r4, i32 11 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i384 -%r222 = shl i384 %r221, 352 -%r223 = or i384 %r217, %r222 -%r224 = zext i384 %r223 to i416 -%r226 = getelementptr i32, i32* %r4, i32 12 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i416 -%r229 = shl i416 %r228, 384 -%r230 = or i416 %r224, %r229 -%r231 = zext i416 %r230 to i448 -%r233 = getelementptr i32, i32* %r4, i32 13 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i448 -%r236 = shl i448 %r235, 416 -%r237 = or i448 %r231, %r236 -%r238 = sub i448 %r145, %r237 -%r239 = lshr i448 %r238, 447 -%r240 = trunc i448 %r239 to i1 -%r241 = select i1 %r240, i448 %r145, i448 %r238 -%r242 = trunc i448 %r241 to i32 -%r244 = getelementptr i32, i32* %r1, i32 0 -store i32 %r242, i32* %r244 -%r245 = lshr i448 %r241, 32 -%r246 = trunc i448 %r245 to i32 -%r248 = getelementptr i32, i32* %r1, i32 1 -store i32 %r246, i32* %r248 -%r249 = lshr i448 %r245, 32 -%r250 = trunc i448 %r249 to i32 -%r252 = getelementptr i32, i32* %r1, i32 2 -store i32 %r250, i32* %r252 -%r253 = lshr i448 %r249, 32 -%r254 = trunc i448 %r253 to i32 -%r256 = getelementptr i32, i32* %r1, i32 3 -store i32 %r254, i32* %r256 -%r257 = lshr i448 %r253, 32 -%r258 = trunc i448 %r257 to i32 -%r260 = getelementptr i32, i32* %r1, i32 4 -store i32 %r258, i32* %r260 -%r261 = lshr i448 %r257, 32 -%r262 = trunc i448 %r261 to i32 -%r264 = getelementptr i32, i32* %r1, i32 5 -store i32 %r262, i32* %r264 -%r265 = lshr i448 %r261, 32 -%r266 = trunc i448 %r265 to i32 -%r268 = getelementptr i32, i32* %r1, i32 6 -store i32 %r266, i32* %r268 -%r269 = lshr i448 %r265, 32 -%r270 = trunc i448 %r269 to i32 -%r272 = getelementptr i32, i32* %r1, i32 7 -store i32 %r270, i32* %r272 -%r273 = lshr i448 %r269, 32 -%r274 = trunc i448 %r273 to i32 -%r276 = getelementptr i32, i32* %r1, i32 8 -store i32 %r274, i32* %r276 -%r277 = lshr i448 %r273, 32 -%r278 = trunc i448 %r277 to i32 -%r280 = getelementptr i32, i32* %r1, i32 9 -store i32 %r278, i32* %r280 -%r281 = lshr i448 %r277, 32 -%r282 = trunc i448 %r281 to i32 -%r284 = getelementptr i32, i32* %r1, i32 10 -store i32 %r282, i32* %r284 -%r285 = lshr i448 %r281, 32 -%r286 = trunc i448 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 11 -store i32 %r286, i32* %r288 -%r289 = lshr i448 %r285, 32 -%r290 = trunc i448 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 12 -store i32 %r290, i32* %r292 -%r293 = lshr i448 %r289, 32 -%r294 = trunc i448 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 13 -store i32 %r294, i32* %r296 -ret void -} -define void @mcl_fp_montRed14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = zext i352 %r77 to i384 -%r80 = getelementptr i32, i32* %r3, i32 11 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i384 -%r83 = shl i384 %r82, 352 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i416 -%r87 = getelementptr i32, i32* %r3, i32 12 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i416 -%r90 = shl i416 %r89, 384 -%r91 = or i416 %r85, %r90 -%r92 = zext i416 %r91 to i448 -%r94 = getelementptr i32, i32* %r3, i32 13 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i448 -%r97 = shl i448 %r96, 416 -%r98 = or i448 %r92, %r97 -%r99 = load i32, i32* %r2 -%r100 = zext i32 %r99 to i64 -%r102 = getelementptr i32, i32* %r2, i32 1 -%r103 = load i32, i32* %r102 -%r104 = zext i32 %r103 to i64 -%r105 = shl i64 %r104, 32 -%r106 = or i64 %r100, %r105 -%r107 = zext i64 %r106 to i96 -%r109 = getelementptr i32, i32* %r2, i32 2 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i96 -%r112 = shl i96 %r111, 64 -%r113 = or i96 %r107, %r112 -%r114 = zext i96 %r113 to i128 -%r116 = getelementptr i32, i32* %r2, i32 3 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i128 -%r119 = shl i128 %r118, 96 -%r120 = or i128 %r114, %r119 -%r121 = zext i128 %r120 to i160 -%r123 = getelementptr i32, i32* %r2, i32 4 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i160 -%r126 = shl i160 %r125, 128 -%r127 = or i160 %r121, %r126 -%r128 = zext i160 %r127 to i192 -%r130 = getelementptr i32, i32* %r2, i32 5 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i192 -%r133 = shl i192 %r132, 160 -%r134 = or i192 %r128, %r133 -%r135 = zext i192 %r134 to i224 -%r137 = getelementptr i32, i32* %r2, i32 6 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i224 -%r140 = shl i224 %r139, 192 -%r141 = or i224 %r135, %r140 -%r142 = zext i224 %r141 to i256 -%r144 = getelementptr i32, i32* %r2, i32 7 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i256 -%r147 = shl i256 %r146, 224 -%r148 = or i256 %r142, %r147 -%r149 = zext i256 %r148 to i288 -%r151 = getelementptr i32, i32* %r2, i32 8 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i288 -%r154 = shl i288 %r153, 256 -%r155 = or i288 %r149, %r154 -%r156 = zext i288 %r155 to i320 -%r158 = getelementptr i32, i32* %r2, i32 9 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i320 -%r161 = shl i320 %r160, 288 -%r162 = or i320 %r156, %r161 -%r163 = zext i320 %r162 to i352 -%r165 = getelementptr i32, i32* %r2, i32 10 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i352 -%r168 = shl i352 %r167, 320 -%r169 = or i352 %r163, %r168 -%r170 = zext i352 %r169 to i384 -%r172 = getelementptr i32, i32* %r2, i32 11 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i384 -%r175 = shl i384 %r174, 352 -%r176 = or i384 %r170, %r175 -%r177 = zext i384 %r176 to i416 -%r179 = getelementptr i32, i32* %r2, i32 12 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i416 -%r182 = shl i416 %r181, 384 -%r183 = or i416 %r177, %r182 -%r184 = zext i416 %r183 to i448 -%r186 = getelementptr i32, i32* %r2, i32 13 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i448 -%r189 = shl i448 %r188, 416 -%r190 = or i448 %r184, %r189 -%r191 = zext i448 %r190 to i480 -%r193 = getelementptr i32, i32* %r2, i32 14 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i480 -%r196 = shl i480 %r195, 448 -%r197 = or i480 %r191, %r196 -%r198 = zext i480 %r197 to i512 -%r200 = getelementptr i32, i32* %r2, i32 15 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i512 -%r203 = shl i512 %r202, 480 -%r204 = or i512 %r198, %r203 -%r205 = zext i512 %r204 to i544 -%r207 = getelementptr i32, i32* %r2, i32 16 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i544 -%r210 = shl i544 %r209, 512 -%r211 = or i544 %r205, %r210 -%r212 = zext i544 %r211 to i576 -%r214 = getelementptr i32, i32* %r2, i32 17 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i576 -%r217 = shl i576 %r216, 544 -%r218 = or i576 %r212, %r217 -%r219 = zext i576 %r218 to i608 -%r221 = getelementptr i32, i32* %r2, i32 18 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i608 -%r224 = shl i608 %r223, 576 -%r225 = or i608 %r219, %r224 -%r226 = zext i608 %r225 to i640 -%r228 = getelementptr i32, i32* %r2, i32 19 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i640 -%r231 = shl i640 %r230, 608 -%r232 = or i640 %r226, %r231 -%r233 = zext i640 %r232 to i672 -%r235 = getelementptr i32, i32* %r2, i32 20 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i672 -%r238 = shl i672 %r237, 640 -%r239 = or i672 %r233, %r238 -%r240 = zext i672 %r239 to i704 -%r242 = getelementptr i32, i32* %r2, i32 21 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i704 -%r245 = shl i704 %r244, 672 -%r246 = or i704 %r240, %r245 -%r247 = zext i704 %r246 to i736 -%r249 = getelementptr i32, i32* %r2, i32 22 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i736 -%r252 = shl i736 %r251, 704 -%r253 = or i736 %r247, %r252 -%r254 = zext i736 %r253 to i768 -%r256 = getelementptr i32, i32* %r2, i32 23 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i768 -%r259 = shl i768 %r258, 736 -%r260 = or i768 %r254, %r259 -%r261 = zext i768 %r260 to i800 -%r263 = getelementptr i32, i32* %r2, i32 24 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i800 -%r266 = shl i800 %r265, 768 -%r267 = or i800 %r261, %r266 -%r268 = zext i800 %r267 to i832 -%r270 = getelementptr i32, i32* %r2, i32 25 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i832 -%r273 = shl i832 %r272, 800 -%r274 = or i832 %r268, %r273 -%r275 = zext i832 %r274 to i864 -%r277 = getelementptr i32, i32* %r2, i32 26 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i864 -%r280 = shl i864 %r279, 832 -%r281 = or i864 %r275, %r280 -%r282 = zext i864 %r281 to i896 -%r284 = getelementptr i32, i32* %r2, i32 27 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i896 -%r287 = shl i896 %r286, 864 -%r288 = or i896 %r282, %r287 -%r289 = zext i896 %r288 to i928 -%r290 = trunc i928 %r289 to i32 -%r291 = mul i32 %r290, %r6 -%r292 = call i480 @mulPv448x32(i32* %r3, i32 %r291) -%r293 = zext i480 %r292 to i928 -%r294 = add i928 %r289, %r293 -%r295 = lshr i928 %r294, 32 -%r296 = trunc i928 %r295 to i896 -%r297 = trunc i896 %r296 to i32 -%r298 = mul i32 %r297, %r6 -%r299 = call i480 @mulPv448x32(i32* %r3, i32 %r298) -%r300 = zext i480 %r299 to i896 -%r301 = add i896 %r296, %r300 -%r302 = lshr i896 %r301, 32 -%r303 = trunc i896 %r302 to i864 -%r304 = trunc i864 %r303 to i32 -%r305 = mul i32 %r304, %r6 -%r306 = call i480 @mulPv448x32(i32* %r3, i32 %r305) -%r307 = zext i480 %r306 to i864 -%r308 = add i864 %r303, %r307 -%r309 = lshr i864 %r308, 32 -%r310 = trunc i864 %r309 to i832 -%r311 = trunc i832 %r310 to i32 -%r312 = mul i32 %r311, %r6 -%r313 = call i480 @mulPv448x32(i32* %r3, i32 %r312) -%r314 = zext i480 %r313 to i832 -%r315 = add i832 %r310, %r314 -%r316 = lshr i832 %r315, 32 -%r317 = trunc i832 %r316 to i800 -%r318 = trunc i800 %r317 to i32 -%r319 = mul i32 %r318, %r6 -%r320 = call i480 @mulPv448x32(i32* %r3, i32 %r319) -%r321 = zext i480 %r320 to i800 -%r322 = add i800 %r317, %r321 -%r323 = lshr i800 %r322, 32 -%r324 = trunc i800 %r323 to i768 -%r325 = trunc i768 %r324 to i32 -%r326 = mul i32 %r325, %r6 -%r327 = call i480 @mulPv448x32(i32* %r3, i32 %r326) -%r328 = zext i480 %r327 to i768 -%r329 = add i768 %r324, %r328 -%r330 = lshr i768 %r329, 32 -%r331 = trunc i768 %r330 to i736 -%r332 = trunc i736 %r331 to i32 -%r333 = mul i32 %r332, %r6 -%r334 = call i480 @mulPv448x32(i32* %r3, i32 %r333) -%r335 = zext i480 %r334 to i736 -%r336 = add i736 %r331, %r335 -%r337 = lshr i736 %r336, 32 -%r338 = trunc i736 %r337 to i704 -%r339 = trunc i704 %r338 to i32 -%r340 = mul i32 %r339, %r6 -%r341 = call i480 @mulPv448x32(i32* %r3, i32 %r340) -%r342 = zext i480 %r341 to i704 -%r343 = add i704 %r338, %r342 -%r344 = lshr i704 %r343, 32 -%r345 = trunc i704 %r344 to i672 -%r346 = trunc i672 %r345 to i32 -%r347 = mul i32 %r346, %r6 -%r348 = call i480 @mulPv448x32(i32* %r3, i32 %r347) -%r349 = zext i480 %r348 to i672 -%r350 = add i672 %r345, %r349 -%r351 = lshr i672 %r350, 32 -%r352 = trunc i672 %r351 to i640 -%r353 = trunc i640 %r352 to i32 -%r354 = mul i32 %r353, %r6 -%r355 = call i480 @mulPv448x32(i32* %r3, i32 %r354) -%r356 = zext i480 %r355 to i640 -%r357 = add i640 %r352, %r356 -%r358 = lshr i640 %r357, 32 -%r359 = trunc i640 %r358 to i608 -%r360 = trunc i608 %r359 to i32 -%r361 = mul i32 %r360, %r6 -%r362 = call i480 @mulPv448x32(i32* %r3, i32 %r361) -%r363 = zext i480 %r362 to i608 -%r364 = add i608 %r359, %r363 -%r365 = lshr i608 %r364, 32 -%r366 = trunc i608 %r365 to i576 -%r367 = trunc i576 %r366 to i32 -%r368 = mul i32 %r367, %r6 -%r369 = call i480 @mulPv448x32(i32* %r3, i32 %r368) -%r370 = zext i480 %r369 to i576 -%r371 = add i576 %r366, %r370 -%r372 = lshr i576 %r371, 32 -%r373 = trunc i576 %r372 to i544 -%r374 = trunc i544 %r373 to i32 -%r375 = mul i32 %r374, %r6 -%r376 = call i480 @mulPv448x32(i32* %r3, i32 %r375) -%r377 = zext i480 %r376 to i544 -%r378 = add i544 %r373, %r377 -%r379 = lshr i544 %r378, 32 -%r380 = trunc i544 %r379 to i512 -%r381 = trunc i512 %r380 to i32 -%r382 = mul i32 %r381, %r6 -%r383 = call i480 @mulPv448x32(i32* %r3, i32 %r382) -%r384 = zext i480 %r383 to i512 -%r385 = add i512 %r380, %r384 -%r386 = lshr i512 %r385, 32 -%r387 = trunc i512 %r386 to i480 -%r388 = zext i448 %r98 to i480 -%r389 = sub i480 %r387, %r388 -%r390 = lshr i480 %r389, 448 -%r391 = trunc i480 %r390 to i1 -%r392 = select i1 %r391, i480 %r387, i480 %r389 -%r393 = trunc i480 %r392 to i448 -%r394 = trunc i448 %r393 to i32 -%r396 = getelementptr i32, i32* %r1, i32 0 -store i32 %r394, i32* %r396 -%r397 = lshr i448 %r393, 32 -%r398 = trunc i448 %r397 to i32 -%r400 = getelementptr i32, i32* %r1, i32 1 -store i32 %r398, i32* %r400 -%r401 = lshr i448 %r397, 32 -%r402 = trunc i448 %r401 to i32 -%r404 = getelementptr i32, i32* %r1, i32 2 -store i32 %r402, i32* %r404 -%r405 = lshr i448 %r401, 32 -%r406 = trunc i448 %r405 to i32 -%r408 = getelementptr i32, i32* %r1, i32 3 -store i32 %r406, i32* %r408 -%r409 = lshr i448 %r405, 32 -%r410 = trunc i448 %r409 to i32 -%r412 = getelementptr i32, i32* %r1, i32 4 -store i32 %r410, i32* %r412 -%r413 = lshr i448 %r409, 32 -%r414 = trunc i448 %r413 to i32 -%r416 = getelementptr i32, i32* %r1, i32 5 -store i32 %r414, i32* %r416 -%r417 = lshr i448 %r413, 32 -%r418 = trunc i448 %r417 to i32 -%r420 = getelementptr i32, i32* %r1, i32 6 -store i32 %r418, i32* %r420 -%r421 = lshr i448 %r417, 32 -%r422 = trunc i448 %r421 to i32 -%r424 = getelementptr i32, i32* %r1, i32 7 -store i32 %r422, i32* %r424 -%r425 = lshr i448 %r421, 32 -%r426 = trunc i448 %r425 to i32 -%r428 = getelementptr i32, i32* %r1, i32 8 -store i32 %r426, i32* %r428 -%r429 = lshr i448 %r425, 32 -%r430 = trunc i448 %r429 to i32 -%r432 = getelementptr i32, i32* %r1, i32 9 -store i32 %r430, i32* %r432 -%r433 = lshr i448 %r429, 32 -%r434 = trunc i448 %r433 to i32 -%r436 = getelementptr i32, i32* %r1, i32 10 -store i32 %r434, i32* %r436 -%r437 = lshr i448 %r433, 32 -%r438 = trunc i448 %r437 to i32 -%r440 = getelementptr i32, i32* %r1, i32 11 -store i32 %r438, i32* %r440 -%r441 = lshr i448 %r437, 32 -%r442 = trunc i448 %r441 to i32 -%r444 = getelementptr i32, i32* %r1, i32 12 -store i32 %r442, i32* %r444 -%r445 = lshr i448 %r441, 32 -%r446 = trunc i448 %r445 to i32 -%r448 = getelementptr i32, i32* %r1, i32 13 -store i32 %r446, i32* %r448 -ret void -} -define i32 @mcl_fp_addPre14L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r98 = load i32, i32* %r4 -%r99 = zext i32 %r98 to i64 -%r101 = getelementptr i32, i32* %r4, i32 1 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i64 -%r104 = shl i64 %r103, 32 -%r105 = or i64 %r99, %r104 -%r106 = zext i64 %r105 to i96 -%r108 = getelementptr i32, i32* %r4, i32 2 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i96 -%r111 = shl i96 %r110, 64 -%r112 = or i96 %r106, %r111 -%r113 = zext i96 %r112 to i128 -%r115 = getelementptr i32, i32* %r4, i32 3 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i128 -%r118 = shl i128 %r117, 96 -%r119 = or i128 %r113, %r118 -%r120 = zext i128 %r119 to i160 -%r122 = getelementptr i32, i32* %r4, i32 4 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i160 -%r125 = shl i160 %r124, 128 -%r126 = or i160 %r120, %r125 -%r127 = zext i160 %r126 to i192 -%r129 = getelementptr i32, i32* %r4, i32 5 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i192 -%r132 = shl i192 %r131, 160 -%r133 = or i192 %r127, %r132 -%r134 = zext i192 %r133 to i224 -%r136 = getelementptr i32, i32* %r4, i32 6 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i224 -%r139 = shl i224 %r138, 192 -%r140 = or i224 %r134, %r139 -%r141 = zext i224 %r140 to i256 -%r143 = getelementptr i32, i32* %r4, i32 7 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i256 -%r146 = shl i256 %r145, 224 -%r147 = or i256 %r141, %r146 -%r148 = zext i256 %r147 to i288 -%r150 = getelementptr i32, i32* %r4, i32 8 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i288 -%r153 = shl i288 %r152, 256 -%r154 = or i288 %r148, %r153 -%r155 = zext i288 %r154 to i320 -%r157 = getelementptr i32, i32* %r4, i32 9 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i320 -%r160 = shl i320 %r159, 288 -%r161 = or i320 %r155, %r160 -%r162 = zext i320 %r161 to i352 -%r164 = getelementptr i32, i32* %r4, i32 10 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i352 -%r167 = shl i352 %r166, 320 -%r168 = or i352 %r162, %r167 -%r169 = zext i352 %r168 to i384 -%r171 = getelementptr i32, i32* %r4, i32 11 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i384 -%r174 = shl i384 %r173, 352 -%r175 = or i384 %r169, %r174 -%r176 = zext i384 %r175 to i416 -%r178 = getelementptr i32, i32* %r4, i32 12 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i416 -%r181 = shl i416 %r180, 384 -%r182 = or i416 %r176, %r181 -%r183 = zext i416 %r182 to i448 -%r185 = getelementptr i32, i32* %r4, i32 13 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i448 -%r188 = shl i448 %r187, 416 -%r189 = or i448 %r183, %r188 -%r190 = zext i448 %r189 to i480 -%r191 = add i480 %r97, %r190 -%r192 = trunc i480 %r191 to i448 -%r193 = trunc i448 %r192 to i32 -%r195 = getelementptr i32, i32* %r2, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i448 %r192, 32 -%r197 = trunc i448 %r196 to i32 -%r199 = getelementptr i32, i32* %r2, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i448 %r196, 32 -%r201 = trunc i448 %r200 to i32 -%r203 = getelementptr i32, i32* %r2, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i448 %r200, 32 -%r205 = trunc i448 %r204 to i32 -%r207 = getelementptr i32, i32* %r2, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i448 %r204, 32 -%r209 = trunc i448 %r208 to i32 -%r211 = getelementptr i32, i32* %r2, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i448 %r208, 32 -%r213 = trunc i448 %r212 to i32 -%r215 = getelementptr i32, i32* %r2, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i448 %r212, 32 -%r217 = trunc i448 %r216 to i32 -%r219 = getelementptr i32, i32* %r2, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i448 %r216, 32 -%r221 = trunc i448 %r220 to i32 -%r223 = getelementptr i32, i32* %r2, i32 7 -store i32 %r221, i32* %r223 -%r224 = lshr i448 %r220, 32 -%r225 = trunc i448 %r224 to i32 -%r227 = getelementptr i32, i32* %r2, i32 8 -store i32 %r225, i32* %r227 -%r228 = lshr i448 %r224, 32 -%r229 = trunc i448 %r228 to i32 -%r231 = getelementptr i32, i32* %r2, i32 9 -store i32 %r229, i32* %r231 -%r232 = lshr i448 %r228, 32 -%r233 = trunc i448 %r232 to i32 -%r235 = getelementptr i32, i32* %r2, i32 10 -store i32 %r233, i32* %r235 -%r236 = lshr i448 %r232, 32 -%r237 = trunc i448 %r236 to i32 -%r239 = getelementptr i32, i32* %r2, i32 11 -store i32 %r237, i32* %r239 -%r240 = lshr i448 %r236, 32 -%r241 = trunc i448 %r240 to i32 -%r243 = getelementptr i32, i32* %r2, i32 12 -store i32 %r241, i32* %r243 -%r244 = lshr i448 %r240, 32 -%r245 = trunc i448 %r244 to i32 -%r247 = getelementptr i32, i32* %r2, i32 13 -store i32 %r245, i32* %r247 -%r248 = lshr i480 %r191, 448 -%r249 = trunc i480 %r248 to i32 -ret i32 %r249 -} -define i32 @mcl_fp_subPre14L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r98 = load i32, i32* %r4 -%r99 = zext i32 %r98 to i64 -%r101 = getelementptr i32, i32* %r4, i32 1 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i64 -%r104 = shl i64 %r103, 32 -%r105 = or i64 %r99, %r104 -%r106 = zext i64 %r105 to i96 -%r108 = getelementptr i32, i32* %r4, i32 2 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i96 -%r111 = shl i96 %r110, 64 -%r112 = or i96 %r106, %r111 -%r113 = zext i96 %r112 to i128 -%r115 = getelementptr i32, i32* %r4, i32 3 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i128 -%r118 = shl i128 %r117, 96 -%r119 = or i128 %r113, %r118 -%r120 = zext i128 %r119 to i160 -%r122 = getelementptr i32, i32* %r4, i32 4 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i160 -%r125 = shl i160 %r124, 128 -%r126 = or i160 %r120, %r125 -%r127 = zext i160 %r126 to i192 -%r129 = getelementptr i32, i32* %r4, i32 5 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i192 -%r132 = shl i192 %r131, 160 -%r133 = or i192 %r127, %r132 -%r134 = zext i192 %r133 to i224 -%r136 = getelementptr i32, i32* %r4, i32 6 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i224 -%r139 = shl i224 %r138, 192 -%r140 = or i224 %r134, %r139 -%r141 = zext i224 %r140 to i256 -%r143 = getelementptr i32, i32* %r4, i32 7 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i256 -%r146 = shl i256 %r145, 224 -%r147 = or i256 %r141, %r146 -%r148 = zext i256 %r147 to i288 -%r150 = getelementptr i32, i32* %r4, i32 8 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i288 -%r153 = shl i288 %r152, 256 -%r154 = or i288 %r148, %r153 -%r155 = zext i288 %r154 to i320 -%r157 = getelementptr i32, i32* %r4, i32 9 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i320 -%r160 = shl i320 %r159, 288 -%r161 = or i320 %r155, %r160 -%r162 = zext i320 %r161 to i352 -%r164 = getelementptr i32, i32* %r4, i32 10 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i352 -%r167 = shl i352 %r166, 320 -%r168 = or i352 %r162, %r167 -%r169 = zext i352 %r168 to i384 -%r171 = getelementptr i32, i32* %r4, i32 11 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i384 -%r174 = shl i384 %r173, 352 -%r175 = or i384 %r169, %r174 -%r176 = zext i384 %r175 to i416 -%r178 = getelementptr i32, i32* %r4, i32 12 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i416 -%r181 = shl i416 %r180, 384 -%r182 = or i416 %r176, %r181 -%r183 = zext i416 %r182 to i448 -%r185 = getelementptr i32, i32* %r4, i32 13 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i448 -%r188 = shl i448 %r187, 416 -%r189 = or i448 %r183, %r188 -%r190 = zext i448 %r189 to i480 -%r191 = sub i480 %r97, %r190 -%r192 = trunc i480 %r191 to i448 -%r193 = trunc i448 %r192 to i32 -%r195 = getelementptr i32, i32* %r2, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i448 %r192, 32 -%r197 = trunc i448 %r196 to i32 -%r199 = getelementptr i32, i32* %r2, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i448 %r196, 32 -%r201 = trunc i448 %r200 to i32 -%r203 = getelementptr i32, i32* %r2, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i448 %r200, 32 -%r205 = trunc i448 %r204 to i32 -%r207 = getelementptr i32, i32* %r2, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i448 %r204, 32 -%r209 = trunc i448 %r208 to i32 -%r211 = getelementptr i32, i32* %r2, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i448 %r208, 32 -%r213 = trunc i448 %r212 to i32 -%r215 = getelementptr i32, i32* %r2, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i448 %r212, 32 -%r217 = trunc i448 %r216 to i32 -%r219 = getelementptr i32, i32* %r2, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i448 %r216, 32 -%r221 = trunc i448 %r220 to i32 -%r223 = getelementptr i32, i32* %r2, i32 7 -store i32 %r221, i32* %r223 -%r224 = lshr i448 %r220, 32 -%r225 = trunc i448 %r224 to i32 -%r227 = getelementptr i32, i32* %r2, i32 8 -store i32 %r225, i32* %r227 -%r228 = lshr i448 %r224, 32 -%r229 = trunc i448 %r228 to i32 -%r231 = getelementptr i32, i32* %r2, i32 9 -store i32 %r229, i32* %r231 -%r232 = lshr i448 %r228, 32 -%r233 = trunc i448 %r232 to i32 -%r235 = getelementptr i32, i32* %r2, i32 10 -store i32 %r233, i32* %r235 -%r236 = lshr i448 %r232, 32 -%r237 = trunc i448 %r236 to i32 -%r239 = getelementptr i32, i32* %r2, i32 11 -store i32 %r237, i32* %r239 -%r240 = lshr i448 %r236, 32 -%r241 = trunc i448 %r240 to i32 -%r243 = getelementptr i32, i32* %r2, i32 12 -store i32 %r241, i32* %r243 -%r244 = lshr i448 %r240, 32 -%r245 = trunc i448 %r244 to i32 -%r247 = getelementptr i32, i32* %r2, i32 13 -store i32 %r245, i32* %r247 -%r248 = lshr i480 %r191, 448 -%r249 = trunc i480 %r248 to i32 -%r251 = and i32 %r249, 1 -ret i32 %r251 -} -define void @mcl_fp_shr1_14L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = zext i352 %r73 to i384 -%r76 = getelementptr i32, i32* %r2, i32 11 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i384 -%r79 = shl i384 %r78, 352 -%r80 = or i384 %r74, %r79 -%r81 = zext i384 %r80 to i416 -%r83 = getelementptr i32, i32* %r2, i32 12 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i416 -%r86 = shl i416 %r85, 384 -%r87 = or i416 %r81, %r86 -%r88 = zext i416 %r87 to i448 -%r90 = getelementptr i32, i32* %r2, i32 13 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i448 -%r93 = shl i448 %r92, 416 -%r94 = or i448 %r88, %r93 -%r95 = lshr i448 %r94, 1 -%r96 = trunc i448 %r95 to i32 -%r98 = getelementptr i32, i32* %r1, i32 0 -store i32 %r96, i32* %r98 -%r99 = lshr i448 %r95, 32 -%r100 = trunc i448 %r99 to i32 -%r102 = getelementptr i32, i32* %r1, i32 1 -store i32 %r100, i32* %r102 -%r103 = lshr i448 %r99, 32 -%r104 = trunc i448 %r103 to i32 -%r106 = getelementptr i32, i32* %r1, i32 2 -store i32 %r104, i32* %r106 -%r107 = lshr i448 %r103, 32 -%r108 = trunc i448 %r107 to i32 -%r110 = getelementptr i32, i32* %r1, i32 3 -store i32 %r108, i32* %r110 -%r111 = lshr i448 %r107, 32 -%r112 = trunc i448 %r111 to i32 -%r114 = getelementptr i32, i32* %r1, i32 4 -store i32 %r112, i32* %r114 -%r115 = lshr i448 %r111, 32 -%r116 = trunc i448 %r115 to i32 -%r118 = getelementptr i32, i32* %r1, i32 5 -store i32 %r116, i32* %r118 -%r119 = lshr i448 %r115, 32 -%r120 = trunc i448 %r119 to i32 -%r122 = getelementptr i32, i32* %r1, i32 6 -store i32 %r120, i32* %r122 -%r123 = lshr i448 %r119, 32 -%r124 = trunc i448 %r123 to i32 -%r126 = getelementptr i32, i32* %r1, i32 7 -store i32 %r124, i32* %r126 -%r127 = lshr i448 %r123, 32 -%r128 = trunc i448 %r127 to i32 -%r130 = getelementptr i32, i32* %r1, i32 8 -store i32 %r128, i32* %r130 -%r131 = lshr i448 %r127, 32 -%r132 = trunc i448 %r131 to i32 -%r134 = getelementptr i32, i32* %r1, i32 9 -store i32 %r132, i32* %r134 -%r135 = lshr i448 %r131, 32 -%r136 = trunc i448 %r135 to i32 -%r138 = getelementptr i32, i32* %r1, i32 10 -store i32 %r136, i32* %r138 -%r139 = lshr i448 %r135, 32 -%r140 = trunc i448 %r139 to i32 -%r142 = getelementptr i32, i32* %r1, i32 11 -store i32 %r140, i32* %r142 -%r143 = lshr i448 %r139, 32 -%r144 = trunc i448 %r143 to i32 -%r146 = getelementptr i32, i32* %r1, i32 12 -store i32 %r144, i32* %r146 -%r147 = lshr i448 %r143, 32 -%r148 = trunc i448 %r147 to i32 -%r150 = getelementptr i32, i32* %r1, i32 13 -store i32 %r148, i32* %r150 -ret void -} -define void @mcl_fp_add14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = zext i448 %r96 to i480 -%r190 = zext i448 %r188 to i480 -%r191 = add i480 %r189, %r190 -%r192 = trunc i480 %r191 to i448 -%r193 = trunc i448 %r192 to i32 -%r195 = getelementptr i32, i32* %r1, i32 0 -store i32 %r193, i32* %r195 -%r196 = lshr i448 %r192, 32 -%r197 = trunc i448 %r196 to i32 -%r199 = getelementptr i32, i32* %r1, i32 1 -store i32 %r197, i32* %r199 -%r200 = lshr i448 %r196, 32 -%r201 = trunc i448 %r200 to i32 -%r203 = getelementptr i32, i32* %r1, i32 2 -store i32 %r201, i32* %r203 -%r204 = lshr i448 %r200, 32 -%r205 = trunc i448 %r204 to i32 -%r207 = getelementptr i32, i32* %r1, i32 3 -store i32 %r205, i32* %r207 -%r208 = lshr i448 %r204, 32 -%r209 = trunc i448 %r208 to i32 -%r211 = getelementptr i32, i32* %r1, i32 4 -store i32 %r209, i32* %r211 -%r212 = lshr i448 %r208, 32 -%r213 = trunc i448 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 5 -store i32 %r213, i32* %r215 -%r216 = lshr i448 %r212, 32 -%r217 = trunc i448 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 6 -store i32 %r217, i32* %r219 -%r220 = lshr i448 %r216, 32 -%r221 = trunc i448 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 7 -store i32 %r221, i32* %r223 -%r224 = lshr i448 %r220, 32 -%r225 = trunc i448 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 8 -store i32 %r225, i32* %r227 -%r228 = lshr i448 %r224, 32 -%r229 = trunc i448 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 9 -store i32 %r229, i32* %r231 -%r232 = lshr i448 %r228, 32 -%r233 = trunc i448 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 10 -store i32 %r233, i32* %r235 -%r236 = lshr i448 %r232, 32 -%r237 = trunc i448 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 11 -store i32 %r237, i32* %r239 -%r240 = lshr i448 %r236, 32 -%r241 = trunc i448 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 12 -store i32 %r241, i32* %r243 -%r244 = lshr i448 %r240, 32 -%r245 = trunc i448 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 13 -store i32 %r245, i32* %r247 -%r248 = load i32, i32* %r4 -%r249 = zext i32 %r248 to i64 -%r251 = getelementptr i32, i32* %r4, i32 1 -%r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i64 -%r254 = shl i64 %r253, 32 -%r255 = or i64 %r249, %r254 -%r256 = zext i64 %r255 to i96 -%r258 = getelementptr i32, i32* %r4, i32 2 -%r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i96 -%r261 = shl i96 %r260, 64 -%r262 = or i96 %r256, %r261 -%r263 = zext i96 %r262 to i128 -%r265 = getelementptr i32, i32* %r4, i32 3 -%r266 = load i32, i32* %r265 -%r267 = zext i32 %r266 to i128 -%r268 = shl i128 %r267, 96 -%r269 = or i128 %r263, %r268 -%r270 = zext i128 %r269 to i160 -%r272 = getelementptr i32, i32* %r4, i32 4 -%r273 = load i32, i32* %r272 -%r274 = zext i32 %r273 to i160 -%r275 = shl i160 %r274, 128 -%r276 = or i160 %r270, %r275 -%r277 = zext i160 %r276 to i192 -%r279 = getelementptr i32, i32* %r4, i32 5 -%r280 = load i32, i32* %r279 -%r281 = zext i32 %r280 to i192 -%r282 = shl i192 %r281, 160 -%r283 = or i192 %r277, %r282 -%r284 = zext i192 %r283 to i224 -%r286 = getelementptr i32, i32* %r4, i32 6 -%r287 = load i32, i32* %r286 -%r288 = zext i32 %r287 to i224 -%r289 = shl i224 %r288, 192 -%r290 = or i224 %r284, %r289 -%r291 = zext i224 %r290 to i256 -%r293 = getelementptr i32, i32* %r4, i32 7 -%r294 = load i32, i32* %r293 -%r295 = zext i32 %r294 to i256 -%r296 = shl i256 %r295, 224 -%r297 = or i256 %r291, %r296 -%r298 = zext i256 %r297 to i288 -%r300 = getelementptr i32, i32* %r4, i32 8 -%r301 = load i32, i32* %r300 -%r302 = zext i32 %r301 to i288 -%r303 = shl i288 %r302, 256 -%r304 = or i288 %r298, %r303 -%r305 = zext i288 %r304 to i320 -%r307 = getelementptr i32, i32* %r4, i32 9 -%r308 = load i32, i32* %r307 -%r309 = zext i32 %r308 to i320 -%r310 = shl i320 %r309, 288 -%r311 = or i320 %r305, %r310 -%r312 = zext i320 %r311 to i352 -%r314 = getelementptr i32, i32* %r4, i32 10 -%r315 = load i32, i32* %r314 -%r316 = zext i32 %r315 to i352 -%r317 = shl i352 %r316, 320 -%r318 = or i352 %r312, %r317 -%r319 = zext i352 %r318 to i384 -%r321 = getelementptr i32, i32* %r4, i32 11 -%r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i384 -%r324 = shl i384 %r323, 352 -%r325 = or i384 %r319, %r324 -%r326 = zext i384 %r325 to i416 -%r328 = getelementptr i32, i32* %r4, i32 12 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i416 -%r331 = shl i416 %r330, 384 -%r332 = or i416 %r326, %r331 -%r333 = zext i416 %r332 to i448 -%r335 = getelementptr i32, i32* %r4, i32 13 -%r336 = load i32, i32* %r335 -%r337 = zext i32 %r336 to i448 -%r338 = shl i448 %r337, 416 -%r339 = or i448 %r333, %r338 -%r340 = zext i448 %r339 to i480 -%r341 = sub i480 %r191, %r340 -%r342 = lshr i480 %r341, 448 -%r343 = trunc i480 %r342 to i1 -br i1%r343, label %carry, label %nocarry -nocarry: -%r344 = trunc i480 %r341 to i448 -%r345 = trunc i448 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 0 -store i32 %r345, i32* %r347 -%r348 = lshr i448 %r344, 32 -%r349 = trunc i448 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 1 -store i32 %r349, i32* %r351 -%r352 = lshr i448 %r348, 32 -%r353 = trunc i448 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 2 -store i32 %r353, i32* %r355 -%r356 = lshr i448 %r352, 32 -%r357 = trunc i448 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 3 -store i32 %r357, i32* %r359 -%r360 = lshr i448 %r356, 32 -%r361 = trunc i448 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 4 -store i32 %r361, i32* %r363 -%r364 = lshr i448 %r360, 32 -%r365 = trunc i448 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 5 -store i32 %r365, i32* %r367 -%r368 = lshr i448 %r364, 32 -%r369 = trunc i448 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 6 -store i32 %r369, i32* %r371 -%r372 = lshr i448 %r368, 32 -%r373 = trunc i448 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 7 -store i32 %r373, i32* %r375 -%r376 = lshr i448 %r372, 32 -%r377 = trunc i448 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 8 -store i32 %r377, i32* %r379 -%r380 = lshr i448 %r376, 32 -%r381 = trunc i448 %r380 to i32 -%r383 = getelementptr i32, i32* %r1, i32 9 -store i32 %r381, i32* %r383 -%r384 = lshr i448 %r380, 32 -%r385 = trunc i448 %r384 to i32 -%r387 = getelementptr i32, i32* %r1, i32 10 -store i32 %r385, i32* %r387 -%r388 = lshr i448 %r384, 32 -%r389 = trunc i448 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 11 -store i32 %r389, i32* %r391 -%r392 = lshr i448 %r388, 32 -%r393 = trunc i448 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 12 -store i32 %r393, i32* %r395 -%r396 = lshr i448 %r392, 32 -%r397 = trunc i448 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 13 -store i32 %r397, i32* %r399 -ret void -carry: -ret void -} -define void @mcl_fp_addNF14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = add i448 %r96, %r188 -%r190 = load i32, i32* %r4 -%r191 = zext i32 %r190 to i64 -%r193 = getelementptr i32, i32* %r4, i32 1 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i64 -%r196 = shl i64 %r195, 32 -%r197 = or i64 %r191, %r196 -%r198 = zext i64 %r197 to i96 -%r200 = getelementptr i32, i32* %r4, i32 2 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i96 -%r203 = shl i96 %r202, 64 -%r204 = or i96 %r198, %r203 -%r205 = zext i96 %r204 to i128 -%r207 = getelementptr i32, i32* %r4, i32 3 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i128 -%r210 = shl i128 %r209, 96 -%r211 = or i128 %r205, %r210 -%r212 = zext i128 %r211 to i160 -%r214 = getelementptr i32, i32* %r4, i32 4 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i160 -%r217 = shl i160 %r216, 128 -%r218 = or i160 %r212, %r217 -%r219 = zext i160 %r218 to i192 -%r221 = getelementptr i32, i32* %r4, i32 5 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i192 -%r224 = shl i192 %r223, 160 -%r225 = or i192 %r219, %r224 -%r226 = zext i192 %r225 to i224 -%r228 = getelementptr i32, i32* %r4, i32 6 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i224 -%r231 = shl i224 %r230, 192 -%r232 = or i224 %r226, %r231 -%r233 = zext i224 %r232 to i256 -%r235 = getelementptr i32, i32* %r4, i32 7 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i256 -%r238 = shl i256 %r237, 224 -%r239 = or i256 %r233, %r238 -%r240 = zext i256 %r239 to i288 -%r242 = getelementptr i32, i32* %r4, i32 8 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i288 -%r245 = shl i288 %r244, 256 -%r246 = or i288 %r240, %r245 -%r247 = zext i288 %r246 to i320 -%r249 = getelementptr i32, i32* %r4, i32 9 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i320 -%r252 = shl i320 %r251, 288 -%r253 = or i320 %r247, %r252 -%r254 = zext i320 %r253 to i352 -%r256 = getelementptr i32, i32* %r4, i32 10 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i352 -%r259 = shl i352 %r258, 320 -%r260 = or i352 %r254, %r259 -%r261 = zext i352 %r260 to i384 -%r263 = getelementptr i32, i32* %r4, i32 11 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i384 -%r266 = shl i384 %r265, 352 -%r267 = or i384 %r261, %r266 -%r268 = zext i384 %r267 to i416 -%r270 = getelementptr i32, i32* %r4, i32 12 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i416 -%r273 = shl i416 %r272, 384 -%r274 = or i416 %r268, %r273 -%r275 = zext i416 %r274 to i448 -%r277 = getelementptr i32, i32* %r4, i32 13 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i448 -%r280 = shl i448 %r279, 416 -%r281 = or i448 %r275, %r280 -%r282 = sub i448 %r189, %r281 -%r283 = lshr i448 %r282, 447 -%r284 = trunc i448 %r283 to i1 -%r285 = select i1 %r284, i448 %r189, i448 %r282 -%r286 = trunc i448 %r285 to i32 -%r288 = getelementptr i32, i32* %r1, i32 0 -store i32 %r286, i32* %r288 -%r289 = lshr i448 %r285, 32 -%r290 = trunc i448 %r289 to i32 -%r292 = getelementptr i32, i32* %r1, i32 1 -store i32 %r290, i32* %r292 -%r293 = lshr i448 %r289, 32 -%r294 = trunc i448 %r293 to i32 -%r296 = getelementptr i32, i32* %r1, i32 2 -store i32 %r294, i32* %r296 -%r297 = lshr i448 %r293, 32 -%r298 = trunc i448 %r297 to i32 -%r300 = getelementptr i32, i32* %r1, i32 3 -store i32 %r298, i32* %r300 -%r301 = lshr i448 %r297, 32 -%r302 = trunc i448 %r301 to i32 -%r304 = getelementptr i32, i32* %r1, i32 4 -store i32 %r302, i32* %r304 -%r305 = lshr i448 %r301, 32 -%r306 = trunc i448 %r305 to i32 -%r308 = getelementptr i32, i32* %r1, i32 5 -store i32 %r306, i32* %r308 -%r309 = lshr i448 %r305, 32 -%r310 = trunc i448 %r309 to i32 -%r312 = getelementptr i32, i32* %r1, i32 6 -store i32 %r310, i32* %r312 -%r313 = lshr i448 %r309, 32 -%r314 = trunc i448 %r313 to i32 -%r316 = getelementptr i32, i32* %r1, i32 7 -store i32 %r314, i32* %r316 -%r317 = lshr i448 %r313, 32 -%r318 = trunc i448 %r317 to i32 -%r320 = getelementptr i32, i32* %r1, i32 8 -store i32 %r318, i32* %r320 -%r321 = lshr i448 %r317, 32 -%r322 = trunc i448 %r321 to i32 -%r324 = getelementptr i32, i32* %r1, i32 9 -store i32 %r322, i32* %r324 -%r325 = lshr i448 %r321, 32 -%r326 = trunc i448 %r325 to i32 -%r328 = getelementptr i32, i32* %r1, i32 10 -store i32 %r326, i32* %r328 -%r329 = lshr i448 %r325, 32 -%r330 = trunc i448 %r329 to i32 -%r332 = getelementptr i32, i32* %r1, i32 11 -store i32 %r330, i32* %r332 -%r333 = lshr i448 %r329, 32 -%r334 = trunc i448 %r333 to i32 -%r336 = getelementptr i32, i32* %r1, i32 12 -store i32 %r334, i32* %r336 -%r337 = lshr i448 %r333, 32 -%r338 = trunc i448 %r337 to i32 -%r340 = getelementptr i32, i32* %r1, i32 13 -store i32 %r338, i32* %r340 -ret void -} -define void @mcl_fp_sub14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = zext i448 %r96 to i480 -%r190 = zext i448 %r188 to i480 -%r191 = sub i480 %r189, %r190 -%r192 = trunc i480 %r191 to i448 -%r193 = lshr i480 %r191, 448 -%r194 = trunc i480 %r193 to i1 -%r195 = trunc i448 %r192 to i32 -%r197 = getelementptr i32, i32* %r1, i32 0 -store i32 %r195, i32* %r197 -%r198 = lshr i448 %r192, 32 -%r199 = trunc i448 %r198 to i32 -%r201 = getelementptr i32, i32* %r1, i32 1 -store i32 %r199, i32* %r201 -%r202 = lshr i448 %r198, 32 -%r203 = trunc i448 %r202 to i32 -%r205 = getelementptr i32, i32* %r1, i32 2 -store i32 %r203, i32* %r205 -%r206 = lshr i448 %r202, 32 -%r207 = trunc i448 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 3 -store i32 %r207, i32* %r209 -%r210 = lshr i448 %r206, 32 -%r211 = trunc i448 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 4 -store i32 %r211, i32* %r213 -%r214 = lshr i448 %r210, 32 -%r215 = trunc i448 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 5 -store i32 %r215, i32* %r217 -%r218 = lshr i448 %r214, 32 -%r219 = trunc i448 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 6 -store i32 %r219, i32* %r221 -%r222 = lshr i448 %r218, 32 -%r223 = trunc i448 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 7 -store i32 %r223, i32* %r225 -%r226 = lshr i448 %r222, 32 -%r227 = trunc i448 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 8 -store i32 %r227, i32* %r229 -%r230 = lshr i448 %r226, 32 -%r231 = trunc i448 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 9 -store i32 %r231, i32* %r233 -%r234 = lshr i448 %r230, 32 -%r235 = trunc i448 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 10 -store i32 %r235, i32* %r237 -%r238 = lshr i448 %r234, 32 -%r239 = trunc i448 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 11 -store i32 %r239, i32* %r241 -%r242 = lshr i448 %r238, 32 -%r243 = trunc i448 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 12 -store i32 %r243, i32* %r245 -%r246 = lshr i448 %r242, 32 -%r247 = trunc i448 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 13 -store i32 %r247, i32* %r249 -br i1%r194, label %carry, label %nocarry -nocarry: -ret void -carry: -%r250 = load i32, i32* %r4 -%r251 = zext i32 %r250 to i64 -%r253 = getelementptr i32, i32* %r4, i32 1 -%r254 = load i32, i32* %r253 -%r255 = zext i32 %r254 to i64 -%r256 = shl i64 %r255, 32 -%r257 = or i64 %r251, %r256 -%r258 = zext i64 %r257 to i96 -%r260 = getelementptr i32, i32* %r4, i32 2 -%r261 = load i32, i32* %r260 -%r262 = zext i32 %r261 to i96 -%r263 = shl i96 %r262, 64 -%r264 = or i96 %r258, %r263 -%r265 = zext i96 %r264 to i128 -%r267 = getelementptr i32, i32* %r4, i32 3 -%r268 = load i32, i32* %r267 -%r269 = zext i32 %r268 to i128 -%r270 = shl i128 %r269, 96 -%r271 = or i128 %r265, %r270 -%r272 = zext i128 %r271 to i160 -%r274 = getelementptr i32, i32* %r4, i32 4 -%r275 = load i32, i32* %r274 -%r276 = zext i32 %r275 to i160 -%r277 = shl i160 %r276, 128 -%r278 = or i160 %r272, %r277 -%r279 = zext i160 %r278 to i192 -%r281 = getelementptr i32, i32* %r4, i32 5 -%r282 = load i32, i32* %r281 -%r283 = zext i32 %r282 to i192 -%r284 = shl i192 %r283, 160 -%r285 = or i192 %r279, %r284 -%r286 = zext i192 %r285 to i224 -%r288 = getelementptr i32, i32* %r4, i32 6 -%r289 = load i32, i32* %r288 -%r290 = zext i32 %r289 to i224 -%r291 = shl i224 %r290, 192 -%r292 = or i224 %r286, %r291 -%r293 = zext i224 %r292 to i256 -%r295 = getelementptr i32, i32* %r4, i32 7 -%r296 = load i32, i32* %r295 -%r297 = zext i32 %r296 to i256 -%r298 = shl i256 %r297, 224 -%r299 = or i256 %r293, %r298 -%r300 = zext i256 %r299 to i288 -%r302 = getelementptr i32, i32* %r4, i32 8 -%r303 = load i32, i32* %r302 -%r304 = zext i32 %r303 to i288 -%r305 = shl i288 %r304, 256 -%r306 = or i288 %r300, %r305 -%r307 = zext i288 %r306 to i320 -%r309 = getelementptr i32, i32* %r4, i32 9 -%r310 = load i32, i32* %r309 -%r311 = zext i32 %r310 to i320 -%r312 = shl i320 %r311, 288 -%r313 = or i320 %r307, %r312 -%r314 = zext i320 %r313 to i352 -%r316 = getelementptr i32, i32* %r4, i32 10 -%r317 = load i32, i32* %r316 -%r318 = zext i32 %r317 to i352 -%r319 = shl i352 %r318, 320 -%r320 = or i352 %r314, %r319 -%r321 = zext i352 %r320 to i384 -%r323 = getelementptr i32, i32* %r4, i32 11 -%r324 = load i32, i32* %r323 -%r325 = zext i32 %r324 to i384 -%r326 = shl i384 %r325, 352 -%r327 = or i384 %r321, %r326 -%r328 = zext i384 %r327 to i416 -%r330 = getelementptr i32, i32* %r4, i32 12 -%r331 = load i32, i32* %r330 -%r332 = zext i32 %r331 to i416 -%r333 = shl i416 %r332, 384 -%r334 = or i416 %r328, %r333 -%r335 = zext i416 %r334 to i448 -%r337 = getelementptr i32, i32* %r4, i32 13 -%r338 = load i32, i32* %r337 -%r339 = zext i32 %r338 to i448 -%r340 = shl i448 %r339, 416 -%r341 = or i448 %r335, %r340 -%r342 = add i448 %r192, %r341 -%r343 = trunc i448 %r342 to i32 -%r345 = getelementptr i32, i32* %r1, i32 0 -store i32 %r343, i32* %r345 -%r346 = lshr i448 %r342, 32 -%r347 = trunc i448 %r346 to i32 -%r349 = getelementptr i32, i32* %r1, i32 1 -store i32 %r347, i32* %r349 -%r350 = lshr i448 %r346, 32 -%r351 = trunc i448 %r350 to i32 -%r353 = getelementptr i32, i32* %r1, i32 2 -store i32 %r351, i32* %r353 -%r354 = lshr i448 %r350, 32 -%r355 = trunc i448 %r354 to i32 -%r357 = getelementptr i32, i32* %r1, i32 3 -store i32 %r355, i32* %r357 -%r358 = lshr i448 %r354, 32 -%r359 = trunc i448 %r358 to i32 -%r361 = getelementptr i32, i32* %r1, i32 4 -store i32 %r359, i32* %r361 -%r362 = lshr i448 %r358, 32 -%r363 = trunc i448 %r362 to i32 -%r365 = getelementptr i32, i32* %r1, i32 5 -store i32 %r363, i32* %r365 -%r366 = lshr i448 %r362, 32 -%r367 = trunc i448 %r366 to i32 -%r369 = getelementptr i32, i32* %r1, i32 6 -store i32 %r367, i32* %r369 -%r370 = lshr i448 %r366, 32 -%r371 = trunc i448 %r370 to i32 -%r373 = getelementptr i32, i32* %r1, i32 7 -store i32 %r371, i32* %r373 -%r374 = lshr i448 %r370, 32 -%r375 = trunc i448 %r374 to i32 -%r377 = getelementptr i32, i32* %r1, i32 8 -store i32 %r375, i32* %r377 -%r378 = lshr i448 %r374, 32 -%r379 = trunc i448 %r378 to i32 -%r381 = getelementptr i32, i32* %r1, i32 9 -store i32 %r379, i32* %r381 -%r382 = lshr i448 %r378, 32 -%r383 = trunc i448 %r382 to i32 -%r385 = getelementptr i32, i32* %r1, i32 10 -store i32 %r383, i32* %r385 -%r386 = lshr i448 %r382, 32 -%r387 = trunc i448 %r386 to i32 -%r389 = getelementptr i32, i32* %r1, i32 11 -store i32 %r387, i32* %r389 -%r390 = lshr i448 %r386, 32 -%r391 = trunc i448 %r390 to i32 -%r393 = getelementptr i32, i32* %r1, i32 12 -store i32 %r391, i32* %r393 -%r394 = lshr i448 %r390, 32 -%r395 = trunc i448 %r394 to i32 -%r397 = getelementptr i32, i32* %r1, i32 13 -store i32 %r395, i32* %r397 -ret void -} -define void @mcl_fp_subNF14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = load i32, i32* %r3 -%r98 = zext i32 %r97 to i64 -%r100 = getelementptr i32, i32* %r3, i32 1 -%r101 = load i32, i32* %r100 -%r102 = zext i32 %r101 to i64 -%r103 = shl i64 %r102, 32 -%r104 = or i64 %r98, %r103 -%r105 = zext i64 %r104 to i96 -%r107 = getelementptr i32, i32* %r3, i32 2 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i96 -%r110 = shl i96 %r109, 64 -%r111 = or i96 %r105, %r110 -%r112 = zext i96 %r111 to i128 -%r114 = getelementptr i32, i32* %r3, i32 3 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i128 -%r117 = shl i128 %r116, 96 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i160 -%r121 = getelementptr i32, i32* %r3, i32 4 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i160 -%r124 = shl i160 %r123, 128 -%r125 = or i160 %r119, %r124 -%r126 = zext i160 %r125 to i192 -%r128 = getelementptr i32, i32* %r3, i32 5 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i192 -%r131 = shl i192 %r130, 160 -%r132 = or i192 %r126, %r131 -%r133 = zext i192 %r132 to i224 -%r135 = getelementptr i32, i32* %r3, i32 6 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i224 -%r138 = shl i224 %r137, 192 -%r139 = or i224 %r133, %r138 -%r140 = zext i224 %r139 to i256 -%r142 = getelementptr i32, i32* %r3, i32 7 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i256 -%r145 = shl i256 %r144, 224 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i288 -%r149 = getelementptr i32, i32* %r3, i32 8 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i288 -%r152 = shl i288 %r151, 256 -%r153 = or i288 %r147, %r152 -%r154 = zext i288 %r153 to i320 -%r156 = getelementptr i32, i32* %r3, i32 9 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i320 -%r159 = shl i320 %r158, 288 -%r160 = or i320 %r154, %r159 -%r161 = zext i320 %r160 to i352 -%r163 = getelementptr i32, i32* %r3, i32 10 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r161, %r166 -%r168 = zext i352 %r167 to i384 -%r170 = getelementptr i32, i32* %r3, i32 11 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i384 -%r173 = shl i384 %r172, 352 -%r174 = or i384 %r168, %r173 -%r175 = zext i384 %r174 to i416 -%r177 = getelementptr i32, i32* %r3, i32 12 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i416 -%r180 = shl i416 %r179, 384 -%r181 = or i416 %r175, %r180 -%r182 = zext i416 %r181 to i448 -%r184 = getelementptr i32, i32* %r3, i32 13 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i448 -%r187 = shl i448 %r186, 416 -%r188 = or i448 %r182, %r187 -%r189 = sub i448 %r96, %r188 -%r190 = lshr i448 %r189, 447 -%r191 = trunc i448 %r190 to i1 -%r192 = load i32, i32* %r4 -%r193 = zext i32 %r192 to i64 -%r195 = getelementptr i32, i32* %r4, i32 1 -%r196 = load i32, i32* %r195 -%r197 = zext i32 %r196 to i64 -%r198 = shl i64 %r197, 32 -%r199 = or i64 %r193, %r198 -%r200 = zext i64 %r199 to i96 -%r202 = getelementptr i32, i32* %r4, i32 2 -%r203 = load i32, i32* %r202 -%r204 = zext i32 %r203 to i96 -%r205 = shl i96 %r204, 64 -%r206 = or i96 %r200, %r205 -%r207 = zext i96 %r206 to i128 -%r209 = getelementptr i32, i32* %r4, i32 3 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i128 -%r212 = shl i128 %r211, 96 -%r213 = or i128 %r207, %r212 -%r214 = zext i128 %r213 to i160 -%r216 = getelementptr i32, i32* %r4, i32 4 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i160 -%r219 = shl i160 %r218, 128 -%r220 = or i160 %r214, %r219 -%r221 = zext i160 %r220 to i192 -%r223 = getelementptr i32, i32* %r4, i32 5 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i192 -%r226 = shl i192 %r225, 160 -%r227 = or i192 %r221, %r226 -%r228 = zext i192 %r227 to i224 -%r230 = getelementptr i32, i32* %r4, i32 6 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i224 -%r233 = shl i224 %r232, 192 -%r234 = or i224 %r228, %r233 -%r235 = zext i224 %r234 to i256 -%r237 = getelementptr i32, i32* %r4, i32 7 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i256 -%r240 = shl i256 %r239, 224 -%r241 = or i256 %r235, %r240 -%r242 = zext i256 %r241 to i288 -%r244 = getelementptr i32, i32* %r4, i32 8 -%r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i288 -%r247 = shl i288 %r246, 256 -%r248 = or i288 %r242, %r247 -%r249 = zext i288 %r248 to i320 -%r251 = getelementptr i32, i32* %r4, i32 9 -%r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i320 -%r254 = shl i320 %r253, 288 -%r255 = or i320 %r249, %r254 -%r256 = zext i320 %r255 to i352 -%r258 = getelementptr i32, i32* %r4, i32 10 -%r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i352 -%r261 = shl i352 %r260, 320 -%r262 = or i352 %r256, %r261 -%r263 = zext i352 %r262 to i384 -%r265 = getelementptr i32, i32* %r4, i32 11 -%r266 = load i32, i32* %r265 -%r267 = zext i32 %r266 to i384 -%r268 = shl i384 %r267, 352 -%r269 = or i384 %r263, %r268 -%r270 = zext i384 %r269 to i416 -%r272 = getelementptr i32, i32* %r4, i32 12 -%r273 = load i32, i32* %r272 -%r274 = zext i32 %r273 to i416 -%r275 = shl i416 %r274, 384 -%r276 = or i416 %r270, %r275 -%r277 = zext i416 %r276 to i448 -%r279 = getelementptr i32, i32* %r4, i32 13 -%r280 = load i32, i32* %r279 -%r281 = zext i32 %r280 to i448 -%r282 = shl i448 %r281, 416 -%r283 = or i448 %r277, %r282 -%r285 = select i1 %r191, i448 %r283, i448 0 -%r286 = add i448 %r189, %r285 -%r287 = trunc i448 %r286 to i32 -%r289 = getelementptr i32, i32* %r1, i32 0 -store i32 %r287, i32* %r289 -%r290 = lshr i448 %r286, 32 -%r291 = trunc i448 %r290 to i32 -%r293 = getelementptr i32, i32* %r1, i32 1 -store i32 %r291, i32* %r293 -%r294 = lshr i448 %r290, 32 -%r295 = trunc i448 %r294 to i32 -%r297 = getelementptr i32, i32* %r1, i32 2 -store i32 %r295, i32* %r297 -%r298 = lshr i448 %r294, 32 -%r299 = trunc i448 %r298 to i32 -%r301 = getelementptr i32, i32* %r1, i32 3 -store i32 %r299, i32* %r301 -%r302 = lshr i448 %r298, 32 -%r303 = trunc i448 %r302 to i32 -%r305 = getelementptr i32, i32* %r1, i32 4 -store i32 %r303, i32* %r305 -%r306 = lshr i448 %r302, 32 -%r307 = trunc i448 %r306 to i32 -%r309 = getelementptr i32, i32* %r1, i32 5 -store i32 %r307, i32* %r309 -%r310 = lshr i448 %r306, 32 -%r311 = trunc i448 %r310 to i32 -%r313 = getelementptr i32, i32* %r1, i32 6 -store i32 %r311, i32* %r313 -%r314 = lshr i448 %r310, 32 -%r315 = trunc i448 %r314 to i32 -%r317 = getelementptr i32, i32* %r1, i32 7 -store i32 %r315, i32* %r317 -%r318 = lshr i448 %r314, 32 -%r319 = trunc i448 %r318 to i32 -%r321 = getelementptr i32, i32* %r1, i32 8 -store i32 %r319, i32* %r321 -%r322 = lshr i448 %r318, 32 -%r323 = trunc i448 %r322 to i32 -%r325 = getelementptr i32, i32* %r1, i32 9 -store i32 %r323, i32* %r325 -%r326 = lshr i448 %r322, 32 -%r327 = trunc i448 %r326 to i32 -%r329 = getelementptr i32, i32* %r1, i32 10 -store i32 %r327, i32* %r329 -%r330 = lshr i448 %r326, 32 -%r331 = trunc i448 %r330 to i32 -%r333 = getelementptr i32, i32* %r1, i32 11 -store i32 %r331, i32* %r333 -%r334 = lshr i448 %r330, 32 -%r335 = trunc i448 %r334 to i32 -%r337 = getelementptr i32, i32* %r1, i32 12 -store i32 %r335, i32* %r337 -%r338 = lshr i448 %r334, 32 -%r339 = trunc i448 %r338 to i32 -%r341 = getelementptr i32, i32* %r1, i32 13 -store i32 %r339, i32* %r341 -ret void -} -define void @mcl_fpDbl_add14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = load i32, i32* %r3 -%r196 = zext i32 %r195 to i64 -%r198 = getelementptr i32, i32* %r3, i32 1 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i64 -%r201 = shl i64 %r200, 32 -%r202 = or i64 %r196, %r201 -%r203 = zext i64 %r202 to i96 -%r205 = getelementptr i32, i32* %r3, i32 2 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i96 -%r208 = shl i96 %r207, 64 -%r209 = or i96 %r203, %r208 -%r210 = zext i96 %r209 to i128 -%r212 = getelementptr i32, i32* %r3, i32 3 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i128 -%r215 = shl i128 %r214, 96 -%r216 = or i128 %r210, %r215 -%r217 = zext i128 %r216 to i160 -%r219 = getelementptr i32, i32* %r3, i32 4 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i160 -%r222 = shl i160 %r221, 128 -%r223 = or i160 %r217, %r222 -%r224 = zext i160 %r223 to i192 -%r226 = getelementptr i32, i32* %r3, i32 5 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i192 -%r229 = shl i192 %r228, 160 -%r230 = or i192 %r224, %r229 -%r231 = zext i192 %r230 to i224 -%r233 = getelementptr i32, i32* %r3, i32 6 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i224 -%r236 = shl i224 %r235, 192 -%r237 = or i224 %r231, %r236 -%r238 = zext i224 %r237 to i256 -%r240 = getelementptr i32, i32* %r3, i32 7 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i256 -%r243 = shl i256 %r242, 224 -%r244 = or i256 %r238, %r243 -%r245 = zext i256 %r244 to i288 -%r247 = getelementptr i32, i32* %r3, i32 8 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i288 -%r250 = shl i288 %r249, 256 -%r251 = or i288 %r245, %r250 -%r252 = zext i288 %r251 to i320 -%r254 = getelementptr i32, i32* %r3, i32 9 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i320 -%r257 = shl i320 %r256, 288 -%r258 = or i320 %r252, %r257 -%r259 = zext i320 %r258 to i352 -%r261 = getelementptr i32, i32* %r3, i32 10 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i352 -%r264 = shl i352 %r263, 320 -%r265 = or i352 %r259, %r264 -%r266 = zext i352 %r265 to i384 -%r268 = getelementptr i32, i32* %r3, i32 11 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i384 -%r271 = shl i384 %r270, 352 -%r272 = or i384 %r266, %r271 -%r273 = zext i384 %r272 to i416 -%r275 = getelementptr i32, i32* %r3, i32 12 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i416 -%r278 = shl i416 %r277, 384 -%r279 = or i416 %r273, %r278 -%r280 = zext i416 %r279 to i448 -%r282 = getelementptr i32, i32* %r3, i32 13 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i448 -%r285 = shl i448 %r284, 416 -%r286 = or i448 %r280, %r285 -%r287 = zext i448 %r286 to i480 -%r289 = getelementptr i32, i32* %r3, i32 14 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i480 -%r292 = shl i480 %r291, 448 -%r293 = or i480 %r287, %r292 -%r294 = zext i480 %r293 to i512 -%r296 = getelementptr i32, i32* %r3, i32 15 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i512 -%r299 = shl i512 %r298, 480 -%r300 = or i512 %r294, %r299 -%r301 = zext i512 %r300 to i544 -%r303 = getelementptr i32, i32* %r3, i32 16 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i544 -%r306 = shl i544 %r305, 512 -%r307 = or i544 %r301, %r306 -%r308 = zext i544 %r307 to i576 -%r310 = getelementptr i32, i32* %r3, i32 17 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i576 -%r313 = shl i576 %r312, 544 -%r314 = or i576 %r308, %r313 -%r315 = zext i576 %r314 to i608 -%r317 = getelementptr i32, i32* %r3, i32 18 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i608 -%r320 = shl i608 %r319, 576 -%r321 = or i608 %r315, %r320 -%r322 = zext i608 %r321 to i640 -%r324 = getelementptr i32, i32* %r3, i32 19 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i640 -%r327 = shl i640 %r326, 608 -%r328 = or i640 %r322, %r327 -%r329 = zext i640 %r328 to i672 -%r331 = getelementptr i32, i32* %r3, i32 20 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i672 -%r334 = shl i672 %r333, 640 -%r335 = or i672 %r329, %r334 -%r336 = zext i672 %r335 to i704 -%r338 = getelementptr i32, i32* %r3, i32 21 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i704 -%r341 = shl i704 %r340, 672 -%r342 = or i704 %r336, %r341 -%r343 = zext i704 %r342 to i736 -%r345 = getelementptr i32, i32* %r3, i32 22 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i736 -%r348 = shl i736 %r347, 704 -%r349 = or i736 %r343, %r348 -%r350 = zext i736 %r349 to i768 -%r352 = getelementptr i32, i32* %r3, i32 23 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i768 -%r355 = shl i768 %r354, 736 -%r356 = or i768 %r350, %r355 -%r357 = zext i768 %r356 to i800 -%r359 = getelementptr i32, i32* %r3, i32 24 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i800 -%r362 = shl i800 %r361, 768 -%r363 = or i800 %r357, %r362 -%r364 = zext i800 %r363 to i832 -%r366 = getelementptr i32, i32* %r3, i32 25 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i832 -%r369 = shl i832 %r368, 800 -%r370 = or i832 %r364, %r369 -%r371 = zext i832 %r370 to i864 -%r373 = getelementptr i32, i32* %r3, i32 26 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i864 -%r376 = shl i864 %r375, 832 -%r377 = or i864 %r371, %r376 -%r378 = zext i864 %r377 to i896 -%r380 = getelementptr i32, i32* %r3, i32 27 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i896 -%r383 = shl i896 %r382, 864 -%r384 = or i896 %r378, %r383 -%r385 = zext i896 %r194 to i928 -%r386 = zext i896 %r384 to i928 -%r387 = add i928 %r385, %r386 -%r388 = trunc i928 %r387 to i448 -%r389 = trunc i448 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 0 -store i32 %r389, i32* %r391 -%r392 = lshr i448 %r388, 32 -%r393 = trunc i448 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 1 -store i32 %r393, i32* %r395 -%r396 = lshr i448 %r392, 32 -%r397 = trunc i448 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 2 -store i32 %r397, i32* %r399 -%r400 = lshr i448 %r396, 32 -%r401 = trunc i448 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 3 -store i32 %r401, i32* %r403 -%r404 = lshr i448 %r400, 32 -%r405 = trunc i448 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 4 -store i32 %r405, i32* %r407 -%r408 = lshr i448 %r404, 32 -%r409 = trunc i448 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 5 -store i32 %r409, i32* %r411 -%r412 = lshr i448 %r408, 32 -%r413 = trunc i448 %r412 to i32 -%r415 = getelementptr i32, i32* %r1, i32 6 -store i32 %r413, i32* %r415 -%r416 = lshr i448 %r412, 32 -%r417 = trunc i448 %r416 to i32 -%r419 = getelementptr i32, i32* %r1, i32 7 -store i32 %r417, i32* %r419 -%r420 = lshr i448 %r416, 32 -%r421 = trunc i448 %r420 to i32 -%r423 = getelementptr i32, i32* %r1, i32 8 -store i32 %r421, i32* %r423 -%r424 = lshr i448 %r420, 32 -%r425 = trunc i448 %r424 to i32 -%r427 = getelementptr i32, i32* %r1, i32 9 -store i32 %r425, i32* %r427 -%r428 = lshr i448 %r424, 32 -%r429 = trunc i448 %r428 to i32 -%r431 = getelementptr i32, i32* %r1, i32 10 -store i32 %r429, i32* %r431 -%r432 = lshr i448 %r428, 32 -%r433 = trunc i448 %r432 to i32 -%r435 = getelementptr i32, i32* %r1, i32 11 -store i32 %r433, i32* %r435 -%r436 = lshr i448 %r432, 32 -%r437 = trunc i448 %r436 to i32 -%r439 = getelementptr i32, i32* %r1, i32 12 -store i32 %r437, i32* %r439 -%r440 = lshr i448 %r436, 32 -%r441 = trunc i448 %r440 to i32 -%r443 = getelementptr i32, i32* %r1, i32 13 -store i32 %r441, i32* %r443 -%r444 = lshr i928 %r387, 448 -%r445 = trunc i928 %r444 to i480 -%r446 = load i32, i32* %r4 -%r447 = zext i32 %r446 to i64 -%r449 = getelementptr i32, i32* %r4, i32 1 -%r450 = load i32, i32* %r449 -%r451 = zext i32 %r450 to i64 -%r452 = shl i64 %r451, 32 -%r453 = or i64 %r447, %r452 -%r454 = zext i64 %r453 to i96 -%r456 = getelementptr i32, i32* %r4, i32 2 -%r457 = load i32, i32* %r456 -%r458 = zext i32 %r457 to i96 -%r459 = shl i96 %r458, 64 -%r460 = or i96 %r454, %r459 -%r461 = zext i96 %r460 to i128 -%r463 = getelementptr i32, i32* %r4, i32 3 -%r464 = load i32, i32* %r463 -%r465 = zext i32 %r464 to i128 -%r466 = shl i128 %r465, 96 -%r467 = or i128 %r461, %r466 -%r468 = zext i128 %r467 to i160 -%r470 = getelementptr i32, i32* %r4, i32 4 -%r471 = load i32, i32* %r470 -%r472 = zext i32 %r471 to i160 -%r473 = shl i160 %r472, 128 -%r474 = or i160 %r468, %r473 -%r475 = zext i160 %r474 to i192 -%r477 = getelementptr i32, i32* %r4, i32 5 -%r478 = load i32, i32* %r477 -%r479 = zext i32 %r478 to i192 -%r480 = shl i192 %r479, 160 -%r481 = or i192 %r475, %r480 -%r482 = zext i192 %r481 to i224 -%r484 = getelementptr i32, i32* %r4, i32 6 -%r485 = load i32, i32* %r484 -%r486 = zext i32 %r485 to i224 -%r487 = shl i224 %r486, 192 -%r488 = or i224 %r482, %r487 -%r489 = zext i224 %r488 to i256 -%r491 = getelementptr i32, i32* %r4, i32 7 -%r492 = load i32, i32* %r491 -%r493 = zext i32 %r492 to i256 -%r494 = shl i256 %r493, 224 -%r495 = or i256 %r489, %r494 -%r496 = zext i256 %r495 to i288 -%r498 = getelementptr i32, i32* %r4, i32 8 -%r499 = load i32, i32* %r498 -%r500 = zext i32 %r499 to i288 -%r501 = shl i288 %r500, 256 -%r502 = or i288 %r496, %r501 -%r503 = zext i288 %r502 to i320 -%r505 = getelementptr i32, i32* %r4, i32 9 -%r506 = load i32, i32* %r505 -%r507 = zext i32 %r506 to i320 -%r508 = shl i320 %r507, 288 -%r509 = or i320 %r503, %r508 -%r510 = zext i320 %r509 to i352 -%r512 = getelementptr i32, i32* %r4, i32 10 -%r513 = load i32, i32* %r512 -%r514 = zext i32 %r513 to i352 -%r515 = shl i352 %r514, 320 -%r516 = or i352 %r510, %r515 -%r517 = zext i352 %r516 to i384 -%r519 = getelementptr i32, i32* %r4, i32 11 -%r520 = load i32, i32* %r519 -%r521 = zext i32 %r520 to i384 -%r522 = shl i384 %r521, 352 -%r523 = or i384 %r517, %r522 -%r524 = zext i384 %r523 to i416 -%r526 = getelementptr i32, i32* %r4, i32 12 -%r527 = load i32, i32* %r526 -%r528 = zext i32 %r527 to i416 -%r529 = shl i416 %r528, 384 -%r530 = or i416 %r524, %r529 -%r531 = zext i416 %r530 to i448 -%r533 = getelementptr i32, i32* %r4, i32 13 -%r534 = load i32, i32* %r533 -%r535 = zext i32 %r534 to i448 -%r536 = shl i448 %r535, 416 -%r537 = or i448 %r531, %r536 -%r538 = zext i448 %r537 to i480 -%r539 = sub i480 %r445, %r538 -%r540 = lshr i480 %r539, 448 -%r541 = trunc i480 %r540 to i1 -%r542 = select i1 %r541, i480 %r445, i480 %r539 -%r543 = trunc i480 %r542 to i448 -%r545 = getelementptr i32, i32* %r1, i32 14 -%r546 = trunc i448 %r543 to i32 -%r548 = getelementptr i32, i32* %r545, i32 0 -store i32 %r546, i32* %r548 -%r549 = lshr i448 %r543, 32 -%r550 = trunc i448 %r549 to i32 -%r552 = getelementptr i32, i32* %r545, i32 1 -store i32 %r550, i32* %r552 -%r553 = lshr i448 %r549, 32 -%r554 = trunc i448 %r553 to i32 -%r556 = getelementptr i32, i32* %r545, i32 2 -store i32 %r554, i32* %r556 -%r557 = lshr i448 %r553, 32 -%r558 = trunc i448 %r557 to i32 -%r560 = getelementptr i32, i32* %r545, i32 3 -store i32 %r558, i32* %r560 -%r561 = lshr i448 %r557, 32 -%r562 = trunc i448 %r561 to i32 -%r564 = getelementptr i32, i32* %r545, i32 4 -store i32 %r562, i32* %r564 -%r565 = lshr i448 %r561, 32 -%r566 = trunc i448 %r565 to i32 -%r568 = getelementptr i32, i32* %r545, i32 5 -store i32 %r566, i32* %r568 -%r569 = lshr i448 %r565, 32 -%r570 = trunc i448 %r569 to i32 -%r572 = getelementptr i32, i32* %r545, i32 6 -store i32 %r570, i32* %r572 -%r573 = lshr i448 %r569, 32 -%r574 = trunc i448 %r573 to i32 -%r576 = getelementptr i32, i32* %r545, i32 7 -store i32 %r574, i32* %r576 -%r577 = lshr i448 %r573, 32 -%r578 = trunc i448 %r577 to i32 -%r580 = getelementptr i32, i32* %r545, i32 8 -store i32 %r578, i32* %r580 -%r581 = lshr i448 %r577, 32 -%r582 = trunc i448 %r581 to i32 -%r584 = getelementptr i32, i32* %r545, i32 9 -store i32 %r582, i32* %r584 -%r585 = lshr i448 %r581, 32 -%r586 = trunc i448 %r585 to i32 -%r588 = getelementptr i32, i32* %r545, i32 10 -store i32 %r586, i32* %r588 -%r589 = lshr i448 %r585, 32 -%r590 = trunc i448 %r589 to i32 -%r592 = getelementptr i32, i32* %r545, i32 11 -store i32 %r590, i32* %r592 -%r593 = lshr i448 %r589, 32 -%r594 = trunc i448 %r593 to i32 -%r596 = getelementptr i32, i32* %r545, i32 12 -store i32 %r594, i32* %r596 -%r597 = lshr i448 %r593, 32 -%r598 = trunc i448 %r597 to i32 -%r600 = getelementptr i32, i32* %r545, i32 13 -store i32 %r598, i32* %r600 -ret void -} -define void @mcl_fpDbl_sub14L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = load i32, i32* %r3 -%r196 = zext i32 %r195 to i64 -%r198 = getelementptr i32, i32* %r3, i32 1 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i64 -%r201 = shl i64 %r200, 32 -%r202 = or i64 %r196, %r201 -%r203 = zext i64 %r202 to i96 -%r205 = getelementptr i32, i32* %r3, i32 2 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i96 -%r208 = shl i96 %r207, 64 -%r209 = or i96 %r203, %r208 -%r210 = zext i96 %r209 to i128 -%r212 = getelementptr i32, i32* %r3, i32 3 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i128 -%r215 = shl i128 %r214, 96 -%r216 = or i128 %r210, %r215 -%r217 = zext i128 %r216 to i160 -%r219 = getelementptr i32, i32* %r3, i32 4 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i160 -%r222 = shl i160 %r221, 128 -%r223 = or i160 %r217, %r222 -%r224 = zext i160 %r223 to i192 -%r226 = getelementptr i32, i32* %r3, i32 5 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i192 -%r229 = shl i192 %r228, 160 -%r230 = or i192 %r224, %r229 -%r231 = zext i192 %r230 to i224 -%r233 = getelementptr i32, i32* %r3, i32 6 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i224 -%r236 = shl i224 %r235, 192 -%r237 = or i224 %r231, %r236 -%r238 = zext i224 %r237 to i256 -%r240 = getelementptr i32, i32* %r3, i32 7 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i256 -%r243 = shl i256 %r242, 224 -%r244 = or i256 %r238, %r243 -%r245 = zext i256 %r244 to i288 -%r247 = getelementptr i32, i32* %r3, i32 8 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i288 -%r250 = shl i288 %r249, 256 -%r251 = or i288 %r245, %r250 -%r252 = zext i288 %r251 to i320 -%r254 = getelementptr i32, i32* %r3, i32 9 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i320 -%r257 = shl i320 %r256, 288 -%r258 = or i320 %r252, %r257 -%r259 = zext i320 %r258 to i352 -%r261 = getelementptr i32, i32* %r3, i32 10 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i352 -%r264 = shl i352 %r263, 320 -%r265 = or i352 %r259, %r264 -%r266 = zext i352 %r265 to i384 -%r268 = getelementptr i32, i32* %r3, i32 11 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i384 -%r271 = shl i384 %r270, 352 -%r272 = or i384 %r266, %r271 -%r273 = zext i384 %r272 to i416 -%r275 = getelementptr i32, i32* %r3, i32 12 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i416 -%r278 = shl i416 %r277, 384 -%r279 = or i416 %r273, %r278 -%r280 = zext i416 %r279 to i448 -%r282 = getelementptr i32, i32* %r3, i32 13 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i448 -%r285 = shl i448 %r284, 416 -%r286 = or i448 %r280, %r285 -%r287 = zext i448 %r286 to i480 -%r289 = getelementptr i32, i32* %r3, i32 14 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i480 -%r292 = shl i480 %r291, 448 -%r293 = or i480 %r287, %r292 -%r294 = zext i480 %r293 to i512 -%r296 = getelementptr i32, i32* %r3, i32 15 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i512 -%r299 = shl i512 %r298, 480 -%r300 = or i512 %r294, %r299 -%r301 = zext i512 %r300 to i544 -%r303 = getelementptr i32, i32* %r3, i32 16 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i544 -%r306 = shl i544 %r305, 512 -%r307 = or i544 %r301, %r306 -%r308 = zext i544 %r307 to i576 -%r310 = getelementptr i32, i32* %r3, i32 17 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i576 -%r313 = shl i576 %r312, 544 -%r314 = or i576 %r308, %r313 -%r315 = zext i576 %r314 to i608 -%r317 = getelementptr i32, i32* %r3, i32 18 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i608 -%r320 = shl i608 %r319, 576 -%r321 = or i608 %r315, %r320 -%r322 = zext i608 %r321 to i640 -%r324 = getelementptr i32, i32* %r3, i32 19 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i640 -%r327 = shl i640 %r326, 608 -%r328 = or i640 %r322, %r327 -%r329 = zext i640 %r328 to i672 -%r331 = getelementptr i32, i32* %r3, i32 20 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i672 -%r334 = shl i672 %r333, 640 -%r335 = or i672 %r329, %r334 -%r336 = zext i672 %r335 to i704 -%r338 = getelementptr i32, i32* %r3, i32 21 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i704 -%r341 = shl i704 %r340, 672 -%r342 = or i704 %r336, %r341 -%r343 = zext i704 %r342 to i736 -%r345 = getelementptr i32, i32* %r3, i32 22 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i736 -%r348 = shl i736 %r347, 704 -%r349 = or i736 %r343, %r348 -%r350 = zext i736 %r349 to i768 -%r352 = getelementptr i32, i32* %r3, i32 23 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i768 -%r355 = shl i768 %r354, 736 -%r356 = or i768 %r350, %r355 -%r357 = zext i768 %r356 to i800 -%r359 = getelementptr i32, i32* %r3, i32 24 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i800 -%r362 = shl i800 %r361, 768 -%r363 = or i800 %r357, %r362 -%r364 = zext i800 %r363 to i832 -%r366 = getelementptr i32, i32* %r3, i32 25 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i832 -%r369 = shl i832 %r368, 800 -%r370 = or i832 %r364, %r369 -%r371 = zext i832 %r370 to i864 -%r373 = getelementptr i32, i32* %r3, i32 26 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i864 -%r376 = shl i864 %r375, 832 -%r377 = or i864 %r371, %r376 -%r378 = zext i864 %r377 to i896 -%r380 = getelementptr i32, i32* %r3, i32 27 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i896 -%r383 = shl i896 %r382, 864 -%r384 = or i896 %r378, %r383 -%r385 = zext i896 %r194 to i928 -%r386 = zext i896 %r384 to i928 -%r387 = sub i928 %r385, %r386 -%r388 = trunc i928 %r387 to i448 -%r389 = trunc i448 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 0 -store i32 %r389, i32* %r391 -%r392 = lshr i448 %r388, 32 -%r393 = trunc i448 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 1 -store i32 %r393, i32* %r395 -%r396 = lshr i448 %r392, 32 -%r397 = trunc i448 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 2 -store i32 %r397, i32* %r399 -%r400 = lshr i448 %r396, 32 -%r401 = trunc i448 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 3 -store i32 %r401, i32* %r403 -%r404 = lshr i448 %r400, 32 -%r405 = trunc i448 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 4 -store i32 %r405, i32* %r407 -%r408 = lshr i448 %r404, 32 -%r409 = trunc i448 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 5 -store i32 %r409, i32* %r411 -%r412 = lshr i448 %r408, 32 -%r413 = trunc i448 %r412 to i32 -%r415 = getelementptr i32, i32* %r1, i32 6 -store i32 %r413, i32* %r415 -%r416 = lshr i448 %r412, 32 -%r417 = trunc i448 %r416 to i32 -%r419 = getelementptr i32, i32* %r1, i32 7 -store i32 %r417, i32* %r419 -%r420 = lshr i448 %r416, 32 -%r421 = trunc i448 %r420 to i32 -%r423 = getelementptr i32, i32* %r1, i32 8 -store i32 %r421, i32* %r423 -%r424 = lshr i448 %r420, 32 -%r425 = trunc i448 %r424 to i32 -%r427 = getelementptr i32, i32* %r1, i32 9 -store i32 %r425, i32* %r427 -%r428 = lshr i448 %r424, 32 -%r429 = trunc i448 %r428 to i32 -%r431 = getelementptr i32, i32* %r1, i32 10 -store i32 %r429, i32* %r431 -%r432 = lshr i448 %r428, 32 -%r433 = trunc i448 %r432 to i32 -%r435 = getelementptr i32, i32* %r1, i32 11 -store i32 %r433, i32* %r435 -%r436 = lshr i448 %r432, 32 -%r437 = trunc i448 %r436 to i32 -%r439 = getelementptr i32, i32* %r1, i32 12 -store i32 %r437, i32* %r439 -%r440 = lshr i448 %r436, 32 -%r441 = trunc i448 %r440 to i32 -%r443 = getelementptr i32, i32* %r1, i32 13 -store i32 %r441, i32* %r443 -%r444 = lshr i928 %r387, 448 -%r445 = trunc i928 %r444 to i448 -%r446 = lshr i928 %r387, 896 -%r447 = trunc i928 %r446 to i1 -%r448 = load i32, i32* %r4 -%r449 = zext i32 %r448 to i64 -%r451 = getelementptr i32, i32* %r4, i32 1 -%r452 = load i32, i32* %r451 -%r453 = zext i32 %r452 to i64 -%r454 = shl i64 %r453, 32 -%r455 = or i64 %r449, %r454 -%r456 = zext i64 %r455 to i96 -%r458 = getelementptr i32, i32* %r4, i32 2 -%r459 = load i32, i32* %r458 -%r460 = zext i32 %r459 to i96 -%r461 = shl i96 %r460, 64 -%r462 = or i96 %r456, %r461 -%r463 = zext i96 %r462 to i128 -%r465 = getelementptr i32, i32* %r4, i32 3 -%r466 = load i32, i32* %r465 -%r467 = zext i32 %r466 to i128 -%r468 = shl i128 %r467, 96 -%r469 = or i128 %r463, %r468 -%r470 = zext i128 %r469 to i160 -%r472 = getelementptr i32, i32* %r4, i32 4 -%r473 = load i32, i32* %r472 -%r474 = zext i32 %r473 to i160 -%r475 = shl i160 %r474, 128 -%r476 = or i160 %r470, %r475 -%r477 = zext i160 %r476 to i192 -%r479 = getelementptr i32, i32* %r4, i32 5 -%r480 = load i32, i32* %r479 -%r481 = zext i32 %r480 to i192 -%r482 = shl i192 %r481, 160 -%r483 = or i192 %r477, %r482 -%r484 = zext i192 %r483 to i224 -%r486 = getelementptr i32, i32* %r4, i32 6 -%r487 = load i32, i32* %r486 -%r488 = zext i32 %r487 to i224 -%r489 = shl i224 %r488, 192 -%r490 = or i224 %r484, %r489 -%r491 = zext i224 %r490 to i256 -%r493 = getelementptr i32, i32* %r4, i32 7 -%r494 = load i32, i32* %r493 -%r495 = zext i32 %r494 to i256 -%r496 = shl i256 %r495, 224 -%r497 = or i256 %r491, %r496 -%r498 = zext i256 %r497 to i288 -%r500 = getelementptr i32, i32* %r4, i32 8 -%r501 = load i32, i32* %r500 -%r502 = zext i32 %r501 to i288 -%r503 = shl i288 %r502, 256 -%r504 = or i288 %r498, %r503 -%r505 = zext i288 %r504 to i320 -%r507 = getelementptr i32, i32* %r4, i32 9 -%r508 = load i32, i32* %r507 -%r509 = zext i32 %r508 to i320 -%r510 = shl i320 %r509, 288 -%r511 = or i320 %r505, %r510 -%r512 = zext i320 %r511 to i352 -%r514 = getelementptr i32, i32* %r4, i32 10 -%r515 = load i32, i32* %r514 -%r516 = zext i32 %r515 to i352 -%r517 = shl i352 %r516, 320 -%r518 = or i352 %r512, %r517 -%r519 = zext i352 %r518 to i384 -%r521 = getelementptr i32, i32* %r4, i32 11 -%r522 = load i32, i32* %r521 -%r523 = zext i32 %r522 to i384 -%r524 = shl i384 %r523, 352 -%r525 = or i384 %r519, %r524 -%r526 = zext i384 %r525 to i416 -%r528 = getelementptr i32, i32* %r4, i32 12 -%r529 = load i32, i32* %r528 -%r530 = zext i32 %r529 to i416 -%r531 = shl i416 %r530, 384 -%r532 = or i416 %r526, %r531 -%r533 = zext i416 %r532 to i448 -%r535 = getelementptr i32, i32* %r4, i32 13 -%r536 = load i32, i32* %r535 -%r537 = zext i32 %r536 to i448 -%r538 = shl i448 %r537, 416 -%r539 = or i448 %r533, %r538 -%r541 = select i1 %r447, i448 %r539, i448 0 -%r542 = add i448 %r445, %r541 -%r544 = getelementptr i32, i32* %r1, i32 14 -%r545 = trunc i448 %r542 to i32 -%r547 = getelementptr i32, i32* %r544, i32 0 -store i32 %r545, i32* %r547 -%r548 = lshr i448 %r542, 32 -%r549 = trunc i448 %r548 to i32 -%r551 = getelementptr i32, i32* %r544, i32 1 -store i32 %r549, i32* %r551 -%r552 = lshr i448 %r548, 32 -%r553 = trunc i448 %r552 to i32 -%r555 = getelementptr i32, i32* %r544, i32 2 -store i32 %r553, i32* %r555 -%r556 = lshr i448 %r552, 32 -%r557 = trunc i448 %r556 to i32 -%r559 = getelementptr i32, i32* %r544, i32 3 -store i32 %r557, i32* %r559 -%r560 = lshr i448 %r556, 32 -%r561 = trunc i448 %r560 to i32 -%r563 = getelementptr i32, i32* %r544, i32 4 -store i32 %r561, i32* %r563 -%r564 = lshr i448 %r560, 32 -%r565 = trunc i448 %r564 to i32 -%r567 = getelementptr i32, i32* %r544, i32 5 -store i32 %r565, i32* %r567 -%r568 = lshr i448 %r564, 32 -%r569 = trunc i448 %r568 to i32 -%r571 = getelementptr i32, i32* %r544, i32 6 -store i32 %r569, i32* %r571 -%r572 = lshr i448 %r568, 32 -%r573 = trunc i448 %r572 to i32 -%r575 = getelementptr i32, i32* %r544, i32 7 -store i32 %r573, i32* %r575 -%r576 = lshr i448 %r572, 32 -%r577 = trunc i448 %r576 to i32 -%r579 = getelementptr i32, i32* %r544, i32 8 -store i32 %r577, i32* %r579 -%r580 = lshr i448 %r576, 32 -%r581 = trunc i448 %r580 to i32 -%r583 = getelementptr i32, i32* %r544, i32 9 -store i32 %r581, i32* %r583 -%r584 = lshr i448 %r580, 32 -%r585 = trunc i448 %r584 to i32 -%r587 = getelementptr i32, i32* %r544, i32 10 -store i32 %r585, i32* %r587 -%r588 = lshr i448 %r584, 32 -%r589 = trunc i448 %r588 to i32 -%r591 = getelementptr i32, i32* %r544, i32 11 -store i32 %r589, i32* %r591 -%r592 = lshr i448 %r588, 32 -%r593 = trunc i448 %r592 to i32 -%r595 = getelementptr i32, i32* %r544, i32 12 -store i32 %r593, i32* %r595 -%r596 = lshr i448 %r592, 32 -%r597 = trunc i448 %r596 to i32 -%r599 = getelementptr i32, i32* %r544, i32 13 -store i32 %r597, i32* %r599 -ret void -} -define i512 @mulPv480x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) -%r54 = trunc i64 %r53 to i32 -%r55 = call i32 @extractHigh32(i64 %r53) -%r57 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 13) -%r58 = trunc i64 %r57 to i32 -%r59 = call i32 @extractHigh32(i64 %r57) -%r61 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 14) -%r62 = trunc i64 %r61 to i32 -%r63 = call i32 @extractHigh32(i64 %r61) -%r64 = zext i32 %r6 to i64 -%r65 = zext i32 %r10 to i64 -%r66 = shl i64 %r65, 32 -%r67 = or i64 %r64, %r66 -%r68 = zext i64 %r67 to i96 -%r69 = zext i32 %r14 to i96 -%r70 = shl i96 %r69, 64 -%r71 = or i96 %r68, %r70 -%r72 = zext i96 %r71 to i128 -%r73 = zext i32 %r18 to i128 -%r74 = shl i128 %r73, 96 -%r75 = or i128 %r72, %r74 -%r76 = zext i128 %r75 to i160 -%r77 = zext i32 %r22 to i160 -%r78 = shl i160 %r77, 128 -%r79 = or i160 %r76, %r78 -%r80 = zext i160 %r79 to i192 -%r81 = zext i32 %r26 to i192 -%r82 = shl i192 %r81, 160 -%r83 = or i192 %r80, %r82 -%r84 = zext i192 %r83 to i224 -%r85 = zext i32 %r30 to i224 -%r86 = shl i224 %r85, 192 -%r87 = or i224 %r84, %r86 -%r88 = zext i224 %r87 to i256 -%r89 = zext i32 %r34 to i256 -%r90 = shl i256 %r89, 224 -%r91 = or i256 %r88, %r90 -%r92 = zext i256 %r91 to i288 -%r93 = zext i32 %r38 to i288 -%r94 = shl i288 %r93, 256 -%r95 = or i288 %r92, %r94 -%r96 = zext i288 %r95 to i320 -%r97 = zext i32 %r42 to i320 -%r98 = shl i320 %r97, 288 -%r99 = or i320 %r96, %r98 -%r100 = zext i320 %r99 to i352 -%r101 = zext i32 %r46 to i352 -%r102 = shl i352 %r101, 320 -%r103 = or i352 %r100, %r102 -%r104 = zext i352 %r103 to i384 -%r105 = zext i32 %r50 to i384 -%r106 = shl i384 %r105, 352 -%r107 = or i384 %r104, %r106 -%r108 = zext i384 %r107 to i416 -%r109 = zext i32 %r54 to i416 -%r110 = shl i416 %r109, 384 -%r111 = or i416 %r108, %r110 -%r112 = zext i416 %r111 to i448 -%r113 = zext i32 %r58 to i448 -%r114 = shl i448 %r113, 416 -%r115 = or i448 %r112, %r114 -%r116 = zext i448 %r115 to i480 -%r117 = zext i32 %r62 to i480 -%r118 = shl i480 %r117, 448 -%r119 = or i480 %r116, %r118 -%r120 = zext i32 %r7 to i64 -%r121 = zext i32 %r11 to i64 -%r122 = shl i64 %r121, 32 -%r123 = or i64 %r120, %r122 -%r124 = zext i64 %r123 to i96 -%r125 = zext i32 %r15 to i96 -%r126 = shl i96 %r125, 64 -%r127 = or i96 %r124, %r126 -%r128 = zext i96 %r127 to i128 -%r129 = zext i32 %r19 to i128 -%r130 = shl i128 %r129, 96 -%r131 = or i128 %r128, %r130 -%r132 = zext i128 %r131 to i160 -%r133 = zext i32 %r23 to i160 -%r134 = shl i160 %r133, 128 -%r135 = or i160 %r132, %r134 -%r136 = zext i160 %r135 to i192 -%r137 = zext i32 %r27 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r136, %r138 -%r140 = zext i192 %r139 to i224 -%r141 = zext i32 %r31 to i224 -%r142 = shl i224 %r141, 192 -%r143 = or i224 %r140, %r142 -%r144 = zext i224 %r143 to i256 -%r145 = zext i32 %r35 to i256 -%r146 = shl i256 %r145, 224 -%r147 = or i256 %r144, %r146 -%r148 = zext i256 %r147 to i288 -%r149 = zext i32 %r39 to i288 -%r150 = shl i288 %r149, 256 -%r151 = or i288 %r148, %r150 -%r152 = zext i288 %r151 to i320 -%r153 = zext i32 %r43 to i320 -%r154 = shl i320 %r153, 288 -%r155 = or i320 %r152, %r154 -%r156 = zext i320 %r155 to i352 -%r157 = zext i32 %r47 to i352 -%r158 = shl i352 %r157, 320 -%r159 = or i352 %r156, %r158 -%r160 = zext i352 %r159 to i384 -%r161 = zext i32 %r51 to i384 -%r162 = shl i384 %r161, 352 -%r163 = or i384 %r160, %r162 -%r164 = zext i384 %r163 to i416 -%r165 = zext i32 %r55 to i416 -%r166 = shl i416 %r165, 384 -%r167 = or i416 %r164, %r166 -%r168 = zext i416 %r167 to i448 -%r169 = zext i32 %r59 to i448 -%r170 = shl i448 %r169, 416 -%r171 = or i448 %r168, %r170 -%r172 = zext i448 %r171 to i480 -%r173 = zext i32 %r63 to i480 -%r174 = shl i480 %r173, 448 -%r175 = or i480 %r172, %r174 -%r176 = zext i480 %r119 to i512 -%r177 = zext i480 %r175 to i512 -%r178 = shl i512 %r177, 32 -%r179 = add i512 %r176, %r178 -ret i512 %r179 -} -define void @mcl_fp_mulUnitPre15L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i512 @mulPv480x32(i32* %r2, i32 %r3) -%r5 = trunc i512 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i512 %r4, 32 -%r9 = trunc i512 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i512 %r8, 32 -%r13 = trunc i512 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i512 %r12, 32 -%r17 = trunc i512 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i512 %r16, 32 -%r21 = trunc i512 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i512 %r20, 32 -%r25 = trunc i512 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i512 %r24, 32 -%r29 = trunc i512 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i512 %r28, 32 -%r33 = trunc i512 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i512 %r32, 32 -%r37 = trunc i512 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i512 %r36, 32 -%r41 = trunc i512 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i512 %r40, 32 -%r45 = trunc i512 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i512 %r44, 32 -%r49 = trunc i512 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i512 %r48, 32 -%r53 = trunc i512 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -%r56 = lshr i512 %r52, 32 -%r57 = trunc i512 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 13 -store i32 %r57, i32* %r59 -%r60 = lshr i512 %r56, 32 -%r61 = trunc i512 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 14 -store i32 %r61, i32* %r63 -%r64 = lshr i512 %r60, 32 -%r65 = trunc i512 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 15 -store i32 %r65, i32* %r67 -ret void -} -define void @mcl_fpDbl_mulPre15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i512 @mulPv480x32(i32* %r2, i32 %r4) -%r6 = trunc i512 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i512 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i512 @mulPv480x32(i32* %r2, i32 %r10) -%r12 = add i512 %r7, %r11 -%r13 = trunc i512 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i512 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i512 @mulPv480x32(i32* %r2, i32 %r19) -%r21 = add i512 %r16, %r20 -%r22 = trunc i512 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i512 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i512 @mulPv480x32(i32* %r2, i32 %r28) -%r30 = add i512 %r25, %r29 -%r31 = trunc i512 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i512 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i512 @mulPv480x32(i32* %r2, i32 %r37) -%r39 = add i512 %r34, %r38 -%r40 = trunc i512 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i512 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i512 @mulPv480x32(i32* %r2, i32 %r46) -%r48 = add i512 %r43, %r47 -%r49 = trunc i512 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 5 -store i32 %r49, i32* %r51 -%r52 = lshr i512 %r48, 32 -%r54 = getelementptr i32, i32* %r3, i32 6 -%r55 = load i32, i32* %r54 -%r56 = call i512 @mulPv480x32(i32* %r2, i32 %r55) -%r57 = add i512 %r52, %r56 -%r58 = trunc i512 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 6 -store i32 %r58, i32* %r60 -%r61 = lshr i512 %r57, 32 -%r63 = getelementptr i32, i32* %r3, i32 7 -%r64 = load i32, i32* %r63 -%r65 = call i512 @mulPv480x32(i32* %r2, i32 %r64) -%r66 = add i512 %r61, %r65 -%r67 = trunc i512 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 7 -store i32 %r67, i32* %r69 -%r70 = lshr i512 %r66, 32 -%r72 = getelementptr i32, i32* %r3, i32 8 -%r73 = load i32, i32* %r72 -%r74 = call i512 @mulPv480x32(i32* %r2, i32 %r73) -%r75 = add i512 %r70, %r74 -%r76 = trunc i512 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 8 -store i32 %r76, i32* %r78 -%r79 = lshr i512 %r75, 32 -%r81 = getelementptr i32, i32* %r3, i32 9 -%r82 = load i32, i32* %r81 -%r83 = call i512 @mulPv480x32(i32* %r2, i32 %r82) -%r84 = add i512 %r79, %r83 -%r85 = trunc i512 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 9 -store i32 %r85, i32* %r87 -%r88 = lshr i512 %r84, 32 -%r90 = getelementptr i32, i32* %r3, i32 10 -%r91 = load i32, i32* %r90 -%r92 = call i512 @mulPv480x32(i32* %r2, i32 %r91) -%r93 = add i512 %r88, %r92 -%r94 = trunc i512 %r93 to i32 -%r96 = getelementptr i32, i32* %r1, i32 10 -store i32 %r94, i32* %r96 -%r97 = lshr i512 %r93, 32 -%r99 = getelementptr i32, i32* %r3, i32 11 -%r100 = load i32, i32* %r99 -%r101 = call i512 @mulPv480x32(i32* %r2, i32 %r100) -%r102 = add i512 %r97, %r101 -%r103 = trunc i512 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 11 -store i32 %r103, i32* %r105 -%r106 = lshr i512 %r102, 32 -%r108 = getelementptr i32, i32* %r3, i32 12 -%r109 = load i32, i32* %r108 -%r110 = call i512 @mulPv480x32(i32* %r2, i32 %r109) -%r111 = add i512 %r106, %r110 -%r112 = trunc i512 %r111 to i32 -%r114 = getelementptr i32, i32* %r1, i32 12 -store i32 %r112, i32* %r114 -%r115 = lshr i512 %r111, 32 -%r117 = getelementptr i32, i32* %r3, i32 13 -%r118 = load i32, i32* %r117 -%r119 = call i512 @mulPv480x32(i32* %r2, i32 %r118) -%r120 = add i512 %r115, %r119 -%r121 = trunc i512 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 13 -store i32 %r121, i32* %r123 -%r124 = lshr i512 %r120, 32 -%r126 = getelementptr i32, i32* %r3, i32 14 -%r127 = load i32, i32* %r126 -%r128 = call i512 @mulPv480x32(i32* %r2, i32 %r127) -%r129 = add i512 %r124, %r128 -%r131 = getelementptr i32, i32* %r1, i32 14 -%r132 = trunc i512 %r129 to i32 -%r134 = getelementptr i32, i32* %r131, i32 0 -store i32 %r132, i32* %r134 -%r135 = lshr i512 %r129, 32 -%r136 = trunc i512 %r135 to i32 -%r138 = getelementptr i32, i32* %r131, i32 1 -store i32 %r136, i32* %r138 -%r139 = lshr i512 %r135, 32 -%r140 = trunc i512 %r139 to i32 -%r142 = getelementptr i32, i32* %r131, i32 2 -store i32 %r140, i32* %r142 -%r143 = lshr i512 %r139, 32 -%r144 = trunc i512 %r143 to i32 -%r146 = getelementptr i32, i32* %r131, i32 3 -store i32 %r144, i32* %r146 -%r147 = lshr i512 %r143, 32 -%r148 = trunc i512 %r147 to i32 -%r150 = getelementptr i32, i32* %r131, i32 4 -store i32 %r148, i32* %r150 -%r151 = lshr i512 %r147, 32 -%r152 = trunc i512 %r151 to i32 -%r154 = getelementptr i32, i32* %r131, i32 5 -store i32 %r152, i32* %r154 -%r155 = lshr i512 %r151, 32 -%r156 = trunc i512 %r155 to i32 -%r158 = getelementptr i32, i32* %r131, i32 6 -store i32 %r156, i32* %r158 -%r159 = lshr i512 %r155, 32 -%r160 = trunc i512 %r159 to i32 -%r162 = getelementptr i32, i32* %r131, i32 7 -store i32 %r160, i32* %r162 -%r163 = lshr i512 %r159, 32 -%r164 = trunc i512 %r163 to i32 -%r166 = getelementptr i32, i32* %r131, i32 8 -store i32 %r164, i32* %r166 -%r167 = lshr i512 %r163, 32 -%r168 = trunc i512 %r167 to i32 -%r170 = getelementptr i32, i32* %r131, i32 9 -store i32 %r168, i32* %r170 -%r171 = lshr i512 %r167, 32 -%r172 = trunc i512 %r171 to i32 -%r174 = getelementptr i32, i32* %r131, i32 10 -store i32 %r172, i32* %r174 -%r175 = lshr i512 %r171, 32 -%r176 = trunc i512 %r175 to i32 -%r178 = getelementptr i32, i32* %r131, i32 11 -store i32 %r176, i32* %r178 -%r179 = lshr i512 %r175, 32 -%r180 = trunc i512 %r179 to i32 -%r182 = getelementptr i32, i32* %r131, i32 12 -store i32 %r180, i32* %r182 -%r183 = lshr i512 %r179, 32 -%r184 = trunc i512 %r183 to i32 -%r186 = getelementptr i32, i32* %r131, i32 13 -store i32 %r184, i32* %r186 -%r187 = lshr i512 %r183, 32 -%r188 = trunc i512 %r187 to i32 -%r190 = getelementptr i32, i32* %r131, i32 14 -store i32 %r188, i32* %r190 -%r191 = lshr i512 %r187, 32 -%r192 = trunc i512 %r191 to i32 -%r194 = getelementptr i32, i32* %r131, i32 15 -store i32 %r192, i32* %r194 -ret void -} -define void @mcl_fpDbl_sqrPre15L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i512 @mulPv480x32(i32* %r2, i32 %r3) -%r5 = trunc i512 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i512 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i512 @mulPv480x32(i32* %r2, i32 %r9) -%r11 = add i512 %r6, %r10 -%r12 = trunc i512 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i512 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i512 @mulPv480x32(i32* %r2, i32 %r18) -%r20 = add i512 %r15, %r19 -%r21 = trunc i512 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i512 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i512 @mulPv480x32(i32* %r2, i32 %r27) -%r29 = add i512 %r24, %r28 -%r30 = trunc i512 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i512 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i512 @mulPv480x32(i32* %r2, i32 %r36) -%r38 = add i512 %r33, %r37 -%r39 = trunc i512 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i512 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i512 @mulPv480x32(i32* %r2, i32 %r45) -%r47 = add i512 %r42, %r46 -%r48 = trunc i512 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 5 -store i32 %r48, i32* %r50 -%r51 = lshr i512 %r47, 32 -%r53 = getelementptr i32, i32* %r2, i32 6 -%r54 = load i32, i32* %r53 -%r55 = call i512 @mulPv480x32(i32* %r2, i32 %r54) -%r56 = add i512 %r51, %r55 -%r57 = trunc i512 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 6 -store i32 %r57, i32* %r59 -%r60 = lshr i512 %r56, 32 -%r62 = getelementptr i32, i32* %r2, i32 7 -%r63 = load i32, i32* %r62 -%r64 = call i512 @mulPv480x32(i32* %r2, i32 %r63) -%r65 = add i512 %r60, %r64 -%r66 = trunc i512 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 7 -store i32 %r66, i32* %r68 -%r69 = lshr i512 %r65, 32 -%r71 = getelementptr i32, i32* %r2, i32 8 -%r72 = load i32, i32* %r71 -%r73 = call i512 @mulPv480x32(i32* %r2, i32 %r72) -%r74 = add i512 %r69, %r73 -%r75 = trunc i512 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 8 -store i32 %r75, i32* %r77 -%r78 = lshr i512 %r74, 32 -%r80 = getelementptr i32, i32* %r2, i32 9 -%r81 = load i32, i32* %r80 -%r82 = call i512 @mulPv480x32(i32* %r2, i32 %r81) -%r83 = add i512 %r78, %r82 -%r84 = trunc i512 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 9 -store i32 %r84, i32* %r86 -%r87 = lshr i512 %r83, 32 -%r89 = getelementptr i32, i32* %r2, i32 10 -%r90 = load i32, i32* %r89 -%r91 = call i512 @mulPv480x32(i32* %r2, i32 %r90) -%r92 = add i512 %r87, %r91 -%r93 = trunc i512 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 10 -store i32 %r93, i32* %r95 -%r96 = lshr i512 %r92, 32 -%r98 = getelementptr i32, i32* %r2, i32 11 -%r99 = load i32, i32* %r98 -%r100 = call i512 @mulPv480x32(i32* %r2, i32 %r99) -%r101 = add i512 %r96, %r100 -%r102 = trunc i512 %r101 to i32 -%r104 = getelementptr i32, i32* %r1, i32 11 -store i32 %r102, i32* %r104 -%r105 = lshr i512 %r101, 32 -%r107 = getelementptr i32, i32* %r2, i32 12 -%r108 = load i32, i32* %r107 -%r109 = call i512 @mulPv480x32(i32* %r2, i32 %r108) -%r110 = add i512 %r105, %r109 -%r111 = trunc i512 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 12 -store i32 %r111, i32* %r113 -%r114 = lshr i512 %r110, 32 -%r116 = getelementptr i32, i32* %r2, i32 13 -%r117 = load i32, i32* %r116 -%r118 = call i512 @mulPv480x32(i32* %r2, i32 %r117) -%r119 = add i512 %r114, %r118 -%r120 = trunc i512 %r119 to i32 -%r122 = getelementptr i32, i32* %r1, i32 13 -store i32 %r120, i32* %r122 -%r123 = lshr i512 %r119, 32 -%r125 = getelementptr i32, i32* %r2, i32 14 -%r126 = load i32, i32* %r125 -%r127 = call i512 @mulPv480x32(i32* %r2, i32 %r126) -%r128 = add i512 %r123, %r127 -%r130 = getelementptr i32, i32* %r1, i32 14 -%r131 = trunc i512 %r128 to i32 -%r133 = getelementptr i32, i32* %r130, i32 0 -store i32 %r131, i32* %r133 -%r134 = lshr i512 %r128, 32 -%r135 = trunc i512 %r134 to i32 -%r137 = getelementptr i32, i32* %r130, i32 1 -store i32 %r135, i32* %r137 -%r138 = lshr i512 %r134, 32 -%r139 = trunc i512 %r138 to i32 -%r141 = getelementptr i32, i32* %r130, i32 2 -store i32 %r139, i32* %r141 -%r142 = lshr i512 %r138, 32 -%r143 = trunc i512 %r142 to i32 -%r145 = getelementptr i32, i32* %r130, i32 3 -store i32 %r143, i32* %r145 -%r146 = lshr i512 %r142, 32 -%r147 = trunc i512 %r146 to i32 -%r149 = getelementptr i32, i32* %r130, i32 4 -store i32 %r147, i32* %r149 -%r150 = lshr i512 %r146, 32 -%r151 = trunc i512 %r150 to i32 -%r153 = getelementptr i32, i32* %r130, i32 5 -store i32 %r151, i32* %r153 -%r154 = lshr i512 %r150, 32 -%r155 = trunc i512 %r154 to i32 -%r157 = getelementptr i32, i32* %r130, i32 6 -store i32 %r155, i32* %r157 -%r158 = lshr i512 %r154, 32 -%r159 = trunc i512 %r158 to i32 -%r161 = getelementptr i32, i32* %r130, i32 7 -store i32 %r159, i32* %r161 -%r162 = lshr i512 %r158, 32 -%r163 = trunc i512 %r162 to i32 -%r165 = getelementptr i32, i32* %r130, i32 8 -store i32 %r163, i32* %r165 -%r166 = lshr i512 %r162, 32 -%r167 = trunc i512 %r166 to i32 -%r169 = getelementptr i32, i32* %r130, i32 9 -store i32 %r167, i32* %r169 -%r170 = lshr i512 %r166, 32 -%r171 = trunc i512 %r170 to i32 -%r173 = getelementptr i32, i32* %r130, i32 10 -store i32 %r171, i32* %r173 -%r174 = lshr i512 %r170, 32 -%r175 = trunc i512 %r174 to i32 -%r177 = getelementptr i32, i32* %r130, i32 11 -store i32 %r175, i32* %r177 -%r178 = lshr i512 %r174, 32 -%r179 = trunc i512 %r178 to i32 -%r181 = getelementptr i32, i32* %r130, i32 12 -store i32 %r179, i32* %r181 -%r182 = lshr i512 %r178, 32 -%r183 = trunc i512 %r182 to i32 -%r185 = getelementptr i32, i32* %r130, i32 13 -store i32 %r183, i32* %r185 -%r186 = lshr i512 %r182, 32 -%r187 = trunc i512 %r186 to i32 -%r189 = getelementptr i32, i32* %r130, i32 14 -store i32 %r187, i32* %r189 -%r190 = lshr i512 %r186, 32 -%r191 = trunc i512 %r190 to i32 -%r193 = getelementptr i32, i32* %r130, i32 15 -store i32 %r191, i32* %r193 -ret void -} -define void @mcl_fp_mont15L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i512 @mulPv480x32(i32* %r2, i32 %r10) -%r12 = zext i512 %r11 to i544 -%r13 = trunc i512 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i512 @mulPv480x32(i32* %r4, i32 %r14) -%r16 = zext i512 %r15 to i544 -%r17 = add i544 %r12, %r16 -%r18 = lshr i544 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i512 @mulPv480x32(i32* %r2, i32 %r21) -%r23 = zext i512 %r22 to i544 -%r24 = add i544 %r18, %r23 -%r25 = trunc i544 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i512 @mulPv480x32(i32* %r4, i32 %r26) -%r28 = zext i512 %r27 to i544 -%r29 = add i544 %r24, %r28 -%r30 = lshr i544 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i512 @mulPv480x32(i32* %r2, i32 %r33) -%r35 = zext i512 %r34 to i544 -%r36 = add i544 %r30, %r35 -%r37 = trunc i544 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i512 @mulPv480x32(i32* %r4, i32 %r38) -%r40 = zext i512 %r39 to i544 -%r41 = add i544 %r36, %r40 -%r42 = lshr i544 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i512 @mulPv480x32(i32* %r2, i32 %r45) -%r47 = zext i512 %r46 to i544 -%r48 = add i544 %r42, %r47 -%r49 = trunc i544 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i512 @mulPv480x32(i32* %r4, i32 %r50) -%r52 = zext i512 %r51 to i544 -%r53 = add i544 %r48, %r52 -%r54 = lshr i544 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i512 @mulPv480x32(i32* %r2, i32 %r57) -%r59 = zext i512 %r58 to i544 -%r60 = add i544 %r54, %r59 -%r61 = trunc i544 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i512 @mulPv480x32(i32* %r4, i32 %r62) -%r64 = zext i512 %r63 to i544 -%r65 = add i544 %r60, %r64 -%r66 = lshr i544 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i512 @mulPv480x32(i32* %r2, i32 %r69) -%r71 = zext i512 %r70 to i544 -%r72 = add i544 %r66, %r71 -%r73 = trunc i544 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i512 @mulPv480x32(i32* %r4, i32 %r74) -%r76 = zext i512 %r75 to i544 -%r77 = add i544 %r72, %r76 -%r78 = lshr i544 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i512 @mulPv480x32(i32* %r2, i32 %r81) -%r83 = zext i512 %r82 to i544 -%r84 = add i544 %r78, %r83 -%r85 = trunc i544 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i512 @mulPv480x32(i32* %r4, i32 %r86) -%r88 = zext i512 %r87 to i544 -%r89 = add i544 %r84, %r88 -%r90 = lshr i544 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i512 @mulPv480x32(i32* %r2, i32 %r93) -%r95 = zext i512 %r94 to i544 -%r96 = add i544 %r90, %r95 -%r97 = trunc i544 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i512 @mulPv480x32(i32* %r4, i32 %r98) -%r100 = zext i512 %r99 to i544 -%r101 = add i544 %r96, %r100 -%r102 = lshr i544 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i512 @mulPv480x32(i32* %r2, i32 %r105) -%r107 = zext i512 %r106 to i544 -%r108 = add i544 %r102, %r107 -%r109 = trunc i544 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i512 @mulPv480x32(i32* %r4, i32 %r110) -%r112 = zext i512 %r111 to i544 -%r113 = add i544 %r108, %r112 -%r114 = lshr i544 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i512 @mulPv480x32(i32* %r2, i32 %r117) -%r119 = zext i512 %r118 to i544 -%r120 = add i544 %r114, %r119 -%r121 = trunc i544 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i512 @mulPv480x32(i32* %r4, i32 %r122) -%r124 = zext i512 %r123 to i544 -%r125 = add i544 %r120, %r124 -%r126 = lshr i544 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i512 @mulPv480x32(i32* %r2, i32 %r129) -%r131 = zext i512 %r130 to i544 -%r132 = add i544 %r126, %r131 -%r133 = trunc i544 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i512 @mulPv480x32(i32* %r4, i32 %r134) -%r136 = zext i512 %r135 to i544 -%r137 = add i544 %r132, %r136 -%r138 = lshr i544 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i512 @mulPv480x32(i32* %r2, i32 %r141) -%r143 = zext i512 %r142 to i544 -%r144 = add i544 %r138, %r143 -%r145 = trunc i544 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i512 @mulPv480x32(i32* %r4, i32 %r146) -%r148 = zext i512 %r147 to i544 -%r149 = add i544 %r144, %r148 -%r150 = lshr i544 %r149, 32 -%r152 = getelementptr i32, i32* %r3, i32 12 -%r153 = load i32, i32* %r152 -%r154 = call i512 @mulPv480x32(i32* %r2, i32 %r153) -%r155 = zext i512 %r154 to i544 -%r156 = add i544 %r150, %r155 -%r157 = trunc i544 %r156 to i32 -%r158 = mul i32 %r157, %r7 -%r159 = call i512 @mulPv480x32(i32* %r4, i32 %r158) -%r160 = zext i512 %r159 to i544 -%r161 = add i544 %r156, %r160 -%r162 = lshr i544 %r161, 32 -%r164 = getelementptr i32, i32* %r3, i32 13 -%r165 = load i32, i32* %r164 -%r166 = call i512 @mulPv480x32(i32* %r2, i32 %r165) -%r167 = zext i512 %r166 to i544 -%r168 = add i544 %r162, %r167 -%r169 = trunc i544 %r168 to i32 -%r170 = mul i32 %r169, %r7 -%r171 = call i512 @mulPv480x32(i32* %r4, i32 %r170) -%r172 = zext i512 %r171 to i544 -%r173 = add i544 %r168, %r172 -%r174 = lshr i544 %r173, 32 -%r176 = getelementptr i32, i32* %r3, i32 14 -%r177 = load i32, i32* %r176 -%r178 = call i512 @mulPv480x32(i32* %r2, i32 %r177) -%r179 = zext i512 %r178 to i544 -%r180 = add i544 %r174, %r179 -%r181 = trunc i544 %r180 to i32 -%r182 = mul i32 %r181, %r7 -%r183 = call i512 @mulPv480x32(i32* %r4, i32 %r182) -%r184 = zext i512 %r183 to i544 -%r185 = add i544 %r180, %r184 -%r186 = lshr i544 %r185, 32 -%r187 = trunc i544 %r186 to i512 -%r188 = load i32, i32* %r4 -%r189 = zext i32 %r188 to i64 -%r191 = getelementptr i32, i32* %r4, i32 1 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i64 -%r194 = shl i64 %r193, 32 -%r195 = or i64 %r189, %r194 -%r196 = zext i64 %r195 to i96 -%r198 = getelementptr i32, i32* %r4, i32 2 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i96 -%r201 = shl i96 %r200, 64 -%r202 = or i96 %r196, %r201 -%r203 = zext i96 %r202 to i128 -%r205 = getelementptr i32, i32* %r4, i32 3 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i128 -%r208 = shl i128 %r207, 96 -%r209 = or i128 %r203, %r208 -%r210 = zext i128 %r209 to i160 -%r212 = getelementptr i32, i32* %r4, i32 4 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i160 -%r215 = shl i160 %r214, 128 -%r216 = or i160 %r210, %r215 -%r217 = zext i160 %r216 to i192 -%r219 = getelementptr i32, i32* %r4, i32 5 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i192 -%r222 = shl i192 %r221, 160 -%r223 = or i192 %r217, %r222 -%r224 = zext i192 %r223 to i224 -%r226 = getelementptr i32, i32* %r4, i32 6 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i224 -%r229 = shl i224 %r228, 192 -%r230 = or i224 %r224, %r229 -%r231 = zext i224 %r230 to i256 -%r233 = getelementptr i32, i32* %r4, i32 7 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i256 -%r236 = shl i256 %r235, 224 -%r237 = or i256 %r231, %r236 -%r238 = zext i256 %r237 to i288 -%r240 = getelementptr i32, i32* %r4, i32 8 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i288 -%r243 = shl i288 %r242, 256 -%r244 = or i288 %r238, %r243 -%r245 = zext i288 %r244 to i320 -%r247 = getelementptr i32, i32* %r4, i32 9 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i320 -%r250 = shl i320 %r249, 288 -%r251 = or i320 %r245, %r250 -%r252 = zext i320 %r251 to i352 -%r254 = getelementptr i32, i32* %r4, i32 10 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i352 -%r257 = shl i352 %r256, 320 -%r258 = or i352 %r252, %r257 -%r259 = zext i352 %r258 to i384 -%r261 = getelementptr i32, i32* %r4, i32 11 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i384 -%r264 = shl i384 %r263, 352 -%r265 = or i384 %r259, %r264 -%r266 = zext i384 %r265 to i416 -%r268 = getelementptr i32, i32* %r4, i32 12 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i416 -%r271 = shl i416 %r270, 384 -%r272 = or i416 %r266, %r271 -%r273 = zext i416 %r272 to i448 -%r275 = getelementptr i32, i32* %r4, i32 13 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i448 -%r278 = shl i448 %r277, 416 -%r279 = or i448 %r273, %r278 -%r280 = zext i448 %r279 to i480 -%r282 = getelementptr i32, i32* %r4, i32 14 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i480 -%r285 = shl i480 %r284, 448 -%r286 = or i480 %r280, %r285 -%r287 = zext i480 %r286 to i512 -%r288 = sub i512 %r187, %r287 -%r289 = lshr i512 %r288, 480 -%r290 = trunc i512 %r289 to i1 -%r291 = select i1 %r290, i512 %r187, i512 %r288 -%r292 = trunc i512 %r291 to i480 -%r293 = trunc i480 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 0 -store i32 %r293, i32* %r295 -%r296 = lshr i480 %r292, 32 -%r297 = trunc i480 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 1 -store i32 %r297, i32* %r299 -%r300 = lshr i480 %r296, 32 -%r301 = trunc i480 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 2 -store i32 %r301, i32* %r303 -%r304 = lshr i480 %r300, 32 -%r305 = trunc i480 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 3 -store i32 %r305, i32* %r307 -%r308 = lshr i480 %r304, 32 -%r309 = trunc i480 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 4 -store i32 %r309, i32* %r311 -%r312 = lshr i480 %r308, 32 -%r313 = trunc i480 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 5 -store i32 %r313, i32* %r315 -%r316 = lshr i480 %r312, 32 -%r317 = trunc i480 %r316 to i32 -%r319 = getelementptr i32, i32* %r1, i32 6 -store i32 %r317, i32* %r319 -%r320 = lshr i480 %r316, 32 -%r321 = trunc i480 %r320 to i32 -%r323 = getelementptr i32, i32* %r1, i32 7 -store i32 %r321, i32* %r323 -%r324 = lshr i480 %r320, 32 -%r325 = trunc i480 %r324 to i32 -%r327 = getelementptr i32, i32* %r1, i32 8 -store i32 %r325, i32* %r327 -%r328 = lshr i480 %r324, 32 -%r329 = trunc i480 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 9 -store i32 %r329, i32* %r331 -%r332 = lshr i480 %r328, 32 -%r333 = trunc i480 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 10 -store i32 %r333, i32* %r335 -%r336 = lshr i480 %r332, 32 -%r337 = trunc i480 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 11 -store i32 %r337, i32* %r339 -%r340 = lshr i480 %r336, 32 -%r341 = trunc i480 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 12 -store i32 %r341, i32* %r343 -%r344 = lshr i480 %r340, 32 -%r345 = trunc i480 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 13 -store i32 %r345, i32* %r347 -%r348 = lshr i480 %r344, 32 -%r349 = trunc i480 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 14 -store i32 %r349, i32* %r351 -ret void -} -define void @mcl_fp_montNF15L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i512 @mulPv480x32(i32* %r2, i32 %r8) -%r10 = trunc i512 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i512 @mulPv480x32(i32* %r4, i32 %r11) -%r13 = add i512 %r9, %r12 -%r14 = lshr i512 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i512 @mulPv480x32(i32* %r2, i32 %r17) -%r19 = add i512 %r14, %r18 -%r20 = trunc i512 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i512 @mulPv480x32(i32* %r4, i32 %r21) -%r23 = add i512 %r19, %r22 -%r24 = lshr i512 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i512 @mulPv480x32(i32* %r2, i32 %r27) -%r29 = add i512 %r24, %r28 -%r30 = trunc i512 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i512 @mulPv480x32(i32* %r4, i32 %r31) -%r33 = add i512 %r29, %r32 -%r34 = lshr i512 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i512 @mulPv480x32(i32* %r2, i32 %r37) -%r39 = add i512 %r34, %r38 -%r40 = trunc i512 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i512 @mulPv480x32(i32* %r4, i32 %r41) -%r43 = add i512 %r39, %r42 -%r44 = lshr i512 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i512 @mulPv480x32(i32* %r2, i32 %r47) -%r49 = add i512 %r44, %r48 -%r50 = trunc i512 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i512 @mulPv480x32(i32* %r4, i32 %r51) -%r53 = add i512 %r49, %r52 -%r54 = lshr i512 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i512 @mulPv480x32(i32* %r2, i32 %r57) -%r59 = add i512 %r54, %r58 -%r60 = trunc i512 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i512 @mulPv480x32(i32* %r4, i32 %r61) -%r63 = add i512 %r59, %r62 -%r64 = lshr i512 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i512 @mulPv480x32(i32* %r2, i32 %r67) -%r69 = add i512 %r64, %r68 -%r70 = trunc i512 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i512 @mulPv480x32(i32* %r4, i32 %r71) -%r73 = add i512 %r69, %r72 -%r74 = lshr i512 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i512 @mulPv480x32(i32* %r2, i32 %r77) -%r79 = add i512 %r74, %r78 -%r80 = trunc i512 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i512 @mulPv480x32(i32* %r4, i32 %r81) -%r83 = add i512 %r79, %r82 -%r84 = lshr i512 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i512 @mulPv480x32(i32* %r2, i32 %r87) -%r89 = add i512 %r84, %r88 -%r90 = trunc i512 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i512 @mulPv480x32(i32* %r4, i32 %r91) -%r93 = add i512 %r89, %r92 -%r94 = lshr i512 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i512 @mulPv480x32(i32* %r2, i32 %r97) -%r99 = add i512 %r94, %r98 -%r100 = trunc i512 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i512 @mulPv480x32(i32* %r4, i32 %r101) -%r103 = add i512 %r99, %r102 -%r104 = lshr i512 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i512 @mulPv480x32(i32* %r2, i32 %r107) -%r109 = add i512 %r104, %r108 -%r110 = trunc i512 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i512 @mulPv480x32(i32* %r4, i32 %r111) -%r113 = add i512 %r109, %r112 -%r114 = lshr i512 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 -%r117 = load i32, i32* %r116 -%r118 = call i512 @mulPv480x32(i32* %r2, i32 %r117) -%r119 = add i512 %r114, %r118 -%r120 = trunc i512 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i512 @mulPv480x32(i32* %r4, i32 %r121) -%r123 = add i512 %r119, %r122 -%r124 = lshr i512 %r123, 32 -%r126 = getelementptr i32, i32* %r3, i32 12 -%r127 = load i32, i32* %r126 -%r128 = call i512 @mulPv480x32(i32* %r2, i32 %r127) -%r129 = add i512 %r124, %r128 -%r130 = trunc i512 %r129 to i32 -%r131 = mul i32 %r130, %r7 -%r132 = call i512 @mulPv480x32(i32* %r4, i32 %r131) -%r133 = add i512 %r129, %r132 -%r134 = lshr i512 %r133, 32 -%r136 = getelementptr i32, i32* %r3, i32 13 -%r137 = load i32, i32* %r136 -%r138 = call i512 @mulPv480x32(i32* %r2, i32 %r137) -%r139 = add i512 %r134, %r138 -%r140 = trunc i512 %r139 to i32 -%r141 = mul i32 %r140, %r7 -%r142 = call i512 @mulPv480x32(i32* %r4, i32 %r141) -%r143 = add i512 %r139, %r142 -%r144 = lshr i512 %r143, 32 -%r146 = getelementptr i32, i32* %r3, i32 14 -%r147 = load i32, i32* %r146 -%r148 = call i512 @mulPv480x32(i32* %r2, i32 %r147) -%r149 = add i512 %r144, %r148 -%r150 = trunc i512 %r149 to i32 -%r151 = mul i32 %r150, %r7 -%r152 = call i512 @mulPv480x32(i32* %r4, i32 %r151) -%r153 = add i512 %r149, %r152 -%r154 = lshr i512 %r153, 32 -%r155 = trunc i512 %r154 to i480 -%r156 = load i32, i32* %r4 -%r157 = zext i32 %r156 to i64 -%r159 = getelementptr i32, i32* %r4, i32 1 -%r160 = load i32, i32* %r159 -%r161 = zext i32 %r160 to i64 -%r162 = shl i64 %r161, 32 -%r163 = or i64 %r157, %r162 -%r164 = zext i64 %r163 to i96 -%r166 = getelementptr i32, i32* %r4, i32 2 -%r167 = load i32, i32* %r166 -%r168 = zext i32 %r167 to i96 -%r169 = shl i96 %r168, 64 -%r170 = or i96 %r164, %r169 -%r171 = zext i96 %r170 to i128 -%r173 = getelementptr i32, i32* %r4, i32 3 -%r174 = load i32, i32* %r173 -%r175 = zext i32 %r174 to i128 -%r176 = shl i128 %r175, 96 -%r177 = or i128 %r171, %r176 -%r178 = zext i128 %r177 to i160 -%r180 = getelementptr i32, i32* %r4, i32 4 -%r181 = load i32, i32* %r180 -%r182 = zext i32 %r181 to i160 -%r183 = shl i160 %r182, 128 -%r184 = or i160 %r178, %r183 -%r185 = zext i160 %r184 to i192 -%r187 = getelementptr i32, i32* %r4, i32 5 -%r188 = load i32, i32* %r187 -%r189 = zext i32 %r188 to i192 -%r190 = shl i192 %r189, 160 -%r191 = or i192 %r185, %r190 -%r192 = zext i192 %r191 to i224 -%r194 = getelementptr i32, i32* %r4, i32 6 -%r195 = load i32, i32* %r194 -%r196 = zext i32 %r195 to i224 -%r197 = shl i224 %r196, 192 -%r198 = or i224 %r192, %r197 -%r199 = zext i224 %r198 to i256 -%r201 = getelementptr i32, i32* %r4, i32 7 -%r202 = load i32, i32* %r201 -%r203 = zext i32 %r202 to i256 -%r204 = shl i256 %r203, 224 -%r205 = or i256 %r199, %r204 -%r206 = zext i256 %r205 to i288 -%r208 = getelementptr i32, i32* %r4, i32 8 -%r209 = load i32, i32* %r208 -%r210 = zext i32 %r209 to i288 -%r211 = shl i288 %r210, 256 -%r212 = or i288 %r206, %r211 -%r213 = zext i288 %r212 to i320 -%r215 = getelementptr i32, i32* %r4, i32 9 -%r216 = load i32, i32* %r215 -%r217 = zext i32 %r216 to i320 -%r218 = shl i320 %r217, 288 -%r219 = or i320 %r213, %r218 -%r220 = zext i320 %r219 to i352 -%r222 = getelementptr i32, i32* %r4, i32 10 -%r223 = load i32, i32* %r222 -%r224 = zext i32 %r223 to i352 -%r225 = shl i352 %r224, 320 -%r226 = or i352 %r220, %r225 -%r227 = zext i352 %r226 to i384 -%r229 = getelementptr i32, i32* %r4, i32 11 -%r230 = load i32, i32* %r229 -%r231 = zext i32 %r230 to i384 -%r232 = shl i384 %r231, 352 -%r233 = or i384 %r227, %r232 -%r234 = zext i384 %r233 to i416 -%r236 = getelementptr i32, i32* %r4, i32 12 -%r237 = load i32, i32* %r236 -%r238 = zext i32 %r237 to i416 -%r239 = shl i416 %r238, 384 -%r240 = or i416 %r234, %r239 -%r241 = zext i416 %r240 to i448 -%r243 = getelementptr i32, i32* %r4, i32 13 -%r244 = load i32, i32* %r243 -%r245 = zext i32 %r244 to i448 -%r246 = shl i448 %r245, 416 -%r247 = or i448 %r241, %r246 -%r248 = zext i448 %r247 to i480 -%r250 = getelementptr i32, i32* %r4, i32 14 -%r251 = load i32, i32* %r250 -%r252 = zext i32 %r251 to i480 -%r253 = shl i480 %r252, 448 -%r254 = or i480 %r248, %r253 -%r255 = sub i480 %r155, %r254 -%r256 = lshr i480 %r255, 479 -%r257 = trunc i480 %r256 to i1 -%r258 = select i1 %r257, i480 %r155, i480 %r255 -%r259 = trunc i480 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 0 -store i32 %r259, i32* %r261 -%r262 = lshr i480 %r258, 32 -%r263 = trunc i480 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 1 -store i32 %r263, i32* %r265 -%r266 = lshr i480 %r262, 32 -%r267 = trunc i480 %r266 to i32 -%r269 = getelementptr i32, i32* %r1, i32 2 -store i32 %r267, i32* %r269 -%r270 = lshr i480 %r266, 32 -%r271 = trunc i480 %r270 to i32 -%r273 = getelementptr i32, i32* %r1, i32 3 -store i32 %r271, i32* %r273 -%r274 = lshr i480 %r270, 32 -%r275 = trunc i480 %r274 to i32 -%r277 = getelementptr i32, i32* %r1, i32 4 -store i32 %r275, i32* %r277 -%r278 = lshr i480 %r274, 32 -%r279 = trunc i480 %r278 to i32 -%r281 = getelementptr i32, i32* %r1, i32 5 -store i32 %r279, i32* %r281 -%r282 = lshr i480 %r278, 32 -%r283 = trunc i480 %r282 to i32 -%r285 = getelementptr i32, i32* %r1, i32 6 -store i32 %r283, i32* %r285 -%r286 = lshr i480 %r282, 32 -%r287 = trunc i480 %r286 to i32 -%r289 = getelementptr i32, i32* %r1, i32 7 -store i32 %r287, i32* %r289 -%r290 = lshr i480 %r286, 32 -%r291 = trunc i480 %r290 to i32 -%r293 = getelementptr i32, i32* %r1, i32 8 -store i32 %r291, i32* %r293 -%r294 = lshr i480 %r290, 32 -%r295 = trunc i480 %r294 to i32 -%r297 = getelementptr i32, i32* %r1, i32 9 -store i32 %r295, i32* %r297 -%r298 = lshr i480 %r294, 32 -%r299 = trunc i480 %r298 to i32 -%r301 = getelementptr i32, i32* %r1, i32 10 -store i32 %r299, i32* %r301 -%r302 = lshr i480 %r298, 32 -%r303 = trunc i480 %r302 to i32 -%r305 = getelementptr i32, i32* %r1, i32 11 -store i32 %r303, i32* %r305 -%r306 = lshr i480 %r302, 32 -%r307 = trunc i480 %r306 to i32 -%r309 = getelementptr i32, i32* %r1, i32 12 -store i32 %r307, i32* %r309 -%r310 = lshr i480 %r306, 32 -%r311 = trunc i480 %r310 to i32 -%r313 = getelementptr i32, i32* %r1, i32 13 -store i32 %r311, i32* %r313 -%r314 = lshr i480 %r310, 32 -%r315 = trunc i480 %r314 to i32 -%r317 = getelementptr i32, i32* %r1, i32 14 -store i32 %r315, i32* %r317 -ret void -} -define void @mcl_fp_montRed15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = zext i352 %r77 to i384 -%r80 = getelementptr i32, i32* %r3, i32 11 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i384 -%r83 = shl i384 %r82, 352 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i416 -%r87 = getelementptr i32, i32* %r3, i32 12 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i416 -%r90 = shl i416 %r89, 384 -%r91 = or i416 %r85, %r90 -%r92 = zext i416 %r91 to i448 -%r94 = getelementptr i32, i32* %r3, i32 13 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i448 -%r97 = shl i448 %r96, 416 -%r98 = or i448 %r92, %r97 -%r99 = zext i448 %r98 to i480 -%r101 = getelementptr i32, i32* %r3, i32 14 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i480 -%r104 = shl i480 %r103, 448 -%r105 = or i480 %r99, %r104 -%r106 = load i32, i32* %r2 -%r107 = zext i32 %r106 to i64 -%r109 = getelementptr i32, i32* %r2, i32 1 -%r110 = load i32, i32* %r109 -%r111 = zext i32 %r110 to i64 -%r112 = shl i64 %r111, 32 -%r113 = or i64 %r107, %r112 -%r114 = zext i64 %r113 to i96 -%r116 = getelementptr i32, i32* %r2, i32 2 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i96 -%r119 = shl i96 %r118, 64 -%r120 = or i96 %r114, %r119 -%r121 = zext i96 %r120 to i128 -%r123 = getelementptr i32, i32* %r2, i32 3 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i128 -%r126 = shl i128 %r125, 96 -%r127 = or i128 %r121, %r126 -%r128 = zext i128 %r127 to i160 -%r130 = getelementptr i32, i32* %r2, i32 4 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i160 -%r133 = shl i160 %r132, 128 -%r134 = or i160 %r128, %r133 -%r135 = zext i160 %r134 to i192 -%r137 = getelementptr i32, i32* %r2, i32 5 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i192 -%r140 = shl i192 %r139, 160 -%r141 = or i192 %r135, %r140 -%r142 = zext i192 %r141 to i224 -%r144 = getelementptr i32, i32* %r2, i32 6 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i224 -%r147 = shl i224 %r146, 192 -%r148 = or i224 %r142, %r147 -%r149 = zext i224 %r148 to i256 -%r151 = getelementptr i32, i32* %r2, i32 7 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i256 -%r154 = shl i256 %r153, 224 -%r155 = or i256 %r149, %r154 -%r156 = zext i256 %r155 to i288 -%r158 = getelementptr i32, i32* %r2, i32 8 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i288 -%r161 = shl i288 %r160, 256 -%r162 = or i288 %r156, %r161 -%r163 = zext i288 %r162 to i320 -%r165 = getelementptr i32, i32* %r2, i32 9 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i320 -%r168 = shl i320 %r167, 288 -%r169 = or i320 %r163, %r168 -%r170 = zext i320 %r169 to i352 -%r172 = getelementptr i32, i32* %r2, i32 10 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i352 -%r175 = shl i352 %r174, 320 -%r176 = or i352 %r170, %r175 -%r177 = zext i352 %r176 to i384 -%r179 = getelementptr i32, i32* %r2, i32 11 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i384 -%r182 = shl i384 %r181, 352 -%r183 = or i384 %r177, %r182 -%r184 = zext i384 %r183 to i416 -%r186 = getelementptr i32, i32* %r2, i32 12 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i416 -%r189 = shl i416 %r188, 384 -%r190 = or i416 %r184, %r189 -%r191 = zext i416 %r190 to i448 -%r193 = getelementptr i32, i32* %r2, i32 13 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i448 -%r196 = shl i448 %r195, 416 -%r197 = or i448 %r191, %r196 -%r198 = zext i448 %r197 to i480 -%r200 = getelementptr i32, i32* %r2, i32 14 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i480 -%r203 = shl i480 %r202, 448 -%r204 = or i480 %r198, %r203 -%r205 = zext i480 %r204 to i512 -%r207 = getelementptr i32, i32* %r2, i32 15 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i512 -%r210 = shl i512 %r209, 480 -%r211 = or i512 %r205, %r210 -%r212 = zext i512 %r211 to i544 -%r214 = getelementptr i32, i32* %r2, i32 16 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i544 -%r217 = shl i544 %r216, 512 -%r218 = or i544 %r212, %r217 -%r219 = zext i544 %r218 to i576 -%r221 = getelementptr i32, i32* %r2, i32 17 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i576 -%r224 = shl i576 %r223, 544 -%r225 = or i576 %r219, %r224 -%r226 = zext i576 %r225 to i608 -%r228 = getelementptr i32, i32* %r2, i32 18 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i608 -%r231 = shl i608 %r230, 576 -%r232 = or i608 %r226, %r231 -%r233 = zext i608 %r232 to i640 -%r235 = getelementptr i32, i32* %r2, i32 19 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i640 -%r238 = shl i640 %r237, 608 -%r239 = or i640 %r233, %r238 -%r240 = zext i640 %r239 to i672 -%r242 = getelementptr i32, i32* %r2, i32 20 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i672 -%r245 = shl i672 %r244, 640 -%r246 = or i672 %r240, %r245 -%r247 = zext i672 %r246 to i704 -%r249 = getelementptr i32, i32* %r2, i32 21 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i704 -%r252 = shl i704 %r251, 672 -%r253 = or i704 %r247, %r252 -%r254 = zext i704 %r253 to i736 -%r256 = getelementptr i32, i32* %r2, i32 22 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i736 -%r259 = shl i736 %r258, 704 -%r260 = or i736 %r254, %r259 -%r261 = zext i736 %r260 to i768 -%r263 = getelementptr i32, i32* %r2, i32 23 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i768 -%r266 = shl i768 %r265, 736 -%r267 = or i768 %r261, %r266 -%r268 = zext i768 %r267 to i800 -%r270 = getelementptr i32, i32* %r2, i32 24 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i800 -%r273 = shl i800 %r272, 768 -%r274 = or i800 %r268, %r273 -%r275 = zext i800 %r274 to i832 -%r277 = getelementptr i32, i32* %r2, i32 25 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i832 -%r280 = shl i832 %r279, 800 -%r281 = or i832 %r275, %r280 -%r282 = zext i832 %r281 to i864 -%r284 = getelementptr i32, i32* %r2, i32 26 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i864 -%r287 = shl i864 %r286, 832 -%r288 = or i864 %r282, %r287 -%r289 = zext i864 %r288 to i896 -%r291 = getelementptr i32, i32* %r2, i32 27 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i896 -%r294 = shl i896 %r293, 864 -%r295 = or i896 %r289, %r294 -%r296 = zext i896 %r295 to i928 -%r298 = getelementptr i32, i32* %r2, i32 28 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i928 -%r301 = shl i928 %r300, 896 -%r302 = or i928 %r296, %r301 -%r303 = zext i928 %r302 to i960 -%r305 = getelementptr i32, i32* %r2, i32 29 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i960 -%r308 = shl i960 %r307, 928 -%r309 = or i960 %r303, %r308 -%r310 = zext i960 %r309 to i992 -%r311 = trunc i992 %r310 to i32 -%r312 = mul i32 %r311, %r6 -%r313 = call i512 @mulPv480x32(i32* %r3, i32 %r312) -%r314 = zext i512 %r313 to i992 -%r315 = add i992 %r310, %r314 -%r316 = lshr i992 %r315, 32 -%r317 = trunc i992 %r316 to i960 -%r318 = trunc i960 %r317 to i32 -%r319 = mul i32 %r318, %r6 -%r320 = call i512 @mulPv480x32(i32* %r3, i32 %r319) -%r321 = zext i512 %r320 to i960 -%r322 = add i960 %r317, %r321 -%r323 = lshr i960 %r322, 32 -%r324 = trunc i960 %r323 to i928 -%r325 = trunc i928 %r324 to i32 -%r326 = mul i32 %r325, %r6 -%r327 = call i512 @mulPv480x32(i32* %r3, i32 %r326) -%r328 = zext i512 %r327 to i928 -%r329 = add i928 %r324, %r328 -%r330 = lshr i928 %r329, 32 -%r331 = trunc i928 %r330 to i896 -%r332 = trunc i896 %r331 to i32 -%r333 = mul i32 %r332, %r6 -%r334 = call i512 @mulPv480x32(i32* %r3, i32 %r333) -%r335 = zext i512 %r334 to i896 -%r336 = add i896 %r331, %r335 -%r337 = lshr i896 %r336, 32 -%r338 = trunc i896 %r337 to i864 -%r339 = trunc i864 %r338 to i32 -%r340 = mul i32 %r339, %r6 -%r341 = call i512 @mulPv480x32(i32* %r3, i32 %r340) -%r342 = zext i512 %r341 to i864 -%r343 = add i864 %r338, %r342 -%r344 = lshr i864 %r343, 32 -%r345 = trunc i864 %r344 to i832 -%r346 = trunc i832 %r345 to i32 -%r347 = mul i32 %r346, %r6 -%r348 = call i512 @mulPv480x32(i32* %r3, i32 %r347) -%r349 = zext i512 %r348 to i832 -%r350 = add i832 %r345, %r349 -%r351 = lshr i832 %r350, 32 -%r352 = trunc i832 %r351 to i800 -%r353 = trunc i800 %r352 to i32 -%r354 = mul i32 %r353, %r6 -%r355 = call i512 @mulPv480x32(i32* %r3, i32 %r354) -%r356 = zext i512 %r355 to i800 -%r357 = add i800 %r352, %r356 -%r358 = lshr i800 %r357, 32 -%r359 = trunc i800 %r358 to i768 -%r360 = trunc i768 %r359 to i32 -%r361 = mul i32 %r360, %r6 -%r362 = call i512 @mulPv480x32(i32* %r3, i32 %r361) -%r363 = zext i512 %r362 to i768 -%r364 = add i768 %r359, %r363 -%r365 = lshr i768 %r364, 32 -%r366 = trunc i768 %r365 to i736 -%r367 = trunc i736 %r366 to i32 -%r368 = mul i32 %r367, %r6 -%r369 = call i512 @mulPv480x32(i32* %r3, i32 %r368) -%r370 = zext i512 %r369 to i736 -%r371 = add i736 %r366, %r370 -%r372 = lshr i736 %r371, 32 -%r373 = trunc i736 %r372 to i704 -%r374 = trunc i704 %r373 to i32 -%r375 = mul i32 %r374, %r6 -%r376 = call i512 @mulPv480x32(i32* %r3, i32 %r375) -%r377 = zext i512 %r376 to i704 -%r378 = add i704 %r373, %r377 -%r379 = lshr i704 %r378, 32 -%r380 = trunc i704 %r379 to i672 -%r381 = trunc i672 %r380 to i32 -%r382 = mul i32 %r381, %r6 -%r383 = call i512 @mulPv480x32(i32* %r3, i32 %r382) -%r384 = zext i512 %r383 to i672 -%r385 = add i672 %r380, %r384 -%r386 = lshr i672 %r385, 32 -%r387 = trunc i672 %r386 to i640 -%r388 = trunc i640 %r387 to i32 -%r389 = mul i32 %r388, %r6 -%r390 = call i512 @mulPv480x32(i32* %r3, i32 %r389) -%r391 = zext i512 %r390 to i640 -%r392 = add i640 %r387, %r391 -%r393 = lshr i640 %r392, 32 -%r394 = trunc i640 %r393 to i608 -%r395 = trunc i608 %r394 to i32 -%r396 = mul i32 %r395, %r6 -%r397 = call i512 @mulPv480x32(i32* %r3, i32 %r396) -%r398 = zext i512 %r397 to i608 -%r399 = add i608 %r394, %r398 -%r400 = lshr i608 %r399, 32 -%r401 = trunc i608 %r400 to i576 -%r402 = trunc i576 %r401 to i32 -%r403 = mul i32 %r402, %r6 -%r404 = call i512 @mulPv480x32(i32* %r3, i32 %r403) -%r405 = zext i512 %r404 to i576 -%r406 = add i576 %r401, %r405 -%r407 = lshr i576 %r406, 32 -%r408 = trunc i576 %r407 to i544 -%r409 = trunc i544 %r408 to i32 -%r410 = mul i32 %r409, %r6 -%r411 = call i512 @mulPv480x32(i32* %r3, i32 %r410) -%r412 = zext i512 %r411 to i544 -%r413 = add i544 %r408, %r412 -%r414 = lshr i544 %r413, 32 -%r415 = trunc i544 %r414 to i512 -%r416 = zext i480 %r105 to i512 -%r417 = sub i512 %r415, %r416 -%r418 = lshr i512 %r417, 480 -%r419 = trunc i512 %r418 to i1 -%r420 = select i1 %r419, i512 %r415, i512 %r417 -%r421 = trunc i512 %r420 to i480 -%r422 = trunc i480 %r421 to i32 -%r424 = getelementptr i32, i32* %r1, i32 0 -store i32 %r422, i32* %r424 -%r425 = lshr i480 %r421, 32 -%r426 = trunc i480 %r425 to i32 -%r428 = getelementptr i32, i32* %r1, i32 1 -store i32 %r426, i32* %r428 -%r429 = lshr i480 %r425, 32 -%r430 = trunc i480 %r429 to i32 -%r432 = getelementptr i32, i32* %r1, i32 2 -store i32 %r430, i32* %r432 -%r433 = lshr i480 %r429, 32 -%r434 = trunc i480 %r433 to i32 -%r436 = getelementptr i32, i32* %r1, i32 3 -store i32 %r434, i32* %r436 -%r437 = lshr i480 %r433, 32 -%r438 = trunc i480 %r437 to i32 -%r440 = getelementptr i32, i32* %r1, i32 4 -store i32 %r438, i32* %r440 -%r441 = lshr i480 %r437, 32 -%r442 = trunc i480 %r441 to i32 -%r444 = getelementptr i32, i32* %r1, i32 5 -store i32 %r442, i32* %r444 -%r445 = lshr i480 %r441, 32 -%r446 = trunc i480 %r445 to i32 -%r448 = getelementptr i32, i32* %r1, i32 6 -store i32 %r446, i32* %r448 -%r449 = lshr i480 %r445, 32 -%r450 = trunc i480 %r449 to i32 -%r452 = getelementptr i32, i32* %r1, i32 7 -store i32 %r450, i32* %r452 -%r453 = lshr i480 %r449, 32 -%r454 = trunc i480 %r453 to i32 -%r456 = getelementptr i32, i32* %r1, i32 8 -store i32 %r454, i32* %r456 -%r457 = lshr i480 %r453, 32 -%r458 = trunc i480 %r457 to i32 -%r460 = getelementptr i32, i32* %r1, i32 9 -store i32 %r458, i32* %r460 -%r461 = lshr i480 %r457, 32 -%r462 = trunc i480 %r461 to i32 -%r464 = getelementptr i32, i32* %r1, i32 10 -store i32 %r462, i32* %r464 -%r465 = lshr i480 %r461, 32 -%r466 = trunc i480 %r465 to i32 -%r468 = getelementptr i32, i32* %r1, i32 11 -store i32 %r466, i32* %r468 -%r469 = lshr i480 %r465, 32 -%r470 = trunc i480 %r469 to i32 -%r472 = getelementptr i32, i32* %r1, i32 12 -store i32 %r470, i32* %r472 -%r473 = lshr i480 %r469, 32 -%r474 = trunc i480 %r473 to i32 -%r476 = getelementptr i32, i32* %r1, i32 13 -store i32 %r474, i32* %r476 -%r477 = lshr i480 %r473, 32 -%r478 = trunc i480 %r477 to i32 -%r480 = getelementptr i32, i32* %r1, i32 14 -store i32 %r478, i32* %r480 -ret void -} -define i32 @mcl_fp_addPre15L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r3, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r105 = load i32, i32* %r4 -%r106 = zext i32 %r105 to i64 -%r108 = getelementptr i32, i32* %r4, i32 1 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i64 -%r111 = shl i64 %r110, 32 -%r112 = or i64 %r106, %r111 -%r113 = zext i64 %r112 to i96 -%r115 = getelementptr i32, i32* %r4, i32 2 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i96 -%r118 = shl i96 %r117, 64 -%r119 = or i96 %r113, %r118 -%r120 = zext i96 %r119 to i128 -%r122 = getelementptr i32, i32* %r4, i32 3 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i128 -%r125 = shl i128 %r124, 96 -%r126 = or i128 %r120, %r125 -%r127 = zext i128 %r126 to i160 -%r129 = getelementptr i32, i32* %r4, i32 4 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i160 -%r132 = shl i160 %r131, 128 -%r133 = or i160 %r127, %r132 -%r134 = zext i160 %r133 to i192 -%r136 = getelementptr i32, i32* %r4, i32 5 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i192 -%r139 = shl i192 %r138, 160 -%r140 = or i192 %r134, %r139 -%r141 = zext i192 %r140 to i224 -%r143 = getelementptr i32, i32* %r4, i32 6 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i224 -%r146 = shl i224 %r145, 192 -%r147 = or i224 %r141, %r146 -%r148 = zext i224 %r147 to i256 -%r150 = getelementptr i32, i32* %r4, i32 7 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i256 -%r153 = shl i256 %r152, 224 -%r154 = or i256 %r148, %r153 -%r155 = zext i256 %r154 to i288 -%r157 = getelementptr i32, i32* %r4, i32 8 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i288 -%r160 = shl i288 %r159, 256 -%r161 = or i288 %r155, %r160 -%r162 = zext i288 %r161 to i320 -%r164 = getelementptr i32, i32* %r4, i32 9 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i320 -%r167 = shl i320 %r166, 288 -%r168 = or i320 %r162, %r167 -%r169 = zext i320 %r168 to i352 -%r171 = getelementptr i32, i32* %r4, i32 10 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i352 -%r174 = shl i352 %r173, 320 -%r175 = or i352 %r169, %r174 -%r176 = zext i352 %r175 to i384 -%r178 = getelementptr i32, i32* %r4, i32 11 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i384 -%r181 = shl i384 %r180, 352 -%r182 = or i384 %r176, %r181 -%r183 = zext i384 %r182 to i416 -%r185 = getelementptr i32, i32* %r4, i32 12 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i416 -%r188 = shl i416 %r187, 384 -%r189 = or i416 %r183, %r188 -%r190 = zext i416 %r189 to i448 -%r192 = getelementptr i32, i32* %r4, i32 13 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i448 -%r195 = shl i448 %r194, 416 -%r196 = or i448 %r190, %r195 -%r197 = zext i448 %r196 to i480 -%r199 = getelementptr i32, i32* %r4, i32 14 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i480 -%r202 = shl i480 %r201, 448 -%r203 = or i480 %r197, %r202 -%r204 = zext i480 %r203 to i512 -%r205 = add i512 %r104, %r204 -%r206 = trunc i512 %r205 to i480 -%r207 = trunc i480 %r206 to i32 -%r209 = getelementptr i32, i32* %r2, i32 0 -store i32 %r207, i32* %r209 -%r210 = lshr i480 %r206, 32 -%r211 = trunc i480 %r210 to i32 -%r213 = getelementptr i32, i32* %r2, i32 1 -store i32 %r211, i32* %r213 -%r214 = lshr i480 %r210, 32 -%r215 = trunc i480 %r214 to i32 -%r217 = getelementptr i32, i32* %r2, i32 2 -store i32 %r215, i32* %r217 -%r218 = lshr i480 %r214, 32 -%r219 = trunc i480 %r218 to i32 -%r221 = getelementptr i32, i32* %r2, i32 3 -store i32 %r219, i32* %r221 -%r222 = lshr i480 %r218, 32 -%r223 = trunc i480 %r222 to i32 -%r225 = getelementptr i32, i32* %r2, i32 4 -store i32 %r223, i32* %r225 -%r226 = lshr i480 %r222, 32 -%r227 = trunc i480 %r226 to i32 -%r229 = getelementptr i32, i32* %r2, i32 5 -store i32 %r227, i32* %r229 -%r230 = lshr i480 %r226, 32 -%r231 = trunc i480 %r230 to i32 -%r233 = getelementptr i32, i32* %r2, i32 6 -store i32 %r231, i32* %r233 -%r234 = lshr i480 %r230, 32 -%r235 = trunc i480 %r234 to i32 -%r237 = getelementptr i32, i32* %r2, i32 7 -store i32 %r235, i32* %r237 -%r238 = lshr i480 %r234, 32 -%r239 = trunc i480 %r238 to i32 -%r241 = getelementptr i32, i32* %r2, i32 8 -store i32 %r239, i32* %r241 -%r242 = lshr i480 %r238, 32 -%r243 = trunc i480 %r242 to i32 -%r245 = getelementptr i32, i32* %r2, i32 9 -store i32 %r243, i32* %r245 -%r246 = lshr i480 %r242, 32 -%r247 = trunc i480 %r246 to i32 -%r249 = getelementptr i32, i32* %r2, i32 10 -store i32 %r247, i32* %r249 -%r250 = lshr i480 %r246, 32 -%r251 = trunc i480 %r250 to i32 -%r253 = getelementptr i32, i32* %r2, i32 11 -store i32 %r251, i32* %r253 -%r254 = lshr i480 %r250, 32 -%r255 = trunc i480 %r254 to i32 -%r257 = getelementptr i32, i32* %r2, i32 12 -store i32 %r255, i32* %r257 -%r258 = lshr i480 %r254, 32 -%r259 = trunc i480 %r258 to i32 -%r261 = getelementptr i32, i32* %r2, i32 13 -store i32 %r259, i32* %r261 -%r262 = lshr i480 %r258, 32 -%r263 = trunc i480 %r262 to i32 -%r265 = getelementptr i32, i32* %r2, i32 14 -store i32 %r263, i32* %r265 -%r266 = lshr i512 %r205, 480 -%r267 = trunc i512 %r266 to i32 -ret i32 %r267 -} -define i32 @mcl_fp_subPre15L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r3, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r105 = load i32, i32* %r4 -%r106 = zext i32 %r105 to i64 -%r108 = getelementptr i32, i32* %r4, i32 1 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i64 -%r111 = shl i64 %r110, 32 -%r112 = or i64 %r106, %r111 -%r113 = zext i64 %r112 to i96 -%r115 = getelementptr i32, i32* %r4, i32 2 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i96 -%r118 = shl i96 %r117, 64 -%r119 = or i96 %r113, %r118 -%r120 = zext i96 %r119 to i128 -%r122 = getelementptr i32, i32* %r4, i32 3 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i128 -%r125 = shl i128 %r124, 96 -%r126 = or i128 %r120, %r125 -%r127 = zext i128 %r126 to i160 -%r129 = getelementptr i32, i32* %r4, i32 4 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i160 -%r132 = shl i160 %r131, 128 -%r133 = or i160 %r127, %r132 -%r134 = zext i160 %r133 to i192 -%r136 = getelementptr i32, i32* %r4, i32 5 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i192 -%r139 = shl i192 %r138, 160 -%r140 = or i192 %r134, %r139 -%r141 = zext i192 %r140 to i224 -%r143 = getelementptr i32, i32* %r4, i32 6 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i224 -%r146 = shl i224 %r145, 192 -%r147 = or i224 %r141, %r146 -%r148 = zext i224 %r147 to i256 -%r150 = getelementptr i32, i32* %r4, i32 7 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i256 -%r153 = shl i256 %r152, 224 -%r154 = or i256 %r148, %r153 -%r155 = zext i256 %r154 to i288 -%r157 = getelementptr i32, i32* %r4, i32 8 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i288 -%r160 = shl i288 %r159, 256 -%r161 = or i288 %r155, %r160 -%r162 = zext i288 %r161 to i320 -%r164 = getelementptr i32, i32* %r4, i32 9 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i320 -%r167 = shl i320 %r166, 288 -%r168 = or i320 %r162, %r167 -%r169 = zext i320 %r168 to i352 -%r171 = getelementptr i32, i32* %r4, i32 10 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i352 -%r174 = shl i352 %r173, 320 -%r175 = or i352 %r169, %r174 -%r176 = zext i352 %r175 to i384 -%r178 = getelementptr i32, i32* %r4, i32 11 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i384 -%r181 = shl i384 %r180, 352 -%r182 = or i384 %r176, %r181 -%r183 = zext i384 %r182 to i416 -%r185 = getelementptr i32, i32* %r4, i32 12 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i416 -%r188 = shl i416 %r187, 384 -%r189 = or i416 %r183, %r188 -%r190 = zext i416 %r189 to i448 -%r192 = getelementptr i32, i32* %r4, i32 13 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i448 -%r195 = shl i448 %r194, 416 -%r196 = or i448 %r190, %r195 -%r197 = zext i448 %r196 to i480 -%r199 = getelementptr i32, i32* %r4, i32 14 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i480 -%r202 = shl i480 %r201, 448 -%r203 = or i480 %r197, %r202 -%r204 = zext i480 %r203 to i512 -%r205 = sub i512 %r104, %r204 -%r206 = trunc i512 %r205 to i480 -%r207 = trunc i480 %r206 to i32 -%r209 = getelementptr i32, i32* %r2, i32 0 -store i32 %r207, i32* %r209 -%r210 = lshr i480 %r206, 32 -%r211 = trunc i480 %r210 to i32 -%r213 = getelementptr i32, i32* %r2, i32 1 -store i32 %r211, i32* %r213 -%r214 = lshr i480 %r210, 32 -%r215 = trunc i480 %r214 to i32 -%r217 = getelementptr i32, i32* %r2, i32 2 -store i32 %r215, i32* %r217 -%r218 = lshr i480 %r214, 32 -%r219 = trunc i480 %r218 to i32 -%r221 = getelementptr i32, i32* %r2, i32 3 -store i32 %r219, i32* %r221 -%r222 = lshr i480 %r218, 32 -%r223 = trunc i480 %r222 to i32 -%r225 = getelementptr i32, i32* %r2, i32 4 -store i32 %r223, i32* %r225 -%r226 = lshr i480 %r222, 32 -%r227 = trunc i480 %r226 to i32 -%r229 = getelementptr i32, i32* %r2, i32 5 -store i32 %r227, i32* %r229 -%r230 = lshr i480 %r226, 32 -%r231 = trunc i480 %r230 to i32 -%r233 = getelementptr i32, i32* %r2, i32 6 -store i32 %r231, i32* %r233 -%r234 = lshr i480 %r230, 32 -%r235 = trunc i480 %r234 to i32 -%r237 = getelementptr i32, i32* %r2, i32 7 -store i32 %r235, i32* %r237 -%r238 = lshr i480 %r234, 32 -%r239 = trunc i480 %r238 to i32 -%r241 = getelementptr i32, i32* %r2, i32 8 -store i32 %r239, i32* %r241 -%r242 = lshr i480 %r238, 32 -%r243 = trunc i480 %r242 to i32 -%r245 = getelementptr i32, i32* %r2, i32 9 -store i32 %r243, i32* %r245 -%r246 = lshr i480 %r242, 32 -%r247 = trunc i480 %r246 to i32 -%r249 = getelementptr i32, i32* %r2, i32 10 -store i32 %r247, i32* %r249 -%r250 = lshr i480 %r246, 32 -%r251 = trunc i480 %r250 to i32 -%r253 = getelementptr i32, i32* %r2, i32 11 -store i32 %r251, i32* %r253 -%r254 = lshr i480 %r250, 32 -%r255 = trunc i480 %r254 to i32 -%r257 = getelementptr i32, i32* %r2, i32 12 -store i32 %r255, i32* %r257 -%r258 = lshr i480 %r254, 32 -%r259 = trunc i480 %r258 to i32 -%r261 = getelementptr i32, i32* %r2, i32 13 -store i32 %r259, i32* %r261 -%r262 = lshr i480 %r258, 32 -%r263 = trunc i480 %r262 to i32 -%r265 = getelementptr i32, i32* %r2, i32 14 -store i32 %r263, i32* %r265 -%r266 = lshr i512 %r205, 480 -%r267 = trunc i512 %r266 to i32 -%r269 = and i32 %r267, 1 -ret i32 %r269 -} -define void @mcl_fp_shr1_15L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = zext i352 %r73 to i384 -%r76 = getelementptr i32, i32* %r2, i32 11 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i384 -%r79 = shl i384 %r78, 352 -%r80 = or i384 %r74, %r79 -%r81 = zext i384 %r80 to i416 -%r83 = getelementptr i32, i32* %r2, i32 12 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i416 -%r86 = shl i416 %r85, 384 -%r87 = or i416 %r81, %r86 -%r88 = zext i416 %r87 to i448 -%r90 = getelementptr i32, i32* %r2, i32 13 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i448 -%r93 = shl i448 %r92, 416 -%r94 = or i448 %r88, %r93 -%r95 = zext i448 %r94 to i480 -%r97 = getelementptr i32, i32* %r2, i32 14 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i480 -%r100 = shl i480 %r99, 448 -%r101 = or i480 %r95, %r100 -%r102 = lshr i480 %r101, 1 -%r103 = trunc i480 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 0 -store i32 %r103, i32* %r105 -%r106 = lshr i480 %r102, 32 -%r107 = trunc i480 %r106 to i32 -%r109 = getelementptr i32, i32* %r1, i32 1 -store i32 %r107, i32* %r109 -%r110 = lshr i480 %r106, 32 -%r111 = trunc i480 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 2 -store i32 %r111, i32* %r113 -%r114 = lshr i480 %r110, 32 -%r115 = trunc i480 %r114 to i32 -%r117 = getelementptr i32, i32* %r1, i32 3 -store i32 %r115, i32* %r117 -%r118 = lshr i480 %r114, 32 -%r119 = trunc i480 %r118 to i32 -%r121 = getelementptr i32, i32* %r1, i32 4 -store i32 %r119, i32* %r121 -%r122 = lshr i480 %r118, 32 -%r123 = trunc i480 %r122 to i32 -%r125 = getelementptr i32, i32* %r1, i32 5 -store i32 %r123, i32* %r125 -%r126 = lshr i480 %r122, 32 -%r127 = trunc i480 %r126 to i32 -%r129 = getelementptr i32, i32* %r1, i32 6 -store i32 %r127, i32* %r129 -%r130 = lshr i480 %r126, 32 -%r131 = trunc i480 %r130 to i32 -%r133 = getelementptr i32, i32* %r1, i32 7 -store i32 %r131, i32* %r133 -%r134 = lshr i480 %r130, 32 -%r135 = trunc i480 %r134 to i32 -%r137 = getelementptr i32, i32* %r1, i32 8 -store i32 %r135, i32* %r137 -%r138 = lshr i480 %r134, 32 -%r139 = trunc i480 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 9 -store i32 %r139, i32* %r141 -%r142 = lshr i480 %r138, 32 -%r143 = trunc i480 %r142 to i32 -%r145 = getelementptr i32, i32* %r1, i32 10 -store i32 %r143, i32* %r145 -%r146 = lshr i480 %r142, 32 -%r147 = trunc i480 %r146 to i32 -%r149 = getelementptr i32, i32* %r1, i32 11 -store i32 %r147, i32* %r149 -%r150 = lshr i480 %r146, 32 -%r151 = trunc i480 %r150 to i32 -%r153 = getelementptr i32, i32* %r1, i32 12 -store i32 %r151, i32* %r153 -%r154 = lshr i480 %r150, 32 -%r155 = trunc i480 %r154 to i32 -%r157 = getelementptr i32, i32* %r1, i32 13 -store i32 %r155, i32* %r157 -%r158 = lshr i480 %r154, 32 -%r159 = trunc i480 %r158 to i32 -%r161 = getelementptr i32, i32* %r1, i32 14 -store i32 %r159, i32* %r161 -ret void -} -define void @mcl_fp_add15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = load i32, i32* %r3 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r3, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r3, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r3, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r3, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r3, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r142 = getelementptr i32, i32* %r3, i32 6 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i224 -%r145 = shl i224 %r144, 192 -%r146 = or i224 %r140, %r145 -%r147 = zext i224 %r146 to i256 -%r149 = getelementptr i32, i32* %r3, i32 7 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i256 -%r152 = shl i256 %r151, 224 -%r153 = or i256 %r147, %r152 -%r154 = zext i256 %r153 to i288 -%r156 = getelementptr i32, i32* %r3, i32 8 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i288 -%r159 = shl i288 %r158, 256 -%r160 = or i288 %r154, %r159 -%r161 = zext i288 %r160 to i320 -%r163 = getelementptr i32, i32* %r3, i32 9 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i320 -%r166 = shl i320 %r165, 288 -%r167 = or i320 %r161, %r166 -%r168 = zext i320 %r167 to i352 -%r170 = getelementptr i32, i32* %r3, i32 10 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i352 -%r173 = shl i352 %r172, 320 -%r174 = or i352 %r168, %r173 -%r175 = zext i352 %r174 to i384 -%r177 = getelementptr i32, i32* %r3, i32 11 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i384 -%r180 = shl i384 %r179, 352 -%r181 = or i384 %r175, %r180 -%r182 = zext i384 %r181 to i416 -%r184 = getelementptr i32, i32* %r3, i32 12 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i416 -%r187 = shl i416 %r186, 384 -%r188 = or i416 %r182, %r187 -%r189 = zext i416 %r188 to i448 -%r191 = getelementptr i32, i32* %r3, i32 13 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i448 -%r194 = shl i448 %r193, 416 -%r195 = or i448 %r189, %r194 -%r196 = zext i448 %r195 to i480 -%r198 = getelementptr i32, i32* %r3, i32 14 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i480 -%r201 = shl i480 %r200, 448 -%r202 = or i480 %r196, %r201 -%r203 = zext i480 %r103 to i512 -%r204 = zext i480 %r202 to i512 -%r205 = add i512 %r203, %r204 -%r206 = trunc i512 %r205 to i480 -%r207 = trunc i480 %r206 to i32 -%r209 = getelementptr i32, i32* %r1, i32 0 -store i32 %r207, i32* %r209 -%r210 = lshr i480 %r206, 32 -%r211 = trunc i480 %r210 to i32 -%r213 = getelementptr i32, i32* %r1, i32 1 -store i32 %r211, i32* %r213 -%r214 = lshr i480 %r210, 32 -%r215 = trunc i480 %r214 to i32 -%r217 = getelementptr i32, i32* %r1, i32 2 -store i32 %r215, i32* %r217 -%r218 = lshr i480 %r214, 32 -%r219 = trunc i480 %r218 to i32 -%r221 = getelementptr i32, i32* %r1, i32 3 -store i32 %r219, i32* %r221 -%r222 = lshr i480 %r218, 32 -%r223 = trunc i480 %r222 to i32 -%r225 = getelementptr i32, i32* %r1, i32 4 -store i32 %r223, i32* %r225 -%r226 = lshr i480 %r222, 32 -%r227 = trunc i480 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 5 -store i32 %r227, i32* %r229 -%r230 = lshr i480 %r226, 32 -%r231 = trunc i480 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 6 -store i32 %r231, i32* %r233 -%r234 = lshr i480 %r230, 32 -%r235 = trunc i480 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 7 -store i32 %r235, i32* %r237 -%r238 = lshr i480 %r234, 32 -%r239 = trunc i480 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 8 -store i32 %r239, i32* %r241 -%r242 = lshr i480 %r238, 32 -%r243 = trunc i480 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 9 -store i32 %r243, i32* %r245 -%r246 = lshr i480 %r242, 32 -%r247 = trunc i480 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 10 -store i32 %r247, i32* %r249 -%r250 = lshr i480 %r246, 32 -%r251 = trunc i480 %r250 to i32 -%r253 = getelementptr i32, i32* %r1, i32 11 -store i32 %r251, i32* %r253 -%r254 = lshr i480 %r250, 32 -%r255 = trunc i480 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 12 -store i32 %r255, i32* %r257 -%r258 = lshr i480 %r254, 32 -%r259 = trunc i480 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 13 -store i32 %r259, i32* %r261 -%r262 = lshr i480 %r258, 32 -%r263 = trunc i480 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 14 -store i32 %r263, i32* %r265 -%r266 = load i32, i32* %r4 -%r267 = zext i32 %r266 to i64 -%r269 = getelementptr i32, i32* %r4, i32 1 -%r270 = load i32, i32* %r269 -%r271 = zext i32 %r270 to i64 -%r272 = shl i64 %r271, 32 -%r273 = or i64 %r267, %r272 -%r274 = zext i64 %r273 to i96 -%r276 = getelementptr i32, i32* %r4, i32 2 -%r277 = load i32, i32* %r276 -%r278 = zext i32 %r277 to i96 -%r279 = shl i96 %r278, 64 -%r280 = or i96 %r274, %r279 -%r281 = zext i96 %r280 to i128 -%r283 = getelementptr i32, i32* %r4, i32 3 -%r284 = load i32, i32* %r283 -%r285 = zext i32 %r284 to i128 -%r286 = shl i128 %r285, 96 -%r287 = or i128 %r281, %r286 -%r288 = zext i128 %r287 to i160 -%r290 = getelementptr i32, i32* %r4, i32 4 -%r291 = load i32, i32* %r290 -%r292 = zext i32 %r291 to i160 -%r293 = shl i160 %r292, 128 -%r294 = or i160 %r288, %r293 -%r295 = zext i160 %r294 to i192 -%r297 = getelementptr i32, i32* %r4, i32 5 -%r298 = load i32, i32* %r297 -%r299 = zext i32 %r298 to i192 -%r300 = shl i192 %r299, 160 -%r301 = or i192 %r295, %r300 -%r302 = zext i192 %r301 to i224 -%r304 = getelementptr i32, i32* %r4, i32 6 -%r305 = load i32, i32* %r304 -%r306 = zext i32 %r305 to i224 -%r307 = shl i224 %r306, 192 -%r308 = or i224 %r302, %r307 -%r309 = zext i224 %r308 to i256 -%r311 = getelementptr i32, i32* %r4, i32 7 -%r312 = load i32, i32* %r311 -%r313 = zext i32 %r312 to i256 -%r314 = shl i256 %r313, 224 -%r315 = or i256 %r309, %r314 -%r316 = zext i256 %r315 to i288 -%r318 = getelementptr i32, i32* %r4, i32 8 -%r319 = load i32, i32* %r318 -%r320 = zext i32 %r319 to i288 -%r321 = shl i288 %r320, 256 -%r322 = or i288 %r316, %r321 -%r323 = zext i288 %r322 to i320 -%r325 = getelementptr i32, i32* %r4, i32 9 -%r326 = load i32, i32* %r325 -%r327 = zext i32 %r326 to i320 -%r328 = shl i320 %r327, 288 -%r329 = or i320 %r323, %r328 -%r330 = zext i320 %r329 to i352 -%r332 = getelementptr i32, i32* %r4, i32 10 -%r333 = load i32, i32* %r332 -%r334 = zext i32 %r333 to i352 -%r335 = shl i352 %r334, 320 -%r336 = or i352 %r330, %r335 -%r337 = zext i352 %r336 to i384 -%r339 = getelementptr i32, i32* %r4, i32 11 -%r340 = load i32, i32* %r339 -%r341 = zext i32 %r340 to i384 -%r342 = shl i384 %r341, 352 -%r343 = or i384 %r337, %r342 -%r344 = zext i384 %r343 to i416 -%r346 = getelementptr i32, i32* %r4, i32 12 -%r347 = load i32, i32* %r346 -%r348 = zext i32 %r347 to i416 -%r349 = shl i416 %r348, 384 -%r350 = or i416 %r344, %r349 -%r351 = zext i416 %r350 to i448 -%r353 = getelementptr i32, i32* %r4, i32 13 -%r354 = load i32, i32* %r353 -%r355 = zext i32 %r354 to i448 -%r356 = shl i448 %r355, 416 -%r357 = or i448 %r351, %r356 -%r358 = zext i448 %r357 to i480 -%r360 = getelementptr i32, i32* %r4, i32 14 -%r361 = load i32, i32* %r360 -%r362 = zext i32 %r361 to i480 -%r363 = shl i480 %r362, 448 -%r364 = or i480 %r358, %r363 -%r365 = zext i480 %r364 to i512 -%r366 = sub i512 %r205, %r365 -%r367 = lshr i512 %r366, 480 -%r368 = trunc i512 %r367 to i1 -br i1%r368, label %carry, label %nocarry -nocarry: -%r369 = trunc i512 %r366 to i480 -%r370 = trunc i480 %r369 to i32 -%r372 = getelementptr i32, i32* %r1, i32 0 -store i32 %r370, i32* %r372 -%r373 = lshr i480 %r369, 32 -%r374 = trunc i480 %r373 to i32 -%r376 = getelementptr i32, i32* %r1, i32 1 -store i32 %r374, i32* %r376 -%r377 = lshr i480 %r373, 32 -%r378 = trunc i480 %r377 to i32 -%r380 = getelementptr i32, i32* %r1, i32 2 -store i32 %r378, i32* %r380 -%r381 = lshr i480 %r377, 32 -%r382 = trunc i480 %r381 to i32 -%r384 = getelementptr i32, i32* %r1, i32 3 -store i32 %r382, i32* %r384 -%r385 = lshr i480 %r381, 32 -%r386 = trunc i480 %r385 to i32 -%r388 = getelementptr i32, i32* %r1, i32 4 -store i32 %r386, i32* %r388 -%r389 = lshr i480 %r385, 32 -%r390 = trunc i480 %r389 to i32 -%r392 = getelementptr i32, i32* %r1, i32 5 -store i32 %r390, i32* %r392 -%r393 = lshr i480 %r389, 32 -%r394 = trunc i480 %r393 to i32 -%r396 = getelementptr i32, i32* %r1, i32 6 -store i32 %r394, i32* %r396 -%r397 = lshr i480 %r393, 32 -%r398 = trunc i480 %r397 to i32 -%r400 = getelementptr i32, i32* %r1, i32 7 -store i32 %r398, i32* %r400 -%r401 = lshr i480 %r397, 32 -%r402 = trunc i480 %r401 to i32 -%r404 = getelementptr i32, i32* %r1, i32 8 -store i32 %r402, i32* %r404 -%r405 = lshr i480 %r401, 32 -%r406 = trunc i480 %r405 to i32 -%r408 = getelementptr i32, i32* %r1, i32 9 -store i32 %r406, i32* %r408 -%r409 = lshr i480 %r405, 32 -%r410 = trunc i480 %r409 to i32 -%r412 = getelementptr i32, i32* %r1, i32 10 -store i32 %r410, i32* %r412 -%r413 = lshr i480 %r409, 32 -%r414 = trunc i480 %r413 to i32 -%r416 = getelementptr i32, i32* %r1, i32 11 -store i32 %r414, i32* %r416 -%r417 = lshr i480 %r413, 32 -%r418 = trunc i480 %r417 to i32 -%r420 = getelementptr i32, i32* %r1, i32 12 -store i32 %r418, i32* %r420 -%r421 = lshr i480 %r417, 32 -%r422 = trunc i480 %r421 to i32 -%r424 = getelementptr i32, i32* %r1, i32 13 -store i32 %r422, i32* %r424 -%r425 = lshr i480 %r421, 32 -%r426 = trunc i480 %r425 to i32 -%r428 = getelementptr i32, i32* %r1, i32 14 -store i32 %r426, i32* %r428 -ret void -carry: -ret void -} -define void @mcl_fp_addNF15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = load i32, i32* %r3 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r3, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r3, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r3, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r3, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r3, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r142 = getelementptr i32, i32* %r3, i32 6 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i224 -%r145 = shl i224 %r144, 192 -%r146 = or i224 %r140, %r145 -%r147 = zext i224 %r146 to i256 -%r149 = getelementptr i32, i32* %r3, i32 7 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i256 -%r152 = shl i256 %r151, 224 -%r153 = or i256 %r147, %r152 -%r154 = zext i256 %r153 to i288 -%r156 = getelementptr i32, i32* %r3, i32 8 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i288 -%r159 = shl i288 %r158, 256 -%r160 = or i288 %r154, %r159 -%r161 = zext i288 %r160 to i320 -%r163 = getelementptr i32, i32* %r3, i32 9 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i320 -%r166 = shl i320 %r165, 288 -%r167 = or i320 %r161, %r166 -%r168 = zext i320 %r167 to i352 -%r170 = getelementptr i32, i32* %r3, i32 10 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i352 -%r173 = shl i352 %r172, 320 -%r174 = or i352 %r168, %r173 -%r175 = zext i352 %r174 to i384 -%r177 = getelementptr i32, i32* %r3, i32 11 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i384 -%r180 = shl i384 %r179, 352 -%r181 = or i384 %r175, %r180 -%r182 = zext i384 %r181 to i416 -%r184 = getelementptr i32, i32* %r3, i32 12 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i416 -%r187 = shl i416 %r186, 384 -%r188 = or i416 %r182, %r187 -%r189 = zext i416 %r188 to i448 -%r191 = getelementptr i32, i32* %r3, i32 13 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i448 -%r194 = shl i448 %r193, 416 -%r195 = or i448 %r189, %r194 -%r196 = zext i448 %r195 to i480 -%r198 = getelementptr i32, i32* %r3, i32 14 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i480 -%r201 = shl i480 %r200, 448 -%r202 = or i480 %r196, %r201 -%r203 = add i480 %r103, %r202 -%r204 = load i32, i32* %r4 -%r205 = zext i32 %r204 to i64 -%r207 = getelementptr i32, i32* %r4, i32 1 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i64 -%r210 = shl i64 %r209, 32 -%r211 = or i64 %r205, %r210 -%r212 = zext i64 %r211 to i96 -%r214 = getelementptr i32, i32* %r4, i32 2 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i96 -%r217 = shl i96 %r216, 64 -%r218 = or i96 %r212, %r217 -%r219 = zext i96 %r218 to i128 -%r221 = getelementptr i32, i32* %r4, i32 3 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i128 -%r224 = shl i128 %r223, 96 -%r225 = or i128 %r219, %r224 -%r226 = zext i128 %r225 to i160 -%r228 = getelementptr i32, i32* %r4, i32 4 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i160 -%r231 = shl i160 %r230, 128 -%r232 = or i160 %r226, %r231 -%r233 = zext i160 %r232 to i192 -%r235 = getelementptr i32, i32* %r4, i32 5 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i192 -%r238 = shl i192 %r237, 160 -%r239 = or i192 %r233, %r238 -%r240 = zext i192 %r239 to i224 -%r242 = getelementptr i32, i32* %r4, i32 6 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i224 -%r245 = shl i224 %r244, 192 -%r246 = or i224 %r240, %r245 -%r247 = zext i224 %r246 to i256 -%r249 = getelementptr i32, i32* %r4, i32 7 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i256 -%r252 = shl i256 %r251, 224 -%r253 = or i256 %r247, %r252 -%r254 = zext i256 %r253 to i288 -%r256 = getelementptr i32, i32* %r4, i32 8 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i288 -%r259 = shl i288 %r258, 256 -%r260 = or i288 %r254, %r259 -%r261 = zext i288 %r260 to i320 -%r263 = getelementptr i32, i32* %r4, i32 9 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i320 -%r266 = shl i320 %r265, 288 -%r267 = or i320 %r261, %r266 -%r268 = zext i320 %r267 to i352 -%r270 = getelementptr i32, i32* %r4, i32 10 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i352 -%r273 = shl i352 %r272, 320 -%r274 = or i352 %r268, %r273 -%r275 = zext i352 %r274 to i384 -%r277 = getelementptr i32, i32* %r4, i32 11 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i384 -%r280 = shl i384 %r279, 352 -%r281 = or i384 %r275, %r280 -%r282 = zext i384 %r281 to i416 -%r284 = getelementptr i32, i32* %r4, i32 12 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i416 -%r287 = shl i416 %r286, 384 -%r288 = or i416 %r282, %r287 -%r289 = zext i416 %r288 to i448 -%r291 = getelementptr i32, i32* %r4, i32 13 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i448 -%r294 = shl i448 %r293, 416 -%r295 = or i448 %r289, %r294 -%r296 = zext i448 %r295 to i480 -%r298 = getelementptr i32, i32* %r4, i32 14 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i480 -%r301 = shl i480 %r300, 448 -%r302 = or i480 %r296, %r301 -%r303 = sub i480 %r203, %r302 -%r304 = lshr i480 %r303, 479 -%r305 = trunc i480 %r304 to i1 -%r306 = select i1 %r305, i480 %r203, i480 %r303 -%r307 = trunc i480 %r306 to i32 -%r309 = getelementptr i32, i32* %r1, i32 0 -store i32 %r307, i32* %r309 -%r310 = lshr i480 %r306, 32 -%r311 = trunc i480 %r310 to i32 -%r313 = getelementptr i32, i32* %r1, i32 1 -store i32 %r311, i32* %r313 -%r314 = lshr i480 %r310, 32 -%r315 = trunc i480 %r314 to i32 -%r317 = getelementptr i32, i32* %r1, i32 2 -store i32 %r315, i32* %r317 -%r318 = lshr i480 %r314, 32 -%r319 = trunc i480 %r318 to i32 -%r321 = getelementptr i32, i32* %r1, i32 3 -store i32 %r319, i32* %r321 -%r322 = lshr i480 %r318, 32 -%r323 = trunc i480 %r322 to i32 -%r325 = getelementptr i32, i32* %r1, i32 4 -store i32 %r323, i32* %r325 -%r326 = lshr i480 %r322, 32 -%r327 = trunc i480 %r326 to i32 -%r329 = getelementptr i32, i32* %r1, i32 5 -store i32 %r327, i32* %r329 -%r330 = lshr i480 %r326, 32 -%r331 = trunc i480 %r330 to i32 -%r333 = getelementptr i32, i32* %r1, i32 6 -store i32 %r331, i32* %r333 -%r334 = lshr i480 %r330, 32 -%r335 = trunc i480 %r334 to i32 -%r337 = getelementptr i32, i32* %r1, i32 7 -store i32 %r335, i32* %r337 -%r338 = lshr i480 %r334, 32 -%r339 = trunc i480 %r338 to i32 -%r341 = getelementptr i32, i32* %r1, i32 8 -store i32 %r339, i32* %r341 -%r342 = lshr i480 %r338, 32 -%r343 = trunc i480 %r342 to i32 -%r345 = getelementptr i32, i32* %r1, i32 9 -store i32 %r343, i32* %r345 -%r346 = lshr i480 %r342, 32 -%r347 = trunc i480 %r346 to i32 -%r349 = getelementptr i32, i32* %r1, i32 10 -store i32 %r347, i32* %r349 -%r350 = lshr i480 %r346, 32 -%r351 = trunc i480 %r350 to i32 -%r353 = getelementptr i32, i32* %r1, i32 11 -store i32 %r351, i32* %r353 -%r354 = lshr i480 %r350, 32 -%r355 = trunc i480 %r354 to i32 -%r357 = getelementptr i32, i32* %r1, i32 12 -store i32 %r355, i32* %r357 -%r358 = lshr i480 %r354, 32 -%r359 = trunc i480 %r358 to i32 -%r361 = getelementptr i32, i32* %r1, i32 13 -store i32 %r359, i32* %r361 -%r362 = lshr i480 %r358, 32 -%r363 = trunc i480 %r362 to i32 -%r365 = getelementptr i32, i32* %r1, i32 14 -store i32 %r363, i32* %r365 -ret void -} -define void @mcl_fp_sub15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = load i32, i32* %r3 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r3, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r3, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r3, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r3, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r3, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r142 = getelementptr i32, i32* %r3, i32 6 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i224 -%r145 = shl i224 %r144, 192 -%r146 = or i224 %r140, %r145 -%r147 = zext i224 %r146 to i256 -%r149 = getelementptr i32, i32* %r3, i32 7 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i256 -%r152 = shl i256 %r151, 224 -%r153 = or i256 %r147, %r152 -%r154 = zext i256 %r153 to i288 -%r156 = getelementptr i32, i32* %r3, i32 8 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i288 -%r159 = shl i288 %r158, 256 -%r160 = or i288 %r154, %r159 -%r161 = zext i288 %r160 to i320 -%r163 = getelementptr i32, i32* %r3, i32 9 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i320 -%r166 = shl i320 %r165, 288 -%r167 = or i320 %r161, %r166 -%r168 = zext i320 %r167 to i352 -%r170 = getelementptr i32, i32* %r3, i32 10 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i352 -%r173 = shl i352 %r172, 320 -%r174 = or i352 %r168, %r173 -%r175 = zext i352 %r174 to i384 -%r177 = getelementptr i32, i32* %r3, i32 11 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i384 -%r180 = shl i384 %r179, 352 -%r181 = or i384 %r175, %r180 -%r182 = zext i384 %r181 to i416 -%r184 = getelementptr i32, i32* %r3, i32 12 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i416 -%r187 = shl i416 %r186, 384 -%r188 = or i416 %r182, %r187 -%r189 = zext i416 %r188 to i448 -%r191 = getelementptr i32, i32* %r3, i32 13 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i448 -%r194 = shl i448 %r193, 416 -%r195 = or i448 %r189, %r194 -%r196 = zext i448 %r195 to i480 -%r198 = getelementptr i32, i32* %r3, i32 14 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i480 -%r201 = shl i480 %r200, 448 -%r202 = or i480 %r196, %r201 -%r203 = zext i480 %r103 to i512 -%r204 = zext i480 %r202 to i512 -%r205 = sub i512 %r203, %r204 -%r206 = trunc i512 %r205 to i480 -%r207 = lshr i512 %r205, 480 -%r208 = trunc i512 %r207 to i1 -%r209 = trunc i480 %r206 to i32 -%r211 = getelementptr i32, i32* %r1, i32 0 -store i32 %r209, i32* %r211 -%r212 = lshr i480 %r206, 32 -%r213 = trunc i480 %r212 to i32 -%r215 = getelementptr i32, i32* %r1, i32 1 -store i32 %r213, i32* %r215 -%r216 = lshr i480 %r212, 32 -%r217 = trunc i480 %r216 to i32 -%r219 = getelementptr i32, i32* %r1, i32 2 -store i32 %r217, i32* %r219 -%r220 = lshr i480 %r216, 32 -%r221 = trunc i480 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 3 -store i32 %r221, i32* %r223 -%r224 = lshr i480 %r220, 32 -%r225 = trunc i480 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 4 -store i32 %r225, i32* %r227 -%r228 = lshr i480 %r224, 32 -%r229 = trunc i480 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 5 -store i32 %r229, i32* %r231 -%r232 = lshr i480 %r228, 32 -%r233 = trunc i480 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 6 -store i32 %r233, i32* %r235 -%r236 = lshr i480 %r232, 32 -%r237 = trunc i480 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 7 -store i32 %r237, i32* %r239 -%r240 = lshr i480 %r236, 32 -%r241 = trunc i480 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 8 -store i32 %r241, i32* %r243 -%r244 = lshr i480 %r240, 32 -%r245 = trunc i480 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 9 -store i32 %r245, i32* %r247 -%r248 = lshr i480 %r244, 32 -%r249 = trunc i480 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 10 -store i32 %r249, i32* %r251 -%r252 = lshr i480 %r248, 32 -%r253 = trunc i480 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 11 -store i32 %r253, i32* %r255 -%r256 = lshr i480 %r252, 32 -%r257 = trunc i480 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 12 -store i32 %r257, i32* %r259 -%r260 = lshr i480 %r256, 32 -%r261 = trunc i480 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 13 -store i32 %r261, i32* %r263 -%r264 = lshr i480 %r260, 32 -%r265 = trunc i480 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 14 -store i32 %r265, i32* %r267 -br i1%r208, label %carry, label %nocarry -nocarry: -ret void -carry: -%r268 = load i32, i32* %r4 -%r269 = zext i32 %r268 to i64 -%r271 = getelementptr i32, i32* %r4, i32 1 -%r272 = load i32, i32* %r271 -%r273 = zext i32 %r272 to i64 -%r274 = shl i64 %r273, 32 -%r275 = or i64 %r269, %r274 -%r276 = zext i64 %r275 to i96 -%r278 = getelementptr i32, i32* %r4, i32 2 -%r279 = load i32, i32* %r278 -%r280 = zext i32 %r279 to i96 -%r281 = shl i96 %r280, 64 -%r282 = or i96 %r276, %r281 -%r283 = zext i96 %r282 to i128 -%r285 = getelementptr i32, i32* %r4, i32 3 -%r286 = load i32, i32* %r285 -%r287 = zext i32 %r286 to i128 -%r288 = shl i128 %r287, 96 -%r289 = or i128 %r283, %r288 -%r290 = zext i128 %r289 to i160 -%r292 = getelementptr i32, i32* %r4, i32 4 -%r293 = load i32, i32* %r292 -%r294 = zext i32 %r293 to i160 -%r295 = shl i160 %r294, 128 -%r296 = or i160 %r290, %r295 -%r297 = zext i160 %r296 to i192 -%r299 = getelementptr i32, i32* %r4, i32 5 -%r300 = load i32, i32* %r299 -%r301 = zext i32 %r300 to i192 -%r302 = shl i192 %r301, 160 -%r303 = or i192 %r297, %r302 -%r304 = zext i192 %r303 to i224 -%r306 = getelementptr i32, i32* %r4, i32 6 -%r307 = load i32, i32* %r306 -%r308 = zext i32 %r307 to i224 -%r309 = shl i224 %r308, 192 -%r310 = or i224 %r304, %r309 -%r311 = zext i224 %r310 to i256 -%r313 = getelementptr i32, i32* %r4, i32 7 -%r314 = load i32, i32* %r313 -%r315 = zext i32 %r314 to i256 -%r316 = shl i256 %r315, 224 -%r317 = or i256 %r311, %r316 -%r318 = zext i256 %r317 to i288 -%r320 = getelementptr i32, i32* %r4, i32 8 -%r321 = load i32, i32* %r320 -%r322 = zext i32 %r321 to i288 -%r323 = shl i288 %r322, 256 -%r324 = or i288 %r318, %r323 -%r325 = zext i288 %r324 to i320 -%r327 = getelementptr i32, i32* %r4, i32 9 -%r328 = load i32, i32* %r327 -%r329 = zext i32 %r328 to i320 -%r330 = shl i320 %r329, 288 -%r331 = or i320 %r325, %r330 -%r332 = zext i320 %r331 to i352 -%r334 = getelementptr i32, i32* %r4, i32 10 -%r335 = load i32, i32* %r334 -%r336 = zext i32 %r335 to i352 -%r337 = shl i352 %r336, 320 -%r338 = or i352 %r332, %r337 -%r339 = zext i352 %r338 to i384 -%r341 = getelementptr i32, i32* %r4, i32 11 -%r342 = load i32, i32* %r341 -%r343 = zext i32 %r342 to i384 -%r344 = shl i384 %r343, 352 -%r345 = or i384 %r339, %r344 -%r346 = zext i384 %r345 to i416 -%r348 = getelementptr i32, i32* %r4, i32 12 -%r349 = load i32, i32* %r348 -%r350 = zext i32 %r349 to i416 -%r351 = shl i416 %r350, 384 -%r352 = or i416 %r346, %r351 -%r353 = zext i416 %r352 to i448 -%r355 = getelementptr i32, i32* %r4, i32 13 -%r356 = load i32, i32* %r355 -%r357 = zext i32 %r356 to i448 -%r358 = shl i448 %r357, 416 -%r359 = or i448 %r353, %r358 -%r360 = zext i448 %r359 to i480 -%r362 = getelementptr i32, i32* %r4, i32 14 -%r363 = load i32, i32* %r362 -%r364 = zext i32 %r363 to i480 -%r365 = shl i480 %r364, 448 -%r366 = or i480 %r360, %r365 -%r367 = add i480 %r206, %r366 -%r368 = trunc i480 %r367 to i32 -%r370 = getelementptr i32, i32* %r1, i32 0 -store i32 %r368, i32* %r370 -%r371 = lshr i480 %r367, 32 -%r372 = trunc i480 %r371 to i32 -%r374 = getelementptr i32, i32* %r1, i32 1 -store i32 %r372, i32* %r374 -%r375 = lshr i480 %r371, 32 -%r376 = trunc i480 %r375 to i32 -%r378 = getelementptr i32, i32* %r1, i32 2 -store i32 %r376, i32* %r378 -%r379 = lshr i480 %r375, 32 -%r380 = trunc i480 %r379 to i32 -%r382 = getelementptr i32, i32* %r1, i32 3 -store i32 %r380, i32* %r382 -%r383 = lshr i480 %r379, 32 -%r384 = trunc i480 %r383 to i32 -%r386 = getelementptr i32, i32* %r1, i32 4 -store i32 %r384, i32* %r386 -%r387 = lshr i480 %r383, 32 -%r388 = trunc i480 %r387 to i32 -%r390 = getelementptr i32, i32* %r1, i32 5 -store i32 %r388, i32* %r390 -%r391 = lshr i480 %r387, 32 -%r392 = trunc i480 %r391 to i32 -%r394 = getelementptr i32, i32* %r1, i32 6 -store i32 %r392, i32* %r394 -%r395 = lshr i480 %r391, 32 -%r396 = trunc i480 %r395 to i32 -%r398 = getelementptr i32, i32* %r1, i32 7 -store i32 %r396, i32* %r398 -%r399 = lshr i480 %r395, 32 -%r400 = trunc i480 %r399 to i32 -%r402 = getelementptr i32, i32* %r1, i32 8 -store i32 %r400, i32* %r402 -%r403 = lshr i480 %r399, 32 -%r404 = trunc i480 %r403 to i32 -%r406 = getelementptr i32, i32* %r1, i32 9 -store i32 %r404, i32* %r406 -%r407 = lshr i480 %r403, 32 -%r408 = trunc i480 %r407 to i32 -%r410 = getelementptr i32, i32* %r1, i32 10 -store i32 %r408, i32* %r410 -%r411 = lshr i480 %r407, 32 -%r412 = trunc i480 %r411 to i32 -%r414 = getelementptr i32, i32* %r1, i32 11 -store i32 %r412, i32* %r414 -%r415 = lshr i480 %r411, 32 -%r416 = trunc i480 %r415 to i32 -%r418 = getelementptr i32, i32* %r1, i32 12 -store i32 %r416, i32* %r418 -%r419 = lshr i480 %r415, 32 -%r420 = trunc i480 %r419 to i32 -%r422 = getelementptr i32, i32* %r1, i32 13 -store i32 %r420, i32* %r422 -%r423 = lshr i480 %r419, 32 -%r424 = trunc i480 %r423 to i32 -%r426 = getelementptr i32, i32* %r1, i32 14 -store i32 %r424, i32* %r426 -ret void -} -define void @mcl_fp_subNF15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = load i32, i32* %r3 -%r105 = zext i32 %r104 to i64 -%r107 = getelementptr i32, i32* %r3, i32 1 -%r108 = load i32, i32* %r107 -%r109 = zext i32 %r108 to i64 -%r110 = shl i64 %r109, 32 -%r111 = or i64 %r105, %r110 -%r112 = zext i64 %r111 to i96 -%r114 = getelementptr i32, i32* %r3, i32 2 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i96 -%r117 = shl i96 %r116, 64 -%r118 = or i96 %r112, %r117 -%r119 = zext i96 %r118 to i128 -%r121 = getelementptr i32, i32* %r3, i32 3 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i128 -%r124 = shl i128 %r123, 96 -%r125 = or i128 %r119, %r124 -%r126 = zext i128 %r125 to i160 -%r128 = getelementptr i32, i32* %r3, i32 4 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i160 -%r131 = shl i160 %r130, 128 -%r132 = or i160 %r126, %r131 -%r133 = zext i160 %r132 to i192 -%r135 = getelementptr i32, i32* %r3, i32 5 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i192 -%r138 = shl i192 %r137, 160 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i224 -%r142 = getelementptr i32, i32* %r3, i32 6 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i224 -%r145 = shl i224 %r144, 192 -%r146 = or i224 %r140, %r145 -%r147 = zext i224 %r146 to i256 -%r149 = getelementptr i32, i32* %r3, i32 7 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i256 -%r152 = shl i256 %r151, 224 -%r153 = or i256 %r147, %r152 -%r154 = zext i256 %r153 to i288 -%r156 = getelementptr i32, i32* %r3, i32 8 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i288 -%r159 = shl i288 %r158, 256 -%r160 = or i288 %r154, %r159 -%r161 = zext i288 %r160 to i320 -%r163 = getelementptr i32, i32* %r3, i32 9 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i320 -%r166 = shl i320 %r165, 288 -%r167 = or i320 %r161, %r166 -%r168 = zext i320 %r167 to i352 -%r170 = getelementptr i32, i32* %r3, i32 10 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i352 -%r173 = shl i352 %r172, 320 -%r174 = or i352 %r168, %r173 -%r175 = zext i352 %r174 to i384 -%r177 = getelementptr i32, i32* %r3, i32 11 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i384 -%r180 = shl i384 %r179, 352 -%r181 = or i384 %r175, %r180 -%r182 = zext i384 %r181 to i416 -%r184 = getelementptr i32, i32* %r3, i32 12 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i416 -%r187 = shl i416 %r186, 384 -%r188 = or i416 %r182, %r187 -%r189 = zext i416 %r188 to i448 -%r191 = getelementptr i32, i32* %r3, i32 13 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i448 -%r194 = shl i448 %r193, 416 -%r195 = or i448 %r189, %r194 -%r196 = zext i448 %r195 to i480 -%r198 = getelementptr i32, i32* %r3, i32 14 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i480 -%r201 = shl i480 %r200, 448 -%r202 = or i480 %r196, %r201 -%r203 = sub i480 %r103, %r202 -%r204 = lshr i480 %r203, 479 -%r205 = trunc i480 %r204 to i1 -%r206 = load i32, i32* %r4 -%r207 = zext i32 %r206 to i64 -%r209 = getelementptr i32, i32* %r4, i32 1 -%r210 = load i32, i32* %r209 -%r211 = zext i32 %r210 to i64 -%r212 = shl i64 %r211, 32 -%r213 = or i64 %r207, %r212 -%r214 = zext i64 %r213 to i96 -%r216 = getelementptr i32, i32* %r4, i32 2 -%r217 = load i32, i32* %r216 -%r218 = zext i32 %r217 to i96 -%r219 = shl i96 %r218, 64 -%r220 = or i96 %r214, %r219 -%r221 = zext i96 %r220 to i128 -%r223 = getelementptr i32, i32* %r4, i32 3 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i128 -%r226 = shl i128 %r225, 96 -%r227 = or i128 %r221, %r226 -%r228 = zext i128 %r227 to i160 -%r230 = getelementptr i32, i32* %r4, i32 4 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i160 -%r233 = shl i160 %r232, 128 -%r234 = or i160 %r228, %r233 -%r235 = zext i160 %r234 to i192 -%r237 = getelementptr i32, i32* %r4, i32 5 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i192 -%r240 = shl i192 %r239, 160 -%r241 = or i192 %r235, %r240 -%r242 = zext i192 %r241 to i224 -%r244 = getelementptr i32, i32* %r4, i32 6 -%r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i224 -%r247 = shl i224 %r246, 192 -%r248 = or i224 %r242, %r247 -%r249 = zext i224 %r248 to i256 -%r251 = getelementptr i32, i32* %r4, i32 7 -%r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i256 -%r254 = shl i256 %r253, 224 -%r255 = or i256 %r249, %r254 -%r256 = zext i256 %r255 to i288 -%r258 = getelementptr i32, i32* %r4, i32 8 -%r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i288 -%r261 = shl i288 %r260, 256 -%r262 = or i288 %r256, %r261 -%r263 = zext i288 %r262 to i320 -%r265 = getelementptr i32, i32* %r4, i32 9 -%r266 = load i32, i32* %r265 -%r267 = zext i32 %r266 to i320 -%r268 = shl i320 %r267, 288 -%r269 = or i320 %r263, %r268 -%r270 = zext i320 %r269 to i352 -%r272 = getelementptr i32, i32* %r4, i32 10 -%r273 = load i32, i32* %r272 -%r274 = zext i32 %r273 to i352 -%r275 = shl i352 %r274, 320 -%r276 = or i352 %r270, %r275 -%r277 = zext i352 %r276 to i384 -%r279 = getelementptr i32, i32* %r4, i32 11 -%r280 = load i32, i32* %r279 -%r281 = zext i32 %r280 to i384 -%r282 = shl i384 %r281, 352 -%r283 = or i384 %r277, %r282 -%r284 = zext i384 %r283 to i416 -%r286 = getelementptr i32, i32* %r4, i32 12 -%r287 = load i32, i32* %r286 -%r288 = zext i32 %r287 to i416 -%r289 = shl i416 %r288, 384 -%r290 = or i416 %r284, %r289 -%r291 = zext i416 %r290 to i448 -%r293 = getelementptr i32, i32* %r4, i32 13 -%r294 = load i32, i32* %r293 -%r295 = zext i32 %r294 to i448 -%r296 = shl i448 %r295, 416 -%r297 = or i448 %r291, %r296 -%r298 = zext i448 %r297 to i480 -%r300 = getelementptr i32, i32* %r4, i32 14 -%r301 = load i32, i32* %r300 -%r302 = zext i32 %r301 to i480 -%r303 = shl i480 %r302, 448 -%r304 = or i480 %r298, %r303 -%r306 = select i1 %r205, i480 %r304, i480 0 -%r307 = add i480 %r203, %r306 -%r308 = trunc i480 %r307 to i32 -%r310 = getelementptr i32, i32* %r1, i32 0 -store i32 %r308, i32* %r310 -%r311 = lshr i480 %r307, 32 -%r312 = trunc i480 %r311 to i32 -%r314 = getelementptr i32, i32* %r1, i32 1 -store i32 %r312, i32* %r314 -%r315 = lshr i480 %r311, 32 -%r316 = trunc i480 %r315 to i32 -%r318 = getelementptr i32, i32* %r1, i32 2 -store i32 %r316, i32* %r318 -%r319 = lshr i480 %r315, 32 -%r320 = trunc i480 %r319 to i32 -%r322 = getelementptr i32, i32* %r1, i32 3 -store i32 %r320, i32* %r322 -%r323 = lshr i480 %r319, 32 -%r324 = trunc i480 %r323 to i32 -%r326 = getelementptr i32, i32* %r1, i32 4 -store i32 %r324, i32* %r326 -%r327 = lshr i480 %r323, 32 -%r328 = trunc i480 %r327 to i32 -%r330 = getelementptr i32, i32* %r1, i32 5 -store i32 %r328, i32* %r330 -%r331 = lshr i480 %r327, 32 -%r332 = trunc i480 %r331 to i32 -%r334 = getelementptr i32, i32* %r1, i32 6 -store i32 %r332, i32* %r334 -%r335 = lshr i480 %r331, 32 -%r336 = trunc i480 %r335 to i32 -%r338 = getelementptr i32, i32* %r1, i32 7 -store i32 %r336, i32* %r338 -%r339 = lshr i480 %r335, 32 -%r340 = trunc i480 %r339 to i32 -%r342 = getelementptr i32, i32* %r1, i32 8 -store i32 %r340, i32* %r342 -%r343 = lshr i480 %r339, 32 -%r344 = trunc i480 %r343 to i32 -%r346 = getelementptr i32, i32* %r1, i32 9 -store i32 %r344, i32* %r346 -%r347 = lshr i480 %r343, 32 -%r348 = trunc i480 %r347 to i32 -%r350 = getelementptr i32, i32* %r1, i32 10 -store i32 %r348, i32* %r350 -%r351 = lshr i480 %r347, 32 -%r352 = trunc i480 %r351 to i32 -%r354 = getelementptr i32, i32* %r1, i32 11 -store i32 %r352, i32* %r354 -%r355 = lshr i480 %r351, 32 -%r356 = trunc i480 %r355 to i32 -%r358 = getelementptr i32, i32* %r1, i32 12 -store i32 %r356, i32* %r358 -%r359 = lshr i480 %r355, 32 -%r360 = trunc i480 %r359 to i32 -%r362 = getelementptr i32, i32* %r1, i32 13 -store i32 %r360, i32* %r362 -%r363 = lshr i480 %r359, 32 -%r364 = trunc i480 %r363 to i32 -%r366 = getelementptr i32, i32* %r1, i32 14 -store i32 %r364, i32* %r366 -ret void -} -define void @mcl_fpDbl_add15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = zext i896 %r194 to i928 -%r197 = getelementptr i32, i32* %r2, i32 28 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i928 -%r200 = shl i928 %r199, 896 -%r201 = or i928 %r195, %r200 -%r202 = zext i928 %r201 to i960 -%r204 = getelementptr i32, i32* %r2, i32 29 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i960 -%r207 = shl i960 %r206, 928 -%r208 = or i960 %r202, %r207 -%r209 = load i32, i32* %r3 -%r210 = zext i32 %r209 to i64 -%r212 = getelementptr i32, i32* %r3, i32 1 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i64 -%r215 = shl i64 %r214, 32 -%r216 = or i64 %r210, %r215 -%r217 = zext i64 %r216 to i96 -%r219 = getelementptr i32, i32* %r3, i32 2 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i96 -%r222 = shl i96 %r221, 64 -%r223 = or i96 %r217, %r222 -%r224 = zext i96 %r223 to i128 -%r226 = getelementptr i32, i32* %r3, i32 3 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i128 -%r229 = shl i128 %r228, 96 -%r230 = or i128 %r224, %r229 -%r231 = zext i128 %r230 to i160 -%r233 = getelementptr i32, i32* %r3, i32 4 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i160 -%r236 = shl i160 %r235, 128 -%r237 = or i160 %r231, %r236 -%r238 = zext i160 %r237 to i192 -%r240 = getelementptr i32, i32* %r3, i32 5 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i192 -%r243 = shl i192 %r242, 160 -%r244 = or i192 %r238, %r243 -%r245 = zext i192 %r244 to i224 -%r247 = getelementptr i32, i32* %r3, i32 6 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i224 -%r250 = shl i224 %r249, 192 -%r251 = or i224 %r245, %r250 -%r252 = zext i224 %r251 to i256 -%r254 = getelementptr i32, i32* %r3, i32 7 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i256 -%r257 = shl i256 %r256, 224 -%r258 = or i256 %r252, %r257 -%r259 = zext i256 %r258 to i288 -%r261 = getelementptr i32, i32* %r3, i32 8 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i288 -%r264 = shl i288 %r263, 256 -%r265 = or i288 %r259, %r264 -%r266 = zext i288 %r265 to i320 -%r268 = getelementptr i32, i32* %r3, i32 9 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i320 -%r271 = shl i320 %r270, 288 -%r272 = or i320 %r266, %r271 -%r273 = zext i320 %r272 to i352 -%r275 = getelementptr i32, i32* %r3, i32 10 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i352 -%r278 = shl i352 %r277, 320 -%r279 = or i352 %r273, %r278 -%r280 = zext i352 %r279 to i384 -%r282 = getelementptr i32, i32* %r3, i32 11 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i384 -%r285 = shl i384 %r284, 352 -%r286 = or i384 %r280, %r285 -%r287 = zext i384 %r286 to i416 -%r289 = getelementptr i32, i32* %r3, i32 12 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i416 -%r292 = shl i416 %r291, 384 -%r293 = or i416 %r287, %r292 -%r294 = zext i416 %r293 to i448 -%r296 = getelementptr i32, i32* %r3, i32 13 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i448 -%r299 = shl i448 %r298, 416 -%r300 = or i448 %r294, %r299 -%r301 = zext i448 %r300 to i480 -%r303 = getelementptr i32, i32* %r3, i32 14 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i480 -%r306 = shl i480 %r305, 448 -%r307 = or i480 %r301, %r306 -%r308 = zext i480 %r307 to i512 -%r310 = getelementptr i32, i32* %r3, i32 15 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i512 -%r313 = shl i512 %r312, 480 -%r314 = or i512 %r308, %r313 -%r315 = zext i512 %r314 to i544 -%r317 = getelementptr i32, i32* %r3, i32 16 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i544 -%r320 = shl i544 %r319, 512 -%r321 = or i544 %r315, %r320 -%r322 = zext i544 %r321 to i576 -%r324 = getelementptr i32, i32* %r3, i32 17 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i576 -%r327 = shl i576 %r326, 544 -%r328 = or i576 %r322, %r327 -%r329 = zext i576 %r328 to i608 -%r331 = getelementptr i32, i32* %r3, i32 18 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i608 -%r334 = shl i608 %r333, 576 -%r335 = or i608 %r329, %r334 -%r336 = zext i608 %r335 to i640 -%r338 = getelementptr i32, i32* %r3, i32 19 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i640 -%r341 = shl i640 %r340, 608 -%r342 = or i640 %r336, %r341 -%r343 = zext i640 %r342 to i672 -%r345 = getelementptr i32, i32* %r3, i32 20 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i672 -%r348 = shl i672 %r347, 640 -%r349 = or i672 %r343, %r348 -%r350 = zext i672 %r349 to i704 -%r352 = getelementptr i32, i32* %r3, i32 21 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i704 -%r355 = shl i704 %r354, 672 -%r356 = or i704 %r350, %r355 -%r357 = zext i704 %r356 to i736 -%r359 = getelementptr i32, i32* %r3, i32 22 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i736 -%r362 = shl i736 %r361, 704 -%r363 = or i736 %r357, %r362 -%r364 = zext i736 %r363 to i768 -%r366 = getelementptr i32, i32* %r3, i32 23 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i768 -%r369 = shl i768 %r368, 736 -%r370 = or i768 %r364, %r369 -%r371 = zext i768 %r370 to i800 -%r373 = getelementptr i32, i32* %r3, i32 24 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i800 -%r376 = shl i800 %r375, 768 -%r377 = or i800 %r371, %r376 -%r378 = zext i800 %r377 to i832 -%r380 = getelementptr i32, i32* %r3, i32 25 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i832 -%r383 = shl i832 %r382, 800 -%r384 = or i832 %r378, %r383 -%r385 = zext i832 %r384 to i864 -%r387 = getelementptr i32, i32* %r3, i32 26 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i864 -%r390 = shl i864 %r389, 832 -%r391 = or i864 %r385, %r390 -%r392 = zext i864 %r391 to i896 -%r394 = getelementptr i32, i32* %r3, i32 27 -%r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i896 -%r397 = shl i896 %r396, 864 -%r398 = or i896 %r392, %r397 -%r399 = zext i896 %r398 to i928 -%r401 = getelementptr i32, i32* %r3, i32 28 -%r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i928 -%r404 = shl i928 %r403, 896 -%r405 = or i928 %r399, %r404 -%r406 = zext i928 %r405 to i960 -%r408 = getelementptr i32, i32* %r3, i32 29 -%r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i960 -%r411 = shl i960 %r410, 928 -%r412 = or i960 %r406, %r411 -%r413 = zext i960 %r208 to i992 -%r414 = zext i960 %r412 to i992 -%r415 = add i992 %r413, %r414 -%r416 = trunc i992 %r415 to i480 -%r417 = trunc i480 %r416 to i32 -%r419 = getelementptr i32, i32* %r1, i32 0 -store i32 %r417, i32* %r419 -%r420 = lshr i480 %r416, 32 -%r421 = trunc i480 %r420 to i32 -%r423 = getelementptr i32, i32* %r1, i32 1 -store i32 %r421, i32* %r423 -%r424 = lshr i480 %r420, 32 -%r425 = trunc i480 %r424 to i32 -%r427 = getelementptr i32, i32* %r1, i32 2 -store i32 %r425, i32* %r427 -%r428 = lshr i480 %r424, 32 -%r429 = trunc i480 %r428 to i32 -%r431 = getelementptr i32, i32* %r1, i32 3 -store i32 %r429, i32* %r431 -%r432 = lshr i480 %r428, 32 -%r433 = trunc i480 %r432 to i32 -%r435 = getelementptr i32, i32* %r1, i32 4 -store i32 %r433, i32* %r435 -%r436 = lshr i480 %r432, 32 -%r437 = trunc i480 %r436 to i32 -%r439 = getelementptr i32, i32* %r1, i32 5 -store i32 %r437, i32* %r439 -%r440 = lshr i480 %r436, 32 -%r441 = trunc i480 %r440 to i32 -%r443 = getelementptr i32, i32* %r1, i32 6 -store i32 %r441, i32* %r443 -%r444 = lshr i480 %r440, 32 -%r445 = trunc i480 %r444 to i32 -%r447 = getelementptr i32, i32* %r1, i32 7 -store i32 %r445, i32* %r447 -%r448 = lshr i480 %r444, 32 -%r449 = trunc i480 %r448 to i32 -%r451 = getelementptr i32, i32* %r1, i32 8 -store i32 %r449, i32* %r451 -%r452 = lshr i480 %r448, 32 -%r453 = trunc i480 %r452 to i32 -%r455 = getelementptr i32, i32* %r1, i32 9 -store i32 %r453, i32* %r455 -%r456 = lshr i480 %r452, 32 -%r457 = trunc i480 %r456 to i32 -%r459 = getelementptr i32, i32* %r1, i32 10 -store i32 %r457, i32* %r459 -%r460 = lshr i480 %r456, 32 -%r461 = trunc i480 %r460 to i32 -%r463 = getelementptr i32, i32* %r1, i32 11 -store i32 %r461, i32* %r463 -%r464 = lshr i480 %r460, 32 -%r465 = trunc i480 %r464 to i32 -%r467 = getelementptr i32, i32* %r1, i32 12 -store i32 %r465, i32* %r467 -%r468 = lshr i480 %r464, 32 -%r469 = trunc i480 %r468 to i32 -%r471 = getelementptr i32, i32* %r1, i32 13 -store i32 %r469, i32* %r471 -%r472 = lshr i480 %r468, 32 -%r473 = trunc i480 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 14 -store i32 %r473, i32* %r475 -%r476 = lshr i992 %r415, 480 -%r477 = trunc i992 %r476 to i512 -%r478 = load i32, i32* %r4 -%r479 = zext i32 %r478 to i64 -%r481 = getelementptr i32, i32* %r4, i32 1 -%r482 = load i32, i32* %r481 -%r483 = zext i32 %r482 to i64 -%r484 = shl i64 %r483, 32 -%r485 = or i64 %r479, %r484 -%r486 = zext i64 %r485 to i96 -%r488 = getelementptr i32, i32* %r4, i32 2 -%r489 = load i32, i32* %r488 -%r490 = zext i32 %r489 to i96 -%r491 = shl i96 %r490, 64 -%r492 = or i96 %r486, %r491 -%r493 = zext i96 %r492 to i128 -%r495 = getelementptr i32, i32* %r4, i32 3 -%r496 = load i32, i32* %r495 -%r497 = zext i32 %r496 to i128 -%r498 = shl i128 %r497, 96 -%r499 = or i128 %r493, %r498 -%r500 = zext i128 %r499 to i160 -%r502 = getelementptr i32, i32* %r4, i32 4 -%r503 = load i32, i32* %r502 -%r504 = zext i32 %r503 to i160 -%r505 = shl i160 %r504, 128 -%r506 = or i160 %r500, %r505 -%r507 = zext i160 %r506 to i192 -%r509 = getelementptr i32, i32* %r4, i32 5 -%r510 = load i32, i32* %r509 -%r511 = zext i32 %r510 to i192 -%r512 = shl i192 %r511, 160 -%r513 = or i192 %r507, %r512 -%r514 = zext i192 %r513 to i224 -%r516 = getelementptr i32, i32* %r4, i32 6 -%r517 = load i32, i32* %r516 -%r518 = zext i32 %r517 to i224 -%r519 = shl i224 %r518, 192 -%r520 = or i224 %r514, %r519 -%r521 = zext i224 %r520 to i256 -%r523 = getelementptr i32, i32* %r4, i32 7 -%r524 = load i32, i32* %r523 -%r525 = zext i32 %r524 to i256 -%r526 = shl i256 %r525, 224 -%r527 = or i256 %r521, %r526 -%r528 = zext i256 %r527 to i288 -%r530 = getelementptr i32, i32* %r4, i32 8 -%r531 = load i32, i32* %r530 -%r532 = zext i32 %r531 to i288 -%r533 = shl i288 %r532, 256 -%r534 = or i288 %r528, %r533 -%r535 = zext i288 %r534 to i320 -%r537 = getelementptr i32, i32* %r4, i32 9 -%r538 = load i32, i32* %r537 -%r539 = zext i32 %r538 to i320 -%r540 = shl i320 %r539, 288 -%r541 = or i320 %r535, %r540 -%r542 = zext i320 %r541 to i352 -%r544 = getelementptr i32, i32* %r4, i32 10 -%r545 = load i32, i32* %r544 -%r546 = zext i32 %r545 to i352 -%r547 = shl i352 %r546, 320 -%r548 = or i352 %r542, %r547 -%r549 = zext i352 %r548 to i384 -%r551 = getelementptr i32, i32* %r4, i32 11 -%r552 = load i32, i32* %r551 -%r553 = zext i32 %r552 to i384 -%r554 = shl i384 %r553, 352 -%r555 = or i384 %r549, %r554 -%r556 = zext i384 %r555 to i416 -%r558 = getelementptr i32, i32* %r4, i32 12 -%r559 = load i32, i32* %r558 -%r560 = zext i32 %r559 to i416 -%r561 = shl i416 %r560, 384 -%r562 = or i416 %r556, %r561 -%r563 = zext i416 %r562 to i448 -%r565 = getelementptr i32, i32* %r4, i32 13 -%r566 = load i32, i32* %r565 -%r567 = zext i32 %r566 to i448 -%r568 = shl i448 %r567, 416 -%r569 = or i448 %r563, %r568 -%r570 = zext i448 %r569 to i480 -%r572 = getelementptr i32, i32* %r4, i32 14 -%r573 = load i32, i32* %r572 -%r574 = zext i32 %r573 to i480 -%r575 = shl i480 %r574, 448 -%r576 = or i480 %r570, %r575 -%r577 = zext i480 %r576 to i512 -%r578 = sub i512 %r477, %r577 -%r579 = lshr i512 %r578, 480 -%r580 = trunc i512 %r579 to i1 -%r581 = select i1 %r580, i512 %r477, i512 %r578 -%r582 = trunc i512 %r581 to i480 -%r584 = getelementptr i32, i32* %r1, i32 15 -%r585 = trunc i480 %r582 to i32 -%r587 = getelementptr i32, i32* %r584, i32 0 -store i32 %r585, i32* %r587 -%r588 = lshr i480 %r582, 32 -%r589 = trunc i480 %r588 to i32 -%r591 = getelementptr i32, i32* %r584, i32 1 -store i32 %r589, i32* %r591 -%r592 = lshr i480 %r588, 32 -%r593 = trunc i480 %r592 to i32 -%r595 = getelementptr i32, i32* %r584, i32 2 -store i32 %r593, i32* %r595 -%r596 = lshr i480 %r592, 32 -%r597 = trunc i480 %r596 to i32 -%r599 = getelementptr i32, i32* %r584, i32 3 -store i32 %r597, i32* %r599 -%r600 = lshr i480 %r596, 32 -%r601 = trunc i480 %r600 to i32 -%r603 = getelementptr i32, i32* %r584, i32 4 -store i32 %r601, i32* %r603 -%r604 = lshr i480 %r600, 32 -%r605 = trunc i480 %r604 to i32 -%r607 = getelementptr i32, i32* %r584, i32 5 -store i32 %r605, i32* %r607 -%r608 = lshr i480 %r604, 32 -%r609 = trunc i480 %r608 to i32 -%r611 = getelementptr i32, i32* %r584, i32 6 -store i32 %r609, i32* %r611 -%r612 = lshr i480 %r608, 32 -%r613 = trunc i480 %r612 to i32 -%r615 = getelementptr i32, i32* %r584, i32 7 -store i32 %r613, i32* %r615 -%r616 = lshr i480 %r612, 32 -%r617 = trunc i480 %r616 to i32 -%r619 = getelementptr i32, i32* %r584, i32 8 -store i32 %r617, i32* %r619 -%r620 = lshr i480 %r616, 32 -%r621 = trunc i480 %r620 to i32 -%r623 = getelementptr i32, i32* %r584, i32 9 -store i32 %r621, i32* %r623 -%r624 = lshr i480 %r620, 32 -%r625 = trunc i480 %r624 to i32 -%r627 = getelementptr i32, i32* %r584, i32 10 -store i32 %r625, i32* %r627 -%r628 = lshr i480 %r624, 32 -%r629 = trunc i480 %r628 to i32 -%r631 = getelementptr i32, i32* %r584, i32 11 -store i32 %r629, i32* %r631 -%r632 = lshr i480 %r628, 32 -%r633 = trunc i480 %r632 to i32 -%r635 = getelementptr i32, i32* %r584, i32 12 -store i32 %r633, i32* %r635 -%r636 = lshr i480 %r632, 32 -%r637 = trunc i480 %r636 to i32 -%r639 = getelementptr i32, i32* %r584, i32 13 -store i32 %r637, i32* %r639 -%r640 = lshr i480 %r636, 32 -%r641 = trunc i480 %r640 to i32 -%r643 = getelementptr i32, i32* %r584, i32 14 -store i32 %r641, i32* %r643 -ret void -} -define void @mcl_fpDbl_sub15L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = zext i896 %r194 to i928 -%r197 = getelementptr i32, i32* %r2, i32 28 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i928 -%r200 = shl i928 %r199, 896 -%r201 = or i928 %r195, %r200 -%r202 = zext i928 %r201 to i960 -%r204 = getelementptr i32, i32* %r2, i32 29 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i960 -%r207 = shl i960 %r206, 928 -%r208 = or i960 %r202, %r207 -%r209 = load i32, i32* %r3 -%r210 = zext i32 %r209 to i64 -%r212 = getelementptr i32, i32* %r3, i32 1 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i64 -%r215 = shl i64 %r214, 32 -%r216 = or i64 %r210, %r215 -%r217 = zext i64 %r216 to i96 -%r219 = getelementptr i32, i32* %r3, i32 2 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i96 -%r222 = shl i96 %r221, 64 -%r223 = or i96 %r217, %r222 -%r224 = zext i96 %r223 to i128 -%r226 = getelementptr i32, i32* %r3, i32 3 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i128 -%r229 = shl i128 %r228, 96 -%r230 = or i128 %r224, %r229 -%r231 = zext i128 %r230 to i160 -%r233 = getelementptr i32, i32* %r3, i32 4 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i160 -%r236 = shl i160 %r235, 128 -%r237 = or i160 %r231, %r236 -%r238 = zext i160 %r237 to i192 -%r240 = getelementptr i32, i32* %r3, i32 5 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i192 -%r243 = shl i192 %r242, 160 -%r244 = or i192 %r238, %r243 -%r245 = zext i192 %r244 to i224 -%r247 = getelementptr i32, i32* %r3, i32 6 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i224 -%r250 = shl i224 %r249, 192 -%r251 = or i224 %r245, %r250 -%r252 = zext i224 %r251 to i256 -%r254 = getelementptr i32, i32* %r3, i32 7 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i256 -%r257 = shl i256 %r256, 224 -%r258 = or i256 %r252, %r257 -%r259 = zext i256 %r258 to i288 -%r261 = getelementptr i32, i32* %r3, i32 8 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i288 -%r264 = shl i288 %r263, 256 -%r265 = or i288 %r259, %r264 -%r266 = zext i288 %r265 to i320 -%r268 = getelementptr i32, i32* %r3, i32 9 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i320 -%r271 = shl i320 %r270, 288 -%r272 = or i320 %r266, %r271 -%r273 = zext i320 %r272 to i352 -%r275 = getelementptr i32, i32* %r3, i32 10 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i352 -%r278 = shl i352 %r277, 320 -%r279 = or i352 %r273, %r278 -%r280 = zext i352 %r279 to i384 -%r282 = getelementptr i32, i32* %r3, i32 11 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i384 -%r285 = shl i384 %r284, 352 -%r286 = or i384 %r280, %r285 -%r287 = zext i384 %r286 to i416 -%r289 = getelementptr i32, i32* %r3, i32 12 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i416 -%r292 = shl i416 %r291, 384 -%r293 = or i416 %r287, %r292 -%r294 = zext i416 %r293 to i448 -%r296 = getelementptr i32, i32* %r3, i32 13 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i448 -%r299 = shl i448 %r298, 416 -%r300 = or i448 %r294, %r299 -%r301 = zext i448 %r300 to i480 -%r303 = getelementptr i32, i32* %r3, i32 14 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i480 -%r306 = shl i480 %r305, 448 -%r307 = or i480 %r301, %r306 -%r308 = zext i480 %r307 to i512 -%r310 = getelementptr i32, i32* %r3, i32 15 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i512 -%r313 = shl i512 %r312, 480 -%r314 = or i512 %r308, %r313 -%r315 = zext i512 %r314 to i544 -%r317 = getelementptr i32, i32* %r3, i32 16 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i544 -%r320 = shl i544 %r319, 512 -%r321 = or i544 %r315, %r320 -%r322 = zext i544 %r321 to i576 -%r324 = getelementptr i32, i32* %r3, i32 17 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i576 -%r327 = shl i576 %r326, 544 -%r328 = or i576 %r322, %r327 -%r329 = zext i576 %r328 to i608 -%r331 = getelementptr i32, i32* %r3, i32 18 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i608 -%r334 = shl i608 %r333, 576 -%r335 = or i608 %r329, %r334 -%r336 = zext i608 %r335 to i640 -%r338 = getelementptr i32, i32* %r3, i32 19 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i640 -%r341 = shl i640 %r340, 608 -%r342 = or i640 %r336, %r341 -%r343 = zext i640 %r342 to i672 -%r345 = getelementptr i32, i32* %r3, i32 20 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i672 -%r348 = shl i672 %r347, 640 -%r349 = or i672 %r343, %r348 -%r350 = zext i672 %r349 to i704 -%r352 = getelementptr i32, i32* %r3, i32 21 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i704 -%r355 = shl i704 %r354, 672 -%r356 = or i704 %r350, %r355 -%r357 = zext i704 %r356 to i736 -%r359 = getelementptr i32, i32* %r3, i32 22 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i736 -%r362 = shl i736 %r361, 704 -%r363 = or i736 %r357, %r362 -%r364 = zext i736 %r363 to i768 -%r366 = getelementptr i32, i32* %r3, i32 23 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i768 -%r369 = shl i768 %r368, 736 -%r370 = or i768 %r364, %r369 -%r371 = zext i768 %r370 to i800 -%r373 = getelementptr i32, i32* %r3, i32 24 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i800 -%r376 = shl i800 %r375, 768 -%r377 = or i800 %r371, %r376 -%r378 = zext i800 %r377 to i832 -%r380 = getelementptr i32, i32* %r3, i32 25 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i832 -%r383 = shl i832 %r382, 800 -%r384 = or i832 %r378, %r383 -%r385 = zext i832 %r384 to i864 -%r387 = getelementptr i32, i32* %r3, i32 26 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i864 -%r390 = shl i864 %r389, 832 -%r391 = or i864 %r385, %r390 -%r392 = zext i864 %r391 to i896 -%r394 = getelementptr i32, i32* %r3, i32 27 -%r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i896 -%r397 = shl i896 %r396, 864 -%r398 = or i896 %r392, %r397 -%r399 = zext i896 %r398 to i928 -%r401 = getelementptr i32, i32* %r3, i32 28 -%r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i928 -%r404 = shl i928 %r403, 896 -%r405 = or i928 %r399, %r404 -%r406 = zext i928 %r405 to i960 -%r408 = getelementptr i32, i32* %r3, i32 29 -%r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i960 -%r411 = shl i960 %r410, 928 -%r412 = or i960 %r406, %r411 -%r413 = zext i960 %r208 to i992 -%r414 = zext i960 %r412 to i992 -%r415 = sub i992 %r413, %r414 -%r416 = trunc i992 %r415 to i480 -%r417 = trunc i480 %r416 to i32 -%r419 = getelementptr i32, i32* %r1, i32 0 -store i32 %r417, i32* %r419 -%r420 = lshr i480 %r416, 32 -%r421 = trunc i480 %r420 to i32 -%r423 = getelementptr i32, i32* %r1, i32 1 -store i32 %r421, i32* %r423 -%r424 = lshr i480 %r420, 32 -%r425 = trunc i480 %r424 to i32 -%r427 = getelementptr i32, i32* %r1, i32 2 -store i32 %r425, i32* %r427 -%r428 = lshr i480 %r424, 32 -%r429 = trunc i480 %r428 to i32 -%r431 = getelementptr i32, i32* %r1, i32 3 -store i32 %r429, i32* %r431 -%r432 = lshr i480 %r428, 32 -%r433 = trunc i480 %r432 to i32 -%r435 = getelementptr i32, i32* %r1, i32 4 -store i32 %r433, i32* %r435 -%r436 = lshr i480 %r432, 32 -%r437 = trunc i480 %r436 to i32 -%r439 = getelementptr i32, i32* %r1, i32 5 -store i32 %r437, i32* %r439 -%r440 = lshr i480 %r436, 32 -%r441 = trunc i480 %r440 to i32 -%r443 = getelementptr i32, i32* %r1, i32 6 -store i32 %r441, i32* %r443 -%r444 = lshr i480 %r440, 32 -%r445 = trunc i480 %r444 to i32 -%r447 = getelementptr i32, i32* %r1, i32 7 -store i32 %r445, i32* %r447 -%r448 = lshr i480 %r444, 32 -%r449 = trunc i480 %r448 to i32 -%r451 = getelementptr i32, i32* %r1, i32 8 -store i32 %r449, i32* %r451 -%r452 = lshr i480 %r448, 32 -%r453 = trunc i480 %r452 to i32 -%r455 = getelementptr i32, i32* %r1, i32 9 -store i32 %r453, i32* %r455 -%r456 = lshr i480 %r452, 32 -%r457 = trunc i480 %r456 to i32 -%r459 = getelementptr i32, i32* %r1, i32 10 -store i32 %r457, i32* %r459 -%r460 = lshr i480 %r456, 32 -%r461 = trunc i480 %r460 to i32 -%r463 = getelementptr i32, i32* %r1, i32 11 -store i32 %r461, i32* %r463 -%r464 = lshr i480 %r460, 32 -%r465 = trunc i480 %r464 to i32 -%r467 = getelementptr i32, i32* %r1, i32 12 -store i32 %r465, i32* %r467 -%r468 = lshr i480 %r464, 32 -%r469 = trunc i480 %r468 to i32 -%r471 = getelementptr i32, i32* %r1, i32 13 -store i32 %r469, i32* %r471 -%r472 = lshr i480 %r468, 32 -%r473 = trunc i480 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 14 -store i32 %r473, i32* %r475 -%r476 = lshr i992 %r415, 480 -%r477 = trunc i992 %r476 to i480 -%r478 = lshr i992 %r415, 960 -%r479 = trunc i992 %r478 to i1 -%r480 = load i32, i32* %r4 -%r481 = zext i32 %r480 to i64 -%r483 = getelementptr i32, i32* %r4, i32 1 -%r484 = load i32, i32* %r483 -%r485 = zext i32 %r484 to i64 -%r486 = shl i64 %r485, 32 -%r487 = or i64 %r481, %r486 -%r488 = zext i64 %r487 to i96 -%r490 = getelementptr i32, i32* %r4, i32 2 -%r491 = load i32, i32* %r490 -%r492 = zext i32 %r491 to i96 -%r493 = shl i96 %r492, 64 -%r494 = or i96 %r488, %r493 -%r495 = zext i96 %r494 to i128 -%r497 = getelementptr i32, i32* %r4, i32 3 -%r498 = load i32, i32* %r497 -%r499 = zext i32 %r498 to i128 -%r500 = shl i128 %r499, 96 -%r501 = or i128 %r495, %r500 -%r502 = zext i128 %r501 to i160 -%r504 = getelementptr i32, i32* %r4, i32 4 -%r505 = load i32, i32* %r504 -%r506 = zext i32 %r505 to i160 -%r507 = shl i160 %r506, 128 -%r508 = or i160 %r502, %r507 -%r509 = zext i160 %r508 to i192 -%r511 = getelementptr i32, i32* %r4, i32 5 -%r512 = load i32, i32* %r511 -%r513 = zext i32 %r512 to i192 -%r514 = shl i192 %r513, 160 -%r515 = or i192 %r509, %r514 -%r516 = zext i192 %r515 to i224 -%r518 = getelementptr i32, i32* %r4, i32 6 -%r519 = load i32, i32* %r518 -%r520 = zext i32 %r519 to i224 -%r521 = shl i224 %r520, 192 -%r522 = or i224 %r516, %r521 -%r523 = zext i224 %r522 to i256 -%r525 = getelementptr i32, i32* %r4, i32 7 -%r526 = load i32, i32* %r525 -%r527 = zext i32 %r526 to i256 -%r528 = shl i256 %r527, 224 -%r529 = or i256 %r523, %r528 -%r530 = zext i256 %r529 to i288 -%r532 = getelementptr i32, i32* %r4, i32 8 -%r533 = load i32, i32* %r532 -%r534 = zext i32 %r533 to i288 -%r535 = shl i288 %r534, 256 -%r536 = or i288 %r530, %r535 -%r537 = zext i288 %r536 to i320 -%r539 = getelementptr i32, i32* %r4, i32 9 -%r540 = load i32, i32* %r539 -%r541 = zext i32 %r540 to i320 -%r542 = shl i320 %r541, 288 -%r543 = or i320 %r537, %r542 -%r544 = zext i320 %r543 to i352 -%r546 = getelementptr i32, i32* %r4, i32 10 -%r547 = load i32, i32* %r546 -%r548 = zext i32 %r547 to i352 -%r549 = shl i352 %r548, 320 -%r550 = or i352 %r544, %r549 -%r551 = zext i352 %r550 to i384 -%r553 = getelementptr i32, i32* %r4, i32 11 -%r554 = load i32, i32* %r553 -%r555 = zext i32 %r554 to i384 -%r556 = shl i384 %r555, 352 -%r557 = or i384 %r551, %r556 -%r558 = zext i384 %r557 to i416 -%r560 = getelementptr i32, i32* %r4, i32 12 -%r561 = load i32, i32* %r560 -%r562 = zext i32 %r561 to i416 -%r563 = shl i416 %r562, 384 -%r564 = or i416 %r558, %r563 -%r565 = zext i416 %r564 to i448 -%r567 = getelementptr i32, i32* %r4, i32 13 -%r568 = load i32, i32* %r567 -%r569 = zext i32 %r568 to i448 -%r570 = shl i448 %r569, 416 -%r571 = or i448 %r565, %r570 -%r572 = zext i448 %r571 to i480 -%r574 = getelementptr i32, i32* %r4, i32 14 -%r575 = load i32, i32* %r574 -%r576 = zext i32 %r575 to i480 -%r577 = shl i480 %r576, 448 -%r578 = or i480 %r572, %r577 -%r580 = select i1 %r479, i480 %r578, i480 0 -%r581 = add i480 %r477, %r580 -%r583 = getelementptr i32, i32* %r1, i32 15 -%r584 = trunc i480 %r581 to i32 -%r586 = getelementptr i32, i32* %r583, i32 0 -store i32 %r584, i32* %r586 -%r587 = lshr i480 %r581, 32 -%r588 = trunc i480 %r587 to i32 -%r590 = getelementptr i32, i32* %r583, i32 1 -store i32 %r588, i32* %r590 -%r591 = lshr i480 %r587, 32 -%r592 = trunc i480 %r591 to i32 -%r594 = getelementptr i32, i32* %r583, i32 2 -store i32 %r592, i32* %r594 -%r595 = lshr i480 %r591, 32 -%r596 = trunc i480 %r595 to i32 -%r598 = getelementptr i32, i32* %r583, i32 3 -store i32 %r596, i32* %r598 -%r599 = lshr i480 %r595, 32 -%r600 = trunc i480 %r599 to i32 -%r602 = getelementptr i32, i32* %r583, i32 4 -store i32 %r600, i32* %r602 -%r603 = lshr i480 %r599, 32 -%r604 = trunc i480 %r603 to i32 -%r606 = getelementptr i32, i32* %r583, i32 5 -store i32 %r604, i32* %r606 -%r607 = lshr i480 %r603, 32 -%r608 = trunc i480 %r607 to i32 -%r610 = getelementptr i32, i32* %r583, i32 6 -store i32 %r608, i32* %r610 -%r611 = lshr i480 %r607, 32 -%r612 = trunc i480 %r611 to i32 -%r614 = getelementptr i32, i32* %r583, i32 7 -store i32 %r612, i32* %r614 -%r615 = lshr i480 %r611, 32 -%r616 = trunc i480 %r615 to i32 -%r618 = getelementptr i32, i32* %r583, i32 8 -store i32 %r616, i32* %r618 -%r619 = lshr i480 %r615, 32 -%r620 = trunc i480 %r619 to i32 -%r622 = getelementptr i32, i32* %r583, i32 9 -store i32 %r620, i32* %r622 -%r623 = lshr i480 %r619, 32 -%r624 = trunc i480 %r623 to i32 -%r626 = getelementptr i32, i32* %r583, i32 10 -store i32 %r624, i32* %r626 -%r627 = lshr i480 %r623, 32 -%r628 = trunc i480 %r627 to i32 -%r630 = getelementptr i32, i32* %r583, i32 11 -store i32 %r628, i32* %r630 -%r631 = lshr i480 %r627, 32 -%r632 = trunc i480 %r631 to i32 -%r634 = getelementptr i32, i32* %r583, i32 12 -store i32 %r632, i32* %r634 -%r635 = lshr i480 %r631, 32 -%r636 = trunc i480 %r635 to i32 -%r638 = getelementptr i32, i32* %r583, i32 13 -store i32 %r636, i32* %r638 -%r639 = lshr i480 %r635, 32 -%r640 = trunc i480 %r639 to i32 -%r642 = getelementptr i32, i32* %r583, i32 14 -store i32 %r640, i32* %r642 -ret void -} -define i544 @mulPv512x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) -%r54 = trunc i64 %r53 to i32 -%r55 = call i32 @extractHigh32(i64 %r53) -%r57 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 13) -%r58 = trunc i64 %r57 to i32 -%r59 = call i32 @extractHigh32(i64 %r57) -%r61 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 14) -%r62 = trunc i64 %r61 to i32 -%r63 = call i32 @extractHigh32(i64 %r61) -%r65 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 15) -%r66 = trunc i64 %r65 to i32 -%r67 = call i32 @extractHigh32(i64 %r65) -%r68 = zext i32 %r6 to i64 -%r69 = zext i32 %r10 to i64 -%r70 = shl i64 %r69, 32 -%r71 = or i64 %r68, %r70 -%r72 = zext i64 %r71 to i96 -%r73 = zext i32 %r14 to i96 -%r74 = shl i96 %r73, 64 -%r75 = or i96 %r72, %r74 -%r76 = zext i96 %r75 to i128 -%r77 = zext i32 %r18 to i128 -%r78 = shl i128 %r77, 96 -%r79 = or i128 %r76, %r78 -%r80 = zext i128 %r79 to i160 -%r81 = zext i32 %r22 to i160 -%r82 = shl i160 %r81, 128 -%r83 = or i160 %r80, %r82 -%r84 = zext i160 %r83 to i192 -%r85 = zext i32 %r26 to i192 -%r86 = shl i192 %r85, 160 -%r87 = or i192 %r84, %r86 -%r88 = zext i192 %r87 to i224 -%r89 = zext i32 %r30 to i224 -%r90 = shl i224 %r89, 192 -%r91 = or i224 %r88, %r90 -%r92 = zext i224 %r91 to i256 -%r93 = zext i32 %r34 to i256 -%r94 = shl i256 %r93, 224 -%r95 = or i256 %r92, %r94 -%r96 = zext i256 %r95 to i288 -%r97 = zext i32 %r38 to i288 -%r98 = shl i288 %r97, 256 -%r99 = or i288 %r96, %r98 -%r100 = zext i288 %r99 to i320 -%r101 = zext i32 %r42 to i320 -%r102 = shl i320 %r101, 288 -%r103 = or i320 %r100, %r102 -%r104 = zext i320 %r103 to i352 -%r105 = zext i32 %r46 to i352 -%r106 = shl i352 %r105, 320 -%r107 = or i352 %r104, %r106 -%r108 = zext i352 %r107 to i384 -%r109 = zext i32 %r50 to i384 -%r110 = shl i384 %r109, 352 -%r111 = or i384 %r108, %r110 -%r112 = zext i384 %r111 to i416 -%r113 = zext i32 %r54 to i416 -%r114 = shl i416 %r113, 384 -%r115 = or i416 %r112, %r114 -%r116 = zext i416 %r115 to i448 -%r117 = zext i32 %r58 to i448 -%r118 = shl i448 %r117, 416 -%r119 = or i448 %r116, %r118 -%r120 = zext i448 %r119 to i480 -%r121 = zext i32 %r62 to i480 -%r122 = shl i480 %r121, 448 -%r123 = or i480 %r120, %r122 -%r124 = zext i480 %r123 to i512 -%r125 = zext i32 %r66 to i512 -%r126 = shl i512 %r125, 480 -%r127 = or i512 %r124, %r126 -%r128 = zext i32 %r7 to i64 -%r129 = zext i32 %r11 to i64 -%r130 = shl i64 %r129, 32 -%r131 = or i64 %r128, %r130 -%r132 = zext i64 %r131 to i96 -%r133 = zext i32 %r15 to i96 -%r134 = shl i96 %r133, 64 -%r135 = or i96 %r132, %r134 -%r136 = zext i96 %r135 to i128 -%r137 = zext i32 %r19 to i128 -%r138 = shl i128 %r137, 96 -%r139 = or i128 %r136, %r138 -%r140 = zext i128 %r139 to i160 -%r141 = zext i32 %r23 to i160 -%r142 = shl i160 %r141, 128 -%r143 = or i160 %r140, %r142 -%r144 = zext i160 %r143 to i192 -%r145 = zext i32 %r27 to i192 -%r146 = shl i192 %r145, 160 -%r147 = or i192 %r144, %r146 -%r148 = zext i192 %r147 to i224 -%r149 = zext i32 %r31 to i224 -%r150 = shl i224 %r149, 192 -%r151 = or i224 %r148, %r150 -%r152 = zext i224 %r151 to i256 -%r153 = zext i32 %r35 to i256 -%r154 = shl i256 %r153, 224 -%r155 = or i256 %r152, %r154 -%r156 = zext i256 %r155 to i288 -%r157 = zext i32 %r39 to i288 -%r158 = shl i288 %r157, 256 -%r159 = or i288 %r156, %r158 -%r160 = zext i288 %r159 to i320 -%r161 = zext i32 %r43 to i320 -%r162 = shl i320 %r161, 288 -%r163 = or i320 %r160, %r162 -%r164 = zext i320 %r163 to i352 -%r165 = zext i32 %r47 to i352 -%r166 = shl i352 %r165, 320 -%r167 = or i352 %r164, %r166 -%r168 = zext i352 %r167 to i384 -%r169 = zext i32 %r51 to i384 -%r170 = shl i384 %r169, 352 -%r171 = or i384 %r168, %r170 -%r172 = zext i384 %r171 to i416 -%r173 = zext i32 %r55 to i416 -%r174 = shl i416 %r173, 384 -%r175 = or i416 %r172, %r174 -%r176 = zext i416 %r175 to i448 -%r177 = zext i32 %r59 to i448 -%r178 = shl i448 %r177, 416 -%r179 = or i448 %r176, %r178 -%r180 = zext i448 %r179 to i480 -%r181 = zext i32 %r63 to i480 -%r182 = shl i480 %r181, 448 -%r183 = or i480 %r180, %r182 -%r184 = zext i480 %r183 to i512 -%r185 = zext i32 %r67 to i512 -%r186 = shl i512 %r185, 480 -%r187 = or i512 %r184, %r186 -%r188 = zext i512 %r127 to i544 -%r189 = zext i512 %r187 to i544 -%r190 = shl i544 %r189, 32 -%r191 = add i544 %r188, %r190 -ret i544 %r191 -} -define void @mcl_fp_mulUnitPre16L(i32* noalias %r1, i32* noalias %r2, i32 %r3) -{ -%r4 = call i544 @mulPv512x32(i32* %r2, i32 %r3) -%r5 = trunc i544 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i544 %r4, 32 -%r9 = trunc i544 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i544 %r8, 32 -%r13 = trunc i544 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i544 %r12, 32 -%r17 = trunc i544 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i544 %r16, 32 -%r21 = trunc i544 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i544 %r20, 32 -%r25 = trunc i544 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i544 %r24, 32 -%r29 = trunc i544 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i544 %r28, 32 -%r33 = trunc i544 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i544 %r32, 32 -%r37 = trunc i544 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i544 %r36, 32 -%r41 = trunc i544 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i544 %r40, 32 -%r45 = trunc i544 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i544 %r44, 32 -%r49 = trunc i544 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i544 %r48, 32 -%r53 = trunc i544 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -%r56 = lshr i544 %r52, 32 -%r57 = trunc i544 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 13 -store i32 %r57, i32* %r59 -%r60 = lshr i544 %r56, 32 -%r61 = trunc i544 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 14 -store i32 %r61, i32* %r63 -%r64 = lshr i544 %r60, 32 -%r65 = trunc i544 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 15 -store i32 %r65, i32* %r67 -%r68 = lshr i544 %r64, 32 -%r69 = trunc i544 %r68 to i32 -%r71 = getelementptr i32, i32* %r1, i32 16 -store i32 %r69, i32* %r71 -ret void -} -define void @mcl_fpDbl_mulPre16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r2, i32 8 -%r7 = getelementptr i32, i32* %r3, i32 8 -%r9 = getelementptr i32, i32* %r1, i32 16 -call void @mcl_fpDbl_mulPre8L(i32* %r1, i32* %r2, i32* %r3) -call void @mcl_fpDbl_mulPre8L(i32* %r9, i32* %r5, i32* %r7) -%r10 = load i32, i32* %r5 -%r11 = zext i32 %r10 to i64 -%r13 = getelementptr i32, i32* %r5, i32 1 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i64 -%r16 = shl i64 %r15, 32 -%r17 = or i64 %r11, %r16 -%r18 = zext i64 %r17 to i96 -%r20 = getelementptr i32, i32* %r5, i32 2 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i96 -%r23 = shl i96 %r22, 64 -%r24 = or i96 %r18, %r23 -%r25 = zext i96 %r24 to i128 -%r27 = getelementptr i32, i32* %r5, i32 3 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i128 -%r30 = shl i128 %r29, 96 -%r31 = or i128 %r25, %r30 -%r32 = zext i128 %r31 to i160 -%r34 = getelementptr i32, i32* %r5, i32 4 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i160 -%r37 = shl i160 %r36, 128 -%r38 = or i160 %r32, %r37 -%r39 = zext i160 %r38 to i192 -%r41 = getelementptr i32, i32* %r5, i32 5 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i192 -%r44 = shl i192 %r43, 160 -%r45 = or i192 %r39, %r44 -%r46 = zext i192 %r45 to i224 -%r48 = getelementptr i32, i32* %r5, i32 6 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i224 -%r51 = shl i224 %r50, 192 -%r52 = or i224 %r46, %r51 -%r53 = zext i224 %r52 to i256 -%r55 = getelementptr i32, i32* %r5, i32 7 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i256 -%r58 = shl i256 %r57, 224 -%r59 = or i256 %r53, %r58 -%r60 = zext i256 %r59 to i288 -%r61 = load i32, i32* %r2 -%r62 = zext i32 %r61 to i64 -%r64 = getelementptr i32, i32* %r2, i32 1 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i64 -%r67 = shl i64 %r66, 32 -%r68 = or i64 %r62, %r67 -%r69 = zext i64 %r68 to i96 -%r71 = getelementptr i32, i32* %r2, i32 2 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i96 -%r74 = shl i96 %r73, 64 -%r75 = or i96 %r69, %r74 -%r76 = zext i96 %r75 to i128 -%r78 = getelementptr i32, i32* %r2, i32 3 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i128 -%r81 = shl i128 %r80, 96 -%r82 = or i128 %r76, %r81 -%r83 = zext i128 %r82 to i160 -%r85 = getelementptr i32, i32* %r2, i32 4 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i160 -%r88 = shl i160 %r87, 128 -%r89 = or i160 %r83, %r88 -%r90 = zext i160 %r89 to i192 -%r92 = getelementptr i32, i32* %r2, i32 5 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i192 -%r95 = shl i192 %r94, 160 -%r96 = or i192 %r90, %r95 -%r97 = zext i192 %r96 to i224 -%r99 = getelementptr i32, i32* %r2, i32 6 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i224 -%r102 = shl i224 %r101, 192 -%r103 = or i224 %r97, %r102 -%r104 = zext i224 %r103 to i256 -%r106 = getelementptr i32, i32* %r2, i32 7 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i256 -%r109 = shl i256 %r108, 224 -%r110 = or i256 %r104, %r109 -%r111 = zext i256 %r110 to i288 -%r112 = load i32, i32* %r7 -%r113 = zext i32 %r112 to i64 -%r115 = getelementptr i32, i32* %r7, i32 1 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i64 -%r118 = shl i64 %r117, 32 -%r119 = or i64 %r113, %r118 -%r120 = zext i64 %r119 to i96 -%r122 = getelementptr i32, i32* %r7, i32 2 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i96 -%r125 = shl i96 %r124, 64 -%r126 = or i96 %r120, %r125 -%r127 = zext i96 %r126 to i128 -%r129 = getelementptr i32, i32* %r7, i32 3 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i128 -%r132 = shl i128 %r131, 96 -%r133 = or i128 %r127, %r132 -%r134 = zext i128 %r133 to i160 -%r136 = getelementptr i32, i32* %r7, i32 4 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i160 -%r139 = shl i160 %r138, 128 -%r140 = or i160 %r134, %r139 -%r141 = zext i160 %r140 to i192 -%r143 = getelementptr i32, i32* %r7, i32 5 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i192 -%r146 = shl i192 %r145, 160 -%r147 = or i192 %r141, %r146 -%r148 = zext i192 %r147 to i224 -%r150 = getelementptr i32, i32* %r7, i32 6 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i224 -%r153 = shl i224 %r152, 192 -%r154 = or i224 %r148, %r153 -%r155 = zext i224 %r154 to i256 -%r157 = getelementptr i32, i32* %r7, i32 7 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i256 -%r160 = shl i256 %r159, 224 -%r161 = or i256 %r155, %r160 -%r162 = zext i256 %r161 to i288 -%r163 = load i32, i32* %r3 -%r164 = zext i32 %r163 to i64 -%r166 = getelementptr i32, i32* %r3, i32 1 -%r167 = load i32, i32* %r166 -%r168 = zext i32 %r167 to i64 -%r169 = shl i64 %r168, 32 -%r170 = or i64 %r164, %r169 -%r171 = zext i64 %r170 to i96 -%r173 = getelementptr i32, i32* %r3, i32 2 -%r174 = load i32, i32* %r173 -%r175 = zext i32 %r174 to i96 -%r176 = shl i96 %r175, 64 -%r177 = or i96 %r171, %r176 -%r178 = zext i96 %r177 to i128 -%r180 = getelementptr i32, i32* %r3, i32 3 -%r181 = load i32, i32* %r180 -%r182 = zext i32 %r181 to i128 -%r183 = shl i128 %r182, 96 -%r184 = or i128 %r178, %r183 -%r185 = zext i128 %r184 to i160 -%r187 = getelementptr i32, i32* %r3, i32 4 -%r188 = load i32, i32* %r187 -%r189 = zext i32 %r188 to i160 -%r190 = shl i160 %r189, 128 -%r191 = or i160 %r185, %r190 -%r192 = zext i160 %r191 to i192 -%r194 = getelementptr i32, i32* %r3, i32 5 -%r195 = load i32, i32* %r194 -%r196 = zext i32 %r195 to i192 -%r197 = shl i192 %r196, 160 -%r198 = or i192 %r192, %r197 -%r199 = zext i192 %r198 to i224 -%r201 = getelementptr i32, i32* %r3, i32 6 -%r202 = load i32, i32* %r201 -%r203 = zext i32 %r202 to i224 -%r204 = shl i224 %r203, 192 -%r205 = or i224 %r199, %r204 -%r206 = zext i224 %r205 to i256 -%r208 = getelementptr i32, i32* %r3, i32 7 -%r209 = load i32, i32* %r208 -%r210 = zext i32 %r209 to i256 -%r211 = shl i256 %r210, 224 -%r212 = or i256 %r206, %r211 -%r213 = zext i256 %r212 to i288 -%r214 = add i288 %r60, %r111 -%r215 = add i288 %r162, %r213 -%r217 = alloca i32, i32 16 -%r218 = trunc i288 %r214 to i256 -%r219 = trunc i288 %r215 to i256 -%r220 = lshr i288 %r214, 256 -%r221 = trunc i288 %r220 to i1 -%r222 = lshr i288 %r215, 256 -%r223 = trunc i288 %r222 to i1 -%r224 = and i1 %r221, %r223 -%r226 = select i1 %r221, i256 %r219, i256 0 -%r228 = select i1 %r223, i256 %r218, i256 0 -%r230 = alloca i32, i32 8 -%r232 = alloca i32, i32 8 -%r233 = trunc i256 %r218 to i32 -%r235 = getelementptr i32, i32* %r230, i32 0 -store i32 %r233, i32* %r235 -%r236 = lshr i256 %r218, 32 -%r237 = trunc i256 %r236 to i32 -%r239 = getelementptr i32, i32* %r230, i32 1 -store i32 %r237, i32* %r239 -%r240 = lshr i256 %r236, 32 -%r241 = trunc i256 %r240 to i32 -%r243 = getelementptr i32, i32* %r230, i32 2 -store i32 %r241, i32* %r243 -%r244 = lshr i256 %r240, 32 -%r245 = trunc i256 %r244 to i32 -%r247 = getelementptr i32, i32* %r230, i32 3 -store i32 %r245, i32* %r247 -%r248 = lshr i256 %r244, 32 -%r249 = trunc i256 %r248 to i32 -%r251 = getelementptr i32, i32* %r230, i32 4 -store i32 %r249, i32* %r251 -%r252 = lshr i256 %r248, 32 -%r253 = trunc i256 %r252 to i32 -%r255 = getelementptr i32, i32* %r230, i32 5 -store i32 %r253, i32* %r255 -%r256 = lshr i256 %r252, 32 -%r257 = trunc i256 %r256 to i32 -%r259 = getelementptr i32, i32* %r230, i32 6 -store i32 %r257, i32* %r259 -%r260 = lshr i256 %r256, 32 -%r261 = trunc i256 %r260 to i32 -%r263 = getelementptr i32, i32* %r230, i32 7 -store i32 %r261, i32* %r263 -%r264 = trunc i256 %r219 to i32 -%r266 = getelementptr i32, i32* %r232, i32 0 -store i32 %r264, i32* %r266 -%r267 = lshr i256 %r219, 32 -%r268 = trunc i256 %r267 to i32 -%r270 = getelementptr i32, i32* %r232, i32 1 -store i32 %r268, i32* %r270 -%r271 = lshr i256 %r267, 32 -%r272 = trunc i256 %r271 to i32 -%r274 = getelementptr i32, i32* %r232, i32 2 -store i32 %r272, i32* %r274 -%r275 = lshr i256 %r271, 32 -%r276 = trunc i256 %r275 to i32 -%r278 = getelementptr i32, i32* %r232, i32 3 -store i32 %r276, i32* %r278 -%r279 = lshr i256 %r275, 32 -%r280 = trunc i256 %r279 to i32 -%r282 = getelementptr i32, i32* %r232, i32 4 -store i32 %r280, i32* %r282 -%r283 = lshr i256 %r279, 32 -%r284 = trunc i256 %r283 to i32 -%r286 = getelementptr i32, i32* %r232, i32 5 -store i32 %r284, i32* %r286 -%r287 = lshr i256 %r283, 32 -%r288 = trunc i256 %r287 to i32 -%r290 = getelementptr i32, i32* %r232, i32 6 -store i32 %r288, i32* %r290 -%r291 = lshr i256 %r287, 32 -%r292 = trunc i256 %r291 to i32 -%r294 = getelementptr i32, i32* %r232, i32 7 -store i32 %r292, i32* %r294 -call void @mcl_fpDbl_mulPre8L(i32* %r217, i32* %r230, i32* %r232) -%r295 = load i32, i32* %r217 -%r296 = zext i32 %r295 to i64 -%r298 = getelementptr i32, i32* %r217, i32 1 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i64 -%r301 = shl i64 %r300, 32 -%r302 = or i64 %r296, %r301 -%r303 = zext i64 %r302 to i96 -%r305 = getelementptr i32, i32* %r217, i32 2 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i96 -%r308 = shl i96 %r307, 64 -%r309 = or i96 %r303, %r308 -%r310 = zext i96 %r309 to i128 -%r312 = getelementptr i32, i32* %r217, i32 3 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i128 -%r315 = shl i128 %r314, 96 -%r316 = or i128 %r310, %r315 -%r317 = zext i128 %r316 to i160 -%r319 = getelementptr i32, i32* %r217, i32 4 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i160 -%r322 = shl i160 %r321, 128 -%r323 = or i160 %r317, %r322 -%r324 = zext i160 %r323 to i192 -%r326 = getelementptr i32, i32* %r217, i32 5 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i192 -%r329 = shl i192 %r328, 160 -%r330 = or i192 %r324, %r329 -%r331 = zext i192 %r330 to i224 -%r333 = getelementptr i32, i32* %r217, i32 6 -%r334 = load i32, i32* %r333 -%r335 = zext i32 %r334 to i224 -%r336 = shl i224 %r335, 192 -%r337 = or i224 %r331, %r336 -%r338 = zext i224 %r337 to i256 -%r340 = getelementptr i32, i32* %r217, i32 7 -%r341 = load i32, i32* %r340 -%r342 = zext i32 %r341 to i256 -%r343 = shl i256 %r342, 224 -%r344 = or i256 %r338, %r343 -%r345 = zext i256 %r344 to i288 -%r347 = getelementptr i32, i32* %r217, i32 8 -%r348 = load i32, i32* %r347 -%r349 = zext i32 %r348 to i288 -%r350 = shl i288 %r349, 256 -%r351 = or i288 %r345, %r350 -%r352 = zext i288 %r351 to i320 -%r354 = getelementptr i32, i32* %r217, i32 9 -%r355 = load i32, i32* %r354 -%r356 = zext i32 %r355 to i320 -%r357 = shl i320 %r356, 288 -%r358 = or i320 %r352, %r357 -%r359 = zext i320 %r358 to i352 -%r361 = getelementptr i32, i32* %r217, i32 10 -%r362 = load i32, i32* %r361 -%r363 = zext i32 %r362 to i352 -%r364 = shl i352 %r363, 320 -%r365 = or i352 %r359, %r364 -%r366 = zext i352 %r365 to i384 -%r368 = getelementptr i32, i32* %r217, i32 11 -%r369 = load i32, i32* %r368 -%r370 = zext i32 %r369 to i384 -%r371 = shl i384 %r370, 352 -%r372 = or i384 %r366, %r371 -%r373 = zext i384 %r372 to i416 -%r375 = getelementptr i32, i32* %r217, i32 12 -%r376 = load i32, i32* %r375 -%r377 = zext i32 %r376 to i416 -%r378 = shl i416 %r377, 384 -%r379 = or i416 %r373, %r378 -%r380 = zext i416 %r379 to i448 -%r382 = getelementptr i32, i32* %r217, i32 13 -%r383 = load i32, i32* %r382 -%r384 = zext i32 %r383 to i448 -%r385 = shl i448 %r384, 416 -%r386 = or i448 %r380, %r385 -%r387 = zext i448 %r386 to i480 -%r389 = getelementptr i32, i32* %r217, i32 14 -%r390 = load i32, i32* %r389 -%r391 = zext i32 %r390 to i480 -%r392 = shl i480 %r391, 448 -%r393 = or i480 %r387, %r392 -%r394 = zext i480 %r393 to i512 -%r396 = getelementptr i32, i32* %r217, i32 15 -%r397 = load i32, i32* %r396 -%r398 = zext i32 %r397 to i512 -%r399 = shl i512 %r398, 480 -%r400 = or i512 %r394, %r399 -%r401 = zext i512 %r400 to i544 -%r402 = zext i1 %r224 to i544 -%r403 = shl i544 %r402, 512 -%r404 = or i544 %r401, %r403 -%r405 = zext i256 %r226 to i544 -%r406 = zext i256 %r228 to i544 -%r407 = shl i544 %r405, 256 -%r408 = shl i544 %r406, 256 -%r409 = add i544 %r404, %r407 -%r410 = add i544 %r409, %r408 -%r411 = load i32, i32* %r1 -%r412 = zext i32 %r411 to i64 -%r414 = getelementptr i32, i32* %r1, i32 1 -%r415 = load i32, i32* %r414 -%r416 = zext i32 %r415 to i64 -%r417 = shl i64 %r416, 32 -%r418 = or i64 %r412, %r417 -%r419 = zext i64 %r418 to i96 -%r421 = getelementptr i32, i32* %r1, i32 2 -%r422 = load i32, i32* %r421 -%r423 = zext i32 %r422 to i96 -%r424 = shl i96 %r423, 64 -%r425 = or i96 %r419, %r424 -%r426 = zext i96 %r425 to i128 -%r428 = getelementptr i32, i32* %r1, i32 3 -%r429 = load i32, i32* %r428 -%r430 = zext i32 %r429 to i128 -%r431 = shl i128 %r430, 96 -%r432 = or i128 %r426, %r431 -%r433 = zext i128 %r432 to i160 -%r435 = getelementptr i32, i32* %r1, i32 4 -%r436 = load i32, i32* %r435 -%r437 = zext i32 %r436 to i160 -%r438 = shl i160 %r437, 128 -%r439 = or i160 %r433, %r438 -%r440 = zext i160 %r439 to i192 -%r442 = getelementptr i32, i32* %r1, i32 5 -%r443 = load i32, i32* %r442 -%r444 = zext i32 %r443 to i192 -%r445 = shl i192 %r444, 160 -%r446 = or i192 %r440, %r445 -%r447 = zext i192 %r446 to i224 -%r449 = getelementptr i32, i32* %r1, i32 6 -%r450 = load i32, i32* %r449 -%r451 = zext i32 %r450 to i224 -%r452 = shl i224 %r451, 192 -%r453 = or i224 %r447, %r452 -%r454 = zext i224 %r453 to i256 -%r456 = getelementptr i32, i32* %r1, i32 7 -%r457 = load i32, i32* %r456 -%r458 = zext i32 %r457 to i256 -%r459 = shl i256 %r458, 224 -%r460 = or i256 %r454, %r459 -%r461 = zext i256 %r460 to i288 -%r463 = getelementptr i32, i32* %r1, i32 8 -%r464 = load i32, i32* %r463 -%r465 = zext i32 %r464 to i288 -%r466 = shl i288 %r465, 256 -%r467 = or i288 %r461, %r466 -%r468 = zext i288 %r467 to i320 -%r470 = getelementptr i32, i32* %r1, i32 9 -%r471 = load i32, i32* %r470 -%r472 = zext i32 %r471 to i320 -%r473 = shl i320 %r472, 288 -%r474 = or i320 %r468, %r473 -%r475 = zext i320 %r474 to i352 -%r477 = getelementptr i32, i32* %r1, i32 10 -%r478 = load i32, i32* %r477 -%r479 = zext i32 %r478 to i352 -%r480 = shl i352 %r479, 320 -%r481 = or i352 %r475, %r480 -%r482 = zext i352 %r481 to i384 -%r484 = getelementptr i32, i32* %r1, i32 11 -%r485 = load i32, i32* %r484 -%r486 = zext i32 %r485 to i384 -%r487 = shl i384 %r486, 352 -%r488 = or i384 %r482, %r487 -%r489 = zext i384 %r488 to i416 -%r491 = getelementptr i32, i32* %r1, i32 12 -%r492 = load i32, i32* %r491 -%r493 = zext i32 %r492 to i416 -%r494 = shl i416 %r493, 384 -%r495 = or i416 %r489, %r494 -%r496 = zext i416 %r495 to i448 -%r498 = getelementptr i32, i32* %r1, i32 13 -%r499 = load i32, i32* %r498 -%r500 = zext i32 %r499 to i448 -%r501 = shl i448 %r500, 416 -%r502 = or i448 %r496, %r501 -%r503 = zext i448 %r502 to i480 -%r505 = getelementptr i32, i32* %r1, i32 14 -%r506 = load i32, i32* %r505 -%r507 = zext i32 %r506 to i480 -%r508 = shl i480 %r507, 448 -%r509 = or i480 %r503, %r508 -%r510 = zext i480 %r509 to i512 -%r512 = getelementptr i32, i32* %r1, i32 15 -%r513 = load i32, i32* %r512 -%r514 = zext i32 %r513 to i512 -%r515 = shl i512 %r514, 480 -%r516 = or i512 %r510, %r515 -%r517 = zext i512 %r516 to i544 -%r518 = sub i544 %r410, %r517 -%r520 = getelementptr i32, i32* %r1, i32 16 -%r521 = load i32, i32* %r520 -%r522 = zext i32 %r521 to i64 -%r524 = getelementptr i32, i32* %r520, i32 1 -%r525 = load i32, i32* %r524 -%r526 = zext i32 %r525 to i64 -%r527 = shl i64 %r526, 32 -%r528 = or i64 %r522, %r527 -%r529 = zext i64 %r528 to i96 -%r531 = getelementptr i32, i32* %r520, i32 2 -%r532 = load i32, i32* %r531 -%r533 = zext i32 %r532 to i96 -%r534 = shl i96 %r533, 64 -%r535 = or i96 %r529, %r534 -%r536 = zext i96 %r535 to i128 -%r538 = getelementptr i32, i32* %r520, i32 3 -%r539 = load i32, i32* %r538 -%r540 = zext i32 %r539 to i128 -%r541 = shl i128 %r540, 96 -%r542 = or i128 %r536, %r541 -%r543 = zext i128 %r542 to i160 -%r545 = getelementptr i32, i32* %r520, i32 4 -%r546 = load i32, i32* %r545 -%r547 = zext i32 %r546 to i160 -%r548 = shl i160 %r547, 128 -%r549 = or i160 %r543, %r548 -%r550 = zext i160 %r549 to i192 -%r552 = getelementptr i32, i32* %r520, i32 5 -%r553 = load i32, i32* %r552 -%r554 = zext i32 %r553 to i192 -%r555 = shl i192 %r554, 160 -%r556 = or i192 %r550, %r555 -%r557 = zext i192 %r556 to i224 -%r559 = getelementptr i32, i32* %r520, i32 6 -%r560 = load i32, i32* %r559 -%r561 = zext i32 %r560 to i224 -%r562 = shl i224 %r561, 192 -%r563 = or i224 %r557, %r562 -%r564 = zext i224 %r563 to i256 -%r566 = getelementptr i32, i32* %r520, i32 7 -%r567 = load i32, i32* %r566 -%r568 = zext i32 %r567 to i256 -%r569 = shl i256 %r568, 224 -%r570 = or i256 %r564, %r569 -%r571 = zext i256 %r570 to i288 -%r573 = getelementptr i32, i32* %r520, i32 8 -%r574 = load i32, i32* %r573 -%r575 = zext i32 %r574 to i288 -%r576 = shl i288 %r575, 256 -%r577 = or i288 %r571, %r576 -%r578 = zext i288 %r577 to i320 -%r580 = getelementptr i32, i32* %r520, i32 9 -%r581 = load i32, i32* %r580 -%r582 = zext i32 %r581 to i320 -%r583 = shl i320 %r582, 288 -%r584 = or i320 %r578, %r583 -%r585 = zext i320 %r584 to i352 -%r587 = getelementptr i32, i32* %r520, i32 10 -%r588 = load i32, i32* %r587 -%r589 = zext i32 %r588 to i352 -%r590 = shl i352 %r589, 320 -%r591 = or i352 %r585, %r590 -%r592 = zext i352 %r591 to i384 -%r594 = getelementptr i32, i32* %r520, i32 11 -%r595 = load i32, i32* %r594 -%r596 = zext i32 %r595 to i384 -%r597 = shl i384 %r596, 352 -%r598 = or i384 %r592, %r597 -%r599 = zext i384 %r598 to i416 -%r601 = getelementptr i32, i32* %r520, i32 12 -%r602 = load i32, i32* %r601 -%r603 = zext i32 %r602 to i416 -%r604 = shl i416 %r603, 384 -%r605 = or i416 %r599, %r604 -%r606 = zext i416 %r605 to i448 -%r608 = getelementptr i32, i32* %r520, i32 13 -%r609 = load i32, i32* %r608 -%r610 = zext i32 %r609 to i448 -%r611 = shl i448 %r610, 416 -%r612 = or i448 %r606, %r611 -%r613 = zext i448 %r612 to i480 -%r615 = getelementptr i32, i32* %r520, i32 14 -%r616 = load i32, i32* %r615 -%r617 = zext i32 %r616 to i480 -%r618 = shl i480 %r617, 448 -%r619 = or i480 %r613, %r618 -%r620 = zext i480 %r619 to i512 -%r622 = getelementptr i32, i32* %r520, i32 15 -%r623 = load i32, i32* %r622 -%r624 = zext i32 %r623 to i512 -%r625 = shl i512 %r624, 480 -%r626 = or i512 %r620, %r625 -%r627 = zext i512 %r626 to i544 -%r628 = sub i544 %r518, %r627 -%r629 = zext i544 %r628 to i768 -%r631 = getelementptr i32, i32* %r1, i32 8 -%r632 = load i32, i32* %r631 -%r633 = zext i32 %r632 to i64 -%r635 = getelementptr i32, i32* %r631, i32 1 -%r636 = load i32, i32* %r635 -%r637 = zext i32 %r636 to i64 -%r638 = shl i64 %r637, 32 -%r639 = or i64 %r633, %r638 -%r640 = zext i64 %r639 to i96 -%r642 = getelementptr i32, i32* %r631, i32 2 -%r643 = load i32, i32* %r642 -%r644 = zext i32 %r643 to i96 -%r645 = shl i96 %r644, 64 -%r646 = or i96 %r640, %r645 -%r647 = zext i96 %r646 to i128 -%r649 = getelementptr i32, i32* %r631, i32 3 -%r650 = load i32, i32* %r649 -%r651 = zext i32 %r650 to i128 -%r652 = shl i128 %r651, 96 -%r653 = or i128 %r647, %r652 -%r654 = zext i128 %r653 to i160 -%r656 = getelementptr i32, i32* %r631, i32 4 -%r657 = load i32, i32* %r656 -%r658 = zext i32 %r657 to i160 -%r659 = shl i160 %r658, 128 -%r660 = or i160 %r654, %r659 -%r661 = zext i160 %r660 to i192 -%r663 = getelementptr i32, i32* %r631, i32 5 -%r664 = load i32, i32* %r663 -%r665 = zext i32 %r664 to i192 -%r666 = shl i192 %r665, 160 -%r667 = or i192 %r661, %r666 -%r668 = zext i192 %r667 to i224 -%r670 = getelementptr i32, i32* %r631, i32 6 -%r671 = load i32, i32* %r670 -%r672 = zext i32 %r671 to i224 -%r673 = shl i224 %r672, 192 -%r674 = or i224 %r668, %r673 -%r675 = zext i224 %r674 to i256 -%r677 = getelementptr i32, i32* %r631, i32 7 -%r678 = load i32, i32* %r677 -%r679 = zext i32 %r678 to i256 -%r680 = shl i256 %r679, 224 -%r681 = or i256 %r675, %r680 -%r682 = zext i256 %r681 to i288 -%r684 = getelementptr i32, i32* %r631, i32 8 -%r685 = load i32, i32* %r684 -%r686 = zext i32 %r685 to i288 -%r687 = shl i288 %r686, 256 -%r688 = or i288 %r682, %r687 -%r689 = zext i288 %r688 to i320 -%r691 = getelementptr i32, i32* %r631, i32 9 -%r692 = load i32, i32* %r691 -%r693 = zext i32 %r692 to i320 -%r694 = shl i320 %r693, 288 -%r695 = or i320 %r689, %r694 -%r696 = zext i320 %r695 to i352 -%r698 = getelementptr i32, i32* %r631, i32 10 -%r699 = load i32, i32* %r698 -%r700 = zext i32 %r699 to i352 -%r701 = shl i352 %r700, 320 -%r702 = or i352 %r696, %r701 -%r703 = zext i352 %r702 to i384 -%r705 = getelementptr i32, i32* %r631, i32 11 -%r706 = load i32, i32* %r705 -%r707 = zext i32 %r706 to i384 -%r708 = shl i384 %r707, 352 -%r709 = or i384 %r703, %r708 -%r710 = zext i384 %r709 to i416 -%r712 = getelementptr i32, i32* %r631, i32 12 -%r713 = load i32, i32* %r712 -%r714 = zext i32 %r713 to i416 -%r715 = shl i416 %r714, 384 -%r716 = or i416 %r710, %r715 -%r717 = zext i416 %r716 to i448 -%r719 = getelementptr i32, i32* %r631, i32 13 -%r720 = load i32, i32* %r719 -%r721 = zext i32 %r720 to i448 -%r722 = shl i448 %r721, 416 -%r723 = or i448 %r717, %r722 -%r724 = zext i448 %r723 to i480 -%r726 = getelementptr i32, i32* %r631, i32 14 -%r727 = load i32, i32* %r726 -%r728 = zext i32 %r727 to i480 -%r729 = shl i480 %r728, 448 -%r730 = or i480 %r724, %r729 -%r731 = zext i480 %r730 to i512 -%r733 = getelementptr i32, i32* %r631, i32 15 -%r734 = load i32, i32* %r733 -%r735 = zext i32 %r734 to i512 -%r736 = shl i512 %r735, 480 -%r737 = or i512 %r731, %r736 -%r738 = zext i512 %r737 to i544 -%r740 = getelementptr i32, i32* %r631, i32 16 -%r741 = load i32, i32* %r740 -%r742 = zext i32 %r741 to i544 -%r743 = shl i544 %r742, 512 -%r744 = or i544 %r738, %r743 -%r745 = zext i544 %r744 to i576 -%r747 = getelementptr i32, i32* %r631, i32 17 -%r748 = load i32, i32* %r747 -%r749 = zext i32 %r748 to i576 -%r750 = shl i576 %r749, 544 -%r751 = or i576 %r745, %r750 -%r752 = zext i576 %r751 to i608 -%r754 = getelementptr i32, i32* %r631, i32 18 -%r755 = load i32, i32* %r754 -%r756 = zext i32 %r755 to i608 -%r757 = shl i608 %r756, 576 -%r758 = or i608 %r752, %r757 -%r759 = zext i608 %r758 to i640 -%r761 = getelementptr i32, i32* %r631, i32 19 -%r762 = load i32, i32* %r761 -%r763 = zext i32 %r762 to i640 -%r764 = shl i640 %r763, 608 -%r765 = or i640 %r759, %r764 -%r766 = zext i640 %r765 to i672 -%r768 = getelementptr i32, i32* %r631, i32 20 -%r769 = load i32, i32* %r768 -%r770 = zext i32 %r769 to i672 -%r771 = shl i672 %r770, 640 -%r772 = or i672 %r766, %r771 -%r773 = zext i672 %r772 to i704 -%r775 = getelementptr i32, i32* %r631, i32 21 -%r776 = load i32, i32* %r775 -%r777 = zext i32 %r776 to i704 -%r778 = shl i704 %r777, 672 -%r779 = or i704 %r773, %r778 -%r780 = zext i704 %r779 to i736 -%r782 = getelementptr i32, i32* %r631, i32 22 -%r783 = load i32, i32* %r782 -%r784 = zext i32 %r783 to i736 -%r785 = shl i736 %r784, 704 -%r786 = or i736 %r780, %r785 -%r787 = zext i736 %r786 to i768 -%r789 = getelementptr i32, i32* %r631, i32 23 -%r790 = load i32, i32* %r789 -%r791 = zext i32 %r790 to i768 -%r792 = shl i768 %r791, 736 -%r793 = or i768 %r787, %r792 -%r794 = add i768 %r629, %r793 -%r796 = getelementptr i32, i32* %r1, i32 8 -%r797 = trunc i768 %r794 to i32 -%r799 = getelementptr i32, i32* %r796, i32 0 -store i32 %r797, i32* %r799 -%r800 = lshr i768 %r794, 32 -%r801 = trunc i768 %r800 to i32 -%r803 = getelementptr i32, i32* %r796, i32 1 -store i32 %r801, i32* %r803 -%r804 = lshr i768 %r800, 32 -%r805 = trunc i768 %r804 to i32 -%r807 = getelementptr i32, i32* %r796, i32 2 -store i32 %r805, i32* %r807 -%r808 = lshr i768 %r804, 32 -%r809 = trunc i768 %r808 to i32 -%r811 = getelementptr i32, i32* %r796, i32 3 -store i32 %r809, i32* %r811 -%r812 = lshr i768 %r808, 32 -%r813 = trunc i768 %r812 to i32 -%r815 = getelementptr i32, i32* %r796, i32 4 -store i32 %r813, i32* %r815 -%r816 = lshr i768 %r812, 32 -%r817 = trunc i768 %r816 to i32 -%r819 = getelementptr i32, i32* %r796, i32 5 -store i32 %r817, i32* %r819 -%r820 = lshr i768 %r816, 32 -%r821 = trunc i768 %r820 to i32 -%r823 = getelementptr i32, i32* %r796, i32 6 -store i32 %r821, i32* %r823 -%r824 = lshr i768 %r820, 32 -%r825 = trunc i768 %r824 to i32 -%r827 = getelementptr i32, i32* %r796, i32 7 -store i32 %r825, i32* %r827 -%r828 = lshr i768 %r824, 32 -%r829 = trunc i768 %r828 to i32 -%r831 = getelementptr i32, i32* %r796, i32 8 -store i32 %r829, i32* %r831 -%r832 = lshr i768 %r828, 32 -%r833 = trunc i768 %r832 to i32 -%r835 = getelementptr i32, i32* %r796, i32 9 -store i32 %r833, i32* %r835 -%r836 = lshr i768 %r832, 32 -%r837 = trunc i768 %r836 to i32 -%r839 = getelementptr i32, i32* %r796, i32 10 -store i32 %r837, i32* %r839 -%r840 = lshr i768 %r836, 32 -%r841 = trunc i768 %r840 to i32 -%r843 = getelementptr i32, i32* %r796, i32 11 -store i32 %r841, i32* %r843 -%r844 = lshr i768 %r840, 32 -%r845 = trunc i768 %r844 to i32 -%r847 = getelementptr i32, i32* %r796, i32 12 -store i32 %r845, i32* %r847 -%r848 = lshr i768 %r844, 32 -%r849 = trunc i768 %r848 to i32 -%r851 = getelementptr i32, i32* %r796, i32 13 -store i32 %r849, i32* %r851 -%r852 = lshr i768 %r848, 32 -%r853 = trunc i768 %r852 to i32 -%r855 = getelementptr i32, i32* %r796, i32 14 -store i32 %r853, i32* %r855 -%r856 = lshr i768 %r852, 32 -%r857 = trunc i768 %r856 to i32 -%r859 = getelementptr i32, i32* %r796, i32 15 -store i32 %r857, i32* %r859 -%r860 = lshr i768 %r856, 32 -%r861 = trunc i768 %r860 to i32 -%r863 = getelementptr i32, i32* %r796, i32 16 -store i32 %r861, i32* %r863 -%r864 = lshr i768 %r860, 32 -%r865 = trunc i768 %r864 to i32 -%r867 = getelementptr i32, i32* %r796, i32 17 -store i32 %r865, i32* %r867 -%r868 = lshr i768 %r864, 32 -%r869 = trunc i768 %r868 to i32 -%r871 = getelementptr i32, i32* %r796, i32 18 -store i32 %r869, i32* %r871 -%r872 = lshr i768 %r868, 32 -%r873 = trunc i768 %r872 to i32 -%r875 = getelementptr i32, i32* %r796, i32 19 -store i32 %r873, i32* %r875 -%r876 = lshr i768 %r872, 32 -%r877 = trunc i768 %r876 to i32 -%r879 = getelementptr i32, i32* %r796, i32 20 -store i32 %r877, i32* %r879 -%r880 = lshr i768 %r876, 32 -%r881 = trunc i768 %r880 to i32 -%r883 = getelementptr i32, i32* %r796, i32 21 -store i32 %r881, i32* %r883 -%r884 = lshr i768 %r880, 32 -%r885 = trunc i768 %r884 to i32 -%r887 = getelementptr i32, i32* %r796, i32 22 -store i32 %r885, i32* %r887 -%r888 = lshr i768 %r884, 32 -%r889 = trunc i768 %r888 to i32 -%r891 = getelementptr i32, i32* %r796, i32 23 -store i32 %r889, i32* %r891 -ret void -} -define void @mcl_fpDbl_sqrPre16L(i32* noalias %r1, i32* noalias %r2) -{ -%r4 = getelementptr i32, i32* %r2, i32 8 -%r6 = getelementptr i32, i32* %r2, i32 8 -%r8 = getelementptr i32, i32* %r1, i32 16 -call void @mcl_fpDbl_mulPre8L(i32* %r1, i32* %r2, i32* %r2) -call void @mcl_fpDbl_mulPre8L(i32* %r8, i32* %r4, i32* %r6) -%r9 = load i32, i32* %r4 -%r10 = zext i32 %r9 to i64 -%r12 = getelementptr i32, i32* %r4, i32 1 -%r13 = load i32, i32* %r12 -%r14 = zext i32 %r13 to i64 -%r15 = shl i64 %r14, 32 -%r16 = or i64 %r10, %r15 -%r17 = zext i64 %r16 to i96 -%r19 = getelementptr i32, i32* %r4, i32 2 -%r20 = load i32, i32* %r19 -%r21 = zext i32 %r20 to i96 -%r22 = shl i96 %r21, 64 -%r23 = or i96 %r17, %r22 -%r24 = zext i96 %r23 to i128 -%r26 = getelementptr i32, i32* %r4, i32 3 -%r27 = load i32, i32* %r26 -%r28 = zext i32 %r27 to i128 -%r29 = shl i128 %r28, 96 -%r30 = or i128 %r24, %r29 -%r31 = zext i128 %r30 to i160 -%r33 = getelementptr i32, i32* %r4, i32 4 -%r34 = load i32, i32* %r33 -%r35 = zext i32 %r34 to i160 -%r36 = shl i160 %r35, 128 -%r37 = or i160 %r31, %r36 -%r38 = zext i160 %r37 to i192 -%r40 = getelementptr i32, i32* %r4, i32 5 -%r41 = load i32, i32* %r40 -%r42 = zext i32 %r41 to i192 -%r43 = shl i192 %r42, 160 -%r44 = or i192 %r38, %r43 -%r45 = zext i192 %r44 to i224 -%r47 = getelementptr i32, i32* %r4, i32 6 -%r48 = load i32, i32* %r47 -%r49 = zext i32 %r48 to i224 -%r50 = shl i224 %r49, 192 -%r51 = or i224 %r45, %r50 -%r52 = zext i224 %r51 to i256 -%r54 = getelementptr i32, i32* %r4, i32 7 -%r55 = load i32, i32* %r54 -%r56 = zext i32 %r55 to i256 -%r57 = shl i256 %r56, 224 -%r58 = or i256 %r52, %r57 -%r59 = zext i256 %r58 to i288 -%r60 = load i32, i32* %r2 -%r61 = zext i32 %r60 to i64 -%r63 = getelementptr i32, i32* %r2, i32 1 -%r64 = load i32, i32* %r63 -%r65 = zext i32 %r64 to i64 -%r66 = shl i64 %r65, 32 -%r67 = or i64 %r61, %r66 -%r68 = zext i64 %r67 to i96 -%r70 = getelementptr i32, i32* %r2, i32 2 -%r71 = load i32, i32* %r70 -%r72 = zext i32 %r71 to i96 -%r73 = shl i96 %r72, 64 -%r74 = or i96 %r68, %r73 -%r75 = zext i96 %r74 to i128 -%r77 = getelementptr i32, i32* %r2, i32 3 -%r78 = load i32, i32* %r77 -%r79 = zext i32 %r78 to i128 -%r80 = shl i128 %r79, 96 -%r81 = or i128 %r75, %r80 -%r82 = zext i128 %r81 to i160 -%r84 = getelementptr i32, i32* %r2, i32 4 -%r85 = load i32, i32* %r84 -%r86 = zext i32 %r85 to i160 -%r87 = shl i160 %r86, 128 -%r88 = or i160 %r82, %r87 -%r89 = zext i160 %r88 to i192 -%r91 = getelementptr i32, i32* %r2, i32 5 -%r92 = load i32, i32* %r91 -%r93 = zext i32 %r92 to i192 -%r94 = shl i192 %r93, 160 -%r95 = or i192 %r89, %r94 -%r96 = zext i192 %r95 to i224 -%r98 = getelementptr i32, i32* %r2, i32 6 -%r99 = load i32, i32* %r98 -%r100 = zext i32 %r99 to i224 -%r101 = shl i224 %r100, 192 -%r102 = or i224 %r96, %r101 -%r103 = zext i224 %r102 to i256 -%r105 = getelementptr i32, i32* %r2, i32 7 -%r106 = load i32, i32* %r105 -%r107 = zext i32 %r106 to i256 -%r108 = shl i256 %r107, 224 -%r109 = or i256 %r103, %r108 -%r110 = zext i256 %r109 to i288 -%r111 = load i32, i32* %r6 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r6, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r6, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r6, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r6, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r6, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r6, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r6, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r162 = load i32, i32* %r2 -%r163 = zext i32 %r162 to i64 -%r165 = getelementptr i32, i32* %r2, i32 1 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i64 -%r168 = shl i64 %r167, 32 -%r169 = or i64 %r163, %r168 -%r170 = zext i64 %r169 to i96 -%r172 = getelementptr i32, i32* %r2, i32 2 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i96 -%r175 = shl i96 %r174, 64 -%r176 = or i96 %r170, %r175 -%r177 = zext i96 %r176 to i128 -%r179 = getelementptr i32, i32* %r2, i32 3 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i128 -%r182 = shl i128 %r181, 96 -%r183 = or i128 %r177, %r182 -%r184 = zext i128 %r183 to i160 -%r186 = getelementptr i32, i32* %r2, i32 4 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i160 -%r189 = shl i160 %r188, 128 -%r190 = or i160 %r184, %r189 -%r191 = zext i160 %r190 to i192 -%r193 = getelementptr i32, i32* %r2, i32 5 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i192 -%r196 = shl i192 %r195, 160 -%r197 = or i192 %r191, %r196 -%r198 = zext i192 %r197 to i224 -%r200 = getelementptr i32, i32* %r2, i32 6 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i224 -%r203 = shl i224 %r202, 192 -%r204 = or i224 %r198, %r203 -%r205 = zext i224 %r204 to i256 -%r207 = getelementptr i32, i32* %r2, i32 7 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i256 -%r210 = shl i256 %r209, 224 -%r211 = or i256 %r205, %r210 -%r212 = zext i256 %r211 to i288 -%r213 = add i288 %r59, %r110 -%r214 = add i288 %r161, %r212 -%r216 = alloca i32, i32 16 -%r217 = trunc i288 %r213 to i256 -%r218 = trunc i288 %r214 to i256 -%r219 = lshr i288 %r213, 256 -%r220 = trunc i288 %r219 to i1 -%r221 = lshr i288 %r214, 256 -%r222 = trunc i288 %r221 to i1 -%r223 = and i1 %r220, %r222 -%r225 = select i1 %r220, i256 %r218, i256 0 -%r227 = select i1 %r222, i256 %r217, i256 0 -%r229 = alloca i32, i32 8 -%r231 = alloca i32, i32 8 -%r232 = trunc i256 %r217 to i32 -%r234 = getelementptr i32, i32* %r229, i32 0 -store i32 %r232, i32* %r234 -%r235 = lshr i256 %r217, 32 -%r236 = trunc i256 %r235 to i32 -%r238 = getelementptr i32, i32* %r229, i32 1 -store i32 %r236, i32* %r238 -%r239 = lshr i256 %r235, 32 -%r240 = trunc i256 %r239 to i32 -%r242 = getelementptr i32, i32* %r229, i32 2 -store i32 %r240, i32* %r242 -%r243 = lshr i256 %r239, 32 -%r244 = trunc i256 %r243 to i32 -%r246 = getelementptr i32, i32* %r229, i32 3 -store i32 %r244, i32* %r246 -%r247 = lshr i256 %r243, 32 -%r248 = trunc i256 %r247 to i32 -%r250 = getelementptr i32, i32* %r229, i32 4 -store i32 %r248, i32* %r250 -%r251 = lshr i256 %r247, 32 -%r252 = trunc i256 %r251 to i32 -%r254 = getelementptr i32, i32* %r229, i32 5 -store i32 %r252, i32* %r254 -%r255 = lshr i256 %r251, 32 -%r256 = trunc i256 %r255 to i32 -%r258 = getelementptr i32, i32* %r229, i32 6 -store i32 %r256, i32* %r258 -%r259 = lshr i256 %r255, 32 -%r260 = trunc i256 %r259 to i32 -%r262 = getelementptr i32, i32* %r229, i32 7 -store i32 %r260, i32* %r262 -%r263 = trunc i256 %r218 to i32 -%r265 = getelementptr i32, i32* %r231, i32 0 -store i32 %r263, i32* %r265 -%r266 = lshr i256 %r218, 32 -%r267 = trunc i256 %r266 to i32 -%r269 = getelementptr i32, i32* %r231, i32 1 -store i32 %r267, i32* %r269 -%r270 = lshr i256 %r266, 32 -%r271 = trunc i256 %r270 to i32 -%r273 = getelementptr i32, i32* %r231, i32 2 -store i32 %r271, i32* %r273 -%r274 = lshr i256 %r270, 32 -%r275 = trunc i256 %r274 to i32 -%r277 = getelementptr i32, i32* %r231, i32 3 -store i32 %r275, i32* %r277 -%r278 = lshr i256 %r274, 32 -%r279 = trunc i256 %r278 to i32 -%r281 = getelementptr i32, i32* %r231, i32 4 -store i32 %r279, i32* %r281 -%r282 = lshr i256 %r278, 32 -%r283 = trunc i256 %r282 to i32 -%r285 = getelementptr i32, i32* %r231, i32 5 -store i32 %r283, i32* %r285 -%r286 = lshr i256 %r282, 32 -%r287 = trunc i256 %r286 to i32 -%r289 = getelementptr i32, i32* %r231, i32 6 -store i32 %r287, i32* %r289 -%r290 = lshr i256 %r286, 32 -%r291 = trunc i256 %r290 to i32 -%r293 = getelementptr i32, i32* %r231, i32 7 -store i32 %r291, i32* %r293 -call void @mcl_fpDbl_mulPre8L(i32* %r216, i32* %r229, i32* %r231) -%r294 = load i32, i32* %r216 -%r295 = zext i32 %r294 to i64 -%r297 = getelementptr i32, i32* %r216, i32 1 -%r298 = load i32, i32* %r297 -%r299 = zext i32 %r298 to i64 -%r300 = shl i64 %r299, 32 -%r301 = or i64 %r295, %r300 -%r302 = zext i64 %r301 to i96 -%r304 = getelementptr i32, i32* %r216, i32 2 -%r305 = load i32, i32* %r304 -%r306 = zext i32 %r305 to i96 -%r307 = shl i96 %r306, 64 -%r308 = or i96 %r302, %r307 -%r309 = zext i96 %r308 to i128 -%r311 = getelementptr i32, i32* %r216, i32 3 -%r312 = load i32, i32* %r311 -%r313 = zext i32 %r312 to i128 -%r314 = shl i128 %r313, 96 -%r315 = or i128 %r309, %r314 -%r316 = zext i128 %r315 to i160 -%r318 = getelementptr i32, i32* %r216, i32 4 -%r319 = load i32, i32* %r318 -%r320 = zext i32 %r319 to i160 -%r321 = shl i160 %r320, 128 -%r322 = or i160 %r316, %r321 -%r323 = zext i160 %r322 to i192 -%r325 = getelementptr i32, i32* %r216, i32 5 -%r326 = load i32, i32* %r325 -%r327 = zext i32 %r326 to i192 -%r328 = shl i192 %r327, 160 -%r329 = or i192 %r323, %r328 -%r330 = zext i192 %r329 to i224 -%r332 = getelementptr i32, i32* %r216, i32 6 -%r333 = load i32, i32* %r332 -%r334 = zext i32 %r333 to i224 -%r335 = shl i224 %r334, 192 -%r336 = or i224 %r330, %r335 -%r337 = zext i224 %r336 to i256 -%r339 = getelementptr i32, i32* %r216, i32 7 -%r340 = load i32, i32* %r339 -%r341 = zext i32 %r340 to i256 -%r342 = shl i256 %r341, 224 -%r343 = or i256 %r337, %r342 -%r344 = zext i256 %r343 to i288 -%r346 = getelementptr i32, i32* %r216, i32 8 -%r347 = load i32, i32* %r346 -%r348 = zext i32 %r347 to i288 -%r349 = shl i288 %r348, 256 -%r350 = or i288 %r344, %r349 -%r351 = zext i288 %r350 to i320 -%r353 = getelementptr i32, i32* %r216, i32 9 -%r354 = load i32, i32* %r353 -%r355 = zext i32 %r354 to i320 -%r356 = shl i320 %r355, 288 -%r357 = or i320 %r351, %r356 -%r358 = zext i320 %r357 to i352 -%r360 = getelementptr i32, i32* %r216, i32 10 -%r361 = load i32, i32* %r360 -%r362 = zext i32 %r361 to i352 -%r363 = shl i352 %r362, 320 -%r364 = or i352 %r358, %r363 -%r365 = zext i352 %r364 to i384 -%r367 = getelementptr i32, i32* %r216, i32 11 -%r368 = load i32, i32* %r367 -%r369 = zext i32 %r368 to i384 -%r370 = shl i384 %r369, 352 -%r371 = or i384 %r365, %r370 -%r372 = zext i384 %r371 to i416 -%r374 = getelementptr i32, i32* %r216, i32 12 -%r375 = load i32, i32* %r374 -%r376 = zext i32 %r375 to i416 -%r377 = shl i416 %r376, 384 -%r378 = or i416 %r372, %r377 -%r379 = zext i416 %r378 to i448 -%r381 = getelementptr i32, i32* %r216, i32 13 -%r382 = load i32, i32* %r381 -%r383 = zext i32 %r382 to i448 -%r384 = shl i448 %r383, 416 -%r385 = or i448 %r379, %r384 -%r386 = zext i448 %r385 to i480 -%r388 = getelementptr i32, i32* %r216, i32 14 -%r389 = load i32, i32* %r388 -%r390 = zext i32 %r389 to i480 -%r391 = shl i480 %r390, 448 -%r392 = or i480 %r386, %r391 -%r393 = zext i480 %r392 to i512 -%r395 = getelementptr i32, i32* %r216, i32 15 -%r396 = load i32, i32* %r395 -%r397 = zext i32 %r396 to i512 -%r398 = shl i512 %r397, 480 -%r399 = or i512 %r393, %r398 -%r400 = zext i512 %r399 to i544 -%r401 = zext i1 %r223 to i544 -%r402 = shl i544 %r401, 512 -%r403 = or i544 %r400, %r402 -%r404 = zext i256 %r225 to i544 -%r405 = zext i256 %r227 to i544 -%r406 = shl i544 %r404, 256 -%r407 = shl i544 %r405, 256 -%r408 = add i544 %r403, %r406 -%r409 = add i544 %r408, %r407 -%r410 = load i32, i32* %r1 -%r411 = zext i32 %r410 to i64 -%r413 = getelementptr i32, i32* %r1, i32 1 -%r414 = load i32, i32* %r413 -%r415 = zext i32 %r414 to i64 -%r416 = shl i64 %r415, 32 -%r417 = or i64 %r411, %r416 -%r418 = zext i64 %r417 to i96 -%r420 = getelementptr i32, i32* %r1, i32 2 -%r421 = load i32, i32* %r420 -%r422 = zext i32 %r421 to i96 -%r423 = shl i96 %r422, 64 -%r424 = or i96 %r418, %r423 -%r425 = zext i96 %r424 to i128 -%r427 = getelementptr i32, i32* %r1, i32 3 -%r428 = load i32, i32* %r427 -%r429 = zext i32 %r428 to i128 -%r430 = shl i128 %r429, 96 -%r431 = or i128 %r425, %r430 -%r432 = zext i128 %r431 to i160 -%r434 = getelementptr i32, i32* %r1, i32 4 -%r435 = load i32, i32* %r434 -%r436 = zext i32 %r435 to i160 -%r437 = shl i160 %r436, 128 -%r438 = or i160 %r432, %r437 -%r439 = zext i160 %r438 to i192 -%r441 = getelementptr i32, i32* %r1, i32 5 -%r442 = load i32, i32* %r441 -%r443 = zext i32 %r442 to i192 -%r444 = shl i192 %r443, 160 -%r445 = or i192 %r439, %r444 -%r446 = zext i192 %r445 to i224 -%r448 = getelementptr i32, i32* %r1, i32 6 -%r449 = load i32, i32* %r448 -%r450 = zext i32 %r449 to i224 -%r451 = shl i224 %r450, 192 -%r452 = or i224 %r446, %r451 -%r453 = zext i224 %r452 to i256 -%r455 = getelementptr i32, i32* %r1, i32 7 -%r456 = load i32, i32* %r455 -%r457 = zext i32 %r456 to i256 -%r458 = shl i256 %r457, 224 -%r459 = or i256 %r453, %r458 -%r460 = zext i256 %r459 to i288 -%r462 = getelementptr i32, i32* %r1, i32 8 -%r463 = load i32, i32* %r462 -%r464 = zext i32 %r463 to i288 -%r465 = shl i288 %r464, 256 -%r466 = or i288 %r460, %r465 -%r467 = zext i288 %r466 to i320 -%r469 = getelementptr i32, i32* %r1, i32 9 -%r470 = load i32, i32* %r469 -%r471 = zext i32 %r470 to i320 -%r472 = shl i320 %r471, 288 -%r473 = or i320 %r467, %r472 -%r474 = zext i320 %r473 to i352 -%r476 = getelementptr i32, i32* %r1, i32 10 -%r477 = load i32, i32* %r476 -%r478 = zext i32 %r477 to i352 -%r479 = shl i352 %r478, 320 -%r480 = or i352 %r474, %r479 -%r481 = zext i352 %r480 to i384 -%r483 = getelementptr i32, i32* %r1, i32 11 -%r484 = load i32, i32* %r483 -%r485 = zext i32 %r484 to i384 -%r486 = shl i384 %r485, 352 -%r487 = or i384 %r481, %r486 -%r488 = zext i384 %r487 to i416 -%r490 = getelementptr i32, i32* %r1, i32 12 -%r491 = load i32, i32* %r490 -%r492 = zext i32 %r491 to i416 -%r493 = shl i416 %r492, 384 -%r494 = or i416 %r488, %r493 -%r495 = zext i416 %r494 to i448 -%r497 = getelementptr i32, i32* %r1, i32 13 -%r498 = load i32, i32* %r497 -%r499 = zext i32 %r498 to i448 -%r500 = shl i448 %r499, 416 -%r501 = or i448 %r495, %r500 -%r502 = zext i448 %r501 to i480 -%r504 = getelementptr i32, i32* %r1, i32 14 -%r505 = load i32, i32* %r504 -%r506 = zext i32 %r505 to i480 -%r507 = shl i480 %r506, 448 -%r508 = or i480 %r502, %r507 -%r509 = zext i480 %r508 to i512 -%r511 = getelementptr i32, i32* %r1, i32 15 -%r512 = load i32, i32* %r511 -%r513 = zext i32 %r512 to i512 -%r514 = shl i512 %r513, 480 -%r515 = or i512 %r509, %r514 -%r516 = zext i512 %r515 to i544 -%r517 = sub i544 %r409, %r516 -%r519 = getelementptr i32, i32* %r1, i32 16 -%r520 = load i32, i32* %r519 -%r521 = zext i32 %r520 to i64 -%r523 = getelementptr i32, i32* %r519, i32 1 -%r524 = load i32, i32* %r523 -%r525 = zext i32 %r524 to i64 -%r526 = shl i64 %r525, 32 -%r527 = or i64 %r521, %r526 -%r528 = zext i64 %r527 to i96 -%r530 = getelementptr i32, i32* %r519, i32 2 -%r531 = load i32, i32* %r530 -%r532 = zext i32 %r531 to i96 -%r533 = shl i96 %r532, 64 -%r534 = or i96 %r528, %r533 -%r535 = zext i96 %r534 to i128 -%r537 = getelementptr i32, i32* %r519, i32 3 -%r538 = load i32, i32* %r537 -%r539 = zext i32 %r538 to i128 -%r540 = shl i128 %r539, 96 -%r541 = or i128 %r535, %r540 -%r542 = zext i128 %r541 to i160 -%r544 = getelementptr i32, i32* %r519, i32 4 -%r545 = load i32, i32* %r544 -%r546 = zext i32 %r545 to i160 -%r547 = shl i160 %r546, 128 -%r548 = or i160 %r542, %r547 -%r549 = zext i160 %r548 to i192 -%r551 = getelementptr i32, i32* %r519, i32 5 -%r552 = load i32, i32* %r551 -%r553 = zext i32 %r552 to i192 -%r554 = shl i192 %r553, 160 -%r555 = or i192 %r549, %r554 -%r556 = zext i192 %r555 to i224 -%r558 = getelementptr i32, i32* %r519, i32 6 -%r559 = load i32, i32* %r558 -%r560 = zext i32 %r559 to i224 -%r561 = shl i224 %r560, 192 -%r562 = or i224 %r556, %r561 -%r563 = zext i224 %r562 to i256 -%r565 = getelementptr i32, i32* %r519, i32 7 -%r566 = load i32, i32* %r565 -%r567 = zext i32 %r566 to i256 -%r568 = shl i256 %r567, 224 -%r569 = or i256 %r563, %r568 -%r570 = zext i256 %r569 to i288 -%r572 = getelementptr i32, i32* %r519, i32 8 -%r573 = load i32, i32* %r572 -%r574 = zext i32 %r573 to i288 -%r575 = shl i288 %r574, 256 -%r576 = or i288 %r570, %r575 -%r577 = zext i288 %r576 to i320 -%r579 = getelementptr i32, i32* %r519, i32 9 -%r580 = load i32, i32* %r579 -%r581 = zext i32 %r580 to i320 -%r582 = shl i320 %r581, 288 -%r583 = or i320 %r577, %r582 -%r584 = zext i320 %r583 to i352 -%r586 = getelementptr i32, i32* %r519, i32 10 -%r587 = load i32, i32* %r586 -%r588 = zext i32 %r587 to i352 -%r589 = shl i352 %r588, 320 -%r590 = or i352 %r584, %r589 -%r591 = zext i352 %r590 to i384 -%r593 = getelementptr i32, i32* %r519, i32 11 -%r594 = load i32, i32* %r593 -%r595 = zext i32 %r594 to i384 -%r596 = shl i384 %r595, 352 -%r597 = or i384 %r591, %r596 -%r598 = zext i384 %r597 to i416 -%r600 = getelementptr i32, i32* %r519, i32 12 -%r601 = load i32, i32* %r600 -%r602 = zext i32 %r601 to i416 -%r603 = shl i416 %r602, 384 -%r604 = or i416 %r598, %r603 -%r605 = zext i416 %r604 to i448 -%r607 = getelementptr i32, i32* %r519, i32 13 -%r608 = load i32, i32* %r607 -%r609 = zext i32 %r608 to i448 -%r610 = shl i448 %r609, 416 -%r611 = or i448 %r605, %r610 -%r612 = zext i448 %r611 to i480 -%r614 = getelementptr i32, i32* %r519, i32 14 -%r615 = load i32, i32* %r614 -%r616 = zext i32 %r615 to i480 -%r617 = shl i480 %r616, 448 -%r618 = or i480 %r612, %r617 -%r619 = zext i480 %r618 to i512 -%r621 = getelementptr i32, i32* %r519, i32 15 -%r622 = load i32, i32* %r621 -%r623 = zext i32 %r622 to i512 -%r624 = shl i512 %r623, 480 -%r625 = or i512 %r619, %r624 -%r626 = zext i512 %r625 to i544 -%r627 = sub i544 %r517, %r626 -%r628 = zext i544 %r627 to i768 -%r630 = getelementptr i32, i32* %r1, i32 8 -%r631 = load i32, i32* %r630 -%r632 = zext i32 %r631 to i64 -%r634 = getelementptr i32, i32* %r630, i32 1 -%r635 = load i32, i32* %r634 -%r636 = zext i32 %r635 to i64 -%r637 = shl i64 %r636, 32 -%r638 = or i64 %r632, %r637 -%r639 = zext i64 %r638 to i96 -%r641 = getelementptr i32, i32* %r630, i32 2 -%r642 = load i32, i32* %r641 -%r643 = zext i32 %r642 to i96 -%r644 = shl i96 %r643, 64 -%r645 = or i96 %r639, %r644 -%r646 = zext i96 %r645 to i128 -%r648 = getelementptr i32, i32* %r630, i32 3 -%r649 = load i32, i32* %r648 -%r650 = zext i32 %r649 to i128 -%r651 = shl i128 %r650, 96 -%r652 = or i128 %r646, %r651 -%r653 = zext i128 %r652 to i160 -%r655 = getelementptr i32, i32* %r630, i32 4 -%r656 = load i32, i32* %r655 -%r657 = zext i32 %r656 to i160 -%r658 = shl i160 %r657, 128 -%r659 = or i160 %r653, %r658 -%r660 = zext i160 %r659 to i192 -%r662 = getelementptr i32, i32* %r630, i32 5 -%r663 = load i32, i32* %r662 -%r664 = zext i32 %r663 to i192 -%r665 = shl i192 %r664, 160 -%r666 = or i192 %r660, %r665 -%r667 = zext i192 %r666 to i224 -%r669 = getelementptr i32, i32* %r630, i32 6 -%r670 = load i32, i32* %r669 -%r671 = zext i32 %r670 to i224 -%r672 = shl i224 %r671, 192 -%r673 = or i224 %r667, %r672 -%r674 = zext i224 %r673 to i256 -%r676 = getelementptr i32, i32* %r630, i32 7 -%r677 = load i32, i32* %r676 -%r678 = zext i32 %r677 to i256 -%r679 = shl i256 %r678, 224 -%r680 = or i256 %r674, %r679 -%r681 = zext i256 %r680 to i288 -%r683 = getelementptr i32, i32* %r630, i32 8 -%r684 = load i32, i32* %r683 -%r685 = zext i32 %r684 to i288 -%r686 = shl i288 %r685, 256 -%r687 = or i288 %r681, %r686 -%r688 = zext i288 %r687 to i320 -%r690 = getelementptr i32, i32* %r630, i32 9 -%r691 = load i32, i32* %r690 -%r692 = zext i32 %r691 to i320 -%r693 = shl i320 %r692, 288 -%r694 = or i320 %r688, %r693 -%r695 = zext i320 %r694 to i352 -%r697 = getelementptr i32, i32* %r630, i32 10 -%r698 = load i32, i32* %r697 -%r699 = zext i32 %r698 to i352 -%r700 = shl i352 %r699, 320 -%r701 = or i352 %r695, %r700 -%r702 = zext i352 %r701 to i384 -%r704 = getelementptr i32, i32* %r630, i32 11 -%r705 = load i32, i32* %r704 -%r706 = zext i32 %r705 to i384 -%r707 = shl i384 %r706, 352 -%r708 = or i384 %r702, %r707 -%r709 = zext i384 %r708 to i416 -%r711 = getelementptr i32, i32* %r630, i32 12 -%r712 = load i32, i32* %r711 -%r713 = zext i32 %r712 to i416 -%r714 = shl i416 %r713, 384 -%r715 = or i416 %r709, %r714 -%r716 = zext i416 %r715 to i448 -%r718 = getelementptr i32, i32* %r630, i32 13 -%r719 = load i32, i32* %r718 -%r720 = zext i32 %r719 to i448 -%r721 = shl i448 %r720, 416 -%r722 = or i448 %r716, %r721 -%r723 = zext i448 %r722 to i480 -%r725 = getelementptr i32, i32* %r630, i32 14 -%r726 = load i32, i32* %r725 -%r727 = zext i32 %r726 to i480 -%r728 = shl i480 %r727, 448 -%r729 = or i480 %r723, %r728 -%r730 = zext i480 %r729 to i512 -%r732 = getelementptr i32, i32* %r630, i32 15 -%r733 = load i32, i32* %r732 -%r734 = zext i32 %r733 to i512 -%r735 = shl i512 %r734, 480 -%r736 = or i512 %r730, %r735 -%r737 = zext i512 %r736 to i544 -%r739 = getelementptr i32, i32* %r630, i32 16 -%r740 = load i32, i32* %r739 -%r741 = zext i32 %r740 to i544 -%r742 = shl i544 %r741, 512 -%r743 = or i544 %r737, %r742 -%r744 = zext i544 %r743 to i576 -%r746 = getelementptr i32, i32* %r630, i32 17 -%r747 = load i32, i32* %r746 -%r748 = zext i32 %r747 to i576 -%r749 = shl i576 %r748, 544 -%r750 = or i576 %r744, %r749 -%r751 = zext i576 %r750 to i608 -%r753 = getelementptr i32, i32* %r630, i32 18 -%r754 = load i32, i32* %r753 -%r755 = zext i32 %r754 to i608 -%r756 = shl i608 %r755, 576 -%r757 = or i608 %r751, %r756 -%r758 = zext i608 %r757 to i640 -%r760 = getelementptr i32, i32* %r630, i32 19 -%r761 = load i32, i32* %r760 -%r762 = zext i32 %r761 to i640 -%r763 = shl i640 %r762, 608 -%r764 = or i640 %r758, %r763 -%r765 = zext i640 %r764 to i672 -%r767 = getelementptr i32, i32* %r630, i32 20 -%r768 = load i32, i32* %r767 -%r769 = zext i32 %r768 to i672 -%r770 = shl i672 %r769, 640 -%r771 = or i672 %r765, %r770 -%r772 = zext i672 %r771 to i704 -%r774 = getelementptr i32, i32* %r630, i32 21 -%r775 = load i32, i32* %r774 -%r776 = zext i32 %r775 to i704 -%r777 = shl i704 %r776, 672 -%r778 = or i704 %r772, %r777 -%r779 = zext i704 %r778 to i736 -%r781 = getelementptr i32, i32* %r630, i32 22 -%r782 = load i32, i32* %r781 -%r783 = zext i32 %r782 to i736 -%r784 = shl i736 %r783, 704 -%r785 = or i736 %r779, %r784 -%r786 = zext i736 %r785 to i768 -%r788 = getelementptr i32, i32* %r630, i32 23 -%r789 = load i32, i32* %r788 -%r790 = zext i32 %r789 to i768 -%r791 = shl i768 %r790, 736 -%r792 = or i768 %r786, %r791 -%r793 = add i768 %r628, %r792 -%r795 = getelementptr i32, i32* %r1, i32 8 -%r796 = trunc i768 %r793 to i32 -%r798 = getelementptr i32, i32* %r795, i32 0 -store i32 %r796, i32* %r798 -%r799 = lshr i768 %r793, 32 -%r800 = trunc i768 %r799 to i32 -%r802 = getelementptr i32, i32* %r795, i32 1 -store i32 %r800, i32* %r802 -%r803 = lshr i768 %r799, 32 -%r804 = trunc i768 %r803 to i32 -%r806 = getelementptr i32, i32* %r795, i32 2 -store i32 %r804, i32* %r806 -%r807 = lshr i768 %r803, 32 -%r808 = trunc i768 %r807 to i32 -%r810 = getelementptr i32, i32* %r795, i32 3 -store i32 %r808, i32* %r810 -%r811 = lshr i768 %r807, 32 -%r812 = trunc i768 %r811 to i32 -%r814 = getelementptr i32, i32* %r795, i32 4 -store i32 %r812, i32* %r814 -%r815 = lshr i768 %r811, 32 -%r816 = trunc i768 %r815 to i32 -%r818 = getelementptr i32, i32* %r795, i32 5 -store i32 %r816, i32* %r818 -%r819 = lshr i768 %r815, 32 -%r820 = trunc i768 %r819 to i32 -%r822 = getelementptr i32, i32* %r795, i32 6 -store i32 %r820, i32* %r822 -%r823 = lshr i768 %r819, 32 -%r824 = trunc i768 %r823 to i32 -%r826 = getelementptr i32, i32* %r795, i32 7 -store i32 %r824, i32* %r826 -%r827 = lshr i768 %r823, 32 -%r828 = trunc i768 %r827 to i32 -%r830 = getelementptr i32, i32* %r795, i32 8 -store i32 %r828, i32* %r830 -%r831 = lshr i768 %r827, 32 -%r832 = trunc i768 %r831 to i32 -%r834 = getelementptr i32, i32* %r795, i32 9 -store i32 %r832, i32* %r834 -%r835 = lshr i768 %r831, 32 -%r836 = trunc i768 %r835 to i32 -%r838 = getelementptr i32, i32* %r795, i32 10 -store i32 %r836, i32* %r838 -%r839 = lshr i768 %r835, 32 -%r840 = trunc i768 %r839 to i32 -%r842 = getelementptr i32, i32* %r795, i32 11 -store i32 %r840, i32* %r842 -%r843 = lshr i768 %r839, 32 -%r844 = trunc i768 %r843 to i32 -%r846 = getelementptr i32, i32* %r795, i32 12 -store i32 %r844, i32* %r846 -%r847 = lshr i768 %r843, 32 -%r848 = trunc i768 %r847 to i32 -%r850 = getelementptr i32, i32* %r795, i32 13 -store i32 %r848, i32* %r850 -%r851 = lshr i768 %r847, 32 -%r852 = trunc i768 %r851 to i32 -%r854 = getelementptr i32, i32* %r795, i32 14 -store i32 %r852, i32* %r854 -%r855 = lshr i768 %r851, 32 -%r856 = trunc i768 %r855 to i32 -%r858 = getelementptr i32, i32* %r795, i32 15 -store i32 %r856, i32* %r858 -%r859 = lshr i768 %r855, 32 -%r860 = trunc i768 %r859 to i32 -%r862 = getelementptr i32, i32* %r795, i32 16 -store i32 %r860, i32* %r862 -%r863 = lshr i768 %r859, 32 -%r864 = trunc i768 %r863 to i32 -%r866 = getelementptr i32, i32* %r795, i32 17 -store i32 %r864, i32* %r866 -%r867 = lshr i768 %r863, 32 -%r868 = trunc i768 %r867 to i32 -%r870 = getelementptr i32, i32* %r795, i32 18 -store i32 %r868, i32* %r870 -%r871 = lshr i768 %r867, 32 -%r872 = trunc i768 %r871 to i32 -%r874 = getelementptr i32, i32* %r795, i32 19 -store i32 %r872, i32* %r874 -%r875 = lshr i768 %r871, 32 -%r876 = trunc i768 %r875 to i32 -%r878 = getelementptr i32, i32* %r795, i32 20 -store i32 %r876, i32* %r878 -%r879 = lshr i768 %r875, 32 -%r880 = trunc i768 %r879 to i32 -%r882 = getelementptr i32, i32* %r795, i32 21 -store i32 %r880, i32* %r882 -%r883 = lshr i768 %r879, 32 -%r884 = trunc i768 %r883 to i32 -%r886 = getelementptr i32, i32* %r795, i32 22 -store i32 %r884, i32* %r886 -%r887 = lshr i768 %r883, 32 -%r888 = trunc i768 %r887 to i32 -%r890 = getelementptr i32, i32* %r795, i32 23 -store i32 %r888, i32* %r890 -ret void -} -define void @mcl_fp_mont16L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i544 @mulPv512x32(i32* %r2, i32 %r10) -%r12 = zext i544 %r11 to i576 -%r13 = trunc i544 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i544 @mulPv512x32(i32* %r4, i32 %r14) -%r16 = zext i544 %r15 to i576 -%r17 = add i576 %r12, %r16 -%r18 = lshr i576 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i544 @mulPv512x32(i32* %r2, i32 %r21) -%r23 = zext i544 %r22 to i576 -%r24 = add i576 %r18, %r23 -%r25 = trunc i576 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i544 @mulPv512x32(i32* %r4, i32 %r26) -%r28 = zext i544 %r27 to i576 -%r29 = add i576 %r24, %r28 -%r30 = lshr i576 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i544 @mulPv512x32(i32* %r2, i32 %r33) -%r35 = zext i544 %r34 to i576 -%r36 = add i576 %r30, %r35 -%r37 = trunc i576 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i544 @mulPv512x32(i32* %r4, i32 %r38) -%r40 = zext i544 %r39 to i576 -%r41 = add i576 %r36, %r40 -%r42 = lshr i576 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i544 @mulPv512x32(i32* %r2, i32 %r45) -%r47 = zext i544 %r46 to i576 -%r48 = add i576 %r42, %r47 -%r49 = trunc i576 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i544 @mulPv512x32(i32* %r4, i32 %r50) -%r52 = zext i544 %r51 to i576 -%r53 = add i576 %r48, %r52 -%r54 = lshr i576 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i544 @mulPv512x32(i32* %r2, i32 %r57) -%r59 = zext i544 %r58 to i576 -%r60 = add i576 %r54, %r59 -%r61 = trunc i576 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i544 @mulPv512x32(i32* %r4, i32 %r62) -%r64 = zext i544 %r63 to i576 -%r65 = add i576 %r60, %r64 -%r66 = lshr i576 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i544 @mulPv512x32(i32* %r2, i32 %r69) -%r71 = zext i544 %r70 to i576 -%r72 = add i576 %r66, %r71 -%r73 = trunc i576 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i544 @mulPv512x32(i32* %r4, i32 %r74) -%r76 = zext i544 %r75 to i576 -%r77 = add i576 %r72, %r76 -%r78 = lshr i576 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i544 @mulPv512x32(i32* %r2, i32 %r81) -%r83 = zext i544 %r82 to i576 -%r84 = add i576 %r78, %r83 -%r85 = trunc i576 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i544 @mulPv512x32(i32* %r4, i32 %r86) -%r88 = zext i544 %r87 to i576 -%r89 = add i576 %r84, %r88 -%r90 = lshr i576 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i544 @mulPv512x32(i32* %r2, i32 %r93) -%r95 = zext i544 %r94 to i576 -%r96 = add i576 %r90, %r95 -%r97 = trunc i576 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i544 @mulPv512x32(i32* %r4, i32 %r98) -%r100 = zext i544 %r99 to i576 -%r101 = add i576 %r96, %r100 -%r102 = lshr i576 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i544 @mulPv512x32(i32* %r2, i32 %r105) -%r107 = zext i544 %r106 to i576 -%r108 = add i576 %r102, %r107 -%r109 = trunc i576 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i544 @mulPv512x32(i32* %r4, i32 %r110) -%r112 = zext i544 %r111 to i576 -%r113 = add i576 %r108, %r112 -%r114 = lshr i576 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 -%r117 = load i32, i32* %r116 -%r118 = call i544 @mulPv512x32(i32* %r2, i32 %r117) -%r119 = zext i544 %r118 to i576 -%r120 = add i576 %r114, %r119 -%r121 = trunc i576 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i544 @mulPv512x32(i32* %r4, i32 %r122) -%r124 = zext i544 %r123 to i576 -%r125 = add i576 %r120, %r124 -%r126 = lshr i576 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i544 @mulPv512x32(i32* %r2, i32 %r129) -%r131 = zext i544 %r130 to i576 -%r132 = add i576 %r126, %r131 -%r133 = trunc i576 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i544 @mulPv512x32(i32* %r4, i32 %r134) -%r136 = zext i544 %r135 to i576 -%r137 = add i576 %r132, %r136 -%r138 = lshr i576 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i544 @mulPv512x32(i32* %r2, i32 %r141) -%r143 = zext i544 %r142 to i576 -%r144 = add i576 %r138, %r143 -%r145 = trunc i576 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i544 @mulPv512x32(i32* %r4, i32 %r146) -%r148 = zext i544 %r147 to i576 -%r149 = add i576 %r144, %r148 -%r150 = lshr i576 %r149, 32 -%r152 = getelementptr i32, i32* %r3, i32 12 -%r153 = load i32, i32* %r152 -%r154 = call i544 @mulPv512x32(i32* %r2, i32 %r153) -%r155 = zext i544 %r154 to i576 -%r156 = add i576 %r150, %r155 -%r157 = trunc i576 %r156 to i32 -%r158 = mul i32 %r157, %r7 -%r159 = call i544 @mulPv512x32(i32* %r4, i32 %r158) -%r160 = zext i544 %r159 to i576 -%r161 = add i576 %r156, %r160 -%r162 = lshr i576 %r161, 32 -%r164 = getelementptr i32, i32* %r3, i32 13 -%r165 = load i32, i32* %r164 -%r166 = call i544 @mulPv512x32(i32* %r2, i32 %r165) -%r167 = zext i544 %r166 to i576 -%r168 = add i576 %r162, %r167 -%r169 = trunc i576 %r168 to i32 -%r170 = mul i32 %r169, %r7 -%r171 = call i544 @mulPv512x32(i32* %r4, i32 %r170) -%r172 = zext i544 %r171 to i576 -%r173 = add i576 %r168, %r172 -%r174 = lshr i576 %r173, 32 -%r176 = getelementptr i32, i32* %r3, i32 14 -%r177 = load i32, i32* %r176 -%r178 = call i544 @mulPv512x32(i32* %r2, i32 %r177) -%r179 = zext i544 %r178 to i576 -%r180 = add i576 %r174, %r179 -%r181 = trunc i576 %r180 to i32 -%r182 = mul i32 %r181, %r7 -%r183 = call i544 @mulPv512x32(i32* %r4, i32 %r182) -%r184 = zext i544 %r183 to i576 -%r185 = add i576 %r180, %r184 -%r186 = lshr i576 %r185, 32 -%r188 = getelementptr i32, i32* %r3, i32 15 -%r189 = load i32, i32* %r188 -%r190 = call i544 @mulPv512x32(i32* %r2, i32 %r189) -%r191 = zext i544 %r190 to i576 -%r192 = add i576 %r186, %r191 -%r193 = trunc i576 %r192 to i32 -%r194 = mul i32 %r193, %r7 -%r195 = call i544 @mulPv512x32(i32* %r4, i32 %r194) -%r196 = zext i544 %r195 to i576 -%r197 = add i576 %r192, %r196 -%r198 = lshr i576 %r197, 32 -%r199 = trunc i576 %r198 to i544 -%r200 = load i32, i32* %r4 -%r201 = zext i32 %r200 to i64 -%r203 = getelementptr i32, i32* %r4, i32 1 -%r204 = load i32, i32* %r203 -%r205 = zext i32 %r204 to i64 -%r206 = shl i64 %r205, 32 -%r207 = or i64 %r201, %r206 -%r208 = zext i64 %r207 to i96 -%r210 = getelementptr i32, i32* %r4, i32 2 -%r211 = load i32, i32* %r210 -%r212 = zext i32 %r211 to i96 -%r213 = shl i96 %r212, 64 -%r214 = or i96 %r208, %r213 -%r215 = zext i96 %r214 to i128 -%r217 = getelementptr i32, i32* %r4, i32 3 -%r218 = load i32, i32* %r217 -%r219 = zext i32 %r218 to i128 -%r220 = shl i128 %r219, 96 -%r221 = or i128 %r215, %r220 -%r222 = zext i128 %r221 to i160 -%r224 = getelementptr i32, i32* %r4, i32 4 -%r225 = load i32, i32* %r224 -%r226 = zext i32 %r225 to i160 -%r227 = shl i160 %r226, 128 -%r228 = or i160 %r222, %r227 -%r229 = zext i160 %r228 to i192 -%r231 = getelementptr i32, i32* %r4, i32 5 -%r232 = load i32, i32* %r231 -%r233 = zext i32 %r232 to i192 -%r234 = shl i192 %r233, 160 -%r235 = or i192 %r229, %r234 -%r236 = zext i192 %r235 to i224 -%r238 = getelementptr i32, i32* %r4, i32 6 -%r239 = load i32, i32* %r238 -%r240 = zext i32 %r239 to i224 -%r241 = shl i224 %r240, 192 -%r242 = or i224 %r236, %r241 -%r243 = zext i224 %r242 to i256 -%r245 = getelementptr i32, i32* %r4, i32 7 -%r246 = load i32, i32* %r245 -%r247 = zext i32 %r246 to i256 -%r248 = shl i256 %r247, 224 -%r249 = or i256 %r243, %r248 -%r250 = zext i256 %r249 to i288 -%r252 = getelementptr i32, i32* %r4, i32 8 -%r253 = load i32, i32* %r252 -%r254 = zext i32 %r253 to i288 -%r255 = shl i288 %r254, 256 -%r256 = or i288 %r250, %r255 -%r257 = zext i288 %r256 to i320 -%r259 = getelementptr i32, i32* %r4, i32 9 -%r260 = load i32, i32* %r259 -%r261 = zext i32 %r260 to i320 -%r262 = shl i320 %r261, 288 -%r263 = or i320 %r257, %r262 -%r264 = zext i320 %r263 to i352 -%r266 = getelementptr i32, i32* %r4, i32 10 -%r267 = load i32, i32* %r266 -%r268 = zext i32 %r267 to i352 -%r269 = shl i352 %r268, 320 -%r270 = or i352 %r264, %r269 -%r271 = zext i352 %r270 to i384 -%r273 = getelementptr i32, i32* %r4, i32 11 -%r274 = load i32, i32* %r273 -%r275 = zext i32 %r274 to i384 -%r276 = shl i384 %r275, 352 -%r277 = or i384 %r271, %r276 -%r278 = zext i384 %r277 to i416 -%r280 = getelementptr i32, i32* %r4, i32 12 -%r281 = load i32, i32* %r280 -%r282 = zext i32 %r281 to i416 -%r283 = shl i416 %r282, 384 -%r284 = or i416 %r278, %r283 -%r285 = zext i416 %r284 to i448 -%r287 = getelementptr i32, i32* %r4, i32 13 -%r288 = load i32, i32* %r287 -%r289 = zext i32 %r288 to i448 -%r290 = shl i448 %r289, 416 -%r291 = or i448 %r285, %r290 -%r292 = zext i448 %r291 to i480 -%r294 = getelementptr i32, i32* %r4, i32 14 -%r295 = load i32, i32* %r294 -%r296 = zext i32 %r295 to i480 -%r297 = shl i480 %r296, 448 -%r298 = or i480 %r292, %r297 -%r299 = zext i480 %r298 to i512 -%r301 = getelementptr i32, i32* %r4, i32 15 -%r302 = load i32, i32* %r301 -%r303 = zext i32 %r302 to i512 -%r304 = shl i512 %r303, 480 -%r305 = or i512 %r299, %r304 -%r306 = zext i512 %r305 to i544 -%r307 = sub i544 %r199, %r306 -%r308 = lshr i544 %r307, 512 -%r309 = trunc i544 %r308 to i1 -%r310 = select i1 %r309, i544 %r199, i544 %r307 -%r311 = trunc i544 %r310 to i512 -%r312 = trunc i512 %r311 to i32 -%r314 = getelementptr i32, i32* %r1, i32 0 -store i32 %r312, i32* %r314 -%r315 = lshr i512 %r311, 32 -%r316 = trunc i512 %r315 to i32 -%r318 = getelementptr i32, i32* %r1, i32 1 -store i32 %r316, i32* %r318 -%r319 = lshr i512 %r315, 32 -%r320 = trunc i512 %r319 to i32 -%r322 = getelementptr i32, i32* %r1, i32 2 -store i32 %r320, i32* %r322 -%r323 = lshr i512 %r319, 32 -%r324 = trunc i512 %r323 to i32 -%r326 = getelementptr i32, i32* %r1, i32 3 -store i32 %r324, i32* %r326 -%r327 = lshr i512 %r323, 32 -%r328 = trunc i512 %r327 to i32 -%r330 = getelementptr i32, i32* %r1, i32 4 -store i32 %r328, i32* %r330 -%r331 = lshr i512 %r327, 32 -%r332 = trunc i512 %r331 to i32 -%r334 = getelementptr i32, i32* %r1, i32 5 -store i32 %r332, i32* %r334 -%r335 = lshr i512 %r331, 32 -%r336 = trunc i512 %r335 to i32 -%r338 = getelementptr i32, i32* %r1, i32 6 -store i32 %r336, i32* %r338 -%r339 = lshr i512 %r335, 32 -%r340 = trunc i512 %r339 to i32 -%r342 = getelementptr i32, i32* %r1, i32 7 -store i32 %r340, i32* %r342 -%r343 = lshr i512 %r339, 32 -%r344 = trunc i512 %r343 to i32 -%r346 = getelementptr i32, i32* %r1, i32 8 -store i32 %r344, i32* %r346 -%r347 = lshr i512 %r343, 32 -%r348 = trunc i512 %r347 to i32 -%r350 = getelementptr i32, i32* %r1, i32 9 -store i32 %r348, i32* %r350 -%r351 = lshr i512 %r347, 32 -%r352 = trunc i512 %r351 to i32 -%r354 = getelementptr i32, i32* %r1, i32 10 -store i32 %r352, i32* %r354 -%r355 = lshr i512 %r351, 32 -%r356 = trunc i512 %r355 to i32 -%r358 = getelementptr i32, i32* %r1, i32 11 -store i32 %r356, i32* %r358 -%r359 = lshr i512 %r355, 32 -%r360 = trunc i512 %r359 to i32 -%r362 = getelementptr i32, i32* %r1, i32 12 -store i32 %r360, i32* %r362 -%r363 = lshr i512 %r359, 32 -%r364 = trunc i512 %r363 to i32 -%r366 = getelementptr i32, i32* %r1, i32 13 -store i32 %r364, i32* %r366 -%r367 = lshr i512 %r363, 32 -%r368 = trunc i512 %r367 to i32 -%r370 = getelementptr i32, i32* %r1, i32 14 -store i32 %r368, i32* %r370 -%r371 = lshr i512 %r367, 32 -%r372 = trunc i512 %r371 to i32 -%r374 = getelementptr i32, i32* %r1, i32 15 -store i32 %r372, i32* %r374 -ret void -} -define void @mcl_fp_montNF16L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) -{ -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i544 @mulPv512x32(i32* %r2, i32 %r8) -%r10 = trunc i544 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i544 @mulPv512x32(i32* %r4, i32 %r11) -%r13 = add i544 %r9, %r12 -%r14 = lshr i544 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i544 @mulPv512x32(i32* %r2, i32 %r17) -%r19 = add i544 %r14, %r18 -%r20 = trunc i544 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i544 @mulPv512x32(i32* %r4, i32 %r21) -%r23 = add i544 %r19, %r22 -%r24 = lshr i544 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i544 @mulPv512x32(i32* %r2, i32 %r27) -%r29 = add i544 %r24, %r28 -%r30 = trunc i544 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i544 @mulPv512x32(i32* %r4, i32 %r31) -%r33 = add i544 %r29, %r32 -%r34 = lshr i544 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i544 @mulPv512x32(i32* %r2, i32 %r37) -%r39 = add i544 %r34, %r38 -%r40 = trunc i544 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i544 @mulPv512x32(i32* %r4, i32 %r41) -%r43 = add i544 %r39, %r42 -%r44 = lshr i544 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i544 @mulPv512x32(i32* %r2, i32 %r47) -%r49 = add i544 %r44, %r48 -%r50 = trunc i544 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i544 @mulPv512x32(i32* %r4, i32 %r51) -%r53 = add i544 %r49, %r52 -%r54 = lshr i544 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i544 @mulPv512x32(i32* %r2, i32 %r57) -%r59 = add i544 %r54, %r58 -%r60 = trunc i544 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i544 @mulPv512x32(i32* %r4, i32 %r61) -%r63 = add i544 %r59, %r62 -%r64 = lshr i544 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 -%r67 = load i32, i32* %r66 -%r68 = call i544 @mulPv512x32(i32* %r2, i32 %r67) -%r69 = add i544 %r64, %r68 -%r70 = trunc i544 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i544 @mulPv512x32(i32* %r4, i32 %r71) -%r73 = add i544 %r69, %r72 -%r74 = lshr i544 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i544 @mulPv512x32(i32* %r2, i32 %r77) -%r79 = add i544 %r74, %r78 -%r80 = trunc i544 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i544 @mulPv512x32(i32* %r4, i32 %r81) -%r83 = add i544 %r79, %r82 -%r84 = lshr i544 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i544 @mulPv512x32(i32* %r2, i32 %r87) -%r89 = add i544 %r84, %r88 -%r90 = trunc i544 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i544 @mulPv512x32(i32* %r4, i32 %r91) -%r93 = add i544 %r89, %r92 -%r94 = lshr i544 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i544 @mulPv512x32(i32* %r2, i32 %r97) -%r99 = add i544 %r94, %r98 -%r100 = trunc i544 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i544 @mulPv512x32(i32* %r4, i32 %r101) -%r103 = add i544 %r99, %r102 -%r104 = lshr i544 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i544 @mulPv512x32(i32* %r2, i32 %r107) -%r109 = add i544 %r104, %r108 -%r110 = trunc i544 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i544 @mulPv512x32(i32* %r4, i32 %r111) -%r113 = add i544 %r109, %r112 -%r114 = lshr i544 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 -%r117 = load i32, i32* %r116 -%r118 = call i544 @mulPv512x32(i32* %r2, i32 %r117) -%r119 = add i544 %r114, %r118 -%r120 = trunc i544 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i544 @mulPv512x32(i32* %r4, i32 %r121) -%r123 = add i544 %r119, %r122 -%r124 = lshr i544 %r123, 32 -%r126 = getelementptr i32, i32* %r3, i32 12 -%r127 = load i32, i32* %r126 -%r128 = call i544 @mulPv512x32(i32* %r2, i32 %r127) -%r129 = add i544 %r124, %r128 -%r130 = trunc i544 %r129 to i32 -%r131 = mul i32 %r130, %r7 -%r132 = call i544 @mulPv512x32(i32* %r4, i32 %r131) -%r133 = add i544 %r129, %r132 -%r134 = lshr i544 %r133, 32 -%r136 = getelementptr i32, i32* %r3, i32 13 -%r137 = load i32, i32* %r136 -%r138 = call i544 @mulPv512x32(i32* %r2, i32 %r137) -%r139 = add i544 %r134, %r138 -%r140 = trunc i544 %r139 to i32 -%r141 = mul i32 %r140, %r7 -%r142 = call i544 @mulPv512x32(i32* %r4, i32 %r141) -%r143 = add i544 %r139, %r142 -%r144 = lshr i544 %r143, 32 -%r146 = getelementptr i32, i32* %r3, i32 14 -%r147 = load i32, i32* %r146 -%r148 = call i544 @mulPv512x32(i32* %r2, i32 %r147) -%r149 = add i544 %r144, %r148 -%r150 = trunc i544 %r149 to i32 -%r151 = mul i32 %r150, %r7 -%r152 = call i544 @mulPv512x32(i32* %r4, i32 %r151) -%r153 = add i544 %r149, %r152 -%r154 = lshr i544 %r153, 32 -%r156 = getelementptr i32, i32* %r3, i32 15 -%r157 = load i32, i32* %r156 -%r158 = call i544 @mulPv512x32(i32* %r2, i32 %r157) -%r159 = add i544 %r154, %r158 -%r160 = trunc i544 %r159 to i32 -%r161 = mul i32 %r160, %r7 -%r162 = call i544 @mulPv512x32(i32* %r4, i32 %r161) -%r163 = add i544 %r159, %r162 -%r164 = lshr i544 %r163, 32 -%r165 = trunc i544 %r164 to i512 -%r166 = load i32, i32* %r4 -%r167 = zext i32 %r166 to i64 -%r169 = getelementptr i32, i32* %r4, i32 1 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i64 -%r172 = shl i64 %r171, 32 -%r173 = or i64 %r167, %r172 -%r174 = zext i64 %r173 to i96 -%r176 = getelementptr i32, i32* %r4, i32 2 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i96 -%r179 = shl i96 %r178, 64 -%r180 = or i96 %r174, %r179 -%r181 = zext i96 %r180 to i128 -%r183 = getelementptr i32, i32* %r4, i32 3 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i128 -%r186 = shl i128 %r185, 96 -%r187 = or i128 %r181, %r186 -%r188 = zext i128 %r187 to i160 -%r190 = getelementptr i32, i32* %r4, i32 4 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i160 -%r193 = shl i160 %r192, 128 -%r194 = or i160 %r188, %r193 -%r195 = zext i160 %r194 to i192 -%r197 = getelementptr i32, i32* %r4, i32 5 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i192 -%r200 = shl i192 %r199, 160 -%r201 = or i192 %r195, %r200 -%r202 = zext i192 %r201 to i224 -%r204 = getelementptr i32, i32* %r4, i32 6 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i224 -%r207 = shl i224 %r206, 192 -%r208 = or i224 %r202, %r207 -%r209 = zext i224 %r208 to i256 -%r211 = getelementptr i32, i32* %r4, i32 7 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i256 -%r214 = shl i256 %r213, 224 -%r215 = or i256 %r209, %r214 -%r216 = zext i256 %r215 to i288 -%r218 = getelementptr i32, i32* %r4, i32 8 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i288 -%r221 = shl i288 %r220, 256 -%r222 = or i288 %r216, %r221 -%r223 = zext i288 %r222 to i320 -%r225 = getelementptr i32, i32* %r4, i32 9 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i320 -%r228 = shl i320 %r227, 288 -%r229 = or i320 %r223, %r228 -%r230 = zext i320 %r229 to i352 -%r232 = getelementptr i32, i32* %r4, i32 10 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i352 -%r235 = shl i352 %r234, 320 -%r236 = or i352 %r230, %r235 -%r237 = zext i352 %r236 to i384 -%r239 = getelementptr i32, i32* %r4, i32 11 -%r240 = load i32, i32* %r239 -%r241 = zext i32 %r240 to i384 -%r242 = shl i384 %r241, 352 -%r243 = or i384 %r237, %r242 -%r244 = zext i384 %r243 to i416 -%r246 = getelementptr i32, i32* %r4, i32 12 -%r247 = load i32, i32* %r246 -%r248 = zext i32 %r247 to i416 -%r249 = shl i416 %r248, 384 -%r250 = or i416 %r244, %r249 -%r251 = zext i416 %r250 to i448 -%r253 = getelementptr i32, i32* %r4, i32 13 -%r254 = load i32, i32* %r253 -%r255 = zext i32 %r254 to i448 -%r256 = shl i448 %r255, 416 -%r257 = or i448 %r251, %r256 -%r258 = zext i448 %r257 to i480 -%r260 = getelementptr i32, i32* %r4, i32 14 -%r261 = load i32, i32* %r260 -%r262 = zext i32 %r261 to i480 -%r263 = shl i480 %r262, 448 -%r264 = or i480 %r258, %r263 -%r265 = zext i480 %r264 to i512 -%r267 = getelementptr i32, i32* %r4, i32 15 -%r268 = load i32, i32* %r267 -%r269 = zext i32 %r268 to i512 -%r270 = shl i512 %r269, 480 -%r271 = or i512 %r265, %r270 -%r272 = sub i512 %r165, %r271 -%r273 = lshr i512 %r272, 511 -%r274 = trunc i512 %r273 to i1 -%r275 = select i1 %r274, i512 %r165, i512 %r272 -%r276 = trunc i512 %r275 to i32 -%r278 = getelementptr i32, i32* %r1, i32 0 -store i32 %r276, i32* %r278 -%r279 = lshr i512 %r275, 32 -%r280 = trunc i512 %r279 to i32 -%r282 = getelementptr i32, i32* %r1, i32 1 -store i32 %r280, i32* %r282 -%r283 = lshr i512 %r279, 32 -%r284 = trunc i512 %r283 to i32 -%r286 = getelementptr i32, i32* %r1, i32 2 -store i32 %r284, i32* %r286 -%r287 = lshr i512 %r283, 32 -%r288 = trunc i512 %r287 to i32 -%r290 = getelementptr i32, i32* %r1, i32 3 -store i32 %r288, i32* %r290 -%r291 = lshr i512 %r287, 32 -%r292 = trunc i512 %r291 to i32 -%r294 = getelementptr i32, i32* %r1, i32 4 -store i32 %r292, i32* %r294 -%r295 = lshr i512 %r291, 32 -%r296 = trunc i512 %r295 to i32 -%r298 = getelementptr i32, i32* %r1, i32 5 -store i32 %r296, i32* %r298 -%r299 = lshr i512 %r295, 32 -%r300 = trunc i512 %r299 to i32 -%r302 = getelementptr i32, i32* %r1, i32 6 -store i32 %r300, i32* %r302 -%r303 = lshr i512 %r299, 32 -%r304 = trunc i512 %r303 to i32 -%r306 = getelementptr i32, i32* %r1, i32 7 -store i32 %r304, i32* %r306 -%r307 = lshr i512 %r303, 32 -%r308 = trunc i512 %r307 to i32 -%r310 = getelementptr i32, i32* %r1, i32 8 -store i32 %r308, i32* %r310 -%r311 = lshr i512 %r307, 32 -%r312 = trunc i512 %r311 to i32 -%r314 = getelementptr i32, i32* %r1, i32 9 -store i32 %r312, i32* %r314 -%r315 = lshr i512 %r311, 32 -%r316 = trunc i512 %r315 to i32 -%r318 = getelementptr i32, i32* %r1, i32 10 -store i32 %r316, i32* %r318 -%r319 = lshr i512 %r315, 32 -%r320 = trunc i512 %r319 to i32 -%r322 = getelementptr i32, i32* %r1, i32 11 -store i32 %r320, i32* %r322 -%r323 = lshr i512 %r319, 32 -%r324 = trunc i512 %r323 to i32 -%r326 = getelementptr i32, i32* %r1, i32 12 -store i32 %r324, i32* %r326 -%r327 = lshr i512 %r323, 32 -%r328 = trunc i512 %r327 to i32 -%r330 = getelementptr i32, i32* %r1, i32 13 -store i32 %r328, i32* %r330 -%r331 = lshr i512 %r327, 32 -%r332 = trunc i512 %r331 to i32 -%r334 = getelementptr i32, i32* %r1, i32 14 -store i32 %r332, i32* %r334 -%r335 = lshr i512 %r331, 32 -%r336 = trunc i512 %r335 to i32 -%r338 = getelementptr i32, i32* %r1, i32 15 -store i32 %r336, i32* %r338 -ret void -} -define void @mcl_fp_montRed16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r5 = getelementptr i32, i32* %r3, i32 -1 -%r6 = load i32, i32* %r5 -%r7 = load i32, i32* %r3 -%r8 = zext i32 %r7 to i64 -%r10 = getelementptr i32, i32* %r3, i32 1 -%r11 = load i32, i32* %r10 -%r12 = zext i32 %r11 to i64 -%r13 = shl i64 %r12, 32 -%r14 = or i64 %r8, %r13 -%r15 = zext i64 %r14 to i96 -%r17 = getelementptr i32, i32* %r3, i32 2 -%r18 = load i32, i32* %r17 -%r19 = zext i32 %r18 to i96 -%r20 = shl i96 %r19, 64 -%r21 = or i96 %r15, %r20 -%r22 = zext i96 %r21 to i128 -%r24 = getelementptr i32, i32* %r3, i32 3 -%r25 = load i32, i32* %r24 -%r26 = zext i32 %r25 to i128 -%r27 = shl i128 %r26, 96 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i160 -%r31 = getelementptr i32, i32* %r3, i32 4 -%r32 = load i32, i32* %r31 -%r33 = zext i32 %r32 to i160 -%r34 = shl i160 %r33, 128 -%r35 = or i160 %r29, %r34 -%r36 = zext i160 %r35 to i192 -%r38 = getelementptr i32, i32* %r3, i32 5 -%r39 = load i32, i32* %r38 -%r40 = zext i32 %r39 to i192 -%r41 = shl i192 %r40, 160 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i224 -%r45 = getelementptr i32, i32* %r3, i32 6 -%r46 = load i32, i32* %r45 -%r47 = zext i32 %r46 to i224 -%r48 = shl i224 %r47, 192 -%r49 = or i224 %r43, %r48 -%r50 = zext i224 %r49 to i256 -%r52 = getelementptr i32, i32* %r3, i32 7 -%r53 = load i32, i32* %r52 -%r54 = zext i32 %r53 to i256 -%r55 = shl i256 %r54, 224 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i288 -%r59 = getelementptr i32, i32* %r3, i32 8 -%r60 = load i32, i32* %r59 -%r61 = zext i32 %r60 to i288 -%r62 = shl i288 %r61, 256 -%r63 = or i288 %r57, %r62 -%r64 = zext i288 %r63 to i320 -%r66 = getelementptr i32, i32* %r3, i32 9 -%r67 = load i32, i32* %r66 -%r68 = zext i32 %r67 to i320 -%r69 = shl i320 %r68, 288 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i352 -%r73 = getelementptr i32, i32* %r3, i32 10 -%r74 = load i32, i32* %r73 -%r75 = zext i32 %r74 to i352 -%r76 = shl i352 %r75, 320 -%r77 = or i352 %r71, %r76 -%r78 = zext i352 %r77 to i384 -%r80 = getelementptr i32, i32* %r3, i32 11 -%r81 = load i32, i32* %r80 -%r82 = zext i32 %r81 to i384 -%r83 = shl i384 %r82, 352 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i416 -%r87 = getelementptr i32, i32* %r3, i32 12 -%r88 = load i32, i32* %r87 -%r89 = zext i32 %r88 to i416 -%r90 = shl i416 %r89, 384 -%r91 = or i416 %r85, %r90 -%r92 = zext i416 %r91 to i448 -%r94 = getelementptr i32, i32* %r3, i32 13 -%r95 = load i32, i32* %r94 -%r96 = zext i32 %r95 to i448 -%r97 = shl i448 %r96, 416 -%r98 = or i448 %r92, %r97 -%r99 = zext i448 %r98 to i480 -%r101 = getelementptr i32, i32* %r3, i32 14 -%r102 = load i32, i32* %r101 -%r103 = zext i32 %r102 to i480 -%r104 = shl i480 %r103, 448 -%r105 = or i480 %r99, %r104 -%r106 = zext i480 %r105 to i512 -%r108 = getelementptr i32, i32* %r3, i32 15 -%r109 = load i32, i32* %r108 -%r110 = zext i32 %r109 to i512 -%r111 = shl i512 %r110, 480 -%r112 = or i512 %r106, %r111 -%r113 = load i32, i32* %r2 -%r114 = zext i32 %r113 to i64 -%r116 = getelementptr i32, i32* %r2, i32 1 -%r117 = load i32, i32* %r116 -%r118 = zext i32 %r117 to i64 -%r119 = shl i64 %r118, 32 -%r120 = or i64 %r114, %r119 -%r121 = zext i64 %r120 to i96 -%r123 = getelementptr i32, i32* %r2, i32 2 -%r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i96 -%r126 = shl i96 %r125, 64 -%r127 = or i96 %r121, %r126 -%r128 = zext i96 %r127 to i128 -%r130 = getelementptr i32, i32* %r2, i32 3 -%r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i128 -%r133 = shl i128 %r132, 96 -%r134 = or i128 %r128, %r133 -%r135 = zext i128 %r134 to i160 -%r137 = getelementptr i32, i32* %r2, i32 4 -%r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i160 -%r140 = shl i160 %r139, 128 -%r141 = or i160 %r135, %r140 -%r142 = zext i160 %r141 to i192 -%r144 = getelementptr i32, i32* %r2, i32 5 -%r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i192 -%r147 = shl i192 %r146, 160 -%r148 = or i192 %r142, %r147 -%r149 = zext i192 %r148 to i224 -%r151 = getelementptr i32, i32* %r2, i32 6 -%r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i224 -%r154 = shl i224 %r153, 192 -%r155 = or i224 %r149, %r154 -%r156 = zext i224 %r155 to i256 -%r158 = getelementptr i32, i32* %r2, i32 7 -%r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i256 -%r161 = shl i256 %r160, 224 -%r162 = or i256 %r156, %r161 -%r163 = zext i256 %r162 to i288 -%r165 = getelementptr i32, i32* %r2, i32 8 -%r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i288 -%r168 = shl i288 %r167, 256 -%r169 = or i288 %r163, %r168 -%r170 = zext i288 %r169 to i320 -%r172 = getelementptr i32, i32* %r2, i32 9 -%r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i320 -%r175 = shl i320 %r174, 288 -%r176 = or i320 %r170, %r175 -%r177 = zext i320 %r176 to i352 -%r179 = getelementptr i32, i32* %r2, i32 10 -%r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i352 -%r182 = shl i352 %r181, 320 -%r183 = or i352 %r177, %r182 -%r184 = zext i352 %r183 to i384 -%r186 = getelementptr i32, i32* %r2, i32 11 -%r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i384 -%r189 = shl i384 %r188, 352 -%r190 = or i384 %r184, %r189 -%r191 = zext i384 %r190 to i416 -%r193 = getelementptr i32, i32* %r2, i32 12 -%r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i416 -%r196 = shl i416 %r195, 384 -%r197 = or i416 %r191, %r196 -%r198 = zext i416 %r197 to i448 -%r200 = getelementptr i32, i32* %r2, i32 13 -%r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i448 -%r203 = shl i448 %r202, 416 -%r204 = or i448 %r198, %r203 -%r205 = zext i448 %r204 to i480 -%r207 = getelementptr i32, i32* %r2, i32 14 -%r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i480 -%r210 = shl i480 %r209, 448 -%r211 = or i480 %r205, %r210 -%r212 = zext i480 %r211 to i512 -%r214 = getelementptr i32, i32* %r2, i32 15 -%r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i512 -%r217 = shl i512 %r216, 480 -%r218 = or i512 %r212, %r217 -%r219 = zext i512 %r218 to i544 -%r221 = getelementptr i32, i32* %r2, i32 16 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i544 -%r224 = shl i544 %r223, 512 -%r225 = or i544 %r219, %r224 -%r226 = zext i544 %r225 to i576 -%r228 = getelementptr i32, i32* %r2, i32 17 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i576 -%r231 = shl i576 %r230, 544 -%r232 = or i576 %r226, %r231 -%r233 = zext i576 %r232 to i608 -%r235 = getelementptr i32, i32* %r2, i32 18 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i608 -%r238 = shl i608 %r237, 576 -%r239 = or i608 %r233, %r238 -%r240 = zext i608 %r239 to i640 -%r242 = getelementptr i32, i32* %r2, i32 19 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i640 -%r245 = shl i640 %r244, 608 -%r246 = or i640 %r240, %r245 -%r247 = zext i640 %r246 to i672 -%r249 = getelementptr i32, i32* %r2, i32 20 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i672 -%r252 = shl i672 %r251, 640 -%r253 = or i672 %r247, %r252 -%r254 = zext i672 %r253 to i704 -%r256 = getelementptr i32, i32* %r2, i32 21 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i704 -%r259 = shl i704 %r258, 672 -%r260 = or i704 %r254, %r259 -%r261 = zext i704 %r260 to i736 -%r263 = getelementptr i32, i32* %r2, i32 22 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i736 -%r266 = shl i736 %r265, 704 -%r267 = or i736 %r261, %r266 -%r268 = zext i736 %r267 to i768 -%r270 = getelementptr i32, i32* %r2, i32 23 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i768 -%r273 = shl i768 %r272, 736 -%r274 = or i768 %r268, %r273 -%r275 = zext i768 %r274 to i800 -%r277 = getelementptr i32, i32* %r2, i32 24 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i800 -%r280 = shl i800 %r279, 768 -%r281 = or i800 %r275, %r280 -%r282 = zext i800 %r281 to i832 -%r284 = getelementptr i32, i32* %r2, i32 25 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i832 -%r287 = shl i832 %r286, 800 -%r288 = or i832 %r282, %r287 -%r289 = zext i832 %r288 to i864 -%r291 = getelementptr i32, i32* %r2, i32 26 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i864 -%r294 = shl i864 %r293, 832 -%r295 = or i864 %r289, %r294 -%r296 = zext i864 %r295 to i896 -%r298 = getelementptr i32, i32* %r2, i32 27 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i896 -%r301 = shl i896 %r300, 864 -%r302 = or i896 %r296, %r301 -%r303 = zext i896 %r302 to i928 -%r305 = getelementptr i32, i32* %r2, i32 28 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i928 -%r308 = shl i928 %r307, 896 -%r309 = or i928 %r303, %r308 -%r310 = zext i928 %r309 to i960 -%r312 = getelementptr i32, i32* %r2, i32 29 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i960 -%r315 = shl i960 %r314, 928 -%r316 = or i960 %r310, %r315 -%r317 = zext i960 %r316 to i992 -%r319 = getelementptr i32, i32* %r2, i32 30 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i992 -%r322 = shl i992 %r321, 960 -%r323 = or i992 %r317, %r322 -%r324 = zext i992 %r323 to i1024 -%r326 = getelementptr i32, i32* %r2, i32 31 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i1024 -%r329 = shl i1024 %r328, 992 -%r330 = or i1024 %r324, %r329 -%r331 = zext i1024 %r330 to i1056 -%r332 = trunc i1056 %r331 to i32 -%r333 = mul i32 %r332, %r6 -%r334 = call i544 @mulPv512x32(i32* %r3, i32 %r333) -%r335 = zext i544 %r334 to i1056 -%r336 = add i1056 %r331, %r335 -%r337 = lshr i1056 %r336, 32 -%r338 = trunc i1056 %r337 to i1024 -%r339 = trunc i1024 %r338 to i32 -%r340 = mul i32 %r339, %r6 -%r341 = call i544 @mulPv512x32(i32* %r3, i32 %r340) -%r342 = zext i544 %r341 to i1024 -%r343 = add i1024 %r338, %r342 -%r344 = lshr i1024 %r343, 32 -%r345 = trunc i1024 %r344 to i992 -%r346 = trunc i992 %r345 to i32 -%r347 = mul i32 %r346, %r6 -%r348 = call i544 @mulPv512x32(i32* %r3, i32 %r347) -%r349 = zext i544 %r348 to i992 -%r350 = add i992 %r345, %r349 -%r351 = lshr i992 %r350, 32 -%r352 = trunc i992 %r351 to i960 -%r353 = trunc i960 %r352 to i32 -%r354 = mul i32 %r353, %r6 -%r355 = call i544 @mulPv512x32(i32* %r3, i32 %r354) -%r356 = zext i544 %r355 to i960 -%r357 = add i960 %r352, %r356 -%r358 = lshr i960 %r357, 32 -%r359 = trunc i960 %r358 to i928 -%r360 = trunc i928 %r359 to i32 -%r361 = mul i32 %r360, %r6 -%r362 = call i544 @mulPv512x32(i32* %r3, i32 %r361) -%r363 = zext i544 %r362 to i928 -%r364 = add i928 %r359, %r363 -%r365 = lshr i928 %r364, 32 -%r366 = trunc i928 %r365 to i896 -%r367 = trunc i896 %r366 to i32 -%r368 = mul i32 %r367, %r6 -%r369 = call i544 @mulPv512x32(i32* %r3, i32 %r368) -%r370 = zext i544 %r369 to i896 -%r371 = add i896 %r366, %r370 -%r372 = lshr i896 %r371, 32 -%r373 = trunc i896 %r372 to i864 -%r374 = trunc i864 %r373 to i32 -%r375 = mul i32 %r374, %r6 -%r376 = call i544 @mulPv512x32(i32* %r3, i32 %r375) -%r377 = zext i544 %r376 to i864 -%r378 = add i864 %r373, %r377 -%r379 = lshr i864 %r378, 32 -%r380 = trunc i864 %r379 to i832 -%r381 = trunc i832 %r380 to i32 -%r382 = mul i32 %r381, %r6 -%r383 = call i544 @mulPv512x32(i32* %r3, i32 %r382) -%r384 = zext i544 %r383 to i832 -%r385 = add i832 %r380, %r384 -%r386 = lshr i832 %r385, 32 -%r387 = trunc i832 %r386 to i800 -%r388 = trunc i800 %r387 to i32 -%r389 = mul i32 %r388, %r6 -%r390 = call i544 @mulPv512x32(i32* %r3, i32 %r389) -%r391 = zext i544 %r390 to i800 -%r392 = add i800 %r387, %r391 -%r393 = lshr i800 %r392, 32 -%r394 = trunc i800 %r393 to i768 -%r395 = trunc i768 %r394 to i32 -%r396 = mul i32 %r395, %r6 -%r397 = call i544 @mulPv512x32(i32* %r3, i32 %r396) -%r398 = zext i544 %r397 to i768 -%r399 = add i768 %r394, %r398 -%r400 = lshr i768 %r399, 32 -%r401 = trunc i768 %r400 to i736 -%r402 = trunc i736 %r401 to i32 -%r403 = mul i32 %r402, %r6 -%r404 = call i544 @mulPv512x32(i32* %r3, i32 %r403) -%r405 = zext i544 %r404 to i736 -%r406 = add i736 %r401, %r405 -%r407 = lshr i736 %r406, 32 -%r408 = trunc i736 %r407 to i704 -%r409 = trunc i704 %r408 to i32 -%r410 = mul i32 %r409, %r6 -%r411 = call i544 @mulPv512x32(i32* %r3, i32 %r410) -%r412 = zext i544 %r411 to i704 -%r413 = add i704 %r408, %r412 -%r414 = lshr i704 %r413, 32 -%r415 = trunc i704 %r414 to i672 -%r416 = trunc i672 %r415 to i32 -%r417 = mul i32 %r416, %r6 -%r418 = call i544 @mulPv512x32(i32* %r3, i32 %r417) -%r419 = zext i544 %r418 to i672 -%r420 = add i672 %r415, %r419 -%r421 = lshr i672 %r420, 32 -%r422 = trunc i672 %r421 to i640 -%r423 = trunc i640 %r422 to i32 -%r424 = mul i32 %r423, %r6 -%r425 = call i544 @mulPv512x32(i32* %r3, i32 %r424) -%r426 = zext i544 %r425 to i640 -%r427 = add i640 %r422, %r426 -%r428 = lshr i640 %r427, 32 -%r429 = trunc i640 %r428 to i608 -%r430 = trunc i608 %r429 to i32 -%r431 = mul i32 %r430, %r6 -%r432 = call i544 @mulPv512x32(i32* %r3, i32 %r431) -%r433 = zext i544 %r432 to i608 -%r434 = add i608 %r429, %r433 -%r435 = lshr i608 %r434, 32 -%r436 = trunc i608 %r435 to i576 -%r437 = trunc i576 %r436 to i32 -%r438 = mul i32 %r437, %r6 -%r439 = call i544 @mulPv512x32(i32* %r3, i32 %r438) -%r440 = zext i544 %r439 to i576 -%r441 = add i576 %r436, %r440 -%r442 = lshr i576 %r441, 32 -%r443 = trunc i576 %r442 to i544 -%r444 = zext i512 %r112 to i544 -%r445 = sub i544 %r443, %r444 -%r446 = lshr i544 %r445, 512 -%r447 = trunc i544 %r446 to i1 -%r448 = select i1 %r447, i544 %r443, i544 %r445 -%r449 = trunc i544 %r448 to i512 -%r450 = trunc i512 %r449 to i32 -%r452 = getelementptr i32, i32* %r1, i32 0 -store i32 %r450, i32* %r452 -%r453 = lshr i512 %r449, 32 -%r454 = trunc i512 %r453 to i32 -%r456 = getelementptr i32, i32* %r1, i32 1 -store i32 %r454, i32* %r456 -%r457 = lshr i512 %r453, 32 -%r458 = trunc i512 %r457 to i32 -%r460 = getelementptr i32, i32* %r1, i32 2 -store i32 %r458, i32* %r460 -%r461 = lshr i512 %r457, 32 -%r462 = trunc i512 %r461 to i32 -%r464 = getelementptr i32, i32* %r1, i32 3 -store i32 %r462, i32* %r464 -%r465 = lshr i512 %r461, 32 -%r466 = trunc i512 %r465 to i32 -%r468 = getelementptr i32, i32* %r1, i32 4 -store i32 %r466, i32* %r468 -%r469 = lshr i512 %r465, 32 -%r470 = trunc i512 %r469 to i32 -%r472 = getelementptr i32, i32* %r1, i32 5 -store i32 %r470, i32* %r472 -%r473 = lshr i512 %r469, 32 -%r474 = trunc i512 %r473 to i32 -%r476 = getelementptr i32, i32* %r1, i32 6 -store i32 %r474, i32* %r476 -%r477 = lshr i512 %r473, 32 -%r478 = trunc i512 %r477 to i32 -%r480 = getelementptr i32, i32* %r1, i32 7 -store i32 %r478, i32* %r480 -%r481 = lshr i512 %r477, 32 -%r482 = trunc i512 %r481 to i32 -%r484 = getelementptr i32, i32* %r1, i32 8 -store i32 %r482, i32* %r484 -%r485 = lshr i512 %r481, 32 -%r486 = trunc i512 %r485 to i32 -%r488 = getelementptr i32, i32* %r1, i32 9 -store i32 %r486, i32* %r488 -%r489 = lshr i512 %r485, 32 -%r490 = trunc i512 %r489 to i32 -%r492 = getelementptr i32, i32* %r1, i32 10 -store i32 %r490, i32* %r492 -%r493 = lshr i512 %r489, 32 -%r494 = trunc i512 %r493 to i32 -%r496 = getelementptr i32, i32* %r1, i32 11 -store i32 %r494, i32* %r496 -%r497 = lshr i512 %r493, 32 -%r498 = trunc i512 %r497 to i32 -%r500 = getelementptr i32, i32* %r1, i32 12 -store i32 %r498, i32* %r500 -%r501 = lshr i512 %r497, 32 -%r502 = trunc i512 %r501 to i32 -%r504 = getelementptr i32, i32* %r1, i32 13 -store i32 %r502, i32* %r504 -%r505 = lshr i512 %r501, 32 -%r506 = trunc i512 %r505 to i32 -%r508 = getelementptr i32, i32* %r1, i32 14 -store i32 %r506, i32* %r508 -%r509 = lshr i512 %r505, 32 -%r510 = trunc i512 %r509 to i32 -%r512 = getelementptr i32, i32* %r1, i32 15 -store i32 %r510, i32* %r512 -ret void -} -define i32 @mcl_fp_addPre16L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r3, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r3, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r112 = load i32, i32* %r4 -%r113 = zext i32 %r112 to i64 -%r115 = getelementptr i32, i32* %r4, i32 1 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i64 -%r118 = shl i64 %r117, 32 -%r119 = or i64 %r113, %r118 -%r120 = zext i64 %r119 to i96 -%r122 = getelementptr i32, i32* %r4, i32 2 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i96 -%r125 = shl i96 %r124, 64 -%r126 = or i96 %r120, %r125 -%r127 = zext i96 %r126 to i128 -%r129 = getelementptr i32, i32* %r4, i32 3 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i128 -%r132 = shl i128 %r131, 96 -%r133 = or i128 %r127, %r132 -%r134 = zext i128 %r133 to i160 -%r136 = getelementptr i32, i32* %r4, i32 4 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i160 -%r139 = shl i160 %r138, 128 -%r140 = or i160 %r134, %r139 -%r141 = zext i160 %r140 to i192 -%r143 = getelementptr i32, i32* %r4, i32 5 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i192 -%r146 = shl i192 %r145, 160 -%r147 = or i192 %r141, %r146 -%r148 = zext i192 %r147 to i224 -%r150 = getelementptr i32, i32* %r4, i32 6 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i224 -%r153 = shl i224 %r152, 192 -%r154 = or i224 %r148, %r153 -%r155 = zext i224 %r154 to i256 -%r157 = getelementptr i32, i32* %r4, i32 7 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i256 -%r160 = shl i256 %r159, 224 -%r161 = or i256 %r155, %r160 -%r162 = zext i256 %r161 to i288 -%r164 = getelementptr i32, i32* %r4, i32 8 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i288 -%r167 = shl i288 %r166, 256 -%r168 = or i288 %r162, %r167 -%r169 = zext i288 %r168 to i320 -%r171 = getelementptr i32, i32* %r4, i32 9 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i320 -%r174 = shl i320 %r173, 288 -%r175 = or i320 %r169, %r174 -%r176 = zext i320 %r175 to i352 -%r178 = getelementptr i32, i32* %r4, i32 10 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i352 -%r181 = shl i352 %r180, 320 -%r182 = or i352 %r176, %r181 -%r183 = zext i352 %r182 to i384 -%r185 = getelementptr i32, i32* %r4, i32 11 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i384 -%r188 = shl i384 %r187, 352 -%r189 = or i384 %r183, %r188 -%r190 = zext i384 %r189 to i416 -%r192 = getelementptr i32, i32* %r4, i32 12 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i416 -%r195 = shl i416 %r194, 384 -%r196 = or i416 %r190, %r195 -%r197 = zext i416 %r196 to i448 -%r199 = getelementptr i32, i32* %r4, i32 13 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i448 -%r202 = shl i448 %r201, 416 -%r203 = or i448 %r197, %r202 -%r204 = zext i448 %r203 to i480 -%r206 = getelementptr i32, i32* %r4, i32 14 -%r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i480 -%r209 = shl i480 %r208, 448 -%r210 = or i480 %r204, %r209 -%r211 = zext i480 %r210 to i512 -%r213 = getelementptr i32, i32* %r4, i32 15 -%r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i512 -%r216 = shl i512 %r215, 480 -%r217 = or i512 %r211, %r216 -%r218 = zext i512 %r217 to i544 -%r219 = add i544 %r111, %r218 -%r220 = trunc i544 %r219 to i512 -%r221 = trunc i512 %r220 to i32 -%r223 = getelementptr i32, i32* %r2, i32 0 -store i32 %r221, i32* %r223 -%r224 = lshr i512 %r220, 32 -%r225 = trunc i512 %r224 to i32 -%r227 = getelementptr i32, i32* %r2, i32 1 -store i32 %r225, i32* %r227 -%r228 = lshr i512 %r224, 32 -%r229 = trunc i512 %r228 to i32 -%r231 = getelementptr i32, i32* %r2, i32 2 -store i32 %r229, i32* %r231 -%r232 = lshr i512 %r228, 32 -%r233 = trunc i512 %r232 to i32 -%r235 = getelementptr i32, i32* %r2, i32 3 -store i32 %r233, i32* %r235 -%r236 = lshr i512 %r232, 32 -%r237 = trunc i512 %r236 to i32 -%r239 = getelementptr i32, i32* %r2, i32 4 -store i32 %r237, i32* %r239 -%r240 = lshr i512 %r236, 32 -%r241 = trunc i512 %r240 to i32 -%r243 = getelementptr i32, i32* %r2, i32 5 -store i32 %r241, i32* %r243 -%r244 = lshr i512 %r240, 32 -%r245 = trunc i512 %r244 to i32 -%r247 = getelementptr i32, i32* %r2, i32 6 -store i32 %r245, i32* %r247 -%r248 = lshr i512 %r244, 32 -%r249 = trunc i512 %r248 to i32 -%r251 = getelementptr i32, i32* %r2, i32 7 -store i32 %r249, i32* %r251 -%r252 = lshr i512 %r248, 32 -%r253 = trunc i512 %r252 to i32 -%r255 = getelementptr i32, i32* %r2, i32 8 -store i32 %r253, i32* %r255 -%r256 = lshr i512 %r252, 32 -%r257 = trunc i512 %r256 to i32 -%r259 = getelementptr i32, i32* %r2, i32 9 -store i32 %r257, i32* %r259 -%r260 = lshr i512 %r256, 32 -%r261 = trunc i512 %r260 to i32 -%r263 = getelementptr i32, i32* %r2, i32 10 -store i32 %r261, i32* %r263 -%r264 = lshr i512 %r260, 32 -%r265 = trunc i512 %r264 to i32 -%r267 = getelementptr i32, i32* %r2, i32 11 -store i32 %r265, i32* %r267 -%r268 = lshr i512 %r264, 32 -%r269 = trunc i512 %r268 to i32 -%r271 = getelementptr i32, i32* %r2, i32 12 -store i32 %r269, i32* %r271 -%r272 = lshr i512 %r268, 32 -%r273 = trunc i512 %r272 to i32 -%r275 = getelementptr i32, i32* %r2, i32 13 -store i32 %r273, i32* %r275 -%r276 = lshr i512 %r272, 32 -%r277 = trunc i512 %r276 to i32 -%r279 = getelementptr i32, i32* %r2, i32 14 -store i32 %r277, i32* %r279 -%r280 = lshr i512 %r276, 32 -%r281 = trunc i512 %r280 to i32 -%r283 = getelementptr i32, i32* %r2, i32 15 -store i32 %r281, i32* %r283 -%r284 = lshr i544 %r219, 512 -%r285 = trunc i544 %r284 to i32 -ret i32 %r285 -} -define i32 @mcl_fp_subPre16L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r3 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r3, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r3, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r3, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r3, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r3, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r3, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r3, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r3, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r3, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r3, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r3, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r3, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r3, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r3, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r3, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r112 = load i32, i32* %r4 -%r113 = zext i32 %r112 to i64 -%r115 = getelementptr i32, i32* %r4, i32 1 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i64 -%r118 = shl i64 %r117, 32 -%r119 = or i64 %r113, %r118 -%r120 = zext i64 %r119 to i96 -%r122 = getelementptr i32, i32* %r4, i32 2 -%r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i96 -%r125 = shl i96 %r124, 64 -%r126 = or i96 %r120, %r125 -%r127 = zext i96 %r126 to i128 -%r129 = getelementptr i32, i32* %r4, i32 3 -%r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i128 -%r132 = shl i128 %r131, 96 -%r133 = or i128 %r127, %r132 -%r134 = zext i128 %r133 to i160 -%r136 = getelementptr i32, i32* %r4, i32 4 -%r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i160 -%r139 = shl i160 %r138, 128 -%r140 = or i160 %r134, %r139 -%r141 = zext i160 %r140 to i192 -%r143 = getelementptr i32, i32* %r4, i32 5 -%r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i192 -%r146 = shl i192 %r145, 160 -%r147 = or i192 %r141, %r146 -%r148 = zext i192 %r147 to i224 -%r150 = getelementptr i32, i32* %r4, i32 6 -%r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i224 -%r153 = shl i224 %r152, 192 -%r154 = or i224 %r148, %r153 -%r155 = zext i224 %r154 to i256 -%r157 = getelementptr i32, i32* %r4, i32 7 -%r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i256 -%r160 = shl i256 %r159, 224 -%r161 = or i256 %r155, %r160 -%r162 = zext i256 %r161 to i288 -%r164 = getelementptr i32, i32* %r4, i32 8 -%r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i288 -%r167 = shl i288 %r166, 256 -%r168 = or i288 %r162, %r167 -%r169 = zext i288 %r168 to i320 -%r171 = getelementptr i32, i32* %r4, i32 9 -%r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i320 -%r174 = shl i320 %r173, 288 -%r175 = or i320 %r169, %r174 -%r176 = zext i320 %r175 to i352 -%r178 = getelementptr i32, i32* %r4, i32 10 -%r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i352 -%r181 = shl i352 %r180, 320 -%r182 = or i352 %r176, %r181 -%r183 = zext i352 %r182 to i384 -%r185 = getelementptr i32, i32* %r4, i32 11 -%r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i384 -%r188 = shl i384 %r187, 352 -%r189 = or i384 %r183, %r188 -%r190 = zext i384 %r189 to i416 -%r192 = getelementptr i32, i32* %r4, i32 12 -%r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i416 -%r195 = shl i416 %r194, 384 -%r196 = or i416 %r190, %r195 -%r197 = zext i416 %r196 to i448 -%r199 = getelementptr i32, i32* %r4, i32 13 -%r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i448 -%r202 = shl i448 %r201, 416 -%r203 = or i448 %r197, %r202 -%r204 = zext i448 %r203 to i480 -%r206 = getelementptr i32, i32* %r4, i32 14 -%r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i480 -%r209 = shl i480 %r208, 448 -%r210 = or i480 %r204, %r209 -%r211 = zext i480 %r210 to i512 -%r213 = getelementptr i32, i32* %r4, i32 15 -%r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i512 -%r216 = shl i512 %r215, 480 -%r217 = or i512 %r211, %r216 -%r218 = zext i512 %r217 to i544 -%r219 = sub i544 %r111, %r218 -%r220 = trunc i544 %r219 to i512 -%r221 = trunc i512 %r220 to i32 -%r223 = getelementptr i32, i32* %r2, i32 0 -store i32 %r221, i32* %r223 -%r224 = lshr i512 %r220, 32 -%r225 = trunc i512 %r224 to i32 -%r227 = getelementptr i32, i32* %r2, i32 1 -store i32 %r225, i32* %r227 -%r228 = lshr i512 %r224, 32 -%r229 = trunc i512 %r228 to i32 -%r231 = getelementptr i32, i32* %r2, i32 2 -store i32 %r229, i32* %r231 -%r232 = lshr i512 %r228, 32 -%r233 = trunc i512 %r232 to i32 -%r235 = getelementptr i32, i32* %r2, i32 3 -store i32 %r233, i32* %r235 -%r236 = lshr i512 %r232, 32 -%r237 = trunc i512 %r236 to i32 -%r239 = getelementptr i32, i32* %r2, i32 4 -store i32 %r237, i32* %r239 -%r240 = lshr i512 %r236, 32 -%r241 = trunc i512 %r240 to i32 -%r243 = getelementptr i32, i32* %r2, i32 5 -store i32 %r241, i32* %r243 -%r244 = lshr i512 %r240, 32 -%r245 = trunc i512 %r244 to i32 -%r247 = getelementptr i32, i32* %r2, i32 6 -store i32 %r245, i32* %r247 -%r248 = lshr i512 %r244, 32 -%r249 = trunc i512 %r248 to i32 -%r251 = getelementptr i32, i32* %r2, i32 7 -store i32 %r249, i32* %r251 -%r252 = lshr i512 %r248, 32 -%r253 = trunc i512 %r252 to i32 -%r255 = getelementptr i32, i32* %r2, i32 8 -store i32 %r253, i32* %r255 -%r256 = lshr i512 %r252, 32 -%r257 = trunc i512 %r256 to i32 -%r259 = getelementptr i32, i32* %r2, i32 9 -store i32 %r257, i32* %r259 -%r260 = lshr i512 %r256, 32 -%r261 = trunc i512 %r260 to i32 -%r263 = getelementptr i32, i32* %r2, i32 10 -store i32 %r261, i32* %r263 -%r264 = lshr i512 %r260, 32 -%r265 = trunc i512 %r264 to i32 -%r267 = getelementptr i32, i32* %r2, i32 11 -store i32 %r265, i32* %r267 -%r268 = lshr i512 %r264, 32 -%r269 = trunc i512 %r268 to i32 -%r271 = getelementptr i32, i32* %r2, i32 12 -store i32 %r269, i32* %r271 -%r272 = lshr i512 %r268, 32 -%r273 = trunc i512 %r272 to i32 -%r275 = getelementptr i32, i32* %r2, i32 13 -store i32 %r273, i32* %r275 -%r276 = lshr i512 %r272, 32 -%r277 = trunc i512 %r276 to i32 -%r279 = getelementptr i32, i32* %r2, i32 14 -store i32 %r277, i32* %r279 -%r280 = lshr i512 %r276, 32 -%r281 = trunc i512 %r280 to i32 -%r283 = getelementptr i32, i32* %r2, i32 15 -store i32 %r281, i32* %r283 -%r284 = lshr i544 %r219, 512 -%r285 = trunc i544 %r284 to i32 -%r287 = and i32 %r285, 1 -ret i32 %r287 -} -define void @mcl_fp_shr1_16L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = zext i32 %r3 to i64 -%r6 = getelementptr i32, i32* %r2, i32 1 -%r7 = load i32, i32* %r6 -%r8 = zext i32 %r7 to i64 -%r9 = shl i64 %r8, 32 -%r10 = or i64 %r4, %r9 -%r11 = zext i64 %r10 to i96 -%r13 = getelementptr i32, i32* %r2, i32 2 -%r14 = load i32, i32* %r13 -%r15 = zext i32 %r14 to i96 -%r16 = shl i96 %r15, 64 -%r17 = or i96 %r11, %r16 -%r18 = zext i96 %r17 to i128 -%r20 = getelementptr i32, i32* %r2, i32 3 -%r21 = load i32, i32* %r20 -%r22 = zext i32 %r21 to i128 -%r23 = shl i128 %r22, 96 -%r24 = or i128 %r18, %r23 -%r25 = zext i128 %r24 to i160 -%r27 = getelementptr i32, i32* %r2, i32 4 -%r28 = load i32, i32* %r27 -%r29 = zext i32 %r28 to i160 -%r30 = shl i160 %r29, 128 -%r31 = or i160 %r25, %r30 -%r32 = zext i160 %r31 to i192 -%r34 = getelementptr i32, i32* %r2, i32 5 -%r35 = load i32, i32* %r34 -%r36 = zext i32 %r35 to i192 -%r37 = shl i192 %r36, 160 -%r38 = or i192 %r32, %r37 -%r39 = zext i192 %r38 to i224 -%r41 = getelementptr i32, i32* %r2, i32 6 -%r42 = load i32, i32* %r41 -%r43 = zext i32 %r42 to i224 -%r44 = shl i224 %r43, 192 -%r45 = or i224 %r39, %r44 -%r46 = zext i224 %r45 to i256 -%r48 = getelementptr i32, i32* %r2, i32 7 -%r49 = load i32, i32* %r48 -%r50 = zext i32 %r49 to i256 -%r51 = shl i256 %r50, 224 -%r52 = or i256 %r46, %r51 -%r53 = zext i256 %r52 to i288 -%r55 = getelementptr i32, i32* %r2, i32 8 -%r56 = load i32, i32* %r55 -%r57 = zext i32 %r56 to i288 -%r58 = shl i288 %r57, 256 -%r59 = or i288 %r53, %r58 -%r60 = zext i288 %r59 to i320 -%r62 = getelementptr i32, i32* %r2, i32 9 -%r63 = load i32, i32* %r62 -%r64 = zext i32 %r63 to i320 -%r65 = shl i320 %r64, 288 -%r66 = or i320 %r60, %r65 -%r67 = zext i320 %r66 to i352 -%r69 = getelementptr i32, i32* %r2, i32 10 -%r70 = load i32, i32* %r69 -%r71 = zext i32 %r70 to i352 -%r72 = shl i352 %r71, 320 -%r73 = or i352 %r67, %r72 -%r74 = zext i352 %r73 to i384 -%r76 = getelementptr i32, i32* %r2, i32 11 -%r77 = load i32, i32* %r76 -%r78 = zext i32 %r77 to i384 -%r79 = shl i384 %r78, 352 -%r80 = or i384 %r74, %r79 -%r81 = zext i384 %r80 to i416 -%r83 = getelementptr i32, i32* %r2, i32 12 -%r84 = load i32, i32* %r83 -%r85 = zext i32 %r84 to i416 -%r86 = shl i416 %r85, 384 -%r87 = or i416 %r81, %r86 -%r88 = zext i416 %r87 to i448 -%r90 = getelementptr i32, i32* %r2, i32 13 -%r91 = load i32, i32* %r90 -%r92 = zext i32 %r91 to i448 -%r93 = shl i448 %r92, 416 -%r94 = or i448 %r88, %r93 -%r95 = zext i448 %r94 to i480 -%r97 = getelementptr i32, i32* %r2, i32 14 -%r98 = load i32, i32* %r97 -%r99 = zext i32 %r98 to i480 -%r100 = shl i480 %r99, 448 -%r101 = or i480 %r95, %r100 -%r102 = zext i480 %r101 to i512 -%r104 = getelementptr i32, i32* %r2, i32 15 -%r105 = load i32, i32* %r104 -%r106 = zext i32 %r105 to i512 -%r107 = shl i512 %r106, 480 -%r108 = or i512 %r102, %r107 -%r109 = lshr i512 %r108, 1 -%r110 = trunc i512 %r109 to i32 -%r112 = getelementptr i32, i32* %r1, i32 0 -store i32 %r110, i32* %r112 -%r113 = lshr i512 %r109, 32 -%r114 = trunc i512 %r113 to i32 -%r116 = getelementptr i32, i32* %r1, i32 1 -store i32 %r114, i32* %r116 -%r117 = lshr i512 %r113, 32 -%r118 = trunc i512 %r117 to i32 -%r120 = getelementptr i32, i32* %r1, i32 2 -store i32 %r118, i32* %r120 -%r121 = lshr i512 %r117, 32 -%r122 = trunc i512 %r121 to i32 -%r124 = getelementptr i32, i32* %r1, i32 3 -store i32 %r122, i32* %r124 -%r125 = lshr i512 %r121, 32 -%r126 = trunc i512 %r125 to i32 -%r128 = getelementptr i32, i32* %r1, i32 4 -store i32 %r126, i32* %r128 -%r129 = lshr i512 %r125, 32 -%r130 = trunc i512 %r129 to i32 -%r132 = getelementptr i32, i32* %r1, i32 5 -store i32 %r130, i32* %r132 -%r133 = lshr i512 %r129, 32 -%r134 = trunc i512 %r133 to i32 -%r136 = getelementptr i32, i32* %r1, i32 6 -store i32 %r134, i32* %r136 -%r137 = lshr i512 %r133, 32 -%r138 = trunc i512 %r137 to i32 -%r140 = getelementptr i32, i32* %r1, i32 7 -store i32 %r138, i32* %r140 -%r141 = lshr i512 %r137, 32 -%r142 = trunc i512 %r141 to i32 -%r144 = getelementptr i32, i32* %r1, i32 8 -store i32 %r142, i32* %r144 -%r145 = lshr i512 %r141, 32 -%r146 = trunc i512 %r145 to i32 -%r148 = getelementptr i32, i32* %r1, i32 9 -store i32 %r146, i32* %r148 -%r149 = lshr i512 %r145, 32 -%r150 = trunc i512 %r149 to i32 -%r152 = getelementptr i32, i32* %r1, i32 10 -store i32 %r150, i32* %r152 -%r153 = lshr i512 %r149, 32 -%r154 = trunc i512 %r153 to i32 -%r156 = getelementptr i32, i32* %r1, i32 11 -store i32 %r154, i32* %r156 -%r157 = lshr i512 %r153, 32 -%r158 = trunc i512 %r157 to i32 -%r160 = getelementptr i32, i32* %r1, i32 12 -store i32 %r158, i32* %r160 -%r161 = lshr i512 %r157, 32 -%r162 = trunc i512 %r161 to i32 -%r164 = getelementptr i32, i32* %r1, i32 13 -store i32 %r162, i32* %r164 -%r165 = lshr i512 %r161, 32 -%r166 = trunc i512 %r165 to i32 -%r168 = getelementptr i32, i32* %r1, i32 14 -store i32 %r166, i32* %r168 -%r169 = lshr i512 %r165, 32 -%r170 = trunc i512 %r169 to i32 -%r172 = getelementptr i32, i32* %r1, i32 15 -store i32 %r170, i32* %r172 -ret void -} -define void @mcl_fp_add16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = zext i512 %r110 to i544 -%r218 = zext i512 %r216 to i544 -%r219 = add i544 %r217, %r218 -%r220 = trunc i544 %r219 to i512 -%r221 = trunc i512 %r220 to i32 -%r223 = getelementptr i32, i32* %r1, i32 0 -store i32 %r221, i32* %r223 -%r224 = lshr i512 %r220, 32 -%r225 = trunc i512 %r224 to i32 -%r227 = getelementptr i32, i32* %r1, i32 1 -store i32 %r225, i32* %r227 -%r228 = lshr i512 %r224, 32 -%r229 = trunc i512 %r228 to i32 -%r231 = getelementptr i32, i32* %r1, i32 2 -store i32 %r229, i32* %r231 -%r232 = lshr i512 %r228, 32 -%r233 = trunc i512 %r232 to i32 -%r235 = getelementptr i32, i32* %r1, i32 3 -store i32 %r233, i32* %r235 -%r236 = lshr i512 %r232, 32 -%r237 = trunc i512 %r236 to i32 -%r239 = getelementptr i32, i32* %r1, i32 4 -store i32 %r237, i32* %r239 -%r240 = lshr i512 %r236, 32 -%r241 = trunc i512 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 5 -store i32 %r241, i32* %r243 -%r244 = lshr i512 %r240, 32 -%r245 = trunc i512 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 6 -store i32 %r245, i32* %r247 -%r248 = lshr i512 %r244, 32 -%r249 = trunc i512 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 7 -store i32 %r249, i32* %r251 -%r252 = lshr i512 %r248, 32 -%r253 = trunc i512 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 8 -store i32 %r253, i32* %r255 -%r256 = lshr i512 %r252, 32 -%r257 = trunc i512 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 9 -store i32 %r257, i32* %r259 -%r260 = lshr i512 %r256, 32 -%r261 = trunc i512 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 10 -store i32 %r261, i32* %r263 -%r264 = lshr i512 %r260, 32 -%r265 = trunc i512 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 11 -store i32 %r265, i32* %r267 -%r268 = lshr i512 %r264, 32 -%r269 = trunc i512 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 12 -store i32 %r269, i32* %r271 -%r272 = lshr i512 %r268, 32 -%r273 = trunc i512 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 13 -store i32 %r273, i32* %r275 -%r276 = lshr i512 %r272, 32 -%r277 = trunc i512 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 14 -store i32 %r277, i32* %r279 -%r280 = lshr i512 %r276, 32 -%r281 = trunc i512 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 15 -store i32 %r281, i32* %r283 -%r284 = load i32, i32* %r4 -%r285 = zext i32 %r284 to i64 -%r287 = getelementptr i32, i32* %r4, i32 1 -%r288 = load i32, i32* %r287 -%r289 = zext i32 %r288 to i64 -%r290 = shl i64 %r289, 32 -%r291 = or i64 %r285, %r290 -%r292 = zext i64 %r291 to i96 -%r294 = getelementptr i32, i32* %r4, i32 2 -%r295 = load i32, i32* %r294 -%r296 = zext i32 %r295 to i96 -%r297 = shl i96 %r296, 64 -%r298 = or i96 %r292, %r297 -%r299 = zext i96 %r298 to i128 -%r301 = getelementptr i32, i32* %r4, i32 3 -%r302 = load i32, i32* %r301 -%r303 = zext i32 %r302 to i128 -%r304 = shl i128 %r303, 96 -%r305 = or i128 %r299, %r304 -%r306 = zext i128 %r305 to i160 -%r308 = getelementptr i32, i32* %r4, i32 4 -%r309 = load i32, i32* %r308 -%r310 = zext i32 %r309 to i160 -%r311 = shl i160 %r310, 128 -%r312 = or i160 %r306, %r311 -%r313 = zext i160 %r312 to i192 -%r315 = getelementptr i32, i32* %r4, i32 5 -%r316 = load i32, i32* %r315 -%r317 = zext i32 %r316 to i192 -%r318 = shl i192 %r317, 160 -%r319 = or i192 %r313, %r318 -%r320 = zext i192 %r319 to i224 -%r322 = getelementptr i32, i32* %r4, i32 6 -%r323 = load i32, i32* %r322 -%r324 = zext i32 %r323 to i224 -%r325 = shl i224 %r324, 192 -%r326 = or i224 %r320, %r325 -%r327 = zext i224 %r326 to i256 -%r329 = getelementptr i32, i32* %r4, i32 7 -%r330 = load i32, i32* %r329 -%r331 = zext i32 %r330 to i256 -%r332 = shl i256 %r331, 224 -%r333 = or i256 %r327, %r332 -%r334 = zext i256 %r333 to i288 -%r336 = getelementptr i32, i32* %r4, i32 8 -%r337 = load i32, i32* %r336 -%r338 = zext i32 %r337 to i288 -%r339 = shl i288 %r338, 256 -%r340 = or i288 %r334, %r339 -%r341 = zext i288 %r340 to i320 -%r343 = getelementptr i32, i32* %r4, i32 9 -%r344 = load i32, i32* %r343 -%r345 = zext i32 %r344 to i320 -%r346 = shl i320 %r345, 288 -%r347 = or i320 %r341, %r346 -%r348 = zext i320 %r347 to i352 -%r350 = getelementptr i32, i32* %r4, i32 10 -%r351 = load i32, i32* %r350 -%r352 = zext i32 %r351 to i352 -%r353 = shl i352 %r352, 320 -%r354 = or i352 %r348, %r353 -%r355 = zext i352 %r354 to i384 -%r357 = getelementptr i32, i32* %r4, i32 11 -%r358 = load i32, i32* %r357 -%r359 = zext i32 %r358 to i384 -%r360 = shl i384 %r359, 352 -%r361 = or i384 %r355, %r360 -%r362 = zext i384 %r361 to i416 -%r364 = getelementptr i32, i32* %r4, i32 12 -%r365 = load i32, i32* %r364 -%r366 = zext i32 %r365 to i416 -%r367 = shl i416 %r366, 384 -%r368 = or i416 %r362, %r367 -%r369 = zext i416 %r368 to i448 -%r371 = getelementptr i32, i32* %r4, i32 13 -%r372 = load i32, i32* %r371 -%r373 = zext i32 %r372 to i448 -%r374 = shl i448 %r373, 416 -%r375 = or i448 %r369, %r374 -%r376 = zext i448 %r375 to i480 -%r378 = getelementptr i32, i32* %r4, i32 14 -%r379 = load i32, i32* %r378 -%r380 = zext i32 %r379 to i480 -%r381 = shl i480 %r380, 448 -%r382 = or i480 %r376, %r381 -%r383 = zext i480 %r382 to i512 -%r385 = getelementptr i32, i32* %r4, i32 15 -%r386 = load i32, i32* %r385 -%r387 = zext i32 %r386 to i512 -%r388 = shl i512 %r387, 480 -%r389 = or i512 %r383, %r388 -%r390 = zext i512 %r389 to i544 -%r391 = sub i544 %r219, %r390 -%r392 = lshr i544 %r391, 512 -%r393 = trunc i544 %r392 to i1 -br i1%r393, label %carry, label %nocarry -nocarry: -%r394 = trunc i544 %r391 to i512 -%r395 = trunc i512 %r394 to i32 -%r397 = getelementptr i32, i32* %r1, i32 0 -store i32 %r395, i32* %r397 -%r398 = lshr i512 %r394, 32 -%r399 = trunc i512 %r398 to i32 -%r401 = getelementptr i32, i32* %r1, i32 1 -store i32 %r399, i32* %r401 -%r402 = lshr i512 %r398, 32 -%r403 = trunc i512 %r402 to i32 -%r405 = getelementptr i32, i32* %r1, i32 2 -store i32 %r403, i32* %r405 -%r406 = lshr i512 %r402, 32 -%r407 = trunc i512 %r406 to i32 -%r409 = getelementptr i32, i32* %r1, i32 3 -store i32 %r407, i32* %r409 -%r410 = lshr i512 %r406, 32 -%r411 = trunc i512 %r410 to i32 -%r413 = getelementptr i32, i32* %r1, i32 4 -store i32 %r411, i32* %r413 -%r414 = lshr i512 %r410, 32 -%r415 = trunc i512 %r414 to i32 -%r417 = getelementptr i32, i32* %r1, i32 5 -store i32 %r415, i32* %r417 -%r418 = lshr i512 %r414, 32 -%r419 = trunc i512 %r418 to i32 -%r421 = getelementptr i32, i32* %r1, i32 6 -store i32 %r419, i32* %r421 -%r422 = lshr i512 %r418, 32 -%r423 = trunc i512 %r422 to i32 -%r425 = getelementptr i32, i32* %r1, i32 7 -store i32 %r423, i32* %r425 -%r426 = lshr i512 %r422, 32 -%r427 = trunc i512 %r426 to i32 -%r429 = getelementptr i32, i32* %r1, i32 8 -store i32 %r427, i32* %r429 -%r430 = lshr i512 %r426, 32 -%r431 = trunc i512 %r430 to i32 -%r433 = getelementptr i32, i32* %r1, i32 9 -store i32 %r431, i32* %r433 -%r434 = lshr i512 %r430, 32 -%r435 = trunc i512 %r434 to i32 -%r437 = getelementptr i32, i32* %r1, i32 10 -store i32 %r435, i32* %r437 -%r438 = lshr i512 %r434, 32 -%r439 = trunc i512 %r438 to i32 -%r441 = getelementptr i32, i32* %r1, i32 11 -store i32 %r439, i32* %r441 -%r442 = lshr i512 %r438, 32 -%r443 = trunc i512 %r442 to i32 -%r445 = getelementptr i32, i32* %r1, i32 12 -store i32 %r443, i32* %r445 -%r446 = lshr i512 %r442, 32 -%r447 = trunc i512 %r446 to i32 -%r449 = getelementptr i32, i32* %r1, i32 13 -store i32 %r447, i32* %r449 -%r450 = lshr i512 %r446, 32 -%r451 = trunc i512 %r450 to i32 -%r453 = getelementptr i32, i32* %r1, i32 14 -store i32 %r451, i32* %r453 -%r454 = lshr i512 %r450, 32 -%r455 = trunc i512 %r454 to i32 -%r457 = getelementptr i32, i32* %r1, i32 15 -store i32 %r455, i32* %r457 -ret void -carry: -ret void -} -define void @mcl_fp_addNF16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = add i512 %r110, %r216 -%r218 = load i32, i32* %r4 -%r219 = zext i32 %r218 to i64 -%r221 = getelementptr i32, i32* %r4, i32 1 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i64 -%r224 = shl i64 %r223, 32 -%r225 = or i64 %r219, %r224 -%r226 = zext i64 %r225 to i96 -%r228 = getelementptr i32, i32* %r4, i32 2 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i96 -%r231 = shl i96 %r230, 64 -%r232 = or i96 %r226, %r231 -%r233 = zext i96 %r232 to i128 -%r235 = getelementptr i32, i32* %r4, i32 3 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i128 -%r238 = shl i128 %r237, 96 -%r239 = or i128 %r233, %r238 -%r240 = zext i128 %r239 to i160 -%r242 = getelementptr i32, i32* %r4, i32 4 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i160 -%r245 = shl i160 %r244, 128 -%r246 = or i160 %r240, %r245 -%r247 = zext i160 %r246 to i192 -%r249 = getelementptr i32, i32* %r4, i32 5 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i192 -%r252 = shl i192 %r251, 160 -%r253 = or i192 %r247, %r252 -%r254 = zext i192 %r253 to i224 -%r256 = getelementptr i32, i32* %r4, i32 6 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i224 -%r259 = shl i224 %r258, 192 -%r260 = or i224 %r254, %r259 -%r261 = zext i224 %r260 to i256 -%r263 = getelementptr i32, i32* %r4, i32 7 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i256 -%r266 = shl i256 %r265, 224 -%r267 = or i256 %r261, %r266 -%r268 = zext i256 %r267 to i288 -%r270 = getelementptr i32, i32* %r4, i32 8 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i288 -%r273 = shl i288 %r272, 256 -%r274 = or i288 %r268, %r273 -%r275 = zext i288 %r274 to i320 -%r277 = getelementptr i32, i32* %r4, i32 9 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i320 -%r280 = shl i320 %r279, 288 -%r281 = or i320 %r275, %r280 -%r282 = zext i320 %r281 to i352 -%r284 = getelementptr i32, i32* %r4, i32 10 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i352 -%r287 = shl i352 %r286, 320 -%r288 = or i352 %r282, %r287 -%r289 = zext i352 %r288 to i384 -%r291 = getelementptr i32, i32* %r4, i32 11 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i384 -%r294 = shl i384 %r293, 352 -%r295 = or i384 %r289, %r294 -%r296 = zext i384 %r295 to i416 -%r298 = getelementptr i32, i32* %r4, i32 12 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i416 -%r301 = shl i416 %r300, 384 -%r302 = or i416 %r296, %r301 -%r303 = zext i416 %r302 to i448 -%r305 = getelementptr i32, i32* %r4, i32 13 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i448 -%r308 = shl i448 %r307, 416 -%r309 = or i448 %r303, %r308 -%r310 = zext i448 %r309 to i480 -%r312 = getelementptr i32, i32* %r4, i32 14 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i480 -%r315 = shl i480 %r314, 448 -%r316 = or i480 %r310, %r315 -%r317 = zext i480 %r316 to i512 -%r319 = getelementptr i32, i32* %r4, i32 15 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i512 -%r322 = shl i512 %r321, 480 -%r323 = or i512 %r317, %r322 -%r324 = sub i512 %r217, %r323 -%r325 = lshr i512 %r324, 511 -%r326 = trunc i512 %r325 to i1 -%r327 = select i1 %r326, i512 %r217, i512 %r324 -%r328 = trunc i512 %r327 to i32 -%r330 = getelementptr i32, i32* %r1, i32 0 -store i32 %r328, i32* %r330 -%r331 = lshr i512 %r327, 32 -%r332 = trunc i512 %r331 to i32 -%r334 = getelementptr i32, i32* %r1, i32 1 -store i32 %r332, i32* %r334 -%r335 = lshr i512 %r331, 32 -%r336 = trunc i512 %r335 to i32 -%r338 = getelementptr i32, i32* %r1, i32 2 -store i32 %r336, i32* %r338 -%r339 = lshr i512 %r335, 32 -%r340 = trunc i512 %r339 to i32 -%r342 = getelementptr i32, i32* %r1, i32 3 -store i32 %r340, i32* %r342 -%r343 = lshr i512 %r339, 32 -%r344 = trunc i512 %r343 to i32 -%r346 = getelementptr i32, i32* %r1, i32 4 -store i32 %r344, i32* %r346 -%r347 = lshr i512 %r343, 32 -%r348 = trunc i512 %r347 to i32 -%r350 = getelementptr i32, i32* %r1, i32 5 -store i32 %r348, i32* %r350 -%r351 = lshr i512 %r347, 32 -%r352 = trunc i512 %r351 to i32 -%r354 = getelementptr i32, i32* %r1, i32 6 -store i32 %r352, i32* %r354 -%r355 = lshr i512 %r351, 32 -%r356 = trunc i512 %r355 to i32 -%r358 = getelementptr i32, i32* %r1, i32 7 -store i32 %r356, i32* %r358 -%r359 = lshr i512 %r355, 32 -%r360 = trunc i512 %r359 to i32 -%r362 = getelementptr i32, i32* %r1, i32 8 -store i32 %r360, i32* %r362 -%r363 = lshr i512 %r359, 32 -%r364 = trunc i512 %r363 to i32 -%r366 = getelementptr i32, i32* %r1, i32 9 -store i32 %r364, i32* %r366 -%r367 = lshr i512 %r363, 32 -%r368 = trunc i512 %r367 to i32 -%r370 = getelementptr i32, i32* %r1, i32 10 -store i32 %r368, i32* %r370 -%r371 = lshr i512 %r367, 32 -%r372 = trunc i512 %r371 to i32 -%r374 = getelementptr i32, i32* %r1, i32 11 -store i32 %r372, i32* %r374 -%r375 = lshr i512 %r371, 32 -%r376 = trunc i512 %r375 to i32 -%r378 = getelementptr i32, i32* %r1, i32 12 -store i32 %r376, i32* %r378 -%r379 = lshr i512 %r375, 32 -%r380 = trunc i512 %r379 to i32 -%r382 = getelementptr i32, i32* %r1, i32 13 -store i32 %r380, i32* %r382 -%r383 = lshr i512 %r379, 32 -%r384 = trunc i512 %r383 to i32 -%r386 = getelementptr i32, i32* %r1, i32 14 -store i32 %r384, i32* %r386 -%r387 = lshr i512 %r383, 32 -%r388 = trunc i512 %r387 to i32 -%r390 = getelementptr i32, i32* %r1, i32 15 -store i32 %r388, i32* %r390 -ret void -} -define void @mcl_fp_sub16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = zext i512 %r110 to i544 -%r218 = zext i512 %r216 to i544 -%r219 = sub i544 %r217, %r218 -%r220 = trunc i544 %r219 to i512 -%r221 = lshr i544 %r219, 512 -%r222 = trunc i544 %r221 to i1 -%r223 = trunc i512 %r220 to i32 -%r225 = getelementptr i32, i32* %r1, i32 0 -store i32 %r223, i32* %r225 -%r226 = lshr i512 %r220, 32 -%r227 = trunc i512 %r226 to i32 -%r229 = getelementptr i32, i32* %r1, i32 1 -store i32 %r227, i32* %r229 -%r230 = lshr i512 %r226, 32 -%r231 = trunc i512 %r230 to i32 -%r233 = getelementptr i32, i32* %r1, i32 2 -store i32 %r231, i32* %r233 -%r234 = lshr i512 %r230, 32 -%r235 = trunc i512 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 3 -store i32 %r235, i32* %r237 -%r238 = lshr i512 %r234, 32 -%r239 = trunc i512 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 4 -store i32 %r239, i32* %r241 -%r242 = lshr i512 %r238, 32 -%r243 = trunc i512 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 5 -store i32 %r243, i32* %r245 -%r246 = lshr i512 %r242, 32 -%r247 = trunc i512 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 6 -store i32 %r247, i32* %r249 -%r250 = lshr i512 %r246, 32 -%r251 = trunc i512 %r250 to i32 -%r253 = getelementptr i32, i32* %r1, i32 7 -store i32 %r251, i32* %r253 -%r254 = lshr i512 %r250, 32 -%r255 = trunc i512 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 8 -store i32 %r255, i32* %r257 -%r258 = lshr i512 %r254, 32 -%r259 = trunc i512 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 9 -store i32 %r259, i32* %r261 -%r262 = lshr i512 %r258, 32 -%r263 = trunc i512 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 10 -store i32 %r263, i32* %r265 -%r266 = lshr i512 %r262, 32 -%r267 = trunc i512 %r266 to i32 -%r269 = getelementptr i32, i32* %r1, i32 11 -store i32 %r267, i32* %r269 -%r270 = lshr i512 %r266, 32 -%r271 = trunc i512 %r270 to i32 -%r273 = getelementptr i32, i32* %r1, i32 12 -store i32 %r271, i32* %r273 -%r274 = lshr i512 %r270, 32 -%r275 = trunc i512 %r274 to i32 -%r277 = getelementptr i32, i32* %r1, i32 13 -store i32 %r275, i32* %r277 -%r278 = lshr i512 %r274, 32 -%r279 = trunc i512 %r278 to i32 -%r281 = getelementptr i32, i32* %r1, i32 14 -store i32 %r279, i32* %r281 -%r282 = lshr i512 %r278, 32 -%r283 = trunc i512 %r282 to i32 -%r285 = getelementptr i32, i32* %r1, i32 15 -store i32 %r283, i32* %r285 -br i1%r222, label %carry, label %nocarry -nocarry: -ret void -carry: -%r286 = load i32, i32* %r4 -%r287 = zext i32 %r286 to i64 -%r289 = getelementptr i32, i32* %r4, i32 1 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i64 -%r292 = shl i64 %r291, 32 -%r293 = or i64 %r287, %r292 -%r294 = zext i64 %r293 to i96 -%r296 = getelementptr i32, i32* %r4, i32 2 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i96 -%r299 = shl i96 %r298, 64 -%r300 = or i96 %r294, %r299 -%r301 = zext i96 %r300 to i128 -%r303 = getelementptr i32, i32* %r4, i32 3 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i128 -%r306 = shl i128 %r305, 96 -%r307 = or i128 %r301, %r306 -%r308 = zext i128 %r307 to i160 -%r310 = getelementptr i32, i32* %r4, i32 4 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i160 -%r313 = shl i160 %r312, 128 -%r314 = or i160 %r308, %r313 -%r315 = zext i160 %r314 to i192 -%r317 = getelementptr i32, i32* %r4, i32 5 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i192 -%r320 = shl i192 %r319, 160 -%r321 = or i192 %r315, %r320 -%r322 = zext i192 %r321 to i224 -%r324 = getelementptr i32, i32* %r4, i32 6 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i224 -%r327 = shl i224 %r326, 192 -%r328 = or i224 %r322, %r327 -%r329 = zext i224 %r328 to i256 -%r331 = getelementptr i32, i32* %r4, i32 7 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i256 -%r334 = shl i256 %r333, 224 -%r335 = or i256 %r329, %r334 -%r336 = zext i256 %r335 to i288 -%r338 = getelementptr i32, i32* %r4, i32 8 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i288 -%r341 = shl i288 %r340, 256 -%r342 = or i288 %r336, %r341 -%r343 = zext i288 %r342 to i320 -%r345 = getelementptr i32, i32* %r4, i32 9 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i320 -%r348 = shl i320 %r347, 288 -%r349 = or i320 %r343, %r348 -%r350 = zext i320 %r349 to i352 -%r352 = getelementptr i32, i32* %r4, i32 10 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i352 -%r355 = shl i352 %r354, 320 -%r356 = or i352 %r350, %r355 -%r357 = zext i352 %r356 to i384 -%r359 = getelementptr i32, i32* %r4, i32 11 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i384 -%r362 = shl i384 %r361, 352 -%r363 = or i384 %r357, %r362 -%r364 = zext i384 %r363 to i416 -%r366 = getelementptr i32, i32* %r4, i32 12 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i416 -%r369 = shl i416 %r368, 384 -%r370 = or i416 %r364, %r369 -%r371 = zext i416 %r370 to i448 -%r373 = getelementptr i32, i32* %r4, i32 13 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i448 -%r376 = shl i448 %r375, 416 -%r377 = or i448 %r371, %r376 -%r378 = zext i448 %r377 to i480 -%r380 = getelementptr i32, i32* %r4, i32 14 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i480 -%r383 = shl i480 %r382, 448 -%r384 = or i480 %r378, %r383 -%r385 = zext i480 %r384 to i512 -%r387 = getelementptr i32, i32* %r4, i32 15 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i512 -%r390 = shl i512 %r389, 480 -%r391 = or i512 %r385, %r390 -%r392 = add i512 %r220, %r391 -%r393 = trunc i512 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 0 -store i32 %r393, i32* %r395 -%r396 = lshr i512 %r392, 32 -%r397 = trunc i512 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 1 -store i32 %r397, i32* %r399 -%r400 = lshr i512 %r396, 32 -%r401 = trunc i512 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 2 -store i32 %r401, i32* %r403 -%r404 = lshr i512 %r400, 32 -%r405 = trunc i512 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 3 -store i32 %r405, i32* %r407 -%r408 = lshr i512 %r404, 32 -%r409 = trunc i512 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 4 -store i32 %r409, i32* %r411 -%r412 = lshr i512 %r408, 32 -%r413 = trunc i512 %r412 to i32 -%r415 = getelementptr i32, i32* %r1, i32 5 -store i32 %r413, i32* %r415 -%r416 = lshr i512 %r412, 32 -%r417 = trunc i512 %r416 to i32 -%r419 = getelementptr i32, i32* %r1, i32 6 -store i32 %r417, i32* %r419 -%r420 = lshr i512 %r416, 32 -%r421 = trunc i512 %r420 to i32 -%r423 = getelementptr i32, i32* %r1, i32 7 -store i32 %r421, i32* %r423 -%r424 = lshr i512 %r420, 32 -%r425 = trunc i512 %r424 to i32 -%r427 = getelementptr i32, i32* %r1, i32 8 -store i32 %r425, i32* %r427 -%r428 = lshr i512 %r424, 32 -%r429 = trunc i512 %r428 to i32 -%r431 = getelementptr i32, i32* %r1, i32 9 -store i32 %r429, i32* %r431 -%r432 = lshr i512 %r428, 32 -%r433 = trunc i512 %r432 to i32 -%r435 = getelementptr i32, i32* %r1, i32 10 -store i32 %r433, i32* %r435 -%r436 = lshr i512 %r432, 32 -%r437 = trunc i512 %r436 to i32 -%r439 = getelementptr i32, i32* %r1, i32 11 -store i32 %r437, i32* %r439 -%r440 = lshr i512 %r436, 32 -%r441 = trunc i512 %r440 to i32 -%r443 = getelementptr i32, i32* %r1, i32 12 -store i32 %r441, i32* %r443 -%r444 = lshr i512 %r440, 32 -%r445 = trunc i512 %r444 to i32 -%r447 = getelementptr i32, i32* %r1, i32 13 -store i32 %r445, i32* %r447 -%r448 = lshr i512 %r444, 32 -%r449 = trunc i512 %r448 to i32 -%r451 = getelementptr i32, i32* %r1, i32 14 -store i32 %r449, i32* %r451 -%r452 = lshr i512 %r448, 32 -%r453 = trunc i512 %r452 to i32 -%r455 = getelementptr i32, i32* %r1, i32 15 -store i32 %r453, i32* %r455 -ret void -} -define void @mcl_fp_subNF16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = load i32, i32* %r3 -%r112 = zext i32 %r111 to i64 -%r114 = getelementptr i32, i32* %r3, i32 1 -%r115 = load i32, i32* %r114 -%r116 = zext i32 %r115 to i64 -%r117 = shl i64 %r116, 32 -%r118 = or i64 %r112, %r117 -%r119 = zext i64 %r118 to i96 -%r121 = getelementptr i32, i32* %r3, i32 2 -%r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i96 -%r124 = shl i96 %r123, 64 -%r125 = or i96 %r119, %r124 -%r126 = zext i96 %r125 to i128 -%r128 = getelementptr i32, i32* %r3, i32 3 -%r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i128 -%r131 = shl i128 %r130, 96 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i160 -%r135 = getelementptr i32, i32* %r3, i32 4 -%r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i160 -%r138 = shl i160 %r137, 128 -%r139 = or i160 %r133, %r138 -%r140 = zext i160 %r139 to i192 -%r142 = getelementptr i32, i32* %r3, i32 5 -%r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i192 -%r145 = shl i192 %r144, 160 -%r146 = or i192 %r140, %r145 -%r147 = zext i192 %r146 to i224 -%r149 = getelementptr i32, i32* %r3, i32 6 -%r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i224 -%r152 = shl i224 %r151, 192 -%r153 = or i224 %r147, %r152 -%r154 = zext i224 %r153 to i256 -%r156 = getelementptr i32, i32* %r3, i32 7 -%r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i256 -%r159 = shl i256 %r158, 224 -%r160 = or i256 %r154, %r159 -%r161 = zext i256 %r160 to i288 -%r163 = getelementptr i32, i32* %r3, i32 8 -%r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r161, %r166 -%r168 = zext i288 %r167 to i320 -%r170 = getelementptr i32, i32* %r3, i32 9 -%r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i320 -%r173 = shl i320 %r172, 288 -%r174 = or i320 %r168, %r173 -%r175 = zext i320 %r174 to i352 -%r177 = getelementptr i32, i32* %r3, i32 10 -%r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i352 -%r180 = shl i352 %r179, 320 -%r181 = or i352 %r175, %r180 -%r182 = zext i352 %r181 to i384 -%r184 = getelementptr i32, i32* %r3, i32 11 -%r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i384 -%r187 = shl i384 %r186, 352 -%r188 = or i384 %r182, %r187 -%r189 = zext i384 %r188 to i416 -%r191 = getelementptr i32, i32* %r3, i32 12 -%r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i416 -%r194 = shl i416 %r193, 384 -%r195 = or i416 %r189, %r194 -%r196 = zext i416 %r195 to i448 -%r198 = getelementptr i32, i32* %r3, i32 13 -%r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i448 -%r201 = shl i448 %r200, 416 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i480 -%r205 = getelementptr i32, i32* %r3, i32 14 -%r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i480 -%r208 = shl i480 %r207, 448 -%r209 = or i480 %r203, %r208 -%r210 = zext i480 %r209 to i512 -%r212 = getelementptr i32, i32* %r3, i32 15 -%r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i512 -%r215 = shl i512 %r214, 480 -%r216 = or i512 %r210, %r215 -%r217 = sub i512 %r110, %r216 -%r218 = lshr i512 %r217, 511 -%r219 = trunc i512 %r218 to i1 -%r220 = load i32, i32* %r4 -%r221 = zext i32 %r220 to i64 -%r223 = getelementptr i32, i32* %r4, i32 1 -%r224 = load i32, i32* %r223 -%r225 = zext i32 %r224 to i64 -%r226 = shl i64 %r225, 32 -%r227 = or i64 %r221, %r226 -%r228 = zext i64 %r227 to i96 -%r230 = getelementptr i32, i32* %r4, i32 2 -%r231 = load i32, i32* %r230 -%r232 = zext i32 %r231 to i96 -%r233 = shl i96 %r232, 64 -%r234 = or i96 %r228, %r233 -%r235 = zext i96 %r234 to i128 -%r237 = getelementptr i32, i32* %r4, i32 3 -%r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i128 -%r240 = shl i128 %r239, 96 -%r241 = or i128 %r235, %r240 -%r242 = zext i128 %r241 to i160 -%r244 = getelementptr i32, i32* %r4, i32 4 -%r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i160 -%r247 = shl i160 %r246, 128 -%r248 = or i160 %r242, %r247 -%r249 = zext i160 %r248 to i192 -%r251 = getelementptr i32, i32* %r4, i32 5 -%r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i192 -%r254 = shl i192 %r253, 160 -%r255 = or i192 %r249, %r254 -%r256 = zext i192 %r255 to i224 -%r258 = getelementptr i32, i32* %r4, i32 6 -%r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i224 -%r261 = shl i224 %r260, 192 -%r262 = or i224 %r256, %r261 -%r263 = zext i224 %r262 to i256 -%r265 = getelementptr i32, i32* %r4, i32 7 -%r266 = load i32, i32* %r265 -%r267 = zext i32 %r266 to i256 -%r268 = shl i256 %r267, 224 -%r269 = or i256 %r263, %r268 -%r270 = zext i256 %r269 to i288 -%r272 = getelementptr i32, i32* %r4, i32 8 -%r273 = load i32, i32* %r272 -%r274 = zext i32 %r273 to i288 -%r275 = shl i288 %r274, 256 -%r276 = or i288 %r270, %r275 -%r277 = zext i288 %r276 to i320 -%r279 = getelementptr i32, i32* %r4, i32 9 -%r280 = load i32, i32* %r279 -%r281 = zext i32 %r280 to i320 -%r282 = shl i320 %r281, 288 -%r283 = or i320 %r277, %r282 -%r284 = zext i320 %r283 to i352 -%r286 = getelementptr i32, i32* %r4, i32 10 -%r287 = load i32, i32* %r286 -%r288 = zext i32 %r287 to i352 -%r289 = shl i352 %r288, 320 -%r290 = or i352 %r284, %r289 -%r291 = zext i352 %r290 to i384 -%r293 = getelementptr i32, i32* %r4, i32 11 -%r294 = load i32, i32* %r293 -%r295 = zext i32 %r294 to i384 -%r296 = shl i384 %r295, 352 -%r297 = or i384 %r291, %r296 -%r298 = zext i384 %r297 to i416 -%r300 = getelementptr i32, i32* %r4, i32 12 -%r301 = load i32, i32* %r300 -%r302 = zext i32 %r301 to i416 -%r303 = shl i416 %r302, 384 -%r304 = or i416 %r298, %r303 -%r305 = zext i416 %r304 to i448 -%r307 = getelementptr i32, i32* %r4, i32 13 -%r308 = load i32, i32* %r307 -%r309 = zext i32 %r308 to i448 -%r310 = shl i448 %r309, 416 -%r311 = or i448 %r305, %r310 -%r312 = zext i448 %r311 to i480 -%r314 = getelementptr i32, i32* %r4, i32 14 -%r315 = load i32, i32* %r314 -%r316 = zext i32 %r315 to i480 -%r317 = shl i480 %r316, 448 -%r318 = or i480 %r312, %r317 -%r319 = zext i480 %r318 to i512 -%r321 = getelementptr i32, i32* %r4, i32 15 -%r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i512 -%r324 = shl i512 %r323, 480 -%r325 = or i512 %r319, %r324 -%r327 = select i1 %r219, i512 %r325, i512 0 -%r328 = add i512 %r217, %r327 -%r329 = trunc i512 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 0 -store i32 %r329, i32* %r331 -%r332 = lshr i512 %r328, 32 -%r333 = trunc i512 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 1 -store i32 %r333, i32* %r335 -%r336 = lshr i512 %r332, 32 -%r337 = trunc i512 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 2 -store i32 %r337, i32* %r339 -%r340 = lshr i512 %r336, 32 -%r341 = trunc i512 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 3 -store i32 %r341, i32* %r343 -%r344 = lshr i512 %r340, 32 -%r345 = trunc i512 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 4 -store i32 %r345, i32* %r347 -%r348 = lshr i512 %r344, 32 -%r349 = trunc i512 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 5 -store i32 %r349, i32* %r351 -%r352 = lshr i512 %r348, 32 -%r353 = trunc i512 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 6 -store i32 %r353, i32* %r355 -%r356 = lshr i512 %r352, 32 -%r357 = trunc i512 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 7 -store i32 %r357, i32* %r359 -%r360 = lshr i512 %r356, 32 -%r361 = trunc i512 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 8 -store i32 %r361, i32* %r363 -%r364 = lshr i512 %r360, 32 -%r365 = trunc i512 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 9 -store i32 %r365, i32* %r367 -%r368 = lshr i512 %r364, 32 -%r369 = trunc i512 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 10 -store i32 %r369, i32* %r371 -%r372 = lshr i512 %r368, 32 -%r373 = trunc i512 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 11 -store i32 %r373, i32* %r375 -%r376 = lshr i512 %r372, 32 -%r377 = trunc i512 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 12 -store i32 %r377, i32* %r379 -%r380 = lshr i512 %r376, 32 -%r381 = trunc i512 %r380 to i32 -%r383 = getelementptr i32, i32* %r1, i32 13 -store i32 %r381, i32* %r383 -%r384 = lshr i512 %r380, 32 -%r385 = trunc i512 %r384 to i32 -%r387 = getelementptr i32, i32* %r1, i32 14 -store i32 %r385, i32* %r387 -%r388 = lshr i512 %r384, 32 -%r389 = trunc i512 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 15 -store i32 %r389, i32* %r391 -ret void -} -define void @mcl_fpDbl_add16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) -{ -%r5 = load i32, i32* %r2 -%r6 = zext i32 %r5 to i64 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = zext i32 %r9 to i64 -%r11 = shl i64 %r10, 32 -%r12 = or i64 %r6, %r11 -%r13 = zext i64 %r12 to i96 -%r15 = getelementptr i32, i32* %r2, i32 2 -%r16 = load i32, i32* %r15 -%r17 = zext i32 %r16 to i96 -%r18 = shl i96 %r17, 64 -%r19 = or i96 %r13, %r18 -%r20 = zext i96 %r19 to i128 -%r22 = getelementptr i32, i32* %r2, i32 3 -%r23 = load i32, i32* %r22 -%r24 = zext i32 %r23 to i128 -%r25 = shl i128 %r24, 96 -%r26 = or i128 %r20, %r25 -%r27 = zext i128 %r26 to i160 -%r29 = getelementptr i32, i32* %r2, i32 4 -%r30 = load i32, i32* %r29 -%r31 = zext i32 %r30 to i160 -%r32 = shl i160 %r31, 128 -%r33 = or i160 %r27, %r32 -%r34 = zext i160 %r33 to i192 -%r36 = getelementptr i32, i32* %r2, i32 5 -%r37 = load i32, i32* %r36 -%r38 = zext i32 %r37 to i192 -%r39 = shl i192 %r38, 160 -%r40 = or i192 %r34, %r39 -%r41 = zext i192 %r40 to i224 -%r43 = getelementptr i32, i32* %r2, i32 6 -%r44 = load i32, i32* %r43 -%r45 = zext i32 %r44 to i224 -%r46 = shl i224 %r45, 192 -%r47 = or i224 %r41, %r46 -%r48 = zext i224 %r47 to i256 -%r50 = getelementptr i32, i32* %r2, i32 7 -%r51 = load i32, i32* %r50 -%r52 = zext i32 %r51 to i256 -%r53 = shl i256 %r52, 224 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i288 -%r57 = getelementptr i32, i32* %r2, i32 8 -%r58 = load i32, i32* %r57 -%r59 = zext i32 %r58 to i288 -%r60 = shl i288 %r59, 256 -%r61 = or i288 %r55, %r60 -%r62 = zext i288 %r61 to i320 -%r64 = getelementptr i32, i32* %r2, i32 9 -%r65 = load i32, i32* %r64 -%r66 = zext i32 %r65 to i320 -%r67 = shl i320 %r66, 288 -%r68 = or i320 %r62, %r67 -%r69 = zext i320 %r68 to i352 -%r71 = getelementptr i32, i32* %r2, i32 10 -%r72 = load i32, i32* %r71 -%r73 = zext i32 %r72 to i352 -%r74 = shl i352 %r73, 320 -%r75 = or i352 %r69, %r74 -%r76 = zext i352 %r75 to i384 -%r78 = getelementptr i32, i32* %r2, i32 11 -%r79 = load i32, i32* %r78 -%r80 = zext i32 %r79 to i384 -%r81 = shl i384 %r80, 352 -%r82 = or i384 %r76, %r81 -%r83 = zext i384 %r82 to i416 -%r85 = getelementptr i32, i32* %r2, i32 12 -%r86 = load i32, i32* %r85 -%r87 = zext i32 %r86 to i416 -%r88 = shl i416 %r87, 384 -%r89 = or i416 %r83, %r88 -%r90 = zext i416 %r89 to i448 -%r92 = getelementptr i32, i32* %r2, i32 13 -%r93 = load i32, i32* %r92 -%r94 = zext i32 %r93 to i448 -%r95 = shl i448 %r94, 416 -%r96 = or i448 %r90, %r95 -%r97 = zext i448 %r96 to i480 -%r99 = getelementptr i32, i32* %r2, i32 14 -%r100 = load i32, i32* %r99 -%r101 = zext i32 %r100 to i480 -%r102 = shl i480 %r101, 448 -%r103 = or i480 %r97, %r102 -%r104 = zext i480 %r103 to i512 -%r106 = getelementptr i32, i32* %r2, i32 15 -%r107 = load i32, i32* %r106 -%r108 = zext i32 %r107 to i512 -%r109 = shl i512 %r108, 480 -%r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r120 = getelementptr i32, i32* %r2, i32 17 -%r121 = load i32, i32* %r120 -%r122 = zext i32 %r121 to i576 -%r123 = shl i576 %r122, 544 -%r124 = or i576 %r118, %r123 -%r125 = zext i576 %r124 to i608 -%r127 = getelementptr i32, i32* %r2, i32 18 -%r128 = load i32, i32* %r127 -%r129 = zext i32 %r128 to i608 -%r130 = shl i608 %r129, 576 -%r131 = or i608 %r125, %r130 -%r132 = zext i608 %r131 to i640 -%r134 = getelementptr i32, i32* %r2, i32 19 -%r135 = load i32, i32* %r134 -%r136 = zext i32 %r135 to i640 -%r137 = shl i640 %r136, 608 -%r138 = or i640 %r132, %r137 -%r139 = zext i640 %r138 to i672 -%r141 = getelementptr i32, i32* %r2, i32 20 -%r142 = load i32, i32* %r141 -%r143 = zext i32 %r142 to i672 -%r144 = shl i672 %r143, 640 -%r145 = or i672 %r139, %r144 -%r146 = zext i672 %r145 to i704 -%r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = zext i896 %r194 to i928 -%r197 = getelementptr i32, i32* %r2, i32 28 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i928 -%r200 = shl i928 %r199, 896 -%r201 = or i928 %r195, %r200 -%r202 = zext i928 %r201 to i960 -%r204 = getelementptr i32, i32* %r2, i32 29 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i960 -%r207 = shl i960 %r206, 928 -%r208 = or i960 %r202, %r207 -%r209 = zext i960 %r208 to i992 -%r211 = getelementptr i32, i32* %r2, i32 30 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i992 -%r214 = shl i992 %r213, 960 -%r215 = or i992 %r209, %r214 -%r216 = zext i992 %r215 to i1024 -%r218 = getelementptr i32, i32* %r2, i32 31 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i1024 -%r221 = shl i1024 %r220, 992 -%r222 = or i1024 %r216, %r221 -%r223 = load i32, i32* %r3 -%r224 = zext i32 %r223 to i64 -%r226 = getelementptr i32, i32* %r3, i32 1 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i64 -%r229 = shl i64 %r228, 32 -%r230 = or i64 %r224, %r229 -%r231 = zext i64 %r230 to i96 -%r233 = getelementptr i32, i32* %r3, i32 2 -%r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i96 -%r236 = shl i96 %r235, 64 -%r237 = or i96 %r231, %r236 -%r238 = zext i96 %r237 to i128 -%r240 = getelementptr i32, i32* %r3, i32 3 -%r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i128 -%r243 = shl i128 %r242, 96 -%r244 = or i128 %r238, %r243 -%r245 = zext i128 %r244 to i160 -%r247 = getelementptr i32, i32* %r3, i32 4 -%r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i160 -%r250 = shl i160 %r249, 128 -%r251 = or i160 %r245, %r250 -%r252 = zext i160 %r251 to i192 -%r254 = getelementptr i32, i32* %r3, i32 5 -%r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i192 -%r257 = shl i192 %r256, 160 -%r258 = or i192 %r252, %r257 -%r259 = zext i192 %r258 to i224 -%r261 = getelementptr i32, i32* %r3, i32 6 -%r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i224 -%r264 = shl i224 %r263, 192 -%r265 = or i224 %r259, %r264 -%r266 = zext i224 %r265 to i256 -%r268 = getelementptr i32, i32* %r3, i32 7 -%r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i256 -%r271 = shl i256 %r270, 224 -%r272 = or i256 %r266, %r271 -%r273 = zext i256 %r272 to i288 -%r275 = getelementptr i32, i32* %r3, i32 8 -%r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i288 -%r278 = shl i288 %r277, 256 -%r279 = or i288 %r273, %r278 -%r280 = zext i288 %r279 to i320 -%r282 = getelementptr i32, i32* %r3, i32 9 -%r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i320 -%r285 = shl i320 %r284, 288 -%r286 = or i320 %r280, %r285 -%r287 = zext i320 %r286 to i352 -%r289 = getelementptr i32, i32* %r3, i32 10 -%r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i352 -%r292 = shl i352 %r291, 320 -%r293 = or i352 %r287, %r292 -%r294 = zext i352 %r293 to i384 -%r296 = getelementptr i32, i32* %r3, i32 11 -%r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i384 -%r299 = shl i384 %r298, 352 -%r300 = or i384 %r294, %r299 -%r301 = zext i384 %r300 to i416 -%r303 = getelementptr i32, i32* %r3, i32 12 -%r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i416 -%r306 = shl i416 %r305, 384 -%r307 = or i416 %r301, %r306 -%r308 = zext i416 %r307 to i448 -%r310 = getelementptr i32, i32* %r3, i32 13 -%r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i448 -%r313 = shl i448 %r312, 416 -%r314 = or i448 %r308, %r313 -%r315 = zext i448 %r314 to i480 -%r317 = getelementptr i32, i32* %r3, i32 14 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i480 -%r320 = shl i480 %r319, 448 -%r321 = or i480 %r315, %r320 -%r322 = zext i480 %r321 to i512 -%r324 = getelementptr i32, i32* %r3, i32 15 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i512 -%r327 = shl i512 %r326, 480 -%r328 = or i512 %r322, %r327 -%r329 = zext i512 %r328 to i544 -%r331 = getelementptr i32, i32* %r3, i32 16 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i544 -%r334 = shl i544 %r333, 512 -%r335 = or i544 %r329, %r334 -%r336 = zext i544 %r335 to i576 -%r338 = getelementptr i32, i32* %r3, i32 17 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i576 -%r341 = shl i576 %r340, 544 -%r342 = or i576 %r336, %r341 -%r343 = zext i576 %r342 to i608 -%r345 = getelementptr i32, i32* %r3, i32 18 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i608 -%r348 = shl i608 %r347, 576 -%r349 = or i608 %r343, %r348 -%r350 = zext i608 %r349 to i640 -%r352 = getelementptr i32, i32* %r3, i32 19 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i640 -%r355 = shl i640 %r354, 608 -%r356 = or i640 %r350, %r355 -%r357 = zext i640 %r356 to i672 -%r359 = getelementptr i32, i32* %r3, i32 20 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i672 -%r362 = shl i672 %r361, 640 -%r363 = or i672 %r357, %r362 -%r364 = zext i672 %r363 to i704 -%r366 = getelementptr i32, i32* %r3, i32 21 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i704 -%r369 = shl i704 %r368, 672 -%r370 = or i704 %r364, %r369 -%r371 = zext i704 %r370 to i736 -%r373 = getelementptr i32, i32* %r3, i32 22 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i736 -%r376 = shl i736 %r375, 704 -%r377 = or i736 %r371, %r376 -%r378 = zext i736 %r377 to i768 -%r380 = getelementptr i32, i32* %r3, i32 23 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i768 -%r383 = shl i768 %r382, 736 -%r384 = or i768 %r378, %r383 -%r385 = zext i768 %r384 to i800 -%r387 = getelementptr i32, i32* %r3, i32 24 -%r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i800 -%r390 = shl i800 %r389, 768 -%r391 = or i800 %r385, %r390 -%r392 = zext i800 %r391 to i832 -%r394 = getelementptr i32, i32* %r3, i32 25 -%r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i832 -%r397 = shl i832 %r396, 800 -%r398 = or i832 %r392, %r397 -%r399 = zext i832 %r398 to i864 -%r401 = getelementptr i32, i32* %r3, i32 26 -%r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i864 -%r404 = shl i864 %r403, 832 -%r405 = or i864 %r399, %r404 -%r406 = zext i864 %r405 to i896 -%r408 = getelementptr i32, i32* %r3, i32 27 -%r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i896 -%r411 = shl i896 %r410, 864 -%r412 = or i896 %r406, %r411 -%r413 = zext i896 %r412 to i928 -%r415 = getelementptr i32, i32* %r3, i32 28 -%r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i928 -%r418 = shl i928 %r417, 896 -%r419 = or i928 %r413, %r418 -%r420 = zext i928 %r419 to i960 -%r422 = getelementptr i32, i32* %r3, i32 29 -%r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i960 -%r425 = shl i960 %r424, 928 -%r426 = or i960 %r420, %r425 -%r427 = zext i960 %r426 to i992 -%r429 = getelementptr i32, i32* %r3, i32 30 -%r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i992 -%r432 = shl i992 %r431, 960 -%r433 = or i992 %r427, %r432 -%r434 = zext i992 %r433 to i1024 -%r436 = getelementptr i32, i32* %r3, i32 31 -%r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i1024 -%r439 = shl i1024 %r438, 992 -%r440 = or i1024 %r434, %r439 -%r441 = zext i1024 %r222 to i1056 -%r442 = zext i1024 %r440 to i1056 -%r443 = add i1056 %r441, %r442 -%r444 = trunc i1056 %r443 to i512 -%r445 = trunc i512 %r444 to i32 -%r447 = getelementptr i32, i32* %r1, i32 0 -store i32 %r445, i32* %r447 -%r448 = lshr i512 %r444, 32 -%r449 = trunc i512 %r448 to i32 -%r451 = getelementptr i32, i32* %r1, i32 1 -store i32 %r449, i32* %r451 -%r452 = lshr i512 %r448, 32 -%r453 = trunc i512 %r452 to i32 -%r455 = getelementptr i32, i32* %r1, i32 2 -store i32 %r453, i32* %r455 -%r456 = lshr i512 %r452, 32 -%r457 = trunc i512 %r456 to i32 -%r459 = getelementptr i32, i32* %r1, i32 3 -store i32 %r457, i32* %r459 -%r460 = lshr i512 %r456, 32 -%r461 = trunc i512 %r460 to i32 -%r463 = getelementptr i32, i32* %r1, i32 4 -store i32 %r461, i32* %r463 -%r464 = lshr i512 %r460, 32 -%r465 = trunc i512 %r464 to i32 -%r467 = getelementptr i32, i32* %r1, i32 5 -store i32 %r465, i32* %r467 -%r468 = lshr i512 %r464, 32 -%r469 = trunc i512 %r468 to i32 -%r471 = getelementptr i32, i32* %r1, i32 6 -store i32 %r469, i32* %r471 -%r472 = lshr i512 %r468, 32 -%r473 = trunc i512 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 7 -store i32 %r473, i32* %r475 -%r476 = lshr i512 %r472, 32 -%r477 = trunc i512 %r476 to i32 -%r479 = getelementptr i32, i32* %r1, i32 8 -store i32 %r477, i32* %r479 -%r480 = lshr i512 %r476, 32 -%r481 = trunc i512 %r480 to i32 -%r483 = getelementptr i32, i32* %r1, i32 9 -store i32 %r481, i32* %r483 -%r484 = lshr i512 %r480, 32 -%r485 = trunc i512 %r484 to i32 -%r487 = getelementptr i32, i32* %r1, i32 10 -store i32 %r485, i32* %r487 -%r488 = lshr i512 %r484, 32 -%r489 = trunc i512 %r488 to i32 -%r491 = getelementptr i32, i32* %r1, i32 11 -store i32 %r489, i32* %r491 -%r492 = lshr i512 %r488, 32 -%r493 = trunc i512 %r492 to i32 -%r495 = getelementptr i32, i32* %r1, i32 12 -store i32 %r493, i32* %r495 -%r496 = lshr i512 %r492, 32 -%r497 = trunc i512 %r496 to i32 -%r499 = getelementptr i32, i32* %r1, i32 13 -store i32 %r497, i32* %r499 -%r500 = lshr i512 %r496, 32 -%r501 = trunc i512 %r500 to i32 -%r503 = getelementptr i32, i32* %r1, i32 14 -store i32 %r501, i32* %r503 -%r504 = lshr i512 %r500, 32 -%r505 = trunc i512 %r504 to i32 -%r507 = getelementptr i32, i32* %r1, i32 15 -store i32 %r505, i32* %r507 -%r508 = lshr i1056 %r443, 512 -%r509 = trunc i1056 %r508 to i544 -%r510 = load i32, i32* %r4 -%r511 = zext i32 %r510 to i64 -%r513 = getelementptr i32, i32* %r4, i32 1 +%r22 = zext i32 %r21 to i96 +%r23 = shl i96 %r22, 64 +%r24 = or i96 %r18, %r23 +%r25 = zext i96 %r24 to i128 +%r27 = getelementptr i32, i32* %r5, i32 3 +%r28 = load i32, i32* %r27 +%r29 = zext i32 %r28 to i128 +%r30 = shl i128 %r29, 96 +%r31 = or i128 %r25, %r30 +%r32 = zext i128 %r31 to i160 +%r34 = getelementptr i32, i32* %r5, i32 4 +%r35 = load i32, i32* %r34 +%r36 = zext i32 %r35 to i160 +%r37 = shl i160 %r36, 128 +%r38 = or i160 %r32, %r37 +%r39 = zext i160 %r38 to i192 +%r41 = getelementptr i32, i32* %r5, i32 5 +%r42 = load i32, i32* %r41 +%r43 = zext i32 %r42 to i192 +%r44 = shl i192 %r43, 160 +%r45 = or i192 %r39, %r44 +%r46 = zext i192 %r45 to i224 +%r47 = load i32, i32* %r2 +%r48 = zext i32 %r47 to i64 +%r50 = getelementptr i32, i32* %r2, i32 1 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i64 +%r53 = shl i64 %r52, 32 +%r54 = or i64 %r48, %r53 +%r55 = zext i64 %r54 to i96 +%r57 = getelementptr i32, i32* %r2, i32 2 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i96 +%r60 = shl i96 %r59, 64 +%r61 = or i96 %r55, %r60 +%r62 = zext i96 %r61 to i128 +%r64 = getelementptr i32, i32* %r2, i32 3 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i128 +%r67 = shl i128 %r66, 96 +%r68 = or i128 %r62, %r67 +%r69 = zext i128 %r68 to i160 +%r71 = getelementptr i32, i32* %r2, i32 4 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i160 +%r74 = shl i160 %r73, 128 +%r75 = or i160 %r69, %r74 +%r76 = zext i160 %r75 to i192 +%r78 = getelementptr i32, i32* %r2, i32 5 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i192 +%r81 = shl i192 %r80, 160 +%r82 = or i192 %r76, %r81 +%r83 = zext i192 %r82 to i224 +%r84 = load i32, i32* %r7 +%r85 = zext i32 %r84 to i64 +%r87 = getelementptr i32, i32* %r7, i32 1 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i64 +%r90 = shl i64 %r89, 32 +%r91 = or i64 %r85, %r90 +%r92 = zext i64 %r91 to i96 +%r94 = getelementptr i32, i32* %r7, i32 2 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i96 +%r97 = shl i96 %r96, 64 +%r98 = or i96 %r92, %r97 +%r99 = zext i96 %r98 to i128 +%r101 = getelementptr i32, i32* %r7, i32 3 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i128 +%r104 = shl i128 %r103, 96 +%r105 = or i128 %r99, %r104 +%r106 = zext i128 %r105 to i160 +%r108 = getelementptr i32, i32* %r7, i32 4 +%r109 = load i32, i32* %r108 +%r110 = zext i32 %r109 to i160 +%r111 = shl i160 %r110, 128 +%r112 = or i160 %r106, %r111 +%r113 = zext i160 %r112 to i192 +%r115 = getelementptr i32, i32* %r7, i32 5 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i192 +%r118 = shl i192 %r117, 160 +%r119 = or i192 %r113, %r118 +%r120 = zext i192 %r119 to i224 +%r121 = load i32, i32* %r3 +%r122 = zext i32 %r121 to i64 +%r124 = getelementptr i32, i32* %r3, i32 1 +%r125 = load i32, i32* %r124 +%r126 = zext i32 %r125 to i64 +%r127 = shl i64 %r126, 32 +%r128 = or i64 %r122, %r127 +%r129 = zext i64 %r128 to i96 +%r131 = getelementptr i32, i32* %r3, i32 2 +%r132 = load i32, i32* %r131 +%r133 = zext i32 %r132 to i96 +%r134 = shl i96 %r133, 64 +%r135 = or i96 %r129, %r134 +%r136 = zext i96 %r135 to i128 +%r138 = getelementptr i32, i32* %r3, i32 3 +%r139 = load i32, i32* %r138 +%r140 = zext i32 %r139 to i128 +%r141 = shl i128 %r140, 96 +%r142 = or i128 %r136, %r141 +%r143 = zext i128 %r142 to i160 +%r145 = getelementptr i32, i32* %r3, i32 4 +%r146 = load i32, i32* %r145 +%r147 = zext i32 %r146 to i160 +%r148 = shl i160 %r147, 128 +%r149 = or i160 %r143, %r148 +%r150 = zext i160 %r149 to i192 +%r152 = getelementptr i32, i32* %r3, i32 5 +%r153 = load i32, i32* %r152 +%r154 = zext i32 %r153 to i192 +%r155 = shl i192 %r154, 160 +%r156 = or i192 %r150, %r155 +%r157 = zext i192 %r156 to i224 +%r158 = add i224 %r46, %r83 +%r159 = add i224 %r120, %r157 +%r161 = alloca i32, i32 12 +%r162 = trunc i224 %r158 to i192 +%r163 = trunc i224 %r159 to i192 +%r164 = lshr i224 %r158, 192 +%r165 = trunc i224 %r164 to i1 +%r166 = lshr i224 %r159, 192 +%r167 = trunc i224 %r166 to i1 +%r168 = and i1 %r165, %r167 +%r170 = select i1 %r165, i192 %r163, i192 0 +%r172 = select i1 %r167, i192 %r162, i192 0 +%r174 = alloca i32, i32 6 +%r176 = alloca i32, i32 6 +%r178 = getelementptr i32, i32* %r174, i32 0 +%r179 = trunc i192 %r162 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i192 %r162, 32 +%r182 = getelementptr i32, i32* %r174, i32 1 +%r183 = trunc i192 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i192 %r180, 32 +%r186 = getelementptr i32, i32* %r174, i32 2 +%r187 = trunc i192 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i192 %r184, 32 +%r190 = getelementptr i32, i32* %r174, i32 3 +%r191 = trunc i192 %r188 to i32 +store i32 %r191, i32* %r190 +%r192 = lshr i192 %r188, 32 +%r194 = getelementptr i32, i32* %r174, i32 4 +%r195 = trunc i192 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i192 %r192, 32 +%r198 = getelementptr i32, i32* %r174, i32 5 +%r199 = trunc i192 %r196 to i32 +store i32 %r199, i32* %r198 +%r201 = getelementptr i32, i32* %r176, i32 0 +%r202 = trunc i192 %r163 to i32 +store i32 %r202, i32* %r201 +%r203 = lshr i192 %r163, 32 +%r205 = getelementptr i32, i32* %r176, i32 1 +%r206 = trunc i192 %r203 to i32 +store i32 %r206, i32* %r205 +%r207 = lshr i192 %r203, 32 +%r209 = getelementptr i32, i32* %r176, i32 2 +%r210 = trunc i192 %r207 to i32 +store i32 %r210, i32* %r209 +%r211 = lshr i192 %r207, 32 +%r213 = getelementptr i32, i32* %r176, i32 3 +%r214 = trunc i192 %r211 to i32 +store i32 %r214, i32* %r213 +%r215 = lshr i192 %r211, 32 +%r217 = getelementptr i32, i32* %r176, i32 4 +%r218 = trunc i192 %r215 to i32 +store i32 %r218, i32* %r217 +%r219 = lshr i192 %r215, 32 +%r221 = getelementptr i32, i32* %r176, i32 5 +%r222 = trunc i192 %r219 to i32 +store i32 %r222, i32* %r221 +call void @mcl_fpDbl_mulPre6L(i32* %r161, i32* %r174, i32* %r176) +%r223 = load i32, i32* %r161 +%r224 = zext i32 %r223 to i64 +%r226 = getelementptr i32, i32* %r161, i32 1 +%r227 = load i32, i32* %r226 +%r228 = zext i32 %r227 to i64 +%r229 = shl i64 %r228, 32 +%r230 = or i64 %r224, %r229 +%r231 = zext i64 %r230 to i96 +%r233 = getelementptr i32, i32* %r161, i32 2 +%r234 = load i32, i32* %r233 +%r235 = zext i32 %r234 to i96 +%r236 = shl i96 %r235, 64 +%r237 = or i96 %r231, %r236 +%r238 = zext i96 %r237 to i128 +%r240 = getelementptr i32, i32* %r161, i32 3 +%r241 = load i32, i32* %r240 +%r242 = zext i32 %r241 to i128 +%r243 = shl i128 %r242, 96 +%r244 = or i128 %r238, %r243 +%r245 = zext i128 %r244 to i160 +%r247 = getelementptr i32, i32* %r161, i32 4 +%r248 = load i32, i32* %r247 +%r249 = zext i32 %r248 to i160 +%r250 = shl i160 %r249, 128 +%r251 = or i160 %r245, %r250 +%r252 = zext i160 %r251 to i192 +%r254 = getelementptr i32, i32* %r161, i32 5 +%r255 = load i32, i32* %r254 +%r256 = zext i32 %r255 to i192 +%r257 = shl i192 %r256, 160 +%r258 = or i192 %r252, %r257 +%r259 = zext i192 %r258 to i224 +%r261 = getelementptr i32, i32* %r161, i32 6 +%r262 = load i32, i32* %r261 +%r263 = zext i32 %r262 to i224 +%r264 = shl i224 %r263, 192 +%r265 = or i224 %r259, %r264 +%r266 = zext i224 %r265 to i256 +%r268 = getelementptr i32, i32* %r161, i32 7 +%r269 = load i32, i32* %r268 +%r270 = zext i32 %r269 to i256 +%r271 = shl i256 %r270, 224 +%r272 = or i256 %r266, %r271 +%r273 = zext i256 %r272 to i288 +%r275 = getelementptr i32, i32* %r161, i32 8 +%r276 = load i32, i32* %r275 +%r277 = zext i32 %r276 to i288 +%r278 = shl i288 %r277, 256 +%r279 = or i288 %r273, %r278 +%r280 = zext i288 %r279 to i320 +%r282 = getelementptr i32, i32* %r161, i32 9 +%r283 = load i32, i32* %r282 +%r284 = zext i32 %r283 to i320 +%r285 = shl i320 %r284, 288 +%r286 = or i320 %r280, %r285 +%r287 = zext i320 %r286 to i352 +%r289 = getelementptr i32, i32* %r161, i32 10 +%r290 = load i32, i32* %r289 +%r291 = zext i32 %r290 to i352 +%r292 = shl i352 %r291, 320 +%r293 = or i352 %r287, %r292 +%r294 = zext i352 %r293 to i384 +%r296 = getelementptr i32, i32* %r161, i32 11 +%r297 = load i32, i32* %r296 +%r298 = zext i32 %r297 to i384 +%r299 = shl i384 %r298, 352 +%r300 = or i384 %r294, %r299 +%r301 = zext i384 %r300 to i416 +%r302 = zext i1 %r168 to i416 +%r303 = shl i416 %r302, 384 +%r304 = or i416 %r301, %r303 +%r305 = zext i192 %r170 to i416 +%r306 = zext i192 %r172 to i416 +%r307 = shl i416 %r305, 192 +%r308 = shl i416 %r306, 192 +%r309 = add i416 %r304, %r307 +%r310 = add i416 %r309, %r308 +%r311 = load i32, i32* %r1 +%r312 = zext i32 %r311 to i64 +%r314 = getelementptr i32, i32* %r1, i32 1 +%r315 = load i32, i32* %r314 +%r316 = zext i32 %r315 to i64 +%r317 = shl i64 %r316, 32 +%r318 = or i64 %r312, %r317 +%r319 = zext i64 %r318 to i96 +%r321 = getelementptr i32, i32* %r1, i32 2 +%r322 = load i32, i32* %r321 +%r323 = zext i32 %r322 to i96 +%r324 = shl i96 %r323, 64 +%r325 = or i96 %r319, %r324 +%r326 = zext i96 %r325 to i128 +%r328 = getelementptr i32, i32* %r1, i32 3 +%r329 = load i32, i32* %r328 +%r330 = zext i32 %r329 to i128 +%r331 = shl i128 %r330, 96 +%r332 = or i128 %r326, %r331 +%r333 = zext i128 %r332 to i160 +%r335 = getelementptr i32, i32* %r1, i32 4 +%r336 = load i32, i32* %r335 +%r337 = zext i32 %r336 to i160 +%r338 = shl i160 %r337, 128 +%r339 = or i160 %r333, %r338 +%r340 = zext i160 %r339 to i192 +%r342 = getelementptr i32, i32* %r1, i32 5 +%r343 = load i32, i32* %r342 +%r344 = zext i32 %r343 to i192 +%r345 = shl i192 %r344, 160 +%r346 = or i192 %r340, %r345 +%r347 = zext i192 %r346 to i224 +%r349 = getelementptr i32, i32* %r1, i32 6 +%r350 = load i32, i32* %r349 +%r351 = zext i32 %r350 to i224 +%r352 = shl i224 %r351, 192 +%r353 = or i224 %r347, %r352 +%r354 = zext i224 %r353 to i256 +%r356 = getelementptr i32, i32* %r1, i32 7 +%r357 = load i32, i32* %r356 +%r358 = zext i32 %r357 to i256 +%r359 = shl i256 %r358, 224 +%r360 = or i256 %r354, %r359 +%r361 = zext i256 %r360 to i288 +%r363 = getelementptr i32, i32* %r1, i32 8 +%r364 = load i32, i32* %r363 +%r365 = zext i32 %r364 to i288 +%r366 = shl i288 %r365, 256 +%r367 = or i288 %r361, %r366 +%r368 = zext i288 %r367 to i320 +%r370 = getelementptr i32, i32* %r1, i32 9 +%r371 = load i32, i32* %r370 +%r372 = zext i32 %r371 to i320 +%r373 = shl i320 %r372, 288 +%r374 = or i320 %r368, %r373 +%r375 = zext i320 %r374 to i352 +%r377 = getelementptr i32, i32* %r1, i32 10 +%r378 = load i32, i32* %r377 +%r379 = zext i32 %r378 to i352 +%r380 = shl i352 %r379, 320 +%r381 = or i352 %r375, %r380 +%r382 = zext i352 %r381 to i384 +%r384 = getelementptr i32, i32* %r1, i32 11 +%r385 = load i32, i32* %r384 +%r386 = zext i32 %r385 to i384 +%r387 = shl i384 %r386, 352 +%r388 = or i384 %r382, %r387 +%r389 = zext i384 %r388 to i416 +%r390 = sub i416 %r310, %r389 +%r392 = getelementptr i32, i32* %r1, i32 12 +%r393 = load i32, i32* %r392 +%r394 = zext i32 %r393 to i64 +%r396 = getelementptr i32, i32* %r392, i32 1 +%r397 = load i32, i32* %r396 +%r398 = zext i32 %r397 to i64 +%r399 = shl i64 %r398, 32 +%r400 = or i64 %r394, %r399 +%r401 = zext i64 %r400 to i96 +%r403 = getelementptr i32, i32* %r392, i32 2 +%r404 = load i32, i32* %r403 +%r405 = zext i32 %r404 to i96 +%r406 = shl i96 %r405, 64 +%r407 = or i96 %r401, %r406 +%r408 = zext i96 %r407 to i128 +%r410 = getelementptr i32, i32* %r392, i32 3 +%r411 = load i32, i32* %r410 +%r412 = zext i32 %r411 to i128 +%r413 = shl i128 %r412, 96 +%r414 = or i128 %r408, %r413 +%r415 = zext i128 %r414 to i160 +%r417 = getelementptr i32, i32* %r392, i32 4 +%r418 = load i32, i32* %r417 +%r419 = zext i32 %r418 to i160 +%r420 = shl i160 %r419, 128 +%r421 = or i160 %r415, %r420 +%r422 = zext i160 %r421 to i192 +%r424 = getelementptr i32, i32* %r392, i32 5 +%r425 = load i32, i32* %r424 +%r426 = zext i32 %r425 to i192 +%r427 = shl i192 %r426, 160 +%r428 = or i192 %r422, %r427 +%r429 = zext i192 %r428 to i224 +%r431 = getelementptr i32, i32* %r392, i32 6 +%r432 = load i32, i32* %r431 +%r433 = zext i32 %r432 to i224 +%r434 = shl i224 %r433, 192 +%r435 = or i224 %r429, %r434 +%r436 = zext i224 %r435 to i256 +%r438 = getelementptr i32, i32* %r392, i32 7 +%r439 = load i32, i32* %r438 +%r440 = zext i32 %r439 to i256 +%r441 = shl i256 %r440, 224 +%r442 = or i256 %r436, %r441 +%r443 = zext i256 %r442 to i288 +%r445 = getelementptr i32, i32* %r392, i32 8 +%r446 = load i32, i32* %r445 +%r447 = zext i32 %r446 to i288 +%r448 = shl i288 %r447, 256 +%r449 = or i288 %r443, %r448 +%r450 = zext i288 %r449 to i320 +%r452 = getelementptr i32, i32* %r392, i32 9 +%r453 = load i32, i32* %r452 +%r454 = zext i32 %r453 to i320 +%r455 = shl i320 %r454, 288 +%r456 = or i320 %r450, %r455 +%r457 = zext i320 %r456 to i352 +%r459 = getelementptr i32, i32* %r392, i32 10 +%r460 = load i32, i32* %r459 +%r461 = zext i32 %r460 to i352 +%r462 = shl i352 %r461, 320 +%r463 = or i352 %r457, %r462 +%r464 = zext i352 %r463 to i384 +%r466 = getelementptr i32, i32* %r392, i32 11 +%r467 = load i32, i32* %r466 +%r468 = zext i32 %r467 to i384 +%r469 = shl i384 %r468, 352 +%r470 = or i384 %r464, %r469 +%r471 = zext i384 %r470 to i416 +%r472 = sub i416 %r390, %r471 +%r473 = zext i416 %r472 to i576 +%r475 = getelementptr i32, i32* %r1, i32 6 +%r476 = load i32, i32* %r475 +%r477 = zext i32 %r476 to i64 +%r479 = getelementptr i32, i32* %r475, i32 1 +%r480 = load i32, i32* %r479 +%r481 = zext i32 %r480 to i64 +%r482 = shl i64 %r481, 32 +%r483 = or i64 %r477, %r482 +%r484 = zext i64 %r483 to i96 +%r486 = getelementptr i32, i32* %r475, i32 2 +%r487 = load i32, i32* %r486 +%r488 = zext i32 %r487 to i96 +%r489 = shl i96 %r488, 64 +%r490 = or i96 %r484, %r489 +%r491 = zext i96 %r490 to i128 +%r493 = getelementptr i32, i32* %r475, i32 3 +%r494 = load i32, i32* %r493 +%r495 = zext i32 %r494 to i128 +%r496 = shl i128 %r495, 96 +%r497 = or i128 %r491, %r496 +%r498 = zext i128 %r497 to i160 +%r500 = getelementptr i32, i32* %r475, i32 4 +%r501 = load i32, i32* %r500 +%r502 = zext i32 %r501 to i160 +%r503 = shl i160 %r502, 128 +%r504 = or i160 %r498, %r503 +%r505 = zext i160 %r504 to i192 +%r507 = getelementptr i32, i32* %r475, i32 5 +%r508 = load i32, i32* %r507 +%r509 = zext i32 %r508 to i192 +%r510 = shl i192 %r509, 160 +%r511 = or i192 %r505, %r510 +%r512 = zext i192 %r511 to i224 +%r514 = getelementptr i32, i32* %r475, i32 6 +%r515 = load i32, i32* %r514 +%r516 = zext i32 %r515 to i224 +%r517 = shl i224 %r516, 192 +%r518 = or i224 %r512, %r517 +%r519 = zext i224 %r518 to i256 +%r521 = getelementptr i32, i32* %r475, i32 7 +%r522 = load i32, i32* %r521 +%r523 = zext i32 %r522 to i256 +%r524 = shl i256 %r523, 224 +%r525 = or i256 %r519, %r524 +%r526 = zext i256 %r525 to i288 +%r528 = getelementptr i32, i32* %r475, i32 8 +%r529 = load i32, i32* %r528 +%r530 = zext i32 %r529 to i288 +%r531 = shl i288 %r530, 256 +%r532 = or i288 %r526, %r531 +%r533 = zext i288 %r532 to i320 +%r535 = getelementptr i32, i32* %r475, i32 9 +%r536 = load i32, i32* %r535 +%r537 = zext i32 %r536 to i320 +%r538 = shl i320 %r537, 288 +%r539 = or i320 %r533, %r538 +%r540 = zext i320 %r539 to i352 +%r542 = getelementptr i32, i32* %r475, i32 10 +%r543 = load i32, i32* %r542 +%r544 = zext i32 %r543 to i352 +%r545 = shl i352 %r544, 320 +%r546 = or i352 %r540, %r545 +%r547 = zext i352 %r546 to i384 +%r549 = getelementptr i32, i32* %r475, i32 11 +%r550 = load i32, i32* %r549 +%r551 = zext i32 %r550 to i384 +%r552 = shl i384 %r551, 352 +%r553 = or i384 %r547, %r552 +%r554 = zext i384 %r553 to i416 +%r556 = getelementptr i32, i32* %r475, i32 12 +%r557 = load i32, i32* %r556 +%r558 = zext i32 %r557 to i416 +%r559 = shl i416 %r558, 384 +%r560 = or i416 %r554, %r559 +%r561 = zext i416 %r560 to i448 +%r563 = getelementptr i32, i32* %r475, i32 13 +%r564 = load i32, i32* %r563 +%r565 = zext i32 %r564 to i448 +%r566 = shl i448 %r565, 416 +%r567 = or i448 %r561, %r566 +%r568 = zext i448 %r567 to i480 +%r570 = getelementptr i32, i32* %r475, i32 14 +%r571 = load i32, i32* %r570 +%r572 = zext i32 %r571 to i480 +%r573 = shl i480 %r572, 448 +%r574 = or i480 %r568, %r573 +%r575 = zext i480 %r574 to i512 +%r577 = getelementptr i32, i32* %r475, i32 15 +%r578 = load i32, i32* %r577 +%r579 = zext i32 %r578 to i512 +%r580 = shl i512 %r579, 480 +%r581 = or i512 %r575, %r580 +%r582 = zext i512 %r581 to i544 +%r584 = getelementptr i32, i32* %r475, i32 16 +%r585 = load i32, i32* %r584 +%r586 = zext i32 %r585 to i544 +%r587 = shl i544 %r586, 512 +%r588 = or i544 %r582, %r587 +%r589 = zext i544 %r588 to i576 +%r591 = getelementptr i32, i32* %r475, i32 17 +%r592 = load i32, i32* %r591 +%r593 = zext i32 %r592 to i576 +%r594 = shl i576 %r593, 544 +%r595 = or i576 %r589, %r594 +%r596 = add i576 %r473, %r595 +%r598 = getelementptr i32, i32* %r1, i32 6 +%r600 = getelementptr i32, i32* %r598, i32 0 +%r601 = trunc i576 %r596 to i32 +store i32 %r601, i32* %r600 +%r602 = lshr i576 %r596, 32 +%r604 = getelementptr i32, i32* %r598, i32 1 +%r605 = trunc i576 %r602 to i32 +store i32 %r605, i32* %r604 +%r606 = lshr i576 %r602, 32 +%r608 = getelementptr i32, i32* %r598, i32 2 +%r609 = trunc i576 %r606 to i32 +store i32 %r609, i32* %r608 +%r610 = lshr i576 %r606, 32 +%r612 = getelementptr i32, i32* %r598, i32 3 +%r613 = trunc i576 %r610 to i32 +store i32 %r613, i32* %r612 +%r614 = lshr i576 %r610, 32 +%r616 = getelementptr i32, i32* %r598, i32 4 +%r617 = trunc i576 %r614 to i32 +store i32 %r617, i32* %r616 +%r618 = lshr i576 %r614, 32 +%r620 = getelementptr i32, i32* %r598, i32 5 +%r621 = trunc i576 %r618 to i32 +store i32 %r621, i32* %r620 +%r622 = lshr i576 %r618, 32 +%r624 = getelementptr i32, i32* %r598, i32 6 +%r625 = trunc i576 %r622 to i32 +store i32 %r625, i32* %r624 +%r626 = lshr i576 %r622, 32 +%r628 = getelementptr i32, i32* %r598, i32 7 +%r629 = trunc i576 %r626 to i32 +store i32 %r629, i32* %r628 +%r630 = lshr i576 %r626, 32 +%r632 = getelementptr i32, i32* %r598, i32 8 +%r633 = trunc i576 %r630 to i32 +store i32 %r633, i32* %r632 +%r634 = lshr i576 %r630, 32 +%r636 = getelementptr i32, i32* %r598, i32 9 +%r637 = trunc i576 %r634 to i32 +store i32 %r637, i32* %r636 +%r638 = lshr i576 %r634, 32 +%r640 = getelementptr i32, i32* %r598, i32 10 +%r641 = trunc i576 %r638 to i32 +store i32 %r641, i32* %r640 +%r642 = lshr i576 %r638, 32 +%r644 = getelementptr i32, i32* %r598, i32 11 +%r645 = trunc i576 %r642 to i32 +store i32 %r645, i32* %r644 +%r646 = lshr i576 %r642, 32 +%r648 = getelementptr i32, i32* %r598, i32 12 +%r649 = trunc i576 %r646 to i32 +store i32 %r649, i32* %r648 +%r650 = lshr i576 %r646, 32 +%r652 = getelementptr i32, i32* %r598, i32 13 +%r653 = trunc i576 %r650 to i32 +store i32 %r653, i32* %r652 +%r654 = lshr i576 %r650, 32 +%r656 = getelementptr i32, i32* %r598, i32 14 +%r657 = trunc i576 %r654 to i32 +store i32 %r657, i32* %r656 +%r658 = lshr i576 %r654, 32 +%r660 = getelementptr i32, i32* %r598, i32 15 +%r661 = trunc i576 %r658 to i32 +store i32 %r661, i32* %r660 +%r662 = lshr i576 %r658, 32 +%r664 = getelementptr i32, i32* %r598, i32 16 +%r665 = trunc i576 %r662 to i32 +store i32 %r665, i32* %r664 +%r666 = lshr i576 %r662, 32 +%r668 = getelementptr i32, i32* %r598, i32 17 +%r669 = trunc i576 %r666 to i32 +store i32 %r669, i32* %r668 +ret void +} +define void @mcl_fpDbl_sqrPre12L(i32* noalias %r1, i32* noalias %r2) +{ +%r4 = getelementptr i32, i32* %r2, i32 6 +%r6 = getelementptr i32, i32* %r2, i32 6 +%r8 = getelementptr i32, i32* %r1, i32 12 +call void @mcl_fpDbl_mulPre6L(i32* %r1, i32* %r2, i32* %r2) +call void @mcl_fpDbl_mulPre6L(i32* %r8, i32* %r4, i32* %r6) +%r9 = load i32, i32* %r4 +%r10 = zext i32 %r9 to i64 +%r12 = getelementptr i32, i32* %r4, i32 1 +%r13 = load i32, i32* %r12 +%r14 = zext i32 %r13 to i64 +%r15 = shl i64 %r14, 32 +%r16 = or i64 %r10, %r15 +%r17 = zext i64 %r16 to i96 +%r19 = getelementptr i32, i32* %r4, i32 2 +%r20 = load i32, i32* %r19 +%r21 = zext i32 %r20 to i96 +%r22 = shl i96 %r21, 64 +%r23 = or i96 %r17, %r22 +%r24 = zext i96 %r23 to i128 +%r26 = getelementptr i32, i32* %r4, i32 3 +%r27 = load i32, i32* %r26 +%r28 = zext i32 %r27 to i128 +%r29 = shl i128 %r28, 96 +%r30 = or i128 %r24, %r29 +%r31 = zext i128 %r30 to i160 +%r33 = getelementptr i32, i32* %r4, i32 4 +%r34 = load i32, i32* %r33 +%r35 = zext i32 %r34 to i160 +%r36 = shl i160 %r35, 128 +%r37 = or i160 %r31, %r36 +%r38 = zext i160 %r37 to i192 +%r40 = getelementptr i32, i32* %r4, i32 5 +%r41 = load i32, i32* %r40 +%r42 = zext i32 %r41 to i192 +%r43 = shl i192 %r42, 160 +%r44 = or i192 %r38, %r43 +%r45 = zext i192 %r44 to i224 +%r46 = load i32, i32* %r2 +%r47 = zext i32 %r46 to i64 +%r49 = getelementptr i32, i32* %r2, i32 1 +%r50 = load i32, i32* %r49 +%r51 = zext i32 %r50 to i64 +%r52 = shl i64 %r51, 32 +%r53 = or i64 %r47, %r52 +%r54 = zext i64 %r53 to i96 +%r56 = getelementptr i32, i32* %r2, i32 2 +%r57 = load i32, i32* %r56 +%r58 = zext i32 %r57 to i96 +%r59 = shl i96 %r58, 64 +%r60 = or i96 %r54, %r59 +%r61 = zext i96 %r60 to i128 +%r63 = getelementptr i32, i32* %r2, i32 3 +%r64 = load i32, i32* %r63 +%r65 = zext i32 %r64 to i128 +%r66 = shl i128 %r65, 96 +%r67 = or i128 %r61, %r66 +%r68 = zext i128 %r67 to i160 +%r70 = getelementptr i32, i32* %r2, i32 4 +%r71 = load i32, i32* %r70 +%r72 = zext i32 %r71 to i160 +%r73 = shl i160 %r72, 128 +%r74 = or i160 %r68, %r73 +%r75 = zext i160 %r74 to i192 +%r77 = getelementptr i32, i32* %r2, i32 5 +%r78 = load i32, i32* %r77 +%r79 = zext i32 %r78 to i192 +%r80 = shl i192 %r79, 160 +%r81 = or i192 %r75, %r80 +%r82 = zext i192 %r81 to i224 +%r83 = load i32, i32* %r6 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r6, i32 1 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r6, i32 2 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r6, i32 3 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r6, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r6, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r120 = load i32, i32* %r2 +%r121 = zext i32 %r120 to i64 +%r123 = getelementptr i32, i32* %r2, i32 1 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i64 +%r126 = shl i64 %r125, 32 +%r127 = or i64 %r121, %r126 +%r128 = zext i64 %r127 to i96 +%r130 = getelementptr i32, i32* %r2, i32 2 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i96 +%r133 = shl i96 %r132, 64 +%r134 = or i96 %r128, %r133 +%r135 = zext i96 %r134 to i128 +%r137 = getelementptr i32, i32* %r2, i32 3 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i128 +%r140 = shl i128 %r139, 96 +%r141 = or i128 %r135, %r140 +%r142 = zext i128 %r141 to i160 +%r144 = getelementptr i32, i32* %r2, i32 4 +%r145 = load i32, i32* %r144 +%r146 = zext i32 %r145 to i160 +%r147 = shl i160 %r146, 128 +%r148 = or i160 %r142, %r147 +%r149 = zext i160 %r148 to i192 +%r151 = getelementptr i32, i32* %r2, i32 5 +%r152 = load i32, i32* %r151 +%r153 = zext i32 %r152 to i192 +%r154 = shl i192 %r153, 160 +%r155 = or i192 %r149, %r154 +%r156 = zext i192 %r155 to i224 +%r157 = add i224 %r45, %r82 +%r158 = add i224 %r119, %r156 +%r160 = alloca i32, i32 12 +%r161 = trunc i224 %r157 to i192 +%r162 = trunc i224 %r158 to i192 +%r163 = lshr i224 %r157, 192 +%r164 = trunc i224 %r163 to i1 +%r165 = lshr i224 %r158, 192 +%r166 = trunc i224 %r165 to i1 +%r167 = and i1 %r164, %r166 +%r169 = select i1 %r164, i192 %r162, i192 0 +%r171 = select i1 %r166, i192 %r161, i192 0 +%r173 = alloca i32, i32 6 +%r175 = alloca i32, i32 6 +%r177 = getelementptr i32, i32* %r173, i32 0 +%r178 = trunc i192 %r161 to i32 +store i32 %r178, i32* %r177 +%r179 = lshr i192 %r161, 32 +%r181 = getelementptr i32, i32* %r173, i32 1 +%r182 = trunc i192 %r179 to i32 +store i32 %r182, i32* %r181 +%r183 = lshr i192 %r179, 32 +%r185 = getelementptr i32, i32* %r173, i32 2 +%r186 = trunc i192 %r183 to i32 +store i32 %r186, i32* %r185 +%r187 = lshr i192 %r183, 32 +%r189 = getelementptr i32, i32* %r173, i32 3 +%r190 = trunc i192 %r187 to i32 +store i32 %r190, i32* %r189 +%r191 = lshr i192 %r187, 32 +%r193 = getelementptr i32, i32* %r173, i32 4 +%r194 = trunc i192 %r191 to i32 +store i32 %r194, i32* %r193 +%r195 = lshr i192 %r191, 32 +%r197 = getelementptr i32, i32* %r173, i32 5 +%r198 = trunc i192 %r195 to i32 +store i32 %r198, i32* %r197 +%r200 = getelementptr i32, i32* %r175, i32 0 +%r201 = trunc i192 %r162 to i32 +store i32 %r201, i32* %r200 +%r202 = lshr i192 %r162, 32 +%r204 = getelementptr i32, i32* %r175, i32 1 +%r205 = trunc i192 %r202 to i32 +store i32 %r205, i32* %r204 +%r206 = lshr i192 %r202, 32 +%r208 = getelementptr i32, i32* %r175, i32 2 +%r209 = trunc i192 %r206 to i32 +store i32 %r209, i32* %r208 +%r210 = lshr i192 %r206, 32 +%r212 = getelementptr i32, i32* %r175, i32 3 +%r213 = trunc i192 %r210 to i32 +store i32 %r213, i32* %r212 +%r214 = lshr i192 %r210, 32 +%r216 = getelementptr i32, i32* %r175, i32 4 +%r217 = trunc i192 %r214 to i32 +store i32 %r217, i32* %r216 +%r218 = lshr i192 %r214, 32 +%r220 = getelementptr i32, i32* %r175, i32 5 +%r221 = trunc i192 %r218 to i32 +store i32 %r221, i32* %r220 +call void @mcl_fpDbl_mulPre6L(i32* %r160, i32* %r173, i32* %r175) +%r222 = load i32, i32* %r160 +%r223 = zext i32 %r222 to i64 +%r225 = getelementptr i32, i32* %r160, i32 1 +%r226 = load i32, i32* %r225 +%r227 = zext i32 %r226 to i64 +%r228 = shl i64 %r227, 32 +%r229 = or i64 %r223, %r228 +%r230 = zext i64 %r229 to i96 +%r232 = getelementptr i32, i32* %r160, i32 2 +%r233 = load i32, i32* %r232 +%r234 = zext i32 %r233 to i96 +%r235 = shl i96 %r234, 64 +%r236 = or i96 %r230, %r235 +%r237 = zext i96 %r236 to i128 +%r239 = getelementptr i32, i32* %r160, i32 3 +%r240 = load i32, i32* %r239 +%r241 = zext i32 %r240 to i128 +%r242 = shl i128 %r241, 96 +%r243 = or i128 %r237, %r242 +%r244 = zext i128 %r243 to i160 +%r246 = getelementptr i32, i32* %r160, i32 4 +%r247 = load i32, i32* %r246 +%r248 = zext i32 %r247 to i160 +%r249 = shl i160 %r248, 128 +%r250 = or i160 %r244, %r249 +%r251 = zext i160 %r250 to i192 +%r253 = getelementptr i32, i32* %r160, i32 5 +%r254 = load i32, i32* %r253 +%r255 = zext i32 %r254 to i192 +%r256 = shl i192 %r255, 160 +%r257 = or i192 %r251, %r256 +%r258 = zext i192 %r257 to i224 +%r260 = getelementptr i32, i32* %r160, i32 6 +%r261 = load i32, i32* %r260 +%r262 = zext i32 %r261 to i224 +%r263 = shl i224 %r262, 192 +%r264 = or i224 %r258, %r263 +%r265 = zext i224 %r264 to i256 +%r267 = getelementptr i32, i32* %r160, i32 7 +%r268 = load i32, i32* %r267 +%r269 = zext i32 %r268 to i256 +%r270 = shl i256 %r269, 224 +%r271 = or i256 %r265, %r270 +%r272 = zext i256 %r271 to i288 +%r274 = getelementptr i32, i32* %r160, i32 8 +%r275 = load i32, i32* %r274 +%r276 = zext i32 %r275 to i288 +%r277 = shl i288 %r276, 256 +%r278 = or i288 %r272, %r277 +%r279 = zext i288 %r278 to i320 +%r281 = getelementptr i32, i32* %r160, i32 9 +%r282 = load i32, i32* %r281 +%r283 = zext i32 %r282 to i320 +%r284 = shl i320 %r283, 288 +%r285 = or i320 %r279, %r284 +%r286 = zext i320 %r285 to i352 +%r288 = getelementptr i32, i32* %r160, i32 10 +%r289 = load i32, i32* %r288 +%r290 = zext i32 %r289 to i352 +%r291 = shl i352 %r290, 320 +%r292 = or i352 %r286, %r291 +%r293 = zext i352 %r292 to i384 +%r295 = getelementptr i32, i32* %r160, i32 11 +%r296 = load i32, i32* %r295 +%r297 = zext i32 %r296 to i384 +%r298 = shl i384 %r297, 352 +%r299 = or i384 %r293, %r298 +%r300 = zext i384 %r299 to i416 +%r301 = zext i1 %r167 to i416 +%r302 = shl i416 %r301, 384 +%r303 = or i416 %r300, %r302 +%r304 = zext i192 %r169 to i416 +%r305 = zext i192 %r171 to i416 +%r306 = shl i416 %r304, 192 +%r307 = shl i416 %r305, 192 +%r308 = add i416 %r303, %r306 +%r309 = add i416 %r308, %r307 +%r310 = load i32, i32* %r1 +%r311 = zext i32 %r310 to i64 +%r313 = getelementptr i32, i32* %r1, i32 1 +%r314 = load i32, i32* %r313 +%r315 = zext i32 %r314 to i64 +%r316 = shl i64 %r315, 32 +%r317 = or i64 %r311, %r316 +%r318 = zext i64 %r317 to i96 +%r320 = getelementptr i32, i32* %r1, i32 2 +%r321 = load i32, i32* %r320 +%r322 = zext i32 %r321 to i96 +%r323 = shl i96 %r322, 64 +%r324 = or i96 %r318, %r323 +%r325 = zext i96 %r324 to i128 +%r327 = getelementptr i32, i32* %r1, i32 3 +%r328 = load i32, i32* %r327 +%r329 = zext i32 %r328 to i128 +%r330 = shl i128 %r329, 96 +%r331 = or i128 %r325, %r330 +%r332 = zext i128 %r331 to i160 +%r334 = getelementptr i32, i32* %r1, i32 4 +%r335 = load i32, i32* %r334 +%r336 = zext i32 %r335 to i160 +%r337 = shl i160 %r336, 128 +%r338 = or i160 %r332, %r337 +%r339 = zext i160 %r338 to i192 +%r341 = getelementptr i32, i32* %r1, i32 5 +%r342 = load i32, i32* %r341 +%r343 = zext i32 %r342 to i192 +%r344 = shl i192 %r343, 160 +%r345 = or i192 %r339, %r344 +%r346 = zext i192 %r345 to i224 +%r348 = getelementptr i32, i32* %r1, i32 6 +%r349 = load i32, i32* %r348 +%r350 = zext i32 %r349 to i224 +%r351 = shl i224 %r350, 192 +%r352 = or i224 %r346, %r351 +%r353 = zext i224 %r352 to i256 +%r355 = getelementptr i32, i32* %r1, i32 7 +%r356 = load i32, i32* %r355 +%r357 = zext i32 %r356 to i256 +%r358 = shl i256 %r357, 224 +%r359 = or i256 %r353, %r358 +%r360 = zext i256 %r359 to i288 +%r362 = getelementptr i32, i32* %r1, i32 8 +%r363 = load i32, i32* %r362 +%r364 = zext i32 %r363 to i288 +%r365 = shl i288 %r364, 256 +%r366 = or i288 %r360, %r365 +%r367 = zext i288 %r366 to i320 +%r369 = getelementptr i32, i32* %r1, i32 9 +%r370 = load i32, i32* %r369 +%r371 = zext i32 %r370 to i320 +%r372 = shl i320 %r371, 288 +%r373 = or i320 %r367, %r372 +%r374 = zext i320 %r373 to i352 +%r376 = getelementptr i32, i32* %r1, i32 10 +%r377 = load i32, i32* %r376 +%r378 = zext i32 %r377 to i352 +%r379 = shl i352 %r378, 320 +%r380 = or i352 %r374, %r379 +%r381 = zext i352 %r380 to i384 +%r383 = getelementptr i32, i32* %r1, i32 11 +%r384 = load i32, i32* %r383 +%r385 = zext i32 %r384 to i384 +%r386 = shl i384 %r385, 352 +%r387 = or i384 %r381, %r386 +%r388 = zext i384 %r387 to i416 +%r389 = sub i416 %r309, %r388 +%r391 = getelementptr i32, i32* %r1, i32 12 +%r392 = load i32, i32* %r391 +%r393 = zext i32 %r392 to i64 +%r395 = getelementptr i32, i32* %r391, i32 1 +%r396 = load i32, i32* %r395 +%r397 = zext i32 %r396 to i64 +%r398 = shl i64 %r397, 32 +%r399 = or i64 %r393, %r398 +%r400 = zext i64 %r399 to i96 +%r402 = getelementptr i32, i32* %r391, i32 2 +%r403 = load i32, i32* %r402 +%r404 = zext i32 %r403 to i96 +%r405 = shl i96 %r404, 64 +%r406 = or i96 %r400, %r405 +%r407 = zext i96 %r406 to i128 +%r409 = getelementptr i32, i32* %r391, i32 3 +%r410 = load i32, i32* %r409 +%r411 = zext i32 %r410 to i128 +%r412 = shl i128 %r411, 96 +%r413 = or i128 %r407, %r412 +%r414 = zext i128 %r413 to i160 +%r416 = getelementptr i32, i32* %r391, i32 4 +%r417 = load i32, i32* %r416 +%r418 = zext i32 %r417 to i160 +%r419 = shl i160 %r418, 128 +%r420 = or i160 %r414, %r419 +%r421 = zext i160 %r420 to i192 +%r423 = getelementptr i32, i32* %r391, i32 5 +%r424 = load i32, i32* %r423 +%r425 = zext i32 %r424 to i192 +%r426 = shl i192 %r425, 160 +%r427 = or i192 %r421, %r426 +%r428 = zext i192 %r427 to i224 +%r430 = getelementptr i32, i32* %r391, i32 6 +%r431 = load i32, i32* %r430 +%r432 = zext i32 %r431 to i224 +%r433 = shl i224 %r432, 192 +%r434 = or i224 %r428, %r433 +%r435 = zext i224 %r434 to i256 +%r437 = getelementptr i32, i32* %r391, i32 7 +%r438 = load i32, i32* %r437 +%r439 = zext i32 %r438 to i256 +%r440 = shl i256 %r439, 224 +%r441 = or i256 %r435, %r440 +%r442 = zext i256 %r441 to i288 +%r444 = getelementptr i32, i32* %r391, i32 8 +%r445 = load i32, i32* %r444 +%r446 = zext i32 %r445 to i288 +%r447 = shl i288 %r446, 256 +%r448 = or i288 %r442, %r447 +%r449 = zext i288 %r448 to i320 +%r451 = getelementptr i32, i32* %r391, i32 9 +%r452 = load i32, i32* %r451 +%r453 = zext i32 %r452 to i320 +%r454 = shl i320 %r453, 288 +%r455 = or i320 %r449, %r454 +%r456 = zext i320 %r455 to i352 +%r458 = getelementptr i32, i32* %r391, i32 10 +%r459 = load i32, i32* %r458 +%r460 = zext i32 %r459 to i352 +%r461 = shl i352 %r460, 320 +%r462 = or i352 %r456, %r461 +%r463 = zext i352 %r462 to i384 +%r465 = getelementptr i32, i32* %r391, i32 11 +%r466 = load i32, i32* %r465 +%r467 = zext i32 %r466 to i384 +%r468 = shl i384 %r467, 352 +%r469 = or i384 %r463, %r468 +%r470 = zext i384 %r469 to i416 +%r471 = sub i416 %r389, %r470 +%r472 = zext i416 %r471 to i576 +%r474 = getelementptr i32, i32* %r1, i32 6 +%r475 = load i32, i32* %r474 +%r476 = zext i32 %r475 to i64 +%r478 = getelementptr i32, i32* %r474, i32 1 +%r479 = load i32, i32* %r478 +%r480 = zext i32 %r479 to i64 +%r481 = shl i64 %r480, 32 +%r482 = or i64 %r476, %r481 +%r483 = zext i64 %r482 to i96 +%r485 = getelementptr i32, i32* %r474, i32 2 +%r486 = load i32, i32* %r485 +%r487 = zext i32 %r486 to i96 +%r488 = shl i96 %r487, 64 +%r489 = or i96 %r483, %r488 +%r490 = zext i96 %r489 to i128 +%r492 = getelementptr i32, i32* %r474, i32 3 +%r493 = load i32, i32* %r492 +%r494 = zext i32 %r493 to i128 +%r495 = shl i128 %r494, 96 +%r496 = or i128 %r490, %r495 +%r497 = zext i128 %r496 to i160 +%r499 = getelementptr i32, i32* %r474, i32 4 +%r500 = load i32, i32* %r499 +%r501 = zext i32 %r500 to i160 +%r502 = shl i160 %r501, 128 +%r503 = or i160 %r497, %r502 +%r504 = zext i160 %r503 to i192 +%r506 = getelementptr i32, i32* %r474, i32 5 +%r507 = load i32, i32* %r506 +%r508 = zext i32 %r507 to i192 +%r509 = shl i192 %r508, 160 +%r510 = or i192 %r504, %r509 +%r511 = zext i192 %r510 to i224 +%r513 = getelementptr i32, i32* %r474, i32 6 %r514 = load i32, i32* %r513 -%r515 = zext i32 %r514 to i64 -%r516 = shl i64 %r515, 32 -%r517 = or i64 %r511, %r516 -%r518 = zext i64 %r517 to i96 -%r520 = getelementptr i32, i32* %r4, i32 2 +%r515 = zext i32 %r514 to i224 +%r516 = shl i224 %r515, 192 +%r517 = or i224 %r511, %r516 +%r518 = zext i224 %r517 to i256 +%r520 = getelementptr i32, i32* %r474, i32 7 %r521 = load i32, i32* %r520 -%r522 = zext i32 %r521 to i96 -%r523 = shl i96 %r522, 64 -%r524 = or i96 %r518, %r523 -%r525 = zext i96 %r524 to i128 -%r527 = getelementptr i32, i32* %r4, i32 3 +%r522 = zext i32 %r521 to i256 +%r523 = shl i256 %r522, 224 +%r524 = or i256 %r518, %r523 +%r525 = zext i256 %r524 to i288 +%r527 = getelementptr i32, i32* %r474, i32 8 %r528 = load i32, i32* %r527 -%r529 = zext i32 %r528 to i128 -%r530 = shl i128 %r529, 96 -%r531 = or i128 %r525, %r530 -%r532 = zext i128 %r531 to i160 -%r534 = getelementptr i32, i32* %r4, i32 4 +%r529 = zext i32 %r528 to i288 +%r530 = shl i288 %r529, 256 +%r531 = or i288 %r525, %r530 +%r532 = zext i288 %r531 to i320 +%r534 = getelementptr i32, i32* %r474, i32 9 %r535 = load i32, i32* %r534 -%r536 = zext i32 %r535 to i160 -%r537 = shl i160 %r536, 128 -%r538 = or i160 %r532, %r537 -%r539 = zext i160 %r538 to i192 -%r541 = getelementptr i32, i32* %r4, i32 5 +%r536 = zext i32 %r535 to i320 +%r537 = shl i320 %r536, 288 +%r538 = or i320 %r532, %r537 +%r539 = zext i320 %r538 to i352 +%r541 = getelementptr i32, i32* %r474, i32 10 %r542 = load i32, i32* %r541 -%r543 = zext i32 %r542 to i192 -%r544 = shl i192 %r543, 160 -%r545 = or i192 %r539, %r544 -%r546 = zext i192 %r545 to i224 -%r548 = getelementptr i32, i32* %r4, i32 6 +%r543 = zext i32 %r542 to i352 +%r544 = shl i352 %r543, 320 +%r545 = or i352 %r539, %r544 +%r546 = zext i352 %r545 to i384 +%r548 = getelementptr i32, i32* %r474, i32 11 %r549 = load i32, i32* %r548 -%r550 = zext i32 %r549 to i224 -%r551 = shl i224 %r550, 192 -%r552 = or i224 %r546, %r551 -%r553 = zext i224 %r552 to i256 -%r555 = getelementptr i32, i32* %r4, i32 7 +%r550 = zext i32 %r549 to i384 +%r551 = shl i384 %r550, 352 +%r552 = or i384 %r546, %r551 +%r553 = zext i384 %r552 to i416 +%r555 = getelementptr i32, i32* %r474, i32 12 %r556 = load i32, i32* %r555 -%r557 = zext i32 %r556 to i256 -%r558 = shl i256 %r557, 224 -%r559 = or i256 %r553, %r558 -%r560 = zext i256 %r559 to i288 -%r562 = getelementptr i32, i32* %r4, i32 8 +%r557 = zext i32 %r556 to i416 +%r558 = shl i416 %r557, 384 +%r559 = or i416 %r553, %r558 +%r560 = zext i416 %r559 to i448 +%r562 = getelementptr i32, i32* %r474, i32 13 %r563 = load i32, i32* %r562 -%r564 = zext i32 %r563 to i288 -%r565 = shl i288 %r564, 256 -%r566 = or i288 %r560, %r565 -%r567 = zext i288 %r566 to i320 -%r569 = getelementptr i32, i32* %r4, i32 9 +%r564 = zext i32 %r563 to i448 +%r565 = shl i448 %r564, 416 +%r566 = or i448 %r560, %r565 +%r567 = zext i448 %r566 to i480 +%r569 = getelementptr i32, i32* %r474, i32 14 %r570 = load i32, i32* %r569 -%r571 = zext i32 %r570 to i320 -%r572 = shl i320 %r571, 288 -%r573 = or i320 %r567, %r572 -%r574 = zext i320 %r573 to i352 -%r576 = getelementptr i32, i32* %r4, i32 10 +%r571 = zext i32 %r570 to i480 +%r572 = shl i480 %r571, 448 +%r573 = or i480 %r567, %r572 +%r574 = zext i480 %r573 to i512 +%r576 = getelementptr i32, i32* %r474, i32 15 %r577 = load i32, i32* %r576 -%r578 = zext i32 %r577 to i352 -%r579 = shl i352 %r578, 320 -%r580 = or i352 %r574, %r579 -%r581 = zext i352 %r580 to i384 -%r583 = getelementptr i32, i32* %r4, i32 11 +%r578 = zext i32 %r577 to i512 +%r579 = shl i512 %r578, 480 +%r580 = or i512 %r574, %r579 +%r581 = zext i512 %r580 to i544 +%r583 = getelementptr i32, i32* %r474, i32 16 %r584 = load i32, i32* %r583 -%r585 = zext i32 %r584 to i384 -%r586 = shl i384 %r585, 352 -%r587 = or i384 %r581, %r586 -%r588 = zext i384 %r587 to i416 -%r590 = getelementptr i32, i32* %r4, i32 12 +%r585 = zext i32 %r584 to i544 +%r586 = shl i544 %r585, 512 +%r587 = or i544 %r581, %r586 +%r588 = zext i544 %r587 to i576 +%r590 = getelementptr i32, i32* %r474, i32 17 %r591 = load i32, i32* %r590 -%r592 = zext i32 %r591 to i416 -%r593 = shl i416 %r592, 384 -%r594 = or i416 %r588, %r593 -%r595 = zext i416 %r594 to i448 -%r597 = getelementptr i32, i32* %r4, i32 13 -%r598 = load i32, i32* %r597 -%r599 = zext i32 %r598 to i448 -%r600 = shl i448 %r599, 416 -%r601 = or i448 %r595, %r600 -%r602 = zext i448 %r601 to i480 -%r604 = getelementptr i32, i32* %r4, i32 14 -%r605 = load i32, i32* %r604 -%r606 = zext i32 %r605 to i480 -%r607 = shl i480 %r606, 448 -%r608 = or i480 %r602, %r607 -%r609 = zext i480 %r608 to i512 -%r611 = getelementptr i32, i32* %r4, i32 15 -%r612 = load i32, i32* %r611 -%r613 = zext i32 %r612 to i512 -%r614 = shl i512 %r613, 480 -%r615 = or i512 %r609, %r614 -%r616 = zext i512 %r615 to i544 -%r617 = sub i544 %r509, %r616 -%r618 = lshr i544 %r617, 512 -%r619 = trunc i544 %r618 to i1 -%r620 = select i1 %r619, i544 %r509, i544 %r617 -%r621 = trunc i544 %r620 to i512 -%r623 = getelementptr i32, i32* %r1, i32 16 -%r624 = trunc i512 %r621 to i32 -%r626 = getelementptr i32, i32* %r623, i32 0 -store i32 %r624, i32* %r626 -%r627 = lshr i512 %r621, 32 -%r628 = trunc i512 %r627 to i32 -%r630 = getelementptr i32, i32* %r623, i32 1 -store i32 %r628, i32* %r630 -%r631 = lshr i512 %r627, 32 -%r632 = trunc i512 %r631 to i32 -%r634 = getelementptr i32, i32* %r623, i32 2 -store i32 %r632, i32* %r634 -%r635 = lshr i512 %r631, 32 -%r636 = trunc i512 %r635 to i32 -%r638 = getelementptr i32, i32* %r623, i32 3 -store i32 %r636, i32* %r638 -%r639 = lshr i512 %r635, 32 -%r640 = trunc i512 %r639 to i32 -%r642 = getelementptr i32, i32* %r623, i32 4 -store i32 %r640, i32* %r642 -%r643 = lshr i512 %r639, 32 -%r644 = trunc i512 %r643 to i32 -%r646 = getelementptr i32, i32* %r623, i32 5 -store i32 %r644, i32* %r646 -%r647 = lshr i512 %r643, 32 -%r648 = trunc i512 %r647 to i32 -%r650 = getelementptr i32, i32* %r623, i32 6 -store i32 %r648, i32* %r650 -%r651 = lshr i512 %r647, 32 -%r652 = trunc i512 %r651 to i32 -%r654 = getelementptr i32, i32* %r623, i32 7 -store i32 %r652, i32* %r654 -%r655 = lshr i512 %r651, 32 -%r656 = trunc i512 %r655 to i32 -%r658 = getelementptr i32, i32* %r623, i32 8 -store i32 %r656, i32* %r658 -%r659 = lshr i512 %r655, 32 -%r660 = trunc i512 %r659 to i32 -%r662 = getelementptr i32, i32* %r623, i32 9 -store i32 %r660, i32* %r662 -%r663 = lshr i512 %r659, 32 -%r664 = trunc i512 %r663 to i32 -%r666 = getelementptr i32, i32* %r623, i32 10 -store i32 %r664, i32* %r666 -%r667 = lshr i512 %r663, 32 -%r668 = trunc i512 %r667 to i32 -%r670 = getelementptr i32, i32* %r623, i32 11 -store i32 %r668, i32* %r670 -%r671 = lshr i512 %r667, 32 -%r672 = trunc i512 %r671 to i32 -%r674 = getelementptr i32, i32* %r623, i32 12 -store i32 %r672, i32* %r674 -%r675 = lshr i512 %r671, 32 -%r676 = trunc i512 %r675 to i32 -%r678 = getelementptr i32, i32* %r623, i32 13 -store i32 %r676, i32* %r678 -%r679 = lshr i512 %r675, 32 -%r680 = trunc i512 %r679 to i32 -%r682 = getelementptr i32, i32* %r623, i32 14 -store i32 %r680, i32* %r682 -%r683 = lshr i512 %r679, 32 -%r684 = trunc i512 %r683 to i32 -%r686 = getelementptr i32, i32* %r623, i32 15 -store i32 %r684, i32* %r686 +%r592 = zext i32 %r591 to i576 +%r593 = shl i576 %r592, 544 +%r594 = or i576 %r588, %r593 +%r595 = add i576 %r472, %r594 +%r597 = getelementptr i32, i32* %r1, i32 6 +%r599 = getelementptr i32, i32* %r597, i32 0 +%r600 = trunc i576 %r595 to i32 +store i32 %r600, i32* %r599 +%r601 = lshr i576 %r595, 32 +%r603 = getelementptr i32, i32* %r597, i32 1 +%r604 = trunc i576 %r601 to i32 +store i32 %r604, i32* %r603 +%r605 = lshr i576 %r601, 32 +%r607 = getelementptr i32, i32* %r597, i32 2 +%r608 = trunc i576 %r605 to i32 +store i32 %r608, i32* %r607 +%r609 = lshr i576 %r605, 32 +%r611 = getelementptr i32, i32* %r597, i32 3 +%r612 = trunc i576 %r609 to i32 +store i32 %r612, i32* %r611 +%r613 = lshr i576 %r609, 32 +%r615 = getelementptr i32, i32* %r597, i32 4 +%r616 = trunc i576 %r613 to i32 +store i32 %r616, i32* %r615 +%r617 = lshr i576 %r613, 32 +%r619 = getelementptr i32, i32* %r597, i32 5 +%r620 = trunc i576 %r617 to i32 +store i32 %r620, i32* %r619 +%r621 = lshr i576 %r617, 32 +%r623 = getelementptr i32, i32* %r597, i32 6 +%r624 = trunc i576 %r621 to i32 +store i32 %r624, i32* %r623 +%r625 = lshr i576 %r621, 32 +%r627 = getelementptr i32, i32* %r597, i32 7 +%r628 = trunc i576 %r625 to i32 +store i32 %r628, i32* %r627 +%r629 = lshr i576 %r625, 32 +%r631 = getelementptr i32, i32* %r597, i32 8 +%r632 = trunc i576 %r629 to i32 +store i32 %r632, i32* %r631 +%r633 = lshr i576 %r629, 32 +%r635 = getelementptr i32, i32* %r597, i32 9 +%r636 = trunc i576 %r633 to i32 +store i32 %r636, i32* %r635 +%r637 = lshr i576 %r633, 32 +%r639 = getelementptr i32, i32* %r597, i32 10 +%r640 = trunc i576 %r637 to i32 +store i32 %r640, i32* %r639 +%r641 = lshr i576 %r637, 32 +%r643 = getelementptr i32, i32* %r597, i32 11 +%r644 = trunc i576 %r641 to i32 +store i32 %r644, i32* %r643 +%r645 = lshr i576 %r641, 32 +%r647 = getelementptr i32, i32* %r597, i32 12 +%r648 = trunc i576 %r645 to i32 +store i32 %r648, i32* %r647 +%r649 = lshr i576 %r645, 32 +%r651 = getelementptr i32, i32* %r597, i32 13 +%r652 = trunc i576 %r649 to i32 +store i32 %r652, i32* %r651 +%r653 = lshr i576 %r649, 32 +%r655 = getelementptr i32, i32* %r597, i32 14 +%r656 = trunc i576 %r653 to i32 +store i32 %r656, i32* %r655 +%r657 = lshr i576 %r653, 32 +%r659 = getelementptr i32, i32* %r597, i32 15 +%r660 = trunc i576 %r657 to i32 +store i32 %r660, i32* %r659 +%r661 = lshr i576 %r657, 32 +%r663 = getelementptr i32, i32* %r597, i32 16 +%r664 = trunc i576 %r661 to i32 +store i32 %r664, i32* %r663 +%r665 = lshr i576 %r661, 32 +%r667 = getelementptr i32, i32* %r597, i32 17 +%r668 = trunc i576 %r665 to i32 +store i32 %r668, i32* %r667 +ret void +} +define void @mcl_fp_mont12L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +{ +%r6 = getelementptr i32, i32* %r4, i32 -1 +%r7 = load i32, i32* %r6 +%r9 = getelementptr i32, i32* %r3, i32 0 +%r10 = load i32, i32* %r9 +%r11 = call i416 @mulPv384x32(i32* %r2, i32 %r10) +%r12 = zext i416 %r11 to i448 +%r13 = trunc i416 %r11 to i32 +%r14 = mul i32 %r13, %r7 +%r15 = call i416 @mulPv384x32(i32* %r4, i32 %r14) +%r16 = zext i416 %r15 to i448 +%r17 = add i448 %r12, %r16 +%r18 = lshr i448 %r17, 32 +%r20 = getelementptr i32, i32* %r3, i32 1 +%r21 = load i32, i32* %r20 +%r22 = call i416 @mulPv384x32(i32* %r2, i32 %r21) +%r23 = zext i416 %r22 to i448 +%r24 = add i448 %r18, %r23 +%r25 = trunc i448 %r24 to i32 +%r26 = mul i32 %r25, %r7 +%r27 = call i416 @mulPv384x32(i32* %r4, i32 %r26) +%r28 = zext i416 %r27 to i448 +%r29 = add i448 %r24, %r28 +%r30 = lshr i448 %r29, 32 +%r32 = getelementptr i32, i32* %r3, i32 2 +%r33 = load i32, i32* %r32 +%r34 = call i416 @mulPv384x32(i32* %r2, i32 %r33) +%r35 = zext i416 %r34 to i448 +%r36 = add i448 %r30, %r35 +%r37 = trunc i448 %r36 to i32 +%r38 = mul i32 %r37, %r7 +%r39 = call i416 @mulPv384x32(i32* %r4, i32 %r38) +%r40 = zext i416 %r39 to i448 +%r41 = add i448 %r36, %r40 +%r42 = lshr i448 %r41, 32 +%r44 = getelementptr i32, i32* %r3, i32 3 +%r45 = load i32, i32* %r44 +%r46 = call i416 @mulPv384x32(i32* %r2, i32 %r45) +%r47 = zext i416 %r46 to i448 +%r48 = add i448 %r42, %r47 +%r49 = trunc i448 %r48 to i32 +%r50 = mul i32 %r49, %r7 +%r51 = call i416 @mulPv384x32(i32* %r4, i32 %r50) +%r52 = zext i416 %r51 to i448 +%r53 = add i448 %r48, %r52 +%r54 = lshr i448 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 4 +%r57 = load i32, i32* %r56 +%r58 = call i416 @mulPv384x32(i32* %r2, i32 %r57) +%r59 = zext i416 %r58 to i448 +%r60 = add i448 %r54, %r59 +%r61 = trunc i448 %r60 to i32 +%r62 = mul i32 %r61, %r7 +%r63 = call i416 @mulPv384x32(i32* %r4, i32 %r62) +%r64 = zext i416 %r63 to i448 +%r65 = add i448 %r60, %r64 +%r66 = lshr i448 %r65, 32 +%r68 = getelementptr i32, i32* %r3, i32 5 +%r69 = load i32, i32* %r68 +%r70 = call i416 @mulPv384x32(i32* %r2, i32 %r69) +%r71 = zext i416 %r70 to i448 +%r72 = add i448 %r66, %r71 +%r73 = trunc i448 %r72 to i32 +%r74 = mul i32 %r73, %r7 +%r75 = call i416 @mulPv384x32(i32* %r4, i32 %r74) +%r76 = zext i416 %r75 to i448 +%r77 = add i448 %r72, %r76 +%r78 = lshr i448 %r77, 32 +%r80 = getelementptr i32, i32* %r3, i32 6 +%r81 = load i32, i32* %r80 +%r82 = call i416 @mulPv384x32(i32* %r2, i32 %r81) +%r83 = zext i416 %r82 to i448 +%r84 = add i448 %r78, %r83 +%r85 = trunc i448 %r84 to i32 +%r86 = mul i32 %r85, %r7 +%r87 = call i416 @mulPv384x32(i32* %r4, i32 %r86) +%r88 = zext i416 %r87 to i448 +%r89 = add i448 %r84, %r88 +%r90 = lshr i448 %r89, 32 +%r92 = getelementptr i32, i32* %r3, i32 7 +%r93 = load i32, i32* %r92 +%r94 = call i416 @mulPv384x32(i32* %r2, i32 %r93) +%r95 = zext i416 %r94 to i448 +%r96 = add i448 %r90, %r95 +%r97 = trunc i448 %r96 to i32 +%r98 = mul i32 %r97, %r7 +%r99 = call i416 @mulPv384x32(i32* %r4, i32 %r98) +%r100 = zext i416 %r99 to i448 +%r101 = add i448 %r96, %r100 +%r102 = lshr i448 %r101, 32 +%r104 = getelementptr i32, i32* %r3, i32 8 +%r105 = load i32, i32* %r104 +%r106 = call i416 @mulPv384x32(i32* %r2, i32 %r105) +%r107 = zext i416 %r106 to i448 +%r108 = add i448 %r102, %r107 +%r109 = trunc i448 %r108 to i32 +%r110 = mul i32 %r109, %r7 +%r111 = call i416 @mulPv384x32(i32* %r4, i32 %r110) +%r112 = zext i416 %r111 to i448 +%r113 = add i448 %r108, %r112 +%r114 = lshr i448 %r113, 32 +%r116 = getelementptr i32, i32* %r3, i32 9 +%r117 = load i32, i32* %r116 +%r118 = call i416 @mulPv384x32(i32* %r2, i32 %r117) +%r119 = zext i416 %r118 to i448 +%r120 = add i448 %r114, %r119 +%r121 = trunc i448 %r120 to i32 +%r122 = mul i32 %r121, %r7 +%r123 = call i416 @mulPv384x32(i32* %r4, i32 %r122) +%r124 = zext i416 %r123 to i448 +%r125 = add i448 %r120, %r124 +%r126 = lshr i448 %r125, 32 +%r128 = getelementptr i32, i32* %r3, i32 10 +%r129 = load i32, i32* %r128 +%r130 = call i416 @mulPv384x32(i32* %r2, i32 %r129) +%r131 = zext i416 %r130 to i448 +%r132 = add i448 %r126, %r131 +%r133 = trunc i448 %r132 to i32 +%r134 = mul i32 %r133, %r7 +%r135 = call i416 @mulPv384x32(i32* %r4, i32 %r134) +%r136 = zext i416 %r135 to i448 +%r137 = add i448 %r132, %r136 +%r138 = lshr i448 %r137, 32 +%r140 = getelementptr i32, i32* %r3, i32 11 +%r141 = load i32, i32* %r140 +%r142 = call i416 @mulPv384x32(i32* %r2, i32 %r141) +%r143 = zext i416 %r142 to i448 +%r144 = add i448 %r138, %r143 +%r145 = trunc i448 %r144 to i32 +%r146 = mul i32 %r145, %r7 +%r147 = call i416 @mulPv384x32(i32* %r4, i32 %r146) +%r148 = zext i416 %r147 to i448 +%r149 = add i448 %r144, %r148 +%r150 = lshr i448 %r149, 32 +%r151 = trunc i448 %r150 to i416 +%r152 = load i32, i32* %r4 +%r153 = zext i32 %r152 to i64 +%r155 = getelementptr i32, i32* %r4, i32 1 +%r156 = load i32, i32* %r155 +%r157 = zext i32 %r156 to i64 +%r158 = shl i64 %r157, 32 +%r159 = or i64 %r153, %r158 +%r160 = zext i64 %r159 to i96 +%r162 = getelementptr i32, i32* %r4, i32 2 +%r163 = load i32, i32* %r162 +%r164 = zext i32 %r163 to i96 +%r165 = shl i96 %r164, 64 +%r166 = or i96 %r160, %r165 +%r167 = zext i96 %r166 to i128 +%r169 = getelementptr i32, i32* %r4, i32 3 +%r170 = load i32, i32* %r169 +%r171 = zext i32 %r170 to i128 +%r172 = shl i128 %r171, 96 +%r173 = or i128 %r167, %r172 +%r174 = zext i128 %r173 to i160 +%r176 = getelementptr i32, i32* %r4, i32 4 +%r177 = load i32, i32* %r176 +%r178 = zext i32 %r177 to i160 +%r179 = shl i160 %r178, 128 +%r180 = or i160 %r174, %r179 +%r181 = zext i160 %r180 to i192 +%r183 = getelementptr i32, i32* %r4, i32 5 +%r184 = load i32, i32* %r183 +%r185 = zext i32 %r184 to i192 +%r186 = shl i192 %r185, 160 +%r187 = or i192 %r181, %r186 +%r188 = zext i192 %r187 to i224 +%r190 = getelementptr i32, i32* %r4, i32 6 +%r191 = load i32, i32* %r190 +%r192 = zext i32 %r191 to i224 +%r193 = shl i224 %r192, 192 +%r194 = or i224 %r188, %r193 +%r195 = zext i224 %r194 to i256 +%r197 = getelementptr i32, i32* %r4, i32 7 +%r198 = load i32, i32* %r197 +%r199 = zext i32 %r198 to i256 +%r200 = shl i256 %r199, 224 +%r201 = or i256 %r195, %r200 +%r202 = zext i256 %r201 to i288 +%r204 = getelementptr i32, i32* %r4, i32 8 +%r205 = load i32, i32* %r204 +%r206 = zext i32 %r205 to i288 +%r207 = shl i288 %r206, 256 +%r208 = or i288 %r202, %r207 +%r209 = zext i288 %r208 to i320 +%r211 = getelementptr i32, i32* %r4, i32 9 +%r212 = load i32, i32* %r211 +%r213 = zext i32 %r212 to i320 +%r214 = shl i320 %r213, 288 +%r215 = or i320 %r209, %r214 +%r216 = zext i320 %r215 to i352 +%r218 = getelementptr i32, i32* %r4, i32 10 +%r219 = load i32, i32* %r218 +%r220 = zext i32 %r219 to i352 +%r221 = shl i352 %r220, 320 +%r222 = or i352 %r216, %r221 +%r223 = zext i352 %r222 to i384 +%r225 = getelementptr i32, i32* %r4, i32 11 +%r226 = load i32, i32* %r225 +%r227 = zext i32 %r226 to i384 +%r228 = shl i384 %r227, 352 +%r229 = or i384 %r223, %r228 +%r230 = zext i384 %r229 to i416 +%r231 = sub i416 %r151, %r230 +%r232 = lshr i416 %r231, 384 +%r233 = trunc i416 %r232 to i1 +%r234 = select i1 %r233, i416 %r151, i416 %r231 +%r235 = trunc i416 %r234 to i384 +%r237 = getelementptr i32, i32* %r1, i32 0 +%r238 = trunc i384 %r235 to i32 +store i32 %r238, i32* %r237 +%r239 = lshr i384 %r235, 32 +%r241 = getelementptr i32, i32* %r1, i32 1 +%r242 = trunc i384 %r239 to i32 +store i32 %r242, i32* %r241 +%r243 = lshr i384 %r239, 32 +%r245 = getelementptr i32, i32* %r1, i32 2 +%r246 = trunc i384 %r243 to i32 +store i32 %r246, i32* %r245 +%r247 = lshr i384 %r243, 32 +%r249 = getelementptr i32, i32* %r1, i32 3 +%r250 = trunc i384 %r247 to i32 +store i32 %r250, i32* %r249 +%r251 = lshr i384 %r247, 32 +%r253 = getelementptr i32, i32* %r1, i32 4 +%r254 = trunc i384 %r251 to i32 +store i32 %r254, i32* %r253 +%r255 = lshr i384 %r251, 32 +%r257 = getelementptr i32, i32* %r1, i32 5 +%r258 = trunc i384 %r255 to i32 +store i32 %r258, i32* %r257 +%r259 = lshr i384 %r255, 32 +%r261 = getelementptr i32, i32* %r1, i32 6 +%r262 = trunc i384 %r259 to i32 +store i32 %r262, i32* %r261 +%r263 = lshr i384 %r259, 32 +%r265 = getelementptr i32, i32* %r1, i32 7 +%r266 = trunc i384 %r263 to i32 +store i32 %r266, i32* %r265 +%r267 = lshr i384 %r263, 32 +%r269 = getelementptr i32, i32* %r1, i32 8 +%r270 = trunc i384 %r267 to i32 +store i32 %r270, i32* %r269 +%r271 = lshr i384 %r267, 32 +%r273 = getelementptr i32, i32* %r1, i32 9 +%r274 = trunc i384 %r271 to i32 +store i32 %r274, i32* %r273 +%r275 = lshr i384 %r271, 32 +%r277 = getelementptr i32, i32* %r1, i32 10 +%r278 = trunc i384 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i384 %r275, 32 +%r281 = getelementptr i32, i32* %r1, i32 11 +%r282 = trunc i384 %r279 to i32 +store i32 %r282, i32* %r281 +ret void +} +define void @mcl_fp_montNF12L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +{ +%r6 = getelementptr i32, i32* %r4, i32 -1 +%r7 = load i32, i32* %r6 +%r8 = load i32, i32* %r3 +%r9 = call i416 @mulPv384x32(i32* %r2, i32 %r8) +%r10 = trunc i416 %r9 to i32 +%r11 = mul i32 %r10, %r7 +%r12 = call i416 @mulPv384x32(i32* %r4, i32 %r11) +%r13 = add i416 %r9, %r12 +%r14 = lshr i416 %r13, 32 +%r16 = getelementptr i32, i32* %r3, i32 1 +%r17 = load i32, i32* %r16 +%r18 = call i416 @mulPv384x32(i32* %r2, i32 %r17) +%r19 = add i416 %r14, %r18 +%r20 = trunc i416 %r19 to i32 +%r21 = mul i32 %r20, %r7 +%r22 = call i416 @mulPv384x32(i32* %r4, i32 %r21) +%r23 = add i416 %r19, %r22 +%r24 = lshr i416 %r23, 32 +%r26 = getelementptr i32, i32* %r3, i32 2 +%r27 = load i32, i32* %r26 +%r28 = call i416 @mulPv384x32(i32* %r2, i32 %r27) +%r29 = add i416 %r24, %r28 +%r30 = trunc i416 %r29 to i32 +%r31 = mul i32 %r30, %r7 +%r32 = call i416 @mulPv384x32(i32* %r4, i32 %r31) +%r33 = add i416 %r29, %r32 +%r34 = lshr i416 %r33, 32 +%r36 = getelementptr i32, i32* %r3, i32 3 +%r37 = load i32, i32* %r36 +%r38 = call i416 @mulPv384x32(i32* %r2, i32 %r37) +%r39 = add i416 %r34, %r38 +%r40 = trunc i416 %r39 to i32 +%r41 = mul i32 %r40, %r7 +%r42 = call i416 @mulPv384x32(i32* %r4, i32 %r41) +%r43 = add i416 %r39, %r42 +%r44 = lshr i416 %r43, 32 +%r46 = getelementptr i32, i32* %r3, i32 4 +%r47 = load i32, i32* %r46 +%r48 = call i416 @mulPv384x32(i32* %r2, i32 %r47) +%r49 = add i416 %r44, %r48 +%r50 = trunc i416 %r49 to i32 +%r51 = mul i32 %r50, %r7 +%r52 = call i416 @mulPv384x32(i32* %r4, i32 %r51) +%r53 = add i416 %r49, %r52 +%r54 = lshr i416 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 5 +%r57 = load i32, i32* %r56 +%r58 = call i416 @mulPv384x32(i32* %r2, i32 %r57) +%r59 = add i416 %r54, %r58 +%r60 = trunc i416 %r59 to i32 +%r61 = mul i32 %r60, %r7 +%r62 = call i416 @mulPv384x32(i32* %r4, i32 %r61) +%r63 = add i416 %r59, %r62 +%r64 = lshr i416 %r63, 32 +%r66 = getelementptr i32, i32* %r3, i32 6 +%r67 = load i32, i32* %r66 +%r68 = call i416 @mulPv384x32(i32* %r2, i32 %r67) +%r69 = add i416 %r64, %r68 +%r70 = trunc i416 %r69 to i32 +%r71 = mul i32 %r70, %r7 +%r72 = call i416 @mulPv384x32(i32* %r4, i32 %r71) +%r73 = add i416 %r69, %r72 +%r74 = lshr i416 %r73, 32 +%r76 = getelementptr i32, i32* %r3, i32 7 +%r77 = load i32, i32* %r76 +%r78 = call i416 @mulPv384x32(i32* %r2, i32 %r77) +%r79 = add i416 %r74, %r78 +%r80 = trunc i416 %r79 to i32 +%r81 = mul i32 %r80, %r7 +%r82 = call i416 @mulPv384x32(i32* %r4, i32 %r81) +%r83 = add i416 %r79, %r82 +%r84 = lshr i416 %r83, 32 +%r86 = getelementptr i32, i32* %r3, i32 8 +%r87 = load i32, i32* %r86 +%r88 = call i416 @mulPv384x32(i32* %r2, i32 %r87) +%r89 = add i416 %r84, %r88 +%r90 = trunc i416 %r89 to i32 +%r91 = mul i32 %r90, %r7 +%r92 = call i416 @mulPv384x32(i32* %r4, i32 %r91) +%r93 = add i416 %r89, %r92 +%r94 = lshr i416 %r93, 32 +%r96 = getelementptr i32, i32* %r3, i32 9 +%r97 = load i32, i32* %r96 +%r98 = call i416 @mulPv384x32(i32* %r2, i32 %r97) +%r99 = add i416 %r94, %r98 +%r100 = trunc i416 %r99 to i32 +%r101 = mul i32 %r100, %r7 +%r102 = call i416 @mulPv384x32(i32* %r4, i32 %r101) +%r103 = add i416 %r99, %r102 +%r104 = lshr i416 %r103, 32 +%r106 = getelementptr i32, i32* %r3, i32 10 +%r107 = load i32, i32* %r106 +%r108 = call i416 @mulPv384x32(i32* %r2, i32 %r107) +%r109 = add i416 %r104, %r108 +%r110 = trunc i416 %r109 to i32 +%r111 = mul i32 %r110, %r7 +%r112 = call i416 @mulPv384x32(i32* %r4, i32 %r111) +%r113 = add i416 %r109, %r112 +%r114 = lshr i416 %r113, 32 +%r116 = getelementptr i32, i32* %r3, i32 11 +%r117 = load i32, i32* %r116 +%r118 = call i416 @mulPv384x32(i32* %r2, i32 %r117) +%r119 = add i416 %r114, %r118 +%r120 = trunc i416 %r119 to i32 +%r121 = mul i32 %r120, %r7 +%r122 = call i416 @mulPv384x32(i32* %r4, i32 %r121) +%r123 = add i416 %r119, %r122 +%r124 = lshr i416 %r123, 32 +%r125 = trunc i416 %r124 to i384 +%r126 = load i32, i32* %r4 +%r127 = zext i32 %r126 to i64 +%r129 = getelementptr i32, i32* %r4, i32 1 +%r130 = load i32, i32* %r129 +%r131 = zext i32 %r130 to i64 +%r132 = shl i64 %r131, 32 +%r133 = or i64 %r127, %r132 +%r134 = zext i64 %r133 to i96 +%r136 = getelementptr i32, i32* %r4, i32 2 +%r137 = load i32, i32* %r136 +%r138 = zext i32 %r137 to i96 +%r139 = shl i96 %r138, 64 +%r140 = or i96 %r134, %r139 +%r141 = zext i96 %r140 to i128 +%r143 = getelementptr i32, i32* %r4, i32 3 +%r144 = load i32, i32* %r143 +%r145 = zext i32 %r144 to i128 +%r146 = shl i128 %r145, 96 +%r147 = or i128 %r141, %r146 +%r148 = zext i128 %r147 to i160 +%r150 = getelementptr i32, i32* %r4, i32 4 +%r151 = load i32, i32* %r150 +%r152 = zext i32 %r151 to i160 +%r153 = shl i160 %r152, 128 +%r154 = or i160 %r148, %r153 +%r155 = zext i160 %r154 to i192 +%r157 = getelementptr i32, i32* %r4, i32 5 +%r158 = load i32, i32* %r157 +%r159 = zext i32 %r158 to i192 +%r160 = shl i192 %r159, 160 +%r161 = or i192 %r155, %r160 +%r162 = zext i192 %r161 to i224 +%r164 = getelementptr i32, i32* %r4, i32 6 +%r165 = load i32, i32* %r164 +%r166 = zext i32 %r165 to i224 +%r167 = shl i224 %r166, 192 +%r168 = or i224 %r162, %r167 +%r169 = zext i224 %r168 to i256 +%r171 = getelementptr i32, i32* %r4, i32 7 +%r172 = load i32, i32* %r171 +%r173 = zext i32 %r172 to i256 +%r174 = shl i256 %r173, 224 +%r175 = or i256 %r169, %r174 +%r176 = zext i256 %r175 to i288 +%r178 = getelementptr i32, i32* %r4, i32 8 +%r179 = load i32, i32* %r178 +%r180 = zext i32 %r179 to i288 +%r181 = shl i288 %r180, 256 +%r182 = or i288 %r176, %r181 +%r183 = zext i288 %r182 to i320 +%r185 = getelementptr i32, i32* %r4, i32 9 +%r186 = load i32, i32* %r185 +%r187 = zext i32 %r186 to i320 +%r188 = shl i320 %r187, 288 +%r189 = or i320 %r183, %r188 +%r190 = zext i320 %r189 to i352 +%r192 = getelementptr i32, i32* %r4, i32 10 +%r193 = load i32, i32* %r192 +%r194 = zext i32 %r193 to i352 +%r195 = shl i352 %r194, 320 +%r196 = or i352 %r190, %r195 +%r197 = zext i352 %r196 to i384 +%r199 = getelementptr i32, i32* %r4, i32 11 +%r200 = load i32, i32* %r199 +%r201 = zext i32 %r200 to i384 +%r202 = shl i384 %r201, 352 +%r203 = or i384 %r197, %r202 +%r204 = sub i384 %r125, %r203 +%r205 = lshr i384 %r204, 383 +%r206 = trunc i384 %r205 to i1 +%r207 = select i1 %r206, i384 %r125, i384 %r204 +%r209 = getelementptr i32, i32* %r1, i32 0 +%r210 = trunc i384 %r207 to i32 +store i32 %r210, i32* %r209 +%r211 = lshr i384 %r207, 32 +%r213 = getelementptr i32, i32* %r1, i32 1 +%r214 = trunc i384 %r211 to i32 +store i32 %r214, i32* %r213 +%r215 = lshr i384 %r211, 32 +%r217 = getelementptr i32, i32* %r1, i32 2 +%r218 = trunc i384 %r215 to i32 +store i32 %r218, i32* %r217 +%r219 = lshr i384 %r215, 32 +%r221 = getelementptr i32, i32* %r1, i32 3 +%r222 = trunc i384 %r219 to i32 +store i32 %r222, i32* %r221 +%r223 = lshr i384 %r219, 32 +%r225 = getelementptr i32, i32* %r1, i32 4 +%r226 = trunc i384 %r223 to i32 +store i32 %r226, i32* %r225 +%r227 = lshr i384 %r223, 32 +%r229 = getelementptr i32, i32* %r1, i32 5 +%r230 = trunc i384 %r227 to i32 +store i32 %r230, i32* %r229 +%r231 = lshr i384 %r227, 32 +%r233 = getelementptr i32, i32* %r1, i32 6 +%r234 = trunc i384 %r231 to i32 +store i32 %r234, i32* %r233 +%r235 = lshr i384 %r231, 32 +%r237 = getelementptr i32, i32* %r1, i32 7 +%r238 = trunc i384 %r235 to i32 +store i32 %r238, i32* %r237 +%r239 = lshr i384 %r235, 32 +%r241 = getelementptr i32, i32* %r1, i32 8 +%r242 = trunc i384 %r239 to i32 +store i32 %r242, i32* %r241 +%r243 = lshr i384 %r239, 32 +%r245 = getelementptr i32, i32* %r1, i32 9 +%r246 = trunc i384 %r243 to i32 +store i32 %r246, i32* %r245 +%r247 = lshr i384 %r243, 32 +%r249 = getelementptr i32, i32* %r1, i32 10 +%r250 = trunc i384 %r247 to i32 +store i32 %r250, i32* %r249 +%r251 = lshr i384 %r247, 32 +%r253 = getelementptr i32, i32* %r1, i32 11 +%r254 = trunc i384 %r251 to i32 +store i32 %r254, i32* %r253 +ret void +} +define void @mcl_fp_montRed12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = zext i224 %r49 to i256 +%r52 = getelementptr i32, i32* %r3, i32 7 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i256 +%r55 = shl i256 %r54, 224 +%r56 = or i256 %r50, %r55 +%r57 = zext i256 %r56 to i288 +%r59 = getelementptr i32, i32* %r3, i32 8 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i288 +%r62 = shl i288 %r61, 256 +%r63 = or i288 %r57, %r62 +%r64 = zext i288 %r63 to i320 +%r66 = getelementptr i32, i32* %r3, i32 9 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i320 +%r69 = shl i320 %r68, 288 +%r70 = or i320 %r64, %r69 +%r71 = zext i320 %r70 to i352 +%r73 = getelementptr i32, i32* %r3, i32 10 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i352 +%r76 = shl i352 %r75, 320 +%r77 = or i352 %r71, %r76 +%r78 = zext i352 %r77 to i384 +%r80 = getelementptr i32, i32* %r3, i32 11 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i384 +%r83 = shl i384 %r82, 352 +%r84 = or i384 %r78, %r83 +%r85 = load i32, i32* %r2 +%r86 = zext i32 %r85 to i64 +%r88 = getelementptr i32, i32* %r2, i32 1 +%r89 = load i32, i32* %r88 +%r90 = zext i32 %r89 to i64 +%r91 = shl i64 %r90, 32 +%r92 = or i64 %r86, %r91 +%r93 = zext i64 %r92 to i96 +%r95 = getelementptr i32, i32* %r2, i32 2 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i96 +%r98 = shl i96 %r97, 64 +%r99 = or i96 %r93, %r98 +%r100 = zext i96 %r99 to i128 +%r102 = getelementptr i32, i32* %r2, i32 3 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i128 +%r105 = shl i128 %r104, 96 +%r106 = or i128 %r100, %r105 +%r107 = zext i128 %r106 to i160 +%r109 = getelementptr i32, i32* %r2, i32 4 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i160 +%r112 = shl i160 %r111, 128 +%r113 = or i160 %r107, %r112 +%r114 = zext i160 %r113 to i192 +%r116 = getelementptr i32, i32* %r2, i32 5 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i192 +%r119 = shl i192 %r118, 160 +%r120 = or i192 %r114, %r119 +%r121 = zext i192 %r120 to i224 +%r123 = getelementptr i32, i32* %r2, i32 6 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i224 +%r126 = shl i224 %r125, 192 +%r127 = or i224 %r121, %r126 +%r128 = zext i224 %r127 to i256 +%r130 = getelementptr i32, i32* %r2, i32 7 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i256 +%r133 = shl i256 %r132, 224 +%r134 = or i256 %r128, %r133 +%r135 = zext i256 %r134 to i288 +%r137 = getelementptr i32, i32* %r2, i32 8 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i288 +%r140 = shl i288 %r139, 256 +%r141 = or i288 %r135, %r140 +%r142 = zext i288 %r141 to i320 +%r144 = getelementptr i32, i32* %r2, i32 9 +%r145 = load i32, i32* %r144 +%r146 = zext i32 %r145 to i320 +%r147 = shl i320 %r146, 288 +%r148 = or i320 %r142, %r147 +%r149 = zext i320 %r148 to i352 +%r151 = getelementptr i32, i32* %r2, i32 10 +%r152 = load i32, i32* %r151 +%r153 = zext i32 %r152 to i352 +%r154 = shl i352 %r153, 320 +%r155 = or i352 %r149, %r154 +%r156 = zext i352 %r155 to i384 +%r158 = getelementptr i32, i32* %r2, i32 11 +%r159 = load i32, i32* %r158 +%r160 = zext i32 %r159 to i384 +%r161 = shl i384 %r160, 352 +%r162 = or i384 %r156, %r161 +%r163 = trunc i384 %r162 to i32 +%r164 = mul i32 %r163, %r6 +%r165 = call i416 @mulPv384x32(i32* %r3, i32 %r164) +%r167 = getelementptr i32, i32* %r2, i32 12 +%r168 = load i32, i32* %r167 +%r169 = zext i32 %r168 to i416 +%r170 = shl i416 %r169, 384 +%r171 = zext i384 %r162 to i416 +%r172 = or i416 %r170, %r171 +%r173 = zext i416 %r172 to i448 +%r174 = zext i416 %r165 to i448 +%r175 = add i448 %r173, %r174 +%r176 = lshr i448 %r175, 32 +%r177 = trunc i448 %r176 to i416 +%r178 = lshr i416 %r177, 384 +%r179 = trunc i416 %r178 to i32 +%r180 = trunc i416 %r177 to i384 +%r181 = trunc i384 %r180 to i32 +%r182 = mul i32 %r181, %r6 +%r183 = call i416 @mulPv384x32(i32* %r3, i32 %r182) +%r184 = zext i32 %r179 to i416 +%r185 = shl i416 %r184, 384 +%r186 = add i416 %r183, %r185 +%r188 = getelementptr i32, i32* %r2, i32 13 +%r189 = load i32, i32* %r188 +%r190 = zext i32 %r189 to i416 +%r191 = shl i416 %r190, 384 +%r192 = zext i384 %r180 to i416 +%r193 = or i416 %r191, %r192 +%r194 = zext i416 %r193 to i448 +%r195 = zext i416 %r186 to i448 +%r196 = add i448 %r194, %r195 +%r197 = lshr i448 %r196, 32 +%r198 = trunc i448 %r197 to i416 +%r199 = lshr i416 %r198, 384 +%r200 = trunc i416 %r199 to i32 +%r201 = trunc i416 %r198 to i384 +%r202 = trunc i384 %r201 to i32 +%r203 = mul i32 %r202, %r6 +%r204 = call i416 @mulPv384x32(i32* %r3, i32 %r203) +%r205 = zext i32 %r200 to i416 +%r206 = shl i416 %r205, 384 +%r207 = add i416 %r204, %r206 +%r209 = getelementptr i32, i32* %r2, i32 14 +%r210 = load i32, i32* %r209 +%r211 = zext i32 %r210 to i416 +%r212 = shl i416 %r211, 384 +%r213 = zext i384 %r201 to i416 +%r214 = or i416 %r212, %r213 +%r215 = zext i416 %r214 to i448 +%r216 = zext i416 %r207 to i448 +%r217 = add i448 %r215, %r216 +%r218 = lshr i448 %r217, 32 +%r219 = trunc i448 %r218 to i416 +%r220 = lshr i416 %r219, 384 +%r221 = trunc i416 %r220 to i32 +%r222 = trunc i416 %r219 to i384 +%r223 = trunc i384 %r222 to i32 +%r224 = mul i32 %r223, %r6 +%r225 = call i416 @mulPv384x32(i32* %r3, i32 %r224) +%r226 = zext i32 %r221 to i416 +%r227 = shl i416 %r226, 384 +%r228 = add i416 %r225, %r227 +%r230 = getelementptr i32, i32* %r2, i32 15 +%r231 = load i32, i32* %r230 +%r232 = zext i32 %r231 to i416 +%r233 = shl i416 %r232, 384 +%r234 = zext i384 %r222 to i416 +%r235 = or i416 %r233, %r234 +%r236 = zext i416 %r235 to i448 +%r237 = zext i416 %r228 to i448 +%r238 = add i448 %r236, %r237 +%r239 = lshr i448 %r238, 32 +%r240 = trunc i448 %r239 to i416 +%r241 = lshr i416 %r240, 384 +%r242 = trunc i416 %r241 to i32 +%r243 = trunc i416 %r240 to i384 +%r244 = trunc i384 %r243 to i32 +%r245 = mul i32 %r244, %r6 +%r246 = call i416 @mulPv384x32(i32* %r3, i32 %r245) +%r247 = zext i32 %r242 to i416 +%r248 = shl i416 %r247, 384 +%r249 = add i416 %r246, %r248 +%r251 = getelementptr i32, i32* %r2, i32 16 +%r252 = load i32, i32* %r251 +%r253 = zext i32 %r252 to i416 +%r254 = shl i416 %r253, 384 +%r255 = zext i384 %r243 to i416 +%r256 = or i416 %r254, %r255 +%r257 = zext i416 %r256 to i448 +%r258 = zext i416 %r249 to i448 +%r259 = add i448 %r257, %r258 +%r260 = lshr i448 %r259, 32 +%r261 = trunc i448 %r260 to i416 +%r262 = lshr i416 %r261, 384 +%r263 = trunc i416 %r262 to i32 +%r264 = trunc i416 %r261 to i384 +%r265 = trunc i384 %r264 to i32 +%r266 = mul i32 %r265, %r6 +%r267 = call i416 @mulPv384x32(i32* %r3, i32 %r266) +%r268 = zext i32 %r263 to i416 +%r269 = shl i416 %r268, 384 +%r270 = add i416 %r267, %r269 +%r272 = getelementptr i32, i32* %r2, i32 17 +%r273 = load i32, i32* %r272 +%r274 = zext i32 %r273 to i416 +%r275 = shl i416 %r274, 384 +%r276 = zext i384 %r264 to i416 +%r277 = or i416 %r275, %r276 +%r278 = zext i416 %r277 to i448 +%r279 = zext i416 %r270 to i448 +%r280 = add i448 %r278, %r279 +%r281 = lshr i448 %r280, 32 +%r282 = trunc i448 %r281 to i416 +%r283 = lshr i416 %r282, 384 +%r284 = trunc i416 %r283 to i32 +%r285 = trunc i416 %r282 to i384 +%r286 = trunc i384 %r285 to i32 +%r287 = mul i32 %r286, %r6 +%r288 = call i416 @mulPv384x32(i32* %r3, i32 %r287) +%r289 = zext i32 %r284 to i416 +%r290 = shl i416 %r289, 384 +%r291 = add i416 %r288, %r290 +%r293 = getelementptr i32, i32* %r2, i32 18 +%r294 = load i32, i32* %r293 +%r295 = zext i32 %r294 to i416 +%r296 = shl i416 %r295, 384 +%r297 = zext i384 %r285 to i416 +%r298 = or i416 %r296, %r297 +%r299 = zext i416 %r298 to i448 +%r300 = zext i416 %r291 to i448 +%r301 = add i448 %r299, %r300 +%r302 = lshr i448 %r301, 32 +%r303 = trunc i448 %r302 to i416 +%r304 = lshr i416 %r303, 384 +%r305 = trunc i416 %r304 to i32 +%r306 = trunc i416 %r303 to i384 +%r307 = trunc i384 %r306 to i32 +%r308 = mul i32 %r307, %r6 +%r309 = call i416 @mulPv384x32(i32* %r3, i32 %r308) +%r310 = zext i32 %r305 to i416 +%r311 = shl i416 %r310, 384 +%r312 = add i416 %r309, %r311 +%r314 = getelementptr i32, i32* %r2, i32 19 +%r315 = load i32, i32* %r314 +%r316 = zext i32 %r315 to i416 +%r317 = shl i416 %r316, 384 +%r318 = zext i384 %r306 to i416 +%r319 = or i416 %r317, %r318 +%r320 = zext i416 %r319 to i448 +%r321 = zext i416 %r312 to i448 +%r322 = add i448 %r320, %r321 +%r323 = lshr i448 %r322, 32 +%r324 = trunc i448 %r323 to i416 +%r325 = lshr i416 %r324, 384 +%r326 = trunc i416 %r325 to i32 +%r327 = trunc i416 %r324 to i384 +%r328 = trunc i384 %r327 to i32 +%r329 = mul i32 %r328, %r6 +%r330 = call i416 @mulPv384x32(i32* %r3, i32 %r329) +%r331 = zext i32 %r326 to i416 +%r332 = shl i416 %r331, 384 +%r333 = add i416 %r330, %r332 +%r335 = getelementptr i32, i32* %r2, i32 20 +%r336 = load i32, i32* %r335 +%r337 = zext i32 %r336 to i416 +%r338 = shl i416 %r337, 384 +%r339 = zext i384 %r327 to i416 +%r340 = or i416 %r338, %r339 +%r341 = zext i416 %r340 to i448 +%r342 = zext i416 %r333 to i448 +%r343 = add i448 %r341, %r342 +%r344 = lshr i448 %r343, 32 +%r345 = trunc i448 %r344 to i416 +%r346 = lshr i416 %r345, 384 +%r347 = trunc i416 %r346 to i32 +%r348 = trunc i416 %r345 to i384 +%r349 = trunc i384 %r348 to i32 +%r350 = mul i32 %r349, %r6 +%r351 = call i416 @mulPv384x32(i32* %r3, i32 %r350) +%r352 = zext i32 %r347 to i416 +%r353 = shl i416 %r352, 384 +%r354 = add i416 %r351, %r353 +%r356 = getelementptr i32, i32* %r2, i32 21 +%r357 = load i32, i32* %r356 +%r358 = zext i32 %r357 to i416 +%r359 = shl i416 %r358, 384 +%r360 = zext i384 %r348 to i416 +%r361 = or i416 %r359, %r360 +%r362 = zext i416 %r361 to i448 +%r363 = zext i416 %r354 to i448 +%r364 = add i448 %r362, %r363 +%r365 = lshr i448 %r364, 32 +%r366 = trunc i448 %r365 to i416 +%r367 = lshr i416 %r366, 384 +%r368 = trunc i416 %r367 to i32 +%r369 = trunc i416 %r366 to i384 +%r370 = trunc i384 %r369 to i32 +%r371 = mul i32 %r370, %r6 +%r372 = call i416 @mulPv384x32(i32* %r3, i32 %r371) +%r373 = zext i32 %r368 to i416 +%r374 = shl i416 %r373, 384 +%r375 = add i416 %r372, %r374 +%r377 = getelementptr i32, i32* %r2, i32 22 +%r378 = load i32, i32* %r377 +%r379 = zext i32 %r378 to i416 +%r380 = shl i416 %r379, 384 +%r381 = zext i384 %r369 to i416 +%r382 = or i416 %r380, %r381 +%r383 = zext i416 %r382 to i448 +%r384 = zext i416 %r375 to i448 +%r385 = add i448 %r383, %r384 +%r386 = lshr i448 %r385, 32 +%r387 = trunc i448 %r386 to i416 +%r388 = lshr i416 %r387, 384 +%r389 = trunc i416 %r388 to i32 +%r390 = trunc i416 %r387 to i384 +%r391 = trunc i384 %r390 to i32 +%r392 = mul i32 %r391, %r6 +%r393 = call i416 @mulPv384x32(i32* %r3, i32 %r392) +%r394 = zext i32 %r389 to i416 +%r395 = shl i416 %r394, 384 +%r396 = add i416 %r393, %r395 +%r398 = getelementptr i32, i32* %r2, i32 23 +%r399 = load i32, i32* %r398 +%r400 = zext i32 %r399 to i416 +%r401 = shl i416 %r400, 384 +%r402 = zext i384 %r390 to i416 +%r403 = or i416 %r401, %r402 +%r404 = zext i416 %r403 to i448 +%r405 = zext i416 %r396 to i448 +%r406 = add i448 %r404, %r405 +%r407 = lshr i448 %r406, 32 +%r408 = trunc i448 %r407 to i416 +%r409 = lshr i416 %r408, 384 +%r410 = trunc i416 %r409 to i32 +%r411 = trunc i416 %r408 to i384 +%r412 = zext i384 %r84 to i416 +%r413 = zext i384 %r411 to i416 +%r414 = sub i416 %r413, %r412 +%r415 = lshr i416 %r414, 384 +%r416 = trunc i416 %r415 to i1 +%r417 = select i1 %r416, i416 %r413, i416 %r414 +%r418 = trunc i416 %r417 to i384 +%r420 = getelementptr i32, i32* %r1, i32 0 +%r421 = trunc i384 %r418 to i32 +store i32 %r421, i32* %r420 +%r422 = lshr i384 %r418, 32 +%r424 = getelementptr i32, i32* %r1, i32 1 +%r425 = trunc i384 %r422 to i32 +store i32 %r425, i32* %r424 +%r426 = lshr i384 %r422, 32 +%r428 = getelementptr i32, i32* %r1, i32 2 +%r429 = trunc i384 %r426 to i32 +store i32 %r429, i32* %r428 +%r430 = lshr i384 %r426, 32 +%r432 = getelementptr i32, i32* %r1, i32 3 +%r433 = trunc i384 %r430 to i32 +store i32 %r433, i32* %r432 +%r434 = lshr i384 %r430, 32 +%r436 = getelementptr i32, i32* %r1, i32 4 +%r437 = trunc i384 %r434 to i32 +store i32 %r437, i32* %r436 +%r438 = lshr i384 %r434, 32 +%r440 = getelementptr i32, i32* %r1, i32 5 +%r441 = trunc i384 %r438 to i32 +store i32 %r441, i32* %r440 +%r442 = lshr i384 %r438, 32 +%r444 = getelementptr i32, i32* %r1, i32 6 +%r445 = trunc i384 %r442 to i32 +store i32 %r445, i32* %r444 +%r446 = lshr i384 %r442, 32 +%r448 = getelementptr i32, i32* %r1, i32 7 +%r449 = trunc i384 %r446 to i32 +store i32 %r449, i32* %r448 +%r450 = lshr i384 %r446, 32 +%r452 = getelementptr i32, i32* %r1, i32 8 +%r453 = trunc i384 %r450 to i32 +store i32 %r453, i32* %r452 +%r454 = lshr i384 %r450, 32 +%r456 = getelementptr i32, i32* %r1, i32 9 +%r457 = trunc i384 %r454 to i32 +store i32 %r457, i32* %r456 +%r458 = lshr i384 %r454, 32 +%r460 = getelementptr i32, i32* %r1, i32 10 +%r461 = trunc i384 %r458 to i32 +store i32 %r461, i32* %r460 +%r462 = lshr i384 %r458, 32 +%r464 = getelementptr i32, i32* %r1, i32 11 +%r465 = trunc i384 %r462 to i32 +store i32 %r465, i32* %r464 +ret void +} +define void @mcl_fp_montRedNF12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = zext i224 %r49 to i256 +%r52 = getelementptr i32, i32* %r3, i32 7 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i256 +%r55 = shl i256 %r54, 224 +%r56 = or i256 %r50, %r55 +%r57 = zext i256 %r56 to i288 +%r59 = getelementptr i32, i32* %r3, i32 8 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i288 +%r62 = shl i288 %r61, 256 +%r63 = or i288 %r57, %r62 +%r64 = zext i288 %r63 to i320 +%r66 = getelementptr i32, i32* %r3, i32 9 +%r67 = load i32, i32* %r66 +%r68 = zext i32 %r67 to i320 +%r69 = shl i320 %r68, 288 +%r70 = or i320 %r64, %r69 +%r71 = zext i320 %r70 to i352 +%r73 = getelementptr i32, i32* %r3, i32 10 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i352 +%r76 = shl i352 %r75, 320 +%r77 = or i352 %r71, %r76 +%r78 = zext i352 %r77 to i384 +%r80 = getelementptr i32, i32* %r3, i32 11 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i384 +%r83 = shl i384 %r82, 352 +%r84 = or i384 %r78, %r83 +%r85 = load i32, i32* %r2 +%r86 = zext i32 %r85 to i64 +%r88 = getelementptr i32, i32* %r2, i32 1 +%r89 = load i32, i32* %r88 +%r90 = zext i32 %r89 to i64 +%r91 = shl i64 %r90, 32 +%r92 = or i64 %r86, %r91 +%r93 = zext i64 %r92 to i96 +%r95 = getelementptr i32, i32* %r2, i32 2 +%r96 = load i32, i32* %r95 +%r97 = zext i32 %r96 to i96 +%r98 = shl i96 %r97, 64 +%r99 = or i96 %r93, %r98 +%r100 = zext i96 %r99 to i128 +%r102 = getelementptr i32, i32* %r2, i32 3 +%r103 = load i32, i32* %r102 +%r104 = zext i32 %r103 to i128 +%r105 = shl i128 %r104, 96 +%r106 = or i128 %r100, %r105 +%r107 = zext i128 %r106 to i160 +%r109 = getelementptr i32, i32* %r2, i32 4 +%r110 = load i32, i32* %r109 +%r111 = zext i32 %r110 to i160 +%r112 = shl i160 %r111, 128 +%r113 = or i160 %r107, %r112 +%r114 = zext i160 %r113 to i192 +%r116 = getelementptr i32, i32* %r2, i32 5 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i192 +%r119 = shl i192 %r118, 160 +%r120 = or i192 %r114, %r119 +%r121 = zext i192 %r120 to i224 +%r123 = getelementptr i32, i32* %r2, i32 6 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i224 +%r126 = shl i224 %r125, 192 +%r127 = or i224 %r121, %r126 +%r128 = zext i224 %r127 to i256 +%r130 = getelementptr i32, i32* %r2, i32 7 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i256 +%r133 = shl i256 %r132, 224 +%r134 = or i256 %r128, %r133 +%r135 = zext i256 %r134 to i288 +%r137 = getelementptr i32, i32* %r2, i32 8 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i288 +%r140 = shl i288 %r139, 256 +%r141 = or i288 %r135, %r140 +%r142 = zext i288 %r141 to i320 +%r144 = getelementptr i32, i32* %r2, i32 9 +%r145 = load i32, i32* %r144 +%r146 = zext i32 %r145 to i320 +%r147 = shl i320 %r146, 288 +%r148 = or i320 %r142, %r147 +%r149 = zext i320 %r148 to i352 +%r151 = getelementptr i32, i32* %r2, i32 10 +%r152 = load i32, i32* %r151 +%r153 = zext i32 %r152 to i352 +%r154 = shl i352 %r153, 320 +%r155 = or i352 %r149, %r154 +%r156 = zext i352 %r155 to i384 +%r158 = getelementptr i32, i32* %r2, i32 11 +%r159 = load i32, i32* %r158 +%r160 = zext i32 %r159 to i384 +%r161 = shl i384 %r160, 352 +%r162 = or i384 %r156, %r161 +%r163 = trunc i384 %r162 to i32 +%r164 = mul i32 %r163, %r6 +%r165 = call i416 @mulPv384x32(i32* %r3, i32 %r164) +%r167 = getelementptr i32, i32* %r2, i32 12 +%r168 = load i32, i32* %r167 +%r169 = zext i32 %r168 to i416 +%r170 = shl i416 %r169, 384 +%r171 = zext i384 %r162 to i416 +%r172 = or i416 %r170, %r171 +%r173 = zext i416 %r172 to i448 +%r174 = zext i416 %r165 to i448 +%r175 = add i448 %r173, %r174 +%r176 = lshr i448 %r175, 32 +%r177 = trunc i448 %r176 to i416 +%r178 = lshr i416 %r177, 384 +%r179 = trunc i416 %r178 to i32 +%r180 = trunc i416 %r177 to i384 +%r181 = trunc i384 %r180 to i32 +%r182 = mul i32 %r181, %r6 +%r183 = call i416 @mulPv384x32(i32* %r3, i32 %r182) +%r184 = zext i32 %r179 to i416 +%r185 = shl i416 %r184, 384 +%r186 = add i416 %r183, %r185 +%r188 = getelementptr i32, i32* %r2, i32 13 +%r189 = load i32, i32* %r188 +%r190 = zext i32 %r189 to i416 +%r191 = shl i416 %r190, 384 +%r192 = zext i384 %r180 to i416 +%r193 = or i416 %r191, %r192 +%r194 = zext i416 %r193 to i448 +%r195 = zext i416 %r186 to i448 +%r196 = add i448 %r194, %r195 +%r197 = lshr i448 %r196, 32 +%r198 = trunc i448 %r197 to i416 +%r199 = lshr i416 %r198, 384 +%r200 = trunc i416 %r199 to i32 +%r201 = trunc i416 %r198 to i384 +%r202 = trunc i384 %r201 to i32 +%r203 = mul i32 %r202, %r6 +%r204 = call i416 @mulPv384x32(i32* %r3, i32 %r203) +%r205 = zext i32 %r200 to i416 +%r206 = shl i416 %r205, 384 +%r207 = add i416 %r204, %r206 +%r209 = getelementptr i32, i32* %r2, i32 14 +%r210 = load i32, i32* %r209 +%r211 = zext i32 %r210 to i416 +%r212 = shl i416 %r211, 384 +%r213 = zext i384 %r201 to i416 +%r214 = or i416 %r212, %r213 +%r215 = zext i416 %r214 to i448 +%r216 = zext i416 %r207 to i448 +%r217 = add i448 %r215, %r216 +%r218 = lshr i448 %r217, 32 +%r219 = trunc i448 %r218 to i416 +%r220 = lshr i416 %r219, 384 +%r221 = trunc i416 %r220 to i32 +%r222 = trunc i416 %r219 to i384 +%r223 = trunc i384 %r222 to i32 +%r224 = mul i32 %r223, %r6 +%r225 = call i416 @mulPv384x32(i32* %r3, i32 %r224) +%r226 = zext i32 %r221 to i416 +%r227 = shl i416 %r226, 384 +%r228 = add i416 %r225, %r227 +%r230 = getelementptr i32, i32* %r2, i32 15 +%r231 = load i32, i32* %r230 +%r232 = zext i32 %r231 to i416 +%r233 = shl i416 %r232, 384 +%r234 = zext i384 %r222 to i416 +%r235 = or i416 %r233, %r234 +%r236 = zext i416 %r235 to i448 +%r237 = zext i416 %r228 to i448 +%r238 = add i448 %r236, %r237 +%r239 = lshr i448 %r238, 32 +%r240 = trunc i448 %r239 to i416 +%r241 = lshr i416 %r240, 384 +%r242 = trunc i416 %r241 to i32 +%r243 = trunc i416 %r240 to i384 +%r244 = trunc i384 %r243 to i32 +%r245 = mul i32 %r244, %r6 +%r246 = call i416 @mulPv384x32(i32* %r3, i32 %r245) +%r247 = zext i32 %r242 to i416 +%r248 = shl i416 %r247, 384 +%r249 = add i416 %r246, %r248 +%r251 = getelementptr i32, i32* %r2, i32 16 +%r252 = load i32, i32* %r251 +%r253 = zext i32 %r252 to i416 +%r254 = shl i416 %r253, 384 +%r255 = zext i384 %r243 to i416 +%r256 = or i416 %r254, %r255 +%r257 = zext i416 %r256 to i448 +%r258 = zext i416 %r249 to i448 +%r259 = add i448 %r257, %r258 +%r260 = lshr i448 %r259, 32 +%r261 = trunc i448 %r260 to i416 +%r262 = lshr i416 %r261, 384 +%r263 = trunc i416 %r262 to i32 +%r264 = trunc i416 %r261 to i384 +%r265 = trunc i384 %r264 to i32 +%r266 = mul i32 %r265, %r6 +%r267 = call i416 @mulPv384x32(i32* %r3, i32 %r266) +%r268 = zext i32 %r263 to i416 +%r269 = shl i416 %r268, 384 +%r270 = add i416 %r267, %r269 +%r272 = getelementptr i32, i32* %r2, i32 17 +%r273 = load i32, i32* %r272 +%r274 = zext i32 %r273 to i416 +%r275 = shl i416 %r274, 384 +%r276 = zext i384 %r264 to i416 +%r277 = or i416 %r275, %r276 +%r278 = zext i416 %r277 to i448 +%r279 = zext i416 %r270 to i448 +%r280 = add i448 %r278, %r279 +%r281 = lshr i448 %r280, 32 +%r282 = trunc i448 %r281 to i416 +%r283 = lshr i416 %r282, 384 +%r284 = trunc i416 %r283 to i32 +%r285 = trunc i416 %r282 to i384 +%r286 = trunc i384 %r285 to i32 +%r287 = mul i32 %r286, %r6 +%r288 = call i416 @mulPv384x32(i32* %r3, i32 %r287) +%r289 = zext i32 %r284 to i416 +%r290 = shl i416 %r289, 384 +%r291 = add i416 %r288, %r290 +%r293 = getelementptr i32, i32* %r2, i32 18 +%r294 = load i32, i32* %r293 +%r295 = zext i32 %r294 to i416 +%r296 = shl i416 %r295, 384 +%r297 = zext i384 %r285 to i416 +%r298 = or i416 %r296, %r297 +%r299 = zext i416 %r298 to i448 +%r300 = zext i416 %r291 to i448 +%r301 = add i448 %r299, %r300 +%r302 = lshr i448 %r301, 32 +%r303 = trunc i448 %r302 to i416 +%r304 = lshr i416 %r303, 384 +%r305 = trunc i416 %r304 to i32 +%r306 = trunc i416 %r303 to i384 +%r307 = trunc i384 %r306 to i32 +%r308 = mul i32 %r307, %r6 +%r309 = call i416 @mulPv384x32(i32* %r3, i32 %r308) +%r310 = zext i32 %r305 to i416 +%r311 = shl i416 %r310, 384 +%r312 = add i416 %r309, %r311 +%r314 = getelementptr i32, i32* %r2, i32 19 +%r315 = load i32, i32* %r314 +%r316 = zext i32 %r315 to i416 +%r317 = shl i416 %r316, 384 +%r318 = zext i384 %r306 to i416 +%r319 = or i416 %r317, %r318 +%r320 = zext i416 %r319 to i448 +%r321 = zext i416 %r312 to i448 +%r322 = add i448 %r320, %r321 +%r323 = lshr i448 %r322, 32 +%r324 = trunc i448 %r323 to i416 +%r325 = lshr i416 %r324, 384 +%r326 = trunc i416 %r325 to i32 +%r327 = trunc i416 %r324 to i384 +%r328 = trunc i384 %r327 to i32 +%r329 = mul i32 %r328, %r6 +%r330 = call i416 @mulPv384x32(i32* %r3, i32 %r329) +%r331 = zext i32 %r326 to i416 +%r332 = shl i416 %r331, 384 +%r333 = add i416 %r330, %r332 +%r335 = getelementptr i32, i32* %r2, i32 20 +%r336 = load i32, i32* %r335 +%r337 = zext i32 %r336 to i416 +%r338 = shl i416 %r337, 384 +%r339 = zext i384 %r327 to i416 +%r340 = or i416 %r338, %r339 +%r341 = zext i416 %r340 to i448 +%r342 = zext i416 %r333 to i448 +%r343 = add i448 %r341, %r342 +%r344 = lshr i448 %r343, 32 +%r345 = trunc i448 %r344 to i416 +%r346 = lshr i416 %r345, 384 +%r347 = trunc i416 %r346 to i32 +%r348 = trunc i416 %r345 to i384 +%r349 = trunc i384 %r348 to i32 +%r350 = mul i32 %r349, %r6 +%r351 = call i416 @mulPv384x32(i32* %r3, i32 %r350) +%r352 = zext i32 %r347 to i416 +%r353 = shl i416 %r352, 384 +%r354 = add i416 %r351, %r353 +%r356 = getelementptr i32, i32* %r2, i32 21 +%r357 = load i32, i32* %r356 +%r358 = zext i32 %r357 to i416 +%r359 = shl i416 %r358, 384 +%r360 = zext i384 %r348 to i416 +%r361 = or i416 %r359, %r360 +%r362 = zext i416 %r361 to i448 +%r363 = zext i416 %r354 to i448 +%r364 = add i448 %r362, %r363 +%r365 = lshr i448 %r364, 32 +%r366 = trunc i448 %r365 to i416 +%r367 = lshr i416 %r366, 384 +%r368 = trunc i416 %r367 to i32 +%r369 = trunc i416 %r366 to i384 +%r370 = trunc i384 %r369 to i32 +%r371 = mul i32 %r370, %r6 +%r372 = call i416 @mulPv384x32(i32* %r3, i32 %r371) +%r373 = zext i32 %r368 to i416 +%r374 = shl i416 %r373, 384 +%r375 = add i416 %r372, %r374 +%r377 = getelementptr i32, i32* %r2, i32 22 +%r378 = load i32, i32* %r377 +%r379 = zext i32 %r378 to i416 +%r380 = shl i416 %r379, 384 +%r381 = zext i384 %r369 to i416 +%r382 = or i416 %r380, %r381 +%r383 = zext i416 %r382 to i448 +%r384 = zext i416 %r375 to i448 +%r385 = add i448 %r383, %r384 +%r386 = lshr i448 %r385, 32 +%r387 = trunc i448 %r386 to i416 +%r388 = lshr i416 %r387, 384 +%r389 = trunc i416 %r388 to i32 +%r390 = trunc i416 %r387 to i384 +%r391 = trunc i384 %r390 to i32 +%r392 = mul i32 %r391, %r6 +%r393 = call i416 @mulPv384x32(i32* %r3, i32 %r392) +%r394 = zext i32 %r389 to i416 +%r395 = shl i416 %r394, 384 +%r396 = add i416 %r393, %r395 +%r398 = getelementptr i32, i32* %r2, i32 23 +%r399 = load i32, i32* %r398 +%r400 = zext i32 %r399 to i416 +%r401 = shl i416 %r400, 384 +%r402 = zext i384 %r390 to i416 +%r403 = or i416 %r401, %r402 +%r404 = zext i416 %r403 to i448 +%r405 = zext i416 %r396 to i448 +%r406 = add i448 %r404, %r405 +%r407 = lshr i448 %r406, 32 +%r408 = trunc i448 %r407 to i416 +%r409 = lshr i416 %r408, 384 +%r410 = trunc i416 %r409 to i32 +%r411 = trunc i416 %r408 to i384 +%r412 = sub i384 %r411, %r84 +%r413 = lshr i384 %r412, 383 +%r414 = trunc i384 %r413 to i1 +%r415 = select i1 %r414, i384 %r411, i384 %r412 +%r417 = getelementptr i32, i32* %r1, i32 0 +%r418 = trunc i384 %r415 to i32 +store i32 %r418, i32* %r417 +%r419 = lshr i384 %r415, 32 +%r421 = getelementptr i32, i32* %r1, i32 1 +%r422 = trunc i384 %r419 to i32 +store i32 %r422, i32* %r421 +%r423 = lshr i384 %r419, 32 +%r425 = getelementptr i32, i32* %r1, i32 2 +%r426 = trunc i384 %r423 to i32 +store i32 %r426, i32* %r425 +%r427 = lshr i384 %r423, 32 +%r429 = getelementptr i32, i32* %r1, i32 3 +%r430 = trunc i384 %r427 to i32 +store i32 %r430, i32* %r429 +%r431 = lshr i384 %r427, 32 +%r433 = getelementptr i32, i32* %r1, i32 4 +%r434 = trunc i384 %r431 to i32 +store i32 %r434, i32* %r433 +%r435 = lshr i384 %r431, 32 +%r437 = getelementptr i32, i32* %r1, i32 5 +%r438 = trunc i384 %r435 to i32 +store i32 %r438, i32* %r437 +%r439 = lshr i384 %r435, 32 +%r441 = getelementptr i32, i32* %r1, i32 6 +%r442 = trunc i384 %r439 to i32 +store i32 %r442, i32* %r441 +%r443 = lshr i384 %r439, 32 +%r445 = getelementptr i32, i32* %r1, i32 7 +%r446 = trunc i384 %r443 to i32 +store i32 %r446, i32* %r445 +%r447 = lshr i384 %r443, 32 +%r449 = getelementptr i32, i32* %r1, i32 8 +%r450 = trunc i384 %r447 to i32 +store i32 %r450, i32* %r449 +%r451 = lshr i384 %r447, 32 +%r453 = getelementptr i32, i32* %r1, i32 9 +%r454 = trunc i384 %r451 to i32 +store i32 %r454, i32* %r453 +%r455 = lshr i384 %r451, 32 +%r457 = getelementptr i32, i32* %r1, i32 10 +%r458 = trunc i384 %r455 to i32 +store i32 %r458, i32* %r457 +%r459 = lshr i384 %r455, 32 +%r461 = getelementptr i32, i32* %r1, i32 11 +%r462 = trunc i384 %r459 to i32 +store i32 %r462, i32* %r461 +ret void +} +define i32 @mcl_fp_addPre12L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r3 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r3, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r3, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r3, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r3, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r3, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r3, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r3, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r3, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r3, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r3, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = zext i384 %r82 to i416 +%r84 = load i32, i32* %r4 +%r85 = zext i32 %r84 to i64 +%r87 = getelementptr i32, i32* %r4, i32 1 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i64 +%r90 = shl i64 %r89, 32 +%r91 = or i64 %r85, %r90 +%r92 = zext i64 %r91 to i96 +%r94 = getelementptr i32, i32* %r4, i32 2 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i96 +%r97 = shl i96 %r96, 64 +%r98 = or i96 %r92, %r97 +%r99 = zext i96 %r98 to i128 +%r101 = getelementptr i32, i32* %r4, i32 3 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i128 +%r104 = shl i128 %r103, 96 +%r105 = or i128 %r99, %r104 +%r106 = zext i128 %r105 to i160 +%r108 = getelementptr i32, i32* %r4, i32 4 +%r109 = load i32, i32* %r108 +%r110 = zext i32 %r109 to i160 +%r111 = shl i160 %r110, 128 +%r112 = or i160 %r106, %r111 +%r113 = zext i160 %r112 to i192 +%r115 = getelementptr i32, i32* %r4, i32 5 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i192 +%r118 = shl i192 %r117, 160 +%r119 = or i192 %r113, %r118 +%r120 = zext i192 %r119 to i224 +%r122 = getelementptr i32, i32* %r4, i32 6 +%r123 = load i32, i32* %r122 +%r124 = zext i32 %r123 to i224 +%r125 = shl i224 %r124, 192 +%r126 = or i224 %r120, %r125 +%r127 = zext i224 %r126 to i256 +%r129 = getelementptr i32, i32* %r4, i32 7 +%r130 = load i32, i32* %r129 +%r131 = zext i32 %r130 to i256 +%r132 = shl i256 %r131, 224 +%r133 = or i256 %r127, %r132 +%r134 = zext i256 %r133 to i288 +%r136 = getelementptr i32, i32* %r4, i32 8 +%r137 = load i32, i32* %r136 +%r138 = zext i32 %r137 to i288 +%r139 = shl i288 %r138, 256 +%r140 = or i288 %r134, %r139 +%r141 = zext i288 %r140 to i320 +%r143 = getelementptr i32, i32* %r4, i32 9 +%r144 = load i32, i32* %r143 +%r145 = zext i32 %r144 to i320 +%r146 = shl i320 %r145, 288 +%r147 = or i320 %r141, %r146 +%r148 = zext i320 %r147 to i352 +%r150 = getelementptr i32, i32* %r4, i32 10 +%r151 = load i32, i32* %r150 +%r152 = zext i32 %r151 to i352 +%r153 = shl i352 %r152, 320 +%r154 = or i352 %r148, %r153 +%r155 = zext i352 %r154 to i384 +%r157 = getelementptr i32, i32* %r4, i32 11 +%r158 = load i32, i32* %r157 +%r159 = zext i32 %r158 to i384 +%r160 = shl i384 %r159, 352 +%r161 = or i384 %r155, %r160 +%r162 = zext i384 %r161 to i416 +%r163 = add i416 %r83, %r162 +%r164 = trunc i416 %r163 to i384 +%r166 = getelementptr i32, i32* %r2, i32 0 +%r167 = trunc i384 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i384 %r164, 32 +%r170 = getelementptr i32, i32* %r2, i32 1 +%r171 = trunc i384 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i384 %r168, 32 +%r174 = getelementptr i32, i32* %r2, i32 2 +%r175 = trunc i384 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i384 %r172, 32 +%r178 = getelementptr i32, i32* %r2, i32 3 +%r179 = trunc i384 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i384 %r176, 32 +%r182 = getelementptr i32, i32* %r2, i32 4 +%r183 = trunc i384 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i384 %r180, 32 +%r186 = getelementptr i32, i32* %r2, i32 5 +%r187 = trunc i384 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i384 %r184, 32 +%r190 = getelementptr i32, i32* %r2, i32 6 +%r191 = trunc i384 %r188 to i32 +store i32 %r191, i32* %r190 +%r192 = lshr i384 %r188, 32 +%r194 = getelementptr i32, i32* %r2, i32 7 +%r195 = trunc i384 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i384 %r192, 32 +%r198 = getelementptr i32, i32* %r2, i32 8 +%r199 = trunc i384 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i384 %r196, 32 +%r202 = getelementptr i32, i32* %r2, i32 9 +%r203 = trunc i384 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i384 %r200, 32 +%r206 = getelementptr i32, i32* %r2, i32 10 +%r207 = trunc i384 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i384 %r204, 32 +%r210 = getelementptr i32, i32* %r2, i32 11 +%r211 = trunc i384 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = lshr i416 %r163, 384 +%r213 = trunc i416 %r212 to i32 +ret i32 %r213 +} +define i32 @mcl_fp_subPre12L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r3 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r3, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r3, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r3, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r3, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r3, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r3, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r3, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r3, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r3, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r3, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r3, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = zext i384 %r82 to i416 +%r84 = load i32, i32* %r4 +%r85 = zext i32 %r84 to i64 +%r87 = getelementptr i32, i32* %r4, i32 1 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i64 +%r90 = shl i64 %r89, 32 +%r91 = or i64 %r85, %r90 +%r92 = zext i64 %r91 to i96 +%r94 = getelementptr i32, i32* %r4, i32 2 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i96 +%r97 = shl i96 %r96, 64 +%r98 = or i96 %r92, %r97 +%r99 = zext i96 %r98 to i128 +%r101 = getelementptr i32, i32* %r4, i32 3 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i128 +%r104 = shl i128 %r103, 96 +%r105 = or i128 %r99, %r104 +%r106 = zext i128 %r105 to i160 +%r108 = getelementptr i32, i32* %r4, i32 4 +%r109 = load i32, i32* %r108 +%r110 = zext i32 %r109 to i160 +%r111 = shl i160 %r110, 128 +%r112 = or i160 %r106, %r111 +%r113 = zext i160 %r112 to i192 +%r115 = getelementptr i32, i32* %r4, i32 5 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i192 +%r118 = shl i192 %r117, 160 +%r119 = or i192 %r113, %r118 +%r120 = zext i192 %r119 to i224 +%r122 = getelementptr i32, i32* %r4, i32 6 +%r123 = load i32, i32* %r122 +%r124 = zext i32 %r123 to i224 +%r125 = shl i224 %r124, 192 +%r126 = or i224 %r120, %r125 +%r127 = zext i224 %r126 to i256 +%r129 = getelementptr i32, i32* %r4, i32 7 +%r130 = load i32, i32* %r129 +%r131 = zext i32 %r130 to i256 +%r132 = shl i256 %r131, 224 +%r133 = or i256 %r127, %r132 +%r134 = zext i256 %r133 to i288 +%r136 = getelementptr i32, i32* %r4, i32 8 +%r137 = load i32, i32* %r136 +%r138 = zext i32 %r137 to i288 +%r139 = shl i288 %r138, 256 +%r140 = or i288 %r134, %r139 +%r141 = zext i288 %r140 to i320 +%r143 = getelementptr i32, i32* %r4, i32 9 +%r144 = load i32, i32* %r143 +%r145 = zext i32 %r144 to i320 +%r146 = shl i320 %r145, 288 +%r147 = or i320 %r141, %r146 +%r148 = zext i320 %r147 to i352 +%r150 = getelementptr i32, i32* %r4, i32 10 +%r151 = load i32, i32* %r150 +%r152 = zext i32 %r151 to i352 +%r153 = shl i352 %r152, 320 +%r154 = or i352 %r148, %r153 +%r155 = zext i352 %r154 to i384 +%r157 = getelementptr i32, i32* %r4, i32 11 +%r158 = load i32, i32* %r157 +%r159 = zext i32 %r158 to i384 +%r160 = shl i384 %r159, 352 +%r161 = or i384 %r155, %r160 +%r162 = zext i384 %r161 to i416 +%r163 = sub i416 %r83, %r162 +%r164 = trunc i416 %r163 to i384 +%r166 = getelementptr i32, i32* %r2, i32 0 +%r167 = trunc i384 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i384 %r164, 32 +%r170 = getelementptr i32, i32* %r2, i32 1 +%r171 = trunc i384 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i384 %r168, 32 +%r174 = getelementptr i32, i32* %r2, i32 2 +%r175 = trunc i384 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i384 %r172, 32 +%r178 = getelementptr i32, i32* %r2, i32 3 +%r179 = trunc i384 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i384 %r176, 32 +%r182 = getelementptr i32, i32* %r2, i32 4 +%r183 = trunc i384 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i384 %r180, 32 +%r186 = getelementptr i32, i32* %r2, i32 5 +%r187 = trunc i384 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i384 %r184, 32 +%r190 = getelementptr i32, i32* %r2, i32 6 +%r191 = trunc i384 %r188 to i32 +store i32 %r191, i32* %r190 +%r192 = lshr i384 %r188, 32 +%r194 = getelementptr i32, i32* %r2, i32 7 +%r195 = trunc i384 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i384 %r192, 32 +%r198 = getelementptr i32, i32* %r2, i32 8 +%r199 = trunc i384 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i384 %r196, 32 +%r202 = getelementptr i32, i32* %r2, i32 9 +%r203 = trunc i384 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i384 %r200, 32 +%r206 = getelementptr i32, i32* %r2, i32 10 +%r207 = trunc i384 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i384 %r204, 32 +%r210 = getelementptr i32, i32* %r2, i32 11 +%r211 = trunc i384 %r208 to i32 +store i32 %r211, i32* %r210 +%r213 = lshr i416 %r163, 384 +%r214 = trunc i416 %r213 to i32 +%r215 = and i32 %r214, 1 +ret i32 %r215 +} +define void @mcl_fp_shr1_12L(i32* noalias %r1, i32* noalias %r2) +{ +%r3 = load i32, i32* %r2 +%r4 = zext i32 %r3 to i64 +%r6 = getelementptr i32, i32* %r2, i32 1 +%r7 = load i32, i32* %r6 +%r8 = zext i32 %r7 to i64 +%r9 = shl i64 %r8, 32 +%r10 = or i64 %r4, %r9 +%r11 = zext i64 %r10 to i96 +%r13 = getelementptr i32, i32* %r2, i32 2 +%r14 = load i32, i32* %r13 +%r15 = zext i32 %r14 to i96 +%r16 = shl i96 %r15, 64 +%r17 = or i96 %r11, %r16 +%r18 = zext i96 %r17 to i128 +%r20 = getelementptr i32, i32* %r2, i32 3 +%r21 = load i32, i32* %r20 +%r22 = zext i32 %r21 to i128 +%r23 = shl i128 %r22, 96 +%r24 = or i128 %r18, %r23 +%r25 = zext i128 %r24 to i160 +%r27 = getelementptr i32, i32* %r2, i32 4 +%r28 = load i32, i32* %r27 +%r29 = zext i32 %r28 to i160 +%r30 = shl i160 %r29, 128 +%r31 = or i160 %r25, %r30 +%r32 = zext i160 %r31 to i192 +%r34 = getelementptr i32, i32* %r2, i32 5 +%r35 = load i32, i32* %r34 +%r36 = zext i32 %r35 to i192 +%r37 = shl i192 %r36, 160 +%r38 = or i192 %r32, %r37 +%r39 = zext i192 %r38 to i224 +%r41 = getelementptr i32, i32* %r2, i32 6 +%r42 = load i32, i32* %r41 +%r43 = zext i32 %r42 to i224 +%r44 = shl i224 %r43, 192 +%r45 = or i224 %r39, %r44 +%r46 = zext i224 %r45 to i256 +%r48 = getelementptr i32, i32* %r2, i32 7 +%r49 = load i32, i32* %r48 +%r50 = zext i32 %r49 to i256 +%r51 = shl i256 %r50, 224 +%r52 = or i256 %r46, %r51 +%r53 = zext i256 %r52 to i288 +%r55 = getelementptr i32, i32* %r2, i32 8 +%r56 = load i32, i32* %r55 +%r57 = zext i32 %r56 to i288 +%r58 = shl i288 %r57, 256 +%r59 = or i288 %r53, %r58 +%r60 = zext i288 %r59 to i320 +%r62 = getelementptr i32, i32* %r2, i32 9 +%r63 = load i32, i32* %r62 +%r64 = zext i32 %r63 to i320 +%r65 = shl i320 %r64, 288 +%r66 = or i320 %r60, %r65 +%r67 = zext i320 %r66 to i352 +%r69 = getelementptr i32, i32* %r2, i32 10 +%r70 = load i32, i32* %r69 +%r71 = zext i32 %r70 to i352 +%r72 = shl i352 %r71, 320 +%r73 = or i352 %r67, %r72 +%r74 = zext i352 %r73 to i384 +%r76 = getelementptr i32, i32* %r2, i32 11 +%r77 = load i32, i32* %r76 +%r78 = zext i32 %r77 to i384 +%r79 = shl i384 %r78, 352 +%r80 = or i384 %r74, %r79 +%r81 = lshr i384 %r80, 1 +%r83 = getelementptr i32, i32* %r1, i32 0 +%r84 = trunc i384 %r81 to i32 +store i32 %r84, i32* %r83 +%r85 = lshr i384 %r81, 32 +%r87 = getelementptr i32, i32* %r1, i32 1 +%r88 = trunc i384 %r85 to i32 +store i32 %r88, i32* %r87 +%r89 = lshr i384 %r85, 32 +%r91 = getelementptr i32, i32* %r1, i32 2 +%r92 = trunc i384 %r89 to i32 +store i32 %r92, i32* %r91 +%r93 = lshr i384 %r89, 32 +%r95 = getelementptr i32, i32* %r1, i32 3 +%r96 = trunc i384 %r93 to i32 +store i32 %r96, i32* %r95 +%r97 = lshr i384 %r93, 32 +%r99 = getelementptr i32, i32* %r1, i32 4 +%r100 = trunc i384 %r97 to i32 +store i32 %r100, i32* %r99 +%r101 = lshr i384 %r97, 32 +%r103 = getelementptr i32, i32* %r1, i32 5 +%r104 = trunc i384 %r101 to i32 +store i32 %r104, i32* %r103 +%r105 = lshr i384 %r101, 32 +%r107 = getelementptr i32, i32* %r1, i32 6 +%r108 = trunc i384 %r105 to i32 +store i32 %r108, i32* %r107 +%r109 = lshr i384 %r105, 32 +%r111 = getelementptr i32, i32* %r1, i32 7 +%r112 = trunc i384 %r109 to i32 +store i32 %r112, i32* %r111 +%r113 = lshr i384 %r109, 32 +%r115 = getelementptr i32, i32* %r1, i32 8 +%r116 = trunc i384 %r113 to i32 +store i32 %r116, i32* %r115 +%r117 = lshr i384 %r113, 32 +%r119 = getelementptr i32, i32* %r1, i32 9 +%r120 = trunc i384 %r117 to i32 +store i32 %r120, i32* %r119 +%r121 = lshr i384 %r117, 32 +%r123 = getelementptr i32, i32* %r1, i32 10 +%r124 = trunc i384 %r121 to i32 +store i32 %r124, i32* %r123 +%r125 = lshr i384 %r121, 32 +%r127 = getelementptr i32, i32* %r1, i32 11 +%r128 = trunc i384 %r125 to i32 +store i32 %r128, i32* %r127 +ret void +} +define void @mcl_fp_add12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = zext i384 %r82 to i416 +%r162 = zext i384 %r160 to i416 +%r163 = add i416 %r161, %r162 +%r164 = trunc i416 %r163 to i384 +%r166 = getelementptr i32, i32* %r1, i32 0 +%r167 = trunc i384 %r164 to i32 +store i32 %r167, i32* %r166 +%r168 = lshr i384 %r164, 32 +%r170 = getelementptr i32, i32* %r1, i32 1 +%r171 = trunc i384 %r168 to i32 +store i32 %r171, i32* %r170 +%r172 = lshr i384 %r168, 32 +%r174 = getelementptr i32, i32* %r1, i32 2 +%r175 = trunc i384 %r172 to i32 +store i32 %r175, i32* %r174 +%r176 = lshr i384 %r172, 32 +%r178 = getelementptr i32, i32* %r1, i32 3 +%r179 = trunc i384 %r176 to i32 +store i32 %r179, i32* %r178 +%r180 = lshr i384 %r176, 32 +%r182 = getelementptr i32, i32* %r1, i32 4 +%r183 = trunc i384 %r180 to i32 +store i32 %r183, i32* %r182 +%r184 = lshr i384 %r180, 32 +%r186 = getelementptr i32, i32* %r1, i32 5 +%r187 = trunc i384 %r184 to i32 +store i32 %r187, i32* %r186 +%r188 = lshr i384 %r184, 32 +%r190 = getelementptr i32, i32* %r1, i32 6 +%r191 = trunc i384 %r188 to i32 +store i32 %r191, i32* %r190 +%r192 = lshr i384 %r188, 32 +%r194 = getelementptr i32, i32* %r1, i32 7 +%r195 = trunc i384 %r192 to i32 +store i32 %r195, i32* %r194 +%r196 = lshr i384 %r192, 32 +%r198 = getelementptr i32, i32* %r1, i32 8 +%r199 = trunc i384 %r196 to i32 +store i32 %r199, i32* %r198 +%r200 = lshr i384 %r196, 32 +%r202 = getelementptr i32, i32* %r1, i32 9 +%r203 = trunc i384 %r200 to i32 +store i32 %r203, i32* %r202 +%r204 = lshr i384 %r200, 32 +%r206 = getelementptr i32, i32* %r1, i32 10 +%r207 = trunc i384 %r204 to i32 +store i32 %r207, i32* %r206 +%r208 = lshr i384 %r204, 32 +%r210 = getelementptr i32, i32* %r1, i32 11 +%r211 = trunc i384 %r208 to i32 +store i32 %r211, i32* %r210 +%r212 = load i32, i32* %r4 +%r213 = zext i32 %r212 to i64 +%r215 = getelementptr i32, i32* %r4, i32 1 +%r216 = load i32, i32* %r215 +%r217 = zext i32 %r216 to i64 +%r218 = shl i64 %r217, 32 +%r219 = or i64 %r213, %r218 +%r220 = zext i64 %r219 to i96 +%r222 = getelementptr i32, i32* %r4, i32 2 +%r223 = load i32, i32* %r222 +%r224 = zext i32 %r223 to i96 +%r225 = shl i96 %r224, 64 +%r226 = or i96 %r220, %r225 +%r227 = zext i96 %r226 to i128 +%r229 = getelementptr i32, i32* %r4, i32 3 +%r230 = load i32, i32* %r229 +%r231 = zext i32 %r230 to i128 +%r232 = shl i128 %r231, 96 +%r233 = or i128 %r227, %r232 +%r234 = zext i128 %r233 to i160 +%r236 = getelementptr i32, i32* %r4, i32 4 +%r237 = load i32, i32* %r236 +%r238 = zext i32 %r237 to i160 +%r239 = shl i160 %r238, 128 +%r240 = or i160 %r234, %r239 +%r241 = zext i160 %r240 to i192 +%r243 = getelementptr i32, i32* %r4, i32 5 +%r244 = load i32, i32* %r243 +%r245 = zext i32 %r244 to i192 +%r246 = shl i192 %r245, 160 +%r247 = or i192 %r241, %r246 +%r248 = zext i192 %r247 to i224 +%r250 = getelementptr i32, i32* %r4, i32 6 +%r251 = load i32, i32* %r250 +%r252 = zext i32 %r251 to i224 +%r253 = shl i224 %r252, 192 +%r254 = or i224 %r248, %r253 +%r255 = zext i224 %r254 to i256 +%r257 = getelementptr i32, i32* %r4, i32 7 +%r258 = load i32, i32* %r257 +%r259 = zext i32 %r258 to i256 +%r260 = shl i256 %r259, 224 +%r261 = or i256 %r255, %r260 +%r262 = zext i256 %r261 to i288 +%r264 = getelementptr i32, i32* %r4, i32 8 +%r265 = load i32, i32* %r264 +%r266 = zext i32 %r265 to i288 +%r267 = shl i288 %r266, 256 +%r268 = or i288 %r262, %r267 +%r269 = zext i288 %r268 to i320 +%r271 = getelementptr i32, i32* %r4, i32 9 +%r272 = load i32, i32* %r271 +%r273 = zext i32 %r272 to i320 +%r274 = shl i320 %r273, 288 +%r275 = or i320 %r269, %r274 +%r276 = zext i320 %r275 to i352 +%r278 = getelementptr i32, i32* %r4, i32 10 +%r279 = load i32, i32* %r278 +%r280 = zext i32 %r279 to i352 +%r281 = shl i352 %r280, 320 +%r282 = or i352 %r276, %r281 +%r283 = zext i352 %r282 to i384 +%r285 = getelementptr i32, i32* %r4, i32 11 +%r286 = load i32, i32* %r285 +%r287 = zext i32 %r286 to i384 +%r288 = shl i384 %r287, 352 +%r289 = or i384 %r283, %r288 +%r290 = zext i384 %r289 to i416 +%r291 = sub i416 %r163, %r290 +%r292 = lshr i416 %r291, 384 +%r293 = trunc i416 %r292 to i1 +br i1%r293, label %carry, label %nocarry +nocarry: +%r294 = trunc i416 %r291 to i384 +%r296 = getelementptr i32, i32* %r1, i32 0 +%r297 = trunc i384 %r294 to i32 +store i32 %r297, i32* %r296 +%r298 = lshr i384 %r294, 32 +%r300 = getelementptr i32, i32* %r1, i32 1 +%r301 = trunc i384 %r298 to i32 +store i32 %r301, i32* %r300 +%r302 = lshr i384 %r298, 32 +%r304 = getelementptr i32, i32* %r1, i32 2 +%r305 = trunc i384 %r302 to i32 +store i32 %r305, i32* %r304 +%r306 = lshr i384 %r302, 32 +%r308 = getelementptr i32, i32* %r1, i32 3 +%r309 = trunc i384 %r306 to i32 +store i32 %r309, i32* %r308 +%r310 = lshr i384 %r306, 32 +%r312 = getelementptr i32, i32* %r1, i32 4 +%r313 = trunc i384 %r310 to i32 +store i32 %r313, i32* %r312 +%r314 = lshr i384 %r310, 32 +%r316 = getelementptr i32, i32* %r1, i32 5 +%r317 = trunc i384 %r314 to i32 +store i32 %r317, i32* %r316 +%r318 = lshr i384 %r314, 32 +%r320 = getelementptr i32, i32* %r1, i32 6 +%r321 = trunc i384 %r318 to i32 +store i32 %r321, i32* %r320 +%r322 = lshr i384 %r318, 32 +%r324 = getelementptr i32, i32* %r1, i32 7 +%r325 = trunc i384 %r322 to i32 +store i32 %r325, i32* %r324 +%r326 = lshr i384 %r322, 32 +%r328 = getelementptr i32, i32* %r1, i32 8 +%r329 = trunc i384 %r326 to i32 +store i32 %r329, i32* %r328 +%r330 = lshr i384 %r326, 32 +%r332 = getelementptr i32, i32* %r1, i32 9 +%r333 = trunc i384 %r330 to i32 +store i32 %r333, i32* %r332 +%r334 = lshr i384 %r330, 32 +%r336 = getelementptr i32, i32* %r1, i32 10 +%r337 = trunc i384 %r334 to i32 +store i32 %r337, i32* %r336 +%r338 = lshr i384 %r334, 32 +%r340 = getelementptr i32, i32* %r1, i32 11 +%r341 = trunc i384 %r338 to i32 +store i32 %r341, i32* %r340 +ret void +carry: +ret void +} +define void @mcl_fp_addNF12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = add i384 %r82, %r160 +%r162 = load i32, i32* %r4 +%r163 = zext i32 %r162 to i64 +%r165 = getelementptr i32, i32* %r4, i32 1 +%r166 = load i32, i32* %r165 +%r167 = zext i32 %r166 to i64 +%r168 = shl i64 %r167, 32 +%r169 = or i64 %r163, %r168 +%r170 = zext i64 %r169 to i96 +%r172 = getelementptr i32, i32* %r4, i32 2 +%r173 = load i32, i32* %r172 +%r174 = zext i32 %r173 to i96 +%r175 = shl i96 %r174, 64 +%r176 = or i96 %r170, %r175 +%r177 = zext i96 %r176 to i128 +%r179 = getelementptr i32, i32* %r4, i32 3 +%r180 = load i32, i32* %r179 +%r181 = zext i32 %r180 to i128 +%r182 = shl i128 %r181, 96 +%r183 = or i128 %r177, %r182 +%r184 = zext i128 %r183 to i160 +%r186 = getelementptr i32, i32* %r4, i32 4 +%r187 = load i32, i32* %r186 +%r188 = zext i32 %r187 to i160 +%r189 = shl i160 %r188, 128 +%r190 = or i160 %r184, %r189 +%r191 = zext i160 %r190 to i192 +%r193 = getelementptr i32, i32* %r4, i32 5 +%r194 = load i32, i32* %r193 +%r195 = zext i32 %r194 to i192 +%r196 = shl i192 %r195, 160 +%r197 = or i192 %r191, %r196 +%r198 = zext i192 %r197 to i224 +%r200 = getelementptr i32, i32* %r4, i32 6 +%r201 = load i32, i32* %r200 +%r202 = zext i32 %r201 to i224 +%r203 = shl i224 %r202, 192 +%r204 = or i224 %r198, %r203 +%r205 = zext i224 %r204 to i256 +%r207 = getelementptr i32, i32* %r4, i32 7 +%r208 = load i32, i32* %r207 +%r209 = zext i32 %r208 to i256 +%r210 = shl i256 %r209, 224 +%r211 = or i256 %r205, %r210 +%r212 = zext i256 %r211 to i288 +%r214 = getelementptr i32, i32* %r4, i32 8 +%r215 = load i32, i32* %r214 +%r216 = zext i32 %r215 to i288 +%r217 = shl i288 %r216, 256 +%r218 = or i288 %r212, %r217 +%r219 = zext i288 %r218 to i320 +%r221 = getelementptr i32, i32* %r4, i32 9 +%r222 = load i32, i32* %r221 +%r223 = zext i32 %r222 to i320 +%r224 = shl i320 %r223, 288 +%r225 = or i320 %r219, %r224 +%r226 = zext i320 %r225 to i352 +%r228 = getelementptr i32, i32* %r4, i32 10 +%r229 = load i32, i32* %r228 +%r230 = zext i32 %r229 to i352 +%r231 = shl i352 %r230, 320 +%r232 = or i352 %r226, %r231 +%r233 = zext i352 %r232 to i384 +%r235 = getelementptr i32, i32* %r4, i32 11 +%r236 = load i32, i32* %r235 +%r237 = zext i32 %r236 to i384 +%r238 = shl i384 %r237, 352 +%r239 = or i384 %r233, %r238 +%r240 = sub i384 %r161, %r239 +%r241 = lshr i384 %r240, 383 +%r242 = trunc i384 %r241 to i1 +%r243 = select i1 %r242, i384 %r161, i384 %r240 +%r245 = getelementptr i32, i32* %r1, i32 0 +%r246 = trunc i384 %r243 to i32 +store i32 %r246, i32* %r245 +%r247 = lshr i384 %r243, 32 +%r249 = getelementptr i32, i32* %r1, i32 1 +%r250 = trunc i384 %r247 to i32 +store i32 %r250, i32* %r249 +%r251 = lshr i384 %r247, 32 +%r253 = getelementptr i32, i32* %r1, i32 2 +%r254 = trunc i384 %r251 to i32 +store i32 %r254, i32* %r253 +%r255 = lshr i384 %r251, 32 +%r257 = getelementptr i32, i32* %r1, i32 3 +%r258 = trunc i384 %r255 to i32 +store i32 %r258, i32* %r257 +%r259 = lshr i384 %r255, 32 +%r261 = getelementptr i32, i32* %r1, i32 4 +%r262 = trunc i384 %r259 to i32 +store i32 %r262, i32* %r261 +%r263 = lshr i384 %r259, 32 +%r265 = getelementptr i32, i32* %r1, i32 5 +%r266 = trunc i384 %r263 to i32 +store i32 %r266, i32* %r265 +%r267 = lshr i384 %r263, 32 +%r269 = getelementptr i32, i32* %r1, i32 6 +%r270 = trunc i384 %r267 to i32 +store i32 %r270, i32* %r269 +%r271 = lshr i384 %r267, 32 +%r273 = getelementptr i32, i32* %r1, i32 7 +%r274 = trunc i384 %r271 to i32 +store i32 %r274, i32* %r273 +%r275 = lshr i384 %r271, 32 +%r277 = getelementptr i32, i32* %r1, i32 8 +%r278 = trunc i384 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i384 %r275, 32 +%r281 = getelementptr i32, i32* %r1, i32 9 +%r282 = trunc i384 %r279 to i32 +store i32 %r282, i32* %r281 +%r283 = lshr i384 %r279, 32 +%r285 = getelementptr i32, i32* %r1, i32 10 +%r286 = trunc i384 %r283 to i32 +store i32 %r286, i32* %r285 +%r287 = lshr i384 %r283, 32 +%r289 = getelementptr i32, i32* %r1, i32 11 +%r290 = trunc i384 %r287 to i32 +store i32 %r290, i32* %r289 +ret void +} +define void @mcl_fp_sub12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = zext i384 %r82 to i416 +%r162 = zext i384 %r160 to i416 +%r163 = sub i416 %r161, %r162 +%r164 = trunc i416 %r163 to i384 +%r165 = lshr i416 %r163, 384 +%r166 = trunc i416 %r165 to i1 +%r168 = getelementptr i32, i32* %r1, i32 0 +%r169 = trunc i384 %r164 to i32 +store i32 %r169, i32* %r168 +%r170 = lshr i384 %r164, 32 +%r172 = getelementptr i32, i32* %r1, i32 1 +%r173 = trunc i384 %r170 to i32 +store i32 %r173, i32* %r172 +%r174 = lshr i384 %r170, 32 +%r176 = getelementptr i32, i32* %r1, i32 2 +%r177 = trunc i384 %r174 to i32 +store i32 %r177, i32* %r176 +%r178 = lshr i384 %r174, 32 +%r180 = getelementptr i32, i32* %r1, i32 3 +%r181 = trunc i384 %r178 to i32 +store i32 %r181, i32* %r180 +%r182 = lshr i384 %r178, 32 +%r184 = getelementptr i32, i32* %r1, i32 4 +%r185 = trunc i384 %r182 to i32 +store i32 %r185, i32* %r184 +%r186 = lshr i384 %r182, 32 +%r188 = getelementptr i32, i32* %r1, i32 5 +%r189 = trunc i384 %r186 to i32 +store i32 %r189, i32* %r188 +%r190 = lshr i384 %r186, 32 +%r192 = getelementptr i32, i32* %r1, i32 6 +%r193 = trunc i384 %r190 to i32 +store i32 %r193, i32* %r192 +%r194 = lshr i384 %r190, 32 +%r196 = getelementptr i32, i32* %r1, i32 7 +%r197 = trunc i384 %r194 to i32 +store i32 %r197, i32* %r196 +%r198 = lshr i384 %r194, 32 +%r200 = getelementptr i32, i32* %r1, i32 8 +%r201 = trunc i384 %r198 to i32 +store i32 %r201, i32* %r200 +%r202 = lshr i384 %r198, 32 +%r204 = getelementptr i32, i32* %r1, i32 9 +%r205 = trunc i384 %r202 to i32 +store i32 %r205, i32* %r204 +%r206 = lshr i384 %r202, 32 +%r208 = getelementptr i32, i32* %r1, i32 10 +%r209 = trunc i384 %r206 to i32 +store i32 %r209, i32* %r208 +%r210 = lshr i384 %r206, 32 +%r212 = getelementptr i32, i32* %r1, i32 11 +%r213 = trunc i384 %r210 to i32 +store i32 %r213, i32* %r212 +br i1%r166, label %carry, label %nocarry +nocarry: +ret void +carry: +%r214 = load i32, i32* %r4 +%r215 = zext i32 %r214 to i64 +%r217 = getelementptr i32, i32* %r4, i32 1 +%r218 = load i32, i32* %r217 +%r219 = zext i32 %r218 to i64 +%r220 = shl i64 %r219, 32 +%r221 = or i64 %r215, %r220 +%r222 = zext i64 %r221 to i96 +%r224 = getelementptr i32, i32* %r4, i32 2 +%r225 = load i32, i32* %r224 +%r226 = zext i32 %r225 to i96 +%r227 = shl i96 %r226, 64 +%r228 = or i96 %r222, %r227 +%r229 = zext i96 %r228 to i128 +%r231 = getelementptr i32, i32* %r4, i32 3 +%r232 = load i32, i32* %r231 +%r233 = zext i32 %r232 to i128 +%r234 = shl i128 %r233, 96 +%r235 = or i128 %r229, %r234 +%r236 = zext i128 %r235 to i160 +%r238 = getelementptr i32, i32* %r4, i32 4 +%r239 = load i32, i32* %r238 +%r240 = zext i32 %r239 to i160 +%r241 = shl i160 %r240, 128 +%r242 = or i160 %r236, %r241 +%r243 = zext i160 %r242 to i192 +%r245 = getelementptr i32, i32* %r4, i32 5 +%r246 = load i32, i32* %r245 +%r247 = zext i32 %r246 to i192 +%r248 = shl i192 %r247, 160 +%r249 = or i192 %r243, %r248 +%r250 = zext i192 %r249 to i224 +%r252 = getelementptr i32, i32* %r4, i32 6 +%r253 = load i32, i32* %r252 +%r254 = zext i32 %r253 to i224 +%r255 = shl i224 %r254, 192 +%r256 = or i224 %r250, %r255 +%r257 = zext i224 %r256 to i256 +%r259 = getelementptr i32, i32* %r4, i32 7 +%r260 = load i32, i32* %r259 +%r261 = zext i32 %r260 to i256 +%r262 = shl i256 %r261, 224 +%r263 = or i256 %r257, %r262 +%r264 = zext i256 %r263 to i288 +%r266 = getelementptr i32, i32* %r4, i32 8 +%r267 = load i32, i32* %r266 +%r268 = zext i32 %r267 to i288 +%r269 = shl i288 %r268, 256 +%r270 = or i288 %r264, %r269 +%r271 = zext i288 %r270 to i320 +%r273 = getelementptr i32, i32* %r4, i32 9 +%r274 = load i32, i32* %r273 +%r275 = zext i32 %r274 to i320 +%r276 = shl i320 %r275, 288 +%r277 = or i320 %r271, %r276 +%r278 = zext i320 %r277 to i352 +%r280 = getelementptr i32, i32* %r4, i32 10 +%r281 = load i32, i32* %r280 +%r282 = zext i32 %r281 to i352 +%r283 = shl i352 %r282, 320 +%r284 = or i352 %r278, %r283 +%r285 = zext i352 %r284 to i384 +%r287 = getelementptr i32, i32* %r4, i32 11 +%r288 = load i32, i32* %r287 +%r289 = zext i32 %r288 to i384 +%r290 = shl i384 %r289, 352 +%r291 = or i384 %r285, %r290 +%r292 = add i384 %r164, %r291 +%r294 = getelementptr i32, i32* %r1, i32 0 +%r295 = trunc i384 %r292 to i32 +store i32 %r295, i32* %r294 +%r296 = lshr i384 %r292, 32 +%r298 = getelementptr i32, i32* %r1, i32 1 +%r299 = trunc i384 %r296 to i32 +store i32 %r299, i32* %r298 +%r300 = lshr i384 %r296, 32 +%r302 = getelementptr i32, i32* %r1, i32 2 +%r303 = trunc i384 %r300 to i32 +store i32 %r303, i32* %r302 +%r304 = lshr i384 %r300, 32 +%r306 = getelementptr i32, i32* %r1, i32 3 +%r307 = trunc i384 %r304 to i32 +store i32 %r307, i32* %r306 +%r308 = lshr i384 %r304, 32 +%r310 = getelementptr i32, i32* %r1, i32 4 +%r311 = trunc i384 %r308 to i32 +store i32 %r311, i32* %r310 +%r312 = lshr i384 %r308, 32 +%r314 = getelementptr i32, i32* %r1, i32 5 +%r315 = trunc i384 %r312 to i32 +store i32 %r315, i32* %r314 +%r316 = lshr i384 %r312, 32 +%r318 = getelementptr i32, i32* %r1, i32 6 +%r319 = trunc i384 %r316 to i32 +store i32 %r319, i32* %r318 +%r320 = lshr i384 %r316, 32 +%r322 = getelementptr i32, i32* %r1, i32 7 +%r323 = trunc i384 %r320 to i32 +store i32 %r323, i32* %r322 +%r324 = lshr i384 %r320, 32 +%r326 = getelementptr i32, i32* %r1, i32 8 +%r327 = trunc i384 %r324 to i32 +store i32 %r327, i32* %r326 +%r328 = lshr i384 %r324, 32 +%r330 = getelementptr i32, i32* %r1, i32 9 +%r331 = trunc i384 %r328 to i32 +store i32 %r331, i32* %r330 +%r332 = lshr i384 %r328, 32 +%r334 = getelementptr i32, i32* %r1, i32 10 +%r335 = trunc i384 %r332 to i32 +store i32 %r335, i32* %r334 +%r336 = lshr i384 %r332, 32 +%r338 = getelementptr i32, i32* %r1, i32 11 +%r339 = trunc i384 %r336 to i32 +store i32 %r339, i32* %r338 +ret void +} +define void @mcl_fp_subNF12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = load i32, i32* %r3 +%r84 = zext i32 %r83 to i64 +%r86 = getelementptr i32, i32* %r3, i32 1 +%r87 = load i32, i32* %r86 +%r88 = zext i32 %r87 to i64 +%r89 = shl i64 %r88, 32 +%r90 = or i64 %r84, %r89 +%r91 = zext i64 %r90 to i96 +%r93 = getelementptr i32, i32* %r3, i32 2 +%r94 = load i32, i32* %r93 +%r95 = zext i32 %r94 to i96 +%r96 = shl i96 %r95, 64 +%r97 = or i96 %r91, %r96 +%r98 = zext i96 %r97 to i128 +%r100 = getelementptr i32, i32* %r3, i32 3 +%r101 = load i32, i32* %r100 +%r102 = zext i32 %r101 to i128 +%r103 = shl i128 %r102, 96 +%r104 = or i128 %r98, %r103 +%r105 = zext i128 %r104 to i160 +%r107 = getelementptr i32, i32* %r3, i32 4 +%r108 = load i32, i32* %r107 +%r109 = zext i32 %r108 to i160 +%r110 = shl i160 %r109, 128 +%r111 = or i160 %r105, %r110 +%r112 = zext i160 %r111 to i192 +%r114 = getelementptr i32, i32* %r3, i32 5 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i192 +%r117 = shl i192 %r116, 160 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i224 +%r121 = getelementptr i32, i32* %r3, i32 6 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i224 +%r124 = shl i224 %r123, 192 +%r125 = or i224 %r119, %r124 +%r126 = zext i224 %r125 to i256 +%r128 = getelementptr i32, i32* %r3, i32 7 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i256 +%r131 = shl i256 %r130, 224 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i288 +%r135 = getelementptr i32, i32* %r3, i32 8 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i288 +%r138 = shl i288 %r137, 256 +%r139 = or i288 %r133, %r138 +%r140 = zext i288 %r139 to i320 +%r142 = getelementptr i32, i32* %r3, i32 9 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i320 +%r145 = shl i320 %r144, 288 +%r146 = or i320 %r140, %r145 +%r147 = zext i320 %r146 to i352 +%r149 = getelementptr i32, i32* %r3, i32 10 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i352 +%r152 = shl i352 %r151, 320 +%r153 = or i352 %r147, %r152 +%r154 = zext i352 %r153 to i384 +%r156 = getelementptr i32, i32* %r3, i32 11 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i384 +%r159 = shl i384 %r158, 352 +%r160 = or i384 %r154, %r159 +%r161 = sub i384 %r82, %r160 +%r162 = lshr i384 %r161, 383 +%r163 = trunc i384 %r162 to i1 +%r164 = load i32, i32* %r4 +%r165 = zext i32 %r164 to i64 +%r167 = getelementptr i32, i32* %r4, i32 1 +%r168 = load i32, i32* %r167 +%r169 = zext i32 %r168 to i64 +%r170 = shl i64 %r169, 32 +%r171 = or i64 %r165, %r170 +%r172 = zext i64 %r171 to i96 +%r174 = getelementptr i32, i32* %r4, i32 2 +%r175 = load i32, i32* %r174 +%r176 = zext i32 %r175 to i96 +%r177 = shl i96 %r176, 64 +%r178 = or i96 %r172, %r177 +%r179 = zext i96 %r178 to i128 +%r181 = getelementptr i32, i32* %r4, i32 3 +%r182 = load i32, i32* %r181 +%r183 = zext i32 %r182 to i128 +%r184 = shl i128 %r183, 96 +%r185 = or i128 %r179, %r184 +%r186 = zext i128 %r185 to i160 +%r188 = getelementptr i32, i32* %r4, i32 4 +%r189 = load i32, i32* %r188 +%r190 = zext i32 %r189 to i160 +%r191 = shl i160 %r190, 128 +%r192 = or i160 %r186, %r191 +%r193 = zext i160 %r192 to i192 +%r195 = getelementptr i32, i32* %r4, i32 5 +%r196 = load i32, i32* %r195 +%r197 = zext i32 %r196 to i192 +%r198 = shl i192 %r197, 160 +%r199 = or i192 %r193, %r198 +%r200 = zext i192 %r199 to i224 +%r202 = getelementptr i32, i32* %r4, i32 6 +%r203 = load i32, i32* %r202 +%r204 = zext i32 %r203 to i224 +%r205 = shl i224 %r204, 192 +%r206 = or i224 %r200, %r205 +%r207 = zext i224 %r206 to i256 +%r209 = getelementptr i32, i32* %r4, i32 7 +%r210 = load i32, i32* %r209 +%r211 = zext i32 %r210 to i256 +%r212 = shl i256 %r211, 224 +%r213 = or i256 %r207, %r212 +%r214 = zext i256 %r213 to i288 +%r216 = getelementptr i32, i32* %r4, i32 8 +%r217 = load i32, i32* %r216 +%r218 = zext i32 %r217 to i288 +%r219 = shl i288 %r218, 256 +%r220 = or i288 %r214, %r219 +%r221 = zext i288 %r220 to i320 +%r223 = getelementptr i32, i32* %r4, i32 9 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i320 +%r226 = shl i320 %r225, 288 +%r227 = or i320 %r221, %r226 +%r228 = zext i320 %r227 to i352 +%r230 = getelementptr i32, i32* %r4, i32 10 +%r231 = load i32, i32* %r230 +%r232 = zext i32 %r231 to i352 +%r233 = shl i352 %r232, 320 +%r234 = or i352 %r228, %r233 +%r235 = zext i352 %r234 to i384 +%r237 = getelementptr i32, i32* %r4, i32 11 +%r238 = load i32, i32* %r237 +%r239 = zext i32 %r238 to i384 +%r240 = shl i384 %r239, 352 +%r241 = or i384 %r235, %r240 +%r243 = select i1 %r163, i384 %r241, i384 0 +%r244 = add i384 %r161, %r243 +%r246 = getelementptr i32, i32* %r1, i32 0 +%r247 = trunc i384 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i384 %r244, 32 +%r250 = getelementptr i32, i32* %r1, i32 1 +%r251 = trunc i384 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i384 %r248, 32 +%r254 = getelementptr i32, i32* %r1, i32 2 +%r255 = trunc i384 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i384 %r252, 32 +%r258 = getelementptr i32, i32* %r1, i32 3 +%r259 = trunc i384 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i384 %r256, 32 +%r262 = getelementptr i32, i32* %r1, i32 4 +%r263 = trunc i384 %r260 to i32 +store i32 %r263, i32* %r262 +%r264 = lshr i384 %r260, 32 +%r266 = getelementptr i32, i32* %r1, i32 5 +%r267 = trunc i384 %r264 to i32 +store i32 %r267, i32* %r266 +%r268 = lshr i384 %r264, 32 +%r270 = getelementptr i32, i32* %r1, i32 6 +%r271 = trunc i384 %r268 to i32 +store i32 %r271, i32* %r270 +%r272 = lshr i384 %r268, 32 +%r274 = getelementptr i32, i32* %r1, i32 7 +%r275 = trunc i384 %r272 to i32 +store i32 %r275, i32* %r274 +%r276 = lshr i384 %r272, 32 +%r278 = getelementptr i32, i32* %r1, i32 8 +%r279 = trunc i384 %r276 to i32 +store i32 %r279, i32* %r278 +%r280 = lshr i384 %r276, 32 +%r282 = getelementptr i32, i32* %r1, i32 9 +%r283 = trunc i384 %r280 to i32 +store i32 %r283, i32* %r282 +%r284 = lshr i384 %r280, 32 +%r286 = getelementptr i32, i32* %r1, i32 10 +%r287 = trunc i384 %r284 to i32 +store i32 %r287, i32* %r286 +%r288 = lshr i384 %r284, 32 +%r290 = getelementptr i32, i32* %r1, i32 11 +%r291 = trunc i384 %r288 to i32 +store i32 %r291, i32* %r290 +ret void +} +define void @mcl_fpDbl_add12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +{ +%r5 = load i32, i32* %r2 +%r6 = zext i32 %r5 to i64 +%r8 = getelementptr i32, i32* %r2, i32 1 +%r9 = load i32, i32* %r8 +%r10 = zext i32 %r9 to i64 +%r11 = shl i64 %r10, 32 +%r12 = or i64 %r6, %r11 +%r13 = zext i64 %r12 to i96 +%r15 = getelementptr i32, i32* %r2, i32 2 +%r16 = load i32, i32* %r15 +%r17 = zext i32 %r16 to i96 +%r18 = shl i96 %r17, 64 +%r19 = or i96 %r13, %r18 +%r20 = zext i96 %r19 to i128 +%r22 = getelementptr i32, i32* %r2, i32 3 +%r23 = load i32, i32* %r22 +%r24 = zext i32 %r23 to i128 +%r25 = shl i128 %r24, 96 +%r26 = or i128 %r20, %r25 +%r27 = zext i128 %r26 to i160 +%r29 = getelementptr i32, i32* %r2, i32 4 +%r30 = load i32, i32* %r29 +%r31 = zext i32 %r30 to i160 +%r32 = shl i160 %r31, 128 +%r33 = or i160 %r27, %r32 +%r34 = zext i160 %r33 to i192 +%r36 = getelementptr i32, i32* %r2, i32 5 +%r37 = load i32, i32* %r36 +%r38 = zext i32 %r37 to i192 +%r39 = shl i192 %r38, 160 +%r40 = or i192 %r34, %r39 +%r41 = zext i192 %r40 to i224 +%r43 = getelementptr i32, i32* %r2, i32 6 +%r44 = load i32, i32* %r43 +%r45 = zext i32 %r44 to i224 +%r46 = shl i224 %r45, 192 +%r47 = or i224 %r41, %r46 +%r48 = zext i224 %r47 to i256 +%r50 = getelementptr i32, i32* %r2, i32 7 +%r51 = load i32, i32* %r50 +%r52 = zext i32 %r51 to i256 +%r53 = shl i256 %r52, 224 +%r54 = or i256 %r48, %r53 +%r55 = zext i256 %r54 to i288 +%r57 = getelementptr i32, i32* %r2, i32 8 +%r58 = load i32, i32* %r57 +%r59 = zext i32 %r58 to i288 +%r60 = shl i288 %r59, 256 +%r61 = or i288 %r55, %r60 +%r62 = zext i288 %r61 to i320 +%r64 = getelementptr i32, i32* %r2, i32 9 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i320 +%r67 = shl i320 %r66, 288 +%r68 = or i320 %r62, %r67 +%r69 = zext i320 %r68 to i352 +%r71 = getelementptr i32, i32* %r2, i32 10 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i352 +%r74 = shl i352 %r73, 320 +%r75 = or i352 %r69, %r74 +%r76 = zext i352 %r75 to i384 +%r78 = getelementptr i32, i32* %r2, i32 11 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i384 +%r81 = shl i384 %r80, 352 +%r82 = or i384 %r76, %r81 +%r83 = zext i384 %r82 to i416 +%r85 = getelementptr i32, i32* %r2, i32 12 +%r86 = load i32, i32* %r85 +%r87 = zext i32 %r86 to i416 +%r88 = shl i416 %r87, 384 +%r89 = or i416 %r83, %r88 +%r90 = zext i416 %r89 to i448 +%r92 = getelementptr i32, i32* %r2, i32 13 +%r93 = load i32, i32* %r92 +%r94 = zext i32 %r93 to i448 +%r95 = shl i448 %r94, 416 +%r96 = or i448 %r90, %r95 +%r97 = zext i448 %r96 to i480 +%r99 = getelementptr i32, i32* %r2, i32 14 +%r100 = load i32, i32* %r99 +%r101 = zext i32 %r100 to i480 +%r102 = shl i480 %r101, 448 +%r103 = or i480 %r97, %r102 +%r104 = zext i480 %r103 to i512 +%r106 = getelementptr i32, i32* %r2, i32 15 +%r107 = load i32, i32* %r106 +%r108 = zext i32 %r107 to i512 +%r109 = shl i512 %r108, 480 +%r110 = or i512 %r104, %r109 +%r111 = zext i512 %r110 to i544 +%r113 = getelementptr i32, i32* %r2, i32 16 +%r114 = load i32, i32* %r113 +%r115 = zext i32 %r114 to i544 +%r116 = shl i544 %r115, 512 +%r117 = or i544 %r111, %r116 +%r118 = zext i544 %r117 to i576 +%r120 = getelementptr i32, i32* %r2, i32 17 +%r121 = load i32, i32* %r120 +%r122 = zext i32 %r121 to i576 +%r123 = shl i576 %r122, 544 +%r124 = or i576 %r118, %r123 +%r125 = zext i576 %r124 to i608 +%r127 = getelementptr i32, i32* %r2, i32 18 +%r128 = load i32, i32* %r127 +%r129 = zext i32 %r128 to i608 +%r130 = shl i608 %r129, 576 +%r131 = or i608 %r125, %r130 +%r132 = zext i608 %r131 to i640 +%r134 = getelementptr i32, i32* %r2, i32 19 +%r135 = load i32, i32* %r134 +%r136 = zext i32 %r135 to i640 +%r137 = shl i640 %r136, 608 +%r138 = or i640 %r132, %r137 +%r139 = zext i640 %r138 to i672 +%r141 = getelementptr i32, i32* %r2, i32 20 +%r142 = load i32, i32* %r141 +%r143 = zext i32 %r142 to i672 +%r144 = shl i672 %r143, 640 +%r145 = or i672 %r139, %r144 +%r146 = zext i672 %r145 to i704 +%r148 = getelementptr i32, i32* %r2, i32 21 +%r149 = load i32, i32* %r148 +%r150 = zext i32 %r149 to i704 +%r151 = shl i704 %r150, 672 +%r152 = or i704 %r146, %r151 +%r153 = zext i704 %r152 to i736 +%r155 = getelementptr i32, i32* %r2, i32 22 +%r156 = load i32, i32* %r155 +%r157 = zext i32 %r156 to i736 +%r158 = shl i736 %r157, 704 +%r159 = or i736 %r153, %r158 +%r160 = zext i736 %r159 to i768 +%r162 = getelementptr i32, i32* %r2, i32 23 +%r163 = load i32, i32* %r162 +%r164 = zext i32 %r163 to i768 +%r165 = shl i768 %r164, 736 +%r166 = or i768 %r160, %r165 +%r167 = load i32, i32* %r3 +%r168 = zext i32 %r167 to i64 +%r170 = getelementptr i32, i32* %r3, i32 1 +%r171 = load i32, i32* %r170 +%r172 = zext i32 %r171 to i64 +%r173 = shl i64 %r172, 32 +%r174 = or i64 %r168, %r173 +%r175 = zext i64 %r174 to i96 +%r177 = getelementptr i32, i32* %r3, i32 2 +%r178 = load i32, i32* %r177 +%r179 = zext i32 %r178 to i96 +%r180 = shl i96 %r179, 64 +%r181 = or i96 %r175, %r180 +%r182 = zext i96 %r181 to i128 +%r184 = getelementptr i32, i32* %r3, i32 3 +%r185 = load i32, i32* %r184 +%r186 = zext i32 %r185 to i128 +%r187 = shl i128 %r186, 96 +%r188 = or i128 %r182, %r187 +%r189 = zext i128 %r188 to i160 +%r191 = getelementptr i32, i32* %r3, i32 4 +%r192 = load i32, i32* %r191 +%r193 = zext i32 %r192 to i160 +%r194 = shl i160 %r193, 128 +%r195 = or i160 %r189, %r194 +%r196 = zext i160 %r195 to i192 +%r198 = getelementptr i32, i32* %r3, i32 5 +%r199 = load i32, i32* %r198 +%r200 = zext i32 %r199 to i192 +%r201 = shl i192 %r200, 160 +%r202 = or i192 %r196, %r201 +%r203 = zext i192 %r202 to i224 +%r205 = getelementptr i32, i32* %r3, i32 6 +%r206 = load i32, i32* %r205 +%r207 = zext i32 %r206 to i224 +%r208 = shl i224 %r207, 192 +%r209 = or i224 %r203, %r208 +%r210 = zext i224 %r209 to i256 +%r212 = getelementptr i32, i32* %r3, i32 7 +%r213 = load i32, i32* %r212 +%r214 = zext i32 %r213 to i256 +%r215 = shl i256 %r214, 224 +%r216 = or i256 %r210, %r215 +%r217 = zext i256 %r216 to i288 +%r219 = getelementptr i32, i32* %r3, i32 8 +%r220 = load i32, i32* %r219 +%r221 = zext i32 %r220 to i288 +%r222 = shl i288 %r221, 256 +%r223 = or i288 %r217, %r222 +%r224 = zext i288 %r223 to i320 +%r226 = getelementptr i32, i32* %r3, i32 9 +%r227 = load i32, i32* %r226 +%r228 = zext i32 %r227 to i320 +%r229 = shl i320 %r228, 288 +%r230 = or i320 %r224, %r229 +%r231 = zext i320 %r230 to i352 +%r233 = getelementptr i32, i32* %r3, i32 10 +%r234 = load i32, i32* %r233 +%r235 = zext i32 %r234 to i352 +%r236 = shl i352 %r235, 320 +%r237 = or i352 %r231, %r236 +%r238 = zext i352 %r237 to i384 +%r240 = getelementptr i32, i32* %r3, i32 11 +%r241 = load i32, i32* %r240 +%r242 = zext i32 %r241 to i384 +%r243 = shl i384 %r242, 352 +%r244 = or i384 %r238, %r243 +%r245 = zext i384 %r244 to i416 +%r247 = getelementptr i32, i32* %r3, i32 12 +%r248 = load i32, i32* %r247 +%r249 = zext i32 %r248 to i416 +%r250 = shl i416 %r249, 384 +%r251 = or i416 %r245, %r250 +%r252 = zext i416 %r251 to i448 +%r254 = getelementptr i32, i32* %r3, i32 13 +%r255 = load i32, i32* %r254 +%r256 = zext i32 %r255 to i448 +%r257 = shl i448 %r256, 416 +%r258 = or i448 %r252, %r257 +%r259 = zext i448 %r258 to i480 +%r261 = getelementptr i32, i32* %r3, i32 14 +%r262 = load i32, i32* %r261 +%r263 = zext i32 %r262 to i480 +%r264 = shl i480 %r263, 448 +%r265 = or i480 %r259, %r264 +%r266 = zext i480 %r265 to i512 +%r268 = getelementptr i32, i32* %r3, i32 15 +%r269 = load i32, i32* %r268 +%r270 = zext i32 %r269 to i512 +%r271 = shl i512 %r270, 480 +%r272 = or i512 %r266, %r271 +%r273 = zext i512 %r272 to i544 +%r275 = getelementptr i32, i32* %r3, i32 16 +%r276 = load i32, i32* %r275 +%r277 = zext i32 %r276 to i544 +%r278 = shl i544 %r277, 512 +%r279 = or i544 %r273, %r278 +%r280 = zext i544 %r279 to i576 +%r282 = getelementptr i32, i32* %r3, i32 17 +%r283 = load i32, i32* %r282 +%r284 = zext i32 %r283 to i576 +%r285 = shl i576 %r284, 544 +%r286 = or i576 %r280, %r285 +%r287 = zext i576 %r286 to i608 +%r289 = getelementptr i32, i32* %r3, i32 18 +%r290 = load i32, i32* %r289 +%r291 = zext i32 %r290 to i608 +%r292 = shl i608 %r291, 576 +%r293 = or i608 %r287, %r292 +%r294 = zext i608 %r293 to i640 +%r296 = getelementptr i32, i32* %r3, i32 19 +%r297 = load i32, i32* %r296 +%r298 = zext i32 %r297 to i640 +%r299 = shl i640 %r298, 608 +%r300 = or i640 %r294, %r299 +%r301 = zext i640 %r300 to i672 +%r303 = getelementptr i32, i32* %r3, i32 20 +%r304 = load i32, i32* %r303 +%r305 = zext i32 %r304 to i672 +%r306 = shl i672 %r305, 640 +%r307 = or i672 %r301, %r306 +%r308 = zext i672 %r307 to i704 +%r310 = getelementptr i32, i32* %r3, i32 21 +%r311 = load i32, i32* %r310 +%r312 = zext i32 %r311 to i704 +%r313 = shl i704 %r312, 672 +%r314 = or i704 %r308, %r313 +%r315 = zext i704 %r314 to i736 +%r317 = getelementptr i32, i32* %r3, i32 22 +%r318 = load i32, i32* %r317 +%r319 = zext i32 %r318 to i736 +%r320 = shl i736 %r319, 704 +%r321 = or i736 %r315, %r320 +%r322 = zext i736 %r321 to i768 +%r324 = getelementptr i32, i32* %r3, i32 23 +%r325 = load i32, i32* %r324 +%r326 = zext i32 %r325 to i768 +%r327 = shl i768 %r326, 736 +%r328 = or i768 %r322, %r327 +%r329 = zext i768 %r166 to i800 +%r330 = zext i768 %r328 to i800 +%r331 = add i800 %r329, %r330 +%r332 = trunc i800 %r331 to i384 +%r334 = getelementptr i32, i32* %r1, i32 0 +%r335 = trunc i384 %r332 to i32 +store i32 %r335, i32* %r334 +%r336 = lshr i384 %r332, 32 +%r338 = getelementptr i32, i32* %r1, i32 1 +%r339 = trunc i384 %r336 to i32 +store i32 %r339, i32* %r338 +%r340 = lshr i384 %r336, 32 +%r342 = getelementptr i32, i32* %r1, i32 2 +%r343 = trunc i384 %r340 to i32 +store i32 %r343, i32* %r342 +%r344 = lshr i384 %r340, 32 +%r346 = getelementptr i32, i32* %r1, i32 3 +%r347 = trunc i384 %r344 to i32 +store i32 %r347, i32* %r346 +%r348 = lshr i384 %r344, 32 +%r350 = getelementptr i32, i32* %r1, i32 4 +%r351 = trunc i384 %r348 to i32 +store i32 %r351, i32* %r350 +%r352 = lshr i384 %r348, 32 +%r354 = getelementptr i32, i32* %r1, i32 5 +%r355 = trunc i384 %r352 to i32 +store i32 %r355, i32* %r354 +%r356 = lshr i384 %r352, 32 +%r358 = getelementptr i32, i32* %r1, i32 6 +%r359 = trunc i384 %r356 to i32 +store i32 %r359, i32* %r358 +%r360 = lshr i384 %r356, 32 +%r362 = getelementptr i32, i32* %r1, i32 7 +%r363 = trunc i384 %r360 to i32 +store i32 %r363, i32* %r362 +%r364 = lshr i384 %r360, 32 +%r366 = getelementptr i32, i32* %r1, i32 8 +%r367 = trunc i384 %r364 to i32 +store i32 %r367, i32* %r366 +%r368 = lshr i384 %r364, 32 +%r370 = getelementptr i32, i32* %r1, i32 9 +%r371 = trunc i384 %r368 to i32 +store i32 %r371, i32* %r370 +%r372 = lshr i384 %r368, 32 +%r374 = getelementptr i32, i32* %r1, i32 10 +%r375 = trunc i384 %r372 to i32 +store i32 %r375, i32* %r374 +%r376 = lshr i384 %r372, 32 +%r378 = getelementptr i32, i32* %r1, i32 11 +%r379 = trunc i384 %r376 to i32 +store i32 %r379, i32* %r378 +%r380 = lshr i800 %r331, 384 +%r381 = trunc i800 %r380 to i416 +%r382 = load i32, i32* %r4 +%r383 = zext i32 %r382 to i64 +%r385 = getelementptr i32, i32* %r4, i32 1 +%r386 = load i32, i32* %r385 +%r387 = zext i32 %r386 to i64 +%r388 = shl i64 %r387, 32 +%r389 = or i64 %r383, %r388 +%r390 = zext i64 %r389 to i96 +%r392 = getelementptr i32, i32* %r4, i32 2 +%r393 = load i32, i32* %r392 +%r394 = zext i32 %r393 to i96 +%r395 = shl i96 %r394, 64 +%r396 = or i96 %r390, %r395 +%r397 = zext i96 %r396 to i128 +%r399 = getelementptr i32, i32* %r4, i32 3 +%r400 = load i32, i32* %r399 +%r401 = zext i32 %r400 to i128 +%r402 = shl i128 %r401, 96 +%r403 = or i128 %r397, %r402 +%r404 = zext i128 %r403 to i160 +%r406 = getelementptr i32, i32* %r4, i32 4 +%r407 = load i32, i32* %r406 +%r408 = zext i32 %r407 to i160 +%r409 = shl i160 %r408, 128 +%r410 = or i160 %r404, %r409 +%r411 = zext i160 %r410 to i192 +%r413 = getelementptr i32, i32* %r4, i32 5 +%r414 = load i32, i32* %r413 +%r415 = zext i32 %r414 to i192 +%r416 = shl i192 %r415, 160 +%r417 = or i192 %r411, %r416 +%r418 = zext i192 %r417 to i224 +%r420 = getelementptr i32, i32* %r4, i32 6 +%r421 = load i32, i32* %r420 +%r422 = zext i32 %r421 to i224 +%r423 = shl i224 %r422, 192 +%r424 = or i224 %r418, %r423 +%r425 = zext i224 %r424 to i256 +%r427 = getelementptr i32, i32* %r4, i32 7 +%r428 = load i32, i32* %r427 +%r429 = zext i32 %r428 to i256 +%r430 = shl i256 %r429, 224 +%r431 = or i256 %r425, %r430 +%r432 = zext i256 %r431 to i288 +%r434 = getelementptr i32, i32* %r4, i32 8 +%r435 = load i32, i32* %r434 +%r436 = zext i32 %r435 to i288 +%r437 = shl i288 %r436, 256 +%r438 = or i288 %r432, %r437 +%r439 = zext i288 %r438 to i320 +%r441 = getelementptr i32, i32* %r4, i32 9 +%r442 = load i32, i32* %r441 +%r443 = zext i32 %r442 to i320 +%r444 = shl i320 %r443, 288 +%r445 = or i320 %r439, %r444 +%r446 = zext i320 %r445 to i352 +%r448 = getelementptr i32, i32* %r4, i32 10 +%r449 = load i32, i32* %r448 +%r450 = zext i32 %r449 to i352 +%r451 = shl i352 %r450, 320 +%r452 = or i352 %r446, %r451 +%r453 = zext i352 %r452 to i384 +%r455 = getelementptr i32, i32* %r4, i32 11 +%r456 = load i32, i32* %r455 +%r457 = zext i32 %r456 to i384 +%r458 = shl i384 %r457, 352 +%r459 = or i384 %r453, %r458 +%r460 = zext i384 %r459 to i416 +%r461 = sub i416 %r381, %r460 +%r462 = lshr i416 %r461, 384 +%r463 = trunc i416 %r462 to i1 +%r464 = select i1 %r463, i416 %r381, i416 %r461 +%r465 = trunc i416 %r464 to i384 +%r467 = getelementptr i32, i32* %r1, i32 12 +%r469 = getelementptr i32, i32* %r467, i32 0 +%r470 = trunc i384 %r465 to i32 +store i32 %r470, i32* %r469 +%r471 = lshr i384 %r465, 32 +%r473 = getelementptr i32, i32* %r467, i32 1 +%r474 = trunc i384 %r471 to i32 +store i32 %r474, i32* %r473 +%r475 = lshr i384 %r471, 32 +%r477 = getelementptr i32, i32* %r467, i32 2 +%r478 = trunc i384 %r475 to i32 +store i32 %r478, i32* %r477 +%r479 = lshr i384 %r475, 32 +%r481 = getelementptr i32, i32* %r467, i32 3 +%r482 = trunc i384 %r479 to i32 +store i32 %r482, i32* %r481 +%r483 = lshr i384 %r479, 32 +%r485 = getelementptr i32, i32* %r467, i32 4 +%r486 = trunc i384 %r483 to i32 +store i32 %r486, i32* %r485 +%r487 = lshr i384 %r483, 32 +%r489 = getelementptr i32, i32* %r467, i32 5 +%r490 = trunc i384 %r487 to i32 +store i32 %r490, i32* %r489 +%r491 = lshr i384 %r487, 32 +%r493 = getelementptr i32, i32* %r467, i32 6 +%r494 = trunc i384 %r491 to i32 +store i32 %r494, i32* %r493 +%r495 = lshr i384 %r491, 32 +%r497 = getelementptr i32, i32* %r467, i32 7 +%r498 = trunc i384 %r495 to i32 +store i32 %r498, i32* %r497 +%r499 = lshr i384 %r495, 32 +%r501 = getelementptr i32, i32* %r467, i32 8 +%r502 = trunc i384 %r499 to i32 +store i32 %r502, i32* %r501 +%r503 = lshr i384 %r499, 32 +%r505 = getelementptr i32, i32* %r467, i32 9 +%r506 = trunc i384 %r503 to i32 +store i32 %r506, i32* %r505 +%r507 = lshr i384 %r503, 32 +%r509 = getelementptr i32, i32* %r467, i32 10 +%r510 = trunc i384 %r507 to i32 +store i32 %r510, i32* %r509 +%r511 = lshr i384 %r507, 32 +%r513 = getelementptr i32, i32* %r467, i32 11 +%r514 = trunc i384 %r511 to i32 +store i32 %r514, i32* %r513 ret void } -define void @mcl_fpDbl_sub16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_sub12L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -48297,1850 +13112,3384 @@ define void @mcl_fpDbl_sub16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r145 = or i672 %r139, %r144 %r146 = zext i672 %r145 to i704 %r148 = getelementptr i32, i32* %r2, i32 21 -%r149 = load i32, i32* %r148 -%r150 = zext i32 %r149 to i704 -%r151 = shl i704 %r150, 672 -%r152 = or i704 %r146, %r151 -%r153 = zext i704 %r152 to i736 -%r155 = getelementptr i32, i32* %r2, i32 22 -%r156 = load i32, i32* %r155 -%r157 = zext i32 %r156 to i736 -%r158 = shl i736 %r157, 704 -%r159 = or i736 %r153, %r158 -%r160 = zext i736 %r159 to i768 -%r162 = getelementptr i32, i32* %r2, i32 23 -%r163 = load i32, i32* %r162 -%r164 = zext i32 %r163 to i768 -%r165 = shl i768 %r164, 736 -%r166 = or i768 %r160, %r165 -%r167 = zext i768 %r166 to i800 -%r169 = getelementptr i32, i32* %r2, i32 24 -%r170 = load i32, i32* %r169 -%r171 = zext i32 %r170 to i800 -%r172 = shl i800 %r171, 768 -%r173 = or i800 %r167, %r172 -%r174 = zext i800 %r173 to i832 -%r176 = getelementptr i32, i32* %r2, i32 25 -%r177 = load i32, i32* %r176 -%r178 = zext i32 %r177 to i832 -%r179 = shl i832 %r178, 800 -%r180 = or i832 %r174, %r179 -%r181 = zext i832 %r180 to i864 -%r183 = getelementptr i32, i32* %r2, i32 26 -%r184 = load i32, i32* %r183 -%r185 = zext i32 %r184 to i864 -%r186 = shl i864 %r185, 832 -%r187 = or i864 %r181, %r186 -%r188 = zext i864 %r187 to i896 -%r190 = getelementptr i32, i32* %r2, i32 27 -%r191 = load i32, i32* %r190 -%r192 = zext i32 %r191 to i896 -%r193 = shl i896 %r192, 864 -%r194 = or i896 %r188, %r193 -%r195 = zext i896 %r194 to i928 -%r197 = getelementptr i32, i32* %r2, i32 28 -%r198 = load i32, i32* %r197 -%r199 = zext i32 %r198 to i928 -%r200 = shl i928 %r199, 896 -%r201 = or i928 %r195, %r200 -%r202 = zext i928 %r201 to i960 -%r204 = getelementptr i32, i32* %r2, i32 29 -%r205 = load i32, i32* %r204 -%r206 = zext i32 %r205 to i960 -%r207 = shl i960 %r206, 928 -%r208 = or i960 %r202, %r207 -%r209 = zext i960 %r208 to i992 -%r211 = getelementptr i32, i32* %r2, i32 30 -%r212 = load i32, i32* %r211 -%r213 = zext i32 %r212 to i992 -%r214 = shl i992 %r213, 960 -%r215 = or i992 %r209, %r214 -%r216 = zext i992 %r215 to i1024 -%r218 = getelementptr i32, i32* %r2, i32 31 -%r219 = load i32, i32* %r218 -%r220 = zext i32 %r219 to i1024 -%r221 = shl i1024 %r220, 992 -%r222 = or i1024 %r216, %r221 -%r223 = load i32, i32* %r3 -%r224 = zext i32 %r223 to i64 -%r226 = getelementptr i32, i32* %r3, i32 1 +%r149 = load i32, i32* %r148 +%r150 = zext i32 %r149 to i704 +%r151 = shl i704 %r150, 672 +%r152 = or i704 %r146, %r151 +%r153 = zext i704 %r152 to i736 +%r155 = getelementptr i32, i32* %r2, i32 22 +%r156 = load i32, i32* %r155 +%r157 = zext i32 %r156 to i736 +%r158 = shl i736 %r157, 704 +%r159 = or i736 %r153, %r158 +%r160 = zext i736 %r159 to i768 +%r162 = getelementptr i32, i32* %r2, i32 23 +%r163 = load i32, i32* %r162 +%r164 = zext i32 %r163 to i768 +%r165 = shl i768 %r164, 736 +%r166 = or i768 %r160, %r165 +%r167 = load i32, i32* %r3 +%r168 = zext i32 %r167 to i64 +%r170 = getelementptr i32, i32* %r3, i32 1 +%r171 = load i32, i32* %r170 +%r172 = zext i32 %r171 to i64 +%r173 = shl i64 %r172, 32 +%r174 = or i64 %r168, %r173 +%r175 = zext i64 %r174 to i96 +%r177 = getelementptr i32, i32* %r3, i32 2 +%r178 = load i32, i32* %r177 +%r179 = zext i32 %r178 to i96 +%r180 = shl i96 %r179, 64 +%r181 = or i96 %r175, %r180 +%r182 = zext i96 %r181 to i128 +%r184 = getelementptr i32, i32* %r3, i32 3 +%r185 = load i32, i32* %r184 +%r186 = zext i32 %r185 to i128 +%r187 = shl i128 %r186, 96 +%r188 = or i128 %r182, %r187 +%r189 = zext i128 %r188 to i160 +%r191 = getelementptr i32, i32* %r3, i32 4 +%r192 = load i32, i32* %r191 +%r193 = zext i32 %r192 to i160 +%r194 = shl i160 %r193, 128 +%r195 = or i160 %r189, %r194 +%r196 = zext i160 %r195 to i192 +%r198 = getelementptr i32, i32* %r3, i32 5 +%r199 = load i32, i32* %r198 +%r200 = zext i32 %r199 to i192 +%r201 = shl i192 %r200, 160 +%r202 = or i192 %r196, %r201 +%r203 = zext i192 %r202 to i224 +%r205 = getelementptr i32, i32* %r3, i32 6 +%r206 = load i32, i32* %r205 +%r207 = zext i32 %r206 to i224 +%r208 = shl i224 %r207, 192 +%r209 = or i224 %r203, %r208 +%r210 = zext i224 %r209 to i256 +%r212 = getelementptr i32, i32* %r3, i32 7 +%r213 = load i32, i32* %r212 +%r214 = zext i32 %r213 to i256 +%r215 = shl i256 %r214, 224 +%r216 = or i256 %r210, %r215 +%r217 = zext i256 %r216 to i288 +%r219 = getelementptr i32, i32* %r3, i32 8 +%r220 = load i32, i32* %r219 +%r221 = zext i32 %r220 to i288 +%r222 = shl i288 %r221, 256 +%r223 = or i288 %r217, %r222 +%r224 = zext i288 %r223 to i320 +%r226 = getelementptr i32, i32* %r3, i32 9 %r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i64 -%r229 = shl i64 %r228, 32 -%r230 = or i64 %r224, %r229 -%r231 = zext i64 %r230 to i96 -%r233 = getelementptr i32, i32* %r3, i32 2 +%r228 = zext i32 %r227 to i320 +%r229 = shl i320 %r228, 288 +%r230 = or i320 %r224, %r229 +%r231 = zext i320 %r230 to i352 +%r233 = getelementptr i32, i32* %r3, i32 10 %r234 = load i32, i32* %r233 -%r235 = zext i32 %r234 to i96 -%r236 = shl i96 %r235, 64 -%r237 = or i96 %r231, %r236 -%r238 = zext i96 %r237 to i128 -%r240 = getelementptr i32, i32* %r3, i32 3 +%r235 = zext i32 %r234 to i352 +%r236 = shl i352 %r235, 320 +%r237 = or i352 %r231, %r236 +%r238 = zext i352 %r237 to i384 +%r240 = getelementptr i32, i32* %r3, i32 11 %r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i128 -%r243 = shl i128 %r242, 96 -%r244 = or i128 %r238, %r243 -%r245 = zext i128 %r244 to i160 -%r247 = getelementptr i32, i32* %r3, i32 4 +%r242 = zext i32 %r241 to i384 +%r243 = shl i384 %r242, 352 +%r244 = or i384 %r238, %r243 +%r245 = zext i384 %r244 to i416 +%r247 = getelementptr i32, i32* %r3, i32 12 %r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i160 -%r250 = shl i160 %r249, 128 -%r251 = or i160 %r245, %r250 -%r252 = zext i160 %r251 to i192 -%r254 = getelementptr i32, i32* %r3, i32 5 +%r249 = zext i32 %r248 to i416 +%r250 = shl i416 %r249, 384 +%r251 = or i416 %r245, %r250 +%r252 = zext i416 %r251 to i448 +%r254 = getelementptr i32, i32* %r3, i32 13 %r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i192 -%r257 = shl i192 %r256, 160 -%r258 = or i192 %r252, %r257 -%r259 = zext i192 %r258 to i224 -%r261 = getelementptr i32, i32* %r3, i32 6 +%r256 = zext i32 %r255 to i448 +%r257 = shl i448 %r256, 416 +%r258 = or i448 %r252, %r257 +%r259 = zext i448 %r258 to i480 +%r261 = getelementptr i32, i32* %r3, i32 14 %r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i224 -%r264 = shl i224 %r263, 192 -%r265 = or i224 %r259, %r264 -%r266 = zext i224 %r265 to i256 -%r268 = getelementptr i32, i32* %r3, i32 7 +%r263 = zext i32 %r262 to i480 +%r264 = shl i480 %r263, 448 +%r265 = or i480 %r259, %r264 +%r266 = zext i480 %r265 to i512 +%r268 = getelementptr i32, i32* %r3, i32 15 %r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i256 -%r271 = shl i256 %r270, 224 -%r272 = or i256 %r266, %r271 -%r273 = zext i256 %r272 to i288 -%r275 = getelementptr i32, i32* %r3, i32 8 +%r270 = zext i32 %r269 to i512 +%r271 = shl i512 %r270, 480 +%r272 = or i512 %r266, %r271 +%r273 = zext i512 %r272 to i544 +%r275 = getelementptr i32, i32* %r3, i32 16 %r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i288 -%r278 = shl i288 %r277, 256 -%r279 = or i288 %r273, %r278 -%r280 = zext i288 %r279 to i320 -%r282 = getelementptr i32, i32* %r3, i32 9 +%r277 = zext i32 %r276 to i544 +%r278 = shl i544 %r277, 512 +%r279 = or i544 %r273, %r278 +%r280 = zext i544 %r279 to i576 +%r282 = getelementptr i32, i32* %r3, i32 17 %r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i320 -%r285 = shl i320 %r284, 288 -%r286 = or i320 %r280, %r285 -%r287 = zext i320 %r286 to i352 -%r289 = getelementptr i32, i32* %r3, i32 10 +%r284 = zext i32 %r283 to i576 +%r285 = shl i576 %r284, 544 +%r286 = or i576 %r280, %r285 +%r287 = zext i576 %r286 to i608 +%r289 = getelementptr i32, i32* %r3, i32 18 %r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i352 -%r292 = shl i352 %r291, 320 -%r293 = or i352 %r287, %r292 -%r294 = zext i352 %r293 to i384 -%r296 = getelementptr i32, i32* %r3, i32 11 +%r291 = zext i32 %r290 to i608 +%r292 = shl i608 %r291, 576 +%r293 = or i608 %r287, %r292 +%r294 = zext i608 %r293 to i640 +%r296 = getelementptr i32, i32* %r3, i32 19 %r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i384 -%r299 = shl i384 %r298, 352 -%r300 = or i384 %r294, %r299 -%r301 = zext i384 %r300 to i416 -%r303 = getelementptr i32, i32* %r3, i32 12 +%r298 = zext i32 %r297 to i640 +%r299 = shl i640 %r298, 608 +%r300 = or i640 %r294, %r299 +%r301 = zext i640 %r300 to i672 +%r303 = getelementptr i32, i32* %r3, i32 20 %r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i416 -%r306 = shl i416 %r305, 384 -%r307 = or i416 %r301, %r306 -%r308 = zext i416 %r307 to i448 -%r310 = getelementptr i32, i32* %r3, i32 13 +%r305 = zext i32 %r304 to i672 +%r306 = shl i672 %r305, 640 +%r307 = or i672 %r301, %r306 +%r308 = zext i672 %r307 to i704 +%r310 = getelementptr i32, i32* %r3, i32 21 %r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i448 -%r313 = shl i448 %r312, 416 -%r314 = or i448 %r308, %r313 -%r315 = zext i448 %r314 to i480 -%r317 = getelementptr i32, i32* %r3, i32 14 -%r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i480 -%r320 = shl i480 %r319, 448 -%r321 = or i480 %r315, %r320 -%r322 = zext i480 %r321 to i512 -%r324 = getelementptr i32, i32* %r3, i32 15 -%r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i512 -%r327 = shl i512 %r326, 480 -%r328 = or i512 %r322, %r327 -%r329 = zext i512 %r328 to i544 -%r331 = getelementptr i32, i32* %r3, i32 16 -%r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i544 -%r334 = shl i544 %r333, 512 -%r335 = or i544 %r329, %r334 -%r336 = zext i544 %r335 to i576 -%r338 = getelementptr i32, i32* %r3, i32 17 -%r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i576 -%r341 = shl i576 %r340, 544 -%r342 = or i576 %r336, %r341 -%r343 = zext i576 %r342 to i608 -%r345 = getelementptr i32, i32* %r3, i32 18 -%r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i608 -%r348 = shl i608 %r347, 576 -%r349 = or i608 %r343, %r348 -%r350 = zext i608 %r349 to i640 -%r352 = getelementptr i32, i32* %r3, i32 19 -%r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i640 -%r355 = shl i640 %r354, 608 -%r356 = or i640 %r350, %r355 -%r357 = zext i640 %r356 to i672 -%r359 = getelementptr i32, i32* %r3, i32 20 -%r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i672 -%r362 = shl i672 %r361, 640 -%r363 = or i672 %r357, %r362 -%r364 = zext i672 %r363 to i704 -%r366 = getelementptr i32, i32* %r3, i32 21 -%r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i704 -%r369 = shl i704 %r368, 672 -%r370 = or i704 %r364, %r369 -%r371 = zext i704 %r370 to i736 -%r373 = getelementptr i32, i32* %r3, i32 22 -%r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i736 -%r376 = shl i736 %r375, 704 -%r377 = or i736 %r371, %r376 -%r378 = zext i736 %r377 to i768 -%r380 = getelementptr i32, i32* %r3, i32 23 -%r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i768 -%r383 = shl i768 %r382, 736 -%r384 = or i768 %r378, %r383 -%r385 = zext i768 %r384 to i800 -%r387 = getelementptr i32, i32* %r3, i32 24 +%r312 = zext i32 %r311 to i704 +%r313 = shl i704 %r312, 672 +%r314 = or i704 %r308, %r313 +%r315 = zext i704 %r314 to i736 +%r317 = getelementptr i32, i32* %r3, i32 22 +%r318 = load i32, i32* %r317 +%r319 = zext i32 %r318 to i736 +%r320 = shl i736 %r319, 704 +%r321 = or i736 %r315, %r320 +%r322 = zext i736 %r321 to i768 +%r324 = getelementptr i32, i32* %r3, i32 23 +%r325 = load i32, i32* %r324 +%r326 = zext i32 %r325 to i768 +%r327 = shl i768 %r326, 736 +%r328 = or i768 %r322, %r327 +%r329 = zext i768 %r166 to i800 +%r330 = zext i768 %r328 to i800 +%r331 = sub i800 %r329, %r330 +%r332 = trunc i800 %r331 to i384 +%r334 = getelementptr i32, i32* %r1, i32 0 +%r335 = trunc i384 %r332 to i32 +store i32 %r335, i32* %r334 +%r336 = lshr i384 %r332, 32 +%r338 = getelementptr i32, i32* %r1, i32 1 +%r339 = trunc i384 %r336 to i32 +store i32 %r339, i32* %r338 +%r340 = lshr i384 %r336, 32 +%r342 = getelementptr i32, i32* %r1, i32 2 +%r343 = trunc i384 %r340 to i32 +store i32 %r343, i32* %r342 +%r344 = lshr i384 %r340, 32 +%r346 = getelementptr i32, i32* %r1, i32 3 +%r347 = trunc i384 %r344 to i32 +store i32 %r347, i32* %r346 +%r348 = lshr i384 %r344, 32 +%r350 = getelementptr i32, i32* %r1, i32 4 +%r351 = trunc i384 %r348 to i32 +store i32 %r351, i32* %r350 +%r352 = lshr i384 %r348, 32 +%r354 = getelementptr i32, i32* %r1, i32 5 +%r355 = trunc i384 %r352 to i32 +store i32 %r355, i32* %r354 +%r356 = lshr i384 %r352, 32 +%r358 = getelementptr i32, i32* %r1, i32 6 +%r359 = trunc i384 %r356 to i32 +store i32 %r359, i32* %r358 +%r360 = lshr i384 %r356, 32 +%r362 = getelementptr i32, i32* %r1, i32 7 +%r363 = trunc i384 %r360 to i32 +store i32 %r363, i32* %r362 +%r364 = lshr i384 %r360, 32 +%r366 = getelementptr i32, i32* %r1, i32 8 +%r367 = trunc i384 %r364 to i32 +store i32 %r367, i32* %r366 +%r368 = lshr i384 %r364, 32 +%r370 = getelementptr i32, i32* %r1, i32 9 +%r371 = trunc i384 %r368 to i32 +store i32 %r371, i32* %r370 +%r372 = lshr i384 %r368, 32 +%r374 = getelementptr i32, i32* %r1, i32 10 +%r375 = trunc i384 %r372 to i32 +store i32 %r375, i32* %r374 +%r376 = lshr i384 %r372, 32 +%r378 = getelementptr i32, i32* %r1, i32 11 +%r379 = trunc i384 %r376 to i32 +store i32 %r379, i32* %r378 +%r380 = lshr i800 %r331, 384 +%r381 = trunc i800 %r380 to i384 +%r382 = lshr i800 %r331, 768 +%r383 = trunc i800 %r382 to i1 +%r384 = load i32, i32* %r4 +%r385 = zext i32 %r384 to i64 +%r387 = getelementptr i32, i32* %r4, i32 1 %r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i800 -%r390 = shl i800 %r389, 768 -%r391 = or i800 %r385, %r390 -%r392 = zext i800 %r391 to i832 -%r394 = getelementptr i32, i32* %r3, i32 25 +%r389 = zext i32 %r388 to i64 +%r390 = shl i64 %r389, 32 +%r391 = or i64 %r385, %r390 +%r392 = zext i64 %r391 to i96 +%r394 = getelementptr i32, i32* %r4, i32 2 %r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i832 -%r397 = shl i832 %r396, 800 -%r398 = or i832 %r392, %r397 -%r399 = zext i832 %r398 to i864 -%r401 = getelementptr i32, i32* %r3, i32 26 +%r396 = zext i32 %r395 to i96 +%r397 = shl i96 %r396, 64 +%r398 = or i96 %r392, %r397 +%r399 = zext i96 %r398 to i128 +%r401 = getelementptr i32, i32* %r4, i32 3 %r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i864 -%r404 = shl i864 %r403, 832 -%r405 = or i864 %r399, %r404 -%r406 = zext i864 %r405 to i896 -%r408 = getelementptr i32, i32* %r3, i32 27 +%r403 = zext i32 %r402 to i128 +%r404 = shl i128 %r403, 96 +%r405 = or i128 %r399, %r404 +%r406 = zext i128 %r405 to i160 +%r408 = getelementptr i32, i32* %r4, i32 4 %r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i896 -%r411 = shl i896 %r410, 864 -%r412 = or i896 %r406, %r411 -%r413 = zext i896 %r412 to i928 -%r415 = getelementptr i32, i32* %r3, i32 28 +%r410 = zext i32 %r409 to i160 +%r411 = shl i160 %r410, 128 +%r412 = or i160 %r406, %r411 +%r413 = zext i160 %r412 to i192 +%r415 = getelementptr i32, i32* %r4, i32 5 %r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i928 -%r418 = shl i928 %r417, 896 -%r419 = or i928 %r413, %r418 -%r420 = zext i928 %r419 to i960 -%r422 = getelementptr i32, i32* %r3, i32 29 +%r417 = zext i32 %r416 to i192 +%r418 = shl i192 %r417, 160 +%r419 = or i192 %r413, %r418 +%r420 = zext i192 %r419 to i224 +%r422 = getelementptr i32, i32* %r4, i32 6 %r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i960 -%r425 = shl i960 %r424, 928 -%r426 = or i960 %r420, %r425 -%r427 = zext i960 %r426 to i992 -%r429 = getelementptr i32, i32* %r3, i32 30 +%r424 = zext i32 %r423 to i224 +%r425 = shl i224 %r424, 192 +%r426 = or i224 %r420, %r425 +%r427 = zext i224 %r426 to i256 +%r429 = getelementptr i32, i32* %r4, i32 7 %r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i992 -%r432 = shl i992 %r431, 960 -%r433 = or i992 %r427, %r432 -%r434 = zext i992 %r433 to i1024 -%r436 = getelementptr i32, i32* %r3, i32 31 +%r431 = zext i32 %r430 to i256 +%r432 = shl i256 %r431, 224 +%r433 = or i256 %r427, %r432 +%r434 = zext i256 %r433 to i288 +%r436 = getelementptr i32, i32* %r4, i32 8 %r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i1024 -%r439 = shl i1024 %r438, 992 -%r440 = or i1024 %r434, %r439 -%r441 = zext i1024 %r222 to i1056 -%r442 = zext i1024 %r440 to i1056 -%r443 = sub i1056 %r441, %r442 -%r444 = trunc i1056 %r443 to i512 -%r445 = trunc i512 %r444 to i32 -%r447 = getelementptr i32, i32* %r1, i32 0 -store i32 %r445, i32* %r447 -%r448 = lshr i512 %r444, 32 -%r449 = trunc i512 %r448 to i32 -%r451 = getelementptr i32, i32* %r1, i32 1 -store i32 %r449, i32* %r451 -%r452 = lshr i512 %r448, 32 -%r453 = trunc i512 %r452 to i32 -%r455 = getelementptr i32, i32* %r1, i32 2 -store i32 %r453, i32* %r455 -%r456 = lshr i512 %r452, 32 -%r457 = trunc i512 %r456 to i32 -%r459 = getelementptr i32, i32* %r1, i32 3 -store i32 %r457, i32* %r459 -%r460 = lshr i512 %r456, 32 -%r461 = trunc i512 %r460 to i32 -%r463 = getelementptr i32, i32* %r1, i32 4 -store i32 %r461, i32* %r463 -%r464 = lshr i512 %r460, 32 -%r465 = trunc i512 %r464 to i32 -%r467 = getelementptr i32, i32* %r1, i32 5 -store i32 %r465, i32* %r467 -%r468 = lshr i512 %r464, 32 -%r469 = trunc i512 %r468 to i32 -%r471 = getelementptr i32, i32* %r1, i32 6 -store i32 %r469, i32* %r471 -%r472 = lshr i512 %r468, 32 -%r473 = trunc i512 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 7 -store i32 %r473, i32* %r475 -%r476 = lshr i512 %r472, 32 -%r477 = trunc i512 %r476 to i32 -%r479 = getelementptr i32, i32* %r1, i32 8 -store i32 %r477, i32* %r479 -%r480 = lshr i512 %r476, 32 -%r481 = trunc i512 %r480 to i32 -%r483 = getelementptr i32, i32* %r1, i32 9 -store i32 %r481, i32* %r483 -%r484 = lshr i512 %r480, 32 -%r485 = trunc i512 %r484 to i32 -%r487 = getelementptr i32, i32* %r1, i32 10 -store i32 %r485, i32* %r487 -%r488 = lshr i512 %r484, 32 -%r489 = trunc i512 %r488 to i32 -%r491 = getelementptr i32, i32* %r1, i32 11 -store i32 %r489, i32* %r491 -%r492 = lshr i512 %r488, 32 -%r493 = trunc i512 %r492 to i32 -%r495 = getelementptr i32, i32* %r1, i32 12 -store i32 %r493, i32* %r495 -%r496 = lshr i512 %r492, 32 -%r497 = trunc i512 %r496 to i32 -%r499 = getelementptr i32, i32* %r1, i32 13 -store i32 %r497, i32* %r499 -%r500 = lshr i512 %r496, 32 -%r501 = trunc i512 %r500 to i32 -%r503 = getelementptr i32, i32* %r1, i32 14 -store i32 %r501, i32* %r503 -%r504 = lshr i512 %r500, 32 -%r505 = trunc i512 %r504 to i32 -%r507 = getelementptr i32, i32* %r1, i32 15 -store i32 %r505, i32* %r507 -%r508 = lshr i1056 %r443, 512 -%r509 = trunc i1056 %r508 to i512 -%r510 = lshr i1056 %r443, 1024 -%r511 = trunc i1056 %r510 to i1 -%r512 = load i32, i32* %r4 -%r513 = zext i32 %r512 to i64 -%r515 = getelementptr i32, i32* %r4, i32 1 -%r516 = load i32, i32* %r515 -%r517 = zext i32 %r516 to i64 -%r518 = shl i64 %r517, 32 -%r519 = or i64 %r513, %r518 -%r520 = zext i64 %r519 to i96 -%r522 = getelementptr i32, i32* %r4, i32 2 -%r523 = load i32, i32* %r522 -%r524 = zext i32 %r523 to i96 -%r525 = shl i96 %r524, 64 -%r526 = or i96 %r520, %r525 -%r527 = zext i96 %r526 to i128 -%r529 = getelementptr i32, i32* %r4, i32 3 -%r530 = load i32, i32* %r529 -%r531 = zext i32 %r530 to i128 -%r532 = shl i128 %r531, 96 -%r533 = or i128 %r527, %r532 -%r534 = zext i128 %r533 to i160 -%r536 = getelementptr i32, i32* %r4, i32 4 -%r537 = load i32, i32* %r536 -%r538 = zext i32 %r537 to i160 -%r539 = shl i160 %r538, 128 -%r540 = or i160 %r534, %r539 -%r541 = zext i160 %r540 to i192 -%r543 = getelementptr i32, i32* %r4, i32 5 -%r544 = load i32, i32* %r543 -%r545 = zext i32 %r544 to i192 -%r546 = shl i192 %r545, 160 -%r547 = or i192 %r541, %r546 -%r548 = zext i192 %r547 to i224 -%r550 = getelementptr i32, i32* %r4, i32 6 -%r551 = load i32, i32* %r550 -%r552 = zext i32 %r551 to i224 -%r553 = shl i224 %r552, 192 -%r554 = or i224 %r548, %r553 -%r555 = zext i224 %r554 to i256 -%r557 = getelementptr i32, i32* %r4, i32 7 -%r558 = load i32, i32* %r557 -%r559 = zext i32 %r558 to i256 -%r560 = shl i256 %r559, 224 -%r561 = or i256 %r555, %r560 -%r562 = zext i256 %r561 to i288 -%r564 = getelementptr i32, i32* %r4, i32 8 -%r565 = load i32, i32* %r564 -%r566 = zext i32 %r565 to i288 -%r567 = shl i288 %r566, 256 -%r568 = or i288 %r562, %r567 -%r569 = zext i288 %r568 to i320 -%r571 = getelementptr i32, i32* %r4, i32 9 -%r572 = load i32, i32* %r571 -%r573 = zext i32 %r572 to i320 -%r574 = shl i320 %r573, 288 -%r575 = or i320 %r569, %r574 -%r576 = zext i320 %r575 to i352 -%r578 = getelementptr i32, i32* %r4, i32 10 -%r579 = load i32, i32* %r578 -%r580 = zext i32 %r579 to i352 -%r581 = shl i352 %r580, 320 -%r582 = or i352 %r576, %r581 -%r583 = zext i352 %r582 to i384 -%r585 = getelementptr i32, i32* %r4, i32 11 -%r586 = load i32, i32* %r585 -%r587 = zext i32 %r586 to i384 -%r588 = shl i384 %r587, 352 -%r589 = or i384 %r583, %r588 -%r590 = zext i384 %r589 to i416 -%r592 = getelementptr i32, i32* %r4, i32 12 -%r593 = load i32, i32* %r592 -%r594 = zext i32 %r593 to i416 -%r595 = shl i416 %r594, 384 -%r596 = or i416 %r590, %r595 -%r597 = zext i416 %r596 to i448 -%r599 = getelementptr i32, i32* %r4, i32 13 -%r600 = load i32, i32* %r599 -%r601 = zext i32 %r600 to i448 -%r602 = shl i448 %r601, 416 -%r603 = or i448 %r597, %r602 -%r604 = zext i448 %r603 to i480 -%r606 = getelementptr i32, i32* %r4, i32 14 -%r607 = load i32, i32* %r606 -%r608 = zext i32 %r607 to i480 -%r609 = shl i480 %r608, 448 -%r610 = or i480 %r604, %r609 -%r611 = zext i480 %r610 to i512 -%r613 = getelementptr i32, i32* %r4, i32 15 -%r614 = load i32, i32* %r613 -%r615 = zext i32 %r614 to i512 -%r616 = shl i512 %r615, 480 -%r617 = or i512 %r611, %r616 -%r619 = select i1 %r511, i512 %r617, i512 0 -%r620 = add i512 %r509, %r619 -%r622 = getelementptr i32, i32* %r1, i32 16 -%r623 = trunc i512 %r620 to i32 -%r625 = getelementptr i32, i32* %r622, i32 0 -store i32 %r623, i32* %r625 -%r626 = lshr i512 %r620, 32 -%r627 = trunc i512 %r626 to i32 -%r629 = getelementptr i32, i32* %r622, i32 1 -store i32 %r627, i32* %r629 -%r630 = lshr i512 %r626, 32 -%r631 = trunc i512 %r630 to i32 -%r633 = getelementptr i32, i32* %r622, i32 2 -store i32 %r631, i32* %r633 -%r634 = lshr i512 %r630, 32 -%r635 = trunc i512 %r634 to i32 -%r637 = getelementptr i32, i32* %r622, i32 3 -store i32 %r635, i32* %r637 -%r638 = lshr i512 %r634, 32 -%r639 = trunc i512 %r638 to i32 -%r641 = getelementptr i32, i32* %r622, i32 4 -store i32 %r639, i32* %r641 -%r642 = lshr i512 %r638, 32 -%r643 = trunc i512 %r642 to i32 -%r645 = getelementptr i32, i32* %r622, i32 5 -store i32 %r643, i32* %r645 -%r646 = lshr i512 %r642, 32 -%r647 = trunc i512 %r646 to i32 -%r649 = getelementptr i32, i32* %r622, i32 6 -store i32 %r647, i32* %r649 -%r650 = lshr i512 %r646, 32 -%r651 = trunc i512 %r650 to i32 -%r653 = getelementptr i32, i32* %r622, i32 7 -store i32 %r651, i32* %r653 -%r654 = lshr i512 %r650, 32 -%r655 = trunc i512 %r654 to i32 -%r657 = getelementptr i32, i32* %r622, i32 8 -store i32 %r655, i32* %r657 -%r658 = lshr i512 %r654, 32 -%r659 = trunc i512 %r658 to i32 -%r661 = getelementptr i32, i32* %r622, i32 9 -store i32 %r659, i32* %r661 -%r662 = lshr i512 %r658, 32 -%r663 = trunc i512 %r662 to i32 -%r665 = getelementptr i32, i32* %r622, i32 10 -store i32 %r663, i32* %r665 -%r666 = lshr i512 %r662, 32 -%r667 = trunc i512 %r666 to i32 -%r669 = getelementptr i32, i32* %r622, i32 11 -store i32 %r667, i32* %r669 -%r670 = lshr i512 %r666, 32 -%r671 = trunc i512 %r670 to i32 -%r673 = getelementptr i32, i32* %r622, i32 12 -store i32 %r671, i32* %r673 -%r674 = lshr i512 %r670, 32 -%r675 = trunc i512 %r674 to i32 -%r677 = getelementptr i32, i32* %r622, i32 13 -store i32 %r675, i32* %r677 -%r678 = lshr i512 %r674, 32 -%r679 = trunc i512 %r678 to i32 -%r681 = getelementptr i32, i32* %r622, i32 14 -store i32 %r679, i32* %r681 -%r682 = lshr i512 %r678, 32 -%r683 = trunc i512 %r682 to i32 -%r685 = getelementptr i32, i32* %r622, i32 15 -store i32 %r683, i32* %r685 +%r438 = zext i32 %r437 to i288 +%r439 = shl i288 %r438, 256 +%r440 = or i288 %r434, %r439 +%r441 = zext i288 %r440 to i320 +%r443 = getelementptr i32, i32* %r4, i32 9 +%r444 = load i32, i32* %r443 +%r445 = zext i32 %r444 to i320 +%r446 = shl i320 %r445, 288 +%r447 = or i320 %r441, %r446 +%r448 = zext i320 %r447 to i352 +%r450 = getelementptr i32, i32* %r4, i32 10 +%r451 = load i32, i32* %r450 +%r452 = zext i32 %r451 to i352 +%r453 = shl i352 %r452, 320 +%r454 = or i352 %r448, %r453 +%r455 = zext i352 %r454 to i384 +%r457 = getelementptr i32, i32* %r4, i32 11 +%r458 = load i32, i32* %r457 +%r459 = zext i32 %r458 to i384 +%r460 = shl i384 %r459, 352 +%r461 = or i384 %r455, %r460 +%r463 = select i1 %r383, i384 %r461, i384 0 +%r464 = add i384 %r381, %r463 +%r466 = getelementptr i32, i32* %r1, i32 12 +%r468 = getelementptr i32, i32* %r466, i32 0 +%r469 = trunc i384 %r464 to i32 +store i32 %r469, i32* %r468 +%r470 = lshr i384 %r464, 32 +%r472 = getelementptr i32, i32* %r466, i32 1 +%r473 = trunc i384 %r470 to i32 +store i32 %r473, i32* %r472 +%r474 = lshr i384 %r470, 32 +%r476 = getelementptr i32, i32* %r466, i32 2 +%r477 = trunc i384 %r474 to i32 +store i32 %r477, i32* %r476 +%r478 = lshr i384 %r474, 32 +%r480 = getelementptr i32, i32* %r466, i32 3 +%r481 = trunc i384 %r478 to i32 +store i32 %r481, i32* %r480 +%r482 = lshr i384 %r478, 32 +%r484 = getelementptr i32, i32* %r466, i32 4 +%r485 = trunc i384 %r482 to i32 +store i32 %r485, i32* %r484 +%r486 = lshr i384 %r482, 32 +%r488 = getelementptr i32, i32* %r466, i32 5 +%r489 = trunc i384 %r486 to i32 +store i32 %r489, i32* %r488 +%r490 = lshr i384 %r486, 32 +%r492 = getelementptr i32, i32* %r466, i32 6 +%r493 = trunc i384 %r490 to i32 +store i32 %r493, i32* %r492 +%r494 = lshr i384 %r490, 32 +%r496 = getelementptr i32, i32* %r466, i32 7 +%r497 = trunc i384 %r494 to i32 +store i32 %r497, i32* %r496 +%r498 = lshr i384 %r494, 32 +%r500 = getelementptr i32, i32* %r466, i32 8 +%r501 = trunc i384 %r498 to i32 +store i32 %r501, i32* %r500 +%r502 = lshr i384 %r498, 32 +%r504 = getelementptr i32, i32* %r466, i32 9 +%r505 = trunc i384 %r502 to i32 +store i32 %r505, i32* %r504 +%r506 = lshr i384 %r502, 32 +%r508 = getelementptr i32, i32* %r466, i32 10 +%r509 = trunc i384 %r506 to i32 +store i32 %r509, i32* %r508 +%r510 = lshr i384 %r506, 32 +%r512 = getelementptr i32, i32* %r466, i32 11 +%r513 = trunc i384 %r510 to i32 +store i32 %r513, i32* %r512 +ret void +} +define i544 @mulPv512x32(i32* noalias %r2, i32 %r3) +{ +%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) +%r6 = trunc i64 %r5 to i32 +%r7 = call i32 @extractHigh32(i64 %r5) +%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) +%r10 = trunc i64 %r9 to i32 +%r11 = call i32 @extractHigh32(i64 %r9) +%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) +%r14 = trunc i64 %r13 to i32 +%r15 = call i32 @extractHigh32(i64 %r13) +%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) +%r18 = trunc i64 %r17 to i32 +%r19 = call i32 @extractHigh32(i64 %r17) +%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) +%r22 = trunc i64 %r21 to i32 +%r23 = call i32 @extractHigh32(i64 %r21) +%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) +%r26 = trunc i64 %r25 to i32 +%r27 = call i32 @extractHigh32(i64 %r25) +%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) +%r30 = trunc i64 %r29 to i32 +%r31 = call i32 @extractHigh32(i64 %r29) +%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) +%r34 = trunc i64 %r33 to i32 +%r35 = call i32 @extractHigh32(i64 %r33) +%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) +%r38 = trunc i64 %r37 to i32 +%r39 = call i32 @extractHigh32(i64 %r37) +%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) +%r42 = trunc i64 %r41 to i32 +%r43 = call i32 @extractHigh32(i64 %r41) +%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) +%r46 = trunc i64 %r45 to i32 +%r47 = call i32 @extractHigh32(i64 %r45) +%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) +%r50 = trunc i64 %r49 to i32 +%r51 = call i32 @extractHigh32(i64 %r49) +%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) +%r54 = trunc i64 %r53 to i32 +%r55 = call i32 @extractHigh32(i64 %r53) +%r57 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 13) +%r58 = trunc i64 %r57 to i32 +%r59 = call i32 @extractHigh32(i64 %r57) +%r61 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 14) +%r62 = trunc i64 %r61 to i32 +%r63 = call i32 @extractHigh32(i64 %r61) +%r65 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 15) +%r66 = trunc i64 %r65 to i32 +%r67 = call i32 @extractHigh32(i64 %r65) +%r68 = zext i32 %r6 to i64 +%r69 = zext i32 %r10 to i64 +%r70 = shl i64 %r69, 32 +%r71 = or i64 %r68, %r70 +%r72 = zext i64 %r71 to i96 +%r73 = zext i32 %r14 to i96 +%r74 = shl i96 %r73, 64 +%r75 = or i96 %r72, %r74 +%r76 = zext i96 %r75 to i128 +%r77 = zext i32 %r18 to i128 +%r78 = shl i128 %r77, 96 +%r79 = or i128 %r76, %r78 +%r80 = zext i128 %r79 to i160 +%r81 = zext i32 %r22 to i160 +%r82 = shl i160 %r81, 128 +%r83 = or i160 %r80, %r82 +%r84 = zext i160 %r83 to i192 +%r85 = zext i32 %r26 to i192 +%r86 = shl i192 %r85, 160 +%r87 = or i192 %r84, %r86 +%r88 = zext i192 %r87 to i224 +%r89 = zext i32 %r30 to i224 +%r90 = shl i224 %r89, 192 +%r91 = or i224 %r88, %r90 +%r92 = zext i224 %r91 to i256 +%r93 = zext i32 %r34 to i256 +%r94 = shl i256 %r93, 224 +%r95 = or i256 %r92, %r94 +%r96 = zext i256 %r95 to i288 +%r97 = zext i32 %r38 to i288 +%r98 = shl i288 %r97, 256 +%r99 = or i288 %r96, %r98 +%r100 = zext i288 %r99 to i320 +%r101 = zext i32 %r42 to i320 +%r102 = shl i320 %r101, 288 +%r103 = or i320 %r100, %r102 +%r104 = zext i320 %r103 to i352 +%r105 = zext i32 %r46 to i352 +%r106 = shl i352 %r105, 320 +%r107 = or i352 %r104, %r106 +%r108 = zext i352 %r107 to i384 +%r109 = zext i32 %r50 to i384 +%r110 = shl i384 %r109, 352 +%r111 = or i384 %r108, %r110 +%r112 = zext i384 %r111 to i416 +%r113 = zext i32 %r54 to i416 +%r114 = shl i416 %r113, 384 +%r115 = or i416 %r112, %r114 +%r116 = zext i416 %r115 to i448 +%r117 = zext i32 %r58 to i448 +%r118 = shl i448 %r117, 416 +%r119 = or i448 %r116, %r118 +%r120 = zext i448 %r119 to i480 +%r121 = zext i32 %r62 to i480 +%r122 = shl i480 %r121, 448 +%r123 = or i480 %r120, %r122 +%r124 = zext i480 %r123 to i512 +%r125 = zext i32 %r66 to i512 +%r126 = shl i512 %r125, 480 +%r127 = or i512 %r124, %r126 +%r128 = zext i32 %r7 to i64 +%r129 = zext i32 %r11 to i64 +%r130 = shl i64 %r129, 32 +%r131 = or i64 %r128, %r130 +%r132 = zext i64 %r131 to i96 +%r133 = zext i32 %r15 to i96 +%r134 = shl i96 %r133, 64 +%r135 = or i96 %r132, %r134 +%r136 = zext i96 %r135 to i128 +%r137 = zext i32 %r19 to i128 +%r138 = shl i128 %r137, 96 +%r139 = or i128 %r136, %r138 +%r140 = zext i128 %r139 to i160 +%r141 = zext i32 %r23 to i160 +%r142 = shl i160 %r141, 128 +%r143 = or i160 %r140, %r142 +%r144 = zext i160 %r143 to i192 +%r145 = zext i32 %r27 to i192 +%r146 = shl i192 %r145, 160 +%r147 = or i192 %r144, %r146 +%r148 = zext i192 %r147 to i224 +%r149 = zext i32 %r31 to i224 +%r150 = shl i224 %r149, 192 +%r151 = or i224 %r148, %r150 +%r152 = zext i224 %r151 to i256 +%r153 = zext i32 %r35 to i256 +%r154 = shl i256 %r153, 224 +%r155 = or i256 %r152, %r154 +%r156 = zext i256 %r155 to i288 +%r157 = zext i32 %r39 to i288 +%r158 = shl i288 %r157, 256 +%r159 = or i288 %r156, %r158 +%r160 = zext i288 %r159 to i320 +%r161 = zext i32 %r43 to i320 +%r162 = shl i320 %r161, 288 +%r163 = or i320 %r160, %r162 +%r164 = zext i320 %r163 to i352 +%r165 = zext i32 %r47 to i352 +%r166 = shl i352 %r165, 320 +%r167 = or i352 %r164, %r166 +%r168 = zext i352 %r167 to i384 +%r169 = zext i32 %r51 to i384 +%r170 = shl i384 %r169, 352 +%r171 = or i384 %r168, %r170 +%r172 = zext i384 %r171 to i416 +%r173 = zext i32 %r55 to i416 +%r174 = shl i416 %r173, 384 +%r175 = or i416 %r172, %r174 +%r176 = zext i416 %r175 to i448 +%r177 = zext i32 %r59 to i448 +%r178 = shl i448 %r177, 416 +%r179 = or i448 %r176, %r178 +%r180 = zext i448 %r179 to i480 +%r181 = zext i32 %r63 to i480 +%r182 = shl i480 %r181, 448 +%r183 = or i480 %r180, %r182 +%r184 = zext i480 %r183 to i512 +%r185 = zext i32 %r67 to i512 +%r186 = shl i512 %r185, 480 +%r187 = or i512 %r184, %r186 +%r188 = zext i512 %r127 to i544 +%r189 = zext i512 %r187 to i544 +%r190 = shl i544 %r189, 32 +%r191 = add i544 %r188, %r190 +ret i544 %r191 +} +define void @mcl_fp_mulUnitPre16L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +{ +%r4 = call i544 @mulPv512x32(i32* %r2, i32 %r3) +%r6 = getelementptr i32, i32* %r1, i32 0 +%r7 = trunc i544 %r4 to i32 +store i32 %r7, i32* %r6 +%r8 = lshr i544 %r4, 32 +%r10 = getelementptr i32, i32* %r1, i32 1 +%r11 = trunc i544 %r8 to i32 +store i32 %r11, i32* %r10 +%r12 = lshr i544 %r8, 32 +%r14 = getelementptr i32, i32* %r1, i32 2 +%r15 = trunc i544 %r12 to i32 +store i32 %r15, i32* %r14 +%r16 = lshr i544 %r12, 32 +%r18 = getelementptr i32, i32* %r1, i32 3 +%r19 = trunc i544 %r16 to i32 +store i32 %r19, i32* %r18 +%r20 = lshr i544 %r16, 32 +%r22 = getelementptr i32, i32* %r1, i32 4 +%r23 = trunc i544 %r20 to i32 +store i32 %r23, i32* %r22 +%r24 = lshr i544 %r20, 32 +%r26 = getelementptr i32, i32* %r1, i32 5 +%r27 = trunc i544 %r24 to i32 +store i32 %r27, i32* %r26 +%r28 = lshr i544 %r24, 32 +%r30 = getelementptr i32, i32* %r1, i32 6 +%r31 = trunc i544 %r28 to i32 +store i32 %r31, i32* %r30 +%r32 = lshr i544 %r28, 32 +%r34 = getelementptr i32, i32* %r1, i32 7 +%r35 = trunc i544 %r32 to i32 +store i32 %r35, i32* %r34 +%r36 = lshr i544 %r32, 32 +%r38 = getelementptr i32, i32* %r1, i32 8 +%r39 = trunc i544 %r36 to i32 +store i32 %r39, i32* %r38 +%r40 = lshr i544 %r36, 32 +%r42 = getelementptr i32, i32* %r1, i32 9 +%r43 = trunc i544 %r40 to i32 +store i32 %r43, i32* %r42 +%r44 = lshr i544 %r40, 32 +%r46 = getelementptr i32, i32* %r1, i32 10 +%r47 = trunc i544 %r44 to i32 +store i32 %r47, i32* %r46 +%r48 = lshr i544 %r44, 32 +%r50 = getelementptr i32, i32* %r1, i32 11 +%r51 = trunc i544 %r48 to i32 +store i32 %r51, i32* %r50 +%r52 = lshr i544 %r48, 32 +%r54 = getelementptr i32, i32* %r1, i32 12 +%r55 = trunc i544 %r52 to i32 +store i32 %r55, i32* %r54 +%r56 = lshr i544 %r52, 32 +%r58 = getelementptr i32, i32* %r1, i32 13 +%r59 = trunc i544 %r56 to i32 +store i32 %r59, i32* %r58 +%r60 = lshr i544 %r56, 32 +%r62 = getelementptr i32, i32* %r1, i32 14 +%r63 = trunc i544 %r60 to i32 +store i32 %r63, i32* %r62 +%r64 = lshr i544 %r60, 32 +%r66 = getelementptr i32, i32* %r1, i32 15 +%r67 = trunc i544 %r64 to i32 +store i32 %r67, i32* %r66 +%r68 = lshr i544 %r64, 32 +%r70 = getelementptr i32, i32* %r1, i32 16 +%r71 = trunc i544 %r68 to i32 +store i32 %r71, i32* %r70 +ret void +} +define void @mcl_fpDbl_mulPre16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +{ +%r5 = getelementptr i32, i32* %r2, i32 8 +%r7 = getelementptr i32, i32* %r3, i32 8 +%r9 = getelementptr i32, i32* %r1, i32 16 +call void @mcl_fpDbl_mulPre8L(i32* %r1, i32* %r2, i32* %r3) +call void @mcl_fpDbl_mulPre8L(i32* %r9, i32* %r5, i32* %r7) +%r10 = load i32, i32* %r5 +%r11 = zext i32 %r10 to i64 +%r13 = getelementptr i32, i32* %r5, i32 1 +%r14 = load i32, i32* %r13 +%r15 = zext i32 %r14 to i64 +%r16 = shl i64 %r15, 32 +%r17 = or i64 %r11, %r16 +%r18 = zext i64 %r17 to i96 +%r20 = getelementptr i32, i32* %r5, i32 2 +%r21 = load i32, i32* %r20 +%r22 = zext i32 %r21 to i96 +%r23 = shl i96 %r22, 64 +%r24 = or i96 %r18, %r23 +%r25 = zext i96 %r24 to i128 +%r27 = getelementptr i32, i32* %r5, i32 3 +%r28 = load i32, i32* %r27 +%r29 = zext i32 %r28 to i128 +%r30 = shl i128 %r29, 96 +%r31 = or i128 %r25, %r30 +%r32 = zext i128 %r31 to i160 +%r34 = getelementptr i32, i32* %r5, i32 4 +%r35 = load i32, i32* %r34 +%r36 = zext i32 %r35 to i160 +%r37 = shl i160 %r36, 128 +%r38 = or i160 %r32, %r37 +%r39 = zext i160 %r38 to i192 +%r41 = getelementptr i32, i32* %r5, i32 5 +%r42 = load i32, i32* %r41 +%r43 = zext i32 %r42 to i192 +%r44 = shl i192 %r43, 160 +%r45 = or i192 %r39, %r44 +%r46 = zext i192 %r45 to i224 +%r48 = getelementptr i32, i32* %r5, i32 6 +%r49 = load i32, i32* %r48 +%r50 = zext i32 %r49 to i224 +%r51 = shl i224 %r50, 192 +%r52 = or i224 %r46, %r51 +%r53 = zext i224 %r52 to i256 +%r55 = getelementptr i32, i32* %r5, i32 7 +%r56 = load i32, i32* %r55 +%r57 = zext i32 %r56 to i256 +%r58 = shl i256 %r57, 224 +%r59 = or i256 %r53, %r58 +%r60 = zext i256 %r59 to i288 +%r61 = load i32, i32* %r2 +%r62 = zext i32 %r61 to i64 +%r64 = getelementptr i32, i32* %r2, i32 1 +%r65 = load i32, i32* %r64 +%r66 = zext i32 %r65 to i64 +%r67 = shl i64 %r66, 32 +%r68 = or i64 %r62, %r67 +%r69 = zext i64 %r68 to i96 +%r71 = getelementptr i32, i32* %r2, i32 2 +%r72 = load i32, i32* %r71 +%r73 = zext i32 %r72 to i96 +%r74 = shl i96 %r73, 64 +%r75 = or i96 %r69, %r74 +%r76 = zext i96 %r75 to i128 +%r78 = getelementptr i32, i32* %r2, i32 3 +%r79 = load i32, i32* %r78 +%r80 = zext i32 %r79 to i128 +%r81 = shl i128 %r80, 96 +%r82 = or i128 %r76, %r81 +%r83 = zext i128 %r82 to i160 +%r85 = getelementptr i32, i32* %r2, i32 4 +%r86 = load i32, i32* %r85 +%r87 = zext i32 %r86 to i160 +%r88 = shl i160 %r87, 128 +%r89 = or i160 %r83, %r88 +%r90 = zext i160 %r89 to i192 +%r92 = getelementptr i32, i32* %r2, i32 5 +%r93 = load i32, i32* %r92 +%r94 = zext i32 %r93 to i192 +%r95 = shl i192 %r94, 160 +%r96 = or i192 %r90, %r95 +%r97 = zext i192 %r96 to i224 +%r99 = getelementptr i32, i32* %r2, i32 6 +%r100 = load i32, i32* %r99 +%r101 = zext i32 %r100 to i224 +%r102 = shl i224 %r101, 192 +%r103 = or i224 %r97, %r102 +%r104 = zext i224 %r103 to i256 +%r106 = getelementptr i32, i32* %r2, i32 7 +%r107 = load i32, i32* %r106 +%r108 = zext i32 %r107 to i256 +%r109 = shl i256 %r108, 224 +%r110 = or i256 %r104, %r109 +%r111 = zext i256 %r110 to i288 +%r112 = load i32, i32* %r7 +%r113 = zext i32 %r112 to i64 +%r115 = getelementptr i32, i32* %r7, i32 1 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i64 +%r118 = shl i64 %r117, 32 +%r119 = or i64 %r113, %r118 +%r120 = zext i64 %r119 to i96 +%r122 = getelementptr i32, i32* %r7, i32 2 +%r123 = load i32, i32* %r122 +%r124 = zext i32 %r123 to i96 +%r125 = shl i96 %r124, 64 +%r126 = or i96 %r120, %r125 +%r127 = zext i96 %r126 to i128 +%r129 = getelementptr i32, i32* %r7, i32 3 +%r130 = load i32, i32* %r129 +%r131 = zext i32 %r130 to i128 +%r132 = shl i128 %r131, 96 +%r133 = or i128 %r127, %r132 +%r134 = zext i128 %r133 to i160 +%r136 = getelementptr i32, i32* %r7, i32 4 +%r137 = load i32, i32* %r136 +%r138 = zext i32 %r137 to i160 +%r139 = shl i160 %r138, 128 +%r140 = or i160 %r134, %r139 +%r141 = zext i160 %r140 to i192 +%r143 = getelementptr i32, i32* %r7, i32 5 +%r144 = load i32, i32* %r143 +%r145 = zext i32 %r144 to i192 +%r146 = shl i192 %r145, 160 +%r147 = or i192 %r141, %r146 +%r148 = zext i192 %r147 to i224 +%r150 = getelementptr i32, i32* %r7, i32 6 +%r151 = load i32, i32* %r150 +%r152 = zext i32 %r151 to i224 +%r153 = shl i224 %r152, 192 +%r154 = or i224 %r148, %r153 +%r155 = zext i224 %r154 to i256 +%r157 = getelementptr i32, i32* %r7, i32 7 +%r158 = load i32, i32* %r157 +%r159 = zext i32 %r158 to i256 +%r160 = shl i256 %r159, 224 +%r161 = or i256 %r155, %r160 +%r162 = zext i256 %r161 to i288 +%r163 = load i32, i32* %r3 +%r164 = zext i32 %r163 to i64 +%r166 = getelementptr i32, i32* %r3, i32 1 +%r167 = load i32, i32* %r166 +%r168 = zext i32 %r167 to i64 +%r169 = shl i64 %r168, 32 +%r170 = or i64 %r164, %r169 +%r171 = zext i64 %r170 to i96 +%r173 = getelementptr i32, i32* %r3, i32 2 +%r174 = load i32, i32* %r173 +%r175 = zext i32 %r174 to i96 +%r176 = shl i96 %r175, 64 +%r177 = or i96 %r171, %r176 +%r178 = zext i96 %r177 to i128 +%r180 = getelementptr i32, i32* %r3, i32 3 +%r181 = load i32, i32* %r180 +%r182 = zext i32 %r181 to i128 +%r183 = shl i128 %r182, 96 +%r184 = or i128 %r178, %r183 +%r185 = zext i128 %r184 to i160 +%r187 = getelementptr i32, i32* %r3, i32 4 +%r188 = load i32, i32* %r187 +%r189 = zext i32 %r188 to i160 +%r190 = shl i160 %r189, 128 +%r191 = or i160 %r185, %r190 +%r192 = zext i160 %r191 to i192 +%r194 = getelementptr i32, i32* %r3, i32 5 +%r195 = load i32, i32* %r194 +%r196 = zext i32 %r195 to i192 +%r197 = shl i192 %r196, 160 +%r198 = or i192 %r192, %r197 +%r199 = zext i192 %r198 to i224 +%r201 = getelementptr i32, i32* %r3, i32 6 +%r202 = load i32, i32* %r201 +%r203 = zext i32 %r202 to i224 +%r204 = shl i224 %r203, 192 +%r205 = or i224 %r199, %r204 +%r206 = zext i224 %r205 to i256 +%r208 = getelementptr i32, i32* %r3, i32 7 +%r209 = load i32, i32* %r208 +%r210 = zext i32 %r209 to i256 +%r211 = shl i256 %r210, 224 +%r212 = or i256 %r206, %r211 +%r213 = zext i256 %r212 to i288 +%r214 = add i288 %r60, %r111 +%r215 = add i288 %r162, %r213 +%r217 = alloca i32, i32 16 +%r218 = trunc i288 %r214 to i256 +%r219 = trunc i288 %r215 to i256 +%r220 = lshr i288 %r214, 256 +%r221 = trunc i288 %r220 to i1 +%r222 = lshr i288 %r215, 256 +%r223 = trunc i288 %r222 to i1 +%r224 = and i1 %r221, %r223 +%r226 = select i1 %r221, i256 %r219, i256 0 +%r228 = select i1 %r223, i256 %r218, i256 0 +%r230 = alloca i32, i32 8 +%r232 = alloca i32, i32 8 +%r234 = getelementptr i32, i32* %r230, i32 0 +%r235 = trunc i256 %r218 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i256 %r218, 32 +%r238 = getelementptr i32, i32* %r230, i32 1 +%r239 = trunc i256 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i256 %r236, 32 +%r242 = getelementptr i32, i32* %r230, i32 2 +%r243 = trunc i256 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i256 %r240, 32 +%r246 = getelementptr i32, i32* %r230, i32 3 +%r247 = trunc i256 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i256 %r244, 32 +%r250 = getelementptr i32, i32* %r230, i32 4 +%r251 = trunc i256 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i256 %r248, 32 +%r254 = getelementptr i32, i32* %r230, i32 5 +%r255 = trunc i256 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i256 %r252, 32 +%r258 = getelementptr i32, i32* %r230, i32 6 +%r259 = trunc i256 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i256 %r256, 32 +%r262 = getelementptr i32, i32* %r230, i32 7 +%r263 = trunc i256 %r260 to i32 +store i32 %r263, i32* %r262 +%r265 = getelementptr i32, i32* %r232, i32 0 +%r266 = trunc i256 %r219 to i32 +store i32 %r266, i32* %r265 +%r267 = lshr i256 %r219, 32 +%r269 = getelementptr i32, i32* %r232, i32 1 +%r270 = trunc i256 %r267 to i32 +store i32 %r270, i32* %r269 +%r271 = lshr i256 %r267, 32 +%r273 = getelementptr i32, i32* %r232, i32 2 +%r274 = trunc i256 %r271 to i32 +store i32 %r274, i32* %r273 +%r275 = lshr i256 %r271, 32 +%r277 = getelementptr i32, i32* %r232, i32 3 +%r278 = trunc i256 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i256 %r275, 32 +%r281 = getelementptr i32, i32* %r232, i32 4 +%r282 = trunc i256 %r279 to i32 +store i32 %r282, i32* %r281 +%r283 = lshr i256 %r279, 32 +%r285 = getelementptr i32, i32* %r232, i32 5 +%r286 = trunc i256 %r283 to i32 +store i32 %r286, i32* %r285 +%r287 = lshr i256 %r283, 32 +%r289 = getelementptr i32, i32* %r232, i32 6 +%r290 = trunc i256 %r287 to i32 +store i32 %r290, i32* %r289 +%r291 = lshr i256 %r287, 32 +%r293 = getelementptr i32, i32* %r232, i32 7 +%r294 = trunc i256 %r291 to i32 +store i32 %r294, i32* %r293 +call void @mcl_fpDbl_mulPre8L(i32* %r217, i32* %r230, i32* %r232) +%r295 = load i32, i32* %r217 +%r296 = zext i32 %r295 to i64 +%r298 = getelementptr i32, i32* %r217, i32 1 +%r299 = load i32, i32* %r298 +%r300 = zext i32 %r299 to i64 +%r301 = shl i64 %r300, 32 +%r302 = or i64 %r296, %r301 +%r303 = zext i64 %r302 to i96 +%r305 = getelementptr i32, i32* %r217, i32 2 +%r306 = load i32, i32* %r305 +%r307 = zext i32 %r306 to i96 +%r308 = shl i96 %r307, 64 +%r309 = or i96 %r303, %r308 +%r310 = zext i96 %r309 to i128 +%r312 = getelementptr i32, i32* %r217, i32 3 +%r313 = load i32, i32* %r312 +%r314 = zext i32 %r313 to i128 +%r315 = shl i128 %r314, 96 +%r316 = or i128 %r310, %r315 +%r317 = zext i128 %r316 to i160 +%r319 = getelementptr i32, i32* %r217, i32 4 +%r320 = load i32, i32* %r319 +%r321 = zext i32 %r320 to i160 +%r322 = shl i160 %r321, 128 +%r323 = or i160 %r317, %r322 +%r324 = zext i160 %r323 to i192 +%r326 = getelementptr i32, i32* %r217, i32 5 +%r327 = load i32, i32* %r326 +%r328 = zext i32 %r327 to i192 +%r329 = shl i192 %r328, 160 +%r330 = or i192 %r324, %r329 +%r331 = zext i192 %r330 to i224 +%r333 = getelementptr i32, i32* %r217, i32 6 +%r334 = load i32, i32* %r333 +%r335 = zext i32 %r334 to i224 +%r336 = shl i224 %r335, 192 +%r337 = or i224 %r331, %r336 +%r338 = zext i224 %r337 to i256 +%r340 = getelementptr i32, i32* %r217, i32 7 +%r341 = load i32, i32* %r340 +%r342 = zext i32 %r341 to i256 +%r343 = shl i256 %r342, 224 +%r344 = or i256 %r338, %r343 +%r345 = zext i256 %r344 to i288 +%r347 = getelementptr i32, i32* %r217, i32 8 +%r348 = load i32, i32* %r347 +%r349 = zext i32 %r348 to i288 +%r350 = shl i288 %r349, 256 +%r351 = or i288 %r345, %r350 +%r352 = zext i288 %r351 to i320 +%r354 = getelementptr i32, i32* %r217, i32 9 +%r355 = load i32, i32* %r354 +%r356 = zext i32 %r355 to i320 +%r357 = shl i320 %r356, 288 +%r358 = or i320 %r352, %r357 +%r359 = zext i320 %r358 to i352 +%r361 = getelementptr i32, i32* %r217, i32 10 +%r362 = load i32, i32* %r361 +%r363 = zext i32 %r362 to i352 +%r364 = shl i352 %r363, 320 +%r365 = or i352 %r359, %r364 +%r366 = zext i352 %r365 to i384 +%r368 = getelementptr i32, i32* %r217, i32 11 +%r369 = load i32, i32* %r368 +%r370 = zext i32 %r369 to i384 +%r371 = shl i384 %r370, 352 +%r372 = or i384 %r366, %r371 +%r373 = zext i384 %r372 to i416 +%r375 = getelementptr i32, i32* %r217, i32 12 +%r376 = load i32, i32* %r375 +%r377 = zext i32 %r376 to i416 +%r378 = shl i416 %r377, 384 +%r379 = or i416 %r373, %r378 +%r380 = zext i416 %r379 to i448 +%r382 = getelementptr i32, i32* %r217, i32 13 +%r383 = load i32, i32* %r382 +%r384 = zext i32 %r383 to i448 +%r385 = shl i448 %r384, 416 +%r386 = or i448 %r380, %r385 +%r387 = zext i448 %r386 to i480 +%r389 = getelementptr i32, i32* %r217, i32 14 +%r390 = load i32, i32* %r389 +%r391 = zext i32 %r390 to i480 +%r392 = shl i480 %r391, 448 +%r393 = or i480 %r387, %r392 +%r394 = zext i480 %r393 to i512 +%r396 = getelementptr i32, i32* %r217, i32 15 +%r397 = load i32, i32* %r396 +%r398 = zext i32 %r397 to i512 +%r399 = shl i512 %r398, 480 +%r400 = or i512 %r394, %r399 +%r401 = zext i512 %r400 to i544 +%r402 = zext i1 %r224 to i544 +%r403 = shl i544 %r402, 512 +%r404 = or i544 %r401, %r403 +%r405 = zext i256 %r226 to i544 +%r406 = zext i256 %r228 to i544 +%r407 = shl i544 %r405, 256 +%r408 = shl i544 %r406, 256 +%r409 = add i544 %r404, %r407 +%r410 = add i544 %r409, %r408 +%r411 = load i32, i32* %r1 +%r412 = zext i32 %r411 to i64 +%r414 = getelementptr i32, i32* %r1, i32 1 +%r415 = load i32, i32* %r414 +%r416 = zext i32 %r415 to i64 +%r417 = shl i64 %r416, 32 +%r418 = or i64 %r412, %r417 +%r419 = zext i64 %r418 to i96 +%r421 = getelementptr i32, i32* %r1, i32 2 +%r422 = load i32, i32* %r421 +%r423 = zext i32 %r422 to i96 +%r424 = shl i96 %r423, 64 +%r425 = or i96 %r419, %r424 +%r426 = zext i96 %r425 to i128 +%r428 = getelementptr i32, i32* %r1, i32 3 +%r429 = load i32, i32* %r428 +%r430 = zext i32 %r429 to i128 +%r431 = shl i128 %r430, 96 +%r432 = or i128 %r426, %r431 +%r433 = zext i128 %r432 to i160 +%r435 = getelementptr i32, i32* %r1, i32 4 +%r436 = load i32, i32* %r435 +%r437 = zext i32 %r436 to i160 +%r438 = shl i160 %r437, 128 +%r439 = or i160 %r433, %r438 +%r440 = zext i160 %r439 to i192 +%r442 = getelementptr i32, i32* %r1, i32 5 +%r443 = load i32, i32* %r442 +%r444 = zext i32 %r443 to i192 +%r445 = shl i192 %r444, 160 +%r446 = or i192 %r440, %r445 +%r447 = zext i192 %r446 to i224 +%r449 = getelementptr i32, i32* %r1, i32 6 +%r450 = load i32, i32* %r449 +%r451 = zext i32 %r450 to i224 +%r452 = shl i224 %r451, 192 +%r453 = or i224 %r447, %r452 +%r454 = zext i224 %r453 to i256 +%r456 = getelementptr i32, i32* %r1, i32 7 +%r457 = load i32, i32* %r456 +%r458 = zext i32 %r457 to i256 +%r459 = shl i256 %r458, 224 +%r460 = or i256 %r454, %r459 +%r461 = zext i256 %r460 to i288 +%r463 = getelementptr i32, i32* %r1, i32 8 +%r464 = load i32, i32* %r463 +%r465 = zext i32 %r464 to i288 +%r466 = shl i288 %r465, 256 +%r467 = or i288 %r461, %r466 +%r468 = zext i288 %r467 to i320 +%r470 = getelementptr i32, i32* %r1, i32 9 +%r471 = load i32, i32* %r470 +%r472 = zext i32 %r471 to i320 +%r473 = shl i320 %r472, 288 +%r474 = or i320 %r468, %r473 +%r475 = zext i320 %r474 to i352 +%r477 = getelementptr i32, i32* %r1, i32 10 +%r478 = load i32, i32* %r477 +%r479 = zext i32 %r478 to i352 +%r480 = shl i352 %r479, 320 +%r481 = or i352 %r475, %r480 +%r482 = zext i352 %r481 to i384 +%r484 = getelementptr i32, i32* %r1, i32 11 +%r485 = load i32, i32* %r484 +%r486 = zext i32 %r485 to i384 +%r487 = shl i384 %r486, 352 +%r488 = or i384 %r482, %r487 +%r489 = zext i384 %r488 to i416 +%r491 = getelementptr i32, i32* %r1, i32 12 +%r492 = load i32, i32* %r491 +%r493 = zext i32 %r492 to i416 +%r494 = shl i416 %r493, 384 +%r495 = or i416 %r489, %r494 +%r496 = zext i416 %r495 to i448 +%r498 = getelementptr i32, i32* %r1, i32 13 +%r499 = load i32, i32* %r498 +%r500 = zext i32 %r499 to i448 +%r501 = shl i448 %r500, 416 +%r502 = or i448 %r496, %r501 +%r503 = zext i448 %r502 to i480 +%r505 = getelementptr i32, i32* %r1, i32 14 +%r506 = load i32, i32* %r505 +%r507 = zext i32 %r506 to i480 +%r508 = shl i480 %r507, 448 +%r509 = or i480 %r503, %r508 +%r510 = zext i480 %r509 to i512 +%r512 = getelementptr i32, i32* %r1, i32 15 +%r513 = load i32, i32* %r512 +%r514 = zext i32 %r513 to i512 +%r515 = shl i512 %r514, 480 +%r516 = or i512 %r510, %r515 +%r517 = zext i512 %r516 to i544 +%r518 = sub i544 %r410, %r517 +%r520 = getelementptr i32, i32* %r1, i32 16 +%r521 = load i32, i32* %r520 +%r522 = zext i32 %r521 to i64 +%r524 = getelementptr i32, i32* %r520, i32 1 +%r525 = load i32, i32* %r524 +%r526 = zext i32 %r525 to i64 +%r527 = shl i64 %r526, 32 +%r528 = or i64 %r522, %r527 +%r529 = zext i64 %r528 to i96 +%r531 = getelementptr i32, i32* %r520, i32 2 +%r532 = load i32, i32* %r531 +%r533 = zext i32 %r532 to i96 +%r534 = shl i96 %r533, 64 +%r535 = or i96 %r529, %r534 +%r536 = zext i96 %r535 to i128 +%r538 = getelementptr i32, i32* %r520, i32 3 +%r539 = load i32, i32* %r538 +%r540 = zext i32 %r539 to i128 +%r541 = shl i128 %r540, 96 +%r542 = or i128 %r536, %r541 +%r543 = zext i128 %r542 to i160 +%r545 = getelementptr i32, i32* %r520, i32 4 +%r546 = load i32, i32* %r545 +%r547 = zext i32 %r546 to i160 +%r548 = shl i160 %r547, 128 +%r549 = or i160 %r543, %r548 +%r550 = zext i160 %r549 to i192 +%r552 = getelementptr i32, i32* %r520, i32 5 +%r553 = load i32, i32* %r552 +%r554 = zext i32 %r553 to i192 +%r555 = shl i192 %r554, 160 +%r556 = or i192 %r550, %r555 +%r557 = zext i192 %r556 to i224 +%r559 = getelementptr i32, i32* %r520, i32 6 +%r560 = load i32, i32* %r559 +%r561 = zext i32 %r560 to i224 +%r562 = shl i224 %r561, 192 +%r563 = or i224 %r557, %r562 +%r564 = zext i224 %r563 to i256 +%r566 = getelementptr i32, i32* %r520, i32 7 +%r567 = load i32, i32* %r566 +%r568 = zext i32 %r567 to i256 +%r569 = shl i256 %r568, 224 +%r570 = or i256 %r564, %r569 +%r571 = zext i256 %r570 to i288 +%r573 = getelementptr i32, i32* %r520, i32 8 +%r574 = load i32, i32* %r573 +%r575 = zext i32 %r574 to i288 +%r576 = shl i288 %r575, 256 +%r577 = or i288 %r571, %r576 +%r578 = zext i288 %r577 to i320 +%r580 = getelementptr i32, i32* %r520, i32 9 +%r581 = load i32, i32* %r580 +%r582 = zext i32 %r581 to i320 +%r583 = shl i320 %r582, 288 +%r584 = or i320 %r578, %r583 +%r585 = zext i320 %r584 to i352 +%r587 = getelementptr i32, i32* %r520, i32 10 +%r588 = load i32, i32* %r587 +%r589 = zext i32 %r588 to i352 +%r590 = shl i352 %r589, 320 +%r591 = or i352 %r585, %r590 +%r592 = zext i352 %r591 to i384 +%r594 = getelementptr i32, i32* %r520, i32 11 +%r595 = load i32, i32* %r594 +%r596 = zext i32 %r595 to i384 +%r597 = shl i384 %r596, 352 +%r598 = or i384 %r592, %r597 +%r599 = zext i384 %r598 to i416 +%r601 = getelementptr i32, i32* %r520, i32 12 +%r602 = load i32, i32* %r601 +%r603 = zext i32 %r602 to i416 +%r604 = shl i416 %r603, 384 +%r605 = or i416 %r599, %r604 +%r606 = zext i416 %r605 to i448 +%r608 = getelementptr i32, i32* %r520, i32 13 +%r609 = load i32, i32* %r608 +%r610 = zext i32 %r609 to i448 +%r611 = shl i448 %r610, 416 +%r612 = or i448 %r606, %r611 +%r613 = zext i448 %r612 to i480 +%r615 = getelementptr i32, i32* %r520, i32 14 +%r616 = load i32, i32* %r615 +%r617 = zext i32 %r616 to i480 +%r618 = shl i480 %r617, 448 +%r619 = or i480 %r613, %r618 +%r620 = zext i480 %r619 to i512 +%r622 = getelementptr i32, i32* %r520, i32 15 +%r623 = load i32, i32* %r622 +%r624 = zext i32 %r623 to i512 +%r625 = shl i512 %r624, 480 +%r626 = or i512 %r620, %r625 +%r627 = zext i512 %r626 to i544 +%r628 = sub i544 %r518, %r627 +%r629 = zext i544 %r628 to i768 +%r631 = getelementptr i32, i32* %r1, i32 8 +%r632 = load i32, i32* %r631 +%r633 = zext i32 %r632 to i64 +%r635 = getelementptr i32, i32* %r631, i32 1 +%r636 = load i32, i32* %r635 +%r637 = zext i32 %r636 to i64 +%r638 = shl i64 %r637, 32 +%r639 = or i64 %r633, %r638 +%r640 = zext i64 %r639 to i96 +%r642 = getelementptr i32, i32* %r631, i32 2 +%r643 = load i32, i32* %r642 +%r644 = zext i32 %r643 to i96 +%r645 = shl i96 %r644, 64 +%r646 = or i96 %r640, %r645 +%r647 = zext i96 %r646 to i128 +%r649 = getelementptr i32, i32* %r631, i32 3 +%r650 = load i32, i32* %r649 +%r651 = zext i32 %r650 to i128 +%r652 = shl i128 %r651, 96 +%r653 = or i128 %r647, %r652 +%r654 = zext i128 %r653 to i160 +%r656 = getelementptr i32, i32* %r631, i32 4 +%r657 = load i32, i32* %r656 +%r658 = zext i32 %r657 to i160 +%r659 = shl i160 %r658, 128 +%r660 = or i160 %r654, %r659 +%r661 = zext i160 %r660 to i192 +%r663 = getelementptr i32, i32* %r631, i32 5 +%r664 = load i32, i32* %r663 +%r665 = zext i32 %r664 to i192 +%r666 = shl i192 %r665, 160 +%r667 = or i192 %r661, %r666 +%r668 = zext i192 %r667 to i224 +%r670 = getelementptr i32, i32* %r631, i32 6 +%r671 = load i32, i32* %r670 +%r672 = zext i32 %r671 to i224 +%r673 = shl i224 %r672, 192 +%r674 = or i224 %r668, %r673 +%r675 = zext i224 %r674 to i256 +%r677 = getelementptr i32, i32* %r631, i32 7 +%r678 = load i32, i32* %r677 +%r679 = zext i32 %r678 to i256 +%r680 = shl i256 %r679, 224 +%r681 = or i256 %r675, %r680 +%r682 = zext i256 %r681 to i288 +%r684 = getelementptr i32, i32* %r631, i32 8 +%r685 = load i32, i32* %r684 +%r686 = zext i32 %r685 to i288 +%r687 = shl i288 %r686, 256 +%r688 = or i288 %r682, %r687 +%r689 = zext i288 %r688 to i320 +%r691 = getelementptr i32, i32* %r631, i32 9 +%r692 = load i32, i32* %r691 +%r693 = zext i32 %r692 to i320 +%r694 = shl i320 %r693, 288 +%r695 = or i320 %r689, %r694 +%r696 = zext i320 %r695 to i352 +%r698 = getelementptr i32, i32* %r631, i32 10 +%r699 = load i32, i32* %r698 +%r700 = zext i32 %r699 to i352 +%r701 = shl i352 %r700, 320 +%r702 = or i352 %r696, %r701 +%r703 = zext i352 %r702 to i384 +%r705 = getelementptr i32, i32* %r631, i32 11 +%r706 = load i32, i32* %r705 +%r707 = zext i32 %r706 to i384 +%r708 = shl i384 %r707, 352 +%r709 = or i384 %r703, %r708 +%r710 = zext i384 %r709 to i416 +%r712 = getelementptr i32, i32* %r631, i32 12 +%r713 = load i32, i32* %r712 +%r714 = zext i32 %r713 to i416 +%r715 = shl i416 %r714, 384 +%r716 = or i416 %r710, %r715 +%r717 = zext i416 %r716 to i448 +%r719 = getelementptr i32, i32* %r631, i32 13 +%r720 = load i32, i32* %r719 +%r721 = zext i32 %r720 to i448 +%r722 = shl i448 %r721, 416 +%r723 = or i448 %r717, %r722 +%r724 = zext i448 %r723 to i480 +%r726 = getelementptr i32, i32* %r631, i32 14 +%r727 = load i32, i32* %r726 +%r728 = zext i32 %r727 to i480 +%r729 = shl i480 %r728, 448 +%r730 = or i480 %r724, %r729 +%r731 = zext i480 %r730 to i512 +%r733 = getelementptr i32, i32* %r631, i32 15 +%r734 = load i32, i32* %r733 +%r735 = zext i32 %r734 to i512 +%r736 = shl i512 %r735, 480 +%r737 = or i512 %r731, %r736 +%r738 = zext i512 %r737 to i544 +%r740 = getelementptr i32, i32* %r631, i32 16 +%r741 = load i32, i32* %r740 +%r742 = zext i32 %r741 to i544 +%r743 = shl i544 %r742, 512 +%r744 = or i544 %r738, %r743 +%r745 = zext i544 %r744 to i576 +%r747 = getelementptr i32, i32* %r631, i32 17 +%r748 = load i32, i32* %r747 +%r749 = zext i32 %r748 to i576 +%r750 = shl i576 %r749, 544 +%r751 = or i576 %r745, %r750 +%r752 = zext i576 %r751 to i608 +%r754 = getelementptr i32, i32* %r631, i32 18 +%r755 = load i32, i32* %r754 +%r756 = zext i32 %r755 to i608 +%r757 = shl i608 %r756, 576 +%r758 = or i608 %r752, %r757 +%r759 = zext i608 %r758 to i640 +%r761 = getelementptr i32, i32* %r631, i32 19 +%r762 = load i32, i32* %r761 +%r763 = zext i32 %r762 to i640 +%r764 = shl i640 %r763, 608 +%r765 = or i640 %r759, %r764 +%r766 = zext i640 %r765 to i672 +%r768 = getelementptr i32, i32* %r631, i32 20 +%r769 = load i32, i32* %r768 +%r770 = zext i32 %r769 to i672 +%r771 = shl i672 %r770, 640 +%r772 = or i672 %r766, %r771 +%r773 = zext i672 %r772 to i704 +%r775 = getelementptr i32, i32* %r631, i32 21 +%r776 = load i32, i32* %r775 +%r777 = zext i32 %r776 to i704 +%r778 = shl i704 %r777, 672 +%r779 = or i704 %r773, %r778 +%r780 = zext i704 %r779 to i736 +%r782 = getelementptr i32, i32* %r631, i32 22 +%r783 = load i32, i32* %r782 +%r784 = zext i32 %r783 to i736 +%r785 = shl i736 %r784, 704 +%r786 = or i736 %r780, %r785 +%r787 = zext i736 %r786 to i768 +%r789 = getelementptr i32, i32* %r631, i32 23 +%r790 = load i32, i32* %r789 +%r791 = zext i32 %r790 to i768 +%r792 = shl i768 %r791, 736 +%r793 = or i768 %r787, %r792 +%r794 = add i768 %r629, %r793 +%r796 = getelementptr i32, i32* %r1, i32 8 +%r798 = getelementptr i32, i32* %r796, i32 0 +%r799 = trunc i768 %r794 to i32 +store i32 %r799, i32* %r798 +%r800 = lshr i768 %r794, 32 +%r802 = getelementptr i32, i32* %r796, i32 1 +%r803 = trunc i768 %r800 to i32 +store i32 %r803, i32* %r802 +%r804 = lshr i768 %r800, 32 +%r806 = getelementptr i32, i32* %r796, i32 2 +%r807 = trunc i768 %r804 to i32 +store i32 %r807, i32* %r806 +%r808 = lshr i768 %r804, 32 +%r810 = getelementptr i32, i32* %r796, i32 3 +%r811 = trunc i768 %r808 to i32 +store i32 %r811, i32* %r810 +%r812 = lshr i768 %r808, 32 +%r814 = getelementptr i32, i32* %r796, i32 4 +%r815 = trunc i768 %r812 to i32 +store i32 %r815, i32* %r814 +%r816 = lshr i768 %r812, 32 +%r818 = getelementptr i32, i32* %r796, i32 5 +%r819 = trunc i768 %r816 to i32 +store i32 %r819, i32* %r818 +%r820 = lshr i768 %r816, 32 +%r822 = getelementptr i32, i32* %r796, i32 6 +%r823 = trunc i768 %r820 to i32 +store i32 %r823, i32* %r822 +%r824 = lshr i768 %r820, 32 +%r826 = getelementptr i32, i32* %r796, i32 7 +%r827 = trunc i768 %r824 to i32 +store i32 %r827, i32* %r826 +%r828 = lshr i768 %r824, 32 +%r830 = getelementptr i32, i32* %r796, i32 8 +%r831 = trunc i768 %r828 to i32 +store i32 %r831, i32* %r830 +%r832 = lshr i768 %r828, 32 +%r834 = getelementptr i32, i32* %r796, i32 9 +%r835 = trunc i768 %r832 to i32 +store i32 %r835, i32* %r834 +%r836 = lshr i768 %r832, 32 +%r838 = getelementptr i32, i32* %r796, i32 10 +%r839 = trunc i768 %r836 to i32 +store i32 %r839, i32* %r838 +%r840 = lshr i768 %r836, 32 +%r842 = getelementptr i32, i32* %r796, i32 11 +%r843 = trunc i768 %r840 to i32 +store i32 %r843, i32* %r842 +%r844 = lshr i768 %r840, 32 +%r846 = getelementptr i32, i32* %r796, i32 12 +%r847 = trunc i768 %r844 to i32 +store i32 %r847, i32* %r846 +%r848 = lshr i768 %r844, 32 +%r850 = getelementptr i32, i32* %r796, i32 13 +%r851 = trunc i768 %r848 to i32 +store i32 %r851, i32* %r850 +%r852 = lshr i768 %r848, 32 +%r854 = getelementptr i32, i32* %r796, i32 14 +%r855 = trunc i768 %r852 to i32 +store i32 %r855, i32* %r854 +%r856 = lshr i768 %r852, 32 +%r858 = getelementptr i32, i32* %r796, i32 15 +%r859 = trunc i768 %r856 to i32 +store i32 %r859, i32* %r858 +%r860 = lshr i768 %r856, 32 +%r862 = getelementptr i32, i32* %r796, i32 16 +%r863 = trunc i768 %r860 to i32 +store i32 %r863, i32* %r862 +%r864 = lshr i768 %r860, 32 +%r866 = getelementptr i32, i32* %r796, i32 17 +%r867 = trunc i768 %r864 to i32 +store i32 %r867, i32* %r866 +%r868 = lshr i768 %r864, 32 +%r870 = getelementptr i32, i32* %r796, i32 18 +%r871 = trunc i768 %r868 to i32 +store i32 %r871, i32* %r870 +%r872 = lshr i768 %r868, 32 +%r874 = getelementptr i32, i32* %r796, i32 19 +%r875 = trunc i768 %r872 to i32 +store i32 %r875, i32* %r874 +%r876 = lshr i768 %r872, 32 +%r878 = getelementptr i32, i32* %r796, i32 20 +%r879 = trunc i768 %r876 to i32 +store i32 %r879, i32* %r878 +%r880 = lshr i768 %r876, 32 +%r882 = getelementptr i32, i32* %r796, i32 21 +%r883 = trunc i768 %r880 to i32 +store i32 %r883, i32* %r882 +%r884 = lshr i768 %r880, 32 +%r886 = getelementptr i32, i32* %r796, i32 22 +%r887 = trunc i768 %r884 to i32 +store i32 %r887, i32* %r886 +%r888 = lshr i768 %r884, 32 +%r890 = getelementptr i32, i32* %r796, i32 23 +%r891 = trunc i768 %r888 to i32 +store i32 %r891, i32* %r890 +ret void +} +define void @mcl_fpDbl_sqrPre16L(i32* noalias %r1, i32* noalias %r2) +{ +%r4 = getelementptr i32, i32* %r2, i32 8 +%r6 = getelementptr i32, i32* %r2, i32 8 +%r8 = getelementptr i32, i32* %r1, i32 16 +call void @mcl_fpDbl_mulPre8L(i32* %r1, i32* %r2, i32* %r2) +call void @mcl_fpDbl_mulPre8L(i32* %r8, i32* %r4, i32* %r6) +%r9 = load i32, i32* %r4 +%r10 = zext i32 %r9 to i64 +%r12 = getelementptr i32, i32* %r4, i32 1 +%r13 = load i32, i32* %r12 +%r14 = zext i32 %r13 to i64 +%r15 = shl i64 %r14, 32 +%r16 = or i64 %r10, %r15 +%r17 = zext i64 %r16 to i96 +%r19 = getelementptr i32, i32* %r4, i32 2 +%r20 = load i32, i32* %r19 +%r21 = zext i32 %r20 to i96 +%r22 = shl i96 %r21, 64 +%r23 = or i96 %r17, %r22 +%r24 = zext i96 %r23 to i128 +%r26 = getelementptr i32, i32* %r4, i32 3 +%r27 = load i32, i32* %r26 +%r28 = zext i32 %r27 to i128 +%r29 = shl i128 %r28, 96 +%r30 = or i128 %r24, %r29 +%r31 = zext i128 %r30 to i160 +%r33 = getelementptr i32, i32* %r4, i32 4 +%r34 = load i32, i32* %r33 +%r35 = zext i32 %r34 to i160 +%r36 = shl i160 %r35, 128 +%r37 = or i160 %r31, %r36 +%r38 = zext i160 %r37 to i192 +%r40 = getelementptr i32, i32* %r4, i32 5 +%r41 = load i32, i32* %r40 +%r42 = zext i32 %r41 to i192 +%r43 = shl i192 %r42, 160 +%r44 = or i192 %r38, %r43 +%r45 = zext i192 %r44 to i224 +%r47 = getelementptr i32, i32* %r4, i32 6 +%r48 = load i32, i32* %r47 +%r49 = zext i32 %r48 to i224 +%r50 = shl i224 %r49, 192 +%r51 = or i224 %r45, %r50 +%r52 = zext i224 %r51 to i256 +%r54 = getelementptr i32, i32* %r4, i32 7 +%r55 = load i32, i32* %r54 +%r56 = zext i32 %r55 to i256 +%r57 = shl i256 %r56, 224 +%r58 = or i256 %r52, %r57 +%r59 = zext i256 %r58 to i288 +%r60 = load i32, i32* %r2 +%r61 = zext i32 %r60 to i64 +%r63 = getelementptr i32, i32* %r2, i32 1 +%r64 = load i32, i32* %r63 +%r65 = zext i32 %r64 to i64 +%r66 = shl i64 %r65, 32 +%r67 = or i64 %r61, %r66 +%r68 = zext i64 %r67 to i96 +%r70 = getelementptr i32, i32* %r2, i32 2 +%r71 = load i32, i32* %r70 +%r72 = zext i32 %r71 to i96 +%r73 = shl i96 %r72, 64 +%r74 = or i96 %r68, %r73 +%r75 = zext i96 %r74 to i128 +%r77 = getelementptr i32, i32* %r2, i32 3 +%r78 = load i32, i32* %r77 +%r79 = zext i32 %r78 to i128 +%r80 = shl i128 %r79, 96 +%r81 = or i128 %r75, %r80 +%r82 = zext i128 %r81 to i160 +%r84 = getelementptr i32, i32* %r2, i32 4 +%r85 = load i32, i32* %r84 +%r86 = zext i32 %r85 to i160 +%r87 = shl i160 %r86, 128 +%r88 = or i160 %r82, %r87 +%r89 = zext i160 %r88 to i192 +%r91 = getelementptr i32, i32* %r2, i32 5 +%r92 = load i32, i32* %r91 +%r93 = zext i32 %r92 to i192 +%r94 = shl i192 %r93, 160 +%r95 = or i192 %r89, %r94 +%r96 = zext i192 %r95 to i224 +%r98 = getelementptr i32, i32* %r2, i32 6 +%r99 = load i32, i32* %r98 +%r100 = zext i32 %r99 to i224 +%r101 = shl i224 %r100, 192 +%r102 = or i224 %r96, %r101 +%r103 = zext i224 %r102 to i256 +%r105 = getelementptr i32, i32* %r2, i32 7 +%r106 = load i32, i32* %r105 +%r107 = zext i32 %r106 to i256 +%r108 = shl i256 %r107, 224 +%r109 = or i256 %r103, %r108 +%r110 = zext i256 %r109 to i288 +%r111 = load i32, i32* %r6 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r6, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r6, i32 2 +%r122 = load i32, i32* %r121 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r6, i32 3 +%r129 = load i32, i32* %r128 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r6, i32 4 +%r136 = load i32, i32* %r135 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r6, i32 5 +%r143 = load i32, i32* %r142 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r6, i32 6 +%r150 = load i32, i32* %r149 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r6, i32 7 +%r157 = load i32, i32* %r156 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r162 = load i32, i32* %r2 +%r163 = zext i32 %r162 to i64 +%r165 = getelementptr i32, i32* %r2, i32 1 +%r166 = load i32, i32* %r165 +%r167 = zext i32 %r166 to i64 +%r168 = shl i64 %r167, 32 +%r169 = or i64 %r163, %r168 +%r170 = zext i64 %r169 to i96 +%r172 = getelementptr i32, i32* %r2, i32 2 +%r173 = load i32, i32* %r172 +%r174 = zext i32 %r173 to i96 +%r175 = shl i96 %r174, 64 +%r176 = or i96 %r170, %r175 +%r177 = zext i96 %r176 to i128 +%r179 = getelementptr i32, i32* %r2, i32 3 +%r180 = load i32, i32* %r179 +%r181 = zext i32 %r180 to i128 +%r182 = shl i128 %r181, 96 +%r183 = or i128 %r177, %r182 +%r184 = zext i128 %r183 to i160 +%r186 = getelementptr i32, i32* %r2, i32 4 +%r187 = load i32, i32* %r186 +%r188 = zext i32 %r187 to i160 +%r189 = shl i160 %r188, 128 +%r190 = or i160 %r184, %r189 +%r191 = zext i160 %r190 to i192 +%r193 = getelementptr i32, i32* %r2, i32 5 +%r194 = load i32, i32* %r193 +%r195 = zext i32 %r194 to i192 +%r196 = shl i192 %r195, 160 +%r197 = or i192 %r191, %r196 +%r198 = zext i192 %r197 to i224 +%r200 = getelementptr i32, i32* %r2, i32 6 +%r201 = load i32, i32* %r200 +%r202 = zext i32 %r201 to i224 +%r203 = shl i224 %r202, 192 +%r204 = or i224 %r198, %r203 +%r205 = zext i224 %r204 to i256 +%r207 = getelementptr i32, i32* %r2, i32 7 +%r208 = load i32, i32* %r207 +%r209 = zext i32 %r208 to i256 +%r210 = shl i256 %r209, 224 +%r211 = or i256 %r205, %r210 +%r212 = zext i256 %r211 to i288 +%r213 = add i288 %r59, %r110 +%r214 = add i288 %r161, %r212 +%r216 = alloca i32, i32 16 +%r217 = trunc i288 %r213 to i256 +%r218 = trunc i288 %r214 to i256 +%r219 = lshr i288 %r213, 256 +%r220 = trunc i288 %r219 to i1 +%r221 = lshr i288 %r214, 256 +%r222 = trunc i288 %r221 to i1 +%r223 = and i1 %r220, %r222 +%r225 = select i1 %r220, i256 %r218, i256 0 +%r227 = select i1 %r222, i256 %r217, i256 0 +%r229 = alloca i32, i32 8 +%r231 = alloca i32, i32 8 +%r233 = getelementptr i32, i32* %r229, i32 0 +%r234 = trunc i256 %r217 to i32 +store i32 %r234, i32* %r233 +%r235 = lshr i256 %r217, 32 +%r237 = getelementptr i32, i32* %r229, i32 1 +%r238 = trunc i256 %r235 to i32 +store i32 %r238, i32* %r237 +%r239 = lshr i256 %r235, 32 +%r241 = getelementptr i32, i32* %r229, i32 2 +%r242 = trunc i256 %r239 to i32 +store i32 %r242, i32* %r241 +%r243 = lshr i256 %r239, 32 +%r245 = getelementptr i32, i32* %r229, i32 3 +%r246 = trunc i256 %r243 to i32 +store i32 %r246, i32* %r245 +%r247 = lshr i256 %r243, 32 +%r249 = getelementptr i32, i32* %r229, i32 4 +%r250 = trunc i256 %r247 to i32 +store i32 %r250, i32* %r249 +%r251 = lshr i256 %r247, 32 +%r253 = getelementptr i32, i32* %r229, i32 5 +%r254 = trunc i256 %r251 to i32 +store i32 %r254, i32* %r253 +%r255 = lshr i256 %r251, 32 +%r257 = getelementptr i32, i32* %r229, i32 6 +%r258 = trunc i256 %r255 to i32 +store i32 %r258, i32* %r257 +%r259 = lshr i256 %r255, 32 +%r261 = getelementptr i32, i32* %r229, i32 7 +%r262 = trunc i256 %r259 to i32 +store i32 %r262, i32* %r261 +%r264 = getelementptr i32, i32* %r231, i32 0 +%r265 = trunc i256 %r218 to i32 +store i32 %r265, i32* %r264 +%r266 = lshr i256 %r218, 32 +%r268 = getelementptr i32, i32* %r231, i32 1 +%r269 = trunc i256 %r266 to i32 +store i32 %r269, i32* %r268 +%r270 = lshr i256 %r266, 32 +%r272 = getelementptr i32, i32* %r231, i32 2 +%r273 = trunc i256 %r270 to i32 +store i32 %r273, i32* %r272 +%r274 = lshr i256 %r270, 32 +%r276 = getelementptr i32, i32* %r231, i32 3 +%r277 = trunc i256 %r274 to i32 +store i32 %r277, i32* %r276 +%r278 = lshr i256 %r274, 32 +%r280 = getelementptr i32, i32* %r231, i32 4 +%r281 = trunc i256 %r278 to i32 +store i32 %r281, i32* %r280 +%r282 = lshr i256 %r278, 32 +%r284 = getelementptr i32, i32* %r231, i32 5 +%r285 = trunc i256 %r282 to i32 +store i32 %r285, i32* %r284 +%r286 = lshr i256 %r282, 32 +%r288 = getelementptr i32, i32* %r231, i32 6 +%r289 = trunc i256 %r286 to i32 +store i32 %r289, i32* %r288 +%r290 = lshr i256 %r286, 32 +%r292 = getelementptr i32, i32* %r231, i32 7 +%r293 = trunc i256 %r290 to i32 +store i32 %r293, i32* %r292 +call void @mcl_fpDbl_mulPre8L(i32* %r216, i32* %r229, i32* %r231) +%r294 = load i32, i32* %r216 +%r295 = zext i32 %r294 to i64 +%r297 = getelementptr i32, i32* %r216, i32 1 +%r298 = load i32, i32* %r297 +%r299 = zext i32 %r298 to i64 +%r300 = shl i64 %r299, 32 +%r301 = or i64 %r295, %r300 +%r302 = zext i64 %r301 to i96 +%r304 = getelementptr i32, i32* %r216, i32 2 +%r305 = load i32, i32* %r304 +%r306 = zext i32 %r305 to i96 +%r307 = shl i96 %r306, 64 +%r308 = or i96 %r302, %r307 +%r309 = zext i96 %r308 to i128 +%r311 = getelementptr i32, i32* %r216, i32 3 +%r312 = load i32, i32* %r311 +%r313 = zext i32 %r312 to i128 +%r314 = shl i128 %r313, 96 +%r315 = or i128 %r309, %r314 +%r316 = zext i128 %r315 to i160 +%r318 = getelementptr i32, i32* %r216, i32 4 +%r319 = load i32, i32* %r318 +%r320 = zext i32 %r319 to i160 +%r321 = shl i160 %r320, 128 +%r322 = or i160 %r316, %r321 +%r323 = zext i160 %r322 to i192 +%r325 = getelementptr i32, i32* %r216, i32 5 +%r326 = load i32, i32* %r325 +%r327 = zext i32 %r326 to i192 +%r328 = shl i192 %r327, 160 +%r329 = or i192 %r323, %r328 +%r330 = zext i192 %r329 to i224 +%r332 = getelementptr i32, i32* %r216, i32 6 +%r333 = load i32, i32* %r332 +%r334 = zext i32 %r333 to i224 +%r335 = shl i224 %r334, 192 +%r336 = or i224 %r330, %r335 +%r337 = zext i224 %r336 to i256 +%r339 = getelementptr i32, i32* %r216, i32 7 +%r340 = load i32, i32* %r339 +%r341 = zext i32 %r340 to i256 +%r342 = shl i256 %r341, 224 +%r343 = or i256 %r337, %r342 +%r344 = zext i256 %r343 to i288 +%r346 = getelementptr i32, i32* %r216, i32 8 +%r347 = load i32, i32* %r346 +%r348 = zext i32 %r347 to i288 +%r349 = shl i288 %r348, 256 +%r350 = or i288 %r344, %r349 +%r351 = zext i288 %r350 to i320 +%r353 = getelementptr i32, i32* %r216, i32 9 +%r354 = load i32, i32* %r353 +%r355 = zext i32 %r354 to i320 +%r356 = shl i320 %r355, 288 +%r357 = or i320 %r351, %r356 +%r358 = zext i320 %r357 to i352 +%r360 = getelementptr i32, i32* %r216, i32 10 +%r361 = load i32, i32* %r360 +%r362 = zext i32 %r361 to i352 +%r363 = shl i352 %r362, 320 +%r364 = or i352 %r358, %r363 +%r365 = zext i352 %r364 to i384 +%r367 = getelementptr i32, i32* %r216, i32 11 +%r368 = load i32, i32* %r367 +%r369 = zext i32 %r368 to i384 +%r370 = shl i384 %r369, 352 +%r371 = or i384 %r365, %r370 +%r372 = zext i384 %r371 to i416 +%r374 = getelementptr i32, i32* %r216, i32 12 +%r375 = load i32, i32* %r374 +%r376 = zext i32 %r375 to i416 +%r377 = shl i416 %r376, 384 +%r378 = or i416 %r372, %r377 +%r379 = zext i416 %r378 to i448 +%r381 = getelementptr i32, i32* %r216, i32 13 +%r382 = load i32, i32* %r381 +%r383 = zext i32 %r382 to i448 +%r384 = shl i448 %r383, 416 +%r385 = or i448 %r379, %r384 +%r386 = zext i448 %r385 to i480 +%r388 = getelementptr i32, i32* %r216, i32 14 +%r389 = load i32, i32* %r388 +%r390 = zext i32 %r389 to i480 +%r391 = shl i480 %r390, 448 +%r392 = or i480 %r386, %r391 +%r393 = zext i480 %r392 to i512 +%r395 = getelementptr i32, i32* %r216, i32 15 +%r396 = load i32, i32* %r395 +%r397 = zext i32 %r396 to i512 +%r398 = shl i512 %r397, 480 +%r399 = or i512 %r393, %r398 +%r400 = zext i512 %r399 to i544 +%r401 = zext i1 %r223 to i544 +%r402 = shl i544 %r401, 512 +%r403 = or i544 %r400, %r402 +%r404 = zext i256 %r225 to i544 +%r405 = zext i256 %r227 to i544 +%r406 = shl i544 %r404, 256 +%r407 = shl i544 %r405, 256 +%r408 = add i544 %r403, %r406 +%r409 = add i544 %r408, %r407 +%r410 = load i32, i32* %r1 +%r411 = zext i32 %r410 to i64 +%r413 = getelementptr i32, i32* %r1, i32 1 +%r414 = load i32, i32* %r413 +%r415 = zext i32 %r414 to i64 +%r416 = shl i64 %r415, 32 +%r417 = or i64 %r411, %r416 +%r418 = zext i64 %r417 to i96 +%r420 = getelementptr i32, i32* %r1, i32 2 +%r421 = load i32, i32* %r420 +%r422 = zext i32 %r421 to i96 +%r423 = shl i96 %r422, 64 +%r424 = or i96 %r418, %r423 +%r425 = zext i96 %r424 to i128 +%r427 = getelementptr i32, i32* %r1, i32 3 +%r428 = load i32, i32* %r427 +%r429 = zext i32 %r428 to i128 +%r430 = shl i128 %r429, 96 +%r431 = or i128 %r425, %r430 +%r432 = zext i128 %r431 to i160 +%r434 = getelementptr i32, i32* %r1, i32 4 +%r435 = load i32, i32* %r434 +%r436 = zext i32 %r435 to i160 +%r437 = shl i160 %r436, 128 +%r438 = or i160 %r432, %r437 +%r439 = zext i160 %r438 to i192 +%r441 = getelementptr i32, i32* %r1, i32 5 +%r442 = load i32, i32* %r441 +%r443 = zext i32 %r442 to i192 +%r444 = shl i192 %r443, 160 +%r445 = or i192 %r439, %r444 +%r446 = zext i192 %r445 to i224 +%r448 = getelementptr i32, i32* %r1, i32 6 +%r449 = load i32, i32* %r448 +%r450 = zext i32 %r449 to i224 +%r451 = shl i224 %r450, 192 +%r452 = or i224 %r446, %r451 +%r453 = zext i224 %r452 to i256 +%r455 = getelementptr i32, i32* %r1, i32 7 +%r456 = load i32, i32* %r455 +%r457 = zext i32 %r456 to i256 +%r458 = shl i256 %r457, 224 +%r459 = or i256 %r453, %r458 +%r460 = zext i256 %r459 to i288 +%r462 = getelementptr i32, i32* %r1, i32 8 +%r463 = load i32, i32* %r462 +%r464 = zext i32 %r463 to i288 +%r465 = shl i288 %r464, 256 +%r466 = or i288 %r460, %r465 +%r467 = zext i288 %r466 to i320 +%r469 = getelementptr i32, i32* %r1, i32 9 +%r470 = load i32, i32* %r469 +%r471 = zext i32 %r470 to i320 +%r472 = shl i320 %r471, 288 +%r473 = or i320 %r467, %r472 +%r474 = zext i320 %r473 to i352 +%r476 = getelementptr i32, i32* %r1, i32 10 +%r477 = load i32, i32* %r476 +%r478 = zext i32 %r477 to i352 +%r479 = shl i352 %r478, 320 +%r480 = or i352 %r474, %r479 +%r481 = zext i352 %r480 to i384 +%r483 = getelementptr i32, i32* %r1, i32 11 +%r484 = load i32, i32* %r483 +%r485 = zext i32 %r484 to i384 +%r486 = shl i384 %r485, 352 +%r487 = or i384 %r481, %r486 +%r488 = zext i384 %r487 to i416 +%r490 = getelementptr i32, i32* %r1, i32 12 +%r491 = load i32, i32* %r490 +%r492 = zext i32 %r491 to i416 +%r493 = shl i416 %r492, 384 +%r494 = or i416 %r488, %r493 +%r495 = zext i416 %r494 to i448 +%r497 = getelementptr i32, i32* %r1, i32 13 +%r498 = load i32, i32* %r497 +%r499 = zext i32 %r498 to i448 +%r500 = shl i448 %r499, 416 +%r501 = or i448 %r495, %r500 +%r502 = zext i448 %r501 to i480 +%r504 = getelementptr i32, i32* %r1, i32 14 +%r505 = load i32, i32* %r504 +%r506 = zext i32 %r505 to i480 +%r507 = shl i480 %r506, 448 +%r508 = or i480 %r502, %r507 +%r509 = zext i480 %r508 to i512 +%r511 = getelementptr i32, i32* %r1, i32 15 +%r512 = load i32, i32* %r511 +%r513 = zext i32 %r512 to i512 +%r514 = shl i512 %r513, 480 +%r515 = or i512 %r509, %r514 +%r516 = zext i512 %r515 to i544 +%r517 = sub i544 %r409, %r516 +%r519 = getelementptr i32, i32* %r1, i32 16 +%r520 = load i32, i32* %r519 +%r521 = zext i32 %r520 to i64 +%r523 = getelementptr i32, i32* %r519, i32 1 +%r524 = load i32, i32* %r523 +%r525 = zext i32 %r524 to i64 +%r526 = shl i64 %r525, 32 +%r527 = or i64 %r521, %r526 +%r528 = zext i64 %r527 to i96 +%r530 = getelementptr i32, i32* %r519, i32 2 +%r531 = load i32, i32* %r530 +%r532 = zext i32 %r531 to i96 +%r533 = shl i96 %r532, 64 +%r534 = or i96 %r528, %r533 +%r535 = zext i96 %r534 to i128 +%r537 = getelementptr i32, i32* %r519, i32 3 +%r538 = load i32, i32* %r537 +%r539 = zext i32 %r538 to i128 +%r540 = shl i128 %r539, 96 +%r541 = or i128 %r535, %r540 +%r542 = zext i128 %r541 to i160 +%r544 = getelementptr i32, i32* %r519, i32 4 +%r545 = load i32, i32* %r544 +%r546 = zext i32 %r545 to i160 +%r547 = shl i160 %r546, 128 +%r548 = or i160 %r542, %r547 +%r549 = zext i160 %r548 to i192 +%r551 = getelementptr i32, i32* %r519, i32 5 +%r552 = load i32, i32* %r551 +%r553 = zext i32 %r552 to i192 +%r554 = shl i192 %r553, 160 +%r555 = or i192 %r549, %r554 +%r556 = zext i192 %r555 to i224 +%r558 = getelementptr i32, i32* %r519, i32 6 +%r559 = load i32, i32* %r558 +%r560 = zext i32 %r559 to i224 +%r561 = shl i224 %r560, 192 +%r562 = or i224 %r556, %r561 +%r563 = zext i224 %r562 to i256 +%r565 = getelementptr i32, i32* %r519, i32 7 +%r566 = load i32, i32* %r565 +%r567 = zext i32 %r566 to i256 +%r568 = shl i256 %r567, 224 +%r569 = or i256 %r563, %r568 +%r570 = zext i256 %r569 to i288 +%r572 = getelementptr i32, i32* %r519, i32 8 +%r573 = load i32, i32* %r572 +%r574 = zext i32 %r573 to i288 +%r575 = shl i288 %r574, 256 +%r576 = or i288 %r570, %r575 +%r577 = zext i288 %r576 to i320 +%r579 = getelementptr i32, i32* %r519, i32 9 +%r580 = load i32, i32* %r579 +%r581 = zext i32 %r580 to i320 +%r582 = shl i320 %r581, 288 +%r583 = or i320 %r577, %r582 +%r584 = zext i320 %r583 to i352 +%r586 = getelementptr i32, i32* %r519, i32 10 +%r587 = load i32, i32* %r586 +%r588 = zext i32 %r587 to i352 +%r589 = shl i352 %r588, 320 +%r590 = or i352 %r584, %r589 +%r591 = zext i352 %r590 to i384 +%r593 = getelementptr i32, i32* %r519, i32 11 +%r594 = load i32, i32* %r593 +%r595 = zext i32 %r594 to i384 +%r596 = shl i384 %r595, 352 +%r597 = or i384 %r591, %r596 +%r598 = zext i384 %r597 to i416 +%r600 = getelementptr i32, i32* %r519, i32 12 +%r601 = load i32, i32* %r600 +%r602 = zext i32 %r601 to i416 +%r603 = shl i416 %r602, 384 +%r604 = or i416 %r598, %r603 +%r605 = zext i416 %r604 to i448 +%r607 = getelementptr i32, i32* %r519, i32 13 +%r608 = load i32, i32* %r607 +%r609 = zext i32 %r608 to i448 +%r610 = shl i448 %r609, 416 +%r611 = or i448 %r605, %r610 +%r612 = zext i448 %r611 to i480 +%r614 = getelementptr i32, i32* %r519, i32 14 +%r615 = load i32, i32* %r614 +%r616 = zext i32 %r615 to i480 +%r617 = shl i480 %r616, 448 +%r618 = or i480 %r612, %r617 +%r619 = zext i480 %r618 to i512 +%r621 = getelementptr i32, i32* %r519, i32 15 +%r622 = load i32, i32* %r621 +%r623 = zext i32 %r622 to i512 +%r624 = shl i512 %r623, 480 +%r625 = or i512 %r619, %r624 +%r626 = zext i512 %r625 to i544 +%r627 = sub i544 %r517, %r626 +%r628 = zext i544 %r627 to i768 +%r630 = getelementptr i32, i32* %r1, i32 8 +%r631 = load i32, i32* %r630 +%r632 = zext i32 %r631 to i64 +%r634 = getelementptr i32, i32* %r630, i32 1 +%r635 = load i32, i32* %r634 +%r636 = zext i32 %r635 to i64 +%r637 = shl i64 %r636, 32 +%r638 = or i64 %r632, %r637 +%r639 = zext i64 %r638 to i96 +%r641 = getelementptr i32, i32* %r630, i32 2 +%r642 = load i32, i32* %r641 +%r643 = zext i32 %r642 to i96 +%r644 = shl i96 %r643, 64 +%r645 = or i96 %r639, %r644 +%r646 = zext i96 %r645 to i128 +%r648 = getelementptr i32, i32* %r630, i32 3 +%r649 = load i32, i32* %r648 +%r650 = zext i32 %r649 to i128 +%r651 = shl i128 %r650, 96 +%r652 = or i128 %r646, %r651 +%r653 = zext i128 %r652 to i160 +%r655 = getelementptr i32, i32* %r630, i32 4 +%r656 = load i32, i32* %r655 +%r657 = zext i32 %r656 to i160 +%r658 = shl i160 %r657, 128 +%r659 = or i160 %r653, %r658 +%r660 = zext i160 %r659 to i192 +%r662 = getelementptr i32, i32* %r630, i32 5 +%r663 = load i32, i32* %r662 +%r664 = zext i32 %r663 to i192 +%r665 = shl i192 %r664, 160 +%r666 = or i192 %r660, %r665 +%r667 = zext i192 %r666 to i224 +%r669 = getelementptr i32, i32* %r630, i32 6 +%r670 = load i32, i32* %r669 +%r671 = zext i32 %r670 to i224 +%r672 = shl i224 %r671, 192 +%r673 = or i224 %r667, %r672 +%r674 = zext i224 %r673 to i256 +%r676 = getelementptr i32, i32* %r630, i32 7 +%r677 = load i32, i32* %r676 +%r678 = zext i32 %r677 to i256 +%r679 = shl i256 %r678, 224 +%r680 = or i256 %r674, %r679 +%r681 = zext i256 %r680 to i288 +%r683 = getelementptr i32, i32* %r630, i32 8 +%r684 = load i32, i32* %r683 +%r685 = zext i32 %r684 to i288 +%r686 = shl i288 %r685, 256 +%r687 = or i288 %r681, %r686 +%r688 = zext i288 %r687 to i320 +%r690 = getelementptr i32, i32* %r630, i32 9 +%r691 = load i32, i32* %r690 +%r692 = zext i32 %r691 to i320 +%r693 = shl i320 %r692, 288 +%r694 = or i320 %r688, %r693 +%r695 = zext i320 %r694 to i352 +%r697 = getelementptr i32, i32* %r630, i32 10 +%r698 = load i32, i32* %r697 +%r699 = zext i32 %r698 to i352 +%r700 = shl i352 %r699, 320 +%r701 = or i352 %r695, %r700 +%r702 = zext i352 %r701 to i384 +%r704 = getelementptr i32, i32* %r630, i32 11 +%r705 = load i32, i32* %r704 +%r706 = zext i32 %r705 to i384 +%r707 = shl i384 %r706, 352 +%r708 = or i384 %r702, %r707 +%r709 = zext i384 %r708 to i416 +%r711 = getelementptr i32, i32* %r630, i32 12 +%r712 = load i32, i32* %r711 +%r713 = zext i32 %r712 to i416 +%r714 = shl i416 %r713, 384 +%r715 = or i416 %r709, %r714 +%r716 = zext i416 %r715 to i448 +%r718 = getelementptr i32, i32* %r630, i32 13 +%r719 = load i32, i32* %r718 +%r720 = zext i32 %r719 to i448 +%r721 = shl i448 %r720, 416 +%r722 = or i448 %r716, %r721 +%r723 = zext i448 %r722 to i480 +%r725 = getelementptr i32, i32* %r630, i32 14 +%r726 = load i32, i32* %r725 +%r727 = zext i32 %r726 to i480 +%r728 = shl i480 %r727, 448 +%r729 = or i480 %r723, %r728 +%r730 = zext i480 %r729 to i512 +%r732 = getelementptr i32, i32* %r630, i32 15 +%r733 = load i32, i32* %r732 +%r734 = zext i32 %r733 to i512 +%r735 = shl i512 %r734, 480 +%r736 = or i512 %r730, %r735 +%r737 = zext i512 %r736 to i544 +%r739 = getelementptr i32, i32* %r630, i32 16 +%r740 = load i32, i32* %r739 +%r741 = zext i32 %r740 to i544 +%r742 = shl i544 %r741, 512 +%r743 = or i544 %r737, %r742 +%r744 = zext i544 %r743 to i576 +%r746 = getelementptr i32, i32* %r630, i32 17 +%r747 = load i32, i32* %r746 +%r748 = zext i32 %r747 to i576 +%r749 = shl i576 %r748, 544 +%r750 = or i576 %r744, %r749 +%r751 = zext i576 %r750 to i608 +%r753 = getelementptr i32, i32* %r630, i32 18 +%r754 = load i32, i32* %r753 +%r755 = zext i32 %r754 to i608 +%r756 = shl i608 %r755, 576 +%r757 = or i608 %r751, %r756 +%r758 = zext i608 %r757 to i640 +%r760 = getelementptr i32, i32* %r630, i32 19 +%r761 = load i32, i32* %r760 +%r762 = zext i32 %r761 to i640 +%r763 = shl i640 %r762, 608 +%r764 = or i640 %r758, %r763 +%r765 = zext i640 %r764 to i672 +%r767 = getelementptr i32, i32* %r630, i32 20 +%r768 = load i32, i32* %r767 +%r769 = zext i32 %r768 to i672 +%r770 = shl i672 %r769, 640 +%r771 = or i672 %r765, %r770 +%r772 = zext i672 %r771 to i704 +%r774 = getelementptr i32, i32* %r630, i32 21 +%r775 = load i32, i32* %r774 +%r776 = zext i32 %r775 to i704 +%r777 = shl i704 %r776, 672 +%r778 = or i704 %r772, %r777 +%r779 = zext i704 %r778 to i736 +%r781 = getelementptr i32, i32* %r630, i32 22 +%r782 = load i32, i32* %r781 +%r783 = zext i32 %r782 to i736 +%r784 = shl i736 %r783, 704 +%r785 = or i736 %r779, %r784 +%r786 = zext i736 %r785 to i768 +%r788 = getelementptr i32, i32* %r630, i32 23 +%r789 = load i32, i32* %r788 +%r790 = zext i32 %r789 to i768 +%r791 = shl i768 %r790, 736 +%r792 = or i768 %r786, %r791 +%r793 = add i768 %r628, %r792 +%r795 = getelementptr i32, i32* %r1, i32 8 +%r797 = getelementptr i32, i32* %r795, i32 0 +%r798 = trunc i768 %r793 to i32 +store i32 %r798, i32* %r797 +%r799 = lshr i768 %r793, 32 +%r801 = getelementptr i32, i32* %r795, i32 1 +%r802 = trunc i768 %r799 to i32 +store i32 %r802, i32* %r801 +%r803 = lshr i768 %r799, 32 +%r805 = getelementptr i32, i32* %r795, i32 2 +%r806 = trunc i768 %r803 to i32 +store i32 %r806, i32* %r805 +%r807 = lshr i768 %r803, 32 +%r809 = getelementptr i32, i32* %r795, i32 3 +%r810 = trunc i768 %r807 to i32 +store i32 %r810, i32* %r809 +%r811 = lshr i768 %r807, 32 +%r813 = getelementptr i32, i32* %r795, i32 4 +%r814 = trunc i768 %r811 to i32 +store i32 %r814, i32* %r813 +%r815 = lshr i768 %r811, 32 +%r817 = getelementptr i32, i32* %r795, i32 5 +%r818 = trunc i768 %r815 to i32 +store i32 %r818, i32* %r817 +%r819 = lshr i768 %r815, 32 +%r821 = getelementptr i32, i32* %r795, i32 6 +%r822 = trunc i768 %r819 to i32 +store i32 %r822, i32* %r821 +%r823 = lshr i768 %r819, 32 +%r825 = getelementptr i32, i32* %r795, i32 7 +%r826 = trunc i768 %r823 to i32 +store i32 %r826, i32* %r825 +%r827 = lshr i768 %r823, 32 +%r829 = getelementptr i32, i32* %r795, i32 8 +%r830 = trunc i768 %r827 to i32 +store i32 %r830, i32* %r829 +%r831 = lshr i768 %r827, 32 +%r833 = getelementptr i32, i32* %r795, i32 9 +%r834 = trunc i768 %r831 to i32 +store i32 %r834, i32* %r833 +%r835 = lshr i768 %r831, 32 +%r837 = getelementptr i32, i32* %r795, i32 10 +%r838 = trunc i768 %r835 to i32 +store i32 %r838, i32* %r837 +%r839 = lshr i768 %r835, 32 +%r841 = getelementptr i32, i32* %r795, i32 11 +%r842 = trunc i768 %r839 to i32 +store i32 %r842, i32* %r841 +%r843 = lshr i768 %r839, 32 +%r845 = getelementptr i32, i32* %r795, i32 12 +%r846 = trunc i768 %r843 to i32 +store i32 %r846, i32* %r845 +%r847 = lshr i768 %r843, 32 +%r849 = getelementptr i32, i32* %r795, i32 13 +%r850 = trunc i768 %r847 to i32 +store i32 %r850, i32* %r849 +%r851 = lshr i768 %r847, 32 +%r853 = getelementptr i32, i32* %r795, i32 14 +%r854 = trunc i768 %r851 to i32 +store i32 %r854, i32* %r853 +%r855 = lshr i768 %r851, 32 +%r857 = getelementptr i32, i32* %r795, i32 15 +%r858 = trunc i768 %r855 to i32 +store i32 %r858, i32* %r857 +%r859 = lshr i768 %r855, 32 +%r861 = getelementptr i32, i32* %r795, i32 16 +%r862 = trunc i768 %r859 to i32 +store i32 %r862, i32* %r861 +%r863 = lshr i768 %r859, 32 +%r865 = getelementptr i32, i32* %r795, i32 17 +%r866 = trunc i768 %r863 to i32 +store i32 %r866, i32* %r865 +%r867 = lshr i768 %r863, 32 +%r869 = getelementptr i32, i32* %r795, i32 18 +%r870 = trunc i768 %r867 to i32 +store i32 %r870, i32* %r869 +%r871 = lshr i768 %r867, 32 +%r873 = getelementptr i32, i32* %r795, i32 19 +%r874 = trunc i768 %r871 to i32 +store i32 %r874, i32* %r873 +%r875 = lshr i768 %r871, 32 +%r877 = getelementptr i32, i32* %r795, i32 20 +%r878 = trunc i768 %r875 to i32 +store i32 %r878, i32* %r877 +%r879 = lshr i768 %r875, 32 +%r881 = getelementptr i32, i32* %r795, i32 21 +%r882 = trunc i768 %r879 to i32 +store i32 %r882, i32* %r881 +%r883 = lshr i768 %r879, 32 +%r885 = getelementptr i32, i32* %r795, i32 22 +%r886 = trunc i768 %r883 to i32 +store i32 %r886, i32* %r885 +%r887 = lshr i768 %r883, 32 +%r889 = getelementptr i32, i32* %r795, i32 23 +%r890 = trunc i768 %r887 to i32 +store i32 %r890, i32* %r889 ret void } -define i576 @mulPv544x32(i32* noalias %r2, i32 %r3) -{ -%r5 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 0) -%r6 = trunc i64 %r5 to i32 -%r7 = call i32 @extractHigh32(i64 %r5) -%r9 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 1) -%r10 = trunc i64 %r9 to i32 -%r11 = call i32 @extractHigh32(i64 %r9) -%r13 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 2) -%r14 = trunc i64 %r13 to i32 -%r15 = call i32 @extractHigh32(i64 %r13) -%r17 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 3) -%r18 = trunc i64 %r17 to i32 -%r19 = call i32 @extractHigh32(i64 %r17) -%r21 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 4) -%r22 = trunc i64 %r21 to i32 -%r23 = call i32 @extractHigh32(i64 %r21) -%r25 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 5) -%r26 = trunc i64 %r25 to i32 -%r27 = call i32 @extractHigh32(i64 %r25) -%r29 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 6) -%r30 = trunc i64 %r29 to i32 -%r31 = call i32 @extractHigh32(i64 %r29) -%r33 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 7) -%r34 = trunc i64 %r33 to i32 -%r35 = call i32 @extractHigh32(i64 %r33) -%r37 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 8) -%r38 = trunc i64 %r37 to i32 -%r39 = call i32 @extractHigh32(i64 %r37) -%r41 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 9) -%r42 = trunc i64 %r41 to i32 -%r43 = call i32 @extractHigh32(i64 %r41) -%r45 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 10) -%r46 = trunc i64 %r45 to i32 -%r47 = call i32 @extractHigh32(i64 %r45) -%r49 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 11) -%r50 = trunc i64 %r49 to i32 -%r51 = call i32 @extractHigh32(i64 %r49) -%r53 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 12) -%r54 = trunc i64 %r53 to i32 -%r55 = call i32 @extractHigh32(i64 %r53) -%r57 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 13) -%r58 = trunc i64 %r57 to i32 -%r59 = call i32 @extractHigh32(i64 %r57) -%r61 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 14) -%r62 = trunc i64 %r61 to i32 -%r63 = call i32 @extractHigh32(i64 %r61) -%r65 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 15) -%r66 = trunc i64 %r65 to i32 -%r67 = call i32 @extractHigh32(i64 %r65) -%r69 = call i64 @mulPos32x32(i32* %r2, i32 %r3, i32 16) -%r70 = trunc i64 %r69 to i32 -%r71 = call i32 @extractHigh32(i64 %r69) -%r72 = zext i32 %r6 to i64 -%r73 = zext i32 %r10 to i64 -%r74 = shl i64 %r73, 32 -%r75 = or i64 %r72, %r74 -%r76 = zext i64 %r75 to i96 -%r77 = zext i32 %r14 to i96 -%r78 = shl i96 %r77, 64 -%r79 = or i96 %r76, %r78 -%r80 = zext i96 %r79 to i128 -%r81 = zext i32 %r18 to i128 -%r82 = shl i128 %r81, 96 -%r83 = or i128 %r80, %r82 -%r84 = zext i128 %r83 to i160 -%r85 = zext i32 %r22 to i160 -%r86 = shl i160 %r85, 128 -%r87 = or i160 %r84, %r86 -%r88 = zext i160 %r87 to i192 -%r89 = zext i32 %r26 to i192 -%r90 = shl i192 %r89, 160 -%r91 = or i192 %r88, %r90 -%r92 = zext i192 %r91 to i224 -%r93 = zext i32 %r30 to i224 -%r94 = shl i224 %r93, 192 -%r95 = or i224 %r92, %r94 -%r96 = zext i224 %r95 to i256 -%r97 = zext i32 %r34 to i256 -%r98 = shl i256 %r97, 224 -%r99 = or i256 %r96, %r98 -%r100 = zext i256 %r99 to i288 -%r101 = zext i32 %r38 to i288 -%r102 = shl i288 %r101, 256 -%r103 = or i288 %r100, %r102 -%r104 = zext i288 %r103 to i320 -%r105 = zext i32 %r42 to i320 -%r106 = shl i320 %r105, 288 -%r107 = or i320 %r104, %r106 -%r108 = zext i320 %r107 to i352 -%r109 = zext i32 %r46 to i352 -%r110 = shl i352 %r109, 320 -%r111 = or i352 %r108, %r110 -%r112 = zext i352 %r111 to i384 -%r113 = zext i32 %r50 to i384 -%r114 = shl i384 %r113, 352 -%r115 = or i384 %r112, %r114 -%r116 = zext i384 %r115 to i416 -%r117 = zext i32 %r54 to i416 -%r118 = shl i416 %r117, 384 -%r119 = or i416 %r116, %r118 -%r120 = zext i416 %r119 to i448 -%r121 = zext i32 %r58 to i448 -%r122 = shl i448 %r121, 416 -%r123 = or i448 %r120, %r122 -%r124 = zext i448 %r123 to i480 -%r125 = zext i32 %r62 to i480 -%r126 = shl i480 %r125, 448 -%r127 = or i480 %r124, %r126 -%r128 = zext i480 %r127 to i512 -%r129 = zext i32 %r66 to i512 -%r130 = shl i512 %r129, 480 -%r131 = or i512 %r128, %r130 -%r132 = zext i512 %r131 to i544 -%r133 = zext i32 %r70 to i544 -%r134 = shl i544 %r133, 512 -%r135 = or i544 %r132, %r134 -%r136 = zext i32 %r7 to i64 -%r137 = zext i32 %r11 to i64 -%r138 = shl i64 %r137, 32 -%r139 = or i64 %r136, %r138 -%r140 = zext i64 %r139 to i96 -%r141 = zext i32 %r15 to i96 -%r142 = shl i96 %r141, 64 -%r143 = or i96 %r140, %r142 -%r144 = zext i96 %r143 to i128 -%r145 = zext i32 %r19 to i128 -%r146 = shl i128 %r145, 96 -%r147 = or i128 %r144, %r146 -%r148 = zext i128 %r147 to i160 -%r149 = zext i32 %r23 to i160 -%r150 = shl i160 %r149, 128 -%r151 = or i160 %r148, %r150 -%r152 = zext i160 %r151 to i192 -%r153 = zext i32 %r27 to i192 -%r154 = shl i192 %r153, 160 -%r155 = or i192 %r152, %r154 -%r156 = zext i192 %r155 to i224 -%r157 = zext i32 %r31 to i224 -%r158 = shl i224 %r157, 192 -%r159 = or i224 %r156, %r158 -%r160 = zext i224 %r159 to i256 -%r161 = zext i32 %r35 to i256 -%r162 = shl i256 %r161, 224 -%r163 = or i256 %r160, %r162 -%r164 = zext i256 %r163 to i288 -%r165 = zext i32 %r39 to i288 -%r166 = shl i288 %r165, 256 -%r167 = or i288 %r164, %r166 -%r168 = zext i288 %r167 to i320 -%r169 = zext i32 %r43 to i320 -%r170 = shl i320 %r169, 288 -%r171 = or i320 %r168, %r170 -%r172 = zext i320 %r171 to i352 -%r173 = zext i32 %r47 to i352 -%r174 = shl i352 %r173, 320 -%r175 = or i352 %r172, %r174 -%r176 = zext i352 %r175 to i384 -%r177 = zext i32 %r51 to i384 -%r178 = shl i384 %r177, 352 -%r179 = or i384 %r176, %r178 -%r180 = zext i384 %r179 to i416 -%r181 = zext i32 %r55 to i416 -%r182 = shl i416 %r181, 384 -%r183 = or i416 %r180, %r182 -%r184 = zext i416 %r183 to i448 -%r185 = zext i32 %r59 to i448 -%r186 = shl i448 %r185, 416 -%r187 = or i448 %r184, %r186 -%r188 = zext i448 %r187 to i480 -%r189 = zext i32 %r63 to i480 -%r190 = shl i480 %r189, 448 -%r191 = or i480 %r188, %r190 -%r192 = zext i480 %r191 to i512 -%r193 = zext i32 %r67 to i512 -%r194 = shl i512 %r193, 480 -%r195 = or i512 %r192, %r194 -%r196 = zext i512 %r195 to i544 -%r197 = zext i32 %r71 to i544 -%r198 = shl i544 %r197, 512 -%r199 = or i544 %r196, %r198 -%r200 = zext i544 %r135 to i576 -%r201 = zext i544 %r199 to i576 -%r202 = shl i576 %r201, 32 -%r203 = add i576 %r200, %r202 -ret i576 %r203 -} -define void @mcl_fp_mulUnitPre17L(i32* noalias %r1, i32* noalias %r2, i32 %r3) +define void @mcl_fp_mont16L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { -%r4 = call i576 @mulPv544x32(i32* %r2, i32 %r3) -%r5 = trunc i576 %r4 to i32 -%r7 = getelementptr i32, i32* %r1, i32 0 -store i32 %r5, i32* %r7 -%r8 = lshr i576 %r4, 32 -%r9 = trunc i576 %r8 to i32 -%r11 = getelementptr i32, i32* %r1, i32 1 -store i32 %r9, i32* %r11 -%r12 = lshr i576 %r8, 32 -%r13 = trunc i576 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 2 -store i32 %r13, i32* %r15 -%r16 = lshr i576 %r12, 32 -%r17 = trunc i576 %r16 to i32 -%r19 = getelementptr i32, i32* %r1, i32 3 -store i32 %r17, i32* %r19 -%r20 = lshr i576 %r16, 32 -%r21 = trunc i576 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 4 -store i32 %r21, i32* %r23 -%r24 = lshr i576 %r20, 32 +%r6 = getelementptr i32, i32* %r4, i32 -1 +%r7 = load i32, i32* %r6 +%r9 = getelementptr i32, i32* %r3, i32 0 +%r10 = load i32, i32* %r9 +%r11 = call i544 @mulPv512x32(i32* %r2, i32 %r10) +%r12 = zext i544 %r11 to i576 +%r13 = trunc i544 %r11 to i32 +%r14 = mul i32 %r13, %r7 +%r15 = call i544 @mulPv512x32(i32* %r4, i32 %r14) +%r16 = zext i544 %r15 to i576 +%r17 = add i576 %r12, %r16 +%r18 = lshr i576 %r17, 32 +%r20 = getelementptr i32, i32* %r3, i32 1 +%r21 = load i32, i32* %r20 +%r22 = call i544 @mulPv512x32(i32* %r2, i32 %r21) +%r23 = zext i544 %r22 to i576 +%r24 = add i576 %r18, %r23 %r25 = trunc i576 %r24 to i32 -%r27 = getelementptr i32, i32* %r1, i32 5 -store i32 %r25, i32* %r27 -%r28 = lshr i576 %r24, 32 -%r29 = trunc i576 %r28 to i32 -%r31 = getelementptr i32, i32* %r1, i32 6 -store i32 %r29, i32* %r31 -%r32 = lshr i576 %r28, 32 -%r33 = trunc i576 %r32 to i32 -%r35 = getelementptr i32, i32* %r1, i32 7 -store i32 %r33, i32* %r35 -%r36 = lshr i576 %r32, 32 +%r26 = mul i32 %r25, %r7 +%r27 = call i544 @mulPv512x32(i32* %r4, i32 %r26) +%r28 = zext i544 %r27 to i576 +%r29 = add i576 %r24, %r28 +%r30 = lshr i576 %r29, 32 +%r32 = getelementptr i32, i32* %r3, i32 2 +%r33 = load i32, i32* %r32 +%r34 = call i544 @mulPv512x32(i32* %r2, i32 %r33) +%r35 = zext i544 %r34 to i576 +%r36 = add i576 %r30, %r35 %r37 = trunc i576 %r36 to i32 -%r39 = getelementptr i32, i32* %r1, i32 8 -store i32 %r37, i32* %r39 -%r40 = lshr i576 %r36, 32 -%r41 = trunc i576 %r40 to i32 -%r43 = getelementptr i32, i32* %r1, i32 9 -store i32 %r41, i32* %r43 -%r44 = lshr i576 %r40, 32 -%r45 = trunc i576 %r44 to i32 -%r47 = getelementptr i32, i32* %r1, i32 10 -store i32 %r45, i32* %r47 -%r48 = lshr i576 %r44, 32 +%r38 = mul i32 %r37, %r7 +%r39 = call i544 @mulPv512x32(i32* %r4, i32 %r38) +%r40 = zext i544 %r39 to i576 +%r41 = add i576 %r36, %r40 +%r42 = lshr i576 %r41, 32 +%r44 = getelementptr i32, i32* %r3, i32 3 +%r45 = load i32, i32* %r44 +%r46 = call i544 @mulPv512x32(i32* %r2, i32 %r45) +%r47 = zext i544 %r46 to i576 +%r48 = add i576 %r42, %r47 %r49 = trunc i576 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 11 -store i32 %r49, i32* %r51 -%r52 = lshr i576 %r48, 32 -%r53 = trunc i576 %r52 to i32 -%r55 = getelementptr i32, i32* %r1, i32 12 -store i32 %r53, i32* %r55 -%r56 = lshr i576 %r52, 32 -%r57 = trunc i576 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 13 -store i32 %r57, i32* %r59 -%r60 = lshr i576 %r56, 32 +%r50 = mul i32 %r49, %r7 +%r51 = call i544 @mulPv512x32(i32* %r4, i32 %r50) +%r52 = zext i544 %r51 to i576 +%r53 = add i576 %r48, %r52 +%r54 = lshr i576 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 4 +%r57 = load i32, i32* %r56 +%r58 = call i544 @mulPv512x32(i32* %r2, i32 %r57) +%r59 = zext i544 %r58 to i576 +%r60 = add i576 %r54, %r59 %r61 = trunc i576 %r60 to i32 -%r63 = getelementptr i32, i32* %r1, i32 14 -store i32 %r61, i32* %r63 -%r64 = lshr i576 %r60, 32 -%r65 = trunc i576 %r64 to i32 -%r67 = getelementptr i32, i32* %r1, i32 15 -store i32 %r65, i32* %r67 -%r68 = lshr i576 %r64, 32 -%r69 = trunc i576 %r68 to i32 -%r71 = getelementptr i32, i32* %r1, i32 16 -store i32 %r69, i32* %r71 -%r72 = lshr i576 %r68, 32 -%r73 = trunc i576 %r72 to i32 -%r75 = getelementptr i32, i32* %r1, i32 17 -store i32 %r73, i32* %r75 -ret void -} -define void @mcl_fpDbl_mulPre17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) -{ -%r4 = load i32, i32* %r3 -%r5 = call i576 @mulPv544x32(i32* %r2, i32 %r4) -%r6 = trunc i576 %r5 to i32 -store i32 %r6, i32* %r1 -%r7 = lshr i576 %r5, 32 -%r9 = getelementptr i32, i32* %r3, i32 1 -%r10 = load i32, i32* %r9 -%r11 = call i576 @mulPv544x32(i32* %r2, i32 %r10) -%r12 = add i576 %r7, %r11 -%r13 = trunc i576 %r12 to i32 -%r15 = getelementptr i32, i32* %r1, i32 1 -store i32 %r13, i32* %r15 -%r16 = lshr i576 %r12, 32 -%r18 = getelementptr i32, i32* %r3, i32 2 -%r19 = load i32, i32* %r18 -%r20 = call i576 @mulPv544x32(i32* %r2, i32 %r19) -%r21 = add i576 %r16, %r20 -%r22 = trunc i576 %r21 to i32 -%r24 = getelementptr i32, i32* %r1, i32 2 -store i32 %r22, i32* %r24 -%r25 = lshr i576 %r21, 32 -%r27 = getelementptr i32, i32* %r3, i32 3 -%r28 = load i32, i32* %r27 -%r29 = call i576 @mulPv544x32(i32* %r2, i32 %r28) -%r30 = add i576 %r25, %r29 -%r31 = trunc i576 %r30 to i32 -%r33 = getelementptr i32, i32* %r1, i32 3 -store i32 %r31, i32* %r33 -%r34 = lshr i576 %r30, 32 -%r36 = getelementptr i32, i32* %r3, i32 4 -%r37 = load i32, i32* %r36 -%r38 = call i576 @mulPv544x32(i32* %r2, i32 %r37) -%r39 = add i576 %r34, %r38 -%r40 = trunc i576 %r39 to i32 -%r42 = getelementptr i32, i32* %r1, i32 4 -store i32 %r40, i32* %r42 -%r43 = lshr i576 %r39, 32 -%r45 = getelementptr i32, i32* %r3, i32 5 -%r46 = load i32, i32* %r45 -%r47 = call i576 @mulPv544x32(i32* %r2, i32 %r46) -%r48 = add i576 %r43, %r47 -%r49 = trunc i576 %r48 to i32 -%r51 = getelementptr i32, i32* %r1, i32 5 -store i32 %r49, i32* %r51 -%r52 = lshr i576 %r48, 32 -%r54 = getelementptr i32, i32* %r3, i32 6 -%r55 = load i32, i32* %r54 -%r56 = call i576 @mulPv544x32(i32* %r2, i32 %r55) -%r57 = add i576 %r52, %r56 -%r58 = trunc i576 %r57 to i32 -%r60 = getelementptr i32, i32* %r1, i32 6 -store i32 %r58, i32* %r60 -%r61 = lshr i576 %r57, 32 -%r63 = getelementptr i32, i32* %r3, i32 7 -%r64 = load i32, i32* %r63 -%r65 = call i576 @mulPv544x32(i32* %r2, i32 %r64) -%r66 = add i576 %r61, %r65 -%r67 = trunc i576 %r66 to i32 -%r69 = getelementptr i32, i32* %r1, i32 7 -store i32 %r67, i32* %r69 -%r70 = lshr i576 %r66, 32 -%r72 = getelementptr i32, i32* %r3, i32 8 -%r73 = load i32, i32* %r72 -%r74 = call i576 @mulPv544x32(i32* %r2, i32 %r73) -%r75 = add i576 %r70, %r74 -%r76 = trunc i576 %r75 to i32 -%r78 = getelementptr i32, i32* %r1, i32 8 -store i32 %r76, i32* %r78 -%r79 = lshr i576 %r75, 32 -%r81 = getelementptr i32, i32* %r3, i32 9 -%r82 = load i32, i32* %r81 -%r83 = call i576 @mulPv544x32(i32* %r2, i32 %r82) -%r84 = add i576 %r79, %r83 -%r85 = trunc i576 %r84 to i32 -%r87 = getelementptr i32, i32* %r1, i32 9 -store i32 %r85, i32* %r87 -%r88 = lshr i576 %r84, 32 -%r90 = getelementptr i32, i32* %r3, i32 10 -%r91 = load i32, i32* %r90 -%r92 = call i576 @mulPv544x32(i32* %r2, i32 %r91) -%r93 = add i576 %r88, %r92 -%r94 = trunc i576 %r93 to i32 -%r96 = getelementptr i32, i32* %r1, i32 10 -store i32 %r94, i32* %r96 -%r97 = lshr i576 %r93, 32 -%r99 = getelementptr i32, i32* %r3, i32 11 -%r100 = load i32, i32* %r99 -%r101 = call i576 @mulPv544x32(i32* %r2, i32 %r100) -%r102 = add i576 %r97, %r101 -%r103 = trunc i576 %r102 to i32 -%r105 = getelementptr i32, i32* %r1, i32 11 -store i32 %r103, i32* %r105 -%r106 = lshr i576 %r102, 32 -%r108 = getelementptr i32, i32* %r3, i32 12 -%r109 = load i32, i32* %r108 -%r110 = call i576 @mulPv544x32(i32* %r2, i32 %r109) -%r111 = add i576 %r106, %r110 -%r112 = trunc i576 %r111 to i32 -%r114 = getelementptr i32, i32* %r1, i32 12 -store i32 %r112, i32* %r114 -%r115 = lshr i576 %r111, 32 -%r117 = getelementptr i32, i32* %r3, i32 13 -%r118 = load i32, i32* %r117 -%r119 = call i576 @mulPv544x32(i32* %r2, i32 %r118) -%r120 = add i576 %r115, %r119 -%r121 = trunc i576 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 13 -store i32 %r121, i32* %r123 -%r124 = lshr i576 %r120, 32 -%r126 = getelementptr i32, i32* %r3, i32 14 -%r127 = load i32, i32* %r126 -%r128 = call i576 @mulPv544x32(i32* %r2, i32 %r127) -%r129 = add i576 %r124, %r128 -%r130 = trunc i576 %r129 to i32 -%r132 = getelementptr i32, i32* %r1, i32 14 -store i32 %r130, i32* %r132 -%r133 = lshr i576 %r129, 32 -%r135 = getelementptr i32, i32* %r3, i32 15 -%r136 = load i32, i32* %r135 -%r137 = call i576 @mulPv544x32(i32* %r2, i32 %r136) -%r138 = add i576 %r133, %r137 -%r139 = trunc i576 %r138 to i32 -%r141 = getelementptr i32, i32* %r1, i32 15 -store i32 %r139, i32* %r141 -%r142 = lshr i576 %r138, 32 -%r144 = getelementptr i32, i32* %r3, i32 16 -%r145 = load i32, i32* %r144 -%r146 = call i576 @mulPv544x32(i32* %r2, i32 %r145) -%r147 = add i576 %r142, %r146 -%r149 = getelementptr i32, i32* %r1, i32 16 -%r150 = trunc i576 %r147 to i32 -%r152 = getelementptr i32, i32* %r149, i32 0 -store i32 %r150, i32* %r152 -%r153 = lshr i576 %r147, 32 -%r154 = trunc i576 %r153 to i32 -%r156 = getelementptr i32, i32* %r149, i32 1 -store i32 %r154, i32* %r156 -%r157 = lshr i576 %r153, 32 -%r158 = trunc i576 %r157 to i32 -%r160 = getelementptr i32, i32* %r149, i32 2 -store i32 %r158, i32* %r160 -%r161 = lshr i576 %r157, 32 -%r162 = trunc i576 %r161 to i32 -%r164 = getelementptr i32, i32* %r149, i32 3 -store i32 %r162, i32* %r164 -%r165 = lshr i576 %r161, 32 -%r166 = trunc i576 %r165 to i32 -%r168 = getelementptr i32, i32* %r149, i32 4 -store i32 %r166, i32* %r168 -%r169 = lshr i576 %r165, 32 -%r170 = trunc i576 %r169 to i32 -%r172 = getelementptr i32, i32* %r149, i32 5 -store i32 %r170, i32* %r172 -%r173 = lshr i576 %r169, 32 -%r174 = trunc i576 %r173 to i32 -%r176 = getelementptr i32, i32* %r149, i32 6 -store i32 %r174, i32* %r176 -%r177 = lshr i576 %r173, 32 -%r178 = trunc i576 %r177 to i32 -%r180 = getelementptr i32, i32* %r149, i32 7 -store i32 %r178, i32* %r180 -%r181 = lshr i576 %r177, 32 -%r182 = trunc i576 %r181 to i32 -%r184 = getelementptr i32, i32* %r149, i32 8 -store i32 %r182, i32* %r184 -%r185 = lshr i576 %r181, 32 -%r186 = trunc i576 %r185 to i32 -%r188 = getelementptr i32, i32* %r149, i32 9 -store i32 %r186, i32* %r188 -%r189 = lshr i576 %r185, 32 -%r190 = trunc i576 %r189 to i32 -%r192 = getelementptr i32, i32* %r149, i32 10 -store i32 %r190, i32* %r192 -%r193 = lshr i576 %r189, 32 -%r194 = trunc i576 %r193 to i32 -%r196 = getelementptr i32, i32* %r149, i32 11 -store i32 %r194, i32* %r196 -%r197 = lshr i576 %r193, 32 -%r198 = trunc i576 %r197 to i32 -%r200 = getelementptr i32, i32* %r149, i32 12 -store i32 %r198, i32* %r200 -%r201 = lshr i576 %r197, 32 -%r202 = trunc i576 %r201 to i32 -%r204 = getelementptr i32, i32* %r149, i32 13 -store i32 %r202, i32* %r204 -%r205 = lshr i576 %r201, 32 -%r206 = trunc i576 %r205 to i32 -%r208 = getelementptr i32, i32* %r149, i32 14 -store i32 %r206, i32* %r208 -%r209 = lshr i576 %r205, 32 -%r210 = trunc i576 %r209 to i32 -%r212 = getelementptr i32, i32* %r149, i32 15 -store i32 %r210, i32* %r212 -%r213 = lshr i576 %r209, 32 -%r214 = trunc i576 %r213 to i32 -%r216 = getelementptr i32, i32* %r149, i32 16 -store i32 %r214, i32* %r216 -%r217 = lshr i576 %r213, 32 -%r218 = trunc i576 %r217 to i32 -%r220 = getelementptr i32, i32* %r149, i32 17 -store i32 %r218, i32* %r220 -ret void -} -define void @mcl_fpDbl_sqrPre17L(i32* noalias %r1, i32* noalias %r2) -{ -%r3 = load i32, i32* %r2 -%r4 = call i576 @mulPv544x32(i32* %r2, i32 %r3) -%r5 = trunc i576 %r4 to i32 -store i32 %r5, i32* %r1 -%r6 = lshr i576 %r4, 32 -%r8 = getelementptr i32, i32* %r2, i32 1 -%r9 = load i32, i32* %r8 -%r10 = call i576 @mulPv544x32(i32* %r2, i32 %r9) -%r11 = add i576 %r6, %r10 -%r12 = trunc i576 %r11 to i32 -%r14 = getelementptr i32, i32* %r1, i32 1 -store i32 %r12, i32* %r14 -%r15 = lshr i576 %r11, 32 -%r17 = getelementptr i32, i32* %r2, i32 2 -%r18 = load i32, i32* %r17 -%r19 = call i576 @mulPv544x32(i32* %r2, i32 %r18) -%r20 = add i576 %r15, %r19 -%r21 = trunc i576 %r20 to i32 -%r23 = getelementptr i32, i32* %r1, i32 2 -store i32 %r21, i32* %r23 -%r24 = lshr i576 %r20, 32 -%r26 = getelementptr i32, i32* %r2, i32 3 -%r27 = load i32, i32* %r26 -%r28 = call i576 @mulPv544x32(i32* %r2, i32 %r27) -%r29 = add i576 %r24, %r28 -%r30 = trunc i576 %r29 to i32 -%r32 = getelementptr i32, i32* %r1, i32 3 -store i32 %r30, i32* %r32 -%r33 = lshr i576 %r29, 32 -%r35 = getelementptr i32, i32* %r2, i32 4 -%r36 = load i32, i32* %r35 -%r37 = call i576 @mulPv544x32(i32* %r2, i32 %r36) -%r38 = add i576 %r33, %r37 -%r39 = trunc i576 %r38 to i32 -%r41 = getelementptr i32, i32* %r1, i32 4 -store i32 %r39, i32* %r41 -%r42 = lshr i576 %r38, 32 -%r44 = getelementptr i32, i32* %r2, i32 5 -%r45 = load i32, i32* %r44 -%r46 = call i576 @mulPv544x32(i32* %r2, i32 %r45) -%r47 = add i576 %r42, %r46 -%r48 = trunc i576 %r47 to i32 -%r50 = getelementptr i32, i32* %r1, i32 5 -store i32 %r48, i32* %r50 -%r51 = lshr i576 %r47, 32 -%r53 = getelementptr i32, i32* %r2, i32 6 -%r54 = load i32, i32* %r53 -%r55 = call i576 @mulPv544x32(i32* %r2, i32 %r54) -%r56 = add i576 %r51, %r55 -%r57 = trunc i576 %r56 to i32 -%r59 = getelementptr i32, i32* %r1, i32 6 -store i32 %r57, i32* %r59 -%r60 = lshr i576 %r56, 32 -%r62 = getelementptr i32, i32* %r2, i32 7 -%r63 = load i32, i32* %r62 -%r64 = call i576 @mulPv544x32(i32* %r2, i32 %r63) +%r62 = mul i32 %r61, %r7 +%r63 = call i544 @mulPv512x32(i32* %r4, i32 %r62) +%r64 = zext i544 %r63 to i576 %r65 = add i576 %r60, %r64 -%r66 = trunc i576 %r65 to i32 -%r68 = getelementptr i32, i32* %r1, i32 7 -store i32 %r66, i32* %r68 -%r69 = lshr i576 %r65, 32 -%r71 = getelementptr i32, i32* %r2, i32 8 -%r72 = load i32, i32* %r71 -%r73 = call i576 @mulPv544x32(i32* %r2, i32 %r72) -%r74 = add i576 %r69, %r73 -%r75 = trunc i576 %r74 to i32 -%r77 = getelementptr i32, i32* %r1, i32 8 -store i32 %r75, i32* %r77 -%r78 = lshr i576 %r74, 32 -%r80 = getelementptr i32, i32* %r2, i32 9 +%r66 = lshr i576 %r65, 32 +%r68 = getelementptr i32, i32* %r3, i32 5 +%r69 = load i32, i32* %r68 +%r70 = call i544 @mulPv512x32(i32* %r2, i32 %r69) +%r71 = zext i544 %r70 to i576 +%r72 = add i576 %r66, %r71 +%r73 = trunc i576 %r72 to i32 +%r74 = mul i32 %r73, %r7 +%r75 = call i544 @mulPv512x32(i32* %r4, i32 %r74) +%r76 = zext i544 %r75 to i576 +%r77 = add i576 %r72, %r76 +%r78 = lshr i576 %r77, 32 +%r80 = getelementptr i32, i32* %r3, i32 6 %r81 = load i32, i32* %r80 -%r82 = call i576 @mulPv544x32(i32* %r2, i32 %r81) -%r83 = add i576 %r78, %r82 -%r84 = trunc i576 %r83 to i32 -%r86 = getelementptr i32, i32* %r1, i32 9 -store i32 %r84, i32* %r86 -%r87 = lshr i576 %r83, 32 -%r89 = getelementptr i32, i32* %r2, i32 10 -%r90 = load i32, i32* %r89 -%r91 = call i576 @mulPv544x32(i32* %r2, i32 %r90) -%r92 = add i576 %r87, %r91 -%r93 = trunc i576 %r92 to i32 -%r95 = getelementptr i32, i32* %r1, i32 10 -store i32 %r93, i32* %r95 -%r96 = lshr i576 %r92, 32 -%r98 = getelementptr i32, i32* %r2, i32 11 -%r99 = load i32, i32* %r98 -%r100 = call i576 @mulPv544x32(i32* %r2, i32 %r99) +%r82 = call i544 @mulPv512x32(i32* %r2, i32 %r81) +%r83 = zext i544 %r82 to i576 +%r84 = add i576 %r78, %r83 +%r85 = trunc i576 %r84 to i32 +%r86 = mul i32 %r85, %r7 +%r87 = call i544 @mulPv512x32(i32* %r4, i32 %r86) +%r88 = zext i544 %r87 to i576 +%r89 = add i576 %r84, %r88 +%r90 = lshr i576 %r89, 32 +%r92 = getelementptr i32, i32* %r3, i32 7 +%r93 = load i32, i32* %r92 +%r94 = call i544 @mulPv512x32(i32* %r2, i32 %r93) +%r95 = zext i544 %r94 to i576 +%r96 = add i576 %r90, %r95 +%r97 = trunc i576 %r96 to i32 +%r98 = mul i32 %r97, %r7 +%r99 = call i544 @mulPv512x32(i32* %r4, i32 %r98) +%r100 = zext i544 %r99 to i576 %r101 = add i576 %r96, %r100 -%r102 = trunc i576 %r101 to i32 -%r104 = getelementptr i32, i32* %r1, i32 11 -store i32 %r102, i32* %r104 -%r105 = lshr i576 %r101, 32 -%r107 = getelementptr i32, i32* %r2, i32 12 -%r108 = load i32, i32* %r107 -%r109 = call i576 @mulPv544x32(i32* %r2, i32 %r108) -%r110 = add i576 %r105, %r109 -%r111 = trunc i576 %r110 to i32 -%r113 = getelementptr i32, i32* %r1, i32 12 -store i32 %r111, i32* %r113 -%r114 = lshr i576 %r110, 32 -%r116 = getelementptr i32, i32* %r2, i32 13 +%r102 = lshr i576 %r101, 32 +%r104 = getelementptr i32, i32* %r3, i32 8 +%r105 = load i32, i32* %r104 +%r106 = call i544 @mulPv512x32(i32* %r2, i32 %r105) +%r107 = zext i544 %r106 to i576 +%r108 = add i576 %r102, %r107 +%r109 = trunc i576 %r108 to i32 +%r110 = mul i32 %r109, %r7 +%r111 = call i544 @mulPv512x32(i32* %r4, i32 %r110) +%r112 = zext i544 %r111 to i576 +%r113 = add i576 %r108, %r112 +%r114 = lshr i576 %r113, 32 +%r116 = getelementptr i32, i32* %r3, i32 9 %r117 = load i32, i32* %r116 -%r118 = call i576 @mulPv544x32(i32* %r2, i32 %r117) -%r119 = add i576 %r114, %r118 -%r120 = trunc i576 %r119 to i32 -%r122 = getelementptr i32, i32* %r1, i32 13 -store i32 %r120, i32* %r122 -%r123 = lshr i576 %r119, 32 -%r125 = getelementptr i32, i32* %r2, i32 14 -%r126 = load i32, i32* %r125 -%r127 = call i576 @mulPv544x32(i32* %r2, i32 %r126) -%r128 = add i576 %r123, %r127 -%r129 = trunc i576 %r128 to i32 -%r131 = getelementptr i32, i32* %r1, i32 14 -store i32 %r129, i32* %r131 -%r132 = lshr i576 %r128, 32 -%r134 = getelementptr i32, i32* %r2, i32 15 -%r135 = load i32, i32* %r134 -%r136 = call i576 @mulPv544x32(i32* %r2, i32 %r135) +%r118 = call i544 @mulPv512x32(i32* %r2, i32 %r117) +%r119 = zext i544 %r118 to i576 +%r120 = add i576 %r114, %r119 +%r121 = trunc i576 %r120 to i32 +%r122 = mul i32 %r121, %r7 +%r123 = call i544 @mulPv512x32(i32* %r4, i32 %r122) +%r124 = zext i544 %r123 to i576 +%r125 = add i576 %r120, %r124 +%r126 = lshr i576 %r125, 32 +%r128 = getelementptr i32, i32* %r3, i32 10 +%r129 = load i32, i32* %r128 +%r130 = call i544 @mulPv512x32(i32* %r2, i32 %r129) +%r131 = zext i544 %r130 to i576 +%r132 = add i576 %r126, %r131 +%r133 = trunc i576 %r132 to i32 +%r134 = mul i32 %r133, %r7 +%r135 = call i544 @mulPv512x32(i32* %r4, i32 %r134) +%r136 = zext i544 %r135 to i576 %r137 = add i576 %r132, %r136 -%r138 = trunc i576 %r137 to i32 -%r140 = getelementptr i32, i32* %r1, i32 15 -store i32 %r138, i32* %r140 -%r141 = lshr i576 %r137, 32 -%r143 = getelementptr i32, i32* %r2, i32 16 -%r144 = load i32, i32* %r143 -%r145 = call i576 @mulPv544x32(i32* %r2, i32 %r144) -%r146 = add i576 %r141, %r145 -%r148 = getelementptr i32, i32* %r1, i32 16 -%r149 = trunc i576 %r146 to i32 -%r151 = getelementptr i32, i32* %r148, i32 0 -store i32 %r149, i32* %r151 -%r152 = lshr i576 %r146, 32 -%r153 = trunc i576 %r152 to i32 -%r155 = getelementptr i32, i32* %r148, i32 1 -store i32 %r153, i32* %r155 -%r156 = lshr i576 %r152, 32 +%r138 = lshr i576 %r137, 32 +%r140 = getelementptr i32, i32* %r3, i32 11 +%r141 = load i32, i32* %r140 +%r142 = call i544 @mulPv512x32(i32* %r2, i32 %r141) +%r143 = zext i544 %r142 to i576 +%r144 = add i576 %r138, %r143 +%r145 = trunc i576 %r144 to i32 +%r146 = mul i32 %r145, %r7 +%r147 = call i544 @mulPv512x32(i32* %r4, i32 %r146) +%r148 = zext i544 %r147 to i576 +%r149 = add i576 %r144, %r148 +%r150 = lshr i576 %r149, 32 +%r152 = getelementptr i32, i32* %r3, i32 12 +%r153 = load i32, i32* %r152 +%r154 = call i544 @mulPv512x32(i32* %r2, i32 %r153) +%r155 = zext i544 %r154 to i576 +%r156 = add i576 %r150, %r155 %r157 = trunc i576 %r156 to i32 -%r159 = getelementptr i32, i32* %r148, i32 2 -store i32 %r157, i32* %r159 -%r160 = lshr i576 %r156, 32 -%r161 = trunc i576 %r160 to i32 -%r163 = getelementptr i32, i32* %r148, i32 3 -store i32 %r161, i32* %r163 -%r164 = lshr i576 %r160, 32 -%r165 = trunc i576 %r164 to i32 -%r167 = getelementptr i32, i32* %r148, i32 4 -store i32 %r165, i32* %r167 -%r168 = lshr i576 %r164, 32 +%r158 = mul i32 %r157, %r7 +%r159 = call i544 @mulPv512x32(i32* %r4, i32 %r158) +%r160 = zext i544 %r159 to i576 +%r161 = add i576 %r156, %r160 +%r162 = lshr i576 %r161, 32 +%r164 = getelementptr i32, i32* %r3, i32 13 +%r165 = load i32, i32* %r164 +%r166 = call i544 @mulPv512x32(i32* %r2, i32 %r165) +%r167 = zext i544 %r166 to i576 +%r168 = add i576 %r162, %r167 %r169 = trunc i576 %r168 to i32 -%r171 = getelementptr i32, i32* %r148, i32 5 -store i32 %r169, i32* %r171 -%r172 = lshr i576 %r168, 32 -%r173 = trunc i576 %r172 to i32 -%r175 = getelementptr i32, i32* %r148, i32 6 -store i32 %r173, i32* %r175 -%r176 = lshr i576 %r172, 32 -%r177 = trunc i576 %r176 to i32 -%r179 = getelementptr i32, i32* %r148, i32 7 -store i32 %r177, i32* %r179 -%r180 = lshr i576 %r176, 32 +%r170 = mul i32 %r169, %r7 +%r171 = call i544 @mulPv512x32(i32* %r4, i32 %r170) +%r172 = zext i544 %r171 to i576 +%r173 = add i576 %r168, %r172 +%r174 = lshr i576 %r173, 32 +%r176 = getelementptr i32, i32* %r3, i32 14 +%r177 = load i32, i32* %r176 +%r178 = call i544 @mulPv512x32(i32* %r2, i32 %r177) +%r179 = zext i544 %r178 to i576 +%r180 = add i576 %r174, %r179 %r181 = trunc i576 %r180 to i32 -%r183 = getelementptr i32, i32* %r148, i32 8 -store i32 %r181, i32* %r183 -%r184 = lshr i576 %r180, 32 -%r185 = trunc i576 %r184 to i32 -%r187 = getelementptr i32, i32* %r148, i32 9 -store i32 %r185, i32* %r187 -%r188 = lshr i576 %r184, 32 -%r189 = trunc i576 %r188 to i32 -%r191 = getelementptr i32, i32* %r148, i32 10 -store i32 %r189, i32* %r191 -%r192 = lshr i576 %r188, 32 +%r182 = mul i32 %r181, %r7 +%r183 = call i544 @mulPv512x32(i32* %r4, i32 %r182) +%r184 = zext i544 %r183 to i576 +%r185 = add i576 %r180, %r184 +%r186 = lshr i576 %r185, 32 +%r188 = getelementptr i32, i32* %r3, i32 15 +%r189 = load i32, i32* %r188 +%r190 = call i544 @mulPv512x32(i32* %r2, i32 %r189) +%r191 = zext i544 %r190 to i576 +%r192 = add i576 %r186, %r191 %r193 = trunc i576 %r192 to i32 -%r195 = getelementptr i32, i32* %r148, i32 11 -store i32 %r193, i32* %r195 -%r196 = lshr i576 %r192, 32 -%r197 = trunc i576 %r196 to i32 -%r199 = getelementptr i32, i32* %r148, i32 12 -store i32 %r197, i32* %r199 -%r200 = lshr i576 %r196, 32 -%r201 = trunc i576 %r200 to i32 -%r203 = getelementptr i32, i32* %r148, i32 13 -store i32 %r201, i32* %r203 -%r204 = lshr i576 %r200, 32 -%r205 = trunc i576 %r204 to i32 -%r207 = getelementptr i32, i32* %r148, i32 14 -store i32 %r205, i32* %r207 -%r208 = lshr i576 %r204, 32 -%r209 = trunc i576 %r208 to i32 -%r211 = getelementptr i32, i32* %r148, i32 15 -store i32 %r209, i32* %r211 -%r212 = lshr i576 %r208, 32 -%r213 = trunc i576 %r212 to i32 -%r215 = getelementptr i32, i32* %r148, i32 16 -store i32 %r213, i32* %r215 -%r216 = lshr i576 %r212, 32 -%r217 = trunc i576 %r216 to i32 -%r219 = getelementptr i32, i32* %r148, i32 17 -store i32 %r217, i32* %r219 +%r194 = mul i32 %r193, %r7 +%r195 = call i544 @mulPv512x32(i32* %r4, i32 %r194) +%r196 = zext i544 %r195 to i576 +%r197 = add i576 %r192, %r196 +%r198 = lshr i576 %r197, 32 +%r199 = trunc i576 %r198 to i544 +%r200 = load i32, i32* %r4 +%r201 = zext i32 %r200 to i64 +%r203 = getelementptr i32, i32* %r4, i32 1 +%r204 = load i32, i32* %r203 +%r205 = zext i32 %r204 to i64 +%r206 = shl i64 %r205, 32 +%r207 = or i64 %r201, %r206 +%r208 = zext i64 %r207 to i96 +%r210 = getelementptr i32, i32* %r4, i32 2 +%r211 = load i32, i32* %r210 +%r212 = zext i32 %r211 to i96 +%r213 = shl i96 %r212, 64 +%r214 = or i96 %r208, %r213 +%r215 = zext i96 %r214 to i128 +%r217 = getelementptr i32, i32* %r4, i32 3 +%r218 = load i32, i32* %r217 +%r219 = zext i32 %r218 to i128 +%r220 = shl i128 %r219, 96 +%r221 = or i128 %r215, %r220 +%r222 = zext i128 %r221 to i160 +%r224 = getelementptr i32, i32* %r4, i32 4 +%r225 = load i32, i32* %r224 +%r226 = zext i32 %r225 to i160 +%r227 = shl i160 %r226, 128 +%r228 = or i160 %r222, %r227 +%r229 = zext i160 %r228 to i192 +%r231 = getelementptr i32, i32* %r4, i32 5 +%r232 = load i32, i32* %r231 +%r233 = zext i32 %r232 to i192 +%r234 = shl i192 %r233, 160 +%r235 = or i192 %r229, %r234 +%r236 = zext i192 %r235 to i224 +%r238 = getelementptr i32, i32* %r4, i32 6 +%r239 = load i32, i32* %r238 +%r240 = zext i32 %r239 to i224 +%r241 = shl i224 %r240, 192 +%r242 = or i224 %r236, %r241 +%r243 = zext i224 %r242 to i256 +%r245 = getelementptr i32, i32* %r4, i32 7 +%r246 = load i32, i32* %r245 +%r247 = zext i32 %r246 to i256 +%r248 = shl i256 %r247, 224 +%r249 = or i256 %r243, %r248 +%r250 = zext i256 %r249 to i288 +%r252 = getelementptr i32, i32* %r4, i32 8 +%r253 = load i32, i32* %r252 +%r254 = zext i32 %r253 to i288 +%r255 = shl i288 %r254, 256 +%r256 = or i288 %r250, %r255 +%r257 = zext i288 %r256 to i320 +%r259 = getelementptr i32, i32* %r4, i32 9 +%r260 = load i32, i32* %r259 +%r261 = zext i32 %r260 to i320 +%r262 = shl i320 %r261, 288 +%r263 = or i320 %r257, %r262 +%r264 = zext i320 %r263 to i352 +%r266 = getelementptr i32, i32* %r4, i32 10 +%r267 = load i32, i32* %r266 +%r268 = zext i32 %r267 to i352 +%r269 = shl i352 %r268, 320 +%r270 = or i352 %r264, %r269 +%r271 = zext i352 %r270 to i384 +%r273 = getelementptr i32, i32* %r4, i32 11 +%r274 = load i32, i32* %r273 +%r275 = zext i32 %r274 to i384 +%r276 = shl i384 %r275, 352 +%r277 = or i384 %r271, %r276 +%r278 = zext i384 %r277 to i416 +%r280 = getelementptr i32, i32* %r4, i32 12 +%r281 = load i32, i32* %r280 +%r282 = zext i32 %r281 to i416 +%r283 = shl i416 %r282, 384 +%r284 = or i416 %r278, %r283 +%r285 = zext i416 %r284 to i448 +%r287 = getelementptr i32, i32* %r4, i32 13 +%r288 = load i32, i32* %r287 +%r289 = zext i32 %r288 to i448 +%r290 = shl i448 %r289, 416 +%r291 = or i448 %r285, %r290 +%r292 = zext i448 %r291 to i480 +%r294 = getelementptr i32, i32* %r4, i32 14 +%r295 = load i32, i32* %r294 +%r296 = zext i32 %r295 to i480 +%r297 = shl i480 %r296, 448 +%r298 = or i480 %r292, %r297 +%r299 = zext i480 %r298 to i512 +%r301 = getelementptr i32, i32* %r4, i32 15 +%r302 = load i32, i32* %r301 +%r303 = zext i32 %r302 to i512 +%r304 = shl i512 %r303, 480 +%r305 = or i512 %r299, %r304 +%r306 = zext i512 %r305 to i544 +%r307 = sub i544 %r199, %r306 +%r308 = lshr i544 %r307, 512 +%r309 = trunc i544 %r308 to i1 +%r310 = select i1 %r309, i544 %r199, i544 %r307 +%r311 = trunc i544 %r310 to i512 +%r313 = getelementptr i32, i32* %r1, i32 0 +%r314 = trunc i512 %r311 to i32 +store i32 %r314, i32* %r313 +%r315 = lshr i512 %r311, 32 +%r317 = getelementptr i32, i32* %r1, i32 1 +%r318 = trunc i512 %r315 to i32 +store i32 %r318, i32* %r317 +%r319 = lshr i512 %r315, 32 +%r321 = getelementptr i32, i32* %r1, i32 2 +%r322 = trunc i512 %r319 to i32 +store i32 %r322, i32* %r321 +%r323 = lshr i512 %r319, 32 +%r325 = getelementptr i32, i32* %r1, i32 3 +%r326 = trunc i512 %r323 to i32 +store i32 %r326, i32* %r325 +%r327 = lshr i512 %r323, 32 +%r329 = getelementptr i32, i32* %r1, i32 4 +%r330 = trunc i512 %r327 to i32 +store i32 %r330, i32* %r329 +%r331 = lshr i512 %r327, 32 +%r333 = getelementptr i32, i32* %r1, i32 5 +%r334 = trunc i512 %r331 to i32 +store i32 %r334, i32* %r333 +%r335 = lshr i512 %r331, 32 +%r337 = getelementptr i32, i32* %r1, i32 6 +%r338 = trunc i512 %r335 to i32 +store i32 %r338, i32* %r337 +%r339 = lshr i512 %r335, 32 +%r341 = getelementptr i32, i32* %r1, i32 7 +%r342 = trunc i512 %r339 to i32 +store i32 %r342, i32* %r341 +%r343 = lshr i512 %r339, 32 +%r345 = getelementptr i32, i32* %r1, i32 8 +%r346 = trunc i512 %r343 to i32 +store i32 %r346, i32* %r345 +%r347 = lshr i512 %r343, 32 +%r349 = getelementptr i32, i32* %r1, i32 9 +%r350 = trunc i512 %r347 to i32 +store i32 %r350, i32* %r349 +%r351 = lshr i512 %r347, 32 +%r353 = getelementptr i32, i32* %r1, i32 10 +%r354 = trunc i512 %r351 to i32 +store i32 %r354, i32* %r353 +%r355 = lshr i512 %r351, 32 +%r357 = getelementptr i32, i32* %r1, i32 11 +%r358 = trunc i512 %r355 to i32 +store i32 %r358, i32* %r357 +%r359 = lshr i512 %r355, 32 +%r361 = getelementptr i32, i32* %r1, i32 12 +%r362 = trunc i512 %r359 to i32 +store i32 %r362, i32* %r361 +%r363 = lshr i512 %r359, 32 +%r365 = getelementptr i32, i32* %r1, i32 13 +%r366 = trunc i512 %r363 to i32 +store i32 %r366, i32* %r365 +%r367 = lshr i512 %r363, 32 +%r369 = getelementptr i32, i32* %r1, i32 14 +%r370 = trunc i512 %r367 to i32 +store i32 %r370, i32* %r369 +%r371 = lshr i512 %r367, 32 +%r373 = getelementptr i32, i32* %r1, i32 15 +%r374 = trunc i512 %r371 to i32 +store i32 %r374, i32* %r373 ret void } -define void @mcl_fp_mont17L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_montNF16L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) { %r6 = getelementptr i32, i32* %r4, i32 -1 %r7 = load i32, i32* %r6 -%r9 = getelementptr i32, i32* %r3, i32 0 -%r10 = load i32, i32* %r9 -%r11 = call i576 @mulPv544x32(i32* %r2, i32 %r10) -%r12 = zext i576 %r11 to i608 -%r13 = trunc i576 %r11 to i32 -%r14 = mul i32 %r13, %r7 -%r15 = call i576 @mulPv544x32(i32* %r4, i32 %r14) -%r16 = zext i576 %r15 to i608 -%r17 = add i608 %r12, %r16 -%r18 = lshr i608 %r17, 32 -%r20 = getelementptr i32, i32* %r3, i32 1 -%r21 = load i32, i32* %r20 -%r22 = call i576 @mulPv544x32(i32* %r2, i32 %r21) -%r23 = zext i576 %r22 to i608 -%r24 = add i608 %r18, %r23 -%r25 = trunc i608 %r24 to i32 -%r26 = mul i32 %r25, %r7 -%r27 = call i576 @mulPv544x32(i32* %r4, i32 %r26) -%r28 = zext i576 %r27 to i608 -%r29 = add i608 %r24, %r28 -%r30 = lshr i608 %r29, 32 -%r32 = getelementptr i32, i32* %r3, i32 2 -%r33 = load i32, i32* %r32 -%r34 = call i576 @mulPv544x32(i32* %r2, i32 %r33) -%r35 = zext i576 %r34 to i608 -%r36 = add i608 %r30, %r35 -%r37 = trunc i608 %r36 to i32 -%r38 = mul i32 %r37, %r7 -%r39 = call i576 @mulPv544x32(i32* %r4, i32 %r38) -%r40 = zext i576 %r39 to i608 -%r41 = add i608 %r36, %r40 -%r42 = lshr i608 %r41, 32 -%r44 = getelementptr i32, i32* %r3, i32 3 -%r45 = load i32, i32* %r44 -%r46 = call i576 @mulPv544x32(i32* %r2, i32 %r45) -%r47 = zext i576 %r46 to i608 -%r48 = add i608 %r42, %r47 -%r49 = trunc i608 %r48 to i32 -%r50 = mul i32 %r49, %r7 -%r51 = call i576 @mulPv544x32(i32* %r4, i32 %r50) -%r52 = zext i576 %r51 to i608 -%r53 = add i608 %r48, %r52 -%r54 = lshr i608 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 4 -%r57 = load i32, i32* %r56 -%r58 = call i576 @mulPv544x32(i32* %r2, i32 %r57) -%r59 = zext i576 %r58 to i608 -%r60 = add i608 %r54, %r59 -%r61 = trunc i608 %r60 to i32 -%r62 = mul i32 %r61, %r7 -%r63 = call i576 @mulPv544x32(i32* %r4, i32 %r62) -%r64 = zext i576 %r63 to i608 -%r65 = add i608 %r60, %r64 -%r66 = lshr i608 %r65, 32 -%r68 = getelementptr i32, i32* %r3, i32 5 -%r69 = load i32, i32* %r68 -%r70 = call i576 @mulPv544x32(i32* %r2, i32 %r69) -%r71 = zext i576 %r70 to i608 -%r72 = add i608 %r66, %r71 -%r73 = trunc i608 %r72 to i32 -%r74 = mul i32 %r73, %r7 -%r75 = call i576 @mulPv544x32(i32* %r4, i32 %r74) -%r76 = zext i576 %r75 to i608 -%r77 = add i608 %r72, %r76 -%r78 = lshr i608 %r77, 32 -%r80 = getelementptr i32, i32* %r3, i32 6 -%r81 = load i32, i32* %r80 -%r82 = call i576 @mulPv544x32(i32* %r2, i32 %r81) -%r83 = zext i576 %r82 to i608 -%r84 = add i608 %r78, %r83 -%r85 = trunc i608 %r84 to i32 -%r86 = mul i32 %r85, %r7 -%r87 = call i576 @mulPv544x32(i32* %r4, i32 %r86) -%r88 = zext i576 %r87 to i608 -%r89 = add i608 %r84, %r88 -%r90 = lshr i608 %r89, 32 -%r92 = getelementptr i32, i32* %r3, i32 7 -%r93 = load i32, i32* %r92 -%r94 = call i576 @mulPv544x32(i32* %r2, i32 %r93) -%r95 = zext i576 %r94 to i608 -%r96 = add i608 %r90, %r95 -%r97 = trunc i608 %r96 to i32 -%r98 = mul i32 %r97, %r7 -%r99 = call i576 @mulPv544x32(i32* %r4, i32 %r98) -%r100 = zext i576 %r99 to i608 -%r101 = add i608 %r96, %r100 -%r102 = lshr i608 %r101, 32 -%r104 = getelementptr i32, i32* %r3, i32 8 -%r105 = load i32, i32* %r104 -%r106 = call i576 @mulPv544x32(i32* %r2, i32 %r105) -%r107 = zext i576 %r106 to i608 -%r108 = add i608 %r102, %r107 -%r109 = trunc i608 %r108 to i32 -%r110 = mul i32 %r109, %r7 -%r111 = call i576 @mulPv544x32(i32* %r4, i32 %r110) -%r112 = zext i576 %r111 to i608 -%r113 = add i608 %r108, %r112 -%r114 = lshr i608 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 9 +%r8 = load i32, i32* %r3 +%r9 = call i544 @mulPv512x32(i32* %r2, i32 %r8) +%r10 = trunc i544 %r9 to i32 +%r11 = mul i32 %r10, %r7 +%r12 = call i544 @mulPv512x32(i32* %r4, i32 %r11) +%r13 = add i544 %r9, %r12 +%r14 = lshr i544 %r13, 32 +%r16 = getelementptr i32, i32* %r3, i32 1 +%r17 = load i32, i32* %r16 +%r18 = call i544 @mulPv512x32(i32* %r2, i32 %r17) +%r19 = add i544 %r14, %r18 +%r20 = trunc i544 %r19 to i32 +%r21 = mul i32 %r20, %r7 +%r22 = call i544 @mulPv512x32(i32* %r4, i32 %r21) +%r23 = add i544 %r19, %r22 +%r24 = lshr i544 %r23, 32 +%r26 = getelementptr i32, i32* %r3, i32 2 +%r27 = load i32, i32* %r26 +%r28 = call i544 @mulPv512x32(i32* %r2, i32 %r27) +%r29 = add i544 %r24, %r28 +%r30 = trunc i544 %r29 to i32 +%r31 = mul i32 %r30, %r7 +%r32 = call i544 @mulPv512x32(i32* %r4, i32 %r31) +%r33 = add i544 %r29, %r32 +%r34 = lshr i544 %r33, 32 +%r36 = getelementptr i32, i32* %r3, i32 3 +%r37 = load i32, i32* %r36 +%r38 = call i544 @mulPv512x32(i32* %r2, i32 %r37) +%r39 = add i544 %r34, %r38 +%r40 = trunc i544 %r39 to i32 +%r41 = mul i32 %r40, %r7 +%r42 = call i544 @mulPv512x32(i32* %r4, i32 %r41) +%r43 = add i544 %r39, %r42 +%r44 = lshr i544 %r43, 32 +%r46 = getelementptr i32, i32* %r3, i32 4 +%r47 = load i32, i32* %r46 +%r48 = call i544 @mulPv512x32(i32* %r2, i32 %r47) +%r49 = add i544 %r44, %r48 +%r50 = trunc i544 %r49 to i32 +%r51 = mul i32 %r50, %r7 +%r52 = call i544 @mulPv512x32(i32* %r4, i32 %r51) +%r53 = add i544 %r49, %r52 +%r54 = lshr i544 %r53, 32 +%r56 = getelementptr i32, i32* %r3, i32 5 +%r57 = load i32, i32* %r56 +%r58 = call i544 @mulPv512x32(i32* %r2, i32 %r57) +%r59 = add i544 %r54, %r58 +%r60 = trunc i544 %r59 to i32 +%r61 = mul i32 %r60, %r7 +%r62 = call i544 @mulPv512x32(i32* %r4, i32 %r61) +%r63 = add i544 %r59, %r62 +%r64 = lshr i544 %r63, 32 +%r66 = getelementptr i32, i32* %r3, i32 6 +%r67 = load i32, i32* %r66 +%r68 = call i544 @mulPv512x32(i32* %r2, i32 %r67) +%r69 = add i544 %r64, %r68 +%r70 = trunc i544 %r69 to i32 +%r71 = mul i32 %r70, %r7 +%r72 = call i544 @mulPv512x32(i32* %r4, i32 %r71) +%r73 = add i544 %r69, %r72 +%r74 = lshr i544 %r73, 32 +%r76 = getelementptr i32, i32* %r3, i32 7 +%r77 = load i32, i32* %r76 +%r78 = call i544 @mulPv512x32(i32* %r2, i32 %r77) +%r79 = add i544 %r74, %r78 +%r80 = trunc i544 %r79 to i32 +%r81 = mul i32 %r80, %r7 +%r82 = call i544 @mulPv512x32(i32* %r4, i32 %r81) +%r83 = add i544 %r79, %r82 +%r84 = lshr i544 %r83, 32 +%r86 = getelementptr i32, i32* %r3, i32 8 +%r87 = load i32, i32* %r86 +%r88 = call i544 @mulPv512x32(i32* %r2, i32 %r87) +%r89 = add i544 %r84, %r88 +%r90 = trunc i544 %r89 to i32 +%r91 = mul i32 %r90, %r7 +%r92 = call i544 @mulPv512x32(i32* %r4, i32 %r91) +%r93 = add i544 %r89, %r92 +%r94 = lshr i544 %r93, 32 +%r96 = getelementptr i32, i32* %r3, i32 9 +%r97 = load i32, i32* %r96 +%r98 = call i544 @mulPv512x32(i32* %r2, i32 %r97) +%r99 = add i544 %r94, %r98 +%r100 = trunc i544 %r99 to i32 +%r101 = mul i32 %r100, %r7 +%r102 = call i544 @mulPv512x32(i32* %r4, i32 %r101) +%r103 = add i544 %r99, %r102 +%r104 = lshr i544 %r103, 32 +%r106 = getelementptr i32, i32* %r3, i32 10 +%r107 = load i32, i32* %r106 +%r108 = call i544 @mulPv512x32(i32* %r2, i32 %r107) +%r109 = add i544 %r104, %r108 +%r110 = trunc i544 %r109 to i32 +%r111 = mul i32 %r110, %r7 +%r112 = call i544 @mulPv512x32(i32* %r4, i32 %r111) +%r113 = add i544 %r109, %r112 +%r114 = lshr i544 %r113, 32 +%r116 = getelementptr i32, i32* %r3, i32 11 %r117 = load i32, i32* %r116 -%r118 = call i576 @mulPv544x32(i32* %r2, i32 %r117) -%r119 = zext i576 %r118 to i608 -%r120 = add i608 %r114, %r119 -%r121 = trunc i608 %r120 to i32 -%r122 = mul i32 %r121, %r7 -%r123 = call i576 @mulPv544x32(i32* %r4, i32 %r122) -%r124 = zext i576 %r123 to i608 -%r125 = add i608 %r120, %r124 -%r126 = lshr i608 %r125, 32 -%r128 = getelementptr i32, i32* %r3, i32 10 -%r129 = load i32, i32* %r128 -%r130 = call i576 @mulPv544x32(i32* %r2, i32 %r129) -%r131 = zext i576 %r130 to i608 -%r132 = add i608 %r126, %r131 -%r133 = trunc i608 %r132 to i32 -%r134 = mul i32 %r133, %r7 -%r135 = call i576 @mulPv544x32(i32* %r4, i32 %r134) -%r136 = zext i576 %r135 to i608 -%r137 = add i608 %r132, %r136 -%r138 = lshr i608 %r137, 32 -%r140 = getelementptr i32, i32* %r3, i32 11 -%r141 = load i32, i32* %r140 -%r142 = call i576 @mulPv544x32(i32* %r2, i32 %r141) -%r143 = zext i576 %r142 to i608 -%r144 = add i608 %r138, %r143 -%r145 = trunc i608 %r144 to i32 -%r146 = mul i32 %r145, %r7 -%r147 = call i576 @mulPv544x32(i32* %r4, i32 %r146) -%r148 = zext i576 %r147 to i608 -%r149 = add i608 %r144, %r148 -%r150 = lshr i608 %r149, 32 -%r152 = getelementptr i32, i32* %r3, i32 12 -%r153 = load i32, i32* %r152 -%r154 = call i576 @mulPv544x32(i32* %r2, i32 %r153) -%r155 = zext i576 %r154 to i608 -%r156 = add i608 %r150, %r155 -%r157 = trunc i608 %r156 to i32 -%r158 = mul i32 %r157, %r7 -%r159 = call i576 @mulPv544x32(i32* %r4, i32 %r158) -%r160 = zext i576 %r159 to i608 -%r161 = add i608 %r156, %r160 -%r162 = lshr i608 %r161, 32 -%r164 = getelementptr i32, i32* %r3, i32 13 -%r165 = load i32, i32* %r164 -%r166 = call i576 @mulPv544x32(i32* %r2, i32 %r165) -%r167 = zext i576 %r166 to i608 -%r168 = add i608 %r162, %r167 -%r169 = trunc i608 %r168 to i32 -%r170 = mul i32 %r169, %r7 -%r171 = call i576 @mulPv544x32(i32* %r4, i32 %r170) -%r172 = zext i576 %r171 to i608 -%r173 = add i608 %r168, %r172 -%r174 = lshr i608 %r173, 32 -%r176 = getelementptr i32, i32* %r3, i32 14 +%r118 = call i544 @mulPv512x32(i32* %r2, i32 %r117) +%r119 = add i544 %r114, %r118 +%r120 = trunc i544 %r119 to i32 +%r121 = mul i32 %r120, %r7 +%r122 = call i544 @mulPv512x32(i32* %r4, i32 %r121) +%r123 = add i544 %r119, %r122 +%r124 = lshr i544 %r123, 32 +%r126 = getelementptr i32, i32* %r3, i32 12 +%r127 = load i32, i32* %r126 +%r128 = call i544 @mulPv512x32(i32* %r2, i32 %r127) +%r129 = add i544 %r124, %r128 +%r130 = trunc i544 %r129 to i32 +%r131 = mul i32 %r130, %r7 +%r132 = call i544 @mulPv512x32(i32* %r4, i32 %r131) +%r133 = add i544 %r129, %r132 +%r134 = lshr i544 %r133, 32 +%r136 = getelementptr i32, i32* %r3, i32 13 +%r137 = load i32, i32* %r136 +%r138 = call i544 @mulPv512x32(i32* %r2, i32 %r137) +%r139 = add i544 %r134, %r138 +%r140 = trunc i544 %r139 to i32 +%r141 = mul i32 %r140, %r7 +%r142 = call i544 @mulPv512x32(i32* %r4, i32 %r141) +%r143 = add i544 %r139, %r142 +%r144 = lshr i544 %r143, 32 +%r146 = getelementptr i32, i32* %r3, i32 14 +%r147 = load i32, i32* %r146 +%r148 = call i544 @mulPv512x32(i32* %r2, i32 %r147) +%r149 = add i544 %r144, %r148 +%r150 = trunc i544 %r149 to i32 +%r151 = mul i32 %r150, %r7 +%r152 = call i544 @mulPv512x32(i32* %r4, i32 %r151) +%r153 = add i544 %r149, %r152 +%r154 = lshr i544 %r153, 32 +%r156 = getelementptr i32, i32* %r3, i32 15 +%r157 = load i32, i32* %r156 +%r158 = call i544 @mulPv512x32(i32* %r2, i32 %r157) +%r159 = add i544 %r154, %r158 +%r160 = trunc i544 %r159 to i32 +%r161 = mul i32 %r160, %r7 +%r162 = call i544 @mulPv512x32(i32* %r4, i32 %r161) +%r163 = add i544 %r159, %r162 +%r164 = lshr i544 %r163, 32 +%r165 = trunc i544 %r164 to i512 +%r166 = load i32, i32* %r4 +%r167 = zext i32 %r166 to i64 +%r169 = getelementptr i32, i32* %r4, i32 1 +%r170 = load i32, i32* %r169 +%r171 = zext i32 %r170 to i64 +%r172 = shl i64 %r171, 32 +%r173 = or i64 %r167, %r172 +%r174 = zext i64 %r173 to i96 +%r176 = getelementptr i32, i32* %r4, i32 2 %r177 = load i32, i32* %r176 -%r178 = call i576 @mulPv544x32(i32* %r2, i32 %r177) -%r179 = zext i576 %r178 to i608 -%r180 = add i608 %r174, %r179 -%r181 = trunc i608 %r180 to i32 -%r182 = mul i32 %r181, %r7 -%r183 = call i576 @mulPv544x32(i32* %r4, i32 %r182) -%r184 = zext i576 %r183 to i608 -%r185 = add i608 %r180, %r184 -%r186 = lshr i608 %r185, 32 -%r188 = getelementptr i32, i32* %r3, i32 15 -%r189 = load i32, i32* %r188 -%r190 = call i576 @mulPv544x32(i32* %r2, i32 %r189) -%r191 = zext i576 %r190 to i608 -%r192 = add i608 %r186, %r191 -%r193 = trunc i608 %r192 to i32 -%r194 = mul i32 %r193, %r7 -%r195 = call i576 @mulPv544x32(i32* %r4, i32 %r194) -%r196 = zext i576 %r195 to i608 -%r197 = add i608 %r192, %r196 -%r198 = lshr i608 %r197, 32 -%r200 = getelementptr i32, i32* %r3, i32 16 -%r201 = load i32, i32* %r200 -%r202 = call i576 @mulPv544x32(i32* %r2, i32 %r201) -%r203 = zext i576 %r202 to i608 -%r204 = add i608 %r198, %r203 -%r205 = trunc i608 %r204 to i32 -%r206 = mul i32 %r205, %r7 -%r207 = call i576 @mulPv544x32(i32* %r4, i32 %r206) -%r208 = zext i576 %r207 to i608 -%r209 = add i608 %r204, %r208 -%r210 = lshr i608 %r209, 32 -%r211 = trunc i608 %r210 to i576 -%r212 = load i32, i32* %r4 -%r213 = zext i32 %r212 to i64 -%r215 = getelementptr i32, i32* %r4, i32 1 -%r216 = load i32, i32* %r215 -%r217 = zext i32 %r216 to i64 -%r218 = shl i64 %r217, 32 -%r219 = or i64 %r213, %r218 -%r220 = zext i64 %r219 to i96 -%r222 = getelementptr i32, i32* %r4, i32 2 -%r223 = load i32, i32* %r222 -%r224 = zext i32 %r223 to i96 -%r225 = shl i96 %r224, 64 -%r226 = or i96 %r220, %r225 -%r227 = zext i96 %r226 to i128 -%r229 = getelementptr i32, i32* %r4, i32 3 -%r230 = load i32, i32* %r229 -%r231 = zext i32 %r230 to i128 -%r232 = shl i128 %r231, 96 -%r233 = or i128 %r227, %r232 -%r234 = zext i128 %r233 to i160 -%r236 = getelementptr i32, i32* %r4, i32 4 -%r237 = load i32, i32* %r236 -%r238 = zext i32 %r237 to i160 -%r239 = shl i160 %r238, 128 -%r240 = or i160 %r234, %r239 -%r241 = zext i160 %r240 to i192 -%r243 = getelementptr i32, i32* %r4, i32 5 -%r244 = load i32, i32* %r243 -%r245 = zext i32 %r244 to i192 -%r246 = shl i192 %r245, 160 -%r247 = or i192 %r241, %r246 -%r248 = zext i192 %r247 to i224 -%r250 = getelementptr i32, i32* %r4, i32 6 -%r251 = load i32, i32* %r250 -%r252 = zext i32 %r251 to i224 -%r253 = shl i224 %r252, 192 -%r254 = or i224 %r248, %r253 -%r255 = zext i224 %r254 to i256 -%r257 = getelementptr i32, i32* %r4, i32 7 -%r258 = load i32, i32* %r257 -%r259 = zext i32 %r258 to i256 -%r260 = shl i256 %r259, 224 -%r261 = or i256 %r255, %r260 -%r262 = zext i256 %r261 to i288 -%r264 = getelementptr i32, i32* %r4, i32 8 -%r265 = load i32, i32* %r264 -%r266 = zext i32 %r265 to i288 -%r267 = shl i288 %r266, 256 -%r268 = or i288 %r262, %r267 -%r269 = zext i288 %r268 to i320 -%r271 = getelementptr i32, i32* %r4, i32 9 -%r272 = load i32, i32* %r271 -%r273 = zext i32 %r272 to i320 -%r274 = shl i320 %r273, 288 -%r275 = or i320 %r269, %r274 -%r276 = zext i320 %r275 to i352 -%r278 = getelementptr i32, i32* %r4, i32 10 -%r279 = load i32, i32* %r278 -%r280 = zext i32 %r279 to i352 -%r281 = shl i352 %r280, 320 -%r282 = or i352 %r276, %r281 -%r283 = zext i352 %r282 to i384 -%r285 = getelementptr i32, i32* %r4, i32 11 -%r286 = load i32, i32* %r285 -%r287 = zext i32 %r286 to i384 -%r288 = shl i384 %r287, 352 -%r289 = or i384 %r283, %r288 -%r290 = zext i384 %r289 to i416 -%r292 = getelementptr i32, i32* %r4, i32 12 -%r293 = load i32, i32* %r292 -%r294 = zext i32 %r293 to i416 -%r295 = shl i416 %r294, 384 -%r296 = or i416 %r290, %r295 -%r297 = zext i416 %r296 to i448 -%r299 = getelementptr i32, i32* %r4, i32 13 -%r300 = load i32, i32* %r299 -%r301 = zext i32 %r300 to i448 -%r302 = shl i448 %r301, 416 -%r303 = or i448 %r297, %r302 -%r304 = zext i448 %r303 to i480 -%r306 = getelementptr i32, i32* %r4, i32 14 -%r307 = load i32, i32* %r306 -%r308 = zext i32 %r307 to i480 -%r309 = shl i480 %r308, 448 -%r310 = or i480 %r304, %r309 -%r311 = zext i480 %r310 to i512 -%r313 = getelementptr i32, i32* %r4, i32 15 -%r314 = load i32, i32* %r313 -%r315 = zext i32 %r314 to i512 -%r316 = shl i512 %r315, 480 -%r317 = or i512 %r311, %r316 -%r318 = zext i512 %r317 to i544 -%r320 = getelementptr i32, i32* %r4, i32 16 -%r321 = load i32, i32* %r320 -%r322 = zext i32 %r321 to i544 -%r323 = shl i544 %r322, 512 -%r324 = or i544 %r318, %r323 -%r325 = zext i544 %r324 to i576 -%r326 = sub i576 %r211, %r325 -%r327 = lshr i576 %r326, 544 -%r328 = trunc i576 %r327 to i1 -%r329 = select i1 %r328, i576 %r211, i576 %r326 -%r330 = trunc i576 %r329 to i544 -%r331 = trunc i544 %r330 to i32 -%r333 = getelementptr i32, i32* %r1, i32 0 -store i32 %r331, i32* %r333 -%r334 = lshr i544 %r330, 32 -%r335 = trunc i544 %r334 to i32 -%r337 = getelementptr i32, i32* %r1, i32 1 -store i32 %r335, i32* %r337 -%r338 = lshr i544 %r334, 32 -%r339 = trunc i544 %r338 to i32 -%r341 = getelementptr i32, i32* %r1, i32 2 -store i32 %r339, i32* %r341 -%r342 = lshr i544 %r338, 32 -%r343 = trunc i544 %r342 to i32 -%r345 = getelementptr i32, i32* %r1, i32 3 -store i32 %r343, i32* %r345 -%r346 = lshr i544 %r342, 32 -%r347 = trunc i544 %r346 to i32 -%r349 = getelementptr i32, i32* %r1, i32 4 -store i32 %r347, i32* %r349 -%r350 = lshr i544 %r346, 32 -%r351 = trunc i544 %r350 to i32 -%r353 = getelementptr i32, i32* %r1, i32 5 -store i32 %r351, i32* %r353 -%r354 = lshr i544 %r350, 32 -%r355 = trunc i544 %r354 to i32 -%r357 = getelementptr i32, i32* %r1, i32 6 -store i32 %r355, i32* %r357 -%r358 = lshr i544 %r354, 32 -%r359 = trunc i544 %r358 to i32 -%r361 = getelementptr i32, i32* %r1, i32 7 -store i32 %r359, i32* %r361 -%r362 = lshr i544 %r358, 32 -%r363 = trunc i544 %r362 to i32 -%r365 = getelementptr i32, i32* %r1, i32 8 -store i32 %r363, i32* %r365 -%r366 = lshr i544 %r362, 32 -%r367 = trunc i544 %r366 to i32 -%r369 = getelementptr i32, i32* %r1, i32 9 -store i32 %r367, i32* %r369 -%r370 = lshr i544 %r366, 32 -%r371 = trunc i544 %r370 to i32 -%r373 = getelementptr i32, i32* %r1, i32 10 -store i32 %r371, i32* %r373 -%r374 = lshr i544 %r370, 32 -%r375 = trunc i544 %r374 to i32 -%r377 = getelementptr i32, i32* %r1, i32 11 -store i32 %r375, i32* %r377 -%r378 = lshr i544 %r374, 32 -%r379 = trunc i544 %r378 to i32 -%r381 = getelementptr i32, i32* %r1, i32 12 -store i32 %r379, i32* %r381 -%r382 = lshr i544 %r378, 32 -%r383 = trunc i544 %r382 to i32 -%r385 = getelementptr i32, i32* %r1, i32 13 -store i32 %r383, i32* %r385 -%r386 = lshr i544 %r382, 32 -%r387 = trunc i544 %r386 to i32 -%r389 = getelementptr i32, i32* %r1, i32 14 -store i32 %r387, i32* %r389 -%r390 = lshr i544 %r386, 32 -%r391 = trunc i544 %r390 to i32 -%r393 = getelementptr i32, i32* %r1, i32 15 -store i32 %r391, i32* %r393 -%r394 = lshr i544 %r390, 32 -%r395 = trunc i544 %r394 to i32 -%r397 = getelementptr i32, i32* %r1, i32 16 -store i32 %r395, i32* %r397 +%r178 = zext i32 %r177 to i96 +%r179 = shl i96 %r178, 64 +%r180 = or i96 %r174, %r179 +%r181 = zext i96 %r180 to i128 +%r183 = getelementptr i32, i32* %r4, i32 3 +%r184 = load i32, i32* %r183 +%r185 = zext i32 %r184 to i128 +%r186 = shl i128 %r185, 96 +%r187 = or i128 %r181, %r186 +%r188 = zext i128 %r187 to i160 +%r190 = getelementptr i32, i32* %r4, i32 4 +%r191 = load i32, i32* %r190 +%r192 = zext i32 %r191 to i160 +%r193 = shl i160 %r192, 128 +%r194 = or i160 %r188, %r193 +%r195 = zext i160 %r194 to i192 +%r197 = getelementptr i32, i32* %r4, i32 5 +%r198 = load i32, i32* %r197 +%r199 = zext i32 %r198 to i192 +%r200 = shl i192 %r199, 160 +%r201 = or i192 %r195, %r200 +%r202 = zext i192 %r201 to i224 +%r204 = getelementptr i32, i32* %r4, i32 6 +%r205 = load i32, i32* %r204 +%r206 = zext i32 %r205 to i224 +%r207 = shl i224 %r206, 192 +%r208 = or i224 %r202, %r207 +%r209 = zext i224 %r208 to i256 +%r211 = getelementptr i32, i32* %r4, i32 7 +%r212 = load i32, i32* %r211 +%r213 = zext i32 %r212 to i256 +%r214 = shl i256 %r213, 224 +%r215 = or i256 %r209, %r214 +%r216 = zext i256 %r215 to i288 +%r218 = getelementptr i32, i32* %r4, i32 8 +%r219 = load i32, i32* %r218 +%r220 = zext i32 %r219 to i288 +%r221 = shl i288 %r220, 256 +%r222 = or i288 %r216, %r221 +%r223 = zext i288 %r222 to i320 +%r225 = getelementptr i32, i32* %r4, i32 9 +%r226 = load i32, i32* %r225 +%r227 = zext i32 %r226 to i320 +%r228 = shl i320 %r227, 288 +%r229 = or i320 %r223, %r228 +%r230 = zext i320 %r229 to i352 +%r232 = getelementptr i32, i32* %r4, i32 10 +%r233 = load i32, i32* %r232 +%r234 = zext i32 %r233 to i352 +%r235 = shl i352 %r234, 320 +%r236 = or i352 %r230, %r235 +%r237 = zext i352 %r236 to i384 +%r239 = getelementptr i32, i32* %r4, i32 11 +%r240 = load i32, i32* %r239 +%r241 = zext i32 %r240 to i384 +%r242 = shl i384 %r241, 352 +%r243 = or i384 %r237, %r242 +%r244 = zext i384 %r243 to i416 +%r246 = getelementptr i32, i32* %r4, i32 12 +%r247 = load i32, i32* %r246 +%r248 = zext i32 %r247 to i416 +%r249 = shl i416 %r248, 384 +%r250 = or i416 %r244, %r249 +%r251 = zext i416 %r250 to i448 +%r253 = getelementptr i32, i32* %r4, i32 13 +%r254 = load i32, i32* %r253 +%r255 = zext i32 %r254 to i448 +%r256 = shl i448 %r255, 416 +%r257 = or i448 %r251, %r256 +%r258 = zext i448 %r257 to i480 +%r260 = getelementptr i32, i32* %r4, i32 14 +%r261 = load i32, i32* %r260 +%r262 = zext i32 %r261 to i480 +%r263 = shl i480 %r262, 448 +%r264 = or i480 %r258, %r263 +%r265 = zext i480 %r264 to i512 +%r267 = getelementptr i32, i32* %r4, i32 15 +%r268 = load i32, i32* %r267 +%r269 = zext i32 %r268 to i512 +%r270 = shl i512 %r269, 480 +%r271 = or i512 %r265, %r270 +%r272 = sub i512 %r165, %r271 +%r273 = lshr i512 %r272, 511 +%r274 = trunc i512 %r273 to i1 +%r275 = select i1 %r274, i512 %r165, i512 %r272 +%r277 = getelementptr i32, i32* %r1, i32 0 +%r278 = trunc i512 %r275 to i32 +store i32 %r278, i32* %r277 +%r279 = lshr i512 %r275, 32 +%r281 = getelementptr i32, i32* %r1, i32 1 +%r282 = trunc i512 %r279 to i32 +store i32 %r282, i32* %r281 +%r283 = lshr i512 %r279, 32 +%r285 = getelementptr i32, i32* %r1, i32 2 +%r286 = trunc i512 %r283 to i32 +store i32 %r286, i32* %r285 +%r287 = lshr i512 %r283, 32 +%r289 = getelementptr i32, i32* %r1, i32 3 +%r290 = trunc i512 %r287 to i32 +store i32 %r290, i32* %r289 +%r291 = lshr i512 %r287, 32 +%r293 = getelementptr i32, i32* %r1, i32 4 +%r294 = trunc i512 %r291 to i32 +store i32 %r294, i32* %r293 +%r295 = lshr i512 %r291, 32 +%r297 = getelementptr i32, i32* %r1, i32 5 +%r298 = trunc i512 %r295 to i32 +store i32 %r298, i32* %r297 +%r299 = lshr i512 %r295, 32 +%r301 = getelementptr i32, i32* %r1, i32 6 +%r302 = trunc i512 %r299 to i32 +store i32 %r302, i32* %r301 +%r303 = lshr i512 %r299, 32 +%r305 = getelementptr i32, i32* %r1, i32 7 +%r306 = trunc i512 %r303 to i32 +store i32 %r306, i32* %r305 +%r307 = lshr i512 %r303, 32 +%r309 = getelementptr i32, i32* %r1, i32 8 +%r310 = trunc i512 %r307 to i32 +store i32 %r310, i32* %r309 +%r311 = lshr i512 %r307, 32 +%r313 = getelementptr i32, i32* %r1, i32 9 +%r314 = trunc i512 %r311 to i32 +store i32 %r314, i32* %r313 +%r315 = lshr i512 %r311, 32 +%r317 = getelementptr i32, i32* %r1, i32 10 +%r318 = trunc i512 %r315 to i32 +store i32 %r318, i32* %r317 +%r319 = lshr i512 %r315, 32 +%r321 = getelementptr i32, i32* %r1, i32 11 +%r322 = trunc i512 %r319 to i32 +store i32 %r322, i32* %r321 +%r323 = lshr i512 %r319, 32 +%r325 = getelementptr i32, i32* %r1, i32 12 +%r326 = trunc i512 %r323 to i32 +store i32 %r326, i32* %r325 +%r327 = lshr i512 %r323, 32 +%r329 = getelementptr i32, i32* %r1, i32 13 +%r330 = trunc i512 %r327 to i32 +store i32 %r330, i32* %r329 +%r331 = lshr i512 %r327, 32 +%r333 = getelementptr i32, i32* %r1, i32 14 +%r334 = trunc i512 %r331 to i32 +store i32 %r334, i32* %r333 +%r335 = lshr i512 %r331, 32 +%r337 = getelementptr i32, i32* %r1, i32 15 +%r338 = trunc i512 %r335 to i32 +store i32 %r338, i32* %r337 ret void } -define void @mcl_fp_montNF17L(i32* %r1, i32* %r2, i32* %r3, i32* %r4) +define void @mcl_fp_montRed16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { -%r6 = getelementptr i32, i32* %r4, i32 -1 -%r7 = load i32, i32* %r6 -%r8 = load i32, i32* %r3 -%r9 = call i576 @mulPv544x32(i32* %r2, i32 %r8) -%r10 = trunc i576 %r9 to i32 -%r11 = mul i32 %r10, %r7 -%r12 = call i576 @mulPv544x32(i32* %r4, i32 %r11) -%r13 = add i576 %r9, %r12 -%r14 = lshr i576 %r13, 32 -%r16 = getelementptr i32, i32* %r3, i32 1 -%r17 = load i32, i32* %r16 -%r18 = call i576 @mulPv544x32(i32* %r2, i32 %r17) -%r19 = add i576 %r14, %r18 -%r20 = trunc i576 %r19 to i32 -%r21 = mul i32 %r20, %r7 -%r22 = call i576 @mulPv544x32(i32* %r4, i32 %r21) -%r23 = add i576 %r19, %r22 -%r24 = lshr i576 %r23, 32 -%r26 = getelementptr i32, i32* %r3, i32 2 -%r27 = load i32, i32* %r26 -%r28 = call i576 @mulPv544x32(i32* %r2, i32 %r27) -%r29 = add i576 %r24, %r28 -%r30 = trunc i576 %r29 to i32 -%r31 = mul i32 %r30, %r7 -%r32 = call i576 @mulPv544x32(i32* %r4, i32 %r31) -%r33 = add i576 %r29, %r32 -%r34 = lshr i576 %r33, 32 -%r36 = getelementptr i32, i32* %r3, i32 3 -%r37 = load i32, i32* %r36 -%r38 = call i576 @mulPv544x32(i32* %r2, i32 %r37) -%r39 = add i576 %r34, %r38 -%r40 = trunc i576 %r39 to i32 -%r41 = mul i32 %r40, %r7 -%r42 = call i576 @mulPv544x32(i32* %r4, i32 %r41) -%r43 = add i576 %r39, %r42 -%r44 = lshr i576 %r43, 32 -%r46 = getelementptr i32, i32* %r3, i32 4 -%r47 = load i32, i32* %r46 -%r48 = call i576 @mulPv544x32(i32* %r2, i32 %r47) -%r49 = add i576 %r44, %r48 -%r50 = trunc i576 %r49 to i32 -%r51 = mul i32 %r50, %r7 -%r52 = call i576 @mulPv544x32(i32* %r4, i32 %r51) -%r53 = add i576 %r49, %r52 -%r54 = lshr i576 %r53, 32 -%r56 = getelementptr i32, i32* %r3, i32 5 -%r57 = load i32, i32* %r56 -%r58 = call i576 @mulPv544x32(i32* %r2, i32 %r57) -%r59 = add i576 %r54, %r58 -%r60 = trunc i576 %r59 to i32 -%r61 = mul i32 %r60, %r7 -%r62 = call i576 @mulPv544x32(i32* %r4, i32 %r61) -%r63 = add i576 %r59, %r62 -%r64 = lshr i576 %r63, 32 -%r66 = getelementptr i32, i32* %r3, i32 6 +%r5 = getelementptr i32, i32* %r3, i32 -1 +%r6 = load i32, i32* %r5 +%r7 = load i32, i32* %r3 +%r8 = zext i32 %r7 to i64 +%r10 = getelementptr i32, i32* %r3, i32 1 +%r11 = load i32, i32* %r10 +%r12 = zext i32 %r11 to i64 +%r13 = shl i64 %r12, 32 +%r14 = or i64 %r8, %r13 +%r15 = zext i64 %r14 to i96 +%r17 = getelementptr i32, i32* %r3, i32 2 +%r18 = load i32, i32* %r17 +%r19 = zext i32 %r18 to i96 +%r20 = shl i96 %r19, 64 +%r21 = or i96 %r15, %r20 +%r22 = zext i96 %r21 to i128 +%r24 = getelementptr i32, i32* %r3, i32 3 +%r25 = load i32, i32* %r24 +%r26 = zext i32 %r25 to i128 +%r27 = shl i128 %r26, 96 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i160 +%r31 = getelementptr i32, i32* %r3, i32 4 +%r32 = load i32, i32* %r31 +%r33 = zext i32 %r32 to i160 +%r34 = shl i160 %r33, 128 +%r35 = or i160 %r29, %r34 +%r36 = zext i160 %r35 to i192 +%r38 = getelementptr i32, i32* %r3, i32 5 +%r39 = load i32, i32* %r38 +%r40 = zext i32 %r39 to i192 +%r41 = shl i192 %r40, 160 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i224 +%r45 = getelementptr i32, i32* %r3, i32 6 +%r46 = load i32, i32* %r45 +%r47 = zext i32 %r46 to i224 +%r48 = shl i224 %r47, 192 +%r49 = or i224 %r43, %r48 +%r50 = zext i224 %r49 to i256 +%r52 = getelementptr i32, i32* %r3, i32 7 +%r53 = load i32, i32* %r52 +%r54 = zext i32 %r53 to i256 +%r55 = shl i256 %r54, 224 +%r56 = or i256 %r50, %r55 +%r57 = zext i256 %r56 to i288 +%r59 = getelementptr i32, i32* %r3, i32 8 +%r60 = load i32, i32* %r59 +%r61 = zext i32 %r60 to i288 +%r62 = shl i288 %r61, 256 +%r63 = or i288 %r57, %r62 +%r64 = zext i288 %r63 to i320 +%r66 = getelementptr i32, i32* %r3, i32 9 %r67 = load i32, i32* %r66 -%r68 = call i576 @mulPv544x32(i32* %r2, i32 %r67) -%r69 = add i576 %r64, %r68 -%r70 = trunc i576 %r69 to i32 -%r71 = mul i32 %r70, %r7 -%r72 = call i576 @mulPv544x32(i32* %r4, i32 %r71) -%r73 = add i576 %r69, %r72 -%r74 = lshr i576 %r73, 32 -%r76 = getelementptr i32, i32* %r3, i32 7 -%r77 = load i32, i32* %r76 -%r78 = call i576 @mulPv544x32(i32* %r2, i32 %r77) -%r79 = add i576 %r74, %r78 -%r80 = trunc i576 %r79 to i32 -%r81 = mul i32 %r80, %r7 -%r82 = call i576 @mulPv544x32(i32* %r4, i32 %r81) -%r83 = add i576 %r79, %r82 -%r84 = lshr i576 %r83, 32 -%r86 = getelementptr i32, i32* %r3, i32 8 -%r87 = load i32, i32* %r86 -%r88 = call i576 @mulPv544x32(i32* %r2, i32 %r87) -%r89 = add i576 %r84, %r88 -%r90 = trunc i576 %r89 to i32 -%r91 = mul i32 %r90, %r7 -%r92 = call i576 @mulPv544x32(i32* %r4, i32 %r91) -%r93 = add i576 %r89, %r92 -%r94 = lshr i576 %r93, 32 -%r96 = getelementptr i32, i32* %r3, i32 9 -%r97 = load i32, i32* %r96 -%r98 = call i576 @mulPv544x32(i32* %r2, i32 %r97) -%r99 = add i576 %r94, %r98 -%r100 = trunc i576 %r99 to i32 -%r101 = mul i32 %r100, %r7 -%r102 = call i576 @mulPv544x32(i32* %r4, i32 %r101) -%r103 = add i576 %r99, %r102 -%r104 = lshr i576 %r103, 32 -%r106 = getelementptr i32, i32* %r3, i32 10 -%r107 = load i32, i32* %r106 -%r108 = call i576 @mulPv544x32(i32* %r2, i32 %r107) -%r109 = add i576 %r104, %r108 -%r110 = trunc i576 %r109 to i32 -%r111 = mul i32 %r110, %r7 -%r112 = call i576 @mulPv544x32(i32* %r4, i32 %r111) -%r113 = add i576 %r109, %r112 -%r114 = lshr i576 %r113, 32 -%r116 = getelementptr i32, i32* %r3, i32 11 +%r68 = zext i32 %r67 to i320 +%r69 = shl i320 %r68, 288 +%r70 = or i320 %r64, %r69 +%r71 = zext i320 %r70 to i352 +%r73 = getelementptr i32, i32* %r3, i32 10 +%r74 = load i32, i32* %r73 +%r75 = zext i32 %r74 to i352 +%r76 = shl i352 %r75, 320 +%r77 = or i352 %r71, %r76 +%r78 = zext i352 %r77 to i384 +%r80 = getelementptr i32, i32* %r3, i32 11 +%r81 = load i32, i32* %r80 +%r82 = zext i32 %r81 to i384 +%r83 = shl i384 %r82, 352 +%r84 = or i384 %r78, %r83 +%r85 = zext i384 %r84 to i416 +%r87 = getelementptr i32, i32* %r3, i32 12 +%r88 = load i32, i32* %r87 +%r89 = zext i32 %r88 to i416 +%r90 = shl i416 %r89, 384 +%r91 = or i416 %r85, %r90 +%r92 = zext i416 %r91 to i448 +%r94 = getelementptr i32, i32* %r3, i32 13 +%r95 = load i32, i32* %r94 +%r96 = zext i32 %r95 to i448 +%r97 = shl i448 %r96, 416 +%r98 = or i448 %r92, %r97 +%r99 = zext i448 %r98 to i480 +%r101 = getelementptr i32, i32* %r3, i32 14 +%r102 = load i32, i32* %r101 +%r103 = zext i32 %r102 to i480 +%r104 = shl i480 %r103, 448 +%r105 = or i480 %r99, %r104 +%r106 = zext i480 %r105 to i512 +%r108 = getelementptr i32, i32* %r3, i32 15 +%r109 = load i32, i32* %r108 +%r110 = zext i32 %r109 to i512 +%r111 = shl i512 %r110, 480 +%r112 = or i512 %r106, %r111 +%r113 = load i32, i32* %r2 +%r114 = zext i32 %r113 to i64 +%r116 = getelementptr i32, i32* %r2, i32 1 %r117 = load i32, i32* %r116 -%r118 = call i576 @mulPv544x32(i32* %r2, i32 %r117) -%r119 = add i576 %r114, %r118 -%r120 = trunc i576 %r119 to i32 -%r121 = mul i32 %r120, %r7 -%r122 = call i576 @mulPv544x32(i32* %r4, i32 %r121) -%r123 = add i576 %r119, %r122 -%r124 = lshr i576 %r123, 32 -%r126 = getelementptr i32, i32* %r3, i32 12 -%r127 = load i32, i32* %r126 -%r128 = call i576 @mulPv544x32(i32* %r2, i32 %r127) -%r129 = add i576 %r124, %r128 -%r130 = trunc i576 %r129 to i32 -%r131 = mul i32 %r130, %r7 -%r132 = call i576 @mulPv544x32(i32* %r4, i32 %r131) -%r133 = add i576 %r129, %r132 -%r134 = lshr i576 %r133, 32 -%r136 = getelementptr i32, i32* %r3, i32 13 -%r137 = load i32, i32* %r136 -%r138 = call i576 @mulPv544x32(i32* %r2, i32 %r137) -%r139 = add i576 %r134, %r138 -%r140 = trunc i576 %r139 to i32 -%r141 = mul i32 %r140, %r7 -%r142 = call i576 @mulPv544x32(i32* %r4, i32 %r141) -%r143 = add i576 %r139, %r142 -%r144 = lshr i576 %r143, 32 -%r146 = getelementptr i32, i32* %r3, i32 14 -%r147 = load i32, i32* %r146 -%r148 = call i576 @mulPv544x32(i32* %r2, i32 %r147) -%r149 = add i576 %r144, %r148 -%r150 = trunc i576 %r149 to i32 -%r151 = mul i32 %r150, %r7 -%r152 = call i576 @mulPv544x32(i32* %r4, i32 %r151) -%r153 = add i576 %r149, %r152 -%r154 = lshr i576 %r153, 32 -%r156 = getelementptr i32, i32* %r3, i32 15 -%r157 = load i32, i32* %r156 -%r158 = call i576 @mulPv544x32(i32* %r2, i32 %r157) -%r159 = add i576 %r154, %r158 -%r160 = trunc i576 %r159 to i32 -%r161 = mul i32 %r160, %r7 -%r162 = call i576 @mulPv544x32(i32* %r4, i32 %r161) -%r163 = add i576 %r159, %r162 -%r164 = lshr i576 %r163, 32 -%r166 = getelementptr i32, i32* %r3, i32 16 -%r167 = load i32, i32* %r166 -%r168 = call i576 @mulPv544x32(i32* %r2, i32 %r167) -%r169 = add i576 %r164, %r168 -%r170 = trunc i576 %r169 to i32 -%r171 = mul i32 %r170, %r7 -%r172 = call i576 @mulPv544x32(i32* %r4, i32 %r171) -%r173 = add i576 %r169, %r172 -%r174 = lshr i576 %r173, 32 -%r175 = trunc i576 %r174 to i544 -%r176 = load i32, i32* %r4 -%r177 = zext i32 %r176 to i64 -%r179 = getelementptr i32, i32* %r4, i32 1 +%r118 = zext i32 %r117 to i64 +%r119 = shl i64 %r118, 32 +%r120 = or i64 %r114, %r119 +%r121 = zext i64 %r120 to i96 +%r123 = getelementptr i32, i32* %r2, i32 2 +%r124 = load i32, i32* %r123 +%r125 = zext i32 %r124 to i96 +%r126 = shl i96 %r125, 64 +%r127 = or i96 %r121, %r126 +%r128 = zext i96 %r127 to i128 +%r130 = getelementptr i32, i32* %r2, i32 3 +%r131 = load i32, i32* %r130 +%r132 = zext i32 %r131 to i128 +%r133 = shl i128 %r132, 96 +%r134 = or i128 %r128, %r133 +%r135 = zext i128 %r134 to i160 +%r137 = getelementptr i32, i32* %r2, i32 4 +%r138 = load i32, i32* %r137 +%r139 = zext i32 %r138 to i160 +%r140 = shl i160 %r139, 128 +%r141 = or i160 %r135, %r140 +%r142 = zext i160 %r141 to i192 +%r144 = getelementptr i32, i32* %r2, i32 5 +%r145 = load i32, i32* %r144 +%r146 = zext i32 %r145 to i192 +%r147 = shl i192 %r146, 160 +%r148 = or i192 %r142, %r147 +%r149 = zext i192 %r148 to i224 +%r151 = getelementptr i32, i32* %r2, i32 6 +%r152 = load i32, i32* %r151 +%r153 = zext i32 %r152 to i224 +%r154 = shl i224 %r153, 192 +%r155 = or i224 %r149, %r154 +%r156 = zext i224 %r155 to i256 +%r158 = getelementptr i32, i32* %r2, i32 7 +%r159 = load i32, i32* %r158 +%r160 = zext i32 %r159 to i256 +%r161 = shl i256 %r160, 224 +%r162 = or i256 %r156, %r161 +%r163 = zext i256 %r162 to i288 +%r165 = getelementptr i32, i32* %r2, i32 8 +%r166 = load i32, i32* %r165 +%r167 = zext i32 %r166 to i288 +%r168 = shl i288 %r167, 256 +%r169 = or i288 %r163, %r168 +%r170 = zext i288 %r169 to i320 +%r172 = getelementptr i32, i32* %r2, i32 9 +%r173 = load i32, i32* %r172 +%r174 = zext i32 %r173 to i320 +%r175 = shl i320 %r174, 288 +%r176 = or i320 %r170, %r175 +%r177 = zext i320 %r176 to i352 +%r179 = getelementptr i32, i32* %r2, i32 10 %r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i64 -%r182 = shl i64 %r181, 32 -%r183 = or i64 %r177, %r182 -%r184 = zext i64 %r183 to i96 -%r186 = getelementptr i32, i32* %r4, i32 2 +%r181 = zext i32 %r180 to i352 +%r182 = shl i352 %r181, 320 +%r183 = or i352 %r177, %r182 +%r184 = zext i352 %r183 to i384 +%r186 = getelementptr i32, i32* %r2, i32 11 %r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i96 -%r189 = shl i96 %r188, 64 -%r190 = or i96 %r184, %r189 -%r191 = zext i96 %r190 to i128 -%r193 = getelementptr i32, i32* %r4, i32 3 +%r188 = zext i32 %r187 to i384 +%r189 = shl i384 %r188, 352 +%r190 = or i384 %r184, %r189 +%r191 = zext i384 %r190 to i416 +%r193 = getelementptr i32, i32* %r2, i32 12 %r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i128 -%r196 = shl i128 %r195, 96 -%r197 = or i128 %r191, %r196 -%r198 = zext i128 %r197 to i160 -%r200 = getelementptr i32, i32* %r4, i32 4 +%r195 = zext i32 %r194 to i416 +%r196 = shl i416 %r195, 384 +%r197 = or i416 %r191, %r196 +%r198 = zext i416 %r197 to i448 +%r200 = getelementptr i32, i32* %r2, i32 13 %r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i160 -%r203 = shl i160 %r202, 128 -%r204 = or i160 %r198, %r203 -%r205 = zext i160 %r204 to i192 -%r207 = getelementptr i32, i32* %r4, i32 5 +%r202 = zext i32 %r201 to i448 +%r203 = shl i448 %r202, 416 +%r204 = or i448 %r198, %r203 +%r205 = zext i448 %r204 to i480 +%r207 = getelementptr i32, i32* %r2, i32 14 %r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i192 -%r210 = shl i192 %r209, 160 -%r211 = or i192 %r205, %r210 -%r212 = zext i192 %r211 to i224 -%r214 = getelementptr i32, i32* %r4, i32 6 +%r209 = zext i32 %r208 to i480 +%r210 = shl i480 %r209, 448 +%r211 = or i480 %r205, %r210 +%r212 = zext i480 %r211 to i512 +%r214 = getelementptr i32, i32* %r2, i32 15 %r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i224 -%r217 = shl i224 %r216, 192 -%r218 = or i224 %r212, %r217 -%r219 = zext i224 %r218 to i256 -%r221 = getelementptr i32, i32* %r4, i32 7 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i256 -%r224 = shl i256 %r223, 224 -%r225 = or i256 %r219, %r224 -%r226 = zext i256 %r225 to i288 -%r228 = getelementptr i32, i32* %r4, i32 8 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i288 -%r231 = shl i288 %r230, 256 -%r232 = or i288 %r226, %r231 -%r233 = zext i288 %r232 to i320 -%r235 = getelementptr i32, i32* %r4, i32 9 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i320 -%r238 = shl i320 %r237, 288 -%r239 = or i320 %r233, %r238 -%r240 = zext i320 %r239 to i352 -%r242 = getelementptr i32, i32* %r4, i32 10 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i352 -%r245 = shl i352 %r244, 320 -%r246 = or i352 %r240, %r245 -%r247 = zext i352 %r246 to i384 -%r249 = getelementptr i32, i32* %r4, i32 11 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i384 -%r252 = shl i384 %r251, 352 -%r253 = or i384 %r247, %r252 -%r254 = zext i384 %r253 to i416 -%r256 = getelementptr i32, i32* %r4, i32 12 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i416 -%r259 = shl i416 %r258, 384 -%r260 = or i416 %r254, %r259 -%r261 = zext i416 %r260 to i448 -%r263 = getelementptr i32, i32* %r4, i32 13 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i448 -%r266 = shl i448 %r265, 416 -%r267 = or i448 %r261, %r266 -%r268 = zext i448 %r267 to i480 -%r270 = getelementptr i32, i32* %r4, i32 14 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i480 -%r273 = shl i480 %r272, 448 -%r274 = or i480 %r268, %r273 -%r275 = zext i480 %r274 to i512 -%r277 = getelementptr i32, i32* %r4, i32 15 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i512 -%r280 = shl i512 %r279, 480 -%r281 = or i512 %r275, %r280 -%r282 = zext i512 %r281 to i544 -%r284 = getelementptr i32, i32* %r4, i32 16 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i544 -%r287 = shl i544 %r286, 512 -%r288 = or i544 %r282, %r287 -%r289 = sub i544 %r175, %r288 -%r290 = lshr i544 %r289, 543 -%r291 = trunc i544 %r290 to i1 -%r292 = select i1 %r291, i544 %r175, i544 %r289 -%r293 = trunc i544 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 0 -store i32 %r293, i32* %r295 -%r296 = lshr i544 %r292, 32 -%r297 = trunc i544 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 1 -store i32 %r297, i32* %r299 -%r300 = lshr i544 %r296, 32 -%r301 = trunc i544 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 2 -store i32 %r301, i32* %r303 -%r304 = lshr i544 %r300, 32 -%r305 = trunc i544 %r304 to i32 -%r307 = getelementptr i32, i32* %r1, i32 3 -store i32 %r305, i32* %r307 -%r308 = lshr i544 %r304, 32 -%r309 = trunc i544 %r308 to i32 -%r311 = getelementptr i32, i32* %r1, i32 4 -store i32 %r309, i32* %r311 -%r312 = lshr i544 %r308, 32 -%r313 = trunc i544 %r312 to i32 -%r315 = getelementptr i32, i32* %r1, i32 5 -store i32 %r313, i32* %r315 -%r316 = lshr i544 %r312, 32 -%r317 = trunc i544 %r316 to i32 -%r319 = getelementptr i32, i32* %r1, i32 6 -store i32 %r317, i32* %r319 -%r320 = lshr i544 %r316, 32 -%r321 = trunc i544 %r320 to i32 -%r323 = getelementptr i32, i32* %r1, i32 7 -store i32 %r321, i32* %r323 -%r324 = lshr i544 %r320, 32 -%r325 = trunc i544 %r324 to i32 -%r327 = getelementptr i32, i32* %r1, i32 8 -store i32 %r325, i32* %r327 -%r328 = lshr i544 %r324, 32 -%r329 = trunc i544 %r328 to i32 -%r331 = getelementptr i32, i32* %r1, i32 9 -store i32 %r329, i32* %r331 -%r332 = lshr i544 %r328, 32 -%r333 = trunc i544 %r332 to i32 -%r335 = getelementptr i32, i32* %r1, i32 10 -store i32 %r333, i32* %r335 -%r336 = lshr i544 %r332, 32 -%r337 = trunc i544 %r336 to i32 -%r339 = getelementptr i32, i32* %r1, i32 11 -store i32 %r337, i32* %r339 -%r340 = lshr i544 %r336, 32 -%r341 = trunc i544 %r340 to i32 -%r343 = getelementptr i32, i32* %r1, i32 12 -store i32 %r341, i32* %r343 -%r344 = lshr i544 %r340, 32 -%r345 = trunc i544 %r344 to i32 -%r347 = getelementptr i32, i32* %r1, i32 13 -store i32 %r345, i32* %r347 -%r348 = lshr i544 %r344, 32 -%r349 = trunc i544 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 14 -store i32 %r349, i32* %r351 -%r352 = lshr i544 %r348, 32 -%r353 = trunc i544 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 15 -store i32 %r353, i32* %r355 -%r356 = lshr i544 %r352, 32 -%r357 = trunc i544 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 16 -store i32 %r357, i32* %r359 -ret void -} -define void @mcl_fp_montRed17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) +%r216 = zext i32 %r215 to i512 +%r217 = shl i512 %r216, 480 +%r218 = or i512 %r212, %r217 +%r219 = trunc i512 %r218 to i32 +%r220 = mul i32 %r219, %r6 +%r221 = call i544 @mulPv512x32(i32* %r3, i32 %r220) +%r223 = getelementptr i32, i32* %r2, i32 16 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i544 +%r226 = shl i544 %r225, 512 +%r227 = zext i512 %r218 to i544 +%r228 = or i544 %r226, %r227 +%r229 = zext i544 %r228 to i576 +%r230 = zext i544 %r221 to i576 +%r231 = add i576 %r229, %r230 +%r232 = lshr i576 %r231, 32 +%r233 = trunc i576 %r232 to i544 +%r234 = lshr i544 %r233, 512 +%r235 = trunc i544 %r234 to i32 +%r236 = trunc i544 %r233 to i512 +%r237 = trunc i512 %r236 to i32 +%r238 = mul i32 %r237, %r6 +%r239 = call i544 @mulPv512x32(i32* %r3, i32 %r238) +%r240 = zext i32 %r235 to i544 +%r241 = shl i544 %r240, 512 +%r242 = add i544 %r239, %r241 +%r244 = getelementptr i32, i32* %r2, i32 17 +%r245 = load i32, i32* %r244 +%r246 = zext i32 %r245 to i544 +%r247 = shl i544 %r246, 512 +%r248 = zext i512 %r236 to i544 +%r249 = or i544 %r247, %r248 +%r250 = zext i544 %r249 to i576 +%r251 = zext i544 %r242 to i576 +%r252 = add i576 %r250, %r251 +%r253 = lshr i576 %r252, 32 +%r254 = trunc i576 %r253 to i544 +%r255 = lshr i544 %r254, 512 +%r256 = trunc i544 %r255 to i32 +%r257 = trunc i544 %r254 to i512 +%r258 = trunc i512 %r257 to i32 +%r259 = mul i32 %r258, %r6 +%r260 = call i544 @mulPv512x32(i32* %r3, i32 %r259) +%r261 = zext i32 %r256 to i544 +%r262 = shl i544 %r261, 512 +%r263 = add i544 %r260, %r262 +%r265 = getelementptr i32, i32* %r2, i32 18 +%r266 = load i32, i32* %r265 +%r267 = zext i32 %r266 to i544 +%r268 = shl i544 %r267, 512 +%r269 = zext i512 %r257 to i544 +%r270 = or i544 %r268, %r269 +%r271 = zext i544 %r270 to i576 +%r272 = zext i544 %r263 to i576 +%r273 = add i576 %r271, %r272 +%r274 = lshr i576 %r273, 32 +%r275 = trunc i576 %r274 to i544 +%r276 = lshr i544 %r275, 512 +%r277 = trunc i544 %r276 to i32 +%r278 = trunc i544 %r275 to i512 +%r279 = trunc i512 %r278 to i32 +%r280 = mul i32 %r279, %r6 +%r281 = call i544 @mulPv512x32(i32* %r3, i32 %r280) +%r282 = zext i32 %r277 to i544 +%r283 = shl i544 %r282, 512 +%r284 = add i544 %r281, %r283 +%r286 = getelementptr i32, i32* %r2, i32 19 +%r287 = load i32, i32* %r286 +%r288 = zext i32 %r287 to i544 +%r289 = shl i544 %r288, 512 +%r290 = zext i512 %r278 to i544 +%r291 = or i544 %r289, %r290 +%r292 = zext i544 %r291 to i576 +%r293 = zext i544 %r284 to i576 +%r294 = add i576 %r292, %r293 +%r295 = lshr i576 %r294, 32 +%r296 = trunc i576 %r295 to i544 +%r297 = lshr i544 %r296, 512 +%r298 = trunc i544 %r297 to i32 +%r299 = trunc i544 %r296 to i512 +%r300 = trunc i512 %r299 to i32 +%r301 = mul i32 %r300, %r6 +%r302 = call i544 @mulPv512x32(i32* %r3, i32 %r301) +%r303 = zext i32 %r298 to i544 +%r304 = shl i544 %r303, 512 +%r305 = add i544 %r302, %r304 +%r307 = getelementptr i32, i32* %r2, i32 20 +%r308 = load i32, i32* %r307 +%r309 = zext i32 %r308 to i544 +%r310 = shl i544 %r309, 512 +%r311 = zext i512 %r299 to i544 +%r312 = or i544 %r310, %r311 +%r313 = zext i544 %r312 to i576 +%r314 = zext i544 %r305 to i576 +%r315 = add i576 %r313, %r314 +%r316 = lshr i576 %r315, 32 +%r317 = trunc i576 %r316 to i544 +%r318 = lshr i544 %r317, 512 +%r319 = trunc i544 %r318 to i32 +%r320 = trunc i544 %r317 to i512 +%r321 = trunc i512 %r320 to i32 +%r322 = mul i32 %r321, %r6 +%r323 = call i544 @mulPv512x32(i32* %r3, i32 %r322) +%r324 = zext i32 %r319 to i544 +%r325 = shl i544 %r324, 512 +%r326 = add i544 %r323, %r325 +%r328 = getelementptr i32, i32* %r2, i32 21 +%r329 = load i32, i32* %r328 +%r330 = zext i32 %r329 to i544 +%r331 = shl i544 %r330, 512 +%r332 = zext i512 %r320 to i544 +%r333 = or i544 %r331, %r332 +%r334 = zext i544 %r333 to i576 +%r335 = zext i544 %r326 to i576 +%r336 = add i576 %r334, %r335 +%r337 = lshr i576 %r336, 32 +%r338 = trunc i576 %r337 to i544 +%r339 = lshr i544 %r338, 512 +%r340 = trunc i544 %r339 to i32 +%r341 = trunc i544 %r338 to i512 +%r342 = trunc i512 %r341 to i32 +%r343 = mul i32 %r342, %r6 +%r344 = call i544 @mulPv512x32(i32* %r3, i32 %r343) +%r345 = zext i32 %r340 to i544 +%r346 = shl i544 %r345, 512 +%r347 = add i544 %r344, %r346 +%r349 = getelementptr i32, i32* %r2, i32 22 +%r350 = load i32, i32* %r349 +%r351 = zext i32 %r350 to i544 +%r352 = shl i544 %r351, 512 +%r353 = zext i512 %r341 to i544 +%r354 = or i544 %r352, %r353 +%r355 = zext i544 %r354 to i576 +%r356 = zext i544 %r347 to i576 +%r357 = add i576 %r355, %r356 +%r358 = lshr i576 %r357, 32 +%r359 = trunc i576 %r358 to i544 +%r360 = lshr i544 %r359, 512 +%r361 = trunc i544 %r360 to i32 +%r362 = trunc i544 %r359 to i512 +%r363 = trunc i512 %r362 to i32 +%r364 = mul i32 %r363, %r6 +%r365 = call i544 @mulPv512x32(i32* %r3, i32 %r364) +%r366 = zext i32 %r361 to i544 +%r367 = shl i544 %r366, 512 +%r368 = add i544 %r365, %r367 +%r370 = getelementptr i32, i32* %r2, i32 23 +%r371 = load i32, i32* %r370 +%r372 = zext i32 %r371 to i544 +%r373 = shl i544 %r372, 512 +%r374 = zext i512 %r362 to i544 +%r375 = or i544 %r373, %r374 +%r376 = zext i544 %r375 to i576 +%r377 = zext i544 %r368 to i576 +%r378 = add i576 %r376, %r377 +%r379 = lshr i576 %r378, 32 +%r380 = trunc i576 %r379 to i544 +%r381 = lshr i544 %r380, 512 +%r382 = trunc i544 %r381 to i32 +%r383 = trunc i544 %r380 to i512 +%r384 = trunc i512 %r383 to i32 +%r385 = mul i32 %r384, %r6 +%r386 = call i544 @mulPv512x32(i32* %r3, i32 %r385) +%r387 = zext i32 %r382 to i544 +%r388 = shl i544 %r387, 512 +%r389 = add i544 %r386, %r388 +%r391 = getelementptr i32, i32* %r2, i32 24 +%r392 = load i32, i32* %r391 +%r393 = zext i32 %r392 to i544 +%r394 = shl i544 %r393, 512 +%r395 = zext i512 %r383 to i544 +%r396 = or i544 %r394, %r395 +%r397 = zext i544 %r396 to i576 +%r398 = zext i544 %r389 to i576 +%r399 = add i576 %r397, %r398 +%r400 = lshr i576 %r399, 32 +%r401 = trunc i576 %r400 to i544 +%r402 = lshr i544 %r401, 512 +%r403 = trunc i544 %r402 to i32 +%r404 = trunc i544 %r401 to i512 +%r405 = trunc i512 %r404 to i32 +%r406 = mul i32 %r405, %r6 +%r407 = call i544 @mulPv512x32(i32* %r3, i32 %r406) +%r408 = zext i32 %r403 to i544 +%r409 = shl i544 %r408, 512 +%r410 = add i544 %r407, %r409 +%r412 = getelementptr i32, i32* %r2, i32 25 +%r413 = load i32, i32* %r412 +%r414 = zext i32 %r413 to i544 +%r415 = shl i544 %r414, 512 +%r416 = zext i512 %r404 to i544 +%r417 = or i544 %r415, %r416 +%r418 = zext i544 %r417 to i576 +%r419 = zext i544 %r410 to i576 +%r420 = add i576 %r418, %r419 +%r421 = lshr i576 %r420, 32 +%r422 = trunc i576 %r421 to i544 +%r423 = lshr i544 %r422, 512 +%r424 = trunc i544 %r423 to i32 +%r425 = trunc i544 %r422 to i512 +%r426 = trunc i512 %r425 to i32 +%r427 = mul i32 %r426, %r6 +%r428 = call i544 @mulPv512x32(i32* %r3, i32 %r427) +%r429 = zext i32 %r424 to i544 +%r430 = shl i544 %r429, 512 +%r431 = add i544 %r428, %r430 +%r433 = getelementptr i32, i32* %r2, i32 26 +%r434 = load i32, i32* %r433 +%r435 = zext i32 %r434 to i544 +%r436 = shl i544 %r435, 512 +%r437 = zext i512 %r425 to i544 +%r438 = or i544 %r436, %r437 +%r439 = zext i544 %r438 to i576 +%r440 = zext i544 %r431 to i576 +%r441 = add i576 %r439, %r440 +%r442 = lshr i576 %r441, 32 +%r443 = trunc i576 %r442 to i544 +%r444 = lshr i544 %r443, 512 +%r445 = trunc i544 %r444 to i32 +%r446 = trunc i544 %r443 to i512 +%r447 = trunc i512 %r446 to i32 +%r448 = mul i32 %r447, %r6 +%r449 = call i544 @mulPv512x32(i32* %r3, i32 %r448) +%r450 = zext i32 %r445 to i544 +%r451 = shl i544 %r450, 512 +%r452 = add i544 %r449, %r451 +%r454 = getelementptr i32, i32* %r2, i32 27 +%r455 = load i32, i32* %r454 +%r456 = zext i32 %r455 to i544 +%r457 = shl i544 %r456, 512 +%r458 = zext i512 %r446 to i544 +%r459 = or i544 %r457, %r458 +%r460 = zext i544 %r459 to i576 +%r461 = zext i544 %r452 to i576 +%r462 = add i576 %r460, %r461 +%r463 = lshr i576 %r462, 32 +%r464 = trunc i576 %r463 to i544 +%r465 = lshr i544 %r464, 512 +%r466 = trunc i544 %r465 to i32 +%r467 = trunc i544 %r464 to i512 +%r468 = trunc i512 %r467 to i32 +%r469 = mul i32 %r468, %r6 +%r470 = call i544 @mulPv512x32(i32* %r3, i32 %r469) +%r471 = zext i32 %r466 to i544 +%r472 = shl i544 %r471, 512 +%r473 = add i544 %r470, %r472 +%r475 = getelementptr i32, i32* %r2, i32 28 +%r476 = load i32, i32* %r475 +%r477 = zext i32 %r476 to i544 +%r478 = shl i544 %r477, 512 +%r479 = zext i512 %r467 to i544 +%r480 = or i544 %r478, %r479 +%r481 = zext i544 %r480 to i576 +%r482 = zext i544 %r473 to i576 +%r483 = add i576 %r481, %r482 +%r484 = lshr i576 %r483, 32 +%r485 = trunc i576 %r484 to i544 +%r486 = lshr i544 %r485, 512 +%r487 = trunc i544 %r486 to i32 +%r488 = trunc i544 %r485 to i512 +%r489 = trunc i512 %r488 to i32 +%r490 = mul i32 %r489, %r6 +%r491 = call i544 @mulPv512x32(i32* %r3, i32 %r490) +%r492 = zext i32 %r487 to i544 +%r493 = shl i544 %r492, 512 +%r494 = add i544 %r491, %r493 +%r496 = getelementptr i32, i32* %r2, i32 29 +%r497 = load i32, i32* %r496 +%r498 = zext i32 %r497 to i544 +%r499 = shl i544 %r498, 512 +%r500 = zext i512 %r488 to i544 +%r501 = or i544 %r499, %r500 +%r502 = zext i544 %r501 to i576 +%r503 = zext i544 %r494 to i576 +%r504 = add i576 %r502, %r503 +%r505 = lshr i576 %r504, 32 +%r506 = trunc i576 %r505 to i544 +%r507 = lshr i544 %r506, 512 +%r508 = trunc i544 %r507 to i32 +%r509 = trunc i544 %r506 to i512 +%r510 = trunc i512 %r509 to i32 +%r511 = mul i32 %r510, %r6 +%r512 = call i544 @mulPv512x32(i32* %r3, i32 %r511) +%r513 = zext i32 %r508 to i544 +%r514 = shl i544 %r513, 512 +%r515 = add i544 %r512, %r514 +%r517 = getelementptr i32, i32* %r2, i32 30 +%r518 = load i32, i32* %r517 +%r519 = zext i32 %r518 to i544 +%r520 = shl i544 %r519, 512 +%r521 = zext i512 %r509 to i544 +%r522 = or i544 %r520, %r521 +%r523 = zext i544 %r522 to i576 +%r524 = zext i544 %r515 to i576 +%r525 = add i576 %r523, %r524 +%r526 = lshr i576 %r525, 32 +%r527 = trunc i576 %r526 to i544 +%r528 = lshr i544 %r527, 512 +%r529 = trunc i544 %r528 to i32 +%r530 = trunc i544 %r527 to i512 +%r531 = trunc i512 %r530 to i32 +%r532 = mul i32 %r531, %r6 +%r533 = call i544 @mulPv512x32(i32* %r3, i32 %r532) +%r534 = zext i32 %r529 to i544 +%r535 = shl i544 %r534, 512 +%r536 = add i544 %r533, %r535 +%r538 = getelementptr i32, i32* %r2, i32 31 +%r539 = load i32, i32* %r538 +%r540 = zext i32 %r539 to i544 +%r541 = shl i544 %r540, 512 +%r542 = zext i512 %r530 to i544 +%r543 = or i544 %r541, %r542 +%r544 = zext i544 %r543 to i576 +%r545 = zext i544 %r536 to i576 +%r546 = add i576 %r544, %r545 +%r547 = lshr i576 %r546, 32 +%r548 = trunc i576 %r547 to i544 +%r549 = lshr i544 %r548, 512 +%r550 = trunc i544 %r549 to i32 +%r551 = trunc i544 %r548 to i512 +%r552 = zext i512 %r112 to i544 +%r553 = zext i512 %r551 to i544 +%r554 = sub i544 %r553, %r552 +%r555 = lshr i544 %r554, 512 +%r556 = trunc i544 %r555 to i1 +%r557 = select i1 %r556, i544 %r553, i544 %r554 +%r558 = trunc i544 %r557 to i512 +%r560 = getelementptr i32, i32* %r1, i32 0 +%r561 = trunc i512 %r558 to i32 +store i32 %r561, i32* %r560 +%r562 = lshr i512 %r558, 32 +%r564 = getelementptr i32, i32* %r1, i32 1 +%r565 = trunc i512 %r562 to i32 +store i32 %r565, i32* %r564 +%r566 = lshr i512 %r562, 32 +%r568 = getelementptr i32, i32* %r1, i32 2 +%r569 = trunc i512 %r566 to i32 +store i32 %r569, i32* %r568 +%r570 = lshr i512 %r566, 32 +%r572 = getelementptr i32, i32* %r1, i32 3 +%r573 = trunc i512 %r570 to i32 +store i32 %r573, i32* %r572 +%r574 = lshr i512 %r570, 32 +%r576 = getelementptr i32, i32* %r1, i32 4 +%r577 = trunc i512 %r574 to i32 +store i32 %r577, i32* %r576 +%r578 = lshr i512 %r574, 32 +%r580 = getelementptr i32, i32* %r1, i32 5 +%r581 = trunc i512 %r578 to i32 +store i32 %r581, i32* %r580 +%r582 = lshr i512 %r578, 32 +%r584 = getelementptr i32, i32* %r1, i32 6 +%r585 = trunc i512 %r582 to i32 +store i32 %r585, i32* %r584 +%r586 = lshr i512 %r582, 32 +%r588 = getelementptr i32, i32* %r1, i32 7 +%r589 = trunc i512 %r586 to i32 +store i32 %r589, i32* %r588 +%r590 = lshr i512 %r586, 32 +%r592 = getelementptr i32, i32* %r1, i32 8 +%r593 = trunc i512 %r590 to i32 +store i32 %r593, i32* %r592 +%r594 = lshr i512 %r590, 32 +%r596 = getelementptr i32, i32* %r1, i32 9 +%r597 = trunc i512 %r594 to i32 +store i32 %r597, i32* %r596 +%r598 = lshr i512 %r594, 32 +%r600 = getelementptr i32, i32* %r1, i32 10 +%r601 = trunc i512 %r598 to i32 +store i32 %r601, i32* %r600 +%r602 = lshr i512 %r598, 32 +%r604 = getelementptr i32, i32* %r1, i32 11 +%r605 = trunc i512 %r602 to i32 +store i32 %r605, i32* %r604 +%r606 = lshr i512 %r602, 32 +%r608 = getelementptr i32, i32* %r1, i32 12 +%r609 = trunc i512 %r606 to i32 +store i32 %r609, i32* %r608 +%r610 = lshr i512 %r606, 32 +%r612 = getelementptr i32, i32* %r1, i32 13 +%r613 = trunc i512 %r610 to i32 +store i32 %r613, i32* %r612 +%r614 = lshr i512 %r610, 32 +%r616 = getelementptr i32, i32* %r1, i32 14 +%r617 = trunc i512 %r614 to i32 +store i32 %r617, i32* %r616 +%r618 = lshr i512 %r614, 32 +%r620 = getelementptr i32, i32* %r1, i32 15 +%r621 = trunc i512 %r618 to i32 +store i32 %r621, i32* %r620 +ret void +} +define void @mcl_fp_montRedNF16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3) { %r5 = getelementptr i32, i32* %r3, i32 -1 %r6 = load i32, i32* %r5 @@ -50235,407 +16584,484 @@ define void @mcl_fp_montRed17L(i32* noalias %r1, i32* noalias %r2, i32* noalia %r110 = zext i32 %r109 to i512 %r111 = shl i512 %r110, 480 %r112 = or i512 %r106, %r111 -%r113 = zext i512 %r112 to i544 -%r115 = getelementptr i32, i32* %r3, i32 16 -%r116 = load i32, i32* %r115 -%r117 = zext i32 %r116 to i544 -%r118 = shl i544 %r117, 512 -%r119 = or i544 %r113, %r118 -%r120 = load i32, i32* %r2 -%r121 = zext i32 %r120 to i64 -%r123 = getelementptr i32, i32* %r2, i32 1 +%r113 = load i32, i32* %r2 +%r114 = zext i32 %r113 to i64 +%r116 = getelementptr i32, i32* %r2, i32 1 +%r117 = load i32, i32* %r116 +%r118 = zext i32 %r117 to i64 +%r119 = shl i64 %r118, 32 +%r120 = or i64 %r114, %r119 +%r121 = zext i64 %r120 to i96 +%r123 = getelementptr i32, i32* %r2, i32 2 %r124 = load i32, i32* %r123 -%r125 = zext i32 %r124 to i64 -%r126 = shl i64 %r125, 32 -%r127 = or i64 %r121, %r126 -%r128 = zext i64 %r127 to i96 -%r130 = getelementptr i32, i32* %r2, i32 2 +%r125 = zext i32 %r124 to i96 +%r126 = shl i96 %r125, 64 +%r127 = or i96 %r121, %r126 +%r128 = zext i96 %r127 to i128 +%r130 = getelementptr i32, i32* %r2, i32 3 %r131 = load i32, i32* %r130 -%r132 = zext i32 %r131 to i96 -%r133 = shl i96 %r132, 64 -%r134 = or i96 %r128, %r133 -%r135 = zext i96 %r134 to i128 -%r137 = getelementptr i32, i32* %r2, i32 3 +%r132 = zext i32 %r131 to i128 +%r133 = shl i128 %r132, 96 +%r134 = or i128 %r128, %r133 +%r135 = zext i128 %r134 to i160 +%r137 = getelementptr i32, i32* %r2, i32 4 %r138 = load i32, i32* %r137 -%r139 = zext i32 %r138 to i128 -%r140 = shl i128 %r139, 96 -%r141 = or i128 %r135, %r140 -%r142 = zext i128 %r141 to i160 -%r144 = getelementptr i32, i32* %r2, i32 4 +%r139 = zext i32 %r138 to i160 +%r140 = shl i160 %r139, 128 +%r141 = or i160 %r135, %r140 +%r142 = zext i160 %r141 to i192 +%r144 = getelementptr i32, i32* %r2, i32 5 %r145 = load i32, i32* %r144 -%r146 = zext i32 %r145 to i160 -%r147 = shl i160 %r146, 128 -%r148 = or i160 %r142, %r147 -%r149 = zext i160 %r148 to i192 -%r151 = getelementptr i32, i32* %r2, i32 5 +%r146 = zext i32 %r145 to i192 +%r147 = shl i192 %r146, 160 +%r148 = or i192 %r142, %r147 +%r149 = zext i192 %r148 to i224 +%r151 = getelementptr i32, i32* %r2, i32 6 %r152 = load i32, i32* %r151 -%r153 = zext i32 %r152 to i192 -%r154 = shl i192 %r153, 160 -%r155 = or i192 %r149, %r154 -%r156 = zext i192 %r155 to i224 -%r158 = getelementptr i32, i32* %r2, i32 6 +%r153 = zext i32 %r152 to i224 +%r154 = shl i224 %r153, 192 +%r155 = or i224 %r149, %r154 +%r156 = zext i224 %r155 to i256 +%r158 = getelementptr i32, i32* %r2, i32 7 %r159 = load i32, i32* %r158 -%r160 = zext i32 %r159 to i224 -%r161 = shl i224 %r160, 192 -%r162 = or i224 %r156, %r161 -%r163 = zext i224 %r162 to i256 -%r165 = getelementptr i32, i32* %r2, i32 7 +%r160 = zext i32 %r159 to i256 +%r161 = shl i256 %r160, 224 +%r162 = or i256 %r156, %r161 +%r163 = zext i256 %r162 to i288 +%r165 = getelementptr i32, i32* %r2, i32 8 %r166 = load i32, i32* %r165 -%r167 = zext i32 %r166 to i256 -%r168 = shl i256 %r167, 224 -%r169 = or i256 %r163, %r168 -%r170 = zext i256 %r169 to i288 -%r172 = getelementptr i32, i32* %r2, i32 8 +%r167 = zext i32 %r166 to i288 +%r168 = shl i288 %r167, 256 +%r169 = or i288 %r163, %r168 +%r170 = zext i288 %r169 to i320 +%r172 = getelementptr i32, i32* %r2, i32 9 %r173 = load i32, i32* %r172 -%r174 = zext i32 %r173 to i288 -%r175 = shl i288 %r174, 256 -%r176 = or i288 %r170, %r175 -%r177 = zext i288 %r176 to i320 -%r179 = getelementptr i32, i32* %r2, i32 9 +%r174 = zext i32 %r173 to i320 +%r175 = shl i320 %r174, 288 +%r176 = or i320 %r170, %r175 +%r177 = zext i320 %r176 to i352 +%r179 = getelementptr i32, i32* %r2, i32 10 %r180 = load i32, i32* %r179 -%r181 = zext i32 %r180 to i320 -%r182 = shl i320 %r181, 288 -%r183 = or i320 %r177, %r182 -%r184 = zext i320 %r183 to i352 -%r186 = getelementptr i32, i32* %r2, i32 10 +%r181 = zext i32 %r180 to i352 +%r182 = shl i352 %r181, 320 +%r183 = or i352 %r177, %r182 +%r184 = zext i352 %r183 to i384 +%r186 = getelementptr i32, i32* %r2, i32 11 %r187 = load i32, i32* %r186 -%r188 = zext i32 %r187 to i352 -%r189 = shl i352 %r188, 320 -%r190 = or i352 %r184, %r189 -%r191 = zext i352 %r190 to i384 -%r193 = getelementptr i32, i32* %r2, i32 11 +%r188 = zext i32 %r187 to i384 +%r189 = shl i384 %r188, 352 +%r190 = or i384 %r184, %r189 +%r191 = zext i384 %r190 to i416 +%r193 = getelementptr i32, i32* %r2, i32 12 %r194 = load i32, i32* %r193 -%r195 = zext i32 %r194 to i384 -%r196 = shl i384 %r195, 352 -%r197 = or i384 %r191, %r196 -%r198 = zext i384 %r197 to i416 -%r200 = getelementptr i32, i32* %r2, i32 12 +%r195 = zext i32 %r194 to i416 +%r196 = shl i416 %r195, 384 +%r197 = or i416 %r191, %r196 +%r198 = zext i416 %r197 to i448 +%r200 = getelementptr i32, i32* %r2, i32 13 %r201 = load i32, i32* %r200 -%r202 = zext i32 %r201 to i416 -%r203 = shl i416 %r202, 384 -%r204 = or i416 %r198, %r203 -%r205 = zext i416 %r204 to i448 -%r207 = getelementptr i32, i32* %r2, i32 13 +%r202 = zext i32 %r201 to i448 +%r203 = shl i448 %r202, 416 +%r204 = or i448 %r198, %r203 +%r205 = zext i448 %r204 to i480 +%r207 = getelementptr i32, i32* %r2, i32 14 %r208 = load i32, i32* %r207 -%r209 = zext i32 %r208 to i448 -%r210 = shl i448 %r209, 416 -%r211 = or i448 %r205, %r210 -%r212 = zext i448 %r211 to i480 -%r214 = getelementptr i32, i32* %r2, i32 14 +%r209 = zext i32 %r208 to i480 +%r210 = shl i480 %r209, 448 +%r211 = or i480 %r205, %r210 +%r212 = zext i480 %r211 to i512 +%r214 = getelementptr i32, i32* %r2, i32 15 %r215 = load i32, i32* %r214 -%r216 = zext i32 %r215 to i480 -%r217 = shl i480 %r216, 448 -%r218 = or i480 %r212, %r217 -%r219 = zext i480 %r218 to i512 -%r221 = getelementptr i32, i32* %r2, i32 15 -%r222 = load i32, i32* %r221 -%r223 = zext i32 %r222 to i512 -%r224 = shl i512 %r223, 480 -%r225 = or i512 %r219, %r224 -%r226 = zext i512 %r225 to i544 -%r228 = getelementptr i32, i32* %r2, i32 16 -%r229 = load i32, i32* %r228 -%r230 = zext i32 %r229 to i544 -%r231 = shl i544 %r230, 512 -%r232 = or i544 %r226, %r231 -%r233 = zext i544 %r232 to i576 -%r235 = getelementptr i32, i32* %r2, i32 17 -%r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i576 -%r238 = shl i576 %r237, 544 -%r239 = or i576 %r233, %r238 -%r240 = zext i576 %r239 to i608 -%r242 = getelementptr i32, i32* %r2, i32 18 -%r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i608 -%r245 = shl i608 %r244, 576 -%r246 = or i608 %r240, %r245 -%r247 = zext i608 %r246 to i640 -%r249 = getelementptr i32, i32* %r2, i32 19 -%r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i640 -%r252 = shl i640 %r251, 608 -%r253 = or i640 %r247, %r252 -%r254 = zext i640 %r253 to i672 -%r256 = getelementptr i32, i32* %r2, i32 20 -%r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i672 -%r259 = shl i672 %r258, 640 -%r260 = or i672 %r254, %r259 -%r261 = zext i672 %r260 to i704 -%r263 = getelementptr i32, i32* %r2, i32 21 -%r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i704 -%r266 = shl i704 %r265, 672 -%r267 = or i704 %r261, %r266 -%r268 = zext i704 %r267 to i736 -%r270 = getelementptr i32, i32* %r2, i32 22 -%r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i736 -%r273 = shl i736 %r272, 704 -%r274 = or i736 %r268, %r273 -%r275 = zext i736 %r274 to i768 -%r277 = getelementptr i32, i32* %r2, i32 23 -%r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i768 -%r280 = shl i768 %r279, 736 -%r281 = or i768 %r275, %r280 -%r282 = zext i768 %r281 to i800 -%r284 = getelementptr i32, i32* %r2, i32 24 -%r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i800 -%r287 = shl i800 %r286, 768 -%r288 = or i800 %r282, %r287 -%r289 = zext i800 %r288 to i832 -%r291 = getelementptr i32, i32* %r2, i32 25 -%r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i832 -%r294 = shl i832 %r293, 800 -%r295 = or i832 %r289, %r294 -%r296 = zext i832 %r295 to i864 -%r298 = getelementptr i32, i32* %r2, i32 26 -%r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i864 -%r301 = shl i864 %r300, 832 -%r302 = or i864 %r296, %r301 -%r303 = zext i864 %r302 to i896 -%r305 = getelementptr i32, i32* %r2, i32 27 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i896 -%r308 = shl i896 %r307, 864 -%r309 = or i896 %r303, %r308 -%r310 = zext i896 %r309 to i928 -%r312 = getelementptr i32, i32* %r2, i32 28 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i928 -%r315 = shl i928 %r314, 896 -%r316 = or i928 %r310, %r315 -%r317 = zext i928 %r316 to i960 -%r319 = getelementptr i32, i32* %r2, i32 29 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i960 -%r322 = shl i960 %r321, 928 -%r323 = or i960 %r317, %r322 -%r324 = zext i960 %r323 to i992 -%r326 = getelementptr i32, i32* %r2, i32 30 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i992 -%r329 = shl i992 %r328, 960 -%r330 = or i992 %r324, %r329 -%r331 = zext i992 %r330 to i1024 -%r333 = getelementptr i32, i32* %r2, i32 31 -%r334 = load i32, i32* %r333 -%r335 = zext i32 %r334 to i1024 -%r336 = shl i1024 %r335, 992 -%r337 = or i1024 %r331, %r336 -%r338 = zext i1024 %r337 to i1056 -%r340 = getelementptr i32, i32* %r2, i32 32 -%r341 = load i32, i32* %r340 -%r342 = zext i32 %r341 to i1056 -%r343 = shl i1056 %r342, 1024 -%r344 = or i1056 %r338, %r343 -%r345 = zext i1056 %r344 to i1088 -%r347 = getelementptr i32, i32* %r2, i32 33 -%r348 = load i32, i32* %r347 -%r349 = zext i32 %r348 to i1088 -%r350 = shl i1088 %r349, 1056 -%r351 = or i1088 %r345, %r350 -%r352 = zext i1088 %r351 to i1120 -%r353 = trunc i1120 %r352 to i32 -%r354 = mul i32 %r353, %r6 -%r355 = call i576 @mulPv544x32(i32* %r3, i32 %r354) -%r356 = zext i576 %r355 to i1120 -%r357 = add i1120 %r352, %r356 -%r358 = lshr i1120 %r357, 32 -%r359 = trunc i1120 %r358 to i1088 -%r360 = trunc i1088 %r359 to i32 -%r361 = mul i32 %r360, %r6 -%r362 = call i576 @mulPv544x32(i32* %r3, i32 %r361) -%r363 = zext i576 %r362 to i1088 -%r364 = add i1088 %r359, %r363 -%r365 = lshr i1088 %r364, 32 -%r366 = trunc i1088 %r365 to i1056 -%r367 = trunc i1056 %r366 to i32 -%r368 = mul i32 %r367, %r6 -%r369 = call i576 @mulPv544x32(i32* %r3, i32 %r368) -%r370 = zext i576 %r369 to i1056 -%r371 = add i1056 %r366, %r370 -%r372 = lshr i1056 %r371, 32 -%r373 = trunc i1056 %r372 to i1024 -%r374 = trunc i1024 %r373 to i32 -%r375 = mul i32 %r374, %r6 -%r376 = call i576 @mulPv544x32(i32* %r3, i32 %r375) -%r377 = zext i576 %r376 to i1024 -%r378 = add i1024 %r373, %r377 -%r379 = lshr i1024 %r378, 32 -%r380 = trunc i1024 %r379 to i992 -%r381 = trunc i992 %r380 to i32 -%r382 = mul i32 %r381, %r6 -%r383 = call i576 @mulPv544x32(i32* %r3, i32 %r382) -%r384 = zext i576 %r383 to i992 -%r385 = add i992 %r380, %r384 -%r386 = lshr i992 %r385, 32 -%r387 = trunc i992 %r386 to i960 -%r388 = trunc i960 %r387 to i32 -%r389 = mul i32 %r388, %r6 -%r390 = call i576 @mulPv544x32(i32* %r3, i32 %r389) -%r391 = zext i576 %r390 to i960 -%r392 = add i960 %r387, %r391 -%r393 = lshr i960 %r392, 32 -%r394 = trunc i960 %r393 to i928 -%r395 = trunc i928 %r394 to i32 -%r396 = mul i32 %r395, %r6 -%r397 = call i576 @mulPv544x32(i32* %r3, i32 %r396) -%r398 = zext i576 %r397 to i928 -%r399 = add i928 %r394, %r398 -%r400 = lshr i928 %r399, 32 -%r401 = trunc i928 %r400 to i896 -%r402 = trunc i896 %r401 to i32 -%r403 = mul i32 %r402, %r6 -%r404 = call i576 @mulPv544x32(i32* %r3, i32 %r403) -%r405 = zext i576 %r404 to i896 -%r406 = add i896 %r401, %r405 -%r407 = lshr i896 %r406, 32 -%r408 = trunc i896 %r407 to i864 -%r409 = trunc i864 %r408 to i32 -%r410 = mul i32 %r409, %r6 -%r411 = call i576 @mulPv544x32(i32* %r3, i32 %r410) -%r412 = zext i576 %r411 to i864 -%r413 = add i864 %r408, %r412 -%r414 = lshr i864 %r413, 32 -%r415 = trunc i864 %r414 to i832 -%r416 = trunc i832 %r415 to i32 -%r417 = mul i32 %r416, %r6 -%r418 = call i576 @mulPv544x32(i32* %r3, i32 %r417) -%r419 = zext i576 %r418 to i832 -%r420 = add i832 %r415, %r419 -%r421 = lshr i832 %r420, 32 -%r422 = trunc i832 %r421 to i800 -%r423 = trunc i800 %r422 to i32 -%r424 = mul i32 %r423, %r6 -%r425 = call i576 @mulPv544x32(i32* %r3, i32 %r424) -%r426 = zext i576 %r425 to i800 -%r427 = add i800 %r422, %r426 -%r428 = lshr i800 %r427, 32 -%r429 = trunc i800 %r428 to i768 -%r430 = trunc i768 %r429 to i32 -%r431 = mul i32 %r430, %r6 -%r432 = call i576 @mulPv544x32(i32* %r3, i32 %r431) -%r433 = zext i576 %r432 to i768 -%r434 = add i768 %r429, %r433 -%r435 = lshr i768 %r434, 32 -%r436 = trunc i768 %r435 to i736 -%r437 = trunc i736 %r436 to i32 -%r438 = mul i32 %r437, %r6 -%r439 = call i576 @mulPv544x32(i32* %r3, i32 %r438) -%r440 = zext i576 %r439 to i736 -%r441 = add i736 %r436, %r440 -%r442 = lshr i736 %r441, 32 -%r443 = trunc i736 %r442 to i704 -%r444 = trunc i704 %r443 to i32 -%r445 = mul i32 %r444, %r6 -%r446 = call i576 @mulPv544x32(i32* %r3, i32 %r445) -%r447 = zext i576 %r446 to i704 -%r448 = add i704 %r443, %r447 -%r449 = lshr i704 %r448, 32 -%r450 = trunc i704 %r449 to i672 -%r451 = trunc i672 %r450 to i32 -%r452 = mul i32 %r451, %r6 -%r453 = call i576 @mulPv544x32(i32* %r3, i32 %r452) -%r454 = zext i576 %r453 to i672 -%r455 = add i672 %r450, %r454 -%r456 = lshr i672 %r455, 32 -%r457 = trunc i672 %r456 to i640 -%r458 = trunc i640 %r457 to i32 -%r459 = mul i32 %r458, %r6 -%r460 = call i576 @mulPv544x32(i32* %r3, i32 %r459) -%r461 = zext i576 %r460 to i640 -%r462 = add i640 %r457, %r461 -%r463 = lshr i640 %r462, 32 -%r464 = trunc i640 %r463 to i608 -%r465 = trunc i608 %r464 to i32 -%r466 = mul i32 %r465, %r6 -%r467 = call i576 @mulPv544x32(i32* %r3, i32 %r466) -%r468 = zext i576 %r467 to i608 -%r469 = add i608 %r464, %r468 -%r470 = lshr i608 %r469, 32 -%r471 = trunc i608 %r470 to i576 -%r472 = zext i544 %r119 to i576 -%r473 = sub i576 %r471, %r472 -%r474 = lshr i576 %r473, 544 -%r475 = trunc i576 %r474 to i1 -%r476 = select i1 %r475, i576 %r471, i576 %r473 -%r477 = trunc i576 %r476 to i544 -%r478 = trunc i544 %r477 to i32 -%r480 = getelementptr i32, i32* %r1, i32 0 -store i32 %r478, i32* %r480 -%r481 = lshr i544 %r477, 32 -%r482 = trunc i544 %r481 to i32 -%r484 = getelementptr i32, i32* %r1, i32 1 -store i32 %r482, i32* %r484 -%r485 = lshr i544 %r481, 32 -%r486 = trunc i544 %r485 to i32 -%r488 = getelementptr i32, i32* %r1, i32 2 -store i32 %r486, i32* %r488 -%r489 = lshr i544 %r485, 32 -%r490 = trunc i544 %r489 to i32 -%r492 = getelementptr i32, i32* %r1, i32 3 -store i32 %r490, i32* %r492 -%r493 = lshr i544 %r489, 32 -%r494 = trunc i544 %r493 to i32 -%r496 = getelementptr i32, i32* %r1, i32 4 -store i32 %r494, i32* %r496 -%r497 = lshr i544 %r493, 32 -%r498 = trunc i544 %r497 to i32 -%r500 = getelementptr i32, i32* %r1, i32 5 -store i32 %r498, i32* %r500 -%r501 = lshr i544 %r497, 32 -%r502 = trunc i544 %r501 to i32 -%r504 = getelementptr i32, i32* %r1, i32 6 -store i32 %r502, i32* %r504 -%r505 = lshr i544 %r501, 32 -%r506 = trunc i544 %r505 to i32 -%r508 = getelementptr i32, i32* %r1, i32 7 -store i32 %r506, i32* %r508 -%r509 = lshr i544 %r505, 32 -%r510 = trunc i544 %r509 to i32 -%r512 = getelementptr i32, i32* %r1, i32 8 -store i32 %r510, i32* %r512 -%r513 = lshr i544 %r509, 32 -%r514 = trunc i544 %r513 to i32 -%r516 = getelementptr i32, i32* %r1, i32 9 -store i32 %r514, i32* %r516 -%r517 = lshr i544 %r513, 32 -%r518 = trunc i544 %r517 to i32 -%r520 = getelementptr i32, i32* %r1, i32 10 -store i32 %r518, i32* %r520 -%r521 = lshr i544 %r517, 32 -%r522 = trunc i544 %r521 to i32 -%r524 = getelementptr i32, i32* %r1, i32 11 -store i32 %r522, i32* %r524 -%r525 = lshr i544 %r521, 32 -%r526 = trunc i544 %r525 to i32 -%r528 = getelementptr i32, i32* %r1, i32 12 -store i32 %r526, i32* %r528 -%r529 = lshr i544 %r525, 32 -%r530 = trunc i544 %r529 to i32 -%r532 = getelementptr i32, i32* %r1, i32 13 -store i32 %r530, i32* %r532 -%r533 = lshr i544 %r529, 32 -%r534 = trunc i544 %r533 to i32 -%r536 = getelementptr i32, i32* %r1, i32 14 -store i32 %r534, i32* %r536 -%r537 = lshr i544 %r533, 32 -%r538 = trunc i544 %r537 to i32 -%r540 = getelementptr i32, i32* %r1, i32 15 -store i32 %r538, i32* %r540 -%r541 = lshr i544 %r537, 32 -%r542 = trunc i544 %r541 to i32 -%r544 = getelementptr i32, i32* %r1, i32 16 -store i32 %r542, i32* %r544 +%r216 = zext i32 %r215 to i512 +%r217 = shl i512 %r216, 480 +%r218 = or i512 %r212, %r217 +%r219 = trunc i512 %r218 to i32 +%r220 = mul i32 %r219, %r6 +%r221 = call i544 @mulPv512x32(i32* %r3, i32 %r220) +%r223 = getelementptr i32, i32* %r2, i32 16 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i544 +%r226 = shl i544 %r225, 512 +%r227 = zext i512 %r218 to i544 +%r228 = or i544 %r226, %r227 +%r229 = zext i544 %r228 to i576 +%r230 = zext i544 %r221 to i576 +%r231 = add i576 %r229, %r230 +%r232 = lshr i576 %r231, 32 +%r233 = trunc i576 %r232 to i544 +%r234 = lshr i544 %r233, 512 +%r235 = trunc i544 %r234 to i32 +%r236 = trunc i544 %r233 to i512 +%r237 = trunc i512 %r236 to i32 +%r238 = mul i32 %r237, %r6 +%r239 = call i544 @mulPv512x32(i32* %r3, i32 %r238) +%r240 = zext i32 %r235 to i544 +%r241 = shl i544 %r240, 512 +%r242 = add i544 %r239, %r241 +%r244 = getelementptr i32, i32* %r2, i32 17 +%r245 = load i32, i32* %r244 +%r246 = zext i32 %r245 to i544 +%r247 = shl i544 %r246, 512 +%r248 = zext i512 %r236 to i544 +%r249 = or i544 %r247, %r248 +%r250 = zext i544 %r249 to i576 +%r251 = zext i544 %r242 to i576 +%r252 = add i576 %r250, %r251 +%r253 = lshr i576 %r252, 32 +%r254 = trunc i576 %r253 to i544 +%r255 = lshr i544 %r254, 512 +%r256 = trunc i544 %r255 to i32 +%r257 = trunc i544 %r254 to i512 +%r258 = trunc i512 %r257 to i32 +%r259 = mul i32 %r258, %r6 +%r260 = call i544 @mulPv512x32(i32* %r3, i32 %r259) +%r261 = zext i32 %r256 to i544 +%r262 = shl i544 %r261, 512 +%r263 = add i544 %r260, %r262 +%r265 = getelementptr i32, i32* %r2, i32 18 +%r266 = load i32, i32* %r265 +%r267 = zext i32 %r266 to i544 +%r268 = shl i544 %r267, 512 +%r269 = zext i512 %r257 to i544 +%r270 = or i544 %r268, %r269 +%r271 = zext i544 %r270 to i576 +%r272 = zext i544 %r263 to i576 +%r273 = add i576 %r271, %r272 +%r274 = lshr i576 %r273, 32 +%r275 = trunc i576 %r274 to i544 +%r276 = lshr i544 %r275, 512 +%r277 = trunc i544 %r276 to i32 +%r278 = trunc i544 %r275 to i512 +%r279 = trunc i512 %r278 to i32 +%r280 = mul i32 %r279, %r6 +%r281 = call i544 @mulPv512x32(i32* %r3, i32 %r280) +%r282 = zext i32 %r277 to i544 +%r283 = shl i544 %r282, 512 +%r284 = add i544 %r281, %r283 +%r286 = getelementptr i32, i32* %r2, i32 19 +%r287 = load i32, i32* %r286 +%r288 = zext i32 %r287 to i544 +%r289 = shl i544 %r288, 512 +%r290 = zext i512 %r278 to i544 +%r291 = or i544 %r289, %r290 +%r292 = zext i544 %r291 to i576 +%r293 = zext i544 %r284 to i576 +%r294 = add i576 %r292, %r293 +%r295 = lshr i576 %r294, 32 +%r296 = trunc i576 %r295 to i544 +%r297 = lshr i544 %r296, 512 +%r298 = trunc i544 %r297 to i32 +%r299 = trunc i544 %r296 to i512 +%r300 = trunc i512 %r299 to i32 +%r301 = mul i32 %r300, %r6 +%r302 = call i544 @mulPv512x32(i32* %r3, i32 %r301) +%r303 = zext i32 %r298 to i544 +%r304 = shl i544 %r303, 512 +%r305 = add i544 %r302, %r304 +%r307 = getelementptr i32, i32* %r2, i32 20 +%r308 = load i32, i32* %r307 +%r309 = zext i32 %r308 to i544 +%r310 = shl i544 %r309, 512 +%r311 = zext i512 %r299 to i544 +%r312 = or i544 %r310, %r311 +%r313 = zext i544 %r312 to i576 +%r314 = zext i544 %r305 to i576 +%r315 = add i576 %r313, %r314 +%r316 = lshr i576 %r315, 32 +%r317 = trunc i576 %r316 to i544 +%r318 = lshr i544 %r317, 512 +%r319 = trunc i544 %r318 to i32 +%r320 = trunc i544 %r317 to i512 +%r321 = trunc i512 %r320 to i32 +%r322 = mul i32 %r321, %r6 +%r323 = call i544 @mulPv512x32(i32* %r3, i32 %r322) +%r324 = zext i32 %r319 to i544 +%r325 = shl i544 %r324, 512 +%r326 = add i544 %r323, %r325 +%r328 = getelementptr i32, i32* %r2, i32 21 +%r329 = load i32, i32* %r328 +%r330 = zext i32 %r329 to i544 +%r331 = shl i544 %r330, 512 +%r332 = zext i512 %r320 to i544 +%r333 = or i544 %r331, %r332 +%r334 = zext i544 %r333 to i576 +%r335 = zext i544 %r326 to i576 +%r336 = add i576 %r334, %r335 +%r337 = lshr i576 %r336, 32 +%r338 = trunc i576 %r337 to i544 +%r339 = lshr i544 %r338, 512 +%r340 = trunc i544 %r339 to i32 +%r341 = trunc i544 %r338 to i512 +%r342 = trunc i512 %r341 to i32 +%r343 = mul i32 %r342, %r6 +%r344 = call i544 @mulPv512x32(i32* %r3, i32 %r343) +%r345 = zext i32 %r340 to i544 +%r346 = shl i544 %r345, 512 +%r347 = add i544 %r344, %r346 +%r349 = getelementptr i32, i32* %r2, i32 22 +%r350 = load i32, i32* %r349 +%r351 = zext i32 %r350 to i544 +%r352 = shl i544 %r351, 512 +%r353 = zext i512 %r341 to i544 +%r354 = or i544 %r352, %r353 +%r355 = zext i544 %r354 to i576 +%r356 = zext i544 %r347 to i576 +%r357 = add i576 %r355, %r356 +%r358 = lshr i576 %r357, 32 +%r359 = trunc i576 %r358 to i544 +%r360 = lshr i544 %r359, 512 +%r361 = trunc i544 %r360 to i32 +%r362 = trunc i544 %r359 to i512 +%r363 = trunc i512 %r362 to i32 +%r364 = mul i32 %r363, %r6 +%r365 = call i544 @mulPv512x32(i32* %r3, i32 %r364) +%r366 = zext i32 %r361 to i544 +%r367 = shl i544 %r366, 512 +%r368 = add i544 %r365, %r367 +%r370 = getelementptr i32, i32* %r2, i32 23 +%r371 = load i32, i32* %r370 +%r372 = zext i32 %r371 to i544 +%r373 = shl i544 %r372, 512 +%r374 = zext i512 %r362 to i544 +%r375 = or i544 %r373, %r374 +%r376 = zext i544 %r375 to i576 +%r377 = zext i544 %r368 to i576 +%r378 = add i576 %r376, %r377 +%r379 = lshr i576 %r378, 32 +%r380 = trunc i576 %r379 to i544 +%r381 = lshr i544 %r380, 512 +%r382 = trunc i544 %r381 to i32 +%r383 = trunc i544 %r380 to i512 +%r384 = trunc i512 %r383 to i32 +%r385 = mul i32 %r384, %r6 +%r386 = call i544 @mulPv512x32(i32* %r3, i32 %r385) +%r387 = zext i32 %r382 to i544 +%r388 = shl i544 %r387, 512 +%r389 = add i544 %r386, %r388 +%r391 = getelementptr i32, i32* %r2, i32 24 +%r392 = load i32, i32* %r391 +%r393 = zext i32 %r392 to i544 +%r394 = shl i544 %r393, 512 +%r395 = zext i512 %r383 to i544 +%r396 = or i544 %r394, %r395 +%r397 = zext i544 %r396 to i576 +%r398 = zext i544 %r389 to i576 +%r399 = add i576 %r397, %r398 +%r400 = lshr i576 %r399, 32 +%r401 = trunc i576 %r400 to i544 +%r402 = lshr i544 %r401, 512 +%r403 = trunc i544 %r402 to i32 +%r404 = trunc i544 %r401 to i512 +%r405 = trunc i512 %r404 to i32 +%r406 = mul i32 %r405, %r6 +%r407 = call i544 @mulPv512x32(i32* %r3, i32 %r406) +%r408 = zext i32 %r403 to i544 +%r409 = shl i544 %r408, 512 +%r410 = add i544 %r407, %r409 +%r412 = getelementptr i32, i32* %r2, i32 25 +%r413 = load i32, i32* %r412 +%r414 = zext i32 %r413 to i544 +%r415 = shl i544 %r414, 512 +%r416 = zext i512 %r404 to i544 +%r417 = or i544 %r415, %r416 +%r418 = zext i544 %r417 to i576 +%r419 = zext i544 %r410 to i576 +%r420 = add i576 %r418, %r419 +%r421 = lshr i576 %r420, 32 +%r422 = trunc i576 %r421 to i544 +%r423 = lshr i544 %r422, 512 +%r424 = trunc i544 %r423 to i32 +%r425 = trunc i544 %r422 to i512 +%r426 = trunc i512 %r425 to i32 +%r427 = mul i32 %r426, %r6 +%r428 = call i544 @mulPv512x32(i32* %r3, i32 %r427) +%r429 = zext i32 %r424 to i544 +%r430 = shl i544 %r429, 512 +%r431 = add i544 %r428, %r430 +%r433 = getelementptr i32, i32* %r2, i32 26 +%r434 = load i32, i32* %r433 +%r435 = zext i32 %r434 to i544 +%r436 = shl i544 %r435, 512 +%r437 = zext i512 %r425 to i544 +%r438 = or i544 %r436, %r437 +%r439 = zext i544 %r438 to i576 +%r440 = zext i544 %r431 to i576 +%r441 = add i576 %r439, %r440 +%r442 = lshr i576 %r441, 32 +%r443 = trunc i576 %r442 to i544 +%r444 = lshr i544 %r443, 512 +%r445 = trunc i544 %r444 to i32 +%r446 = trunc i544 %r443 to i512 +%r447 = trunc i512 %r446 to i32 +%r448 = mul i32 %r447, %r6 +%r449 = call i544 @mulPv512x32(i32* %r3, i32 %r448) +%r450 = zext i32 %r445 to i544 +%r451 = shl i544 %r450, 512 +%r452 = add i544 %r449, %r451 +%r454 = getelementptr i32, i32* %r2, i32 27 +%r455 = load i32, i32* %r454 +%r456 = zext i32 %r455 to i544 +%r457 = shl i544 %r456, 512 +%r458 = zext i512 %r446 to i544 +%r459 = or i544 %r457, %r458 +%r460 = zext i544 %r459 to i576 +%r461 = zext i544 %r452 to i576 +%r462 = add i576 %r460, %r461 +%r463 = lshr i576 %r462, 32 +%r464 = trunc i576 %r463 to i544 +%r465 = lshr i544 %r464, 512 +%r466 = trunc i544 %r465 to i32 +%r467 = trunc i544 %r464 to i512 +%r468 = trunc i512 %r467 to i32 +%r469 = mul i32 %r468, %r6 +%r470 = call i544 @mulPv512x32(i32* %r3, i32 %r469) +%r471 = zext i32 %r466 to i544 +%r472 = shl i544 %r471, 512 +%r473 = add i544 %r470, %r472 +%r475 = getelementptr i32, i32* %r2, i32 28 +%r476 = load i32, i32* %r475 +%r477 = zext i32 %r476 to i544 +%r478 = shl i544 %r477, 512 +%r479 = zext i512 %r467 to i544 +%r480 = or i544 %r478, %r479 +%r481 = zext i544 %r480 to i576 +%r482 = zext i544 %r473 to i576 +%r483 = add i576 %r481, %r482 +%r484 = lshr i576 %r483, 32 +%r485 = trunc i576 %r484 to i544 +%r486 = lshr i544 %r485, 512 +%r487 = trunc i544 %r486 to i32 +%r488 = trunc i544 %r485 to i512 +%r489 = trunc i512 %r488 to i32 +%r490 = mul i32 %r489, %r6 +%r491 = call i544 @mulPv512x32(i32* %r3, i32 %r490) +%r492 = zext i32 %r487 to i544 +%r493 = shl i544 %r492, 512 +%r494 = add i544 %r491, %r493 +%r496 = getelementptr i32, i32* %r2, i32 29 +%r497 = load i32, i32* %r496 +%r498 = zext i32 %r497 to i544 +%r499 = shl i544 %r498, 512 +%r500 = zext i512 %r488 to i544 +%r501 = or i544 %r499, %r500 +%r502 = zext i544 %r501 to i576 +%r503 = zext i544 %r494 to i576 +%r504 = add i576 %r502, %r503 +%r505 = lshr i576 %r504, 32 +%r506 = trunc i576 %r505 to i544 +%r507 = lshr i544 %r506, 512 +%r508 = trunc i544 %r507 to i32 +%r509 = trunc i544 %r506 to i512 +%r510 = trunc i512 %r509 to i32 +%r511 = mul i32 %r510, %r6 +%r512 = call i544 @mulPv512x32(i32* %r3, i32 %r511) +%r513 = zext i32 %r508 to i544 +%r514 = shl i544 %r513, 512 +%r515 = add i544 %r512, %r514 +%r517 = getelementptr i32, i32* %r2, i32 30 +%r518 = load i32, i32* %r517 +%r519 = zext i32 %r518 to i544 +%r520 = shl i544 %r519, 512 +%r521 = zext i512 %r509 to i544 +%r522 = or i544 %r520, %r521 +%r523 = zext i544 %r522 to i576 +%r524 = zext i544 %r515 to i576 +%r525 = add i576 %r523, %r524 +%r526 = lshr i576 %r525, 32 +%r527 = trunc i576 %r526 to i544 +%r528 = lshr i544 %r527, 512 +%r529 = trunc i544 %r528 to i32 +%r530 = trunc i544 %r527 to i512 +%r531 = trunc i512 %r530 to i32 +%r532 = mul i32 %r531, %r6 +%r533 = call i544 @mulPv512x32(i32* %r3, i32 %r532) +%r534 = zext i32 %r529 to i544 +%r535 = shl i544 %r534, 512 +%r536 = add i544 %r533, %r535 +%r538 = getelementptr i32, i32* %r2, i32 31 +%r539 = load i32, i32* %r538 +%r540 = zext i32 %r539 to i544 +%r541 = shl i544 %r540, 512 +%r542 = zext i512 %r530 to i544 +%r543 = or i544 %r541, %r542 +%r544 = zext i544 %r543 to i576 +%r545 = zext i544 %r536 to i576 +%r546 = add i576 %r544, %r545 +%r547 = lshr i576 %r546, 32 +%r548 = trunc i576 %r547 to i544 +%r549 = lshr i544 %r548, 512 +%r550 = trunc i544 %r549 to i32 +%r551 = trunc i544 %r548 to i512 +%r552 = sub i512 %r551, %r112 +%r553 = lshr i512 %r552, 511 +%r554 = trunc i512 %r553 to i1 +%r555 = select i1 %r554, i512 %r551, i512 %r552 +%r557 = getelementptr i32, i32* %r1, i32 0 +%r558 = trunc i512 %r555 to i32 +store i32 %r558, i32* %r557 +%r559 = lshr i512 %r555, 32 +%r561 = getelementptr i32, i32* %r1, i32 1 +%r562 = trunc i512 %r559 to i32 +store i32 %r562, i32* %r561 +%r563 = lshr i512 %r559, 32 +%r565 = getelementptr i32, i32* %r1, i32 2 +%r566 = trunc i512 %r563 to i32 +store i32 %r566, i32* %r565 +%r567 = lshr i512 %r563, 32 +%r569 = getelementptr i32, i32* %r1, i32 3 +%r570 = trunc i512 %r567 to i32 +store i32 %r570, i32* %r569 +%r571 = lshr i512 %r567, 32 +%r573 = getelementptr i32, i32* %r1, i32 4 +%r574 = trunc i512 %r571 to i32 +store i32 %r574, i32* %r573 +%r575 = lshr i512 %r571, 32 +%r577 = getelementptr i32, i32* %r1, i32 5 +%r578 = trunc i512 %r575 to i32 +store i32 %r578, i32* %r577 +%r579 = lshr i512 %r575, 32 +%r581 = getelementptr i32, i32* %r1, i32 6 +%r582 = trunc i512 %r579 to i32 +store i32 %r582, i32* %r581 +%r583 = lshr i512 %r579, 32 +%r585 = getelementptr i32, i32* %r1, i32 7 +%r586 = trunc i512 %r583 to i32 +store i32 %r586, i32* %r585 +%r587 = lshr i512 %r583, 32 +%r589 = getelementptr i32, i32* %r1, i32 8 +%r590 = trunc i512 %r587 to i32 +store i32 %r590, i32* %r589 +%r591 = lshr i512 %r587, 32 +%r593 = getelementptr i32, i32* %r1, i32 9 +%r594 = trunc i512 %r591 to i32 +store i32 %r594, i32* %r593 +%r595 = lshr i512 %r591, 32 +%r597 = getelementptr i32, i32* %r1, i32 10 +%r598 = trunc i512 %r595 to i32 +store i32 %r598, i32* %r597 +%r599 = lshr i512 %r595, 32 +%r601 = getelementptr i32, i32* %r1, i32 11 +%r602 = trunc i512 %r599 to i32 +store i32 %r602, i32* %r601 +%r603 = lshr i512 %r599, 32 +%r605 = getelementptr i32, i32* %r1, i32 12 +%r606 = trunc i512 %r603 to i32 +store i32 %r606, i32* %r605 +%r607 = lshr i512 %r603, 32 +%r609 = getelementptr i32, i32* %r1, i32 13 +%r610 = trunc i512 %r607 to i32 +store i32 %r610, i32* %r609 +%r611 = lshr i512 %r607, 32 +%r613 = getelementptr i32, i32* %r1, i32 14 +%r614 = trunc i512 %r611 to i32 +store i32 %r614, i32* %r613 +%r615 = lshr i512 %r611, 32 +%r617 = getelementptr i32, i32* %r1, i32 15 +%r618 = trunc i512 %r615 to i32 +store i32 %r618, i32* %r617 ret void } -define i32 @mcl_fp_addPre17L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_addPre16L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 @@ -50729,184 +17155,168 @@ define i32 @mcl_fp_addPre17L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 %r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r3, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r119 = load i32, i32* %r4 -%r120 = zext i32 %r119 to i64 -%r122 = getelementptr i32, i32* %r4, i32 1 +%r112 = load i32, i32* %r4 +%r113 = zext i32 %r112 to i64 +%r115 = getelementptr i32, i32* %r4, i32 1 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i64 +%r118 = shl i64 %r117, 32 +%r119 = or i64 %r113, %r118 +%r120 = zext i64 %r119 to i96 +%r122 = getelementptr i32, i32* %r4, i32 2 %r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i64 -%r125 = shl i64 %r124, 32 -%r126 = or i64 %r120, %r125 -%r127 = zext i64 %r126 to i96 -%r129 = getelementptr i32, i32* %r4, i32 2 +%r124 = zext i32 %r123 to i96 +%r125 = shl i96 %r124, 64 +%r126 = or i96 %r120, %r125 +%r127 = zext i96 %r126 to i128 +%r129 = getelementptr i32, i32* %r4, i32 3 %r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i96 -%r132 = shl i96 %r131, 64 -%r133 = or i96 %r127, %r132 -%r134 = zext i96 %r133 to i128 -%r136 = getelementptr i32, i32* %r4, i32 3 +%r131 = zext i32 %r130 to i128 +%r132 = shl i128 %r131, 96 +%r133 = or i128 %r127, %r132 +%r134 = zext i128 %r133 to i160 +%r136 = getelementptr i32, i32* %r4, i32 4 %r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i128 -%r139 = shl i128 %r138, 96 -%r140 = or i128 %r134, %r139 -%r141 = zext i128 %r140 to i160 -%r143 = getelementptr i32, i32* %r4, i32 4 +%r138 = zext i32 %r137 to i160 +%r139 = shl i160 %r138, 128 +%r140 = or i160 %r134, %r139 +%r141 = zext i160 %r140 to i192 +%r143 = getelementptr i32, i32* %r4, i32 5 %r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i160 -%r146 = shl i160 %r145, 128 -%r147 = or i160 %r141, %r146 -%r148 = zext i160 %r147 to i192 -%r150 = getelementptr i32, i32* %r4, i32 5 +%r145 = zext i32 %r144 to i192 +%r146 = shl i192 %r145, 160 +%r147 = or i192 %r141, %r146 +%r148 = zext i192 %r147 to i224 +%r150 = getelementptr i32, i32* %r4, i32 6 %r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i192 -%r153 = shl i192 %r152, 160 -%r154 = or i192 %r148, %r153 -%r155 = zext i192 %r154 to i224 -%r157 = getelementptr i32, i32* %r4, i32 6 +%r152 = zext i32 %r151 to i224 +%r153 = shl i224 %r152, 192 +%r154 = or i224 %r148, %r153 +%r155 = zext i224 %r154 to i256 +%r157 = getelementptr i32, i32* %r4, i32 7 %r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i224 -%r160 = shl i224 %r159, 192 -%r161 = or i224 %r155, %r160 -%r162 = zext i224 %r161 to i256 -%r164 = getelementptr i32, i32* %r4, i32 7 +%r159 = zext i32 %r158 to i256 +%r160 = shl i256 %r159, 224 +%r161 = or i256 %r155, %r160 +%r162 = zext i256 %r161 to i288 +%r164 = getelementptr i32, i32* %r4, i32 8 %r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i256 -%r167 = shl i256 %r166, 224 -%r168 = or i256 %r162, %r167 -%r169 = zext i256 %r168 to i288 -%r171 = getelementptr i32, i32* %r4, i32 8 +%r166 = zext i32 %r165 to i288 +%r167 = shl i288 %r166, 256 +%r168 = or i288 %r162, %r167 +%r169 = zext i288 %r168 to i320 +%r171 = getelementptr i32, i32* %r4, i32 9 %r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i288 -%r174 = shl i288 %r173, 256 -%r175 = or i288 %r169, %r174 -%r176 = zext i288 %r175 to i320 -%r178 = getelementptr i32, i32* %r4, i32 9 +%r173 = zext i32 %r172 to i320 +%r174 = shl i320 %r173, 288 +%r175 = or i320 %r169, %r174 +%r176 = zext i320 %r175 to i352 +%r178 = getelementptr i32, i32* %r4, i32 10 %r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i320 -%r181 = shl i320 %r180, 288 -%r182 = or i320 %r176, %r181 -%r183 = zext i320 %r182 to i352 -%r185 = getelementptr i32, i32* %r4, i32 10 +%r180 = zext i32 %r179 to i352 +%r181 = shl i352 %r180, 320 +%r182 = or i352 %r176, %r181 +%r183 = zext i352 %r182 to i384 +%r185 = getelementptr i32, i32* %r4, i32 11 %r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i352 -%r188 = shl i352 %r187, 320 -%r189 = or i352 %r183, %r188 -%r190 = zext i352 %r189 to i384 -%r192 = getelementptr i32, i32* %r4, i32 11 +%r187 = zext i32 %r186 to i384 +%r188 = shl i384 %r187, 352 +%r189 = or i384 %r183, %r188 +%r190 = zext i384 %r189 to i416 +%r192 = getelementptr i32, i32* %r4, i32 12 %r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i384 -%r195 = shl i384 %r194, 352 -%r196 = or i384 %r190, %r195 -%r197 = zext i384 %r196 to i416 -%r199 = getelementptr i32, i32* %r4, i32 12 +%r194 = zext i32 %r193 to i416 +%r195 = shl i416 %r194, 384 +%r196 = or i416 %r190, %r195 +%r197 = zext i416 %r196 to i448 +%r199 = getelementptr i32, i32* %r4, i32 13 %r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i416 -%r202 = shl i416 %r201, 384 -%r203 = or i416 %r197, %r202 -%r204 = zext i416 %r203 to i448 -%r206 = getelementptr i32, i32* %r4, i32 13 +%r201 = zext i32 %r200 to i448 +%r202 = shl i448 %r201, 416 +%r203 = or i448 %r197, %r202 +%r204 = zext i448 %r203 to i480 +%r206 = getelementptr i32, i32* %r4, i32 14 %r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i448 -%r209 = shl i448 %r208, 416 -%r210 = or i448 %r204, %r209 -%r211 = zext i448 %r210 to i480 -%r213 = getelementptr i32, i32* %r4, i32 14 +%r208 = zext i32 %r207 to i480 +%r209 = shl i480 %r208, 448 +%r210 = or i480 %r204, %r209 +%r211 = zext i480 %r210 to i512 +%r213 = getelementptr i32, i32* %r4, i32 15 %r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i480 -%r216 = shl i480 %r215, 448 -%r217 = or i480 %r211, %r216 -%r218 = zext i480 %r217 to i512 -%r220 = getelementptr i32, i32* %r4, i32 15 -%r221 = load i32, i32* %r220 -%r222 = zext i32 %r221 to i512 -%r223 = shl i512 %r222, 480 -%r224 = or i512 %r218, %r223 -%r225 = zext i512 %r224 to i544 -%r227 = getelementptr i32, i32* %r4, i32 16 -%r228 = load i32, i32* %r227 -%r229 = zext i32 %r228 to i544 -%r230 = shl i544 %r229, 512 -%r231 = or i544 %r225, %r230 -%r232 = zext i544 %r231 to i576 -%r233 = add i576 %r118, %r232 -%r234 = trunc i576 %r233 to i544 -%r235 = trunc i544 %r234 to i32 -%r237 = getelementptr i32, i32* %r2, i32 0 -store i32 %r235, i32* %r237 -%r238 = lshr i544 %r234, 32 -%r239 = trunc i544 %r238 to i32 -%r241 = getelementptr i32, i32* %r2, i32 1 -store i32 %r239, i32* %r241 -%r242 = lshr i544 %r238, 32 -%r243 = trunc i544 %r242 to i32 -%r245 = getelementptr i32, i32* %r2, i32 2 -store i32 %r243, i32* %r245 -%r246 = lshr i544 %r242, 32 -%r247 = trunc i544 %r246 to i32 -%r249 = getelementptr i32, i32* %r2, i32 3 -store i32 %r247, i32* %r249 -%r250 = lshr i544 %r246, 32 -%r251 = trunc i544 %r250 to i32 -%r253 = getelementptr i32, i32* %r2, i32 4 -store i32 %r251, i32* %r253 -%r254 = lshr i544 %r250, 32 -%r255 = trunc i544 %r254 to i32 -%r257 = getelementptr i32, i32* %r2, i32 5 -store i32 %r255, i32* %r257 -%r258 = lshr i544 %r254, 32 -%r259 = trunc i544 %r258 to i32 -%r261 = getelementptr i32, i32* %r2, i32 6 -store i32 %r259, i32* %r261 -%r262 = lshr i544 %r258, 32 -%r263 = trunc i544 %r262 to i32 -%r265 = getelementptr i32, i32* %r2, i32 7 -store i32 %r263, i32* %r265 -%r266 = lshr i544 %r262, 32 -%r267 = trunc i544 %r266 to i32 -%r269 = getelementptr i32, i32* %r2, i32 8 -store i32 %r267, i32* %r269 -%r270 = lshr i544 %r266, 32 -%r271 = trunc i544 %r270 to i32 -%r273 = getelementptr i32, i32* %r2, i32 9 -store i32 %r271, i32* %r273 -%r274 = lshr i544 %r270, 32 -%r275 = trunc i544 %r274 to i32 -%r277 = getelementptr i32, i32* %r2, i32 10 -store i32 %r275, i32* %r277 -%r278 = lshr i544 %r274, 32 -%r279 = trunc i544 %r278 to i32 -%r281 = getelementptr i32, i32* %r2, i32 11 -store i32 %r279, i32* %r281 -%r282 = lshr i544 %r278, 32 -%r283 = trunc i544 %r282 to i32 -%r285 = getelementptr i32, i32* %r2, i32 12 -store i32 %r283, i32* %r285 -%r286 = lshr i544 %r282, 32 -%r287 = trunc i544 %r286 to i32 -%r289 = getelementptr i32, i32* %r2, i32 13 -store i32 %r287, i32* %r289 -%r290 = lshr i544 %r286, 32 -%r291 = trunc i544 %r290 to i32 -%r293 = getelementptr i32, i32* %r2, i32 14 -store i32 %r291, i32* %r293 -%r294 = lshr i544 %r290, 32 -%r295 = trunc i544 %r294 to i32 -%r297 = getelementptr i32, i32* %r2, i32 15 -store i32 %r295, i32* %r297 -%r298 = lshr i544 %r294, 32 -%r299 = trunc i544 %r298 to i32 -%r301 = getelementptr i32, i32* %r2, i32 16 -store i32 %r299, i32* %r301 -%r302 = lshr i576 %r233, 544 -%r303 = trunc i576 %r302 to i32 -ret i32 %r303 +%r215 = zext i32 %r214 to i512 +%r216 = shl i512 %r215, 480 +%r217 = or i512 %r211, %r216 +%r218 = zext i512 %r217 to i544 +%r219 = add i544 %r111, %r218 +%r220 = trunc i544 %r219 to i512 +%r222 = getelementptr i32, i32* %r2, i32 0 +%r223 = trunc i512 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i512 %r220, 32 +%r226 = getelementptr i32, i32* %r2, i32 1 +%r227 = trunc i512 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i512 %r224, 32 +%r230 = getelementptr i32, i32* %r2, i32 2 +%r231 = trunc i512 %r228 to i32 +store i32 %r231, i32* %r230 +%r232 = lshr i512 %r228, 32 +%r234 = getelementptr i32, i32* %r2, i32 3 +%r235 = trunc i512 %r232 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i512 %r232, 32 +%r238 = getelementptr i32, i32* %r2, i32 4 +%r239 = trunc i512 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i512 %r236, 32 +%r242 = getelementptr i32, i32* %r2, i32 5 +%r243 = trunc i512 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i512 %r240, 32 +%r246 = getelementptr i32, i32* %r2, i32 6 +%r247 = trunc i512 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i512 %r244, 32 +%r250 = getelementptr i32, i32* %r2, i32 7 +%r251 = trunc i512 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i512 %r248, 32 +%r254 = getelementptr i32, i32* %r2, i32 8 +%r255 = trunc i512 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i512 %r252, 32 +%r258 = getelementptr i32, i32* %r2, i32 9 +%r259 = trunc i512 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i512 %r256, 32 +%r262 = getelementptr i32, i32* %r2, i32 10 +%r263 = trunc i512 %r260 to i32 +store i32 %r263, i32* %r262 +%r264 = lshr i512 %r260, 32 +%r266 = getelementptr i32, i32* %r2, i32 11 +%r267 = trunc i512 %r264 to i32 +store i32 %r267, i32* %r266 +%r268 = lshr i512 %r264, 32 +%r270 = getelementptr i32, i32* %r2, i32 12 +%r271 = trunc i512 %r268 to i32 +store i32 %r271, i32* %r270 +%r272 = lshr i512 %r268, 32 +%r274 = getelementptr i32, i32* %r2, i32 13 +%r275 = trunc i512 %r272 to i32 +store i32 %r275, i32* %r274 +%r276 = lshr i512 %r272, 32 +%r278 = getelementptr i32, i32* %r2, i32 14 +%r279 = trunc i512 %r276 to i32 +store i32 %r279, i32* %r278 +%r280 = lshr i512 %r276, 32 +%r282 = getelementptr i32, i32* %r2, i32 15 +%r283 = trunc i512 %r280 to i32 +store i32 %r283, i32* %r282 +%r284 = lshr i544 %r219, 512 +%r285 = trunc i544 %r284 to i32 +ret i32 %r285 } -define i32 @mcl_fp_subPre17L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define i32 @mcl_fp_subPre16L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r3 %r6 = zext i32 %r5 to i64 @@ -51000,185 +17410,169 @@ define i32 @mcl_fp_subPre17L(i32* noalias %r2, i32* noalias %r3, i32* noalias %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 %r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r3, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = zext i544 %r117 to i576 -%r119 = load i32, i32* %r4 -%r120 = zext i32 %r119 to i64 -%r122 = getelementptr i32, i32* %r4, i32 1 +%r112 = load i32, i32* %r4 +%r113 = zext i32 %r112 to i64 +%r115 = getelementptr i32, i32* %r4, i32 1 +%r116 = load i32, i32* %r115 +%r117 = zext i32 %r116 to i64 +%r118 = shl i64 %r117, 32 +%r119 = or i64 %r113, %r118 +%r120 = zext i64 %r119 to i96 +%r122 = getelementptr i32, i32* %r4, i32 2 %r123 = load i32, i32* %r122 -%r124 = zext i32 %r123 to i64 -%r125 = shl i64 %r124, 32 -%r126 = or i64 %r120, %r125 -%r127 = zext i64 %r126 to i96 -%r129 = getelementptr i32, i32* %r4, i32 2 +%r124 = zext i32 %r123 to i96 +%r125 = shl i96 %r124, 64 +%r126 = or i96 %r120, %r125 +%r127 = zext i96 %r126 to i128 +%r129 = getelementptr i32, i32* %r4, i32 3 %r130 = load i32, i32* %r129 -%r131 = zext i32 %r130 to i96 -%r132 = shl i96 %r131, 64 -%r133 = or i96 %r127, %r132 -%r134 = zext i96 %r133 to i128 -%r136 = getelementptr i32, i32* %r4, i32 3 +%r131 = zext i32 %r130 to i128 +%r132 = shl i128 %r131, 96 +%r133 = or i128 %r127, %r132 +%r134 = zext i128 %r133 to i160 +%r136 = getelementptr i32, i32* %r4, i32 4 %r137 = load i32, i32* %r136 -%r138 = zext i32 %r137 to i128 -%r139 = shl i128 %r138, 96 -%r140 = or i128 %r134, %r139 -%r141 = zext i128 %r140 to i160 -%r143 = getelementptr i32, i32* %r4, i32 4 +%r138 = zext i32 %r137 to i160 +%r139 = shl i160 %r138, 128 +%r140 = or i160 %r134, %r139 +%r141 = zext i160 %r140 to i192 +%r143 = getelementptr i32, i32* %r4, i32 5 %r144 = load i32, i32* %r143 -%r145 = zext i32 %r144 to i160 -%r146 = shl i160 %r145, 128 -%r147 = or i160 %r141, %r146 -%r148 = zext i160 %r147 to i192 -%r150 = getelementptr i32, i32* %r4, i32 5 +%r145 = zext i32 %r144 to i192 +%r146 = shl i192 %r145, 160 +%r147 = or i192 %r141, %r146 +%r148 = zext i192 %r147 to i224 +%r150 = getelementptr i32, i32* %r4, i32 6 %r151 = load i32, i32* %r150 -%r152 = zext i32 %r151 to i192 -%r153 = shl i192 %r152, 160 -%r154 = or i192 %r148, %r153 -%r155 = zext i192 %r154 to i224 -%r157 = getelementptr i32, i32* %r4, i32 6 +%r152 = zext i32 %r151 to i224 +%r153 = shl i224 %r152, 192 +%r154 = or i224 %r148, %r153 +%r155 = zext i224 %r154 to i256 +%r157 = getelementptr i32, i32* %r4, i32 7 %r158 = load i32, i32* %r157 -%r159 = zext i32 %r158 to i224 -%r160 = shl i224 %r159, 192 -%r161 = or i224 %r155, %r160 -%r162 = zext i224 %r161 to i256 -%r164 = getelementptr i32, i32* %r4, i32 7 +%r159 = zext i32 %r158 to i256 +%r160 = shl i256 %r159, 224 +%r161 = or i256 %r155, %r160 +%r162 = zext i256 %r161 to i288 +%r164 = getelementptr i32, i32* %r4, i32 8 %r165 = load i32, i32* %r164 -%r166 = zext i32 %r165 to i256 -%r167 = shl i256 %r166, 224 -%r168 = or i256 %r162, %r167 -%r169 = zext i256 %r168 to i288 -%r171 = getelementptr i32, i32* %r4, i32 8 +%r166 = zext i32 %r165 to i288 +%r167 = shl i288 %r166, 256 +%r168 = or i288 %r162, %r167 +%r169 = zext i288 %r168 to i320 +%r171 = getelementptr i32, i32* %r4, i32 9 %r172 = load i32, i32* %r171 -%r173 = zext i32 %r172 to i288 -%r174 = shl i288 %r173, 256 -%r175 = or i288 %r169, %r174 -%r176 = zext i288 %r175 to i320 -%r178 = getelementptr i32, i32* %r4, i32 9 +%r173 = zext i32 %r172 to i320 +%r174 = shl i320 %r173, 288 +%r175 = or i320 %r169, %r174 +%r176 = zext i320 %r175 to i352 +%r178 = getelementptr i32, i32* %r4, i32 10 %r179 = load i32, i32* %r178 -%r180 = zext i32 %r179 to i320 -%r181 = shl i320 %r180, 288 -%r182 = or i320 %r176, %r181 -%r183 = zext i320 %r182 to i352 -%r185 = getelementptr i32, i32* %r4, i32 10 +%r180 = zext i32 %r179 to i352 +%r181 = shl i352 %r180, 320 +%r182 = or i352 %r176, %r181 +%r183 = zext i352 %r182 to i384 +%r185 = getelementptr i32, i32* %r4, i32 11 %r186 = load i32, i32* %r185 -%r187 = zext i32 %r186 to i352 -%r188 = shl i352 %r187, 320 -%r189 = or i352 %r183, %r188 -%r190 = zext i352 %r189 to i384 -%r192 = getelementptr i32, i32* %r4, i32 11 +%r187 = zext i32 %r186 to i384 +%r188 = shl i384 %r187, 352 +%r189 = or i384 %r183, %r188 +%r190 = zext i384 %r189 to i416 +%r192 = getelementptr i32, i32* %r4, i32 12 %r193 = load i32, i32* %r192 -%r194 = zext i32 %r193 to i384 -%r195 = shl i384 %r194, 352 -%r196 = or i384 %r190, %r195 -%r197 = zext i384 %r196 to i416 -%r199 = getelementptr i32, i32* %r4, i32 12 +%r194 = zext i32 %r193 to i416 +%r195 = shl i416 %r194, 384 +%r196 = or i416 %r190, %r195 +%r197 = zext i416 %r196 to i448 +%r199 = getelementptr i32, i32* %r4, i32 13 %r200 = load i32, i32* %r199 -%r201 = zext i32 %r200 to i416 -%r202 = shl i416 %r201, 384 -%r203 = or i416 %r197, %r202 -%r204 = zext i416 %r203 to i448 -%r206 = getelementptr i32, i32* %r4, i32 13 +%r201 = zext i32 %r200 to i448 +%r202 = shl i448 %r201, 416 +%r203 = or i448 %r197, %r202 +%r204 = zext i448 %r203 to i480 +%r206 = getelementptr i32, i32* %r4, i32 14 %r207 = load i32, i32* %r206 -%r208 = zext i32 %r207 to i448 -%r209 = shl i448 %r208, 416 -%r210 = or i448 %r204, %r209 -%r211 = zext i448 %r210 to i480 -%r213 = getelementptr i32, i32* %r4, i32 14 +%r208 = zext i32 %r207 to i480 +%r209 = shl i480 %r208, 448 +%r210 = or i480 %r204, %r209 +%r211 = zext i480 %r210 to i512 +%r213 = getelementptr i32, i32* %r4, i32 15 %r214 = load i32, i32* %r213 -%r215 = zext i32 %r214 to i480 -%r216 = shl i480 %r215, 448 -%r217 = or i480 %r211, %r216 -%r218 = zext i480 %r217 to i512 -%r220 = getelementptr i32, i32* %r4, i32 15 -%r221 = load i32, i32* %r220 -%r222 = zext i32 %r221 to i512 -%r223 = shl i512 %r222, 480 -%r224 = or i512 %r218, %r223 -%r225 = zext i512 %r224 to i544 -%r227 = getelementptr i32, i32* %r4, i32 16 -%r228 = load i32, i32* %r227 -%r229 = zext i32 %r228 to i544 -%r230 = shl i544 %r229, 512 -%r231 = or i544 %r225, %r230 -%r232 = zext i544 %r231 to i576 -%r233 = sub i576 %r118, %r232 -%r234 = trunc i576 %r233 to i544 -%r235 = trunc i544 %r234 to i32 -%r237 = getelementptr i32, i32* %r2, i32 0 -store i32 %r235, i32* %r237 -%r238 = lshr i544 %r234, 32 -%r239 = trunc i544 %r238 to i32 -%r241 = getelementptr i32, i32* %r2, i32 1 -store i32 %r239, i32* %r241 -%r242 = lshr i544 %r238, 32 -%r243 = trunc i544 %r242 to i32 -%r245 = getelementptr i32, i32* %r2, i32 2 -store i32 %r243, i32* %r245 -%r246 = lshr i544 %r242, 32 -%r247 = trunc i544 %r246 to i32 -%r249 = getelementptr i32, i32* %r2, i32 3 -store i32 %r247, i32* %r249 -%r250 = lshr i544 %r246, 32 -%r251 = trunc i544 %r250 to i32 -%r253 = getelementptr i32, i32* %r2, i32 4 -store i32 %r251, i32* %r253 -%r254 = lshr i544 %r250, 32 -%r255 = trunc i544 %r254 to i32 -%r257 = getelementptr i32, i32* %r2, i32 5 -store i32 %r255, i32* %r257 -%r258 = lshr i544 %r254, 32 -%r259 = trunc i544 %r258 to i32 -%r261 = getelementptr i32, i32* %r2, i32 6 -store i32 %r259, i32* %r261 -%r262 = lshr i544 %r258, 32 -%r263 = trunc i544 %r262 to i32 -%r265 = getelementptr i32, i32* %r2, i32 7 -store i32 %r263, i32* %r265 -%r266 = lshr i544 %r262, 32 -%r267 = trunc i544 %r266 to i32 -%r269 = getelementptr i32, i32* %r2, i32 8 -store i32 %r267, i32* %r269 -%r270 = lshr i544 %r266, 32 -%r271 = trunc i544 %r270 to i32 -%r273 = getelementptr i32, i32* %r2, i32 9 -store i32 %r271, i32* %r273 -%r274 = lshr i544 %r270, 32 -%r275 = trunc i544 %r274 to i32 -%r277 = getelementptr i32, i32* %r2, i32 10 -store i32 %r275, i32* %r277 -%r278 = lshr i544 %r274, 32 -%r279 = trunc i544 %r278 to i32 -%r281 = getelementptr i32, i32* %r2, i32 11 -store i32 %r279, i32* %r281 -%r282 = lshr i544 %r278, 32 -%r283 = trunc i544 %r282 to i32 -%r285 = getelementptr i32, i32* %r2, i32 12 -store i32 %r283, i32* %r285 -%r286 = lshr i544 %r282, 32 -%r287 = trunc i544 %r286 to i32 -%r289 = getelementptr i32, i32* %r2, i32 13 -store i32 %r287, i32* %r289 -%r290 = lshr i544 %r286, 32 -%r291 = trunc i544 %r290 to i32 -%r293 = getelementptr i32, i32* %r2, i32 14 -store i32 %r291, i32* %r293 -%r294 = lshr i544 %r290, 32 -%r295 = trunc i544 %r294 to i32 -%r297 = getelementptr i32, i32* %r2, i32 15 -store i32 %r295, i32* %r297 -%r298 = lshr i544 %r294, 32 -%r299 = trunc i544 %r298 to i32 -%r301 = getelementptr i32, i32* %r2, i32 16 -store i32 %r299, i32* %r301 -%r302 = lshr i576 %r233, 544 -%r303 = trunc i576 %r302 to i32 -%r305 = and i32 %r303, 1 -ret i32 %r305 +%r215 = zext i32 %r214 to i512 +%r216 = shl i512 %r215, 480 +%r217 = or i512 %r211, %r216 +%r218 = zext i512 %r217 to i544 +%r219 = sub i544 %r111, %r218 +%r220 = trunc i544 %r219 to i512 +%r222 = getelementptr i32, i32* %r2, i32 0 +%r223 = trunc i512 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i512 %r220, 32 +%r226 = getelementptr i32, i32* %r2, i32 1 +%r227 = trunc i512 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i512 %r224, 32 +%r230 = getelementptr i32, i32* %r2, i32 2 +%r231 = trunc i512 %r228 to i32 +store i32 %r231, i32* %r230 +%r232 = lshr i512 %r228, 32 +%r234 = getelementptr i32, i32* %r2, i32 3 +%r235 = trunc i512 %r232 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i512 %r232, 32 +%r238 = getelementptr i32, i32* %r2, i32 4 +%r239 = trunc i512 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i512 %r236, 32 +%r242 = getelementptr i32, i32* %r2, i32 5 +%r243 = trunc i512 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i512 %r240, 32 +%r246 = getelementptr i32, i32* %r2, i32 6 +%r247 = trunc i512 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i512 %r244, 32 +%r250 = getelementptr i32, i32* %r2, i32 7 +%r251 = trunc i512 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i512 %r248, 32 +%r254 = getelementptr i32, i32* %r2, i32 8 +%r255 = trunc i512 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i512 %r252, 32 +%r258 = getelementptr i32, i32* %r2, i32 9 +%r259 = trunc i512 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i512 %r256, 32 +%r262 = getelementptr i32, i32* %r2, i32 10 +%r263 = trunc i512 %r260 to i32 +store i32 %r263, i32* %r262 +%r264 = lshr i512 %r260, 32 +%r266 = getelementptr i32, i32* %r2, i32 11 +%r267 = trunc i512 %r264 to i32 +store i32 %r267, i32* %r266 +%r268 = lshr i512 %r264, 32 +%r270 = getelementptr i32, i32* %r2, i32 12 +%r271 = trunc i512 %r268 to i32 +store i32 %r271, i32* %r270 +%r272 = lshr i512 %r268, 32 +%r274 = getelementptr i32, i32* %r2, i32 13 +%r275 = trunc i512 %r272 to i32 +store i32 %r275, i32* %r274 +%r276 = lshr i512 %r272, 32 +%r278 = getelementptr i32, i32* %r2, i32 14 +%r279 = trunc i512 %r276 to i32 +store i32 %r279, i32* %r278 +%r280 = lshr i512 %r276, 32 +%r282 = getelementptr i32, i32* %r2, i32 15 +%r283 = trunc i512 %r280 to i32 +store i32 %r283, i32* %r282 +%r285 = lshr i544 %r219, 512 +%r286 = trunc i544 %r285 to i32 +%r287 = and i32 %r286, 1 +ret i32 %r287 } -define void @mcl_fp_shr1_17L(i32* noalias %r1, i32* noalias %r2) +define void @mcl_fp_shr1_16L(i32* noalias %r1, i32* noalias %r2) { %r3 = load i32, i32* %r2 %r4 = zext i32 %r3 to i64 @@ -51271,83 +17665,73 @@ define void @mcl_fp_shr1_17L(i32* noalias %r1, i32* noalias %r2) %r106 = zext i32 %r105 to i512 %r107 = shl i512 %r106, 480 %r108 = or i512 %r102, %r107 -%r109 = zext i512 %r108 to i544 -%r111 = getelementptr i32, i32* %r2, i32 16 -%r112 = load i32, i32* %r111 -%r113 = zext i32 %r112 to i544 -%r114 = shl i544 %r113, 512 -%r115 = or i544 %r109, %r114 -%r116 = lshr i544 %r115, 1 -%r117 = trunc i544 %r116 to i32 -%r119 = getelementptr i32, i32* %r1, i32 0 -store i32 %r117, i32* %r119 -%r120 = lshr i544 %r116, 32 -%r121 = trunc i544 %r120 to i32 -%r123 = getelementptr i32, i32* %r1, i32 1 -store i32 %r121, i32* %r123 -%r124 = lshr i544 %r120, 32 -%r125 = trunc i544 %r124 to i32 -%r127 = getelementptr i32, i32* %r1, i32 2 -store i32 %r125, i32* %r127 -%r128 = lshr i544 %r124, 32 -%r129 = trunc i544 %r128 to i32 -%r131 = getelementptr i32, i32* %r1, i32 3 -store i32 %r129, i32* %r131 -%r132 = lshr i544 %r128, 32 -%r133 = trunc i544 %r132 to i32 -%r135 = getelementptr i32, i32* %r1, i32 4 -store i32 %r133, i32* %r135 -%r136 = lshr i544 %r132, 32 -%r137 = trunc i544 %r136 to i32 -%r139 = getelementptr i32, i32* %r1, i32 5 -store i32 %r137, i32* %r139 -%r140 = lshr i544 %r136, 32 -%r141 = trunc i544 %r140 to i32 -%r143 = getelementptr i32, i32* %r1, i32 6 -store i32 %r141, i32* %r143 -%r144 = lshr i544 %r140, 32 -%r145 = trunc i544 %r144 to i32 -%r147 = getelementptr i32, i32* %r1, i32 7 -store i32 %r145, i32* %r147 -%r148 = lshr i544 %r144, 32 -%r149 = trunc i544 %r148 to i32 -%r151 = getelementptr i32, i32* %r1, i32 8 -store i32 %r149, i32* %r151 -%r152 = lshr i544 %r148, 32 -%r153 = trunc i544 %r152 to i32 -%r155 = getelementptr i32, i32* %r1, i32 9 -store i32 %r153, i32* %r155 -%r156 = lshr i544 %r152, 32 -%r157 = trunc i544 %r156 to i32 -%r159 = getelementptr i32, i32* %r1, i32 10 -store i32 %r157, i32* %r159 -%r160 = lshr i544 %r156, 32 -%r161 = trunc i544 %r160 to i32 -%r163 = getelementptr i32, i32* %r1, i32 11 -store i32 %r161, i32* %r163 -%r164 = lshr i544 %r160, 32 -%r165 = trunc i544 %r164 to i32 -%r167 = getelementptr i32, i32* %r1, i32 12 -store i32 %r165, i32* %r167 -%r168 = lshr i544 %r164, 32 -%r169 = trunc i544 %r168 to i32 -%r171 = getelementptr i32, i32* %r1, i32 13 -store i32 %r169, i32* %r171 -%r172 = lshr i544 %r168, 32 -%r173 = trunc i544 %r172 to i32 -%r175 = getelementptr i32, i32* %r1, i32 14 -store i32 %r173, i32* %r175 -%r176 = lshr i544 %r172, 32 -%r177 = trunc i544 %r176 to i32 -%r179 = getelementptr i32, i32* %r1, i32 15 -store i32 %r177, i32* %r179 -%r180 = lshr i544 %r176, 32 -%r181 = trunc i544 %r180 to i32 -%r183 = getelementptr i32, i32* %r1, i32 16 -store i32 %r181, i32* %r183 +%r109 = lshr i512 %r108, 1 +%r111 = getelementptr i32, i32* %r1, i32 0 +%r112 = trunc i512 %r109 to i32 +store i32 %r112, i32* %r111 +%r113 = lshr i512 %r109, 32 +%r115 = getelementptr i32, i32* %r1, i32 1 +%r116 = trunc i512 %r113 to i32 +store i32 %r116, i32* %r115 +%r117 = lshr i512 %r113, 32 +%r119 = getelementptr i32, i32* %r1, i32 2 +%r120 = trunc i512 %r117 to i32 +store i32 %r120, i32* %r119 +%r121 = lshr i512 %r117, 32 +%r123 = getelementptr i32, i32* %r1, i32 3 +%r124 = trunc i512 %r121 to i32 +store i32 %r124, i32* %r123 +%r125 = lshr i512 %r121, 32 +%r127 = getelementptr i32, i32* %r1, i32 4 +%r128 = trunc i512 %r125 to i32 +store i32 %r128, i32* %r127 +%r129 = lshr i512 %r125, 32 +%r131 = getelementptr i32, i32* %r1, i32 5 +%r132 = trunc i512 %r129 to i32 +store i32 %r132, i32* %r131 +%r133 = lshr i512 %r129, 32 +%r135 = getelementptr i32, i32* %r1, i32 6 +%r136 = trunc i512 %r133 to i32 +store i32 %r136, i32* %r135 +%r137 = lshr i512 %r133, 32 +%r139 = getelementptr i32, i32* %r1, i32 7 +%r140 = trunc i512 %r137 to i32 +store i32 %r140, i32* %r139 +%r141 = lshr i512 %r137, 32 +%r143 = getelementptr i32, i32* %r1, i32 8 +%r144 = trunc i512 %r141 to i32 +store i32 %r144, i32* %r143 +%r145 = lshr i512 %r141, 32 +%r147 = getelementptr i32, i32* %r1, i32 9 +%r148 = trunc i512 %r145 to i32 +store i32 %r148, i32* %r147 +%r149 = lshr i512 %r145, 32 +%r151 = getelementptr i32, i32* %r1, i32 10 +%r152 = trunc i512 %r149 to i32 +store i32 %r152, i32* %r151 +%r153 = lshr i512 %r149, 32 +%r155 = getelementptr i32, i32* %r1, i32 11 +%r156 = trunc i512 %r153 to i32 +store i32 %r156, i32* %r155 +%r157 = lshr i512 %r153, 32 +%r159 = getelementptr i32, i32* %r1, i32 12 +%r160 = trunc i512 %r157 to i32 +store i32 %r160, i32* %r159 +%r161 = lshr i512 %r157, 32 +%r163 = getelementptr i32, i32* %r1, i32 13 +%r164 = trunc i512 %r161 to i32 +store i32 %r164, i32* %r163 +%r165 = lshr i512 %r161, 32 +%r167 = getelementptr i32, i32* %r1, i32 14 +%r168 = trunc i512 %r165 to i32 +store i32 %r168, i32* %r167 +%r169 = lshr i512 %r165, 32 +%r171 = getelementptr i32, i32* %r1, i32 15 +%r172 = trunc i512 %r169 to i32 +store i32 %r172, i32* %r171 ret void } -define void @mcl_fp_add17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_add16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -51440,356 +17824,330 @@ define void @mcl_fp_add17L(i32* noalias %r1, i32* noalias %r2, i32* noalias % %r108 = zext i32 %r107 to i512 %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = load i32, i32* %r3 -%r119 = zext i32 %r118 to i64 -%r121 = getelementptr i32, i32* %r3, i32 1 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i64 -%r124 = shl i64 %r123, 32 -%r125 = or i64 %r119, %r124 -%r126 = zext i64 %r125 to i96 -%r128 = getelementptr i32, i32* %r3, i32 2 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i96 -%r131 = shl i96 %r130, 64 -%r132 = or i96 %r126, %r131 -%r133 = zext i96 %r132 to i128 -%r135 = getelementptr i32, i32* %r3, i32 3 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i128 -%r138 = shl i128 %r137, 96 -%r139 = or i128 %r133, %r138 -%r140 = zext i128 %r139 to i160 -%r142 = getelementptr i32, i32* %r3, i32 4 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i160 -%r145 = shl i160 %r144, 128 -%r146 = or i160 %r140, %r145 -%r147 = zext i160 %r146 to i192 -%r149 = getelementptr i32, i32* %r3, i32 5 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i192 -%r152 = shl i192 %r151, 160 -%r153 = or i192 %r147, %r152 -%r154 = zext i192 %r153 to i224 -%r156 = getelementptr i32, i32* %r3, i32 6 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i224 -%r159 = shl i224 %r158, 192 -%r160 = or i224 %r154, %r159 -%r161 = zext i224 %r160 to i256 -%r163 = getelementptr i32, i32* %r3, i32 7 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i256 -%r166 = shl i256 %r165, 224 -%r167 = or i256 %r161, %r166 -%r168 = zext i256 %r167 to i288 -%r170 = getelementptr i32, i32* %r3, i32 8 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i288 -%r173 = shl i288 %r172, 256 -%r174 = or i288 %r168, %r173 -%r175 = zext i288 %r174 to i320 -%r177 = getelementptr i32, i32* %r3, i32 9 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i320 -%r180 = shl i320 %r179, 288 -%r181 = or i320 %r175, %r180 -%r182 = zext i320 %r181 to i352 -%r184 = getelementptr i32, i32* %r3, i32 10 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i352 -%r187 = shl i352 %r186, 320 -%r188 = or i352 %r182, %r187 -%r189 = zext i352 %r188 to i384 -%r191 = getelementptr i32, i32* %r3, i32 11 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 %r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i384 -%r194 = shl i384 %r193, 352 -%r195 = or i384 %r189, %r194 -%r196 = zext i384 %r195 to i416 -%r198 = getelementptr i32, i32* %r3, i32 12 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 %r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i416 -%r201 = shl i416 %r200, 384 -%r202 = or i416 %r196, %r201 -%r203 = zext i416 %r202 to i448 -%r205 = getelementptr i32, i32* %r3, i32 13 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 %r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i448 -%r208 = shl i448 %r207, 416 -%r209 = or i448 %r203, %r208 -%r210 = zext i448 %r209 to i480 -%r212 = getelementptr i32, i32* %r3, i32 14 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 %r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i480 -%r215 = shl i480 %r214, 448 -%r216 = or i480 %r210, %r215 -%r217 = zext i480 %r216 to i512 -%r219 = getelementptr i32, i32* %r3, i32 15 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i512 -%r222 = shl i512 %r221, 480 -%r223 = or i512 %r217, %r222 -%r224 = zext i512 %r223 to i544 -%r226 = getelementptr i32, i32* %r3, i32 16 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i544 -%r229 = shl i544 %r228, 512 -%r230 = or i544 %r224, %r229 -%r231 = zext i544 %r117 to i576 -%r232 = zext i544 %r230 to i576 -%r233 = add i576 %r231, %r232 -%r234 = trunc i576 %r233 to i544 -%r235 = trunc i544 %r234 to i32 -%r237 = getelementptr i32, i32* %r1, i32 0 -store i32 %r235, i32* %r237 -%r238 = lshr i544 %r234, 32 -%r239 = trunc i544 %r238 to i32 -%r241 = getelementptr i32, i32* %r1, i32 1 -store i32 %r239, i32* %r241 -%r242 = lshr i544 %r238, 32 -%r243 = trunc i544 %r242 to i32 -%r245 = getelementptr i32, i32* %r1, i32 2 -store i32 %r243, i32* %r245 -%r246 = lshr i544 %r242, 32 -%r247 = trunc i544 %r246 to i32 -%r249 = getelementptr i32, i32* %r1, i32 3 -store i32 %r247, i32* %r249 -%r250 = lshr i544 %r246, 32 -%r251 = trunc i544 %r250 to i32 -%r253 = getelementptr i32, i32* %r1, i32 4 -store i32 %r251, i32* %r253 -%r254 = lshr i544 %r250, 32 -%r255 = trunc i544 %r254 to i32 -%r257 = getelementptr i32, i32* %r1, i32 5 -store i32 %r255, i32* %r257 -%r258 = lshr i544 %r254, 32 -%r259 = trunc i544 %r258 to i32 -%r261 = getelementptr i32, i32* %r1, i32 6 -store i32 %r259, i32* %r261 -%r262 = lshr i544 %r258, 32 -%r263 = trunc i544 %r262 to i32 -%r265 = getelementptr i32, i32* %r1, i32 7 -store i32 %r263, i32* %r265 -%r266 = lshr i544 %r262, 32 -%r267 = trunc i544 %r266 to i32 -%r269 = getelementptr i32, i32* %r1, i32 8 -store i32 %r267, i32* %r269 -%r270 = lshr i544 %r266, 32 -%r271 = trunc i544 %r270 to i32 -%r273 = getelementptr i32, i32* %r1, i32 9 -store i32 %r271, i32* %r273 -%r274 = lshr i544 %r270, 32 -%r275 = trunc i544 %r274 to i32 -%r277 = getelementptr i32, i32* %r1, i32 10 -store i32 %r275, i32* %r277 -%r278 = lshr i544 %r274, 32 -%r279 = trunc i544 %r278 to i32 -%r281 = getelementptr i32, i32* %r1, i32 11 -store i32 %r279, i32* %r281 -%r282 = lshr i544 %r278, 32 -%r283 = trunc i544 %r282 to i32 -%r285 = getelementptr i32, i32* %r1, i32 12 -store i32 %r283, i32* %r285 -%r286 = lshr i544 %r282, 32 -%r287 = trunc i544 %r286 to i32 -%r289 = getelementptr i32, i32* %r1, i32 13 -store i32 %r287, i32* %r289 -%r290 = lshr i544 %r286, 32 -%r291 = trunc i544 %r290 to i32 -%r293 = getelementptr i32, i32* %r1, i32 14 -store i32 %r291, i32* %r293 -%r294 = lshr i544 %r290, 32 -%r295 = trunc i544 %r294 to i32 -%r297 = getelementptr i32, i32* %r1, i32 15 -store i32 %r295, i32* %r297 -%r298 = lshr i544 %r294, 32 -%r299 = trunc i544 %r298 to i32 -%r301 = getelementptr i32, i32* %r1, i32 16 -store i32 %r299, i32* %r301 -%r302 = load i32, i32* %r4 -%r303 = zext i32 %r302 to i64 -%r305 = getelementptr i32, i32* %r4, i32 1 -%r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i64 -%r308 = shl i64 %r307, 32 -%r309 = or i64 %r303, %r308 -%r310 = zext i64 %r309 to i96 -%r312 = getelementptr i32, i32* %r4, i32 2 -%r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i96 -%r315 = shl i96 %r314, 64 -%r316 = or i96 %r310, %r315 -%r317 = zext i96 %r316 to i128 -%r319 = getelementptr i32, i32* %r4, i32 3 -%r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i128 -%r322 = shl i128 %r321, 96 -%r323 = or i128 %r317, %r322 -%r324 = zext i128 %r323 to i160 -%r326 = getelementptr i32, i32* %r4, i32 4 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i160 -%r329 = shl i160 %r328, 128 -%r330 = or i160 %r324, %r329 -%r331 = zext i160 %r330 to i192 -%r333 = getelementptr i32, i32* %r4, i32 5 -%r334 = load i32, i32* %r333 -%r335 = zext i32 %r334 to i192 -%r336 = shl i192 %r335, 160 -%r337 = or i192 %r331, %r336 -%r338 = zext i192 %r337 to i224 -%r340 = getelementptr i32, i32* %r4, i32 6 -%r341 = load i32, i32* %r340 -%r342 = zext i32 %r341 to i224 -%r343 = shl i224 %r342, 192 -%r344 = or i224 %r338, %r343 -%r345 = zext i224 %r344 to i256 -%r347 = getelementptr i32, i32* %r4, i32 7 -%r348 = load i32, i32* %r347 -%r349 = zext i32 %r348 to i256 -%r350 = shl i256 %r349, 224 -%r351 = or i256 %r345, %r350 -%r352 = zext i256 %r351 to i288 -%r354 = getelementptr i32, i32* %r4, i32 8 -%r355 = load i32, i32* %r354 -%r356 = zext i32 %r355 to i288 -%r357 = shl i288 %r356, 256 -%r358 = or i288 %r352, %r357 -%r359 = zext i288 %r358 to i320 -%r361 = getelementptr i32, i32* %r4, i32 9 -%r362 = load i32, i32* %r361 -%r363 = zext i32 %r362 to i320 -%r364 = shl i320 %r363, 288 -%r365 = or i320 %r359, %r364 -%r366 = zext i320 %r365 to i352 -%r368 = getelementptr i32, i32* %r4, i32 10 -%r369 = load i32, i32* %r368 -%r370 = zext i32 %r369 to i352 -%r371 = shl i352 %r370, 320 -%r372 = or i352 %r366, %r371 -%r373 = zext i352 %r372 to i384 -%r375 = getelementptr i32, i32* %r4, i32 11 -%r376 = load i32, i32* %r375 -%r377 = zext i32 %r376 to i384 -%r378 = shl i384 %r377, 352 -%r379 = or i384 %r373, %r378 -%r380 = zext i384 %r379 to i416 -%r382 = getelementptr i32, i32* %r4, i32 12 -%r383 = load i32, i32* %r382 -%r384 = zext i32 %r383 to i416 -%r385 = shl i416 %r384, 384 -%r386 = or i416 %r380, %r385 -%r387 = zext i416 %r386 to i448 -%r389 = getelementptr i32, i32* %r4, i32 13 -%r390 = load i32, i32* %r389 -%r391 = zext i32 %r390 to i448 -%r392 = shl i448 %r391, 416 -%r393 = or i448 %r387, %r392 -%r394 = zext i448 %r393 to i480 -%r396 = getelementptr i32, i32* %r4, i32 14 -%r397 = load i32, i32* %r396 -%r398 = zext i32 %r397 to i480 -%r399 = shl i480 %r398, 448 -%r400 = or i480 %r394, %r399 -%r401 = zext i480 %r400 to i512 -%r403 = getelementptr i32, i32* %r4, i32 15 -%r404 = load i32, i32* %r403 -%r405 = zext i32 %r404 to i512 -%r406 = shl i512 %r405, 480 -%r407 = or i512 %r401, %r406 -%r408 = zext i512 %r407 to i544 -%r410 = getelementptr i32, i32* %r4, i32 16 -%r411 = load i32, i32* %r410 -%r412 = zext i32 %r411 to i544 -%r413 = shl i544 %r412, 512 -%r414 = or i544 %r408, %r413 -%r415 = zext i544 %r414 to i576 -%r416 = sub i576 %r233, %r415 -%r417 = lshr i576 %r416, 544 -%r418 = trunc i576 %r417 to i1 -br i1%r418, label %carry, label %nocarry +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = zext i512 %r110 to i544 +%r218 = zext i512 %r216 to i544 +%r219 = add i544 %r217, %r218 +%r220 = trunc i544 %r219 to i512 +%r222 = getelementptr i32, i32* %r1, i32 0 +%r223 = trunc i512 %r220 to i32 +store i32 %r223, i32* %r222 +%r224 = lshr i512 %r220, 32 +%r226 = getelementptr i32, i32* %r1, i32 1 +%r227 = trunc i512 %r224 to i32 +store i32 %r227, i32* %r226 +%r228 = lshr i512 %r224, 32 +%r230 = getelementptr i32, i32* %r1, i32 2 +%r231 = trunc i512 %r228 to i32 +store i32 %r231, i32* %r230 +%r232 = lshr i512 %r228, 32 +%r234 = getelementptr i32, i32* %r1, i32 3 +%r235 = trunc i512 %r232 to i32 +store i32 %r235, i32* %r234 +%r236 = lshr i512 %r232, 32 +%r238 = getelementptr i32, i32* %r1, i32 4 +%r239 = trunc i512 %r236 to i32 +store i32 %r239, i32* %r238 +%r240 = lshr i512 %r236, 32 +%r242 = getelementptr i32, i32* %r1, i32 5 +%r243 = trunc i512 %r240 to i32 +store i32 %r243, i32* %r242 +%r244 = lshr i512 %r240, 32 +%r246 = getelementptr i32, i32* %r1, i32 6 +%r247 = trunc i512 %r244 to i32 +store i32 %r247, i32* %r246 +%r248 = lshr i512 %r244, 32 +%r250 = getelementptr i32, i32* %r1, i32 7 +%r251 = trunc i512 %r248 to i32 +store i32 %r251, i32* %r250 +%r252 = lshr i512 %r248, 32 +%r254 = getelementptr i32, i32* %r1, i32 8 +%r255 = trunc i512 %r252 to i32 +store i32 %r255, i32* %r254 +%r256 = lshr i512 %r252, 32 +%r258 = getelementptr i32, i32* %r1, i32 9 +%r259 = trunc i512 %r256 to i32 +store i32 %r259, i32* %r258 +%r260 = lshr i512 %r256, 32 +%r262 = getelementptr i32, i32* %r1, i32 10 +%r263 = trunc i512 %r260 to i32 +store i32 %r263, i32* %r262 +%r264 = lshr i512 %r260, 32 +%r266 = getelementptr i32, i32* %r1, i32 11 +%r267 = trunc i512 %r264 to i32 +store i32 %r267, i32* %r266 +%r268 = lshr i512 %r264, 32 +%r270 = getelementptr i32, i32* %r1, i32 12 +%r271 = trunc i512 %r268 to i32 +store i32 %r271, i32* %r270 +%r272 = lshr i512 %r268, 32 +%r274 = getelementptr i32, i32* %r1, i32 13 +%r275 = trunc i512 %r272 to i32 +store i32 %r275, i32* %r274 +%r276 = lshr i512 %r272, 32 +%r278 = getelementptr i32, i32* %r1, i32 14 +%r279 = trunc i512 %r276 to i32 +store i32 %r279, i32* %r278 +%r280 = lshr i512 %r276, 32 +%r282 = getelementptr i32, i32* %r1, i32 15 +%r283 = trunc i512 %r280 to i32 +store i32 %r283, i32* %r282 +%r284 = load i32, i32* %r4 +%r285 = zext i32 %r284 to i64 +%r287 = getelementptr i32, i32* %r4, i32 1 +%r288 = load i32, i32* %r287 +%r289 = zext i32 %r288 to i64 +%r290 = shl i64 %r289, 32 +%r291 = or i64 %r285, %r290 +%r292 = zext i64 %r291 to i96 +%r294 = getelementptr i32, i32* %r4, i32 2 +%r295 = load i32, i32* %r294 +%r296 = zext i32 %r295 to i96 +%r297 = shl i96 %r296, 64 +%r298 = or i96 %r292, %r297 +%r299 = zext i96 %r298 to i128 +%r301 = getelementptr i32, i32* %r4, i32 3 +%r302 = load i32, i32* %r301 +%r303 = zext i32 %r302 to i128 +%r304 = shl i128 %r303, 96 +%r305 = or i128 %r299, %r304 +%r306 = zext i128 %r305 to i160 +%r308 = getelementptr i32, i32* %r4, i32 4 +%r309 = load i32, i32* %r308 +%r310 = zext i32 %r309 to i160 +%r311 = shl i160 %r310, 128 +%r312 = or i160 %r306, %r311 +%r313 = zext i160 %r312 to i192 +%r315 = getelementptr i32, i32* %r4, i32 5 +%r316 = load i32, i32* %r315 +%r317 = zext i32 %r316 to i192 +%r318 = shl i192 %r317, 160 +%r319 = or i192 %r313, %r318 +%r320 = zext i192 %r319 to i224 +%r322 = getelementptr i32, i32* %r4, i32 6 +%r323 = load i32, i32* %r322 +%r324 = zext i32 %r323 to i224 +%r325 = shl i224 %r324, 192 +%r326 = or i224 %r320, %r325 +%r327 = zext i224 %r326 to i256 +%r329 = getelementptr i32, i32* %r4, i32 7 +%r330 = load i32, i32* %r329 +%r331 = zext i32 %r330 to i256 +%r332 = shl i256 %r331, 224 +%r333 = or i256 %r327, %r332 +%r334 = zext i256 %r333 to i288 +%r336 = getelementptr i32, i32* %r4, i32 8 +%r337 = load i32, i32* %r336 +%r338 = zext i32 %r337 to i288 +%r339 = shl i288 %r338, 256 +%r340 = or i288 %r334, %r339 +%r341 = zext i288 %r340 to i320 +%r343 = getelementptr i32, i32* %r4, i32 9 +%r344 = load i32, i32* %r343 +%r345 = zext i32 %r344 to i320 +%r346 = shl i320 %r345, 288 +%r347 = or i320 %r341, %r346 +%r348 = zext i320 %r347 to i352 +%r350 = getelementptr i32, i32* %r4, i32 10 +%r351 = load i32, i32* %r350 +%r352 = zext i32 %r351 to i352 +%r353 = shl i352 %r352, 320 +%r354 = or i352 %r348, %r353 +%r355 = zext i352 %r354 to i384 +%r357 = getelementptr i32, i32* %r4, i32 11 +%r358 = load i32, i32* %r357 +%r359 = zext i32 %r358 to i384 +%r360 = shl i384 %r359, 352 +%r361 = or i384 %r355, %r360 +%r362 = zext i384 %r361 to i416 +%r364 = getelementptr i32, i32* %r4, i32 12 +%r365 = load i32, i32* %r364 +%r366 = zext i32 %r365 to i416 +%r367 = shl i416 %r366, 384 +%r368 = or i416 %r362, %r367 +%r369 = zext i416 %r368 to i448 +%r371 = getelementptr i32, i32* %r4, i32 13 +%r372 = load i32, i32* %r371 +%r373 = zext i32 %r372 to i448 +%r374 = shl i448 %r373, 416 +%r375 = or i448 %r369, %r374 +%r376 = zext i448 %r375 to i480 +%r378 = getelementptr i32, i32* %r4, i32 14 +%r379 = load i32, i32* %r378 +%r380 = zext i32 %r379 to i480 +%r381 = shl i480 %r380, 448 +%r382 = or i480 %r376, %r381 +%r383 = zext i480 %r382 to i512 +%r385 = getelementptr i32, i32* %r4, i32 15 +%r386 = load i32, i32* %r385 +%r387 = zext i32 %r386 to i512 +%r388 = shl i512 %r387, 480 +%r389 = or i512 %r383, %r388 +%r390 = zext i512 %r389 to i544 +%r391 = sub i544 %r219, %r390 +%r392 = lshr i544 %r391, 512 +%r393 = trunc i544 %r392 to i1 +br i1%r393, label %carry, label %nocarry nocarry: -%r419 = trunc i576 %r416 to i544 -%r420 = trunc i544 %r419 to i32 -%r422 = getelementptr i32, i32* %r1, i32 0 -store i32 %r420, i32* %r422 -%r423 = lshr i544 %r419, 32 -%r424 = trunc i544 %r423 to i32 -%r426 = getelementptr i32, i32* %r1, i32 1 -store i32 %r424, i32* %r426 -%r427 = lshr i544 %r423, 32 -%r428 = trunc i544 %r427 to i32 -%r430 = getelementptr i32, i32* %r1, i32 2 -store i32 %r428, i32* %r430 -%r431 = lshr i544 %r427, 32 -%r432 = trunc i544 %r431 to i32 -%r434 = getelementptr i32, i32* %r1, i32 3 -store i32 %r432, i32* %r434 -%r435 = lshr i544 %r431, 32 -%r436 = trunc i544 %r435 to i32 -%r438 = getelementptr i32, i32* %r1, i32 4 -store i32 %r436, i32* %r438 -%r439 = lshr i544 %r435, 32 -%r440 = trunc i544 %r439 to i32 -%r442 = getelementptr i32, i32* %r1, i32 5 -store i32 %r440, i32* %r442 -%r443 = lshr i544 %r439, 32 -%r444 = trunc i544 %r443 to i32 -%r446 = getelementptr i32, i32* %r1, i32 6 -store i32 %r444, i32* %r446 -%r447 = lshr i544 %r443, 32 -%r448 = trunc i544 %r447 to i32 -%r450 = getelementptr i32, i32* %r1, i32 7 -store i32 %r448, i32* %r450 -%r451 = lshr i544 %r447, 32 -%r452 = trunc i544 %r451 to i32 -%r454 = getelementptr i32, i32* %r1, i32 8 -store i32 %r452, i32* %r454 -%r455 = lshr i544 %r451, 32 -%r456 = trunc i544 %r455 to i32 -%r458 = getelementptr i32, i32* %r1, i32 9 -store i32 %r456, i32* %r458 -%r459 = lshr i544 %r455, 32 -%r460 = trunc i544 %r459 to i32 -%r462 = getelementptr i32, i32* %r1, i32 10 -store i32 %r460, i32* %r462 -%r463 = lshr i544 %r459, 32 -%r464 = trunc i544 %r463 to i32 -%r466 = getelementptr i32, i32* %r1, i32 11 -store i32 %r464, i32* %r466 -%r467 = lshr i544 %r463, 32 -%r468 = trunc i544 %r467 to i32 -%r470 = getelementptr i32, i32* %r1, i32 12 -store i32 %r468, i32* %r470 -%r471 = lshr i544 %r467, 32 -%r472 = trunc i544 %r471 to i32 -%r474 = getelementptr i32, i32* %r1, i32 13 -store i32 %r472, i32* %r474 -%r475 = lshr i544 %r471, 32 -%r476 = trunc i544 %r475 to i32 -%r478 = getelementptr i32, i32* %r1, i32 14 -store i32 %r476, i32* %r478 -%r479 = lshr i544 %r475, 32 -%r480 = trunc i544 %r479 to i32 -%r482 = getelementptr i32, i32* %r1, i32 15 -store i32 %r480, i32* %r482 -%r483 = lshr i544 %r479, 32 -%r484 = trunc i544 %r483 to i32 -%r486 = getelementptr i32, i32* %r1, i32 16 -store i32 %r484, i32* %r486 +%r394 = trunc i544 %r391 to i512 +%r396 = getelementptr i32, i32* %r1, i32 0 +%r397 = trunc i512 %r394 to i32 +store i32 %r397, i32* %r396 +%r398 = lshr i512 %r394, 32 +%r400 = getelementptr i32, i32* %r1, i32 1 +%r401 = trunc i512 %r398 to i32 +store i32 %r401, i32* %r400 +%r402 = lshr i512 %r398, 32 +%r404 = getelementptr i32, i32* %r1, i32 2 +%r405 = trunc i512 %r402 to i32 +store i32 %r405, i32* %r404 +%r406 = lshr i512 %r402, 32 +%r408 = getelementptr i32, i32* %r1, i32 3 +%r409 = trunc i512 %r406 to i32 +store i32 %r409, i32* %r408 +%r410 = lshr i512 %r406, 32 +%r412 = getelementptr i32, i32* %r1, i32 4 +%r413 = trunc i512 %r410 to i32 +store i32 %r413, i32* %r412 +%r414 = lshr i512 %r410, 32 +%r416 = getelementptr i32, i32* %r1, i32 5 +%r417 = trunc i512 %r414 to i32 +store i32 %r417, i32* %r416 +%r418 = lshr i512 %r414, 32 +%r420 = getelementptr i32, i32* %r1, i32 6 +%r421 = trunc i512 %r418 to i32 +store i32 %r421, i32* %r420 +%r422 = lshr i512 %r418, 32 +%r424 = getelementptr i32, i32* %r1, i32 7 +%r425 = trunc i512 %r422 to i32 +store i32 %r425, i32* %r424 +%r426 = lshr i512 %r422, 32 +%r428 = getelementptr i32, i32* %r1, i32 8 +%r429 = trunc i512 %r426 to i32 +store i32 %r429, i32* %r428 +%r430 = lshr i512 %r426, 32 +%r432 = getelementptr i32, i32* %r1, i32 9 +%r433 = trunc i512 %r430 to i32 +store i32 %r433, i32* %r432 +%r434 = lshr i512 %r430, 32 +%r436 = getelementptr i32, i32* %r1, i32 10 +%r437 = trunc i512 %r434 to i32 +store i32 %r437, i32* %r436 +%r438 = lshr i512 %r434, 32 +%r440 = getelementptr i32, i32* %r1, i32 11 +%r441 = trunc i512 %r438 to i32 +store i32 %r441, i32* %r440 +%r442 = lshr i512 %r438, 32 +%r444 = getelementptr i32, i32* %r1, i32 12 +%r445 = trunc i512 %r442 to i32 +store i32 %r445, i32* %r444 +%r446 = lshr i512 %r442, 32 +%r448 = getelementptr i32, i32* %r1, i32 13 +%r449 = trunc i512 %r446 to i32 +store i32 %r449, i32* %r448 +%r450 = lshr i512 %r446, 32 +%r452 = getelementptr i32, i32* %r1, i32 14 +%r453 = trunc i512 %r450 to i32 +store i32 %r453, i32* %r452 +%r454 = lshr i512 %r450, 32 +%r456 = getelementptr i32, i32* %r1, i32 15 +%r457 = trunc i512 %r454 to i32 +store i32 %r457, i32* %r456 ret void carry: ret void } -define void @mcl_fp_addNF17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_addNF16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -51882,281 +18240,259 @@ define void @mcl_fp_addNF17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r108 = zext i32 %r107 to i512 %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = load i32, i32* %r3 -%r119 = zext i32 %r118 to i64 -%r121 = getelementptr i32, i32* %r3, i32 1 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i64 -%r124 = shl i64 %r123, 32 -%r125 = or i64 %r119, %r124 -%r126 = zext i64 %r125 to i96 -%r128 = getelementptr i32, i32* %r3, i32 2 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i96 -%r131 = shl i96 %r130, 64 -%r132 = or i96 %r126, %r131 -%r133 = zext i96 %r132 to i128 -%r135 = getelementptr i32, i32* %r3, i32 3 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i128 -%r138 = shl i128 %r137, 96 -%r139 = or i128 %r133, %r138 -%r140 = zext i128 %r139 to i160 -%r142 = getelementptr i32, i32* %r3, i32 4 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i160 -%r145 = shl i160 %r144, 128 -%r146 = or i160 %r140, %r145 -%r147 = zext i160 %r146 to i192 -%r149 = getelementptr i32, i32* %r3, i32 5 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i192 -%r152 = shl i192 %r151, 160 -%r153 = or i192 %r147, %r152 -%r154 = zext i192 %r153 to i224 -%r156 = getelementptr i32, i32* %r3, i32 6 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i224 -%r159 = shl i224 %r158, 192 -%r160 = or i224 %r154, %r159 -%r161 = zext i224 %r160 to i256 -%r163 = getelementptr i32, i32* %r3, i32 7 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i256 -%r166 = shl i256 %r165, 224 -%r167 = or i256 %r161, %r166 -%r168 = zext i256 %r167 to i288 -%r170 = getelementptr i32, i32* %r3, i32 8 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i288 -%r173 = shl i288 %r172, 256 -%r174 = or i288 %r168, %r173 -%r175 = zext i288 %r174 to i320 -%r177 = getelementptr i32, i32* %r3, i32 9 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i320 -%r180 = shl i320 %r179, 288 -%r181 = or i320 %r175, %r180 -%r182 = zext i320 %r181 to i352 -%r184 = getelementptr i32, i32* %r3, i32 10 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i352 -%r187 = shl i352 %r186, 320 -%r188 = or i352 %r182, %r187 -%r189 = zext i352 %r188 to i384 -%r191 = getelementptr i32, i32* %r3, i32 11 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 %r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i384 -%r194 = shl i384 %r193, 352 -%r195 = or i384 %r189, %r194 -%r196 = zext i384 %r195 to i416 -%r198 = getelementptr i32, i32* %r3, i32 12 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 %r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i416 -%r201 = shl i416 %r200, 384 -%r202 = or i416 %r196, %r201 -%r203 = zext i416 %r202 to i448 -%r205 = getelementptr i32, i32* %r3, i32 13 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 %r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i448 -%r208 = shl i448 %r207, 416 -%r209 = or i448 %r203, %r208 -%r210 = zext i448 %r209 to i480 -%r212 = getelementptr i32, i32* %r3, i32 14 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 %r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i480 -%r215 = shl i480 %r214, 448 -%r216 = or i480 %r210, %r215 -%r217 = zext i480 %r216 to i512 -%r219 = getelementptr i32, i32* %r3, i32 15 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i512 -%r222 = shl i512 %r221, 480 -%r223 = or i512 %r217, %r222 -%r224 = zext i512 %r223 to i544 -%r226 = getelementptr i32, i32* %r3, i32 16 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i544 -%r229 = shl i544 %r228, 512 -%r230 = or i544 %r224, %r229 -%r231 = add i544 %r117, %r230 -%r232 = load i32, i32* %r4 -%r233 = zext i32 %r232 to i64 -%r235 = getelementptr i32, i32* %r4, i32 1 +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = add i512 %r110, %r216 +%r218 = load i32, i32* %r4 +%r219 = zext i32 %r218 to i64 +%r221 = getelementptr i32, i32* %r4, i32 1 +%r222 = load i32, i32* %r221 +%r223 = zext i32 %r222 to i64 +%r224 = shl i64 %r223, 32 +%r225 = or i64 %r219, %r224 +%r226 = zext i64 %r225 to i96 +%r228 = getelementptr i32, i32* %r4, i32 2 +%r229 = load i32, i32* %r228 +%r230 = zext i32 %r229 to i96 +%r231 = shl i96 %r230, 64 +%r232 = or i96 %r226, %r231 +%r233 = zext i96 %r232 to i128 +%r235 = getelementptr i32, i32* %r4, i32 3 %r236 = load i32, i32* %r235 -%r237 = zext i32 %r236 to i64 -%r238 = shl i64 %r237, 32 -%r239 = or i64 %r233, %r238 -%r240 = zext i64 %r239 to i96 -%r242 = getelementptr i32, i32* %r4, i32 2 +%r237 = zext i32 %r236 to i128 +%r238 = shl i128 %r237, 96 +%r239 = or i128 %r233, %r238 +%r240 = zext i128 %r239 to i160 +%r242 = getelementptr i32, i32* %r4, i32 4 %r243 = load i32, i32* %r242 -%r244 = zext i32 %r243 to i96 -%r245 = shl i96 %r244, 64 -%r246 = or i96 %r240, %r245 -%r247 = zext i96 %r246 to i128 -%r249 = getelementptr i32, i32* %r4, i32 3 +%r244 = zext i32 %r243 to i160 +%r245 = shl i160 %r244, 128 +%r246 = or i160 %r240, %r245 +%r247 = zext i160 %r246 to i192 +%r249 = getelementptr i32, i32* %r4, i32 5 %r250 = load i32, i32* %r249 -%r251 = zext i32 %r250 to i128 -%r252 = shl i128 %r251, 96 -%r253 = or i128 %r247, %r252 -%r254 = zext i128 %r253 to i160 -%r256 = getelementptr i32, i32* %r4, i32 4 +%r251 = zext i32 %r250 to i192 +%r252 = shl i192 %r251, 160 +%r253 = or i192 %r247, %r252 +%r254 = zext i192 %r253 to i224 +%r256 = getelementptr i32, i32* %r4, i32 6 %r257 = load i32, i32* %r256 -%r258 = zext i32 %r257 to i160 -%r259 = shl i160 %r258, 128 -%r260 = or i160 %r254, %r259 -%r261 = zext i160 %r260 to i192 -%r263 = getelementptr i32, i32* %r4, i32 5 +%r258 = zext i32 %r257 to i224 +%r259 = shl i224 %r258, 192 +%r260 = or i224 %r254, %r259 +%r261 = zext i224 %r260 to i256 +%r263 = getelementptr i32, i32* %r4, i32 7 %r264 = load i32, i32* %r263 -%r265 = zext i32 %r264 to i192 -%r266 = shl i192 %r265, 160 -%r267 = or i192 %r261, %r266 -%r268 = zext i192 %r267 to i224 -%r270 = getelementptr i32, i32* %r4, i32 6 +%r265 = zext i32 %r264 to i256 +%r266 = shl i256 %r265, 224 +%r267 = or i256 %r261, %r266 +%r268 = zext i256 %r267 to i288 +%r270 = getelementptr i32, i32* %r4, i32 8 %r271 = load i32, i32* %r270 -%r272 = zext i32 %r271 to i224 -%r273 = shl i224 %r272, 192 -%r274 = or i224 %r268, %r273 -%r275 = zext i224 %r274 to i256 -%r277 = getelementptr i32, i32* %r4, i32 7 +%r272 = zext i32 %r271 to i288 +%r273 = shl i288 %r272, 256 +%r274 = or i288 %r268, %r273 +%r275 = zext i288 %r274 to i320 +%r277 = getelementptr i32, i32* %r4, i32 9 %r278 = load i32, i32* %r277 -%r279 = zext i32 %r278 to i256 -%r280 = shl i256 %r279, 224 -%r281 = or i256 %r275, %r280 -%r282 = zext i256 %r281 to i288 -%r284 = getelementptr i32, i32* %r4, i32 8 +%r279 = zext i32 %r278 to i320 +%r280 = shl i320 %r279, 288 +%r281 = or i320 %r275, %r280 +%r282 = zext i320 %r281 to i352 +%r284 = getelementptr i32, i32* %r4, i32 10 %r285 = load i32, i32* %r284 -%r286 = zext i32 %r285 to i288 -%r287 = shl i288 %r286, 256 -%r288 = or i288 %r282, %r287 -%r289 = zext i288 %r288 to i320 -%r291 = getelementptr i32, i32* %r4, i32 9 +%r286 = zext i32 %r285 to i352 +%r287 = shl i352 %r286, 320 +%r288 = or i352 %r282, %r287 +%r289 = zext i352 %r288 to i384 +%r291 = getelementptr i32, i32* %r4, i32 11 %r292 = load i32, i32* %r291 -%r293 = zext i32 %r292 to i320 -%r294 = shl i320 %r293, 288 -%r295 = or i320 %r289, %r294 -%r296 = zext i320 %r295 to i352 -%r298 = getelementptr i32, i32* %r4, i32 10 +%r293 = zext i32 %r292 to i384 +%r294 = shl i384 %r293, 352 +%r295 = or i384 %r289, %r294 +%r296 = zext i384 %r295 to i416 +%r298 = getelementptr i32, i32* %r4, i32 12 %r299 = load i32, i32* %r298 -%r300 = zext i32 %r299 to i352 -%r301 = shl i352 %r300, 320 -%r302 = or i352 %r296, %r301 -%r303 = zext i352 %r302 to i384 -%r305 = getelementptr i32, i32* %r4, i32 11 +%r300 = zext i32 %r299 to i416 +%r301 = shl i416 %r300, 384 +%r302 = or i416 %r296, %r301 +%r303 = zext i416 %r302 to i448 +%r305 = getelementptr i32, i32* %r4, i32 13 %r306 = load i32, i32* %r305 -%r307 = zext i32 %r306 to i384 -%r308 = shl i384 %r307, 352 -%r309 = or i384 %r303, %r308 -%r310 = zext i384 %r309 to i416 -%r312 = getelementptr i32, i32* %r4, i32 12 +%r307 = zext i32 %r306 to i448 +%r308 = shl i448 %r307, 416 +%r309 = or i448 %r303, %r308 +%r310 = zext i448 %r309 to i480 +%r312 = getelementptr i32, i32* %r4, i32 14 %r313 = load i32, i32* %r312 -%r314 = zext i32 %r313 to i416 -%r315 = shl i416 %r314, 384 -%r316 = or i416 %r310, %r315 -%r317 = zext i416 %r316 to i448 -%r319 = getelementptr i32, i32* %r4, i32 13 +%r314 = zext i32 %r313 to i480 +%r315 = shl i480 %r314, 448 +%r316 = or i480 %r310, %r315 +%r317 = zext i480 %r316 to i512 +%r319 = getelementptr i32, i32* %r4, i32 15 %r320 = load i32, i32* %r319 -%r321 = zext i32 %r320 to i448 -%r322 = shl i448 %r321, 416 -%r323 = or i448 %r317, %r322 -%r324 = zext i448 %r323 to i480 -%r326 = getelementptr i32, i32* %r4, i32 14 -%r327 = load i32, i32* %r326 -%r328 = zext i32 %r327 to i480 -%r329 = shl i480 %r328, 448 -%r330 = or i480 %r324, %r329 -%r331 = zext i480 %r330 to i512 -%r333 = getelementptr i32, i32* %r4, i32 15 -%r334 = load i32, i32* %r333 -%r335 = zext i32 %r334 to i512 -%r336 = shl i512 %r335, 480 -%r337 = or i512 %r331, %r336 -%r338 = zext i512 %r337 to i544 -%r340 = getelementptr i32, i32* %r4, i32 16 -%r341 = load i32, i32* %r340 -%r342 = zext i32 %r341 to i544 -%r343 = shl i544 %r342, 512 -%r344 = or i544 %r338, %r343 -%r345 = sub i544 %r231, %r344 -%r346 = lshr i544 %r345, 543 -%r347 = trunc i544 %r346 to i1 -%r348 = select i1 %r347, i544 %r231, i544 %r345 -%r349 = trunc i544 %r348 to i32 -%r351 = getelementptr i32, i32* %r1, i32 0 -store i32 %r349, i32* %r351 -%r352 = lshr i544 %r348, 32 -%r353 = trunc i544 %r352 to i32 -%r355 = getelementptr i32, i32* %r1, i32 1 -store i32 %r353, i32* %r355 -%r356 = lshr i544 %r352, 32 -%r357 = trunc i544 %r356 to i32 -%r359 = getelementptr i32, i32* %r1, i32 2 -store i32 %r357, i32* %r359 -%r360 = lshr i544 %r356, 32 -%r361 = trunc i544 %r360 to i32 -%r363 = getelementptr i32, i32* %r1, i32 3 -store i32 %r361, i32* %r363 -%r364 = lshr i544 %r360, 32 -%r365 = trunc i544 %r364 to i32 -%r367 = getelementptr i32, i32* %r1, i32 4 -store i32 %r365, i32* %r367 -%r368 = lshr i544 %r364, 32 -%r369 = trunc i544 %r368 to i32 -%r371 = getelementptr i32, i32* %r1, i32 5 -store i32 %r369, i32* %r371 -%r372 = lshr i544 %r368, 32 -%r373 = trunc i544 %r372 to i32 -%r375 = getelementptr i32, i32* %r1, i32 6 -store i32 %r373, i32* %r375 -%r376 = lshr i544 %r372, 32 -%r377 = trunc i544 %r376 to i32 -%r379 = getelementptr i32, i32* %r1, i32 7 -store i32 %r377, i32* %r379 -%r380 = lshr i544 %r376, 32 -%r381 = trunc i544 %r380 to i32 -%r383 = getelementptr i32, i32* %r1, i32 8 -store i32 %r381, i32* %r383 -%r384 = lshr i544 %r380, 32 -%r385 = trunc i544 %r384 to i32 -%r387 = getelementptr i32, i32* %r1, i32 9 -store i32 %r385, i32* %r387 -%r388 = lshr i544 %r384, 32 -%r389 = trunc i544 %r388 to i32 -%r391 = getelementptr i32, i32* %r1, i32 10 -store i32 %r389, i32* %r391 -%r392 = lshr i544 %r388, 32 -%r393 = trunc i544 %r392 to i32 -%r395 = getelementptr i32, i32* %r1, i32 11 -store i32 %r393, i32* %r395 -%r396 = lshr i544 %r392, 32 -%r397 = trunc i544 %r396 to i32 -%r399 = getelementptr i32, i32* %r1, i32 12 -store i32 %r397, i32* %r399 -%r400 = lshr i544 %r396, 32 -%r401 = trunc i544 %r400 to i32 -%r403 = getelementptr i32, i32* %r1, i32 13 -store i32 %r401, i32* %r403 -%r404 = lshr i544 %r400, 32 -%r405 = trunc i544 %r404 to i32 -%r407 = getelementptr i32, i32* %r1, i32 14 -store i32 %r405, i32* %r407 -%r408 = lshr i544 %r404, 32 -%r409 = trunc i544 %r408 to i32 -%r411 = getelementptr i32, i32* %r1, i32 15 -store i32 %r409, i32* %r411 -%r412 = lshr i544 %r408, 32 -%r413 = trunc i544 %r412 to i32 -%r415 = getelementptr i32, i32* %r1, i32 16 -store i32 %r413, i32* %r415 +%r321 = zext i32 %r320 to i512 +%r322 = shl i512 %r321, 480 +%r323 = or i512 %r317, %r322 +%r324 = sub i512 %r217, %r323 +%r325 = lshr i512 %r324, 511 +%r326 = trunc i512 %r325 to i1 +%r327 = select i1 %r326, i512 %r217, i512 %r324 +%r329 = getelementptr i32, i32* %r1, i32 0 +%r330 = trunc i512 %r327 to i32 +store i32 %r330, i32* %r329 +%r331 = lshr i512 %r327, 32 +%r333 = getelementptr i32, i32* %r1, i32 1 +%r334 = trunc i512 %r331 to i32 +store i32 %r334, i32* %r333 +%r335 = lshr i512 %r331, 32 +%r337 = getelementptr i32, i32* %r1, i32 2 +%r338 = trunc i512 %r335 to i32 +store i32 %r338, i32* %r337 +%r339 = lshr i512 %r335, 32 +%r341 = getelementptr i32, i32* %r1, i32 3 +%r342 = trunc i512 %r339 to i32 +store i32 %r342, i32* %r341 +%r343 = lshr i512 %r339, 32 +%r345 = getelementptr i32, i32* %r1, i32 4 +%r346 = trunc i512 %r343 to i32 +store i32 %r346, i32* %r345 +%r347 = lshr i512 %r343, 32 +%r349 = getelementptr i32, i32* %r1, i32 5 +%r350 = trunc i512 %r347 to i32 +store i32 %r350, i32* %r349 +%r351 = lshr i512 %r347, 32 +%r353 = getelementptr i32, i32* %r1, i32 6 +%r354 = trunc i512 %r351 to i32 +store i32 %r354, i32* %r353 +%r355 = lshr i512 %r351, 32 +%r357 = getelementptr i32, i32* %r1, i32 7 +%r358 = trunc i512 %r355 to i32 +store i32 %r358, i32* %r357 +%r359 = lshr i512 %r355, 32 +%r361 = getelementptr i32, i32* %r1, i32 8 +%r362 = trunc i512 %r359 to i32 +store i32 %r362, i32* %r361 +%r363 = lshr i512 %r359, 32 +%r365 = getelementptr i32, i32* %r1, i32 9 +%r366 = trunc i512 %r363 to i32 +store i32 %r366, i32* %r365 +%r367 = lshr i512 %r363, 32 +%r369 = getelementptr i32, i32* %r1, i32 10 +%r370 = trunc i512 %r367 to i32 +store i32 %r370, i32* %r369 +%r371 = lshr i512 %r367, 32 +%r373 = getelementptr i32, i32* %r1, i32 11 +%r374 = trunc i512 %r371 to i32 +store i32 %r374, i32* %r373 +%r375 = lshr i512 %r371, 32 +%r377 = getelementptr i32, i32* %r1, i32 12 +%r378 = trunc i512 %r375 to i32 +store i32 %r378, i32* %r377 +%r379 = lshr i512 %r375, 32 +%r381 = getelementptr i32, i32* %r1, i32 13 +%r382 = trunc i512 %r379 to i32 +store i32 %r382, i32* %r381 +%r383 = lshr i512 %r379, 32 +%r385 = getelementptr i32, i32* %r1, i32 14 +%r386 = trunc i512 %r383 to i32 +store i32 %r386, i32* %r385 +%r387 = lshr i512 %r383, 32 +%r389 = getelementptr i32, i32* %r1, i32 15 +%r390 = trunc i512 %r387 to i32 +store i32 %r390, i32* %r389 ret void } -define void @mcl_fp_sub17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_sub16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -52249,354 +18585,328 @@ define void @mcl_fp_sub17L(i32* noalias %r1, i32* noalias %r2, i32* noalias % %r108 = zext i32 %r107 to i512 %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = load i32, i32* %r3 -%r119 = zext i32 %r118 to i64 -%r121 = getelementptr i32, i32* %r3, i32 1 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i64 -%r124 = shl i64 %r123, 32 -%r125 = or i64 %r119, %r124 -%r126 = zext i64 %r125 to i96 -%r128 = getelementptr i32, i32* %r3, i32 2 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i96 -%r131 = shl i96 %r130, 64 -%r132 = or i96 %r126, %r131 -%r133 = zext i96 %r132 to i128 -%r135 = getelementptr i32, i32* %r3, i32 3 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i128 -%r138 = shl i128 %r137, 96 -%r139 = or i128 %r133, %r138 -%r140 = zext i128 %r139 to i160 -%r142 = getelementptr i32, i32* %r3, i32 4 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i160 -%r145 = shl i160 %r144, 128 -%r146 = or i160 %r140, %r145 -%r147 = zext i160 %r146 to i192 -%r149 = getelementptr i32, i32* %r3, i32 5 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i192 -%r152 = shl i192 %r151, 160 -%r153 = or i192 %r147, %r152 -%r154 = zext i192 %r153 to i224 -%r156 = getelementptr i32, i32* %r3, i32 6 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i224 -%r159 = shl i224 %r158, 192 -%r160 = or i224 %r154, %r159 -%r161 = zext i224 %r160 to i256 -%r163 = getelementptr i32, i32* %r3, i32 7 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i256 -%r166 = shl i256 %r165, 224 -%r167 = or i256 %r161, %r166 -%r168 = zext i256 %r167 to i288 -%r170 = getelementptr i32, i32* %r3, i32 8 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i288 -%r173 = shl i288 %r172, 256 -%r174 = or i288 %r168, %r173 -%r175 = zext i288 %r174 to i320 -%r177 = getelementptr i32, i32* %r3, i32 9 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i320 -%r180 = shl i320 %r179, 288 -%r181 = or i320 %r175, %r180 -%r182 = zext i320 %r181 to i352 -%r184 = getelementptr i32, i32* %r3, i32 10 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i352 -%r187 = shl i352 %r186, 320 -%r188 = or i352 %r182, %r187 -%r189 = zext i352 %r188 to i384 -%r191 = getelementptr i32, i32* %r3, i32 11 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 %r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i384 -%r194 = shl i384 %r193, 352 -%r195 = or i384 %r189, %r194 -%r196 = zext i384 %r195 to i416 -%r198 = getelementptr i32, i32* %r3, i32 12 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 %r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i416 -%r201 = shl i416 %r200, 384 -%r202 = or i416 %r196, %r201 -%r203 = zext i416 %r202 to i448 -%r205 = getelementptr i32, i32* %r3, i32 13 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 %r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i448 -%r208 = shl i448 %r207, 416 -%r209 = or i448 %r203, %r208 -%r210 = zext i448 %r209 to i480 -%r212 = getelementptr i32, i32* %r3, i32 14 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 %r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i480 -%r215 = shl i480 %r214, 448 -%r216 = or i480 %r210, %r215 -%r217 = zext i480 %r216 to i512 -%r219 = getelementptr i32, i32* %r3, i32 15 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i512 -%r222 = shl i512 %r221, 480 -%r223 = or i512 %r217, %r222 -%r224 = zext i512 %r223 to i544 -%r226 = getelementptr i32, i32* %r3, i32 16 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i544 -%r229 = shl i544 %r228, 512 -%r230 = or i544 %r224, %r229 -%r231 = zext i544 %r117 to i576 -%r232 = zext i544 %r230 to i576 -%r233 = sub i576 %r231, %r232 -%r234 = trunc i576 %r233 to i544 -%r235 = lshr i576 %r233, 544 -%r236 = trunc i576 %r235 to i1 -%r237 = trunc i544 %r234 to i32 -%r239 = getelementptr i32, i32* %r1, i32 0 -store i32 %r237, i32* %r239 -%r240 = lshr i544 %r234, 32 -%r241 = trunc i544 %r240 to i32 -%r243 = getelementptr i32, i32* %r1, i32 1 -store i32 %r241, i32* %r243 -%r244 = lshr i544 %r240, 32 -%r245 = trunc i544 %r244 to i32 -%r247 = getelementptr i32, i32* %r1, i32 2 -store i32 %r245, i32* %r247 -%r248 = lshr i544 %r244, 32 -%r249 = trunc i544 %r248 to i32 -%r251 = getelementptr i32, i32* %r1, i32 3 -store i32 %r249, i32* %r251 -%r252 = lshr i544 %r248, 32 -%r253 = trunc i544 %r252 to i32 -%r255 = getelementptr i32, i32* %r1, i32 4 -store i32 %r253, i32* %r255 -%r256 = lshr i544 %r252, 32 -%r257 = trunc i544 %r256 to i32 -%r259 = getelementptr i32, i32* %r1, i32 5 -store i32 %r257, i32* %r259 -%r260 = lshr i544 %r256, 32 -%r261 = trunc i544 %r260 to i32 -%r263 = getelementptr i32, i32* %r1, i32 6 -store i32 %r261, i32* %r263 -%r264 = lshr i544 %r260, 32 -%r265 = trunc i544 %r264 to i32 -%r267 = getelementptr i32, i32* %r1, i32 7 -store i32 %r265, i32* %r267 -%r268 = lshr i544 %r264, 32 -%r269 = trunc i544 %r268 to i32 -%r271 = getelementptr i32, i32* %r1, i32 8 -store i32 %r269, i32* %r271 -%r272 = lshr i544 %r268, 32 -%r273 = trunc i544 %r272 to i32 -%r275 = getelementptr i32, i32* %r1, i32 9 -store i32 %r273, i32* %r275 -%r276 = lshr i544 %r272, 32 -%r277 = trunc i544 %r276 to i32 -%r279 = getelementptr i32, i32* %r1, i32 10 -store i32 %r277, i32* %r279 -%r280 = lshr i544 %r276, 32 -%r281 = trunc i544 %r280 to i32 -%r283 = getelementptr i32, i32* %r1, i32 11 -store i32 %r281, i32* %r283 -%r284 = lshr i544 %r280, 32 -%r285 = trunc i544 %r284 to i32 -%r287 = getelementptr i32, i32* %r1, i32 12 -store i32 %r285, i32* %r287 -%r288 = lshr i544 %r284, 32 -%r289 = trunc i544 %r288 to i32 -%r291 = getelementptr i32, i32* %r1, i32 13 -store i32 %r289, i32* %r291 -%r292 = lshr i544 %r288, 32 -%r293 = trunc i544 %r292 to i32 -%r295 = getelementptr i32, i32* %r1, i32 14 -store i32 %r293, i32* %r295 -%r296 = lshr i544 %r292, 32 -%r297 = trunc i544 %r296 to i32 -%r299 = getelementptr i32, i32* %r1, i32 15 -store i32 %r297, i32* %r299 -%r300 = lshr i544 %r296, 32 -%r301 = trunc i544 %r300 to i32 -%r303 = getelementptr i32, i32* %r1, i32 16 -store i32 %r301, i32* %r303 -br i1%r236, label %carry, label %nocarry +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = zext i512 %r110 to i544 +%r218 = zext i512 %r216 to i544 +%r219 = sub i544 %r217, %r218 +%r220 = trunc i544 %r219 to i512 +%r221 = lshr i544 %r219, 512 +%r222 = trunc i544 %r221 to i1 +%r224 = getelementptr i32, i32* %r1, i32 0 +%r225 = trunc i512 %r220 to i32 +store i32 %r225, i32* %r224 +%r226 = lshr i512 %r220, 32 +%r228 = getelementptr i32, i32* %r1, i32 1 +%r229 = trunc i512 %r226 to i32 +store i32 %r229, i32* %r228 +%r230 = lshr i512 %r226, 32 +%r232 = getelementptr i32, i32* %r1, i32 2 +%r233 = trunc i512 %r230 to i32 +store i32 %r233, i32* %r232 +%r234 = lshr i512 %r230, 32 +%r236 = getelementptr i32, i32* %r1, i32 3 +%r237 = trunc i512 %r234 to i32 +store i32 %r237, i32* %r236 +%r238 = lshr i512 %r234, 32 +%r240 = getelementptr i32, i32* %r1, i32 4 +%r241 = trunc i512 %r238 to i32 +store i32 %r241, i32* %r240 +%r242 = lshr i512 %r238, 32 +%r244 = getelementptr i32, i32* %r1, i32 5 +%r245 = trunc i512 %r242 to i32 +store i32 %r245, i32* %r244 +%r246 = lshr i512 %r242, 32 +%r248 = getelementptr i32, i32* %r1, i32 6 +%r249 = trunc i512 %r246 to i32 +store i32 %r249, i32* %r248 +%r250 = lshr i512 %r246, 32 +%r252 = getelementptr i32, i32* %r1, i32 7 +%r253 = trunc i512 %r250 to i32 +store i32 %r253, i32* %r252 +%r254 = lshr i512 %r250, 32 +%r256 = getelementptr i32, i32* %r1, i32 8 +%r257 = trunc i512 %r254 to i32 +store i32 %r257, i32* %r256 +%r258 = lshr i512 %r254, 32 +%r260 = getelementptr i32, i32* %r1, i32 9 +%r261 = trunc i512 %r258 to i32 +store i32 %r261, i32* %r260 +%r262 = lshr i512 %r258, 32 +%r264 = getelementptr i32, i32* %r1, i32 10 +%r265 = trunc i512 %r262 to i32 +store i32 %r265, i32* %r264 +%r266 = lshr i512 %r262, 32 +%r268 = getelementptr i32, i32* %r1, i32 11 +%r269 = trunc i512 %r266 to i32 +store i32 %r269, i32* %r268 +%r270 = lshr i512 %r266, 32 +%r272 = getelementptr i32, i32* %r1, i32 12 +%r273 = trunc i512 %r270 to i32 +store i32 %r273, i32* %r272 +%r274 = lshr i512 %r270, 32 +%r276 = getelementptr i32, i32* %r1, i32 13 +%r277 = trunc i512 %r274 to i32 +store i32 %r277, i32* %r276 +%r278 = lshr i512 %r274, 32 +%r280 = getelementptr i32, i32* %r1, i32 14 +%r281 = trunc i512 %r278 to i32 +store i32 %r281, i32* %r280 +%r282 = lshr i512 %r278, 32 +%r284 = getelementptr i32, i32* %r1, i32 15 +%r285 = trunc i512 %r282 to i32 +store i32 %r285, i32* %r284 +br i1%r222, label %carry, label %nocarry nocarry: ret void carry: -%r304 = load i32, i32* %r4 -%r305 = zext i32 %r304 to i64 -%r307 = getelementptr i32, i32* %r4, i32 1 -%r308 = load i32, i32* %r307 -%r309 = zext i32 %r308 to i64 -%r310 = shl i64 %r309, 32 -%r311 = or i64 %r305, %r310 -%r312 = zext i64 %r311 to i96 -%r314 = getelementptr i32, i32* %r4, i32 2 -%r315 = load i32, i32* %r314 -%r316 = zext i32 %r315 to i96 -%r317 = shl i96 %r316, 64 -%r318 = or i96 %r312, %r317 -%r319 = zext i96 %r318 to i128 -%r321 = getelementptr i32, i32* %r4, i32 3 -%r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i128 -%r324 = shl i128 %r323, 96 -%r325 = or i128 %r319, %r324 -%r326 = zext i128 %r325 to i160 -%r328 = getelementptr i32, i32* %r4, i32 4 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i160 -%r331 = shl i160 %r330, 128 -%r332 = or i160 %r326, %r331 -%r333 = zext i160 %r332 to i192 -%r335 = getelementptr i32, i32* %r4, i32 5 -%r336 = load i32, i32* %r335 -%r337 = zext i32 %r336 to i192 -%r338 = shl i192 %r337, 160 -%r339 = or i192 %r333, %r338 -%r340 = zext i192 %r339 to i224 -%r342 = getelementptr i32, i32* %r4, i32 6 -%r343 = load i32, i32* %r342 -%r344 = zext i32 %r343 to i224 -%r345 = shl i224 %r344, 192 -%r346 = or i224 %r340, %r345 -%r347 = zext i224 %r346 to i256 -%r349 = getelementptr i32, i32* %r4, i32 7 -%r350 = load i32, i32* %r349 -%r351 = zext i32 %r350 to i256 -%r352 = shl i256 %r351, 224 -%r353 = or i256 %r347, %r352 -%r354 = zext i256 %r353 to i288 -%r356 = getelementptr i32, i32* %r4, i32 8 -%r357 = load i32, i32* %r356 -%r358 = zext i32 %r357 to i288 -%r359 = shl i288 %r358, 256 -%r360 = or i288 %r354, %r359 -%r361 = zext i288 %r360 to i320 -%r363 = getelementptr i32, i32* %r4, i32 9 -%r364 = load i32, i32* %r363 -%r365 = zext i32 %r364 to i320 -%r366 = shl i320 %r365, 288 -%r367 = or i320 %r361, %r366 -%r368 = zext i320 %r367 to i352 -%r370 = getelementptr i32, i32* %r4, i32 10 -%r371 = load i32, i32* %r370 -%r372 = zext i32 %r371 to i352 -%r373 = shl i352 %r372, 320 -%r374 = or i352 %r368, %r373 -%r375 = zext i352 %r374 to i384 -%r377 = getelementptr i32, i32* %r4, i32 11 -%r378 = load i32, i32* %r377 -%r379 = zext i32 %r378 to i384 -%r380 = shl i384 %r379, 352 -%r381 = or i384 %r375, %r380 -%r382 = zext i384 %r381 to i416 -%r384 = getelementptr i32, i32* %r4, i32 12 -%r385 = load i32, i32* %r384 -%r386 = zext i32 %r385 to i416 -%r387 = shl i416 %r386, 384 -%r388 = or i416 %r382, %r387 -%r389 = zext i416 %r388 to i448 -%r391 = getelementptr i32, i32* %r4, i32 13 -%r392 = load i32, i32* %r391 -%r393 = zext i32 %r392 to i448 -%r394 = shl i448 %r393, 416 -%r395 = or i448 %r389, %r394 -%r396 = zext i448 %r395 to i480 -%r398 = getelementptr i32, i32* %r4, i32 14 -%r399 = load i32, i32* %r398 -%r400 = zext i32 %r399 to i480 -%r401 = shl i480 %r400, 448 -%r402 = or i480 %r396, %r401 -%r403 = zext i480 %r402 to i512 -%r405 = getelementptr i32, i32* %r4, i32 15 -%r406 = load i32, i32* %r405 -%r407 = zext i32 %r406 to i512 -%r408 = shl i512 %r407, 480 -%r409 = or i512 %r403, %r408 -%r410 = zext i512 %r409 to i544 -%r412 = getelementptr i32, i32* %r4, i32 16 -%r413 = load i32, i32* %r412 -%r414 = zext i32 %r413 to i544 -%r415 = shl i544 %r414, 512 -%r416 = or i544 %r410, %r415 -%r417 = add i544 %r234, %r416 -%r418 = trunc i544 %r417 to i32 -%r420 = getelementptr i32, i32* %r1, i32 0 -store i32 %r418, i32* %r420 -%r421 = lshr i544 %r417, 32 -%r422 = trunc i544 %r421 to i32 -%r424 = getelementptr i32, i32* %r1, i32 1 -store i32 %r422, i32* %r424 -%r425 = lshr i544 %r421, 32 -%r426 = trunc i544 %r425 to i32 -%r428 = getelementptr i32, i32* %r1, i32 2 -store i32 %r426, i32* %r428 -%r429 = lshr i544 %r425, 32 -%r430 = trunc i544 %r429 to i32 -%r432 = getelementptr i32, i32* %r1, i32 3 -store i32 %r430, i32* %r432 -%r433 = lshr i544 %r429, 32 -%r434 = trunc i544 %r433 to i32 -%r436 = getelementptr i32, i32* %r1, i32 4 -store i32 %r434, i32* %r436 -%r437 = lshr i544 %r433, 32 -%r438 = trunc i544 %r437 to i32 -%r440 = getelementptr i32, i32* %r1, i32 5 -store i32 %r438, i32* %r440 -%r441 = lshr i544 %r437, 32 -%r442 = trunc i544 %r441 to i32 -%r444 = getelementptr i32, i32* %r1, i32 6 -store i32 %r442, i32* %r444 -%r445 = lshr i544 %r441, 32 -%r446 = trunc i544 %r445 to i32 -%r448 = getelementptr i32, i32* %r1, i32 7 -store i32 %r446, i32* %r448 -%r449 = lshr i544 %r445, 32 -%r450 = trunc i544 %r449 to i32 -%r452 = getelementptr i32, i32* %r1, i32 8 -store i32 %r450, i32* %r452 -%r453 = lshr i544 %r449, 32 -%r454 = trunc i544 %r453 to i32 -%r456 = getelementptr i32, i32* %r1, i32 9 -store i32 %r454, i32* %r456 -%r457 = lshr i544 %r453, 32 -%r458 = trunc i544 %r457 to i32 -%r460 = getelementptr i32, i32* %r1, i32 10 -store i32 %r458, i32* %r460 -%r461 = lshr i544 %r457, 32 -%r462 = trunc i544 %r461 to i32 -%r464 = getelementptr i32, i32* %r1, i32 11 -store i32 %r462, i32* %r464 -%r465 = lshr i544 %r461, 32 -%r466 = trunc i544 %r465 to i32 -%r468 = getelementptr i32, i32* %r1, i32 12 -store i32 %r466, i32* %r468 -%r469 = lshr i544 %r465, 32 -%r470 = trunc i544 %r469 to i32 -%r472 = getelementptr i32, i32* %r1, i32 13 -store i32 %r470, i32* %r472 -%r473 = lshr i544 %r469, 32 -%r474 = trunc i544 %r473 to i32 -%r476 = getelementptr i32, i32* %r1, i32 14 -store i32 %r474, i32* %r476 -%r477 = lshr i544 %r473, 32 -%r478 = trunc i544 %r477 to i32 -%r480 = getelementptr i32, i32* %r1, i32 15 -store i32 %r478, i32* %r480 -%r481 = lshr i544 %r477, 32 -%r482 = trunc i544 %r481 to i32 -%r484 = getelementptr i32, i32* %r1, i32 16 -store i32 %r482, i32* %r484 +%r286 = load i32, i32* %r4 +%r287 = zext i32 %r286 to i64 +%r289 = getelementptr i32, i32* %r4, i32 1 +%r290 = load i32, i32* %r289 +%r291 = zext i32 %r290 to i64 +%r292 = shl i64 %r291, 32 +%r293 = or i64 %r287, %r292 +%r294 = zext i64 %r293 to i96 +%r296 = getelementptr i32, i32* %r4, i32 2 +%r297 = load i32, i32* %r296 +%r298 = zext i32 %r297 to i96 +%r299 = shl i96 %r298, 64 +%r300 = or i96 %r294, %r299 +%r301 = zext i96 %r300 to i128 +%r303 = getelementptr i32, i32* %r4, i32 3 +%r304 = load i32, i32* %r303 +%r305 = zext i32 %r304 to i128 +%r306 = shl i128 %r305, 96 +%r307 = or i128 %r301, %r306 +%r308 = zext i128 %r307 to i160 +%r310 = getelementptr i32, i32* %r4, i32 4 +%r311 = load i32, i32* %r310 +%r312 = zext i32 %r311 to i160 +%r313 = shl i160 %r312, 128 +%r314 = or i160 %r308, %r313 +%r315 = zext i160 %r314 to i192 +%r317 = getelementptr i32, i32* %r4, i32 5 +%r318 = load i32, i32* %r317 +%r319 = zext i32 %r318 to i192 +%r320 = shl i192 %r319, 160 +%r321 = or i192 %r315, %r320 +%r322 = zext i192 %r321 to i224 +%r324 = getelementptr i32, i32* %r4, i32 6 +%r325 = load i32, i32* %r324 +%r326 = zext i32 %r325 to i224 +%r327 = shl i224 %r326, 192 +%r328 = or i224 %r322, %r327 +%r329 = zext i224 %r328 to i256 +%r331 = getelementptr i32, i32* %r4, i32 7 +%r332 = load i32, i32* %r331 +%r333 = zext i32 %r332 to i256 +%r334 = shl i256 %r333, 224 +%r335 = or i256 %r329, %r334 +%r336 = zext i256 %r335 to i288 +%r338 = getelementptr i32, i32* %r4, i32 8 +%r339 = load i32, i32* %r338 +%r340 = zext i32 %r339 to i288 +%r341 = shl i288 %r340, 256 +%r342 = or i288 %r336, %r341 +%r343 = zext i288 %r342 to i320 +%r345 = getelementptr i32, i32* %r4, i32 9 +%r346 = load i32, i32* %r345 +%r347 = zext i32 %r346 to i320 +%r348 = shl i320 %r347, 288 +%r349 = or i320 %r343, %r348 +%r350 = zext i320 %r349 to i352 +%r352 = getelementptr i32, i32* %r4, i32 10 +%r353 = load i32, i32* %r352 +%r354 = zext i32 %r353 to i352 +%r355 = shl i352 %r354, 320 +%r356 = or i352 %r350, %r355 +%r357 = zext i352 %r356 to i384 +%r359 = getelementptr i32, i32* %r4, i32 11 +%r360 = load i32, i32* %r359 +%r361 = zext i32 %r360 to i384 +%r362 = shl i384 %r361, 352 +%r363 = or i384 %r357, %r362 +%r364 = zext i384 %r363 to i416 +%r366 = getelementptr i32, i32* %r4, i32 12 +%r367 = load i32, i32* %r366 +%r368 = zext i32 %r367 to i416 +%r369 = shl i416 %r368, 384 +%r370 = or i416 %r364, %r369 +%r371 = zext i416 %r370 to i448 +%r373 = getelementptr i32, i32* %r4, i32 13 +%r374 = load i32, i32* %r373 +%r375 = zext i32 %r374 to i448 +%r376 = shl i448 %r375, 416 +%r377 = or i448 %r371, %r376 +%r378 = zext i448 %r377 to i480 +%r380 = getelementptr i32, i32* %r4, i32 14 +%r381 = load i32, i32* %r380 +%r382 = zext i32 %r381 to i480 +%r383 = shl i480 %r382, 448 +%r384 = or i480 %r378, %r383 +%r385 = zext i480 %r384 to i512 +%r387 = getelementptr i32, i32* %r4, i32 15 +%r388 = load i32, i32* %r387 +%r389 = zext i32 %r388 to i512 +%r390 = shl i512 %r389, 480 +%r391 = or i512 %r385, %r390 +%r392 = add i512 %r220, %r391 +%r394 = getelementptr i32, i32* %r1, i32 0 +%r395 = trunc i512 %r392 to i32 +store i32 %r395, i32* %r394 +%r396 = lshr i512 %r392, 32 +%r398 = getelementptr i32, i32* %r1, i32 1 +%r399 = trunc i512 %r396 to i32 +store i32 %r399, i32* %r398 +%r400 = lshr i512 %r396, 32 +%r402 = getelementptr i32, i32* %r1, i32 2 +%r403 = trunc i512 %r400 to i32 +store i32 %r403, i32* %r402 +%r404 = lshr i512 %r400, 32 +%r406 = getelementptr i32, i32* %r1, i32 3 +%r407 = trunc i512 %r404 to i32 +store i32 %r407, i32* %r406 +%r408 = lshr i512 %r404, 32 +%r410 = getelementptr i32, i32* %r1, i32 4 +%r411 = trunc i512 %r408 to i32 +store i32 %r411, i32* %r410 +%r412 = lshr i512 %r408, 32 +%r414 = getelementptr i32, i32* %r1, i32 5 +%r415 = trunc i512 %r412 to i32 +store i32 %r415, i32* %r414 +%r416 = lshr i512 %r412, 32 +%r418 = getelementptr i32, i32* %r1, i32 6 +%r419 = trunc i512 %r416 to i32 +store i32 %r419, i32* %r418 +%r420 = lshr i512 %r416, 32 +%r422 = getelementptr i32, i32* %r1, i32 7 +%r423 = trunc i512 %r420 to i32 +store i32 %r423, i32* %r422 +%r424 = lshr i512 %r420, 32 +%r426 = getelementptr i32, i32* %r1, i32 8 +%r427 = trunc i512 %r424 to i32 +store i32 %r427, i32* %r426 +%r428 = lshr i512 %r424, 32 +%r430 = getelementptr i32, i32* %r1, i32 9 +%r431 = trunc i512 %r428 to i32 +store i32 %r431, i32* %r430 +%r432 = lshr i512 %r428, 32 +%r434 = getelementptr i32, i32* %r1, i32 10 +%r435 = trunc i512 %r432 to i32 +store i32 %r435, i32* %r434 +%r436 = lshr i512 %r432, 32 +%r438 = getelementptr i32, i32* %r1, i32 11 +%r439 = trunc i512 %r436 to i32 +store i32 %r439, i32* %r438 +%r440 = lshr i512 %r436, 32 +%r442 = getelementptr i32, i32* %r1, i32 12 +%r443 = trunc i512 %r440 to i32 +store i32 %r443, i32* %r442 +%r444 = lshr i512 %r440, 32 +%r446 = getelementptr i32, i32* %r1, i32 13 +%r447 = trunc i512 %r444 to i32 +store i32 %r447, i32* %r446 +%r448 = lshr i512 %r444, 32 +%r450 = getelementptr i32, i32* %r1, i32 14 +%r451 = trunc i512 %r448 to i32 +store i32 %r451, i32* %r450 +%r452 = lshr i512 %r448, 32 +%r454 = getelementptr i32, i32* %r1, i32 15 +%r455 = trunc i512 %r452 to i32 +store i32 %r455, i32* %r454 ret void } -define void @mcl_fp_subNF17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fp_subNF16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -52689,281 +18999,259 @@ define void @mcl_fp_subNF17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r108 = zext i32 %r107 to i512 %r109 = shl i512 %r108, 480 %r110 = or i512 %r104, %r109 -%r111 = zext i512 %r110 to i544 -%r113 = getelementptr i32, i32* %r2, i32 16 -%r114 = load i32, i32* %r113 -%r115 = zext i32 %r114 to i544 -%r116 = shl i544 %r115, 512 -%r117 = or i544 %r111, %r116 -%r118 = load i32, i32* %r3 -%r119 = zext i32 %r118 to i64 -%r121 = getelementptr i32, i32* %r3, i32 1 +%r111 = load i32, i32* %r3 +%r112 = zext i32 %r111 to i64 +%r114 = getelementptr i32, i32* %r3, i32 1 +%r115 = load i32, i32* %r114 +%r116 = zext i32 %r115 to i64 +%r117 = shl i64 %r116, 32 +%r118 = or i64 %r112, %r117 +%r119 = zext i64 %r118 to i96 +%r121 = getelementptr i32, i32* %r3, i32 2 %r122 = load i32, i32* %r121 -%r123 = zext i32 %r122 to i64 -%r124 = shl i64 %r123, 32 -%r125 = or i64 %r119, %r124 -%r126 = zext i64 %r125 to i96 -%r128 = getelementptr i32, i32* %r3, i32 2 +%r123 = zext i32 %r122 to i96 +%r124 = shl i96 %r123, 64 +%r125 = or i96 %r119, %r124 +%r126 = zext i96 %r125 to i128 +%r128 = getelementptr i32, i32* %r3, i32 3 %r129 = load i32, i32* %r128 -%r130 = zext i32 %r129 to i96 -%r131 = shl i96 %r130, 64 -%r132 = or i96 %r126, %r131 -%r133 = zext i96 %r132 to i128 -%r135 = getelementptr i32, i32* %r3, i32 3 +%r130 = zext i32 %r129 to i128 +%r131 = shl i128 %r130, 96 +%r132 = or i128 %r126, %r131 +%r133 = zext i128 %r132 to i160 +%r135 = getelementptr i32, i32* %r3, i32 4 %r136 = load i32, i32* %r135 -%r137 = zext i32 %r136 to i128 -%r138 = shl i128 %r137, 96 -%r139 = or i128 %r133, %r138 -%r140 = zext i128 %r139 to i160 -%r142 = getelementptr i32, i32* %r3, i32 4 +%r137 = zext i32 %r136 to i160 +%r138 = shl i160 %r137, 128 +%r139 = or i160 %r133, %r138 +%r140 = zext i160 %r139 to i192 +%r142 = getelementptr i32, i32* %r3, i32 5 %r143 = load i32, i32* %r142 -%r144 = zext i32 %r143 to i160 -%r145 = shl i160 %r144, 128 -%r146 = or i160 %r140, %r145 -%r147 = zext i160 %r146 to i192 -%r149 = getelementptr i32, i32* %r3, i32 5 +%r144 = zext i32 %r143 to i192 +%r145 = shl i192 %r144, 160 +%r146 = or i192 %r140, %r145 +%r147 = zext i192 %r146 to i224 +%r149 = getelementptr i32, i32* %r3, i32 6 %r150 = load i32, i32* %r149 -%r151 = zext i32 %r150 to i192 -%r152 = shl i192 %r151, 160 -%r153 = or i192 %r147, %r152 -%r154 = zext i192 %r153 to i224 -%r156 = getelementptr i32, i32* %r3, i32 6 +%r151 = zext i32 %r150 to i224 +%r152 = shl i224 %r151, 192 +%r153 = or i224 %r147, %r152 +%r154 = zext i224 %r153 to i256 +%r156 = getelementptr i32, i32* %r3, i32 7 %r157 = load i32, i32* %r156 -%r158 = zext i32 %r157 to i224 -%r159 = shl i224 %r158, 192 -%r160 = or i224 %r154, %r159 -%r161 = zext i224 %r160 to i256 -%r163 = getelementptr i32, i32* %r3, i32 7 +%r158 = zext i32 %r157 to i256 +%r159 = shl i256 %r158, 224 +%r160 = or i256 %r154, %r159 +%r161 = zext i256 %r160 to i288 +%r163 = getelementptr i32, i32* %r3, i32 8 %r164 = load i32, i32* %r163 -%r165 = zext i32 %r164 to i256 -%r166 = shl i256 %r165, 224 -%r167 = or i256 %r161, %r166 -%r168 = zext i256 %r167 to i288 -%r170 = getelementptr i32, i32* %r3, i32 8 +%r165 = zext i32 %r164 to i288 +%r166 = shl i288 %r165, 256 +%r167 = or i288 %r161, %r166 +%r168 = zext i288 %r167 to i320 +%r170 = getelementptr i32, i32* %r3, i32 9 %r171 = load i32, i32* %r170 -%r172 = zext i32 %r171 to i288 -%r173 = shl i288 %r172, 256 -%r174 = or i288 %r168, %r173 -%r175 = zext i288 %r174 to i320 -%r177 = getelementptr i32, i32* %r3, i32 9 +%r172 = zext i32 %r171 to i320 +%r173 = shl i320 %r172, 288 +%r174 = or i320 %r168, %r173 +%r175 = zext i320 %r174 to i352 +%r177 = getelementptr i32, i32* %r3, i32 10 %r178 = load i32, i32* %r177 -%r179 = zext i32 %r178 to i320 -%r180 = shl i320 %r179, 288 -%r181 = or i320 %r175, %r180 -%r182 = zext i320 %r181 to i352 -%r184 = getelementptr i32, i32* %r3, i32 10 +%r179 = zext i32 %r178 to i352 +%r180 = shl i352 %r179, 320 +%r181 = or i352 %r175, %r180 +%r182 = zext i352 %r181 to i384 +%r184 = getelementptr i32, i32* %r3, i32 11 %r185 = load i32, i32* %r184 -%r186 = zext i32 %r185 to i352 -%r187 = shl i352 %r186, 320 -%r188 = or i352 %r182, %r187 -%r189 = zext i352 %r188 to i384 -%r191 = getelementptr i32, i32* %r3, i32 11 +%r186 = zext i32 %r185 to i384 +%r187 = shl i384 %r186, 352 +%r188 = or i384 %r182, %r187 +%r189 = zext i384 %r188 to i416 +%r191 = getelementptr i32, i32* %r3, i32 12 %r192 = load i32, i32* %r191 -%r193 = zext i32 %r192 to i384 -%r194 = shl i384 %r193, 352 -%r195 = or i384 %r189, %r194 -%r196 = zext i384 %r195 to i416 -%r198 = getelementptr i32, i32* %r3, i32 12 +%r193 = zext i32 %r192 to i416 +%r194 = shl i416 %r193, 384 +%r195 = or i416 %r189, %r194 +%r196 = zext i416 %r195 to i448 +%r198 = getelementptr i32, i32* %r3, i32 13 %r199 = load i32, i32* %r198 -%r200 = zext i32 %r199 to i416 -%r201 = shl i416 %r200, 384 -%r202 = or i416 %r196, %r201 -%r203 = zext i416 %r202 to i448 -%r205 = getelementptr i32, i32* %r3, i32 13 +%r200 = zext i32 %r199 to i448 +%r201 = shl i448 %r200, 416 +%r202 = or i448 %r196, %r201 +%r203 = zext i448 %r202 to i480 +%r205 = getelementptr i32, i32* %r3, i32 14 %r206 = load i32, i32* %r205 -%r207 = zext i32 %r206 to i448 -%r208 = shl i448 %r207, 416 -%r209 = or i448 %r203, %r208 -%r210 = zext i448 %r209 to i480 -%r212 = getelementptr i32, i32* %r3, i32 14 +%r207 = zext i32 %r206 to i480 +%r208 = shl i480 %r207, 448 +%r209 = or i480 %r203, %r208 +%r210 = zext i480 %r209 to i512 +%r212 = getelementptr i32, i32* %r3, i32 15 %r213 = load i32, i32* %r212 -%r214 = zext i32 %r213 to i480 -%r215 = shl i480 %r214, 448 -%r216 = or i480 %r210, %r215 -%r217 = zext i480 %r216 to i512 -%r219 = getelementptr i32, i32* %r3, i32 15 -%r220 = load i32, i32* %r219 -%r221 = zext i32 %r220 to i512 -%r222 = shl i512 %r221, 480 -%r223 = or i512 %r217, %r222 -%r224 = zext i512 %r223 to i544 -%r226 = getelementptr i32, i32* %r3, i32 16 -%r227 = load i32, i32* %r226 -%r228 = zext i32 %r227 to i544 -%r229 = shl i544 %r228, 512 -%r230 = or i544 %r224, %r229 -%r231 = sub i544 %r117, %r230 -%r232 = lshr i544 %r231, 543 -%r233 = trunc i544 %r232 to i1 -%r234 = load i32, i32* %r4 -%r235 = zext i32 %r234 to i64 -%r237 = getelementptr i32, i32* %r4, i32 1 +%r214 = zext i32 %r213 to i512 +%r215 = shl i512 %r214, 480 +%r216 = or i512 %r210, %r215 +%r217 = sub i512 %r110, %r216 +%r218 = lshr i512 %r217, 511 +%r219 = trunc i512 %r218 to i1 +%r220 = load i32, i32* %r4 +%r221 = zext i32 %r220 to i64 +%r223 = getelementptr i32, i32* %r4, i32 1 +%r224 = load i32, i32* %r223 +%r225 = zext i32 %r224 to i64 +%r226 = shl i64 %r225, 32 +%r227 = or i64 %r221, %r226 +%r228 = zext i64 %r227 to i96 +%r230 = getelementptr i32, i32* %r4, i32 2 +%r231 = load i32, i32* %r230 +%r232 = zext i32 %r231 to i96 +%r233 = shl i96 %r232, 64 +%r234 = or i96 %r228, %r233 +%r235 = zext i96 %r234 to i128 +%r237 = getelementptr i32, i32* %r4, i32 3 %r238 = load i32, i32* %r237 -%r239 = zext i32 %r238 to i64 -%r240 = shl i64 %r239, 32 -%r241 = or i64 %r235, %r240 -%r242 = zext i64 %r241 to i96 -%r244 = getelementptr i32, i32* %r4, i32 2 +%r239 = zext i32 %r238 to i128 +%r240 = shl i128 %r239, 96 +%r241 = or i128 %r235, %r240 +%r242 = zext i128 %r241 to i160 +%r244 = getelementptr i32, i32* %r4, i32 4 %r245 = load i32, i32* %r244 -%r246 = zext i32 %r245 to i96 -%r247 = shl i96 %r246, 64 -%r248 = or i96 %r242, %r247 -%r249 = zext i96 %r248 to i128 -%r251 = getelementptr i32, i32* %r4, i32 3 +%r246 = zext i32 %r245 to i160 +%r247 = shl i160 %r246, 128 +%r248 = or i160 %r242, %r247 +%r249 = zext i160 %r248 to i192 +%r251 = getelementptr i32, i32* %r4, i32 5 %r252 = load i32, i32* %r251 -%r253 = zext i32 %r252 to i128 -%r254 = shl i128 %r253, 96 -%r255 = or i128 %r249, %r254 -%r256 = zext i128 %r255 to i160 -%r258 = getelementptr i32, i32* %r4, i32 4 +%r253 = zext i32 %r252 to i192 +%r254 = shl i192 %r253, 160 +%r255 = or i192 %r249, %r254 +%r256 = zext i192 %r255 to i224 +%r258 = getelementptr i32, i32* %r4, i32 6 %r259 = load i32, i32* %r258 -%r260 = zext i32 %r259 to i160 -%r261 = shl i160 %r260, 128 -%r262 = or i160 %r256, %r261 -%r263 = zext i160 %r262 to i192 -%r265 = getelementptr i32, i32* %r4, i32 5 +%r260 = zext i32 %r259 to i224 +%r261 = shl i224 %r260, 192 +%r262 = or i224 %r256, %r261 +%r263 = zext i224 %r262 to i256 +%r265 = getelementptr i32, i32* %r4, i32 7 %r266 = load i32, i32* %r265 -%r267 = zext i32 %r266 to i192 -%r268 = shl i192 %r267, 160 -%r269 = or i192 %r263, %r268 -%r270 = zext i192 %r269 to i224 -%r272 = getelementptr i32, i32* %r4, i32 6 +%r267 = zext i32 %r266 to i256 +%r268 = shl i256 %r267, 224 +%r269 = or i256 %r263, %r268 +%r270 = zext i256 %r269 to i288 +%r272 = getelementptr i32, i32* %r4, i32 8 %r273 = load i32, i32* %r272 -%r274 = zext i32 %r273 to i224 -%r275 = shl i224 %r274, 192 -%r276 = or i224 %r270, %r275 -%r277 = zext i224 %r276 to i256 -%r279 = getelementptr i32, i32* %r4, i32 7 +%r274 = zext i32 %r273 to i288 +%r275 = shl i288 %r274, 256 +%r276 = or i288 %r270, %r275 +%r277 = zext i288 %r276 to i320 +%r279 = getelementptr i32, i32* %r4, i32 9 %r280 = load i32, i32* %r279 -%r281 = zext i32 %r280 to i256 -%r282 = shl i256 %r281, 224 -%r283 = or i256 %r277, %r282 -%r284 = zext i256 %r283 to i288 -%r286 = getelementptr i32, i32* %r4, i32 8 +%r281 = zext i32 %r280 to i320 +%r282 = shl i320 %r281, 288 +%r283 = or i320 %r277, %r282 +%r284 = zext i320 %r283 to i352 +%r286 = getelementptr i32, i32* %r4, i32 10 %r287 = load i32, i32* %r286 -%r288 = zext i32 %r287 to i288 -%r289 = shl i288 %r288, 256 -%r290 = or i288 %r284, %r289 -%r291 = zext i288 %r290 to i320 -%r293 = getelementptr i32, i32* %r4, i32 9 +%r288 = zext i32 %r287 to i352 +%r289 = shl i352 %r288, 320 +%r290 = or i352 %r284, %r289 +%r291 = zext i352 %r290 to i384 +%r293 = getelementptr i32, i32* %r4, i32 11 %r294 = load i32, i32* %r293 -%r295 = zext i32 %r294 to i320 -%r296 = shl i320 %r295, 288 -%r297 = or i320 %r291, %r296 -%r298 = zext i320 %r297 to i352 -%r300 = getelementptr i32, i32* %r4, i32 10 +%r295 = zext i32 %r294 to i384 +%r296 = shl i384 %r295, 352 +%r297 = or i384 %r291, %r296 +%r298 = zext i384 %r297 to i416 +%r300 = getelementptr i32, i32* %r4, i32 12 %r301 = load i32, i32* %r300 -%r302 = zext i32 %r301 to i352 -%r303 = shl i352 %r302, 320 -%r304 = or i352 %r298, %r303 -%r305 = zext i352 %r304 to i384 -%r307 = getelementptr i32, i32* %r4, i32 11 +%r302 = zext i32 %r301 to i416 +%r303 = shl i416 %r302, 384 +%r304 = or i416 %r298, %r303 +%r305 = zext i416 %r304 to i448 +%r307 = getelementptr i32, i32* %r4, i32 13 %r308 = load i32, i32* %r307 -%r309 = zext i32 %r308 to i384 -%r310 = shl i384 %r309, 352 -%r311 = or i384 %r305, %r310 -%r312 = zext i384 %r311 to i416 -%r314 = getelementptr i32, i32* %r4, i32 12 +%r309 = zext i32 %r308 to i448 +%r310 = shl i448 %r309, 416 +%r311 = or i448 %r305, %r310 +%r312 = zext i448 %r311 to i480 +%r314 = getelementptr i32, i32* %r4, i32 14 %r315 = load i32, i32* %r314 -%r316 = zext i32 %r315 to i416 -%r317 = shl i416 %r316, 384 -%r318 = or i416 %r312, %r317 -%r319 = zext i416 %r318 to i448 -%r321 = getelementptr i32, i32* %r4, i32 13 +%r316 = zext i32 %r315 to i480 +%r317 = shl i480 %r316, 448 +%r318 = or i480 %r312, %r317 +%r319 = zext i480 %r318 to i512 +%r321 = getelementptr i32, i32* %r4, i32 15 %r322 = load i32, i32* %r321 -%r323 = zext i32 %r322 to i448 -%r324 = shl i448 %r323, 416 -%r325 = or i448 %r319, %r324 -%r326 = zext i448 %r325 to i480 -%r328 = getelementptr i32, i32* %r4, i32 14 -%r329 = load i32, i32* %r328 -%r330 = zext i32 %r329 to i480 -%r331 = shl i480 %r330, 448 -%r332 = or i480 %r326, %r331 -%r333 = zext i480 %r332 to i512 -%r335 = getelementptr i32, i32* %r4, i32 15 -%r336 = load i32, i32* %r335 -%r337 = zext i32 %r336 to i512 -%r338 = shl i512 %r337, 480 -%r339 = or i512 %r333, %r338 -%r340 = zext i512 %r339 to i544 -%r342 = getelementptr i32, i32* %r4, i32 16 -%r343 = load i32, i32* %r342 -%r344 = zext i32 %r343 to i544 -%r345 = shl i544 %r344, 512 -%r346 = or i544 %r340, %r345 -%r348 = select i1 %r233, i544 %r346, i544 0 -%r349 = add i544 %r231, %r348 -%r350 = trunc i544 %r349 to i32 -%r352 = getelementptr i32, i32* %r1, i32 0 -store i32 %r350, i32* %r352 -%r353 = lshr i544 %r349, 32 -%r354 = trunc i544 %r353 to i32 -%r356 = getelementptr i32, i32* %r1, i32 1 -store i32 %r354, i32* %r356 -%r357 = lshr i544 %r353, 32 -%r358 = trunc i544 %r357 to i32 -%r360 = getelementptr i32, i32* %r1, i32 2 -store i32 %r358, i32* %r360 -%r361 = lshr i544 %r357, 32 -%r362 = trunc i544 %r361 to i32 -%r364 = getelementptr i32, i32* %r1, i32 3 -store i32 %r362, i32* %r364 -%r365 = lshr i544 %r361, 32 -%r366 = trunc i544 %r365 to i32 -%r368 = getelementptr i32, i32* %r1, i32 4 -store i32 %r366, i32* %r368 -%r369 = lshr i544 %r365, 32 -%r370 = trunc i544 %r369 to i32 -%r372 = getelementptr i32, i32* %r1, i32 5 -store i32 %r370, i32* %r372 -%r373 = lshr i544 %r369, 32 -%r374 = trunc i544 %r373 to i32 -%r376 = getelementptr i32, i32* %r1, i32 6 -store i32 %r374, i32* %r376 -%r377 = lshr i544 %r373, 32 -%r378 = trunc i544 %r377 to i32 -%r380 = getelementptr i32, i32* %r1, i32 7 -store i32 %r378, i32* %r380 -%r381 = lshr i544 %r377, 32 -%r382 = trunc i544 %r381 to i32 -%r384 = getelementptr i32, i32* %r1, i32 8 -store i32 %r382, i32* %r384 -%r385 = lshr i544 %r381, 32 -%r386 = trunc i544 %r385 to i32 -%r388 = getelementptr i32, i32* %r1, i32 9 -store i32 %r386, i32* %r388 -%r389 = lshr i544 %r385, 32 -%r390 = trunc i544 %r389 to i32 -%r392 = getelementptr i32, i32* %r1, i32 10 -store i32 %r390, i32* %r392 -%r393 = lshr i544 %r389, 32 -%r394 = trunc i544 %r393 to i32 -%r396 = getelementptr i32, i32* %r1, i32 11 -store i32 %r394, i32* %r396 -%r397 = lshr i544 %r393, 32 -%r398 = trunc i544 %r397 to i32 -%r400 = getelementptr i32, i32* %r1, i32 12 -store i32 %r398, i32* %r400 -%r401 = lshr i544 %r397, 32 -%r402 = trunc i544 %r401 to i32 -%r404 = getelementptr i32, i32* %r1, i32 13 -store i32 %r402, i32* %r404 -%r405 = lshr i544 %r401, 32 -%r406 = trunc i544 %r405 to i32 -%r408 = getelementptr i32, i32* %r1, i32 14 -store i32 %r406, i32* %r408 -%r409 = lshr i544 %r405, 32 -%r410 = trunc i544 %r409 to i32 -%r412 = getelementptr i32, i32* %r1, i32 15 -store i32 %r410, i32* %r412 -%r413 = lshr i544 %r409, 32 -%r414 = trunc i544 %r413 to i32 -%r416 = getelementptr i32, i32* %r1, i32 16 -store i32 %r414, i32* %r416 +%r323 = zext i32 %r322 to i512 +%r324 = shl i512 %r323, 480 +%r325 = or i512 %r319, %r324 +%r327 = select i1 %r219, i512 %r325, i512 0 +%r328 = add i512 %r217, %r327 +%r330 = getelementptr i32, i32* %r1, i32 0 +%r331 = trunc i512 %r328 to i32 +store i32 %r331, i32* %r330 +%r332 = lshr i512 %r328, 32 +%r334 = getelementptr i32, i32* %r1, i32 1 +%r335 = trunc i512 %r332 to i32 +store i32 %r335, i32* %r334 +%r336 = lshr i512 %r332, 32 +%r338 = getelementptr i32, i32* %r1, i32 2 +%r339 = trunc i512 %r336 to i32 +store i32 %r339, i32* %r338 +%r340 = lshr i512 %r336, 32 +%r342 = getelementptr i32, i32* %r1, i32 3 +%r343 = trunc i512 %r340 to i32 +store i32 %r343, i32* %r342 +%r344 = lshr i512 %r340, 32 +%r346 = getelementptr i32, i32* %r1, i32 4 +%r347 = trunc i512 %r344 to i32 +store i32 %r347, i32* %r346 +%r348 = lshr i512 %r344, 32 +%r350 = getelementptr i32, i32* %r1, i32 5 +%r351 = trunc i512 %r348 to i32 +store i32 %r351, i32* %r350 +%r352 = lshr i512 %r348, 32 +%r354 = getelementptr i32, i32* %r1, i32 6 +%r355 = trunc i512 %r352 to i32 +store i32 %r355, i32* %r354 +%r356 = lshr i512 %r352, 32 +%r358 = getelementptr i32, i32* %r1, i32 7 +%r359 = trunc i512 %r356 to i32 +store i32 %r359, i32* %r358 +%r360 = lshr i512 %r356, 32 +%r362 = getelementptr i32, i32* %r1, i32 8 +%r363 = trunc i512 %r360 to i32 +store i32 %r363, i32* %r362 +%r364 = lshr i512 %r360, 32 +%r366 = getelementptr i32, i32* %r1, i32 9 +%r367 = trunc i512 %r364 to i32 +store i32 %r367, i32* %r366 +%r368 = lshr i512 %r364, 32 +%r370 = getelementptr i32, i32* %r1, i32 10 +%r371 = trunc i512 %r368 to i32 +store i32 %r371, i32* %r370 +%r372 = lshr i512 %r368, 32 +%r374 = getelementptr i32, i32* %r1, i32 11 +%r375 = trunc i512 %r372 to i32 +store i32 %r375, i32* %r374 +%r376 = lshr i512 %r372, 32 +%r378 = getelementptr i32, i32* %r1, i32 12 +%r379 = trunc i512 %r376 to i32 +store i32 %r379, i32* %r378 +%r380 = lshr i512 %r376, 32 +%r382 = getelementptr i32, i32* %r1, i32 13 +%r383 = trunc i512 %r380 to i32 +store i32 %r383, i32* %r382 +%r384 = lshr i512 %r380, 32 +%r386 = getelementptr i32, i32* %r1, i32 14 +%r387 = trunc i512 %r384 to i32 +store i32 %r387, i32* %r386 +%r388 = lshr i512 %r384, 32 +%r390 = getelementptr i32, i32* %r1, i32 15 +%r391 = trunc i512 %r388 to i32 +store i32 %r391, i32* %r390 ret void } -define void @mcl_fpDbl_add17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_add16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -53152,464 +19440,426 @@ define void @mcl_fpDbl_add17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r220 = zext i32 %r219 to i1024 %r221 = shl i1024 %r220, 992 %r222 = or i1024 %r216, %r221 -%r223 = zext i1024 %r222 to i1056 -%r225 = getelementptr i32, i32* %r2, i32 32 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i1056 -%r228 = shl i1056 %r227, 1024 -%r229 = or i1056 %r223, %r228 -%r230 = zext i1056 %r229 to i1088 -%r232 = getelementptr i32, i32* %r2, i32 33 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i1088 -%r235 = shl i1088 %r234, 1056 -%r236 = or i1088 %r230, %r235 -%r237 = load i32, i32* %r3 -%r238 = zext i32 %r237 to i64 -%r240 = getelementptr i32, i32* %r3, i32 1 +%r223 = load i32, i32* %r3 +%r224 = zext i32 %r223 to i64 +%r226 = getelementptr i32, i32* %r3, i32 1 +%r227 = load i32, i32* %r226 +%r228 = zext i32 %r227 to i64 +%r229 = shl i64 %r228, 32 +%r230 = or i64 %r224, %r229 +%r231 = zext i64 %r230 to i96 +%r233 = getelementptr i32, i32* %r3, i32 2 +%r234 = load i32, i32* %r233 +%r235 = zext i32 %r234 to i96 +%r236 = shl i96 %r235, 64 +%r237 = or i96 %r231, %r236 +%r238 = zext i96 %r237 to i128 +%r240 = getelementptr i32, i32* %r3, i32 3 %r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i64 -%r243 = shl i64 %r242, 32 -%r244 = or i64 %r238, %r243 -%r245 = zext i64 %r244 to i96 -%r247 = getelementptr i32, i32* %r3, i32 2 +%r242 = zext i32 %r241 to i128 +%r243 = shl i128 %r242, 96 +%r244 = or i128 %r238, %r243 +%r245 = zext i128 %r244 to i160 +%r247 = getelementptr i32, i32* %r3, i32 4 %r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i96 -%r250 = shl i96 %r249, 64 -%r251 = or i96 %r245, %r250 -%r252 = zext i96 %r251 to i128 -%r254 = getelementptr i32, i32* %r3, i32 3 +%r249 = zext i32 %r248 to i160 +%r250 = shl i160 %r249, 128 +%r251 = or i160 %r245, %r250 +%r252 = zext i160 %r251 to i192 +%r254 = getelementptr i32, i32* %r3, i32 5 %r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i128 -%r257 = shl i128 %r256, 96 -%r258 = or i128 %r252, %r257 -%r259 = zext i128 %r258 to i160 -%r261 = getelementptr i32, i32* %r3, i32 4 +%r256 = zext i32 %r255 to i192 +%r257 = shl i192 %r256, 160 +%r258 = or i192 %r252, %r257 +%r259 = zext i192 %r258 to i224 +%r261 = getelementptr i32, i32* %r3, i32 6 %r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i160 -%r264 = shl i160 %r263, 128 -%r265 = or i160 %r259, %r264 -%r266 = zext i160 %r265 to i192 -%r268 = getelementptr i32, i32* %r3, i32 5 +%r263 = zext i32 %r262 to i224 +%r264 = shl i224 %r263, 192 +%r265 = or i224 %r259, %r264 +%r266 = zext i224 %r265 to i256 +%r268 = getelementptr i32, i32* %r3, i32 7 %r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i192 -%r271 = shl i192 %r270, 160 -%r272 = or i192 %r266, %r271 -%r273 = zext i192 %r272 to i224 -%r275 = getelementptr i32, i32* %r3, i32 6 +%r270 = zext i32 %r269 to i256 +%r271 = shl i256 %r270, 224 +%r272 = or i256 %r266, %r271 +%r273 = zext i256 %r272 to i288 +%r275 = getelementptr i32, i32* %r3, i32 8 %r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i224 -%r278 = shl i224 %r277, 192 -%r279 = or i224 %r273, %r278 -%r280 = zext i224 %r279 to i256 -%r282 = getelementptr i32, i32* %r3, i32 7 +%r277 = zext i32 %r276 to i288 +%r278 = shl i288 %r277, 256 +%r279 = or i288 %r273, %r278 +%r280 = zext i288 %r279 to i320 +%r282 = getelementptr i32, i32* %r3, i32 9 %r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i256 -%r285 = shl i256 %r284, 224 -%r286 = or i256 %r280, %r285 -%r287 = zext i256 %r286 to i288 -%r289 = getelementptr i32, i32* %r3, i32 8 +%r284 = zext i32 %r283 to i320 +%r285 = shl i320 %r284, 288 +%r286 = or i320 %r280, %r285 +%r287 = zext i320 %r286 to i352 +%r289 = getelementptr i32, i32* %r3, i32 10 %r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i288 -%r292 = shl i288 %r291, 256 -%r293 = or i288 %r287, %r292 -%r294 = zext i288 %r293 to i320 -%r296 = getelementptr i32, i32* %r3, i32 9 +%r291 = zext i32 %r290 to i352 +%r292 = shl i352 %r291, 320 +%r293 = or i352 %r287, %r292 +%r294 = zext i352 %r293 to i384 +%r296 = getelementptr i32, i32* %r3, i32 11 %r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i320 -%r299 = shl i320 %r298, 288 -%r300 = or i320 %r294, %r299 -%r301 = zext i320 %r300 to i352 -%r303 = getelementptr i32, i32* %r3, i32 10 +%r298 = zext i32 %r297 to i384 +%r299 = shl i384 %r298, 352 +%r300 = or i384 %r294, %r299 +%r301 = zext i384 %r300 to i416 +%r303 = getelementptr i32, i32* %r3, i32 12 %r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i352 -%r306 = shl i352 %r305, 320 -%r307 = or i352 %r301, %r306 -%r308 = zext i352 %r307 to i384 -%r310 = getelementptr i32, i32* %r3, i32 11 +%r305 = zext i32 %r304 to i416 +%r306 = shl i416 %r305, 384 +%r307 = or i416 %r301, %r306 +%r308 = zext i416 %r307 to i448 +%r310 = getelementptr i32, i32* %r3, i32 13 %r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i384 -%r313 = shl i384 %r312, 352 -%r314 = or i384 %r308, %r313 -%r315 = zext i384 %r314 to i416 -%r317 = getelementptr i32, i32* %r3, i32 12 +%r312 = zext i32 %r311 to i448 +%r313 = shl i448 %r312, 416 +%r314 = or i448 %r308, %r313 +%r315 = zext i448 %r314 to i480 +%r317 = getelementptr i32, i32* %r3, i32 14 %r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i416 -%r320 = shl i416 %r319, 384 -%r321 = or i416 %r315, %r320 -%r322 = zext i416 %r321 to i448 -%r324 = getelementptr i32, i32* %r3, i32 13 +%r319 = zext i32 %r318 to i480 +%r320 = shl i480 %r319, 448 +%r321 = or i480 %r315, %r320 +%r322 = zext i480 %r321 to i512 +%r324 = getelementptr i32, i32* %r3, i32 15 %r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i448 -%r327 = shl i448 %r326, 416 -%r328 = or i448 %r322, %r327 -%r329 = zext i448 %r328 to i480 -%r331 = getelementptr i32, i32* %r3, i32 14 +%r326 = zext i32 %r325 to i512 +%r327 = shl i512 %r326, 480 +%r328 = or i512 %r322, %r327 +%r329 = zext i512 %r328 to i544 +%r331 = getelementptr i32, i32* %r3, i32 16 %r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i480 -%r334 = shl i480 %r333, 448 -%r335 = or i480 %r329, %r334 -%r336 = zext i480 %r335 to i512 -%r338 = getelementptr i32, i32* %r3, i32 15 +%r333 = zext i32 %r332 to i544 +%r334 = shl i544 %r333, 512 +%r335 = or i544 %r329, %r334 +%r336 = zext i544 %r335 to i576 +%r338 = getelementptr i32, i32* %r3, i32 17 %r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i512 -%r341 = shl i512 %r340, 480 -%r342 = or i512 %r336, %r341 -%r343 = zext i512 %r342 to i544 -%r345 = getelementptr i32, i32* %r3, i32 16 +%r340 = zext i32 %r339 to i576 +%r341 = shl i576 %r340, 544 +%r342 = or i576 %r336, %r341 +%r343 = zext i576 %r342 to i608 +%r345 = getelementptr i32, i32* %r3, i32 18 %r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i544 -%r348 = shl i544 %r347, 512 -%r349 = or i544 %r343, %r348 -%r350 = zext i544 %r349 to i576 -%r352 = getelementptr i32, i32* %r3, i32 17 +%r347 = zext i32 %r346 to i608 +%r348 = shl i608 %r347, 576 +%r349 = or i608 %r343, %r348 +%r350 = zext i608 %r349 to i640 +%r352 = getelementptr i32, i32* %r3, i32 19 %r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i576 -%r355 = shl i576 %r354, 544 -%r356 = or i576 %r350, %r355 -%r357 = zext i576 %r356 to i608 -%r359 = getelementptr i32, i32* %r3, i32 18 +%r354 = zext i32 %r353 to i640 +%r355 = shl i640 %r354, 608 +%r356 = or i640 %r350, %r355 +%r357 = zext i640 %r356 to i672 +%r359 = getelementptr i32, i32* %r3, i32 20 %r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i608 -%r362 = shl i608 %r361, 576 -%r363 = or i608 %r357, %r362 -%r364 = zext i608 %r363 to i640 -%r366 = getelementptr i32, i32* %r3, i32 19 +%r361 = zext i32 %r360 to i672 +%r362 = shl i672 %r361, 640 +%r363 = or i672 %r357, %r362 +%r364 = zext i672 %r363 to i704 +%r366 = getelementptr i32, i32* %r3, i32 21 %r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i640 -%r369 = shl i640 %r368, 608 -%r370 = or i640 %r364, %r369 -%r371 = zext i640 %r370 to i672 -%r373 = getelementptr i32, i32* %r3, i32 20 +%r368 = zext i32 %r367 to i704 +%r369 = shl i704 %r368, 672 +%r370 = or i704 %r364, %r369 +%r371 = zext i704 %r370 to i736 +%r373 = getelementptr i32, i32* %r3, i32 22 %r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i672 -%r376 = shl i672 %r375, 640 -%r377 = or i672 %r371, %r376 -%r378 = zext i672 %r377 to i704 -%r380 = getelementptr i32, i32* %r3, i32 21 +%r375 = zext i32 %r374 to i736 +%r376 = shl i736 %r375, 704 +%r377 = or i736 %r371, %r376 +%r378 = zext i736 %r377 to i768 +%r380 = getelementptr i32, i32* %r3, i32 23 %r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i704 -%r383 = shl i704 %r382, 672 -%r384 = or i704 %r378, %r383 -%r385 = zext i704 %r384 to i736 -%r387 = getelementptr i32, i32* %r3, i32 22 +%r382 = zext i32 %r381 to i768 +%r383 = shl i768 %r382, 736 +%r384 = or i768 %r378, %r383 +%r385 = zext i768 %r384 to i800 +%r387 = getelementptr i32, i32* %r3, i32 24 %r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i736 -%r390 = shl i736 %r389, 704 -%r391 = or i736 %r385, %r390 -%r392 = zext i736 %r391 to i768 -%r394 = getelementptr i32, i32* %r3, i32 23 +%r389 = zext i32 %r388 to i800 +%r390 = shl i800 %r389, 768 +%r391 = or i800 %r385, %r390 +%r392 = zext i800 %r391 to i832 +%r394 = getelementptr i32, i32* %r3, i32 25 %r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i768 -%r397 = shl i768 %r396, 736 -%r398 = or i768 %r392, %r397 -%r399 = zext i768 %r398 to i800 -%r401 = getelementptr i32, i32* %r3, i32 24 +%r396 = zext i32 %r395 to i832 +%r397 = shl i832 %r396, 800 +%r398 = or i832 %r392, %r397 +%r399 = zext i832 %r398 to i864 +%r401 = getelementptr i32, i32* %r3, i32 26 %r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i800 -%r404 = shl i800 %r403, 768 -%r405 = or i800 %r399, %r404 -%r406 = zext i800 %r405 to i832 -%r408 = getelementptr i32, i32* %r3, i32 25 +%r403 = zext i32 %r402 to i864 +%r404 = shl i864 %r403, 832 +%r405 = or i864 %r399, %r404 +%r406 = zext i864 %r405 to i896 +%r408 = getelementptr i32, i32* %r3, i32 27 %r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i832 -%r411 = shl i832 %r410, 800 -%r412 = or i832 %r406, %r411 -%r413 = zext i832 %r412 to i864 -%r415 = getelementptr i32, i32* %r3, i32 26 +%r410 = zext i32 %r409 to i896 +%r411 = shl i896 %r410, 864 +%r412 = or i896 %r406, %r411 +%r413 = zext i896 %r412 to i928 +%r415 = getelementptr i32, i32* %r3, i32 28 %r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i864 -%r418 = shl i864 %r417, 832 -%r419 = or i864 %r413, %r418 -%r420 = zext i864 %r419 to i896 -%r422 = getelementptr i32, i32* %r3, i32 27 +%r417 = zext i32 %r416 to i928 +%r418 = shl i928 %r417, 896 +%r419 = or i928 %r413, %r418 +%r420 = zext i928 %r419 to i960 +%r422 = getelementptr i32, i32* %r3, i32 29 %r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i896 -%r425 = shl i896 %r424, 864 -%r426 = or i896 %r420, %r425 -%r427 = zext i896 %r426 to i928 -%r429 = getelementptr i32, i32* %r3, i32 28 +%r424 = zext i32 %r423 to i960 +%r425 = shl i960 %r424, 928 +%r426 = or i960 %r420, %r425 +%r427 = zext i960 %r426 to i992 +%r429 = getelementptr i32, i32* %r3, i32 30 %r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i928 -%r432 = shl i928 %r431, 896 -%r433 = or i928 %r427, %r432 -%r434 = zext i928 %r433 to i960 -%r436 = getelementptr i32, i32* %r3, i32 29 +%r431 = zext i32 %r430 to i992 +%r432 = shl i992 %r431, 960 +%r433 = or i992 %r427, %r432 +%r434 = zext i992 %r433 to i1024 +%r436 = getelementptr i32, i32* %r3, i32 31 %r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i960 -%r439 = shl i960 %r438, 928 -%r440 = or i960 %r434, %r439 -%r441 = zext i960 %r440 to i992 -%r443 = getelementptr i32, i32* %r3, i32 30 -%r444 = load i32, i32* %r443 -%r445 = zext i32 %r444 to i992 -%r446 = shl i992 %r445, 960 -%r447 = or i992 %r441, %r446 -%r448 = zext i992 %r447 to i1024 -%r450 = getelementptr i32, i32* %r3, i32 31 -%r451 = load i32, i32* %r450 -%r452 = zext i32 %r451 to i1024 -%r453 = shl i1024 %r452, 992 -%r454 = or i1024 %r448, %r453 -%r455 = zext i1024 %r454 to i1056 -%r457 = getelementptr i32, i32* %r3, i32 32 -%r458 = load i32, i32* %r457 -%r459 = zext i32 %r458 to i1056 -%r460 = shl i1056 %r459, 1024 -%r461 = or i1056 %r455, %r460 -%r462 = zext i1056 %r461 to i1088 -%r464 = getelementptr i32, i32* %r3, i32 33 -%r465 = load i32, i32* %r464 -%r466 = zext i32 %r465 to i1088 -%r467 = shl i1088 %r466, 1056 -%r468 = or i1088 %r462, %r467 -%r469 = zext i1088 %r236 to i1120 -%r470 = zext i1088 %r468 to i1120 -%r471 = add i1120 %r469, %r470 -%r472 = trunc i1120 %r471 to i544 -%r473 = trunc i544 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 0 -store i32 %r473, i32* %r475 -%r476 = lshr i544 %r472, 32 -%r477 = trunc i544 %r476 to i32 -%r479 = getelementptr i32, i32* %r1, i32 1 -store i32 %r477, i32* %r479 -%r480 = lshr i544 %r476, 32 -%r481 = trunc i544 %r480 to i32 -%r483 = getelementptr i32, i32* %r1, i32 2 -store i32 %r481, i32* %r483 -%r484 = lshr i544 %r480, 32 -%r485 = trunc i544 %r484 to i32 -%r487 = getelementptr i32, i32* %r1, i32 3 -store i32 %r485, i32* %r487 -%r488 = lshr i544 %r484, 32 -%r489 = trunc i544 %r488 to i32 -%r491 = getelementptr i32, i32* %r1, i32 4 -store i32 %r489, i32* %r491 -%r492 = lshr i544 %r488, 32 -%r493 = trunc i544 %r492 to i32 -%r495 = getelementptr i32, i32* %r1, i32 5 -store i32 %r493, i32* %r495 -%r496 = lshr i544 %r492, 32 -%r497 = trunc i544 %r496 to i32 -%r499 = getelementptr i32, i32* %r1, i32 6 -store i32 %r497, i32* %r499 -%r500 = lshr i544 %r496, 32 -%r501 = trunc i544 %r500 to i32 -%r503 = getelementptr i32, i32* %r1, i32 7 -store i32 %r501, i32* %r503 -%r504 = lshr i544 %r500, 32 -%r505 = trunc i544 %r504 to i32 -%r507 = getelementptr i32, i32* %r1, i32 8 -store i32 %r505, i32* %r507 -%r508 = lshr i544 %r504, 32 -%r509 = trunc i544 %r508 to i32 -%r511 = getelementptr i32, i32* %r1, i32 9 -store i32 %r509, i32* %r511 -%r512 = lshr i544 %r508, 32 -%r513 = trunc i544 %r512 to i32 -%r515 = getelementptr i32, i32* %r1, i32 10 -store i32 %r513, i32* %r515 -%r516 = lshr i544 %r512, 32 -%r517 = trunc i544 %r516 to i32 -%r519 = getelementptr i32, i32* %r1, i32 11 -store i32 %r517, i32* %r519 -%r520 = lshr i544 %r516, 32 -%r521 = trunc i544 %r520 to i32 -%r523 = getelementptr i32, i32* %r1, i32 12 -store i32 %r521, i32* %r523 -%r524 = lshr i544 %r520, 32 -%r525 = trunc i544 %r524 to i32 -%r527 = getelementptr i32, i32* %r1, i32 13 -store i32 %r525, i32* %r527 -%r528 = lshr i544 %r524, 32 -%r529 = trunc i544 %r528 to i32 -%r531 = getelementptr i32, i32* %r1, i32 14 -store i32 %r529, i32* %r531 -%r532 = lshr i544 %r528, 32 -%r533 = trunc i544 %r532 to i32 -%r535 = getelementptr i32, i32* %r1, i32 15 -store i32 %r533, i32* %r535 -%r536 = lshr i544 %r532, 32 -%r537 = trunc i544 %r536 to i32 -%r539 = getelementptr i32, i32* %r1, i32 16 -store i32 %r537, i32* %r539 -%r540 = lshr i1120 %r471, 544 -%r541 = trunc i1120 %r540 to i576 -%r542 = load i32, i32* %r4 -%r543 = zext i32 %r542 to i64 -%r545 = getelementptr i32, i32* %r4, i32 1 -%r546 = load i32, i32* %r545 -%r547 = zext i32 %r546 to i64 -%r548 = shl i64 %r547, 32 -%r549 = or i64 %r543, %r548 -%r550 = zext i64 %r549 to i96 -%r552 = getelementptr i32, i32* %r4, i32 2 -%r553 = load i32, i32* %r552 -%r554 = zext i32 %r553 to i96 -%r555 = shl i96 %r554, 64 -%r556 = or i96 %r550, %r555 -%r557 = zext i96 %r556 to i128 -%r559 = getelementptr i32, i32* %r4, i32 3 -%r560 = load i32, i32* %r559 -%r561 = zext i32 %r560 to i128 -%r562 = shl i128 %r561, 96 -%r563 = or i128 %r557, %r562 -%r564 = zext i128 %r563 to i160 -%r566 = getelementptr i32, i32* %r4, i32 4 -%r567 = load i32, i32* %r566 -%r568 = zext i32 %r567 to i160 -%r569 = shl i160 %r568, 128 -%r570 = or i160 %r564, %r569 -%r571 = zext i160 %r570 to i192 -%r573 = getelementptr i32, i32* %r4, i32 5 -%r574 = load i32, i32* %r573 -%r575 = zext i32 %r574 to i192 -%r576 = shl i192 %r575, 160 -%r577 = or i192 %r571, %r576 -%r578 = zext i192 %r577 to i224 -%r580 = getelementptr i32, i32* %r4, i32 6 -%r581 = load i32, i32* %r580 -%r582 = zext i32 %r581 to i224 -%r583 = shl i224 %r582, 192 -%r584 = or i224 %r578, %r583 -%r585 = zext i224 %r584 to i256 -%r587 = getelementptr i32, i32* %r4, i32 7 -%r588 = load i32, i32* %r587 -%r589 = zext i32 %r588 to i256 -%r590 = shl i256 %r589, 224 -%r591 = or i256 %r585, %r590 -%r592 = zext i256 %r591 to i288 -%r594 = getelementptr i32, i32* %r4, i32 8 -%r595 = load i32, i32* %r594 -%r596 = zext i32 %r595 to i288 -%r597 = shl i288 %r596, 256 -%r598 = or i288 %r592, %r597 -%r599 = zext i288 %r598 to i320 -%r601 = getelementptr i32, i32* %r4, i32 9 -%r602 = load i32, i32* %r601 -%r603 = zext i32 %r602 to i320 -%r604 = shl i320 %r603, 288 -%r605 = or i320 %r599, %r604 -%r606 = zext i320 %r605 to i352 -%r608 = getelementptr i32, i32* %r4, i32 10 -%r609 = load i32, i32* %r608 -%r610 = zext i32 %r609 to i352 -%r611 = shl i352 %r610, 320 -%r612 = or i352 %r606, %r611 -%r613 = zext i352 %r612 to i384 -%r615 = getelementptr i32, i32* %r4, i32 11 -%r616 = load i32, i32* %r615 -%r617 = zext i32 %r616 to i384 -%r618 = shl i384 %r617, 352 -%r619 = or i384 %r613, %r618 -%r620 = zext i384 %r619 to i416 -%r622 = getelementptr i32, i32* %r4, i32 12 -%r623 = load i32, i32* %r622 -%r624 = zext i32 %r623 to i416 -%r625 = shl i416 %r624, 384 -%r626 = or i416 %r620, %r625 -%r627 = zext i416 %r626 to i448 -%r629 = getelementptr i32, i32* %r4, i32 13 -%r630 = load i32, i32* %r629 -%r631 = zext i32 %r630 to i448 -%r632 = shl i448 %r631, 416 -%r633 = or i448 %r627, %r632 -%r634 = zext i448 %r633 to i480 -%r636 = getelementptr i32, i32* %r4, i32 14 -%r637 = load i32, i32* %r636 -%r638 = zext i32 %r637 to i480 -%r639 = shl i480 %r638, 448 -%r640 = or i480 %r634, %r639 -%r641 = zext i480 %r640 to i512 -%r643 = getelementptr i32, i32* %r4, i32 15 -%r644 = load i32, i32* %r643 -%r645 = zext i32 %r644 to i512 -%r646 = shl i512 %r645, 480 -%r647 = or i512 %r641, %r646 -%r648 = zext i512 %r647 to i544 -%r650 = getelementptr i32, i32* %r4, i32 16 -%r651 = load i32, i32* %r650 -%r652 = zext i32 %r651 to i544 -%r653 = shl i544 %r652, 512 -%r654 = or i544 %r648, %r653 -%r655 = zext i544 %r654 to i576 -%r656 = sub i576 %r541, %r655 -%r657 = lshr i576 %r656, 544 -%r658 = trunc i576 %r657 to i1 -%r659 = select i1 %r658, i576 %r541, i576 %r656 -%r660 = trunc i576 %r659 to i544 -%r662 = getelementptr i32, i32* %r1, i32 17 -%r663 = trunc i544 %r660 to i32 -%r665 = getelementptr i32, i32* %r662, i32 0 -store i32 %r663, i32* %r665 -%r666 = lshr i544 %r660, 32 -%r667 = trunc i544 %r666 to i32 -%r669 = getelementptr i32, i32* %r662, i32 1 -store i32 %r667, i32* %r669 -%r670 = lshr i544 %r666, 32 -%r671 = trunc i544 %r670 to i32 -%r673 = getelementptr i32, i32* %r662, i32 2 -store i32 %r671, i32* %r673 -%r674 = lshr i544 %r670, 32 -%r675 = trunc i544 %r674 to i32 -%r677 = getelementptr i32, i32* %r662, i32 3 -store i32 %r675, i32* %r677 -%r678 = lshr i544 %r674, 32 -%r679 = trunc i544 %r678 to i32 -%r681 = getelementptr i32, i32* %r662, i32 4 -store i32 %r679, i32* %r681 -%r682 = lshr i544 %r678, 32 -%r683 = trunc i544 %r682 to i32 -%r685 = getelementptr i32, i32* %r662, i32 5 -store i32 %r683, i32* %r685 -%r686 = lshr i544 %r682, 32 -%r687 = trunc i544 %r686 to i32 -%r689 = getelementptr i32, i32* %r662, i32 6 -store i32 %r687, i32* %r689 -%r690 = lshr i544 %r686, 32 -%r691 = trunc i544 %r690 to i32 -%r693 = getelementptr i32, i32* %r662, i32 7 -store i32 %r691, i32* %r693 -%r694 = lshr i544 %r690, 32 -%r695 = trunc i544 %r694 to i32 -%r697 = getelementptr i32, i32* %r662, i32 8 -store i32 %r695, i32* %r697 -%r698 = lshr i544 %r694, 32 -%r699 = trunc i544 %r698 to i32 -%r701 = getelementptr i32, i32* %r662, i32 9 -store i32 %r699, i32* %r701 -%r702 = lshr i544 %r698, 32 -%r703 = trunc i544 %r702 to i32 -%r705 = getelementptr i32, i32* %r662, i32 10 -store i32 %r703, i32* %r705 -%r706 = lshr i544 %r702, 32 -%r707 = trunc i544 %r706 to i32 -%r709 = getelementptr i32, i32* %r662, i32 11 -store i32 %r707, i32* %r709 -%r710 = lshr i544 %r706, 32 -%r711 = trunc i544 %r710 to i32 -%r713 = getelementptr i32, i32* %r662, i32 12 -store i32 %r711, i32* %r713 -%r714 = lshr i544 %r710, 32 -%r715 = trunc i544 %r714 to i32 -%r717 = getelementptr i32, i32* %r662, i32 13 -store i32 %r715, i32* %r717 -%r718 = lshr i544 %r714, 32 -%r719 = trunc i544 %r718 to i32 -%r721 = getelementptr i32, i32* %r662, i32 14 -store i32 %r719, i32* %r721 -%r722 = lshr i544 %r718, 32 -%r723 = trunc i544 %r722 to i32 -%r725 = getelementptr i32, i32* %r662, i32 15 -store i32 %r723, i32* %r725 -%r726 = lshr i544 %r722, 32 -%r727 = trunc i544 %r726 to i32 -%r729 = getelementptr i32, i32* %r662, i32 16 -store i32 %r727, i32* %r729 +%r438 = zext i32 %r437 to i1024 +%r439 = shl i1024 %r438, 992 +%r440 = or i1024 %r434, %r439 +%r441 = zext i1024 %r222 to i1056 +%r442 = zext i1024 %r440 to i1056 +%r443 = add i1056 %r441, %r442 +%r444 = trunc i1056 %r443 to i512 +%r446 = getelementptr i32, i32* %r1, i32 0 +%r447 = trunc i512 %r444 to i32 +store i32 %r447, i32* %r446 +%r448 = lshr i512 %r444, 32 +%r450 = getelementptr i32, i32* %r1, i32 1 +%r451 = trunc i512 %r448 to i32 +store i32 %r451, i32* %r450 +%r452 = lshr i512 %r448, 32 +%r454 = getelementptr i32, i32* %r1, i32 2 +%r455 = trunc i512 %r452 to i32 +store i32 %r455, i32* %r454 +%r456 = lshr i512 %r452, 32 +%r458 = getelementptr i32, i32* %r1, i32 3 +%r459 = trunc i512 %r456 to i32 +store i32 %r459, i32* %r458 +%r460 = lshr i512 %r456, 32 +%r462 = getelementptr i32, i32* %r1, i32 4 +%r463 = trunc i512 %r460 to i32 +store i32 %r463, i32* %r462 +%r464 = lshr i512 %r460, 32 +%r466 = getelementptr i32, i32* %r1, i32 5 +%r467 = trunc i512 %r464 to i32 +store i32 %r467, i32* %r466 +%r468 = lshr i512 %r464, 32 +%r470 = getelementptr i32, i32* %r1, i32 6 +%r471 = trunc i512 %r468 to i32 +store i32 %r471, i32* %r470 +%r472 = lshr i512 %r468, 32 +%r474 = getelementptr i32, i32* %r1, i32 7 +%r475 = trunc i512 %r472 to i32 +store i32 %r475, i32* %r474 +%r476 = lshr i512 %r472, 32 +%r478 = getelementptr i32, i32* %r1, i32 8 +%r479 = trunc i512 %r476 to i32 +store i32 %r479, i32* %r478 +%r480 = lshr i512 %r476, 32 +%r482 = getelementptr i32, i32* %r1, i32 9 +%r483 = trunc i512 %r480 to i32 +store i32 %r483, i32* %r482 +%r484 = lshr i512 %r480, 32 +%r486 = getelementptr i32, i32* %r1, i32 10 +%r487 = trunc i512 %r484 to i32 +store i32 %r487, i32* %r486 +%r488 = lshr i512 %r484, 32 +%r490 = getelementptr i32, i32* %r1, i32 11 +%r491 = trunc i512 %r488 to i32 +store i32 %r491, i32* %r490 +%r492 = lshr i512 %r488, 32 +%r494 = getelementptr i32, i32* %r1, i32 12 +%r495 = trunc i512 %r492 to i32 +store i32 %r495, i32* %r494 +%r496 = lshr i512 %r492, 32 +%r498 = getelementptr i32, i32* %r1, i32 13 +%r499 = trunc i512 %r496 to i32 +store i32 %r499, i32* %r498 +%r500 = lshr i512 %r496, 32 +%r502 = getelementptr i32, i32* %r1, i32 14 +%r503 = trunc i512 %r500 to i32 +store i32 %r503, i32* %r502 +%r504 = lshr i512 %r500, 32 +%r506 = getelementptr i32, i32* %r1, i32 15 +%r507 = trunc i512 %r504 to i32 +store i32 %r507, i32* %r506 +%r508 = lshr i1056 %r443, 512 +%r509 = trunc i1056 %r508 to i544 +%r510 = load i32, i32* %r4 +%r511 = zext i32 %r510 to i64 +%r513 = getelementptr i32, i32* %r4, i32 1 +%r514 = load i32, i32* %r513 +%r515 = zext i32 %r514 to i64 +%r516 = shl i64 %r515, 32 +%r517 = or i64 %r511, %r516 +%r518 = zext i64 %r517 to i96 +%r520 = getelementptr i32, i32* %r4, i32 2 +%r521 = load i32, i32* %r520 +%r522 = zext i32 %r521 to i96 +%r523 = shl i96 %r522, 64 +%r524 = or i96 %r518, %r523 +%r525 = zext i96 %r524 to i128 +%r527 = getelementptr i32, i32* %r4, i32 3 +%r528 = load i32, i32* %r527 +%r529 = zext i32 %r528 to i128 +%r530 = shl i128 %r529, 96 +%r531 = or i128 %r525, %r530 +%r532 = zext i128 %r531 to i160 +%r534 = getelementptr i32, i32* %r4, i32 4 +%r535 = load i32, i32* %r534 +%r536 = zext i32 %r535 to i160 +%r537 = shl i160 %r536, 128 +%r538 = or i160 %r532, %r537 +%r539 = zext i160 %r538 to i192 +%r541 = getelementptr i32, i32* %r4, i32 5 +%r542 = load i32, i32* %r541 +%r543 = zext i32 %r542 to i192 +%r544 = shl i192 %r543, 160 +%r545 = or i192 %r539, %r544 +%r546 = zext i192 %r545 to i224 +%r548 = getelementptr i32, i32* %r4, i32 6 +%r549 = load i32, i32* %r548 +%r550 = zext i32 %r549 to i224 +%r551 = shl i224 %r550, 192 +%r552 = or i224 %r546, %r551 +%r553 = zext i224 %r552 to i256 +%r555 = getelementptr i32, i32* %r4, i32 7 +%r556 = load i32, i32* %r555 +%r557 = zext i32 %r556 to i256 +%r558 = shl i256 %r557, 224 +%r559 = or i256 %r553, %r558 +%r560 = zext i256 %r559 to i288 +%r562 = getelementptr i32, i32* %r4, i32 8 +%r563 = load i32, i32* %r562 +%r564 = zext i32 %r563 to i288 +%r565 = shl i288 %r564, 256 +%r566 = or i288 %r560, %r565 +%r567 = zext i288 %r566 to i320 +%r569 = getelementptr i32, i32* %r4, i32 9 +%r570 = load i32, i32* %r569 +%r571 = zext i32 %r570 to i320 +%r572 = shl i320 %r571, 288 +%r573 = or i320 %r567, %r572 +%r574 = zext i320 %r573 to i352 +%r576 = getelementptr i32, i32* %r4, i32 10 +%r577 = load i32, i32* %r576 +%r578 = zext i32 %r577 to i352 +%r579 = shl i352 %r578, 320 +%r580 = or i352 %r574, %r579 +%r581 = zext i352 %r580 to i384 +%r583 = getelementptr i32, i32* %r4, i32 11 +%r584 = load i32, i32* %r583 +%r585 = zext i32 %r584 to i384 +%r586 = shl i384 %r585, 352 +%r587 = or i384 %r581, %r586 +%r588 = zext i384 %r587 to i416 +%r590 = getelementptr i32, i32* %r4, i32 12 +%r591 = load i32, i32* %r590 +%r592 = zext i32 %r591 to i416 +%r593 = shl i416 %r592, 384 +%r594 = or i416 %r588, %r593 +%r595 = zext i416 %r594 to i448 +%r597 = getelementptr i32, i32* %r4, i32 13 +%r598 = load i32, i32* %r597 +%r599 = zext i32 %r598 to i448 +%r600 = shl i448 %r599, 416 +%r601 = or i448 %r595, %r600 +%r602 = zext i448 %r601 to i480 +%r604 = getelementptr i32, i32* %r4, i32 14 +%r605 = load i32, i32* %r604 +%r606 = zext i32 %r605 to i480 +%r607 = shl i480 %r606, 448 +%r608 = or i480 %r602, %r607 +%r609 = zext i480 %r608 to i512 +%r611 = getelementptr i32, i32* %r4, i32 15 +%r612 = load i32, i32* %r611 +%r613 = zext i32 %r612 to i512 +%r614 = shl i512 %r613, 480 +%r615 = or i512 %r609, %r614 +%r616 = zext i512 %r615 to i544 +%r617 = sub i544 %r509, %r616 +%r618 = lshr i544 %r617, 512 +%r619 = trunc i544 %r618 to i1 +%r620 = select i1 %r619, i544 %r509, i544 %r617 +%r621 = trunc i544 %r620 to i512 +%r623 = getelementptr i32, i32* %r1, i32 16 +%r625 = getelementptr i32, i32* %r623, i32 0 +%r626 = trunc i512 %r621 to i32 +store i32 %r626, i32* %r625 +%r627 = lshr i512 %r621, 32 +%r629 = getelementptr i32, i32* %r623, i32 1 +%r630 = trunc i512 %r627 to i32 +store i32 %r630, i32* %r629 +%r631 = lshr i512 %r627, 32 +%r633 = getelementptr i32, i32* %r623, i32 2 +%r634 = trunc i512 %r631 to i32 +store i32 %r634, i32* %r633 +%r635 = lshr i512 %r631, 32 +%r637 = getelementptr i32, i32* %r623, i32 3 +%r638 = trunc i512 %r635 to i32 +store i32 %r638, i32* %r637 +%r639 = lshr i512 %r635, 32 +%r641 = getelementptr i32, i32* %r623, i32 4 +%r642 = trunc i512 %r639 to i32 +store i32 %r642, i32* %r641 +%r643 = lshr i512 %r639, 32 +%r645 = getelementptr i32, i32* %r623, i32 5 +%r646 = trunc i512 %r643 to i32 +store i32 %r646, i32* %r645 +%r647 = lshr i512 %r643, 32 +%r649 = getelementptr i32, i32* %r623, i32 6 +%r650 = trunc i512 %r647 to i32 +store i32 %r650, i32* %r649 +%r651 = lshr i512 %r647, 32 +%r653 = getelementptr i32, i32* %r623, i32 7 +%r654 = trunc i512 %r651 to i32 +store i32 %r654, i32* %r653 +%r655 = lshr i512 %r651, 32 +%r657 = getelementptr i32, i32* %r623, i32 8 +%r658 = trunc i512 %r655 to i32 +store i32 %r658, i32* %r657 +%r659 = lshr i512 %r655, 32 +%r661 = getelementptr i32, i32* %r623, i32 9 +%r662 = trunc i512 %r659 to i32 +store i32 %r662, i32* %r661 +%r663 = lshr i512 %r659, 32 +%r665 = getelementptr i32, i32* %r623, i32 10 +%r666 = trunc i512 %r663 to i32 +store i32 %r666, i32* %r665 +%r667 = lshr i512 %r663, 32 +%r669 = getelementptr i32, i32* %r623, i32 11 +%r670 = trunc i512 %r667 to i32 +store i32 %r670, i32* %r669 +%r671 = lshr i512 %r667, 32 +%r673 = getelementptr i32, i32* %r623, i32 12 +%r674 = trunc i512 %r671 to i32 +store i32 %r674, i32* %r673 +%r675 = lshr i512 %r671, 32 +%r677 = getelementptr i32, i32* %r623, i32 13 +%r678 = trunc i512 %r675 to i32 +store i32 %r678, i32* %r677 +%r679 = lshr i512 %r675, 32 +%r681 = getelementptr i32, i32* %r623, i32 14 +%r682 = trunc i512 %r679 to i32 +store i32 %r682, i32* %r681 +%r683 = lshr i512 %r679, 32 +%r685 = getelementptr i32, i32* %r623, i32 15 +%r686 = trunc i512 %r683 to i32 +store i32 %r686, i32* %r685 ret void } -define void @mcl_fpDbl_sub17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) +define void @mcl_fpDbl_sub16L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r3, i32* noalias %r4) { %r5 = load i32, i32* %r2 %r6 = zext i32 %r5 to i64 @@ -53798,458 +20048,420 @@ define void @mcl_fpDbl_sub17L(i32* noalias %r1, i32* noalias %r2, i32* noalias %r220 = zext i32 %r219 to i1024 %r221 = shl i1024 %r220, 992 %r222 = or i1024 %r216, %r221 -%r223 = zext i1024 %r222 to i1056 -%r225 = getelementptr i32, i32* %r2, i32 32 -%r226 = load i32, i32* %r225 -%r227 = zext i32 %r226 to i1056 -%r228 = shl i1056 %r227, 1024 -%r229 = or i1056 %r223, %r228 -%r230 = zext i1056 %r229 to i1088 -%r232 = getelementptr i32, i32* %r2, i32 33 -%r233 = load i32, i32* %r232 -%r234 = zext i32 %r233 to i1088 -%r235 = shl i1088 %r234, 1056 -%r236 = or i1088 %r230, %r235 -%r237 = load i32, i32* %r3 -%r238 = zext i32 %r237 to i64 -%r240 = getelementptr i32, i32* %r3, i32 1 +%r223 = load i32, i32* %r3 +%r224 = zext i32 %r223 to i64 +%r226 = getelementptr i32, i32* %r3, i32 1 +%r227 = load i32, i32* %r226 +%r228 = zext i32 %r227 to i64 +%r229 = shl i64 %r228, 32 +%r230 = or i64 %r224, %r229 +%r231 = zext i64 %r230 to i96 +%r233 = getelementptr i32, i32* %r3, i32 2 +%r234 = load i32, i32* %r233 +%r235 = zext i32 %r234 to i96 +%r236 = shl i96 %r235, 64 +%r237 = or i96 %r231, %r236 +%r238 = zext i96 %r237 to i128 +%r240 = getelementptr i32, i32* %r3, i32 3 %r241 = load i32, i32* %r240 -%r242 = zext i32 %r241 to i64 -%r243 = shl i64 %r242, 32 -%r244 = or i64 %r238, %r243 -%r245 = zext i64 %r244 to i96 -%r247 = getelementptr i32, i32* %r3, i32 2 +%r242 = zext i32 %r241 to i128 +%r243 = shl i128 %r242, 96 +%r244 = or i128 %r238, %r243 +%r245 = zext i128 %r244 to i160 +%r247 = getelementptr i32, i32* %r3, i32 4 %r248 = load i32, i32* %r247 -%r249 = zext i32 %r248 to i96 -%r250 = shl i96 %r249, 64 -%r251 = or i96 %r245, %r250 -%r252 = zext i96 %r251 to i128 -%r254 = getelementptr i32, i32* %r3, i32 3 +%r249 = zext i32 %r248 to i160 +%r250 = shl i160 %r249, 128 +%r251 = or i160 %r245, %r250 +%r252 = zext i160 %r251 to i192 +%r254 = getelementptr i32, i32* %r3, i32 5 %r255 = load i32, i32* %r254 -%r256 = zext i32 %r255 to i128 -%r257 = shl i128 %r256, 96 -%r258 = or i128 %r252, %r257 -%r259 = zext i128 %r258 to i160 -%r261 = getelementptr i32, i32* %r3, i32 4 +%r256 = zext i32 %r255 to i192 +%r257 = shl i192 %r256, 160 +%r258 = or i192 %r252, %r257 +%r259 = zext i192 %r258 to i224 +%r261 = getelementptr i32, i32* %r3, i32 6 %r262 = load i32, i32* %r261 -%r263 = zext i32 %r262 to i160 -%r264 = shl i160 %r263, 128 -%r265 = or i160 %r259, %r264 -%r266 = zext i160 %r265 to i192 -%r268 = getelementptr i32, i32* %r3, i32 5 +%r263 = zext i32 %r262 to i224 +%r264 = shl i224 %r263, 192 +%r265 = or i224 %r259, %r264 +%r266 = zext i224 %r265 to i256 +%r268 = getelementptr i32, i32* %r3, i32 7 %r269 = load i32, i32* %r268 -%r270 = zext i32 %r269 to i192 -%r271 = shl i192 %r270, 160 -%r272 = or i192 %r266, %r271 -%r273 = zext i192 %r272 to i224 -%r275 = getelementptr i32, i32* %r3, i32 6 +%r270 = zext i32 %r269 to i256 +%r271 = shl i256 %r270, 224 +%r272 = or i256 %r266, %r271 +%r273 = zext i256 %r272 to i288 +%r275 = getelementptr i32, i32* %r3, i32 8 %r276 = load i32, i32* %r275 -%r277 = zext i32 %r276 to i224 -%r278 = shl i224 %r277, 192 -%r279 = or i224 %r273, %r278 -%r280 = zext i224 %r279 to i256 -%r282 = getelementptr i32, i32* %r3, i32 7 +%r277 = zext i32 %r276 to i288 +%r278 = shl i288 %r277, 256 +%r279 = or i288 %r273, %r278 +%r280 = zext i288 %r279 to i320 +%r282 = getelementptr i32, i32* %r3, i32 9 %r283 = load i32, i32* %r282 -%r284 = zext i32 %r283 to i256 -%r285 = shl i256 %r284, 224 -%r286 = or i256 %r280, %r285 -%r287 = zext i256 %r286 to i288 -%r289 = getelementptr i32, i32* %r3, i32 8 +%r284 = zext i32 %r283 to i320 +%r285 = shl i320 %r284, 288 +%r286 = or i320 %r280, %r285 +%r287 = zext i320 %r286 to i352 +%r289 = getelementptr i32, i32* %r3, i32 10 %r290 = load i32, i32* %r289 -%r291 = zext i32 %r290 to i288 -%r292 = shl i288 %r291, 256 -%r293 = or i288 %r287, %r292 -%r294 = zext i288 %r293 to i320 -%r296 = getelementptr i32, i32* %r3, i32 9 +%r291 = zext i32 %r290 to i352 +%r292 = shl i352 %r291, 320 +%r293 = or i352 %r287, %r292 +%r294 = zext i352 %r293 to i384 +%r296 = getelementptr i32, i32* %r3, i32 11 %r297 = load i32, i32* %r296 -%r298 = zext i32 %r297 to i320 -%r299 = shl i320 %r298, 288 -%r300 = or i320 %r294, %r299 -%r301 = zext i320 %r300 to i352 -%r303 = getelementptr i32, i32* %r3, i32 10 +%r298 = zext i32 %r297 to i384 +%r299 = shl i384 %r298, 352 +%r300 = or i384 %r294, %r299 +%r301 = zext i384 %r300 to i416 +%r303 = getelementptr i32, i32* %r3, i32 12 %r304 = load i32, i32* %r303 -%r305 = zext i32 %r304 to i352 -%r306 = shl i352 %r305, 320 -%r307 = or i352 %r301, %r306 -%r308 = zext i352 %r307 to i384 -%r310 = getelementptr i32, i32* %r3, i32 11 +%r305 = zext i32 %r304 to i416 +%r306 = shl i416 %r305, 384 +%r307 = or i416 %r301, %r306 +%r308 = zext i416 %r307 to i448 +%r310 = getelementptr i32, i32* %r3, i32 13 %r311 = load i32, i32* %r310 -%r312 = zext i32 %r311 to i384 -%r313 = shl i384 %r312, 352 -%r314 = or i384 %r308, %r313 -%r315 = zext i384 %r314 to i416 -%r317 = getelementptr i32, i32* %r3, i32 12 +%r312 = zext i32 %r311 to i448 +%r313 = shl i448 %r312, 416 +%r314 = or i448 %r308, %r313 +%r315 = zext i448 %r314 to i480 +%r317 = getelementptr i32, i32* %r3, i32 14 %r318 = load i32, i32* %r317 -%r319 = zext i32 %r318 to i416 -%r320 = shl i416 %r319, 384 -%r321 = or i416 %r315, %r320 -%r322 = zext i416 %r321 to i448 -%r324 = getelementptr i32, i32* %r3, i32 13 +%r319 = zext i32 %r318 to i480 +%r320 = shl i480 %r319, 448 +%r321 = or i480 %r315, %r320 +%r322 = zext i480 %r321 to i512 +%r324 = getelementptr i32, i32* %r3, i32 15 %r325 = load i32, i32* %r324 -%r326 = zext i32 %r325 to i448 -%r327 = shl i448 %r326, 416 -%r328 = or i448 %r322, %r327 -%r329 = zext i448 %r328 to i480 -%r331 = getelementptr i32, i32* %r3, i32 14 +%r326 = zext i32 %r325 to i512 +%r327 = shl i512 %r326, 480 +%r328 = or i512 %r322, %r327 +%r329 = zext i512 %r328 to i544 +%r331 = getelementptr i32, i32* %r3, i32 16 %r332 = load i32, i32* %r331 -%r333 = zext i32 %r332 to i480 -%r334 = shl i480 %r333, 448 -%r335 = or i480 %r329, %r334 -%r336 = zext i480 %r335 to i512 -%r338 = getelementptr i32, i32* %r3, i32 15 +%r333 = zext i32 %r332 to i544 +%r334 = shl i544 %r333, 512 +%r335 = or i544 %r329, %r334 +%r336 = zext i544 %r335 to i576 +%r338 = getelementptr i32, i32* %r3, i32 17 %r339 = load i32, i32* %r338 -%r340 = zext i32 %r339 to i512 -%r341 = shl i512 %r340, 480 -%r342 = or i512 %r336, %r341 -%r343 = zext i512 %r342 to i544 -%r345 = getelementptr i32, i32* %r3, i32 16 +%r340 = zext i32 %r339 to i576 +%r341 = shl i576 %r340, 544 +%r342 = or i576 %r336, %r341 +%r343 = zext i576 %r342 to i608 +%r345 = getelementptr i32, i32* %r3, i32 18 %r346 = load i32, i32* %r345 -%r347 = zext i32 %r346 to i544 -%r348 = shl i544 %r347, 512 -%r349 = or i544 %r343, %r348 -%r350 = zext i544 %r349 to i576 -%r352 = getelementptr i32, i32* %r3, i32 17 +%r347 = zext i32 %r346 to i608 +%r348 = shl i608 %r347, 576 +%r349 = or i608 %r343, %r348 +%r350 = zext i608 %r349 to i640 +%r352 = getelementptr i32, i32* %r3, i32 19 %r353 = load i32, i32* %r352 -%r354 = zext i32 %r353 to i576 -%r355 = shl i576 %r354, 544 -%r356 = or i576 %r350, %r355 -%r357 = zext i576 %r356 to i608 -%r359 = getelementptr i32, i32* %r3, i32 18 +%r354 = zext i32 %r353 to i640 +%r355 = shl i640 %r354, 608 +%r356 = or i640 %r350, %r355 +%r357 = zext i640 %r356 to i672 +%r359 = getelementptr i32, i32* %r3, i32 20 %r360 = load i32, i32* %r359 -%r361 = zext i32 %r360 to i608 -%r362 = shl i608 %r361, 576 -%r363 = or i608 %r357, %r362 -%r364 = zext i608 %r363 to i640 -%r366 = getelementptr i32, i32* %r3, i32 19 +%r361 = zext i32 %r360 to i672 +%r362 = shl i672 %r361, 640 +%r363 = or i672 %r357, %r362 +%r364 = zext i672 %r363 to i704 +%r366 = getelementptr i32, i32* %r3, i32 21 %r367 = load i32, i32* %r366 -%r368 = zext i32 %r367 to i640 -%r369 = shl i640 %r368, 608 -%r370 = or i640 %r364, %r369 -%r371 = zext i640 %r370 to i672 -%r373 = getelementptr i32, i32* %r3, i32 20 +%r368 = zext i32 %r367 to i704 +%r369 = shl i704 %r368, 672 +%r370 = or i704 %r364, %r369 +%r371 = zext i704 %r370 to i736 +%r373 = getelementptr i32, i32* %r3, i32 22 %r374 = load i32, i32* %r373 -%r375 = zext i32 %r374 to i672 -%r376 = shl i672 %r375, 640 -%r377 = or i672 %r371, %r376 -%r378 = zext i672 %r377 to i704 -%r380 = getelementptr i32, i32* %r3, i32 21 +%r375 = zext i32 %r374 to i736 +%r376 = shl i736 %r375, 704 +%r377 = or i736 %r371, %r376 +%r378 = zext i736 %r377 to i768 +%r380 = getelementptr i32, i32* %r3, i32 23 %r381 = load i32, i32* %r380 -%r382 = zext i32 %r381 to i704 -%r383 = shl i704 %r382, 672 -%r384 = or i704 %r378, %r383 -%r385 = zext i704 %r384 to i736 -%r387 = getelementptr i32, i32* %r3, i32 22 +%r382 = zext i32 %r381 to i768 +%r383 = shl i768 %r382, 736 +%r384 = or i768 %r378, %r383 +%r385 = zext i768 %r384 to i800 +%r387 = getelementptr i32, i32* %r3, i32 24 %r388 = load i32, i32* %r387 -%r389 = zext i32 %r388 to i736 -%r390 = shl i736 %r389, 704 -%r391 = or i736 %r385, %r390 -%r392 = zext i736 %r391 to i768 -%r394 = getelementptr i32, i32* %r3, i32 23 +%r389 = zext i32 %r388 to i800 +%r390 = shl i800 %r389, 768 +%r391 = or i800 %r385, %r390 +%r392 = zext i800 %r391 to i832 +%r394 = getelementptr i32, i32* %r3, i32 25 %r395 = load i32, i32* %r394 -%r396 = zext i32 %r395 to i768 -%r397 = shl i768 %r396, 736 -%r398 = or i768 %r392, %r397 -%r399 = zext i768 %r398 to i800 -%r401 = getelementptr i32, i32* %r3, i32 24 +%r396 = zext i32 %r395 to i832 +%r397 = shl i832 %r396, 800 +%r398 = or i832 %r392, %r397 +%r399 = zext i832 %r398 to i864 +%r401 = getelementptr i32, i32* %r3, i32 26 %r402 = load i32, i32* %r401 -%r403 = zext i32 %r402 to i800 -%r404 = shl i800 %r403, 768 -%r405 = or i800 %r399, %r404 -%r406 = zext i800 %r405 to i832 -%r408 = getelementptr i32, i32* %r3, i32 25 +%r403 = zext i32 %r402 to i864 +%r404 = shl i864 %r403, 832 +%r405 = or i864 %r399, %r404 +%r406 = zext i864 %r405 to i896 +%r408 = getelementptr i32, i32* %r3, i32 27 %r409 = load i32, i32* %r408 -%r410 = zext i32 %r409 to i832 -%r411 = shl i832 %r410, 800 -%r412 = or i832 %r406, %r411 -%r413 = zext i832 %r412 to i864 -%r415 = getelementptr i32, i32* %r3, i32 26 +%r410 = zext i32 %r409 to i896 +%r411 = shl i896 %r410, 864 +%r412 = or i896 %r406, %r411 +%r413 = zext i896 %r412 to i928 +%r415 = getelementptr i32, i32* %r3, i32 28 %r416 = load i32, i32* %r415 -%r417 = zext i32 %r416 to i864 -%r418 = shl i864 %r417, 832 -%r419 = or i864 %r413, %r418 -%r420 = zext i864 %r419 to i896 -%r422 = getelementptr i32, i32* %r3, i32 27 +%r417 = zext i32 %r416 to i928 +%r418 = shl i928 %r417, 896 +%r419 = or i928 %r413, %r418 +%r420 = zext i928 %r419 to i960 +%r422 = getelementptr i32, i32* %r3, i32 29 %r423 = load i32, i32* %r422 -%r424 = zext i32 %r423 to i896 -%r425 = shl i896 %r424, 864 -%r426 = or i896 %r420, %r425 -%r427 = zext i896 %r426 to i928 -%r429 = getelementptr i32, i32* %r3, i32 28 +%r424 = zext i32 %r423 to i960 +%r425 = shl i960 %r424, 928 +%r426 = or i960 %r420, %r425 +%r427 = zext i960 %r426 to i992 +%r429 = getelementptr i32, i32* %r3, i32 30 %r430 = load i32, i32* %r429 -%r431 = zext i32 %r430 to i928 -%r432 = shl i928 %r431, 896 -%r433 = or i928 %r427, %r432 -%r434 = zext i928 %r433 to i960 -%r436 = getelementptr i32, i32* %r3, i32 29 +%r431 = zext i32 %r430 to i992 +%r432 = shl i992 %r431, 960 +%r433 = or i992 %r427, %r432 +%r434 = zext i992 %r433 to i1024 +%r436 = getelementptr i32, i32* %r3, i32 31 %r437 = load i32, i32* %r436 -%r438 = zext i32 %r437 to i960 -%r439 = shl i960 %r438, 928 -%r440 = or i960 %r434, %r439 -%r441 = zext i960 %r440 to i992 -%r443 = getelementptr i32, i32* %r3, i32 30 -%r444 = load i32, i32* %r443 -%r445 = zext i32 %r444 to i992 -%r446 = shl i992 %r445, 960 -%r447 = or i992 %r441, %r446 -%r448 = zext i992 %r447 to i1024 -%r450 = getelementptr i32, i32* %r3, i32 31 -%r451 = load i32, i32* %r450 -%r452 = zext i32 %r451 to i1024 -%r453 = shl i1024 %r452, 992 -%r454 = or i1024 %r448, %r453 -%r455 = zext i1024 %r454 to i1056 -%r457 = getelementptr i32, i32* %r3, i32 32 -%r458 = load i32, i32* %r457 -%r459 = zext i32 %r458 to i1056 -%r460 = shl i1056 %r459, 1024 -%r461 = or i1056 %r455, %r460 -%r462 = zext i1056 %r461 to i1088 -%r464 = getelementptr i32, i32* %r3, i32 33 -%r465 = load i32, i32* %r464 -%r466 = zext i32 %r465 to i1088 -%r467 = shl i1088 %r466, 1056 -%r468 = or i1088 %r462, %r467 -%r469 = zext i1088 %r236 to i1120 -%r470 = zext i1088 %r468 to i1120 -%r471 = sub i1120 %r469, %r470 -%r472 = trunc i1120 %r471 to i544 -%r473 = trunc i544 %r472 to i32 -%r475 = getelementptr i32, i32* %r1, i32 0 -store i32 %r473, i32* %r475 -%r476 = lshr i544 %r472, 32 -%r477 = trunc i544 %r476 to i32 -%r479 = getelementptr i32, i32* %r1, i32 1 -store i32 %r477, i32* %r479 -%r480 = lshr i544 %r476, 32 -%r481 = trunc i544 %r480 to i32 -%r483 = getelementptr i32, i32* %r1, i32 2 -store i32 %r481, i32* %r483 -%r484 = lshr i544 %r480, 32 -%r485 = trunc i544 %r484 to i32 -%r487 = getelementptr i32, i32* %r1, i32 3 -store i32 %r485, i32* %r487 -%r488 = lshr i544 %r484, 32 -%r489 = trunc i544 %r488 to i32 -%r491 = getelementptr i32, i32* %r1, i32 4 -store i32 %r489, i32* %r491 -%r492 = lshr i544 %r488, 32 -%r493 = trunc i544 %r492 to i32 -%r495 = getelementptr i32, i32* %r1, i32 5 -store i32 %r493, i32* %r495 -%r496 = lshr i544 %r492, 32 -%r497 = trunc i544 %r496 to i32 -%r499 = getelementptr i32, i32* %r1, i32 6 -store i32 %r497, i32* %r499 -%r500 = lshr i544 %r496, 32 -%r501 = trunc i544 %r500 to i32 -%r503 = getelementptr i32, i32* %r1, i32 7 -store i32 %r501, i32* %r503 -%r504 = lshr i544 %r500, 32 -%r505 = trunc i544 %r504 to i32 -%r507 = getelementptr i32, i32* %r1, i32 8 -store i32 %r505, i32* %r507 -%r508 = lshr i544 %r504, 32 -%r509 = trunc i544 %r508 to i32 -%r511 = getelementptr i32, i32* %r1, i32 9 -store i32 %r509, i32* %r511 -%r512 = lshr i544 %r508, 32 -%r513 = trunc i544 %r512 to i32 -%r515 = getelementptr i32, i32* %r1, i32 10 -store i32 %r513, i32* %r515 -%r516 = lshr i544 %r512, 32 -%r517 = trunc i544 %r516 to i32 -%r519 = getelementptr i32, i32* %r1, i32 11 -store i32 %r517, i32* %r519 -%r520 = lshr i544 %r516, 32 -%r521 = trunc i544 %r520 to i32 -%r523 = getelementptr i32, i32* %r1, i32 12 -store i32 %r521, i32* %r523 -%r524 = lshr i544 %r520, 32 -%r525 = trunc i544 %r524 to i32 -%r527 = getelementptr i32, i32* %r1, i32 13 -store i32 %r525, i32* %r527 -%r528 = lshr i544 %r524, 32 -%r529 = trunc i544 %r528 to i32 -%r531 = getelementptr i32, i32* %r1, i32 14 -store i32 %r529, i32* %r531 -%r532 = lshr i544 %r528, 32 -%r533 = trunc i544 %r532 to i32 -%r535 = getelementptr i32, i32* %r1, i32 15 -store i32 %r533, i32* %r535 -%r536 = lshr i544 %r532, 32 -%r537 = trunc i544 %r536 to i32 -%r539 = getelementptr i32, i32* %r1, i32 16 -store i32 %r537, i32* %r539 -%r540 = lshr i1120 %r471, 544 -%r541 = trunc i1120 %r540 to i544 -%r542 = lshr i1120 %r471, 1088 -%r543 = trunc i1120 %r542 to i1 -%r544 = load i32, i32* %r4 -%r545 = zext i32 %r544 to i64 -%r547 = getelementptr i32, i32* %r4, i32 1 -%r548 = load i32, i32* %r547 -%r549 = zext i32 %r548 to i64 -%r550 = shl i64 %r549, 32 -%r551 = or i64 %r545, %r550 -%r552 = zext i64 %r551 to i96 -%r554 = getelementptr i32, i32* %r4, i32 2 -%r555 = load i32, i32* %r554 -%r556 = zext i32 %r555 to i96 -%r557 = shl i96 %r556, 64 -%r558 = or i96 %r552, %r557 -%r559 = zext i96 %r558 to i128 -%r561 = getelementptr i32, i32* %r4, i32 3 -%r562 = load i32, i32* %r561 -%r563 = zext i32 %r562 to i128 -%r564 = shl i128 %r563, 96 -%r565 = or i128 %r559, %r564 -%r566 = zext i128 %r565 to i160 -%r568 = getelementptr i32, i32* %r4, i32 4 -%r569 = load i32, i32* %r568 -%r570 = zext i32 %r569 to i160 -%r571 = shl i160 %r570, 128 -%r572 = or i160 %r566, %r571 -%r573 = zext i160 %r572 to i192 -%r575 = getelementptr i32, i32* %r4, i32 5 -%r576 = load i32, i32* %r575 -%r577 = zext i32 %r576 to i192 -%r578 = shl i192 %r577, 160 -%r579 = or i192 %r573, %r578 -%r580 = zext i192 %r579 to i224 -%r582 = getelementptr i32, i32* %r4, i32 6 -%r583 = load i32, i32* %r582 -%r584 = zext i32 %r583 to i224 -%r585 = shl i224 %r584, 192 -%r586 = or i224 %r580, %r585 -%r587 = zext i224 %r586 to i256 -%r589 = getelementptr i32, i32* %r4, i32 7 -%r590 = load i32, i32* %r589 -%r591 = zext i32 %r590 to i256 -%r592 = shl i256 %r591, 224 -%r593 = or i256 %r587, %r592 -%r594 = zext i256 %r593 to i288 -%r596 = getelementptr i32, i32* %r4, i32 8 -%r597 = load i32, i32* %r596 -%r598 = zext i32 %r597 to i288 -%r599 = shl i288 %r598, 256 -%r600 = or i288 %r594, %r599 -%r601 = zext i288 %r600 to i320 -%r603 = getelementptr i32, i32* %r4, i32 9 -%r604 = load i32, i32* %r603 -%r605 = zext i32 %r604 to i320 -%r606 = shl i320 %r605, 288 -%r607 = or i320 %r601, %r606 -%r608 = zext i320 %r607 to i352 -%r610 = getelementptr i32, i32* %r4, i32 10 -%r611 = load i32, i32* %r610 -%r612 = zext i32 %r611 to i352 -%r613 = shl i352 %r612, 320 -%r614 = or i352 %r608, %r613 -%r615 = zext i352 %r614 to i384 -%r617 = getelementptr i32, i32* %r4, i32 11 -%r618 = load i32, i32* %r617 -%r619 = zext i32 %r618 to i384 -%r620 = shl i384 %r619, 352 -%r621 = or i384 %r615, %r620 -%r622 = zext i384 %r621 to i416 -%r624 = getelementptr i32, i32* %r4, i32 12 -%r625 = load i32, i32* %r624 -%r626 = zext i32 %r625 to i416 -%r627 = shl i416 %r626, 384 -%r628 = or i416 %r622, %r627 -%r629 = zext i416 %r628 to i448 -%r631 = getelementptr i32, i32* %r4, i32 13 -%r632 = load i32, i32* %r631 -%r633 = zext i32 %r632 to i448 -%r634 = shl i448 %r633, 416 -%r635 = or i448 %r629, %r634 -%r636 = zext i448 %r635 to i480 -%r638 = getelementptr i32, i32* %r4, i32 14 -%r639 = load i32, i32* %r638 -%r640 = zext i32 %r639 to i480 -%r641 = shl i480 %r640, 448 -%r642 = or i480 %r636, %r641 -%r643 = zext i480 %r642 to i512 -%r645 = getelementptr i32, i32* %r4, i32 15 -%r646 = load i32, i32* %r645 -%r647 = zext i32 %r646 to i512 -%r648 = shl i512 %r647, 480 -%r649 = or i512 %r643, %r648 -%r650 = zext i512 %r649 to i544 -%r652 = getelementptr i32, i32* %r4, i32 16 -%r653 = load i32, i32* %r652 -%r654 = zext i32 %r653 to i544 -%r655 = shl i544 %r654, 512 -%r656 = or i544 %r650, %r655 -%r658 = select i1 %r543, i544 %r656, i544 0 -%r659 = add i544 %r541, %r658 -%r661 = getelementptr i32, i32* %r1, i32 17 -%r662 = trunc i544 %r659 to i32 -%r664 = getelementptr i32, i32* %r661, i32 0 -store i32 %r662, i32* %r664 -%r665 = lshr i544 %r659, 32 -%r666 = trunc i544 %r665 to i32 -%r668 = getelementptr i32, i32* %r661, i32 1 -store i32 %r666, i32* %r668 -%r669 = lshr i544 %r665, 32 -%r670 = trunc i544 %r669 to i32 -%r672 = getelementptr i32, i32* %r661, i32 2 -store i32 %r670, i32* %r672 -%r673 = lshr i544 %r669, 32 -%r674 = trunc i544 %r673 to i32 -%r676 = getelementptr i32, i32* %r661, i32 3 -store i32 %r674, i32* %r676 -%r677 = lshr i544 %r673, 32 -%r678 = trunc i544 %r677 to i32 -%r680 = getelementptr i32, i32* %r661, i32 4 -store i32 %r678, i32* %r680 -%r681 = lshr i544 %r677, 32 -%r682 = trunc i544 %r681 to i32 -%r684 = getelementptr i32, i32* %r661, i32 5 -store i32 %r682, i32* %r684 -%r685 = lshr i544 %r681, 32 -%r686 = trunc i544 %r685 to i32 -%r688 = getelementptr i32, i32* %r661, i32 6 -store i32 %r686, i32* %r688 -%r689 = lshr i544 %r685, 32 -%r690 = trunc i544 %r689 to i32 -%r692 = getelementptr i32, i32* %r661, i32 7 -store i32 %r690, i32* %r692 -%r693 = lshr i544 %r689, 32 -%r694 = trunc i544 %r693 to i32 -%r696 = getelementptr i32, i32* %r661, i32 8 -store i32 %r694, i32* %r696 -%r697 = lshr i544 %r693, 32 -%r698 = trunc i544 %r697 to i32 -%r700 = getelementptr i32, i32* %r661, i32 9 -store i32 %r698, i32* %r700 -%r701 = lshr i544 %r697, 32 -%r702 = trunc i544 %r701 to i32 -%r704 = getelementptr i32, i32* %r661, i32 10 -store i32 %r702, i32* %r704 -%r705 = lshr i544 %r701, 32 -%r706 = trunc i544 %r705 to i32 -%r708 = getelementptr i32, i32* %r661, i32 11 -store i32 %r706, i32* %r708 -%r709 = lshr i544 %r705, 32 -%r710 = trunc i544 %r709 to i32 -%r712 = getelementptr i32, i32* %r661, i32 12 -store i32 %r710, i32* %r712 -%r713 = lshr i544 %r709, 32 -%r714 = trunc i544 %r713 to i32 -%r716 = getelementptr i32, i32* %r661, i32 13 -store i32 %r714, i32* %r716 -%r717 = lshr i544 %r713, 32 -%r718 = trunc i544 %r717 to i32 -%r720 = getelementptr i32, i32* %r661, i32 14 -store i32 %r718, i32* %r720 -%r721 = lshr i544 %r717, 32 -%r722 = trunc i544 %r721 to i32 -%r724 = getelementptr i32, i32* %r661, i32 15 -store i32 %r722, i32* %r724 -%r725 = lshr i544 %r721, 32 -%r726 = trunc i544 %r725 to i32 -%r728 = getelementptr i32, i32* %r661, i32 16 -store i32 %r726, i32* %r728 +%r438 = zext i32 %r437 to i1024 +%r439 = shl i1024 %r438, 992 +%r440 = or i1024 %r434, %r439 +%r441 = zext i1024 %r222 to i1056 +%r442 = zext i1024 %r440 to i1056 +%r443 = sub i1056 %r441, %r442 +%r444 = trunc i1056 %r443 to i512 +%r446 = getelementptr i32, i32* %r1, i32 0 +%r447 = trunc i512 %r444 to i32 +store i32 %r447, i32* %r446 +%r448 = lshr i512 %r444, 32 +%r450 = getelementptr i32, i32* %r1, i32 1 +%r451 = trunc i512 %r448 to i32 +store i32 %r451, i32* %r450 +%r452 = lshr i512 %r448, 32 +%r454 = getelementptr i32, i32* %r1, i32 2 +%r455 = trunc i512 %r452 to i32 +store i32 %r455, i32* %r454 +%r456 = lshr i512 %r452, 32 +%r458 = getelementptr i32, i32* %r1, i32 3 +%r459 = trunc i512 %r456 to i32 +store i32 %r459, i32* %r458 +%r460 = lshr i512 %r456, 32 +%r462 = getelementptr i32, i32* %r1, i32 4 +%r463 = trunc i512 %r460 to i32 +store i32 %r463, i32* %r462 +%r464 = lshr i512 %r460, 32 +%r466 = getelementptr i32, i32* %r1, i32 5 +%r467 = trunc i512 %r464 to i32 +store i32 %r467, i32* %r466 +%r468 = lshr i512 %r464, 32 +%r470 = getelementptr i32, i32* %r1, i32 6 +%r471 = trunc i512 %r468 to i32 +store i32 %r471, i32* %r470 +%r472 = lshr i512 %r468, 32 +%r474 = getelementptr i32, i32* %r1, i32 7 +%r475 = trunc i512 %r472 to i32 +store i32 %r475, i32* %r474 +%r476 = lshr i512 %r472, 32 +%r478 = getelementptr i32, i32* %r1, i32 8 +%r479 = trunc i512 %r476 to i32 +store i32 %r479, i32* %r478 +%r480 = lshr i512 %r476, 32 +%r482 = getelementptr i32, i32* %r1, i32 9 +%r483 = trunc i512 %r480 to i32 +store i32 %r483, i32* %r482 +%r484 = lshr i512 %r480, 32 +%r486 = getelementptr i32, i32* %r1, i32 10 +%r487 = trunc i512 %r484 to i32 +store i32 %r487, i32* %r486 +%r488 = lshr i512 %r484, 32 +%r490 = getelementptr i32, i32* %r1, i32 11 +%r491 = trunc i512 %r488 to i32 +store i32 %r491, i32* %r490 +%r492 = lshr i512 %r488, 32 +%r494 = getelementptr i32, i32* %r1, i32 12 +%r495 = trunc i512 %r492 to i32 +store i32 %r495, i32* %r494 +%r496 = lshr i512 %r492, 32 +%r498 = getelementptr i32, i32* %r1, i32 13 +%r499 = trunc i512 %r496 to i32 +store i32 %r499, i32* %r498 +%r500 = lshr i512 %r496, 32 +%r502 = getelementptr i32, i32* %r1, i32 14 +%r503 = trunc i512 %r500 to i32 +store i32 %r503, i32* %r502 +%r504 = lshr i512 %r500, 32 +%r506 = getelementptr i32, i32* %r1, i32 15 +%r507 = trunc i512 %r504 to i32 +store i32 %r507, i32* %r506 +%r508 = lshr i1056 %r443, 512 +%r509 = trunc i1056 %r508 to i512 +%r510 = lshr i1056 %r443, 1024 +%r511 = trunc i1056 %r510 to i1 +%r512 = load i32, i32* %r4 +%r513 = zext i32 %r512 to i64 +%r515 = getelementptr i32, i32* %r4, i32 1 +%r516 = load i32, i32* %r515 +%r517 = zext i32 %r516 to i64 +%r518 = shl i64 %r517, 32 +%r519 = or i64 %r513, %r518 +%r520 = zext i64 %r519 to i96 +%r522 = getelementptr i32, i32* %r4, i32 2 +%r523 = load i32, i32* %r522 +%r524 = zext i32 %r523 to i96 +%r525 = shl i96 %r524, 64 +%r526 = or i96 %r520, %r525 +%r527 = zext i96 %r526 to i128 +%r529 = getelementptr i32, i32* %r4, i32 3 +%r530 = load i32, i32* %r529 +%r531 = zext i32 %r530 to i128 +%r532 = shl i128 %r531, 96 +%r533 = or i128 %r527, %r532 +%r534 = zext i128 %r533 to i160 +%r536 = getelementptr i32, i32* %r4, i32 4 +%r537 = load i32, i32* %r536 +%r538 = zext i32 %r537 to i160 +%r539 = shl i160 %r538, 128 +%r540 = or i160 %r534, %r539 +%r541 = zext i160 %r540 to i192 +%r543 = getelementptr i32, i32* %r4, i32 5 +%r544 = load i32, i32* %r543 +%r545 = zext i32 %r544 to i192 +%r546 = shl i192 %r545, 160 +%r547 = or i192 %r541, %r546 +%r548 = zext i192 %r547 to i224 +%r550 = getelementptr i32, i32* %r4, i32 6 +%r551 = load i32, i32* %r550 +%r552 = zext i32 %r551 to i224 +%r553 = shl i224 %r552, 192 +%r554 = or i224 %r548, %r553 +%r555 = zext i224 %r554 to i256 +%r557 = getelementptr i32, i32* %r4, i32 7 +%r558 = load i32, i32* %r557 +%r559 = zext i32 %r558 to i256 +%r560 = shl i256 %r559, 224 +%r561 = or i256 %r555, %r560 +%r562 = zext i256 %r561 to i288 +%r564 = getelementptr i32, i32* %r4, i32 8 +%r565 = load i32, i32* %r564 +%r566 = zext i32 %r565 to i288 +%r567 = shl i288 %r566, 256 +%r568 = or i288 %r562, %r567 +%r569 = zext i288 %r568 to i320 +%r571 = getelementptr i32, i32* %r4, i32 9 +%r572 = load i32, i32* %r571 +%r573 = zext i32 %r572 to i320 +%r574 = shl i320 %r573, 288 +%r575 = or i320 %r569, %r574 +%r576 = zext i320 %r575 to i352 +%r578 = getelementptr i32, i32* %r4, i32 10 +%r579 = load i32, i32* %r578 +%r580 = zext i32 %r579 to i352 +%r581 = shl i352 %r580, 320 +%r582 = or i352 %r576, %r581 +%r583 = zext i352 %r582 to i384 +%r585 = getelementptr i32, i32* %r4, i32 11 +%r586 = load i32, i32* %r585 +%r587 = zext i32 %r586 to i384 +%r588 = shl i384 %r587, 352 +%r589 = or i384 %r583, %r588 +%r590 = zext i384 %r589 to i416 +%r592 = getelementptr i32, i32* %r4, i32 12 +%r593 = load i32, i32* %r592 +%r594 = zext i32 %r593 to i416 +%r595 = shl i416 %r594, 384 +%r596 = or i416 %r590, %r595 +%r597 = zext i416 %r596 to i448 +%r599 = getelementptr i32, i32* %r4, i32 13 +%r600 = load i32, i32* %r599 +%r601 = zext i32 %r600 to i448 +%r602 = shl i448 %r601, 416 +%r603 = or i448 %r597, %r602 +%r604 = zext i448 %r603 to i480 +%r606 = getelementptr i32, i32* %r4, i32 14 +%r607 = load i32, i32* %r606 +%r608 = zext i32 %r607 to i480 +%r609 = shl i480 %r608, 448 +%r610 = or i480 %r604, %r609 +%r611 = zext i480 %r610 to i512 +%r613 = getelementptr i32, i32* %r4, i32 15 +%r614 = load i32, i32* %r613 +%r615 = zext i32 %r614 to i512 +%r616 = shl i512 %r615, 480 +%r617 = or i512 %r611, %r616 +%r619 = select i1 %r511, i512 %r617, i512 0 +%r620 = add i512 %r509, %r619 +%r622 = getelementptr i32, i32* %r1, i32 16 +%r624 = getelementptr i32, i32* %r622, i32 0 +%r625 = trunc i512 %r620 to i32 +store i32 %r625, i32* %r624 +%r626 = lshr i512 %r620, 32 +%r628 = getelementptr i32, i32* %r622, i32 1 +%r629 = trunc i512 %r626 to i32 +store i32 %r629, i32* %r628 +%r630 = lshr i512 %r626, 32 +%r632 = getelementptr i32, i32* %r622, i32 2 +%r633 = trunc i512 %r630 to i32 +store i32 %r633, i32* %r632 +%r634 = lshr i512 %r630, 32 +%r636 = getelementptr i32, i32* %r622, i32 3 +%r637 = trunc i512 %r634 to i32 +store i32 %r637, i32* %r636 +%r638 = lshr i512 %r634, 32 +%r640 = getelementptr i32, i32* %r622, i32 4 +%r641 = trunc i512 %r638 to i32 +store i32 %r641, i32* %r640 +%r642 = lshr i512 %r638, 32 +%r644 = getelementptr i32, i32* %r622, i32 5 +%r645 = trunc i512 %r642 to i32 +store i32 %r645, i32* %r644 +%r646 = lshr i512 %r642, 32 +%r648 = getelementptr i32, i32* %r622, i32 6 +%r649 = trunc i512 %r646 to i32 +store i32 %r649, i32* %r648 +%r650 = lshr i512 %r646, 32 +%r652 = getelementptr i32, i32* %r622, i32 7 +%r653 = trunc i512 %r650 to i32 +store i32 %r653, i32* %r652 +%r654 = lshr i512 %r650, 32 +%r656 = getelementptr i32, i32* %r622, i32 8 +%r657 = trunc i512 %r654 to i32 +store i32 %r657, i32* %r656 +%r658 = lshr i512 %r654, 32 +%r660 = getelementptr i32, i32* %r622, i32 9 +%r661 = trunc i512 %r658 to i32 +store i32 %r661, i32* %r660 +%r662 = lshr i512 %r658, 32 +%r664 = getelementptr i32, i32* %r622, i32 10 +%r665 = trunc i512 %r662 to i32 +store i32 %r665, i32* %r664 +%r666 = lshr i512 %r662, 32 +%r668 = getelementptr i32, i32* %r622, i32 11 +%r669 = trunc i512 %r666 to i32 +store i32 %r669, i32* %r668 +%r670 = lshr i512 %r666, 32 +%r672 = getelementptr i32, i32* %r622, i32 12 +%r673 = trunc i512 %r670 to i32 +store i32 %r673, i32* %r672 +%r674 = lshr i512 %r670, 32 +%r676 = getelementptr i32, i32* %r622, i32 13 +%r677 = trunc i512 %r674 to i32 +store i32 %r677, i32* %r676 +%r678 = lshr i512 %r674, 32 +%r680 = getelementptr i32, i32* %r622, i32 14 +%r681 = trunc i512 %r678 to i32 +store i32 %r681, i32* %r680 +%r682 = lshr i512 %r678, 32 +%r684 = getelementptr i32, i32* %r622, i32 15 +%r685 = trunc i512 %r682 to i32 +store i32 %r685, i32* %r684 ret void } diff --git a/src/base64.ll b/src/base64.ll index e64ee12..437a377 100644 --- a/src/base64.ll +++ b/src/base64.ll @@ -88,17 +88,17 @@ define void @mcl_fpDbl_mod_NIST_P192L(i64* noalias %r1, i64* noalias %r2, i64* %r60 = trunc i256 %r59 to i1 %r61 = select i1 %r60, i256 %r55, i256 %r58 %r62 = trunc i256 %r61 to i192 -%r63 = trunc i192 %r62 to i64 -%r65 = getelementptr i64, i64* %r1, i32 0 -store i64 %r63, i64* %r65 +%r64 = getelementptr i64, i64* %r1, i32 0 +%r65 = trunc i192 %r62 to i64 +store i64 %r65, i64* %r64 %r66 = lshr i192 %r62, 64 -%r67 = trunc i192 %r66 to i64 -%r69 = getelementptr i64, i64* %r1, i32 1 -store i64 %r67, i64* %r69 +%r68 = getelementptr i64, i64* %r1, i32 1 +%r69 = trunc i192 %r66 to i64 +store i64 %r69, i64* %r68 %r70 = lshr i192 %r66, 64 -%r71 = trunc i192 %r70 to i64 -%r73 = getelementptr i64, i64* %r1, i32 2 -store i64 %r71, i64* %r73 +%r72 = getelementptr i64, i64* %r1, i32 2 +%r73 = trunc i192 %r70 to i64 +store i64 %r73, i64* %r72 ret void } define void @mcl_fp_sqr_NIST_P192L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) @@ -273,341 +273,44 @@ store i64 0, i64* %r179 store i64 0, i64* %r182 ret void nonzero: -%r183 = trunc i576 %r127 to i64 -%r185 = getelementptr i64, i64* %r1, i32 0 -store i64 %r183, i64* %r185 +%r184 = getelementptr i64, i64* %r1, i32 0 +%r185 = trunc i576 %r127 to i64 +store i64 %r185, i64* %r184 %r186 = lshr i576 %r127, 64 -%r187 = trunc i576 %r186 to i64 -%r189 = getelementptr i64, i64* %r1, i32 1 -store i64 %r187, i64* %r189 +%r188 = getelementptr i64, i64* %r1, i32 1 +%r189 = trunc i576 %r186 to i64 +store i64 %r189, i64* %r188 %r190 = lshr i576 %r186, 64 -%r191 = trunc i576 %r190 to i64 -%r193 = getelementptr i64, i64* %r1, i32 2 -store i64 %r191, i64* %r193 +%r192 = getelementptr i64, i64* %r1, i32 2 +%r193 = trunc i576 %r190 to i64 +store i64 %r193, i64* %r192 %r194 = lshr i576 %r190, 64 -%r195 = trunc i576 %r194 to i64 -%r197 = getelementptr i64, i64* %r1, i32 3 -store i64 %r195, i64* %r197 +%r196 = getelementptr i64, i64* %r1, i32 3 +%r197 = trunc i576 %r194 to i64 +store i64 %r197, i64* %r196 %r198 = lshr i576 %r194, 64 -%r199 = trunc i576 %r198 to i64 -%r201 = getelementptr i64, i64* %r1, i32 4 -store i64 %r199, i64* %r201 +%r200 = getelementptr i64, i64* %r1, i32 4 +%r201 = trunc i576 %r198 to i64 +store i64 %r201, i64* %r200 %r202 = lshr i576 %r198, 64 -%r203 = trunc i576 %r202 to i64 -%r205 = getelementptr i64, i64* %r1, i32 5 -store i64 %r203, i64* %r205 +%r204 = getelementptr i64, i64* %r1, i32 5 +%r205 = trunc i576 %r202 to i64 +store i64 %r205, i64* %r204 %r206 = lshr i576 %r202, 64 -%r207 = trunc i576 %r206 to i64 -%r209 = getelementptr i64, i64* %r1, i32 6 -store i64 %r207, i64* %r209 +%r208 = getelementptr i64, i64* %r1, i32 6 +%r209 = trunc i576 %r206 to i64 +store i64 %r209, i64* %r208 %r210 = lshr i576 %r206, 64 -%r211 = trunc i576 %r210 to i64 -%r213 = getelementptr i64, i64* %r1, i32 7 -store i64 %r211, i64* %r213 +%r212 = getelementptr i64, i64* %r1, i32 7 +%r213 = trunc i576 %r210 to i64 +store i64 %r213, i64* %r212 %r214 = lshr i576 %r210, 64 -%r215 = trunc i576 %r214 to i64 -%r217 = getelementptr i64, i64* %r1, i32 8 -store i64 %r215, i64* %r217 -ret void -} -define i128 @mulPv64x64(i64* noalias %r2, i64 %r3) -{ -%r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) -%r6 = trunc i128 %r5 to i64 -%r7 = call i64 @extractHigh64(i128 %r5) -%r8 = zext i64 %r6 to i128 -%r9 = zext i64 %r7 to i128 -%r10 = shl i128 %r9, 64 -%r11 = add i128 %r8, %r10 -ret i128 %r11 -} -define void @mcl_fp_mulUnitPre1L(i64* noalias %r1, i64* noalias %r2, i64 %r3) -{ -%r4 = call i128 @mulPv64x64(i64* %r2, i64 %r3) -%r5 = trunc i128 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i128 %r4, 64 -%r9 = trunc i128 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -ret void -} -define void @mcl_fpDbl_mulPre1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r4 = load i64, i64* %r2 -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r4 to i128 -%r7 = zext i64 %r5 to i128 -%r8 = mul i128 %r6, %r7 -%r9 = trunc i128 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 0 -store i64 %r9, i64* %r11 -%r12 = lshr i128 %r8, 64 -%r13 = trunc i128 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 1 -store i64 %r13, i64* %r15 -ret void -} -define void @mcl_fpDbl_sqrPre1L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = load i64, i64* %r2 -%r5 = zext i64 %r3 to i128 -%r6 = zext i64 %r4 to i128 -%r7 = mul i128 %r5, %r6 -%r8 = trunc i128 %r7 to i64 -%r10 = getelementptr i64, i64* %r1, i32 0 -store i64 %r8, i64* %r10 -%r11 = lshr i128 %r7, 64 -%r12 = trunc i128 %r11 to i64 -%r14 = getelementptr i64, i64* %r1, i32 1 -store i64 %r12, i64* %r14 -ret void -} -define void @mcl_fp_mont1L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r9 = getelementptr i64, i64* %r3, i32 0 -%r10 = load i64, i64* %r9 -%r11 = call i128 @mulPv64x64(i64* %r2, i64 %r10) -%r12 = zext i128 %r11 to i192 -%r13 = trunc i128 %r11 to i64 -%r14 = mul i64 %r13, %r7 -%r15 = call i128 @mulPv64x64(i64* %r4, i64 %r14) -%r16 = zext i128 %r15 to i192 -%r17 = add i192 %r12, %r16 -%r18 = lshr i192 %r17, 64 -%r19 = trunc i192 %r18 to i128 -%r20 = load i64, i64* %r4 -%r21 = zext i64 %r20 to i128 -%r22 = sub i128 %r19, %r21 -%r23 = lshr i128 %r22, 64 -%r24 = trunc i128 %r23 to i1 -%r25 = select i1 %r24, i128 %r19, i128 %r22 -%r26 = trunc i128 %r25 to i64 -store i64 %r26, i64* %r1 -ret void -} -define void @mcl_fp_montNF1L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r8 = load i64, i64* %r3 -%r9 = call i128 @mulPv64x64(i64* %r2, i64 %r8) -%r10 = trunc i128 %r9 to i64 -%r11 = mul i64 %r10, %r7 -%r12 = call i128 @mulPv64x64(i64* %r4, i64 %r11) -%r13 = add i128 %r9, %r12 -%r14 = lshr i128 %r13, 64 -%r15 = trunc i128 %r14 to i64 -%r16 = load i64, i64* %r4 -%r17 = sub i64 %r15, %r16 -%r18 = lshr i64 %r17, 63 -%r19 = trunc i64 %r18 to i1 -%r20 = select i1 %r19, i64 %r15, i64 %r17 -store i64 %r20, i64* %r1 -ret void -} -define void @mcl_fp_montRed1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r3, i32 -1 -%r6 = load i64, i64* %r5 -%r7 = load i64, i64* %r3 -%r8 = load i64, i64* %r2 -%r9 = zext i64 %r8 to i128 -%r11 = getelementptr i64, i64* %r2, i32 1 -%r12 = load i64, i64* %r11 -%r13 = zext i64 %r12 to i128 -%r14 = shl i128 %r13, 64 -%r15 = or i128 %r9, %r14 -%r16 = zext i128 %r15 to i192 -%r17 = trunc i192 %r16 to i64 -%r18 = mul i64 %r17, %r6 -%r19 = call i128 @mulPv64x64(i64* %r3, i64 %r18) -%r20 = zext i128 %r19 to i192 -%r21 = add i192 %r16, %r20 -%r22 = lshr i192 %r21, 64 -%r23 = trunc i192 %r22 to i128 -%r24 = zext i64 %r7 to i128 -%r25 = sub i128 %r23, %r24 -%r26 = lshr i128 %r25, 64 -%r27 = trunc i128 %r26 to i1 -%r28 = select i1 %r27, i128 %r23, i128 %r25 -%r29 = trunc i128 %r28 to i64 -store i64 %r29, i64* %r1 -ret void -} -define i64 @mcl_fp_addPre1L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r7 = load i64, i64* %r4 -%r8 = zext i64 %r7 to i128 -%r9 = add i128 %r6, %r8 -%r10 = trunc i128 %r9 to i64 -store i64 %r10, i64* %r2 -%r11 = lshr i128 %r9, 64 -%r12 = trunc i128 %r11 to i64 -ret i64 %r12 -} -define i64 @mcl_fp_subPre1L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r7 = load i64, i64* %r4 -%r8 = zext i64 %r7 to i128 -%r9 = sub i128 %r6, %r8 -%r10 = trunc i128 %r9 to i64 -store i64 %r10, i64* %r2 -%r11 = lshr i128 %r9, 64 -%r12 = trunc i128 %r11 to i64 -%r14 = and i64 %r12, 1 -ret i64 %r14 -} -define void @mcl_fp_shr1_1L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = lshr i64 %r3, 1 -store i64 %r4, i64* %r1 -ret void -} -define void @mcl_fp_add1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = load i64, i64* %r3 -%r7 = zext i64 %r5 to i128 -%r8 = zext i64 %r6 to i128 -%r9 = add i128 %r7, %r8 -%r10 = trunc i128 %r9 to i64 -store i64 %r10, i64* %r1 -%r11 = load i64, i64* %r4 -%r12 = zext i64 %r11 to i128 -%r13 = sub i128 %r9, %r12 -%r14 = lshr i128 %r13, 64 -%r15 = trunc i128 %r14 to i1 -br i1%r15, label %carry, label %nocarry -nocarry: -%r16 = trunc i128 %r13 to i64 -store i64 %r16, i64* %r1 -ret void -carry: -ret void -} -define void @mcl_fp_addNF1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = load i64, i64* %r3 -%r7 = add i64 %r5, %r6 -%r8 = load i64, i64* %r4 -%r9 = sub i64 %r7, %r8 -%r10 = lshr i64 %r9, 63 -%r11 = trunc i64 %r10 to i1 -%r12 = select i1 %r11, i64 %r7, i64 %r9 -store i64 %r12, i64* %r1 -ret void -} -define void @mcl_fp_sub1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = load i64, i64* %r3 -%r7 = zext i64 %r5 to i128 -%r8 = zext i64 %r6 to i128 -%r9 = sub i128 %r7, %r8 -%r10 = trunc i128 %r9 to i64 -%r11 = lshr i128 %r9, 64 -%r12 = trunc i128 %r11 to i1 -store i64 %r10, i64* %r1 -br i1%r12, label %carry, label %nocarry -nocarry: -ret void -carry: -%r13 = load i64, i64* %r4 -%r14 = add i64 %r10, %r13 -store i64 %r14, i64* %r1 -ret void -} -define void @mcl_fp_subNF1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = load i64, i64* %r3 -%r7 = sub i64 %r5, %r6 -%r8 = lshr i64 %r7, 63 -%r9 = trunc i64 %r8 to i1 -%r10 = load i64, i64* %r4 -%r12 = select i1 %r9, i64 %r10, i64 0 -%r13 = add i64 %r7, %r12 -store i64 %r13, i64* %r1 -ret void -} -define void @mcl_fpDbl_add1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = zext i128 %r12 to i192 -%r22 = zext i128 %r20 to i192 -%r23 = add i192 %r21, %r22 -%r24 = trunc i192 %r23 to i64 -store i64 %r24, i64* %r1 -%r25 = lshr i192 %r23, 64 -%r26 = trunc i192 %r25 to i128 -%r27 = load i64, i64* %r4 -%r28 = zext i64 %r27 to i128 -%r29 = sub i128 %r26, %r28 -%r30 = lshr i128 %r29, 64 -%r31 = trunc i128 %r30 to i1 -%r32 = select i1 %r31, i128 %r26, i128 %r29 -%r33 = trunc i128 %r32 to i64 -%r35 = getelementptr i64, i64* %r1, i32 1 -store i64 %r33, i64* %r35 -ret void -} -define void @mcl_fpDbl_sub1L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = zext i128 %r12 to i192 -%r22 = zext i128 %r20 to i192 -%r23 = sub i192 %r21, %r22 -%r24 = trunc i192 %r23 to i64 -store i64 %r24, i64* %r1 -%r25 = lshr i192 %r23, 64 -%r26 = trunc i192 %r25 to i64 -%r27 = lshr i192 %r23, 128 -%r28 = trunc i192 %r27 to i1 -%r29 = load i64, i64* %r4 -%r31 = select i1 %r28, i64 %r29, i64 0 -%r32 = add i64 %r26, %r31 -%r34 = getelementptr i64, i64* %r1, i32 1 -store i64 %r32, i64* %r34 +%r216 = getelementptr i64, i64* %r1, i32 8 +%r217 = trunc i576 %r214 to i64 +store i64 %r217, i64* %r216 ret void } -define i192 @mulPv128x64(i64* noalias %r2, i64 %r3) +define i256 @mulPv192x64(i64* noalias %r2, i64 %r3) { %r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) %r6 = trunc i128 %r5 to i64 @@ -615,176 +318,362 @@ define i192 @mulPv128x64(i64* noalias %r2, i64 %r3) %r9 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 1) %r10 = trunc i128 %r9 to i64 %r11 = call i64 @extractHigh64(i128 %r9) -%r12 = zext i64 %r6 to i128 -%r13 = zext i64 %r10 to i128 -%r14 = shl i128 %r13, 64 -%r15 = or i128 %r12, %r14 -%r16 = zext i64 %r7 to i128 -%r17 = zext i64 %r11 to i128 +%r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) +%r14 = trunc i128 %r13 to i64 +%r15 = call i64 @extractHigh64(i128 %r13) +%r16 = zext i64 %r6 to i128 +%r17 = zext i64 %r10 to i128 %r18 = shl i128 %r17, 64 %r19 = or i128 %r16, %r18 -%r20 = zext i128 %r15 to i192 -%r21 = zext i128 %r19 to i192 -%r22 = shl i192 %r21, 64 -%r23 = add i192 %r20, %r22 -ret i192 %r23 +%r20 = zext i128 %r19 to i192 +%r21 = zext i64 %r14 to i192 +%r22 = shl i192 %r21, 128 +%r23 = or i192 %r20, %r22 +%r24 = zext i64 %r7 to i128 +%r25 = zext i64 %r11 to i128 +%r26 = shl i128 %r25, 64 +%r27 = or i128 %r24, %r26 +%r28 = zext i128 %r27 to i192 +%r29 = zext i64 %r15 to i192 +%r30 = shl i192 %r29, 128 +%r31 = or i192 %r28, %r30 +%r32 = zext i192 %r23 to i256 +%r33 = zext i192 %r31 to i256 +%r34 = shl i256 %r33, 64 +%r35 = add i256 %r32, %r34 +ret i256 %r35 } -define void @mcl_fp_mulUnitPre2L(i64* noalias %r1, i64* noalias %r2, i64 %r3) +define void @mcl_fp_mulUnitPre3L(i64* noalias %r1, i64* noalias %r2, i64 %r3) { -%r4 = call i192 @mulPv128x64(i64* %r2, i64 %r3) -%r5 = trunc i192 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i192 %r4, 64 -%r9 = trunc i192 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i192 %r8, 64 -%r13 = trunc i192 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 +%r4 = call i256 @mulPv192x64(i64* %r2, i64 %r3) +%r6 = getelementptr i64, i64* %r1, i32 0 +%r7 = trunc i256 %r4 to i64 +store i64 %r7, i64* %r6 +%r8 = lshr i256 %r4, 64 +%r10 = getelementptr i64, i64* %r1, i32 1 +%r11 = trunc i256 %r8 to i64 +store i64 %r11, i64* %r10 +%r12 = lshr i256 %r8, 64 +%r14 = getelementptr i64, i64* %r1, i32 2 +%r15 = trunc i256 %r12 to i64 +store i64 %r15, i64* %r14 +%r16 = lshr i256 %r12, 64 +%r18 = getelementptr i64, i64* %r1, i32 3 +%r19 = trunc i256 %r16 to i64 +store i64 %r19, i64* %r18 ret void } -define void @mcl_fpDbl_mulPre2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fpDbl_mulPre3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r4 = load i64, i64* %r3 -%r5 = call i192 @mulPv128x64(i64* %r2, i64 %r4) -%r6 = trunc i192 %r5 to i64 +%r5 = call i256 @mulPv192x64(i64* %r2, i64 %r4) +%r6 = trunc i256 %r5 to i64 store i64 %r6, i64* %r1 -%r7 = lshr i192 %r5, 64 +%r7 = lshr i256 %r5, 64 %r9 = getelementptr i64, i64* %r3, i32 1 %r10 = load i64, i64* %r9 -%r11 = call i192 @mulPv128x64(i64* %r2, i64 %r10) -%r12 = add i192 %r7, %r11 -%r14 = getelementptr i64, i64* %r1, i32 1 -%r15 = trunc i192 %r12 to i64 -%r17 = getelementptr i64, i64* %r14, i32 0 -store i64 %r15, i64* %r17 -%r18 = lshr i192 %r12, 64 -%r19 = trunc i192 %r18 to i64 -%r21 = getelementptr i64, i64* %r14, i32 1 -store i64 %r19, i64* %r21 -%r22 = lshr i192 %r18, 64 -%r23 = trunc i192 %r22 to i64 -%r25 = getelementptr i64, i64* %r14, i32 2 -store i64 %r23, i64* %r25 +%r11 = call i256 @mulPv192x64(i64* %r2, i64 %r10) +%r12 = add i256 %r7, %r11 +%r13 = trunc i256 %r12 to i64 +%r15 = getelementptr i64, i64* %r1, i32 1 +store i64 %r13, i64* %r15 +%r16 = lshr i256 %r12, 64 +%r18 = getelementptr i64, i64* %r3, i32 2 +%r19 = load i64, i64* %r18 +%r20 = call i256 @mulPv192x64(i64* %r2, i64 %r19) +%r21 = add i256 %r16, %r20 +%r23 = getelementptr i64, i64* %r1, i32 2 +%r25 = getelementptr i64, i64* %r23, i32 0 +%r26 = trunc i256 %r21 to i64 +store i64 %r26, i64* %r25 +%r27 = lshr i256 %r21, 64 +%r29 = getelementptr i64, i64* %r23, i32 1 +%r30 = trunc i256 %r27 to i64 +store i64 %r30, i64* %r29 +%r31 = lshr i256 %r27, 64 +%r33 = getelementptr i64, i64* %r23, i32 2 +%r34 = trunc i256 %r31 to i64 +store i64 %r34, i64* %r33 +%r35 = lshr i256 %r31, 64 +%r37 = getelementptr i64, i64* %r23, i32 3 +%r38 = trunc i256 %r35 to i64 +store i64 %r38, i64* %r37 ret void } -define void @mcl_fpDbl_sqrPre2L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fpDbl_sqrPre3L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 -%r4 = call i192 @mulPv128x64(i64* %r2, i64 %r3) -%r5 = trunc i192 %r4 to i64 +%r4 = call i256 @mulPv192x64(i64* %r2, i64 %r3) +%r5 = trunc i256 %r4 to i64 store i64 %r5, i64* %r1 -%r6 = lshr i192 %r4, 64 +%r6 = lshr i256 %r4, 64 %r8 = getelementptr i64, i64* %r2, i32 1 %r9 = load i64, i64* %r8 -%r10 = call i192 @mulPv128x64(i64* %r2, i64 %r9) -%r11 = add i192 %r6, %r10 -%r13 = getelementptr i64, i64* %r1, i32 1 -%r14 = trunc i192 %r11 to i64 -%r16 = getelementptr i64, i64* %r13, i32 0 -store i64 %r14, i64* %r16 -%r17 = lshr i192 %r11, 64 -%r18 = trunc i192 %r17 to i64 -%r20 = getelementptr i64, i64* %r13, i32 1 -store i64 %r18, i64* %r20 -%r21 = lshr i192 %r17, 64 -%r22 = trunc i192 %r21 to i64 -%r24 = getelementptr i64, i64* %r13, i32 2 -store i64 %r22, i64* %r24 +%r10 = call i256 @mulPv192x64(i64* %r2, i64 %r9) +%r11 = add i256 %r6, %r10 +%r12 = trunc i256 %r11 to i64 +%r14 = getelementptr i64, i64* %r1, i32 1 +store i64 %r12, i64* %r14 +%r15 = lshr i256 %r11, 64 +%r17 = getelementptr i64, i64* %r2, i32 2 +%r18 = load i64, i64* %r17 +%r19 = call i256 @mulPv192x64(i64* %r2, i64 %r18) +%r20 = add i256 %r15, %r19 +%r22 = getelementptr i64, i64* %r1, i32 2 +%r24 = getelementptr i64, i64* %r22, i32 0 +%r25 = trunc i256 %r20 to i64 +store i64 %r25, i64* %r24 +%r26 = lshr i256 %r20, 64 +%r28 = getelementptr i64, i64* %r22, i32 1 +%r29 = trunc i256 %r26 to i64 +store i64 %r29, i64* %r28 +%r30 = lshr i256 %r26, 64 +%r32 = getelementptr i64, i64* %r22, i32 2 +%r33 = trunc i256 %r30 to i64 +store i64 %r33, i64* %r32 +%r34 = lshr i256 %r30, 64 +%r36 = getelementptr i64, i64* %r22, i32 3 +%r37 = trunc i256 %r34 to i64 +store i64 %r37, i64* %r36 ret void } -define void @mcl_fp_mont2L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_mont3L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r9 = getelementptr i64, i64* %r3, i32 0 %r10 = load i64, i64* %r9 -%r11 = call i192 @mulPv128x64(i64* %r2, i64 %r10) -%r12 = zext i192 %r11 to i256 -%r13 = trunc i192 %r11 to i64 +%r11 = call i256 @mulPv192x64(i64* %r2, i64 %r10) +%r12 = zext i256 %r11 to i320 +%r13 = trunc i256 %r11 to i64 %r14 = mul i64 %r13, %r7 -%r15 = call i192 @mulPv128x64(i64* %r4, i64 %r14) -%r16 = zext i192 %r15 to i256 -%r17 = add i256 %r12, %r16 -%r18 = lshr i256 %r17, 64 +%r15 = call i256 @mulPv192x64(i64* %r4, i64 %r14) +%r16 = zext i256 %r15 to i320 +%r17 = add i320 %r12, %r16 +%r18 = lshr i320 %r17, 64 %r20 = getelementptr i64, i64* %r3, i32 1 %r21 = load i64, i64* %r20 -%r22 = call i192 @mulPv128x64(i64* %r2, i64 %r21) -%r23 = zext i192 %r22 to i256 -%r24 = add i256 %r18, %r23 -%r25 = trunc i256 %r24 to i64 +%r22 = call i256 @mulPv192x64(i64* %r2, i64 %r21) +%r23 = zext i256 %r22 to i320 +%r24 = add i320 %r18, %r23 +%r25 = trunc i320 %r24 to i64 %r26 = mul i64 %r25, %r7 -%r27 = call i192 @mulPv128x64(i64* %r4, i64 %r26) -%r28 = zext i192 %r27 to i256 -%r29 = add i256 %r24, %r28 -%r30 = lshr i256 %r29, 64 -%r31 = trunc i256 %r30 to i192 -%r32 = load i64, i64* %r4 -%r33 = zext i64 %r32 to i128 -%r35 = getelementptr i64, i64* %r4, i32 1 -%r36 = load i64, i64* %r35 -%r37 = zext i64 %r36 to i128 -%r38 = shl i128 %r37, 64 -%r39 = or i128 %r33, %r38 -%r40 = zext i128 %r39 to i192 -%r41 = sub i192 %r31, %r40 -%r42 = lshr i192 %r41, 128 -%r43 = trunc i192 %r42 to i1 -%r44 = select i1 %r43, i192 %r31, i192 %r41 -%r45 = trunc i192 %r44 to i128 -%r46 = trunc i128 %r45 to i64 -%r48 = getelementptr i64, i64* %r1, i32 0 -store i64 %r46, i64* %r48 -%r49 = lshr i128 %r45, 64 -%r50 = trunc i128 %r49 to i64 -%r52 = getelementptr i64, i64* %r1, i32 1 -store i64 %r50, i64* %r52 +%r27 = call i256 @mulPv192x64(i64* %r4, i64 %r26) +%r28 = zext i256 %r27 to i320 +%r29 = add i320 %r24, %r28 +%r30 = lshr i320 %r29, 64 +%r32 = getelementptr i64, i64* %r3, i32 2 +%r33 = load i64, i64* %r32 +%r34 = call i256 @mulPv192x64(i64* %r2, i64 %r33) +%r35 = zext i256 %r34 to i320 +%r36 = add i320 %r30, %r35 +%r37 = trunc i320 %r36 to i64 +%r38 = mul i64 %r37, %r7 +%r39 = call i256 @mulPv192x64(i64* %r4, i64 %r38) +%r40 = zext i256 %r39 to i320 +%r41 = add i320 %r36, %r40 +%r42 = lshr i320 %r41, 64 +%r43 = trunc i320 %r42 to i256 +%r44 = load i64, i64* %r4 +%r45 = zext i64 %r44 to i128 +%r47 = getelementptr i64, i64* %r4, i32 1 +%r48 = load i64, i64* %r47 +%r49 = zext i64 %r48 to i128 +%r50 = shl i128 %r49, 64 +%r51 = or i128 %r45, %r50 +%r52 = zext i128 %r51 to i192 +%r54 = getelementptr i64, i64* %r4, i32 2 +%r55 = load i64, i64* %r54 +%r56 = zext i64 %r55 to i192 +%r57 = shl i192 %r56, 128 +%r58 = or i192 %r52, %r57 +%r59 = zext i192 %r58 to i256 +%r60 = sub i256 %r43, %r59 +%r61 = lshr i256 %r60, 192 +%r62 = trunc i256 %r61 to i1 +%r63 = select i1 %r62, i256 %r43, i256 %r60 +%r64 = trunc i256 %r63 to i192 +%r66 = getelementptr i64, i64* %r1, i32 0 +%r67 = trunc i192 %r64 to i64 +store i64 %r67, i64* %r66 +%r68 = lshr i192 %r64, 64 +%r70 = getelementptr i64, i64* %r1, i32 1 +%r71 = trunc i192 %r68 to i64 +store i64 %r71, i64* %r70 +%r72 = lshr i192 %r68, 64 +%r74 = getelementptr i64, i64* %r1, i32 2 +%r75 = trunc i192 %r72 to i64 +store i64 %r75, i64* %r74 ret void } -define void @mcl_fp_montNF2L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_montNF3L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r8 = load i64, i64* %r3 -%r9 = call i192 @mulPv128x64(i64* %r2, i64 %r8) -%r10 = trunc i192 %r9 to i64 +%r9 = call i256 @mulPv192x64(i64* %r2, i64 %r8) +%r10 = trunc i256 %r9 to i64 %r11 = mul i64 %r10, %r7 -%r12 = call i192 @mulPv128x64(i64* %r4, i64 %r11) -%r13 = add i192 %r9, %r12 -%r14 = lshr i192 %r13, 64 -%r16 = getelementptr i64, i64* %r3, i32 1 +%r12 = call i256 @mulPv192x64(i64* %r4, i64 %r11) +%r13 = add i256 %r9, %r12 +%r14 = lshr i256 %r13, 64 +%r16 = getelementptr i64, i64* %r3, i32 1 %r17 = load i64, i64* %r16 -%r18 = call i192 @mulPv128x64(i64* %r2, i64 %r17) -%r19 = add i192 %r14, %r18 -%r20 = trunc i192 %r19 to i64 +%r18 = call i256 @mulPv192x64(i64* %r2, i64 %r17) +%r19 = add i256 %r14, %r18 +%r20 = trunc i256 %r19 to i64 %r21 = mul i64 %r20, %r7 -%r22 = call i192 @mulPv128x64(i64* %r4, i64 %r21) -%r23 = add i192 %r19, %r22 -%r24 = lshr i192 %r23, 64 -%r25 = trunc i192 %r24 to i128 -%r26 = load i64, i64* %r4 +%r22 = call i256 @mulPv192x64(i64* %r4, i64 %r21) +%r23 = add i256 %r19, %r22 +%r24 = lshr i256 %r23, 64 +%r26 = getelementptr i64, i64* %r3, i32 2 +%r27 = load i64, i64* %r26 +%r28 = call i256 @mulPv192x64(i64* %r2, i64 %r27) +%r29 = add i256 %r24, %r28 +%r30 = trunc i256 %r29 to i64 +%r31 = mul i64 %r30, %r7 +%r32 = call i256 @mulPv192x64(i64* %r4, i64 %r31) +%r33 = add i256 %r29, %r32 +%r34 = lshr i256 %r33, 64 +%r35 = trunc i256 %r34 to i192 +%r36 = load i64, i64* %r4 +%r37 = zext i64 %r36 to i128 +%r39 = getelementptr i64, i64* %r4, i32 1 +%r40 = load i64, i64* %r39 +%r41 = zext i64 %r40 to i128 +%r42 = shl i128 %r41, 64 +%r43 = or i128 %r37, %r42 +%r44 = zext i128 %r43 to i192 +%r46 = getelementptr i64, i64* %r4, i32 2 +%r47 = load i64, i64* %r46 +%r48 = zext i64 %r47 to i192 +%r49 = shl i192 %r48, 128 +%r50 = or i192 %r44, %r49 +%r51 = sub i192 %r35, %r50 +%r52 = lshr i192 %r51, 191 +%r53 = trunc i192 %r52 to i1 +%r54 = select i1 %r53, i192 %r35, i192 %r51 +%r56 = getelementptr i64, i64* %r1, i32 0 +%r57 = trunc i192 %r54 to i64 +store i64 %r57, i64* %r56 +%r58 = lshr i192 %r54, 64 +%r60 = getelementptr i64, i64* %r1, i32 1 +%r61 = trunc i192 %r58 to i64 +store i64 %r61, i64* %r60 +%r62 = lshr i192 %r58, 64 +%r64 = getelementptr i64, i64* %r1, i32 2 +%r65 = trunc i192 %r62 to i64 +store i64 %r65, i64* %r64 +ret void +} +define void @mcl_fp_montRed3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +{ +%r5 = getelementptr i64, i64* %r3, i32 -1 +%r6 = load i64, i64* %r5 +%r7 = load i64, i64* %r3 +%r8 = zext i64 %r7 to i128 +%r10 = getelementptr i64, i64* %r3, i32 1 +%r11 = load i64, i64* %r10 +%r12 = zext i64 %r11 to i128 +%r13 = shl i128 %r12, 64 +%r14 = or i128 %r8, %r13 +%r15 = zext i128 %r14 to i192 +%r17 = getelementptr i64, i64* %r3, i32 2 +%r18 = load i64, i64* %r17 +%r19 = zext i64 %r18 to i192 +%r20 = shl i192 %r19, 128 +%r21 = or i192 %r15, %r20 +%r22 = load i64, i64* %r2 +%r23 = zext i64 %r22 to i128 +%r25 = getelementptr i64, i64* %r2, i32 1 +%r26 = load i64, i64* %r25 %r27 = zext i64 %r26 to i128 -%r29 = getelementptr i64, i64* %r4, i32 1 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i128 -%r32 = shl i128 %r31, 64 -%r33 = or i128 %r27, %r32 -%r34 = sub i128 %r25, %r33 -%r35 = lshr i128 %r34, 127 -%r36 = trunc i128 %r35 to i1 -%r37 = select i1 %r36, i128 %r25, i128 %r34 -%r38 = trunc i128 %r37 to i64 -%r40 = getelementptr i64, i64* %r1, i32 0 -store i64 %r38, i64* %r40 -%r41 = lshr i128 %r37, 64 -%r42 = trunc i128 %r41 to i64 -%r44 = getelementptr i64, i64* %r1, i32 1 -store i64 %r42, i64* %r44 +%r28 = shl i128 %r27, 64 +%r29 = or i128 %r23, %r28 +%r30 = zext i128 %r29 to i192 +%r32 = getelementptr i64, i64* %r2, i32 2 +%r33 = load i64, i64* %r32 +%r34 = zext i64 %r33 to i192 +%r35 = shl i192 %r34, 128 +%r36 = or i192 %r30, %r35 +%r37 = trunc i192 %r36 to i64 +%r38 = mul i64 %r37, %r6 +%r39 = call i256 @mulPv192x64(i64* %r3, i64 %r38) +%r41 = getelementptr i64, i64* %r2, i32 3 +%r42 = load i64, i64* %r41 +%r43 = zext i64 %r42 to i256 +%r44 = shl i256 %r43, 192 +%r45 = zext i192 %r36 to i256 +%r46 = or i256 %r44, %r45 +%r47 = zext i256 %r46 to i320 +%r48 = zext i256 %r39 to i320 +%r49 = add i320 %r47, %r48 +%r50 = lshr i320 %r49, 64 +%r51 = trunc i320 %r50 to i256 +%r52 = lshr i256 %r51, 192 +%r53 = trunc i256 %r52 to i64 +%r54 = trunc i256 %r51 to i192 +%r55 = trunc i192 %r54 to i64 +%r56 = mul i64 %r55, %r6 +%r57 = call i256 @mulPv192x64(i64* %r3, i64 %r56) +%r58 = zext i64 %r53 to i256 +%r59 = shl i256 %r58, 192 +%r60 = add i256 %r57, %r59 +%r62 = getelementptr i64, i64* %r2, i32 4 +%r63 = load i64, i64* %r62 +%r64 = zext i64 %r63 to i256 +%r65 = shl i256 %r64, 192 +%r66 = zext i192 %r54 to i256 +%r67 = or i256 %r65, %r66 +%r68 = zext i256 %r67 to i320 +%r69 = zext i256 %r60 to i320 +%r70 = add i320 %r68, %r69 +%r71 = lshr i320 %r70, 64 +%r72 = trunc i320 %r71 to i256 +%r73 = lshr i256 %r72, 192 +%r74 = trunc i256 %r73 to i64 +%r75 = trunc i256 %r72 to i192 +%r76 = trunc i192 %r75 to i64 +%r77 = mul i64 %r76, %r6 +%r78 = call i256 @mulPv192x64(i64* %r3, i64 %r77) +%r79 = zext i64 %r74 to i256 +%r80 = shl i256 %r79, 192 +%r81 = add i256 %r78, %r80 +%r83 = getelementptr i64, i64* %r2, i32 5 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i256 +%r86 = shl i256 %r85, 192 +%r87 = zext i192 %r75 to i256 +%r88 = or i256 %r86, %r87 +%r89 = zext i256 %r88 to i320 +%r90 = zext i256 %r81 to i320 +%r91 = add i320 %r89, %r90 +%r92 = lshr i320 %r91, 64 +%r93 = trunc i320 %r92 to i256 +%r94 = lshr i256 %r93, 192 +%r95 = trunc i256 %r94 to i64 +%r96 = trunc i256 %r93 to i192 +%r97 = zext i192 %r21 to i256 +%r98 = zext i192 %r96 to i256 +%r99 = sub i256 %r98, %r97 +%r100 = lshr i256 %r99, 192 +%r101 = trunc i256 %r100 to i1 +%r102 = select i1 %r101, i256 %r98, i256 %r99 +%r103 = trunc i256 %r102 to i192 +%r105 = getelementptr i64, i64* %r1, i32 0 +%r106 = trunc i192 %r103 to i64 +store i64 %r106, i64* %r105 +%r107 = lshr i192 %r103, 64 +%r109 = getelementptr i64, i64* %r1, i32 1 +%r110 = trunc i192 %r107 to i64 +store i64 %r110, i64* %r109 +%r111 = lshr i192 %r107, 64 +%r113 = getelementptr i64, i64* %r1, i32 2 +%r114 = trunc i192 %r111 to i64 +store i64 %r114, i64* %r113 ret void } -define void @mcl_fp_montRed2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fp_montRedNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r5 = getelementptr i64, i64* %r3, i32 -1 %r6 = load i64, i64* %r5 @@ -795,56 +684,100 @@ define void @mcl_fp_montRed2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r12 = zext i64 %r11 to i128 %r13 = shl i128 %r12, 64 %r14 = or i128 %r8, %r13 -%r15 = load i64, i64* %r2 -%r16 = zext i64 %r15 to i128 -%r18 = getelementptr i64, i64* %r2, i32 1 -%r19 = load i64, i64* %r18 -%r20 = zext i64 %r19 to i128 -%r21 = shl i128 %r20, 64 -%r22 = or i128 %r16, %r21 -%r23 = zext i128 %r22 to i192 -%r25 = getelementptr i64, i64* %r2, i32 2 +%r15 = zext i128 %r14 to i192 +%r17 = getelementptr i64, i64* %r3, i32 2 +%r18 = load i64, i64* %r17 +%r19 = zext i64 %r18 to i192 +%r20 = shl i192 %r19, 128 +%r21 = or i192 %r15, %r20 +%r22 = load i64, i64* %r2 +%r23 = zext i64 %r22 to i128 +%r25 = getelementptr i64, i64* %r2, i32 1 %r26 = load i64, i64* %r25 -%r27 = zext i64 %r26 to i192 -%r28 = shl i192 %r27, 128 -%r29 = or i192 %r23, %r28 -%r30 = zext i192 %r29 to i256 -%r32 = getelementptr i64, i64* %r2, i32 3 +%r27 = zext i64 %r26 to i128 +%r28 = shl i128 %r27, 64 +%r29 = or i128 %r23, %r28 +%r30 = zext i128 %r29 to i192 +%r32 = getelementptr i64, i64* %r2, i32 2 %r33 = load i64, i64* %r32 -%r34 = zext i64 %r33 to i256 -%r35 = shl i256 %r34, 192 -%r36 = or i256 %r30, %r35 -%r37 = zext i256 %r36 to i320 -%r38 = trunc i320 %r37 to i64 -%r39 = mul i64 %r38, %r6 -%r40 = call i192 @mulPv128x64(i64* %r3, i64 %r39) -%r41 = zext i192 %r40 to i320 -%r42 = add i320 %r37, %r41 -%r43 = lshr i320 %r42, 64 -%r44 = trunc i320 %r43 to i256 -%r45 = trunc i256 %r44 to i64 -%r46 = mul i64 %r45, %r6 -%r47 = call i192 @mulPv128x64(i64* %r3, i64 %r46) -%r48 = zext i192 %r47 to i256 -%r49 = add i256 %r44, %r48 -%r50 = lshr i256 %r49, 64 -%r51 = trunc i256 %r50 to i192 -%r52 = zext i128 %r14 to i192 -%r53 = sub i192 %r51, %r52 -%r54 = lshr i192 %r53, 128 -%r55 = trunc i192 %r54 to i1 -%r56 = select i1 %r55, i192 %r51, i192 %r53 -%r57 = trunc i192 %r56 to i128 -%r58 = trunc i128 %r57 to i64 -%r60 = getelementptr i64, i64* %r1, i32 0 -store i64 %r58, i64* %r60 -%r61 = lshr i128 %r57, 64 -%r62 = trunc i128 %r61 to i64 -%r64 = getelementptr i64, i64* %r1, i32 1 -store i64 %r62, i64* %r64 +%r34 = zext i64 %r33 to i192 +%r35 = shl i192 %r34, 128 +%r36 = or i192 %r30, %r35 +%r37 = trunc i192 %r36 to i64 +%r38 = mul i64 %r37, %r6 +%r39 = call i256 @mulPv192x64(i64* %r3, i64 %r38) +%r41 = getelementptr i64, i64* %r2, i32 3 +%r42 = load i64, i64* %r41 +%r43 = zext i64 %r42 to i256 +%r44 = shl i256 %r43, 192 +%r45 = zext i192 %r36 to i256 +%r46 = or i256 %r44, %r45 +%r47 = zext i256 %r46 to i320 +%r48 = zext i256 %r39 to i320 +%r49 = add i320 %r47, %r48 +%r50 = lshr i320 %r49, 64 +%r51 = trunc i320 %r50 to i256 +%r52 = lshr i256 %r51, 192 +%r53 = trunc i256 %r52 to i64 +%r54 = trunc i256 %r51 to i192 +%r55 = trunc i192 %r54 to i64 +%r56 = mul i64 %r55, %r6 +%r57 = call i256 @mulPv192x64(i64* %r3, i64 %r56) +%r58 = zext i64 %r53 to i256 +%r59 = shl i256 %r58, 192 +%r60 = add i256 %r57, %r59 +%r62 = getelementptr i64, i64* %r2, i32 4 +%r63 = load i64, i64* %r62 +%r64 = zext i64 %r63 to i256 +%r65 = shl i256 %r64, 192 +%r66 = zext i192 %r54 to i256 +%r67 = or i256 %r65, %r66 +%r68 = zext i256 %r67 to i320 +%r69 = zext i256 %r60 to i320 +%r70 = add i320 %r68, %r69 +%r71 = lshr i320 %r70, 64 +%r72 = trunc i320 %r71 to i256 +%r73 = lshr i256 %r72, 192 +%r74 = trunc i256 %r73 to i64 +%r75 = trunc i256 %r72 to i192 +%r76 = trunc i192 %r75 to i64 +%r77 = mul i64 %r76, %r6 +%r78 = call i256 @mulPv192x64(i64* %r3, i64 %r77) +%r79 = zext i64 %r74 to i256 +%r80 = shl i256 %r79, 192 +%r81 = add i256 %r78, %r80 +%r83 = getelementptr i64, i64* %r2, i32 5 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i256 +%r86 = shl i256 %r85, 192 +%r87 = zext i192 %r75 to i256 +%r88 = or i256 %r86, %r87 +%r89 = zext i256 %r88 to i320 +%r90 = zext i256 %r81 to i320 +%r91 = add i320 %r89, %r90 +%r92 = lshr i320 %r91, 64 +%r93 = trunc i320 %r92 to i256 +%r94 = lshr i256 %r93, 192 +%r95 = trunc i256 %r94 to i64 +%r96 = trunc i256 %r93 to i192 +%r97 = sub i192 %r96, %r21 +%r98 = lshr i192 %r97, 191 +%r99 = trunc i192 %r98 to i1 +%r100 = select i1 %r99, i192 %r96, i192 %r97 +%r102 = getelementptr i64, i64* %r1, i32 0 +%r103 = trunc i192 %r100 to i64 +store i64 %r103, i64* %r102 +%r104 = lshr i192 %r100, 64 +%r106 = getelementptr i64, i64* %r1, i32 1 +%r107 = trunc i192 %r104 to i64 +store i64 %r107, i64* %r106 +%r108 = lshr i192 %r104, 64 +%r110 = getelementptr i64, i64* %r1, i32 2 +%r111 = trunc i192 %r108 to i64 +store i64 %r111, i64* %r110 ret void } -define i64 @mcl_fp_addPre2L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_addPre3L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -854,28 +787,44 @@ define i64 @mcl_fp_addPre2L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 %r13 = zext i128 %r12 to i192 -%r14 = load i64, i64* %r4 -%r15 = zext i64 %r14 to i128 -%r17 = getelementptr i64, i64* %r4, i32 1 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i128 -%r20 = shl i128 %r19, 64 -%r21 = or i128 %r15, %r20 -%r22 = zext i128 %r21 to i192 -%r23 = add i192 %r13, %r22 -%r24 = trunc i192 %r23 to i128 -%r25 = trunc i128 %r24 to i64 -%r27 = getelementptr i64, i64* %r2, i32 0 -store i64 %r25, i64* %r27 -%r28 = lshr i128 %r24, 64 -%r29 = trunc i128 %r28 to i64 -%r31 = getelementptr i64, i64* %r2, i32 1 -store i64 %r29, i64* %r31 -%r32 = lshr i192 %r23, 128 -%r33 = trunc i192 %r32 to i64 -ret i64 %r33 +%r15 = getelementptr i64, i64* %r3, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = zext i192 %r19 to i256 +%r21 = load i64, i64* %r4 +%r22 = zext i64 %r21 to i128 +%r24 = getelementptr i64, i64* %r4, i32 1 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i128 +%r27 = shl i128 %r26, 64 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i192 +%r31 = getelementptr i64, i64* %r4, i32 2 +%r32 = load i64, i64* %r31 +%r33 = zext i64 %r32 to i192 +%r34 = shl i192 %r33, 128 +%r35 = or i192 %r29, %r34 +%r36 = zext i192 %r35 to i256 +%r37 = add i256 %r20, %r36 +%r38 = trunc i256 %r37 to i192 +%r40 = getelementptr i64, i64* %r2, i32 0 +%r41 = trunc i192 %r38 to i64 +store i64 %r41, i64* %r40 +%r42 = lshr i192 %r38, 64 +%r44 = getelementptr i64, i64* %r2, i32 1 +%r45 = trunc i192 %r42 to i64 +store i64 %r45, i64* %r44 +%r46 = lshr i192 %r42, 64 +%r48 = getelementptr i64, i64* %r2, i32 2 +%r49 = trunc i192 %r46 to i64 +store i64 %r49, i64* %r48 +%r50 = lshr i256 %r37, 192 +%r51 = trunc i256 %r50 to i64 +ret i64 %r51 } -define i64 @mcl_fp_subPre2L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_subPre3L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -885,29 +834,45 @@ define i64 @mcl_fp_subPre2L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 %r13 = zext i128 %r12 to i192 -%r14 = load i64, i64* %r4 -%r15 = zext i64 %r14 to i128 -%r17 = getelementptr i64, i64* %r4, i32 1 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i128 -%r20 = shl i128 %r19, 64 -%r21 = or i128 %r15, %r20 -%r22 = zext i128 %r21 to i192 -%r23 = sub i192 %r13, %r22 -%r24 = trunc i192 %r23 to i128 -%r25 = trunc i128 %r24 to i64 -%r27 = getelementptr i64, i64* %r2, i32 0 -store i64 %r25, i64* %r27 -%r28 = lshr i128 %r24, 64 -%r29 = trunc i128 %r28 to i64 -%r31 = getelementptr i64, i64* %r2, i32 1 -store i64 %r29, i64* %r31 -%r32 = lshr i192 %r23, 128 -%r33 = trunc i192 %r32 to i64 -%r35 = and i64 %r33, 1 -ret i64 %r35 +%r15 = getelementptr i64, i64* %r3, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = zext i192 %r19 to i256 +%r21 = load i64, i64* %r4 +%r22 = zext i64 %r21 to i128 +%r24 = getelementptr i64, i64* %r4, i32 1 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i128 +%r27 = shl i128 %r26, 64 +%r28 = or i128 %r22, %r27 +%r29 = zext i128 %r28 to i192 +%r31 = getelementptr i64, i64* %r4, i32 2 +%r32 = load i64, i64* %r31 +%r33 = zext i64 %r32 to i192 +%r34 = shl i192 %r33, 128 +%r35 = or i192 %r29, %r34 +%r36 = zext i192 %r35 to i256 +%r37 = sub i256 %r20, %r36 +%r38 = trunc i256 %r37 to i192 +%r40 = getelementptr i64, i64* %r2, i32 0 +%r41 = trunc i192 %r38 to i64 +store i64 %r41, i64* %r40 +%r42 = lshr i192 %r38, 64 +%r44 = getelementptr i64, i64* %r2, i32 1 +%r45 = trunc i192 %r42 to i64 +store i64 %r45, i64* %r44 +%r46 = lshr i192 %r42, 64 +%r48 = getelementptr i64, i64* %r2, i32 2 +%r49 = trunc i192 %r46 to i64 +store i64 %r49, i64* %r48 +%r51 = lshr i256 %r37, 192 +%r52 = trunc i256 %r51 to i64 +%r53 = and i64 %r52, 1 +ret i64 %r53 } -define void @mcl_fp_shr1_2L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fp_shr1_3L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 %r4 = zext i64 %r3 to i128 @@ -916,17 +881,27 @@ define void @mcl_fp_shr1_2L(i64* noalias %r1, i64* noalias %r2) %r8 = zext i64 %r7 to i128 %r9 = shl i128 %r8, 64 %r10 = or i128 %r4, %r9 -%r11 = lshr i128 %r10, 1 -%r12 = trunc i128 %r11 to i64 -%r14 = getelementptr i64, i64* %r1, i32 0 -store i64 %r12, i64* %r14 -%r15 = lshr i128 %r11, 64 -%r16 = trunc i128 %r15 to i64 -%r18 = getelementptr i64, i64* %r1, i32 1 -store i64 %r16, i64* %r18 +%r11 = zext i128 %r10 to i192 +%r13 = getelementptr i64, i64* %r2, i32 2 +%r14 = load i64, i64* %r13 +%r15 = zext i64 %r14 to i192 +%r16 = shl i192 %r15, 128 +%r17 = or i192 %r11, %r16 +%r18 = lshr i192 %r17, 1 +%r20 = getelementptr i64, i64* %r1, i32 0 +%r21 = trunc i192 %r18 to i64 +store i64 %r21, i64* %r20 +%r22 = lshr i192 %r18, 64 +%r24 = getelementptr i64, i64* %r1, i32 1 +%r25 = trunc i192 %r22 to i64 +store i64 %r25, i64* %r24 +%r26 = lshr i192 %r22, 64 +%r28 = getelementptr i64, i64* %r1, i32 2 +%r29 = trunc i192 %r26 to i64 +store i64 %r29, i64* %r28 ret void } -define void @mcl_fp_add2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -935,50 +910,76 @@ define void @mcl_fp_add2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r10 = zext i64 %r9 to i128 %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = zext i128 %r12 to i192 -%r22 = zext i128 %r20 to i192 -%r23 = add i192 %r21, %r22 -%r24 = trunc i192 %r23 to i128 -%r25 = trunc i128 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 0 -store i64 %r25, i64* %r27 -%r28 = lshr i128 %r24, 64 -%r29 = trunc i128 %r28 to i64 -%r31 = getelementptr i64, i64* %r1, i32 1 -store i64 %r29, i64* %r31 -%r32 = load i64, i64* %r4 -%r33 = zext i64 %r32 to i128 -%r35 = getelementptr i64, i64* %r4, i32 1 -%r36 = load i64, i64* %r35 -%r37 = zext i64 %r36 to i128 -%r38 = shl i128 %r37, 64 -%r39 = or i128 %r33, %r38 -%r40 = zext i128 %r39 to i192 -%r41 = sub i192 %r23, %r40 -%r42 = lshr i192 %r41, 128 -%r43 = trunc i192 %r42 to i1 -br i1%r43, label %carry, label %nocarry +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r2, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = load i64, i64* %r3 +%r21 = zext i64 %r20 to i128 +%r23 = getelementptr i64, i64* %r3, i32 1 +%r24 = load i64, i64* %r23 +%r25 = zext i64 %r24 to i128 +%r26 = shl i128 %r25, 64 +%r27 = or i128 %r21, %r26 +%r28 = zext i128 %r27 to i192 +%r30 = getelementptr i64, i64* %r3, i32 2 +%r31 = load i64, i64* %r30 +%r32 = zext i64 %r31 to i192 +%r33 = shl i192 %r32, 128 +%r34 = or i192 %r28, %r33 +%r35 = zext i192 %r19 to i256 +%r36 = zext i192 %r34 to i256 +%r37 = add i256 %r35, %r36 +%r38 = trunc i256 %r37 to i192 +%r40 = getelementptr i64, i64* %r1, i32 0 +%r41 = trunc i192 %r38 to i64 +store i64 %r41, i64* %r40 +%r42 = lshr i192 %r38, 64 +%r44 = getelementptr i64, i64* %r1, i32 1 +%r45 = trunc i192 %r42 to i64 +store i64 %r45, i64* %r44 +%r46 = lshr i192 %r42, 64 +%r48 = getelementptr i64, i64* %r1, i32 2 +%r49 = trunc i192 %r46 to i64 +store i64 %r49, i64* %r48 +%r50 = load i64, i64* %r4 +%r51 = zext i64 %r50 to i128 +%r53 = getelementptr i64, i64* %r4, i32 1 +%r54 = load i64, i64* %r53 +%r55 = zext i64 %r54 to i128 +%r56 = shl i128 %r55, 64 +%r57 = or i128 %r51, %r56 +%r58 = zext i128 %r57 to i192 +%r60 = getelementptr i64, i64* %r4, i32 2 +%r61 = load i64, i64* %r60 +%r62 = zext i64 %r61 to i192 +%r63 = shl i192 %r62, 128 +%r64 = or i192 %r58, %r63 +%r65 = zext i192 %r64 to i256 +%r66 = sub i256 %r37, %r65 +%r67 = lshr i256 %r66, 192 +%r68 = trunc i256 %r67 to i1 +br i1%r68, label %carry, label %nocarry nocarry: -%r44 = trunc i192 %r41 to i128 -%r45 = trunc i128 %r44 to i64 -%r47 = getelementptr i64, i64* %r1, i32 0 -store i64 %r45, i64* %r47 -%r48 = lshr i128 %r44, 64 -%r49 = trunc i128 %r48 to i64 -%r51 = getelementptr i64, i64* %r1, i32 1 -store i64 %r49, i64* %r51 +%r69 = trunc i256 %r66 to i192 +%r71 = getelementptr i64, i64* %r1, i32 0 +%r72 = trunc i192 %r69 to i64 +store i64 %r72, i64* %r71 +%r73 = lshr i192 %r69, 64 +%r75 = getelementptr i64, i64* %r1, i32 1 +%r76 = trunc i192 %r73 to i64 +store i64 %r76, i64* %r75 +%r77 = lshr i192 %r73, 64 +%r79 = getelementptr i64, i64* %r1, i32 2 +%r80 = trunc i192 %r77 to i64 +store i64 %r80, i64* %r79 ret void carry: ret void } -define void @mcl_fp_addNF2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_addNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -987,35 +988,57 @@ define void @mcl_fp_addNF2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r10 = zext i64 %r9 to i128 %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = add i128 %r12, %r20 -%r22 = load i64, i64* %r4 -%r23 = zext i64 %r22 to i128 -%r25 = getelementptr i64, i64* %r4, i32 1 -%r26 = load i64, i64* %r25 -%r27 = zext i64 %r26 to i128 -%r28 = shl i128 %r27, 64 -%r29 = or i128 %r23, %r28 -%r30 = sub i128 %r21, %r29 -%r31 = lshr i128 %r30, 127 -%r32 = trunc i128 %r31 to i1 -%r33 = select i1 %r32, i128 %r21, i128 %r30 -%r34 = trunc i128 %r33 to i64 -%r36 = getelementptr i64, i64* %r1, i32 0 -store i64 %r34, i64* %r36 -%r37 = lshr i128 %r33, 64 -%r38 = trunc i128 %r37 to i64 -%r40 = getelementptr i64, i64* %r1, i32 1 -store i64 %r38, i64* %r40 +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r2, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = load i64, i64* %r3 +%r21 = zext i64 %r20 to i128 +%r23 = getelementptr i64, i64* %r3, i32 1 +%r24 = load i64, i64* %r23 +%r25 = zext i64 %r24 to i128 +%r26 = shl i128 %r25, 64 +%r27 = or i128 %r21, %r26 +%r28 = zext i128 %r27 to i192 +%r30 = getelementptr i64, i64* %r3, i32 2 +%r31 = load i64, i64* %r30 +%r32 = zext i64 %r31 to i192 +%r33 = shl i192 %r32, 128 +%r34 = or i192 %r28, %r33 +%r35 = add i192 %r19, %r34 +%r36 = load i64, i64* %r4 +%r37 = zext i64 %r36 to i128 +%r39 = getelementptr i64, i64* %r4, i32 1 +%r40 = load i64, i64* %r39 +%r41 = zext i64 %r40 to i128 +%r42 = shl i128 %r41, 64 +%r43 = or i128 %r37, %r42 +%r44 = zext i128 %r43 to i192 +%r46 = getelementptr i64, i64* %r4, i32 2 +%r47 = load i64, i64* %r46 +%r48 = zext i64 %r47 to i192 +%r49 = shl i192 %r48, 128 +%r50 = or i192 %r44, %r49 +%r51 = sub i192 %r35, %r50 +%r52 = lshr i192 %r51, 191 +%r53 = trunc i192 %r52 to i1 +%r54 = select i1 %r53, i192 %r35, i192 %r51 +%r56 = getelementptr i64, i64* %r1, i32 0 +%r57 = trunc i192 %r54 to i64 +store i64 %r57, i64* %r56 +%r58 = lshr i192 %r54, 64 +%r60 = getelementptr i64, i64* %r1, i32 1 +%r61 = trunc i192 %r58 to i64 +store i64 %r61, i64* %r60 +%r62 = lshr i192 %r58, 64 +%r64 = getelementptr i64, i64* %r1, i32 2 +%r65 = trunc i192 %r62 to i64 +store i64 %r65, i64* %r64 ret void } -define void @mcl_fp_sub2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1024,48 +1047,74 @@ define void @mcl_fp_sub2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r10 = zext i64 %r9 to i128 %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = zext i128 %r12 to i192 -%r22 = zext i128 %r20 to i192 -%r23 = sub i192 %r21, %r22 -%r24 = trunc i192 %r23 to i128 -%r25 = lshr i192 %r23, 128 -%r26 = trunc i192 %r25 to i1 -%r27 = trunc i128 %r24 to i64 -%r29 = getelementptr i64, i64* %r1, i32 0 -store i64 %r27, i64* %r29 -%r30 = lshr i128 %r24, 64 -%r31 = trunc i128 %r30 to i64 -%r33 = getelementptr i64, i64* %r1, i32 1 -store i64 %r31, i64* %r33 -br i1%r26, label %carry, label %nocarry +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r2, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = load i64, i64* %r3 +%r21 = zext i64 %r20 to i128 +%r23 = getelementptr i64, i64* %r3, i32 1 +%r24 = load i64, i64* %r23 +%r25 = zext i64 %r24 to i128 +%r26 = shl i128 %r25, 64 +%r27 = or i128 %r21, %r26 +%r28 = zext i128 %r27 to i192 +%r30 = getelementptr i64, i64* %r3, i32 2 +%r31 = load i64, i64* %r30 +%r32 = zext i64 %r31 to i192 +%r33 = shl i192 %r32, 128 +%r34 = or i192 %r28, %r33 +%r35 = zext i192 %r19 to i256 +%r36 = zext i192 %r34 to i256 +%r37 = sub i256 %r35, %r36 +%r38 = trunc i256 %r37 to i192 +%r39 = lshr i256 %r37, 192 +%r40 = trunc i256 %r39 to i1 +%r42 = getelementptr i64, i64* %r1, i32 0 +%r43 = trunc i192 %r38 to i64 +store i64 %r43, i64* %r42 +%r44 = lshr i192 %r38, 64 +%r46 = getelementptr i64, i64* %r1, i32 1 +%r47 = trunc i192 %r44 to i64 +store i64 %r47, i64* %r46 +%r48 = lshr i192 %r44, 64 +%r50 = getelementptr i64, i64* %r1, i32 2 +%r51 = trunc i192 %r48 to i64 +store i64 %r51, i64* %r50 +br i1%r40, label %carry, label %nocarry nocarry: ret void carry: -%r34 = load i64, i64* %r4 -%r35 = zext i64 %r34 to i128 -%r37 = getelementptr i64, i64* %r4, i32 1 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i128 -%r40 = shl i128 %r39, 64 -%r41 = or i128 %r35, %r40 -%r42 = add i128 %r24, %r41 -%r43 = trunc i128 %r42 to i64 -%r45 = getelementptr i64, i64* %r1, i32 0 -store i64 %r43, i64* %r45 -%r46 = lshr i128 %r42, 64 -%r47 = trunc i128 %r46 to i64 -%r49 = getelementptr i64, i64* %r1, i32 1 -store i64 %r47, i64* %r49 +%r52 = load i64, i64* %r4 +%r53 = zext i64 %r52 to i128 +%r55 = getelementptr i64, i64* %r4, i32 1 +%r56 = load i64, i64* %r55 +%r57 = zext i64 %r56 to i128 +%r58 = shl i128 %r57, 64 +%r59 = or i128 %r53, %r58 +%r60 = zext i128 %r59 to i192 +%r62 = getelementptr i64, i64* %r4, i32 2 +%r63 = load i64, i64* %r62 +%r64 = zext i64 %r63 to i192 +%r65 = shl i192 %r64, 128 +%r66 = or i192 %r60, %r65 +%r67 = add i192 %r38, %r66 +%r69 = getelementptr i64, i64* %r1, i32 0 +%r70 = trunc i192 %r67 to i64 +store i64 %r70, i64* %r69 +%r71 = lshr i192 %r67, 64 +%r73 = getelementptr i64, i64* %r1, i32 1 +%r74 = trunc i192 %r71 to i64 +store i64 %r74, i64* %r73 +%r75 = lshr i192 %r71, 64 +%r77 = getelementptr i64, i64* %r1, i32 2 +%r78 = trunc i192 %r75 to i64 +store i64 %r78, i64* %r77 ret void } -define void @mcl_fp_subNF2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_subNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1074,35 +1123,57 @@ define void @mcl_fp_subNF2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r10 = zext i64 %r9 to i128 %r11 = shl i128 %r10, 64 %r12 = or i128 %r6, %r11 -%r13 = load i64, i64* %r3 -%r14 = zext i64 %r13 to i128 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = zext i64 %r17 to i128 -%r19 = shl i128 %r18, 64 -%r20 = or i128 %r14, %r19 -%r21 = sub i128 %r12, %r20 -%r22 = lshr i128 %r21, 127 -%r23 = trunc i128 %r22 to i1 -%r24 = load i64, i64* %r4 +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r2, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = load i64, i64* %r3 +%r21 = zext i64 %r20 to i128 +%r23 = getelementptr i64, i64* %r3, i32 1 +%r24 = load i64, i64* %r23 %r25 = zext i64 %r24 to i128 -%r27 = getelementptr i64, i64* %r4, i32 1 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i128 -%r30 = shl i128 %r29, 64 -%r31 = or i128 %r25, %r30 -%r33 = select i1 %r23, i128 %r31, i128 0 -%r34 = add i128 %r21, %r33 -%r35 = trunc i128 %r34 to i64 -%r37 = getelementptr i64, i64* %r1, i32 0 -store i64 %r35, i64* %r37 -%r38 = lshr i128 %r34, 64 -%r39 = trunc i128 %r38 to i64 -%r41 = getelementptr i64, i64* %r1, i32 1 -store i64 %r39, i64* %r41 +%r26 = shl i128 %r25, 64 +%r27 = or i128 %r21, %r26 +%r28 = zext i128 %r27 to i192 +%r30 = getelementptr i64, i64* %r3, i32 2 +%r31 = load i64, i64* %r30 +%r32 = zext i64 %r31 to i192 +%r33 = shl i192 %r32, 128 +%r34 = or i192 %r28, %r33 +%r35 = sub i192 %r19, %r34 +%r36 = lshr i192 %r35, 191 +%r37 = trunc i192 %r36 to i1 +%r38 = load i64, i64* %r4 +%r39 = zext i64 %r38 to i128 +%r41 = getelementptr i64, i64* %r4, i32 1 +%r42 = load i64, i64* %r41 +%r43 = zext i64 %r42 to i128 +%r44 = shl i128 %r43, 64 +%r45 = or i128 %r39, %r44 +%r46 = zext i128 %r45 to i192 +%r48 = getelementptr i64, i64* %r4, i32 2 +%r49 = load i64, i64* %r48 +%r50 = zext i64 %r49 to i192 +%r51 = shl i192 %r50, 128 +%r52 = or i192 %r46, %r51 +%r54 = select i1 %r37, i192 %r52, i192 0 +%r55 = add i192 %r35, %r54 +%r57 = getelementptr i64, i64* %r1, i32 0 +%r58 = trunc i192 %r55 to i64 +store i64 %r58, i64* %r57 +%r59 = lshr i192 %r55, 64 +%r61 = getelementptr i64, i64* %r1, i32 1 +%r62 = trunc i192 %r59 to i64 +store i64 %r62, i64* %r61 +%r63 = lshr i192 %r59, 64 +%r65 = getelementptr i64, i64* %r1, i32 2 +%r66 = trunc i192 %r63 to i64 +store i64 %r66, i64* %r65 ret void } -define void @mcl_fpDbl_add2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1123,62 +1194,100 @@ define void @mcl_fpDbl_add2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r24 = zext i64 %r23 to i256 %r25 = shl i256 %r24, 192 %r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r2, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r2, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 %r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = zext i256 %r26 to i320 -%r50 = zext i256 %r48 to i320 -%r51 = add i320 %r49, %r50 -%r52 = trunc i320 %r51 to i128 -%r53 = trunc i128 %r52 to i64 -%r55 = getelementptr i64, i64* %r1, i32 0 -store i64 %r53, i64* %r55 -%r56 = lshr i128 %r52, 64 -%r57 = trunc i128 %r56 to i64 -%r59 = getelementptr i64, i64* %r1, i32 1 -store i64 %r57, i64* %r59 -%r60 = lshr i320 %r51, 128 -%r61 = trunc i320 %r60 to i192 -%r62 = load i64, i64* %r4 -%r63 = zext i64 %r62 to i128 -%r65 = getelementptr i64, i64* %r4, i32 1 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i128 -%r68 = shl i128 %r67, 64 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i192 -%r71 = sub i192 %r61, %r70 -%r72 = lshr i192 %r71, 128 -%r73 = trunc i192 %r72 to i1 -%r74 = select i1 %r73, i192 %r61, i192 %r71 -%r75 = trunc i192 %r74 to i128 -%r77 = getelementptr i64, i64* %r1, i32 2 -%r78 = trunc i128 %r75 to i64 -%r80 = getelementptr i64, i64* %r77, i32 0 -store i64 %r78, i64* %r80 -%r81 = lshr i128 %r75, 64 -%r82 = trunc i128 %r81 to i64 -%r84 = getelementptr i64, i64* %r77, i32 1 -store i64 %r82, i64* %r84 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 +%r73 = load i64, i64* %r72 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = zext i384 %r40 to i448 +%r78 = zext i384 %r76 to i448 +%r79 = add i448 %r77, %r78 +%r80 = trunc i448 %r79 to i192 +%r82 = getelementptr i64, i64* %r1, i32 0 +%r83 = trunc i192 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i192 %r80, 64 +%r86 = getelementptr i64, i64* %r1, i32 1 +%r87 = trunc i192 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i192 %r84, 64 +%r90 = getelementptr i64, i64* %r1, i32 2 +%r91 = trunc i192 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i448 %r79, 192 +%r93 = trunc i448 %r92 to i256 +%r94 = load i64, i64* %r4 +%r95 = zext i64 %r94 to i128 +%r97 = getelementptr i64, i64* %r4, i32 1 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i128 +%r100 = shl i128 %r99, 64 +%r101 = or i128 %r95, %r100 +%r102 = zext i128 %r101 to i192 +%r104 = getelementptr i64, i64* %r4, i32 2 +%r105 = load i64, i64* %r104 +%r106 = zext i64 %r105 to i192 +%r107 = shl i192 %r106, 128 +%r108 = or i192 %r102, %r107 +%r109 = zext i192 %r108 to i256 +%r110 = sub i256 %r93, %r109 +%r111 = lshr i256 %r110, 192 +%r112 = trunc i256 %r111 to i1 +%r113 = select i1 %r112, i256 %r93, i256 %r110 +%r114 = trunc i256 %r113 to i192 +%r116 = getelementptr i64, i64* %r1, i32 3 +%r118 = getelementptr i64, i64* %r116, i32 0 +%r119 = trunc i192 %r114 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i192 %r114, 64 +%r122 = getelementptr i64, i64* %r116, i32 1 +%r123 = trunc i192 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i192 %r120, 64 +%r126 = getelementptr i64, i64* %r116, i32 2 +%r127 = trunc i192 %r124 to i64 +store i64 %r127, i64* %r126 ret void } -define void @mcl_fpDbl_sub2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1199,60 +1308,98 @@ define void @mcl_fpDbl_sub2L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r24 = zext i64 %r23 to i256 %r25 = shl i256 %r24, 192 %r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r2, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r2, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 %r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = zext i256 %r26 to i320 -%r50 = zext i256 %r48 to i320 -%r51 = sub i320 %r49, %r50 -%r52 = trunc i320 %r51 to i128 -%r53 = trunc i128 %r52 to i64 -%r55 = getelementptr i64, i64* %r1, i32 0 -store i64 %r53, i64* %r55 -%r56 = lshr i128 %r52, 64 -%r57 = trunc i128 %r56 to i64 -%r59 = getelementptr i64, i64* %r1, i32 1 -store i64 %r57, i64* %r59 -%r60 = lshr i320 %r51, 128 -%r61 = trunc i320 %r60 to i128 -%r62 = lshr i320 %r51, 256 -%r63 = trunc i320 %r62 to i1 -%r64 = load i64, i64* %r4 -%r65 = zext i64 %r64 to i128 -%r67 = getelementptr i64, i64* %r4, i32 1 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i128 -%r70 = shl i128 %r69, 64 -%r71 = or i128 %r65, %r70 -%r73 = select i1 %r63, i128 %r71, i128 0 -%r74 = add i128 %r61, %r73 -%r76 = getelementptr i64, i64* %r1, i32 2 -%r77 = trunc i128 %r74 to i64 -%r79 = getelementptr i64, i64* %r76, i32 0 -store i64 %r77, i64* %r79 -%r80 = lshr i128 %r74, 64 -%r81 = trunc i128 %r80 to i64 -%r83 = getelementptr i64, i64* %r76, i32 1 -store i64 %r81, i64* %r83 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 +%r66 = load i64, i64* %r65 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 +%r73 = load i64, i64* %r72 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = zext i384 %r40 to i448 +%r78 = zext i384 %r76 to i448 +%r79 = sub i448 %r77, %r78 +%r80 = trunc i448 %r79 to i192 +%r82 = getelementptr i64, i64* %r1, i32 0 +%r83 = trunc i192 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i192 %r80, 64 +%r86 = getelementptr i64, i64* %r1, i32 1 +%r87 = trunc i192 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i192 %r84, 64 +%r90 = getelementptr i64, i64* %r1, i32 2 +%r91 = trunc i192 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i448 %r79, 192 +%r93 = trunc i448 %r92 to i192 +%r94 = lshr i448 %r79, 384 +%r95 = trunc i448 %r94 to i1 +%r96 = load i64, i64* %r4 +%r97 = zext i64 %r96 to i128 +%r99 = getelementptr i64, i64* %r4, i32 1 +%r100 = load i64, i64* %r99 +%r101 = zext i64 %r100 to i128 +%r102 = shl i128 %r101, 64 +%r103 = or i128 %r97, %r102 +%r104 = zext i128 %r103 to i192 +%r106 = getelementptr i64, i64* %r4, i32 2 +%r107 = load i64, i64* %r106 +%r108 = zext i64 %r107 to i192 +%r109 = shl i192 %r108, 128 +%r110 = or i192 %r104, %r109 +%r112 = select i1 %r95, i192 %r110, i192 0 +%r113 = add i192 %r93, %r112 +%r115 = getelementptr i64, i64* %r1, i32 3 +%r117 = getelementptr i64, i64* %r115, i32 0 +%r118 = trunc i192 %r113 to i64 +store i64 %r118, i64* %r117 +%r119 = lshr i192 %r113, 64 +%r121 = getelementptr i64, i64* %r115, i32 1 +%r122 = trunc i192 %r119 to i64 +store i64 %r122, i64* %r121 +%r123 = lshr i192 %r119, 64 +%r125 = getelementptr i64, i64* %r115, i32 2 +%r126 = trunc i192 %r123 to i64 +store i64 %r126, i64* %r125 ret void } -define i256 @mulPv192x64(i64* noalias %r2, i64 %r3) +define i320 @mulPv256x64(i64* noalias %r2, i64 %r3) { %r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) %r6 = trunc i128 %r5 to i64 @@ -1263,252 +1410,331 @@ define i256 @mulPv192x64(i64* noalias %r2, i64 %r3) %r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) %r14 = trunc i128 %r13 to i64 %r15 = call i64 @extractHigh64(i128 %r13) -%r16 = zext i64 %r6 to i128 -%r17 = zext i64 %r10 to i128 -%r18 = shl i128 %r17, 64 -%r19 = or i128 %r16, %r18 -%r20 = zext i128 %r19 to i192 -%r21 = zext i64 %r14 to i192 -%r22 = shl i192 %r21, 128 -%r23 = or i192 %r20, %r22 -%r24 = zext i64 %r7 to i128 -%r25 = zext i64 %r11 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r24, %r26 -%r28 = zext i128 %r27 to i192 -%r29 = zext i64 %r15 to i192 -%r30 = shl i192 %r29, 128 -%r31 = or i192 %r28, %r30 -%r32 = zext i192 %r23 to i256 -%r33 = zext i192 %r31 to i256 -%r34 = shl i256 %r33, 64 -%r35 = add i256 %r32, %r34 -ret i256 %r35 +%r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) +%r18 = trunc i128 %r17 to i64 +%r19 = call i64 @extractHigh64(i128 %r17) +%r20 = zext i64 %r6 to i128 +%r21 = zext i64 %r10 to i128 +%r22 = shl i128 %r21, 64 +%r23 = or i128 %r20, %r22 +%r24 = zext i128 %r23 to i192 +%r25 = zext i64 %r14 to i192 +%r26 = shl i192 %r25, 128 +%r27 = or i192 %r24, %r26 +%r28 = zext i192 %r27 to i256 +%r29 = zext i64 %r18 to i256 +%r30 = shl i256 %r29, 192 +%r31 = or i256 %r28, %r30 +%r32 = zext i64 %r7 to i128 +%r33 = zext i64 %r11 to i128 +%r34 = shl i128 %r33, 64 +%r35 = or i128 %r32, %r34 +%r36 = zext i128 %r35 to i192 +%r37 = zext i64 %r15 to i192 +%r38 = shl i192 %r37, 128 +%r39 = or i192 %r36, %r38 +%r40 = zext i192 %r39 to i256 +%r41 = zext i64 %r19 to i256 +%r42 = shl i256 %r41, 192 +%r43 = or i256 %r40, %r42 +%r44 = zext i256 %r31 to i320 +%r45 = zext i256 %r43 to i320 +%r46 = shl i320 %r45, 64 +%r47 = add i320 %r44, %r46 +ret i320 %r47 } -define void @mcl_fp_mulUnitPre3L(i64* noalias %r1, i64* noalias %r2, i64 %r3) +define void @mcl_fp_mulUnitPre4L(i64* noalias %r1, i64* noalias %r2, i64 %r3) { -%r4 = call i256 @mulPv192x64(i64* %r2, i64 %r3) -%r5 = trunc i256 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i256 %r4, 64 -%r9 = trunc i256 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i256 %r8, 64 -%r13 = trunc i256 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i256 %r12, 64 -%r17 = trunc i256 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 +%r4 = call i320 @mulPv256x64(i64* %r2, i64 %r3) +%r6 = getelementptr i64, i64* %r1, i32 0 +%r7 = trunc i320 %r4 to i64 +store i64 %r7, i64* %r6 +%r8 = lshr i320 %r4, 64 +%r10 = getelementptr i64, i64* %r1, i32 1 +%r11 = trunc i320 %r8 to i64 +store i64 %r11, i64* %r10 +%r12 = lshr i320 %r8, 64 +%r14 = getelementptr i64, i64* %r1, i32 2 +%r15 = trunc i320 %r12 to i64 +store i64 %r15, i64* %r14 +%r16 = lshr i320 %r12, 64 +%r18 = getelementptr i64, i64* %r1, i32 3 +%r19 = trunc i320 %r16 to i64 +store i64 %r19, i64* %r18 +%r20 = lshr i320 %r16, 64 +%r22 = getelementptr i64, i64* %r1, i32 4 +%r23 = trunc i320 %r20 to i64 +store i64 %r23, i64* %r22 ret void } -define void @mcl_fpDbl_mulPre3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fpDbl_mulPre4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r4 = load i64, i64* %r3 -%r5 = call i256 @mulPv192x64(i64* %r2, i64 %r4) -%r6 = trunc i256 %r5 to i64 +%r5 = call i320 @mulPv256x64(i64* %r2, i64 %r4) +%r6 = trunc i320 %r5 to i64 store i64 %r6, i64* %r1 -%r7 = lshr i256 %r5, 64 +%r7 = lshr i320 %r5, 64 %r9 = getelementptr i64, i64* %r3, i32 1 %r10 = load i64, i64* %r9 -%r11 = call i256 @mulPv192x64(i64* %r2, i64 %r10) -%r12 = add i256 %r7, %r11 -%r13 = trunc i256 %r12 to i64 +%r11 = call i320 @mulPv256x64(i64* %r2, i64 %r10) +%r12 = add i320 %r7, %r11 +%r13 = trunc i320 %r12 to i64 %r15 = getelementptr i64, i64* %r1, i32 1 store i64 %r13, i64* %r15 -%r16 = lshr i256 %r12, 64 +%r16 = lshr i320 %r12, 64 %r18 = getelementptr i64, i64* %r3, i32 2 %r19 = load i64, i64* %r18 -%r20 = call i256 @mulPv192x64(i64* %r2, i64 %r19) -%r21 = add i256 %r16, %r20 -%r23 = getelementptr i64, i64* %r1, i32 2 -%r24 = trunc i256 %r21 to i64 -%r26 = getelementptr i64, i64* %r23, i32 0 -store i64 %r24, i64* %r26 -%r27 = lshr i256 %r21, 64 -%r28 = trunc i256 %r27 to i64 -%r30 = getelementptr i64, i64* %r23, i32 1 -store i64 %r28, i64* %r30 -%r31 = lshr i256 %r27, 64 -%r32 = trunc i256 %r31 to i64 -%r34 = getelementptr i64, i64* %r23, i32 2 -store i64 %r32, i64* %r34 -%r35 = lshr i256 %r31, 64 -%r36 = trunc i256 %r35 to i64 -%r38 = getelementptr i64, i64* %r23, i32 3 -store i64 %r36, i64* %r38 +%r20 = call i320 @mulPv256x64(i64* %r2, i64 %r19) +%r21 = add i320 %r16, %r20 +%r22 = trunc i320 %r21 to i64 +%r24 = getelementptr i64, i64* %r1, i32 2 +store i64 %r22, i64* %r24 +%r25 = lshr i320 %r21, 64 +%r27 = getelementptr i64, i64* %r3, i32 3 +%r28 = load i64, i64* %r27 +%r29 = call i320 @mulPv256x64(i64* %r2, i64 %r28) +%r30 = add i320 %r25, %r29 +%r32 = getelementptr i64, i64* %r1, i32 3 +%r34 = getelementptr i64, i64* %r32, i32 0 +%r35 = trunc i320 %r30 to i64 +store i64 %r35, i64* %r34 +%r36 = lshr i320 %r30, 64 +%r38 = getelementptr i64, i64* %r32, i32 1 +%r39 = trunc i320 %r36 to i64 +store i64 %r39, i64* %r38 +%r40 = lshr i320 %r36, 64 +%r42 = getelementptr i64, i64* %r32, i32 2 +%r43 = trunc i320 %r40 to i64 +store i64 %r43, i64* %r42 +%r44 = lshr i320 %r40, 64 +%r46 = getelementptr i64, i64* %r32, i32 3 +%r47 = trunc i320 %r44 to i64 +store i64 %r47, i64* %r46 +%r48 = lshr i320 %r44, 64 +%r50 = getelementptr i64, i64* %r32, i32 4 +%r51 = trunc i320 %r48 to i64 +store i64 %r51, i64* %r50 ret void } -define void @mcl_fpDbl_sqrPre3L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fpDbl_sqrPre4L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 -%r4 = call i256 @mulPv192x64(i64* %r2, i64 %r3) -%r5 = trunc i256 %r4 to i64 +%r4 = call i320 @mulPv256x64(i64* %r2, i64 %r3) +%r5 = trunc i320 %r4 to i64 store i64 %r5, i64* %r1 -%r6 = lshr i256 %r4, 64 +%r6 = lshr i320 %r4, 64 %r8 = getelementptr i64, i64* %r2, i32 1 %r9 = load i64, i64* %r8 -%r10 = call i256 @mulPv192x64(i64* %r2, i64 %r9) -%r11 = add i256 %r6, %r10 -%r12 = trunc i256 %r11 to i64 +%r10 = call i320 @mulPv256x64(i64* %r2, i64 %r9) +%r11 = add i320 %r6, %r10 +%r12 = trunc i320 %r11 to i64 %r14 = getelementptr i64, i64* %r1, i32 1 store i64 %r12, i64* %r14 -%r15 = lshr i256 %r11, 64 +%r15 = lshr i320 %r11, 64 %r17 = getelementptr i64, i64* %r2, i32 2 %r18 = load i64, i64* %r17 -%r19 = call i256 @mulPv192x64(i64* %r2, i64 %r18) -%r20 = add i256 %r15, %r19 -%r22 = getelementptr i64, i64* %r1, i32 2 -%r23 = trunc i256 %r20 to i64 -%r25 = getelementptr i64, i64* %r22, i32 0 -store i64 %r23, i64* %r25 -%r26 = lshr i256 %r20, 64 -%r27 = trunc i256 %r26 to i64 -%r29 = getelementptr i64, i64* %r22, i32 1 -store i64 %r27, i64* %r29 -%r30 = lshr i256 %r26, 64 -%r31 = trunc i256 %r30 to i64 -%r33 = getelementptr i64, i64* %r22, i32 2 -store i64 %r31, i64* %r33 -%r34 = lshr i256 %r30, 64 -%r35 = trunc i256 %r34 to i64 -%r37 = getelementptr i64, i64* %r22, i32 3 -store i64 %r35, i64* %r37 +%r19 = call i320 @mulPv256x64(i64* %r2, i64 %r18) +%r20 = add i320 %r15, %r19 +%r21 = trunc i320 %r20 to i64 +%r23 = getelementptr i64, i64* %r1, i32 2 +store i64 %r21, i64* %r23 +%r24 = lshr i320 %r20, 64 +%r26 = getelementptr i64, i64* %r2, i32 3 +%r27 = load i64, i64* %r26 +%r28 = call i320 @mulPv256x64(i64* %r2, i64 %r27) +%r29 = add i320 %r24, %r28 +%r31 = getelementptr i64, i64* %r1, i32 3 +%r33 = getelementptr i64, i64* %r31, i32 0 +%r34 = trunc i320 %r29 to i64 +store i64 %r34, i64* %r33 +%r35 = lshr i320 %r29, 64 +%r37 = getelementptr i64, i64* %r31, i32 1 +%r38 = trunc i320 %r35 to i64 +store i64 %r38, i64* %r37 +%r39 = lshr i320 %r35, 64 +%r41 = getelementptr i64, i64* %r31, i32 2 +%r42 = trunc i320 %r39 to i64 +store i64 %r42, i64* %r41 +%r43 = lshr i320 %r39, 64 +%r45 = getelementptr i64, i64* %r31, i32 3 +%r46 = trunc i320 %r43 to i64 +store i64 %r46, i64* %r45 +%r47 = lshr i320 %r43, 64 +%r49 = getelementptr i64, i64* %r31, i32 4 +%r50 = trunc i320 %r47 to i64 +store i64 %r50, i64* %r49 ret void } -define void @mcl_fp_mont3L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_mont4L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r9 = getelementptr i64, i64* %r3, i32 0 %r10 = load i64, i64* %r9 -%r11 = call i256 @mulPv192x64(i64* %r2, i64 %r10) -%r12 = zext i256 %r11 to i320 -%r13 = trunc i256 %r11 to i64 +%r11 = call i320 @mulPv256x64(i64* %r2, i64 %r10) +%r12 = zext i320 %r11 to i384 +%r13 = trunc i320 %r11 to i64 %r14 = mul i64 %r13, %r7 -%r15 = call i256 @mulPv192x64(i64* %r4, i64 %r14) -%r16 = zext i256 %r15 to i320 -%r17 = add i320 %r12, %r16 -%r18 = lshr i320 %r17, 64 +%r15 = call i320 @mulPv256x64(i64* %r4, i64 %r14) +%r16 = zext i320 %r15 to i384 +%r17 = add i384 %r12, %r16 +%r18 = lshr i384 %r17, 64 %r20 = getelementptr i64, i64* %r3, i32 1 %r21 = load i64, i64* %r20 -%r22 = call i256 @mulPv192x64(i64* %r2, i64 %r21) -%r23 = zext i256 %r22 to i320 -%r24 = add i320 %r18, %r23 -%r25 = trunc i320 %r24 to i64 +%r22 = call i320 @mulPv256x64(i64* %r2, i64 %r21) +%r23 = zext i320 %r22 to i384 +%r24 = add i384 %r18, %r23 +%r25 = trunc i384 %r24 to i64 %r26 = mul i64 %r25, %r7 -%r27 = call i256 @mulPv192x64(i64* %r4, i64 %r26) -%r28 = zext i256 %r27 to i320 -%r29 = add i320 %r24, %r28 -%r30 = lshr i320 %r29, 64 +%r27 = call i320 @mulPv256x64(i64* %r4, i64 %r26) +%r28 = zext i320 %r27 to i384 +%r29 = add i384 %r24, %r28 +%r30 = lshr i384 %r29, 64 %r32 = getelementptr i64, i64* %r3, i32 2 %r33 = load i64, i64* %r32 -%r34 = call i256 @mulPv192x64(i64* %r2, i64 %r33) -%r35 = zext i256 %r34 to i320 -%r36 = add i320 %r30, %r35 -%r37 = trunc i320 %r36 to i64 +%r34 = call i320 @mulPv256x64(i64* %r2, i64 %r33) +%r35 = zext i320 %r34 to i384 +%r36 = add i384 %r30, %r35 +%r37 = trunc i384 %r36 to i64 %r38 = mul i64 %r37, %r7 -%r39 = call i256 @mulPv192x64(i64* %r4, i64 %r38) -%r40 = zext i256 %r39 to i320 -%r41 = add i320 %r36, %r40 -%r42 = lshr i320 %r41, 64 -%r43 = trunc i320 %r42 to i256 -%r44 = load i64, i64* %r4 -%r45 = zext i64 %r44 to i128 -%r47 = getelementptr i64, i64* %r4, i32 1 -%r48 = load i64, i64* %r47 -%r49 = zext i64 %r48 to i128 -%r50 = shl i128 %r49, 64 -%r51 = or i128 %r45, %r50 -%r52 = zext i128 %r51 to i192 -%r54 = getelementptr i64, i64* %r4, i32 2 -%r55 = load i64, i64* %r54 -%r56 = zext i64 %r55 to i192 -%r57 = shl i192 %r56, 128 -%r58 = or i192 %r52, %r57 -%r59 = zext i192 %r58 to i256 -%r60 = sub i256 %r43, %r59 -%r61 = lshr i256 %r60, 192 -%r62 = trunc i256 %r61 to i1 -%r63 = select i1 %r62, i256 %r43, i256 %r60 -%r64 = trunc i256 %r63 to i192 -%r65 = trunc i192 %r64 to i64 -%r67 = getelementptr i64, i64* %r1, i32 0 -store i64 %r65, i64* %r67 -%r68 = lshr i192 %r64, 64 -%r69 = trunc i192 %r68 to i64 -%r71 = getelementptr i64, i64* %r1, i32 1 -store i64 %r69, i64* %r71 -%r72 = lshr i192 %r68, 64 -%r73 = trunc i192 %r72 to i64 -%r75 = getelementptr i64, i64* %r1, i32 2 -store i64 %r73, i64* %r75 +%r39 = call i320 @mulPv256x64(i64* %r4, i64 %r38) +%r40 = zext i320 %r39 to i384 +%r41 = add i384 %r36, %r40 +%r42 = lshr i384 %r41, 64 +%r44 = getelementptr i64, i64* %r3, i32 3 +%r45 = load i64, i64* %r44 +%r46 = call i320 @mulPv256x64(i64* %r2, i64 %r45) +%r47 = zext i320 %r46 to i384 +%r48 = add i384 %r42, %r47 +%r49 = trunc i384 %r48 to i64 +%r50 = mul i64 %r49, %r7 +%r51 = call i320 @mulPv256x64(i64* %r4, i64 %r50) +%r52 = zext i320 %r51 to i384 +%r53 = add i384 %r48, %r52 +%r54 = lshr i384 %r53, 64 +%r55 = trunc i384 %r54 to i320 +%r56 = load i64, i64* %r4 +%r57 = zext i64 %r56 to i128 +%r59 = getelementptr i64, i64* %r4, i32 1 +%r60 = load i64, i64* %r59 +%r61 = zext i64 %r60 to i128 +%r62 = shl i128 %r61, 64 +%r63 = or i128 %r57, %r62 +%r64 = zext i128 %r63 to i192 +%r66 = getelementptr i64, i64* %r4, i32 2 +%r67 = load i64, i64* %r66 +%r68 = zext i64 %r67 to i192 +%r69 = shl i192 %r68, 128 +%r70 = or i192 %r64, %r69 +%r71 = zext i192 %r70 to i256 +%r73 = getelementptr i64, i64* %r4, i32 3 +%r74 = load i64, i64* %r73 +%r75 = zext i64 %r74 to i256 +%r76 = shl i256 %r75, 192 +%r77 = or i256 %r71, %r76 +%r78 = zext i256 %r77 to i320 +%r79 = sub i320 %r55, %r78 +%r80 = lshr i320 %r79, 256 +%r81 = trunc i320 %r80 to i1 +%r82 = select i1 %r81, i320 %r55, i320 %r79 +%r83 = trunc i320 %r82 to i256 +%r85 = getelementptr i64, i64* %r1, i32 0 +%r86 = trunc i256 %r83 to i64 +store i64 %r86, i64* %r85 +%r87 = lshr i256 %r83, 64 +%r89 = getelementptr i64, i64* %r1, i32 1 +%r90 = trunc i256 %r87 to i64 +store i64 %r90, i64* %r89 +%r91 = lshr i256 %r87, 64 +%r93 = getelementptr i64, i64* %r1, i32 2 +%r94 = trunc i256 %r91 to i64 +store i64 %r94, i64* %r93 +%r95 = lshr i256 %r91, 64 +%r97 = getelementptr i64, i64* %r1, i32 3 +%r98 = trunc i256 %r95 to i64 +store i64 %r98, i64* %r97 ret void } -define void @mcl_fp_montNF3L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_montNF4L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r8 = load i64, i64* %r3 -%r9 = call i256 @mulPv192x64(i64* %r2, i64 %r8) -%r10 = trunc i256 %r9 to i64 +%r9 = call i320 @mulPv256x64(i64* %r2, i64 %r8) +%r10 = trunc i320 %r9 to i64 %r11 = mul i64 %r10, %r7 -%r12 = call i256 @mulPv192x64(i64* %r4, i64 %r11) -%r13 = add i256 %r9, %r12 -%r14 = lshr i256 %r13, 64 +%r12 = call i320 @mulPv256x64(i64* %r4, i64 %r11) +%r13 = add i320 %r9, %r12 +%r14 = lshr i320 %r13, 64 %r16 = getelementptr i64, i64* %r3, i32 1 %r17 = load i64, i64* %r16 -%r18 = call i256 @mulPv192x64(i64* %r2, i64 %r17) -%r19 = add i256 %r14, %r18 -%r20 = trunc i256 %r19 to i64 +%r18 = call i320 @mulPv256x64(i64* %r2, i64 %r17) +%r19 = add i320 %r14, %r18 +%r20 = trunc i320 %r19 to i64 %r21 = mul i64 %r20, %r7 -%r22 = call i256 @mulPv192x64(i64* %r4, i64 %r21) -%r23 = add i256 %r19, %r22 -%r24 = lshr i256 %r23, 64 +%r22 = call i320 @mulPv256x64(i64* %r4, i64 %r21) +%r23 = add i320 %r19, %r22 +%r24 = lshr i320 %r23, 64 %r26 = getelementptr i64, i64* %r3, i32 2 %r27 = load i64, i64* %r26 -%r28 = call i256 @mulPv192x64(i64* %r2, i64 %r27) -%r29 = add i256 %r24, %r28 -%r30 = trunc i256 %r29 to i64 +%r28 = call i320 @mulPv256x64(i64* %r2, i64 %r27) +%r29 = add i320 %r24, %r28 +%r30 = trunc i320 %r29 to i64 %r31 = mul i64 %r30, %r7 -%r32 = call i256 @mulPv192x64(i64* %r4, i64 %r31) -%r33 = add i256 %r29, %r32 -%r34 = lshr i256 %r33, 64 -%r35 = trunc i256 %r34 to i192 -%r36 = load i64, i64* %r4 -%r37 = zext i64 %r36 to i128 -%r39 = getelementptr i64, i64* %r4, i32 1 -%r40 = load i64, i64* %r39 -%r41 = zext i64 %r40 to i128 -%r42 = shl i128 %r41, 64 -%r43 = or i128 %r37, %r42 -%r44 = zext i128 %r43 to i192 -%r46 = getelementptr i64, i64* %r4, i32 2 -%r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i192 -%r49 = shl i192 %r48, 128 -%r50 = or i192 %r44, %r49 -%r51 = sub i192 %r35, %r50 -%r52 = lshr i192 %r51, 191 -%r53 = trunc i192 %r52 to i1 -%r54 = select i1 %r53, i192 %r35, i192 %r51 -%r55 = trunc i192 %r54 to i64 -%r57 = getelementptr i64, i64* %r1, i32 0 -store i64 %r55, i64* %r57 -%r58 = lshr i192 %r54, 64 -%r59 = trunc i192 %r58 to i64 -%r61 = getelementptr i64, i64* %r1, i32 1 -store i64 %r59, i64* %r61 -%r62 = lshr i192 %r58, 64 -%r63 = trunc i192 %r62 to i64 -%r65 = getelementptr i64, i64* %r1, i32 2 -store i64 %r63, i64* %r65 +%r32 = call i320 @mulPv256x64(i64* %r4, i64 %r31) +%r33 = add i320 %r29, %r32 +%r34 = lshr i320 %r33, 64 +%r36 = getelementptr i64, i64* %r3, i32 3 +%r37 = load i64, i64* %r36 +%r38 = call i320 @mulPv256x64(i64* %r2, i64 %r37) +%r39 = add i320 %r34, %r38 +%r40 = trunc i320 %r39 to i64 +%r41 = mul i64 %r40, %r7 +%r42 = call i320 @mulPv256x64(i64* %r4, i64 %r41) +%r43 = add i320 %r39, %r42 +%r44 = lshr i320 %r43, 64 +%r45 = trunc i320 %r44 to i256 +%r46 = load i64, i64* %r4 +%r47 = zext i64 %r46 to i128 +%r49 = getelementptr i64, i64* %r4, i32 1 +%r50 = load i64, i64* %r49 +%r51 = zext i64 %r50 to i128 +%r52 = shl i128 %r51, 64 +%r53 = or i128 %r47, %r52 +%r54 = zext i128 %r53 to i192 +%r56 = getelementptr i64, i64* %r4, i32 2 +%r57 = load i64, i64* %r56 +%r58 = zext i64 %r57 to i192 +%r59 = shl i192 %r58, 128 +%r60 = or i192 %r54, %r59 +%r61 = zext i192 %r60 to i256 +%r63 = getelementptr i64, i64* %r4, i32 3 +%r64 = load i64, i64* %r63 +%r65 = zext i64 %r64 to i256 +%r66 = shl i256 %r65, 192 +%r67 = or i256 %r61, %r66 +%r68 = sub i256 %r45, %r67 +%r69 = lshr i256 %r68, 255 +%r70 = trunc i256 %r69 to i1 +%r71 = select i1 %r70, i256 %r45, i256 %r68 +%r73 = getelementptr i64, i64* %r1, i32 0 +%r74 = trunc i256 %r71 to i64 +store i64 %r74, i64* %r73 +%r75 = lshr i256 %r71, 64 +%r77 = getelementptr i64, i64* %r1, i32 1 +%r78 = trunc i256 %r75 to i64 +store i64 %r78, i64* %r77 +%r79 = lshr i256 %r75, 64 +%r81 = getelementptr i64, i64* %r1, i32 2 +%r82 = trunc i256 %r79 to i64 +store i64 %r82, i64* %r81 +%r83 = lshr i256 %r79, 64 +%r85 = getelementptr i64, i64* %r1, i32 3 +%r86 = trunc i256 %r83 to i64 +store i64 %r86, i64* %r85 ret void } -define void @mcl_fp_montRed3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fp_montRed4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r5 = getelementptr i64, i64* %r3, i32 -1 %r6 = load i64, i64* %r5 @@ -1525,126 +1751,336 @@ define void @mcl_fp_montRed3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r19 = zext i64 %r18 to i192 %r20 = shl i192 %r19, 128 %r21 = or i192 %r15, %r20 -%r22 = load i64, i64* %r2 -%r23 = zext i64 %r22 to i128 -%r25 = getelementptr i64, i64* %r2, i32 1 -%r26 = load i64, i64* %r25 -%r27 = zext i64 %r26 to i128 -%r28 = shl i128 %r27, 64 -%r29 = or i128 %r23, %r28 -%r30 = zext i128 %r29 to i192 -%r32 = getelementptr i64, i64* %r2, i32 2 +%r22 = zext i192 %r21 to i256 +%r24 = getelementptr i64, i64* %r3, i32 3 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i256 +%r27 = shl i256 %r26, 192 +%r28 = or i256 %r22, %r27 +%r29 = load i64, i64* %r2 +%r30 = zext i64 %r29 to i128 +%r32 = getelementptr i64, i64* %r2, i32 1 %r33 = load i64, i64* %r32 -%r34 = zext i64 %r33 to i192 -%r35 = shl i192 %r34, 128 -%r36 = or i192 %r30, %r35 -%r37 = zext i192 %r36 to i256 -%r39 = getelementptr i64, i64* %r2, i32 3 +%r34 = zext i64 %r33 to i128 +%r35 = shl i128 %r34, 64 +%r36 = or i128 %r30, %r35 +%r37 = zext i128 %r36 to i192 +%r39 = getelementptr i64, i64* %r2, i32 2 %r40 = load i64, i64* %r39 -%r41 = zext i64 %r40 to i256 -%r42 = shl i256 %r41, 192 -%r43 = or i256 %r37, %r42 -%r44 = zext i256 %r43 to i320 -%r46 = getelementptr i64, i64* %r2, i32 4 +%r41 = zext i64 %r40 to i192 +%r42 = shl i192 %r41, 128 +%r43 = or i192 %r37, %r42 +%r44 = zext i192 %r43 to i256 +%r46 = getelementptr i64, i64* %r2, i32 3 %r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i320 -%r49 = shl i320 %r48, 256 -%r50 = or i320 %r44, %r49 -%r51 = zext i320 %r50 to i384 -%r53 = getelementptr i64, i64* %r2, i32 5 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i384 -%r56 = shl i384 %r55, 320 -%r57 = or i384 %r51, %r56 -%r58 = zext i384 %r57 to i448 -%r59 = trunc i448 %r58 to i64 -%r60 = mul i64 %r59, %r6 -%r61 = call i256 @mulPv192x64(i64* %r3, i64 %r60) -%r62 = zext i256 %r61 to i448 -%r63 = add i448 %r58, %r62 -%r64 = lshr i448 %r63, 64 -%r65 = trunc i448 %r64 to i384 -%r66 = trunc i384 %r65 to i64 -%r67 = mul i64 %r66, %r6 -%r68 = call i256 @mulPv192x64(i64* %r3, i64 %r67) -%r69 = zext i256 %r68 to i384 -%r70 = add i384 %r65, %r69 -%r71 = lshr i384 %r70, 64 -%r72 = trunc i384 %r71 to i320 -%r73 = trunc i320 %r72 to i64 -%r74 = mul i64 %r73, %r6 -%r75 = call i256 @mulPv192x64(i64* %r3, i64 %r74) -%r76 = zext i256 %r75 to i320 -%r77 = add i320 %r72, %r76 -%r78 = lshr i320 %r77, 64 -%r79 = trunc i320 %r78 to i256 -%r80 = zext i192 %r21 to i256 -%r81 = sub i256 %r79, %r80 -%r82 = lshr i256 %r81, 192 -%r83 = trunc i256 %r82 to i1 -%r84 = select i1 %r83, i256 %r79, i256 %r81 -%r85 = trunc i256 %r84 to i192 -%r86 = trunc i192 %r85 to i64 -%r88 = getelementptr i64, i64* %r1, i32 0 -store i64 %r86, i64* %r88 -%r89 = lshr i192 %r85, 64 -%r90 = trunc i192 %r89 to i64 -%r92 = getelementptr i64, i64* %r1, i32 1 -store i64 %r90, i64* %r92 -%r93 = lshr i192 %r89, 64 -%r94 = trunc i192 %r93 to i64 -%r96 = getelementptr i64, i64* %r1, i32 2 -store i64 %r94, i64* %r96 +%r48 = zext i64 %r47 to i256 +%r49 = shl i256 %r48, 192 +%r50 = or i256 %r44, %r49 +%r51 = trunc i256 %r50 to i64 +%r52 = mul i64 %r51, %r6 +%r53 = call i320 @mulPv256x64(i64* %r3, i64 %r52) +%r55 = getelementptr i64, i64* %r2, i32 4 +%r56 = load i64, i64* %r55 +%r57 = zext i64 %r56 to i320 +%r58 = shl i320 %r57, 256 +%r59 = zext i256 %r50 to i320 +%r60 = or i320 %r58, %r59 +%r61 = zext i320 %r60 to i384 +%r62 = zext i320 %r53 to i384 +%r63 = add i384 %r61, %r62 +%r64 = lshr i384 %r63, 64 +%r65 = trunc i384 %r64 to i320 +%r66 = lshr i320 %r65, 256 +%r67 = trunc i320 %r66 to i64 +%r68 = trunc i320 %r65 to i256 +%r69 = trunc i256 %r68 to i64 +%r70 = mul i64 %r69, %r6 +%r71 = call i320 @mulPv256x64(i64* %r3, i64 %r70) +%r72 = zext i64 %r67 to i320 +%r73 = shl i320 %r72, 256 +%r74 = add i320 %r71, %r73 +%r76 = getelementptr i64, i64* %r2, i32 5 +%r77 = load i64, i64* %r76 +%r78 = zext i64 %r77 to i320 +%r79 = shl i320 %r78, 256 +%r80 = zext i256 %r68 to i320 +%r81 = or i320 %r79, %r80 +%r82 = zext i320 %r81 to i384 +%r83 = zext i320 %r74 to i384 +%r84 = add i384 %r82, %r83 +%r85 = lshr i384 %r84, 64 +%r86 = trunc i384 %r85 to i320 +%r87 = lshr i320 %r86, 256 +%r88 = trunc i320 %r87 to i64 +%r89 = trunc i320 %r86 to i256 +%r90 = trunc i256 %r89 to i64 +%r91 = mul i64 %r90, %r6 +%r92 = call i320 @mulPv256x64(i64* %r3, i64 %r91) +%r93 = zext i64 %r88 to i320 +%r94 = shl i320 %r93, 256 +%r95 = add i320 %r92, %r94 +%r97 = getelementptr i64, i64* %r2, i32 6 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i320 +%r100 = shl i320 %r99, 256 +%r101 = zext i256 %r89 to i320 +%r102 = or i320 %r100, %r101 +%r103 = zext i320 %r102 to i384 +%r104 = zext i320 %r95 to i384 +%r105 = add i384 %r103, %r104 +%r106 = lshr i384 %r105, 64 +%r107 = trunc i384 %r106 to i320 +%r108 = lshr i320 %r107, 256 +%r109 = trunc i320 %r108 to i64 +%r110 = trunc i320 %r107 to i256 +%r111 = trunc i256 %r110 to i64 +%r112 = mul i64 %r111, %r6 +%r113 = call i320 @mulPv256x64(i64* %r3, i64 %r112) +%r114 = zext i64 %r109 to i320 +%r115 = shl i320 %r114, 256 +%r116 = add i320 %r113, %r115 +%r118 = getelementptr i64, i64* %r2, i32 7 +%r119 = load i64, i64* %r118 +%r120 = zext i64 %r119 to i320 +%r121 = shl i320 %r120, 256 +%r122 = zext i256 %r110 to i320 +%r123 = or i320 %r121, %r122 +%r124 = zext i320 %r123 to i384 +%r125 = zext i320 %r116 to i384 +%r126 = add i384 %r124, %r125 +%r127 = lshr i384 %r126, 64 +%r128 = trunc i384 %r127 to i320 +%r129 = lshr i320 %r128, 256 +%r130 = trunc i320 %r129 to i64 +%r131 = trunc i320 %r128 to i256 +%r132 = zext i256 %r28 to i320 +%r133 = zext i256 %r131 to i320 +%r134 = sub i320 %r133, %r132 +%r135 = lshr i320 %r134, 256 +%r136 = trunc i320 %r135 to i1 +%r137 = select i1 %r136, i320 %r133, i320 %r134 +%r138 = trunc i320 %r137 to i256 +%r140 = getelementptr i64, i64* %r1, i32 0 +%r141 = trunc i256 %r138 to i64 +store i64 %r141, i64* %r140 +%r142 = lshr i256 %r138, 64 +%r144 = getelementptr i64, i64* %r1, i32 1 +%r145 = trunc i256 %r142 to i64 +store i64 %r145, i64* %r144 +%r146 = lshr i256 %r142, 64 +%r148 = getelementptr i64, i64* %r1, i32 2 +%r149 = trunc i256 %r146 to i64 +store i64 %r149, i64* %r148 +%r150 = lshr i256 %r146, 64 +%r152 = getelementptr i64, i64* %r1, i32 3 +%r153 = trunc i256 %r150 to i64 +store i64 %r153, i64* %r152 ret void } -define i64 @mcl_fp_addPre3L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_montRedNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 +%r5 = getelementptr i64, i64* %r3, i32 -1 +%r6 = load i64, i64* %r5 +%r7 = load i64, i64* %r3 +%r8 = zext i64 %r7 to i128 +%r10 = getelementptr i64, i64* %r3, i32 1 +%r11 = load i64, i64* %r10 +%r12 = zext i64 %r11 to i128 +%r13 = shl i128 %r12, 64 +%r14 = or i128 %r8, %r13 +%r15 = zext i128 %r14 to i192 +%r17 = getelementptr i64, i64* %r3, i32 2 +%r18 = load i64, i64* %r17 +%r19 = zext i64 %r18 to i192 +%r20 = shl i192 %r19, 128 +%r21 = or i192 %r15, %r20 +%r22 = zext i192 %r21 to i256 +%r24 = getelementptr i64, i64* %r3, i32 3 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i256 +%r27 = shl i256 %r26, 192 +%r28 = or i256 %r22, %r27 +%r29 = load i64, i64* %r2 +%r30 = zext i64 %r29 to i128 +%r32 = getelementptr i64, i64* %r2, i32 1 +%r33 = load i64, i64* %r32 +%r34 = zext i64 %r33 to i128 +%r35 = shl i128 %r34, 64 +%r36 = or i128 %r30, %r35 +%r37 = zext i128 %r36 to i192 +%r39 = getelementptr i64, i64* %r2, i32 2 +%r40 = load i64, i64* %r39 +%r41 = zext i64 %r40 to i192 +%r42 = shl i192 %r41, 128 +%r43 = or i192 %r37, %r42 +%r44 = zext i192 %r43 to i256 +%r46 = getelementptr i64, i64* %r2, i32 3 +%r47 = load i64, i64* %r46 +%r48 = zext i64 %r47 to i256 +%r49 = shl i256 %r48, 192 +%r50 = or i256 %r44, %r49 +%r51 = trunc i256 %r50 to i64 +%r52 = mul i64 %r51, %r6 +%r53 = call i320 @mulPv256x64(i64* %r3, i64 %r52) +%r55 = getelementptr i64, i64* %r2, i32 4 +%r56 = load i64, i64* %r55 +%r57 = zext i64 %r56 to i320 +%r58 = shl i320 %r57, 256 +%r59 = zext i256 %r50 to i320 +%r60 = or i320 %r58, %r59 +%r61 = zext i320 %r60 to i384 +%r62 = zext i320 %r53 to i384 +%r63 = add i384 %r61, %r62 +%r64 = lshr i384 %r63, 64 +%r65 = trunc i384 %r64 to i320 +%r66 = lshr i320 %r65, 256 +%r67 = trunc i320 %r66 to i64 +%r68 = trunc i320 %r65 to i256 +%r69 = trunc i256 %r68 to i64 +%r70 = mul i64 %r69, %r6 +%r71 = call i320 @mulPv256x64(i64* %r3, i64 %r70) +%r72 = zext i64 %r67 to i320 +%r73 = shl i320 %r72, 256 +%r74 = add i320 %r71, %r73 +%r76 = getelementptr i64, i64* %r2, i32 5 +%r77 = load i64, i64* %r76 +%r78 = zext i64 %r77 to i320 +%r79 = shl i320 %r78, 256 +%r80 = zext i256 %r68 to i320 +%r81 = or i320 %r79, %r80 +%r82 = zext i320 %r81 to i384 +%r83 = zext i320 %r74 to i384 +%r84 = add i384 %r82, %r83 +%r85 = lshr i384 %r84, 64 +%r86 = trunc i384 %r85 to i320 +%r87 = lshr i320 %r86, 256 +%r88 = trunc i320 %r87 to i64 +%r89 = trunc i320 %r86 to i256 +%r90 = trunc i256 %r89 to i64 +%r91 = mul i64 %r90, %r6 +%r92 = call i320 @mulPv256x64(i64* %r3, i64 %r91) +%r93 = zext i64 %r88 to i320 +%r94 = shl i320 %r93, 256 +%r95 = add i320 %r92, %r94 +%r97 = getelementptr i64, i64* %r2, i32 6 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i320 +%r100 = shl i320 %r99, 256 +%r101 = zext i256 %r89 to i320 +%r102 = or i320 %r100, %r101 +%r103 = zext i320 %r102 to i384 +%r104 = zext i320 %r95 to i384 +%r105 = add i384 %r103, %r104 +%r106 = lshr i384 %r105, 64 +%r107 = trunc i384 %r106 to i320 +%r108 = lshr i320 %r107, 256 +%r109 = trunc i320 %r108 to i64 +%r110 = trunc i320 %r107 to i256 +%r111 = trunc i256 %r110 to i64 +%r112 = mul i64 %r111, %r6 +%r113 = call i320 @mulPv256x64(i64* %r3, i64 %r112) +%r114 = zext i64 %r109 to i320 +%r115 = shl i320 %r114, 256 +%r116 = add i320 %r113, %r115 +%r118 = getelementptr i64, i64* %r2, i32 7 +%r119 = load i64, i64* %r118 +%r120 = zext i64 %r119 to i320 +%r121 = shl i320 %r120, 256 +%r122 = zext i256 %r110 to i320 +%r123 = or i320 %r121, %r122 +%r124 = zext i320 %r123 to i384 +%r125 = zext i320 %r116 to i384 +%r126 = add i384 %r124, %r125 +%r127 = lshr i384 %r126, 64 +%r128 = trunc i384 %r127 to i320 +%r129 = lshr i320 %r128, 256 +%r130 = trunc i320 %r129 to i64 +%r131 = trunc i320 %r128 to i256 +%r132 = sub i256 %r131, %r28 +%r133 = lshr i256 %r132, 255 +%r134 = trunc i256 %r133 to i1 +%r135 = select i1 %r134, i256 %r131, i256 %r132 +%r137 = getelementptr i64, i64* %r1, i32 0 +%r138 = trunc i256 %r135 to i64 +store i64 %r138, i64* %r137 +%r139 = lshr i256 %r135, 64 +%r141 = getelementptr i64, i64* %r1, i32 1 +%r142 = trunc i256 %r139 to i64 +store i64 %r142, i64* %r141 +%r143 = lshr i256 %r139, 64 +%r145 = getelementptr i64, i64* %r1, i32 2 +%r146 = trunc i256 %r143 to i64 +store i64 %r146, i64* %r145 +%r147 = lshr i256 %r143, 64 +%r149 = getelementptr i64, i64* %r1, i32 3 +%r150 = trunc i256 %r147 to i64 +store i64 %r150, i64* %r149 +ret void +} +define i64 @mcl_fp_addPre4L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +{ +%r5 = load i64, i64* %r3 +%r6 = zext i64 %r5 to i128 +%r8 = getelementptr i64, i64* %r3, i32 1 +%r9 = load i64, i64* %r8 +%r10 = zext i64 %r9 to i128 +%r11 = shl i128 %r10, 64 +%r12 = or i128 %r6, %r11 +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r3, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 %r20 = zext i192 %r19 to i256 -%r21 = load i64, i64* %r4 -%r22 = zext i64 %r21 to i128 -%r24 = getelementptr i64, i64* %r4, i32 1 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i128 -%r27 = shl i128 %r26, 64 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i192 -%r31 = getelementptr i64, i64* %r4, i32 2 +%r22 = getelementptr i64, i64* %r3, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = zext i256 %r26 to i320 +%r28 = load i64, i64* %r4 +%r29 = zext i64 %r28 to i128 +%r31 = getelementptr i64, i64* %r4, i32 1 %r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i192 -%r34 = shl i192 %r33, 128 -%r35 = or i192 %r29, %r34 -%r36 = zext i192 %r35 to i256 -%r37 = add i256 %r20, %r36 -%r38 = trunc i256 %r37 to i192 -%r39 = trunc i192 %r38 to i64 -%r41 = getelementptr i64, i64* %r2, i32 0 -store i64 %r39, i64* %r41 -%r42 = lshr i192 %r38, 64 -%r43 = trunc i192 %r42 to i64 -%r45 = getelementptr i64, i64* %r2, i32 1 -store i64 %r43, i64* %r45 -%r46 = lshr i192 %r42, 64 -%r47 = trunc i192 %r46 to i64 -%r49 = getelementptr i64, i64* %r2, i32 2 -store i64 %r47, i64* %r49 -%r50 = lshr i256 %r37, 192 -%r51 = trunc i256 %r50 to i64 -ret i64 %r51 +%r33 = zext i64 %r32 to i128 +%r34 = shl i128 %r33, 64 +%r35 = or i128 %r29, %r34 +%r36 = zext i128 %r35 to i192 +%r38 = getelementptr i64, i64* %r4, i32 2 +%r39 = load i64, i64* %r38 +%r40 = zext i64 %r39 to i192 +%r41 = shl i192 %r40, 128 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i256 +%r45 = getelementptr i64, i64* %r4, i32 3 +%r46 = load i64, i64* %r45 +%r47 = zext i64 %r46 to i256 +%r48 = shl i256 %r47, 192 +%r49 = or i256 %r43, %r48 +%r50 = zext i256 %r49 to i320 +%r51 = add i320 %r27, %r50 +%r52 = trunc i320 %r51 to i256 +%r54 = getelementptr i64, i64* %r2, i32 0 +%r55 = trunc i256 %r52 to i64 +store i64 %r55, i64* %r54 +%r56 = lshr i256 %r52, 64 +%r58 = getelementptr i64, i64* %r2, i32 1 +%r59 = trunc i256 %r56 to i64 +store i64 %r59, i64* %r58 +%r60 = lshr i256 %r56, 64 +%r62 = getelementptr i64, i64* %r2, i32 2 +%r63 = trunc i256 %r60 to i64 +store i64 %r63, i64* %r62 +%r64 = lshr i256 %r60, 64 +%r66 = getelementptr i64, i64* %r2, i32 3 +%r67 = trunc i256 %r64 to i64 +store i64 %r67, i64* %r66 +%r68 = lshr i320 %r51, 256 +%r69 = trunc i320 %r68 to i64 +ret i64 %r69 } -define i64 @mcl_fp_subPre3L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_subPre4L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -1660,39 +2096,55 @@ define i64 @mcl_fp_subPre3L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 %r20 = zext i192 %r19 to i256 -%r21 = load i64, i64* %r4 -%r22 = zext i64 %r21 to i128 -%r24 = getelementptr i64, i64* %r4, i32 1 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i128 -%r27 = shl i128 %r26, 64 -%r28 = or i128 %r22, %r27 -%r29 = zext i128 %r28 to i192 -%r31 = getelementptr i64, i64* %r4, i32 2 +%r22 = getelementptr i64, i64* %r3, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = zext i256 %r26 to i320 +%r28 = load i64, i64* %r4 +%r29 = zext i64 %r28 to i128 +%r31 = getelementptr i64, i64* %r4, i32 1 %r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i192 -%r34 = shl i192 %r33, 128 -%r35 = or i192 %r29, %r34 -%r36 = zext i192 %r35 to i256 -%r37 = sub i256 %r20, %r36 -%r38 = trunc i256 %r37 to i192 -%r39 = trunc i192 %r38 to i64 -%r41 = getelementptr i64, i64* %r2, i32 0 -store i64 %r39, i64* %r41 -%r42 = lshr i192 %r38, 64 -%r43 = trunc i192 %r42 to i64 -%r45 = getelementptr i64, i64* %r2, i32 1 -store i64 %r43, i64* %r45 -%r46 = lshr i192 %r42, 64 -%r47 = trunc i192 %r46 to i64 -%r49 = getelementptr i64, i64* %r2, i32 2 -store i64 %r47, i64* %r49 -%r50 = lshr i256 %r37, 192 -%r51 = trunc i256 %r50 to i64 -%r53 = and i64 %r51, 1 -ret i64 %r53 +%r33 = zext i64 %r32 to i128 +%r34 = shl i128 %r33, 64 +%r35 = or i128 %r29, %r34 +%r36 = zext i128 %r35 to i192 +%r38 = getelementptr i64, i64* %r4, i32 2 +%r39 = load i64, i64* %r38 +%r40 = zext i64 %r39 to i192 +%r41 = shl i192 %r40, 128 +%r42 = or i192 %r36, %r41 +%r43 = zext i192 %r42 to i256 +%r45 = getelementptr i64, i64* %r4, i32 3 +%r46 = load i64, i64* %r45 +%r47 = zext i64 %r46 to i256 +%r48 = shl i256 %r47, 192 +%r49 = or i256 %r43, %r48 +%r50 = zext i256 %r49 to i320 +%r51 = sub i320 %r27, %r50 +%r52 = trunc i320 %r51 to i256 +%r54 = getelementptr i64, i64* %r2, i32 0 +%r55 = trunc i256 %r52 to i64 +store i64 %r55, i64* %r54 +%r56 = lshr i256 %r52, 64 +%r58 = getelementptr i64, i64* %r2, i32 1 +%r59 = trunc i256 %r56 to i64 +store i64 %r59, i64* %r58 +%r60 = lshr i256 %r56, 64 +%r62 = getelementptr i64, i64* %r2, i32 2 +%r63 = trunc i256 %r60 to i64 +store i64 %r63, i64* %r62 +%r64 = lshr i256 %r60, 64 +%r66 = getelementptr i64, i64* %r2, i32 3 +%r67 = trunc i256 %r64 to i64 +store i64 %r67, i64* %r66 +%r69 = lshr i320 %r51, 256 +%r70 = trunc i320 %r69 to i64 +%r71 = and i64 %r70, 1 +ret i64 %r71 } -define void @mcl_fp_shr1_3L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fp_shr1_4L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 %r4 = zext i64 %r3 to i128 @@ -1707,21 +2159,31 @@ define void @mcl_fp_shr1_3L(i64* noalias %r1, i64* noalias %r2) %r15 = zext i64 %r14 to i192 %r16 = shl i192 %r15, 128 %r17 = or i192 %r11, %r16 -%r18 = lshr i192 %r17, 1 -%r19 = trunc i192 %r18 to i64 -%r21 = getelementptr i64, i64* %r1, i32 0 -store i64 %r19, i64* %r21 -%r22 = lshr i192 %r18, 64 -%r23 = trunc i192 %r22 to i64 -%r25 = getelementptr i64, i64* %r1, i32 1 -store i64 %r23, i64* %r25 -%r26 = lshr i192 %r22, 64 -%r27 = trunc i192 %r26 to i64 -%r29 = getelementptr i64, i64* %r1, i32 2 -store i64 %r27, i64* %r29 +%r18 = zext i192 %r17 to i256 +%r20 = getelementptr i64, i64* %r2, i32 3 +%r21 = load i64, i64* %r20 +%r22 = zext i64 %r21 to i256 +%r23 = shl i256 %r22, 192 +%r24 = or i256 %r18, %r23 +%r25 = lshr i256 %r24, 1 +%r27 = getelementptr i64, i64* %r1, i32 0 +%r28 = trunc i256 %r25 to i64 +store i64 %r28, i64* %r27 +%r29 = lshr i256 %r25, 64 +%r31 = getelementptr i64, i64* %r1, i32 1 +%r32 = trunc i256 %r29 to i64 +store i64 %r32, i64* %r31 +%r33 = lshr i256 %r29, 64 +%r35 = getelementptr i64, i64* %r1, i32 2 +%r36 = trunc i256 %r33 to i64 +store i64 %r36, i64* %r35 +%r37 = lshr i256 %r33, 64 +%r39 = getelementptr i64, i64* %r1, i32 3 +%r40 = trunc i256 %r37 to i64 +store i64 %r40, i64* %r39 ret void } -define void @mcl_fp_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_add4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1736,70 +2198,96 @@ define void @mcl_fp_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r17 = zext i64 %r16 to i192 %r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 -%r20 = load i64, i64* %r3 -%r21 = zext i64 %r20 to i128 -%r23 = getelementptr i64, i64* %r3, i32 1 -%r24 = load i64, i64* %r23 -%r25 = zext i64 %r24 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r21, %r26 -%r28 = zext i128 %r27 to i192 -%r30 = getelementptr i64, i64* %r3, i32 2 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r2, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = load i64, i64* %r3 +%r28 = zext i64 %r27 to i128 +%r30 = getelementptr i64, i64* %r3, i32 1 %r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i192 -%r33 = shl i192 %r32, 128 -%r34 = or i192 %r28, %r33 -%r35 = zext i192 %r19 to i256 -%r36 = zext i192 %r34 to i256 -%r37 = add i256 %r35, %r36 -%r38 = trunc i256 %r37 to i192 -%r39 = trunc i192 %r38 to i64 -%r41 = getelementptr i64, i64* %r1, i32 0 -store i64 %r39, i64* %r41 -%r42 = lshr i192 %r38, 64 -%r43 = trunc i192 %r42 to i64 -%r45 = getelementptr i64, i64* %r1, i32 1 -store i64 %r43, i64* %r45 -%r46 = lshr i192 %r42, 64 -%r47 = trunc i192 %r46 to i64 -%r49 = getelementptr i64, i64* %r1, i32 2 -store i64 %r47, i64* %r49 -%r50 = load i64, i64* %r4 -%r51 = zext i64 %r50 to i128 -%r53 = getelementptr i64, i64* %r4, i32 1 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i128 -%r56 = shl i128 %r55, 64 -%r57 = or i128 %r51, %r56 -%r58 = zext i128 %r57 to i192 -%r60 = getelementptr i64, i64* %r4, i32 2 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i192 -%r63 = shl i192 %r62, 128 -%r64 = or i192 %r58, %r63 -%r65 = zext i192 %r64 to i256 -%r66 = sub i256 %r37, %r65 -%r67 = lshr i256 %r66, 192 -%r68 = trunc i256 %r67 to i1 -br i1%r68, label %carry, label %nocarry -nocarry: -%r69 = trunc i256 %r66 to i192 -%r70 = trunc i192 %r69 to i64 -%r72 = getelementptr i64, i64* %r1, i32 0 -store i64 %r70, i64* %r72 -%r73 = lshr i192 %r69, 64 -%r74 = trunc i192 %r73 to i64 -%r76 = getelementptr i64, i64* %r1, i32 1 -store i64 %r74, i64* %r76 -%r77 = lshr i192 %r73, 64 -%r78 = trunc i192 %r77 to i64 -%r80 = getelementptr i64, i64* %r1, i32 2 -store i64 %r78, i64* %r80 -ret void -carry: -ret void +%r32 = zext i64 %r31 to i128 +%r33 = shl i128 %r32, 64 +%r34 = or i128 %r28, %r33 +%r35 = zext i128 %r34 to i192 +%r37 = getelementptr i64, i64* %r3, i32 2 +%r38 = load i64, i64* %r37 +%r39 = zext i64 %r38 to i192 +%r40 = shl i192 %r39, 128 +%r41 = or i192 %r35, %r40 +%r42 = zext i192 %r41 to i256 +%r44 = getelementptr i64, i64* %r3, i32 3 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i256 +%r47 = shl i256 %r46, 192 +%r48 = or i256 %r42, %r47 +%r49 = zext i256 %r26 to i320 +%r50 = zext i256 %r48 to i320 +%r51 = add i320 %r49, %r50 +%r52 = trunc i320 %r51 to i256 +%r54 = getelementptr i64, i64* %r1, i32 0 +%r55 = trunc i256 %r52 to i64 +store i64 %r55, i64* %r54 +%r56 = lshr i256 %r52, 64 +%r58 = getelementptr i64, i64* %r1, i32 1 +%r59 = trunc i256 %r56 to i64 +store i64 %r59, i64* %r58 +%r60 = lshr i256 %r56, 64 +%r62 = getelementptr i64, i64* %r1, i32 2 +%r63 = trunc i256 %r60 to i64 +store i64 %r63, i64* %r62 +%r64 = lshr i256 %r60, 64 +%r66 = getelementptr i64, i64* %r1, i32 3 +%r67 = trunc i256 %r64 to i64 +store i64 %r67, i64* %r66 +%r68 = load i64, i64* %r4 +%r69 = zext i64 %r68 to i128 +%r71 = getelementptr i64, i64* %r4, i32 1 +%r72 = load i64, i64* %r71 +%r73 = zext i64 %r72 to i128 +%r74 = shl i128 %r73, 64 +%r75 = or i128 %r69, %r74 +%r76 = zext i128 %r75 to i192 +%r78 = getelementptr i64, i64* %r4, i32 2 +%r79 = load i64, i64* %r78 +%r80 = zext i64 %r79 to i192 +%r81 = shl i192 %r80, 128 +%r82 = or i192 %r76, %r81 +%r83 = zext i192 %r82 to i256 +%r85 = getelementptr i64, i64* %r4, i32 3 +%r86 = load i64, i64* %r85 +%r87 = zext i64 %r86 to i256 +%r88 = shl i256 %r87, 192 +%r89 = or i256 %r83, %r88 +%r90 = zext i256 %r89 to i320 +%r91 = sub i320 %r51, %r90 +%r92 = lshr i320 %r91, 256 +%r93 = trunc i320 %r92 to i1 +br i1%r93, label %carry, label %nocarry +nocarry: +%r94 = trunc i320 %r91 to i256 +%r96 = getelementptr i64, i64* %r1, i32 0 +%r97 = trunc i256 %r94 to i64 +store i64 %r97, i64* %r96 +%r98 = lshr i256 %r94, 64 +%r100 = getelementptr i64, i64* %r1, i32 1 +%r101 = trunc i256 %r98 to i64 +store i64 %r101, i64* %r100 +%r102 = lshr i256 %r98, 64 +%r104 = getelementptr i64, i64* %r1, i32 2 +%r105 = trunc i256 %r102 to i64 +store i64 %r105, i64* %r104 +%r106 = lshr i256 %r102, 64 +%r108 = getelementptr i64, i64* %r1, i32 3 +%r109 = trunc i256 %r106 to i64 +store i64 %r109, i64* %r108 +ret void +carry: +ret void } -define void @mcl_fp_addNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_addNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1814,51 +2302,73 @@ define void @mcl_fp_addNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r17 = zext i64 %r16 to i192 %r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 -%r20 = load i64, i64* %r3 -%r21 = zext i64 %r20 to i128 -%r23 = getelementptr i64, i64* %r3, i32 1 -%r24 = load i64, i64* %r23 -%r25 = zext i64 %r24 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r21, %r26 -%r28 = zext i128 %r27 to i192 -%r30 = getelementptr i64, i64* %r3, i32 2 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r2, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = load i64, i64* %r3 +%r28 = zext i64 %r27 to i128 +%r30 = getelementptr i64, i64* %r3, i32 1 %r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i192 -%r33 = shl i192 %r32, 128 -%r34 = or i192 %r28, %r33 -%r35 = add i192 %r19, %r34 -%r36 = load i64, i64* %r4 -%r37 = zext i64 %r36 to i128 -%r39 = getelementptr i64, i64* %r4, i32 1 -%r40 = load i64, i64* %r39 -%r41 = zext i64 %r40 to i128 -%r42 = shl i128 %r41, 64 -%r43 = or i128 %r37, %r42 -%r44 = zext i128 %r43 to i192 -%r46 = getelementptr i64, i64* %r4, i32 2 -%r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i192 -%r49 = shl i192 %r48, 128 -%r50 = or i192 %r44, %r49 -%r51 = sub i192 %r35, %r50 -%r52 = lshr i192 %r51, 191 -%r53 = trunc i192 %r52 to i1 -%r54 = select i1 %r53, i192 %r35, i192 %r51 -%r55 = trunc i192 %r54 to i64 -%r57 = getelementptr i64, i64* %r1, i32 0 -store i64 %r55, i64* %r57 -%r58 = lshr i192 %r54, 64 -%r59 = trunc i192 %r58 to i64 -%r61 = getelementptr i64, i64* %r1, i32 1 -store i64 %r59, i64* %r61 -%r62 = lshr i192 %r58, 64 -%r63 = trunc i192 %r62 to i64 -%r65 = getelementptr i64, i64* %r1, i32 2 -store i64 %r63, i64* %r65 +%r32 = zext i64 %r31 to i128 +%r33 = shl i128 %r32, 64 +%r34 = or i128 %r28, %r33 +%r35 = zext i128 %r34 to i192 +%r37 = getelementptr i64, i64* %r3, i32 2 +%r38 = load i64, i64* %r37 +%r39 = zext i64 %r38 to i192 +%r40 = shl i192 %r39, 128 +%r41 = or i192 %r35, %r40 +%r42 = zext i192 %r41 to i256 +%r44 = getelementptr i64, i64* %r3, i32 3 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i256 +%r47 = shl i256 %r46, 192 +%r48 = or i256 %r42, %r47 +%r49 = add i256 %r26, %r48 +%r50 = load i64, i64* %r4 +%r51 = zext i64 %r50 to i128 +%r53 = getelementptr i64, i64* %r4, i32 1 +%r54 = load i64, i64* %r53 +%r55 = zext i64 %r54 to i128 +%r56 = shl i128 %r55, 64 +%r57 = or i128 %r51, %r56 +%r58 = zext i128 %r57 to i192 +%r60 = getelementptr i64, i64* %r4, i32 2 +%r61 = load i64, i64* %r60 +%r62 = zext i64 %r61 to i192 +%r63 = shl i192 %r62, 128 +%r64 = or i192 %r58, %r63 +%r65 = zext i192 %r64 to i256 +%r67 = getelementptr i64, i64* %r4, i32 3 +%r68 = load i64, i64* %r67 +%r69 = zext i64 %r68 to i256 +%r70 = shl i256 %r69, 192 +%r71 = or i256 %r65, %r70 +%r72 = sub i256 %r49, %r71 +%r73 = lshr i256 %r72, 255 +%r74 = trunc i256 %r73 to i1 +%r75 = select i1 %r74, i256 %r49, i256 %r72 +%r77 = getelementptr i64, i64* %r1, i32 0 +%r78 = trunc i256 %r75 to i64 +store i64 %r78, i64* %r77 +%r79 = lshr i256 %r75, 64 +%r81 = getelementptr i64, i64* %r1, i32 1 +%r82 = trunc i256 %r79 to i64 +store i64 %r82, i64* %r81 +%r83 = lshr i256 %r79, 64 +%r85 = getelementptr i64, i64* %r1, i32 2 +%r86 = trunc i256 %r83 to i64 +store i64 %r86, i64* %r85 +%r87 = lshr i256 %r83, 64 +%r89 = getelementptr i64, i64* %r1, i32 3 +%r90 = trunc i256 %r87 to i64 +store i64 %r90, i64* %r89 ret void } -define void @mcl_fp_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_sub4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1873,68 +2383,94 @@ define void @mcl_fp_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r17 = zext i64 %r16 to i192 %r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 -%r20 = load i64, i64* %r3 -%r21 = zext i64 %r20 to i128 -%r23 = getelementptr i64, i64* %r3, i32 1 -%r24 = load i64, i64* %r23 -%r25 = zext i64 %r24 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r21, %r26 -%r28 = zext i128 %r27 to i192 -%r30 = getelementptr i64, i64* %r3, i32 2 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r2, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = load i64, i64* %r3 +%r28 = zext i64 %r27 to i128 +%r30 = getelementptr i64, i64* %r3, i32 1 %r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i192 -%r33 = shl i192 %r32, 128 -%r34 = or i192 %r28, %r33 -%r35 = zext i192 %r19 to i256 -%r36 = zext i192 %r34 to i256 -%r37 = sub i256 %r35, %r36 -%r38 = trunc i256 %r37 to i192 -%r39 = lshr i256 %r37, 192 -%r40 = trunc i256 %r39 to i1 -%r41 = trunc i192 %r38 to i64 -%r43 = getelementptr i64, i64* %r1, i32 0 -store i64 %r41, i64* %r43 -%r44 = lshr i192 %r38, 64 -%r45 = trunc i192 %r44 to i64 -%r47 = getelementptr i64, i64* %r1, i32 1 -store i64 %r45, i64* %r47 -%r48 = lshr i192 %r44, 64 -%r49 = trunc i192 %r48 to i64 -%r51 = getelementptr i64, i64* %r1, i32 2 -store i64 %r49, i64* %r51 -br i1%r40, label %carry, label %nocarry +%r32 = zext i64 %r31 to i128 +%r33 = shl i128 %r32, 64 +%r34 = or i128 %r28, %r33 +%r35 = zext i128 %r34 to i192 +%r37 = getelementptr i64, i64* %r3, i32 2 +%r38 = load i64, i64* %r37 +%r39 = zext i64 %r38 to i192 +%r40 = shl i192 %r39, 128 +%r41 = or i192 %r35, %r40 +%r42 = zext i192 %r41 to i256 +%r44 = getelementptr i64, i64* %r3, i32 3 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i256 +%r47 = shl i256 %r46, 192 +%r48 = or i256 %r42, %r47 +%r49 = zext i256 %r26 to i320 +%r50 = zext i256 %r48 to i320 +%r51 = sub i320 %r49, %r50 +%r52 = trunc i320 %r51 to i256 +%r53 = lshr i320 %r51, 256 +%r54 = trunc i320 %r53 to i1 +%r56 = getelementptr i64, i64* %r1, i32 0 +%r57 = trunc i256 %r52 to i64 +store i64 %r57, i64* %r56 +%r58 = lshr i256 %r52, 64 +%r60 = getelementptr i64, i64* %r1, i32 1 +%r61 = trunc i256 %r58 to i64 +store i64 %r61, i64* %r60 +%r62 = lshr i256 %r58, 64 +%r64 = getelementptr i64, i64* %r1, i32 2 +%r65 = trunc i256 %r62 to i64 +store i64 %r65, i64* %r64 +%r66 = lshr i256 %r62, 64 +%r68 = getelementptr i64, i64* %r1, i32 3 +%r69 = trunc i256 %r66 to i64 +store i64 %r69, i64* %r68 +br i1%r54, label %carry, label %nocarry nocarry: ret void carry: -%r52 = load i64, i64* %r4 -%r53 = zext i64 %r52 to i128 -%r55 = getelementptr i64, i64* %r4, i32 1 -%r56 = load i64, i64* %r55 -%r57 = zext i64 %r56 to i128 -%r58 = shl i128 %r57, 64 -%r59 = or i128 %r53, %r58 -%r60 = zext i128 %r59 to i192 -%r62 = getelementptr i64, i64* %r4, i32 2 -%r63 = load i64, i64* %r62 -%r64 = zext i64 %r63 to i192 -%r65 = shl i192 %r64, 128 -%r66 = or i192 %r60, %r65 -%r67 = add i192 %r38, %r66 -%r68 = trunc i192 %r67 to i64 -%r70 = getelementptr i64, i64* %r1, i32 0 -store i64 %r68, i64* %r70 -%r71 = lshr i192 %r67, 64 -%r72 = trunc i192 %r71 to i64 -%r74 = getelementptr i64, i64* %r1, i32 1 -store i64 %r72, i64* %r74 -%r75 = lshr i192 %r71, 64 -%r76 = trunc i192 %r75 to i64 -%r78 = getelementptr i64, i64* %r1, i32 2 -store i64 %r76, i64* %r78 +%r70 = load i64, i64* %r4 +%r71 = zext i64 %r70 to i128 +%r73 = getelementptr i64, i64* %r4, i32 1 +%r74 = load i64, i64* %r73 +%r75 = zext i64 %r74 to i128 +%r76 = shl i128 %r75, 64 +%r77 = or i128 %r71, %r76 +%r78 = zext i128 %r77 to i192 +%r80 = getelementptr i64, i64* %r4, i32 2 +%r81 = load i64, i64* %r80 +%r82 = zext i64 %r81 to i192 +%r83 = shl i192 %r82, 128 +%r84 = or i192 %r78, %r83 +%r85 = zext i192 %r84 to i256 +%r87 = getelementptr i64, i64* %r4, i32 3 +%r88 = load i64, i64* %r87 +%r89 = zext i64 %r88 to i256 +%r90 = shl i256 %r89, 192 +%r91 = or i256 %r85, %r90 +%r92 = add i256 %r52, %r91 +%r94 = getelementptr i64, i64* %r1, i32 0 +%r95 = trunc i256 %r92 to i64 +store i64 %r95, i64* %r94 +%r96 = lshr i256 %r92, 64 +%r98 = getelementptr i64, i64* %r1, i32 1 +%r99 = trunc i256 %r96 to i64 +store i64 %r99, i64* %r98 +%r100 = lshr i256 %r96, 64 +%r102 = getelementptr i64, i64* %r1, i32 2 +%r103 = trunc i256 %r100 to i64 +store i64 %r103, i64* %r102 +%r104 = lshr i256 %r100, 64 +%r106 = getelementptr i64, i64* %r1, i32 3 +%r107 = trunc i256 %r104 to i64 +store i64 %r107, i64* %r106 ret void } -define void @mcl_fp_subNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_subNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -1949,51 +2485,73 @@ define void @mcl_fp_subNF3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r17 = zext i64 %r16 to i192 %r18 = shl i192 %r17, 128 %r19 = or i192 %r13, %r18 -%r20 = load i64, i64* %r3 -%r21 = zext i64 %r20 to i128 -%r23 = getelementptr i64, i64* %r3, i32 1 -%r24 = load i64, i64* %r23 -%r25 = zext i64 %r24 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r21, %r26 -%r28 = zext i128 %r27 to i192 -%r30 = getelementptr i64, i64* %r3, i32 2 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r2, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = load i64, i64* %r3 +%r28 = zext i64 %r27 to i128 +%r30 = getelementptr i64, i64* %r3, i32 1 %r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i192 -%r33 = shl i192 %r32, 128 -%r34 = or i192 %r28, %r33 -%r35 = sub i192 %r19, %r34 -%r36 = lshr i192 %r35, 191 -%r37 = trunc i192 %r36 to i1 -%r38 = load i64, i64* %r4 -%r39 = zext i64 %r38 to i128 -%r41 = getelementptr i64, i64* %r4, i32 1 -%r42 = load i64, i64* %r41 -%r43 = zext i64 %r42 to i128 -%r44 = shl i128 %r43, 64 -%r45 = or i128 %r39, %r44 -%r46 = zext i128 %r45 to i192 -%r48 = getelementptr i64, i64* %r4, i32 2 -%r49 = load i64, i64* %r48 -%r50 = zext i64 %r49 to i192 -%r51 = shl i192 %r50, 128 -%r52 = or i192 %r46, %r51 -%r54 = select i1 %r37, i192 %r52, i192 0 -%r55 = add i192 %r35, %r54 -%r56 = trunc i192 %r55 to i64 -%r58 = getelementptr i64, i64* %r1, i32 0 -store i64 %r56, i64* %r58 -%r59 = lshr i192 %r55, 64 -%r60 = trunc i192 %r59 to i64 -%r62 = getelementptr i64, i64* %r1, i32 1 -store i64 %r60, i64* %r62 -%r63 = lshr i192 %r59, 64 -%r64 = trunc i192 %r63 to i64 -%r66 = getelementptr i64, i64* %r1, i32 2 -store i64 %r64, i64* %r66 +%r32 = zext i64 %r31 to i128 +%r33 = shl i128 %r32, 64 +%r34 = or i128 %r28, %r33 +%r35 = zext i128 %r34 to i192 +%r37 = getelementptr i64, i64* %r3, i32 2 +%r38 = load i64, i64* %r37 +%r39 = zext i64 %r38 to i192 +%r40 = shl i192 %r39, 128 +%r41 = or i192 %r35, %r40 +%r42 = zext i192 %r41 to i256 +%r44 = getelementptr i64, i64* %r3, i32 3 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i256 +%r47 = shl i256 %r46, 192 +%r48 = or i256 %r42, %r47 +%r49 = sub i256 %r26, %r48 +%r50 = lshr i256 %r49, 255 +%r51 = trunc i256 %r50 to i1 +%r52 = load i64, i64* %r4 +%r53 = zext i64 %r52 to i128 +%r55 = getelementptr i64, i64* %r4, i32 1 +%r56 = load i64, i64* %r55 +%r57 = zext i64 %r56 to i128 +%r58 = shl i128 %r57, 64 +%r59 = or i128 %r53, %r58 +%r60 = zext i128 %r59 to i192 +%r62 = getelementptr i64, i64* %r4, i32 2 +%r63 = load i64, i64* %r62 +%r64 = zext i64 %r63 to i192 +%r65 = shl i192 %r64, 128 +%r66 = or i192 %r60, %r65 +%r67 = zext i192 %r66 to i256 +%r69 = getelementptr i64, i64* %r4, i32 3 +%r70 = load i64, i64* %r69 +%r71 = zext i64 %r70 to i256 +%r72 = shl i256 %r71, 192 +%r73 = or i256 %r67, %r72 +%r75 = select i1 %r51, i256 %r73, i256 0 +%r76 = add i256 %r49, %r75 +%r78 = getelementptr i64, i64* %r1, i32 0 +%r79 = trunc i256 %r76 to i64 +store i64 %r79, i64* %r78 +%r80 = lshr i256 %r76, 64 +%r82 = getelementptr i64, i64* %r1, i32 1 +%r83 = trunc i256 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i256 %r80, 64 +%r86 = getelementptr i64, i64* %r1, i32 2 +%r87 = trunc i256 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i256 %r84, 64 +%r90 = getelementptr i64, i64* %r1, i32 3 +%r91 = trunc i256 %r88 to i64 +store i64 %r91, i64* %r90 ret void } -define void @mcl_fpDbl_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_add4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -2026,88 +2584,126 @@ define void @mcl_fpDbl_add3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r38 = zext i64 %r37 to i384 %r39 = shl i384 %r38, 320 %r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 +%r41 = zext i384 %r40 to i448 +%r43 = getelementptr i64, i64* %r2, i32 6 +%r44 = load i64, i64* %r43 +%r45 = zext i64 %r44 to i448 +%r46 = shl i448 %r45, 384 +%r47 = or i448 %r41, %r46 +%r48 = zext i448 %r47 to i512 +%r50 = getelementptr i64, i64* %r2, i32 7 +%r51 = load i64, i64* %r50 +%r52 = zext i64 %r51 to i512 +%r53 = shl i512 %r52, 448 +%r54 = or i512 %r48, %r53 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 %r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = zext i384 %r40 to i448 -%r78 = zext i384 %r76 to i448 -%r79 = add i448 %r77, %r78 -%r80 = trunc i448 %r79 to i192 -%r81 = trunc i192 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 0 -store i64 %r81, i64* %r83 -%r84 = lshr i192 %r80, 64 -%r85 = trunc i192 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 1 -store i64 %r85, i64* %r87 -%r88 = lshr i192 %r84, 64 -%r89 = trunc i192 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 2 -store i64 %r89, i64* %r91 -%r92 = lshr i448 %r79, 192 -%r93 = trunc i448 %r92 to i256 -%r94 = load i64, i64* %r4 -%r95 = zext i64 %r94 to i128 -%r97 = getelementptr i64, i64* %r4, i32 1 -%r98 = load i64, i64* %r97 -%r99 = zext i64 %r98 to i128 -%r100 = shl i128 %r99, 64 -%r101 = or i128 %r95, %r100 -%r102 = zext i128 %r101 to i192 -%r104 = getelementptr i64, i64* %r4, i32 2 -%r105 = load i64, i64* %r104 -%r106 = zext i64 %r105 to i192 -%r107 = shl i192 %r106, 128 -%r108 = or i192 %r102, %r107 -%r109 = zext i192 %r108 to i256 -%r110 = sub i256 %r93, %r109 -%r111 = lshr i256 %r110, 192 -%r112 = trunc i256 %r111 to i1 -%r113 = select i1 %r112, i256 %r93, i256 %r110 -%r114 = trunc i256 %r113 to i192 -%r116 = getelementptr i64, i64* %r1, i32 3 -%r117 = trunc i192 %r114 to i64 -%r119 = getelementptr i64, i64* %r116, i32 0 -store i64 %r117, i64* %r119 -%r120 = lshr i192 %r114, 64 -%r121 = trunc i192 %r120 to i64 -%r123 = getelementptr i64, i64* %r116, i32 1 -store i64 %r121, i64* %r123 -%r124 = lshr i192 %r120, 64 -%r125 = trunc i192 %r124 to i64 -%r127 = getelementptr i64, i64* %r116, i32 2 -store i64 %r125, i64* %r127 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 +%r80 = load i64, i64* %r79 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 +%r87 = load i64, i64* %r86 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 +%r94 = load i64, i64* %r93 +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 +%r101 = load i64, i64* %r100 +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = zext i512 %r54 to i576 +%r106 = zext i512 %r104 to i576 +%r107 = add i576 %r105, %r106 +%r108 = trunc i576 %r107 to i256 +%r110 = getelementptr i64, i64* %r1, i32 0 +%r111 = trunc i256 %r108 to i64 +store i64 %r111, i64* %r110 +%r112 = lshr i256 %r108, 64 +%r114 = getelementptr i64, i64* %r1, i32 1 +%r115 = trunc i256 %r112 to i64 +store i64 %r115, i64* %r114 +%r116 = lshr i256 %r112, 64 +%r118 = getelementptr i64, i64* %r1, i32 2 +%r119 = trunc i256 %r116 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i256 %r116, 64 +%r122 = getelementptr i64, i64* %r1, i32 3 +%r123 = trunc i256 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i576 %r107, 256 +%r125 = trunc i576 %r124 to i320 +%r126 = load i64, i64* %r4 +%r127 = zext i64 %r126 to i128 +%r129 = getelementptr i64, i64* %r4, i32 1 +%r130 = load i64, i64* %r129 +%r131 = zext i64 %r130 to i128 +%r132 = shl i128 %r131, 64 +%r133 = or i128 %r127, %r132 +%r134 = zext i128 %r133 to i192 +%r136 = getelementptr i64, i64* %r4, i32 2 +%r137 = load i64, i64* %r136 +%r138 = zext i64 %r137 to i192 +%r139 = shl i192 %r138, 128 +%r140 = or i192 %r134, %r139 +%r141 = zext i192 %r140 to i256 +%r143 = getelementptr i64, i64* %r4, i32 3 +%r144 = load i64, i64* %r143 +%r145 = zext i64 %r144 to i256 +%r146 = shl i256 %r145, 192 +%r147 = or i256 %r141, %r146 +%r148 = zext i256 %r147 to i320 +%r149 = sub i320 %r125, %r148 +%r150 = lshr i320 %r149, 256 +%r151 = trunc i320 %r150 to i1 +%r152 = select i1 %r151, i320 %r125, i320 %r149 +%r153 = trunc i320 %r152 to i256 +%r155 = getelementptr i64, i64* %r1, i32 4 +%r157 = getelementptr i64, i64* %r155, i32 0 +%r158 = trunc i256 %r153 to i64 +store i64 %r158, i64* %r157 +%r159 = lshr i256 %r153, 64 +%r161 = getelementptr i64, i64* %r155, i32 1 +%r162 = trunc i256 %r159 to i64 +store i64 %r162, i64* %r161 +%r163 = lshr i256 %r159, 64 +%r165 = getelementptr i64, i64* %r155, i32 2 +%r166 = trunc i256 %r163 to i64 +store i64 %r166, i64* %r165 +%r167 = lshr i256 %r163, 64 +%r169 = getelementptr i64, i64* %r155, i32 3 +%r170 = trunc i256 %r167 to i64 +store i64 %r170, i64* %r169 ret void } -define void @mcl_fpDbl_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_sub4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -2140,86 +2736,124 @@ define void @mcl_fpDbl_sub3L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r38 = zext i64 %r37 to i384 %r39 = shl i384 %r38, 320 %r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 +%r41 = zext i384 %r40 to i448 +%r43 = getelementptr i64, i64* %r2, i32 6 +%r44 = load i64, i64* %r43 +%r45 = zext i64 %r44 to i448 +%r46 = shl i448 %r45, 384 +%r47 = or i448 %r41, %r46 +%r48 = zext i448 %r47 to i512 +%r50 = getelementptr i64, i64* %r2, i32 7 +%r51 = load i64, i64* %r50 +%r52 = zext i64 %r51 to i512 +%r53 = shl i512 %r52, 448 +%r54 = or i512 %r48, %r53 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 +%r66 = load i64, i64* %r65 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = zext i384 %r40 to i448 -%r78 = zext i384 %r76 to i448 -%r79 = sub i448 %r77, %r78 -%r80 = trunc i448 %r79 to i192 -%r81 = trunc i192 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 0 -store i64 %r81, i64* %r83 -%r84 = lshr i192 %r80, 64 -%r85 = trunc i192 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 1 -store i64 %r85, i64* %r87 -%r88 = lshr i192 %r84, 64 -%r89 = trunc i192 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 2 -store i64 %r89, i64* %r91 -%r92 = lshr i448 %r79, 192 -%r93 = trunc i448 %r92 to i192 -%r94 = lshr i448 %r79, 384 -%r95 = trunc i448 %r94 to i1 -%r96 = load i64, i64* %r4 -%r97 = zext i64 %r96 to i128 -%r99 = getelementptr i64, i64* %r4, i32 1 -%r100 = load i64, i64* %r99 -%r101 = zext i64 %r100 to i128 -%r102 = shl i128 %r101, 64 -%r103 = or i128 %r97, %r102 -%r104 = zext i128 %r103 to i192 -%r106 = getelementptr i64, i64* %r4, i32 2 -%r107 = load i64, i64* %r106 -%r108 = zext i64 %r107 to i192 -%r109 = shl i192 %r108, 128 -%r110 = or i192 %r104, %r109 -%r112 = select i1 %r95, i192 %r110, i192 0 -%r113 = add i192 %r93, %r112 -%r115 = getelementptr i64, i64* %r1, i32 3 -%r116 = trunc i192 %r113 to i64 -%r118 = getelementptr i64, i64* %r115, i32 0 -store i64 %r116, i64* %r118 -%r119 = lshr i192 %r113, 64 -%r120 = trunc i192 %r119 to i64 -%r122 = getelementptr i64, i64* %r115, i32 1 -store i64 %r120, i64* %r122 -%r123 = lshr i192 %r119, 64 -%r124 = trunc i192 %r123 to i64 -%r126 = getelementptr i64, i64* %r115, i32 2 -store i64 %r124, i64* %r126 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 +%r80 = load i64, i64* %r79 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 +%r87 = load i64, i64* %r86 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 +%r94 = load i64, i64* %r93 +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 +%r101 = load i64, i64* %r100 +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = zext i512 %r54 to i576 +%r106 = zext i512 %r104 to i576 +%r107 = sub i576 %r105, %r106 +%r108 = trunc i576 %r107 to i256 +%r110 = getelementptr i64, i64* %r1, i32 0 +%r111 = trunc i256 %r108 to i64 +store i64 %r111, i64* %r110 +%r112 = lshr i256 %r108, 64 +%r114 = getelementptr i64, i64* %r1, i32 1 +%r115 = trunc i256 %r112 to i64 +store i64 %r115, i64* %r114 +%r116 = lshr i256 %r112, 64 +%r118 = getelementptr i64, i64* %r1, i32 2 +%r119 = trunc i256 %r116 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i256 %r116, 64 +%r122 = getelementptr i64, i64* %r1, i32 3 +%r123 = trunc i256 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i576 %r107, 256 +%r125 = trunc i576 %r124 to i256 +%r126 = lshr i576 %r107, 512 +%r127 = trunc i576 %r126 to i1 +%r128 = load i64, i64* %r4 +%r129 = zext i64 %r128 to i128 +%r131 = getelementptr i64, i64* %r4, i32 1 +%r132 = load i64, i64* %r131 +%r133 = zext i64 %r132 to i128 +%r134 = shl i128 %r133, 64 +%r135 = or i128 %r129, %r134 +%r136 = zext i128 %r135 to i192 +%r138 = getelementptr i64, i64* %r4, i32 2 +%r139 = load i64, i64* %r138 +%r140 = zext i64 %r139 to i192 +%r141 = shl i192 %r140, 128 +%r142 = or i192 %r136, %r141 +%r143 = zext i192 %r142 to i256 +%r145 = getelementptr i64, i64* %r4, i32 3 +%r146 = load i64, i64* %r145 +%r147 = zext i64 %r146 to i256 +%r148 = shl i256 %r147, 192 +%r149 = or i256 %r143, %r148 +%r151 = select i1 %r127, i256 %r149, i256 0 +%r152 = add i256 %r125, %r151 +%r154 = getelementptr i64, i64* %r1, i32 4 +%r156 = getelementptr i64, i64* %r154, i32 0 +%r157 = trunc i256 %r152 to i64 +store i64 %r157, i64* %r156 +%r158 = lshr i256 %r152, 64 +%r160 = getelementptr i64, i64* %r154, i32 1 +%r161 = trunc i256 %r158 to i64 +store i64 %r161, i64* %r160 +%r162 = lshr i256 %r158, 64 +%r164 = getelementptr i64, i64* %r154, i32 2 +%r165 = trunc i256 %r162 to i64 +store i64 %r165, i64* %r164 +%r166 = lshr i256 %r162, 64 +%r168 = getelementptr i64, i64* %r154, i32 3 +%r169 = trunc i256 %r166 to i64 +store i64 %r169, i64* %r168 ret void } -define i320 @mulPv256x64(i64* noalias %r2, i64 %r3) +define i448 @mulPv384x64(i64* noalias %r2, i64 %r3) { %r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) %r6 = trunc i128 %r5 to i64 @@ -2233,328 +2867,486 @@ define i320 @mulPv256x64(i64* noalias %r2, i64 %r3) %r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) %r18 = trunc i128 %r17 to i64 %r19 = call i64 @extractHigh64(i128 %r17) -%r20 = zext i64 %r6 to i128 -%r21 = zext i64 %r10 to i128 -%r22 = shl i128 %r21, 64 -%r23 = or i128 %r20, %r22 -%r24 = zext i128 %r23 to i192 -%r25 = zext i64 %r14 to i192 -%r26 = shl i192 %r25, 128 -%r27 = or i192 %r24, %r26 -%r28 = zext i192 %r27 to i256 -%r29 = zext i64 %r18 to i256 -%r30 = shl i256 %r29, 192 -%r31 = or i256 %r28, %r30 -%r32 = zext i64 %r7 to i128 -%r33 = zext i64 %r11 to i128 -%r34 = shl i128 %r33, 64 -%r35 = or i128 %r32, %r34 -%r36 = zext i128 %r35 to i192 -%r37 = zext i64 %r15 to i192 -%r38 = shl i192 %r37, 128 -%r39 = or i192 %r36, %r38 -%r40 = zext i192 %r39 to i256 -%r41 = zext i64 %r19 to i256 -%r42 = shl i256 %r41, 192 -%r43 = or i256 %r40, %r42 -%r44 = zext i256 %r31 to i320 -%r45 = zext i256 %r43 to i320 -%r46 = shl i320 %r45, 64 -%r47 = add i320 %r44, %r46 -ret i320 %r47 +%r21 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 4) +%r22 = trunc i128 %r21 to i64 +%r23 = call i64 @extractHigh64(i128 %r21) +%r25 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 5) +%r26 = trunc i128 %r25 to i64 +%r27 = call i64 @extractHigh64(i128 %r25) +%r28 = zext i64 %r6 to i128 +%r29 = zext i64 %r10 to i128 +%r30 = shl i128 %r29, 64 +%r31 = or i128 %r28, %r30 +%r32 = zext i128 %r31 to i192 +%r33 = zext i64 %r14 to i192 +%r34 = shl i192 %r33, 128 +%r35 = or i192 %r32, %r34 +%r36 = zext i192 %r35 to i256 +%r37 = zext i64 %r18 to i256 +%r38 = shl i256 %r37, 192 +%r39 = or i256 %r36, %r38 +%r40 = zext i256 %r39 to i320 +%r41 = zext i64 %r22 to i320 +%r42 = shl i320 %r41, 256 +%r43 = or i320 %r40, %r42 +%r44 = zext i320 %r43 to i384 +%r45 = zext i64 %r26 to i384 +%r46 = shl i384 %r45, 320 +%r47 = or i384 %r44, %r46 +%r48 = zext i64 %r7 to i128 +%r49 = zext i64 %r11 to i128 +%r50 = shl i128 %r49, 64 +%r51 = or i128 %r48, %r50 +%r52 = zext i128 %r51 to i192 +%r53 = zext i64 %r15 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r52, %r54 +%r56 = zext i192 %r55 to i256 +%r57 = zext i64 %r19 to i256 +%r58 = shl i256 %r57, 192 +%r59 = or i256 %r56, %r58 +%r60 = zext i256 %r59 to i320 +%r61 = zext i64 %r23 to i320 +%r62 = shl i320 %r61, 256 +%r63 = or i320 %r60, %r62 +%r64 = zext i320 %r63 to i384 +%r65 = zext i64 %r27 to i384 +%r66 = shl i384 %r65, 320 +%r67 = or i384 %r64, %r66 +%r68 = zext i384 %r47 to i448 +%r69 = zext i384 %r67 to i448 +%r70 = shl i448 %r69, 64 +%r71 = add i448 %r68, %r70 +ret i448 %r71 } -define void @mcl_fp_mulUnitPre4L(i64* noalias %r1, i64* noalias %r2, i64 %r3) +define void @mcl_fp_mulUnitPre6L(i64* noalias %r1, i64* noalias %r2, i64 %r3) { -%r4 = call i320 @mulPv256x64(i64* %r2, i64 %r3) -%r5 = trunc i320 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i320 %r4, 64 -%r9 = trunc i320 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i320 %r8, 64 -%r13 = trunc i320 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i320 %r12, 64 -%r17 = trunc i320 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i320 %r16, 64 -%r21 = trunc i320 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 +%r4 = call i448 @mulPv384x64(i64* %r2, i64 %r3) +%r6 = getelementptr i64, i64* %r1, i32 0 +%r7 = trunc i448 %r4 to i64 +store i64 %r7, i64* %r6 +%r8 = lshr i448 %r4, 64 +%r10 = getelementptr i64, i64* %r1, i32 1 +%r11 = trunc i448 %r8 to i64 +store i64 %r11, i64* %r10 +%r12 = lshr i448 %r8, 64 +%r14 = getelementptr i64, i64* %r1, i32 2 +%r15 = trunc i448 %r12 to i64 +store i64 %r15, i64* %r14 +%r16 = lshr i448 %r12, 64 +%r18 = getelementptr i64, i64* %r1, i32 3 +%r19 = trunc i448 %r16 to i64 +store i64 %r19, i64* %r18 +%r20 = lshr i448 %r16, 64 +%r22 = getelementptr i64, i64* %r1, i32 4 +%r23 = trunc i448 %r20 to i64 +store i64 %r23, i64* %r22 +%r24 = lshr i448 %r20, 64 +%r26 = getelementptr i64, i64* %r1, i32 5 +%r27 = trunc i448 %r24 to i64 +store i64 %r27, i64* %r26 +%r28 = lshr i448 %r24, 64 +%r30 = getelementptr i64, i64* %r1, i32 6 +%r31 = trunc i448 %r28 to i64 +store i64 %r31, i64* %r30 ret void } -define void @mcl_fpDbl_mulPre4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fpDbl_mulPre6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r4 = load i64, i64* %r3 -%r5 = call i320 @mulPv256x64(i64* %r2, i64 %r4) -%r6 = trunc i320 %r5 to i64 +%r5 = call i448 @mulPv384x64(i64* %r2, i64 %r4) +%r6 = trunc i448 %r5 to i64 store i64 %r6, i64* %r1 -%r7 = lshr i320 %r5, 64 +%r7 = lshr i448 %r5, 64 %r9 = getelementptr i64, i64* %r3, i32 1 %r10 = load i64, i64* %r9 -%r11 = call i320 @mulPv256x64(i64* %r2, i64 %r10) -%r12 = add i320 %r7, %r11 -%r13 = trunc i320 %r12 to i64 +%r11 = call i448 @mulPv384x64(i64* %r2, i64 %r10) +%r12 = add i448 %r7, %r11 +%r13 = trunc i448 %r12 to i64 %r15 = getelementptr i64, i64* %r1, i32 1 store i64 %r13, i64* %r15 -%r16 = lshr i320 %r12, 64 +%r16 = lshr i448 %r12, 64 %r18 = getelementptr i64, i64* %r3, i32 2 %r19 = load i64, i64* %r18 -%r20 = call i320 @mulPv256x64(i64* %r2, i64 %r19) -%r21 = add i320 %r16, %r20 -%r22 = trunc i320 %r21 to i64 +%r20 = call i448 @mulPv384x64(i64* %r2, i64 %r19) +%r21 = add i448 %r16, %r20 +%r22 = trunc i448 %r21 to i64 %r24 = getelementptr i64, i64* %r1, i32 2 store i64 %r22, i64* %r24 -%r25 = lshr i320 %r21, 64 +%r25 = lshr i448 %r21, 64 %r27 = getelementptr i64, i64* %r3, i32 3 %r28 = load i64, i64* %r27 -%r29 = call i320 @mulPv256x64(i64* %r2, i64 %r28) -%r30 = add i320 %r25, %r29 -%r32 = getelementptr i64, i64* %r1, i32 3 -%r33 = trunc i320 %r30 to i64 -%r35 = getelementptr i64, i64* %r32, i32 0 -store i64 %r33, i64* %r35 -%r36 = lshr i320 %r30, 64 -%r37 = trunc i320 %r36 to i64 -%r39 = getelementptr i64, i64* %r32, i32 1 -store i64 %r37, i64* %r39 -%r40 = lshr i320 %r36, 64 -%r41 = trunc i320 %r40 to i64 -%r43 = getelementptr i64, i64* %r32, i32 2 -store i64 %r41, i64* %r43 -%r44 = lshr i320 %r40, 64 -%r45 = trunc i320 %r44 to i64 -%r47 = getelementptr i64, i64* %r32, i32 3 -store i64 %r45, i64* %r47 -%r48 = lshr i320 %r44, 64 -%r49 = trunc i320 %r48 to i64 -%r51 = getelementptr i64, i64* %r32, i32 4 -store i64 %r49, i64* %r51 +%r29 = call i448 @mulPv384x64(i64* %r2, i64 %r28) +%r30 = add i448 %r25, %r29 +%r31 = trunc i448 %r30 to i64 +%r33 = getelementptr i64, i64* %r1, i32 3 +store i64 %r31, i64* %r33 +%r34 = lshr i448 %r30, 64 +%r36 = getelementptr i64, i64* %r3, i32 4 +%r37 = load i64, i64* %r36 +%r38 = call i448 @mulPv384x64(i64* %r2, i64 %r37) +%r39 = add i448 %r34, %r38 +%r40 = trunc i448 %r39 to i64 +%r42 = getelementptr i64, i64* %r1, i32 4 +store i64 %r40, i64* %r42 +%r43 = lshr i448 %r39, 64 +%r45 = getelementptr i64, i64* %r3, i32 5 +%r46 = load i64, i64* %r45 +%r47 = call i448 @mulPv384x64(i64* %r2, i64 %r46) +%r48 = add i448 %r43, %r47 +%r50 = getelementptr i64, i64* %r1, i32 5 +%r52 = getelementptr i64, i64* %r50, i32 0 +%r53 = trunc i448 %r48 to i64 +store i64 %r53, i64* %r52 +%r54 = lshr i448 %r48, 64 +%r56 = getelementptr i64, i64* %r50, i32 1 +%r57 = trunc i448 %r54 to i64 +store i64 %r57, i64* %r56 +%r58 = lshr i448 %r54, 64 +%r60 = getelementptr i64, i64* %r50, i32 2 +%r61 = trunc i448 %r58 to i64 +store i64 %r61, i64* %r60 +%r62 = lshr i448 %r58, 64 +%r64 = getelementptr i64, i64* %r50, i32 3 +%r65 = trunc i448 %r62 to i64 +store i64 %r65, i64* %r64 +%r66 = lshr i448 %r62, 64 +%r68 = getelementptr i64, i64* %r50, i32 4 +%r69 = trunc i448 %r66 to i64 +store i64 %r69, i64* %r68 +%r70 = lshr i448 %r66, 64 +%r72 = getelementptr i64, i64* %r50, i32 5 +%r73 = trunc i448 %r70 to i64 +store i64 %r73, i64* %r72 +%r74 = lshr i448 %r70, 64 +%r76 = getelementptr i64, i64* %r50, i32 6 +%r77 = trunc i448 %r74 to i64 +store i64 %r77, i64* %r76 ret void } -define void @mcl_fpDbl_sqrPre4L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fpDbl_sqrPre6L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 -%r4 = call i320 @mulPv256x64(i64* %r2, i64 %r3) -%r5 = trunc i320 %r4 to i64 +%r4 = call i448 @mulPv384x64(i64* %r2, i64 %r3) +%r5 = trunc i448 %r4 to i64 store i64 %r5, i64* %r1 -%r6 = lshr i320 %r4, 64 +%r6 = lshr i448 %r4, 64 %r8 = getelementptr i64, i64* %r2, i32 1 %r9 = load i64, i64* %r8 -%r10 = call i320 @mulPv256x64(i64* %r2, i64 %r9) -%r11 = add i320 %r6, %r10 -%r12 = trunc i320 %r11 to i64 +%r10 = call i448 @mulPv384x64(i64* %r2, i64 %r9) +%r11 = add i448 %r6, %r10 +%r12 = trunc i448 %r11 to i64 %r14 = getelementptr i64, i64* %r1, i32 1 store i64 %r12, i64* %r14 -%r15 = lshr i320 %r11, 64 +%r15 = lshr i448 %r11, 64 %r17 = getelementptr i64, i64* %r2, i32 2 %r18 = load i64, i64* %r17 -%r19 = call i320 @mulPv256x64(i64* %r2, i64 %r18) -%r20 = add i320 %r15, %r19 -%r21 = trunc i320 %r20 to i64 +%r19 = call i448 @mulPv384x64(i64* %r2, i64 %r18) +%r20 = add i448 %r15, %r19 +%r21 = trunc i448 %r20 to i64 %r23 = getelementptr i64, i64* %r1, i32 2 store i64 %r21, i64* %r23 -%r24 = lshr i320 %r20, 64 +%r24 = lshr i448 %r20, 64 %r26 = getelementptr i64, i64* %r2, i32 3 %r27 = load i64, i64* %r26 -%r28 = call i320 @mulPv256x64(i64* %r2, i64 %r27) -%r29 = add i320 %r24, %r28 -%r31 = getelementptr i64, i64* %r1, i32 3 -%r32 = trunc i320 %r29 to i64 -%r34 = getelementptr i64, i64* %r31, i32 0 -store i64 %r32, i64* %r34 -%r35 = lshr i320 %r29, 64 -%r36 = trunc i320 %r35 to i64 -%r38 = getelementptr i64, i64* %r31, i32 1 -store i64 %r36, i64* %r38 -%r39 = lshr i320 %r35, 64 -%r40 = trunc i320 %r39 to i64 -%r42 = getelementptr i64, i64* %r31, i32 2 -store i64 %r40, i64* %r42 -%r43 = lshr i320 %r39, 64 -%r44 = trunc i320 %r43 to i64 -%r46 = getelementptr i64, i64* %r31, i32 3 -store i64 %r44, i64* %r46 -%r47 = lshr i320 %r43, 64 -%r48 = trunc i320 %r47 to i64 -%r50 = getelementptr i64, i64* %r31, i32 4 -store i64 %r48, i64* %r50 +%r28 = call i448 @mulPv384x64(i64* %r2, i64 %r27) +%r29 = add i448 %r24, %r28 +%r30 = trunc i448 %r29 to i64 +%r32 = getelementptr i64, i64* %r1, i32 3 +store i64 %r30, i64* %r32 +%r33 = lshr i448 %r29, 64 +%r35 = getelementptr i64, i64* %r2, i32 4 +%r36 = load i64, i64* %r35 +%r37 = call i448 @mulPv384x64(i64* %r2, i64 %r36) +%r38 = add i448 %r33, %r37 +%r39 = trunc i448 %r38 to i64 +%r41 = getelementptr i64, i64* %r1, i32 4 +store i64 %r39, i64* %r41 +%r42 = lshr i448 %r38, 64 +%r44 = getelementptr i64, i64* %r2, i32 5 +%r45 = load i64, i64* %r44 +%r46 = call i448 @mulPv384x64(i64* %r2, i64 %r45) +%r47 = add i448 %r42, %r46 +%r49 = getelementptr i64, i64* %r1, i32 5 +%r51 = getelementptr i64, i64* %r49, i32 0 +%r52 = trunc i448 %r47 to i64 +store i64 %r52, i64* %r51 +%r53 = lshr i448 %r47, 64 +%r55 = getelementptr i64, i64* %r49, i32 1 +%r56 = trunc i448 %r53 to i64 +store i64 %r56, i64* %r55 +%r57 = lshr i448 %r53, 64 +%r59 = getelementptr i64, i64* %r49, i32 2 +%r60 = trunc i448 %r57 to i64 +store i64 %r60, i64* %r59 +%r61 = lshr i448 %r57, 64 +%r63 = getelementptr i64, i64* %r49, i32 3 +%r64 = trunc i448 %r61 to i64 +store i64 %r64, i64* %r63 +%r65 = lshr i448 %r61, 64 +%r67 = getelementptr i64, i64* %r49, i32 4 +%r68 = trunc i448 %r65 to i64 +store i64 %r68, i64* %r67 +%r69 = lshr i448 %r65, 64 +%r71 = getelementptr i64, i64* %r49, i32 5 +%r72 = trunc i448 %r69 to i64 +store i64 %r72, i64* %r71 +%r73 = lshr i448 %r69, 64 +%r75 = getelementptr i64, i64* %r49, i32 6 +%r76 = trunc i448 %r73 to i64 +store i64 %r76, i64* %r75 ret void } -define void @mcl_fp_mont4L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_mont6L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r9 = getelementptr i64, i64* %r3, i32 0 %r10 = load i64, i64* %r9 -%r11 = call i320 @mulPv256x64(i64* %r2, i64 %r10) -%r12 = zext i320 %r11 to i384 -%r13 = trunc i320 %r11 to i64 +%r11 = call i448 @mulPv384x64(i64* %r2, i64 %r10) +%r12 = zext i448 %r11 to i512 +%r13 = trunc i448 %r11 to i64 %r14 = mul i64 %r13, %r7 -%r15 = call i320 @mulPv256x64(i64* %r4, i64 %r14) -%r16 = zext i320 %r15 to i384 -%r17 = add i384 %r12, %r16 -%r18 = lshr i384 %r17, 64 +%r15 = call i448 @mulPv384x64(i64* %r4, i64 %r14) +%r16 = zext i448 %r15 to i512 +%r17 = add i512 %r12, %r16 +%r18 = lshr i512 %r17, 64 %r20 = getelementptr i64, i64* %r3, i32 1 %r21 = load i64, i64* %r20 -%r22 = call i320 @mulPv256x64(i64* %r2, i64 %r21) -%r23 = zext i320 %r22 to i384 -%r24 = add i384 %r18, %r23 -%r25 = trunc i384 %r24 to i64 +%r22 = call i448 @mulPv384x64(i64* %r2, i64 %r21) +%r23 = zext i448 %r22 to i512 +%r24 = add i512 %r18, %r23 +%r25 = trunc i512 %r24 to i64 %r26 = mul i64 %r25, %r7 -%r27 = call i320 @mulPv256x64(i64* %r4, i64 %r26) -%r28 = zext i320 %r27 to i384 -%r29 = add i384 %r24, %r28 -%r30 = lshr i384 %r29, 64 +%r27 = call i448 @mulPv384x64(i64* %r4, i64 %r26) +%r28 = zext i448 %r27 to i512 +%r29 = add i512 %r24, %r28 +%r30 = lshr i512 %r29, 64 %r32 = getelementptr i64, i64* %r3, i32 2 %r33 = load i64, i64* %r32 -%r34 = call i320 @mulPv256x64(i64* %r2, i64 %r33) -%r35 = zext i320 %r34 to i384 -%r36 = add i384 %r30, %r35 -%r37 = trunc i384 %r36 to i64 +%r34 = call i448 @mulPv384x64(i64* %r2, i64 %r33) +%r35 = zext i448 %r34 to i512 +%r36 = add i512 %r30, %r35 +%r37 = trunc i512 %r36 to i64 %r38 = mul i64 %r37, %r7 -%r39 = call i320 @mulPv256x64(i64* %r4, i64 %r38) -%r40 = zext i320 %r39 to i384 -%r41 = add i384 %r36, %r40 -%r42 = lshr i384 %r41, 64 +%r39 = call i448 @mulPv384x64(i64* %r4, i64 %r38) +%r40 = zext i448 %r39 to i512 +%r41 = add i512 %r36, %r40 +%r42 = lshr i512 %r41, 64 %r44 = getelementptr i64, i64* %r3, i32 3 %r45 = load i64, i64* %r44 -%r46 = call i320 @mulPv256x64(i64* %r2, i64 %r45) -%r47 = zext i320 %r46 to i384 -%r48 = add i384 %r42, %r47 -%r49 = trunc i384 %r48 to i64 +%r46 = call i448 @mulPv384x64(i64* %r2, i64 %r45) +%r47 = zext i448 %r46 to i512 +%r48 = add i512 %r42, %r47 +%r49 = trunc i512 %r48 to i64 %r50 = mul i64 %r49, %r7 -%r51 = call i320 @mulPv256x64(i64* %r4, i64 %r50) -%r52 = zext i320 %r51 to i384 -%r53 = add i384 %r48, %r52 -%r54 = lshr i384 %r53, 64 -%r55 = trunc i384 %r54 to i320 -%r56 = load i64, i64* %r4 -%r57 = zext i64 %r56 to i128 -%r59 = getelementptr i64, i64* %r4, i32 1 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i128 -%r62 = shl i128 %r61, 64 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i192 -%r66 = getelementptr i64, i64* %r4, i32 2 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i192 -%r69 = shl i192 %r68, 128 -%r70 = or i192 %r64, %r69 -%r71 = zext i192 %r70 to i256 -%r73 = getelementptr i64, i64* %r4, i32 3 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i256 -%r76 = shl i256 %r75, 192 -%r77 = or i256 %r71, %r76 -%r78 = zext i256 %r77 to i320 -%r79 = sub i320 %r55, %r78 -%r80 = lshr i320 %r79, 256 -%r81 = trunc i320 %r80 to i1 -%r82 = select i1 %r81, i320 %r55, i320 %r79 -%r83 = trunc i320 %r82 to i256 -%r84 = trunc i256 %r83 to i64 -%r86 = getelementptr i64, i64* %r1, i32 0 -store i64 %r84, i64* %r86 -%r87 = lshr i256 %r83, 64 -%r88 = trunc i256 %r87 to i64 -%r90 = getelementptr i64, i64* %r1, i32 1 -store i64 %r88, i64* %r90 -%r91 = lshr i256 %r87, 64 -%r92 = trunc i256 %r91 to i64 -%r94 = getelementptr i64, i64* %r1, i32 2 -store i64 %r92, i64* %r94 -%r95 = lshr i256 %r91, 64 -%r96 = trunc i256 %r95 to i64 -%r98 = getelementptr i64, i64* %r1, i32 3 -store i64 %r96, i64* %r98 +%r51 = call i448 @mulPv384x64(i64* %r4, i64 %r50) +%r52 = zext i448 %r51 to i512 +%r53 = add i512 %r48, %r52 +%r54 = lshr i512 %r53, 64 +%r56 = getelementptr i64, i64* %r3, i32 4 +%r57 = load i64, i64* %r56 +%r58 = call i448 @mulPv384x64(i64* %r2, i64 %r57) +%r59 = zext i448 %r58 to i512 +%r60 = add i512 %r54, %r59 +%r61 = trunc i512 %r60 to i64 +%r62 = mul i64 %r61, %r7 +%r63 = call i448 @mulPv384x64(i64* %r4, i64 %r62) +%r64 = zext i448 %r63 to i512 +%r65 = add i512 %r60, %r64 +%r66 = lshr i512 %r65, 64 +%r68 = getelementptr i64, i64* %r3, i32 5 +%r69 = load i64, i64* %r68 +%r70 = call i448 @mulPv384x64(i64* %r2, i64 %r69) +%r71 = zext i448 %r70 to i512 +%r72 = add i512 %r66, %r71 +%r73 = trunc i512 %r72 to i64 +%r74 = mul i64 %r73, %r7 +%r75 = call i448 @mulPv384x64(i64* %r4, i64 %r74) +%r76 = zext i448 %r75 to i512 +%r77 = add i512 %r72, %r76 +%r78 = lshr i512 %r77, 64 +%r79 = trunc i512 %r78 to i448 +%r80 = load i64, i64* %r4 +%r81 = zext i64 %r80 to i128 +%r83 = getelementptr i64, i64* %r4, i32 1 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i128 +%r86 = shl i128 %r85, 64 +%r87 = or i128 %r81, %r86 +%r88 = zext i128 %r87 to i192 +%r90 = getelementptr i64, i64* %r4, i32 2 +%r91 = load i64, i64* %r90 +%r92 = zext i64 %r91 to i192 +%r93 = shl i192 %r92, 128 +%r94 = or i192 %r88, %r93 +%r95 = zext i192 %r94 to i256 +%r97 = getelementptr i64, i64* %r4, i32 3 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i256 +%r100 = shl i256 %r99, 192 +%r101 = or i256 %r95, %r100 +%r102 = zext i256 %r101 to i320 +%r104 = getelementptr i64, i64* %r4, i32 4 +%r105 = load i64, i64* %r104 +%r106 = zext i64 %r105 to i320 +%r107 = shl i320 %r106, 256 +%r108 = or i320 %r102, %r107 +%r109 = zext i320 %r108 to i384 +%r111 = getelementptr i64, i64* %r4, i32 5 +%r112 = load i64, i64* %r111 +%r113 = zext i64 %r112 to i384 +%r114 = shl i384 %r113, 320 +%r115 = or i384 %r109, %r114 +%r116 = zext i384 %r115 to i448 +%r117 = sub i448 %r79, %r116 +%r118 = lshr i448 %r117, 384 +%r119 = trunc i448 %r118 to i1 +%r120 = select i1 %r119, i448 %r79, i448 %r117 +%r121 = trunc i448 %r120 to i384 +%r123 = getelementptr i64, i64* %r1, i32 0 +%r124 = trunc i384 %r121 to i64 +store i64 %r124, i64* %r123 +%r125 = lshr i384 %r121, 64 +%r127 = getelementptr i64, i64* %r1, i32 1 +%r128 = trunc i384 %r125 to i64 +store i64 %r128, i64* %r127 +%r129 = lshr i384 %r125, 64 +%r131 = getelementptr i64, i64* %r1, i32 2 +%r132 = trunc i384 %r129 to i64 +store i64 %r132, i64* %r131 +%r133 = lshr i384 %r129, 64 +%r135 = getelementptr i64, i64* %r1, i32 3 +%r136 = trunc i384 %r133 to i64 +store i64 %r136, i64* %r135 +%r137 = lshr i384 %r133, 64 +%r139 = getelementptr i64, i64* %r1, i32 4 +%r140 = trunc i384 %r137 to i64 +store i64 %r140, i64* %r139 +%r141 = lshr i384 %r137, 64 +%r143 = getelementptr i64, i64* %r1, i32 5 +%r144 = trunc i384 %r141 to i64 +store i64 %r144, i64* %r143 ret void } -define void @mcl_fp_montNF4L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_montNF6L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r8 = load i64, i64* %r3 -%r9 = call i320 @mulPv256x64(i64* %r2, i64 %r8) -%r10 = trunc i320 %r9 to i64 +%r9 = call i448 @mulPv384x64(i64* %r2, i64 %r8) +%r10 = trunc i448 %r9 to i64 %r11 = mul i64 %r10, %r7 -%r12 = call i320 @mulPv256x64(i64* %r4, i64 %r11) -%r13 = add i320 %r9, %r12 -%r14 = lshr i320 %r13, 64 +%r12 = call i448 @mulPv384x64(i64* %r4, i64 %r11) +%r13 = add i448 %r9, %r12 +%r14 = lshr i448 %r13, 64 %r16 = getelementptr i64, i64* %r3, i32 1 %r17 = load i64, i64* %r16 -%r18 = call i320 @mulPv256x64(i64* %r2, i64 %r17) -%r19 = add i320 %r14, %r18 -%r20 = trunc i320 %r19 to i64 +%r18 = call i448 @mulPv384x64(i64* %r2, i64 %r17) +%r19 = add i448 %r14, %r18 +%r20 = trunc i448 %r19 to i64 %r21 = mul i64 %r20, %r7 -%r22 = call i320 @mulPv256x64(i64* %r4, i64 %r21) -%r23 = add i320 %r19, %r22 -%r24 = lshr i320 %r23, 64 +%r22 = call i448 @mulPv384x64(i64* %r4, i64 %r21) +%r23 = add i448 %r19, %r22 +%r24 = lshr i448 %r23, 64 %r26 = getelementptr i64, i64* %r3, i32 2 %r27 = load i64, i64* %r26 -%r28 = call i320 @mulPv256x64(i64* %r2, i64 %r27) -%r29 = add i320 %r24, %r28 -%r30 = trunc i320 %r29 to i64 +%r28 = call i448 @mulPv384x64(i64* %r2, i64 %r27) +%r29 = add i448 %r24, %r28 +%r30 = trunc i448 %r29 to i64 %r31 = mul i64 %r30, %r7 -%r32 = call i320 @mulPv256x64(i64* %r4, i64 %r31) -%r33 = add i320 %r29, %r32 -%r34 = lshr i320 %r33, 64 +%r32 = call i448 @mulPv384x64(i64* %r4, i64 %r31) +%r33 = add i448 %r29, %r32 +%r34 = lshr i448 %r33, 64 %r36 = getelementptr i64, i64* %r3, i32 3 %r37 = load i64, i64* %r36 -%r38 = call i320 @mulPv256x64(i64* %r2, i64 %r37) -%r39 = add i320 %r34, %r38 -%r40 = trunc i320 %r39 to i64 +%r38 = call i448 @mulPv384x64(i64* %r2, i64 %r37) +%r39 = add i448 %r34, %r38 +%r40 = trunc i448 %r39 to i64 %r41 = mul i64 %r40, %r7 -%r42 = call i320 @mulPv256x64(i64* %r4, i64 %r41) -%r43 = add i320 %r39, %r42 -%r44 = lshr i320 %r43, 64 -%r45 = trunc i320 %r44 to i256 -%r46 = load i64, i64* %r4 -%r47 = zext i64 %r46 to i128 -%r49 = getelementptr i64, i64* %r4, i32 1 -%r50 = load i64, i64* %r49 -%r51 = zext i64 %r50 to i128 -%r52 = shl i128 %r51, 64 -%r53 = or i128 %r47, %r52 -%r54 = zext i128 %r53 to i192 -%r56 = getelementptr i64, i64* %r4, i32 2 +%r42 = call i448 @mulPv384x64(i64* %r4, i64 %r41) +%r43 = add i448 %r39, %r42 +%r44 = lshr i448 %r43, 64 +%r46 = getelementptr i64, i64* %r3, i32 4 +%r47 = load i64, i64* %r46 +%r48 = call i448 @mulPv384x64(i64* %r2, i64 %r47) +%r49 = add i448 %r44, %r48 +%r50 = trunc i448 %r49 to i64 +%r51 = mul i64 %r50, %r7 +%r52 = call i448 @mulPv384x64(i64* %r4, i64 %r51) +%r53 = add i448 %r49, %r52 +%r54 = lshr i448 %r53, 64 +%r56 = getelementptr i64, i64* %r3, i32 5 %r57 = load i64, i64* %r56 -%r58 = zext i64 %r57 to i192 -%r59 = shl i192 %r58, 128 -%r60 = or i192 %r54, %r59 -%r61 = zext i192 %r60 to i256 -%r63 = getelementptr i64, i64* %r4, i32 3 -%r64 = load i64, i64* %r63 -%r65 = zext i64 %r64 to i256 -%r66 = shl i256 %r65, 192 -%r67 = or i256 %r61, %r66 -%r68 = sub i256 %r45, %r67 -%r69 = lshr i256 %r68, 255 -%r70 = trunc i256 %r69 to i1 -%r71 = select i1 %r70, i256 %r45, i256 %r68 -%r72 = trunc i256 %r71 to i64 -%r74 = getelementptr i64, i64* %r1, i32 0 -store i64 %r72, i64* %r74 -%r75 = lshr i256 %r71, 64 -%r76 = trunc i256 %r75 to i64 -%r78 = getelementptr i64, i64* %r1, i32 1 -store i64 %r76, i64* %r78 -%r79 = lshr i256 %r75, 64 -%r80 = trunc i256 %r79 to i64 -%r82 = getelementptr i64, i64* %r1, i32 2 -store i64 %r80, i64* %r82 -%r83 = lshr i256 %r79, 64 -%r84 = trunc i256 %r83 to i64 -%r86 = getelementptr i64, i64* %r1, i32 3 -store i64 %r84, i64* %r86 +%r58 = call i448 @mulPv384x64(i64* %r2, i64 %r57) +%r59 = add i448 %r54, %r58 +%r60 = trunc i448 %r59 to i64 +%r61 = mul i64 %r60, %r7 +%r62 = call i448 @mulPv384x64(i64* %r4, i64 %r61) +%r63 = add i448 %r59, %r62 +%r64 = lshr i448 %r63, 64 +%r65 = trunc i448 %r64 to i384 +%r66 = load i64, i64* %r4 +%r67 = zext i64 %r66 to i128 +%r69 = getelementptr i64, i64* %r4, i32 1 +%r70 = load i64, i64* %r69 +%r71 = zext i64 %r70 to i128 +%r72 = shl i128 %r71, 64 +%r73 = or i128 %r67, %r72 +%r74 = zext i128 %r73 to i192 +%r76 = getelementptr i64, i64* %r4, i32 2 +%r77 = load i64, i64* %r76 +%r78 = zext i64 %r77 to i192 +%r79 = shl i192 %r78, 128 +%r80 = or i192 %r74, %r79 +%r81 = zext i192 %r80 to i256 +%r83 = getelementptr i64, i64* %r4, i32 3 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i256 +%r86 = shl i256 %r85, 192 +%r87 = or i256 %r81, %r86 +%r88 = zext i256 %r87 to i320 +%r90 = getelementptr i64, i64* %r4, i32 4 +%r91 = load i64, i64* %r90 +%r92 = zext i64 %r91 to i320 +%r93 = shl i320 %r92, 256 +%r94 = or i320 %r88, %r93 +%r95 = zext i320 %r94 to i384 +%r97 = getelementptr i64, i64* %r4, i32 5 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i384 +%r100 = shl i384 %r99, 320 +%r101 = or i384 %r95, %r100 +%r102 = sub i384 %r65, %r101 +%r103 = lshr i384 %r102, 383 +%r104 = trunc i384 %r103 to i1 +%r105 = select i1 %r104, i384 %r65, i384 %r102 +%r107 = getelementptr i64, i64* %r1, i32 0 +%r108 = trunc i384 %r105 to i64 +store i64 %r108, i64* %r107 +%r109 = lshr i384 %r105, 64 +%r111 = getelementptr i64, i64* %r1, i32 1 +%r112 = trunc i384 %r109 to i64 +store i64 %r112, i64* %r111 +%r113 = lshr i384 %r109, 64 +%r115 = getelementptr i64, i64* %r1, i32 2 +%r116 = trunc i384 %r113 to i64 +store i64 %r116, i64* %r115 +%r117 = lshr i384 %r113, 64 +%r119 = getelementptr i64, i64* %r1, i32 3 +%r120 = trunc i384 %r117 to i64 +store i64 %r120, i64* %r119 +%r121 = lshr i384 %r117, 64 +%r123 = getelementptr i64, i64* %r1, i32 4 +%r124 = trunc i384 %r121 to i64 +store i64 %r124, i64* %r123 +%r125 = lshr i384 %r121, 64 +%r127 = getelementptr i64, i64* %r1, i32 5 +%r128 = trunc i384 %r125 to i64 +store i64 %r128, i64* %r127 ret void } -define void @mcl_fp_montRed4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fp_montRed6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r5 = getelementptr i64, i64* %r3, i32 -1 %r6 = load i64, i64* %r5 @@ -2577,165 +3369,506 @@ define void @mcl_fp_montRed4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r26 = zext i64 %r25 to i256 %r27 = shl i256 %r26, 192 %r28 = or i256 %r22, %r27 -%r29 = load i64, i64* %r2 -%r30 = zext i64 %r29 to i128 -%r32 = getelementptr i64, i64* %r2, i32 1 -%r33 = load i64, i64* %r32 -%r34 = zext i64 %r33 to i128 -%r35 = shl i128 %r34, 64 -%r36 = or i128 %r30, %r35 -%r37 = zext i128 %r36 to i192 -%r39 = getelementptr i64, i64* %r2, i32 2 -%r40 = load i64, i64* %r39 -%r41 = zext i64 %r40 to i192 -%r42 = shl i192 %r41, 128 -%r43 = or i192 %r37, %r42 -%r44 = zext i192 %r43 to i256 -%r46 = getelementptr i64, i64* %r2, i32 3 +%r29 = zext i256 %r28 to i320 +%r31 = getelementptr i64, i64* %r3, i32 4 +%r32 = load i64, i64* %r31 +%r33 = zext i64 %r32 to i320 +%r34 = shl i320 %r33, 256 +%r35 = or i320 %r29, %r34 +%r36 = zext i320 %r35 to i384 +%r38 = getelementptr i64, i64* %r3, i32 5 +%r39 = load i64, i64* %r38 +%r40 = zext i64 %r39 to i384 +%r41 = shl i384 %r40, 320 +%r42 = or i384 %r36, %r41 +%r43 = load i64, i64* %r2 +%r44 = zext i64 %r43 to i128 +%r46 = getelementptr i64, i64* %r2, i32 1 %r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i256 -%r49 = shl i256 %r48, 192 -%r50 = or i256 %r44, %r49 -%r51 = zext i256 %r50 to i320 -%r53 = getelementptr i64, i64* %r2, i32 4 +%r48 = zext i64 %r47 to i128 +%r49 = shl i128 %r48, 64 +%r50 = or i128 %r44, %r49 +%r51 = zext i128 %r50 to i192 +%r53 = getelementptr i64, i64* %r2, i32 2 %r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i320 -%r56 = shl i320 %r55, 256 -%r57 = or i320 %r51, %r56 -%r58 = zext i320 %r57 to i384 -%r60 = getelementptr i64, i64* %r2, i32 5 +%r55 = zext i64 %r54 to i192 +%r56 = shl i192 %r55, 128 +%r57 = or i192 %r51, %r56 +%r58 = zext i192 %r57 to i256 +%r60 = getelementptr i64, i64* %r2, i32 3 %r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i384 -%r63 = shl i384 %r62, 320 -%r64 = or i384 %r58, %r63 -%r65 = zext i384 %r64 to i448 -%r67 = getelementptr i64, i64* %r2, i32 6 +%r62 = zext i64 %r61 to i256 +%r63 = shl i256 %r62, 192 +%r64 = or i256 %r58, %r63 +%r65 = zext i256 %r64 to i320 +%r67 = getelementptr i64, i64* %r2, i32 4 %r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i448 -%r70 = shl i448 %r69, 384 -%r71 = or i448 %r65, %r70 -%r72 = zext i448 %r71 to i512 -%r74 = getelementptr i64, i64* %r2, i32 7 +%r69 = zext i64 %r68 to i320 +%r70 = shl i320 %r69, 256 +%r71 = or i320 %r65, %r70 +%r72 = zext i320 %r71 to i384 +%r74 = getelementptr i64, i64* %r2, i32 5 %r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i512 -%r77 = shl i512 %r76, 448 -%r78 = or i512 %r72, %r77 -%r79 = zext i512 %r78 to i576 -%r80 = trunc i576 %r79 to i64 -%r81 = mul i64 %r80, %r6 -%r82 = call i320 @mulPv256x64(i64* %r3, i64 %r81) -%r83 = zext i320 %r82 to i576 -%r84 = add i576 %r79, %r83 -%r85 = lshr i576 %r84, 64 -%r86 = trunc i576 %r85 to i512 -%r87 = trunc i512 %r86 to i64 -%r88 = mul i64 %r87, %r6 -%r89 = call i320 @mulPv256x64(i64* %r3, i64 %r88) -%r90 = zext i320 %r89 to i512 -%r91 = add i512 %r86, %r90 +%r76 = zext i64 %r75 to i384 +%r77 = shl i384 %r76, 320 +%r78 = or i384 %r72, %r77 +%r79 = trunc i384 %r78 to i64 +%r80 = mul i64 %r79, %r6 +%r81 = call i448 @mulPv384x64(i64* %r3, i64 %r80) +%r83 = getelementptr i64, i64* %r2, i32 6 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i448 +%r86 = shl i448 %r85, 384 +%r87 = zext i384 %r78 to i448 +%r88 = or i448 %r86, %r87 +%r89 = zext i448 %r88 to i512 +%r90 = zext i448 %r81 to i512 +%r91 = add i512 %r89, %r90 %r92 = lshr i512 %r91, 64 %r93 = trunc i512 %r92 to i448 -%r94 = trunc i448 %r93 to i64 -%r95 = mul i64 %r94, %r6 -%r96 = call i320 @mulPv256x64(i64* %r3, i64 %r95) -%r97 = zext i320 %r96 to i448 -%r98 = add i448 %r93, %r97 -%r99 = lshr i448 %r98, 64 -%r100 = trunc i448 %r99 to i384 -%r101 = trunc i384 %r100 to i64 -%r102 = mul i64 %r101, %r6 -%r103 = call i320 @mulPv256x64(i64* %r3, i64 %r102) -%r104 = zext i320 %r103 to i384 -%r105 = add i384 %r100, %r104 -%r106 = lshr i384 %r105, 64 -%r107 = trunc i384 %r106 to i320 -%r108 = zext i256 %r28 to i320 -%r109 = sub i320 %r107, %r108 -%r110 = lshr i320 %r109, 256 -%r111 = trunc i320 %r110 to i1 -%r112 = select i1 %r111, i320 %r107, i320 %r109 -%r113 = trunc i320 %r112 to i256 -%r114 = trunc i256 %r113 to i64 -%r116 = getelementptr i64, i64* %r1, i32 0 -store i64 %r114, i64* %r116 -%r117 = lshr i256 %r113, 64 -%r118 = trunc i256 %r117 to i64 -%r120 = getelementptr i64, i64* %r1, i32 1 -store i64 %r118, i64* %r120 -%r121 = lshr i256 %r117, 64 -%r122 = trunc i256 %r121 to i64 -%r124 = getelementptr i64, i64* %r1, i32 2 -store i64 %r122, i64* %r124 -%r125 = lshr i256 %r121, 64 -%r126 = trunc i256 %r125 to i64 -%r128 = getelementptr i64, i64* %r1, i32 3 -store i64 %r126, i64* %r128 -ret void -} -define i64 @mcl_fp_addPre4L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +%r94 = lshr i448 %r93, 384 +%r95 = trunc i448 %r94 to i64 +%r96 = trunc i448 %r93 to i384 +%r97 = trunc i384 %r96 to i64 +%r98 = mul i64 %r97, %r6 +%r99 = call i448 @mulPv384x64(i64* %r3, i64 %r98) +%r100 = zext i64 %r95 to i448 +%r101 = shl i448 %r100, 384 +%r102 = add i448 %r99, %r101 +%r104 = getelementptr i64, i64* %r2, i32 7 +%r105 = load i64, i64* %r104 +%r106 = zext i64 %r105 to i448 +%r107 = shl i448 %r106, 384 +%r108 = zext i384 %r96 to i448 +%r109 = or i448 %r107, %r108 +%r110 = zext i448 %r109 to i512 +%r111 = zext i448 %r102 to i512 +%r112 = add i512 %r110, %r111 +%r113 = lshr i512 %r112, 64 +%r114 = trunc i512 %r113 to i448 +%r115 = lshr i448 %r114, 384 +%r116 = trunc i448 %r115 to i64 +%r117 = trunc i448 %r114 to i384 +%r118 = trunc i384 %r117 to i64 +%r119 = mul i64 %r118, %r6 +%r120 = call i448 @mulPv384x64(i64* %r3, i64 %r119) +%r121 = zext i64 %r116 to i448 +%r122 = shl i448 %r121, 384 +%r123 = add i448 %r120, %r122 +%r125 = getelementptr i64, i64* %r2, i32 8 +%r126 = load i64, i64* %r125 +%r127 = zext i64 %r126 to i448 +%r128 = shl i448 %r127, 384 +%r129 = zext i384 %r117 to i448 +%r130 = or i448 %r128, %r129 +%r131 = zext i448 %r130 to i512 +%r132 = zext i448 %r123 to i512 +%r133 = add i512 %r131, %r132 +%r134 = lshr i512 %r133, 64 +%r135 = trunc i512 %r134 to i448 +%r136 = lshr i448 %r135, 384 +%r137 = trunc i448 %r136 to i64 +%r138 = trunc i448 %r135 to i384 +%r139 = trunc i384 %r138 to i64 +%r140 = mul i64 %r139, %r6 +%r141 = call i448 @mulPv384x64(i64* %r3, i64 %r140) +%r142 = zext i64 %r137 to i448 +%r143 = shl i448 %r142, 384 +%r144 = add i448 %r141, %r143 +%r146 = getelementptr i64, i64* %r2, i32 9 +%r147 = load i64, i64* %r146 +%r148 = zext i64 %r147 to i448 +%r149 = shl i448 %r148, 384 +%r150 = zext i384 %r138 to i448 +%r151 = or i448 %r149, %r150 +%r152 = zext i448 %r151 to i512 +%r153 = zext i448 %r144 to i512 +%r154 = add i512 %r152, %r153 +%r155 = lshr i512 %r154, 64 +%r156 = trunc i512 %r155 to i448 +%r157 = lshr i448 %r156, 384 +%r158 = trunc i448 %r157 to i64 +%r159 = trunc i448 %r156 to i384 +%r160 = trunc i384 %r159 to i64 +%r161 = mul i64 %r160, %r6 +%r162 = call i448 @mulPv384x64(i64* %r3, i64 %r161) +%r163 = zext i64 %r158 to i448 +%r164 = shl i448 %r163, 384 +%r165 = add i448 %r162, %r164 +%r167 = getelementptr i64, i64* %r2, i32 10 +%r168 = load i64, i64* %r167 +%r169 = zext i64 %r168 to i448 +%r170 = shl i448 %r169, 384 +%r171 = zext i384 %r159 to i448 +%r172 = or i448 %r170, %r171 +%r173 = zext i448 %r172 to i512 +%r174 = zext i448 %r165 to i512 +%r175 = add i512 %r173, %r174 +%r176 = lshr i512 %r175, 64 +%r177 = trunc i512 %r176 to i448 +%r178 = lshr i448 %r177, 384 +%r179 = trunc i448 %r178 to i64 +%r180 = trunc i448 %r177 to i384 +%r181 = trunc i384 %r180 to i64 +%r182 = mul i64 %r181, %r6 +%r183 = call i448 @mulPv384x64(i64* %r3, i64 %r182) +%r184 = zext i64 %r179 to i448 +%r185 = shl i448 %r184, 384 +%r186 = add i448 %r183, %r185 +%r188 = getelementptr i64, i64* %r2, i32 11 +%r189 = load i64, i64* %r188 +%r190 = zext i64 %r189 to i448 +%r191 = shl i448 %r190, 384 +%r192 = zext i384 %r180 to i448 +%r193 = or i448 %r191, %r192 +%r194 = zext i448 %r193 to i512 +%r195 = zext i448 %r186 to i512 +%r196 = add i512 %r194, %r195 +%r197 = lshr i512 %r196, 64 +%r198 = trunc i512 %r197 to i448 +%r199 = lshr i448 %r198, 384 +%r200 = trunc i448 %r199 to i64 +%r201 = trunc i448 %r198 to i384 +%r202 = zext i384 %r42 to i448 +%r203 = zext i384 %r201 to i448 +%r204 = sub i448 %r203, %r202 +%r205 = lshr i448 %r204, 384 +%r206 = trunc i448 %r205 to i1 +%r207 = select i1 %r206, i448 %r203, i448 %r204 +%r208 = trunc i448 %r207 to i384 +%r210 = getelementptr i64, i64* %r1, i32 0 +%r211 = trunc i384 %r208 to i64 +store i64 %r211, i64* %r210 +%r212 = lshr i384 %r208, 64 +%r214 = getelementptr i64, i64* %r1, i32 1 +%r215 = trunc i384 %r212 to i64 +store i64 %r215, i64* %r214 +%r216 = lshr i384 %r212, 64 +%r218 = getelementptr i64, i64* %r1, i32 2 +%r219 = trunc i384 %r216 to i64 +store i64 %r219, i64* %r218 +%r220 = lshr i384 %r216, 64 +%r222 = getelementptr i64, i64* %r1, i32 3 +%r223 = trunc i384 %r220 to i64 +store i64 %r223, i64* %r222 +%r224 = lshr i384 %r220, 64 +%r226 = getelementptr i64, i64* %r1, i32 4 +%r227 = trunc i384 %r224 to i64 +store i64 %r227, i64* %r226 +%r228 = lshr i384 %r224, 64 +%r230 = getelementptr i64, i64* %r1, i32 5 +%r231 = trunc i384 %r228 to i64 +store i64 %r231, i64* %r230 +ret void +} +define void @mcl_fp_montRedNF6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r28 = load i64, i64* %r4 -%r29 = zext i64 %r28 to i128 -%r31 = getelementptr i64, i64* %r4, i32 1 +%r5 = getelementptr i64, i64* %r3, i32 -1 +%r6 = load i64, i64* %r5 +%r7 = load i64, i64* %r3 +%r8 = zext i64 %r7 to i128 +%r10 = getelementptr i64, i64* %r3, i32 1 +%r11 = load i64, i64* %r10 +%r12 = zext i64 %r11 to i128 +%r13 = shl i128 %r12, 64 +%r14 = or i128 %r8, %r13 +%r15 = zext i128 %r14 to i192 +%r17 = getelementptr i64, i64* %r3, i32 2 +%r18 = load i64, i64* %r17 +%r19 = zext i64 %r18 to i192 +%r20 = shl i192 %r19, 128 +%r21 = or i192 %r15, %r20 +%r22 = zext i192 %r21 to i256 +%r24 = getelementptr i64, i64* %r3, i32 3 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i256 +%r27 = shl i256 %r26, 192 +%r28 = or i256 %r22, %r27 +%r29 = zext i256 %r28 to i320 +%r31 = getelementptr i64, i64* %r3, i32 4 %r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i128 -%r34 = shl i128 %r33, 64 -%r35 = or i128 %r29, %r34 -%r36 = zext i128 %r35 to i192 -%r38 = getelementptr i64, i64* %r4, i32 2 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i192 -%r41 = shl i192 %r40, 128 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i256 -%r45 = getelementptr i64, i64* %r4, i32 3 +%r33 = zext i64 %r32 to i320 +%r34 = shl i320 %r33, 256 +%r35 = or i320 %r29, %r34 +%r36 = zext i320 %r35 to i384 +%r38 = getelementptr i64, i64* %r3, i32 5 +%r39 = load i64, i64* %r38 +%r40 = zext i64 %r39 to i384 +%r41 = shl i384 %r40, 320 +%r42 = or i384 %r36, %r41 +%r43 = load i64, i64* %r2 +%r44 = zext i64 %r43 to i128 +%r46 = getelementptr i64, i64* %r2, i32 1 +%r47 = load i64, i64* %r46 +%r48 = zext i64 %r47 to i128 +%r49 = shl i128 %r48, 64 +%r50 = or i128 %r44, %r49 +%r51 = zext i128 %r50 to i192 +%r53 = getelementptr i64, i64* %r2, i32 2 +%r54 = load i64, i64* %r53 +%r55 = zext i64 %r54 to i192 +%r56 = shl i192 %r55, 128 +%r57 = or i192 %r51, %r56 +%r58 = zext i192 %r57 to i256 +%r60 = getelementptr i64, i64* %r2, i32 3 +%r61 = load i64, i64* %r60 +%r62 = zext i64 %r61 to i256 +%r63 = shl i256 %r62, 192 +%r64 = or i256 %r58, %r63 +%r65 = zext i256 %r64 to i320 +%r67 = getelementptr i64, i64* %r2, i32 4 +%r68 = load i64, i64* %r67 +%r69 = zext i64 %r68 to i320 +%r70 = shl i320 %r69, 256 +%r71 = or i320 %r65, %r70 +%r72 = zext i320 %r71 to i384 +%r74 = getelementptr i64, i64* %r2, i32 5 +%r75 = load i64, i64* %r74 +%r76 = zext i64 %r75 to i384 +%r77 = shl i384 %r76, 320 +%r78 = or i384 %r72, %r77 +%r79 = trunc i384 %r78 to i64 +%r80 = mul i64 %r79, %r6 +%r81 = call i448 @mulPv384x64(i64* %r3, i64 %r80) +%r83 = getelementptr i64, i64* %r2, i32 6 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i448 +%r86 = shl i448 %r85, 384 +%r87 = zext i384 %r78 to i448 +%r88 = or i448 %r86, %r87 +%r89 = zext i448 %r88 to i512 +%r90 = zext i448 %r81 to i512 +%r91 = add i512 %r89, %r90 +%r92 = lshr i512 %r91, 64 +%r93 = trunc i512 %r92 to i448 +%r94 = lshr i448 %r93, 384 +%r95 = trunc i448 %r94 to i64 +%r96 = trunc i448 %r93 to i384 +%r97 = trunc i384 %r96 to i64 +%r98 = mul i64 %r97, %r6 +%r99 = call i448 @mulPv384x64(i64* %r3, i64 %r98) +%r100 = zext i64 %r95 to i448 +%r101 = shl i448 %r100, 384 +%r102 = add i448 %r99, %r101 +%r104 = getelementptr i64, i64* %r2, i32 7 +%r105 = load i64, i64* %r104 +%r106 = zext i64 %r105 to i448 +%r107 = shl i448 %r106, 384 +%r108 = zext i384 %r96 to i448 +%r109 = or i448 %r107, %r108 +%r110 = zext i448 %r109 to i512 +%r111 = zext i448 %r102 to i512 +%r112 = add i512 %r110, %r111 +%r113 = lshr i512 %r112, 64 +%r114 = trunc i512 %r113 to i448 +%r115 = lshr i448 %r114, 384 +%r116 = trunc i448 %r115 to i64 +%r117 = trunc i448 %r114 to i384 +%r118 = trunc i384 %r117 to i64 +%r119 = mul i64 %r118, %r6 +%r120 = call i448 @mulPv384x64(i64* %r3, i64 %r119) +%r121 = zext i64 %r116 to i448 +%r122 = shl i448 %r121, 384 +%r123 = add i448 %r120, %r122 +%r125 = getelementptr i64, i64* %r2, i32 8 +%r126 = load i64, i64* %r125 +%r127 = zext i64 %r126 to i448 +%r128 = shl i448 %r127, 384 +%r129 = zext i384 %r117 to i448 +%r130 = or i448 %r128, %r129 +%r131 = zext i448 %r130 to i512 +%r132 = zext i448 %r123 to i512 +%r133 = add i512 %r131, %r132 +%r134 = lshr i512 %r133, 64 +%r135 = trunc i512 %r134 to i448 +%r136 = lshr i448 %r135, 384 +%r137 = trunc i448 %r136 to i64 +%r138 = trunc i448 %r135 to i384 +%r139 = trunc i384 %r138 to i64 +%r140 = mul i64 %r139, %r6 +%r141 = call i448 @mulPv384x64(i64* %r3, i64 %r140) +%r142 = zext i64 %r137 to i448 +%r143 = shl i448 %r142, 384 +%r144 = add i448 %r141, %r143 +%r146 = getelementptr i64, i64* %r2, i32 9 +%r147 = load i64, i64* %r146 +%r148 = zext i64 %r147 to i448 +%r149 = shl i448 %r148, 384 +%r150 = zext i384 %r138 to i448 +%r151 = or i448 %r149, %r150 +%r152 = zext i448 %r151 to i512 +%r153 = zext i448 %r144 to i512 +%r154 = add i512 %r152, %r153 +%r155 = lshr i512 %r154, 64 +%r156 = trunc i512 %r155 to i448 +%r157 = lshr i448 %r156, 384 +%r158 = trunc i448 %r157 to i64 +%r159 = trunc i448 %r156 to i384 +%r160 = trunc i384 %r159 to i64 +%r161 = mul i64 %r160, %r6 +%r162 = call i448 @mulPv384x64(i64* %r3, i64 %r161) +%r163 = zext i64 %r158 to i448 +%r164 = shl i448 %r163, 384 +%r165 = add i448 %r162, %r164 +%r167 = getelementptr i64, i64* %r2, i32 10 +%r168 = load i64, i64* %r167 +%r169 = zext i64 %r168 to i448 +%r170 = shl i448 %r169, 384 +%r171 = zext i384 %r159 to i448 +%r172 = or i448 %r170, %r171 +%r173 = zext i448 %r172 to i512 +%r174 = zext i448 %r165 to i512 +%r175 = add i512 %r173, %r174 +%r176 = lshr i512 %r175, 64 +%r177 = trunc i512 %r176 to i448 +%r178 = lshr i448 %r177, 384 +%r179 = trunc i448 %r178 to i64 +%r180 = trunc i448 %r177 to i384 +%r181 = trunc i384 %r180 to i64 +%r182 = mul i64 %r181, %r6 +%r183 = call i448 @mulPv384x64(i64* %r3, i64 %r182) +%r184 = zext i64 %r179 to i448 +%r185 = shl i448 %r184, 384 +%r186 = add i448 %r183, %r185 +%r188 = getelementptr i64, i64* %r2, i32 11 +%r189 = load i64, i64* %r188 +%r190 = zext i64 %r189 to i448 +%r191 = shl i448 %r190, 384 +%r192 = zext i384 %r180 to i448 +%r193 = or i448 %r191, %r192 +%r194 = zext i448 %r193 to i512 +%r195 = zext i448 %r186 to i512 +%r196 = add i512 %r194, %r195 +%r197 = lshr i512 %r196, 64 +%r198 = trunc i512 %r197 to i448 +%r199 = lshr i448 %r198, 384 +%r200 = trunc i448 %r199 to i64 +%r201 = trunc i448 %r198 to i384 +%r202 = sub i384 %r201, %r42 +%r203 = lshr i384 %r202, 383 +%r204 = trunc i384 %r203 to i1 +%r205 = select i1 %r204, i384 %r201, i384 %r202 +%r207 = getelementptr i64, i64* %r1, i32 0 +%r208 = trunc i384 %r205 to i64 +store i64 %r208, i64* %r207 +%r209 = lshr i384 %r205, 64 +%r211 = getelementptr i64, i64* %r1, i32 1 +%r212 = trunc i384 %r209 to i64 +store i64 %r212, i64* %r211 +%r213 = lshr i384 %r209, 64 +%r215 = getelementptr i64, i64* %r1, i32 2 +%r216 = trunc i384 %r213 to i64 +store i64 %r216, i64* %r215 +%r217 = lshr i384 %r213, 64 +%r219 = getelementptr i64, i64* %r1, i32 3 +%r220 = trunc i384 %r217 to i64 +store i64 %r220, i64* %r219 +%r221 = lshr i384 %r217, 64 +%r223 = getelementptr i64, i64* %r1, i32 4 +%r224 = trunc i384 %r221 to i64 +store i64 %r224, i64* %r223 +%r225 = lshr i384 %r221, 64 +%r227 = getelementptr i64, i64* %r1, i32 5 +%r228 = trunc i384 %r225 to i64 +store i64 %r228, i64* %r227 +ret void +} +define i64 @mcl_fp_addPre6L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +{ +%r5 = load i64, i64* %r3 +%r6 = zext i64 %r5 to i128 +%r8 = getelementptr i64, i64* %r3, i32 1 +%r9 = load i64, i64* %r8 +%r10 = zext i64 %r9 to i128 +%r11 = shl i128 %r10, 64 +%r12 = or i128 %r6, %r11 +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r3, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r3, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r3, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r3, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = zext i384 %r40 to i448 +%r42 = load i64, i64* %r4 +%r43 = zext i64 %r42 to i128 +%r45 = getelementptr i64, i64* %r4, i32 1 %r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i256 -%r48 = shl i256 %r47, 192 -%r49 = or i256 %r43, %r48 -%r50 = zext i256 %r49 to i320 -%r51 = add i320 %r27, %r50 -%r52 = trunc i320 %r51 to i256 -%r53 = trunc i256 %r52 to i64 -%r55 = getelementptr i64, i64* %r2, i32 0 -store i64 %r53, i64* %r55 -%r56 = lshr i256 %r52, 64 -%r57 = trunc i256 %r56 to i64 -%r59 = getelementptr i64, i64* %r2, i32 1 -store i64 %r57, i64* %r59 -%r60 = lshr i256 %r56, 64 -%r61 = trunc i256 %r60 to i64 -%r63 = getelementptr i64, i64* %r2, i32 2 -store i64 %r61, i64* %r63 -%r64 = lshr i256 %r60, 64 -%r65 = trunc i256 %r64 to i64 -%r67 = getelementptr i64, i64* %r2, i32 3 -store i64 %r65, i64* %r67 -%r68 = lshr i320 %r51, 256 -%r69 = trunc i320 %r68 to i64 -ret i64 %r69 +%r47 = zext i64 %r46 to i128 +%r48 = shl i128 %r47, 64 +%r49 = or i128 %r43, %r48 +%r50 = zext i128 %r49 to i192 +%r52 = getelementptr i64, i64* %r4, i32 2 +%r53 = load i64, i64* %r52 +%r54 = zext i64 %r53 to i192 +%r55 = shl i192 %r54, 128 +%r56 = or i192 %r50, %r55 +%r57 = zext i192 %r56 to i256 +%r59 = getelementptr i64, i64* %r4, i32 3 +%r60 = load i64, i64* %r59 +%r61 = zext i64 %r60 to i256 +%r62 = shl i256 %r61, 192 +%r63 = or i256 %r57, %r62 +%r64 = zext i256 %r63 to i320 +%r66 = getelementptr i64, i64* %r4, i32 4 +%r67 = load i64, i64* %r66 +%r68 = zext i64 %r67 to i320 +%r69 = shl i320 %r68, 256 +%r70 = or i320 %r64, %r69 +%r71 = zext i320 %r70 to i384 +%r73 = getelementptr i64, i64* %r4, i32 5 +%r74 = load i64, i64* %r73 +%r75 = zext i64 %r74 to i384 +%r76 = shl i384 %r75, 320 +%r77 = or i384 %r71, %r76 +%r78 = zext i384 %r77 to i448 +%r79 = add i448 %r41, %r78 +%r80 = trunc i448 %r79 to i384 +%r82 = getelementptr i64, i64* %r2, i32 0 +%r83 = trunc i384 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i384 %r80, 64 +%r86 = getelementptr i64, i64* %r2, i32 1 +%r87 = trunc i384 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i384 %r84, 64 +%r90 = getelementptr i64, i64* %r2, i32 2 +%r91 = trunc i384 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i384 %r88, 64 +%r94 = getelementptr i64, i64* %r2, i32 3 +%r95 = trunc i384 %r92 to i64 +store i64 %r95, i64* %r94 +%r96 = lshr i384 %r92, 64 +%r98 = getelementptr i64, i64* %r2, i32 4 +%r99 = trunc i384 %r96 to i64 +store i64 %r99, i64* %r98 +%r100 = lshr i384 %r96, 64 +%r102 = getelementptr i64, i64* %r2, i32 5 +%r103 = trunc i384 %r100 to i64 +store i64 %r103, i64* %r102 +%r104 = lshr i448 %r79, 384 +%r105 = trunc i448 %r104 to i64 +ret i64 %r105 } -define i64 @mcl_fp_subPre4L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_subPre6L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -2757,49 +3890,81 @@ define i64 @mcl_fp_subPre4L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r25 = shl i256 %r24, 192 %r26 = or i256 %r20, %r25 %r27 = zext i256 %r26 to i320 -%r28 = load i64, i64* %r4 -%r29 = zext i64 %r28 to i128 -%r31 = getelementptr i64, i64* %r4, i32 1 -%r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i128 -%r34 = shl i128 %r33, 64 -%r35 = or i128 %r29, %r34 -%r36 = zext i128 %r35 to i192 -%r38 = getelementptr i64, i64* %r4, i32 2 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i192 -%r41 = shl i192 %r40, 128 -%r42 = or i192 %r36, %r41 -%r43 = zext i192 %r42 to i256 -%r45 = getelementptr i64, i64* %r4, i32 3 +%r29 = getelementptr i64, i64* %r3, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r3, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = zext i384 %r40 to i448 +%r42 = load i64, i64* %r4 +%r43 = zext i64 %r42 to i128 +%r45 = getelementptr i64, i64* %r4, i32 1 %r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i256 -%r48 = shl i256 %r47, 192 -%r49 = or i256 %r43, %r48 -%r50 = zext i256 %r49 to i320 -%r51 = sub i320 %r27, %r50 -%r52 = trunc i320 %r51 to i256 -%r53 = trunc i256 %r52 to i64 -%r55 = getelementptr i64, i64* %r2, i32 0 -store i64 %r53, i64* %r55 -%r56 = lshr i256 %r52, 64 -%r57 = trunc i256 %r56 to i64 -%r59 = getelementptr i64, i64* %r2, i32 1 -store i64 %r57, i64* %r59 -%r60 = lshr i256 %r56, 64 -%r61 = trunc i256 %r60 to i64 -%r63 = getelementptr i64, i64* %r2, i32 2 -store i64 %r61, i64* %r63 -%r64 = lshr i256 %r60, 64 -%r65 = trunc i256 %r64 to i64 -%r67 = getelementptr i64, i64* %r2, i32 3 -store i64 %r65, i64* %r67 -%r68 = lshr i320 %r51, 256 -%r69 = trunc i320 %r68 to i64 -%r71 = and i64 %r69, 1 -ret i64 %r71 +%r47 = zext i64 %r46 to i128 +%r48 = shl i128 %r47, 64 +%r49 = or i128 %r43, %r48 +%r50 = zext i128 %r49 to i192 +%r52 = getelementptr i64, i64* %r4, i32 2 +%r53 = load i64, i64* %r52 +%r54 = zext i64 %r53 to i192 +%r55 = shl i192 %r54, 128 +%r56 = or i192 %r50, %r55 +%r57 = zext i192 %r56 to i256 +%r59 = getelementptr i64, i64* %r4, i32 3 +%r60 = load i64, i64* %r59 +%r61 = zext i64 %r60 to i256 +%r62 = shl i256 %r61, 192 +%r63 = or i256 %r57, %r62 +%r64 = zext i256 %r63 to i320 +%r66 = getelementptr i64, i64* %r4, i32 4 +%r67 = load i64, i64* %r66 +%r68 = zext i64 %r67 to i320 +%r69 = shl i320 %r68, 256 +%r70 = or i320 %r64, %r69 +%r71 = zext i320 %r70 to i384 +%r73 = getelementptr i64, i64* %r4, i32 5 +%r74 = load i64, i64* %r73 +%r75 = zext i64 %r74 to i384 +%r76 = shl i384 %r75, 320 +%r77 = or i384 %r71, %r76 +%r78 = zext i384 %r77 to i448 +%r79 = sub i448 %r41, %r78 +%r80 = trunc i448 %r79 to i384 +%r82 = getelementptr i64, i64* %r2, i32 0 +%r83 = trunc i384 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i384 %r80, 64 +%r86 = getelementptr i64, i64* %r2, i32 1 +%r87 = trunc i384 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i384 %r84, 64 +%r90 = getelementptr i64, i64* %r2, i32 2 +%r91 = trunc i384 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i384 %r88, 64 +%r94 = getelementptr i64, i64* %r2, i32 3 +%r95 = trunc i384 %r92 to i64 +store i64 %r95, i64* %r94 +%r96 = lshr i384 %r92, 64 +%r98 = getelementptr i64, i64* %r2, i32 4 +%r99 = trunc i384 %r96 to i64 +store i64 %r99, i64* %r98 +%r100 = lshr i384 %r96, 64 +%r102 = getelementptr i64, i64* %r2, i32 5 +%r103 = trunc i384 %r100 to i64 +store i64 %r103, i64* %r102 +%r105 = lshr i448 %r79, 384 +%r106 = trunc i448 %r105 to i64 +%r107 = and i64 %r106, 1 +ret i64 %r107 } -define void @mcl_fp_shr1_4L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fp_shr1_6L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 %r4 = zext i64 %r3 to i128 @@ -2820,129 +3985,45 @@ define void @mcl_fp_shr1_4L(i64* noalias %r1, i64* noalias %r2) %r22 = zext i64 %r21 to i256 %r23 = shl i256 %r22, 192 %r24 = or i256 %r18, %r23 -%r25 = lshr i256 %r24, 1 -%r26 = trunc i256 %r25 to i64 -%r28 = getelementptr i64, i64* %r1, i32 0 -store i64 %r26, i64* %r28 -%r29 = lshr i256 %r25, 64 -%r30 = trunc i256 %r29 to i64 -%r32 = getelementptr i64, i64* %r1, i32 1 -store i64 %r30, i64* %r32 -%r33 = lshr i256 %r29, 64 -%r34 = trunc i256 %r33 to i64 -%r36 = getelementptr i64, i64* %r1, i32 2 -store i64 %r34, i64* %r36 -%r37 = lshr i256 %r33, 64 -%r38 = trunc i256 %r37 to i64 -%r40 = getelementptr i64, i64* %r1, i32 3 -store i64 %r38, i64* %r40 -ret void -} -define void @mcl_fp_add4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = zext i256 %r26 to i320 -%r50 = zext i256 %r48 to i320 -%r51 = add i320 %r49, %r50 -%r52 = trunc i320 %r51 to i256 -%r53 = trunc i256 %r52 to i64 -%r55 = getelementptr i64, i64* %r1, i32 0 -store i64 %r53, i64* %r55 -%r56 = lshr i256 %r52, 64 -%r57 = trunc i256 %r56 to i64 -%r59 = getelementptr i64, i64* %r1, i32 1 -store i64 %r57, i64* %r59 -%r60 = lshr i256 %r56, 64 -%r61 = trunc i256 %r60 to i64 -%r63 = getelementptr i64, i64* %r1, i32 2 -store i64 %r61, i64* %r63 -%r64 = lshr i256 %r60, 64 -%r65 = trunc i256 %r64 to i64 -%r67 = getelementptr i64, i64* %r1, i32 3 -store i64 %r65, i64* %r67 -%r68 = load i64, i64* %r4 -%r69 = zext i64 %r68 to i128 -%r71 = getelementptr i64, i64* %r4, i32 1 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i128 -%r74 = shl i128 %r73, 64 -%r75 = or i128 %r69, %r74 -%r76 = zext i128 %r75 to i192 -%r78 = getelementptr i64, i64* %r4, i32 2 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i192 -%r81 = shl i192 %r80, 128 -%r82 = or i192 %r76, %r81 -%r83 = zext i192 %r82 to i256 -%r85 = getelementptr i64, i64* %r4, i32 3 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i256 -%r88 = shl i256 %r87, 192 -%r89 = or i256 %r83, %r88 -%r90 = zext i256 %r89 to i320 -%r91 = sub i320 %r51, %r90 -%r92 = lshr i320 %r91, 256 -%r93 = trunc i320 %r92 to i1 -br i1%r93, label %carry, label %nocarry -nocarry: -%r94 = trunc i320 %r91 to i256 -%r95 = trunc i256 %r94 to i64 -%r97 = getelementptr i64, i64* %r1, i32 0 -store i64 %r95, i64* %r97 -%r98 = lshr i256 %r94, 64 -%r99 = trunc i256 %r98 to i64 -%r101 = getelementptr i64, i64* %r1, i32 1 -store i64 %r99, i64* %r101 -%r102 = lshr i256 %r98, 64 -%r103 = trunc i256 %r102 to i64 -%r105 = getelementptr i64, i64* %r1, i32 2 -store i64 %r103, i64* %r105 -%r106 = lshr i256 %r102, 64 -%r107 = trunc i256 %r106 to i64 -%r109 = getelementptr i64, i64* %r1, i32 3 -store i64 %r107, i64* %r109 -ret void -carry: +%r25 = zext i256 %r24 to i320 +%r27 = getelementptr i64, i64* %r2, i32 4 +%r28 = load i64, i64* %r27 +%r29 = zext i64 %r28 to i320 +%r30 = shl i320 %r29, 256 +%r31 = or i320 %r25, %r30 +%r32 = zext i320 %r31 to i384 +%r34 = getelementptr i64, i64* %r2, i32 5 +%r35 = load i64, i64* %r34 +%r36 = zext i64 %r35 to i384 +%r37 = shl i384 %r36, 320 +%r38 = or i384 %r32, %r37 +%r39 = lshr i384 %r38, 1 +%r41 = getelementptr i64, i64* %r1, i32 0 +%r42 = trunc i384 %r39 to i64 +store i64 %r42, i64* %r41 +%r43 = lshr i384 %r39, 64 +%r45 = getelementptr i64, i64* %r1, i32 1 +%r46 = trunc i384 %r43 to i64 +store i64 %r46, i64* %r45 +%r47 = lshr i384 %r43, 64 +%r49 = getelementptr i64, i64* %r1, i32 2 +%r50 = trunc i384 %r47 to i64 +store i64 %r50, i64* %r49 +%r51 = lshr i384 %r47, 64 +%r53 = getelementptr i64, i64* %r1, i32 3 +%r54 = trunc i384 %r51 to i64 +store i64 %r54, i64* %r53 +%r55 = lshr i384 %r51, 64 +%r57 = getelementptr i64, i64* %r1, i32 4 +%r58 = trunc i384 %r55 to i64 +store i64 %r58, i64* %r57 +%r59 = lshr i384 %r55, 64 +%r61 = getelementptr i64, i64* %r1, i32 5 +%r62 = trunc i384 %r59 to i64 +store i64 %r62, i64* %r61 ret void } -define void @mcl_fp_addNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_add6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -2963,67 +4044,142 @@ define void @mcl_fp_addNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r24 = zext i64 %r23 to i256 %r25 = shl i256 %r24, 192 %r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r2, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r2, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 %r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = add i256 %r26, %r48 -%r50 = load i64, i64* %r4 -%r51 = zext i64 %r50 to i128 -%r53 = getelementptr i64, i64* %r4, i32 1 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i128 -%r56 = shl i128 %r55, 64 -%r57 = or i128 %r51, %r56 -%r58 = zext i128 %r57 to i192 -%r60 = getelementptr i64, i64* %r4, i32 2 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i192 -%r63 = shl i192 %r62, 128 -%r64 = or i192 %r58, %r63 -%r65 = zext i192 %r64 to i256 -%r67 = getelementptr i64, i64* %r4, i32 3 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i256 -%r70 = shl i256 %r69, 192 -%r71 = or i256 %r65, %r70 -%r72 = sub i256 %r49, %r71 -%r73 = lshr i256 %r72, 255 -%r74 = trunc i256 %r73 to i1 -%r75 = select i1 %r74, i256 %r49, i256 %r72 -%r76 = trunc i256 %r75 to i64 -%r78 = getelementptr i64, i64* %r1, i32 0 -store i64 %r76, i64* %r78 -%r79 = lshr i256 %r75, 64 -%r80 = trunc i256 %r79 to i64 -%r82 = getelementptr i64, i64* %r1, i32 1 -store i64 %r80, i64* %r82 -%r83 = lshr i256 %r79, 64 -%r84 = trunc i256 %r83 to i64 -%r86 = getelementptr i64, i64* %r1, i32 2 -store i64 %r84, i64* %r86 -%r87 = lshr i256 %r83, 64 -%r88 = trunc i256 %r87 to i64 -%r90 = getelementptr i64, i64* %r1, i32 3 -store i64 %r88, i64* %r90 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 +%r66 = load i64, i64* %r65 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 +%r73 = load i64, i64* %r72 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = zext i384 %r40 to i448 +%r78 = zext i384 %r76 to i448 +%r79 = add i448 %r77, %r78 +%r80 = trunc i448 %r79 to i384 +%r82 = getelementptr i64, i64* %r1, i32 0 +%r83 = trunc i384 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i384 %r80, 64 +%r86 = getelementptr i64, i64* %r1, i32 1 +%r87 = trunc i384 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i384 %r84, 64 +%r90 = getelementptr i64, i64* %r1, i32 2 +%r91 = trunc i384 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i384 %r88, 64 +%r94 = getelementptr i64, i64* %r1, i32 3 +%r95 = trunc i384 %r92 to i64 +store i64 %r95, i64* %r94 +%r96 = lshr i384 %r92, 64 +%r98 = getelementptr i64, i64* %r1, i32 4 +%r99 = trunc i384 %r96 to i64 +store i64 %r99, i64* %r98 +%r100 = lshr i384 %r96, 64 +%r102 = getelementptr i64, i64* %r1, i32 5 +%r103 = trunc i384 %r100 to i64 +store i64 %r103, i64* %r102 +%r104 = load i64, i64* %r4 +%r105 = zext i64 %r104 to i128 +%r107 = getelementptr i64, i64* %r4, i32 1 +%r108 = load i64, i64* %r107 +%r109 = zext i64 %r108 to i128 +%r110 = shl i128 %r109, 64 +%r111 = or i128 %r105, %r110 +%r112 = zext i128 %r111 to i192 +%r114 = getelementptr i64, i64* %r4, i32 2 +%r115 = load i64, i64* %r114 +%r116 = zext i64 %r115 to i192 +%r117 = shl i192 %r116, 128 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i256 +%r121 = getelementptr i64, i64* %r4, i32 3 +%r122 = load i64, i64* %r121 +%r123 = zext i64 %r122 to i256 +%r124 = shl i256 %r123, 192 +%r125 = or i256 %r119, %r124 +%r126 = zext i256 %r125 to i320 +%r128 = getelementptr i64, i64* %r4, i32 4 +%r129 = load i64, i64* %r128 +%r130 = zext i64 %r129 to i320 +%r131 = shl i320 %r130, 256 +%r132 = or i320 %r126, %r131 +%r133 = zext i320 %r132 to i384 +%r135 = getelementptr i64, i64* %r4, i32 5 +%r136 = load i64, i64* %r135 +%r137 = zext i64 %r136 to i384 +%r138 = shl i384 %r137, 320 +%r139 = or i384 %r133, %r138 +%r140 = zext i384 %r139 to i448 +%r141 = sub i448 %r79, %r140 +%r142 = lshr i448 %r141, 384 +%r143 = trunc i448 %r142 to i1 +br i1%r143, label %carry, label %nocarry +nocarry: +%r144 = trunc i448 %r141 to i384 +%r146 = getelementptr i64, i64* %r1, i32 0 +%r147 = trunc i384 %r144 to i64 +store i64 %r147, i64* %r146 +%r148 = lshr i384 %r144, 64 +%r150 = getelementptr i64, i64* %r1, i32 1 +%r151 = trunc i384 %r148 to i64 +store i64 %r151, i64* %r150 +%r152 = lshr i384 %r148, 64 +%r154 = getelementptr i64, i64* %r1, i32 2 +%r155 = trunc i384 %r152 to i64 +store i64 %r155, i64* %r154 +%r156 = lshr i384 %r152, 64 +%r158 = getelementptr i64, i64* %r1, i32 3 +%r159 = trunc i384 %r156 to i64 +store i64 %r159, i64* %r158 +%r160 = lshr i384 %r156, 64 +%r162 = getelementptr i64, i64* %r1, i32 4 +%r163 = trunc i384 %r160 to i64 +store i64 %r163, i64* %r162 +%r164 = lshr i384 %r160, 64 +%r166 = getelementptr i64, i64* %r1, i32 5 +%r167 = trunc i384 %r164 to i64 +store i64 %r167, i64* %r166 +ret void +carry: ret void } -define void @mcl_fp_sub4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_addNF6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -3044,169 +4200,111 @@ define void @mcl_fp_sub4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r24 = zext i64 %r23 to i256 %r25 = shl i256 %r24, 192 %r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = zext i256 %r26 to i320 -%r50 = zext i256 %r48 to i320 -%r51 = sub i320 %r49, %r50 -%r52 = trunc i320 %r51 to i256 -%r53 = lshr i320 %r51, 256 -%r54 = trunc i320 %r53 to i1 -%r55 = trunc i256 %r52 to i64 -%r57 = getelementptr i64, i64* %r1, i32 0 -store i64 %r55, i64* %r57 -%r58 = lshr i256 %r52, 64 -%r59 = trunc i256 %r58 to i64 -%r61 = getelementptr i64, i64* %r1, i32 1 -store i64 %r59, i64* %r61 -%r62 = lshr i256 %r58, 64 -%r63 = trunc i256 %r62 to i64 -%r65 = getelementptr i64, i64* %r1, i32 2 -store i64 %r63, i64* %r65 -%r66 = lshr i256 %r62, 64 -%r67 = trunc i256 %r66 to i64 -%r69 = getelementptr i64, i64* %r1, i32 3 -store i64 %r67, i64* %r69 -br i1%r54, label %carry, label %nocarry -nocarry: -ret void -carry: -%r70 = load i64, i64* %r4 -%r71 = zext i64 %r70 to i128 -%r73 = getelementptr i64, i64* %r4, i32 1 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i128 -%r76 = shl i128 %r75, 64 -%r77 = or i128 %r71, %r76 -%r78 = zext i128 %r77 to i192 -%r80 = getelementptr i64, i64* %r4, i32 2 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i192 -%r83 = shl i192 %r82, 128 -%r84 = or i192 %r78, %r83 -%r85 = zext i192 %r84 to i256 -%r87 = getelementptr i64, i64* %r4, i32 3 -%r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i256 -%r90 = shl i256 %r89, 192 -%r91 = or i256 %r85, %r90 -%r92 = add i256 %r52, %r91 -%r93 = trunc i256 %r92 to i64 -%r95 = getelementptr i64, i64* %r1, i32 0 -store i64 %r93, i64* %r95 -%r96 = lshr i256 %r92, 64 -%r97 = trunc i256 %r96 to i64 -%r99 = getelementptr i64, i64* %r1, i32 1 -store i64 %r97, i64* %r99 -%r100 = lshr i256 %r96, 64 -%r101 = trunc i256 %r100 to i64 -%r103 = getelementptr i64, i64* %r1, i32 2 -store i64 %r101, i64* %r103 -%r104 = lshr i256 %r100, 64 -%r105 = trunc i256 %r104 to i64 -%r107 = getelementptr i64, i64* %r1, i32 3 -store i64 %r105, i64* %r107 -ret void -} -define void @mcl_fp_subNF4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = load i64, i64* %r3 -%r28 = zext i64 %r27 to i128 -%r30 = getelementptr i64, i64* %r3, i32 1 -%r31 = load i64, i64* %r30 -%r32 = zext i64 %r31 to i128 -%r33 = shl i128 %r32, 64 -%r34 = or i128 %r28, %r33 -%r35 = zext i128 %r34 to i192 -%r37 = getelementptr i64, i64* %r3, i32 2 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i192 -%r40 = shl i192 %r39, 128 -%r41 = or i192 %r35, %r40 -%r42 = zext i192 %r41 to i256 -%r44 = getelementptr i64, i64* %r3, i32 3 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r2, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r2, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 %r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i256 -%r47 = shl i256 %r46, 192 -%r48 = or i256 %r42, %r47 -%r49 = sub i256 %r26, %r48 -%r50 = lshr i256 %r49, 255 -%r51 = trunc i256 %r50 to i1 -%r52 = load i64, i64* %r4 -%r53 = zext i64 %r52 to i128 -%r55 = getelementptr i64, i64* %r4, i32 1 -%r56 = load i64, i64* %r55 -%r57 = zext i64 %r56 to i128 -%r58 = shl i128 %r57, 64 -%r59 = or i128 %r53, %r58 -%r60 = zext i128 %r59 to i192 -%r62 = getelementptr i64, i64* %r4, i32 2 -%r63 = load i64, i64* %r62 -%r64 = zext i64 %r63 to i192 -%r65 = shl i192 %r64, 128 -%r66 = or i192 %r60, %r65 -%r67 = zext i192 %r66 to i256 -%r69 = getelementptr i64, i64* %r4, i32 3 -%r70 = load i64, i64* %r69 -%r71 = zext i64 %r70 to i256 -%r72 = shl i256 %r71, 192 -%r73 = or i256 %r67, %r72 -%r75 = select i1 %r51, i256 %r73, i256 0 -%r76 = add i256 %r49, %r75 -%r77 = trunc i256 %r76 to i64 -%r79 = getelementptr i64, i64* %r1, i32 0 -store i64 %r77, i64* %r79 -%r80 = lshr i256 %r76, 64 -%r81 = trunc i256 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 1 -store i64 %r81, i64* %r83 -%r84 = lshr i256 %r80, 64 -%r85 = trunc i256 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 2 -store i64 %r85, i64* %r87 -%r88 = lshr i256 %r84, 64 -%r89 = trunc i256 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 3 -store i64 %r89, i64* %r91 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 +%r66 = load i64, i64* %r65 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 +%r73 = load i64, i64* %r72 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = add i384 %r40, %r76 +%r78 = load i64, i64* %r4 +%r79 = zext i64 %r78 to i128 +%r81 = getelementptr i64, i64* %r4, i32 1 +%r82 = load i64, i64* %r81 +%r83 = zext i64 %r82 to i128 +%r84 = shl i128 %r83, 64 +%r85 = or i128 %r79, %r84 +%r86 = zext i128 %r85 to i192 +%r88 = getelementptr i64, i64* %r4, i32 2 +%r89 = load i64, i64* %r88 +%r90 = zext i64 %r89 to i192 +%r91 = shl i192 %r90, 128 +%r92 = or i192 %r86, %r91 +%r93 = zext i192 %r92 to i256 +%r95 = getelementptr i64, i64* %r4, i32 3 +%r96 = load i64, i64* %r95 +%r97 = zext i64 %r96 to i256 +%r98 = shl i256 %r97, 192 +%r99 = or i256 %r93, %r98 +%r100 = zext i256 %r99 to i320 +%r102 = getelementptr i64, i64* %r4, i32 4 +%r103 = load i64, i64* %r102 +%r104 = zext i64 %r103 to i320 +%r105 = shl i320 %r104, 256 +%r106 = or i320 %r100, %r105 +%r107 = zext i320 %r106 to i384 +%r109 = getelementptr i64, i64* %r4, i32 5 +%r110 = load i64, i64* %r109 +%r111 = zext i64 %r110 to i384 +%r112 = shl i384 %r111, 320 +%r113 = or i384 %r107, %r112 +%r114 = sub i384 %r77, %r113 +%r115 = lshr i384 %r114, 383 +%r116 = trunc i384 %r115 to i1 +%r117 = select i1 %r116, i384 %r77, i384 %r114 +%r119 = getelementptr i64, i64* %r1, i32 0 +%r120 = trunc i384 %r117 to i64 +store i64 %r120, i64* %r119 +%r121 = lshr i384 %r117, 64 +%r123 = getelementptr i64, i64* %r1, i32 1 +%r124 = trunc i384 %r121 to i64 +store i64 %r124, i64* %r123 +%r125 = lshr i384 %r121, 64 +%r127 = getelementptr i64, i64* %r1, i32 2 +%r128 = trunc i384 %r125 to i64 +store i64 %r128, i64* %r127 +%r129 = lshr i384 %r125, 64 +%r131 = getelementptr i64, i64* %r1, i32 3 +%r132 = trunc i384 %r129 to i64 +store i64 %r132, i64* %r131 +%r133 = lshr i384 %r129, 64 +%r135 = getelementptr i64, i64* %r1, i32 4 +%r136 = trunc i384 %r133 to i64 +store i64 %r136, i64* %r135 +%r137 = lshr i384 %r133, 64 +%r139 = getelementptr i64, i64* %r1, i32 5 +%r140 = trunc i384 %r137 to i64 +store i64 %r140, i64* %r139 ret void } -define void @mcl_fpDbl_add4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_sub6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -3239,8644 +4337,253 @@ define void @mcl_fpDbl_add4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r38 = zext i64 %r37 to i384 %r39 = shl i384 %r38, 320 %r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 %r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = zext i512 %r54 to i576 -%r106 = zext i512 %r104 to i576 -%r107 = add i576 %r105, %r106 -%r108 = trunc i576 %r107 to i256 -%r109 = trunc i256 %r108 to i64 -%r111 = getelementptr i64, i64* %r1, i32 0 -store i64 %r109, i64* %r111 -%r112 = lshr i256 %r108, 64 -%r113 = trunc i256 %r112 to i64 -%r115 = getelementptr i64, i64* %r1, i32 1 -store i64 %r113, i64* %r115 -%r116 = lshr i256 %r112, 64 -%r117 = trunc i256 %r116 to i64 -%r119 = getelementptr i64, i64* %r1, i32 2 -store i64 %r117, i64* %r119 -%r120 = lshr i256 %r116, 64 -%r121 = trunc i256 %r120 to i64 -%r123 = getelementptr i64, i64* %r1, i32 3 -store i64 %r121, i64* %r123 -%r124 = lshr i576 %r107, 256 -%r125 = trunc i576 %r124 to i320 -%r126 = load i64, i64* %r4 -%r127 = zext i64 %r126 to i128 -%r129 = getelementptr i64, i64* %r4, i32 1 -%r130 = load i64, i64* %r129 -%r131 = zext i64 %r130 to i128 -%r132 = shl i128 %r131, 64 -%r133 = or i128 %r127, %r132 -%r134 = zext i128 %r133 to i192 -%r136 = getelementptr i64, i64* %r4, i32 2 -%r137 = load i64, i64* %r136 -%r138 = zext i64 %r137 to i192 -%r139 = shl i192 %r138, 128 -%r140 = or i192 %r134, %r139 -%r141 = zext i192 %r140 to i256 -%r143 = getelementptr i64, i64* %r4, i32 3 -%r144 = load i64, i64* %r143 -%r145 = zext i64 %r144 to i256 -%r146 = shl i256 %r145, 192 -%r147 = or i256 %r141, %r146 -%r148 = zext i256 %r147 to i320 -%r149 = sub i320 %r125, %r148 -%r150 = lshr i320 %r149, 256 -%r151 = trunc i320 %r150 to i1 -%r152 = select i1 %r151, i320 %r125, i320 %r149 -%r153 = trunc i320 %r152 to i256 -%r155 = getelementptr i64, i64* %r1, i32 4 -%r156 = trunc i256 %r153 to i64 -%r158 = getelementptr i64, i64* %r155, i32 0 -store i64 %r156, i64* %r158 -%r159 = lshr i256 %r153, 64 -%r160 = trunc i256 %r159 to i64 -%r162 = getelementptr i64, i64* %r155, i32 1 -store i64 %r160, i64* %r162 -%r163 = lshr i256 %r159, 64 -%r164 = trunc i256 %r163 to i64 -%r166 = getelementptr i64, i64* %r155, i32 2 -store i64 %r164, i64* %r166 -%r167 = lshr i256 %r163, 64 -%r168 = trunc i256 %r167 to i64 -%r170 = getelementptr i64, i64* %r155, i32 3 -store i64 %r168, i64* %r170 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = zext i384 %r40 to i448 +%r78 = zext i384 %r76 to i448 +%r79 = sub i448 %r77, %r78 +%r80 = trunc i448 %r79 to i384 +%r81 = lshr i448 %r79, 384 +%r82 = trunc i448 %r81 to i1 +%r84 = getelementptr i64, i64* %r1, i32 0 +%r85 = trunc i384 %r80 to i64 +store i64 %r85, i64* %r84 +%r86 = lshr i384 %r80, 64 +%r88 = getelementptr i64, i64* %r1, i32 1 +%r89 = trunc i384 %r86 to i64 +store i64 %r89, i64* %r88 +%r90 = lshr i384 %r86, 64 +%r92 = getelementptr i64, i64* %r1, i32 2 +%r93 = trunc i384 %r90 to i64 +store i64 %r93, i64* %r92 +%r94 = lshr i384 %r90, 64 +%r96 = getelementptr i64, i64* %r1, i32 3 +%r97 = trunc i384 %r94 to i64 +store i64 %r97, i64* %r96 +%r98 = lshr i384 %r94, 64 +%r100 = getelementptr i64, i64* %r1, i32 4 +%r101 = trunc i384 %r98 to i64 +store i64 %r101, i64* %r100 +%r102 = lshr i384 %r98, 64 +%r104 = getelementptr i64, i64* %r1, i32 5 +%r105 = trunc i384 %r102 to i64 +store i64 %r105, i64* %r104 +br i1%r82, label %carry, label %nocarry +nocarry: +ret void +carry: +%r106 = load i64, i64* %r4 +%r107 = zext i64 %r106 to i128 +%r109 = getelementptr i64, i64* %r4, i32 1 +%r110 = load i64, i64* %r109 +%r111 = zext i64 %r110 to i128 +%r112 = shl i128 %r111, 64 +%r113 = or i128 %r107, %r112 +%r114 = zext i128 %r113 to i192 +%r116 = getelementptr i64, i64* %r4, i32 2 +%r117 = load i64, i64* %r116 +%r118 = zext i64 %r117 to i192 +%r119 = shl i192 %r118, 128 +%r120 = or i192 %r114, %r119 +%r121 = zext i192 %r120 to i256 +%r123 = getelementptr i64, i64* %r4, i32 3 +%r124 = load i64, i64* %r123 +%r125 = zext i64 %r124 to i256 +%r126 = shl i256 %r125, 192 +%r127 = or i256 %r121, %r126 +%r128 = zext i256 %r127 to i320 +%r130 = getelementptr i64, i64* %r4, i32 4 +%r131 = load i64, i64* %r130 +%r132 = zext i64 %r131 to i320 +%r133 = shl i320 %r132, 256 +%r134 = or i320 %r128, %r133 +%r135 = zext i320 %r134 to i384 +%r137 = getelementptr i64, i64* %r4, i32 5 +%r138 = load i64, i64* %r137 +%r139 = zext i64 %r138 to i384 +%r140 = shl i384 %r139, 320 +%r141 = or i384 %r135, %r140 +%r142 = add i384 %r80, %r141 +%r144 = getelementptr i64, i64* %r1, i32 0 +%r145 = trunc i384 %r142 to i64 +store i64 %r145, i64* %r144 +%r146 = lshr i384 %r142, 64 +%r148 = getelementptr i64, i64* %r1, i32 1 +%r149 = trunc i384 %r146 to i64 +store i64 %r149, i64* %r148 +%r150 = lshr i384 %r146, 64 +%r152 = getelementptr i64, i64* %r1, i32 2 +%r153 = trunc i384 %r150 to i64 +store i64 %r153, i64* %r152 +%r154 = lshr i384 %r150, 64 +%r156 = getelementptr i64, i64* %r1, i32 3 +%r157 = trunc i384 %r154 to i64 +store i64 %r157, i64* %r156 +%r158 = lshr i384 %r154, 64 +%r160 = getelementptr i64, i64* %r1, i32 4 +%r161 = trunc i384 %r158 to i64 +store i64 %r161, i64* %r160 +%r162 = lshr i384 %r158, 64 +%r164 = getelementptr i64, i64* %r1, i32 5 +%r165 = trunc i384 %r162 to i64 +store i64 %r165, i64* %r164 ret void } -define void @mcl_fpDbl_sub4L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = zext i512 %r54 to i576 -%r106 = zext i512 %r104 to i576 -%r107 = sub i576 %r105, %r106 -%r108 = trunc i576 %r107 to i256 -%r109 = trunc i256 %r108 to i64 -%r111 = getelementptr i64, i64* %r1, i32 0 -store i64 %r109, i64* %r111 -%r112 = lshr i256 %r108, 64 -%r113 = trunc i256 %r112 to i64 -%r115 = getelementptr i64, i64* %r1, i32 1 -store i64 %r113, i64* %r115 -%r116 = lshr i256 %r112, 64 -%r117 = trunc i256 %r116 to i64 -%r119 = getelementptr i64, i64* %r1, i32 2 -store i64 %r117, i64* %r119 -%r120 = lshr i256 %r116, 64 -%r121 = trunc i256 %r120 to i64 -%r123 = getelementptr i64, i64* %r1, i32 3 -store i64 %r121, i64* %r123 -%r124 = lshr i576 %r107, 256 -%r125 = trunc i576 %r124 to i256 -%r126 = lshr i576 %r107, 512 -%r127 = trunc i576 %r126 to i1 -%r128 = load i64, i64* %r4 -%r129 = zext i64 %r128 to i128 -%r131 = getelementptr i64, i64* %r4, i32 1 -%r132 = load i64, i64* %r131 -%r133 = zext i64 %r132 to i128 -%r134 = shl i128 %r133, 64 -%r135 = or i128 %r129, %r134 -%r136 = zext i128 %r135 to i192 -%r138 = getelementptr i64, i64* %r4, i32 2 -%r139 = load i64, i64* %r138 -%r140 = zext i64 %r139 to i192 -%r141 = shl i192 %r140, 128 -%r142 = or i192 %r136, %r141 -%r143 = zext i192 %r142 to i256 -%r145 = getelementptr i64, i64* %r4, i32 3 -%r146 = load i64, i64* %r145 -%r147 = zext i64 %r146 to i256 -%r148 = shl i256 %r147, 192 -%r149 = or i256 %r143, %r148 -%r151 = select i1 %r127, i256 %r149, i256 0 -%r152 = add i256 %r125, %r151 -%r154 = getelementptr i64, i64* %r1, i32 4 -%r155 = trunc i256 %r152 to i64 -%r157 = getelementptr i64, i64* %r154, i32 0 -store i64 %r155, i64* %r157 -%r158 = lshr i256 %r152, 64 -%r159 = trunc i256 %r158 to i64 -%r161 = getelementptr i64, i64* %r154, i32 1 -store i64 %r159, i64* %r161 -%r162 = lshr i256 %r158, 64 -%r163 = trunc i256 %r162 to i64 -%r165 = getelementptr i64, i64* %r154, i32 2 -store i64 %r163, i64* %r165 -%r166 = lshr i256 %r162, 64 -%r167 = trunc i256 %r166 to i64 -%r169 = getelementptr i64, i64* %r154, i32 3 -store i64 %r167, i64* %r169 -ret void -} -define i384 @mulPv320x64(i64* noalias %r2, i64 %r3) -{ -%r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) -%r6 = trunc i128 %r5 to i64 -%r7 = call i64 @extractHigh64(i128 %r5) -%r9 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 1) -%r10 = trunc i128 %r9 to i64 -%r11 = call i64 @extractHigh64(i128 %r9) -%r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) -%r14 = trunc i128 %r13 to i64 -%r15 = call i64 @extractHigh64(i128 %r13) -%r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) -%r18 = trunc i128 %r17 to i64 -%r19 = call i64 @extractHigh64(i128 %r17) -%r21 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 4) -%r22 = trunc i128 %r21 to i64 -%r23 = call i64 @extractHigh64(i128 %r21) -%r24 = zext i64 %r6 to i128 -%r25 = zext i64 %r10 to i128 -%r26 = shl i128 %r25, 64 -%r27 = or i128 %r24, %r26 -%r28 = zext i128 %r27 to i192 -%r29 = zext i64 %r14 to i192 -%r30 = shl i192 %r29, 128 -%r31 = or i192 %r28, %r30 -%r32 = zext i192 %r31 to i256 -%r33 = zext i64 %r18 to i256 -%r34 = shl i256 %r33, 192 -%r35 = or i256 %r32, %r34 -%r36 = zext i256 %r35 to i320 -%r37 = zext i64 %r22 to i320 -%r38 = shl i320 %r37, 256 -%r39 = or i320 %r36, %r38 -%r40 = zext i64 %r7 to i128 -%r41 = zext i64 %r11 to i128 -%r42 = shl i128 %r41, 64 -%r43 = or i128 %r40, %r42 -%r44 = zext i128 %r43 to i192 -%r45 = zext i64 %r15 to i192 -%r46 = shl i192 %r45, 128 -%r47 = or i192 %r44, %r46 -%r48 = zext i192 %r47 to i256 -%r49 = zext i64 %r19 to i256 -%r50 = shl i256 %r49, 192 -%r51 = or i256 %r48, %r50 -%r52 = zext i256 %r51 to i320 -%r53 = zext i64 %r23 to i320 -%r54 = shl i320 %r53, 256 -%r55 = or i320 %r52, %r54 -%r56 = zext i320 %r39 to i384 -%r57 = zext i320 %r55 to i384 -%r58 = shl i384 %r57, 64 -%r59 = add i384 %r56, %r58 -ret i384 %r59 -} -define void @mcl_fp_mulUnitPre5L(i64* noalias %r1, i64* noalias %r2, i64 %r3) -{ -%r4 = call i384 @mulPv320x64(i64* %r2, i64 %r3) -%r5 = trunc i384 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i384 %r4, 64 -%r9 = trunc i384 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i384 %r8, 64 -%r13 = trunc i384 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i384 %r12, 64 -%r17 = trunc i384 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i384 %r16, 64 -%r21 = trunc i384 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 -%r24 = lshr i384 %r20, 64 -%r25 = trunc i384 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 5 -store i64 %r25, i64* %r27 -ret void -} -define void @mcl_fpDbl_mulPre5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r4 = load i64, i64* %r3 -%r5 = call i384 @mulPv320x64(i64* %r2, i64 %r4) -%r6 = trunc i384 %r5 to i64 -store i64 %r6, i64* %r1 -%r7 = lshr i384 %r5, 64 -%r9 = getelementptr i64, i64* %r3, i32 1 -%r10 = load i64, i64* %r9 -%r11 = call i384 @mulPv320x64(i64* %r2, i64 %r10) -%r12 = add i384 %r7, %r11 -%r13 = trunc i384 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 1 -store i64 %r13, i64* %r15 -%r16 = lshr i384 %r12, 64 -%r18 = getelementptr i64, i64* %r3, i32 2 -%r19 = load i64, i64* %r18 -%r20 = call i384 @mulPv320x64(i64* %r2, i64 %r19) -%r21 = add i384 %r16, %r20 -%r22 = trunc i384 %r21 to i64 -%r24 = getelementptr i64, i64* %r1, i32 2 -store i64 %r22, i64* %r24 -%r25 = lshr i384 %r21, 64 -%r27 = getelementptr i64, i64* %r3, i32 3 -%r28 = load i64, i64* %r27 -%r29 = call i384 @mulPv320x64(i64* %r2, i64 %r28) -%r30 = add i384 %r25, %r29 -%r31 = trunc i384 %r30 to i64 -%r33 = getelementptr i64, i64* %r1, i32 3 -store i64 %r31, i64* %r33 -%r34 = lshr i384 %r30, 64 -%r36 = getelementptr i64, i64* %r3, i32 4 -%r37 = load i64, i64* %r36 -%r38 = call i384 @mulPv320x64(i64* %r2, i64 %r37) -%r39 = add i384 %r34, %r38 -%r41 = getelementptr i64, i64* %r1, i32 4 -%r42 = trunc i384 %r39 to i64 -%r44 = getelementptr i64, i64* %r41, i32 0 -store i64 %r42, i64* %r44 -%r45 = lshr i384 %r39, 64 -%r46 = trunc i384 %r45 to i64 -%r48 = getelementptr i64, i64* %r41, i32 1 -store i64 %r46, i64* %r48 -%r49 = lshr i384 %r45, 64 -%r50 = trunc i384 %r49 to i64 -%r52 = getelementptr i64, i64* %r41, i32 2 -store i64 %r50, i64* %r52 -%r53 = lshr i384 %r49, 64 -%r54 = trunc i384 %r53 to i64 -%r56 = getelementptr i64, i64* %r41, i32 3 -store i64 %r54, i64* %r56 -%r57 = lshr i384 %r53, 64 -%r58 = trunc i384 %r57 to i64 -%r60 = getelementptr i64, i64* %r41, i32 4 -store i64 %r58, i64* %r60 -%r61 = lshr i384 %r57, 64 -%r62 = trunc i384 %r61 to i64 -%r64 = getelementptr i64, i64* %r41, i32 5 -store i64 %r62, i64* %r64 -ret void -} -define void @mcl_fpDbl_sqrPre5L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = call i384 @mulPv320x64(i64* %r2, i64 %r3) -%r5 = trunc i384 %r4 to i64 -store i64 %r5, i64* %r1 -%r6 = lshr i384 %r4, 64 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = call i384 @mulPv320x64(i64* %r2, i64 %r9) -%r11 = add i384 %r6, %r10 -%r12 = trunc i384 %r11 to i64 -%r14 = getelementptr i64, i64* %r1, i32 1 -store i64 %r12, i64* %r14 -%r15 = lshr i384 %r11, 64 -%r17 = getelementptr i64, i64* %r2, i32 2 -%r18 = load i64, i64* %r17 -%r19 = call i384 @mulPv320x64(i64* %r2, i64 %r18) -%r20 = add i384 %r15, %r19 -%r21 = trunc i384 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 2 -store i64 %r21, i64* %r23 -%r24 = lshr i384 %r20, 64 -%r26 = getelementptr i64, i64* %r2, i32 3 -%r27 = load i64, i64* %r26 -%r28 = call i384 @mulPv320x64(i64* %r2, i64 %r27) -%r29 = add i384 %r24, %r28 -%r30 = trunc i384 %r29 to i64 -%r32 = getelementptr i64, i64* %r1, i32 3 -store i64 %r30, i64* %r32 -%r33 = lshr i384 %r29, 64 -%r35 = getelementptr i64, i64* %r2, i32 4 -%r36 = load i64, i64* %r35 -%r37 = call i384 @mulPv320x64(i64* %r2, i64 %r36) -%r38 = add i384 %r33, %r37 -%r40 = getelementptr i64, i64* %r1, i32 4 -%r41 = trunc i384 %r38 to i64 -%r43 = getelementptr i64, i64* %r40, i32 0 -store i64 %r41, i64* %r43 -%r44 = lshr i384 %r38, 64 -%r45 = trunc i384 %r44 to i64 -%r47 = getelementptr i64, i64* %r40, i32 1 -store i64 %r45, i64* %r47 -%r48 = lshr i384 %r44, 64 -%r49 = trunc i384 %r48 to i64 -%r51 = getelementptr i64, i64* %r40, i32 2 -store i64 %r49, i64* %r51 -%r52 = lshr i384 %r48, 64 -%r53 = trunc i384 %r52 to i64 -%r55 = getelementptr i64, i64* %r40, i32 3 -store i64 %r53, i64* %r55 -%r56 = lshr i384 %r52, 64 -%r57 = trunc i384 %r56 to i64 -%r59 = getelementptr i64, i64* %r40, i32 4 -store i64 %r57, i64* %r59 -%r60 = lshr i384 %r56, 64 -%r61 = trunc i384 %r60 to i64 -%r63 = getelementptr i64, i64* %r40, i32 5 -store i64 %r61, i64* %r63 -ret void -} -define void @mcl_fp_mont5L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r9 = getelementptr i64, i64* %r3, i32 0 -%r10 = load i64, i64* %r9 -%r11 = call i384 @mulPv320x64(i64* %r2, i64 %r10) -%r12 = zext i384 %r11 to i448 -%r13 = trunc i384 %r11 to i64 -%r14 = mul i64 %r13, %r7 -%r15 = call i384 @mulPv320x64(i64* %r4, i64 %r14) -%r16 = zext i384 %r15 to i448 -%r17 = add i448 %r12, %r16 -%r18 = lshr i448 %r17, 64 -%r20 = getelementptr i64, i64* %r3, i32 1 -%r21 = load i64, i64* %r20 -%r22 = call i384 @mulPv320x64(i64* %r2, i64 %r21) -%r23 = zext i384 %r22 to i448 -%r24 = add i448 %r18, %r23 -%r25 = trunc i448 %r24 to i64 -%r26 = mul i64 %r25, %r7 -%r27 = call i384 @mulPv320x64(i64* %r4, i64 %r26) -%r28 = zext i384 %r27 to i448 -%r29 = add i448 %r24, %r28 -%r30 = lshr i448 %r29, 64 -%r32 = getelementptr i64, i64* %r3, i32 2 -%r33 = load i64, i64* %r32 -%r34 = call i384 @mulPv320x64(i64* %r2, i64 %r33) -%r35 = zext i384 %r34 to i448 -%r36 = add i448 %r30, %r35 -%r37 = trunc i448 %r36 to i64 -%r38 = mul i64 %r37, %r7 -%r39 = call i384 @mulPv320x64(i64* %r4, i64 %r38) -%r40 = zext i384 %r39 to i448 -%r41 = add i448 %r36, %r40 -%r42 = lshr i448 %r41, 64 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = call i384 @mulPv320x64(i64* %r2, i64 %r45) -%r47 = zext i384 %r46 to i448 -%r48 = add i448 %r42, %r47 -%r49 = trunc i448 %r48 to i64 -%r50 = mul i64 %r49, %r7 -%r51 = call i384 @mulPv320x64(i64* %r4, i64 %r50) -%r52 = zext i384 %r51 to i448 -%r53 = add i448 %r48, %r52 -%r54 = lshr i448 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 4 -%r57 = load i64, i64* %r56 -%r58 = call i384 @mulPv320x64(i64* %r2, i64 %r57) -%r59 = zext i384 %r58 to i448 -%r60 = add i448 %r54, %r59 -%r61 = trunc i448 %r60 to i64 -%r62 = mul i64 %r61, %r7 -%r63 = call i384 @mulPv320x64(i64* %r4, i64 %r62) -%r64 = zext i384 %r63 to i448 -%r65 = add i448 %r60, %r64 -%r66 = lshr i448 %r65, 64 -%r67 = trunc i448 %r66 to i384 -%r68 = load i64, i64* %r4 -%r69 = zext i64 %r68 to i128 -%r71 = getelementptr i64, i64* %r4, i32 1 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i128 -%r74 = shl i128 %r73, 64 -%r75 = or i128 %r69, %r74 -%r76 = zext i128 %r75 to i192 -%r78 = getelementptr i64, i64* %r4, i32 2 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i192 -%r81 = shl i192 %r80, 128 -%r82 = or i192 %r76, %r81 -%r83 = zext i192 %r82 to i256 -%r85 = getelementptr i64, i64* %r4, i32 3 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i256 -%r88 = shl i256 %r87, 192 -%r89 = or i256 %r83, %r88 -%r90 = zext i256 %r89 to i320 -%r92 = getelementptr i64, i64* %r4, i32 4 -%r93 = load i64, i64* %r92 -%r94 = zext i64 %r93 to i320 -%r95 = shl i320 %r94, 256 -%r96 = or i320 %r90, %r95 -%r97 = zext i320 %r96 to i384 -%r98 = sub i384 %r67, %r97 -%r99 = lshr i384 %r98, 320 -%r100 = trunc i384 %r99 to i1 -%r101 = select i1 %r100, i384 %r67, i384 %r98 -%r102 = trunc i384 %r101 to i320 -%r103 = trunc i320 %r102 to i64 -%r105 = getelementptr i64, i64* %r1, i32 0 -store i64 %r103, i64* %r105 -%r106 = lshr i320 %r102, 64 -%r107 = trunc i320 %r106 to i64 -%r109 = getelementptr i64, i64* %r1, i32 1 -store i64 %r107, i64* %r109 -%r110 = lshr i320 %r106, 64 -%r111 = trunc i320 %r110 to i64 -%r113 = getelementptr i64, i64* %r1, i32 2 -store i64 %r111, i64* %r113 -%r114 = lshr i320 %r110, 64 -%r115 = trunc i320 %r114 to i64 -%r117 = getelementptr i64, i64* %r1, i32 3 -store i64 %r115, i64* %r117 -%r118 = lshr i320 %r114, 64 -%r119 = trunc i320 %r118 to i64 -%r121 = getelementptr i64, i64* %r1, i32 4 -store i64 %r119, i64* %r121 -ret void -} -define void @mcl_fp_montNF5L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r8 = load i64, i64* %r3 -%r9 = call i384 @mulPv320x64(i64* %r2, i64 %r8) -%r10 = trunc i384 %r9 to i64 -%r11 = mul i64 %r10, %r7 -%r12 = call i384 @mulPv320x64(i64* %r4, i64 %r11) -%r13 = add i384 %r9, %r12 -%r14 = lshr i384 %r13, 64 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = call i384 @mulPv320x64(i64* %r2, i64 %r17) -%r19 = add i384 %r14, %r18 -%r20 = trunc i384 %r19 to i64 -%r21 = mul i64 %r20, %r7 -%r22 = call i384 @mulPv320x64(i64* %r4, i64 %r21) -%r23 = add i384 %r19, %r22 -%r24 = lshr i384 %r23, 64 -%r26 = getelementptr i64, i64* %r3, i32 2 -%r27 = load i64, i64* %r26 -%r28 = call i384 @mulPv320x64(i64* %r2, i64 %r27) -%r29 = add i384 %r24, %r28 -%r30 = trunc i384 %r29 to i64 -%r31 = mul i64 %r30, %r7 -%r32 = call i384 @mulPv320x64(i64* %r4, i64 %r31) -%r33 = add i384 %r29, %r32 -%r34 = lshr i384 %r33, 64 -%r36 = getelementptr i64, i64* %r3, i32 3 -%r37 = load i64, i64* %r36 -%r38 = call i384 @mulPv320x64(i64* %r2, i64 %r37) -%r39 = add i384 %r34, %r38 -%r40 = trunc i384 %r39 to i64 -%r41 = mul i64 %r40, %r7 -%r42 = call i384 @mulPv320x64(i64* %r4, i64 %r41) -%r43 = add i384 %r39, %r42 -%r44 = lshr i384 %r43, 64 -%r46 = getelementptr i64, i64* %r3, i32 4 -%r47 = load i64, i64* %r46 -%r48 = call i384 @mulPv320x64(i64* %r2, i64 %r47) -%r49 = add i384 %r44, %r48 -%r50 = trunc i384 %r49 to i64 -%r51 = mul i64 %r50, %r7 -%r52 = call i384 @mulPv320x64(i64* %r4, i64 %r51) -%r53 = add i384 %r49, %r52 -%r54 = lshr i384 %r53, 64 -%r55 = trunc i384 %r54 to i320 -%r56 = load i64, i64* %r4 -%r57 = zext i64 %r56 to i128 -%r59 = getelementptr i64, i64* %r4, i32 1 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i128 -%r62 = shl i128 %r61, 64 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i192 -%r66 = getelementptr i64, i64* %r4, i32 2 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i192 -%r69 = shl i192 %r68, 128 -%r70 = or i192 %r64, %r69 -%r71 = zext i192 %r70 to i256 -%r73 = getelementptr i64, i64* %r4, i32 3 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i256 -%r76 = shl i256 %r75, 192 -%r77 = or i256 %r71, %r76 -%r78 = zext i256 %r77 to i320 -%r80 = getelementptr i64, i64* %r4, i32 4 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i320 -%r83 = shl i320 %r82, 256 -%r84 = or i320 %r78, %r83 -%r85 = sub i320 %r55, %r84 -%r86 = lshr i320 %r85, 319 -%r87 = trunc i320 %r86 to i1 -%r88 = select i1 %r87, i320 %r55, i320 %r85 -%r89 = trunc i320 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 0 -store i64 %r89, i64* %r91 -%r92 = lshr i320 %r88, 64 -%r93 = trunc i320 %r92 to i64 -%r95 = getelementptr i64, i64* %r1, i32 1 -store i64 %r93, i64* %r95 -%r96 = lshr i320 %r92, 64 -%r97 = trunc i320 %r96 to i64 -%r99 = getelementptr i64, i64* %r1, i32 2 -store i64 %r97, i64* %r99 -%r100 = lshr i320 %r96, 64 -%r101 = trunc i320 %r100 to i64 -%r103 = getelementptr i64, i64* %r1, i32 3 -store i64 %r101, i64* %r103 -%r104 = lshr i320 %r100, 64 -%r105 = trunc i320 %r104 to i64 -%r107 = getelementptr i64, i64* %r1, i32 4 -store i64 %r105, i64* %r107 -ret void -} -define void @mcl_fp_montRed5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r3, i32 -1 -%r6 = load i64, i64* %r5 -%r7 = load i64, i64* %r3 -%r8 = zext i64 %r7 to i128 -%r10 = getelementptr i64, i64* %r3, i32 1 -%r11 = load i64, i64* %r10 -%r12 = zext i64 %r11 to i128 -%r13 = shl i128 %r12, 64 -%r14 = or i128 %r8, %r13 -%r15 = zext i128 %r14 to i192 -%r17 = getelementptr i64, i64* %r3, i32 2 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i192 -%r20 = shl i192 %r19, 128 -%r21 = or i192 %r15, %r20 -%r22 = zext i192 %r21 to i256 -%r24 = getelementptr i64, i64* %r3, i32 3 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i256 -%r27 = shl i256 %r26, 192 -%r28 = or i256 %r22, %r27 -%r29 = zext i256 %r28 to i320 -%r31 = getelementptr i64, i64* %r3, i32 4 -%r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i320 -%r34 = shl i320 %r33, 256 -%r35 = or i320 %r29, %r34 -%r36 = load i64, i64* %r2 -%r37 = zext i64 %r36 to i128 -%r39 = getelementptr i64, i64* %r2, i32 1 -%r40 = load i64, i64* %r39 -%r41 = zext i64 %r40 to i128 -%r42 = shl i128 %r41, 64 -%r43 = or i128 %r37, %r42 -%r44 = zext i128 %r43 to i192 -%r46 = getelementptr i64, i64* %r2, i32 2 -%r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i192 -%r49 = shl i192 %r48, 128 -%r50 = or i192 %r44, %r49 -%r51 = zext i192 %r50 to i256 -%r53 = getelementptr i64, i64* %r2, i32 3 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i256 -%r56 = shl i256 %r55, 192 -%r57 = or i256 %r51, %r56 -%r58 = zext i256 %r57 to i320 -%r60 = getelementptr i64, i64* %r2, i32 4 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i320 -%r63 = shl i320 %r62, 256 -%r64 = or i320 %r58, %r63 -%r65 = zext i320 %r64 to i384 -%r67 = getelementptr i64, i64* %r2, i32 5 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i384 -%r70 = shl i384 %r69, 320 -%r71 = or i384 %r65, %r70 -%r72 = zext i384 %r71 to i448 -%r74 = getelementptr i64, i64* %r2, i32 6 -%r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i448 -%r77 = shl i448 %r76, 384 -%r78 = or i448 %r72, %r77 -%r79 = zext i448 %r78 to i512 -%r81 = getelementptr i64, i64* %r2, i32 7 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i512 -%r84 = shl i512 %r83, 448 -%r85 = or i512 %r79, %r84 -%r86 = zext i512 %r85 to i576 -%r88 = getelementptr i64, i64* %r2, i32 8 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i576 -%r91 = shl i576 %r90, 512 -%r92 = or i576 %r86, %r91 -%r93 = zext i576 %r92 to i640 -%r95 = getelementptr i64, i64* %r2, i32 9 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i640 -%r98 = shl i640 %r97, 576 -%r99 = or i640 %r93, %r98 -%r100 = zext i640 %r99 to i704 -%r101 = trunc i704 %r100 to i64 -%r102 = mul i64 %r101, %r6 -%r103 = call i384 @mulPv320x64(i64* %r3, i64 %r102) -%r104 = zext i384 %r103 to i704 -%r105 = add i704 %r100, %r104 -%r106 = lshr i704 %r105, 64 -%r107 = trunc i704 %r106 to i640 -%r108 = trunc i640 %r107 to i64 -%r109 = mul i64 %r108, %r6 -%r110 = call i384 @mulPv320x64(i64* %r3, i64 %r109) -%r111 = zext i384 %r110 to i640 -%r112 = add i640 %r107, %r111 -%r113 = lshr i640 %r112, 64 -%r114 = trunc i640 %r113 to i576 -%r115 = trunc i576 %r114 to i64 -%r116 = mul i64 %r115, %r6 -%r117 = call i384 @mulPv320x64(i64* %r3, i64 %r116) -%r118 = zext i384 %r117 to i576 -%r119 = add i576 %r114, %r118 -%r120 = lshr i576 %r119, 64 -%r121 = trunc i576 %r120 to i512 -%r122 = trunc i512 %r121 to i64 -%r123 = mul i64 %r122, %r6 -%r124 = call i384 @mulPv320x64(i64* %r3, i64 %r123) -%r125 = zext i384 %r124 to i512 -%r126 = add i512 %r121, %r125 -%r127 = lshr i512 %r126, 64 -%r128 = trunc i512 %r127 to i448 -%r129 = trunc i448 %r128 to i64 -%r130 = mul i64 %r129, %r6 -%r131 = call i384 @mulPv320x64(i64* %r3, i64 %r130) -%r132 = zext i384 %r131 to i448 -%r133 = add i448 %r128, %r132 -%r134 = lshr i448 %r133, 64 -%r135 = trunc i448 %r134 to i384 -%r136 = zext i320 %r35 to i384 -%r137 = sub i384 %r135, %r136 -%r138 = lshr i384 %r137, 320 -%r139 = trunc i384 %r138 to i1 -%r140 = select i1 %r139, i384 %r135, i384 %r137 -%r141 = trunc i384 %r140 to i320 -%r142 = trunc i320 %r141 to i64 -%r144 = getelementptr i64, i64* %r1, i32 0 -store i64 %r142, i64* %r144 -%r145 = lshr i320 %r141, 64 -%r146 = trunc i320 %r145 to i64 -%r148 = getelementptr i64, i64* %r1, i32 1 -store i64 %r146, i64* %r148 -%r149 = lshr i320 %r145, 64 -%r150 = trunc i320 %r149 to i64 -%r152 = getelementptr i64, i64* %r1, i32 2 -store i64 %r150, i64* %r152 -%r153 = lshr i320 %r149, 64 -%r154 = trunc i320 %r153 to i64 -%r156 = getelementptr i64, i64* %r1, i32 3 -store i64 %r154, i64* %r156 -%r157 = lshr i320 %r153, 64 -%r158 = trunc i320 %r157 to i64 -%r160 = getelementptr i64, i64* %r1, i32 4 -store i64 %r158, i64* %r160 -ret void -} -define i64 @mcl_fp_addPre5L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r35 = load i64, i64* %r4 -%r36 = zext i64 %r35 to i128 -%r38 = getelementptr i64, i64* %r4, i32 1 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i128 -%r41 = shl i128 %r40, 64 -%r42 = or i128 %r36, %r41 -%r43 = zext i128 %r42 to i192 -%r45 = getelementptr i64, i64* %r4, i32 2 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i192 -%r48 = shl i192 %r47, 128 -%r49 = or i192 %r43, %r48 -%r50 = zext i192 %r49 to i256 -%r52 = getelementptr i64, i64* %r4, i32 3 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i256 -%r55 = shl i256 %r54, 192 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i320 -%r59 = getelementptr i64, i64* %r4, i32 4 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i320 -%r62 = shl i320 %r61, 256 -%r63 = or i320 %r57, %r62 -%r64 = zext i320 %r63 to i384 -%r65 = add i384 %r34, %r64 -%r66 = trunc i384 %r65 to i320 -%r67 = trunc i320 %r66 to i64 -%r69 = getelementptr i64, i64* %r2, i32 0 -store i64 %r67, i64* %r69 -%r70 = lshr i320 %r66, 64 -%r71 = trunc i320 %r70 to i64 -%r73 = getelementptr i64, i64* %r2, i32 1 -store i64 %r71, i64* %r73 -%r74 = lshr i320 %r70, 64 -%r75 = trunc i320 %r74 to i64 -%r77 = getelementptr i64, i64* %r2, i32 2 -store i64 %r75, i64* %r77 -%r78 = lshr i320 %r74, 64 -%r79 = trunc i320 %r78 to i64 -%r81 = getelementptr i64, i64* %r2, i32 3 -store i64 %r79, i64* %r81 -%r82 = lshr i320 %r78, 64 -%r83 = trunc i320 %r82 to i64 -%r85 = getelementptr i64, i64* %r2, i32 4 -store i64 %r83, i64* %r85 -%r86 = lshr i384 %r65, 320 -%r87 = trunc i384 %r86 to i64 -ret i64 %r87 -} -define i64 @mcl_fp_subPre5L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r35 = load i64, i64* %r4 -%r36 = zext i64 %r35 to i128 -%r38 = getelementptr i64, i64* %r4, i32 1 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i128 -%r41 = shl i128 %r40, 64 -%r42 = or i128 %r36, %r41 -%r43 = zext i128 %r42 to i192 -%r45 = getelementptr i64, i64* %r4, i32 2 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i192 -%r48 = shl i192 %r47, 128 -%r49 = or i192 %r43, %r48 -%r50 = zext i192 %r49 to i256 -%r52 = getelementptr i64, i64* %r4, i32 3 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i256 -%r55 = shl i256 %r54, 192 -%r56 = or i256 %r50, %r55 -%r57 = zext i256 %r56 to i320 -%r59 = getelementptr i64, i64* %r4, i32 4 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i320 -%r62 = shl i320 %r61, 256 -%r63 = or i320 %r57, %r62 -%r64 = zext i320 %r63 to i384 -%r65 = sub i384 %r34, %r64 -%r66 = trunc i384 %r65 to i320 -%r67 = trunc i320 %r66 to i64 -%r69 = getelementptr i64, i64* %r2, i32 0 -store i64 %r67, i64* %r69 -%r70 = lshr i320 %r66, 64 -%r71 = trunc i320 %r70 to i64 -%r73 = getelementptr i64, i64* %r2, i32 1 -store i64 %r71, i64* %r73 -%r74 = lshr i320 %r70, 64 -%r75 = trunc i320 %r74 to i64 -%r77 = getelementptr i64, i64* %r2, i32 2 -store i64 %r75, i64* %r77 -%r78 = lshr i320 %r74, 64 -%r79 = trunc i320 %r78 to i64 -%r81 = getelementptr i64, i64* %r2, i32 3 -store i64 %r79, i64* %r81 -%r82 = lshr i320 %r78, 64 -%r83 = trunc i320 %r82 to i64 -%r85 = getelementptr i64, i64* %r2, i32 4 -store i64 %r83, i64* %r85 -%r86 = lshr i384 %r65, 320 -%r87 = trunc i384 %r86 to i64 -%r89 = and i64 %r87, 1 -ret i64 %r89 -} -define void @mcl_fp_shr1_5L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = zext i64 %r3 to i128 -%r6 = getelementptr i64, i64* %r2, i32 1 -%r7 = load i64, i64* %r6 -%r8 = zext i64 %r7 to i128 -%r9 = shl i128 %r8, 64 -%r10 = or i128 %r4, %r9 -%r11 = zext i128 %r10 to i192 -%r13 = getelementptr i64, i64* %r2, i32 2 -%r14 = load i64, i64* %r13 -%r15 = zext i64 %r14 to i192 -%r16 = shl i192 %r15, 128 -%r17 = or i192 %r11, %r16 -%r18 = zext i192 %r17 to i256 -%r20 = getelementptr i64, i64* %r2, i32 3 -%r21 = load i64, i64* %r20 -%r22 = zext i64 %r21 to i256 -%r23 = shl i256 %r22, 192 -%r24 = or i256 %r18, %r23 -%r25 = zext i256 %r24 to i320 -%r27 = getelementptr i64, i64* %r2, i32 4 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i320 -%r30 = shl i320 %r29, 256 -%r31 = or i320 %r25, %r30 -%r32 = lshr i320 %r31, 1 -%r33 = trunc i320 %r32 to i64 -%r35 = getelementptr i64, i64* %r1, i32 0 -store i64 %r33, i64* %r35 -%r36 = lshr i320 %r32, 64 -%r37 = trunc i320 %r36 to i64 -%r39 = getelementptr i64, i64* %r1, i32 1 -store i64 %r37, i64* %r39 -%r40 = lshr i320 %r36, 64 -%r41 = trunc i320 %r40 to i64 -%r43 = getelementptr i64, i64* %r1, i32 2 -store i64 %r41, i64* %r43 -%r44 = lshr i320 %r40, 64 -%r45 = trunc i320 %r44 to i64 -%r47 = getelementptr i64, i64* %r1, i32 3 -store i64 %r45, i64* %r47 -%r48 = lshr i320 %r44, 64 -%r49 = trunc i320 %r48 to i64 -%r51 = getelementptr i64, i64* %r1, i32 4 -store i64 %r49, i64* %r51 -ret void -} -define void @mcl_fp_add5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = load i64, i64* %r3 -%r35 = zext i64 %r34 to i128 -%r37 = getelementptr i64, i64* %r3, i32 1 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i128 -%r40 = shl i128 %r39, 64 -%r41 = or i128 %r35, %r40 -%r42 = zext i128 %r41 to i192 -%r44 = getelementptr i64, i64* %r3, i32 2 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i192 -%r47 = shl i192 %r46, 128 -%r48 = or i192 %r42, %r47 -%r49 = zext i192 %r48 to i256 -%r51 = getelementptr i64, i64* %r3, i32 3 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i256 -%r54 = shl i256 %r53, 192 -%r55 = or i256 %r49, %r54 -%r56 = zext i256 %r55 to i320 -%r58 = getelementptr i64, i64* %r3, i32 4 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i320 -%r61 = shl i320 %r60, 256 -%r62 = or i320 %r56, %r61 -%r63 = zext i320 %r33 to i384 -%r64 = zext i320 %r62 to i384 -%r65 = add i384 %r63, %r64 -%r66 = trunc i384 %r65 to i320 -%r67 = trunc i320 %r66 to i64 -%r69 = getelementptr i64, i64* %r1, i32 0 -store i64 %r67, i64* %r69 -%r70 = lshr i320 %r66, 64 -%r71 = trunc i320 %r70 to i64 -%r73 = getelementptr i64, i64* %r1, i32 1 -store i64 %r71, i64* %r73 -%r74 = lshr i320 %r70, 64 -%r75 = trunc i320 %r74 to i64 -%r77 = getelementptr i64, i64* %r1, i32 2 -store i64 %r75, i64* %r77 -%r78 = lshr i320 %r74, 64 -%r79 = trunc i320 %r78 to i64 -%r81 = getelementptr i64, i64* %r1, i32 3 -store i64 %r79, i64* %r81 -%r82 = lshr i320 %r78, 64 -%r83 = trunc i320 %r82 to i64 -%r85 = getelementptr i64, i64* %r1, i32 4 -store i64 %r83, i64* %r85 -%r86 = load i64, i64* %r4 -%r87 = zext i64 %r86 to i128 -%r89 = getelementptr i64, i64* %r4, i32 1 -%r90 = load i64, i64* %r89 -%r91 = zext i64 %r90 to i128 -%r92 = shl i128 %r91, 64 -%r93 = or i128 %r87, %r92 -%r94 = zext i128 %r93 to i192 -%r96 = getelementptr i64, i64* %r4, i32 2 -%r97 = load i64, i64* %r96 -%r98 = zext i64 %r97 to i192 -%r99 = shl i192 %r98, 128 -%r100 = or i192 %r94, %r99 -%r101 = zext i192 %r100 to i256 -%r103 = getelementptr i64, i64* %r4, i32 3 -%r104 = load i64, i64* %r103 -%r105 = zext i64 %r104 to i256 -%r106 = shl i256 %r105, 192 -%r107 = or i256 %r101, %r106 -%r108 = zext i256 %r107 to i320 -%r110 = getelementptr i64, i64* %r4, i32 4 -%r111 = load i64, i64* %r110 -%r112 = zext i64 %r111 to i320 -%r113 = shl i320 %r112, 256 -%r114 = or i320 %r108, %r113 -%r115 = zext i320 %r114 to i384 -%r116 = sub i384 %r65, %r115 -%r117 = lshr i384 %r116, 320 -%r118 = trunc i384 %r117 to i1 -br i1%r118, label %carry, label %nocarry -nocarry: -%r119 = trunc i384 %r116 to i320 -%r120 = trunc i320 %r119 to i64 -%r122 = getelementptr i64, i64* %r1, i32 0 -store i64 %r120, i64* %r122 -%r123 = lshr i320 %r119, 64 -%r124 = trunc i320 %r123 to i64 -%r126 = getelementptr i64, i64* %r1, i32 1 -store i64 %r124, i64* %r126 -%r127 = lshr i320 %r123, 64 -%r128 = trunc i320 %r127 to i64 -%r130 = getelementptr i64, i64* %r1, i32 2 -store i64 %r128, i64* %r130 -%r131 = lshr i320 %r127, 64 -%r132 = trunc i320 %r131 to i64 -%r134 = getelementptr i64, i64* %r1, i32 3 -store i64 %r132, i64* %r134 -%r135 = lshr i320 %r131, 64 -%r136 = trunc i320 %r135 to i64 -%r138 = getelementptr i64, i64* %r1, i32 4 -store i64 %r136, i64* %r138 -ret void -carry: -ret void -} -define void @mcl_fp_addNF5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = load i64, i64* %r3 -%r35 = zext i64 %r34 to i128 -%r37 = getelementptr i64, i64* %r3, i32 1 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i128 -%r40 = shl i128 %r39, 64 -%r41 = or i128 %r35, %r40 -%r42 = zext i128 %r41 to i192 -%r44 = getelementptr i64, i64* %r3, i32 2 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i192 -%r47 = shl i192 %r46, 128 -%r48 = or i192 %r42, %r47 -%r49 = zext i192 %r48 to i256 -%r51 = getelementptr i64, i64* %r3, i32 3 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i256 -%r54 = shl i256 %r53, 192 -%r55 = or i256 %r49, %r54 -%r56 = zext i256 %r55 to i320 -%r58 = getelementptr i64, i64* %r3, i32 4 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i320 -%r61 = shl i320 %r60, 256 -%r62 = or i320 %r56, %r61 -%r63 = add i320 %r33, %r62 -%r64 = load i64, i64* %r4 -%r65 = zext i64 %r64 to i128 -%r67 = getelementptr i64, i64* %r4, i32 1 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i128 -%r70 = shl i128 %r69, 64 -%r71 = or i128 %r65, %r70 -%r72 = zext i128 %r71 to i192 -%r74 = getelementptr i64, i64* %r4, i32 2 -%r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i192 -%r77 = shl i192 %r76, 128 -%r78 = or i192 %r72, %r77 -%r79 = zext i192 %r78 to i256 -%r81 = getelementptr i64, i64* %r4, i32 3 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i256 -%r84 = shl i256 %r83, 192 -%r85 = or i256 %r79, %r84 -%r86 = zext i256 %r85 to i320 -%r88 = getelementptr i64, i64* %r4, i32 4 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i320 -%r91 = shl i320 %r90, 256 -%r92 = or i320 %r86, %r91 -%r93 = sub i320 %r63, %r92 -%r94 = lshr i320 %r93, 319 -%r95 = trunc i320 %r94 to i1 -%r96 = select i1 %r95, i320 %r63, i320 %r93 -%r97 = trunc i320 %r96 to i64 -%r99 = getelementptr i64, i64* %r1, i32 0 -store i64 %r97, i64* %r99 -%r100 = lshr i320 %r96, 64 -%r101 = trunc i320 %r100 to i64 -%r103 = getelementptr i64, i64* %r1, i32 1 -store i64 %r101, i64* %r103 -%r104 = lshr i320 %r100, 64 -%r105 = trunc i320 %r104 to i64 -%r107 = getelementptr i64, i64* %r1, i32 2 -store i64 %r105, i64* %r107 -%r108 = lshr i320 %r104, 64 -%r109 = trunc i320 %r108 to i64 -%r111 = getelementptr i64, i64* %r1, i32 3 -store i64 %r109, i64* %r111 -%r112 = lshr i320 %r108, 64 -%r113 = trunc i320 %r112 to i64 -%r115 = getelementptr i64, i64* %r1, i32 4 -store i64 %r113, i64* %r115 -ret void -} -define void @mcl_fp_sub5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = load i64, i64* %r3 -%r35 = zext i64 %r34 to i128 -%r37 = getelementptr i64, i64* %r3, i32 1 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i128 -%r40 = shl i128 %r39, 64 -%r41 = or i128 %r35, %r40 -%r42 = zext i128 %r41 to i192 -%r44 = getelementptr i64, i64* %r3, i32 2 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i192 -%r47 = shl i192 %r46, 128 -%r48 = or i192 %r42, %r47 -%r49 = zext i192 %r48 to i256 -%r51 = getelementptr i64, i64* %r3, i32 3 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i256 -%r54 = shl i256 %r53, 192 -%r55 = or i256 %r49, %r54 -%r56 = zext i256 %r55 to i320 -%r58 = getelementptr i64, i64* %r3, i32 4 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i320 -%r61 = shl i320 %r60, 256 -%r62 = or i320 %r56, %r61 -%r63 = zext i320 %r33 to i384 -%r64 = zext i320 %r62 to i384 -%r65 = sub i384 %r63, %r64 -%r66 = trunc i384 %r65 to i320 -%r67 = lshr i384 %r65, 320 -%r68 = trunc i384 %r67 to i1 -%r69 = trunc i320 %r66 to i64 -%r71 = getelementptr i64, i64* %r1, i32 0 -store i64 %r69, i64* %r71 -%r72 = lshr i320 %r66, 64 -%r73 = trunc i320 %r72 to i64 -%r75 = getelementptr i64, i64* %r1, i32 1 -store i64 %r73, i64* %r75 -%r76 = lshr i320 %r72, 64 -%r77 = trunc i320 %r76 to i64 -%r79 = getelementptr i64, i64* %r1, i32 2 -store i64 %r77, i64* %r79 -%r80 = lshr i320 %r76, 64 -%r81 = trunc i320 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 3 -store i64 %r81, i64* %r83 -%r84 = lshr i320 %r80, 64 -%r85 = trunc i320 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 4 -store i64 %r85, i64* %r87 -br i1%r68, label %carry, label %nocarry -nocarry: -ret void -carry: -%r88 = load i64, i64* %r4 -%r89 = zext i64 %r88 to i128 -%r91 = getelementptr i64, i64* %r4, i32 1 -%r92 = load i64, i64* %r91 -%r93 = zext i64 %r92 to i128 -%r94 = shl i128 %r93, 64 -%r95 = or i128 %r89, %r94 -%r96 = zext i128 %r95 to i192 -%r98 = getelementptr i64, i64* %r4, i32 2 -%r99 = load i64, i64* %r98 -%r100 = zext i64 %r99 to i192 -%r101 = shl i192 %r100, 128 -%r102 = or i192 %r96, %r101 -%r103 = zext i192 %r102 to i256 -%r105 = getelementptr i64, i64* %r4, i32 3 -%r106 = load i64, i64* %r105 -%r107 = zext i64 %r106 to i256 -%r108 = shl i256 %r107, 192 -%r109 = or i256 %r103, %r108 -%r110 = zext i256 %r109 to i320 -%r112 = getelementptr i64, i64* %r4, i32 4 -%r113 = load i64, i64* %r112 -%r114 = zext i64 %r113 to i320 -%r115 = shl i320 %r114, 256 -%r116 = or i320 %r110, %r115 -%r117 = add i320 %r66, %r116 -%r118 = trunc i320 %r117 to i64 -%r120 = getelementptr i64, i64* %r1, i32 0 -store i64 %r118, i64* %r120 -%r121 = lshr i320 %r117, 64 -%r122 = trunc i320 %r121 to i64 -%r124 = getelementptr i64, i64* %r1, i32 1 -store i64 %r122, i64* %r124 -%r125 = lshr i320 %r121, 64 -%r126 = trunc i320 %r125 to i64 -%r128 = getelementptr i64, i64* %r1, i32 2 -store i64 %r126, i64* %r128 -%r129 = lshr i320 %r125, 64 -%r130 = trunc i320 %r129 to i64 -%r132 = getelementptr i64, i64* %r1, i32 3 -store i64 %r130, i64* %r132 -%r133 = lshr i320 %r129, 64 -%r134 = trunc i320 %r133 to i64 -%r136 = getelementptr i64, i64* %r1, i32 4 -store i64 %r134, i64* %r136 -ret void -} -define void @mcl_fp_subNF5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = load i64, i64* %r3 -%r35 = zext i64 %r34 to i128 -%r37 = getelementptr i64, i64* %r3, i32 1 -%r38 = load i64, i64* %r37 -%r39 = zext i64 %r38 to i128 -%r40 = shl i128 %r39, 64 -%r41 = or i128 %r35, %r40 -%r42 = zext i128 %r41 to i192 -%r44 = getelementptr i64, i64* %r3, i32 2 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i192 -%r47 = shl i192 %r46, 128 -%r48 = or i192 %r42, %r47 -%r49 = zext i192 %r48 to i256 -%r51 = getelementptr i64, i64* %r3, i32 3 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i256 -%r54 = shl i256 %r53, 192 -%r55 = or i256 %r49, %r54 -%r56 = zext i256 %r55 to i320 -%r58 = getelementptr i64, i64* %r3, i32 4 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i320 -%r61 = shl i320 %r60, 256 -%r62 = or i320 %r56, %r61 -%r63 = sub i320 %r33, %r62 -%r64 = lshr i320 %r63, 319 -%r65 = trunc i320 %r64 to i1 -%r66 = load i64, i64* %r4 -%r67 = zext i64 %r66 to i128 -%r69 = getelementptr i64, i64* %r4, i32 1 -%r70 = load i64, i64* %r69 -%r71 = zext i64 %r70 to i128 -%r72 = shl i128 %r71, 64 -%r73 = or i128 %r67, %r72 -%r74 = zext i128 %r73 to i192 -%r76 = getelementptr i64, i64* %r4, i32 2 -%r77 = load i64, i64* %r76 -%r78 = zext i64 %r77 to i192 -%r79 = shl i192 %r78, 128 -%r80 = or i192 %r74, %r79 -%r81 = zext i192 %r80 to i256 -%r83 = getelementptr i64, i64* %r4, i32 3 -%r84 = load i64, i64* %r83 -%r85 = zext i64 %r84 to i256 -%r86 = shl i256 %r85, 192 -%r87 = or i256 %r81, %r86 -%r88 = zext i256 %r87 to i320 -%r90 = getelementptr i64, i64* %r4, i32 4 -%r91 = load i64, i64* %r90 -%r92 = zext i64 %r91 to i320 -%r93 = shl i320 %r92, 256 -%r94 = or i320 %r88, %r93 -%r96 = select i1 %r65, i320 %r94, i320 0 -%r97 = add i320 %r63, %r96 -%r98 = trunc i320 %r97 to i64 -%r100 = getelementptr i64, i64* %r1, i32 0 -store i64 %r98, i64* %r100 -%r101 = lshr i320 %r97, 64 -%r102 = trunc i320 %r101 to i64 -%r104 = getelementptr i64, i64* %r1, i32 1 -store i64 %r102, i64* %r104 -%r105 = lshr i320 %r101, 64 -%r106 = trunc i320 %r105 to i64 -%r108 = getelementptr i64, i64* %r1, i32 2 -store i64 %r106, i64* %r108 -%r109 = lshr i320 %r105, 64 -%r110 = trunc i320 %r109 to i64 -%r112 = getelementptr i64, i64* %r1, i32 3 -store i64 %r110, i64* %r112 -%r113 = lshr i320 %r109, 64 -%r114 = trunc i320 %r113 to i64 -%r116 = getelementptr i64, i64* %r1, i32 4 -store i64 %r114, i64* %r116 -ret void -} -define void @mcl_fpDbl_add5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = load i64, i64* %r3 -%r70 = zext i64 %r69 to i128 -%r72 = getelementptr i64, i64* %r3, i32 1 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i128 -%r75 = shl i128 %r74, 64 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i192 -%r79 = getelementptr i64, i64* %r3, i32 2 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i192 -%r82 = shl i192 %r81, 128 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i256 -%r86 = getelementptr i64, i64* %r3, i32 3 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i256 -%r89 = shl i256 %r88, 192 -%r90 = or i256 %r84, %r89 -%r91 = zext i256 %r90 to i320 -%r93 = getelementptr i64, i64* %r3, i32 4 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i320 -%r96 = shl i320 %r95, 256 -%r97 = or i320 %r91, %r96 -%r98 = zext i320 %r97 to i384 -%r100 = getelementptr i64, i64* %r3, i32 5 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i384 -%r103 = shl i384 %r102, 320 -%r104 = or i384 %r98, %r103 -%r105 = zext i384 %r104 to i448 -%r107 = getelementptr i64, i64* %r3, i32 6 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i448 -%r110 = shl i448 %r109, 384 -%r111 = or i448 %r105, %r110 -%r112 = zext i448 %r111 to i512 -%r114 = getelementptr i64, i64* %r3, i32 7 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i512 -%r117 = shl i512 %r116, 448 -%r118 = or i512 %r112, %r117 -%r119 = zext i512 %r118 to i576 -%r121 = getelementptr i64, i64* %r3, i32 8 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i576 -%r124 = shl i576 %r123, 512 -%r125 = or i576 %r119, %r124 -%r126 = zext i576 %r125 to i640 -%r128 = getelementptr i64, i64* %r3, i32 9 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i640 -%r131 = shl i640 %r130, 576 -%r132 = or i640 %r126, %r131 -%r133 = zext i640 %r68 to i704 -%r134 = zext i640 %r132 to i704 -%r135 = add i704 %r133, %r134 -%r136 = trunc i704 %r135 to i320 -%r137 = trunc i320 %r136 to i64 -%r139 = getelementptr i64, i64* %r1, i32 0 -store i64 %r137, i64* %r139 -%r140 = lshr i320 %r136, 64 -%r141 = trunc i320 %r140 to i64 -%r143 = getelementptr i64, i64* %r1, i32 1 -store i64 %r141, i64* %r143 -%r144 = lshr i320 %r140, 64 -%r145 = trunc i320 %r144 to i64 -%r147 = getelementptr i64, i64* %r1, i32 2 -store i64 %r145, i64* %r147 -%r148 = lshr i320 %r144, 64 -%r149 = trunc i320 %r148 to i64 -%r151 = getelementptr i64, i64* %r1, i32 3 -store i64 %r149, i64* %r151 -%r152 = lshr i320 %r148, 64 -%r153 = trunc i320 %r152 to i64 -%r155 = getelementptr i64, i64* %r1, i32 4 -store i64 %r153, i64* %r155 -%r156 = lshr i704 %r135, 320 -%r157 = trunc i704 %r156 to i384 -%r158 = load i64, i64* %r4 -%r159 = zext i64 %r158 to i128 -%r161 = getelementptr i64, i64* %r4, i32 1 -%r162 = load i64, i64* %r161 -%r163 = zext i64 %r162 to i128 -%r164 = shl i128 %r163, 64 -%r165 = or i128 %r159, %r164 -%r166 = zext i128 %r165 to i192 -%r168 = getelementptr i64, i64* %r4, i32 2 -%r169 = load i64, i64* %r168 -%r170 = zext i64 %r169 to i192 -%r171 = shl i192 %r170, 128 -%r172 = or i192 %r166, %r171 -%r173 = zext i192 %r172 to i256 -%r175 = getelementptr i64, i64* %r4, i32 3 -%r176 = load i64, i64* %r175 -%r177 = zext i64 %r176 to i256 -%r178 = shl i256 %r177, 192 -%r179 = or i256 %r173, %r178 -%r180 = zext i256 %r179 to i320 -%r182 = getelementptr i64, i64* %r4, i32 4 -%r183 = load i64, i64* %r182 -%r184 = zext i64 %r183 to i320 -%r185 = shl i320 %r184, 256 -%r186 = or i320 %r180, %r185 -%r187 = zext i320 %r186 to i384 -%r188 = sub i384 %r157, %r187 -%r189 = lshr i384 %r188, 320 -%r190 = trunc i384 %r189 to i1 -%r191 = select i1 %r190, i384 %r157, i384 %r188 -%r192 = trunc i384 %r191 to i320 -%r194 = getelementptr i64, i64* %r1, i32 5 -%r195 = trunc i320 %r192 to i64 -%r197 = getelementptr i64, i64* %r194, i32 0 -store i64 %r195, i64* %r197 -%r198 = lshr i320 %r192, 64 -%r199 = trunc i320 %r198 to i64 -%r201 = getelementptr i64, i64* %r194, i32 1 -store i64 %r199, i64* %r201 -%r202 = lshr i320 %r198, 64 -%r203 = trunc i320 %r202 to i64 -%r205 = getelementptr i64, i64* %r194, i32 2 -store i64 %r203, i64* %r205 -%r206 = lshr i320 %r202, 64 -%r207 = trunc i320 %r206 to i64 -%r209 = getelementptr i64, i64* %r194, i32 3 -store i64 %r207, i64* %r209 -%r210 = lshr i320 %r206, 64 -%r211 = trunc i320 %r210 to i64 -%r213 = getelementptr i64, i64* %r194, i32 4 -store i64 %r211, i64* %r213 -ret void -} -define void @mcl_fpDbl_sub5L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = load i64, i64* %r3 -%r70 = zext i64 %r69 to i128 -%r72 = getelementptr i64, i64* %r3, i32 1 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i128 -%r75 = shl i128 %r74, 64 -%r76 = or i128 %r70, %r75 -%r77 = zext i128 %r76 to i192 -%r79 = getelementptr i64, i64* %r3, i32 2 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i192 -%r82 = shl i192 %r81, 128 -%r83 = or i192 %r77, %r82 -%r84 = zext i192 %r83 to i256 -%r86 = getelementptr i64, i64* %r3, i32 3 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i256 -%r89 = shl i256 %r88, 192 -%r90 = or i256 %r84, %r89 -%r91 = zext i256 %r90 to i320 -%r93 = getelementptr i64, i64* %r3, i32 4 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i320 -%r96 = shl i320 %r95, 256 -%r97 = or i320 %r91, %r96 -%r98 = zext i320 %r97 to i384 -%r100 = getelementptr i64, i64* %r3, i32 5 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i384 -%r103 = shl i384 %r102, 320 -%r104 = or i384 %r98, %r103 -%r105 = zext i384 %r104 to i448 -%r107 = getelementptr i64, i64* %r3, i32 6 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i448 -%r110 = shl i448 %r109, 384 -%r111 = or i448 %r105, %r110 -%r112 = zext i448 %r111 to i512 -%r114 = getelementptr i64, i64* %r3, i32 7 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i512 -%r117 = shl i512 %r116, 448 -%r118 = or i512 %r112, %r117 -%r119 = zext i512 %r118 to i576 -%r121 = getelementptr i64, i64* %r3, i32 8 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i576 -%r124 = shl i576 %r123, 512 -%r125 = or i576 %r119, %r124 -%r126 = zext i576 %r125 to i640 -%r128 = getelementptr i64, i64* %r3, i32 9 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i640 -%r131 = shl i640 %r130, 576 -%r132 = or i640 %r126, %r131 -%r133 = zext i640 %r68 to i704 -%r134 = zext i640 %r132 to i704 -%r135 = sub i704 %r133, %r134 -%r136 = trunc i704 %r135 to i320 -%r137 = trunc i320 %r136 to i64 -%r139 = getelementptr i64, i64* %r1, i32 0 -store i64 %r137, i64* %r139 -%r140 = lshr i320 %r136, 64 -%r141 = trunc i320 %r140 to i64 -%r143 = getelementptr i64, i64* %r1, i32 1 -store i64 %r141, i64* %r143 -%r144 = lshr i320 %r140, 64 -%r145 = trunc i320 %r144 to i64 -%r147 = getelementptr i64, i64* %r1, i32 2 -store i64 %r145, i64* %r147 -%r148 = lshr i320 %r144, 64 -%r149 = trunc i320 %r148 to i64 -%r151 = getelementptr i64, i64* %r1, i32 3 -store i64 %r149, i64* %r151 -%r152 = lshr i320 %r148, 64 -%r153 = trunc i320 %r152 to i64 -%r155 = getelementptr i64, i64* %r1, i32 4 -store i64 %r153, i64* %r155 -%r156 = lshr i704 %r135, 320 -%r157 = trunc i704 %r156 to i320 -%r158 = lshr i704 %r135, 640 -%r159 = trunc i704 %r158 to i1 -%r160 = load i64, i64* %r4 -%r161 = zext i64 %r160 to i128 -%r163 = getelementptr i64, i64* %r4, i32 1 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i128 -%r166 = shl i128 %r165, 64 -%r167 = or i128 %r161, %r166 -%r168 = zext i128 %r167 to i192 -%r170 = getelementptr i64, i64* %r4, i32 2 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i192 -%r173 = shl i192 %r172, 128 -%r174 = or i192 %r168, %r173 -%r175 = zext i192 %r174 to i256 -%r177 = getelementptr i64, i64* %r4, i32 3 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i256 -%r180 = shl i256 %r179, 192 -%r181 = or i256 %r175, %r180 -%r182 = zext i256 %r181 to i320 -%r184 = getelementptr i64, i64* %r4, i32 4 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i320 -%r187 = shl i320 %r186, 256 -%r188 = or i320 %r182, %r187 -%r190 = select i1 %r159, i320 %r188, i320 0 -%r191 = add i320 %r157, %r190 -%r193 = getelementptr i64, i64* %r1, i32 5 -%r194 = trunc i320 %r191 to i64 -%r196 = getelementptr i64, i64* %r193, i32 0 -store i64 %r194, i64* %r196 -%r197 = lshr i320 %r191, 64 -%r198 = trunc i320 %r197 to i64 -%r200 = getelementptr i64, i64* %r193, i32 1 -store i64 %r198, i64* %r200 -%r201 = lshr i320 %r197, 64 -%r202 = trunc i320 %r201 to i64 -%r204 = getelementptr i64, i64* %r193, i32 2 -store i64 %r202, i64* %r204 -%r205 = lshr i320 %r201, 64 -%r206 = trunc i320 %r205 to i64 -%r208 = getelementptr i64, i64* %r193, i32 3 -store i64 %r206, i64* %r208 -%r209 = lshr i320 %r205, 64 -%r210 = trunc i320 %r209 to i64 -%r212 = getelementptr i64, i64* %r193, i32 4 -store i64 %r210, i64* %r212 -ret void -} -define i448 @mulPv384x64(i64* noalias %r2, i64 %r3) -{ -%r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) -%r6 = trunc i128 %r5 to i64 -%r7 = call i64 @extractHigh64(i128 %r5) -%r9 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 1) -%r10 = trunc i128 %r9 to i64 -%r11 = call i64 @extractHigh64(i128 %r9) -%r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) -%r14 = trunc i128 %r13 to i64 -%r15 = call i64 @extractHigh64(i128 %r13) -%r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) -%r18 = trunc i128 %r17 to i64 -%r19 = call i64 @extractHigh64(i128 %r17) -%r21 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 4) -%r22 = trunc i128 %r21 to i64 -%r23 = call i64 @extractHigh64(i128 %r21) -%r25 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 5) -%r26 = trunc i128 %r25 to i64 -%r27 = call i64 @extractHigh64(i128 %r25) -%r28 = zext i64 %r6 to i128 -%r29 = zext i64 %r10 to i128 -%r30 = shl i128 %r29, 64 -%r31 = or i128 %r28, %r30 -%r32 = zext i128 %r31 to i192 -%r33 = zext i64 %r14 to i192 -%r34 = shl i192 %r33, 128 -%r35 = or i192 %r32, %r34 -%r36 = zext i192 %r35 to i256 -%r37 = zext i64 %r18 to i256 -%r38 = shl i256 %r37, 192 -%r39 = or i256 %r36, %r38 -%r40 = zext i256 %r39 to i320 -%r41 = zext i64 %r22 to i320 -%r42 = shl i320 %r41, 256 -%r43 = or i320 %r40, %r42 -%r44 = zext i320 %r43 to i384 -%r45 = zext i64 %r26 to i384 -%r46 = shl i384 %r45, 320 -%r47 = or i384 %r44, %r46 -%r48 = zext i64 %r7 to i128 -%r49 = zext i64 %r11 to i128 -%r50 = shl i128 %r49, 64 -%r51 = or i128 %r48, %r50 -%r52 = zext i128 %r51 to i192 -%r53 = zext i64 %r15 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r52, %r54 -%r56 = zext i192 %r55 to i256 -%r57 = zext i64 %r19 to i256 -%r58 = shl i256 %r57, 192 -%r59 = or i256 %r56, %r58 -%r60 = zext i256 %r59 to i320 -%r61 = zext i64 %r23 to i320 -%r62 = shl i320 %r61, 256 -%r63 = or i320 %r60, %r62 -%r64 = zext i320 %r63 to i384 -%r65 = zext i64 %r27 to i384 -%r66 = shl i384 %r65, 320 -%r67 = or i384 %r64, %r66 -%r68 = zext i384 %r47 to i448 -%r69 = zext i384 %r67 to i448 -%r70 = shl i448 %r69, 64 -%r71 = add i448 %r68, %r70 -ret i448 %r71 -} -define void @mcl_fp_mulUnitPre6L(i64* noalias %r1, i64* noalias %r2, i64 %r3) -{ -%r4 = call i448 @mulPv384x64(i64* %r2, i64 %r3) -%r5 = trunc i448 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i448 %r4, 64 -%r9 = trunc i448 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i448 %r8, 64 -%r13 = trunc i448 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i448 %r12, 64 -%r17 = trunc i448 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i448 %r16, 64 -%r21 = trunc i448 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 -%r24 = lshr i448 %r20, 64 -%r25 = trunc i448 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 5 -store i64 %r25, i64* %r27 -%r28 = lshr i448 %r24, 64 -%r29 = trunc i448 %r28 to i64 -%r31 = getelementptr i64, i64* %r1, i32 6 -store i64 %r29, i64* %r31 -ret void -} -define void @mcl_fpDbl_mulPre6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r4 = load i64, i64* %r3 -%r5 = call i448 @mulPv384x64(i64* %r2, i64 %r4) -%r6 = trunc i448 %r5 to i64 -store i64 %r6, i64* %r1 -%r7 = lshr i448 %r5, 64 -%r9 = getelementptr i64, i64* %r3, i32 1 -%r10 = load i64, i64* %r9 -%r11 = call i448 @mulPv384x64(i64* %r2, i64 %r10) -%r12 = add i448 %r7, %r11 -%r13 = trunc i448 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 1 -store i64 %r13, i64* %r15 -%r16 = lshr i448 %r12, 64 -%r18 = getelementptr i64, i64* %r3, i32 2 -%r19 = load i64, i64* %r18 -%r20 = call i448 @mulPv384x64(i64* %r2, i64 %r19) -%r21 = add i448 %r16, %r20 -%r22 = trunc i448 %r21 to i64 -%r24 = getelementptr i64, i64* %r1, i32 2 -store i64 %r22, i64* %r24 -%r25 = lshr i448 %r21, 64 -%r27 = getelementptr i64, i64* %r3, i32 3 -%r28 = load i64, i64* %r27 -%r29 = call i448 @mulPv384x64(i64* %r2, i64 %r28) -%r30 = add i448 %r25, %r29 -%r31 = trunc i448 %r30 to i64 -%r33 = getelementptr i64, i64* %r1, i32 3 -store i64 %r31, i64* %r33 -%r34 = lshr i448 %r30, 64 -%r36 = getelementptr i64, i64* %r3, i32 4 -%r37 = load i64, i64* %r36 -%r38 = call i448 @mulPv384x64(i64* %r2, i64 %r37) -%r39 = add i448 %r34, %r38 -%r40 = trunc i448 %r39 to i64 -%r42 = getelementptr i64, i64* %r1, i32 4 -store i64 %r40, i64* %r42 -%r43 = lshr i448 %r39, 64 -%r45 = getelementptr i64, i64* %r3, i32 5 -%r46 = load i64, i64* %r45 -%r47 = call i448 @mulPv384x64(i64* %r2, i64 %r46) -%r48 = add i448 %r43, %r47 -%r50 = getelementptr i64, i64* %r1, i32 5 -%r51 = trunc i448 %r48 to i64 -%r53 = getelementptr i64, i64* %r50, i32 0 -store i64 %r51, i64* %r53 -%r54 = lshr i448 %r48, 64 -%r55 = trunc i448 %r54 to i64 -%r57 = getelementptr i64, i64* %r50, i32 1 -store i64 %r55, i64* %r57 -%r58 = lshr i448 %r54, 64 -%r59 = trunc i448 %r58 to i64 -%r61 = getelementptr i64, i64* %r50, i32 2 -store i64 %r59, i64* %r61 -%r62 = lshr i448 %r58, 64 -%r63 = trunc i448 %r62 to i64 -%r65 = getelementptr i64, i64* %r50, i32 3 -store i64 %r63, i64* %r65 -%r66 = lshr i448 %r62, 64 -%r67 = trunc i448 %r66 to i64 -%r69 = getelementptr i64, i64* %r50, i32 4 -store i64 %r67, i64* %r69 -%r70 = lshr i448 %r66, 64 -%r71 = trunc i448 %r70 to i64 -%r73 = getelementptr i64, i64* %r50, i32 5 -store i64 %r71, i64* %r73 -%r74 = lshr i448 %r70, 64 -%r75 = trunc i448 %r74 to i64 -%r77 = getelementptr i64, i64* %r50, i32 6 -store i64 %r75, i64* %r77 -ret void -} -define void @mcl_fpDbl_sqrPre6L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = call i448 @mulPv384x64(i64* %r2, i64 %r3) -%r5 = trunc i448 %r4 to i64 -store i64 %r5, i64* %r1 -%r6 = lshr i448 %r4, 64 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = call i448 @mulPv384x64(i64* %r2, i64 %r9) -%r11 = add i448 %r6, %r10 -%r12 = trunc i448 %r11 to i64 -%r14 = getelementptr i64, i64* %r1, i32 1 -store i64 %r12, i64* %r14 -%r15 = lshr i448 %r11, 64 -%r17 = getelementptr i64, i64* %r2, i32 2 -%r18 = load i64, i64* %r17 -%r19 = call i448 @mulPv384x64(i64* %r2, i64 %r18) -%r20 = add i448 %r15, %r19 -%r21 = trunc i448 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 2 -store i64 %r21, i64* %r23 -%r24 = lshr i448 %r20, 64 -%r26 = getelementptr i64, i64* %r2, i32 3 -%r27 = load i64, i64* %r26 -%r28 = call i448 @mulPv384x64(i64* %r2, i64 %r27) -%r29 = add i448 %r24, %r28 -%r30 = trunc i448 %r29 to i64 -%r32 = getelementptr i64, i64* %r1, i32 3 -store i64 %r30, i64* %r32 -%r33 = lshr i448 %r29, 64 -%r35 = getelementptr i64, i64* %r2, i32 4 -%r36 = load i64, i64* %r35 -%r37 = call i448 @mulPv384x64(i64* %r2, i64 %r36) -%r38 = add i448 %r33, %r37 -%r39 = trunc i448 %r38 to i64 -%r41 = getelementptr i64, i64* %r1, i32 4 -store i64 %r39, i64* %r41 -%r42 = lshr i448 %r38, 64 -%r44 = getelementptr i64, i64* %r2, i32 5 -%r45 = load i64, i64* %r44 -%r46 = call i448 @mulPv384x64(i64* %r2, i64 %r45) -%r47 = add i448 %r42, %r46 -%r49 = getelementptr i64, i64* %r1, i32 5 -%r50 = trunc i448 %r47 to i64 -%r52 = getelementptr i64, i64* %r49, i32 0 -store i64 %r50, i64* %r52 -%r53 = lshr i448 %r47, 64 -%r54 = trunc i448 %r53 to i64 -%r56 = getelementptr i64, i64* %r49, i32 1 -store i64 %r54, i64* %r56 -%r57 = lshr i448 %r53, 64 -%r58 = trunc i448 %r57 to i64 -%r60 = getelementptr i64, i64* %r49, i32 2 -store i64 %r58, i64* %r60 -%r61 = lshr i448 %r57, 64 -%r62 = trunc i448 %r61 to i64 -%r64 = getelementptr i64, i64* %r49, i32 3 -store i64 %r62, i64* %r64 -%r65 = lshr i448 %r61, 64 -%r66 = trunc i448 %r65 to i64 -%r68 = getelementptr i64, i64* %r49, i32 4 -store i64 %r66, i64* %r68 -%r69 = lshr i448 %r65, 64 -%r70 = trunc i448 %r69 to i64 -%r72 = getelementptr i64, i64* %r49, i32 5 -store i64 %r70, i64* %r72 -%r73 = lshr i448 %r69, 64 -%r74 = trunc i448 %r73 to i64 -%r76 = getelementptr i64, i64* %r49, i32 6 -store i64 %r74, i64* %r76 -ret void -} -define void @mcl_fp_mont6L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r9 = getelementptr i64, i64* %r3, i32 0 -%r10 = load i64, i64* %r9 -%r11 = call i448 @mulPv384x64(i64* %r2, i64 %r10) -%r12 = zext i448 %r11 to i512 -%r13 = trunc i448 %r11 to i64 -%r14 = mul i64 %r13, %r7 -%r15 = call i448 @mulPv384x64(i64* %r4, i64 %r14) -%r16 = zext i448 %r15 to i512 -%r17 = add i512 %r12, %r16 -%r18 = lshr i512 %r17, 64 -%r20 = getelementptr i64, i64* %r3, i32 1 -%r21 = load i64, i64* %r20 -%r22 = call i448 @mulPv384x64(i64* %r2, i64 %r21) -%r23 = zext i448 %r22 to i512 -%r24 = add i512 %r18, %r23 -%r25 = trunc i512 %r24 to i64 -%r26 = mul i64 %r25, %r7 -%r27 = call i448 @mulPv384x64(i64* %r4, i64 %r26) -%r28 = zext i448 %r27 to i512 -%r29 = add i512 %r24, %r28 -%r30 = lshr i512 %r29, 64 -%r32 = getelementptr i64, i64* %r3, i32 2 -%r33 = load i64, i64* %r32 -%r34 = call i448 @mulPv384x64(i64* %r2, i64 %r33) -%r35 = zext i448 %r34 to i512 -%r36 = add i512 %r30, %r35 -%r37 = trunc i512 %r36 to i64 -%r38 = mul i64 %r37, %r7 -%r39 = call i448 @mulPv384x64(i64* %r4, i64 %r38) -%r40 = zext i448 %r39 to i512 -%r41 = add i512 %r36, %r40 -%r42 = lshr i512 %r41, 64 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = call i448 @mulPv384x64(i64* %r2, i64 %r45) -%r47 = zext i448 %r46 to i512 -%r48 = add i512 %r42, %r47 -%r49 = trunc i512 %r48 to i64 -%r50 = mul i64 %r49, %r7 -%r51 = call i448 @mulPv384x64(i64* %r4, i64 %r50) -%r52 = zext i448 %r51 to i512 -%r53 = add i512 %r48, %r52 -%r54 = lshr i512 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 4 -%r57 = load i64, i64* %r56 -%r58 = call i448 @mulPv384x64(i64* %r2, i64 %r57) -%r59 = zext i448 %r58 to i512 -%r60 = add i512 %r54, %r59 -%r61 = trunc i512 %r60 to i64 -%r62 = mul i64 %r61, %r7 -%r63 = call i448 @mulPv384x64(i64* %r4, i64 %r62) -%r64 = zext i448 %r63 to i512 -%r65 = add i512 %r60, %r64 -%r66 = lshr i512 %r65, 64 -%r68 = getelementptr i64, i64* %r3, i32 5 -%r69 = load i64, i64* %r68 -%r70 = call i448 @mulPv384x64(i64* %r2, i64 %r69) -%r71 = zext i448 %r70 to i512 -%r72 = add i512 %r66, %r71 -%r73 = trunc i512 %r72 to i64 -%r74 = mul i64 %r73, %r7 -%r75 = call i448 @mulPv384x64(i64* %r4, i64 %r74) -%r76 = zext i448 %r75 to i512 -%r77 = add i512 %r72, %r76 -%r78 = lshr i512 %r77, 64 -%r79 = trunc i512 %r78 to i448 -%r80 = load i64, i64* %r4 -%r81 = zext i64 %r80 to i128 -%r83 = getelementptr i64, i64* %r4, i32 1 -%r84 = load i64, i64* %r83 -%r85 = zext i64 %r84 to i128 -%r86 = shl i128 %r85, 64 -%r87 = or i128 %r81, %r86 -%r88 = zext i128 %r87 to i192 -%r90 = getelementptr i64, i64* %r4, i32 2 -%r91 = load i64, i64* %r90 -%r92 = zext i64 %r91 to i192 -%r93 = shl i192 %r92, 128 -%r94 = or i192 %r88, %r93 -%r95 = zext i192 %r94 to i256 -%r97 = getelementptr i64, i64* %r4, i32 3 -%r98 = load i64, i64* %r97 -%r99 = zext i64 %r98 to i256 -%r100 = shl i256 %r99, 192 -%r101 = or i256 %r95, %r100 -%r102 = zext i256 %r101 to i320 -%r104 = getelementptr i64, i64* %r4, i32 4 -%r105 = load i64, i64* %r104 -%r106 = zext i64 %r105 to i320 -%r107 = shl i320 %r106, 256 -%r108 = or i320 %r102, %r107 -%r109 = zext i320 %r108 to i384 -%r111 = getelementptr i64, i64* %r4, i32 5 -%r112 = load i64, i64* %r111 -%r113 = zext i64 %r112 to i384 -%r114 = shl i384 %r113, 320 -%r115 = or i384 %r109, %r114 -%r116 = zext i384 %r115 to i448 -%r117 = sub i448 %r79, %r116 -%r118 = lshr i448 %r117, 384 -%r119 = trunc i448 %r118 to i1 -%r120 = select i1 %r119, i448 %r79, i448 %r117 -%r121 = trunc i448 %r120 to i384 -%r122 = trunc i384 %r121 to i64 -%r124 = getelementptr i64, i64* %r1, i32 0 -store i64 %r122, i64* %r124 -%r125 = lshr i384 %r121, 64 -%r126 = trunc i384 %r125 to i64 -%r128 = getelementptr i64, i64* %r1, i32 1 -store i64 %r126, i64* %r128 -%r129 = lshr i384 %r125, 64 -%r130 = trunc i384 %r129 to i64 -%r132 = getelementptr i64, i64* %r1, i32 2 -store i64 %r130, i64* %r132 -%r133 = lshr i384 %r129, 64 -%r134 = trunc i384 %r133 to i64 -%r136 = getelementptr i64, i64* %r1, i32 3 -store i64 %r134, i64* %r136 -%r137 = lshr i384 %r133, 64 -%r138 = trunc i384 %r137 to i64 -%r140 = getelementptr i64, i64* %r1, i32 4 -store i64 %r138, i64* %r140 -%r141 = lshr i384 %r137, 64 -%r142 = trunc i384 %r141 to i64 -%r144 = getelementptr i64, i64* %r1, i32 5 -store i64 %r142, i64* %r144 -ret void -} -define void @mcl_fp_montNF6L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r8 = load i64, i64* %r3 -%r9 = call i448 @mulPv384x64(i64* %r2, i64 %r8) -%r10 = trunc i448 %r9 to i64 -%r11 = mul i64 %r10, %r7 -%r12 = call i448 @mulPv384x64(i64* %r4, i64 %r11) -%r13 = add i448 %r9, %r12 -%r14 = lshr i448 %r13, 64 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = call i448 @mulPv384x64(i64* %r2, i64 %r17) -%r19 = add i448 %r14, %r18 -%r20 = trunc i448 %r19 to i64 -%r21 = mul i64 %r20, %r7 -%r22 = call i448 @mulPv384x64(i64* %r4, i64 %r21) -%r23 = add i448 %r19, %r22 -%r24 = lshr i448 %r23, 64 -%r26 = getelementptr i64, i64* %r3, i32 2 -%r27 = load i64, i64* %r26 -%r28 = call i448 @mulPv384x64(i64* %r2, i64 %r27) -%r29 = add i448 %r24, %r28 -%r30 = trunc i448 %r29 to i64 -%r31 = mul i64 %r30, %r7 -%r32 = call i448 @mulPv384x64(i64* %r4, i64 %r31) -%r33 = add i448 %r29, %r32 -%r34 = lshr i448 %r33, 64 -%r36 = getelementptr i64, i64* %r3, i32 3 -%r37 = load i64, i64* %r36 -%r38 = call i448 @mulPv384x64(i64* %r2, i64 %r37) -%r39 = add i448 %r34, %r38 -%r40 = trunc i448 %r39 to i64 -%r41 = mul i64 %r40, %r7 -%r42 = call i448 @mulPv384x64(i64* %r4, i64 %r41) -%r43 = add i448 %r39, %r42 -%r44 = lshr i448 %r43, 64 -%r46 = getelementptr i64, i64* %r3, i32 4 -%r47 = load i64, i64* %r46 -%r48 = call i448 @mulPv384x64(i64* %r2, i64 %r47) -%r49 = add i448 %r44, %r48 -%r50 = trunc i448 %r49 to i64 -%r51 = mul i64 %r50, %r7 -%r52 = call i448 @mulPv384x64(i64* %r4, i64 %r51) -%r53 = add i448 %r49, %r52 -%r54 = lshr i448 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 5 -%r57 = load i64, i64* %r56 -%r58 = call i448 @mulPv384x64(i64* %r2, i64 %r57) -%r59 = add i448 %r54, %r58 -%r60 = trunc i448 %r59 to i64 -%r61 = mul i64 %r60, %r7 -%r62 = call i448 @mulPv384x64(i64* %r4, i64 %r61) -%r63 = add i448 %r59, %r62 -%r64 = lshr i448 %r63, 64 -%r65 = trunc i448 %r64 to i384 -%r66 = load i64, i64* %r4 -%r67 = zext i64 %r66 to i128 -%r69 = getelementptr i64, i64* %r4, i32 1 -%r70 = load i64, i64* %r69 -%r71 = zext i64 %r70 to i128 -%r72 = shl i128 %r71, 64 -%r73 = or i128 %r67, %r72 -%r74 = zext i128 %r73 to i192 -%r76 = getelementptr i64, i64* %r4, i32 2 -%r77 = load i64, i64* %r76 -%r78 = zext i64 %r77 to i192 -%r79 = shl i192 %r78, 128 -%r80 = or i192 %r74, %r79 -%r81 = zext i192 %r80 to i256 -%r83 = getelementptr i64, i64* %r4, i32 3 -%r84 = load i64, i64* %r83 -%r85 = zext i64 %r84 to i256 -%r86 = shl i256 %r85, 192 -%r87 = or i256 %r81, %r86 -%r88 = zext i256 %r87 to i320 -%r90 = getelementptr i64, i64* %r4, i32 4 -%r91 = load i64, i64* %r90 -%r92 = zext i64 %r91 to i320 -%r93 = shl i320 %r92, 256 -%r94 = or i320 %r88, %r93 -%r95 = zext i320 %r94 to i384 -%r97 = getelementptr i64, i64* %r4, i32 5 -%r98 = load i64, i64* %r97 -%r99 = zext i64 %r98 to i384 -%r100 = shl i384 %r99, 320 -%r101 = or i384 %r95, %r100 -%r102 = sub i384 %r65, %r101 -%r103 = lshr i384 %r102, 383 -%r104 = trunc i384 %r103 to i1 -%r105 = select i1 %r104, i384 %r65, i384 %r102 -%r106 = trunc i384 %r105 to i64 -%r108 = getelementptr i64, i64* %r1, i32 0 -store i64 %r106, i64* %r108 -%r109 = lshr i384 %r105, 64 -%r110 = trunc i384 %r109 to i64 -%r112 = getelementptr i64, i64* %r1, i32 1 -store i64 %r110, i64* %r112 -%r113 = lshr i384 %r109, 64 -%r114 = trunc i384 %r113 to i64 -%r116 = getelementptr i64, i64* %r1, i32 2 -store i64 %r114, i64* %r116 -%r117 = lshr i384 %r113, 64 -%r118 = trunc i384 %r117 to i64 -%r120 = getelementptr i64, i64* %r1, i32 3 -store i64 %r118, i64* %r120 -%r121 = lshr i384 %r117, 64 -%r122 = trunc i384 %r121 to i64 -%r124 = getelementptr i64, i64* %r1, i32 4 -store i64 %r122, i64* %r124 -%r125 = lshr i384 %r121, 64 -%r126 = trunc i384 %r125 to i64 -%r128 = getelementptr i64, i64* %r1, i32 5 -store i64 %r126, i64* %r128 -ret void -} -define void @mcl_fp_montRed6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r3, i32 -1 -%r6 = load i64, i64* %r5 -%r7 = load i64, i64* %r3 -%r8 = zext i64 %r7 to i128 -%r10 = getelementptr i64, i64* %r3, i32 1 -%r11 = load i64, i64* %r10 -%r12 = zext i64 %r11 to i128 -%r13 = shl i128 %r12, 64 -%r14 = or i128 %r8, %r13 -%r15 = zext i128 %r14 to i192 -%r17 = getelementptr i64, i64* %r3, i32 2 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i192 -%r20 = shl i192 %r19, 128 -%r21 = or i192 %r15, %r20 -%r22 = zext i192 %r21 to i256 -%r24 = getelementptr i64, i64* %r3, i32 3 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i256 -%r27 = shl i256 %r26, 192 -%r28 = or i256 %r22, %r27 -%r29 = zext i256 %r28 to i320 -%r31 = getelementptr i64, i64* %r3, i32 4 -%r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i320 -%r34 = shl i320 %r33, 256 -%r35 = or i320 %r29, %r34 -%r36 = zext i320 %r35 to i384 -%r38 = getelementptr i64, i64* %r3, i32 5 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i384 -%r41 = shl i384 %r40, 320 -%r42 = or i384 %r36, %r41 -%r43 = load i64, i64* %r2 -%r44 = zext i64 %r43 to i128 -%r46 = getelementptr i64, i64* %r2, i32 1 -%r47 = load i64, i64* %r46 -%r48 = zext i64 %r47 to i128 -%r49 = shl i128 %r48, 64 -%r50 = or i128 %r44, %r49 -%r51 = zext i128 %r50 to i192 -%r53 = getelementptr i64, i64* %r2, i32 2 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i192 -%r56 = shl i192 %r55, 128 -%r57 = or i192 %r51, %r56 -%r58 = zext i192 %r57 to i256 -%r60 = getelementptr i64, i64* %r2, i32 3 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i256 -%r63 = shl i256 %r62, 192 -%r64 = or i256 %r58, %r63 -%r65 = zext i256 %r64 to i320 -%r67 = getelementptr i64, i64* %r2, i32 4 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i320 -%r70 = shl i320 %r69, 256 -%r71 = or i320 %r65, %r70 -%r72 = zext i320 %r71 to i384 -%r74 = getelementptr i64, i64* %r2, i32 5 -%r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i384 -%r77 = shl i384 %r76, 320 -%r78 = or i384 %r72, %r77 -%r79 = zext i384 %r78 to i448 -%r81 = getelementptr i64, i64* %r2, i32 6 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i448 -%r84 = shl i448 %r83, 384 -%r85 = or i448 %r79, %r84 -%r86 = zext i448 %r85 to i512 -%r88 = getelementptr i64, i64* %r2, i32 7 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i512 -%r91 = shl i512 %r90, 448 -%r92 = or i512 %r86, %r91 -%r93 = zext i512 %r92 to i576 -%r95 = getelementptr i64, i64* %r2, i32 8 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i576 -%r98 = shl i576 %r97, 512 -%r99 = or i576 %r93, %r98 -%r100 = zext i576 %r99 to i640 -%r102 = getelementptr i64, i64* %r2, i32 9 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i640 -%r105 = shl i640 %r104, 576 -%r106 = or i640 %r100, %r105 -%r107 = zext i640 %r106 to i704 -%r109 = getelementptr i64, i64* %r2, i32 10 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i704 -%r112 = shl i704 %r111, 640 -%r113 = or i704 %r107, %r112 -%r114 = zext i704 %r113 to i768 -%r116 = getelementptr i64, i64* %r2, i32 11 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i768 -%r119 = shl i768 %r118, 704 -%r120 = or i768 %r114, %r119 -%r121 = zext i768 %r120 to i832 -%r122 = trunc i832 %r121 to i64 -%r123 = mul i64 %r122, %r6 -%r124 = call i448 @mulPv384x64(i64* %r3, i64 %r123) -%r125 = zext i448 %r124 to i832 -%r126 = add i832 %r121, %r125 -%r127 = lshr i832 %r126, 64 -%r128 = trunc i832 %r127 to i768 -%r129 = trunc i768 %r128 to i64 -%r130 = mul i64 %r129, %r6 -%r131 = call i448 @mulPv384x64(i64* %r3, i64 %r130) -%r132 = zext i448 %r131 to i768 -%r133 = add i768 %r128, %r132 -%r134 = lshr i768 %r133, 64 -%r135 = trunc i768 %r134 to i704 -%r136 = trunc i704 %r135 to i64 -%r137 = mul i64 %r136, %r6 -%r138 = call i448 @mulPv384x64(i64* %r3, i64 %r137) -%r139 = zext i448 %r138 to i704 -%r140 = add i704 %r135, %r139 -%r141 = lshr i704 %r140, 64 -%r142 = trunc i704 %r141 to i640 -%r143 = trunc i640 %r142 to i64 -%r144 = mul i64 %r143, %r6 -%r145 = call i448 @mulPv384x64(i64* %r3, i64 %r144) -%r146 = zext i448 %r145 to i640 -%r147 = add i640 %r142, %r146 -%r148 = lshr i640 %r147, 64 -%r149 = trunc i640 %r148 to i576 -%r150 = trunc i576 %r149 to i64 -%r151 = mul i64 %r150, %r6 -%r152 = call i448 @mulPv384x64(i64* %r3, i64 %r151) -%r153 = zext i448 %r152 to i576 -%r154 = add i576 %r149, %r153 -%r155 = lshr i576 %r154, 64 -%r156 = trunc i576 %r155 to i512 -%r157 = trunc i512 %r156 to i64 -%r158 = mul i64 %r157, %r6 -%r159 = call i448 @mulPv384x64(i64* %r3, i64 %r158) -%r160 = zext i448 %r159 to i512 -%r161 = add i512 %r156, %r160 -%r162 = lshr i512 %r161, 64 -%r163 = trunc i512 %r162 to i448 -%r164 = zext i384 %r42 to i448 -%r165 = sub i448 %r163, %r164 -%r166 = lshr i448 %r165, 384 -%r167 = trunc i448 %r166 to i1 -%r168 = select i1 %r167, i448 %r163, i448 %r165 -%r169 = trunc i448 %r168 to i384 -%r170 = trunc i384 %r169 to i64 -%r172 = getelementptr i64, i64* %r1, i32 0 -store i64 %r170, i64* %r172 -%r173 = lshr i384 %r169, 64 -%r174 = trunc i384 %r173 to i64 -%r176 = getelementptr i64, i64* %r1, i32 1 -store i64 %r174, i64* %r176 -%r177 = lshr i384 %r173, 64 -%r178 = trunc i384 %r177 to i64 -%r180 = getelementptr i64, i64* %r1, i32 2 -store i64 %r178, i64* %r180 -%r181 = lshr i384 %r177, 64 -%r182 = trunc i384 %r181 to i64 -%r184 = getelementptr i64, i64* %r1, i32 3 -store i64 %r182, i64* %r184 -%r185 = lshr i384 %r181, 64 -%r186 = trunc i384 %r185 to i64 -%r188 = getelementptr i64, i64* %r1, i32 4 -store i64 %r186, i64* %r188 -%r189 = lshr i384 %r185, 64 -%r190 = trunc i384 %r189 to i64 -%r192 = getelementptr i64, i64* %r1, i32 5 -store i64 %r190, i64* %r192 -ret void -} -define i64 @mcl_fp_addPre6L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r42 = load i64, i64* %r4 -%r43 = zext i64 %r42 to i128 -%r45 = getelementptr i64, i64* %r4, i32 1 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i128 -%r48 = shl i128 %r47, 64 -%r49 = or i128 %r43, %r48 -%r50 = zext i128 %r49 to i192 -%r52 = getelementptr i64, i64* %r4, i32 2 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i192 -%r55 = shl i192 %r54, 128 -%r56 = or i192 %r50, %r55 -%r57 = zext i192 %r56 to i256 -%r59 = getelementptr i64, i64* %r4, i32 3 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i256 -%r62 = shl i256 %r61, 192 -%r63 = or i256 %r57, %r62 -%r64 = zext i256 %r63 to i320 -%r66 = getelementptr i64, i64* %r4, i32 4 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i320 -%r69 = shl i320 %r68, 256 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i384 -%r73 = getelementptr i64, i64* %r4, i32 5 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i384 -%r76 = shl i384 %r75, 320 -%r77 = or i384 %r71, %r76 -%r78 = zext i384 %r77 to i448 -%r79 = add i448 %r41, %r78 -%r80 = trunc i448 %r79 to i384 -%r81 = trunc i384 %r80 to i64 -%r83 = getelementptr i64, i64* %r2, i32 0 -store i64 %r81, i64* %r83 -%r84 = lshr i384 %r80, 64 -%r85 = trunc i384 %r84 to i64 -%r87 = getelementptr i64, i64* %r2, i32 1 -store i64 %r85, i64* %r87 -%r88 = lshr i384 %r84, 64 -%r89 = trunc i384 %r88 to i64 -%r91 = getelementptr i64, i64* %r2, i32 2 -store i64 %r89, i64* %r91 -%r92 = lshr i384 %r88, 64 -%r93 = trunc i384 %r92 to i64 -%r95 = getelementptr i64, i64* %r2, i32 3 -store i64 %r93, i64* %r95 -%r96 = lshr i384 %r92, 64 -%r97 = trunc i384 %r96 to i64 -%r99 = getelementptr i64, i64* %r2, i32 4 -store i64 %r97, i64* %r99 -%r100 = lshr i384 %r96, 64 -%r101 = trunc i384 %r100 to i64 -%r103 = getelementptr i64, i64* %r2, i32 5 -store i64 %r101, i64* %r103 -%r104 = lshr i448 %r79, 384 -%r105 = trunc i448 %r104 to i64 -ret i64 %r105 -} -define i64 @mcl_fp_subPre6L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r42 = load i64, i64* %r4 -%r43 = zext i64 %r42 to i128 -%r45 = getelementptr i64, i64* %r4, i32 1 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i128 -%r48 = shl i128 %r47, 64 -%r49 = or i128 %r43, %r48 -%r50 = zext i128 %r49 to i192 -%r52 = getelementptr i64, i64* %r4, i32 2 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i192 -%r55 = shl i192 %r54, 128 -%r56 = or i192 %r50, %r55 -%r57 = zext i192 %r56 to i256 -%r59 = getelementptr i64, i64* %r4, i32 3 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i256 -%r62 = shl i256 %r61, 192 -%r63 = or i256 %r57, %r62 -%r64 = zext i256 %r63 to i320 -%r66 = getelementptr i64, i64* %r4, i32 4 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i320 -%r69 = shl i320 %r68, 256 -%r70 = or i320 %r64, %r69 -%r71 = zext i320 %r70 to i384 -%r73 = getelementptr i64, i64* %r4, i32 5 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i384 -%r76 = shl i384 %r75, 320 -%r77 = or i384 %r71, %r76 -%r78 = zext i384 %r77 to i448 -%r79 = sub i448 %r41, %r78 -%r80 = trunc i448 %r79 to i384 -%r81 = trunc i384 %r80 to i64 -%r83 = getelementptr i64, i64* %r2, i32 0 -store i64 %r81, i64* %r83 -%r84 = lshr i384 %r80, 64 -%r85 = trunc i384 %r84 to i64 -%r87 = getelementptr i64, i64* %r2, i32 1 -store i64 %r85, i64* %r87 -%r88 = lshr i384 %r84, 64 -%r89 = trunc i384 %r88 to i64 -%r91 = getelementptr i64, i64* %r2, i32 2 -store i64 %r89, i64* %r91 -%r92 = lshr i384 %r88, 64 -%r93 = trunc i384 %r92 to i64 -%r95 = getelementptr i64, i64* %r2, i32 3 -store i64 %r93, i64* %r95 -%r96 = lshr i384 %r92, 64 -%r97 = trunc i384 %r96 to i64 -%r99 = getelementptr i64, i64* %r2, i32 4 -store i64 %r97, i64* %r99 -%r100 = lshr i384 %r96, 64 -%r101 = trunc i384 %r100 to i64 -%r103 = getelementptr i64, i64* %r2, i32 5 -store i64 %r101, i64* %r103 -%r104 = lshr i448 %r79, 384 -%r105 = trunc i448 %r104 to i64 -%r107 = and i64 %r105, 1 -ret i64 %r107 -} -define void @mcl_fp_shr1_6L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = zext i64 %r3 to i128 -%r6 = getelementptr i64, i64* %r2, i32 1 -%r7 = load i64, i64* %r6 -%r8 = zext i64 %r7 to i128 -%r9 = shl i128 %r8, 64 -%r10 = or i128 %r4, %r9 -%r11 = zext i128 %r10 to i192 -%r13 = getelementptr i64, i64* %r2, i32 2 -%r14 = load i64, i64* %r13 -%r15 = zext i64 %r14 to i192 -%r16 = shl i192 %r15, 128 -%r17 = or i192 %r11, %r16 -%r18 = zext i192 %r17 to i256 -%r20 = getelementptr i64, i64* %r2, i32 3 -%r21 = load i64, i64* %r20 -%r22 = zext i64 %r21 to i256 -%r23 = shl i256 %r22, 192 -%r24 = or i256 %r18, %r23 -%r25 = zext i256 %r24 to i320 -%r27 = getelementptr i64, i64* %r2, i32 4 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i320 -%r30 = shl i320 %r29, 256 -%r31 = or i320 %r25, %r30 -%r32 = zext i320 %r31 to i384 -%r34 = getelementptr i64, i64* %r2, i32 5 -%r35 = load i64, i64* %r34 -%r36 = zext i64 %r35 to i384 -%r37 = shl i384 %r36, 320 -%r38 = or i384 %r32, %r37 -%r39 = lshr i384 %r38, 1 -%r40 = trunc i384 %r39 to i64 -%r42 = getelementptr i64, i64* %r1, i32 0 -store i64 %r40, i64* %r42 -%r43 = lshr i384 %r39, 64 -%r44 = trunc i384 %r43 to i64 -%r46 = getelementptr i64, i64* %r1, i32 1 -store i64 %r44, i64* %r46 -%r47 = lshr i384 %r43, 64 -%r48 = trunc i384 %r47 to i64 -%r50 = getelementptr i64, i64* %r1, i32 2 -store i64 %r48, i64* %r50 -%r51 = lshr i384 %r47, 64 -%r52 = trunc i384 %r51 to i64 -%r54 = getelementptr i64, i64* %r1, i32 3 -store i64 %r52, i64* %r54 -%r55 = lshr i384 %r51, 64 -%r56 = trunc i384 %r55 to i64 -%r58 = getelementptr i64, i64* %r1, i32 4 -store i64 %r56, i64* %r58 -%r59 = lshr i384 %r55, 64 -%r60 = trunc i384 %r59 to i64 -%r62 = getelementptr i64, i64* %r1, i32 5 -store i64 %r60, i64* %r62 -ret void -} -define void @mcl_fp_add6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = zext i384 %r40 to i448 -%r78 = zext i384 %r76 to i448 -%r79 = add i448 %r77, %r78 -%r80 = trunc i448 %r79 to i384 -%r81 = trunc i384 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 0 -store i64 %r81, i64* %r83 -%r84 = lshr i384 %r80, 64 -%r85 = trunc i384 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 1 -store i64 %r85, i64* %r87 -%r88 = lshr i384 %r84, 64 -%r89 = trunc i384 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 2 -store i64 %r89, i64* %r91 -%r92 = lshr i384 %r88, 64 -%r93 = trunc i384 %r92 to i64 -%r95 = getelementptr i64, i64* %r1, i32 3 -store i64 %r93, i64* %r95 -%r96 = lshr i384 %r92, 64 -%r97 = trunc i384 %r96 to i64 -%r99 = getelementptr i64, i64* %r1, i32 4 -store i64 %r97, i64* %r99 -%r100 = lshr i384 %r96, 64 -%r101 = trunc i384 %r100 to i64 -%r103 = getelementptr i64, i64* %r1, i32 5 -store i64 %r101, i64* %r103 -%r104 = load i64, i64* %r4 -%r105 = zext i64 %r104 to i128 -%r107 = getelementptr i64, i64* %r4, i32 1 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i128 -%r110 = shl i128 %r109, 64 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i192 -%r114 = getelementptr i64, i64* %r4, i32 2 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i192 -%r117 = shl i192 %r116, 128 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i256 -%r121 = getelementptr i64, i64* %r4, i32 3 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i256 -%r124 = shl i256 %r123, 192 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i320 -%r128 = getelementptr i64, i64* %r4, i32 4 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i320 -%r131 = shl i320 %r130, 256 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r132 to i384 -%r135 = getelementptr i64, i64* %r4, i32 5 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i384 -%r138 = shl i384 %r137, 320 -%r139 = or i384 %r133, %r138 -%r140 = zext i384 %r139 to i448 -%r141 = sub i448 %r79, %r140 -%r142 = lshr i448 %r141, 384 -%r143 = trunc i448 %r142 to i1 -br i1%r143, label %carry, label %nocarry -nocarry: -%r144 = trunc i448 %r141 to i384 -%r145 = trunc i384 %r144 to i64 -%r147 = getelementptr i64, i64* %r1, i32 0 -store i64 %r145, i64* %r147 -%r148 = lshr i384 %r144, 64 -%r149 = trunc i384 %r148 to i64 -%r151 = getelementptr i64, i64* %r1, i32 1 -store i64 %r149, i64* %r151 -%r152 = lshr i384 %r148, 64 -%r153 = trunc i384 %r152 to i64 -%r155 = getelementptr i64, i64* %r1, i32 2 -store i64 %r153, i64* %r155 -%r156 = lshr i384 %r152, 64 -%r157 = trunc i384 %r156 to i64 -%r159 = getelementptr i64, i64* %r1, i32 3 -store i64 %r157, i64* %r159 -%r160 = lshr i384 %r156, 64 -%r161 = trunc i384 %r160 to i64 -%r163 = getelementptr i64, i64* %r1, i32 4 -store i64 %r161, i64* %r163 -%r164 = lshr i384 %r160, 64 -%r165 = trunc i384 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 5 -store i64 %r165, i64* %r167 -ret void -carry: -ret void -} -define void @mcl_fp_addNF6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = add i384 %r40, %r76 -%r78 = load i64, i64* %r4 -%r79 = zext i64 %r78 to i128 -%r81 = getelementptr i64, i64* %r4, i32 1 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i128 -%r84 = shl i128 %r83, 64 -%r85 = or i128 %r79, %r84 -%r86 = zext i128 %r85 to i192 -%r88 = getelementptr i64, i64* %r4, i32 2 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i192 -%r91 = shl i192 %r90, 128 -%r92 = or i192 %r86, %r91 -%r93 = zext i192 %r92 to i256 -%r95 = getelementptr i64, i64* %r4, i32 3 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i256 -%r98 = shl i256 %r97, 192 -%r99 = or i256 %r93, %r98 -%r100 = zext i256 %r99 to i320 -%r102 = getelementptr i64, i64* %r4, i32 4 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i320 -%r105 = shl i320 %r104, 256 -%r106 = or i320 %r100, %r105 -%r107 = zext i320 %r106 to i384 -%r109 = getelementptr i64, i64* %r4, i32 5 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i384 -%r112 = shl i384 %r111, 320 -%r113 = or i384 %r107, %r112 -%r114 = sub i384 %r77, %r113 -%r115 = lshr i384 %r114, 383 -%r116 = trunc i384 %r115 to i1 -%r117 = select i1 %r116, i384 %r77, i384 %r114 -%r118 = trunc i384 %r117 to i64 -%r120 = getelementptr i64, i64* %r1, i32 0 -store i64 %r118, i64* %r120 -%r121 = lshr i384 %r117, 64 -%r122 = trunc i384 %r121 to i64 -%r124 = getelementptr i64, i64* %r1, i32 1 -store i64 %r122, i64* %r124 -%r125 = lshr i384 %r121, 64 -%r126 = trunc i384 %r125 to i64 -%r128 = getelementptr i64, i64* %r1, i32 2 -store i64 %r126, i64* %r128 -%r129 = lshr i384 %r125, 64 -%r130 = trunc i384 %r129 to i64 -%r132 = getelementptr i64, i64* %r1, i32 3 -store i64 %r130, i64* %r132 -%r133 = lshr i384 %r129, 64 -%r134 = trunc i384 %r133 to i64 -%r136 = getelementptr i64, i64* %r1, i32 4 -store i64 %r134, i64* %r136 -%r137 = lshr i384 %r133, 64 -%r138 = trunc i384 %r137 to i64 -%r140 = getelementptr i64, i64* %r1, i32 5 -store i64 %r138, i64* %r140 -ret void -} -define void @mcl_fp_sub6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = zext i384 %r40 to i448 -%r78 = zext i384 %r76 to i448 -%r79 = sub i448 %r77, %r78 -%r80 = trunc i448 %r79 to i384 -%r81 = lshr i448 %r79, 384 -%r82 = trunc i448 %r81 to i1 -%r83 = trunc i384 %r80 to i64 -%r85 = getelementptr i64, i64* %r1, i32 0 -store i64 %r83, i64* %r85 -%r86 = lshr i384 %r80, 64 -%r87 = trunc i384 %r86 to i64 -%r89 = getelementptr i64, i64* %r1, i32 1 -store i64 %r87, i64* %r89 -%r90 = lshr i384 %r86, 64 -%r91 = trunc i384 %r90 to i64 -%r93 = getelementptr i64, i64* %r1, i32 2 -store i64 %r91, i64* %r93 -%r94 = lshr i384 %r90, 64 -%r95 = trunc i384 %r94 to i64 -%r97 = getelementptr i64, i64* %r1, i32 3 -store i64 %r95, i64* %r97 -%r98 = lshr i384 %r94, 64 -%r99 = trunc i384 %r98 to i64 -%r101 = getelementptr i64, i64* %r1, i32 4 -store i64 %r99, i64* %r101 -%r102 = lshr i384 %r98, 64 -%r103 = trunc i384 %r102 to i64 -%r105 = getelementptr i64, i64* %r1, i32 5 -store i64 %r103, i64* %r105 -br i1%r82, label %carry, label %nocarry -nocarry: -ret void -carry: -%r106 = load i64, i64* %r4 -%r107 = zext i64 %r106 to i128 -%r109 = getelementptr i64, i64* %r4, i32 1 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i128 -%r112 = shl i128 %r111, 64 -%r113 = or i128 %r107, %r112 -%r114 = zext i128 %r113 to i192 -%r116 = getelementptr i64, i64* %r4, i32 2 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i192 -%r119 = shl i192 %r118, 128 -%r120 = or i192 %r114, %r119 -%r121 = zext i192 %r120 to i256 -%r123 = getelementptr i64, i64* %r4, i32 3 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i256 -%r126 = shl i256 %r125, 192 -%r127 = or i256 %r121, %r126 -%r128 = zext i256 %r127 to i320 -%r130 = getelementptr i64, i64* %r4, i32 4 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i320 -%r133 = shl i320 %r132, 256 -%r134 = or i320 %r128, %r133 -%r135 = zext i320 %r134 to i384 -%r137 = getelementptr i64, i64* %r4, i32 5 -%r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i384 -%r140 = shl i384 %r139, 320 -%r141 = or i384 %r135, %r140 -%r142 = add i384 %r80, %r141 -%r143 = trunc i384 %r142 to i64 -%r145 = getelementptr i64, i64* %r1, i32 0 -store i64 %r143, i64* %r145 -%r146 = lshr i384 %r142, 64 -%r147 = trunc i384 %r146 to i64 -%r149 = getelementptr i64, i64* %r1, i32 1 -store i64 %r147, i64* %r149 -%r150 = lshr i384 %r146, 64 -%r151 = trunc i384 %r150 to i64 -%r153 = getelementptr i64, i64* %r1, i32 2 -store i64 %r151, i64* %r153 -%r154 = lshr i384 %r150, 64 -%r155 = trunc i384 %r154 to i64 -%r157 = getelementptr i64, i64* %r1, i32 3 -store i64 %r155, i64* %r157 -%r158 = lshr i384 %r154, 64 -%r159 = trunc i384 %r158 to i64 -%r161 = getelementptr i64, i64* %r1, i32 4 -store i64 %r159, i64* %r161 -%r162 = lshr i384 %r158, 64 -%r163 = trunc i384 %r162 to i64 -%r165 = getelementptr i64, i64* %r1, i32 5 -store i64 %r163, i64* %r165 -ret void -} -define void @mcl_fp_subNF6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = load i64, i64* %r3 -%r42 = zext i64 %r41 to i128 -%r44 = getelementptr i64, i64* %r3, i32 1 -%r45 = load i64, i64* %r44 -%r46 = zext i64 %r45 to i128 -%r47 = shl i128 %r46, 64 -%r48 = or i128 %r42, %r47 -%r49 = zext i128 %r48 to i192 -%r51 = getelementptr i64, i64* %r3, i32 2 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i192 -%r54 = shl i192 %r53, 128 -%r55 = or i192 %r49, %r54 -%r56 = zext i192 %r55 to i256 -%r58 = getelementptr i64, i64* %r3, i32 3 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i256 -%r61 = shl i256 %r60, 192 -%r62 = or i256 %r56, %r61 -%r63 = zext i256 %r62 to i320 -%r65 = getelementptr i64, i64* %r3, i32 4 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i320 -%r68 = shl i320 %r67, 256 -%r69 = or i320 %r63, %r68 -%r70 = zext i320 %r69 to i384 -%r72 = getelementptr i64, i64* %r3, i32 5 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i384 -%r75 = shl i384 %r74, 320 -%r76 = or i384 %r70, %r75 -%r77 = sub i384 %r40, %r76 -%r78 = lshr i384 %r77, 383 -%r79 = trunc i384 %r78 to i1 -%r80 = load i64, i64* %r4 -%r81 = zext i64 %r80 to i128 -%r83 = getelementptr i64, i64* %r4, i32 1 -%r84 = load i64, i64* %r83 -%r85 = zext i64 %r84 to i128 -%r86 = shl i128 %r85, 64 -%r87 = or i128 %r81, %r86 -%r88 = zext i128 %r87 to i192 -%r90 = getelementptr i64, i64* %r4, i32 2 -%r91 = load i64, i64* %r90 -%r92 = zext i64 %r91 to i192 -%r93 = shl i192 %r92, 128 -%r94 = or i192 %r88, %r93 -%r95 = zext i192 %r94 to i256 -%r97 = getelementptr i64, i64* %r4, i32 3 -%r98 = load i64, i64* %r97 -%r99 = zext i64 %r98 to i256 -%r100 = shl i256 %r99, 192 -%r101 = or i256 %r95, %r100 -%r102 = zext i256 %r101 to i320 -%r104 = getelementptr i64, i64* %r4, i32 4 -%r105 = load i64, i64* %r104 -%r106 = zext i64 %r105 to i320 -%r107 = shl i320 %r106, 256 -%r108 = or i320 %r102, %r107 -%r109 = zext i320 %r108 to i384 -%r111 = getelementptr i64, i64* %r4, i32 5 -%r112 = load i64, i64* %r111 -%r113 = zext i64 %r112 to i384 -%r114 = shl i384 %r113, 320 -%r115 = or i384 %r109, %r114 -%r117 = select i1 %r79, i384 %r115, i384 0 -%r118 = add i384 %r77, %r117 -%r119 = trunc i384 %r118 to i64 -%r121 = getelementptr i64, i64* %r1, i32 0 -store i64 %r119, i64* %r121 -%r122 = lshr i384 %r118, 64 -%r123 = trunc i384 %r122 to i64 -%r125 = getelementptr i64, i64* %r1, i32 1 -store i64 %r123, i64* %r125 -%r126 = lshr i384 %r122, 64 -%r127 = trunc i384 %r126 to i64 -%r129 = getelementptr i64, i64* %r1, i32 2 -store i64 %r127, i64* %r129 -%r130 = lshr i384 %r126, 64 -%r131 = trunc i384 %r130 to i64 -%r133 = getelementptr i64, i64* %r1, i32 3 -store i64 %r131, i64* %r133 -%r134 = lshr i384 %r130, 64 -%r135 = trunc i384 %r134 to i64 -%r137 = getelementptr i64, i64* %r1, i32 4 -store i64 %r135, i64* %r137 -%r138 = lshr i384 %r134, 64 -%r139 = trunc i384 %r138 to i64 -%r141 = getelementptr i64, i64* %r1, i32 5 -store i64 %r139, i64* %r141 -ret void -} -define void @mcl_fpDbl_add6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = zext i640 %r68 to i704 -%r71 = getelementptr i64, i64* %r2, i32 10 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i704 -%r74 = shl i704 %r73, 640 -%r75 = or i704 %r69, %r74 -%r76 = zext i704 %r75 to i768 -%r78 = getelementptr i64, i64* %r2, i32 11 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i768 -%r81 = shl i768 %r80, 704 -%r82 = or i768 %r76, %r81 -%r83 = load i64, i64* %r3 -%r84 = zext i64 %r83 to i128 -%r86 = getelementptr i64, i64* %r3, i32 1 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i128 -%r89 = shl i128 %r88, 64 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i192 -%r93 = getelementptr i64, i64* %r3, i32 2 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i192 -%r96 = shl i192 %r95, 128 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i256 -%r100 = getelementptr i64, i64* %r3, i32 3 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i256 -%r103 = shl i256 %r102, 192 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r104 to i320 -%r107 = getelementptr i64, i64* %r3, i32 4 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i320 -%r110 = shl i320 %r109, 256 -%r111 = or i320 %r105, %r110 -%r112 = zext i320 %r111 to i384 -%r114 = getelementptr i64, i64* %r3, i32 5 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i384 -%r117 = shl i384 %r116, 320 -%r118 = or i384 %r112, %r117 -%r119 = zext i384 %r118 to i448 -%r121 = getelementptr i64, i64* %r3, i32 6 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i448 -%r124 = shl i448 %r123, 384 -%r125 = or i448 %r119, %r124 -%r126 = zext i448 %r125 to i512 -%r128 = getelementptr i64, i64* %r3, i32 7 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i512 -%r131 = shl i512 %r130, 448 -%r132 = or i512 %r126, %r131 -%r133 = zext i512 %r132 to i576 -%r135 = getelementptr i64, i64* %r3, i32 8 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i576 -%r138 = shl i576 %r137, 512 -%r139 = or i576 %r133, %r138 -%r140 = zext i576 %r139 to i640 -%r142 = getelementptr i64, i64* %r3, i32 9 -%r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i640 -%r145 = shl i640 %r144, 576 -%r146 = or i640 %r140, %r145 -%r147 = zext i640 %r146 to i704 -%r149 = getelementptr i64, i64* %r3, i32 10 -%r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i704 -%r152 = shl i704 %r151, 640 -%r153 = or i704 %r147, %r152 -%r154 = zext i704 %r153 to i768 -%r156 = getelementptr i64, i64* %r3, i32 11 -%r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i768 -%r159 = shl i768 %r158, 704 -%r160 = or i768 %r154, %r159 -%r161 = zext i768 %r82 to i832 -%r162 = zext i768 %r160 to i832 -%r163 = add i832 %r161, %r162 -%r164 = trunc i832 %r163 to i384 -%r165 = trunc i384 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 0 -store i64 %r165, i64* %r167 -%r168 = lshr i384 %r164, 64 -%r169 = trunc i384 %r168 to i64 -%r171 = getelementptr i64, i64* %r1, i32 1 -store i64 %r169, i64* %r171 -%r172 = lshr i384 %r168, 64 -%r173 = trunc i384 %r172 to i64 -%r175 = getelementptr i64, i64* %r1, i32 2 -store i64 %r173, i64* %r175 -%r176 = lshr i384 %r172, 64 -%r177 = trunc i384 %r176 to i64 -%r179 = getelementptr i64, i64* %r1, i32 3 -store i64 %r177, i64* %r179 -%r180 = lshr i384 %r176, 64 -%r181 = trunc i384 %r180 to i64 -%r183 = getelementptr i64, i64* %r1, i32 4 -store i64 %r181, i64* %r183 -%r184 = lshr i384 %r180, 64 -%r185 = trunc i384 %r184 to i64 -%r187 = getelementptr i64, i64* %r1, i32 5 -store i64 %r185, i64* %r187 -%r188 = lshr i832 %r163, 384 -%r189 = trunc i832 %r188 to i448 -%r190 = load i64, i64* %r4 -%r191 = zext i64 %r190 to i128 -%r193 = getelementptr i64, i64* %r4, i32 1 -%r194 = load i64, i64* %r193 -%r195 = zext i64 %r194 to i128 -%r196 = shl i128 %r195, 64 -%r197 = or i128 %r191, %r196 -%r198 = zext i128 %r197 to i192 -%r200 = getelementptr i64, i64* %r4, i32 2 -%r201 = load i64, i64* %r200 -%r202 = zext i64 %r201 to i192 -%r203 = shl i192 %r202, 128 -%r204 = or i192 %r198, %r203 -%r205 = zext i192 %r204 to i256 -%r207 = getelementptr i64, i64* %r4, i32 3 -%r208 = load i64, i64* %r207 -%r209 = zext i64 %r208 to i256 -%r210 = shl i256 %r209, 192 -%r211 = or i256 %r205, %r210 -%r212 = zext i256 %r211 to i320 -%r214 = getelementptr i64, i64* %r4, i32 4 -%r215 = load i64, i64* %r214 -%r216 = zext i64 %r215 to i320 -%r217 = shl i320 %r216, 256 -%r218 = or i320 %r212, %r217 -%r219 = zext i320 %r218 to i384 -%r221 = getelementptr i64, i64* %r4, i32 5 -%r222 = load i64, i64* %r221 -%r223 = zext i64 %r222 to i384 -%r224 = shl i384 %r223, 320 -%r225 = or i384 %r219, %r224 -%r226 = zext i384 %r225 to i448 -%r227 = sub i448 %r189, %r226 -%r228 = lshr i448 %r227, 384 -%r229 = trunc i448 %r228 to i1 -%r230 = select i1 %r229, i448 %r189, i448 %r227 -%r231 = trunc i448 %r230 to i384 -%r233 = getelementptr i64, i64* %r1, i32 6 -%r234 = trunc i384 %r231 to i64 -%r236 = getelementptr i64, i64* %r233, i32 0 -store i64 %r234, i64* %r236 -%r237 = lshr i384 %r231, 64 -%r238 = trunc i384 %r237 to i64 -%r240 = getelementptr i64, i64* %r233, i32 1 -store i64 %r238, i64* %r240 -%r241 = lshr i384 %r237, 64 -%r242 = trunc i384 %r241 to i64 -%r244 = getelementptr i64, i64* %r233, i32 2 -store i64 %r242, i64* %r244 -%r245 = lshr i384 %r241, 64 -%r246 = trunc i384 %r245 to i64 -%r248 = getelementptr i64, i64* %r233, i32 3 -store i64 %r246, i64* %r248 -%r249 = lshr i384 %r245, 64 -%r250 = trunc i384 %r249 to i64 -%r252 = getelementptr i64, i64* %r233, i32 4 -store i64 %r250, i64* %r252 -%r253 = lshr i384 %r249, 64 -%r254 = trunc i384 %r253 to i64 -%r256 = getelementptr i64, i64* %r233, i32 5 -store i64 %r254, i64* %r256 -ret void -} -define void @mcl_fpDbl_sub6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = zext i640 %r68 to i704 -%r71 = getelementptr i64, i64* %r2, i32 10 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i704 -%r74 = shl i704 %r73, 640 -%r75 = or i704 %r69, %r74 -%r76 = zext i704 %r75 to i768 -%r78 = getelementptr i64, i64* %r2, i32 11 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i768 -%r81 = shl i768 %r80, 704 -%r82 = or i768 %r76, %r81 -%r83 = load i64, i64* %r3 -%r84 = zext i64 %r83 to i128 -%r86 = getelementptr i64, i64* %r3, i32 1 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i128 -%r89 = shl i128 %r88, 64 -%r90 = or i128 %r84, %r89 -%r91 = zext i128 %r90 to i192 -%r93 = getelementptr i64, i64* %r3, i32 2 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i192 -%r96 = shl i192 %r95, 128 -%r97 = or i192 %r91, %r96 -%r98 = zext i192 %r97 to i256 -%r100 = getelementptr i64, i64* %r3, i32 3 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i256 -%r103 = shl i256 %r102, 192 -%r104 = or i256 %r98, %r103 -%r105 = zext i256 %r104 to i320 -%r107 = getelementptr i64, i64* %r3, i32 4 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i320 -%r110 = shl i320 %r109, 256 -%r111 = or i320 %r105, %r110 -%r112 = zext i320 %r111 to i384 -%r114 = getelementptr i64, i64* %r3, i32 5 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i384 -%r117 = shl i384 %r116, 320 -%r118 = or i384 %r112, %r117 -%r119 = zext i384 %r118 to i448 -%r121 = getelementptr i64, i64* %r3, i32 6 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i448 -%r124 = shl i448 %r123, 384 -%r125 = or i448 %r119, %r124 -%r126 = zext i448 %r125 to i512 -%r128 = getelementptr i64, i64* %r3, i32 7 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i512 -%r131 = shl i512 %r130, 448 -%r132 = or i512 %r126, %r131 -%r133 = zext i512 %r132 to i576 -%r135 = getelementptr i64, i64* %r3, i32 8 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i576 -%r138 = shl i576 %r137, 512 -%r139 = or i576 %r133, %r138 -%r140 = zext i576 %r139 to i640 -%r142 = getelementptr i64, i64* %r3, i32 9 -%r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i640 -%r145 = shl i640 %r144, 576 -%r146 = or i640 %r140, %r145 -%r147 = zext i640 %r146 to i704 -%r149 = getelementptr i64, i64* %r3, i32 10 -%r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i704 -%r152 = shl i704 %r151, 640 -%r153 = or i704 %r147, %r152 -%r154 = zext i704 %r153 to i768 -%r156 = getelementptr i64, i64* %r3, i32 11 -%r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i768 -%r159 = shl i768 %r158, 704 -%r160 = or i768 %r154, %r159 -%r161 = zext i768 %r82 to i832 -%r162 = zext i768 %r160 to i832 -%r163 = sub i832 %r161, %r162 -%r164 = trunc i832 %r163 to i384 -%r165 = trunc i384 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 0 -store i64 %r165, i64* %r167 -%r168 = lshr i384 %r164, 64 -%r169 = trunc i384 %r168 to i64 -%r171 = getelementptr i64, i64* %r1, i32 1 -store i64 %r169, i64* %r171 -%r172 = lshr i384 %r168, 64 -%r173 = trunc i384 %r172 to i64 -%r175 = getelementptr i64, i64* %r1, i32 2 -store i64 %r173, i64* %r175 -%r176 = lshr i384 %r172, 64 -%r177 = trunc i384 %r176 to i64 -%r179 = getelementptr i64, i64* %r1, i32 3 -store i64 %r177, i64* %r179 -%r180 = lshr i384 %r176, 64 -%r181 = trunc i384 %r180 to i64 -%r183 = getelementptr i64, i64* %r1, i32 4 -store i64 %r181, i64* %r183 -%r184 = lshr i384 %r180, 64 -%r185 = trunc i384 %r184 to i64 -%r187 = getelementptr i64, i64* %r1, i32 5 -store i64 %r185, i64* %r187 -%r188 = lshr i832 %r163, 384 -%r189 = trunc i832 %r188 to i384 -%r190 = lshr i832 %r163, 768 -%r191 = trunc i832 %r190 to i1 -%r192 = load i64, i64* %r4 -%r193 = zext i64 %r192 to i128 -%r195 = getelementptr i64, i64* %r4, i32 1 -%r196 = load i64, i64* %r195 -%r197 = zext i64 %r196 to i128 -%r198 = shl i128 %r197, 64 -%r199 = or i128 %r193, %r198 -%r200 = zext i128 %r199 to i192 -%r202 = getelementptr i64, i64* %r4, i32 2 -%r203 = load i64, i64* %r202 -%r204 = zext i64 %r203 to i192 -%r205 = shl i192 %r204, 128 -%r206 = or i192 %r200, %r205 -%r207 = zext i192 %r206 to i256 -%r209 = getelementptr i64, i64* %r4, i32 3 -%r210 = load i64, i64* %r209 -%r211 = zext i64 %r210 to i256 -%r212 = shl i256 %r211, 192 -%r213 = or i256 %r207, %r212 -%r214 = zext i256 %r213 to i320 -%r216 = getelementptr i64, i64* %r4, i32 4 -%r217 = load i64, i64* %r216 -%r218 = zext i64 %r217 to i320 -%r219 = shl i320 %r218, 256 -%r220 = or i320 %r214, %r219 -%r221 = zext i320 %r220 to i384 -%r223 = getelementptr i64, i64* %r4, i32 5 -%r224 = load i64, i64* %r223 -%r225 = zext i64 %r224 to i384 -%r226 = shl i384 %r225, 320 -%r227 = or i384 %r221, %r226 -%r229 = select i1 %r191, i384 %r227, i384 0 -%r230 = add i384 %r189, %r229 -%r232 = getelementptr i64, i64* %r1, i32 6 -%r233 = trunc i384 %r230 to i64 -%r235 = getelementptr i64, i64* %r232, i32 0 -store i64 %r233, i64* %r235 -%r236 = lshr i384 %r230, 64 -%r237 = trunc i384 %r236 to i64 -%r239 = getelementptr i64, i64* %r232, i32 1 -store i64 %r237, i64* %r239 -%r240 = lshr i384 %r236, 64 -%r241 = trunc i384 %r240 to i64 -%r243 = getelementptr i64, i64* %r232, i32 2 -store i64 %r241, i64* %r243 -%r244 = lshr i384 %r240, 64 -%r245 = trunc i384 %r244 to i64 -%r247 = getelementptr i64, i64* %r232, i32 3 -store i64 %r245, i64* %r247 -%r248 = lshr i384 %r244, 64 -%r249 = trunc i384 %r248 to i64 -%r251 = getelementptr i64, i64* %r232, i32 4 -store i64 %r249, i64* %r251 -%r252 = lshr i384 %r248, 64 -%r253 = trunc i384 %r252 to i64 -%r255 = getelementptr i64, i64* %r232, i32 5 -store i64 %r253, i64* %r255 -ret void -} -define i512 @mulPv448x64(i64* noalias %r2, i64 %r3) -{ -%r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) -%r6 = trunc i128 %r5 to i64 -%r7 = call i64 @extractHigh64(i128 %r5) -%r9 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 1) -%r10 = trunc i128 %r9 to i64 -%r11 = call i64 @extractHigh64(i128 %r9) -%r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) -%r14 = trunc i128 %r13 to i64 -%r15 = call i64 @extractHigh64(i128 %r13) -%r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) -%r18 = trunc i128 %r17 to i64 -%r19 = call i64 @extractHigh64(i128 %r17) -%r21 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 4) -%r22 = trunc i128 %r21 to i64 -%r23 = call i64 @extractHigh64(i128 %r21) -%r25 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 5) -%r26 = trunc i128 %r25 to i64 -%r27 = call i64 @extractHigh64(i128 %r25) -%r29 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 6) -%r30 = trunc i128 %r29 to i64 -%r31 = call i64 @extractHigh64(i128 %r29) -%r32 = zext i64 %r6 to i128 -%r33 = zext i64 %r10 to i128 -%r34 = shl i128 %r33, 64 -%r35 = or i128 %r32, %r34 -%r36 = zext i128 %r35 to i192 -%r37 = zext i64 %r14 to i192 -%r38 = shl i192 %r37, 128 -%r39 = or i192 %r36, %r38 -%r40 = zext i192 %r39 to i256 -%r41 = zext i64 %r18 to i256 -%r42 = shl i256 %r41, 192 -%r43 = or i256 %r40, %r42 -%r44 = zext i256 %r43 to i320 -%r45 = zext i64 %r22 to i320 -%r46 = shl i320 %r45, 256 -%r47 = or i320 %r44, %r46 -%r48 = zext i320 %r47 to i384 -%r49 = zext i64 %r26 to i384 -%r50 = shl i384 %r49, 320 -%r51 = or i384 %r48, %r50 -%r52 = zext i384 %r51 to i448 -%r53 = zext i64 %r30 to i448 -%r54 = shl i448 %r53, 384 -%r55 = or i448 %r52, %r54 -%r56 = zext i64 %r7 to i128 -%r57 = zext i64 %r11 to i128 -%r58 = shl i128 %r57, 64 -%r59 = or i128 %r56, %r58 -%r60 = zext i128 %r59 to i192 -%r61 = zext i64 %r15 to i192 -%r62 = shl i192 %r61, 128 -%r63 = or i192 %r60, %r62 -%r64 = zext i192 %r63 to i256 -%r65 = zext i64 %r19 to i256 -%r66 = shl i256 %r65, 192 -%r67 = or i256 %r64, %r66 -%r68 = zext i256 %r67 to i320 -%r69 = zext i64 %r23 to i320 -%r70 = shl i320 %r69, 256 -%r71 = or i320 %r68, %r70 -%r72 = zext i320 %r71 to i384 -%r73 = zext i64 %r27 to i384 -%r74 = shl i384 %r73, 320 -%r75 = or i384 %r72, %r74 -%r76 = zext i384 %r75 to i448 -%r77 = zext i64 %r31 to i448 -%r78 = shl i448 %r77, 384 -%r79 = or i448 %r76, %r78 -%r80 = zext i448 %r55 to i512 -%r81 = zext i448 %r79 to i512 -%r82 = shl i512 %r81, 64 -%r83 = add i512 %r80, %r82 -ret i512 %r83 -} -define void @mcl_fp_mulUnitPre7L(i64* noalias %r1, i64* noalias %r2, i64 %r3) -{ -%r4 = call i512 @mulPv448x64(i64* %r2, i64 %r3) -%r5 = trunc i512 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i512 %r4, 64 -%r9 = trunc i512 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i512 %r8, 64 -%r13 = trunc i512 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i512 %r12, 64 -%r17 = trunc i512 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i512 %r16, 64 -%r21 = trunc i512 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 -%r24 = lshr i512 %r20, 64 -%r25 = trunc i512 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 5 -store i64 %r25, i64* %r27 -%r28 = lshr i512 %r24, 64 -%r29 = trunc i512 %r28 to i64 -%r31 = getelementptr i64, i64* %r1, i32 6 -store i64 %r29, i64* %r31 -%r32 = lshr i512 %r28, 64 -%r33 = trunc i512 %r32 to i64 -%r35 = getelementptr i64, i64* %r1, i32 7 -store i64 %r33, i64* %r35 -ret void -} -define void @mcl_fpDbl_mulPre7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r4 = load i64, i64* %r3 -%r5 = call i512 @mulPv448x64(i64* %r2, i64 %r4) -%r6 = trunc i512 %r5 to i64 -store i64 %r6, i64* %r1 -%r7 = lshr i512 %r5, 64 -%r9 = getelementptr i64, i64* %r3, i32 1 -%r10 = load i64, i64* %r9 -%r11 = call i512 @mulPv448x64(i64* %r2, i64 %r10) -%r12 = add i512 %r7, %r11 -%r13 = trunc i512 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 1 -store i64 %r13, i64* %r15 -%r16 = lshr i512 %r12, 64 -%r18 = getelementptr i64, i64* %r3, i32 2 -%r19 = load i64, i64* %r18 -%r20 = call i512 @mulPv448x64(i64* %r2, i64 %r19) -%r21 = add i512 %r16, %r20 -%r22 = trunc i512 %r21 to i64 -%r24 = getelementptr i64, i64* %r1, i32 2 -store i64 %r22, i64* %r24 -%r25 = lshr i512 %r21, 64 -%r27 = getelementptr i64, i64* %r3, i32 3 -%r28 = load i64, i64* %r27 -%r29 = call i512 @mulPv448x64(i64* %r2, i64 %r28) -%r30 = add i512 %r25, %r29 -%r31 = trunc i512 %r30 to i64 -%r33 = getelementptr i64, i64* %r1, i32 3 -store i64 %r31, i64* %r33 -%r34 = lshr i512 %r30, 64 -%r36 = getelementptr i64, i64* %r3, i32 4 -%r37 = load i64, i64* %r36 -%r38 = call i512 @mulPv448x64(i64* %r2, i64 %r37) -%r39 = add i512 %r34, %r38 -%r40 = trunc i512 %r39 to i64 -%r42 = getelementptr i64, i64* %r1, i32 4 -store i64 %r40, i64* %r42 -%r43 = lshr i512 %r39, 64 -%r45 = getelementptr i64, i64* %r3, i32 5 -%r46 = load i64, i64* %r45 -%r47 = call i512 @mulPv448x64(i64* %r2, i64 %r46) -%r48 = add i512 %r43, %r47 -%r49 = trunc i512 %r48 to i64 -%r51 = getelementptr i64, i64* %r1, i32 5 -store i64 %r49, i64* %r51 -%r52 = lshr i512 %r48, 64 -%r54 = getelementptr i64, i64* %r3, i32 6 -%r55 = load i64, i64* %r54 -%r56 = call i512 @mulPv448x64(i64* %r2, i64 %r55) -%r57 = add i512 %r52, %r56 -%r59 = getelementptr i64, i64* %r1, i32 6 -%r60 = trunc i512 %r57 to i64 -%r62 = getelementptr i64, i64* %r59, i32 0 -store i64 %r60, i64* %r62 -%r63 = lshr i512 %r57, 64 -%r64 = trunc i512 %r63 to i64 -%r66 = getelementptr i64, i64* %r59, i32 1 -store i64 %r64, i64* %r66 -%r67 = lshr i512 %r63, 64 -%r68 = trunc i512 %r67 to i64 -%r70 = getelementptr i64, i64* %r59, i32 2 -store i64 %r68, i64* %r70 -%r71 = lshr i512 %r67, 64 -%r72 = trunc i512 %r71 to i64 -%r74 = getelementptr i64, i64* %r59, i32 3 -store i64 %r72, i64* %r74 -%r75 = lshr i512 %r71, 64 -%r76 = trunc i512 %r75 to i64 -%r78 = getelementptr i64, i64* %r59, i32 4 -store i64 %r76, i64* %r78 -%r79 = lshr i512 %r75, 64 -%r80 = trunc i512 %r79 to i64 -%r82 = getelementptr i64, i64* %r59, i32 5 -store i64 %r80, i64* %r82 -%r83 = lshr i512 %r79, 64 -%r84 = trunc i512 %r83 to i64 -%r86 = getelementptr i64, i64* %r59, i32 6 -store i64 %r84, i64* %r86 -%r87 = lshr i512 %r83, 64 -%r88 = trunc i512 %r87 to i64 -%r90 = getelementptr i64, i64* %r59, i32 7 -store i64 %r88, i64* %r90 -ret void -} -define void @mcl_fpDbl_sqrPre7L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = call i512 @mulPv448x64(i64* %r2, i64 %r3) -%r5 = trunc i512 %r4 to i64 -store i64 %r5, i64* %r1 -%r6 = lshr i512 %r4, 64 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = call i512 @mulPv448x64(i64* %r2, i64 %r9) -%r11 = add i512 %r6, %r10 -%r12 = trunc i512 %r11 to i64 -%r14 = getelementptr i64, i64* %r1, i32 1 -store i64 %r12, i64* %r14 -%r15 = lshr i512 %r11, 64 -%r17 = getelementptr i64, i64* %r2, i32 2 -%r18 = load i64, i64* %r17 -%r19 = call i512 @mulPv448x64(i64* %r2, i64 %r18) -%r20 = add i512 %r15, %r19 -%r21 = trunc i512 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 2 -store i64 %r21, i64* %r23 -%r24 = lshr i512 %r20, 64 -%r26 = getelementptr i64, i64* %r2, i32 3 -%r27 = load i64, i64* %r26 -%r28 = call i512 @mulPv448x64(i64* %r2, i64 %r27) -%r29 = add i512 %r24, %r28 -%r30 = trunc i512 %r29 to i64 -%r32 = getelementptr i64, i64* %r1, i32 3 -store i64 %r30, i64* %r32 -%r33 = lshr i512 %r29, 64 -%r35 = getelementptr i64, i64* %r2, i32 4 -%r36 = load i64, i64* %r35 -%r37 = call i512 @mulPv448x64(i64* %r2, i64 %r36) -%r38 = add i512 %r33, %r37 -%r39 = trunc i512 %r38 to i64 -%r41 = getelementptr i64, i64* %r1, i32 4 -store i64 %r39, i64* %r41 -%r42 = lshr i512 %r38, 64 -%r44 = getelementptr i64, i64* %r2, i32 5 -%r45 = load i64, i64* %r44 -%r46 = call i512 @mulPv448x64(i64* %r2, i64 %r45) -%r47 = add i512 %r42, %r46 -%r48 = trunc i512 %r47 to i64 -%r50 = getelementptr i64, i64* %r1, i32 5 -store i64 %r48, i64* %r50 -%r51 = lshr i512 %r47, 64 -%r53 = getelementptr i64, i64* %r2, i32 6 -%r54 = load i64, i64* %r53 -%r55 = call i512 @mulPv448x64(i64* %r2, i64 %r54) -%r56 = add i512 %r51, %r55 -%r58 = getelementptr i64, i64* %r1, i32 6 -%r59 = trunc i512 %r56 to i64 -%r61 = getelementptr i64, i64* %r58, i32 0 -store i64 %r59, i64* %r61 -%r62 = lshr i512 %r56, 64 -%r63 = trunc i512 %r62 to i64 -%r65 = getelementptr i64, i64* %r58, i32 1 -store i64 %r63, i64* %r65 -%r66 = lshr i512 %r62, 64 -%r67 = trunc i512 %r66 to i64 -%r69 = getelementptr i64, i64* %r58, i32 2 -store i64 %r67, i64* %r69 -%r70 = lshr i512 %r66, 64 -%r71 = trunc i512 %r70 to i64 -%r73 = getelementptr i64, i64* %r58, i32 3 -store i64 %r71, i64* %r73 -%r74 = lshr i512 %r70, 64 -%r75 = trunc i512 %r74 to i64 -%r77 = getelementptr i64, i64* %r58, i32 4 -store i64 %r75, i64* %r77 -%r78 = lshr i512 %r74, 64 -%r79 = trunc i512 %r78 to i64 -%r81 = getelementptr i64, i64* %r58, i32 5 -store i64 %r79, i64* %r81 -%r82 = lshr i512 %r78, 64 -%r83 = trunc i512 %r82 to i64 -%r85 = getelementptr i64, i64* %r58, i32 6 -store i64 %r83, i64* %r85 -%r86 = lshr i512 %r82, 64 -%r87 = trunc i512 %r86 to i64 -%r89 = getelementptr i64, i64* %r58, i32 7 -store i64 %r87, i64* %r89 -ret void -} -define void @mcl_fp_mont7L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r9 = getelementptr i64, i64* %r3, i32 0 -%r10 = load i64, i64* %r9 -%r11 = call i512 @mulPv448x64(i64* %r2, i64 %r10) -%r12 = zext i512 %r11 to i576 -%r13 = trunc i512 %r11 to i64 -%r14 = mul i64 %r13, %r7 -%r15 = call i512 @mulPv448x64(i64* %r4, i64 %r14) -%r16 = zext i512 %r15 to i576 -%r17 = add i576 %r12, %r16 -%r18 = lshr i576 %r17, 64 -%r20 = getelementptr i64, i64* %r3, i32 1 -%r21 = load i64, i64* %r20 -%r22 = call i512 @mulPv448x64(i64* %r2, i64 %r21) -%r23 = zext i512 %r22 to i576 -%r24 = add i576 %r18, %r23 -%r25 = trunc i576 %r24 to i64 -%r26 = mul i64 %r25, %r7 -%r27 = call i512 @mulPv448x64(i64* %r4, i64 %r26) -%r28 = zext i512 %r27 to i576 -%r29 = add i576 %r24, %r28 -%r30 = lshr i576 %r29, 64 -%r32 = getelementptr i64, i64* %r3, i32 2 -%r33 = load i64, i64* %r32 -%r34 = call i512 @mulPv448x64(i64* %r2, i64 %r33) -%r35 = zext i512 %r34 to i576 -%r36 = add i576 %r30, %r35 -%r37 = trunc i576 %r36 to i64 -%r38 = mul i64 %r37, %r7 -%r39 = call i512 @mulPv448x64(i64* %r4, i64 %r38) -%r40 = zext i512 %r39 to i576 -%r41 = add i576 %r36, %r40 -%r42 = lshr i576 %r41, 64 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = call i512 @mulPv448x64(i64* %r2, i64 %r45) -%r47 = zext i512 %r46 to i576 -%r48 = add i576 %r42, %r47 -%r49 = trunc i576 %r48 to i64 -%r50 = mul i64 %r49, %r7 -%r51 = call i512 @mulPv448x64(i64* %r4, i64 %r50) -%r52 = zext i512 %r51 to i576 -%r53 = add i576 %r48, %r52 -%r54 = lshr i576 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 4 -%r57 = load i64, i64* %r56 -%r58 = call i512 @mulPv448x64(i64* %r2, i64 %r57) -%r59 = zext i512 %r58 to i576 -%r60 = add i576 %r54, %r59 -%r61 = trunc i576 %r60 to i64 -%r62 = mul i64 %r61, %r7 -%r63 = call i512 @mulPv448x64(i64* %r4, i64 %r62) -%r64 = zext i512 %r63 to i576 -%r65 = add i576 %r60, %r64 -%r66 = lshr i576 %r65, 64 -%r68 = getelementptr i64, i64* %r3, i32 5 -%r69 = load i64, i64* %r68 -%r70 = call i512 @mulPv448x64(i64* %r2, i64 %r69) -%r71 = zext i512 %r70 to i576 -%r72 = add i576 %r66, %r71 -%r73 = trunc i576 %r72 to i64 -%r74 = mul i64 %r73, %r7 -%r75 = call i512 @mulPv448x64(i64* %r4, i64 %r74) -%r76 = zext i512 %r75 to i576 -%r77 = add i576 %r72, %r76 -%r78 = lshr i576 %r77, 64 -%r80 = getelementptr i64, i64* %r3, i32 6 -%r81 = load i64, i64* %r80 -%r82 = call i512 @mulPv448x64(i64* %r2, i64 %r81) -%r83 = zext i512 %r82 to i576 -%r84 = add i576 %r78, %r83 -%r85 = trunc i576 %r84 to i64 -%r86 = mul i64 %r85, %r7 -%r87 = call i512 @mulPv448x64(i64* %r4, i64 %r86) -%r88 = zext i512 %r87 to i576 -%r89 = add i576 %r84, %r88 -%r90 = lshr i576 %r89, 64 -%r91 = trunc i576 %r90 to i512 -%r92 = load i64, i64* %r4 -%r93 = zext i64 %r92 to i128 -%r95 = getelementptr i64, i64* %r4, i32 1 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i128 -%r98 = shl i128 %r97, 64 -%r99 = or i128 %r93, %r98 -%r100 = zext i128 %r99 to i192 -%r102 = getelementptr i64, i64* %r4, i32 2 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i192 -%r105 = shl i192 %r104, 128 -%r106 = or i192 %r100, %r105 -%r107 = zext i192 %r106 to i256 -%r109 = getelementptr i64, i64* %r4, i32 3 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i256 -%r112 = shl i256 %r111, 192 -%r113 = or i256 %r107, %r112 -%r114 = zext i256 %r113 to i320 -%r116 = getelementptr i64, i64* %r4, i32 4 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i320 -%r119 = shl i320 %r118, 256 -%r120 = or i320 %r114, %r119 -%r121 = zext i320 %r120 to i384 -%r123 = getelementptr i64, i64* %r4, i32 5 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i384 -%r126 = shl i384 %r125, 320 -%r127 = or i384 %r121, %r126 -%r128 = zext i384 %r127 to i448 -%r130 = getelementptr i64, i64* %r4, i32 6 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i448 -%r133 = shl i448 %r132, 384 -%r134 = or i448 %r128, %r133 -%r135 = zext i448 %r134 to i512 -%r136 = sub i512 %r91, %r135 -%r137 = lshr i512 %r136, 448 -%r138 = trunc i512 %r137 to i1 -%r139 = select i1 %r138, i512 %r91, i512 %r136 -%r140 = trunc i512 %r139 to i448 -%r141 = trunc i448 %r140 to i64 -%r143 = getelementptr i64, i64* %r1, i32 0 -store i64 %r141, i64* %r143 -%r144 = lshr i448 %r140, 64 -%r145 = trunc i448 %r144 to i64 -%r147 = getelementptr i64, i64* %r1, i32 1 -store i64 %r145, i64* %r147 -%r148 = lshr i448 %r144, 64 -%r149 = trunc i448 %r148 to i64 -%r151 = getelementptr i64, i64* %r1, i32 2 -store i64 %r149, i64* %r151 -%r152 = lshr i448 %r148, 64 -%r153 = trunc i448 %r152 to i64 -%r155 = getelementptr i64, i64* %r1, i32 3 -store i64 %r153, i64* %r155 -%r156 = lshr i448 %r152, 64 -%r157 = trunc i448 %r156 to i64 -%r159 = getelementptr i64, i64* %r1, i32 4 -store i64 %r157, i64* %r159 -%r160 = lshr i448 %r156, 64 -%r161 = trunc i448 %r160 to i64 -%r163 = getelementptr i64, i64* %r1, i32 5 -store i64 %r161, i64* %r163 -%r164 = lshr i448 %r160, 64 -%r165 = trunc i448 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 6 -store i64 %r165, i64* %r167 -ret void -} -define void @mcl_fp_montNF7L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r8 = load i64, i64* %r3 -%r9 = call i512 @mulPv448x64(i64* %r2, i64 %r8) -%r10 = trunc i512 %r9 to i64 -%r11 = mul i64 %r10, %r7 -%r12 = call i512 @mulPv448x64(i64* %r4, i64 %r11) -%r13 = add i512 %r9, %r12 -%r14 = lshr i512 %r13, 64 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = call i512 @mulPv448x64(i64* %r2, i64 %r17) -%r19 = add i512 %r14, %r18 -%r20 = trunc i512 %r19 to i64 -%r21 = mul i64 %r20, %r7 -%r22 = call i512 @mulPv448x64(i64* %r4, i64 %r21) -%r23 = add i512 %r19, %r22 -%r24 = lshr i512 %r23, 64 -%r26 = getelementptr i64, i64* %r3, i32 2 -%r27 = load i64, i64* %r26 -%r28 = call i512 @mulPv448x64(i64* %r2, i64 %r27) -%r29 = add i512 %r24, %r28 -%r30 = trunc i512 %r29 to i64 -%r31 = mul i64 %r30, %r7 -%r32 = call i512 @mulPv448x64(i64* %r4, i64 %r31) -%r33 = add i512 %r29, %r32 -%r34 = lshr i512 %r33, 64 -%r36 = getelementptr i64, i64* %r3, i32 3 -%r37 = load i64, i64* %r36 -%r38 = call i512 @mulPv448x64(i64* %r2, i64 %r37) -%r39 = add i512 %r34, %r38 -%r40 = trunc i512 %r39 to i64 -%r41 = mul i64 %r40, %r7 -%r42 = call i512 @mulPv448x64(i64* %r4, i64 %r41) -%r43 = add i512 %r39, %r42 -%r44 = lshr i512 %r43, 64 -%r46 = getelementptr i64, i64* %r3, i32 4 -%r47 = load i64, i64* %r46 -%r48 = call i512 @mulPv448x64(i64* %r2, i64 %r47) -%r49 = add i512 %r44, %r48 -%r50 = trunc i512 %r49 to i64 -%r51 = mul i64 %r50, %r7 -%r52 = call i512 @mulPv448x64(i64* %r4, i64 %r51) -%r53 = add i512 %r49, %r52 -%r54 = lshr i512 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 5 -%r57 = load i64, i64* %r56 -%r58 = call i512 @mulPv448x64(i64* %r2, i64 %r57) -%r59 = add i512 %r54, %r58 -%r60 = trunc i512 %r59 to i64 -%r61 = mul i64 %r60, %r7 -%r62 = call i512 @mulPv448x64(i64* %r4, i64 %r61) -%r63 = add i512 %r59, %r62 -%r64 = lshr i512 %r63, 64 -%r66 = getelementptr i64, i64* %r3, i32 6 -%r67 = load i64, i64* %r66 -%r68 = call i512 @mulPv448x64(i64* %r2, i64 %r67) -%r69 = add i512 %r64, %r68 -%r70 = trunc i512 %r69 to i64 -%r71 = mul i64 %r70, %r7 -%r72 = call i512 @mulPv448x64(i64* %r4, i64 %r71) -%r73 = add i512 %r69, %r72 -%r74 = lshr i512 %r73, 64 -%r75 = trunc i512 %r74 to i448 -%r76 = load i64, i64* %r4 -%r77 = zext i64 %r76 to i128 -%r79 = getelementptr i64, i64* %r4, i32 1 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i128 -%r82 = shl i128 %r81, 64 -%r83 = or i128 %r77, %r82 -%r84 = zext i128 %r83 to i192 -%r86 = getelementptr i64, i64* %r4, i32 2 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i192 -%r89 = shl i192 %r88, 128 -%r90 = or i192 %r84, %r89 -%r91 = zext i192 %r90 to i256 -%r93 = getelementptr i64, i64* %r4, i32 3 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i256 -%r96 = shl i256 %r95, 192 -%r97 = or i256 %r91, %r96 -%r98 = zext i256 %r97 to i320 -%r100 = getelementptr i64, i64* %r4, i32 4 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i320 -%r103 = shl i320 %r102, 256 -%r104 = or i320 %r98, %r103 -%r105 = zext i320 %r104 to i384 -%r107 = getelementptr i64, i64* %r4, i32 5 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i384 -%r110 = shl i384 %r109, 320 -%r111 = or i384 %r105, %r110 -%r112 = zext i384 %r111 to i448 -%r114 = getelementptr i64, i64* %r4, i32 6 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i448 -%r117 = shl i448 %r116, 384 -%r118 = or i448 %r112, %r117 -%r119 = sub i448 %r75, %r118 -%r120 = lshr i448 %r119, 447 -%r121 = trunc i448 %r120 to i1 -%r122 = select i1 %r121, i448 %r75, i448 %r119 -%r123 = trunc i448 %r122 to i64 -%r125 = getelementptr i64, i64* %r1, i32 0 -store i64 %r123, i64* %r125 -%r126 = lshr i448 %r122, 64 -%r127 = trunc i448 %r126 to i64 -%r129 = getelementptr i64, i64* %r1, i32 1 -store i64 %r127, i64* %r129 -%r130 = lshr i448 %r126, 64 -%r131 = trunc i448 %r130 to i64 -%r133 = getelementptr i64, i64* %r1, i32 2 -store i64 %r131, i64* %r133 -%r134 = lshr i448 %r130, 64 -%r135 = trunc i448 %r134 to i64 -%r137 = getelementptr i64, i64* %r1, i32 3 -store i64 %r135, i64* %r137 -%r138 = lshr i448 %r134, 64 -%r139 = trunc i448 %r138 to i64 -%r141 = getelementptr i64, i64* %r1, i32 4 -store i64 %r139, i64* %r141 -%r142 = lshr i448 %r138, 64 -%r143 = trunc i448 %r142 to i64 -%r145 = getelementptr i64, i64* %r1, i32 5 -store i64 %r143, i64* %r145 -%r146 = lshr i448 %r142, 64 -%r147 = trunc i448 %r146 to i64 -%r149 = getelementptr i64, i64* %r1, i32 6 -store i64 %r147, i64* %r149 -ret void -} -define void @mcl_fp_montRed7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r3, i32 -1 -%r6 = load i64, i64* %r5 -%r7 = load i64, i64* %r3 -%r8 = zext i64 %r7 to i128 -%r10 = getelementptr i64, i64* %r3, i32 1 -%r11 = load i64, i64* %r10 -%r12 = zext i64 %r11 to i128 -%r13 = shl i128 %r12, 64 -%r14 = or i128 %r8, %r13 -%r15 = zext i128 %r14 to i192 -%r17 = getelementptr i64, i64* %r3, i32 2 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i192 -%r20 = shl i192 %r19, 128 -%r21 = or i192 %r15, %r20 -%r22 = zext i192 %r21 to i256 -%r24 = getelementptr i64, i64* %r3, i32 3 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i256 -%r27 = shl i256 %r26, 192 -%r28 = or i256 %r22, %r27 -%r29 = zext i256 %r28 to i320 -%r31 = getelementptr i64, i64* %r3, i32 4 -%r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i320 -%r34 = shl i320 %r33, 256 -%r35 = or i320 %r29, %r34 -%r36 = zext i320 %r35 to i384 -%r38 = getelementptr i64, i64* %r3, i32 5 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i384 -%r41 = shl i384 %r40, 320 -%r42 = or i384 %r36, %r41 -%r43 = zext i384 %r42 to i448 -%r45 = getelementptr i64, i64* %r3, i32 6 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i448 -%r48 = shl i448 %r47, 384 -%r49 = or i448 %r43, %r48 -%r50 = load i64, i64* %r2 -%r51 = zext i64 %r50 to i128 -%r53 = getelementptr i64, i64* %r2, i32 1 -%r54 = load i64, i64* %r53 -%r55 = zext i64 %r54 to i128 -%r56 = shl i128 %r55, 64 -%r57 = or i128 %r51, %r56 -%r58 = zext i128 %r57 to i192 -%r60 = getelementptr i64, i64* %r2, i32 2 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i192 -%r63 = shl i192 %r62, 128 -%r64 = or i192 %r58, %r63 -%r65 = zext i192 %r64 to i256 -%r67 = getelementptr i64, i64* %r2, i32 3 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i256 -%r70 = shl i256 %r69, 192 -%r71 = or i256 %r65, %r70 -%r72 = zext i256 %r71 to i320 -%r74 = getelementptr i64, i64* %r2, i32 4 -%r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i320 -%r77 = shl i320 %r76, 256 -%r78 = or i320 %r72, %r77 -%r79 = zext i320 %r78 to i384 -%r81 = getelementptr i64, i64* %r2, i32 5 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i384 -%r84 = shl i384 %r83, 320 -%r85 = or i384 %r79, %r84 -%r86 = zext i384 %r85 to i448 -%r88 = getelementptr i64, i64* %r2, i32 6 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i448 -%r91 = shl i448 %r90, 384 -%r92 = or i448 %r86, %r91 -%r93 = zext i448 %r92 to i512 -%r95 = getelementptr i64, i64* %r2, i32 7 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i512 -%r98 = shl i512 %r97, 448 -%r99 = or i512 %r93, %r98 -%r100 = zext i512 %r99 to i576 -%r102 = getelementptr i64, i64* %r2, i32 8 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i576 -%r105 = shl i576 %r104, 512 -%r106 = or i576 %r100, %r105 -%r107 = zext i576 %r106 to i640 -%r109 = getelementptr i64, i64* %r2, i32 9 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i640 -%r112 = shl i640 %r111, 576 -%r113 = or i640 %r107, %r112 -%r114 = zext i640 %r113 to i704 -%r116 = getelementptr i64, i64* %r2, i32 10 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i704 -%r119 = shl i704 %r118, 640 -%r120 = or i704 %r114, %r119 -%r121 = zext i704 %r120 to i768 -%r123 = getelementptr i64, i64* %r2, i32 11 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i768 -%r126 = shl i768 %r125, 704 -%r127 = or i768 %r121, %r126 -%r128 = zext i768 %r127 to i832 -%r130 = getelementptr i64, i64* %r2, i32 12 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i832 -%r133 = shl i832 %r132, 768 -%r134 = or i832 %r128, %r133 -%r135 = zext i832 %r134 to i896 -%r137 = getelementptr i64, i64* %r2, i32 13 -%r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i896 -%r140 = shl i896 %r139, 832 -%r141 = or i896 %r135, %r140 -%r142 = zext i896 %r141 to i960 -%r143 = trunc i960 %r142 to i64 -%r144 = mul i64 %r143, %r6 -%r145 = call i512 @mulPv448x64(i64* %r3, i64 %r144) -%r146 = zext i512 %r145 to i960 -%r147 = add i960 %r142, %r146 -%r148 = lshr i960 %r147, 64 -%r149 = trunc i960 %r148 to i896 -%r150 = trunc i896 %r149 to i64 -%r151 = mul i64 %r150, %r6 -%r152 = call i512 @mulPv448x64(i64* %r3, i64 %r151) -%r153 = zext i512 %r152 to i896 -%r154 = add i896 %r149, %r153 -%r155 = lshr i896 %r154, 64 -%r156 = trunc i896 %r155 to i832 -%r157 = trunc i832 %r156 to i64 -%r158 = mul i64 %r157, %r6 -%r159 = call i512 @mulPv448x64(i64* %r3, i64 %r158) -%r160 = zext i512 %r159 to i832 -%r161 = add i832 %r156, %r160 -%r162 = lshr i832 %r161, 64 -%r163 = trunc i832 %r162 to i768 -%r164 = trunc i768 %r163 to i64 -%r165 = mul i64 %r164, %r6 -%r166 = call i512 @mulPv448x64(i64* %r3, i64 %r165) -%r167 = zext i512 %r166 to i768 -%r168 = add i768 %r163, %r167 -%r169 = lshr i768 %r168, 64 -%r170 = trunc i768 %r169 to i704 -%r171 = trunc i704 %r170 to i64 -%r172 = mul i64 %r171, %r6 -%r173 = call i512 @mulPv448x64(i64* %r3, i64 %r172) -%r174 = zext i512 %r173 to i704 -%r175 = add i704 %r170, %r174 -%r176 = lshr i704 %r175, 64 -%r177 = trunc i704 %r176 to i640 -%r178 = trunc i640 %r177 to i64 -%r179 = mul i64 %r178, %r6 -%r180 = call i512 @mulPv448x64(i64* %r3, i64 %r179) -%r181 = zext i512 %r180 to i640 -%r182 = add i640 %r177, %r181 -%r183 = lshr i640 %r182, 64 -%r184 = trunc i640 %r183 to i576 -%r185 = trunc i576 %r184 to i64 -%r186 = mul i64 %r185, %r6 -%r187 = call i512 @mulPv448x64(i64* %r3, i64 %r186) -%r188 = zext i512 %r187 to i576 -%r189 = add i576 %r184, %r188 -%r190 = lshr i576 %r189, 64 -%r191 = trunc i576 %r190 to i512 -%r192 = zext i448 %r49 to i512 -%r193 = sub i512 %r191, %r192 -%r194 = lshr i512 %r193, 448 -%r195 = trunc i512 %r194 to i1 -%r196 = select i1 %r195, i512 %r191, i512 %r193 -%r197 = trunc i512 %r196 to i448 -%r198 = trunc i448 %r197 to i64 -%r200 = getelementptr i64, i64* %r1, i32 0 -store i64 %r198, i64* %r200 -%r201 = lshr i448 %r197, 64 -%r202 = trunc i448 %r201 to i64 -%r204 = getelementptr i64, i64* %r1, i32 1 -store i64 %r202, i64* %r204 -%r205 = lshr i448 %r201, 64 -%r206 = trunc i448 %r205 to i64 -%r208 = getelementptr i64, i64* %r1, i32 2 -store i64 %r206, i64* %r208 -%r209 = lshr i448 %r205, 64 -%r210 = trunc i448 %r209 to i64 -%r212 = getelementptr i64, i64* %r1, i32 3 -store i64 %r210, i64* %r212 -%r213 = lshr i448 %r209, 64 -%r214 = trunc i448 %r213 to i64 -%r216 = getelementptr i64, i64* %r1, i32 4 -store i64 %r214, i64* %r216 -%r217 = lshr i448 %r213, 64 -%r218 = trunc i448 %r217 to i64 -%r220 = getelementptr i64, i64* %r1, i32 5 -store i64 %r218, i64* %r220 -%r221 = lshr i448 %r217, 64 -%r222 = trunc i448 %r221 to i64 -%r224 = getelementptr i64, i64* %r1, i32 6 -store i64 %r222, i64* %r224 -ret void -} -define i64 @mcl_fp_addPre7L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r3, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r49 = load i64, i64* %r4 -%r50 = zext i64 %r49 to i128 -%r52 = getelementptr i64, i64* %r4, i32 1 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i128 -%r55 = shl i128 %r54, 64 -%r56 = or i128 %r50, %r55 -%r57 = zext i128 %r56 to i192 -%r59 = getelementptr i64, i64* %r4, i32 2 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i192 -%r62 = shl i192 %r61, 128 -%r63 = or i192 %r57, %r62 -%r64 = zext i192 %r63 to i256 -%r66 = getelementptr i64, i64* %r4, i32 3 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i256 -%r69 = shl i256 %r68, 192 -%r70 = or i256 %r64, %r69 -%r71 = zext i256 %r70 to i320 -%r73 = getelementptr i64, i64* %r4, i32 4 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i320 -%r76 = shl i320 %r75, 256 -%r77 = or i320 %r71, %r76 -%r78 = zext i320 %r77 to i384 -%r80 = getelementptr i64, i64* %r4, i32 5 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i384 -%r83 = shl i384 %r82, 320 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i448 -%r87 = getelementptr i64, i64* %r4, i32 6 -%r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i448 -%r90 = shl i448 %r89, 384 -%r91 = or i448 %r85, %r90 -%r92 = zext i448 %r91 to i512 -%r93 = add i512 %r48, %r92 -%r94 = trunc i512 %r93 to i448 -%r95 = trunc i448 %r94 to i64 -%r97 = getelementptr i64, i64* %r2, i32 0 -store i64 %r95, i64* %r97 -%r98 = lshr i448 %r94, 64 -%r99 = trunc i448 %r98 to i64 -%r101 = getelementptr i64, i64* %r2, i32 1 -store i64 %r99, i64* %r101 -%r102 = lshr i448 %r98, 64 -%r103 = trunc i448 %r102 to i64 -%r105 = getelementptr i64, i64* %r2, i32 2 -store i64 %r103, i64* %r105 -%r106 = lshr i448 %r102, 64 -%r107 = trunc i448 %r106 to i64 -%r109 = getelementptr i64, i64* %r2, i32 3 -store i64 %r107, i64* %r109 -%r110 = lshr i448 %r106, 64 -%r111 = trunc i448 %r110 to i64 -%r113 = getelementptr i64, i64* %r2, i32 4 -store i64 %r111, i64* %r113 -%r114 = lshr i448 %r110, 64 -%r115 = trunc i448 %r114 to i64 -%r117 = getelementptr i64, i64* %r2, i32 5 -store i64 %r115, i64* %r117 -%r118 = lshr i448 %r114, 64 -%r119 = trunc i448 %r118 to i64 -%r121 = getelementptr i64, i64* %r2, i32 6 -store i64 %r119, i64* %r121 -%r122 = lshr i512 %r93, 448 -%r123 = trunc i512 %r122 to i64 -ret i64 %r123 -} -define i64 @mcl_fp_subPre7L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r3, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r49 = load i64, i64* %r4 -%r50 = zext i64 %r49 to i128 -%r52 = getelementptr i64, i64* %r4, i32 1 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i128 -%r55 = shl i128 %r54, 64 -%r56 = or i128 %r50, %r55 -%r57 = zext i128 %r56 to i192 -%r59 = getelementptr i64, i64* %r4, i32 2 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i192 -%r62 = shl i192 %r61, 128 -%r63 = or i192 %r57, %r62 -%r64 = zext i192 %r63 to i256 -%r66 = getelementptr i64, i64* %r4, i32 3 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i256 -%r69 = shl i256 %r68, 192 -%r70 = or i256 %r64, %r69 -%r71 = zext i256 %r70 to i320 -%r73 = getelementptr i64, i64* %r4, i32 4 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i320 -%r76 = shl i320 %r75, 256 -%r77 = or i320 %r71, %r76 -%r78 = zext i320 %r77 to i384 -%r80 = getelementptr i64, i64* %r4, i32 5 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i384 -%r83 = shl i384 %r82, 320 -%r84 = or i384 %r78, %r83 -%r85 = zext i384 %r84 to i448 -%r87 = getelementptr i64, i64* %r4, i32 6 -%r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i448 -%r90 = shl i448 %r89, 384 -%r91 = or i448 %r85, %r90 -%r92 = zext i448 %r91 to i512 -%r93 = sub i512 %r48, %r92 -%r94 = trunc i512 %r93 to i448 -%r95 = trunc i448 %r94 to i64 -%r97 = getelementptr i64, i64* %r2, i32 0 -store i64 %r95, i64* %r97 -%r98 = lshr i448 %r94, 64 -%r99 = trunc i448 %r98 to i64 -%r101 = getelementptr i64, i64* %r2, i32 1 -store i64 %r99, i64* %r101 -%r102 = lshr i448 %r98, 64 -%r103 = trunc i448 %r102 to i64 -%r105 = getelementptr i64, i64* %r2, i32 2 -store i64 %r103, i64* %r105 -%r106 = lshr i448 %r102, 64 -%r107 = trunc i448 %r106 to i64 -%r109 = getelementptr i64, i64* %r2, i32 3 -store i64 %r107, i64* %r109 -%r110 = lshr i448 %r106, 64 -%r111 = trunc i448 %r110 to i64 -%r113 = getelementptr i64, i64* %r2, i32 4 -store i64 %r111, i64* %r113 -%r114 = lshr i448 %r110, 64 -%r115 = trunc i448 %r114 to i64 -%r117 = getelementptr i64, i64* %r2, i32 5 -store i64 %r115, i64* %r117 -%r118 = lshr i448 %r114, 64 -%r119 = trunc i448 %r118 to i64 -%r121 = getelementptr i64, i64* %r2, i32 6 -store i64 %r119, i64* %r121 -%r122 = lshr i512 %r93, 448 -%r123 = trunc i512 %r122 to i64 -%r125 = and i64 %r123, 1 -ret i64 %r125 -} -define void @mcl_fp_shr1_7L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = zext i64 %r3 to i128 -%r6 = getelementptr i64, i64* %r2, i32 1 -%r7 = load i64, i64* %r6 -%r8 = zext i64 %r7 to i128 -%r9 = shl i128 %r8, 64 -%r10 = or i128 %r4, %r9 -%r11 = zext i128 %r10 to i192 -%r13 = getelementptr i64, i64* %r2, i32 2 -%r14 = load i64, i64* %r13 -%r15 = zext i64 %r14 to i192 -%r16 = shl i192 %r15, 128 -%r17 = or i192 %r11, %r16 -%r18 = zext i192 %r17 to i256 -%r20 = getelementptr i64, i64* %r2, i32 3 -%r21 = load i64, i64* %r20 -%r22 = zext i64 %r21 to i256 -%r23 = shl i256 %r22, 192 -%r24 = or i256 %r18, %r23 -%r25 = zext i256 %r24 to i320 -%r27 = getelementptr i64, i64* %r2, i32 4 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i320 -%r30 = shl i320 %r29, 256 -%r31 = or i320 %r25, %r30 -%r32 = zext i320 %r31 to i384 -%r34 = getelementptr i64, i64* %r2, i32 5 -%r35 = load i64, i64* %r34 -%r36 = zext i64 %r35 to i384 -%r37 = shl i384 %r36, 320 -%r38 = or i384 %r32, %r37 -%r39 = zext i384 %r38 to i448 -%r41 = getelementptr i64, i64* %r2, i32 6 -%r42 = load i64, i64* %r41 -%r43 = zext i64 %r42 to i448 -%r44 = shl i448 %r43, 384 -%r45 = or i448 %r39, %r44 -%r46 = lshr i448 %r45, 1 -%r47 = trunc i448 %r46 to i64 -%r49 = getelementptr i64, i64* %r1, i32 0 -store i64 %r47, i64* %r49 -%r50 = lshr i448 %r46, 64 -%r51 = trunc i448 %r50 to i64 -%r53 = getelementptr i64, i64* %r1, i32 1 -store i64 %r51, i64* %r53 -%r54 = lshr i448 %r50, 64 -%r55 = trunc i448 %r54 to i64 -%r57 = getelementptr i64, i64* %r1, i32 2 -store i64 %r55, i64* %r57 -%r58 = lshr i448 %r54, 64 -%r59 = trunc i448 %r58 to i64 -%r61 = getelementptr i64, i64* %r1, i32 3 -store i64 %r59, i64* %r61 -%r62 = lshr i448 %r58, 64 -%r63 = trunc i448 %r62 to i64 -%r65 = getelementptr i64, i64* %r1, i32 4 -store i64 %r63, i64* %r65 -%r66 = lshr i448 %r62, 64 -%r67 = trunc i448 %r66 to i64 -%r69 = getelementptr i64, i64* %r1, i32 5 -store i64 %r67, i64* %r69 -%r70 = lshr i448 %r66, 64 -%r71 = trunc i448 %r70 to i64 -%r73 = getelementptr i64, i64* %r1, i32 6 -store i64 %r71, i64* %r73 -ret void -} -define void @mcl_fp_add7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = load i64, i64* %r3 -%r49 = zext i64 %r48 to i128 -%r51 = getelementptr i64, i64* %r3, i32 1 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i128 -%r54 = shl i128 %r53, 64 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i192 -%r58 = getelementptr i64, i64* %r3, i32 2 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i192 -%r61 = shl i192 %r60, 128 -%r62 = or i192 %r56, %r61 -%r63 = zext i192 %r62 to i256 -%r65 = getelementptr i64, i64* %r3, i32 3 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i256 -%r68 = shl i256 %r67, 192 -%r69 = or i256 %r63, %r68 -%r70 = zext i256 %r69 to i320 -%r72 = getelementptr i64, i64* %r3, i32 4 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i320 -%r75 = shl i320 %r74, 256 -%r76 = or i320 %r70, %r75 -%r77 = zext i320 %r76 to i384 -%r79 = getelementptr i64, i64* %r3, i32 5 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i384 -%r82 = shl i384 %r81, 320 -%r83 = or i384 %r77, %r82 -%r84 = zext i384 %r83 to i448 -%r86 = getelementptr i64, i64* %r3, i32 6 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i448 -%r89 = shl i448 %r88, 384 -%r90 = or i448 %r84, %r89 -%r91 = zext i448 %r47 to i512 -%r92 = zext i448 %r90 to i512 -%r93 = add i512 %r91, %r92 -%r94 = trunc i512 %r93 to i448 -%r95 = trunc i448 %r94 to i64 -%r97 = getelementptr i64, i64* %r1, i32 0 -store i64 %r95, i64* %r97 -%r98 = lshr i448 %r94, 64 -%r99 = trunc i448 %r98 to i64 -%r101 = getelementptr i64, i64* %r1, i32 1 -store i64 %r99, i64* %r101 -%r102 = lshr i448 %r98, 64 -%r103 = trunc i448 %r102 to i64 -%r105 = getelementptr i64, i64* %r1, i32 2 -store i64 %r103, i64* %r105 -%r106 = lshr i448 %r102, 64 -%r107 = trunc i448 %r106 to i64 -%r109 = getelementptr i64, i64* %r1, i32 3 -store i64 %r107, i64* %r109 -%r110 = lshr i448 %r106, 64 -%r111 = trunc i448 %r110 to i64 -%r113 = getelementptr i64, i64* %r1, i32 4 -store i64 %r111, i64* %r113 -%r114 = lshr i448 %r110, 64 -%r115 = trunc i448 %r114 to i64 -%r117 = getelementptr i64, i64* %r1, i32 5 -store i64 %r115, i64* %r117 -%r118 = lshr i448 %r114, 64 -%r119 = trunc i448 %r118 to i64 -%r121 = getelementptr i64, i64* %r1, i32 6 -store i64 %r119, i64* %r121 -%r122 = load i64, i64* %r4 -%r123 = zext i64 %r122 to i128 -%r125 = getelementptr i64, i64* %r4, i32 1 -%r126 = load i64, i64* %r125 -%r127 = zext i64 %r126 to i128 -%r128 = shl i128 %r127, 64 -%r129 = or i128 %r123, %r128 -%r130 = zext i128 %r129 to i192 -%r132 = getelementptr i64, i64* %r4, i32 2 -%r133 = load i64, i64* %r132 -%r134 = zext i64 %r133 to i192 -%r135 = shl i192 %r134, 128 -%r136 = or i192 %r130, %r135 -%r137 = zext i192 %r136 to i256 -%r139 = getelementptr i64, i64* %r4, i32 3 -%r140 = load i64, i64* %r139 -%r141 = zext i64 %r140 to i256 -%r142 = shl i256 %r141, 192 -%r143 = or i256 %r137, %r142 -%r144 = zext i256 %r143 to i320 -%r146 = getelementptr i64, i64* %r4, i32 4 -%r147 = load i64, i64* %r146 -%r148 = zext i64 %r147 to i320 -%r149 = shl i320 %r148, 256 -%r150 = or i320 %r144, %r149 -%r151 = zext i320 %r150 to i384 -%r153 = getelementptr i64, i64* %r4, i32 5 -%r154 = load i64, i64* %r153 -%r155 = zext i64 %r154 to i384 -%r156 = shl i384 %r155, 320 -%r157 = or i384 %r151, %r156 -%r158 = zext i384 %r157 to i448 -%r160 = getelementptr i64, i64* %r4, i32 6 -%r161 = load i64, i64* %r160 -%r162 = zext i64 %r161 to i448 -%r163 = shl i448 %r162, 384 -%r164 = or i448 %r158, %r163 -%r165 = zext i448 %r164 to i512 -%r166 = sub i512 %r93, %r165 -%r167 = lshr i512 %r166, 448 -%r168 = trunc i512 %r167 to i1 -br i1%r168, label %carry, label %nocarry -nocarry: -%r169 = trunc i512 %r166 to i448 -%r170 = trunc i448 %r169 to i64 -%r172 = getelementptr i64, i64* %r1, i32 0 -store i64 %r170, i64* %r172 -%r173 = lshr i448 %r169, 64 -%r174 = trunc i448 %r173 to i64 -%r176 = getelementptr i64, i64* %r1, i32 1 -store i64 %r174, i64* %r176 -%r177 = lshr i448 %r173, 64 -%r178 = trunc i448 %r177 to i64 -%r180 = getelementptr i64, i64* %r1, i32 2 -store i64 %r178, i64* %r180 -%r181 = lshr i448 %r177, 64 -%r182 = trunc i448 %r181 to i64 -%r184 = getelementptr i64, i64* %r1, i32 3 -store i64 %r182, i64* %r184 -%r185 = lshr i448 %r181, 64 -%r186 = trunc i448 %r185 to i64 -%r188 = getelementptr i64, i64* %r1, i32 4 -store i64 %r186, i64* %r188 -%r189 = lshr i448 %r185, 64 -%r190 = trunc i448 %r189 to i64 -%r192 = getelementptr i64, i64* %r1, i32 5 -store i64 %r190, i64* %r192 -%r193 = lshr i448 %r189, 64 -%r194 = trunc i448 %r193 to i64 -%r196 = getelementptr i64, i64* %r1, i32 6 -store i64 %r194, i64* %r196 -ret void -carry: -ret void -} -define void @mcl_fp_addNF7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = load i64, i64* %r3 -%r49 = zext i64 %r48 to i128 -%r51 = getelementptr i64, i64* %r3, i32 1 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i128 -%r54 = shl i128 %r53, 64 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i192 -%r58 = getelementptr i64, i64* %r3, i32 2 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i192 -%r61 = shl i192 %r60, 128 -%r62 = or i192 %r56, %r61 -%r63 = zext i192 %r62 to i256 -%r65 = getelementptr i64, i64* %r3, i32 3 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i256 -%r68 = shl i256 %r67, 192 -%r69 = or i256 %r63, %r68 -%r70 = zext i256 %r69 to i320 -%r72 = getelementptr i64, i64* %r3, i32 4 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i320 -%r75 = shl i320 %r74, 256 -%r76 = or i320 %r70, %r75 -%r77 = zext i320 %r76 to i384 -%r79 = getelementptr i64, i64* %r3, i32 5 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i384 -%r82 = shl i384 %r81, 320 -%r83 = or i384 %r77, %r82 -%r84 = zext i384 %r83 to i448 -%r86 = getelementptr i64, i64* %r3, i32 6 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i448 -%r89 = shl i448 %r88, 384 -%r90 = or i448 %r84, %r89 -%r91 = add i448 %r47, %r90 -%r92 = load i64, i64* %r4 -%r93 = zext i64 %r92 to i128 -%r95 = getelementptr i64, i64* %r4, i32 1 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i128 -%r98 = shl i128 %r97, 64 -%r99 = or i128 %r93, %r98 -%r100 = zext i128 %r99 to i192 -%r102 = getelementptr i64, i64* %r4, i32 2 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i192 -%r105 = shl i192 %r104, 128 -%r106 = or i192 %r100, %r105 -%r107 = zext i192 %r106 to i256 -%r109 = getelementptr i64, i64* %r4, i32 3 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i256 -%r112 = shl i256 %r111, 192 -%r113 = or i256 %r107, %r112 -%r114 = zext i256 %r113 to i320 -%r116 = getelementptr i64, i64* %r4, i32 4 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i320 -%r119 = shl i320 %r118, 256 -%r120 = or i320 %r114, %r119 -%r121 = zext i320 %r120 to i384 -%r123 = getelementptr i64, i64* %r4, i32 5 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i384 -%r126 = shl i384 %r125, 320 -%r127 = or i384 %r121, %r126 -%r128 = zext i384 %r127 to i448 -%r130 = getelementptr i64, i64* %r4, i32 6 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i448 -%r133 = shl i448 %r132, 384 -%r134 = or i448 %r128, %r133 -%r135 = sub i448 %r91, %r134 -%r136 = lshr i448 %r135, 447 -%r137 = trunc i448 %r136 to i1 -%r138 = select i1 %r137, i448 %r91, i448 %r135 -%r139 = trunc i448 %r138 to i64 -%r141 = getelementptr i64, i64* %r1, i32 0 -store i64 %r139, i64* %r141 -%r142 = lshr i448 %r138, 64 -%r143 = trunc i448 %r142 to i64 -%r145 = getelementptr i64, i64* %r1, i32 1 -store i64 %r143, i64* %r145 -%r146 = lshr i448 %r142, 64 -%r147 = trunc i448 %r146 to i64 -%r149 = getelementptr i64, i64* %r1, i32 2 -store i64 %r147, i64* %r149 -%r150 = lshr i448 %r146, 64 -%r151 = trunc i448 %r150 to i64 -%r153 = getelementptr i64, i64* %r1, i32 3 -store i64 %r151, i64* %r153 -%r154 = lshr i448 %r150, 64 -%r155 = trunc i448 %r154 to i64 -%r157 = getelementptr i64, i64* %r1, i32 4 -store i64 %r155, i64* %r157 -%r158 = lshr i448 %r154, 64 -%r159 = trunc i448 %r158 to i64 -%r161 = getelementptr i64, i64* %r1, i32 5 -store i64 %r159, i64* %r161 -%r162 = lshr i448 %r158, 64 -%r163 = trunc i448 %r162 to i64 -%r165 = getelementptr i64, i64* %r1, i32 6 -store i64 %r163, i64* %r165 -ret void -} -define void @mcl_fp_sub7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = load i64, i64* %r3 -%r49 = zext i64 %r48 to i128 -%r51 = getelementptr i64, i64* %r3, i32 1 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i128 -%r54 = shl i128 %r53, 64 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i192 -%r58 = getelementptr i64, i64* %r3, i32 2 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i192 -%r61 = shl i192 %r60, 128 -%r62 = or i192 %r56, %r61 -%r63 = zext i192 %r62 to i256 -%r65 = getelementptr i64, i64* %r3, i32 3 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i256 -%r68 = shl i256 %r67, 192 -%r69 = or i256 %r63, %r68 -%r70 = zext i256 %r69 to i320 -%r72 = getelementptr i64, i64* %r3, i32 4 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i320 -%r75 = shl i320 %r74, 256 -%r76 = or i320 %r70, %r75 -%r77 = zext i320 %r76 to i384 -%r79 = getelementptr i64, i64* %r3, i32 5 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i384 -%r82 = shl i384 %r81, 320 -%r83 = or i384 %r77, %r82 -%r84 = zext i384 %r83 to i448 -%r86 = getelementptr i64, i64* %r3, i32 6 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i448 -%r89 = shl i448 %r88, 384 -%r90 = or i448 %r84, %r89 -%r91 = zext i448 %r47 to i512 -%r92 = zext i448 %r90 to i512 -%r93 = sub i512 %r91, %r92 -%r94 = trunc i512 %r93 to i448 -%r95 = lshr i512 %r93, 448 -%r96 = trunc i512 %r95 to i1 -%r97 = trunc i448 %r94 to i64 -%r99 = getelementptr i64, i64* %r1, i32 0 -store i64 %r97, i64* %r99 -%r100 = lshr i448 %r94, 64 -%r101 = trunc i448 %r100 to i64 -%r103 = getelementptr i64, i64* %r1, i32 1 -store i64 %r101, i64* %r103 -%r104 = lshr i448 %r100, 64 -%r105 = trunc i448 %r104 to i64 -%r107 = getelementptr i64, i64* %r1, i32 2 -store i64 %r105, i64* %r107 -%r108 = lshr i448 %r104, 64 -%r109 = trunc i448 %r108 to i64 -%r111 = getelementptr i64, i64* %r1, i32 3 -store i64 %r109, i64* %r111 -%r112 = lshr i448 %r108, 64 -%r113 = trunc i448 %r112 to i64 -%r115 = getelementptr i64, i64* %r1, i32 4 -store i64 %r113, i64* %r115 -%r116 = lshr i448 %r112, 64 -%r117 = trunc i448 %r116 to i64 -%r119 = getelementptr i64, i64* %r1, i32 5 -store i64 %r117, i64* %r119 -%r120 = lshr i448 %r116, 64 -%r121 = trunc i448 %r120 to i64 -%r123 = getelementptr i64, i64* %r1, i32 6 -store i64 %r121, i64* %r123 -br i1%r96, label %carry, label %nocarry -nocarry: -ret void -carry: -%r124 = load i64, i64* %r4 -%r125 = zext i64 %r124 to i128 -%r127 = getelementptr i64, i64* %r4, i32 1 -%r128 = load i64, i64* %r127 -%r129 = zext i64 %r128 to i128 -%r130 = shl i128 %r129, 64 -%r131 = or i128 %r125, %r130 -%r132 = zext i128 %r131 to i192 -%r134 = getelementptr i64, i64* %r4, i32 2 -%r135 = load i64, i64* %r134 -%r136 = zext i64 %r135 to i192 -%r137 = shl i192 %r136, 128 -%r138 = or i192 %r132, %r137 -%r139 = zext i192 %r138 to i256 -%r141 = getelementptr i64, i64* %r4, i32 3 -%r142 = load i64, i64* %r141 -%r143 = zext i64 %r142 to i256 -%r144 = shl i256 %r143, 192 -%r145 = or i256 %r139, %r144 -%r146 = zext i256 %r145 to i320 -%r148 = getelementptr i64, i64* %r4, i32 4 -%r149 = load i64, i64* %r148 -%r150 = zext i64 %r149 to i320 -%r151 = shl i320 %r150, 256 -%r152 = or i320 %r146, %r151 -%r153 = zext i320 %r152 to i384 -%r155 = getelementptr i64, i64* %r4, i32 5 -%r156 = load i64, i64* %r155 -%r157 = zext i64 %r156 to i384 -%r158 = shl i384 %r157, 320 -%r159 = or i384 %r153, %r158 -%r160 = zext i384 %r159 to i448 -%r162 = getelementptr i64, i64* %r4, i32 6 -%r163 = load i64, i64* %r162 -%r164 = zext i64 %r163 to i448 -%r165 = shl i448 %r164, 384 -%r166 = or i448 %r160, %r165 -%r167 = add i448 %r94, %r166 -%r168 = trunc i448 %r167 to i64 -%r170 = getelementptr i64, i64* %r1, i32 0 -store i64 %r168, i64* %r170 -%r171 = lshr i448 %r167, 64 -%r172 = trunc i448 %r171 to i64 -%r174 = getelementptr i64, i64* %r1, i32 1 -store i64 %r172, i64* %r174 -%r175 = lshr i448 %r171, 64 -%r176 = trunc i448 %r175 to i64 -%r178 = getelementptr i64, i64* %r1, i32 2 -store i64 %r176, i64* %r178 -%r179 = lshr i448 %r175, 64 -%r180 = trunc i448 %r179 to i64 -%r182 = getelementptr i64, i64* %r1, i32 3 -store i64 %r180, i64* %r182 -%r183 = lshr i448 %r179, 64 -%r184 = trunc i448 %r183 to i64 -%r186 = getelementptr i64, i64* %r1, i32 4 -store i64 %r184, i64* %r186 -%r187 = lshr i448 %r183, 64 -%r188 = trunc i448 %r187 to i64 -%r190 = getelementptr i64, i64* %r1, i32 5 -store i64 %r188, i64* %r190 -%r191 = lshr i448 %r187, 64 -%r192 = trunc i448 %r191 to i64 -%r194 = getelementptr i64, i64* %r1, i32 6 -store i64 %r192, i64* %r194 -ret void -} -define void @mcl_fp_subNF7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = load i64, i64* %r3 -%r49 = zext i64 %r48 to i128 -%r51 = getelementptr i64, i64* %r3, i32 1 -%r52 = load i64, i64* %r51 -%r53 = zext i64 %r52 to i128 -%r54 = shl i128 %r53, 64 -%r55 = or i128 %r49, %r54 -%r56 = zext i128 %r55 to i192 -%r58 = getelementptr i64, i64* %r3, i32 2 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i192 -%r61 = shl i192 %r60, 128 -%r62 = or i192 %r56, %r61 -%r63 = zext i192 %r62 to i256 -%r65 = getelementptr i64, i64* %r3, i32 3 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i256 -%r68 = shl i256 %r67, 192 -%r69 = or i256 %r63, %r68 -%r70 = zext i256 %r69 to i320 -%r72 = getelementptr i64, i64* %r3, i32 4 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i320 -%r75 = shl i320 %r74, 256 -%r76 = or i320 %r70, %r75 -%r77 = zext i320 %r76 to i384 -%r79 = getelementptr i64, i64* %r3, i32 5 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i384 -%r82 = shl i384 %r81, 320 -%r83 = or i384 %r77, %r82 -%r84 = zext i384 %r83 to i448 -%r86 = getelementptr i64, i64* %r3, i32 6 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i448 -%r89 = shl i448 %r88, 384 -%r90 = or i448 %r84, %r89 -%r91 = sub i448 %r47, %r90 -%r92 = lshr i448 %r91, 447 -%r93 = trunc i448 %r92 to i1 -%r94 = load i64, i64* %r4 -%r95 = zext i64 %r94 to i128 -%r97 = getelementptr i64, i64* %r4, i32 1 -%r98 = load i64, i64* %r97 -%r99 = zext i64 %r98 to i128 -%r100 = shl i128 %r99, 64 -%r101 = or i128 %r95, %r100 -%r102 = zext i128 %r101 to i192 -%r104 = getelementptr i64, i64* %r4, i32 2 -%r105 = load i64, i64* %r104 -%r106 = zext i64 %r105 to i192 -%r107 = shl i192 %r106, 128 -%r108 = or i192 %r102, %r107 -%r109 = zext i192 %r108 to i256 -%r111 = getelementptr i64, i64* %r4, i32 3 -%r112 = load i64, i64* %r111 -%r113 = zext i64 %r112 to i256 -%r114 = shl i256 %r113, 192 -%r115 = or i256 %r109, %r114 -%r116 = zext i256 %r115 to i320 -%r118 = getelementptr i64, i64* %r4, i32 4 -%r119 = load i64, i64* %r118 -%r120 = zext i64 %r119 to i320 -%r121 = shl i320 %r120, 256 -%r122 = or i320 %r116, %r121 -%r123 = zext i320 %r122 to i384 -%r125 = getelementptr i64, i64* %r4, i32 5 -%r126 = load i64, i64* %r125 -%r127 = zext i64 %r126 to i384 -%r128 = shl i384 %r127, 320 -%r129 = or i384 %r123, %r128 -%r130 = zext i384 %r129 to i448 -%r132 = getelementptr i64, i64* %r4, i32 6 -%r133 = load i64, i64* %r132 -%r134 = zext i64 %r133 to i448 -%r135 = shl i448 %r134, 384 -%r136 = or i448 %r130, %r135 -%r138 = select i1 %r93, i448 %r136, i448 0 -%r139 = add i448 %r91, %r138 -%r140 = trunc i448 %r139 to i64 -%r142 = getelementptr i64, i64* %r1, i32 0 -store i64 %r140, i64* %r142 -%r143 = lshr i448 %r139, 64 -%r144 = trunc i448 %r143 to i64 -%r146 = getelementptr i64, i64* %r1, i32 1 -store i64 %r144, i64* %r146 -%r147 = lshr i448 %r143, 64 -%r148 = trunc i448 %r147 to i64 -%r150 = getelementptr i64, i64* %r1, i32 2 -store i64 %r148, i64* %r150 -%r151 = lshr i448 %r147, 64 -%r152 = trunc i448 %r151 to i64 -%r154 = getelementptr i64, i64* %r1, i32 3 -store i64 %r152, i64* %r154 -%r155 = lshr i448 %r151, 64 -%r156 = trunc i448 %r155 to i64 -%r158 = getelementptr i64, i64* %r1, i32 4 -store i64 %r156, i64* %r158 -%r159 = lshr i448 %r155, 64 -%r160 = trunc i448 %r159 to i64 -%r162 = getelementptr i64, i64* %r1, i32 5 -store i64 %r160, i64* %r162 -%r163 = lshr i448 %r159, 64 -%r164 = trunc i448 %r163 to i64 -%r166 = getelementptr i64, i64* %r1, i32 6 -store i64 %r164, i64* %r166 -ret void -} -define void @mcl_fpDbl_add7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = zext i640 %r68 to i704 -%r71 = getelementptr i64, i64* %r2, i32 10 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i704 -%r74 = shl i704 %r73, 640 -%r75 = or i704 %r69, %r74 -%r76 = zext i704 %r75 to i768 -%r78 = getelementptr i64, i64* %r2, i32 11 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i768 -%r81 = shl i768 %r80, 704 -%r82 = or i768 %r76, %r81 -%r83 = zext i768 %r82 to i832 -%r85 = getelementptr i64, i64* %r2, i32 12 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i832 -%r88 = shl i832 %r87, 768 -%r89 = or i832 %r83, %r88 -%r90 = zext i832 %r89 to i896 -%r92 = getelementptr i64, i64* %r2, i32 13 -%r93 = load i64, i64* %r92 -%r94 = zext i64 %r93 to i896 -%r95 = shl i896 %r94, 832 -%r96 = or i896 %r90, %r95 -%r97 = load i64, i64* %r3 -%r98 = zext i64 %r97 to i128 -%r100 = getelementptr i64, i64* %r3, i32 1 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i128 -%r103 = shl i128 %r102, 64 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i192 -%r107 = getelementptr i64, i64* %r3, i32 2 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i192 -%r110 = shl i192 %r109, 128 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i256 -%r114 = getelementptr i64, i64* %r3, i32 3 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i256 -%r117 = shl i256 %r116, 192 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i320 -%r121 = getelementptr i64, i64* %r3, i32 4 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i320 -%r124 = shl i320 %r123, 256 -%r125 = or i320 %r119, %r124 -%r126 = zext i320 %r125 to i384 -%r128 = getelementptr i64, i64* %r3, i32 5 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i384 -%r131 = shl i384 %r130, 320 -%r132 = or i384 %r126, %r131 -%r133 = zext i384 %r132 to i448 -%r135 = getelementptr i64, i64* %r3, i32 6 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i448 -%r138 = shl i448 %r137, 384 -%r139 = or i448 %r133, %r138 -%r140 = zext i448 %r139 to i512 -%r142 = getelementptr i64, i64* %r3, i32 7 -%r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i512 -%r145 = shl i512 %r144, 448 -%r146 = or i512 %r140, %r145 -%r147 = zext i512 %r146 to i576 -%r149 = getelementptr i64, i64* %r3, i32 8 -%r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i576 -%r152 = shl i576 %r151, 512 -%r153 = or i576 %r147, %r152 -%r154 = zext i576 %r153 to i640 -%r156 = getelementptr i64, i64* %r3, i32 9 -%r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i640 -%r159 = shl i640 %r158, 576 -%r160 = or i640 %r154, %r159 -%r161 = zext i640 %r160 to i704 -%r163 = getelementptr i64, i64* %r3, i32 10 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i704 -%r166 = shl i704 %r165, 640 -%r167 = or i704 %r161, %r166 -%r168 = zext i704 %r167 to i768 -%r170 = getelementptr i64, i64* %r3, i32 11 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i768 -%r173 = shl i768 %r172, 704 -%r174 = or i768 %r168, %r173 -%r175 = zext i768 %r174 to i832 -%r177 = getelementptr i64, i64* %r3, i32 12 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i832 -%r180 = shl i832 %r179, 768 -%r181 = or i832 %r175, %r180 -%r182 = zext i832 %r181 to i896 -%r184 = getelementptr i64, i64* %r3, i32 13 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i896 -%r187 = shl i896 %r186, 832 -%r188 = or i896 %r182, %r187 -%r189 = zext i896 %r96 to i960 -%r190 = zext i896 %r188 to i960 -%r191 = add i960 %r189, %r190 -%r192 = trunc i960 %r191 to i448 -%r193 = trunc i448 %r192 to i64 -%r195 = getelementptr i64, i64* %r1, i32 0 -store i64 %r193, i64* %r195 -%r196 = lshr i448 %r192, 64 -%r197 = trunc i448 %r196 to i64 -%r199 = getelementptr i64, i64* %r1, i32 1 -store i64 %r197, i64* %r199 -%r200 = lshr i448 %r196, 64 -%r201 = trunc i448 %r200 to i64 -%r203 = getelementptr i64, i64* %r1, i32 2 -store i64 %r201, i64* %r203 -%r204 = lshr i448 %r200, 64 -%r205 = trunc i448 %r204 to i64 -%r207 = getelementptr i64, i64* %r1, i32 3 -store i64 %r205, i64* %r207 -%r208 = lshr i448 %r204, 64 -%r209 = trunc i448 %r208 to i64 -%r211 = getelementptr i64, i64* %r1, i32 4 -store i64 %r209, i64* %r211 -%r212 = lshr i448 %r208, 64 -%r213 = trunc i448 %r212 to i64 -%r215 = getelementptr i64, i64* %r1, i32 5 -store i64 %r213, i64* %r215 -%r216 = lshr i448 %r212, 64 -%r217 = trunc i448 %r216 to i64 -%r219 = getelementptr i64, i64* %r1, i32 6 -store i64 %r217, i64* %r219 -%r220 = lshr i960 %r191, 448 -%r221 = trunc i960 %r220 to i512 -%r222 = load i64, i64* %r4 -%r223 = zext i64 %r222 to i128 -%r225 = getelementptr i64, i64* %r4, i32 1 -%r226 = load i64, i64* %r225 -%r227 = zext i64 %r226 to i128 -%r228 = shl i128 %r227, 64 -%r229 = or i128 %r223, %r228 -%r230 = zext i128 %r229 to i192 -%r232 = getelementptr i64, i64* %r4, i32 2 -%r233 = load i64, i64* %r232 -%r234 = zext i64 %r233 to i192 -%r235 = shl i192 %r234, 128 -%r236 = or i192 %r230, %r235 -%r237 = zext i192 %r236 to i256 -%r239 = getelementptr i64, i64* %r4, i32 3 -%r240 = load i64, i64* %r239 -%r241 = zext i64 %r240 to i256 -%r242 = shl i256 %r241, 192 -%r243 = or i256 %r237, %r242 -%r244 = zext i256 %r243 to i320 -%r246 = getelementptr i64, i64* %r4, i32 4 -%r247 = load i64, i64* %r246 -%r248 = zext i64 %r247 to i320 -%r249 = shl i320 %r248, 256 -%r250 = or i320 %r244, %r249 -%r251 = zext i320 %r250 to i384 -%r253 = getelementptr i64, i64* %r4, i32 5 -%r254 = load i64, i64* %r253 -%r255 = zext i64 %r254 to i384 -%r256 = shl i384 %r255, 320 -%r257 = or i384 %r251, %r256 -%r258 = zext i384 %r257 to i448 -%r260 = getelementptr i64, i64* %r4, i32 6 -%r261 = load i64, i64* %r260 -%r262 = zext i64 %r261 to i448 -%r263 = shl i448 %r262, 384 -%r264 = or i448 %r258, %r263 -%r265 = zext i448 %r264 to i512 -%r266 = sub i512 %r221, %r265 -%r267 = lshr i512 %r266, 448 -%r268 = trunc i512 %r267 to i1 -%r269 = select i1 %r268, i512 %r221, i512 %r266 -%r270 = trunc i512 %r269 to i448 -%r272 = getelementptr i64, i64* %r1, i32 7 -%r273 = trunc i448 %r270 to i64 -%r275 = getelementptr i64, i64* %r272, i32 0 -store i64 %r273, i64* %r275 -%r276 = lshr i448 %r270, 64 -%r277 = trunc i448 %r276 to i64 -%r279 = getelementptr i64, i64* %r272, i32 1 -store i64 %r277, i64* %r279 -%r280 = lshr i448 %r276, 64 -%r281 = trunc i448 %r280 to i64 -%r283 = getelementptr i64, i64* %r272, i32 2 -store i64 %r281, i64* %r283 -%r284 = lshr i448 %r280, 64 -%r285 = trunc i448 %r284 to i64 -%r287 = getelementptr i64, i64* %r272, i32 3 -store i64 %r285, i64* %r287 -%r288 = lshr i448 %r284, 64 -%r289 = trunc i448 %r288 to i64 -%r291 = getelementptr i64, i64* %r272, i32 4 -store i64 %r289, i64* %r291 -%r292 = lshr i448 %r288, 64 -%r293 = trunc i448 %r292 to i64 -%r295 = getelementptr i64, i64* %r272, i32 5 -store i64 %r293, i64* %r295 -%r296 = lshr i448 %r292, 64 -%r297 = trunc i448 %r296 to i64 -%r299 = getelementptr i64, i64* %r272, i32 6 -store i64 %r297, i64* %r299 -ret void -} -define void @mcl_fpDbl_sub7L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r64 = getelementptr i64, i64* %r2, i32 9 -%r65 = load i64, i64* %r64 -%r66 = zext i64 %r65 to i640 -%r67 = shl i640 %r66, 576 -%r68 = or i640 %r62, %r67 -%r69 = zext i640 %r68 to i704 -%r71 = getelementptr i64, i64* %r2, i32 10 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i704 -%r74 = shl i704 %r73, 640 -%r75 = or i704 %r69, %r74 -%r76 = zext i704 %r75 to i768 -%r78 = getelementptr i64, i64* %r2, i32 11 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i768 -%r81 = shl i768 %r80, 704 -%r82 = or i768 %r76, %r81 -%r83 = zext i768 %r82 to i832 -%r85 = getelementptr i64, i64* %r2, i32 12 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i832 -%r88 = shl i832 %r87, 768 -%r89 = or i832 %r83, %r88 -%r90 = zext i832 %r89 to i896 -%r92 = getelementptr i64, i64* %r2, i32 13 -%r93 = load i64, i64* %r92 -%r94 = zext i64 %r93 to i896 -%r95 = shl i896 %r94, 832 -%r96 = or i896 %r90, %r95 -%r97 = load i64, i64* %r3 -%r98 = zext i64 %r97 to i128 -%r100 = getelementptr i64, i64* %r3, i32 1 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i128 -%r103 = shl i128 %r102, 64 -%r104 = or i128 %r98, %r103 -%r105 = zext i128 %r104 to i192 -%r107 = getelementptr i64, i64* %r3, i32 2 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i192 -%r110 = shl i192 %r109, 128 -%r111 = or i192 %r105, %r110 -%r112 = zext i192 %r111 to i256 -%r114 = getelementptr i64, i64* %r3, i32 3 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i256 -%r117 = shl i256 %r116, 192 -%r118 = or i256 %r112, %r117 -%r119 = zext i256 %r118 to i320 -%r121 = getelementptr i64, i64* %r3, i32 4 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i320 -%r124 = shl i320 %r123, 256 -%r125 = or i320 %r119, %r124 -%r126 = zext i320 %r125 to i384 -%r128 = getelementptr i64, i64* %r3, i32 5 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i384 -%r131 = shl i384 %r130, 320 -%r132 = or i384 %r126, %r131 -%r133 = zext i384 %r132 to i448 -%r135 = getelementptr i64, i64* %r3, i32 6 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i448 -%r138 = shl i448 %r137, 384 -%r139 = or i448 %r133, %r138 -%r140 = zext i448 %r139 to i512 -%r142 = getelementptr i64, i64* %r3, i32 7 -%r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i512 -%r145 = shl i512 %r144, 448 -%r146 = or i512 %r140, %r145 -%r147 = zext i512 %r146 to i576 -%r149 = getelementptr i64, i64* %r3, i32 8 -%r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i576 -%r152 = shl i576 %r151, 512 -%r153 = or i576 %r147, %r152 -%r154 = zext i576 %r153 to i640 -%r156 = getelementptr i64, i64* %r3, i32 9 -%r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i640 -%r159 = shl i640 %r158, 576 -%r160 = or i640 %r154, %r159 -%r161 = zext i640 %r160 to i704 -%r163 = getelementptr i64, i64* %r3, i32 10 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i704 -%r166 = shl i704 %r165, 640 -%r167 = or i704 %r161, %r166 -%r168 = zext i704 %r167 to i768 -%r170 = getelementptr i64, i64* %r3, i32 11 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i768 -%r173 = shl i768 %r172, 704 -%r174 = or i768 %r168, %r173 -%r175 = zext i768 %r174 to i832 -%r177 = getelementptr i64, i64* %r3, i32 12 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i832 -%r180 = shl i832 %r179, 768 -%r181 = or i832 %r175, %r180 -%r182 = zext i832 %r181 to i896 -%r184 = getelementptr i64, i64* %r3, i32 13 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i896 -%r187 = shl i896 %r186, 832 -%r188 = or i896 %r182, %r187 -%r189 = zext i896 %r96 to i960 -%r190 = zext i896 %r188 to i960 -%r191 = sub i960 %r189, %r190 -%r192 = trunc i960 %r191 to i448 -%r193 = trunc i448 %r192 to i64 -%r195 = getelementptr i64, i64* %r1, i32 0 -store i64 %r193, i64* %r195 -%r196 = lshr i448 %r192, 64 -%r197 = trunc i448 %r196 to i64 -%r199 = getelementptr i64, i64* %r1, i32 1 -store i64 %r197, i64* %r199 -%r200 = lshr i448 %r196, 64 -%r201 = trunc i448 %r200 to i64 -%r203 = getelementptr i64, i64* %r1, i32 2 -store i64 %r201, i64* %r203 -%r204 = lshr i448 %r200, 64 -%r205 = trunc i448 %r204 to i64 -%r207 = getelementptr i64, i64* %r1, i32 3 -store i64 %r205, i64* %r207 -%r208 = lshr i448 %r204, 64 -%r209 = trunc i448 %r208 to i64 -%r211 = getelementptr i64, i64* %r1, i32 4 -store i64 %r209, i64* %r211 -%r212 = lshr i448 %r208, 64 -%r213 = trunc i448 %r212 to i64 -%r215 = getelementptr i64, i64* %r1, i32 5 -store i64 %r213, i64* %r215 -%r216 = lshr i448 %r212, 64 -%r217 = trunc i448 %r216 to i64 -%r219 = getelementptr i64, i64* %r1, i32 6 -store i64 %r217, i64* %r219 -%r220 = lshr i960 %r191, 448 -%r221 = trunc i960 %r220 to i448 -%r222 = lshr i960 %r191, 896 -%r223 = trunc i960 %r222 to i1 -%r224 = load i64, i64* %r4 -%r225 = zext i64 %r224 to i128 -%r227 = getelementptr i64, i64* %r4, i32 1 -%r228 = load i64, i64* %r227 -%r229 = zext i64 %r228 to i128 -%r230 = shl i128 %r229, 64 -%r231 = or i128 %r225, %r230 -%r232 = zext i128 %r231 to i192 -%r234 = getelementptr i64, i64* %r4, i32 2 -%r235 = load i64, i64* %r234 -%r236 = zext i64 %r235 to i192 -%r237 = shl i192 %r236, 128 -%r238 = or i192 %r232, %r237 -%r239 = zext i192 %r238 to i256 -%r241 = getelementptr i64, i64* %r4, i32 3 -%r242 = load i64, i64* %r241 -%r243 = zext i64 %r242 to i256 -%r244 = shl i256 %r243, 192 -%r245 = or i256 %r239, %r244 -%r246 = zext i256 %r245 to i320 -%r248 = getelementptr i64, i64* %r4, i32 4 -%r249 = load i64, i64* %r248 -%r250 = zext i64 %r249 to i320 -%r251 = shl i320 %r250, 256 -%r252 = or i320 %r246, %r251 -%r253 = zext i320 %r252 to i384 -%r255 = getelementptr i64, i64* %r4, i32 5 -%r256 = load i64, i64* %r255 -%r257 = zext i64 %r256 to i384 -%r258 = shl i384 %r257, 320 -%r259 = or i384 %r253, %r258 -%r260 = zext i384 %r259 to i448 -%r262 = getelementptr i64, i64* %r4, i32 6 -%r263 = load i64, i64* %r262 -%r264 = zext i64 %r263 to i448 -%r265 = shl i448 %r264, 384 -%r266 = or i448 %r260, %r265 -%r268 = select i1 %r223, i448 %r266, i448 0 -%r269 = add i448 %r221, %r268 -%r271 = getelementptr i64, i64* %r1, i32 7 -%r272 = trunc i448 %r269 to i64 -%r274 = getelementptr i64, i64* %r271, i32 0 -store i64 %r272, i64* %r274 -%r275 = lshr i448 %r269, 64 -%r276 = trunc i448 %r275 to i64 -%r278 = getelementptr i64, i64* %r271, i32 1 -store i64 %r276, i64* %r278 -%r279 = lshr i448 %r275, 64 -%r280 = trunc i448 %r279 to i64 -%r282 = getelementptr i64, i64* %r271, i32 2 -store i64 %r280, i64* %r282 -%r283 = lshr i448 %r279, 64 -%r284 = trunc i448 %r283 to i64 -%r286 = getelementptr i64, i64* %r271, i32 3 -store i64 %r284, i64* %r286 -%r287 = lshr i448 %r283, 64 -%r288 = trunc i448 %r287 to i64 -%r290 = getelementptr i64, i64* %r271, i32 4 -store i64 %r288, i64* %r290 -%r291 = lshr i448 %r287, 64 -%r292 = trunc i448 %r291 to i64 -%r294 = getelementptr i64, i64* %r271, i32 5 -store i64 %r292, i64* %r294 -%r295 = lshr i448 %r291, 64 -%r296 = trunc i448 %r295 to i64 -%r298 = getelementptr i64, i64* %r271, i32 6 -store i64 %r296, i64* %r298 -ret void -} -define i576 @mulPv512x64(i64* noalias %r2, i64 %r3) -{ -%r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) -%r6 = trunc i128 %r5 to i64 -%r7 = call i64 @extractHigh64(i128 %r5) -%r9 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 1) -%r10 = trunc i128 %r9 to i64 -%r11 = call i64 @extractHigh64(i128 %r9) -%r13 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 2) -%r14 = trunc i128 %r13 to i64 -%r15 = call i64 @extractHigh64(i128 %r13) -%r17 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 3) -%r18 = trunc i128 %r17 to i64 -%r19 = call i64 @extractHigh64(i128 %r17) -%r21 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 4) -%r22 = trunc i128 %r21 to i64 -%r23 = call i64 @extractHigh64(i128 %r21) -%r25 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 5) -%r26 = trunc i128 %r25 to i64 -%r27 = call i64 @extractHigh64(i128 %r25) -%r29 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 6) -%r30 = trunc i128 %r29 to i64 -%r31 = call i64 @extractHigh64(i128 %r29) -%r33 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 7) -%r34 = trunc i128 %r33 to i64 -%r35 = call i64 @extractHigh64(i128 %r33) -%r36 = zext i64 %r6 to i128 -%r37 = zext i64 %r10 to i128 -%r38 = shl i128 %r37, 64 -%r39 = or i128 %r36, %r38 -%r40 = zext i128 %r39 to i192 -%r41 = zext i64 %r14 to i192 -%r42 = shl i192 %r41, 128 -%r43 = or i192 %r40, %r42 -%r44 = zext i192 %r43 to i256 -%r45 = zext i64 %r18 to i256 -%r46 = shl i256 %r45, 192 -%r47 = or i256 %r44, %r46 -%r48 = zext i256 %r47 to i320 -%r49 = zext i64 %r22 to i320 -%r50 = shl i320 %r49, 256 -%r51 = or i320 %r48, %r50 -%r52 = zext i320 %r51 to i384 -%r53 = zext i64 %r26 to i384 -%r54 = shl i384 %r53, 320 -%r55 = or i384 %r52, %r54 -%r56 = zext i384 %r55 to i448 -%r57 = zext i64 %r30 to i448 -%r58 = shl i448 %r57, 384 -%r59 = or i448 %r56, %r58 -%r60 = zext i448 %r59 to i512 -%r61 = zext i64 %r34 to i512 -%r62 = shl i512 %r61, 448 -%r63 = or i512 %r60, %r62 -%r64 = zext i64 %r7 to i128 -%r65 = zext i64 %r11 to i128 -%r66 = shl i128 %r65, 64 -%r67 = or i128 %r64, %r66 -%r68 = zext i128 %r67 to i192 -%r69 = zext i64 %r15 to i192 -%r70 = shl i192 %r69, 128 -%r71 = or i192 %r68, %r70 -%r72 = zext i192 %r71 to i256 -%r73 = zext i64 %r19 to i256 -%r74 = shl i256 %r73, 192 -%r75 = or i256 %r72, %r74 -%r76 = zext i256 %r75 to i320 -%r77 = zext i64 %r23 to i320 -%r78 = shl i320 %r77, 256 -%r79 = or i320 %r76, %r78 -%r80 = zext i320 %r79 to i384 -%r81 = zext i64 %r27 to i384 -%r82 = shl i384 %r81, 320 -%r83 = or i384 %r80, %r82 -%r84 = zext i384 %r83 to i448 -%r85 = zext i64 %r31 to i448 -%r86 = shl i448 %r85, 384 -%r87 = or i448 %r84, %r86 -%r88 = zext i448 %r87 to i512 -%r89 = zext i64 %r35 to i512 -%r90 = shl i512 %r89, 448 -%r91 = or i512 %r88, %r90 -%r92 = zext i512 %r63 to i576 -%r93 = zext i512 %r91 to i576 -%r94 = shl i576 %r93, 64 -%r95 = add i576 %r92, %r94 -ret i576 %r95 -} -define void @mcl_fp_mulUnitPre8L(i64* noalias %r1, i64* noalias %r2, i64 %r3) -{ -%r4 = call i576 @mulPv512x64(i64* %r2, i64 %r3) -%r5 = trunc i576 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i576 %r4, 64 -%r9 = trunc i576 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i576 %r8, 64 -%r13 = trunc i576 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i576 %r12, 64 -%r17 = trunc i576 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i576 %r16, 64 -%r21 = trunc i576 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 -%r24 = lshr i576 %r20, 64 -%r25 = trunc i576 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 5 -store i64 %r25, i64* %r27 -%r28 = lshr i576 %r24, 64 -%r29 = trunc i576 %r28 to i64 -%r31 = getelementptr i64, i64* %r1, i32 6 -store i64 %r29, i64* %r31 -%r32 = lshr i576 %r28, 64 -%r33 = trunc i576 %r32 to i64 -%r35 = getelementptr i64, i64* %r1, i32 7 -store i64 %r33, i64* %r35 -%r36 = lshr i576 %r32, 64 -%r37 = trunc i576 %r36 to i64 -%r39 = getelementptr i64, i64* %r1, i32 8 -store i64 %r37, i64* %r39 -ret void -} -define void @mcl_fpDbl_mulPre8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r2, i32 4 -%r7 = getelementptr i64, i64* %r3, i32 4 -%r9 = getelementptr i64, i64* %r1, i32 8 -call void @mcl_fpDbl_mulPre4L(i64* %r1, i64* %r2, i64* %r3) -call void @mcl_fpDbl_mulPre4L(i64* %r9, i64* %r5, i64* %r7) -%r10 = load i64, i64* %r5 -%r11 = zext i64 %r10 to i128 -%r13 = getelementptr i64, i64* %r5, i32 1 -%r14 = load i64, i64* %r13 -%r15 = zext i64 %r14 to i128 -%r16 = shl i128 %r15, 64 -%r17 = or i128 %r11, %r16 -%r18 = zext i128 %r17 to i192 -%r20 = getelementptr i64, i64* %r5, i32 2 -%r21 = load i64, i64* %r20 -%r22 = zext i64 %r21 to i192 -%r23 = shl i192 %r22, 128 -%r24 = or i192 %r18, %r23 -%r25 = zext i192 %r24 to i256 -%r27 = getelementptr i64, i64* %r5, i32 3 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i256 -%r30 = shl i256 %r29, 192 -%r31 = or i256 %r25, %r30 -%r32 = zext i256 %r31 to i320 -%r33 = load i64, i64* %r2 -%r34 = zext i64 %r33 to i128 -%r36 = getelementptr i64, i64* %r2, i32 1 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i128 -%r39 = shl i128 %r38, 64 -%r40 = or i128 %r34, %r39 -%r41 = zext i128 %r40 to i192 -%r43 = getelementptr i64, i64* %r2, i32 2 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i192 -%r46 = shl i192 %r45, 128 -%r47 = or i192 %r41, %r46 -%r48 = zext i192 %r47 to i256 -%r50 = getelementptr i64, i64* %r2, i32 3 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i256 -%r53 = shl i256 %r52, 192 -%r54 = or i256 %r48, %r53 -%r55 = zext i256 %r54 to i320 -%r56 = load i64, i64* %r7 -%r57 = zext i64 %r56 to i128 -%r59 = getelementptr i64, i64* %r7, i32 1 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i128 -%r62 = shl i128 %r61, 64 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i192 -%r66 = getelementptr i64, i64* %r7, i32 2 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i192 -%r69 = shl i192 %r68, 128 -%r70 = or i192 %r64, %r69 -%r71 = zext i192 %r70 to i256 -%r73 = getelementptr i64, i64* %r7, i32 3 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i256 -%r76 = shl i256 %r75, 192 -%r77 = or i256 %r71, %r76 -%r78 = zext i256 %r77 to i320 -%r79 = load i64, i64* %r3 -%r80 = zext i64 %r79 to i128 -%r82 = getelementptr i64, i64* %r3, i32 1 -%r83 = load i64, i64* %r82 -%r84 = zext i64 %r83 to i128 -%r85 = shl i128 %r84, 64 -%r86 = or i128 %r80, %r85 -%r87 = zext i128 %r86 to i192 -%r89 = getelementptr i64, i64* %r3, i32 2 -%r90 = load i64, i64* %r89 -%r91 = zext i64 %r90 to i192 -%r92 = shl i192 %r91, 128 -%r93 = or i192 %r87, %r92 -%r94 = zext i192 %r93 to i256 -%r96 = getelementptr i64, i64* %r3, i32 3 -%r97 = load i64, i64* %r96 -%r98 = zext i64 %r97 to i256 -%r99 = shl i256 %r98, 192 -%r100 = or i256 %r94, %r99 -%r101 = zext i256 %r100 to i320 -%r102 = add i320 %r32, %r55 -%r103 = add i320 %r78, %r101 -%r105 = alloca i64, i32 8 -%r106 = trunc i320 %r102 to i256 -%r107 = trunc i320 %r103 to i256 -%r108 = lshr i320 %r102, 256 -%r109 = trunc i320 %r108 to i1 -%r110 = lshr i320 %r103, 256 -%r111 = trunc i320 %r110 to i1 -%r112 = and i1 %r109, %r111 -%r114 = select i1 %r109, i256 %r107, i256 0 -%r116 = select i1 %r111, i256 %r106, i256 0 -%r118 = alloca i64, i32 4 -%r120 = alloca i64, i32 4 -%r121 = trunc i256 %r106 to i64 -%r123 = getelementptr i64, i64* %r118, i32 0 -store i64 %r121, i64* %r123 -%r124 = lshr i256 %r106, 64 -%r125 = trunc i256 %r124 to i64 -%r127 = getelementptr i64, i64* %r118, i32 1 -store i64 %r125, i64* %r127 -%r128 = lshr i256 %r124, 64 -%r129 = trunc i256 %r128 to i64 -%r131 = getelementptr i64, i64* %r118, i32 2 -store i64 %r129, i64* %r131 -%r132 = lshr i256 %r128, 64 -%r133 = trunc i256 %r132 to i64 -%r135 = getelementptr i64, i64* %r118, i32 3 -store i64 %r133, i64* %r135 -%r136 = trunc i256 %r107 to i64 -%r138 = getelementptr i64, i64* %r120, i32 0 -store i64 %r136, i64* %r138 -%r139 = lshr i256 %r107, 64 -%r140 = trunc i256 %r139 to i64 -%r142 = getelementptr i64, i64* %r120, i32 1 -store i64 %r140, i64* %r142 -%r143 = lshr i256 %r139, 64 -%r144 = trunc i256 %r143 to i64 -%r146 = getelementptr i64, i64* %r120, i32 2 -store i64 %r144, i64* %r146 -%r147 = lshr i256 %r143, 64 -%r148 = trunc i256 %r147 to i64 -%r150 = getelementptr i64, i64* %r120, i32 3 -store i64 %r148, i64* %r150 -call void @mcl_fpDbl_mulPre4L(i64* %r105, i64* %r118, i64* %r120) -%r151 = load i64, i64* %r105 -%r152 = zext i64 %r151 to i128 -%r154 = getelementptr i64, i64* %r105, i32 1 -%r155 = load i64, i64* %r154 -%r156 = zext i64 %r155 to i128 -%r157 = shl i128 %r156, 64 -%r158 = or i128 %r152, %r157 -%r159 = zext i128 %r158 to i192 -%r161 = getelementptr i64, i64* %r105, i32 2 -%r162 = load i64, i64* %r161 -%r163 = zext i64 %r162 to i192 -%r164 = shl i192 %r163, 128 -%r165 = or i192 %r159, %r164 -%r166 = zext i192 %r165 to i256 -%r168 = getelementptr i64, i64* %r105, i32 3 -%r169 = load i64, i64* %r168 -%r170 = zext i64 %r169 to i256 -%r171 = shl i256 %r170, 192 -%r172 = or i256 %r166, %r171 -%r173 = zext i256 %r172 to i320 -%r175 = getelementptr i64, i64* %r105, i32 4 -%r176 = load i64, i64* %r175 -%r177 = zext i64 %r176 to i320 -%r178 = shl i320 %r177, 256 -%r179 = or i320 %r173, %r178 -%r180 = zext i320 %r179 to i384 -%r182 = getelementptr i64, i64* %r105, i32 5 -%r183 = load i64, i64* %r182 -%r184 = zext i64 %r183 to i384 -%r185 = shl i384 %r184, 320 -%r186 = or i384 %r180, %r185 -%r187 = zext i384 %r186 to i448 -%r189 = getelementptr i64, i64* %r105, i32 6 -%r190 = load i64, i64* %r189 -%r191 = zext i64 %r190 to i448 -%r192 = shl i448 %r191, 384 -%r193 = or i448 %r187, %r192 -%r194 = zext i448 %r193 to i512 -%r196 = getelementptr i64, i64* %r105, i32 7 -%r197 = load i64, i64* %r196 -%r198 = zext i64 %r197 to i512 -%r199 = shl i512 %r198, 448 -%r200 = or i512 %r194, %r199 -%r201 = zext i512 %r200 to i576 -%r202 = zext i1 %r112 to i576 -%r203 = shl i576 %r202, 512 -%r204 = or i576 %r201, %r203 -%r205 = zext i256 %r114 to i576 -%r206 = zext i256 %r116 to i576 -%r207 = shl i576 %r205, 256 -%r208 = shl i576 %r206, 256 -%r209 = add i576 %r204, %r207 -%r210 = add i576 %r209, %r208 -%r211 = load i64, i64* %r1 -%r212 = zext i64 %r211 to i128 -%r214 = getelementptr i64, i64* %r1, i32 1 -%r215 = load i64, i64* %r214 -%r216 = zext i64 %r215 to i128 -%r217 = shl i128 %r216, 64 -%r218 = or i128 %r212, %r217 -%r219 = zext i128 %r218 to i192 -%r221 = getelementptr i64, i64* %r1, i32 2 -%r222 = load i64, i64* %r221 -%r223 = zext i64 %r222 to i192 -%r224 = shl i192 %r223, 128 -%r225 = or i192 %r219, %r224 -%r226 = zext i192 %r225 to i256 -%r228 = getelementptr i64, i64* %r1, i32 3 -%r229 = load i64, i64* %r228 -%r230 = zext i64 %r229 to i256 -%r231 = shl i256 %r230, 192 -%r232 = or i256 %r226, %r231 -%r233 = zext i256 %r232 to i320 -%r235 = getelementptr i64, i64* %r1, i32 4 -%r236 = load i64, i64* %r235 -%r237 = zext i64 %r236 to i320 -%r238 = shl i320 %r237, 256 -%r239 = or i320 %r233, %r238 -%r240 = zext i320 %r239 to i384 -%r242 = getelementptr i64, i64* %r1, i32 5 -%r243 = load i64, i64* %r242 -%r244 = zext i64 %r243 to i384 -%r245 = shl i384 %r244, 320 -%r246 = or i384 %r240, %r245 -%r247 = zext i384 %r246 to i448 -%r249 = getelementptr i64, i64* %r1, i32 6 -%r250 = load i64, i64* %r249 -%r251 = zext i64 %r250 to i448 -%r252 = shl i448 %r251, 384 -%r253 = or i448 %r247, %r252 -%r254 = zext i448 %r253 to i512 -%r256 = getelementptr i64, i64* %r1, i32 7 -%r257 = load i64, i64* %r256 -%r258 = zext i64 %r257 to i512 -%r259 = shl i512 %r258, 448 -%r260 = or i512 %r254, %r259 -%r261 = zext i512 %r260 to i576 -%r262 = sub i576 %r210, %r261 -%r264 = getelementptr i64, i64* %r1, i32 8 -%r265 = load i64, i64* %r264 -%r266 = zext i64 %r265 to i128 -%r268 = getelementptr i64, i64* %r264, i32 1 -%r269 = load i64, i64* %r268 -%r270 = zext i64 %r269 to i128 -%r271 = shl i128 %r270, 64 -%r272 = or i128 %r266, %r271 -%r273 = zext i128 %r272 to i192 -%r275 = getelementptr i64, i64* %r264, i32 2 -%r276 = load i64, i64* %r275 -%r277 = zext i64 %r276 to i192 -%r278 = shl i192 %r277, 128 -%r279 = or i192 %r273, %r278 -%r280 = zext i192 %r279 to i256 -%r282 = getelementptr i64, i64* %r264, i32 3 -%r283 = load i64, i64* %r282 -%r284 = zext i64 %r283 to i256 -%r285 = shl i256 %r284, 192 -%r286 = or i256 %r280, %r285 -%r287 = zext i256 %r286 to i320 -%r289 = getelementptr i64, i64* %r264, i32 4 -%r290 = load i64, i64* %r289 -%r291 = zext i64 %r290 to i320 -%r292 = shl i320 %r291, 256 -%r293 = or i320 %r287, %r292 -%r294 = zext i320 %r293 to i384 -%r296 = getelementptr i64, i64* %r264, i32 5 -%r297 = load i64, i64* %r296 -%r298 = zext i64 %r297 to i384 -%r299 = shl i384 %r298, 320 -%r300 = or i384 %r294, %r299 -%r301 = zext i384 %r300 to i448 -%r303 = getelementptr i64, i64* %r264, i32 6 -%r304 = load i64, i64* %r303 -%r305 = zext i64 %r304 to i448 -%r306 = shl i448 %r305, 384 -%r307 = or i448 %r301, %r306 -%r308 = zext i448 %r307 to i512 -%r310 = getelementptr i64, i64* %r264, i32 7 -%r311 = load i64, i64* %r310 -%r312 = zext i64 %r311 to i512 -%r313 = shl i512 %r312, 448 -%r314 = or i512 %r308, %r313 -%r315 = zext i512 %r314 to i576 -%r316 = sub i576 %r262, %r315 -%r317 = zext i576 %r316 to i768 -%r319 = getelementptr i64, i64* %r1, i32 4 -%r320 = load i64, i64* %r319 -%r321 = zext i64 %r320 to i128 -%r323 = getelementptr i64, i64* %r319, i32 1 -%r324 = load i64, i64* %r323 -%r325 = zext i64 %r324 to i128 -%r326 = shl i128 %r325, 64 -%r327 = or i128 %r321, %r326 -%r328 = zext i128 %r327 to i192 -%r330 = getelementptr i64, i64* %r319, i32 2 -%r331 = load i64, i64* %r330 -%r332 = zext i64 %r331 to i192 -%r333 = shl i192 %r332, 128 -%r334 = or i192 %r328, %r333 -%r335 = zext i192 %r334 to i256 -%r337 = getelementptr i64, i64* %r319, i32 3 -%r338 = load i64, i64* %r337 -%r339 = zext i64 %r338 to i256 -%r340 = shl i256 %r339, 192 -%r341 = or i256 %r335, %r340 -%r342 = zext i256 %r341 to i320 -%r344 = getelementptr i64, i64* %r319, i32 4 -%r345 = load i64, i64* %r344 -%r346 = zext i64 %r345 to i320 -%r347 = shl i320 %r346, 256 -%r348 = or i320 %r342, %r347 -%r349 = zext i320 %r348 to i384 -%r351 = getelementptr i64, i64* %r319, i32 5 -%r352 = load i64, i64* %r351 -%r353 = zext i64 %r352 to i384 -%r354 = shl i384 %r353, 320 -%r355 = or i384 %r349, %r354 -%r356 = zext i384 %r355 to i448 -%r358 = getelementptr i64, i64* %r319, i32 6 -%r359 = load i64, i64* %r358 -%r360 = zext i64 %r359 to i448 -%r361 = shl i448 %r360, 384 -%r362 = or i448 %r356, %r361 -%r363 = zext i448 %r362 to i512 -%r365 = getelementptr i64, i64* %r319, i32 7 -%r366 = load i64, i64* %r365 -%r367 = zext i64 %r366 to i512 -%r368 = shl i512 %r367, 448 -%r369 = or i512 %r363, %r368 -%r370 = zext i512 %r369 to i576 -%r372 = getelementptr i64, i64* %r319, i32 8 -%r373 = load i64, i64* %r372 -%r374 = zext i64 %r373 to i576 -%r375 = shl i576 %r374, 512 -%r376 = or i576 %r370, %r375 -%r377 = zext i576 %r376 to i640 -%r379 = getelementptr i64, i64* %r319, i32 9 -%r380 = load i64, i64* %r379 -%r381 = zext i64 %r380 to i640 -%r382 = shl i640 %r381, 576 -%r383 = or i640 %r377, %r382 -%r384 = zext i640 %r383 to i704 -%r386 = getelementptr i64, i64* %r319, i32 10 -%r387 = load i64, i64* %r386 -%r388 = zext i64 %r387 to i704 -%r389 = shl i704 %r388, 640 -%r390 = or i704 %r384, %r389 -%r391 = zext i704 %r390 to i768 -%r393 = getelementptr i64, i64* %r319, i32 11 -%r394 = load i64, i64* %r393 -%r395 = zext i64 %r394 to i768 -%r396 = shl i768 %r395, 704 -%r397 = or i768 %r391, %r396 -%r398 = add i768 %r317, %r397 -%r400 = getelementptr i64, i64* %r1, i32 4 -%r401 = trunc i768 %r398 to i64 -%r403 = getelementptr i64, i64* %r400, i32 0 -store i64 %r401, i64* %r403 -%r404 = lshr i768 %r398, 64 -%r405 = trunc i768 %r404 to i64 -%r407 = getelementptr i64, i64* %r400, i32 1 -store i64 %r405, i64* %r407 -%r408 = lshr i768 %r404, 64 -%r409 = trunc i768 %r408 to i64 -%r411 = getelementptr i64, i64* %r400, i32 2 -store i64 %r409, i64* %r411 -%r412 = lshr i768 %r408, 64 -%r413 = trunc i768 %r412 to i64 -%r415 = getelementptr i64, i64* %r400, i32 3 -store i64 %r413, i64* %r415 -%r416 = lshr i768 %r412, 64 -%r417 = trunc i768 %r416 to i64 -%r419 = getelementptr i64, i64* %r400, i32 4 -store i64 %r417, i64* %r419 -%r420 = lshr i768 %r416, 64 -%r421 = trunc i768 %r420 to i64 -%r423 = getelementptr i64, i64* %r400, i32 5 -store i64 %r421, i64* %r423 -%r424 = lshr i768 %r420, 64 -%r425 = trunc i768 %r424 to i64 -%r427 = getelementptr i64, i64* %r400, i32 6 -store i64 %r425, i64* %r427 -%r428 = lshr i768 %r424, 64 -%r429 = trunc i768 %r428 to i64 -%r431 = getelementptr i64, i64* %r400, i32 7 -store i64 %r429, i64* %r431 -%r432 = lshr i768 %r428, 64 -%r433 = trunc i768 %r432 to i64 -%r435 = getelementptr i64, i64* %r400, i32 8 -store i64 %r433, i64* %r435 -%r436 = lshr i768 %r432, 64 -%r437 = trunc i768 %r436 to i64 -%r439 = getelementptr i64, i64* %r400, i32 9 -store i64 %r437, i64* %r439 -%r440 = lshr i768 %r436, 64 -%r441 = trunc i768 %r440 to i64 -%r443 = getelementptr i64, i64* %r400, i32 10 -store i64 %r441, i64* %r443 -%r444 = lshr i768 %r440, 64 -%r445 = trunc i768 %r444 to i64 -%r447 = getelementptr i64, i64* %r400, i32 11 -store i64 %r445, i64* %r447 -ret void -} -define void @mcl_fpDbl_sqrPre8L(i64* noalias %r1, i64* noalias %r2) -{ -%r4 = getelementptr i64, i64* %r2, i32 4 -%r6 = getelementptr i64, i64* %r2, i32 4 -%r8 = getelementptr i64, i64* %r1, i32 8 -call void @mcl_fpDbl_mulPre4L(i64* %r1, i64* %r2, i64* %r2) -call void @mcl_fpDbl_mulPre4L(i64* %r8, i64* %r4, i64* %r6) -%r9 = load i64, i64* %r4 -%r10 = zext i64 %r9 to i128 -%r12 = getelementptr i64, i64* %r4, i32 1 -%r13 = load i64, i64* %r12 -%r14 = zext i64 %r13 to i128 -%r15 = shl i128 %r14, 64 -%r16 = or i128 %r10, %r15 -%r17 = zext i128 %r16 to i192 -%r19 = getelementptr i64, i64* %r4, i32 2 -%r20 = load i64, i64* %r19 -%r21 = zext i64 %r20 to i192 -%r22 = shl i192 %r21, 128 -%r23 = or i192 %r17, %r22 -%r24 = zext i192 %r23 to i256 -%r26 = getelementptr i64, i64* %r4, i32 3 -%r27 = load i64, i64* %r26 -%r28 = zext i64 %r27 to i256 -%r29 = shl i256 %r28, 192 -%r30 = or i256 %r24, %r29 -%r31 = zext i256 %r30 to i320 -%r32 = load i64, i64* %r2 -%r33 = zext i64 %r32 to i128 -%r35 = getelementptr i64, i64* %r2, i32 1 -%r36 = load i64, i64* %r35 -%r37 = zext i64 %r36 to i128 -%r38 = shl i128 %r37, 64 -%r39 = or i128 %r33, %r38 -%r40 = zext i128 %r39 to i192 -%r42 = getelementptr i64, i64* %r2, i32 2 -%r43 = load i64, i64* %r42 -%r44 = zext i64 %r43 to i192 -%r45 = shl i192 %r44, 128 -%r46 = or i192 %r40, %r45 -%r47 = zext i192 %r46 to i256 -%r49 = getelementptr i64, i64* %r2, i32 3 -%r50 = load i64, i64* %r49 -%r51 = zext i64 %r50 to i256 -%r52 = shl i256 %r51, 192 -%r53 = or i256 %r47, %r52 -%r54 = zext i256 %r53 to i320 -%r55 = load i64, i64* %r6 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r6, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r6, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r6, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r78 = load i64, i64* %r2 -%r79 = zext i64 %r78 to i128 -%r81 = getelementptr i64, i64* %r2, i32 1 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i128 -%r84 = shl i128 %r83, 64 -%r85 = or i128 %r79, %r84 -%r86 = zext i128 %r85 to i192 -%r88 = getelementptr i64, i64* %r2, i32 2 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i192 -%r91 = shl i192 %r90, 128 -%r92 = or i192 %r86, %r91 -%r93 = zext i192 %r92 to i256 -%r95 = getelementptr i64, i64* %r2, i32 3 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i256 -%r98 = shl i256 %r97, 192 -%r99 = or i256 %r93, %r98 -%r100 = zext i256 %r99 to i320 -%r101 = add i320 %r31, %r54 -%r102 = add i320 %r77, %r100 -%r104 = alloca i64, i32 8 -%r105 = trunc i320 %r101 to i256 -%r106 = trunc i320 %r102 to i256 -%r107 = lshr i320 %r101, 256 -%r108 = trunc i320 %r107 to i1 -%r109 = lshr i320 %r102, 256 -%r110 = trunc i320 %r109 to i1 -%r111 = and i1 %r108, %r110 -%r113 = select i1 %r108, i256 %r106, i256 0 -%r115 = select i1 %r110, i256 %r105, i256 0 -%r117 = alloca i64, i32 4 -%r119 = alloca i64, i32 4 -%r120 = trunc i256 %r105 to i64 -%r122 = getelementptr i64, i64* %r117, i32 0 -store i64 %r120, i64* %r122 -%r123 = lshr i256 %r105, 64 -%r124 = trunc i256 %r123 to i64 -%r126 = getelementptr i64, i64* %r117, i32 1 -store i64 %r124, i64* %r126 -%r127 = lshr i256 %r123, 64 -%r128 = trunc i256 %r127 to i64 -%r130 = getelementptr i64, i64* %r117, i32 2 -store i64 %r128, i64* %r130 -%r131 = lshr i256 %r127, 64 -%r132 = trunc i256 %r131 to i64 -%r134 = getelementptr i64, i64* %r117, i32 3 -store i64 %r132, i64* %r134 -%r135 = trunc i256 %r106 to i64 -%r137 = getelementptr i64, i64* %r119, i32 0 -store i64 %r135, i64* %r137 -%r138 = lshr i256 %r106, 64 -%r139 = trunc i256 %r138 to i64 -%r141 = getelementptr i64, i64* %r119, i32 1 -store i64 %r139, i64* %r141 -%r142 = lshr i256 %r138, 64 -%r143 = trunc i256 %r142 to i64 -%r145 = getelementptr i64, i64* %r119, i32 2 -store i64 %r143, i64* %r145 -%r146 = lshr i256 %r142, 64 -%r147 = trunc i256 %r146 to i64 -%r149 = getelementptr i64, i64* %r119, i32 3 -store i64 %r147, i64* %r149 -call void @mcl_fpDbl_mulPre4L(i64* %r104, i64* %r117, i64* %r119) -%r150 = load i64, i64* %r104 -%r151 = zext i64 %r150 to i128 -%r153 = getelementptr i64, i64* %r104, i32 1 -%r154 = load i64, i64* %r153 -%r155 = zext i64 %r154 to i128 -%r156 = shl i128 %r155, 64 -%r157 = or i128 %r151, %r156 -%r158 = zext i128 %r157 to i192 -%r160 = getelementptr i64, i64* %r104, i32 2 -%r161 = load i64, i64* %r160 -%r162 = zext i64 %r161 to i192 -%r163 = shl i192 %r162, 128 -%r164 = or i192 %r158, %r163 -%r165 = zext i192 %r164 to i256 -%r167 = getelementptr i64, i64* %r104, i32 3 -%r168 = load i64, i64* %r167 -%r169 = zext i64 %r168 to i256 -%r170 = shl i256 %r169, 192 -%r171 = or i256 %r165, %r170 -%r172 = zext i256 %r171 to i320 -%r174 = getelementptr i64, i64* %r104, i32 4 -%r175 = load i64, i64* %r174 -%r176 = zext i64 %r175 to i320 -%r177 = shl i320 %r176, 256 -%r178 = or i320 %r172, %r177 -%r179 = zext i320 %r178 to i384 -%r181 = getelementptr i64, i64* %r104, i32 5 -%r182 = load i64, i64* %r181 -%r183 = zext i64 %r182 to i384 -%r184 = shl i384 %r183, 320 -%r185 = or i384 %r179, %r184 -%r186 = zext i384 %r185 to i448 -%r188 = getelementptr i64, i64* %r104, i32 6 -%r189 = load i64, i64* %r188 -%r190 = zext i64 %r189 to i448 -%r191 = shl i448 %r190, 384 -%r192 = or i448 %r186, %r191 -%r193 = zext i448 %r192 to i512 -%r195 = getelementptr i64, i64* %r104, i32 7 -%r196 = load i64, i64* %r195 -%r197 = zext i64 %r196 to i512 -%r198 = shl i512 %r197, 448 -%r199 = or i512 %r193, %r198 -%r200 = zext i512 %r199 to i576 -%r201 = zext i1 %r111 to i576 -%r202 = shl i576 %r201, 512 -%r203 = or i576 %r200, %r202 -%r204 = zext i256 %r113 to i576 -%r205 = zext i256 %r115 to i576 -%r206 = shl i576 %r204, 256 -%r207 = shl i576 %r205, 256 -%r208 = add i576 %r203, %r206 -%r209 = add i576 %r208, %r207 -%r210 = load i64, i64* %r1 -%r211 = zext i64 %r210 to i128 -%r213 = getelementptr i64, i64* %r1, i32 1 -%r214 = load i64, i64* %r213 -%r215 = zext i64 %r214 to i128 -%r216 = shl i128 %r215, 64 -%r217 = or i128 %r211, %r216 -%r218 = zext i128 %r217 to i192 -%r220 = getelementptr i64, i64* %r1, i32 2 -%r221 = load i64, i64* %r220 -%r222 = zext i64 %r221 to i192 -%r223 = shl i192 %r222, 128 -%r224 = or i192 %r218, %r223 -%r225 = zext i192 %r224 to i256 -%r227 = getelementptr i64, i64* %r1, i32 3 -%r228 = load i64, i64* %r227 -%r229 = zext i64 %r228 to i256 -%r230 = shl i256 %r229, 192 -%r231 = or i256 %r225, %r230 -%r232 = zext i256 %r231 to i320 -%r234 = getelementptr i64, i64* %r1, i32 4 -%r235 = load i64, i64* %r234 -%r236 = zext i64 %r235 to i320 -%r237 = shl i320 %r236, 256 -%r238 = or i320 %r232, %r237 -%r239 = zext i320 %r238 to i384 -%r241 = getelementptr i64, i64* %r1, i32 5 -%r242 = load i64, i64* %r241 -%r243 = zext i64 %r242 to i384 -%r244 = shl i384 %r243, 320 -%r245 = or i384 %r239, %r244 -%r246 = zext i384 %r245 to i448 -%r248 = getelementptr i64, i64* %r1, i32 6 -%r249 = load i64, i64* %r248 -%r250 = zext i64 %r249 to i448 -%r251 = shl i448 %r250, 384 -%r252 = or i448 %r246, %r251 -%r253 = zext i448 %r252 to i512 -%r255 = getelementptr i64, i64* %r1, i32 7 -%r256 = load i64, i64* %r255 -%r257 = zext i64 %r256 to i512 -%r258 = shl i512 %r257, 448 -%r259 = or i512 %r253, %r258 -%r260 = zext i512 %r259 to i576 -%r261 = sub i576 %r209, %r260 -%r263 = getelementptr i64, i64* %r1, i32 8 -%r264 = load i64, i64* %r263 -%r265 = zext i64 %r264 to i128 -%r267 = getelementptr i64, i64* %r263, i32 1 -%r268 = load i64, i64* %r267 -%r269 = zext i64 %r268 to i128 -%r270 = shl i128 %r269, 64 -%r271 = or i128 %r265, %r270 -%r272 = zext i128 %r271 to i192 -%r274 = getelementptr i64, i64* %r263, i32 2 -%r275 = load i64, i64* %r274 -%r276 = zext i64 %r275 to i192 -%r277 = shl i192 %r276, 128 -%r278 = or i192 %r272, %r277 -%r279 = zext i192 %r278 to i256 -%r281 = getelementptr i64, i64* %r263, i32 3 -%r282 = load i64, i64* %r281 -%r283 = zext i64 %r282 to i256 -%r284 = shl i256 %r283, 192 -%r285 = or i256 %r279, %r284 -%r286 = zext i256 %r285 to i320 -%r288 = getelementptr i64, i64* %r263, i32 4 -%r289 = load i64, i64* %r288 -%r290 = zext i64 %r289 to i320 -%r291 = shl i320 %r290, 256 -%r292 = or i320 %r286, %r291 -%r293 = zext i320 %r292 to i384 -%r295 = getelementptr i64, i64* %r263, i32 5 -%r296 = load i64, i64* %r295 -%r297 = zext i64 %r296 to i384 -%r298 = shl i384 %r297, 320 -%r299 = or i384 %r293, %r298 -%r300 = zext i384 %r299 to i448 -%r302 = getelementptr i64, i64* %r263, i32 6 -%r303 = load i64, i64* %r302 -%r304 = zext i64 %r303 to i448 -%r305 = shl i448 %r304, 384 -%r306 = or i448 %r300, %r305 -%r307 = zext i448 %r306 to i512 -%r309 = getelementptr i64, i64* %r263, i32 7 -%r310 = load i64, i64* %r309 -%r311 = zext i64 %r310 to i512 -%r312 = shl i512 %r311, 448 -%r313 = or i512 %r307, %r312 -%r314 = zext i512 %r313 to i576 -%r315 = sub i576 %r261, %r314 -%r316 = zext i576 %r315 to i768 -%r318 = getelementptr i64, i64* %r1, i32 4 -%r319 = load i64, i64* %r318 -%r320 = zext i64 %r319 to i128 -%r322 = getelementptr i64, i64* %r318, i32 1 -%r323 = load i64, i64* %r322 -%r324 = zext i64 %r323 to i128 -%r325 = shl i128 %r324, 64 -%r326 = or i128 %r320, %r325 -%r327 = zext i128 %r326 to i192 -%r329 = getelementptr i64, i64* %r318, i32 2 -%r330 = load i64, i64* %r329 -%r331 = zext i64 %r330 to i192 -%r332 = shl i192 %r331, 128 -%r333 = or i192 %r327, %r332 -%r334 = zext i192 %r333 to i256 -%r336 = getelementptr i64, i64* %r318, i32 3 -%r337 = load i64, i64* %r336 -%r338 = zext i64 %r337 to i256 -%r339 = shl i256 %r338, 192 -%r340 = or i256 %r334, %r339 -%r341 = zext i256 %r340 to i320 -%r343 = getelementptr i64, i64* %r318, i32 4 -%r344 = load i64, i64* %r343 -%r345 = zext i64 %r344 to i320 -%r346 = shl i320 %r345, 256 -%r347 = or i320 %r341, %r346 -%r348 = zext i320 %r347 to i384 -%r350 = getelementptr i64, i64* %r318, i32 5 -%r351 = load i64, i64* %r350 -%r352 = zext i64 %r351 to i384 -%r353 = shl i384 %r352, 320 -%r354 = or i384 %r348, %r353 -%r355 = zext i384 %r354 to i448 -%r357 = getelementptr i64, i64* %r318, i32 6 -%r358 = load i64, i64* %r357 -%r359 = zext i64 %r358 to i448 -%r360 = shl i448 %r359, 384 -%r361 = or i448 %r355, %r360 -%r362 = zext i448 %r361 to i512 -%r364 = getelementptr i64, i64* %r318, i32 7 -%r365 = load i64, i64* %r364 -%r366 = zext i64 %r365 to i512 -%r367 = shl i512 %r366, 448 -%r368 = or i512 %r362, %r367 -%r369 = zext i512 %r368 to i576 -%r371 = getelementptr i64, i64* %r318, i32 8 -%r372 = load i64, i64* %r371 -%r373 = zext i64 %r372 to i576 -%r374 = shl i576 %r373, 512 -%r375 = or i576 %r369, %r374 -%r376 = zext i576 %r375 to i640 -%r378 = getelementptr i64, i64* %r318, i32 9 -%r379 = load i64, i64* %r378 -%r380 = zext i64 %r379 to i640 -%r381 = shl i640 %r380, 576 -%r382 = or i640 %r376, %r381 -%r383 = zext i640 %r382 to i704 -%r385 = getelementptr i64, i64* %r318, i32 10 -%r386 = load i64, i64* %r385 -%r387 = zext i64 %r386 to i704 -%r388 = shl i704 %r387, 640 -%r389 = or i704 %r383, %r388 -%r390 = zext i704 %r389 to i768 -%r392 = getelementptr i64, i64* %r318, i32 11 -%r393 = load i64, i64* %r392 -%r394 = zext i64 %r393 to i768 -%r395 = shl i768 %r394, 704 -%r396 = or i768 %r390, %r395 -%r397 = add i768 %r316, %r396 -%r399 = getelementptr i64, i64* %r1, i32 4 -%r400 = trunc i768 %r397 to i64 -%r402 = getelementptr i64, i64* %r399, i32 0 -store i64 %r400, i64* %r402 -%r403 = lshr i768 %r397, 64 -%r404 = trunc i768 %r403 to i64 -%r406 = getelementptr i64, i64* %r399, i32 1 -store i64 %r404, i64* %r406 -%r407 = lshr i768 %r403, 64 -%r408 = trunc i768 %r407 to i64 -%r410 = getelementptr i64, i64* %r399, i32 2 -store i64 %r408, i64* %r410 -%r411 = lshr i768 %r407, 64 -%r412 = trunc i768 %r411 to i64 -%r414 = getelementptr i64, i64* %r399, i32 3 -store i64 %r412, i64* %r414 -%r415 = lshr i768 %r411, 64 -%r416 = trunc i768 %r415 to i64 -%r418 = getelementptr i64, i64* %r399, i32 4 -store i64 %r416, i64* %r418 -%r419 = lshr i768 %r415, 64 -%r420 = trunc i768 %r419 to i64 -%r422 = getelementptr i64, i64* %r399, i32 5 -store i64 %r420, i64* %r422 -%r423 = lshr i768 %r419, 64 -%r424 = trunc i768 %r423 to i64 -%r426 = getelementptr i64, i64* %r399, i32 6 -store i64 %r424, i64* %r426 -%r427 = lshr i768 %r423, 64 -%r428 = trunc i768 %r427 to i64 -%r430 = getelementptr i64, i64* %r399, i32 7 -store i64 %r428, i64* %r430 -%r431 = lshr i768 %r427, 64 -%r432 = trunc i768 %r431 to i64 -%r434 = getelementptr i64, i64* %r399, i32 8 -store i64 %r432, i64* %r434 -%r435 = lshr i768 %r431, 64 -%r436 = trunc i768 %r435 to i64 -%r438 = getelementptr i64, i64* %r399, i32 9 -store i64 %r436, i64* %r438 -%r439 = lshr i768 %r435, 64 -%r440 = trunc i768 %r439 to i64 -%r442 = getelementptr i64, i64* %r399, i32 10 -store i64 %r440, i64* %r442 -%r443 = lshr i768 %r439, 64 -%r444 = trunc i768 %r443 to i64 -%r446 = getelementptr i64, i64* %r399, i32 11 -store i64 %r444, i64* %r446 -ret void -} -define void @mcl_fp_mont8L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r9 = getelementptr i64, i64* %r3, i32 0 -%r10 = load i64, i64* %r9 -%r11 = call i576 @mulPv512x64(i64* %r2, i64 %r10) -%r12 = zext i576 %r11 to i640 -%r13 = trunc i576 %r11 to i64 -%r14 = mul i64 %r13, %r7 -%r15 = call i576 @mulPv512x64(i64* %r4, i64 %r14) -%r16 = zext i576 %r15 to i640 -%r17 = add i640 %r12, %r16 -%r18 = lshr i640 %r17, 64 -%r20 = getelementptr i64, i64* %r3, i32 1 -%r21 = load i64, i64* %r20 -%r22 = call i576 @mulPv512x64(i64* %r2, i64 %r21) -%r23 = zext i576 %r22 to i640 -%r24 = add i640 %r18, %r23 -%r25 = trunc i640 %r24 to i64 -%r26 = mul i64 %r25, %r7 -%r27 = call i576 @mulPv512x64(i64* %r4, i64 %r26) -%r28 = zext i576 %r27 to i640 -%r29 = add i640 %r24, %r28 -%r30 = lshr i640 %r29, 64 -%r32 = getelementptr i64, i64* %r3, i32 2 -%r33 = load i64, i64* %r32 -%r34 = call i576 @mulPv512x64(i64* %r2, i64 %r33) -%r35 = zext i576 %r34 to i640 -%r36 = add i640 %r30, %r35 -%r37 = trunc i640 %r36 to i64 -%r38 = mul i64 %r37, %r7 -%r39 = call i576 @mulPv512x64(i64* %r4, i64 %r38) -%r40 = zext i576 %r39 to i640 -%r41 = add i640 %r36, %r40 -%r42 = lshr i640 %r41, 64 -%r44 = getelementptr i64, i64* %r3, i32 3 -%r45 = load i64, i64* %r44 -%r46 = call i576 @mulPv512x64(i64* %r2, i64 %r45) -%r47 = zext i576 %r46 to i640 -%r48 = add i640 %r42, %r47 -%r49 = trunc i640 %r48 to i64 -%r50 = mul i64 %r49, %r7 -%r51 = call i576 @mulPv512x64(i64* %r4, i64 %r50) -%r52 = zext i576 %r51 to i640 -%r53 = add i640 %r48, %r52 -%r54 = lshr i640 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 4 -%r57 = load i64, i64* %r56 -%r58 = call i576 @mulPv512x64(i64* %r2, i64 %r57) -%r59 = zext i576 %r58 to i640 -%r60 = add i640 %r54, %r59 -%r61 = trunc i640 %r60 to i64 -%r62 = mul i64 %r61, %r7 -%r63 = call i576 @mulPv512x64(i64* %r4, i64 %r62) -%r64 = zext i576 %r63 to i640 -%r65 = add i640 %r60, %r64 -%r66 = lshr i640 %r65, 64 -%r68 = getelementptr i64, i64* %r3, i32 5 -%r69 = load i64, i64* %r68 -%r70 = call i576 @mulPv512x64(i64* %r2, i64 %r69) -%r71 = zext i576 %r70 to i640 -%r72 = add i640 %r66, %r71 -%r73 = trunc i640 %r72 to i64 -%r74 = mul i64 %r73, %r7 -%r75 = call i576 @mulPv512x64(i64* %r4, i64 %r74) -%r76 = zext i576 %r75 to i640 -%r77 = add i640 %r72, %r76 -%r78 = lshr i640 %r77, 64 -%r80 = getelementptr i64, i64* %r3, i32 6 -%r81 = load i64, i64* %r80 -%r82 = call i576 @mulPv512x64(i64* %r2, i64 %r81) -%r83 = zext i576 %r82 to i640 -%r84 = add i640 %r78, %r83 -%r85 = trunc i640 %r84 to i64 -%r86 = mul i64 %r85, %r7 -%r87 = call i576 @mulPv512x64(i64* %r4, i64 %r86) -%r88 = zext i576 %r87 to i640 -%r89 = add i640 %r84, %r88 -%r90 = lshr i640 %r89, 64 -%r92 = getelementptr i64, i64* %r3, i32 7 -%r93 = load i64, i64* %r92 -%r94 = call i576 @mulPv512x64(i64* %r2, i64 %r93) -%r95 = zext i576 %r94 to i640 -%r96 = add i640 %r90, %r95 -%r97 = trunc i640 %r96 to i64 -%r98 = mul i64 %r97, %r7 -%r99 = call i576 @mulPv512x64(i64* %r4, i64 %r98) -%r100 = zext i576 %r99 to i640 -%r101 = add i640 %r96, %r100 -%r102 = lshr i640 %r101, 64 -%r103 = trunc i640 %r102 to i576 -%r104 = load i64, i64* %r4 -%r105 = zext i64 %r104 to i128 -%r107 = getelementptr i64, i64* %r4, i32 1 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i128 -%r110 = shl i128 %r109, 64 -%r111 = or i128 %r105, %r110 -%r112 = zext i128 %r111 to i192 -%r114 = getelementptr i64, i64* %r4, i32 2 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i192 -%r117 = shl i192 %r116, 128 -%r118 = or i192 %r112, %r117 -%r119 = zext i192 %r118 to i256 -%r121 = getelementptr i64, i64* %r4, i32 3 -%r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i256 -%r124 = shl i256 %r123, 192 -%r125 = or i256 %r119, %r124 -%r126 = zext i256 %r125 to i320 -%r128 = getelementptr i64, i64* %r4, i32 4 -%r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i320 -%r131 = shl i320 %r130, 256 -%r132 = or i320 %r126, %r131 -%r133 = zext i320 %r132 to i384 -%r135 = getelementptr i64, i64* %r4, i32 5 -%r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i384 -%r138 = shl i384 %r137, 320 -%r139 = or i384 %r133, %r138 -%r140 = zext i384 %r139 to i448 -%r142 = getelementptr i64, i64* %r4, i32 6 -%r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i448 -%r145 = shl i448 %r144, 384 -%r146 = or i448 %r140, %r145 -%r147 = zext i448 %r146 to i512 -%r149 = getelementptr i64, i64* %r4, i32 7 -%r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i512 -%r152 = shl i512 %r151, 448 -%r153 = or i512 %r147, %r152 -%r154 = zext i512 %r153 to i576 -%r155 = sub i576 %r103, %r154 -%r156 = lshr i576 %r155, 512 -%r157 = trunc i576 %r156 to i1 -%r158 = select i1 %r157, i576 %r103, i576 %r155 -%r159 = trunc i576 %r158 to i512 -%r160 = trunc i512 %r159 to i64 -%r162 = getelementptr i64, i64* %r1, i32 0 -store i64 %r160, i64* %r162 -%r163 = lshr i512 %r159, 64 -%r164 = trunc i512 %r163 to i64 -%r166 = getelementptr i64, i64* %r1, i32 1 -store i64 %r164, i64* %r166 -%r167 = lshr i512 %r163, 64 -%r168 = trunc i512 %r167 to i64 -%r170 = getelementptr i64, i64* %r1, i32 2 -store i64 %r168, i64* %r170 -%r171 = lshr i512 %r167, 64 -%r172 = trunc i512 %r171 to i64 -%r174 = getelementptr i64, i64* %r1, i32 3 -store i64 %r172, i64* %r174 -%r175 = lshr i512 %r171, 64 -%r176 = trunc i512 %r175 to i64 -%r178 = getelementptr i64, i64* %r1, i32 4 -store i64 %r176, i64* %r178 -%r179 = lshr i512 %r175, 64 -%r180 = trunc i512 %r179 to i64 -%r182 = getelementptr i64, i64* %r1, i32 5 -store i64 %r180, i64* %r182 -%r183 = lshr i512 %r179, 64 -%r184 = trunc i512 %r183 to i64 -%r186 = getelementptr i64, i64* %r1, i32 6 -store i64 %r184, i64* %r186 -%r187 = lshr i512 %r183, 64 -%r188 = trunc i512 %r187 to i64 -%r190 = getelementptr i64, i64* %r1, i32 7 -store i64 %r188, i64* %r190 -ret void -} -define void @mcl_fp_montNF8L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) -{ -%r6 = getelementptr i64, i64* %r4, i32 -1 -%r7 = load i64, i64* %r6 -%r8 = load i64, i64* %r3 -%r9 = call i576 @mulPv512x64(i64* %r2, i64 %r8) -%r10 = trunc i576 %r9 to i64 -%r11 = mul i64 %r10, %r7 -%r12 = call i576 @mulPv512x64(i64* %r4, i64 %r11) -%r13 = add i576 %r9, %r12 -%r14 = lshr i576 %r13, 64 -%r16 = getelementptr i64, i64* %r3, i32 1 -%r17 = load i64, i64* %r16 -%r18 = call i576 @mulPv512x64(i64* %r2, i64 %r17) -%r19 = add i576 %r14, %r18 -%r20 = trunc i576 %r19 to i64 -%r21 = mul i64 %r20, %r7 -%r22 = call i576 @mulPv512x64(i64* %r4, i64 %r21) -%r23 = add i576 %r19, %r22 -%r24 = lshr i576 %r23, 64 -%r26 = getelementptr i64, i64* %r3, i32 2 -%r27 = load i64, i64* %r26 -%r28 = call i576 @mulPv512x64(i64* %r2, i64 %r27) -%r29 = add i576 %r24, %r28 -%r30 = trunc i576 %r29 to i64 -%r31 = mul i64 %r30, %r7 -%r32 = call i576 @mulPv512x64(i64* %r4, i64 %r31) -%r33 = add i576 %r29, %r32 -%r34 = lshr i576 %r33, 64 -%r36 = getelementptr i64, i64* %r3, i32 3 -%r37 = load i64, i64* %r36 -%r38 = call i576 @mulPv512x64(i64* %r2, i64 %r37) -%r39 = add i576 %r34, %r38 -%r40 = trunc i576 %r39 to i64 -%r41 = mul i64 %r40, %r7 -%r42 = call i576 @mulPv512x64(i64* %r4, i64 %r41) -%r43 = add i576 %r39, %r42 -%r44 = lshr i576 %r43, 64 -%r46 = getelementptr i64, i64* %r3, i32 4 -%r47 = load i64, i64* %r46 -%r48 = call i576 @mulPv512x64(i64* %r2, i64 %r47) -%r49 = add i576 %r44, %r48 -%r50 = trunc i576 %r49 to i64 -%r51 = mul i64 %r50, %r7 -%r52 = call i576 @mulPv512x64(i64* %r4, i64 %r51) -%r53 = add i576 %r49, %r52 -%r54 = lshr i576 %r53, 64 -%r56 = getelementptr i64, i64* %r3, i32 5 -%r57 = load i64, i64* %r56 -%r58 = call i576 @mulPv512x64(i64* %r2, i64 %r57) -%r59 = add i576 %r54, %r58 -%r60 = trunc i576 %r59 to i64 -%r61 = mul i64 %r60, %r7 -%r62 = call i576 @mulPv512x64(i64* %r4, i64 %r61) -%r63 = add i576 %r59, %r62 -%r64 = lshr i576 %r63, 64 -%r66 = getelementptr i64, i64* %r3, i32 6 -%r67 = load i64, i64* %r66 -%r68 = call i576 @mulPv512x64(i64* %r2, i64 %r67) -%r69 = add i576 %r64, %r68 -%r70 = trunc i576 %r69 to i64 -%r71 = mul i64 %r70, %r7 -%r72 = call i576 @mulPv512x64(i64* %r4, i64 %r71) -%r73 = add i576 %r69, %r72 -%r74 = lshr i576 %r73, 64 -%r76 = getelementptr i64, i64* %r3, i32 7 -%r77 = load i64, i64* %r76 -%r78 = call i576 @mulPv512x64(i64* %r2, i64 %r77) -%r79 = add i576 %r74, %r78 -%r80 = trunc i576 %r79 to i64 -%r81 = mul i64 %r80, %r7 -%r82 = call i576 @mulPv512x64(i64* %r4, i64 %r81) -%r83 = add i576 %r79, %r82 -%r84 = lshr i576 %r83, 64 -%r85 = trunc i576 %r84 to i512 -%r86 = load i64, i64* %r4 -%r87 = zext i64 %r86 to i128 -%r89 = getelementptr i64, i64* %r4, i32 1 -%r90 = load i64, i64* %r89 -%r91 = zext i64 %r90 to i128 -%r92 = shl i128 %r91, 64 -%r93 = or i128 %r87, %r92 -%r94 = zext i128 %r93 to i192 -%r96 = getelementptr i64, i64* %r4, i32 2 -%r97 = load i64, i64* %r96 -%r98 = zext i64 %r97 to i192 -%r99 = shl i192 %r98, 128 -%r100 = or i192 %r94, %r99 -%r101 = zext i192 %r100 to i256 -%r103 = getelementptr i64, i64* %r4, i32 3 -%r104 = load i64, i64* %r103 -%r105 = zext i64 %r104 to i256 -%r106 = shl i256 %r105, 192 -%r107 = or i256 %r101, %r106 -%r108 = zext i256 %r107 to i320 -%r110 = getelementptr i64, i64* %r4, i32 4 -%r111 = load i64, i64* %r110 -%r112 = zext i64 %r111 to i320 -%r113 = shl i320 %r112, 256 -%r114 = or i320 %r108, %r113 -%r115 = zext i320 %r114 to i384 -%r117 = getelementptr i64, i64* %r4, i32 5 -%r118 = load i64, i64* %r117 -%r119 = zext i64 %r118 to i384 -%r120 = shl i384 %r119, 320 -%r121 = or i384 %r115, %r120 -%r122 = zext i384 %r121 to i448 -%r124 = getelementptr i64, i64* %r4, i32 6 -%r125 = load i64, i64* %r124 -%r126 = zext i64 %r125 to i448 -%r127 = shl i448 %r126, 384 -%r128 = or i448 %r122, %r127 -%r129 = zext i448 %r128 to i512 -%r131 = getelementptr i64, i64* %r4, i32 7 -%r132 = load i64, i64* %r131 -%r133 = zext i64 %r132 to i512 -%r134 = shl i512 %r133, 448 -%r135 = or i512 %r129, %r134 -%r136 = sub i512 %r85, %r135 -%r137 = lshr i512 %r136, 511 -%r138 = trunc i512 %r137 to i1 -%r139 = select i1 %r138, i512 %r85, i512 %r136 -%r140 = trunc i512 %r139 to i64 -%r142 = getelementptr i64, i64* %r1, i32 0 -store i64 %r140, i64* %r142 -%r143 = lshr i512 %r139, 64 -%r144 = trunc i512 %r143 to i64 -%r146 = getelementptr i64, i64* %r1, i32 1 -store i64 %r144, i64* %r146 -%r147 = lshr i512 %r143, 64 -%r148 = trunc i512 %r147 to i64 -%r150 = getelementptr i64, i64* %r1, i32 2 -store i64 %r148, i64* %r150 -%r151 = lshr i512 %r147, 64 -%r152 = trunc i512 %r151 to i64 -%r154 = getelementptr i64, i64* %r1, i32 3 -store i64 %r152, i64* %r154 -%r155 = lshr i512 %r151, 64 -%r156 = trunc i512 %r155 to i64 -%r158 = getelementptr i64, i64* %r1, i32 4 -store i64 %r156, i64* %r158 -%r159 = lshr i512 %r155, 64 -%r160 = trunc i512 %r159 to i64 -%r162 = getelementptr i64, i64* %r1, i32 5 -store i64 %r160, i64* %r162 -%r163 = lshr i512 %r159, 64 -%r164 = trunc i512 %r163 to i64 -%r166 = getelementptr i64, i64* %r1, i32 6 -store i64 %r164, i64* %r166 -%r167 = lshr i512 %r163, 64 -%r168 = trunc i512 %r167 to i64 -%r170 = getelementptr i64, i64* %r1, i32 7 -store i64 %r168, i64* %r170 -ret void -} -define void @mcl_fp_montRed8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) -{ -%r5 = getelementptr i64, i64* %r3, i32 -1 -%r6 = load i64, i64* %r5 -%r7 = load i64, i64* %r3 -%r8 = zext i64 %r7 to i128 -%r10 = getelementptr i64, i64* %r3, i32 1 -%r11 = load i64, i64* %r10 -%r12 = zext i64 %r11 to i128 -%r13 = shl i128 %r12, 64 -%r14 = or i128 %r8, %r13 -%r15 = zext i128 %r14 to i192 -%r17 = getelementptr i64, i64* %r3, i32 2 -%r18 = load i64, i64* %r17 -%r19 = zext i64 %r18 to i192 -%r20 = shl i192 %r19, 128 -%r21 = or i192 %r15, %r20 -%r22 = zext i192 %r21 to i256 -%r24 = getelementptr i64, i64* %r3, i32 3 -%r25 = load i64, i64* %r24 -%r26 = zext i64 %r25 to i256 -%r27 = shl i256 %r26, 192 -%r28 = or i256 %r22, %r27 -%r29 = zext i256 %r28 to i320 -%r31 = getelementptr i64, i64* %r3, i32 4 -%r32 = load i64, i64* %r31 -%r33 = zext i64 %r32 to i320 -%r34 = shl i320 %r33, 256 -%r35 = or i320 %r29, %r34 -%r36 = zext i320 %r35 to i384 -%r38 = getelementptr i64, i64* %r3, i32 5 -%r39 = load i64, i64* %r38 -%r40 = zext i64 %r39 to i384 -%r41 = shl i384 %r40, 320 -%r42 = or i384 %r36, %r41 -%r43 = zext i384 %r42 to i448 -%r45 = getelementptr i64, i64* %r3, i32 6 -%r46 = load i64, i64* %r45 -%r47 = zext i64 %r46 to i448 -%r48 = shl i448 %r47, 384 -%r49 = or i448 %r43, %r48 -%r50 = zext i448 %r49 to i512 -%r52 = getelementptr i64, i64* %r3, i32 7 -%r53 = load i64, i64* %r52 -%r54 = zext i64 %r53 to i512 -%r55 = shl i512 %r54, 448 -%r56 = or i512 %r50, %r55 -%r57 = load i64, i64* %r2 -%r58 = zext i64 %r57 to i128 -%r60 = getelementptr i64, i64* %r2, i32 1 -%r61 = load i64, i64* %r60 -%r62 = zext i64 %r61 to i128 -%r63 = shl i128 %r62, 64 -%r64 = or i128 %r58, %r63 -%r65 = zext i128 %r64 to i192 -%r67 = getelementptr i64, i64* %r2, i32 2 -%r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i192 -%r70 = shl i192 %r69, 128 -%r71 = or i192 %r65, %r70 -%r72 = zext i192 %r71 to i256 -%r74 = getelementptr i64, i64* %r2, i32 3 -%r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i256 -%r77 = shl i256 %r76, 192 -%r78 = or i256 %r72, %r77 -%r79 = zext i256 %r78 to i320 -%r81 = getelementptr i64, i64* %r2, i32 4 -%r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i320 -%r84 = shl i320 %r83, 256 -%r85 = or i320 %r79, %r84 -%r86 = zext i320 %r85 to i384 -%r88 = getelementptr i64, i64* %r2, i32 5 -%r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i384 -%r91 = shl i384 %r90, 320 -%r92 = or i384 %r86, %r91 -%r93 = zext i384 %r92 to i448 -%r95 = getelementptr i64, i64* %r2, i32 6 -%r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i448 -%r98 = shl i448 %r97, 384 -%r99 = or i448 %r93, %r98 -%r100 = zext i448 %r99 to i512 -%r102 = getelementptr i64, i64* %r2, i32 7 -%r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i512 -%r105 = shl i512 %r104, 448 -%r106 = or i512 %r100, %r105 -%r107 = zext i512 %r106 to i576 -%r109 = getelementptr i64, i64* %r2, i32 8 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i576 -%r112 = shl i576 %r111, 512 -%r113 = or i576 %r107, %r112 -%r114 = zext i576 %r113 to i640 -%r116 = getelementptr i64, i64* %r2, i32 9 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i640 -%r119 = shl i640 %r118, 576 -%r120 = or i640 %r114, %r119 -%r121 = zext i640 %r120 to i704 -%r123 = getelementptr i64, i64* %r2, i32 10 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i704 -%r126 = shl i704 %r125, 640 -%r127 = or i704 %r121, %r126 -%r128 = zext i704 %r127 to i768 -%r130 = getelementptr i64, i64* %r2, i32 11 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i768 -%r133 = shl i768 %r132, 704 -%r134 = or i768 %r128, %r133 -%r135 = zext i768 %r134 to i832 -%r137 = getelementptr i64, i64* %r2, i32 12 -%r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i832 -%r140 = shl i832 %r139, 768 -%r141 = or i832 %r135, %r140 -%r142 = zext i832 %r141 to i896 -%r144 = getelementptr i64, i64* %r2, i32 13 -%r145 = load i64, i64* %r144 -%r146 = zext i64 %r145 to i896 -%r147 = shl i896 %r146, 832 -%r148 = or i896 %r142, %r147 -%r149 = zext i896 %r148 to i960 -%r151 = getelementptr i64, i64* %r2, i32 14 -%r152 = load i64, i64* %r151 -%r153 = zext i64 %r152 to i960 -%r154 = shl i960 %r153, 896 -%r155 = or i960 %r149, %r154 -%r156 = zext i960 %r155 to i1024 -%r158 = getelementptr i64, i64* %r2, i32 15 -%r159 = load i64, i64* %r158 -%r160 = zext i64 %r159 to i1024 -%r161 = shl i1024 %r160, 960 -%r162 = or i1024 %r156, %r161 -%r163 = zext i1024 %r162 to i1088 -%r164 = trunc i1088 %r163 to i64 -%r165 = mul i64 %r164, %r6 -%r166 = call i576 @mulPv512x64(i64* %r3, i64 %r165) -%r167 = zext i576 %r166 to i1088 -%r168 = add i1088 %r163, %r167 -%r169 = lshr i1088 %r168, 64 -%r170 = trunc i1088 %r169 to i1024 -%r171 = trunc i1024 %r170 to i64 -%r172 = mul i64 %r171, %r6 -%r173 = call i576 @mulPv512x64(i64* %r3, i64 %r172) -%r174 = zext i576 %r173 to i1024 -%r175 = add i1024 %r170, %r174 -%r176 = lshr i1024 %r175, 64 -%r177 = trunc i1024 %r176 to i960 -%r178 = trunc i960 %r177 to i64 -%r179 = mul i64 %r178, %r6 -%r180 = call i576 @mulPv512x64(i64* %r3, i64 %r179) -%r181 = zext i576 %r180 to i960 -%r182 = add i960 %r177, %r181 -%r183 = lshr i960 %r182, 64 -%r184 = trunc i960 %r183 to i896 -%r185 = trunc i896 %r184 to i64 -%r186 = mul i64 %r185, %r6 -%r187 = call i576 @mulPv512x64(i64* %r3, i64 %r186) -%r188 = zext i576 %r187 to i896 -%r189 = add i896 %r184, %r188 -%r190 = lshr i896 %r189, 64 -%r191 = trunc i896 %r190 to i832 -%r192 = trunc i832 %r191 to i64 -%r193 = mul i64 %r192, %r6 -%r194 = call i576 @mulPv512x64(i64* %r3, i64 %r193) -%r195 = zext i576 %r194 to i832 -%r196 = add i832 %r191, %r195 -%r197 = lshr i832 %r196, 64 -%r198 = trunc i832 %r197 to i768 -%r199 = trunc i768 %r198 to i64 -%r200 = mul i64 %r199, %r6 -%r201 = call i576 @mulPv512x64(i64* %r3, i64 %r200) -%r202 = zext i576 %r201 to i768 -%r203 = add i768 %r198, %r202 -%r204 = lshr i768 %r203, 64 -%r205 = trunc i768 %r204 to i704 -%r206 = trunc i704 %r205 to i64 -%r207 = mul i64 %r206, %r6 -%r208 = call i576 @mulPv512x64(i64* %r3, i64 %r207) -%r209 = zext i576 %r208 to i704 -%r210 = add i704 %r205, %r209 -%r211 = lshr i704 %r210, 64 -%r212 = trunc i704 %r211 to i640 -%r213 = trunc i640 %r212 to i64 -%r214 = mul i64 %r213, %r6 -%r215 = call i576 @mulPv512x64(i64* %r3, i64 %r214) -%r216 = zext i576 %r215 to i640 -%r217 = add i640 %r212, %r216 -%r218 = lshr i640 %r217, 64 -%r219 = trunc i640 %r218 to i576 -%r220 = zext i512 %r56 to i576 -%r221 = sub i576 %r219, %r220 -%r222 = lshr i576 %r221, 512 -%r223 = trunc i576 %r222 to i1 -%r224 = select i1 %r223, i576 %r219, i576 %r221 -%r225 = trunc i576 %r224 to i512 -%r226 = trunc i512 %r225 to i64 -%r228 = getelementptr i64, i64* %r1, i32 0 -store i64 %r226, i64* %r228 -%r229 = lshr i512 %r225, 64 -%r230 = trunc i512 %r229 to i64 -%r232 = getelementptr i64, i64* %r1, i32 1 -store i64 %r230, i64* %r232 -%r233 = lshr i512 %r229, 64 -%r234 = trunc i512 %r233 to i64 -%r236 = getelementptr i64, i64* %r1, i32 2 -store i64 %r234, i64* %r236 -%r237 = lshr i512 %r233, 64 -%r238 = trunc i512 %r237 to i64 -%r240 = getelementptr i64, i64* %r1, i32 3 -store i64 %r238, i64* %r240 -%r241 = lshr i512 %r237, 64 -%r242 = trunc i512 %r241 to i64 -%r244 = getelementptr i64, i64* %r1, i32 4 -store i64 %r242, i64* %r244 -%r245 = lshr i512 %r241, 64 -%r246 = trunc i512 %r245 to i64 -%r248 = getelementptr i64, i64* %r1, i32 5 -store i64 %r246, i64* %r248 -%r249 = lshr i512 %r245, 64 -%r250 = trunc i512 %r249 to i64 -%r252 = getelementptr i64, i64* %r1, i32 6 -store i64 %r250, i64* %r252 -%r253 = lshr i512 %r249, 64 -%r254 = trunc i512 %r253 to i64 -%r256 = getelementptr i64, i64* %r1, i32 7 -store i64 %r254, i64* %r256 -ret void -} -define i64 @mcl_fp_addPre8L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r3, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r3, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r56 = load i64, i64* %r4 -%r57 = zext i64 %r56 to i128 -%r59 = getelementptr i64, i64* %r4, i32 1 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i128 -%r62 = shl i128 %r61, 64 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i192 -%r66 = getelementptr i64, i64* %r4, i32 2 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i192 -%r69 = shl i192 %r68, 128 -%r70 = or i192 %r64, %r69 -%r71 = zext i192 %r70 to i256 -%r73 = getelementptr i64, i64* %r4, i32 3 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i256 -%r76 = shl i256 %r75, 192 -%r77 = or i256 %r71, %r76 -%r78 = zext i256 %r77 to i320 -%r80 = getelementptr i64, i64* %r4, i32 4 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i320 -%r83 = shl i320 %r82, 256 -%r84 = or i320 %r78, %r83 -%r85 = zext i320 %r84 to i384 -%r87 = getelementptr i64, i64* %r4, i32 5 -%r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i384 -%r90 = shl i384 %r89, 320 -%r91 = or i384 %r85, %r90 -%r92 = zext i384 %r91 to i448 -%r94 = getelementptr i64, i64* %r4, i32 6 -%r95 = load i64, i64* %r94 -%r96 = zext i64 %r95 to i448 -%r97 = shl i448 %r96, 384 -%r98 = or i448 %r92, %r97 -%r99 = zext i448 %r98 to i512 -%r101 = getelementptr i64, i64* %r4, i32 7 -%r102 = load i64, i64* %r101 -%r103 = zext i64 %r102 to i512 -%r104 = shl i512 %r103, 448 -%r105 = or i512 %r99, %r104 -%r106 = zext i512 %r105 to i576 -%r107 = add i576 %r55, %r106 -%r108 = trunc i576 %r107 to i512 -%r109 = trunc i512 %r108 to i64 -%r111 = getelementptr i64, i64* %r2, i32 0 -store i64 %r109, i64* %r111 -%r112 = lshr i512 %r108, 64 -%r113 = trunc i512 %r112 to i64 -%r115 = getelementptr i64, i64* %r2, i32 1 -store i64 %r113, i64* %r115 -%r116 = lshr i512 %r112, 64 -%r117 = trunc i512 %r116 to i64 -%r119 = getelementptr i64, i64* %r2, i32 2 -store i64 %r117, i64* %r119 -%r120 = lshr i512 %r116, 64 -%r121 = trunc i512 %r120 to i64 -%r123 = getelementptr i64, i64* %r2, i32 3 -store i64 %r121, i64* %r123 -%r124 = lshr i512 %r120, 64 -%r125 = trunc i512 %r124 to i64 -%r127 = getelementptr i64, i64* %r2, i32 4 -store i64 %r125, i64* %r127 -%r128 = lshr i512 %r124, 64 -%r129 = trunc i512 %r128 to i64 -%r131 = getelementptr i64, i64* %r2, i32 5 -store i64 %r129, i64* %r131 -%r132 = lshr i512 %r128, 64 -%r133 = trunc i512 %r132 to i64 -%r135 = getelementptr i64, i64* %r2, i32 6 -store i64 %r133, i64* %r135 -%r136 = lshr i512 %r132, 64 -%r137 = trunc i512 %r136 to i64 -%r139 = getelementptr i64, i64* %r2, i32 7 -store i64 %r137, i64* %r139 -%r140 = lshr i576 %r107, 512 -%r141 = trunc i576 %r140 to i64 -ret i64 %r141 -} -define i64 @mcl_fp_subPre8L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r3 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r3, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r3, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r3, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r3, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r3, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r3, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r3, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r56 = load i64, i64* %r4 -%r57 = zext i64 %r56 to i128 -%r59 = getelementptr i64, i64* %r4, i32 1 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i128 -%r62 = shl i128 %r61, 64 -%r63 = or i128 %r57, %r62 -%r64 = zext i128 %r63 to i192 -%r66 = getelementptr i64, i64* %r4, i32 2 -%r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i192 -%r69 = shl i192 %r68, 128 -%r70 = or i192 %r64, %r69 -%r71 = zext i192 %r70 to i256 -%r73 = getelementptr i64, i64* %r4, i32 3 -%r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i256 -%r76 = shl i256 %r75, 192 -%r77 = or i256 %r71, %r76 -%r78 = zext i256 %r77 to i320 -%r80 = getelementptr i64, i64* %r4, i32 4 -%r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i320 -%r83 = shl i320 %r82, 256 -%r84 = or i320 %r78, %r83 -%r85 = zext i320 %r84 to i384 -%r87 = getelementptr i64, i64* %r4, i32 5 -%r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i384 -%r90 = shl i384 %r89, 320 -%r91 = or i384 %r85, %r90 -%r92 = zext i384 %r91 to i448 -%r94 = getelementptr i64, i64* %r4, i32 6 -%r95 = load i64, i64* %r94 -%r96 = zext i64 %r95 to i448 -%r97 = shl i448 %r96, 384 -%r98 = or i448 %r92, %r97 -%r99 = zext i448 %r98 to i512 -%r101 = getelementptr i64, i64* %r4, i32 7 -%r102 = load i64, i64* %r101 -%r103 = zext i64 %r102 to i512 -%r104 = shl i512 %r103, 448 -%r105 = or i512 %r99, %r104 -%r106 = zext i512 %r105 to i576 -%r107 = sub i576 %r55, %r106 -%r108 = trunc i576 %r107 to i512 -%r109 = trunc i512 %r108 to i64 -%r111 = getelementptr i64, i64* %r2, i32 0 -store i64 %r109, i64* %r111 -%r112 = lshr i512 %r108, 64 -%r113 = trunc i512 %r112 to i64 -%r115 = getelementptr i64, i64* %r2, i32 1 -store i64 %r113, i64* %r115 -%r116 = lshr i512 %r112, 64 -%r117 = trunc i512 %r116 to i64 -%r119 = getelementptr i64, i64* %r2, i32 2 -store i64 %r117, i64* %r119 -%r120 = lshr i512 %r116, 64 -%r121 = trunc i512 %r120 to i64 -%r123 = getelementptr i64, i64* %r2, i32 3 -store i64 %r121, i64* %r123 -%r124 = lshr i512 %r120, 64 -%r125 = trunc i512 %r124 to i64 -%r127 = getelementptr i64, i64* %r2, i32 4 -store i64 %r125, i64* %r127 -%r128 = lshr i512 %r124, 64 -%r129 = trunc i512 %r128 to i64 -%r131 = getelementptr i64, i64* %r2, i32 5 -store i64 %r129, i64* %r131 -%r132 = lshr i512 %r128, 64 -%r133 = trunc i512 %r132 to i64 -%r135 = getelementptr i64, i64* %r2, i32 6 -store i64 %r133, i64* %r135 -%r136 = lshr i512 %r132, 64 -%r137 = trunc i512 %r136 to i64 -%r139 = getelementptr i64, i64* %r2, i32 7 -store i64 %r137, i64* %r139 -%r140 = lshr i576 %r107, 512 -%r141 = trunc i576 %r140 to i64 -%r143 = and i64 %r141, 1 -ret i64 %r143 -} -define void @mcl_fp_shr1_8L(i64* noalias %r1, i64* noalias %r2) -{ -%r3 = load i64, i64* %r2 -%r4 = zext i64 %r3 to i128 -%r6 = getelementptr i64, i64* %r2, i32 1 -%r7 = load i64, i64* %r6 -%r8 = zext i64 %r7 to i128 -%r9 = shl i128 %r8, 64 -%r10 = or i128 %r4, %r9 -%r11 = zext i128 %r10 to i192 -%r13 = getelementptr i64, i64* %r2, i32 2 -%r14 = load i64, i64* %r13 -%r15 = zext i64 %r14 to i192 -%r16 = shl i192 %r15, 128 -%r17 = or i192 %r11, %r16 -%r18 = zext i192 %r17 to i256 -%r20 = getelementptr i64, i64* %r2, i32 3 -%r21 = load i64, i64* %r20 -%r22 = zext i64 %r21 to i256 -%r23 = shl i256 %r22, 192 -%r24 = or i256 %r18, %r23 -%r25 = zext i256 %r24 to i320 -%r27 = getelementptr i64, i64* %r2, i32 4 -%r28 = load i64, i64* %r27 -%r29 = zext i64 %r28 to i320 -%r30 = shl i320 %r29, 256 -%r31 = or i320 %r25, %r30 -%r32 = zext i320 %r31 to i384 -%r34 = getelementptr i64, i64* %r2, i32 5 -%r35 = load i64, i64* %r34 -%r36 = zext i64 %r35 to i384 -%r37 = shl i384 %r36, 320 -%r38 = or i384 %r32, %r37 -%r39 = zext i384 %r38 to i448 -%r41 = getelementptr i64, i64* %r2, i32 6 -%r42 = load i64, i64* %r41 -%r43 = zext i64 %r42 to i448 -%r44 = shl i448 %r43, 384 -%r45 = or i448 %r39, %r44 -%r46 = zext i448 %r45 to i512 -%r48 = getelementptr i64, i64* %r2, i32 7 -%r49 = load i64, i64* %r48 -%r50 = zext i64 %r49 to i512 -%r51 = shl i512 %r50, 448 -%r52 = or i512 %r46, %r51 -%r53 = lshr i512 %r52, 1 -%r54 = trunc i512 %r53 to i64 -%r56 = getelementptr i64, i64* %r1, i32 0 -store i64 %r54, i64* %r56 -%r57 = lshr i512 %r53, 64 -%r58 = trunc i512 %r57 to i64 -%r60 = getelementptr i64, i64* %r1, i32 1 -store i64 %r58, i64* %r60 -%r61 = lshr i512 %r57, 64 -%r62 = trunc i512 %r61 to i64 -%r64 = getelementptr i64, i64* %r1, i32 2 -store i64 %r62, i64* %r64 -%r65 = lshr i512 %r61, 64 -%r66 = trunc i512 %r65 to i64 -%r68 = getelementptr i64, i64* %r1, i32 3 -store i64 %r66, i64* %r68 -%r69 = lshr i512 %r65, 64 -%r70 = trunc i512 %r69 to i64 -%r72 = getelementptr i64, i64* %r1, i32 4 -store i64 %r70, i64* %r72 -%r73 = lshr i512 %r69, 64 -%r74 = trunc i512 %r73 to i64 -%r76 = getelementptr i64, i64* %r1, i32 5 -store i64 %r74, i64* %r76 -%r77 = lshr i512 %r73, 64 -%r78 = trunc i512 %r77 to i64 -%r80 = getelementptr i64, i64* %r1, i32 6 -store i64 %r78, i64* %r80 -%r81 = lshr i512 %r77, 64 -%r82 = trunc i512 %r81 to i64 -%r84 = getelementptr i64, i64* %r1, i32 7 -store i64 %r82, i64* %r84 -ret void -} -define void @mcl_fp_add8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = zext i512 %r54 to i576 -%r106 = zext i512 %r104 to i576 -%r107 = add i576 %r105, %r106 -%r108 = trunc i576 %r107 to i512 -%r109 = trunc i512 %r108 to i64 -%r111 = getelementptr i64, i64* %r1, i32 0 -store i64 %r109, i64* %r111 -%r112 = lshr i512 %r108, 64 -%r113 = trunc i512 %r112 to i64 -%r115 = getelementptr i64, i64* %r1, i32 1 -store i64 %r113, i64* %r115 -%r116 = lshr i512 %r112, 64 -%r117 = trunc i512 %r116 to i64 -%r119 = getelementptr i64, i64* %r1, i32 2 -store i64 %r117, i64* %r119 -%r120 = lshr i512 %r116, 64 -%r121 = trunc i512 %r120 to i64 -%r123 = getelementptr i64, i64* %r1, i32 3 -store i64 %r121, i64* %r123 -%r124 = lshr i512 %r120, 64 -%r125 = trunc i512 %r124 to i64 -%r127 = getelementptr i64, i64* %r1, i32 4 -store i64 %r125, i64* %r127 -%r128 = lshr i512 %r124, 64 -%r129 = trunc i512 %r128 to i64 -%r131 = getelementptr i64, i64* %r1, i32 5 -store i64 %r129, i64* %r131 -%r132 = lshr i512 %r128, 64 -%r133 = trunc i512 %r132 to i64 -%r135 = getelementptr i64, i64* %r1, i32 6 -store i64 %r133, i64* %r135 -%r136 = lshr i512 %r132, 64 -%r137 = trunc i512 %r136 to i64 -%r139 = getelementptr i64, i64* %r1, i32 7 -store i64 %r137, i64* %r139 -%r140 = load i64, i64* %r4 -%r141 = zext i64 %r140 to i128 -%r143 = getelementptr i64, i64* %r4, i32 1 -%r144 = load i64, i64* %r143 -%r145 = zext i64 %r144 to i128 -%r146 = shl i128 %r145, 64 -%r147 = or i128 %r141, %r146 -%r148 = zext i128 %r147 to i192 -%r150 = getelementptr i64, i64* %r4, i32 2 -%r151 = load i64, i64* %r150 -%r152 = zext i64 %r151 to i192 -%r153 = shl i192 %r152, 128 -%r154 = or i192 %r148, %r153 -%r155 = zext i192 %r154 to i256 -%r157 = getelementptr i64, i64* %r4, i32 3 -%r158 = load i64, i64* %r157 -%r159 = zext i64 %r158 to i256 -%r160 = shl i256 %r159, 192 -%r161 = or i256 %r155, %r160 -%r162 = zext i256 %r161 to i320 -%r164 = getelementptr i64, i64* %r4, i32 4 -%r165 = load i64, i64* %r164 -%r166 = zext i64 %r165 to i320 -%r167 = shl i320 %r166, 256 -%r168 = or i320 %r162, %r167 -%r169 = zext i320 %r168 to i384 -%r171 = getelementptr i64, i64* %r4, i32 5 -%r172 = load i64, i64* %r171 -%r173 = zext i64 %r172 to i384 -%r174 = shl i384 %r173, 320 -%r175 = or i384 %r169, %r174 -%r176 = zext i384 %r175 to i448 -%r178 = getelementptr i64, i64* %r4, i32 6 -%r179 = load i64, i64* %r178 -%r180 = zext i64 %r179 to i448 -%r181 = shl i448 %r180, 384 -%r182 = or i448 %r176, %r181 -%r183 = zext i448 %r182 to i512 -%r185 = getelementptr i64, i64* %r4, i32 7 -%r186 = load i64, i64* %r185 -%r187 = zext i64 %r186 to i512 -%r188 = shl i512 %r187, 448 -%r189 = or i512 %r183, %r188 -%r190 = zext i512 %r189 to i576 -%r191 = sub i576 %r107, %r190 -%r192 = lshr i576 %r191, 512 -%r193 = trunc i576 %r192 to i1 -br i1%r193, label %carry, label %nocarry -nocarry: -%r194 = trunc i576 %r191 to i512 -%r195 = trunc i512 %r194 to i64 -%r197 = getelementptr i64, i64* %r1, i32 0 -store i64 %r195, i64* %r197 -%r198 = lshr i512 %r194, 64 -%r199 = trunc i512 %r198 to i64 -%r201 = getelementptr i64, i64* %r1, i32 1 -store i64 %r199, i64* %r201 -%r202 = lshr i512 %r198, 64 -%r203 = trunc i512 %r202 to i64 -%r205 = getelementptr i64, i64* %r1, i32 2 -store i64 %r203, i64* %r205 -%r206 = lshr i512 %r202, 64 -%r207 = trunc i512 %r206 to i64 -%r209 = getelementptr i64, i64* %r1, i32 3 -store i64 %r207, i64* %r209 -%r210 = lshr i512 %r206, 64 -%r211 = trunc i512 %r210 to i64 -%r213 = getelementptr i64, i64* %r1, i32 4 -store i64 %r211, i64* %r213 -%r214 = lshr i512 %r210, 64 -%r215 = trunc i512 %r214 to i64 -%r217 = getelementptr i64, i64* %r1, i32 5 -store i64 %r215, i64* %r217 -%r218 = lshr i512 %r214, 64 -%r219 = trunc i512 %r218 to i64 -%r221 = getelementptr i64, i64* %r1, i32 6 -store i64 %r219, i64* %r221 -%r222 = lshr i512 %r218, 64 -%r223 = trunc i512 %r222 to i64 -%r225 = getelementptr i64, i64* %r1, i32 7 -store i64 %r223, i64* %r225 -ret void -carry: -ret void -} -define void @mcl_fp_addNF8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = add i512 %r54, %r104 -%r106 = load i64, i64* %r4 -%r107 = zext i64 %r106 to i128 -%r109 = getelementptr i64, i64* %r4, i32 1 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i128 -%r112 = shl i128 %r111, 64 -%r113 = or i128 %r107, %r112 -%r114 = zext i128 %r113 to i192 -%r116 = getelementptr i64, i64* %r4, i32 2 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i192 -%r119 = shl i192 %r118, 128 -%r120 = or i192 %r114, %r119 -%r121 = zext i192 %r120 to i256 -%r123 = getelementptr i64, i64* %r4, i32 3 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i256 -%r126 = shl i256 %r125, 192 -%r127 = or i256 %r121, %r126 -%r128 = zext i256 %r127 to i320 -%r130 = getelementptr i64, i64* %r4, i32 4 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i320 -%r133 = shl i320 %r132, 256 -%r134 = or i320 %r128, %r133 -%r135 = zext i320 %r134 to i384 -%r137 = getelementptr i64, i64* %r4, i32 5 -%r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i384 -%r140 = shl i384 %r139, 320 -%r141 = or i384 %r135, %r140 -%r142 = zext i384 %r141 to i448 -%r144 = getelementptr i64, i64* %r4, i32 6 -%r145 = load i64, i64* %r144 -%r146 = zext i64 %r145 to i448 -%r147 = shl i448 %r146, 384 -%r148 = or i448 %r142, %r147 -%r149 = zext i448 %r148 to i512 -%r151 = getelementptr i64, i64* %r4, i32 7 -%r152 = load i64, i64* %r151 -%r153 = zext i64 %r152 to i512 -%r154 = shl i512 %r153, 448 -%r155 = or i512 %r149, %r154 -%r156 = sub i512 %r105, %r155 -%r157 = lshr i512 %r156, 511 -%r158 = trunc i512 %r157 to i1 -%r159 = select i1 %r158, i512 %r105, i512 %r156 -%r160 = trunc i512 %r159 to i64 -%r162 = getelementptr i64, i64* %r1, i32 0 -store i64 %r160, i64* %r162 -%r163 = lshr i512 %r159, 64 -%r164 = trunc i512 %r163 to i64 -%r166 = getelementptr i64, i64* %r1, i32 1 -store i64 %r164, i64* %r166 -%r167 = lshr i512 %r163, 64 -%r168 = trunc i512 %r167 to i64 -%r170 = getelementptr i64, i64* %r1, i32 2 -store i64 %r168, i64* %r170 -%r171 = lshr i512 %r167, 64 -%r172 = trunc i512 %r171 to i64 -%r174 = getelementptr i64, i64* %r1, i32 3 -store i64 %r172, i64* %r174 -%r175 = lshr i512 %r171, 64 -%r176 = trunc i512 %r175 to i64 -%r178 = getelementptr i64, i64* %r1, i32 4 -store i64 %r176, i64* %r178 -%r179 = lshr i512 %r175, 64 -%r180 = trunc i512 %r179 to i64 -%r182 = getelementptr i64, i64* %r1, i32 5 -store i64 %r180, i64* %r182 -%r183 = lshr i512 %r179, 64 -%r184 = trunc i512 %r183 to i64 -%r186 = getelementptr i64, i64* %r1, i32 6 -store i64 %r184, i64* %r186 -%r187 = lshr i512 %r183, 64 -%r188 = trunc i512 %r187 to i64 -%r190 = getelementptr i64, i64* %r1, i32 7 -store i64 %r188, i64* %r190 -ret void -} -define void @mcl_fp_sub8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = zext i512 %r54 to i576 -%r106 = zext i512 %r104 to i576 -%r107 = sub i576 %r105, %r106 -%r108 = trunc i576 %r107 to i512 -%r109 = lshr i576 %r107, 512 -%r110 = trunc i576 %r109 to i1 -%r111 = trunc i512 %r108 to i64 -%r113 = getelementptr i64, i64* %r1, i32 0 -store i64 %r111, i64* %r113 -%r114 = lshr i512 %r108, 64 -%r115 = trunc i512 %r114 to i64 -%r117 = getelementptr i64, i64* %r1, i32 1 -store i64 %r115, i64* %r117 -%r118 = lshr i512 %r114, 64 -%r119 = trunc i512 %r118 to i64 -%r121 = getelementptr i64, i64* %r1, i32 2 -store i64 %r119, i64* %r121 -%r122 = lshr i512 %r118, 64 -%r123 = trunc i512 %r122 to i64 -%r125 = getelementptr i64, i64* %r1, i32 3 -store i64 %r123, i64* %r125 -%r126 = lshr i512 %r122, 64 -%r127 = trunc i512 %r126 to i64 -%r129 = getelementptr i64, i64* %r1, i32 4 -store i64 %r127, i64* %r129 -%r130 = lshr i512 %r126, 64 -%r131 = trunc i512 %r130 to i64 -%r133 = getelementptr i64, i64* %r1, i32 5 -store i64 %r131, i64* %r133 -%r134 = lshr i512 %r130, 64 -%r135 = trunc i512 %r134 to i64 -%r137 = getelementptr i64, i64* %r1, i32 6 -store i64 %r135, i64* %r137 -%r138 = lshr i512 %r134, 64 -%r139 = trunc i512 %r138 to i64 -%r141 = getelementptr i64, i64* %r1, i32 7 -store i64 %r139, i64* %r141 -br i1%r110, label %carry, label %nocarry -nocarry: -ret void -carry: -%r142 = load i64, i64* %r4 -%r143 = zext i64 %r142 to i128 -%r145 = getelementptr i64, i64* %r4, i32 1 -%r146 = load i64, i64* %r145 -%r147 = zext i64 %r146 to i128 -%r148 = shl i128 %r147, 64 -%r149 = or i128 %r143, %r148 -%r150 = zext i128 %r149 to i192 -%r152 = getelementptr i64, i64* %r4, i32 2 -%r153 = load i64, i64* %r152 -%r154 = zext i64 %r153 to i192 -%r155 = shl i192 %r154, 128 -%r156 = or i192 %r150, %r155 -%r157 = zext i192 %r156 to i256 -%r159 = getelementptr i64, i64* %r4, i32 3 -%r160 = load i64, i64* %r159 -%r161 = zext i64 %r160 to i256 -%r162 = shl i256 %r161, 192 -%r163 = or i256 %r157, %r162 -%r164 = zext i256 %r163 to i320 -%r166 = getelementptr i64, i64* %r4, i32 4 -%r167 = load i64, i64* %r166 -%r168 = zext i64 %r167 to i320 -%r169 = shl i320 %r168, 256 -%r170 = or i320 %r164, %r169 -%r171 = zext i320 %r170 to i384 -%r173 = getelementptr i64, i64* %r4, i32 5 -%r174 = load i64, i64* %r173 -%r175 = zext i64 %r174 to i384 -%r176 = shl i384 %r175, 320 -%r177 = or i384 %r171, %r176 -%r178 = zext i384 %r177 to i448 -%r180 = getelementptr i64, i64* %r4, i32 6 -%r181 = load i64, i64* %r180 -%r182 = zext i64 %r181 to i448 -%r183 = shl i448 %r182, 384 -%r184 = or i448 %r178, %r183 -%r185 = zext i448 %r184 to i512 -%r187 = getelementptr i64, i64* %r4, i32 7 -%r188 = load i64, i64* %r187 -%r189 = zext i64 %r188 to i512 -%r190 = shl i512 %r189, 448 -%r191 = or i512 %r185, %r190 -%r192 = add i512 %r108, %r191 -%r193 = trunc i512 %r192 to i64 -%r195 = getelementptr i64, i64* %r1, i32 0 -store i64 %r193, i64* %r195 -%r196 = lshr i512 %r192, 64 -%r197 = trunc i512 %r196 to i64 -%r199 = getelementptr i64, i64* %r1, i32 1 -store i64 %r197, i64* %r199 -%r200 = lshr i512 %r196, 64 -%r201 = trunc i512 %r200 to i64 -%r203 = getelementptr i64, i64* %r1, i32 2 -store i64 %r201, i64* %r203 -%r204 = lshr i512 %r200, 64 -%r205 = trunc i512 %r204 to i64 -%r207 = getelementptr i64, i64* %r1, i32 3 -store i64 %r205, i64* %r207 -%r208 = lshr i512 %r204, 64 -%r209 = trunc i512 %r208 to i64 -%r211 = getelementptr i64, i64* %r1, i32 4 -store i64 %r209, i64* %r211 -%r212 = lshr i512 %r208, 64 -%r213 = trunc i512 %r212 to i64 -%r215 = getelementptr i64, i64* %r1, i32 5 -store i64 %r213, i64* %r215 -%r216 = lshr i512 %r212, 64 -%r217 = trunc i512 %r216 to i64 -%r219 = getelementptr i64, i64* %r1, i32 6 -store i64 %r217, i64* %r219 -%r220 = lshr i512 %r216, 64 -%r221 = trunc i512 %r220 to i64 -%r223 = getelementptr i64, i64* %r1, i32 7 -store i64 %r221, i64* %r223 -ret void -} -define void @mcl_fp_subNF8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) -{ -%r5 = load i64, i64* %r2 -%r6 = zext i64 %r5 to i128 -%r8 = getelementptr i64, i64* %r2, i32 1 -%r9 = load i64, i64* %r8 -%r10 = zext i64 %r9 to i128 -%r11 = shl i128 %r10, 64 -%r12 = or i128 %r6, %r11 -%r13 = zext i128 %r12 to i192 -%r15 = getelementptr i64, i64* %r2, i32 2 -%r16 = load i64, i64* %r15 -%r17 = zext i64 %r16 to i192 -%r18 = shl i192 %r17, 128 -%r19 = or i192 %r13, %r18 -%r20 = zext i192 %r19 to i256 -%r22 = getelementptr i64, i64* %r2, i32 3 -%r23 = load i64, i64* %r22 -%r24 = zext i64 %r23 to i256 -%r25 = shl i256 %r24, 192 -%r26 = or i256 %r20, %r25 -%r27 = zext i256 %r26 to i320 -%r29 = getelementptr i64, i64* %r2, i32 4 -%r30 = load i64, i64* %r29 -%r31 = zext i64 %r30 to i320 -%r32 = shl i320 %r31, 256 -%r33 = or i320 %r27, %r32 -%r34 = zext i320 %r33 to i384 -%r36 = getelementptr i64, i64* %r2, i32 5 -%r37 = load i64, i64* %r36 -%r38 = zext i64 %r37 to i384 -%r39 = shl i384 %r38, 320 -%r40 = or i384 %r34, %r39 -%r41 = zext i384 %r40 to i448 -%r43 = getelementptr i64, i64* %r2, i32 6 -%r44 = load i64, i64* %r43 -%r45 = zext i64 %r44 to i448 -%r46 = shl i448 %r45, 384 -%r47 = or i448 %r41, %r46 -%r48 = zext i448 %r47 to i512 -%r50 = getelementptr i64, i64* %r2, i32 7 -%r51 = load i64, i64* %r50 -%r52 = zext i64 %r51 to i512 -%r53 = shl i512 %r52, 448 -%r54 = or i512 %r48, %r53 -%r55 = load i64, i64* %r3 -%r56 = zext i64 %r55 to i128 -%r58 = getelementptr i64, i64* %r3, i32 1 -%r59 = load i64, i64* %r58 -%r60 = zext i64 %r59 to i128 -%r61 = shl i128 %r60, 64 -%r62 = or i128 %r56, %r61 -%r63 = zext i128 %r62 to i192 -%r65 = getelementptr i64, i64* %r3, i32 2 -%r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i192 -%r68 = shl i192 %r67, 128 -%r69 = or i192 %r63, %r68 -%r70 = zext i192 %r69 to i256 -%r72 = getelementptr i64, i64* %r3, i32 3 -%r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i256 -%r75 = shl i256 %r74, 192 -%r76 = or i256 %r70, %r75 -%r77 = zext i256 %r76 to i320 -%r79 = getelementptr i64, i64* %r3, i32 4 -%r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i320 -%r82 = shl i320 %r81, 256 -%r83 = or i320 %r77, %r82 -%r84 = zext i320 %r83 to i384 -%r86 = getelementptr i64, i64* %r3, i32 5 -%r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i384 -%r89 = shl i384 %r88, 320 -%r90 = or i384 %r84, %r89 -%r91 = zext i384 %r90 to i448 -%r93 = getelementptr i64, i64* %r3, i32 6 -%r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i448 -%r96 = shl i448 %r95, 384 -%r97 = or i448 %r91, %r96 -%r98 = zext i448 %r97 to i512 -%r100 = getelementptr i64, i64* %r3, i32 7 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i512 -%r103 = shl i512 %r102, 448 -%r104 = or i512 %r98, %r103 -%r105 = sub i512 %r54, %r104 -%r106 = lshr i512 %r105, 511 -%r107 = trunc i512 %r106 to i1 -%r108 = load i64, i64* %r4 -%r109 = zext i64 %r108 to i128 -%r111 = getelementptr i64, i64* %r4, i32 1 -%r112 = load i64, i64* %r111 -%r113 = zext i64 %r112 to i128 -%r114 = shl i128 %r113, 64 -%r115 = or i128 %r109, %r114 -%r116 = zext i128 %r115 to i192 -%r118 = getelementptr i64, i64* %r4, i32 2 -%r119 = load i64, i64* %r118 -%r120 = zext i64 %r119 to i192 -%r121 = shl i192 %r120, 128 -%r122 = or i192 %r116, %r121 -%r123 = zext i192 %r122 to i256 -%r125 = getelementptr i64, i64* %r4, i32 3 -%r126 = load i64, i64* %r125 -%r127 = zext i64 %r126 to i256 -%r128 = shl i256 %r127, 192 -%r129 = or i256 %r123, %r128 -%r130 = zext i256 %r129 to i320 -%r132 = getelementptr i64, i64* %r4, i32 4 -%r133 = load i64, i64* %r132 -%r134 = zext i64 %r133 to i320 -%r135 = shl i320 %r134, 256 -%r136 = or i320 %r130, %r135 -%r137 = zext i320 %r136 to i384 -%r139 = getelementptr i64, i64* %r4, i32 5 -%r140 = load i64, i64* %r139 -%r141 = zext i64 %r140 to i384 -%r142 = shl i384 %r141, 320 -%r143 = or i384 %r137, %r142 -%r144 = zext i384 %r143 to i448 -%r146 = getelementptr i64, i64* %r4, i32 6 -%r147 = load i64, i64* %r146 -%r148 = zext i64 %r147 to i448 -%r149 = shl i448 %r148, 384 -%r150 = or i448 %r144, %r149 -%r151 = zext i448 %r150 to i512 -%r153 = getelementptr i64, i64* %r4, i32 7 -%r154 = load i64, i64* %r153 -%r155 = zext i64 %r154 to i512 -%r156 = shl i512 %r155, 448 -%r157 = or i512 %r151, %r156 -%r159 = select i1 %r107, i512 %r157, i512 0 -%r160 = add i512 %r105, %r159 -%r161 = trunc i512 %r160 to i64 -%r163 = getelementptr i64, i64* %r1, i32 0 -store i64 %r161, i64* %r163 -%r164 = lshr i512 %r160, 64 -%r165 = trunc i512 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 1 -store i64 %r165, i64* %r167 -%r168 = lshr i512 %r164, 64 -%r169 = trunc i512 %r168 to i64 -%r171 = getelementptr i64, i64* %r1, i32 2 -store i64 %r169, i64* %r171 -%r172 = lshr i512 %r168, 64 -%r173 = trunc i512 %r172 to i64 -%r175 = getelementptr i64, i64* %r1, i32 3 -store i64 %r173, i64* %r175 -%r176 = lshr i512 %r172, 64 -%r177 = trunc i512 %r176 to i64 -%r179 = getelementptr i64, i64* %r1, i32 4 -store i64 %r177, i64* %r179 -%r180 = lshr i512 %r176, 64 -%r181 = trunc i512 %r180 to i64 -%r183 = getelementptr i64, i64* %r1, i32 5 -store i64 %r181, i64* %r183 -%r184 = lshr i512 %r180, 64 -%r185 = trunc i512 %r184 to i64 -%r187 = getelementptr i64, i64* %r1, i32 6 -store i64 %r185, i64* %r187 -%r188 = lshr i512 %r184, 64 -%r189 = trunc i512 %r188 to i64 -%r191 = getelementptr i64, i64* %r1, i32 7 -store i64 %r189, i64* %r191 -ret void -} -define void @mcl_fpDbl_add8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_subNF6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +{ +%r5 = load i64, i64* %r2 +%r6 = zext i64 %r5 to i128 +%r8 = getelementptr i64, i64* %r2, i32 1 +%r9 = load i64, i64* %r8 +%r10 = zext i64 %r9 to i128 +%r11 = shl i128 %r10, 64 +%r12 = or i128 %r6, %r11 +%r13 = zext i128 %r12 to i192 +%r15 = getelementptr i64, i64* %r2, i32 2 +%r16 = load i64, i64* %r15 +%r17 = zext i64 %r16 to i192 +%r18 = shl i192 %r17, 128 +%r19 = or i192 %r13, %r18 +%r20 = zext i192 %r19 to i256 +%r22 = getelementptr i64, i64* %r2, i32 3 +%r23 = load i64, i64* %r22 +%r24 = zext i64 %r23 to i256 +%r25 = shl i256 %r24, 192 +%r26 = or i256 %r20, %r25 +%r27 = zext i256 %r26 to i320 +%r29 = getelementptr i64, i64* %r2, i32 4 +%r30 = load i64, i64* %r29 +%r31 = zext i64 %r30 to i320 +%r32 = shl i320 %r31, 256 +%r33 = or i320 %r27, %r32 +%r34 = zext i320 %r33 to i384 +%r36 = getelementptr i64, i64* %r2, i32 5 +%r37 = load i64, i64* %r36 +%r38 = zext i64 %r37 to i384 +%r39 = shl i384 %r38, 320 +%r40 = or i384 %r34, %r39 +%r41 = load i64, i64* %r3 +%r42 = zext i64 %r41 to i128 +%r44 = getelementptr i64, i64* %r3, i32 1 +%r45 = load i64, i64* %r44 +%r46 = zext i64 %r45 to i128 +%r47 = shl i128 %r46, 64 +%r48 = or i128 %r42, %r47 +%r49 = zext i128 %r48 to i192 +%r51 = getelementptr i64, i64* %r3, i32 2 +%r52 = load i64, i64* %r51 +%r53 = zext i64 %r52 to i192 +%r54 = shl i192 %r53, 128 +%r55 = or i192 %r49, %r54 +%r56 = zext i192 %r55 to i256 +%r58 = getelementptr i64, i64* %r3, i32 3 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i256 +%r61 = shl i256 %r60, 192 +%r62 = or i256 %r56, %r61 +%r63 = zext i256 %r62 to i320 +%r65 = getelementptr i64, i64* %r3, i32 4 +%r66 = load i64, i64* %r65 +%r67 = zext i64 %r66 to i320 +%r68 = shl i320 %r67, 256 +%r69 = or i320 %r63, %r68 +%r70 = zext i320 %r69 to i384 +%r72 = getelementptr i64, i64* %r3, i32 5 +%r73 = load i64, i64* %r72 +%r74 = zext i64 %r73 to i384 +%r75 = shl i384 %r74, 320 +%r76 = or i384 %r70, %r75 +%r77 = sub i384 %r40, %r76 +%r78 = lshr i384 %r77, 383 +%r79 = trunc i384 %r78 to i1 +%r80 = load i64, i64* %r4 +%r81 = zext i64 %r80 to i128 +%r83 = getelementptr i64, i64* %r4, i32 1 +%r84 = load i64, i64* %r83 +%r85 = zext i64 %r84 to i128 +%r86 = shl i128 %r85, 64 +%r87 = or i128 %r81, %r86 +%r88 = zext i128 %r87 to i192 +%r90 = getelementptr i64, i64* %r4, i32 2 +%r91 = load i64, i64* %r90 +%r92 = zext i64 %r91 to i192 +%r93 = shl i192 %r92, 128 +%r94 = or i192 %r88, %r93 +%r95 = zext i192 %r94 to i256 +%r97 = getelementptr i64, i64* %r4, i32 3 +%r98 = load i64, i64* %r97 +%r99 = zext i64 %r98 to i256 +%r100 = shl i256 %r99, 192 +%r101 = or i256 %r95, %r100 +%r102 = zext i256 %r101 to i320 +%r104 = getelementptr i64, i64* %r4, i32 4 +%r105 = load i64, i64* %r104 +%r106 = zext i64 %r105 to i320 +%r107 = shl i320 %r106, 256 +%r108 = or i320 %r102, %r107 +%r109 = zext i320 %r108 to i384 +%r111 = getelementptr i64, i64* %r4, i32 5 +%r112 = load i64, i64* %r111 +%r113 = zext i64 %r112 to i384 +%r114 = shl i384 %r113, 320 +%r115 = or i384 %r109, %r114 +%r117 = select i1 %r79, i384 %r115, i384 0 +%r118 = add i384 %r77, %r117 +%r120 = getelementptr i64, i64* %r1, i32 0 +%r121 = trunc i384 %r118 to i64 +store i64 %r121, i64* %r120 +%r122 = lshr i384 %r118, 64 +%r124 = getelementptr i64, i64* %r1, i32 1 +%r125 = trunc i384 %r122 to i64 +store i64 %r125, i64* %r124 +%r126 = lshr i384 %r122, 64 +%r128 = getelementptr i64, i64* %r1, i32 2 +%r129 = trunc i384 %r126 to i64 +store i64 %r129, i64* %r128 +%r130 = lshr i384 %r126, 64 +%r132 = getelementptr i64, i64* %r1, i32 3 +%r133 = trunc i384 %r130 to i64 +store i64 %r133, i64* %r132 +%r134 = lshr i384 %r130, 64 +%r136 = getelementptr i64, i64* %r1, i32 4 +%r137 = trunc i384 %r134 to i64 +store i64 %r137, i64* %r136 +%r138 = lshr i384 %r134, 64 +%r140 = getelementptr i64, i64* %r1, i32 5 +%r141 = trunc i384 %r138 to i64 +store i64 %r141, i64* %r140 +ret void +} +define void @mcl_fpDbl_add6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -11934,253 +4641,177 @@ define void @mcl_fpDbl_add8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r67 = shl i640 %r66, 576 %r68 = or i640 %r62, %r67 %r69 = zext i640 %r68 to i704 -%r71 = getelementptr i64, i64* %r2, i32 10 -%r72 = load i64, i64* %r71 -%r73 = zext i64 %r72 to i704 -%r74 = shl i704 %r73, 640 -%r75 = or i704 %r69, %r74 -%r76 = zext i704 %r75 to i768 -%r78 = getelementptr i64, i64* %r2, i32 11 -%r79 = load i64, i64* %r78 -%r80 = zext i64 %r79 to i768 -%r81 = shl i768 %r80, 704 -%r82 = or i768 %r76, %r81 -%r83 = zext i768 %r82 to i832 -%r85 = getelementptr i64, i64* %r2, i32 12 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i832 -%r88 = shl i832 %r87, 768 -%r89 = or i832 %r83, %r88 -%r90 = zext i832 %r89 to i896 -%r92 = getelementptr i64, i64* %r2, i32 13 -%r93 = load i64, i64* %r92 -%r94 = zext i64 %r93 to i896 -%r95 = shl i896 %r94, 832 -%r96 = or i896 %r90, %r95 -%r97 = zext i896 %r96 to i960 -%r99 = getelementptr i64, i64* %r2, i32 14 -%r100 = load i64, i64* %r99 -%r101 = zext i64 %r100 to i960 -%r102 = shl i960 %r101, 896 -%r103 = or i960 %r97, %r102 -%r104 = zext i960 %r103 to i1024 -%r106 = getelementptr i64, i64* %r2, i32 15 -%r107 = load i64, i64* %r106 -%r108 = zext i64 %r107 to i1024 -%r109 = shl i1024 %r108, 960 -%r110 = or i1024 %r104, %r109 -%r111 = load i64, i64* %r3 -%r112 = zext i64 %r111 to i128 -%r114 = getelementptr i64, i64* %r3, i32 1 +%r71 = getelementptr i64, i64* %r2, i32 10 +%r72 = load i64, i64* %r71 +%r73 = zext i64 %r72 to i704 +%r74 = shl i704 %r73, 640 +%r75 = or i704 %r69, %r74 +%r76 = zext i704 %r75 to i768 +%r78 = getelementptr i64, i64* %r2, i32 11 +%r79 = load i64, i64* %r78 +%r80 = zext i64 %r79 to i768 +%r81 = shl i768 %r80, 704 +%r82 = or i768 %r76, %r81 +%r83 = load i64, i64* %r3 +%r84 = zext i64 %r83 to i128 +%r86 = getelementptr i64, i64* %r3, i32 1 +%r87 = load i64, i64* %r86 +%r88 = zext i64 %r87 to i128 +%r89 = shl i128 %r88, 64 +%r90 = or i128 %r84, %r89 +%r91 = zext i128 %r90 to i192 +%r93 = getelementptr i64, i64* %r3, i32 2 +%r94 = load i64, i64* %r93 +%r95 = zext i64 %r94 to i192 +%r96 = shl i192 %r95, 128 +%r97 = or i192 %r91, %r96 +%r98 = zext i192 %r97 to i256 +%r100 = getelementptr i64, i64* %r3, i32 3 +%r101 = load i64, i64* %r100 +%r102 = zext i64 %r101 to i256 +%r103 = shl i256 %r102, 192 +%r104 = or i256 %r98, %r103 +%r105 = zext i256 %r104 to i320 +%r107 = getelementptr i64, i64* %r3, i32 4 +%r108 = load i64, i64* %r107 +%r109 = zext i64 %r108 to i320 +%r110 = shl i320 %r109, 256 +%r111 = or i320 %r105, %r110 +%r112 = zext i320 %r111 to i384 +%r114 = getelementptr i64, i64* %r3, i32 5 %r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i128 -%r117 = shl i128 %r116, 64 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i192 -%r121 = getelementptr i64, i64* %r3, i32 2 +%r116 = zext i64 %r115 to i384 +%r117 = shl i384 %r116, 320 +%r118 = or i384 %r112, %r117 +%r119 = zext i384 %r118 to i448 +%r121 = getelementptr i64, i64* %r3, i32 6 %r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i192 -%r124 = shl i192 %r123, 128 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i256 -%r128 = getelementptr i64, i64* %r3, i32 3 +%r123 = zext i64 %r122 to i448 +%r124 = shl i448 %r123, 384 +%r125 = or i448 %r119, %r124 +%r126 = zext i448 %r125 to i512 +%r128 = getelementptr i64, i64* %r3, i32 7 %r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i256 -%r131 = shl i256 %r130, 192 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i320 -%r135 = getelementptr i64, i64* %r3, i32 4 +%r130 = zext i64 %r129 to i512 +%r131 = shl i512 %r130, 448 +%r132 = or i512 %r126, %r131 +%r133 = zext i512 %r132 to i576 +%r135 = getelementptr i64, i64* %r3, i32 8 %r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i320 -%r138 = shl i320 %r137, 256 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i384 -%r142 = getelementptr i64, i64* %r3, i32 5 +%r137 = zext i64 %r136 to i576 +%r138 = shl i576 %r137, 512 +%r139 = or i576 %r133, %r138 +%r140 = zext i576 %r139 to i640 +%r142 = getelementptr i64, i64* %r3, i32 9 %r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i384 -%r145 = shl i384 %r144, 320 -%r146 = or i384 %r140, %r145 -%r147 = zext i384 %r146 to i448 -%r149 = getelementptr i64, i64* %r3, i32 6 +%r144 = zext i64 %r143 to i640 +%r145 = shl i640 %r144, 576 +%r146 = or i640 %r140, %r145 +%r147 = zext i640 %r146 to i704 +%r149 = getelementptr i64, i64* %r3, i32 10 %r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i448 -%r152 = shl i448 %r151, 384 -%r153 = or i448 %r147, %r152 -%r154 = zext i448 %r153 to i512 -%r156 = getelementptr i64, i64* %r3, i32 7 +%r151 = zext i64 %r150 to i704 +%r152 = shl i704 %r151, 640 +%r153 = or i704 %r147, %r152 +%r154 = zext i704 %r153 to i768 +%r156 = getelementptr i64, i64* %r3, i32 11 %r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i512 -%r159 = shl i512 %r158, 448 -%r160 = or i512 %r154, %r159 -%r161 = zext i512 %r160 to i576 -%r163 = getelementptr i64, i64* %r3, i32 8 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i576 -%r166 = shl i576 %r165, 512 -%r167 = or i576 %r161, %r166 -%r168 = zext i576 %r167 to i640 -%r170 = getelementptr i64, i64* %r3, i32 9 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i640 -%r173 = shl i640 %r172, 576 -%r174 = or i640 %r168, %r173 -%r175 = zext i640 %r174 to i704 -%r177 = getelementptr i64, i64* %r3, i32 10 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i704 -%r180 = shl i704 %r179, 640 -%r181 = or i704 %r175, %r180 -%r182 = zext i704 %r181 to i768 -%r184 = getelementptr i64, i64* %r3, i32 11 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i768 -%r187 = shl i768 %r186, 704 -%r188 = or i768 %r182, %r187 -%r189 = zext i768 %r188 to i832 -%r191 = getelementptr i64, i64* %r3, i32 12 -%r192 = load i64, i64* %r191 -%r193 = zext i64 %r192 to i832 -%r194 = shl i832 %r193, 768 -%r195 = or i832 %r189, %r194 -%r196 = zext i832 %r195 to i896 -%r198 = getelementptr i64, i64* %r3, i32 13 -%r199 = load i64, i64* %r198 -%r200 = zext i64 %r199 to i896 -%r201 = shl i896 %r200, 832 -%r202 = or i896 %r196, %r201 -%r203 = zext i896 %r202 to i960 -%r205 = getelementptr i64, i64* %r3, i32 14 -%r206 = load i64, i64* %r205 -%r207 = zext i64 %r206 to i960 -%r208 = shl i960 %r207, 896 -%r209 = or i960 %r203, %r208 -%r210 = zext i960 %r209 to i1024 -%r212 = getelementptr i64, i64* %r3, i32 15 -%r213 = load i64, i64* %r212 -%r214 = zext i64 %r213 to i1024 -%r215 = shl i1024 %r214, 960 -%r216 = or i1024 %r210, %r215 -%r217 = zext i1024 %r110 to i1088 -%r218 = zext i1024 %r216 to i1088 -%r219 = add i1088 %r217, %r218 -%r220 = trunc i1088 %r219 to i512 -%r221 = trunc i512 %r220 to i64 -%r223 = getelementptr i64, i64* %r1, i32 0 -store i64 %r221, i64* %r223 -%r224 = lshr i512 %r220, 64 -%r225 = trunc i512 %r224 to i64 -%r227 = getelementptr i64, i64* %r1, i32 1 -store i64 %r225, i64* %r227 -%r228 = lshr i512 %r224, 64 -%r229 = trunc i512 %r228 to i64 -%r231 = getelementptr i64, i64* %r1, i32 2 -store i64 %r229, i64* %r231 -%r232 = lshr i512 %r228, 64 -%r233 = trunc i512 %r232 to i64 -%r235 = getelementptr i64, i64* %r1, i32 3 -store i64 %r233, i64* %r235 -%r236 = lshr i512 %r232, 64 -%r237 = trunc i512 %r236 to i64 -%r239 = getelementptr i64, i64* %r1, i32 4 -store i64 %r237, i64* %r239 -%r240 = lshr i512 %r236, 64 -%r241 = trunc i512 %r240 to i64 -%r243 = getelementptr i64, i64* %r1, i32 5 -store i64 %r241, i64* %r243 -%r244 = lshr i512 %r240, 64 -%r245 = trunc i512 %r244 to i64 -%r247 = getelementptr i64, i64* %r1, i32 6 -store i64 %r245, i64* %r247 -%r248 = lshr i512 %r244, 64 -%r249 = trunc i512 %r248 to i64 -%r251 = getelementptr i64, i64* %r1, i32 7 -store i64 %r249, i64* %r251 -%r252 = lshr i1088 %r219, 512 -%r253 = trunc i1088 %r252 to i576 -%r254 = load i64, i64* %r4 -%r255 = zext i64 %r254 to i128 -%r257 = getelementptr i64, i64* %r4, i32 1 -%r258 = load i64, i64* %r257 -%r259 = zext i64 %r258 to i128 -%r260 = shl i128 %r259, 64 -%r261 = or i128 %r255, %r260 -%r262 = zext i128 %r261 to i192 -%r264 = getelementptr i64, i64* %r4, i32 2 -%r265 = load i64, i64* %r264 -%r266 = zext i64 %r265 to i192 -%r267 = shl i192 %r266, 128 -%r268 = or i192 %r262, %r267 -%r269 = zext i192 %r268 to i256 -%r271 = getelementptr i64, i64* %r4, i32 3 -%r272 = load i64, i64* %r271 -%r273 = zext i64 %r272 to i256 -%r274 = shl i256 %r273, 192 -%r275 = or i256 %r269, %r274 -%r276 = zext i256 %r275 to i320 -%r278 = getelementptr i64, i64* %r4, i32 4 -%r279 = load i64, i64* %r278 -%r280 = zext i64 %r279 to i320 -%r281 = shl i320 %r280, 256 -%r282 = or i320 %r276, %r281 -%r283 = zext i320 %r282 to i384 -%r285 = getelementptr i64, i64* %r4, i32 5 -%r286 = load i64, i64* %r285 -%r287 = zext i64 %r286 to i384 -%r288 = shl i384 %r287, 320 -%r289 = or i384 %r283, %r288 -%r290 = zext i384 %r289 to i448 -%r292 = getelementptr i64, i64* %r4, i32 6 -%r293 = load i64, i64* %r292 -%r294 = zext i64 %r293 to i448 -%r295 = shl i448 %r294, 384 -%r296 = or i448 %r290, %r295 -%r297 = zext i448 %r296 to i512 -%r299 = getelementptr i64, i64* %r4, i32 7 -%r300 = load i64, i64* %r299 -%r301 = zext i64 %r300 to i512 -%r302 = shl i512 %r301, 448 -%r303 = or i512 %r297, %r302 -%r304 = zext i512 %r303 to i576 -%r305 = sub i576 %r253, %r304 -%r306 = lshr i576 %r305, 512 -%r307 = trunc i576 %r306 to i1 -%r308 = select i1 %r307, i576 %r253, i576 %r305 -%r309 = trunc i576 %r308 to i512 -%r311 = getelementptr i64, i64* %r1, i32 8 -%r312 = trunc i512 %r309 to i64 -%r314 = getelementptr i64, i64* %r311, i32 0 -store i64 %r312, i64* %r314 -%r315 = lshr i512 %r309, 64 -%r316 = trunc i512 %r315 to i64 -%r318 = getelementptr i64, i64* %r311, i32 1 -store i64 %r316, i64* %r318 -%r319 = lshr i512 %r315, 64 -%r320 = trunc i512 %r319 to i64 -%r322 = getelementptr i64, i64* %r311, i32 2 -store i64 %r320, i64* %r322 -%r323 = lshr i512 %r319, 64 -%r324 = trunc i512 %r323 to i64 -%r326 = getelementptr i64, i64* %r311, i32 3 -store i64 %r324, i64* %r326 -%r327 = lshr i512 %r323, 64 -%r328 = trunc i512 %r327 to i64 -%r330 = getelementptr i64, i64* %r311, i32 4 -store i64 %r328, i64* %r330 -%r331 = lshr i512 %r327, 64 -%r332 = trunc i512 %r331 to i64 -%r334 = getelementptr i64, i64* %r311, i32 5 -store i64 %r332, i64* %r334 -%r335 = lshr i512 %r331, 64 -%r336 = trunc i512 %r335 to i64 -%r338 = getelementptr i64, i64* %r311, i32 6 -store i64 %r336, i64* %r338 -%r339 = lshr i512 %r335, 64 -%r340 = trunc i512 %r339 to i64 -%r342 = getelementptr i64, i64* %r311, i32 7 -store i64 %r340, i64* %r342 +%r158 = zext i64 %r157 to i768 +%r159 = shl i768 %r158, 704 +%r160 = or i768 %r154, %r159 +%r161 = zext i768 %r82 to i832 +%r162 = zext i768 %r160 to i832 +%r163 = add i832 %r161, %r162 +%r164 = trunc i832 %r163 to i384 +%r166 = getelementptr i64, i64* %r1, i32 0 +%r167 = trunc i384 %r164 to i64 +store i64 %r167, i64* %r166 +%r168 = lshr i384 %r164, 64 +%r170 = getelementptr i64, i64* %r1, i32 1 +%r171 = trunc i384 %r168 to i64 +store i64 %r171, i64* %r170 +%r172 = lshr i384 %r168, 64 +%r174 = getelementptr i64, i64* %r1, i32 2 +%r175 = trunc i384 %r172 to i64 +store i64 %r175, i64* %r174 +%r176 = lshr i384 %r172, 64 +%r178 = getelementptr i64, i64* %r1, i32 3 +%r179 = trunc i384 %r176 to i64 +store i64 %r179, i64* %r178 +%r180 = lshr i384 %r176, 64 +%r182 = getelementptr i64, i64* %r1, i32 4 +%r183 = trunc i384 %r180 to i64 +store i64 %r183, i64* %r182 +%r184 = lshr i384 %r180, 64 +%r186 = getelementptr i64, i64* %r1, i32 5 +%r187 = trunc i384 %r184 to i64 +store i64 %r187, i64* %r186 +%r188 = lshr i832 %r163, 384 +%r189 = trunc i832 %r188 to i448 +%r190 = load i64, i64* %r4 +%r191 = zext i64 %r190 to i128 +%r193 = getelementptr i64, i64* %r4, i32 1 +%r194 = load i64, i64* %r193 +%r195 = zext i64 %r194 to i128 +%r196 = shl i128 %r195, 64 +%r197 = or i128 %r191, %r196 +%r198 = zext i128 %r197 to i192 +%r200 = getelementptr i64, i64* %r4, i32 2 +%r201 = load i64, i64* %r200 +%r202 = zext i64 %r201 to i192 +%r203 = shl i192 %r202, 128 +%r204 = or i192 %r198, %r203 +%r205 = zext i192 %r204 to i256 +%r207 = getelementptr i64, i64* %r4, i32 3 +%r208 = load i64, i64* %r207 +%r209 = zext i64 %r208 to i256 +%r210 = shl i256 %r209, 192 +%r211 = or i256 %r205, %r210 +%r212 = zext i256 %r211 to i320 +%r214 = getelementptr i64, i64* %r4, i32 4 +%r215 = load i64, i64* %r214 +%r216 = zext i64 %r215 to i320 +%r217 = shl i320 %r216, 256 +%r218 = or i320 %r212, %r217 +%r219 = zext i320 %r218 to i384 +%r221 = getelementptr i64, i64* %r4, i32 5 +%r222 = load i64, i64* %r221 +%r223 = zext i64 %r222 to i384 +%r224 = shl i384 %r223, 320 +%r225 = or i384 %r219, %r224 +%r226 = zext i384 %r225 to i448 +%r227 = sub i448 %r189, %r226 +%r228 = lshr i448 %r227, 384 +%r229 = trunc i448 %r228 to i1 +%r230 = select i1 %r229, i448 %r189, i448 %r227 +%r231 = trunc i448 %r230 to i384 +%r233 = getelementptr i64, i64* %r1, i32 6 +%r235 = getelementptr i64, i64* %r233, i32 0 +%r236 = trunc i384 %r231 to i64 +store i64 %r236, i64* %r235 +%r237 = lshr i384 %r231, 64 +%r239 = getelementptr i64, i64* %r233, i32 1 +%r240 = trunc i384 %r237 to i64 +store i64 %r240, i64* %r239 +%r241 = lshr i384 %r237, 64 +%r243 = getelementptr i64, i64* %r233, i32 2 +%r244 = trunc i384 %r241 to i64 +store i64 %r244, i64* %r243 +%r245 = lshr i384 %r241, 64 +%r247 = getelementptr i64, i64* %r233, i32 3 +%r248 = trunc i384 %r245 to i64 +store i64 %r248, i64* %r247 +%r249 = lshr i384 %r245, 64 +%r251 = getelementptr i64, i64* %r233, i32 4 +%r252 = trunc i384 %r249 to i64 +store i64 %r252, i64* %r251 +%r253 = lshr i384 %r249, 64 +%r255 = getelementptr i64, i64* %r233, i32 5 +%r256 = trunc i384 %r253 to i64 +store i64 %r256, i64* %r255 ret void } -define void @mcl_fpDbl_sub8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_sub6L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -12249,240 +4880,164 @@ define void @mcl_fpDbl_sub8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r80 = zext i64 %r79 to i768 %r81 = shl i768 %r80, 704 %r82 = or i768 %r76, %r81 -%r83 = zext i768 %r82 to i832 -%r85 = getelementptr i64, i64* %r2, i32 12 -%r86 = load i64, i64* %r85 -%r87 = zext i64 %r86 to i832 -%r88 = shl i832 %r87, 768 -%r89 = or i832 %r83, %r88 -%r90 = zext i832 %r89 to i896 -%r92 = getelementptr i64, i64* %r2, i32 13 -%r93 = load i64, i64* %r92 -%r94 = zext i64 %r93 to i896 -%r95 = shl i896 %r94, 832 -%r96 = or i896 %r90, %r95 -%r97 = zext i896 %r96 to i960 -%r99 = getelementptr i64, i64* %r2, i32 14 -%r100 = load i64, i64* %r99 -%r101 = zext i64 %r100 to i960 -%r102 = shl i960 %r101, 896 -%r103 = or i960 %r97, %r102 -%r104 = zext i960 %r103 to i1024 -%r106 = getelementptr i64, i64* %r2, i32 15 -%r107 = load i64, i64* %r106 -%r108 = zext i64 %r107 to i1024 -%r109 = shl i1024 %r108, 960 -%r110 = or i1024 %r104, %r109 -%r111 = load i64, i64* %r3 -%r112 = zext i64 %r111 to i128 -%r114 = getelementptr i64, i64* %r3, i32 1 +%r83 = load i64, i64* %r3 +%r84 = zext i64 %r83 to i128 +%r86 = getelementptr i64, i64* %r3, i32 1 +%r87 = load i64, i64* %r86 +%r88 = zext i64 %r87 to i128 +%r89 = shl i128 %r88, 64 +%r90 = or i128 %r84, %r89 +%r91 = zext i128 %r90 to i192 +%r93 = getelementptr i64, i64* %r3, i32 2 +%r94 = load i64, i64* %r93 +%r95 = zext i64 %r94 to i192 +%r96 = shl i192 %r95, 128 +%r97 = or i192 %r91, %r96 +%r98 = zext i192 %r97 to i256 +%r100 = getelementptr i64, i64* %r3, i32 3 +%r101 = load i64, i64* %r100 +%r102 = zext i64 %r101 to i256 +%r103 = shl i256 %r102, 192 +%r104 = or i256 %r98, %r103 +%r105 = zext i256 %r104 to i320 +%r107 = getelementptr i64, i64* %r3, i32 4 +%r108 = load i64, i64* %r107 +%r109 = zext i64 %r108 to i320 +%r110 = shl i320 %r109, 256 +%r111 = or i320 %r105, %r110 +%r112 = zext i320 %r111 to i384 +%r114 = getelementptr i64, i64* %r3, i32 5 %r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i128 -%r117 = shl i128 %r116, 64 -%r118 = or i128 %r112, %r117 -%r119 = zext i128 %r118 to i192 -%r121 = getelementptr i64, i64* %r3, i32 2 +%r116 = zext i64 %r115 to i384 +%r117 = shl i384 %r116, 320 +%r118 = or i384 %r112, %r117 +%r119 = zext i384 %r118 to i448 +%r121 = getelementptr i64, i64* %r3, i32 6 %r122 = load i64, i64* %r121 -%r123 = zext i64 %r122 to i192 -%r124 = shl i192 %r123, 128 -%r125 = or i192 %r119, %r124 -%r126 = zext i192 %r125 to i256 -%r128 = getelementptr i64, i64* %r3, i32 3 +%r123 = zext i64 %r122 to i448 +%r124 = shl i448 %r123, 384 +%r125 = or i448 %r119, %r124 +%r126 = zext i448 %r125 to i512 +%r128 = getelementptr i64, i64* %r3, i32 7 %r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i256 -%r131 = shl i256 %r130, 192 -%r132 = or i256 %r126, %r131 -%r133 = zext i256 %r132 to i320 -%r135 = getelementptr i64, i64* %r3, i32 4 +%r130 = zext i64 %r129 to i512 +%r131 = shl i512 %r130, 448 +%r132 = or i512 %r126, %r131 +%r133 = zext i512 %r132 to i576 +%r135 = getelementptr i64, i64* %r3, i32 8 %r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i320 -%r138 = shl i320 %r137, 256 -%r139 = or i320 %r133, %r138 -%r140 = zext i320 %r139 to i384 -%r142 = getelementptr i64, i64* %r3, i32 5 +%r137 = zext i64 %r136 to i576 +%r138 = shl i576 %r137, 512 +%r139 = or i576 %r133, %r138 +%r140 = zext i576 %r139 to i640 +%r142 = getelementptr i64, i64* %r3, i32 9 %r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i384 -%r145 = shl i384 %r144, 320 -%r146 = or i384 %r140, %r145 -%r147 = zext i384 %r146 to i448 -%r149 = getelementptr i64, i64* %r3, i32 6 +%r144 = zext i64 %r143 to i640 +%r145 = shl i640 %r144, 576 +%r146 = or i640 %r140, %r145 +%r147 = zext i640 %r146 to i704 +%r149 = getelementptr i64, i64* %r3, i32 10 %r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i448 -%r152 = shl i448 %r151, 384 -%r153 = or i448 %r147, %r152 -%r154 = zext i448 %r153 to i512 -%r156 = getelementptr i64, i64* %r3, i32 7 -%r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i512 -%r159 = shl i512 %r158, 448 -%r160 = or i512 %r154, %r159 -%r161 = zext i512 %r160 to i576 -%r163 = getelementptr i64, i64* %r3, i32 8 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i576 -%r166 = shl i576 %r165, 512 -%r167 = or i576 %r161, %r166 -%r168 = zext i576 %r167 to i640 -%r170 = getelementptr i64, i64* %r3, i32 9 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i640 -%r173 = shl i640 %r172, 576 -%r174 = or i640 %r168, %r173 -%r175 = zext i640 %r174 to i704 -%r177 = getelementptr i64, i64* %r3, i32 10 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i704 -%r180 = shl i704 %r179, 640 -%r181 = or i704 %r175, %r180 -%r182 = zext i704 %r181 to i768 -%r184 = getelementptr i64, i64* %r3, i32 11 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i768 -%r187 = shl i768 %r186, 704 -%r188 = or i768 %r182, %r187 -%r189 = zext i768 %r188 to i832 -%r191 = getelementptr i64, i64* %r3, i32 12 -%r192 = load i64, i64* %r191 -%r193 = zext i64 %r192 to i832 -%r194 = shl i832 %r193, 768 -%r195 = or i832 %r189, %r194 -%r196 = zext i832 %r195 to i896 -%r198 = getelementptr i64, i64* %r3, i32 13 -%r199 = load i64, i64* %r198 -%r200 = zext i64 %r199 to i896 -%r201 = shl i896 %r200, 832 -%r202 = or i896 %r196, %r201 -%r203 = zext i896 %r202 to i960 -%r205 = getelementptr i64, i64* %r3, i32 14 -%r206 = load i64, i64* %r205 -%r207 = zext i64 %r206 to i960 -%r208 = shl i960 %r207, 896 -%r209 = or i960 %r203, %r208 -%r210 = zext i960 %r209 to i1024 -%r212 = getelementptr i64, i64* %r3, i32 15 -%r213 = load i64, i64* %r212 -%r214 = zext i64 %r213 to i1024 -%r215 = shl i1024 %r214, 960 -%r216 = or i1024 %r210, %r215 -%r217 = zext i1024 %r110 to i1088 -%r218 = zext i1024 %r216 to i1088 -%r219 = sub i1088 %r217, %r218 -%r220 = trunc i1088 %r219 to i512 -%r221 = trunc i512 %r220 to i64 -%r223 = getelementptr i64, i64* %r1, i32 0 -store i64 %r221, i64* %r223 -%r224 = lshr i512 %r220, 64 -%r225 = trunc i512 %r224 to i64 -%r227 = getelementptr i64, i64* %r1, i32 1 -store i64 %r225, i64* %r227 -%r228 = lshr i512 %r224, 64 -%r229 = trunc i512 %r228 to i64 -%r231 = getelementptr i64, i64* %r1, i32 2 -store i64 %r229, i64* %r231 -%r232 = lshr i512 %r228, 64 -%r233 = trunc i512 %r232 to i64 -%r235 = getelementptr i64, i64* %r1, i32 3 -store i64 %r233, i64* %r235 -%r236 = lshr i512 %r232, 64 -%r237 = trunc i512 %r236 to i64 -%r239 = getelementptr i64, i64* %r1, i32 4 -store i64 %r237, i64* %r239 -%r240 = lshr i512 %r236, 64 -%r241 = trunc i512 %r240 to i64 -%r243 = getelementptr i64, i64* %r1, i32 5 -store i64 %r241, i64* %r243 -%r244 = lshr i512 %r240, 64 -%r245 = trunc i512 %r244 to i64 -%r247 = getelementptr i64, i64* %r1, i32 6 -store i64 %r245, i64* %r247 -%r248 = lshr i512 %r244, 64 -%r249 = trunc i512 %r248 to i64 -%r251 = getelementptr i64, i64* %r1, i32 7 -store i64 %r249, i64* %r251 -%r252 = lshr i1088 %r219, 512 -%r253 = trunc i1088 %r252 to i512 -%r254 = lshr i1088 %r219, 1024 -%r255 = trunc i1088 %r254 to i1 -%r256 = load i64, i64* %r4 -%r257 = zext i64 %r256 to i128 -%r259 = getelementptr i64, i64* %r4, i32 1 -%r260 = load i64, i64* %r259 -%r261 = zext i64 %r260 to i128 -%r262 = shl i128 %r261, 64 -%r263 = or i128 %r257, %r262 -%r264 = zext i128 %r263 to i192 -%r266 = getelementptr i64, i64* %r4, i32 2 -%r267 = load i64, i64* %r266 -%r268 = zext i64 %r267 to i192 -%r269 = shl i192 %r268, 128 -%r270 = or i192 %r264, %r269 -%r271 = zext i192 %r270 to i256 -%r273 = getelementptr i64, i64* %r4, i32 3 -%r274 = load i64, i64* %r273 -%r275 = zext i64 %r274 to i256 -%r276 = shl i256 %r275, 192 -%r277 = or i256 %r271, %r276 -%r278 = zext i256 %r277 to i320 -%r280 = getelementptr i64, i64* %r4, i32 4 -%r281 = load i64, i64* %r280 -%r282 = zext i64 %r281 to i320 -%r283 = shl i320 %r282, 256 -%r284 = or i320 %r278, %r283 -%r285 = zext i320 %r284 to i384 -%r287 = getelementptr i64, i64* %r4, i32 5 -%r288 = load i64, i64* %r287 -%r289 = zext i64 %r288 to i384 -%r290 = shl i384 %r289, 320 -%r291 = or i384 %r285, %r290 -%r292 = zext i384 %r291 to i448 -%r294 = getelementptr i64, i64* %r4, i32 6 -%r295 = load i64, i64* %r294 -%r296 = zext i64 %r295 to i448 -%r297 = shl i448 %r296, 384 -%r298 = or i448 %r292, %r297 -%r299 = zext i448 %r298 to i512 -%r301 = getelementptr i64, i64* %r4, i32 7 -%r302 = load i64, i64* %r301 -%r303 = zext i64 %r302 to i512 -%r304 = shl i512 %r303, 448 -%r305 = or i512 %r299, %r304 -%r307 = select i1 %r255, i512 %r305, i512 0 -%r308 = add i512 %r253, %r307 -%r310 = getelementptr i64, i64* %r1, i32 8 -%r311 = trunc i512 %r308 to i64 -%r313 = getelementptr i64, i64* %r310, i32 0 -store i64 %r311, i64* %r313 -%r314 = lshr i512 %r308, 64 -%r315 = trunc i512 %r314 to i64 -%r317 = getelementptr i64, i64* %r310, i32 1 -store i64 %r315, i64* %r317 -%r318 = lshr i512 %r314, 64 -%r319 = trunc i512 %r318 to i64 -%r321 = getelementptr i64, i64* %r310, i32 2 -store i64 %r319, i64* %r321 -%r322 = lshr i512 %r318, 64 -%r323 = trunc i512 %r322 to i64 -%r325 = getelementptr i64, i64* %r310, i32 3 -store i64 %r323, i64* %r325 -%r326 = lshr i512 %r322, 64 -%r327 = trunc i512 %r326 to i64 -%r329 = getelementptr i64, i64* %r310, i32 4 -store i64 %r327, i64* %r329 -%r330 = lshr i512 %r326, 64 -%r331 = trunc i512 %r330 to i64 -%r333 = getelementptr i64, i64* %r310, i32 5 -store i64 %r331, i64* %r333 -%r334 = lshr i512 %r330, 64 -%r335 = trunc i512 %r334 to i64 -%r337 = getelementptr i64, i64* %r310, i32 6 -store i64 %r335, i64* %r337 -%r338 = lshr i512 %r334, 64 -%r339 = trunc i512 %r338 to i64 -%r341 = getelementptr i64, i64* %r310, i32 7 -store i64 %r339, i64* %r341 +%r151 = zext i64 %r150 to i704 +%r152 = shl i704 %r151, 640 +%r153 = or i704 %r147, %r152 +%r154 = zext i704 %r153 to i768 +%r156 = getelementptr i64, i64* %r3, i32 11 +%r157 = load i64, i64* %r156 +%r158 = zext i64 %r157 to i768 +%r159 = shl i768 %r158, 704 +%r160 = or i768 %r154, %r159 +%r161 = zext i768 %r82 to i832 +%r162 = zext i768 %r160 to i832 +%r163 = sub i832 %r161, %r162 +%r164 = trunc i832 %r163 to i384 +%r166 = getelementptr i64, i64* %r1, i32 0 +%r167 = trunc i384 %r164 to i64 +store i64 %r167, i64* %r166 +%r168 = lshr i384 %r164, 64 +%r170 = getelementptr i64, i64* %r1, i32 1 +%r171 = trunc i384 %r168 to i64 +store i64 %r171, i64* %r170 +%r172 = lshr i384 %r168, 64 +%r174 = getelementptr i64, i64* %r1, i32 2 +%r175 = trunc i384 %r172 to i64 +store i64 %r175, i64* %r174 +%r176 = lshr i384 %r172, 64 +%r178 = getelementptr i64, i64* %r1, i32 3 +%r179 = trunc i384 %r176 to i64 +store i64 %r179, i64* %r178 +%r180 = lshr i384 %r176, 64 +%r182 = getelementptr i64, i64* %r1, i32 4 +%r183 = trunc i384 %r180 to i64 +store i64 %r183, i64* %r182 +%r184 = lshr i384 %r180, 64 +%r186 = getelementptr i64, i64* %r1, i32 5 +%r187 = trunc i384 %r184 to i64 +store i64 %r187, i64* %r186 +%r188 = lshr i832 %r163, 384 +%r189 = trunc i832 %r188 to i384 +%r190 = lshr i832 %r163, 768 +%r191 = trunc i832 %r190 to i1 +%r192 = load i64, i64* %r4 +%r193 = zext i64 %r192 to i128 +%r195 = getelementptr i64, i64* %r4, i32 1 +%r196 = load i64, i64* %r195 +%r197 = zext i64 %r196 to i128 +%r198 = shl i128 %r197, 64 +%r199 = or i128 %r193, %r198 +%r200 = zext i128 %r199 to i192 +%r202 = getelementptr i64, i64* %r4, i32 2 +%r203 = load i64, i64* %r202 +%r204 = zext i64 %r203 to i192 +%r205 = shl i192 %r204, 128 +%r206 = or i192 %r200, %r205 +%r207 = zext i192 %r206 to i256 +%r209 = getelementptr i64, i64* %r4, i32 3 +%r210 = load i64, i64* %r209 +%r211 = zext i64 %r210 to i256 +%r212 = shl i256 %r211, 192 +%r213 = or i256 %r207, %r212 +%r214 = zext i256 %r213 to i320 +%r216 = getelementptr i64, i64* %r4, i32 4 +%r217 = load i64, i64* %r216 +%r218 = zext i64 %r217 to i320 +%r219 = shl i320 %r218, 256 +%r220 = or i320 %r214, %r219 +%r221 = zext i320 %r220 to i384 +%r223 = getelementptr i64, i64* %r4, i32 5 +%r224 = load i64, i64* %r223 +%r225 = zext i64 %r224 to i384 +%r226 = shl i384 %r225, 320 +%r227 = or i384 %r221, %r226 +%r229 = select i1 %r191, i384 %r227, i384 0 +%r230 = add i384 %r189, %r229 +%r232 = getelementptr i64, i64* %r1, i32 6 +%r234 = getelementptr i64, i64* %r232, i32 0 +%r235 = trunc i384 %r230 to i64 +store i64 %r235, i64* %r234 +%r236 = lshr i384 %r230, 64 +%r238 = getelementptr i64, i64* %r232, i32 1 +%r239 = trunc i384 %r236 to i64 +store i64 %r239, i64* %r238 +%r240 = lshr i384 %r236, 64 +%r242 = getelementptr i64, i64* %r232, i32 2 +%r243 = trunc i384 %r240 to i64 +store i64 %r243, i64* %r242 +%r244 = lshr i384 %r240, 64 +%r246 = getelementptr i64, i64* %r232, i32 3 +%r247 = trunc i384 %r244 to i64 +store i64 %r247, i64* %r246 +%r248 = lshr i384 %r244, 64 +%r250 = getelementptr i64, i64* %r232, i32 4 +%r251 = trunc i384 %r248 to i64 +store i64 %r251, i64* %r250 +%r252 = lshr i384 %r248, 64 +%r254 = getelementptr i64, i64* %r232, i32 5 +%r255 = trunc i384 %r252 to i64 +store i64 %r255, i64* %r254 ret void } -define i640 @mulPv576x64(i64* noalias %r2, i64 %r3) +define i576 @mulPv512x64(i64* noalias %r2, i64 %r3) { %r5 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 0) %r6 = trunc i128 %r5 to i64 @@ -12508,711 +5063,919 @@ define i640 @mulPv576x64(i64* noalias %r2, i64 %r3) %r33 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 7) %r34 = trunc i128 %r33 to i64 %r35 = call i64 @extractHigh64(i128 %r33) -%r37 = call i128 @mulPos64x64(i64* %r2, i64 %r3, i64 8) -%r38 = trunc i128 %r37 to i64 -%r39 = call i64 @extractHigh64(i128 %r37) -%r40 = zext i64 %r6 to i128 -%r41 = zext i64 %r10 to i128 -%r42 = shl i128 %r41, 64 -%r43 = or i128 %r40, %r42 -%r44 = zext i128 %r43 to i192 -%r45 = zext i64 %r14 to i192 -%r46 = shl i192 %r45, 128 -%r47 = or i192 %r44, %r46 -%r48 = zext i192 %r47 to i256 -%r49 = zext i64 %r18 to i256 -%r50 = shl i256 %r49, 192 -%r51 = or i256 %r48, %r50 -%r52 = zext i256 %r51 to i320 -%r53 = zext i64 %r22 to i320 -%r54 = shl i320 %r53, 256 -%r55 = or i320 %r52, %r54 -%r56 = zext i320 %r55 to i384 -%r57 = zext i64 %r26 to i384 -%r58 = shl i384 %r57, 320 -%r59 = or i384 %r56, %r58 -%r60 = zext i384 %r59 to i448 -%r61 = zext i64 %r30 to i448 -%r62 = shl i448 %r61, 384 -%r63 = or i448 %r60, %r62 -%r64 = zext i448 %r63 to i512 -%r65 = zext i64 %r34 to i512 -%r66 = shl i512 %r65, 448 -%r67 = or i512 %r64, %r66 -%r68 = zext i512 %r67 to i576 -%r69 = zext i64 %r38 to i576 -%r70 = shl i576 %r69, 512 -%r71 = or i576 %r68, %r70 -%r72 = zext i64 %r7 to i128 -%r73 = zext i64 %r11 to i128 -%r74 = shl i128 %r73, 64 -%r75 = or i128 %r72, %r74 -%r76 = zext i128 %r75 to i192 -%r77 = zext i64 %r15 to i192 -%r78 = shl i192 %r77, 128 -%r79 = or i192 %r76, %r78 -%r80 = zext i192 %r79 to i256 -%r81 = zext i64 %r19 to i256 -%r82 = shl i256 %r81, 192 -%r83 = or i256 %r80, %r82 -%r84 = zext i256 %r83 to i320 -%r85 = zext i64 %r23 to i320 -%r86 = shl i320 %r85, 256 -%r87 = or i320 %r84, %r86 -%r88 = zext i320 %r87 to i384 -%r89 = zext i64 %r27 to i384 -%r90 = shl i384 %r89, 320 -%r91 = or i384 %r88, %r90 -%r92 = zext i384 %r91 to i448 -%r93 = zext i64 %r31 to i448 -%r94 = shl i448 %r93, 384 -%r95 = or i448 %r92, %r94 -%r96 = zext i448 %r95 to i512 -%r97 = zext i64 %r35 to i512 -%r98 = shl i512 %r97, 448 -%r99 = or i512 %r96, %r98 -%r100 = zext i512 %r99 to i576 -%r101 = zext i64 %r39 to i576 -%r102 = shl i576 %r101, 512 -%r103 = or i576 %r100, %r102 -%r104 = zext i576 %r71 to i640 -%r105 = zext i576 %r103 to i640 -%r106 = shl i640 %r105, 64 -%r107 = add i640 %r104, %r106 -ret i640 %r107 +%r36 = zext i64 %r6 to i128 +%r37 = zext i64 %r10 to i128 +%r38 = shl i128 %r37, 64 +%r39 = or i128 %r36, %r38 +%r40 = zext i128 %r39 to i192 +%r41 = zext i64 %r14 to i192 +%r42 = shl i192 %r41, 128 +%r43 = or i192 %r40, %r42 +%r44 = zext i192 %r43 to i256 +%r45 = zext i64 %r18 to i256 +%r46 = shl i256 %r45, 192 +%r47 = or i256 %r44, %r46 +%r48 = zext i256 %r47 to i320 +%r49 = zext i64 %r22 to i320 +%r50 = shl i320 %r49, 256 +%r51 = or i320 %r48, %r50 +%r52 = zext i320 %r51 to i384 +%r53 = zext i64 %r26 to i384 +%r54 = shl i384 %r53, 320 +%r55 = or i384 %r52, %r54 +%r56 = zext i384 %r55 to i448 +%r57 = zext i64 %r30 to i448 +%r58 = shl i448 %r57, 384 +%r59 = or i448 %r56, %r58 +%r60 = zext i448 %r59 to i512 +%r61 = zext i64 %r34 to i512 +%r62 = shl i512 %r61, 448 +%r63 = or i512 %r60, %r62 +%r64 = zext i64 %r7 to i128 +%r65 = zext i64 %r11 to i128 +%r66 = shl i128 %r65, 64 +%r67 = or i128 %r64, %r66 +%r68 = zext i128 %r67 to i192 +%r69 = zext i64 %r15 to i192 +%r70 = shl i192 %r69, 128 +%r71 = or i192 %r68, %r70 +%r72 = zext i192 %r71 to i256 +%r73 = zext i64 %r19 to i256 +%r74 = shl i256 %r73, 192 +%r75 = or i256 %r72, %r74 +%r76 = zext i256 %r75 to i320 +%r77 = zext i64 %r23 to i320 +%r78 = shl i320 %r77, 256 +%r79 = or i320 %r76, %r78 +%r80 = zext i320 %r79 to i384 +%r81 = zext i64 %r27 to i384 +%r82 = shl i384 %r81, 320 +%r83 = or i384 %r80, %r82 +%r84 = zext i384 %r83 to i448 +%r85 = zext i64 %r31 to i448 +%r86 = shl i448 %r85, 384 +%r87 = or i448 %r84, %r86 +%r88 = zext i448 %r87 to i512 +%r89 = zext i64 %r35 to i512 +%r90 = shl i512 %r89, 448 +%r91 = or i512 %r88, %r90 +%r92 = zext i512 %r63 to i576 +%r93 = zext i512 %r91 to i576 +%r94 = shl i576 %r93, 64 +%r95 = add i576 %r92, %r94 +ret i576 %r95 } -define void @mcl_fp_mulUnitPre9L(i64* noalias %r1, i64* noalias %r2, i64 %r3) +define void @mcl_fp_mulUnitPre8L(i64* noalias %r1, i64* noalias %r2, i64 %r3) { -%r4 = call i640 @mulPv576x64(i64* %r2, i64 %r3) -%r5 = trunc i640 %r4 to i64 -%r7 = getelementptr i64, i64* %r1, i32 0 -store i64 %r5, i64* %r7 -%r8 = lshr i640 %r4, 64 -%r9 = trunc i640 %r8 to i64 -%r11 = getelementptr i64, i64* %r1, i32 1 -store i64 %r9, i64* %r11 -%r12 = lshr i640 %r8, 64 -%r13 = trunc i640 %r12 to i64 -%r15 = getelementptr i64, i64* %r1, i32 2 -store i64 %r13, i64* %r15 -%r16 = lshr i640 %r12, 64 -%r17 = trunc i640 %r16 to i64 -%r19 = getelementptr i64, i64* %r1, i32 3 -store i64 %r17, i64* %r19 -%r20 = lshr i640 %r16, 64 -%r21 = trunc i640 %r20 to i64 -%r23 = getelementptr i64, i64* %r1, i32 4 -store i64 %r21, i64* %r23 -%r24 = lshr i640 %r20, 64 -%r25 = trunc i640 %r24 to i64 -%r27 = getelementptr i64, i64* %r1, i32 5 -store i64 %r25, i64* %r27 -%r28 = lshr i640 %r24, 64 -%r29 = trunc i640 %r28 to i64 -%r31 = getelementptr i64, i64* %r1, i32 6 -store i64 %r29, i64* %r31 -%r32 = lshr i640 %r28, 64 -%r33 = trunc i640 %r32 to i64 -%r35 = getelementptr i64, i64* %r1, i32 7 -store i64 %r33, i64* %r35 -%r36 = lshr i640 %r32, 64 -%r37 = trunc i640 %r36 to i64 -%r39 = getelementptr i64, i64* %r1, i32 8 -store i64 %r37, i64* %r39 -%r40 = lshr i640 %r36, 64 -%r41 = trunc i640 %r40 to i64 -%r43 = getelementptr i64, i64* %r1, i32 9 -store i64 %r41, i64* %r43 +%r4 = call i576 @mulPv512x64(i64* %r2, i64 %r3) +%r6 = getelementptr i64, i64* %r1, i32 0 +%r7 = trunc i576 %r4 to i64 +store i64 %r7, i64* %r6 +%r8 = lshr i576 %r4, 64 +%r10 = getelementptr i64, i64* %r1, i32 1 +%r11 = trunc i576 %r8 to i64 +store i64 %r11, i64* %r10 +%r12 = lshr i576 %r8, 64 +%r14 = getelementptr i64, i64* %r1, i32 2 +%r15 = trunc i576 %r12 to i64 +store i64 %r15, i64* %r14 +%r16 = lshr i576 %r12, 64 +%r18 = getelementptr i64, i64* %r1, i32 3 +%r19 = trunc i576 %r16 to i64 +store i64 %r19, i64* %r18 +%r20 = lshr i576 %r16, 64 +%r22 = getelementptr i64, i64* %r1, i32 4 +%r23 = trunc i576 %r20 to i64 +store i64 %r23, i64* %r22 +%r24 = lshr i576 %r20, 64 +%r26 = getelementptr i64, i64* %r1, i32 5 +%r27 = trunc i576 %r24 to i64 +store i64 %r27, i64* %r26 +%r28 = lshr i576 %r24, 64 +%r30 = getelementptr i64, i64* %r1, i32 6 +%r31 = trunc i576 %r28 to i64 +store i64 %r31, i64* %r30 +%r32 = lshr i576 %r28, 64 +%r34 = getelementptr i64, i64* %r1, i32 7 +%r35 = trunc i576 %r32 to i64 +store i64 %r35, i64* %r34 +%r36 = lshr i576 %r32, 64 +%r38 = getelementptr i64, i64* %r1, i32 8 +%r39 = trunc i576 %r36 to i64 +store i64 %r39, i64* %r38 ret void } -define void @mcl_fpDbl_mulPre9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +define void @mcl_fpDbl_mulPre8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r4 = load i64, i64* %r3 -%r5 = call i640 @mulPv576x64(i64* %r2, i64 %r4) -%r6 = trunc i640 %r5 to i64 +%r5 = call i576 @mulPv512x64(i64* %r2, i64 %r4) +%r6 = trunc i576 %r5 to i64 store i64 %r6, i64* %r1 -%r7 = lshr i640 %r5, 64 +%r7 = lshr i576 %r5, 64 %r9 = getelementptr i64, i64* %r3, i32 1 %r10 = load i64, i64* %r9 -%r11 = call i640 @mulPv576x64(i64* %r2, i64 %r10) -%r12 = add i640 %r7, %r11 -%r13 = trunc i640 %r12 to i64 +%r11 = call i576 @mulPv512x64(i64* %r2, i64 %r10) +%r12 = add i576 %r7, %r11 +%r13 = trunc i576 %r12 to i64 %r15 = getelementptr i64, i64* %r1, i32 1 store i64 %r13, i64* %r15 -%r16 = lshr i640 %r12, 64 +%r16 = lshr i576 %r12, 64 %r18 = getelementptr i64, i64* %r3, i32 2 %r19 = load i64, i64* %r18 -%r20 = call i640 @mulPv576x64(i64* %r2, i64 %r19) -%r21 = add i640 %r16, %r20 -%r22 = trunc i640 %r21 to i64 +%r20 = call i576 @mulPv512x64(i64* %r2, i64 %r19) +%r21 = add i576 %r16, %r20 +%r22 = trunc i576 %r21 to i64 %r24 = getelementptr i64, i64* %r1, i32 2 store i64 %r22, i64* %r24 -%r25 = lshr i640 %r21, 64 +%r25 = lshr i576 %r21, 64 %r27 = getelementptr i64, i64* %r3, i32 3 %r28 = load i64, i64* %r27 -%r29 = call i640 @mulPv576x64(i64* %r2, i64 %r28) -%r30 = add i640 %r25, %r29 -%r31 = trunc i640 %r30 to i64 +%r29 = call i576 @mulPv512x64(i64* %r2, i64 %r28) +%r30 = add i576 %r25, %r29 +%r31 = trunc i576 %r30 to i64 %r33 = getelementptr i64, i64* %r1, i32 3 store i64 %r31, i64* %r33 -%r34 = lshr i640 %r30, 64 +%r34 = lshr i576 %r30, 64 %r36 = getelementptr i64, i64* %r3, i32 4 %r37 = load i64, i64* %r36 -%r38 = call i640 @mulPv576x64(i64* %r2, i64 %r37) -%r39 = add i640 %r34, %r38 -%r40 = trunc i640 %r39 to i64 +%r38 = call i576 @mulPv512x64(i64* %r2, i64 %r37) +%r39 = add i576 %r34, %r38 +%r40 = trunc i576 %r39 to i64 %r42 = getelementptr i64, i64* %r1, i32 4 store i64 %r40, i64* %r42 -%r43 = lshr i640 %r39, 64 +%r43 = lshr i576 %r39, 64 %r45 = getelementptr i64, i64* %r3, i32 5 %r46 = load i64, i64* %r45 -%r47 = call i640 @mulPv576x64(i64* %r2, i64 %r46) -%r48 = add i640 %r43, %r47 -%r49 = trunc i640 %r48 to i64 +%r47 = call i576 @mulPv512x64(i64* %r2, i64 %r46) +%r48 = add i576 %r43, %r47 +%r49 = trunc i576 %r48 to i64 %r51 = getelementptr i64, i64* %r1, i32 5 store i64 %r49, i64* %r51 -%r52 = lshr i640 %r48, 64 +%r52 = lshr i576 %r48, 64 %r54 = getelementptr i64, i64* %r3, i32 6 %r55 = load i64, i64* %r54 -%r56 = call i640 @mulPv576x64(i64* %r2, i64 %r55) -%r57 = add i640 %r52, %r56 -%r58 = trunc i640 %r57 to i64 +%r56 = call i576 @mulPv512x64(i64* %r2, i64 %r55) +%r57 = add i576 %r52, %r56 +%r58 = trunc i576 %r57 to i64 %r60 = getelementptr i64, i64* %r1, i32 6 store i64 %r58, i64* %r60 -%r61 = lshr i640 %r57, 64 +%r61 = lshr i576 %r57, 64 %r63 = getelementptr i64, i64* %r3, i32 7 %r64 = load i64, i64* %r63 -%r65 = call i640 @mulPv576x64(i64* %r2, i64 %r64) -%r66 = add i640 %r61, %r65 -%r67 = trunc i640 %r66 to i64 -%r69 = getelementptr i64, i64* %r1, i32 7 -store i64 %r67, i64* %r69 -%r70 = lshr i640 %r66, 64 -%r72 = getelementptr i64, i64* %r3, i32 8 -%r73 = load i64, i64* %r72 -%r74 = call i640 @mulPv576x64(i64* %r2, i64 %r73) -%r75 = add i640 %r70, %r74 -%r77 = getelementptr i64, i64* %r1, i32 8 -%r78 = trunc i640 %r75 to i64 -%r80 = getelementptr i64, i64* %r77, i32 0 -store i64 %r78, i64* %r80 -%r81 = lshr i640 %r75, 64 -%r82 = trunc i640 %r81 to i64 -%r84 = getelementptr i64, i64* %r77, i32 1 -store i64 %r82, i64* %r84 -%r85 = lshr i640 %r81, 64 -%r86 = trunc i640 %r85 to i64 -%r88 = getelementptr i64, i64* %r77, i32 2 -store i64 %r86, i64* %r88 -%r89 = lshr i640 %r85, 64 -%r90 = trunc i640 %r89 to i64 -%r92 = getelementptr i64, i64* %r77, i32 3 -store i64 %r90, i64* %r92 -%r93 = lshr i640 %r89, 64 -%r94 = trunc i640 %r93 to i64 -%r96 = getelementptr i64, i64* %r77, i32 4 -store i64 %r94, i64* %r96 -%r97 = lshr i640 %r93, 64 -%r98 = trunc i640 %r97 to i64 -%r100 = getelementptr i64, i64* %r77, i32 5 -store i64 %r98, i64* %r100 -%r101 = lshr i640 %r97, 64 -%r102 = trunc i640 %r101 to i64 -%r104 = getelementptr i64, i64* %r77, i32 6 -store i64 %r102, i64* %r104 -%r105 = lshr i640 %r101, 64 -%r106 = trunc i640 %r105 to i64 -%r108 = getelementptr i64, i64* %r77, i32 7 -store i64 %r106, i64* %r108 -%r109 = lshr i640 %r105, 64 -%r110 = trunc i640 %r109 to i64 -%r112 = getelementptr i64, i64* %r77, i32 8 -store i64 %r110, i64* %r112 -%r113 = lshr i640 %r109, 64 -%r114 = trunc i640 %r113 to i64 -%r116 = getelementptr i64, i64* %r77, i32 9 -store i64 %r114, i64* %r116 +%r65 = call i576 @mulPv512x64(i64* %r2, i64 %r64) +%r66 = add i576 %r61, %r65 +%r68 = getelementptr i64, i64* %r1, i32 7 +%r70 = getelementptr i64, i64* %r68, i32 0 +%r71 = trunc i576 %r66 to i64 +store i64 %r71, i64* %r70 +%r72 = lshr i576 %r66, 64 +%r74 = getelementptr i64, i64* %r68, i32 1 +%r75 = trunc i576 %r72 to i64 +store i64 %r75, i64* %r74 +%r76 = lshr i576 %r72, 64 +%r78 = getelementptr i64, i64* %r68, i32 2 +%r79 = trunc i576 %r76 to i64 +store i64 %r79, i64* %r78 +%r80 = lshr i576 %r76, 64 +%r82 = getelementptr i64, i64* %r68, i32 3 +%r83 = trunc i576 %r80 to i64 +store i64 %r83, i64* %r82 +%r84 = lshr i576 %r80, 64 +%r86 = getelementptr i64, i64* %r68, i32 4 +%r87 = trunc i576 %r84 to i64 +store i64 %r87, i64* %r86 +%r88 = lshr i576 %r84, 64 +%r90 = getelementptr i64, i64* %r68, i32 5 +%r91 = trunc i576 %r88 to i64 +store i64 %r91, i64* %r90 +%r92 = lshr i576 %r88, 64 +%r94 = getelementptr i64, i64* %r68, i32 6 +%r95 = trunc i576 %r92 to i64 +store i64 %r95, i64* %r94 +%r96 = lshr i576 %r92, 64 +%r98 = getelementptr i64, i64* %r68, i32 7 +%r99 = trunc i576 %r96 to i64 +store i64 %r99, i64* %r98 +%r100 = lshr i576 %r96, 64 +%r102 = getelementptr i64, i64* %r68, i32 8 +%r103 = trunc i576 %r100 to i64 +store i64 %r103, i64* %r102 ret void } -define void @mcl_fpDbl_sqrPre9L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fpDbl_sqrPre8L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 -%r4 = call i640 @mulPv576x64(i64* %r2, i64 %r3) -%r5 = trunc i640 %r4 to i64 +%r4 = call i576 @mulPv512x64(i64* %r2, i64 %r3) +%r5 = trunc i576 %r4 to i64 store i64 %r5, i64* %r1 -%r6 = lshr i640 %r4, 64 +%r6 = lshr i576 %r4, 64 %r8 = getelementptr i64, i64* %r2, i32 1 %r9 = load i64, i64* %r8 -%r10 = call i640 @mulPv576x64(i64* %r2, i64 %r9) -%r11 = add i640 %r6, %r10 -%r12 = trunc i640 %r11 to i64 +%r10 = call i576 @mulPv512x64(i64* %r2, i64 %r9) +%r11 = add i576 %r6, %r10 +%r12 = trunc i576 %r11 to i64 %r14 = getelementptr i64, i64* %r1, i32 1 store i64 %r12, i64* %r14 -%r15 = lshr i640 %r11, 64 +%r15 = lshr i576 %r11, 64 %r17 = getelementptr i64, i64* %r2, i32 2 %r18 = load i64, i64* %r17 -%r19 = call i640 @mulPv576x64(i64* %r2, i64 %r18) -%r20 = add i640 %r15, %r19 -%r21 = trunc i640 %r20 to i64 +%r19 = call i576 @mulPv512x64(i64* %r2, i64 %r18) +%r20 = add i576 %r15, %r19 +%r21 = trunc i576 %r20 to i64 %r23 = getelementptr i64, i64* %r1, i32 2 store i64 %r21, i64* %r23 -%r24 = lshr i640 %r20, 64 +%r24 = lshr i576 %r20, 64 %r26 = getelementptr i64, i64* %r2, i32 3 %r27 = load i64, i64* %r26 -%r28 = call i640 @mulPv576x64(i64* %r2, i64 %r27) -%r29 = add i640 %r24, %r28 -%r30 = trunc i640 %r29 to i64 +%r28 = call i576 @mulPv512x64(i64* %r2, i64 %r27) +%r29 = add i576 %r24, %r28 +%r30 = trunc i576 %r29 to i64 %r32 = getelementptr i64, i64* %r1, i32 3 store i64 %r30, i64* %r32 -%r33 = lshr i640 %r29, 64 +%r33 = lshr i576 %r29, 64 %r35 = getelementptr i64, i64* %r2, i32 4 %r36 = load i64, i64* %r35 -%r37 = call i640 @mulPv576x64(i64* %r2, i64 %r36) -%r38 = add i640 %r33, %r37 -%r39 = trunc i640 %r38 to i64 +%r37 = call i576 @mulPv512x64(i64* %r2, i64 %r36) +%r38 = add i576 %r33, %r37 +%r39 = trunc i576 %r38 to i64 %r41 = getelementptr i64, i64* %r1, i32 4 store i64 %r39, i64* %r41 -%r42 = lshr i640 %r38, 64 +%r42 = lshr i576 %r38, 64 %r44 = getelementptr i64, i64* %r2, i32 5 %r45 = load i64, i64* %r44 -%r46 = call i640 @mulPv576x64(i64* %r2, i64 %r45) -%r47 = add i640 %r42, %r46 -%r48 = trunc i640 %r47 to i64 +%r46 = call i576 @mulPv512x64(i64* %r2, i64 %r45) +%r47 = add i576 %r42, %r46 +%r48 = trunc i576 %r47 to i64 %r50 = getelementptr i64, i64* %r1, i32 5 store i64 %r48, i64* %r50 -%r51 = lshr i640 %r47, 64 +%r51 = lshr i576 %r47, 64 %r53 = getelementptr i64, i64* %r2, i32 6 %r54 = load i64, i64* %r53 -%r55 = call i640 @mulPv576x64(i64* %r2, i64 %r54) -%r56 = add i640 %r51, %r55 -%r57 = trunc i640 %r56 to i64 +%r55 = call i576 @mulPv512x64(i64* %r2, i64 %r54) +%r56 = add i576 %r51, %r55 +%r57 = trunc i576 %r56 to i64 %r59 = getelementptr i64, i64* %r1, i32 6 store i64 %r57, i64* %r59 -%r60 = lshr i640 %r56, 64 +%r60 = lshr i576 %r56, 64 %r62 = getelementptr i64, i64* %r2, i32 7 %r63 = load i64, i64* %r62 -%r64 = call i640 @mulPv576x64(i64* %r2, i64 %r63) -%r65 = add i640 %r60, %r64 -%r66 = trunc i640 %r65 to i64 -%r68 = getelementptr i64, i64* %r1, i32 7 -store i64 %r66, i64* %r68 -%r69 = lshr i640 %r65, 64 -%r71 = getelementptr i64, i64* %r2, i32 8 -%r72 = load i64, i64* %r71 -%r73 = call i640 @mulPv576x64(i64* %r2, i64 %r72) -%r74 = add i640 %r69, %r73 -%r76 = getelementptr i64, i64* %r1, i32 8 -%r77 = trunc i640 %r74 to i64 -%r79 = getelementptr i64, i64* %r76, i32 0 -store i64 %r77, i64* %r79 -%r80 = lshr i640 %r74, 64 -%r81 = trunc i640 %r80 to i64 -%r83 = getelementptr i64, i64* %r76, i32 1 -store i64 %r81, i64* %r83 -%r84 = lshr i640 %r80, 64 -%r85 = trunc i640 %r84 to i64 -%r87 = getelementptr i64, i64* %r76, i32 2 -store i64 %r85, i64* %r87 -%r88 = lshr i640 %r84, 64 -%r89 = trunc i640 %r88 to i64 -%r91 = getelementptr i64, i64* %r76, i32 3 -store i64 %r89, i64* %r91 -%r92 = lshr i640 %r88, 64 -%r93 = trunc i640 %r92 to i64 -%r95 = getelementptr i64, i64* %r76, i32 4 -store i64 %r93, i64* %r95 -%r96 = lshr i640 %r92, 64 -%r97 = trunc i640 %r96 to i64 -%r99 = getelementptr i64, i64* %r76, i32 5 -store i64 %r97, i64* %r99 -%r100 = lshr i640 %r96, 64 -%r101 = trunc i640 %r100 to i64 -%r103 = getelementptr i64, i64* %r76, i32 6 -store i64 %r101, i64* %r103 -%r104 = lshr i640 %r100, 64 -%r105 = trunc i640 %r104 to i64 -%r107 = getelementptr i64, i64* %r76, i32 7 -store i64 %r105, i64* %r107 -%r108 = lshr i640 %r104, 64 -%r109 = trunc i640 %r108 to i64 -%r111 = getelementptr i64, i64* %r76, i32 8 -store i64 %r109, i64* %r111 -%r112 = lshr i640 %r108, 64 -%r113 = trunc i640 %r112 to i64 -%r115 = getelementptr i64, i64* %r76, i32 9 -store i64 %r113, i64* %r115 +%r64 = call i576 @mulPv512x64(i64* %r2, i64 %r63) +%r65 = add i576 %r60, %r64 +%r67 = getelementptr i64, i64* %r1, i32 7 +%r69 = getelementptr i64, i64* %r67, i32 0 +%r70 = trunc i576 %r65 to i64 +store i64 %r70, i64* %r69 +%r71 = lshr i576 %r65, 64 +%r73 = getelementptr i64, i64* %r67, i32 1 +%r74 = trunc i576 %r71 to i64 +store i64 %r74, i64* %r73 +%r75 = lshr i576 %r71, 64 +%r77 = getelementptr i64, i64* %r67, i32 2 +%r78 = trunc i576 %r75 to i64 +store i64 %r78, i64* %r77 +%r79 = lshr i576 %r75, 64 +%r81 = getelementptr i64, i64* %r67, i32 3 +%r82 = trunc i576 %r79 to i64 +store i64 %r82, i64* %r81 +%r83 = lshr i576 %r79, 64 +%r85 = getelementptr i64, i64* %r67, i32 4 +%r86 = trunc i576 %r83 to i64 +store i64 %r86, i64* %r85 +%r87 = lshr i576 %r83, 64 +%r89 = getelementptr i64, i64* %r67, i32 5 +%r90 = trunc i576 %r87 to i64 +store i64 %r90, i64* %r89 +%r91 = lshr i576 %r87, 64 +%r93 = getelementptr i64, i64* %r67, i32 6 +%r94 = trunc i576 %r91 to i64 +store i64 %r94, i64* %r93 +%r95 = lshr i576 %r91, 64 +%r97 = getelementptr i64, i64* %r67, i32 7 +%r98 = trunc i576 %r95 to i64 +store i64 %r98, i64* %r97 +%r99 = lshr i576 %r95, 64 +%r101 = getelementptr i64, i64* %r67, i32 8 +%r102 = trunc i576 %r99 to i64 +store i64 %r102, i64* %r101 ret void } -define void @mcl_fp_mont9L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_mont8L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r9 = getelementptr i64, i64* %r3, i32 0 %r10 = load i64, i64* %r9 -%r11 = call i640 @mulPv576x64(i64* %r2, i64 %r10) -%r12 = zext i640 %r11 to i704 -%r13 = trunc i640 %r11 to i64 +%r11 = call i576 @mulPv512x64(i64* %r2, i64 %r10) +%r12 = zext i576 %r11 to i640 +%r13 = trunc i576 %r11 to i64 %r14 = mul i64 %r13, %r7 -%r15 = call i640 @mulPv576x64(i64* %r4, i64 %r14) -%r16 = zext i640 %r15 to i704 -%r17 = add i704 %r12, %r16 -%r18 = lshr i704 %r17, 64 +%r15 = call i576 @mulPv512x64(i64* %r4, i64 %r14) +%r16 = zext i576 %r15 to i640 +%r17 = add i640 %r12, %r16 +%r18 = lshr i640 %r17, 64 %r20 = getelementptr i64, i64* %r3, i32 1 %r21 = load i64, i64* %r20 -%r22 = call i640 @mulPv576x64(i64* %r2, i64 %r21) -%r23 = zext i640 %r22 to i704 -%r24 = add i704 %r18, %r23 -%r25 = trunc i704 %r24 to i64 +%r22 = call i576 @mulPv512x64(i64* %r2, i64 %r21) +%r23 = zext i576 %r22 to i640 +%r24 = add i640 %r18, %r23 +%r25 = trunc i640 %r24 to i64 %r26 = mul i64 %r25, %r7 -%r27 = call i640 @mulPv576x64(i64* %r4, i64 %r26) -%r28 = zext i640 %r27 to i704 -%r29 = add i704 %r24, %r28 -%r30 = lshr i704 %r29, 64 +%r27 = call i576 @mulPv512x64(i64* %r4, i64 %r26) +%r28 = zext i576 %r27 to i640 +%r29 = add i640 %r24, %r28 +%r30 = lshr i640 %r29, 64 %r32 = getelementptr i64, i64* %r3, i32 2 %r33 = load i64, i64* %r32 -%r34 = call i640 @mulPv576x64(i64* %r2, i64 %r33) -%r35 = zext i640 %r34 to i704 -%r36 = add i704 %r30, %r35 -%r37 = trunc i704 %r36 to i64 +%r34 = call i576 @mulPv512x64(i64* %r2, i64 %r33) +%r35 = zext i576 %r34 to i640 +%r36 = add i640 %r30, %r35 +%r37 = trunc i640 %r36 to i64 %r38 = mul i64 %r37, %r7 -%r39 = call i640 @mulPv576x64(i64* %r4, i64 %r38) -%r40 = zext i640 %r39 to i704 -%r41 = add i704 %r36, %r40 -%r42 = lshr i704 %r41, 64 +%r39 = call i576 @mulPv512x64(i64* %r4, i64 %r38) +%r40 = zext i576 %r39 to i640 +%r41 = add i640 %r36, %r40 +%r42 = lshr i640 %r41, 64 %r44 = getelementptr i64, i64* %r3, i32 3 %r45 = load i64, i64* %r44 -%r46 = call i640 @mulPv576x64(i64* %r2, i64 %r45) -%r47 = zext i640 %r46 to i704 -%r48 = add i704 %r42, %r47 -%r49 = trunc i704 %r48 to i64 +%r46 = call i576 @mulPv512x64(i64* %r2, i64 %r45) +%r47 = zext i576 %r46 to i640 +%r48 = add i640 %r42, %r47 +%r49 = trunc i640 %r48 to i64 %r50 = mul i64 %r49, %r7 -%r51 = call i640 @mulPv576x64(i64* %r4, i64 %r50) -%r52 = zext i640 %r51 to i704 -%r53 = add i704 %r48, %r52 -%r54 = lshr i704 %r53, 64 +%r51 = call i576 @mulPv512x64(i64* %r4, i64 %r50) +%r52 = zext i576 %r51 to i640 +%r53 = add i640 %r48, %r52 +%r54 = lshr i640 %r53, 64 %r56 = getelementptr i64, i64* %r3, i32 4 %r57 = load i64, i64* %r56 -%r58 = call i640 @mulPv576x64(i64* %r2, i64 %r57) -%r59 = zext i640 %r58 to i704 -%r60 = add i704 %r54, %r59 -%r61 = trunc i704 %r60 to i64 +%r58 = call i576 @mulPv512x64(i64* %r2, i64 %r57) +%r59 = zext i576 %r58 to i640 +%r60 = add i640 %r54, %r59 +%r61 = trunc i640 %r60 to i64 %r62 = mul i64 %r61, %r7 -%r63 = call i640 @mulPv576x64(i64* %r4, i64 %r62) -%r64 = zext i640 %r63 to i704 -%r65 = add i704 %r60, %r64 -%r66 = lshr i704 %r65, 64 +%r63 = call i576 @mulPv512x64(i64* %r4, i64 %r62) +%r64 = zext i576 %r63 to i640 +%r65 = add i640 %r60, %r64 +%r66 = lshr i640 %r65, 64 %r68 = getelementptr i64, i64* %r3, i32 5 %r69 = load i64, i64* %r68 -%r70 = call i640 @mulPv576x64(i64* %r2, i64 %r69) -%r71 = zext i640 %r70 to i704 -%r72 = add i704 %r66, %r71 -%r73 = trunc i704 %r72 to i64 +%r70 = call i576 @mulPv512x64(i64* %r2, i64 %r69) +%r71 = zext i576 %r70 to i640 +%r72 = add i640 %r66, %r71 +%r73 = trunc i640 %r72 to i64 %r74 = mul i64 %r73, %r7 -%r75 = call i640 @mulPv576x64(i64* %r4, i64 %r74) -%r76 = zext i640 %r75 to i704 -%r77 = add i704 %r72, %r76 -%r78 = lshr i704 %r77, 64 +%r75 = call i576 @mulPv512x64(i64* %r4, i64 %r74) +%r76 = zext i576 %r75 to i640 +%r77 = add i640 %r72, %r76 +%r78 = lshr i640 %r77, 64 %r80 = getelementptr i64, i64* %r3, i32 6 %r81 = load i64, i64* %r80 -%r82 = call i640 @mulPv576x64(i64* %r2, i64 %r81) -%r83 = zext i640 %r82 to i704 -%r84 = add i704 %r78, %r83 -%r85 = trunc i704 %r84 to i64 +%r82 = call i576 @mulPv512x64(i64* %r2, i64 %r81) +%r83 = zext i576 %r82 to i640 +%r84 = add i640 %r78, %r83 +%r85 = trunc i640 %r84 to i64 %r86 = mul i64 %r85, %r7 -%r87 = call i640 @mulPv576x64(i64* %r4, i64 %r86) -%r88 = zext i640 %r87 to i704 -%r89 = add i704 %r84, %r88 -%r90 = lshr i704 %r89, 64 +%r87 = call i576 @mulPv512x64(i64* %r4, i64 %r86) +%r88 = zext i576 %r87 to i640 +%r89 = add i640 %r84, %r88 +%r90 = lshr i640 %r89, 64 %r92 = getelementptr i64, i64* %r3, i32 7 %r93 = load i64, i64* %r92 -%r94 = call i640 @mulPv576x64(i64* %r2, i64 %r93) -%r95 = zext i640 %r94 to i704 -%r96 = add i704 %r90, %r95 -%r97 = trunc i704 %r96 to i64 +%r94 = call i576 @mulPv512x64(i64* %r2, i64 %r93) +%r95 = zext i576 %r94 to i640 +%r96 = add i640 %r90, %r95 +%r97 = trunc i640 %r96 to i64 %r98 = mul i64 %r97, %r7 -%r99 = call i640 @mulPv576x64(i64* %r4, i64 %r98) -%r100 = zext i640 %r99 to i704 -%r101 = add i704 %r96, %r100 -%r102 = lshr i704 %r101, 64 -%r104 = getelementptr i64, i64* %r3, i32 8 -%r105 = load i64, i64* %r104 -%r106 = call i640 @mulPv576x64(i64* %r2, i64 %r105) -%r107 = zext i640 %r106 to i704 -%r108 = add i704 %r102, %r107 -%r109 = trunc i704 %r108 to i64 -%r110 = mul i64 %r109, %r7 -%r111 = call i640 @mulPv576x64(i64* %r4, i64 %r110) -%r112 = zext i640 %r111 to i704 -%r113 = add i704 %r108, %r112 -%r114 = lshr i704 %r113, 64 -%r115 = trunc i704 %r114 to i640 -%r116 = load i64, i64* %r4 -%r117 = zext i64 %r116 to i128 -%r119 = getelementptr i64, i64* %r4, i32 1 -%r120 = load i64, i64* %r119 -%r121 = zext i64 %r120 to i128 -%r122 = shl i128 %r121, 64 -%r123 = or i128 %r117, %r122 -%r124 = zext i128 %r123 to i192 -%r126 = getelementptr i64, i64* %r4, i32 2 -%r127 = load i64, i64* %r126 -%r128 = zext i64 %r127 to i192 -%r129 = shl i192 %r128, 128 -%r130 = or i192 %r124, %r129 -%r131 = zext i192 %r130 to i256 -%r133 = getelementptr i64, i64* %r4, i32 3 -%r134 = load i64, i64* %r133 -%r135 = zext i64 %r134 to i256 -%r136 = shl i256 %r135, 192 -%r137 = or i256 %r131, %r136 -%r138 = zext i256 %r137 to i320 -%r140 = getelementptr i64, i64* %r4, i32 4 -%r141 = load i64, i64* %r140 -%r142 = zext i64 %r141 to i320 -%r143 = shl i320 %r142, 256 -%r144 = or i320 %r138, %r143 -%r145 = zext i320 %r144 to i384 -%r147 = getelementptr i64, i64* %r4, i32 5 -%r148 = load i64, i64* %r147 -%r149 = zext i64 %r148 to i384 -%r150 = shl i384 %r149, 320 -%r151 = or i384 %r145, %r150 -%r152 = zext i384 %r151 to i448 -%r154 = getelementptr i64, i64* %r4, i32 6 -%r155 = load i64, i64* %r154 -%r156 = zext i64 %r155 to i448 -%r157 = shl i448 %r156, 384 -%r158 = or i448 %r152, %r157 -%r159 = zext i448 %r158 to i512 -%r161 = getelementptr i64, i64* %r4, i32 7 -%r162 = load i64, i64* %r161 -%r163 = zext i64 %r162 to i512 -%r164 = shl i512 %r163, 448 -%r165 = or i512 %r159, %r164 -%r166 = zext i512 %r165 to i576 -%r168 = getelementptr i64, i64* %r4, i32 8 -%r169 = load i64, i64* %r168 -%r170 = zext i64 %r169 to i576 -%r171 = shl i576 %r170, 512 -%r172 = or i576 %r166, %r171 -%r173 = zext i576 %r172 to i640 -%r174 = sub i640 %r115, %r173 -%r175 = lshr i640 %r174, 576 -%r176 = trunc i640 %r175 to i1 -%r177 = select i1 %r176, i640 %r115, i640 %r174 -%r178 = trunc i640 %r177 to i576 -%r179 = trunc i576 %r178 to i64 -%r181 = getelementptr i64, i64* %r1, i32 0 -store i64 %r179, i64* %r181 -%r182 = lshr i576 %r178, 64 -%r183 = trunc i576 %r182 to i64 -%r185 = getelementptr i64, i64* %r1, i32 1 -store i64 %r183, i64* %r185 -%r186 = lshr i576 %r182, 64 -%r187 = trunc i576 %r186 to i64 -%r189 = getelementptr i64, i64* %r1, i32 2 -store i64 %r187, i64* %r189 -%r190 = lshr i576 %r186, 64 -%r191 = trunc i576 %r190 to i64 -%r193 = getelementptr i64, i64* %r1, i32 3 -store i64 %r191, i64* %r193 -%r194 = lshr i576 %r190, 64 -%r195 = trunc i576 %r194 to i64 -%r197 = getelementptr i64, i64* %r1, i32 4 -store i64 %r195, i64* %r197 -%r198 = lshr i576 %r194, 64 -%r199 = trunc i576 %r198 to i64 -%r201 = getelementptr i64, i64* %r1, i32 5 -store i64 %r199, i64* %r201 -%r202 = lshr i576 %r198, 64 -%r203 = trunc i576 %r202 to i64 -%r205 = getelementptr i64, i64* %r1, i32 6 -store i64 %r203, i64* %r205 -%r206 = lshr i576 %r202, 64 -%r207 = trunc i576 %r206 to i64 -%r209 = getelementptr i64, i64* %r1, i32 7 -store i64 %r207, i64* %r209 -%r210 = lshr i576 %r206, 64 -%r211 = trunc i576 %r210 to i64 -%r213 = getelementptr i64, i64* %r1, i32 8 -store i64 %r211, i64* %r213 +%r99 = call i576 @mulPv512x64(i64* %r4, i64 %r98) +%r100 = zext i576 %r99 to i640 +%r101 = add i640 %r96, %r100 +%r102 = lshr i640 %r101, 64 +%r103 = trunc i640 %r102 to i576 +%r104 = load i64, i64* %r4 +%r105 = zext i64 %r104 to i128 +%r107 = getelementptr i64, i64* %r4, i32 1 +%r108 = load i64, i64* %r107 +%r109 = zext i64 %r108 to i128 +%r110 = shl i128 %r109, 64 +%r111 = or i128 %r105, %r110 +%r112 = zext i128 %r111 to i192 +%r114 = getelementptr i64, i64* %r4, i32 2 +%r115 = load i64, i64* %r114 +%r116 = zext i64 %r115 to i192 +%r117 = shl i192 %r116, 128 +%r118 = or i192 %r112, %r117 +%r119 = zext i192 %r118 to i256 +%r121 = getelementptr i64, i64* %r4, i32 3 +%r122 = load i64, i64* %r121 +%r123 = zext i64 %r122 to i256 +%r124 = shl i256 %r123, 192 +%r125 = or i256 %r119, %r124 +%r126 = zext i256 %r125 to i320 +%r128 = getelementptr i64, i64* %r4, i32 4 +%r129 = load i64, i64* %r128 +%r130 = zext i64 %r129 to i320 +%r131 = shl i320 %r130, 256 +%r132 = or i320 %r126, %r131 +%r133 = zext i320 %r132 to i384 +%r135 = getelementptr i64, i64* %r4, i32 5 +%r136 = load i64, i64* %r135 +%r137 = zext i64 %r136 to i384 +%r138 = shl i384 %r137, 320 +%r139 = or i384 %r133, %r138 +%r140 = zext i384 %r139 to i448 +%r142 = getelementptr i64, i64* %r4, i32 6 +%r143 = load i64, i64* %r142 +%r144 = zext i64 %r143 to i448 +%r145 = shl i448 %r144, 384 +%r146 = or i448 %r140, %r145 +%r147 = zext i448 %r146 to i512 +%r149 = getelementptr i64, i64* %r4, i32 7 +%r150 = load i64, i64* %r149 +%r151 = zext i64 %r150 to i512 +%r152 = shl i512 %r151, 448 +%r153 = or i512 %r147, %r152 +%r154 = zext i512 %r153 to i576 +%r155 = sub i576 %r103, %r154 +%r156 = lshr i576 %r155, 512 +%r157 = trunc i576 %r156 to i1 +%r158 = select i1 %r157, i576 %r103, i576 %r155 +%r159 = trunc i576 %r158 to i512 +%r161 = getelementptr i64, i64* %r1, i32 0 +%r162 = trunc i512 %r159 to i64 +store i64 %r162, i64* %r161 +%r163 = lshr i512 %r159, 64 +%r165 = getelementptr i64, i64* %r1, i32 1 +%r166 = trunc i512 %r163 to i64 +store i64 %r166, i64* %r165 +%r167 = lshr i512 %r163, 64 +%r169 = getelementptr i64, i64* %r1, i32 2 +%r170 = trunc i512 %r167 to i64 +store i64 %r170, i64* %r169 +%r171 = lshr i512 %r167, 64 +%r173 = getelementptr i64, i64* %r1, i32 3 +%r174 = trunc i512 %r171 to i64 +store i64 %r174, i64* %r173 +%r175 = lshr i512 %r171, 64 +%r177 = getelementptr i64, i64* %r1, i32 4 +%r178 = trunc i512 %r175 to i64 +store i64 %r178, i64* %r177 +%r179 = lshr i512 %r175, 64 +%r181 = getelementptr i64, i64* %r1, i32 5 +%r182 = trunc i512 %r179 to i64 +store i64 %r182, i64* %r181 +%r183 = lshr i512 %r179, 64 +%r185 = getelementptr i64, i64* %r1, i32 6 +%r186 = trunc i512 %r183 to i64 +store i64 %r186, i64* %r185 +%r187 = lshr i512 %r183, 64 +%r189 = getelementptr i64, i64* %r1, i32 7 +%r190 = trunc i512 %r187 to i64 +store i64 %r190, i64* %r189 ret void } -define void @mcl_fp_montNF9L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) +define void @mcl_fp_montNF8L(i64* %r1, i64* %r2, i64* %r3, i64* %r4) { %r6 = getelementptr i64, i64* %r4, i32 -1 %r7 = load i64, i64* %r6 %r8 = load i64, i64* %r3 -%r9 = call i640 @mulPv576x64(i64* %r2, i64 %r8) -%r10 = trunc i640 %r9 to i64 +%r9 = call i576 @mulPv512x64(i64* %r2, i64 %r8) +%r10 = trunc i576 %r9 to i64 %r11 = mul i64 %r10, %r7 -%r12 = call i640 @mulPv576x64(i64* %r4, i64 %r11) -%r13 = add i640 %r9, %r12 -%r14 = lshr i640 %r13, 64 +%r12 = call i576 @mulPv512x64(i64* %r4, i64 %r11) +%r13 = add i576 %r9, %r12 +%r14 = lshr i576 %r13, 64 %r16 = getelementptr i64, i64* %r3, i32 1 %r17 = load i64, i64* %r16 -%r18 = call i640 @mulPv576x64(i64* %r2, i64 %r17) -%r19 = add i640 %r14, %r18 -%r20 = trunc i640 %r19 to i64 +%r18 = call i576 @mulPv512x64(i64* %r2, i64 %r17) +%r19 = add i576 %r14, %r18 +%r20 = trunc i576 %r19 to i64 %r21 = mul i64 %r20, %r7 -%r22 = call i640 @mulPv576x64(i64* %r4, i64 %r21) -%r23 = add i640 %r19, %r22 -%r24 = lshr i640 %r23, 64 +%r22 = call i576 @mulPv512x64(i64* %r4, i64 %r21) +%r23 = add i576 %r19, %r22 +%r24 = lshr i576 %r23, 64 %r26 = getelementptr i64, i64* %r3, i32 2 %r27 = load i64, i64* %r26 -%r28 = call i640 @mulPv576x64(i64* %r2, i64 %r27) -%r29 = add i640 %r24, %r28 -%r30 = trunc i640 %r29 to i64 +%r28 = call i576 @mulPv512x64(i64* %r2, i64 %r27) +%r29 = add i576 %r24, %r28 +%r30 = trunc i576 %r29 to i64 %r31 = mul i64 %r30, %r7 -%r32 = call i640 @mulPv576x64(i64* %r4, i64 %r31) -%r33 = add i640 %r29, %r32 -%r34 = lshr i640 %r33, 64 +%r32 = call i576 @mulPv512x64(i64* %r4, i64 %r31) +%r33 = add i576 %r29, %r32 +%r34 = lshr i576 %r33, 64 %r36 = getelementptr i64, i64* %r3, i32 3 %r37 = load i64, i64* %r36 -%r38 = call i640 @mulPv576x64(i64* %r2, i64 %r37) -%r39 = add i640 %r34, %r38 -%r40 = trunc i640 %r39 to i64 +%r38 = call i576 @mulPv512x64(i64* %r2, i64 %r37) +%r39 = add i576 %r34, %r38 +%r40 = trunc i576 %r39 to i64 %r41 = mul i64 %r40, %r7 -%r42 = call i640 @mulPv576x64(i64* %r4, i64 %r41) -%r43 = add i640 %r39, %r42 -%r44 = lshr i640 %r43, 64 +%r42 = call i576 @mulPv512x64(i64* %r4, i64 %r41) +%r43 = add i576 %r39, %r42 +%r44 = lshr i576 %r43, 64 %r46 = getelementptr i64, i64* %r3, i32 4 %r47 = load i64, i64* %r46 -%r48 = call i640 @mulPv576x64(i64* %r2, i64 %r47) -%r49 = add i640 %r44, %r48 -%r50 = trunc i640 %r49 to i64 +%r48 = call i576 @mulPv512x64(i64* %r2, i64 %r47) +%r49 = add i576 %r44, %r48 +%r50 = trunc i576 %r49 to i64 %r51 = mul i64 %r50, %r7 -%r52 = call i640 @mulPv576x64(i64* %r4, i64 %r51) -%r53 = add i640 %r49, %r52 -%r54 = lshr i640 %r53, 64 +%r52 = call i576 @mulPv512x64(i64* %r4, i64 %r51) +%r53 = add i576 %r49, %r52 +%r54 = lshr i576 %r53, 64 %r56 = getelementptr i64, i64* %r3, i32 5 %r57 = load i64, i64* %r56 -%r58 = call i640 @mulPv576x64(i64* %r2, i64 %r57) -%r59 = add i640 %r54, %r58 -%r60 = trunc i640 %r59 to i64 +%r58 = call i576 @mulPv512x64(i64* %r2, i64 %r57) +%r59 = add i576 %r54, %r58 +%r60 = trunc i576 %r59 to i64 %r61 = mul i64 %r60, %r7 -%r62 = call i640 @mulPv576x64(i64* %r4, i64 %r61) -%r63 = add i640 %r59, %r62 -%r64 = lshr i640 %r63, 64 +%r62 = call i576 @mulPv512x64(i64* %r4, i64 %r61) +%r63 = add i576 %r59, %r62 +%r64 = lshr i576 %r63, 64 %r66 = getelementptr i64, i64* %r3, i32 6 %r67 = load i64, i64* %r66 -%r68 = call i640 @mulPv576x64(i64* %r2, i64 %r67) -%r69 = add i640 %r64, %r68 -%r70 = trunc i640 %r69 to i64 +%r68 = call i576 @mulPv512x64(i64* %r2, i64 %r67) +%r69 = add i576 %r64, %r68 +%r70 = trunc i576 %r69 to i64 %r71 = mul i64 %r70, %r7 -%r72 = call i640 @mulPv576x64(i64* %r4, i64 %r71) -%r73 = add i640 %r69, %r72 -%r74 = lshr i640 %r73, 64 +%r72 = call i576 @mulPv512x64(i64* %r4, i64 %r71) +%r73 = add i576 %r69, %r72 +%r74 = lshr i576 %r73, 64 %r76 = getelementptr i64, i64* %r3, i32 7 %r77 = load i64, i64* %r76 -%r78 = call i640 @mulPv576x64(i64* %r2, i64 %r77) -%r79 = add i640 %r74, %r78 -%r80 = trunc i640 %r79 to i64 +%r78 = call i576 @mulPv512x64(i64* %r2, i64 %r77) +%r79 = add i576 %r74, %r78 +%r80 = trunc i576 %r79 to i64 %r81 = mul i64 %r80, %r7 -%r82 = call i640 @mulPv576x64(i64* %r4, i64 %r81) -%r83 = add i640 %r79, %r82 -%r84 = lshr i640 %r83, 64 -%r86 = getelementptr i64, i64* %r3, i32 8 -%r87 = load i64, i64* %r86 -%r88 = call i640 @mulPv576x64(i64* %r2, i64 %r87) -%r89 = add i640 %r84, %r88 -%r90 = trunc i640 %r89 to i64 -%r91 = mul i64 %r90, %r7 -%r92 = call i640 @mulPv576x64(i64* %r4, i64 %r91) -%r93 = add i640 %r89, %r92 -%r94 = lshr i640 %r93, 64 -%r95 = trunc i640 %r94 to i576 -%r96 = load i64, i64* %r4 -%r97 = zext i64 %r96 to i128 -%r99 = getelementptr i64, i64* %r4, i32 1 -%r100 = load i64, i64* %r99 -%r101 = zext i64 %r100 to i128 -%r102 = shl i128 %r101, 64 -%r103 = or i128 %r97, %r102 -%r104 = zext i128 %r103 to i192 -%r106 = getelementptr i64, i64* %r4, i32 2 -%r107 = load i64, i64* %r106 -%r108 = zext i64 %r107 to i192 -%r109 = shl i192 %r108, 128 -%r110 = or i192 %r104, %r109 -%r111 = zext i192 %r110 to i256 -%r113 = getelementptr i64, i64* %r4, i32 3 -%r114 = load i64, i64* %r113 -%r115 = zext i64 %r114 to i256 -%r116 = shl i256 %r115, 192 -%r117 = or i256 %r111, %r116 -%r118 = zext i256 %r117 to i320 -%r120 = getelementptr i64, i64* %r4, i32 4 -%r121 = load i64, i64* %r120 -%r122 = zext i64 %r121 to i320 -%r123 = shl i320 %r122, 256 -%r124 = or i320 %r118, %r123 -%r125 = zext i320 %r124 to i384 -%r127 = getelementptr i64, i64* %r4, i32 5 -%r128 = load i64, i64* %r127 -%r129 = zext i64 %r128 to i384 -%r130 = shl i384 %r129, 320 -%r131 = or i384 %r125, %r130 -%r132 = zext i384 %r131 to i448 -%r134 = getelementptr i64, i64* %r4, i32 6 -%r135 = load i64, i64* %r134 -%r136 = zext i64 %r135 to i448 -%r137 = shl i448 %r136, 384 -%r138 = or i448 %r132, %r137 -%r139 = zext i448 %r138 to i512 -%r141 = getelementptr i64, i64* %r4, i32 7 -%r142 = load i64, i64* %r141 -%r143 = zext i64 %r142 to i512 -%r144 = shl i512 %r143, 448 -%r145 = or i512 %r139, %r144 -%r146 = zext i512 %r145 to i576 -%r148 = getelementptr i64, i64* %r4, i32 8 -%r149 = load i64, i64* %r148 -%r150 = zext i64 %r149 to i576 -%r151 = shl i576 %r150, 512 -%r152 = or i576 %r146, %r151 -%r153 = sub i576 %r95, %r152 -%r154 = lshr i576 %r153, 575 -%r155 = trunc i576 %r154 to i1 -%r156 = select i1 %r155, i576 %r95, i576 %r153 -%r157 = trunc i576 %r156 to i64 -%r159 = getelementptr i64, i64* %r1, i32 0 -store i64 %r157, i64* %r159 -%r160 = lshr i576 %r156, 64 -%r161 = trunc i576 %r160 to i64 -%r163 = getelementptr i64, i64* %r1, i32 1 -store i64 %r161, i64* %r163 -%r164 = lshr i576 %r160, 64 +%r82 = call i576 @mulPv512x64(i64* %r4, i64 %r81) +%r83 = add i576 %r79, %r82 +%r84 = lshr i576 %r83, 64 +%r85 = trunc i576 %r84 to i512 +%r86 = load i64, i64* %r4 +%r87 = zext i64 %r86 to i128 +%r89 = getelementptr i64, i64* %r4, i32 1 +%r90 = load i64, i64* %r89 +%r91 = zext i64 %r90 to i128 +%r92 = shl i128 %r91, 64 +%r93 = or i128 %r87, %r92 +%r94 = zext i128 %r93 to i192 +%r96 = getelementptr i64, i64* %r4, i32 2 +%r97 = load i64, i64* %r96 +%r98 = zext i64 %r97 to i192 +%r99 = shl i192 %r98, 128 +%r100 = or i192 %r94, %r99 +%r101 = zext i192 %r100 to i256 +%r103 = getelementptr i64, i64* %r4, i32 3 +%r104 = load i64, i64* %r103 +%r105 = zext i64 %r104 to i256 +%r106 = shl i256 %r105, 192 +%r107 = or i256 %r101, %r106 +%r108 = zext i256 %r107 to i320 +%r110 = getelementptr i64, i64* %r4, i32 4 +%r111 = load i64, i64* %r110 +%r112 = zext i64 %r111 to i320 +%r113 = shl i320 %r112, 256 +%r114 = or i320 %r108, %r113 +%r115 = zext i320 %r114 to i384 +%r117 = getelementptr i64, i64* %r4, i32 5 +%r118 = load i64, i64* %r117 +%r119 = zext i64 %r118 to i384 +%r120 = shl i384 %r119, 320 +%r121 = or i384 %r115, %r120 +%r122 = zext i384 %r121 to i448 +%r124 = getelementptr i64, i64* %r4, i32 6 +%r125 = load i64, i64* %r124 +%r126 = zext i64 %r125 to i448 +%r127 = shl i448 %r126, 384 +%r128 = or i448 %r122, %r127 +%r129 = zext i448 %r128 to i512 +%r131 = getelementptr i64, i64* %r4, i32 7 +%r132 = load i64, i64* %r131 +%r133 = zext i64 %r132 to i512 +%r134 = shl i512 %r133, 448 +%r135 = or i512 %r129, %r134 +%r136 = sub i512 %r85, %r135 +%r137 = lshr i512 %r136, 511 +%r138 = trunc i512 %r137 to i1 +%r139 = select i1 %r138, i512 %r85, i512 %r136 +%r141 = getelementptr i64, i64* %r1, i32 0 +%r142 = trunc i512 %r139 to i64 +store i64 %r142, i64* %r141 +%r143 = lshr i512 %r139, 64 +%r145 = getelementptr i64, i64* %r1, i32 1 +%r146 = trunc i512 %r143 to i64 +store i64 %r146, i64* %r145 +%r147 = lshr i512 %r143, 64 +%r149 = getelementptr i64, i64* %r1, i32 2 +%r150 = trunc i512 %r147 to i64 +store i64 %r150, i64* %r149 +%r151 = lshr i512 %r147, 64 +%r153 = getelementptr i64, i64* %r1, i32 3 +%r154 = trunc i512 %r151 to i64 +store i64 %r154, i64* %r153 +%r155 = lshr i512 %r151, 64 +%r157 = getelementptr i64, i64* %r1, i32 4 +%r158 = trunc i512 %r155 to i64 +store i64 %r158, i64* %r157 +%r159 = lshr i512 %r155, 64 +%r161 = getelementptr i64, i64* %r1, i32 5 +%r162 = trunc i512 %r159 to i64 +store i64 %r162, i64* %r161 +%r163 = lshr i512 %r159, 64 +%r165 = getelementptr i64, i64* %r1, i32 6 +%r166 = trunc i512 %r163 to i64 +store i64 %r166, i64* %r165 +%r167 = lshr i512 %r163, 64 +%r169 = getelementptr i64, i64* %r1, i32 7 +%r170 = trunc i512 %r167 to i64 +store i64 %r170, i64* %r169 +ret void +} +define void @mcl_fp_montRed8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +{ +%r5 = getelementptr i64, i64* %r3, i32 -1 +%r6 = load i64, i64* %r5 +%r7 = load i64, i64* %r3 +%r8 = zext i64 %r7 to i128 +%r10 = getelementptr i64, i64* %r3, i32 1 +%r11 = load i64, i64* %r10 +%r12 = zext i64 %r11 to i128 +%r13 = shl i128 %r12, 64 +%r14 = or i128 %r8, %r13 +%r15 = zext i128 %r14 to i192 +%r17 = getelementptr i64, i64* %r3, i32 2 +%r18 = load i64, i64* %r17 +%r19 = zext i64 %r18 to i192 +%r20 = shl i192 %r19, 128 +%r21 = or i192 %r15, %r20 +%r22 = zext i192 %r21 to i256 +%r24 = getelementptr i64, i64* %r3, i32 3 +%r25 = load i64, i64* %r24 +%r26 = zext i64 %r25 to i256 +%r27 = shl i256 %r26, 192 +%r28 = or i256 %r22, %r27 +%r29 = zext i256 %r28 to i320 +%r31 = getelementptr i64, i64* %r3, i32 4 +%r32 = load i64, i64* %r31 +%r33 = zext i64 %r32 to i320 +%r34 = shl i320 %r33, 256 +%r35 = or i320 %r29, %r34 +%r36 = zext i320 %r35 to i384 +%r38 = getelementptr i64, i64* %r3, i32 5 +%r39 = load i64, i64* %r38 +%r40 = zext i64 %r39 to i384 +%r41 = shl i384 %r40, 320 +%r42 = or i384 %r36, %r41 +%r43 = zext i384 %r42 to i448 +%r45 = getelementptr i64, i64* %r3, i32 6 +%r46 = load i64, i64* %r45 +%r47 = zext i64 %r46 to i448 +%r48 = shl i448 %r47, 384 +%r49 = or i448 %r43, %r48 +%r50 = zext i448 %r49 to i512 +%r52 = getelementptr i64, i64* %r3, i32 7 +%r53 = load i64, i64* %r52 +%r54 = zext i64 %r53 to i512 +%r55 = shl i512 %r54, 448 +%r56 = or i512 %r50, %r55 +%r57 = load i64, i64* %r2 +%r58 = zext i64 %r57 to i128 +%r60 = getelementptr i64, i64* %r2, i32 1 +%r61 = load i64, i64* %r60 +%r62 = zext i64 %r61 to i128 +%r63 = shl i128 %r62, 64 +%r64 = or i128 %r58, %r63 +%r65 = zext i128 %r64 to i192 +%r67 = getelementptr i64, i64* %r2, i32 2 +%r68 = load i64, i64* %r67 +%r69 = zext i64 %r68 to i192 +%r70 = shl i192 %r69, 128 +%r71 = or i192 %r65, %r70 +%r72 = zext i192 %r71 to i256 +%r74 = getelementptr i64, i64* %r2, i32 3 +%r75 = load i64, i64* %r74 +%r76 = zext i64 %r75 to i256 +%r77 = shl i256 %r76, 192 +%r78 = or i256 %r72, %r77 +%r79 = zext i256 %r78 to i320 +%r81 = getelementptr i64, i64* %r2, i32 4 +%r82 = load i64, i64* %r81 +%r83 = zext i64 %r82 to i320 +%r84 = shl i320 %r83, 256 +%r85 = or i320 %r79, %r84 +%r86 = zext i320 %r85 to i384 +%r88 = getelementptr i64, i64* %r2, i32 5 +%r89 = load i64, i64* %r88 +%r90 = zext i64 %r89 to i384 +%r91 = shl i384 %r90, 320 +%r92 = or i384 %r86, %r91 +%r93 = zext i384 %r92 to i448 +%r95 = getelementptr i64, i64* %r2, i32 6 +%r96 = load i64, i64* %r95 +%r97 = zext i64 %r96 to i448 +%r98 = shl i448 %r97, 384 +%r99 = or i448 %r93, %r98 +%r100 = zext i448 %r99 to i512 +%r102 = getelementptr i64, i64* %r2, i32 7 +%r103 = load i64, i64* %r102 +%r104 = zext i64 %r103 to i512 +%r105 = shl i512 %r104, 448 +%r106 = or i512 %r100, %r105 +%r107 = trunc i512 %r106 to i64 +%r108 = mul i64 %r107, %r6 +%r109 = call i576 @mulPv512x64(i64* %r3, i64 %r108) +%r111 = getelementptr i64, i64* %r2, i32 8 +%r112 = load i64, i64* %r111 +%r113 = zext i64 %r112 to i576 +%r114 = shl i576 %r113, 512 +%r115 = zext i512 %r106 to i576 +%r116 = or i576 %r114, %r115 +%r117 = zext i576 %r116 to i640 +%r118 = zext i576 %r109 to i640 +%r119 = add i640 %r117, %r118 +%r120 = lshr i640 %r119, 64 +%r121 = trunc i640 %r120 to i576 +%r122 = lshr i576 %r121, 512 +%r123 = trunc i576 %r122 to i64 +%r124 = trunc i576 %r121 to i512 +%r125 = trunc i512 %r124 to i64 +%r126 = mul i64 %r125, %r6 +%r127 = call i576 @mulPv512x64(i64* %r3, i64 %r126) +%r128 = zext i64 %r123 to i576 +%r129 = shl i576 %r128, 512 +%r130 = add i576 %r127, %r129 +%r132 = getelementptr i64, i64* %r2, i32 9 +%r133 = load i64, i64* %r132 +%r134 = zext i64 %r133 to i576 +%r135 = shl i576 %r134, 512 +%r136 = zext i512 %r124 to i576 +%r137 = or i576 %r135, %r136 +%r138 = zext i576 %r137 to i640 +%r139 = zext i576 %r130 to i640 +%r140 = add i640 %r138, %r139 +%r141 = lshr i640 %r140, 64 +%r142 = trunc i640 %r141 to i576 +%r143 = lshr i576 %r142, 512 +%r144 = trunc i576 %r143 to i64 +%r145 = trunc i576 %r142 to i512 +%r146 = trunc i512 %r145 to i64 +%r147 = mul i64 %r146, %r6 +%r148 = call i576 @mulPv512x64(i64* %r3, i64 %r147) +%r149 = zext i64 %r144 to i576 +%r150 = shl i576 %r149, 512 +%r151 = add i576 %r148, %r150 +%r153 = getelementptr i64, i64* %r2, i32 10 +%r154 = load i64, i64* %r153 +%r155 = zext i64 %r154 to i576 +%r156 = shl i576 %r155, 512 +%r157 = zext i512 %r145 to i576 +%r158 = or i576 %r156, %r157 +%r159 = zext i576 %r158 to i640 +%r160 = zext i576 %r151 to i640 +%r161 = add i640 %r159, %r160 +%r162 = lshr i640 %r161, 64 +%r163 = trunc i640 %r162 to i576 +%r164 = lshr i576 %r163, 512 %r165 = trunc i576 %r164 to i64 -%r167 = getelementptr i64, i64* %r1, i32 2 -store i64 %r165, i64* %r167 -%r168 = lshr i576 %r164, 64 -%r169 = trunc i576 %r168 to i64 -%r171 = getelementptr i64, i64* %r1, i32 3 -store i64 %r169, i64* %r171 -%r172 = lshr i576 %r168, 64 -%r173 = trunc i576 %r172 to i64 -%r175 = getelementptr i64, i64* %r1, i32 4 -store i64 %r173, i64* %r175 -%r176 = lshr i576 %r172, 64 -%r177 = trunc i576 %r176 to i64 -%r179 = getelementptr i64, i64* %r1, i32 5 -store i64 %r177, i64* %r179 -%r180 = lshr i576 %r176, 64 -%r181 = trunc i576 %r180 to i64 -%r183 = getelementptr i64, i64* %r1, i32 6 -store i64 %r181, i64* %r183 -%r184 = lshr i576 %r180, 64 -%r185 = trunc i576 %r184 to i64 -%r187 = getelementptr i64, i64* %r1, i32 7 -store i64 %r185, i64* %r187 -%r188 = lshr i576 %r184, 64 -%r189 = trunc i576 %r188 to i64 -%r191 = getelementptr i64, i64* %r1, i32 8 -store i64 %r189, i64* %r191 -ret void -} -define void @mcl_fp_montRed9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) +%r166 = trunc i576 %r163 to i512 +%r167 = trunc i512 %r166 to i64 +%r168 = mul i64 %r167, %r6 +%r169 = call i576 @mulPv512x64(i64* %r3, i64 %r168) +%r170 = zext i64 %r165 to i576 +%r171 = shl i576 %r170, 512 +%r172 = add i576 %r169, %r171 +%r174 = getelementptr i64, i64* %r2, i32 11 +%r175 = load i64, i64* %r174 +%r176 = zext i64 %r175 to i576 +%r177 = shl i576 %r176, 512 +%r178 = zext i512 %r166 to i576 +%r179 = or i576 %r177, %r178 +%r180 = zext i576 %r179 to i640 +%r181 = zext i576 %r172 to i640 +%r182 = add i640 %r180, %r181 +%r183 = lshr i640 %r182, 64 +%r184 = trunc i640 %r183 to i576 +%r185 = lshr i576 %r184, 512 +%r186 = trunc i576 %r185 to i64 +%r187 = trunc i576 %r184 to i512 +%r188 = trunc i512 %r187 to i64 +%r189 = mul i64 %r188, %r6 +%r190 = call i576 @mulPv512x64(i64* %r3, i64 %r189) +%r191 = zext i64 %r186 to i576 +%r192 = shl i576 %r191, 512 +%r193 = add i576 %r190, %r192 +%r195 = getelementptr i64, i64* %r2, i32 12 +%r196 = load i64, i64* %r195 +%r197 = zext i64 %r196 to i576 +%r198 = shl i576 %r197, 512 +%r199 = zext i512 %r187 to i576 +%r200 = or i576 %r198, %r199 +%r201 = zext i576 %r200 to i640 +%r202 = zext i576 %r193 to i640 +%r203 = add i640 %r201, %r202 +%r204 = lshr i640 %r203, 64 +%r205 = trunc i640 %r204 to i576 +%r206 = lshr i576 %r205, 512 +%r207 = trunc i576 %r206 to i64 +%r208 = trunc i576 %r205 to i512 +%r209 = trunc i512 %r208 to i64 +%r210 = mul i64 %r209, %r6 +%r211 = call i576 @mulPv512x64(i64* %r3, i64 %r210) +%r212 = zext i64 %r207 to i576 +%r213 = shl i576 %r212, 512 +%r214 = add i576 %r211, %r213 +%r216 = getelementptr i64, i64* %r2, i32 13 +%r217 = load i64, i64* %r216 +%r218 = zext i64 %r217 to i576 +%r219 = shl i576 %r218, 512 +%r220 = zext i512 %r208 to i576 +%r221 = or i576 %r219, %r220 +%r222 = zext i576 %r221 to i640 +%r223 = zext i576 %r214 to i640 +%r224 = add i640 %r222, %r223 +%r225 = lshr i640 %r224, 64 +%r226 = trunc i640 %r225 to i576 +%r227 = lshr i576 %r226, 512 +%r228 = trunc i576 %r227 to i64 +%r229 = trunc i576 %r226 to i512 +%r230 = trunc i512 %r229 to i64 +%r231 = mul i64 %r230, %r6 +%r232 = call i576 @mulPv512x64(i64* %r3, i64 %r231) +%r233 = zext i64 %r228 to i576 +%r234 = shl i576 %r233, 512 +%r235 = add i576 %r232, %r234 +%r237 = getelementptr i64, i64* %r2, i32 14 +%r238 = load i64, i64* %r237 +%r239 = zext i64 %r238 to i576 +%r240 = shl i576 %r239, 512 +%r241 = zext i512 %r229 to i576 +%r242 = or i576 %r240, %r241 +%r243 = zext i576 %r242 to i640 +%r244 = zext i576 %r235 to i640 +%r245 = add i640 %r243, %r244 +%r246 = lshr i640 %r245, 64 +%r247 = trunc i640 %r246 to i576 +%r248 = lshr i576 %r247, 512 +%r249 = trunc i576 %r248 to i64 +%r250 = trunc i576 %r247 to i512 +%r251 = trunc i512 %r250 to i64 +%r252 = mul i64 %r251, %r6 +%r253 = call i576 @mulPv512x64(i64* %r3, i64 %r252) +%r254 = zext i64 %r249 to i576 +%r255 = shl i576 %r254, 512 +%r256 = add i576 %r253, %r255 +%r258 = getelementptr i64, i64* %r2, i32 15 +%r259 = load i64, i64* %r258 +%r260 = zext i64 %r259 to i576 +%r261 = shl i576 %r260, 512 +%r262 = zext i512 %r250 to i576 +%r263 = or i576 %r261, %r262 +%r264 = zext i576 %r263 to i640 +%r265 = zext i576 %r256 to i640 +%r266 = add i640 %r264, %r265 +%r267 = lshr i640 %r266, 64 +%r268 = trunc i640 %r267 to i576 +%r269 = lshr i576 %r268, 512 +%r270 = trunc i576 %r269 to i64 +%r271 = trunc i576 %r268 to i512 +%r272 = zext i512 %r56 to i576 +%r273 = zext i512 %r271 to i576 +%r274 = sub i576 %r273, %r272 +%r275 = lshr i576 %r274, 512 +%r276 = trunc i576 %r275 to i1 +%r277 = select i1 %r276, i576 %r273, i576 %r274 +%r278 = trunc i576 %r277 to i512 +%r280 = getelementptr i64, i64* %r1, i32 0 +%r281 = trunc i512 %r278 to i64 +store i64 %r281, i64* %r280 +%r282 = lshr i512 %r278, 64 +%r284 = getelementptr i64, i64* %r1, i32 1 +%r285 = trunc i512 %r282 to i64 +store i64 %r285, i64* %r284 +%r286 = lshr i512 %r282, 64 +%r288 = getelementptr i64, i64* %r1, i32 2 +%r289 = trunc i512 %r286 to i64 +store i64 %r289, i64* %r288 +%r290 = lshr i512 %r286, 64 +%r292 = getelementptr i64, i64* %r1, i32 3 +%r293 = trunc i512 %r290 to i64 +store i64 %r293, i64* %r292 +%r294 = lshr i512 %r290, 64 +%r296 = getelementptr i64, i64* %r1, i32 4 +%r297 = trunc i512 %r294 to i64 +store i64 %r297, i64* %r296 +%r298 = lshr i512 %r294, 64 +%r300 = getelementptr i64, i64* %r1, i32 5 +%r301 = trunc i512 %r298 to i64 +store i64 %r301, i64* %r300 +%r302 = lshr i512 %r298, 64 +%r304 = getelementptr i64, i64* %r1, i32 6 +%r305 = trunc i512 %r302 to i64 +store i64 %r305, i64* %r304 +%r306 = lshr i512 %r302, 64 +%r308 = getelementptr i64, i64* %r1, i32 7 +%r309 = trunc i512 %r306 to i64 +store i64 %r309, i64* %r308 +ret void +} +define void @mcl_fp_montRedNF8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3) { %r5 = getelementptr i64, i64* %r3, i32 -1 %r6 = load i64, i64* %r5 @@ -13259,223 +6022,244 @@ define void @mcl_fp_montRed9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r54 = zext i64 %r53 to i512 %r55 = shl i512 %r54, 448 %r56 = or i512 %r50, %r55 -%r57 = zext i512 %r56 to i576 -%r59 = getelementptr i64, i64* %r3, i32 8 -%r60 = load i64, i64* %r59 -%r61 = zext i64 %r60 to i576 -%r62 = shl i576 %r61, 512 -%r63 = or i576 %r57, %r62 -%r64 = load i64, i64* %r2 -%r65 = zext i64 %r64 to i128 -%r67 = getelementptr i64, i64* %r2, i32 1 +%r57 = load i64, i64* %r2 +%r58 = zext i64 %r57 to i128 +%r60 = getelementptr i64, i64* %r2, i32 1 +%r61 = load i64, i64* %r60 +%r62 = zext i64 %r61 to i128 +%r63 = shl i128 %r62, 64 +%r64 = or i128 %r58, %r63 +%r65 = zext i128 %r64 to i192 +%r67 = getelementptr i64, i64* %r2, i32 2 %r68 = load i64, i64* %r67 -%r69 = zext i64 %r68 to i128 -%r70 = shl i128 %r69, 64 -%r71 = or i128 %r65, %r70 -%r72 = zext i128 %r71 to i192 -%r74 = getelementptr i64, i64* %r2, i32 2 +%r69 = zext i64 %r68 to i192 +%r70 = shl i192 %r69, 128 +%r71 = or i192 %r65, %r70 +%r72 = zext i192 %r71 to i256 +%r74 = getelementptr i64, i64* %r2, i32 3 %r75 = load i64, i64* %r74 -%r76 = zext i64 %r75 to i192 -%r77 = shl i192 %r76, 128 -%r78 = or i192 %r72, %r77 -%r79 = zext i192 %r78 to i256 -%r81 = getelementptr i64, i64* %r2, i32 3 +%r76 = zext i64 %r75 to i256 +%r77 = shl i256 %r76, 192 +%r78 = or i256 %r72, %r77 +%r79 = zext i256 %r78 to i320 +%r81 = getelementptr i64, i64* %r2, i32 4 %r82 = load i64, i64* %r81 -%r83 = zext i64 %r82 to i256 -%r84 = shl i256 %r83, 192 -%r85 = or i256 %r79, %r84 -%r86 = zext i256 %r85 to i320 -%r88 = getelementptr i64, i64* %r2, i32 4 +%r83 = zext i64 %r82 to i320 +%r84 = shl i320 %r83, 256 +%r85 = or i320 %r79, %r84 +%r86 = zext i320 %r85 to i384 +%r88 = getelementptr i64, i64* %r2, i32 5 %r89 = load i64, i64* %r88 -%r90 = zext i64 %r89 to i320 -%r91 = shl i320 %r90, 256 -%r92 = or i320 %r86, %r91 -%r93 = zext i320 %r92 to i384 -%r95 = getelementptr i64, i64* %r2, i32 5 +%r90 = zext i64 %r89 to i384 +%r91 = shl i384 %r90, 320 +%r92 = or i384 %r86, %r91 +%r93 = zext i384 %r92 to i448 +%r95 = getelementptr i64, i64* %r2, i32 6 %r96 = load i64, i64* %r95 -%r97 = zext i64 %r96 to i384 -%r98 = shl i384 %r97, 320 -%r99 = or i384 %r93, %r98 -%r100 = zext i384 %r99 to i448 -%r102 = getelementptr i64, i64* %r2, i32 6 +%r97 = zext i64 %r96 to i448 +%r98 = shl i448 %r97, 384 +%r99 = or i448 %r93, %r98 +%r100 = zext i448 %r99 to i512 +%r102 = getelementptr i64, i64* %r2, i32 7 %r103 = load i64, i64* %r102 -%r104 = zext i64 %r103 to i448 -%r105 = shl i448 %r104, 384 -%r106 = or i448 %r100, %r105 -%r107 = zext i448 %r106 to i512 -%r109 = getelementptr i64, i64* %r2, i32 7 -%r110 = load i64, i64* %r109 -%r111 = zext i64 %r110 to i512 -%r112 = shl i512 %r111, 448 -%r113 = or i512 %r107, %r112 -%r114 = zext i512 %r113 to i576 -%r116 = getelementptr i64, i64* %r2, i32 8 -%r117 = load i64, i64* %r116 -%r118 = zext i64 %r117 to i576 -%r119 = shl i576 %r118, 512 -%r120 = or i576 %r114, %r119 -%r121 = zext i576 %r120 to i640 -%r123 = getelementptr i64, i64* %r2, i32 9 -%r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i640 -%r126 = shl i640 %r125, 576 -%r127 = or i640 %r121, %r126 -%r128 = zext i640 %r127 to i704 -%r130 = getelementptr i64, i64* %r2, i32 10 -%r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i704 -%r133 = shl i704 %r132, 640 -%r134 = or i704 %r128, %r133 -%r135 = zext i704 %r134 to i768 -%r137 = getelementptr i64, i64* %r2, i32 11 -%r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i768 -%r140 = shl i768 %r139, 704 -%r141 = or i768 %r135, %r140 -%r142 = zext i768 %r141 to i832 -%r144 = getelementptr i64, i64* %r2, i32 12 -%r145 = load i64, i64* %r144 -%r146 = zext i64 %r145 to i832 -%r147 = shl i832 %r146, 768 -%r148 = or i832 %r142, %r147 -%r149 = zext i832 %r148 to i896 -%r151 = getelementptr i64, i64* %r2, i32 13 -%r152 = load i64, i64* %r151 -%r153 = zext i64 %r152 to i896 -%r154 = shl i896 %r153, 832 -%r155 = or i896 %r149, %r154 -%r156 = zext i896 %r155 to i960 -%r158 = getelementptr i64, i64* %r2, i32 14 -%r159 = load i64, i64* %r158 -%r160 = zext i64 %r159 to i960 -%r161 = shl i960 %r160, 896 -%r162 = or i960 %r156, %r161 -%r163 = zext i960 %r162 to i1024 -%r165 = getelementptr i64, i64* %r2, i32 15 -%r166 = load i64, i64* %r165 -%r167 = zext i64 %r166 to i1024 -%r168 = shl i1024 %r167, 960 -%r169 = or i1024 %r163, %r168 -%r170 = zext i1024 %r169 to i1088 -%r172 = getelementptr i64, i64* %r2, i32 16 -%r173 = load i64, i64* %r172 -%r174 = zext i64 %r173 to i1088 -%r175 = shl i1088 %r174, 1024 -%r176 = or i1088 %r170, %r175 -%r177 = zext i1088 %r176 to i1152 -%r179 = getelementptr i64, i64* %r2, i32 17 -%r180 = load i64, i64* %r179 -%r181 = zext i64 %r180 to i1152 -%r182 = shl i1152 %r181, 1088 -%r183 = or i1152 %r177, %r182 -%r184 = zext i1152 %r183 to i1216 -%r185 = trunc i1216 %r184 to i64 -%r186 = mul i64 %r185, %r6 -%r187 = call i640 @mulPv576x64(i64* %r3, i64 %r186) -%r188 = zext i640 %r187 to i1216 -%r189 = add i1216 %r184, %r188 -%r190 = lshr i1216 %r189, 64 -%r191 = trunc i1216 %r190 to i1152 -%r192 = trunc i1152 %r191 to i64 -%r193 = mul i64 %r192, %r6 -%r194 = call i640 @mulPv576x64(i64* %r3, i64 %r193) -%r195 = zext i640 %r194 to i1152 -%r196 = add i1152 %r191, %r195 -%r197 = lshr i1152 %r196, 64 -%r198 = trunc i1152 %r197 to i1088 -%r199 = trunc i1088 %r198 to i64 -%r200 = mul i64 %r199, %r6 -%r201 = call i640 @mulPv576x64(i64* %r3, i64 %r200) -%r202 = zext i640 %r201 to i1088 -%r203 = add i1088 %r198, %r202 -%r204 = lshr i1088 %r203, 64 -%r205 = trunc i1088 %r204 to i1024 -%r206 = trunc i1024 %r205 to i64 -%r207 = mul i64 %r206, %r6 -%r208 = call i640 @mulPv576x64(i64* %r3, i64 %r207) -%r209 = zext i640 %r208 to i1024 -%r210 = add i1024 %r205, %r209 -%r211 = lshr i1024 %r210, 64 -%r212 = trunc i1024 %r211 to i960 -%r213 = trunc i960 %r212 to i64 -%r214 = mul i64 %r213, %r6 -%r215 = call i640 @mulPv576x64(i64* %r3, i64 %r214) -%r216 = zext i640 %r215 to i960 -%r217 = add i960 %r212, %r216 -%r218 = lshr i960 %r217, 64 -%r219 = trunc i960 %r218 to i896 -%r220 = trunc i896 %r219 to i64 -%r221 = mul i64 %r220, %r6 -%r222 = call i640 @mulPv576x64(i64* %r3, i64 %r221) -%r223 = zext i640 %r222 to i896 -%r224 = add i896 %r219, %r223 -%r225 = lshr i896 %r224, 64 -%r226 = trunc i896 %r225 to i832 -%r227 = trunc i832 %r226 to i64 -%r228 = mul i64 %r227, %r6 -%r229 = call i640 @mulPv576x64(i64* %r3, i64 %r228) -%r230 = zext i640 %r229 to i832 -%r231 = add i832 %r226, %r230 -%r232 = lshr i832 %r231, 64 -%r233 = trunc i832 %r232 to i768 -%r234 = trunc i768 %r233 to i64 -%r235 = mul i64 %r234, %r6 -%r236 = call i640 @mulPv576x64(i64* %r3, i64 %r235) -%r237 = zext i640 %r236 to i768 -%r238 = add i768 %r233, %r237 -%r239 = lshr i768 %r238, 64 -%r240 = trunc i768 %r239 to i704 -%r241 = trunc i704 %r240 to i64 -%r242 = mul i64 %r241, %r6 -%r243 = call i640 @mulPv576x64(i64* %r3, i64 %r242) -%r244 = zext i640 %r243 to i704 -%r245 = add i704 %r240, %r244 -%r246 = lshr i704 %r245, 64 -%r247 = trunc i704 %r246 to i640 -%r248 = zext i576 %r63 to i640 -%r249 = sub i640 %r247, %r248 -%r250 = lshr i640 %r249, 576 -%r251 = trunc i640 %r250 to i1 -%r252 = select i1 %r251, i640 %r247, i640 %r249 -%r253 = trunc i640 %r252 to i576 -%r254 = trunc i576 %r253 to i64 -%r256 = getelementptr i64, i64* %r1, i32 0 -store i64 %r254, i64* %r256 -%r257 = lshr i576 %r253, 64 -%r258 = trunc i576 %r257 to i64 -%r260 = getelementptr i64, i64* %r1, i32 1 -store i64 %r258, i64* %r260 -%r261 = lshr i576 %r257, 64 -%r262 = trunc i576 %r261 to i64 -%r264 = getelementptr i64, i64* %r1, i32 2 -store i64 %r262, i64* %r264 -%r265 = lshr i576 %r261, 64 -%r266 = trunc i576 %r265 to i64 -%r268 = getelementptr i64, i64* %r1, i32 3 -store i64 %r266, i64* %r268 -%r269 = lshr i576 %r265, 64 +%r104 = zext i64 %r103 to i512 +%r105 = shl i512 %r104, 448 +%r106 = or i512 %r100, %r105 +%r107 = trunc i512 %r106 to i64 +%r108 = mul i64 %r107, %r6 +%r109 = call i576 @mulPv512x64(i64* %r3, i64 %r108) +%r111 = getelementptr i64, i64* %r2, i32 8 +%r112 = load i64, i64* %r111 +%r113 = zext i64 %r112 to i576 +%r114 = shl i576 %r113, 512 +%r115 = zext i512 %r106 to i576 +%r116 = or i576 %r114, %r115 +%r117 = zext i576 %r116 to i640 +%r118 = zext i576 %r109 to i640 +%r119 = add i640 %r117, %r118 +%r120 = lshr i640 %r119, 64 +%r121 = trunc i640 %r120 to i576 +%r122 = lshr i576 %r121, 512 +%r123 = trunc i576 %r122 to i64 +%r124 = trunc i576 %r121 to i512 +%r125 = trunc i512 %r124 to i64 +%r126 = mul i64 %r125, %r6 +%r127 = call i576 @mulPv512x64(i64* %r3, i64 %r126) +%r128 = zext i64 %r123 to i576 +%r129 = shl i576 %r128, 512 +%r130 = add i576 %r127, %r129 +%r132 = getelementptr i64, i64* %r2, i32 9 +%r133 = load i64, i64* %r132 +%r134 = zext i64 %r133 to i576 +%r135 = shl i576 %r134, 512 +%r136 = zext i512 %r124 to i576 +%r137 = or i576 %r135, %r136 +%r138 = zext i576 %r137 to i640 +%r139 = zext i576 %r130 to i640 +%r140 = add i640 %r138, %r139 +%r141 = lshr i640 %r140, 64 +%r142 = trunc i640 %r141 to i576 +%r143 = lshr i576 %r142, 512 +%r144 = trunc i576 %r143 to i64 +%r145 = trunc i576 %r142 to i512 +%r146 = trunc i512 %r145 to i64 +%r147 = mul i64 %r146, %r6 +%r148 = call i576 @mulPv512x64(i64* %r3, i64 %r147) +%r149 = zext i64 %r144 to i576 +%r150 = shl i576 %r149, 512 +%r151 = add i576 %r148, %r150 +%r153 = getelementptr i64, i64* %r2, i32 10 +%r154 = load i64, i64* %r153 +%r155 = zext i64 %r154 to i576 +%r156 = shl i576 %r155, 512 +%r157 = zext i512 %r145 to i576 +%r158 = or i576 %r156, %r157 +%r159 = zext i576 %r158 to i640 +%r160 = zext i576 %r151 to i640 +%r161 = add i640 %r159, %r160 +%r162 = lshr i640 %r161, 64 +%r163 = trunc i640 %r162 to i576 +%r164 = lshr i576 %r163, 512 +%r165 = trunc i576 %r164 to i64 +%r166 = trunc i576 %r163 to i512 +%r167 = trunc i512 %r166 to i64 +%r168 = mul i64 %r167, %r6 +%r169 = call i576 @mulPv512x64(i64* %r3, i64 %r168) +%r170 = zext i64 %r165 to i576 +%r171 = shl i576 %r170, 512 +%r172 = add i576 %r169, %r171 +%r174 = getelementptr i64, i64* %r2, i32 11 +%r175 = load i64, i64* %r174 +%r176 = zext i64 %r175 to i576 +%r177 = shl i576 %r176, 512 +%r178 = zext i512 %r166 to i576 +%r179 = or i576 %r177, %r178 +%r180 = zext i576 %r179 to i640 +%r181 = zext i576 %r172 to i640 +%r182 = add i640 %r180, %r181 +%r183 = lshr i640 %r182, 64 +%r184 = trunc i640 %r183 to i576 +%r185 = lshr i576 %r184, 512 +%r186 = trunc i576 %r185 to i64 +%r187 = trunc i576 %r184 to i512 +%r188 = trunc i512 %r187 to i64 +%r189 = mul i64 %r188, %r6 +%r190 = call i576 @mulPv512x64(i64* %r3, i64 %r189) +%r191 = zext i64 %r186 to i576 +%r192 = shl i576 %r191, 512 +%r193 = add i576 %r190, %r192 +%r195 = getelementptr i64, i64* %r2, i32 12 +%r196 = load i64, i64* %r195 +%r197 = zext i64 %r196 to i576 +%r198 = shl i576 %r197, 512 +%r199 = zext i512 %r187 to i576 +%r200 = or i576 %r198, %r199 +%r201 = zext i576 %r200 to i640 +%r202 = zext i576 %r193 to i640 +%r203 = add i640 %r201, %r202 +%r204 = lshr i640 %r203, 64 +%r205 = trunc i640 %r204 to i576 +%r206 = lshr i576 %r205, 512 +%r207 = trunc i576 %r206 to i64 +%r208 = trunc i576 %r205 to i512 +%r209 = trunc i512 %r208 to i64 +%r210 = mul i64 %r209, %r6 +%r211 = call i576 @mulPv512x64(i64* %r3, i64 %r210) +%r212 = zext i64 %r207 to i576 +%r213 = shl i576 %r212, 512 +%r214 = add i576 %r211, %r213 +%r216 = getelementptr i64, i64* %r2, i32 13 +%r217 = load i64, i64* %r216 +%r218 = zext i64 %r217 to i576 +%r219 = shl i576 %r218, 512 +%r220 = zext i512 %r208 to i576 +%r221 = or i576 %r219, %r220 +%r222 = zext i576 %r221 to i640 +%r223 = zext i576 %r214 to i640 +%r224 = add i640 %r222, %r223 +%r225 = lshr i640 %r224, 64 +%r226 = trunc i640 %r225 to i576 +%r227 = lshr i576 %r226, 512 +%r228 = trunc i576 %r227 to i64 +%r229 = trunc i576 %r226 to i512 +%r230 = trunc i512 %r229 to i64 +%r231 = mul i64 %r230, %r6 +%r232 = call i576 @mulPv512x64(i64* %r3, i64 %r231) +%r233 = zext i64 %r228 to i576 +%r234 = shl i576 %r233, 512 +%r235 = add i576 %r232, %r234 +%r237 = getelementptr i64, i64* %r2, i32 14 +%r238 = load i64, i64* %r237 +%r239 = zext i64 %r238 to i576 +%r240 = shl i576 %r239, 512 +%r241 = zext i512 %r229 to i576 +%r242 = or i576 %r240, %r241 +%r243 = zext i576 %r242 to i640 +%r244 = zext i576 %r235 to i640 +%r245 = add i640 %r243, %r244 +%r246 = lshr i640 %r245, 64 +%r247 = trunc i640 %r246 to i576 +%r248 = lshr i576 %r247, 512 +%r249 = trunc i576 %r248 to i64 +%r250 = trunc i576 %r247 to i512 +%r251 = trunc i512 %r250 to i64 +%r252 = mul i64 %r251, %r6 +%r253 = call i576 @mulPv512x64(i64* %r3, i64 %r252) +%r254 = zext i64 %r249 to i576 +%r255 = shl i576 %r254, 512 +%r256 = add i576 %r253, %r255 +%r258 = getelementptr i64, i64* %r2, i32 15 +%r259 = load i64, i64* %r258 +%r260 = zext i64 %r259 to i576 +%r261 = shl i576 %r260, 512 +%r262 = zext i512 %r250 to i576 +%r263 = or i576 %r261, %r262 +%r264 = zext i576 %r263 to i640 +%r265 = zext i576 %r256 to i640 +%r266 = add i640 %r264, %r265 +%r267 = lshr i640 %r266, 64 +%r268 = trunc i640 %r267 to i576 +%r269 = lshr i576 %r268, 512 %r270 = trunc i576 %r269 to i64 -%r272 = getelementptr i64, i64* %r1, i32 4 -store i64 %r270, i64* %r272 -%r273 = lshr i576 %r269, 64 -%r274 = trunc i576 %r273 to i64 -%r276 = getelementptr i64, i64* %r1, i32 5 -store i64 %r274, i64* %r276 -%r277 = lshr i576 %r273, 64 -%r278 = trunc i576 %r277 to i64 -%r280 = getelementptr i64, i64* %r1, i32 6 -store i64 %r278, i64* %r280 -%r281 = lshr i576 %r277, 64 -%r282 = trunc i576 %r281 to i64 -%r284 = getelementptr i64, i64* %r1, i32 7 -store i64 %r282, i64* %r284 -%r285 = lshr i576 %r281, 64 -%r286 = trunc i576 %r285 to i64 -%r288 = getelementptr i64, i64* %r1, i32 8 -store i64 %r286, i64* %r288 +%r271 = trunc i576 %r268 to i512 +%r272 = sub i512 %r271, %r56 +%r273 = lshr i512 %r272, 511 +%r274 = trunc i512 %r273 to i1 +%r275 = select i1 %r274, i512 %r271, i512 %r272 +%r277 = getelementptr i64, i64* %r1, i32 0 +%r278 = trunc i512 %r275 to i64 +store i64 %r278, i64* %r277 +%r279 = lshr i512 %r275, 64 +%r281 = getelementptr i64, i64* %r1, i32 1 +%r282 = trunc i512 %r279 to i64 +store i64 %r282, i64* %r281 +%r283 = lshr i512 %r279, 64 +%r285 = getelementptr i64, i64* %r1, i32 2 +%r286 = trunc i512 %r283 to i64 +store i64 %r286, i64* %r285 +%r287 = lshr i512 %r283, 64 +%r289 = getelementptr i64, i64* %r1, i32 3 +%r290 = trunc i512 %r287 to i64 +store i64 %r290, i64* %r289 +%r291 = lshr i512 %r287, 64 +%r293 = getelementptr i64, i64* %r1, i32 4 +%r294 = trunc i512 %r291 to i64 +store i64 %r294, i64* %r293 +%r295 = lshr i512 %r291, 64 +%r297 = getelementptr i64, i64* %r1, i32 5 +%r298 = trunc i512 %r295 to i64 +store i64 %r298, i64* %r297 +%r299 = lshr i512 %r295, 64 +%r301 = getelementptr i64, i64* %r1, i32 6 +%r302 = trunc i512 %r299 to i64 +store i64 %r302, i64* %r301 +%r303 = lshr i512 %r299, 64 +%r305 = getelementptr i64, i64* %r1, i32 7 +%r306 = trunc i512 %r303 to i64 +store i64 %r306, i64* %r305 ret void } -define i64 @mcl_fp_addPre9L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_addPre8L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -13521,104 +6305,88 @@ define i64 @mcl_fp_addPre9L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 %r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r3, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r63 = load i64, i64* %r4 -%r64 = zext i64 %r63 to i128 -%r66 = getelementptr i64, i64* %r4, i32 1 +%r56 = load i64, i64* %r4 +%r57 = zext i64 %r56 to i128 +%r59 = getelementptr i64, i64* %r4, i32 1 +%r60 = load i64, i64* %r59 +%r61 = zext i64 %r60 to i128 +%r62 = shl i128 %r61, 64 +%r63 = or i128 %r57, %r62 +%r64 = zext i128 %r63 to i192 +%r66 = getelementptr i64, i64* %r4, i32 2 %r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i128 -%r69 = shl i128 %r68, 64 -%r70 = or i128 %r64, %r69 -%r71 = zext i128 %r70 to i192 -%r73 = getelementptr i64, i64* %r4, i32 2 +%r68 = zext i64 %r67 to i192 +%r69 = shl i192 %r68, 128 +%r70 = or i192 %r64, %r69 +%r71 = zext i192 %r70 to i256 +%r73 = getelementptr i64, i64* %r4, i32 3 %r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i192 -%r76 = shl i192 %r75, 128 -%r77 = or i192 %r71, %r76 -%r78 = zext i192 %r77 to i256 -%r80 = getelementptr i64, i64* %r4, i32 3 +%r75 = zext i64 %r74 to i256 +%r76 = shl i256 %r75, 192 +%r77 = or i256 %r71, %r76 +%r78 = zext i256 %r77 to i320 +%r80 = getelementptr i64, i64* %r4, i32 4 %r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i256 -%r83 = shl i256 %r82, 192 -%r84 = or i256 %r78, %r83 -%r85 = zext i256 %r84 to i320 -%r87 = getelementptr i64, i64* %r4, i32 4 +%r82 = zext i64 %r81 to i320 +%r83 = shl i320 %r82, 256 +%r84 = or i320 %r78, %r83 +%r85 = zext i320 %r84 to i384 +%r87 = getelementptr i64, i64* %r4, i32 5 %r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i320 -%r90 = shl i320 %r89, 256 -%r91 = or i320 %r85, %r90 -%r92 = zext i320 %r91 to i384 -%r94 = getelementptr i64, i64* %r4, i32 5 +%r89 = zext i64 %r88 to i384 +%r90 = shl i384 %r89, 320 +%r91 = or i384 %r85, %r90 +%r92 = zext i384 %r91 to i448 +%r94 = getelementptr i64, i64* %r4, i32 6 %r95 = load i64, i64* %r94 -%r96 = zext i64 %r95 to i384 -%r97 = shl i384 %r96, 320 -%r98 = or i384 %r92, %r97 -%r99 = zext i384 %r98 to i448 -%r101 = getelementptr i64, i64* %r4, i32 6 +%r96 = zext i64 %r95 to i448 +%r97 = shl i448 %r96, 384 +%r98 = or i448 %r92, %r97 +%r99 = zext i448 %r98 to i512 +%r101 = getelementptr i64, i64* %r4, i32 7 %r102 = load i64, i64* %r101 -%r103 = zext i64 %r102 to i448 -%r104 = shl i448 %r103, 384 -%r105 = or i448 %r99, %r104 -%r106 = zext i448 %r105 to i512 -%r108 = getelementptr i64, i64* %r4, i32 7 -%r109 = load i64, i64* %r108 -%r110 = zext i64 %r109 to i512 -%r111 = shl i512 %r110, 448 -%r112 = or i512 %r106, %r111 -%r113 = zext i512 %r112 to i576 -%r115 = getelementptr i64, i64* %r4, i32 8 -%r116 = load i64, i64* %r115 -%r117 = zext i64 %r116 to i576 -%r118 = shl i576 %r117, 512 -%r119 = or i576 %r113, %r118 -%r120 = zext i576 %r119 to i640 -%r121 = add i640 %r62, %r120 -%r122 = trunc i640 %r121 to i576 -%r123 = trunc i576 %r122 to i64 -%r125 = getelementptr i64, i64* %r2, i32 0 -store i64 %r123, i64* %r125 -%r126 = lshr i576 %r122, 64 -%r127 = trunc i576 %r126 to i64 -%r129 = getelementptr i64, i64* %r2, i32 1 -store i64 %r127, i64* %r129 -%r130 = lshr i576 %r126, 64 -%r131 = trunc i576 %r130 to i64 -%r133 = getelementptr i64, i64* %r2, i32 2 -store i64 %r131, i64* %r133 -%r134 = lshr i576 %r130, 64 -%r135 = trunc i576 %r134 to i64 -%r137 = getelementptr i64, i64* %r2, i32 3 -store i64 %r135, i64* %r137 -%r138 = lshr i576 %r134, 64 -%r139 = trunc i576 %r138 to i64 -%r141 = getelementptr i64, i64* %r2, i32 4 -store i64 %r139, i64* %r141 -%r142 = lshr i576 %r138, 64 -%r143 = trunc i576 %r142 to i64 -%r145 = getelementptr i64, i64* %r2, i32 5 -store i64 %r143, i64* %r145 -%r146 = lshr i576 %r142, 64 -%r147 = trunc i576 %r146 to i64 -%r149 = getelementptr i64, i64* %r2, i32 6 -store i64 %r147, i64* %r149 -%r150 = lshr i576 %r146, 64 -%r151 = trunc i576 %r150 to i64 -%r153 = getelementptr i64, i64* %r2, i32 7 -store i64 %r151, i64* %r153 -%r154 = lshr i576 %r150, 64 -%r155 = trunc i576 %r154 to i64 -%r157 = getelementptr i64, i64* %r2, i32 8 -store i64 %r155, i64* %r157 -%r158 = lshr i640 %r121, 576 -%r159 = trunc i640 %r158 to i64 -ret i64 %r159 +%r103 = zext i64 %r102 to i512 +%r104 = shl i512 %r103, 448 +%r105 = or i512 %r99, %r104 +%r106 = zext i512 %r105 to i576 +%r107 = add i576 %r55, %r106 +%r108 = trunc i576 %r107 to i512 +%r110 = getelementptr i64, i64* %r2, i32 0 +%r111 = trunc i512 %r108 to i64 +store i64 %r111, i64* %r110 +%r112 = lshr i512 %r108, 64 +%r114 = getelementptr i64, i64* %r2, i32 1 +%r115 = trunc i512 %r112 to i64 +store i64 %r115, i64* %r114 +%r116 = lshr i512 %r112, 64 +%r118 = getelementptr i64, i64* %r2, i32 2 +%r119 = trunc i512 %r116 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i512 %r116, 64 +%r122 = getelementptr i64, i64* %r2, i32 3 +%r123 = trunc i512 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i512 %r120, 64 +%r126 = getelementptr i64, i64* %r2, i32 4 +%r127 = trunc i512 %r124 to i64 +store i64 %r127, i64* %r126 +%r128 = lshr i512 %r124, 64 +%r130 = getelementptr i64, i64* %r2, i32 5 +%r131 = trunc i512 %r128 to i64 +store i64 %r131, i64* %r130 +%r132 = lshr i512 %r128, 64 +%r134 = getelementptr i64, i64* %r2, i32 6 +%r135 = trunc i512 %r132 to i64 +store i64 %r135, i64* %r134 +%r136 = lshr i512 %r132, 64 +%r138 = getelementptr i64, i64* %r2, i32 7 +%r139 = trunc i512 %r136 to i64 +store i64 %r139, i64* %r138 +%r140 = lshr i576 %r107, 512 +%r141 = trunc i576 %r140 to i64 +ret i64 %r141 } -define i64 @mcl_fp_subPre9L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define i64 @mcl_fp_subPre8L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r3 %r6 = zext i64 %r5 to i128 @@ -13664,105 +6432,89 @@ define i64 @mcl_fp_subPre9L(i64* noalias %r2, i64* noalias %r3, i64* noalias %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 %r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r3, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = zext i576 %r61 to i640 -%r63 = load i64, i64* %r4 -%r64 = zext i64 %r63 to i128 -%r66 = getelementptr i64, i64* %r4, i32 1 +%r56 = load i64, i64* %r4 +%r57 = zext i64 %r56 to i128 +%r59 = getelementptr i64, i64* %r4, i32 1 +%r60 = load i64, i64* %r59 +%r61 = zext i64 %r60 to i128 +%r62 = shl i128 %r61, 64 +%r63 = or i128 %r57, %r62 +%r64 = zext i128 %r63 to i192 +%r66 = getelementptr i64, i64* %r4, i32 2 %r67 = load i64, i64* %r66 -%r68 = zext i64 %r67 to i128 -%r69 = shl i128 %r68, 64 -%r70 = or i128 %r64, %r69 -%r71 = zext i128 %r70 to i192 -%r73 = getelementptr i64, i64* %r4, i32 2 +%r68 = zext i64 %r67 to i192 +%r69 = shl i192 %r68, 128 +%r70 = or i192 %r64, %r69 +%r71 = zext i192 %r70 to i256 +%r73 = getelementptr i64, i64* %r4, i32 3 %r74 = load i64, i64* %r73 -%r75 = zext i64 %r74 to i192 -%r76 = shl i192 %r75, 128 -%r77 = or i192 %r71, %r76 -%r78 = zext i192 %r77 to i256 -%r80 = getelementptr i64, i64* %r4, i32 3 +%r75 = zext i64 %r74 to i256 +%r76 = shl i256 %r75, 192 +%r77 = or i256 %r71, %r76 +%r78 = zext i256 %r77 to i320 +%r80 = getelementptr i64, i64* %r4, i32 4 %r81 = load i64, i64* %r80 -%r82 = zext i64 %r81 to i256 -%r83 = shl i256 %r82, 192 -%r84 = or i256 %r78, %r83 -%r85 = zext i256 %r84 to i320 -%r87 = getelementptr i64, i64* %r4, i32 4 +%r82 = zext i64 %r81 to i320 +%r83 = shl i320 %r82, 256 +%r84 = or i320 %r78, %r83 +%r85 = zext i320 %r84 to i384 +%r87 = getelementptr i64, i64* %r4, i32 5 %r88 = load i64, i64* %r87 -%r89 = zext i64 %r88 to i320 -%r90 = shl i320 %r89, 256 -%r91 = or i320 %r85, %r90 -%r92 = zext i320 %r91 to i384 -%r94 = getelementptr i64, i64* %r4, i32 5 +%r89 = zext i64 %r88 to i384 +%r90 = shl i384 %r89, 320 +%r91 = or i384 %r85, %r90 +%r92 = zext i384 %r91 to i448 +%r94 = getelementptr i64, i64* %r4, i32 6 %r95 = load i64, i64* %r94 -%r96 = zext i64 %r95 to i384 -%r97 = shl i384 %r96, 320 -%r98 = or i384 %r92, %r97 -%r99 = zext i384 %r98 to i448 -%r101 = getelementptr i64, i64* %r4, i32 6 +%r96 = zext i64 %r95 to i448 +%r97 = shl i448 %r96, 384 +%r98 = or i448 %r92, %r97 +%r99 = zext i448 %r98 to i512 +%r101 = getelementptr i64, i64* %r4, i32 7 %r102 = load i64, i64* %r101 -%r103 = zext i64 %r102 to i448 -%r104 = shl i448 %r103, 384 -%r105 = or i448 %r99, %r104 -%r106 = zext i448 %r105 to i512 -%r108 = getelementptr i64, i64* %r4, i32 7 -%r109 = load i64, i64* %r108 -%r110 = zext i64 %r109 to i512 -%r111 = shl i512 %r110, 448 -%r112 = or i512 %r106, %r111 -%r113 = zext i512 %r112 to i576 -%r115 = getelementptr i64, i64* %r4, i32 8 -%r116 = load i64, i64* %r115 -%r117 = zext i64 %r116 to i576 -%r118 = shl i576 %r117, 512 -%r119 = or i576 %r113, %r118 -%r120 = zext i576 %r119 to i640 -%r121 = sub i640 %r62, %r120 -%r122 = trunc i640 %r121 to i576 -%r123 = trunc i576 %r122 to i64 -%r125 = getelementptr i64, i64* %r2, i32 0 -store i64 %r123, i64* %r125 -%r126 = lshr i576 %r122, 64 -%r127 = trunc i576 %r126 to i64 -%r129 = getelementptr i64, i64* %r2, i32 1 -store i64 %r127, i64* %r129 -%r130 = lshr i576 %r126, 64 -%r131 = trunc i576 %r130 to i64 -%r133 = getelementptr i64, i64* %r2, i32 2 -store i64 %r131, i64* %r133 -%r134 = lshr i576 %r130, 64 -%r135 = trunc i576 %r134 to i64 -%r137 = getelementptr i64, i64* %r2, i32 3 -store i64 %r135, i64* %r137 -%r138 = lshr i576 %r134, 64 -%r139 = trunc i576 %r138 to i64 -%r141 = getelementptr i64, i64* %r2, i32 4 -store i64 %r139, i64* %r141 -%r142 = lshr i576 %r138, 64 -%r143 = trunc i576 %r142 to i64 -%r145 = getelementptr i64, i64* %r2, i32 5 -store i64 %r143, i64* %r145 -%r146 = lshr i576 %r142, 64 -%r147 = trunc i576 %r146 to i64 -%r149 = getelementptr i64, i64* %r2, i32 6 -store i64 %r147, i64* %r149 -%r150 = lshr i576 %r146, 64 -%r151 = trunc i576 %r150 to i64 -%r153 = getelementptr i64, i64* %r2, i32 7 -store i64 %r151, i64* %r153 -%r154 = lshr i576 %r150, 64 -%r155 = trunc i576 %r154 to i64 -%r157 = getelementptr i64, i64* %r2, i32 8 -store i64 %r155, i64* %r157 -%r158 = lshr i640 %r121, 576 -%r159 = trunc i640 %r158 to i64 -%r161 = and i64 %r159, 1 -ret i64 %r161 +%r103 = zext i64 %r102 to i512 +%r104 = shl i512 %r103, 448 +%r105 = or i512 %r99, %r104 +%r106 = zext i512 %r105 to i576 +%r107 = sub i576 %r55, %r106 +%r108 = trunc i576 %r107 to i512 +%r110 = getelementptr i64, i64* %r2, i32 0 +%r111 = trunc i512 %r108 to i64 +store i64 %r111, i64* %r110 +%r112 = lshr i512 %r108, 64 +%r114 = getelementptr i64, i64* %r2, i32 1 +%r115 = trunc i512 %r112 to i64 +store i64 %r115, i64* %r114 +%r116 = lshr i512 %r112, 64 +%r118 = getelementptr i64, i64* %r2, i32 2 +%r119 = trunc i512 %r116 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i512 %r116, 64 +%r122 = getelementptr i64, i64* %r2, i32 3 +%r123 = trunc i512 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i512 %r120, 64 +%r126 = getelementptr i64, i64* %r2, i32 4 +%r127 = trunc i512 %r124 to i64 +store i64 %r127, i64* %r126 +%r128 = lshr i512 %r124, 64 +%r130 = getelementptr i64, i64* %r2, i32 5 +%r131 = trunc i512 %r128 to i64 +store i64 %r131, i64* %r130 +%r132 = lshr i512 %r128, 64 +%r134 = getelementptr i64, i64* %r2, i32 6 +%r135 = trunc i512 %r132 to i64 +store i64 %r135, i64* %r134 +%r136 = lshr i512 %r132, 64 +%r138 = getelementptr i64, i64* %r2, i32 7 +%r139 = trunc i512 %r136 to i64 +store i64 %r139, i64* %r138 +%r141 = lshr i576 %r107, 512 +%r142 = trunc i576 %r141 to i64 +%r143 = and i64 %r142, 1 +ret i64 %r143 } -define void @mcl_fp_shr1_9L(i64* noalias %r1, i64* noalias %r2) +define void @mcl_fp_shr1_8L(i64* noalias %r1, i64* noalias %r2) { %r3 = load i64, i64* %r2 %r4 = zext i64 %r3 to i128 @@ -13807,51 +6559,41 @@ define void @mcl_fp_shr1_9L(i64* noalias %r1, i64* noalias %r2) %r50 = zext i64 %r49 to i512 %r51 = shl i512 %r50, 448 %r52 = or i512 %r46, %r51 -%r53 = zext i512 %r52 to i576 -%r55 = getelementptr i64, i64* %r2, i32 8 -%r56 = load i64, i64* %r55 -%r57 = zext i64 %r56 to i576 -%r58 = shl i576 %r57, 512 -%r59 = or i576 %r53, %r58 -%r60 = lshr i576 %r59, 1 -%r61 = trunc i576 %r60 to i64 -%r63 = getelementptr i64, i64* %r1, i32 0 -store i64 %r61, i64* %r63 -%r64 = lshr i576 %r60, 64 -%r65 = trunc i576 %r64 to i64 -%r67 = getelementptr i64, i64* %r1, i32 1 -store i64 %r65, i64* %r67 -%r68 = lshr i576 %r64, 64 -%r69 = trunc i576 %r68 to i64 -%r71 = getelementptr i64, i64* %r1, i32 2 -store i64 %r69, i64* %r71 -%r72 = lshr i576 %r68, 64 -%r73 = trunc i576 %r72 to i64 -%r75 = getelementptr i64, i64* %r1, i32 3 -store i64 %r73, i64* %r75 -%r76 = lshr i576 %r72, 64 -%r77 = trunc i576 %r76 to i64 -%r79 = getelementptr i64, i64* %r1, i32 4 -store i64 %r77, i64* %r79 -%r80 = lshr i576 %r76, 64 -%r81 = trunc i576 %r80 to i64 -%r83 = getelementptr i64, i64* %r1, i32 5 -store i64 %r81, i64* %r83 -%r84 = lshr i576 %r80, 64 -%r85 = trunc i576 %r84 to i64 -%r87 = getelementptr i64, i64* %r1, i32 6 -store i64 %r85, i64* %r87 -%r88 = lshr i576 %r84, 64 -%r89 = trunc i576 %r88 to i64 -%r91 = getelementptr i64, i64* %r1, i32 7 -store i64 %r89, i64* %r91 -%r92 = lshr i576 %r88, 64 -%r93 = trunc i576 %r92 to i64 -%r95 = getelementptr i64, i64* %r1, i32 8 -store i64 %r93, i64* %r95 +%r53 = lshr i512 %r52, 1 +%r55 = getelementptr i64, i64* %r1, i32 0 +%r56 = trunc i512 %r53 to i64 +store i64 %r56, i64* %r55 +%r57 = lshr i512 %r53, 64 +%r59 = getelementptr i64, i64* %r1, i32 1 +%r60 = trunc i512 %r57 to i64 +store i64 %r60, i64* %r59 +%r61 = lshr i512 %r57, 64 +%r63 = getelementptr i64, i64* %r1, i32 2 +%r64 = trunc i512 %r61 to i64 +store i64 %r64, i64* %r63 +%r65 = lshr i512 %r61, 64 +%r67 = getelementptr i64, i64* %r1, i32 3 +%r68 = trunc i512 %r65 to i64 +store i64 %r68, i64* %r67 +%r69 = lshr i512 %r65, 64 +%r71 = getelementptr i64, i64* %r1, i32 4 +%r72 = trunc i512 %r69 to i64 +store i64 %r72, i64* %r71 +%r73 = lshr i512 %r69, 64 +%r75 = getelementptr i64, i64* %r1, i32 5 +%r76 = trunc i512 %r73 to i64 +store i64 %r76, i64* %r75 +%r77 = lshr i512 %r73, 64 +%r79 = getelementptr i64, i64* %r1, i32 6 +%r80 = trunc i512 %r77 to i64 +store i64 %r80, i64* %r79 +%r81 = lshr i512 %r77, 64 +%r83 = getelementptr i64, i64* %r1, i32 7 +%r84 = trunc i512 %r81 to i64 +store i64 %r84, i64* %r83 ret void } -define void @mcl_fp_add9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_add8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -13896,196 +6638,170 @@ define void @mcl_fp_add9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r52 = zext i64 %r51 to i512 %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = load i64, i64* %r3 -%r63 = zext i64 %r62 to i128 -%r65 = getelementptr i64, i64* %r3, i32 1 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i128 -%r68 = shl i128 %r67, 64 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i192 -%r72 = getelementptr i64, i64* %r3, i32 2 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i192 -%r75 = shl i192 %r74, 128 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r76 to i256 -%r79 = getelementptr i64, i64* %r3, i32 3 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 %r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i256 -%r82 = shl i256 %r81, 192 -%r83 = or i256 %r77, %r82 -%r84 = zext i256 %r83 to i320 -%r86 = getelementptr i64, i64* %r3, i32 4 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 %r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i320 -%r89 = shl i320 %r88, 256 -%r90 = or i320 %r84, %r89 -%r91 = zext i320 %r90 to i384 -%r93 = getelementptr i64, i64* %r3, i32 5 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 %r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i384 -%r96 = shl i384 %r95, 320 -%r97 = or i384 %r91, %r96 -%r98 = zext i384 %r97 to i448 -%r100 = getelementptr i64, i64* %r3, i32 6 +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 %r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i448 -%r103 = shl i448 %r102, 384 -%r104 = or i448 %r98, %r103 -%r105 = zext i448 %r104 to i512 -%r107 = getelementptr i64, i64* %r3, i32 7 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i512 -%r110 = shl i512 %r109, 448 -%r111 = or i512 %r105, %r110 -%r112 = zext i512 %r111 to i576 -%r114 = getelementptr i64, i64* %r3, i32 8 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i576 -%r117 = shl i576 %r116, 512 -%r118 = or i576 %r112, %r117 -%r119 = zext i576 %r61 to i640 -%r120 = zext i576 %r118 to i640 -%r121 = add i640 %r119, %r120 -%r122 = trunc i640 %r121 to i576 -%r123 = trunc i576 %r122 to i64 -%r125 = getelementptr i64, i64* %r1, i32 0 -store i64 %r123, i64* %r125 -%r126 = lshr i576 %r122, 64 -%r127 = trunc i576 %r126 to i64 -%r129 = getelementptr i64, i64* %r1, i32 1 -store i64 %r127, i64* %r129 -%r130 = lshr i576 %r126, 64 -%r131 = trunc i576 %r130 to i64 -%r133 = getelementptr i64, i64* %r1, i32 2 -store i64 %r131, i64* %r133 -%r134 = lshr i576 %r130, 64 -%r135 = trunc i576 %r134 to i64 -%r137 = getelementptr i64, i64* %r1, i32 3 -store i64 %r135, i64* %r137 -%r138 = lshr i576 %r134, 64 -%r139 = trunc i576 %r138 to i64 -%r141 = getelementptr i64, i64* %r1, i32 4 -store i64 %r139, i64* %r141 -%r142 = lshr i576 %r138, 64 -%r143 = trunc i576 %r142 to i64 -%r145 = getelementptr i64, i64* %r1, i32 5 -store i64 %r143, i64* %r145 -%r146 = lshr i576 %r142, 64 -%r147 = trunc i576 %r146 to i64 -%r149 = getelementptr i64, i64* %r1, i32 6 -store i64 %r147, i64* %r149 -%r150 = lshr i576 %r146, 64 -%r151 = trunc i576 %r150 to i64 -%r153 = getelementptr i64, i64* %r1, i32 7 -store i64 %r151, i64* %r153 -%r154 = lshr i576 %r150, 64 -%r155 = trunc i576 %r154 to i64 -%r157 = getelementptr i64, i64* %r1, i32 8 -store i64 %r155, i64* %r157 -%r158 = load i64, i64* %r4 -%r159 = zext i64 %r158 to i128 -%r161 = getelementptr i64, i64* %r4, i32 1 -%r162 = load i64, i64* %r161 -%r163 = zext i64 %r162 to i128 -%r164 = shl i128 %r163, 64 -%r165 = or i128 %r159, %r164 -%r166 = zext i128 %r165 to i192 -%r168 = getelementptr i64, i64* %r4, i32 2 -%r169 = load i64, i64* %r168 -%r170 = zext i64 %r169 to i192 -%r171 = shl i192 %r170, 128 -%r172 = or i192 %r166, %r171 -%r173 = zext i192 %r172 to i256 -%r175 = getelementptr i64, i64* %r4, i32 3 -%r176 = load i64, i64* %r175 -%r177 = zext i64 %r176 to i256 -%r178 = shl i256 %r177, 192 -%r179 = or i256 %r173, %r178 -%r180 = zext i256 %r179 to i320 -%r182 = getelementptr i64, i64* %r4, i32 4 -%r183 = load i64, i64* %r182 -%r184 = zext i64 %r183 to i320 -%r185 = shl i320 %r184, 256 -%r186 = or i320 %r180, %r185 -%r187 = zext i320 %r186 to i384 -%r189 = getelementptr i64, i64* %r4, i32 5 -%r190 = load i64, i64* %r189 -%r191 = zext i64 %r190 to i384 -%r192 = shl i384 %r191, 320 -%r193 = or i384 %r187, %r192 -%r194 = zext i384 %r193 to i448 -%r196 = getelementptr i64, i64* %r4, i32 6 -%r197 = load i64, i64* %r196 -%r198 = zext i64 %r197 to i448 -%r199 = shl i448 %r198, 384 -%r200 = or i448 %r194, %r199 -%r201 = zext i448 %r200 to i512 -%r203 = getelementptr i64, i64* %r4, i32 7 -%r204 = load i64, i64* %r203 -%r205 = zext i64 %r204 to i512 -%r206 = shl i512 %r205, 448 -%r207 = or i512 %r201, %r206 -%r208 = zext i512 %r207 to i576 -%r210 = getelementptr i64, i64* %r4, i32 8 -%r211 = load i64, i64* %r210 -%r212 = zext i64 %r211 to i576 -%r213 = shl i576 %r212, 512 -%r214 = or i576 %r208, %r213 -%r215 = zext i576 %r214 to i640 -%r216 = sub i640 %r121, %r215 -%r217 = lshr i640 %r216, 576 -%r218 = trunc i640 %r217 to i1 -br i1%r218, label %carry, label %nocarry +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = zext i512 %r54 to i576 +%r106 = zext i512 %r104 to i576 +%r107 = add i576 %r105, %r106 +%r108 = trunc i576 %r107 to i512 +%r110 = getelementptr i64, i64* %r1, i32 0 +%r111 = trunc i512 %r108 to i64 +store i64 %r111, i64* %r110 +%r112 = lshr i512 %r108, 64 +%r114 = getelementptr i64, i64* %r1, i32 1 +%r115 = trunc i512 %r112 to i64 +store i64 %r115, i64* %r114 +%r116 = lshr i512 %r112, 64 +%r118 = getelementptr i64, i64* %r1, i32 2 +%r119 = trunc i512 %r116 to i64 +store i64 %r119, i64* %r118 +%r120 = lshr i512 %r116, 64 +%r122 = getelementptr i64, i64* %r1, i32 3 +%r123 = trunc i512 %r120 to i64 +store i64 %r123, i64* %r122 +%r124 = lshr i512 %r120, 64 +%r126 = getelementptr i64, i64* %r1, i32 4 +%r127 = trunc i512 %r124 to i64 +store i64 %r127, i64* %r126 +%r128 = lshr i512 %r124, 64 +%r130 = getelementptr i64, i64* %r1, i32 5 +%r131 = trunc i512 %r128 to i64 +store i64 %r131, i64* %r130 +%r132 = lshr i512 %r128, 64 +%r134 = getelementptr i64, i64* %r1, i32 6 +%r135 = trunc i512 %r132 to i64 +store i64 %r135, i64* %r134 +%r136 = lshr i512 %r132, 64 +%r138 = getelementptr i64, i64* %r1, i32 7 +%r139 = trunc i512 %r136 to i64 +store i64 %r139, i64* %r138 +%r140 = load i64, i64* %r4 +%r141 = zext i64 %r140 to i128 +%r143 = getelementptr i64, i64* %r4, i32 1 +%r144 = load i64, i64* %r143 +%r145 = zext i64 %r144 to i128 +%r146 = shl i128 %r145, 64 +%r147 = or i128 %r141, %r146 +%r148 = zext i128 %r147 to i192 +%r150 = getelementptr i64, i64* %r4, i32 2 +%r151 = load i64, i64* %r150 +%r152 = zext i64 %r151 to i192 +%r153 = shl i192 %r152, 128 +%r154 = or i192 %r148, %r153 +%r155 = zext i192 %r154 to i256 +%r157 = getelementptr i64, i64* %r4, i32 3 +%r158 = load i64, i64* %r157 +%r159 = zext i64 %r158 to i256 +%r160 = shl i256 %r159, 192 +%r161 = or i256 %r155, %r160 +%r162 = zext i256 %r161 to i320 +%r164 = getelementptr i64, i64* %r4, i32 4 +%r165 = load i64, i64* %r164 +%r166 = zext i64 %r165 to i320 +%r167 = shl i320 %r166, 256 +%r168 = or i320 %r162, %r167 +%r169 = zext i320 %r168 to i384 +%r171 = getelementptr i64, i64* %r4, i32 5 +%r172 = load i64, i64* %r171 +%r173 = zext i64 %r172 to i384 +%r174 = shl i384 %r173, 320 +%r175 = or i384 %r169, %r174 +%r176 = zext i384 %r175 to i448 +%r178 = getelementptr i64, i64* %r4, i32 6 +%r179 = load i64, i64* %r178 +%r180 = zext i64 %r179 to i448 +%r181 = shl i448 %r180, 384 +%r182 = or i448 %r176, %r181 +%r183 = zext i448 %r182 to i512 +%r185 = getelementptr i64, i64* %r4, i32 7 +%r186 = load i64, i64* %r185 +%r187 = zext i64 %r186 to i512 +%r188 = shl i512 %r187, 448 +%r189 = or i512 %r183, %r188 +%r190 = zext i512 %r189 to i576 +%r191 = sub i576 %r107, %r190 +%r192 = lshr i576 %r191, 512 +%r193 = trunc i576 %r192 to i1 +br i1%r193, label %carry, label %nocarry nocarry: -%r219 = trunc i640 %r216 to i576 -%r220 = trunc i576 %r219 to i64 -%r222 = getelementptr i64, i64* %r1, i32 0 -store i64 %r220, i64* %r222 -%r223 = lshr i576 %r219, 64 -%r224 = trunc i576 %r223 to i64 -%r226 = getelementptr i64, i64* %r1, i32 1 -store i64 %r224, i64* %r226 -%r227 = lshr i576 %r223, 64 -%r228 = trunc i576 %r227 to i64 -%r230 = getelementptr i64, i64* %r1, i32 2 -store i64 %r228, i64* %r230 -%r231 = lshr i576 %r227, 64 -%r232 = trunc i576 %r231 to i64 -%r234 = getelementptr i64, i64* %r1, i32 3 -store i64 %r232, i64* %r234 -%r235 = lshr i576 %r231, 64 -%r236 = trunc i576 %r235 to i64 -%r238 = getelementptr i64, i64* %r1, i32 4 -store i64 %r236, i64* %r238 -%r239 = lshr i576 %r235, 64 -%r240 = trunc i576 %r239 to i64 -%r242 = getelementptr i64, i64* %r1, i32 5 -store i64 %r240, i64* %r242 -%r243 = lshr i576 %r239, 64 -%r244 = trunc i576 %r243 to i64 -%r246 = getelementptr i64, i64* %r1, i32 6 -store i64 %r244, i64* %r246 -%r247 = lshr i576 %r243, 64 -%r248 = trunc i576 %r247 to i64 -%r250 = getelementptr i64, i64* %r1, i32 7 -store i64 %r248, i64* %r250 -%r251 = lshr i576 %r247, 64 -%r252 = trunc i576 %r251 to i64 -%r254 = getelementptr i64, i64* %r1, i32 8 -store i64 %r252, i64* %r254 +%r194 = trunc i576 %r191 to i512 +%r196 = getelementptr i64, i64* %r1, i32 0 +%r197 = trunc i512 %r194 to i64 +store i64 %r197, i64* %r196 +%r198 = lshr i512 %r194, 64 +%r200 = getelementptr i64, i64* %r1, i32 1 +%r201 = trunc i512 %r198 to i64 +store i64 %r201, i64* %r200 +%r202 = lshr i512 %r198, 64 +%r204 = getelementptr i64, i64* %r1, i32 2 +%r205 = trunc i512 %r202 to i64 +store i64 %r205, i64* %r204 +%r206 = lshr i512 %r202, 64 +%r208 = getelementptr i64, i64* %r1, i32 3 +%r209 = trunc i512 %r206 to i64 +store i64 %r209, i64* %r208 +%r210 = lshr i512 %r206, 64 +%r212 = getelementptr i64, i64* %r1, i32 4 +%r213 = trunc i512 %r210 to i64 +store i64 %r213, i64* %r212 +%r214 = lshr i512 %r210, 64 +%r216 = getelementptr i64, i64* %r1, i32 5 +%r217 = trunc i512 %r214 to i64 +store i64 %r217, i64* %r216 +%r218 = lshr i512 %r214, 64 +%r220 = getelementptr i64, i64* %r1, i32 6 +%r221 = trunc i512 %r218 to i64 +store i64 %r221, i64* %r220 +%r222 = lshr i512 %r218, 64 +%r224 = getelementptr i64, i64* %r1, i32 7 +%r225 = trunc i512 %r222 to i64 +store i64 %r225, i64* %r224 ret void carry: ret void } -define void @mcl_fp_addNF9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_addNF8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -14130,153 +6846,131 @@ define void @mcl_fp_addNF9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r52 = zext i64 %r51 to i512 %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = load i64, i64* %r3 -%r63 = zext i64 %r62 to i128 -%r65 = getelementptr i64, i64* %r3, i32 1 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i128 -%r68 = shl i128 %r67, 64 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i192 -%r72 = getelementptr i64, i64* %r3, i32 2 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i192 -%r75 = shl i192 %r74, 128 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r76 to i256 -%r79 = getelementptr i64, i64* %r3, i32 3 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 %r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i256 -%r82 = shl i256 %r81, 192 -%r83 = or i256 %r77, %r82 -%r84 = zext i256 %r83 to i320 -%r86 = getelementptr i64, i64* %r3, i32 4 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 %r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i320 -%r89 = shl i320 %r88, 256 -%r90 = or i320 %r84, %r89 -%r91 = zext i320 %r90 to i384 -%r93 = getelementptr i64, i64* %r3, i32 5 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 %r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i384 -%r96 = shl i384 %r95, 320 -%r97 = or i384 %r91, %r96 -%r98 = zext i384 %r97 to i448 -%r100 = getelementptr i64, i64* %r3, i32 6 +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 %r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i448 -%r103 = shl i448 %r102, 384 -%r104 = or i448 %r98, %r103 -%r105 = zext i448 %r104 to i512 -%r107 = getelementptr i64, i64* %r3, i32 7 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i512 -%r110 = shl i512 %r109, 448 -%r111 = or i512 %r105, %r110 -%r112 = zext i512 %r111 to i576 -%r114 = getelementptr i64, i64* %r3, i32 8 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i576 -%r117 = shl i576 %r116, 512 -%r118 = or i576 %r112, %r117 -%r119 = add i576 %r61, %r118 -%r120 = load i64, i64* %r4 -%r121 = zext i64 %r120 to i128 -%r123 = getelementptr i64, i64* %r4, i32 1 +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = add i512 %r54, %r104 +%r106 = load i64, i64* %r4 +%r107 = zext i64 %r106 to i128 +%r109 = getelementptr i64, i64* %r4, i32 1 +%r110 = load i64, i64* %r109 +%r111 = zext i64 %r110 to i128 +%r112 = shl i128 %r111, 64 +%r113 = or i128 %r107, %r112 +%r114 = zext i128 %r113 to i192 +%r116 = getelementptr i64, i64* %r4, i32 2 +%r117 = load i64, i64* %r116 +%r118 = zext i64 %r117 to i192 +%r119 = shl i192 %r118, 128 +%r120 = or i192 %r114, %r119 +%r121 = zext i192 %r120 to i256 +%r123 = getelementptr i64, i64* %r4, i32 3 %r124 = load i64, i64* %r123 -%r125 = zext i64 %r124 to i128 -%r126 = shl i128 %r125, 64 -%r127 = or i128 %r121, %r126 -%r128 = zext i128 %r127 to i192 -%r130 = getelementptr i64, i64* %r4, i32 2 +%r125 = zext i64 %r124 to i256 +%r126 = shl i256 %r125, 192 +%r127 = or i256 %r121, %r126 +%r128 = zext i256 %r127 to i320 +%r130 = getelementptr i64, i64* %r4, i32 4 %r131 = load i64, i64* %r130 -%r132 = zext i64 %r131 to i192 -%r133 = shl i192 %r132, 128 -%r134 = or i192 %r128, %r133 -%r135 = zext i192 %r134 to i256 -%r137 = getelementptr i64, i64* %r4, i32 3 +%r132 = zext i64 %r131 to i320 +%r133 = shl i320 %r132, 256 +%r134 = or i320 %r128, %r133 +%r135 = zext i320 %r134 to i384 +%r137 = getelementptr i64, i64* %r4, i32 5 %r138 = load i64, i64* %r137 -%r139 = zext i64 %r138 to i256 -%r140 = shl i256 %r139, 192 -%r141 = or i256 %r135, %r140 -%r142 = zext i256 %r141 to i320 -%r144 = getelementptr i64, i64* %r4, i32 4 +%r139 = zext i64 %r138 to i384 +%r140 = shl i384 %r139, 320 +%r141 = or i384 %r135, %r140 +%r142 = zext i384 %r141 to i448 +%r144 = getelementptr i64, i64* %r4, i32 6 %r145 = load i64, i64* %r144 -%r146 = zext i64 %r145 to i320 -%r147 = shl i320 %r146, 256 -%r148 = or i320 %r142, %r147 -%r149 = zext i320 %r148 to i384 -%r151 = getelementptr i64, i64* %r4, i32 5 +%r146 = zext i64 %r145 to i448 +%r147 = shl i448 %r146, 384 +%r148 = or i448 %r142, %r147 +%r149 = zext i448 %r148 to i512 +%r151 = getelementptr i64, i64* %r4, i32 7 %r152 = load i64, i64* %r151 -%r153 = zext i64 %r152 to i384 -%r154 = shl i384 %r153, 320 -%r155 = or i384 %r149, %r154 -%r156 = zext i384 %r155 to i448 -%r158 = getelementptr i64, i64* %r4, i32 6 -%r159 = load i64, i64* %r158 -%r160 = zext i64 %r159 to i448 -%r161 = shl i448 %r160, 384 -%r162 = or i448 %r156, %r161 -%r163 = zext i448 %r162 to i512 -%r165 = getelementptr i64, i64* %r4, i32 7 -%r166 = load i64, i64* %r165 -%r167 = zext i64 %r166 to i512 -%r168 = shl i512 %r167, 448 -%r169 = or i512 %r163, %r168 -%r170 = zext i512 %r169 to i576 -%r172 = getelementptr i64, i64* %r4, i32 8 -%r173 = load i64, i64* %r172 -%r174 = zext i64 %r173 to i576 -%r175 = shl i576 %r174, 512 -%r176 = or i576 %r170, %r175 -%r177 = sub i576 %r119, %r176 -%r178 = lshr i576 %r177, 575 -%r179 = trunc i576 %r178 to i1 -%r180 = select i1 %r179, i576 %r119, i576 %r177 -%r181 = trunc i576 %r180 to i64 -%r183 = getelementptr i64, i64* %r1, i32 0 -store i64 %r181, i64* %r183 -%r184 = lshr i576 %r180, 64 -%r185 = trunc i576 %r184 to i64 -%r187 = getelementptr i64, i64* %r1, i32 1 -store i64 %r185, i64* %r187 -%r188 = lshr i576 %r184, 64 -%r189 = trunc i576 %r188 to i64 -%r191 = getelementptr i64, i64* %r1, i32 2 -store i64 %r189, i64* %r191 -%r192 = lshr i576 %r188, 64 -%r193 = trunc i576 %r192 to i64 -%r195 = getelementptr i64, i64* %r1, i32 3 -store i64 %r193, i64* %r195 -%r196 = lshr i576 %r192, 64 -%r197 = trunc i576 %r196 to i64 -%r199 = getelementptr i64, i64* %r1, i32 4 -store i64 %r197, i64* %r199 -%r200 = lshr i576 %r196, 64 -%r201 = trunc i576 %r200 to i64 -%r203 = getelementptr i64, i64* %r1, i32 5 -store i64 %r201, i64* %r203 -%r204 = lshr i576 %r200, 64 -%r205 = trunc i576 %r204 to i64 -%r207 = getelementptr i64, i64* %r1, i32 6 -store i64 %r205, i64* %r207 -%r208 = lshr i576 %r204, 64 -%r209 = trunc i576 %r208 to i64 -%r211 = getelementptr i64, i64* %r1, i32 7 -store i64 %r209, i64* %r211 -%r212 = lshr i576 %r208, 64 -%r213 = trunc i576 %r212 to i64 -%r215 = getelementptr i64, i64* %r1, i32 8 -store i64 %r213, i64* %r215 +%r153 = zext i64 %r152 to i512 +%r154 = shl i512 %r153, 448 +%r155 = or i512 %r149, %r154 +%r156 = sub i512 %r105, %r155 +%r157 = lshr i512 %r156, 511 +%r158 = trunc i512 %r157 to i1 +%r159 = select i1 %r158, i512 %r105, i512 %r156 +%r161 = getelementptr i64, i64* %r1, i32 0 +%r162 = trunc i512 %r159 to i64 +store i64 %r162, i64* %r161 +%r163 = lshr i512 %r159, 64 +%r165 = getelementptr i64, i64* %r1, i32 1 +%r166 = trunc i512 %r163 to i64 +store i64 %r166, i64* %r165 +%r167 = lshr i512 %r163, 64 +%r169 = getelementptr i64, i64* %r1, i32 2 +%r170 = trunc i512 %r167 to i64 +store i64 %r170, i64* %r169 +%r171 = lshr i512 %r167, 64 +%r173 = getelementptr i64, i64* %r1, i32 3 +%r174 = trunc i512 %r171 to i64 +store i64 %r174, i64* %r173 +%r175 = lshr i512 %r171, 64 +%r177 = getelementptr i64, i64* %r1, i32 4 +%r178 = trunc i512 %r175 to i64 +store i64 %r178, i64* %r177 +%r179 = lshr i512 %r175, 64 +%r181 = getelementptr i64, i64* %r1, i32 5 +%r182 = trunc i512 %r179 to i64 +store i64 %r182, i64* %r181 +%r183 = lshr i512 %r179, 64 +%r185 = getelementptr i64, i64* %r1, i32 6 +%r186 = trunc i512 %r183 to i64 +store i64 %r186, i64* %r185 +%r187 = lshr i512 %r183, 64 +%r189 = getelementptr i64, i64* %r1, i32 7 +%r190 = trunc i512 %r187 to i64 +store i64 %r190, i64* %r189 ret void } -define void @mcl_fp_sub9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_sub8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -14321,194 +7015,168 @@ define void @mcl_fp_sub9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r %r52 = zext i64 %r51 to i512 %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = load i64, i64* %r3 -%r63 = zext i64 %r62 to i128 -%r65 = getelementptr i64, i64* %r3, i32 1 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i128 -%r68 = shl i128 %r67, 64 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i192 -%r72 = getelementptr i64, i64* %r3, i32 2 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i192 -%r75 = shl i192 %r74, 128 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r76 to i256 -%r79 = getelementptr i64, i64* %r3, i32 3 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 %r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i256 -%r82 = shl i256 %r81, 192 -%r83 = or i256 %r77, %r82 -%r84 = zext i256 %r83 to i320 -%r86 = getelementptr i64, i64* %r3, i32 4 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 %r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i320 -%r89 = shl i320 %r88, 256 -%r90 = or i320 %r84, %r89 -%r91 = zext i320 %r90 to i384 -%r93 = getelementptr i64, i64* %r3, i32 5 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 %r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i384 -%r96 = shl i384 %r95, 320 -%r97 = or i384 %r91, %r96 -%r98 = zext i384 %r97 to i448 -%r100 = getelementptr i64, i64* %r3, i32 6 -%r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i448 -%r103 = shl i448 %r102, 384 -%r104 = or i448 %r98, %r103 -%r105 = zext i448 %r104 to i512 -%r107 = getelementptr i64, i64* %r3, i32 7 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i512 -%r110 = shl i512 %r109, 448 -%r111 = or i512 %r105, %r110 -%r112 = zext i512 %r111 to i576 -%r114 = getelementptr i64, i64* %r3, i32 8 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i576 -%r117 = shl i576 %r116, 512 -%r118 = or i576 %r112, %r117 -%r119 = zext i576 %r61 to i640 -%r120 = zext i576 %r118 to i640 -%r121 = sub i640 %r119, %r120 -%r122 = trunc i640 %r121 to i576 -%r123 = lshr i640 %r121, 576 -%r124 = trunc i640 %r123 to i1 -%r125 = trunc i576 %r122 to i64 -%r127 = getelementptr i64, i64* %r1, i32 0 -store i64 %r125, i64* %r127 -%r128 = lshr i576 %r122, 64 -%r129 = trunc i576 %r128 to i64 -%r131 = getelementptr i64, i64* %r1, i32 1 -store i64 %r129, i64* %r131 -%r132 = lshr i576 %r128, 64 -%r133 = trunc i576 %r132 to i64 -%r135 = getelementptr i64, i64* %r1, i32 2 -store i64 %r133, i64* %r135 -%r136 = lshr i576 %r132, 64 -%r137 = trunc i576 %r136 to i64 -%r139 = getelementptr i64, i64* %r1, i32 3 -store i64 %r137, i64* %r139 -%r140 = lshr i576 %r136, 64 -%r141 = trunc i576 %r140 to i64 -%r143 = getelementptr i64, i64* %r1, i32 4 -store i64 %r141, i64* %r143 -%r144 = lshr i576 %r140, 64 -%r145 = trunc i576 %r144 to i64 -%r147 = getelementptr i64, i64* %r1, i32 5 -store i64 %r145, i64* %r147 -%r148 = lshr i576 %r144, 64 -%r149 = trunc i576 %r148 to i64 -%r151 = getelementptr i64, i64* %r1, i32 6 -store i64 %r149, i64* %r151 -%r152 = lshr i576 %r148, 64 -%r153 = trunc i576 %r152 to i64 -%r155 = getelementptr i64, i64* %r1, i32 7 -store i64 %r153, i64* %r155 -%r156 = lshr i576 %r152, 64 -%r157 = trunc i576 %r156 to i64 -%r159 = getelementptr i64, i64* %r1, i32 8 -store i64 %r157, i64* %r159 -br i1%r124, label %carry, label %nocarry +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 +%r101 = load i64, i64* %r100 +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = zext i512 %r54 to i576 +%r106 = zext i512 %r104 to i576 +%r107 = sub i576 %r105, %r106 +%r108 = trunc i576 %r107 to i512 +%r109 = lshr i576 %r107, 512 +%r110 = trunc i576 %r109 to i1 +%r112 = getelementptr i64, i64* %r1, i32 0 +%r113 = trunc i512 %r108 to i64 +store i64 %r113, i64* %r112 +%r114 = lshr i512 %r108, 64 +%r116 = getelementptr i64, i64* %r1, i32 1 +%r117 = trunc i512 %r114 to i64 +store i64 %r117, i64* %r116 +%r118 = lshr i512 %r114, 64 +%r120 = getelementptr i64, i64* %r1, i32 2 +%r121 = trunc i512 %r118 to i64 +store i64 %r121, i64* %r120 +%r122 = lshr i512 %r118, 64 +%r124 = getelementptr i64, i64* %r1, i32 3 +%r125 = trunc i512 %r122 to i64 +store i64 %r125, i64* %r124 +%r126 = lshr i512 %r122, 64 +%r128 = getelementptr i64, i64* %r1, i32 4 +%r129 = trunc i512 %r126 to i64 +store i64 %r129, i64* %r128 +%r130 = lshr i512 %r126, 64 +%r132 = getelementptr i64, i64* %r1, i32 5 +%r133 = trunc i512 %r130 to i64 +store i64 %r133, i64* %r132 +%r134 = lshr i512 %r130, 64 +%r136 = getelementptr i64, i64* %r1, i32 6 +%r137 = trunc i512 %r134 to i64 +store i64 %r137, i64* %r136 +%r138 = lshr i512 %r134, 64 +%r140 = getelementptr i64, i64* %r1, i32 7 +%r141 = trunc i512 %r138 to i64 +store i64 %r141, i64* %r140 +br i1%r110, label %carry, label %nocarry nocarry: ret void carry: -%r160 = load i64, i64* %r4 -%r161 = zext i64 %r160 to i128 -%r163 = getelementptr i64, i64* %r4, i32 1 -%r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i128 -%r166 = shl i128 %r165, 64 -%r167 = or i128 %r161, %r166 -%r168 = zext i128 %r167 to i192 -%r170 = getelementptr i64, i64* %r4, i32 2 -%r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i192 -%r173 = shl i192 %r172, 128 -%r174 = or i192 %r168, %r173 -%r175 = zext i192 %r174 to i256 -%r177 = getelementptr i64, i64* %r4, i32 3 -%r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i256 -%r180 = shl i256 %r179, 192 -%r181 = or i256 %r175, %r180 -%r182 = zext i256 %r181 to i320 -%r184 = getelementptr i64, i64* %r4, i32 4 -%r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i320 -%r187 = shl i320 %r186, 256 -%r188 = or i320 %r182, %r187 -%r189 = zext i320 %r188 to i384 -%r191 = getelementptr i64, i64* %r4, i32 5 -%r192 = load i64, i64* %r191 -%r193 = zext i64 %r192 to i384 -%r194 = shl i384 %r193, 320 -%r195 = or i384 %r189, %r194 -%r196 = zext i384 %r195 to i448 -%r198 = getelementptr i64, i64* %r4, i32 6 -%r199 = load i64, i64* %r198 -%r200 = zext i64 %r199 to i448 -%r201 = shl i448 %r200, 384 -%r202 = or i448 %r196, %r201 -%r203 = zext i448 %r202 to i512 -%r205 = getelementptr i64, i64* %r4, i32 7 -%r206 = load i64, i64* %r205 -%r207 = zext i64 %r206 to i512 -%r208 = shl i512 %r207, 448 -%r209 = or i512 %r203, %r208 -%r210 = zext i512 %r209 to i576 -%r212 = getelementptr i64, i64* %r4, i32 8 -%r213 = load i64, i64* %r212 -%r214 = zext i64 %r213 to i576 -%r215 = shl i576 %r214, 512 -%r216 = or i576 %r210, %r215 -%r217 = add i576 %r122, %r216 -%r218 = trunc i576 %r217 to i64 -%r220 = getelementptr i64, i64* %r1, i32 0 -store i64 %r218, i64* %r220 -%r221 = lshr i576 %r217, 64 -%r222 = trunc i576 %r221 to i64 -%r224 = getelementptr i64, i64* %r1, i32 1 -store i64 %r222, i64* %r224 -%r225 = lshr i576 %r221, 64 -%r226 = trunc i576 %r225 to i64 -%r228 = getelementptr i64, i64* %r1, i32 2 -store i64 %r226, i64* %r228 -%r229 = lshr i576 %r225, 64 -%r230 = trunc i576 %r229 to i64 -%r232 = getelementptr i64, i64* %r1, i32 3 -store i64 %r230, i64* %r232 -%r233 = lshr i576 %r229, 64 -%r234 = trunc i576 %r233 to i64 -%r236 = getelementptr i64, i64* %r1, i32 4 -store i64 %r234, i64* %r236 -%r237 = lshr i576 %r233, 64 -%r238 = trunc i576 %r237 to i64 -%r240 = getelementptr i64, i64* %r1, i32 5 -store i64 %r238, i64* %r240 -%r241 = lshr i576 %r237, 64 -%r242 = trunc i576 %r241 to i64 -%r244 = getelementptr i64, i64* %r1, i32 6 -store i64 %r242, i64* %r244 -%r245 = lshr i576 %r241, 64 -%r246 = trunc i576 %r245 to i64 -%r248 = getelementptr i64, i64* %r1, i32 7 -store i64 %r246, i64* %r248 -%r249 = lshr i576 %r245, 64 -%r250 = trunc i576 %r249 to i64 -%r252 = getelementptr i64, i64* %r1, i32 8 -store i64 %r250, i64* %r252 +%r142 = load i64, i64* %r4 +%r143 = zext i64 %r142 to i128 +%r145 = getelementptr i64, i64* %r4, i32 1 +%r146 = load i64, i64* %r145 +%r147 = zext i64 %r146 to i128 +%r148 = shl i128 %r147, 64 +%r149 = or i128 %r143, %r148 +%r150 = zext i128 %r149 to i192 +%r152 = getelementptr i64, i64* %r4, i32 2 +%r153 = load i64, i64* %r152 +%r154 = zext i64 %r153 to i192 +%r155 = shl i192 %r154, 128 +%r156 = or i192 %r150, %r155 +%r157 = zext i192 %r156 to i256 +%r159 = getelementptr i64, i64* %r4, i32 3 +%r160 = load i64, i64* %r159 +%r161 = zext i64 %r160 to i256 +%r162 = shl i256 %r161, 192 +%r163 = or i256 %r157, %r162 +%r164 = zext i256 %r163 to i320 +%r166 = getelementptr i64, i64* %r4, i32 4 +%r167 = load i64, i64* %r166 +%r168 = zext i64 %r167 to i320 +%r169 = shl i320 %r168, 256 +%r170 = or i320 %r164, %r169 +%r171 = zext i320 %r170 to i384 +%r173 = getelementptr i64, i64* %r4, i32 5 +%r174 = load i64, i64* %r173 +%r175 = zext i64 %r174 to i384 +%r176 = shl i384 %r175, 320 +%r177 = or i384 %r171, %r176 +%r178 = zext i384 %r177 to i448 +%r180 = getelementptr i64, i64* %r4, i32 6 +%r181 = load i64, i64* %r180 +%r182 = zext i64 %r181 to i448 +%r183 = shl i448 %r182, 384 +%r184 = or i448 %r178, %r183 +%r185 = zext i448 %r184 to i512 +%r187 = getelementptr i64, i64* %r4, i32 7 +%r188 = load i64, i64* %r187 +%r189 = zext i64 %r188 to i512 +%r190 = shl i512 %r189, 448 +%r191 = or i512 %r185, %r190 +%r192 = add i512 %r108, %r191 +%r194 = getelementptr i64, i64* %r1, i32 0 +%r195 = trunc i512 %r192 to i64 +store i64 %r195, i64* %r194 +%r196 = lshr i512 %r192, 64 +%r198 = getelementptr i64, i64* %r1, i32 1 +%r199 = trunc i512 %r196 to i64 +store i64 %r199, i64* %r198 +%r200 = lshr i512 %r196, 64 +%r202 = getelementptr i64, i64* %r1, i32 2 +%r203 = trunc i512 %r200 to i64 +store i64 %r203, i64* %r202 +%r204 = lshr i512 %r200, 64 +%r206 = getelementptr i64, i64* %r1, i32 3 +%r207 = trunc i512 %r204 to i64 +store i64 %r207, i64* %r206 +%r208 = lshr i512 %r204, 64 +%r210 = getelementptr i64, i64* %r1, i32 4 +%r211 = trunc i512 %r208 to i64 +store i64 %r211, i64* %r210 +%r212 = lshr i512 %r208, 64 +%r214 = getelementptr i64, i64* %r1, i32 5 +%r215 = trunc i512 %r212 to i64 +store i64 %r215, i64* %r214 +%r216 = lshr i512 %r212, 64 +%r218 = getelementptr i64, i64* %r1, i32 6 +%r219 = trunc i512 %r216 to i64 +store i64 %r219, i64* %r218 +%r220 = lshr i512 %r216, 64 +%r222 = getelementptr i64, i64* %r1, i32 7 +%r223 = trunc i512 %r220 to i64 +store i64 %r223, i64* %r222 ret void } -define void @mcl_fp_subNF9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fp_subNF8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -14553,153 +7221,131 @@ define void @mcl_fp_subNF9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r52 = zext i64 %r51 to i512 %r53 = shl i512 %r52, 448 %r54 = or i512 %r48, %r53 -%r55 = zext i512 %r54 to i576 -%r57 = getelementptr i64, i64* %r2, i32 8 -%r58 = load i64, i64* %r57 -%r59 = zext i64 %r58 to i576 -%r60 = shl i576 %r59, 512 -%r61 = or i576 %r55, %r60 -%r62 = load i64, i64* %r3 -%r63 = zext i64 %r62 to i128 -%r65 = getelementptr i64, i64* %r3, i32 1 +%r55 = load i64, i64* %r3 +%r56 = zext i64 %r55 to i128 +%r58 = getelementptr i64, i64* %r3, i32 1 +%r59 = load i64, i64* %r58 +%r60 = zext i64 %r59 to i128 +%r61 = shl i128 %r60, 64 +%r62 = or i128 %r56, %r61 +%r63 = zext i128 %r62 to i192 +%r65 = getelementptr i64, i64* %r3, i32 2 %r66 = load i64, i64* %r65 -%r67 = zext i64 %r66 to i128 -%r68 = shl i128 %r67, 64 -%r69 = or i128 %r63, %r68 -%r70 = zext i128 %r69 to i192 -%r72 = getelementptr i64, i64* %r3, i32 2 +%r67 = zext i64 %r66 to i192 +%r68 = shl i192 %r67, 128 +%r69 = or i192 %r63, %r68 +%r70 = zext i192 %r69 to i256 +%r72 = getelementptr i64, i64* %r3, i32 3 %r73 = load i64, i64* %r72 -%r74 = zext i64 %r73 to i192 -%r75 = shl i192 %r74, 128 -%r76 = or i192 %r70, %r75 -%r77 = zext i192 %r76 to i256 -%r79 = getelementptr i64, i64* %r3, i32 3 +%r74 = zext i64 %r73 to i256 +%r75 = shl i256 %r74, 192 +%r76 = or i256 %r70, %r75 +%r77 = zext i256 %r76 to i320 +%r79 = getelementptr i64, i64* %r3, i32 4 %r80 = load i64, i64* %r79 -%r81 = zext i64 %r80 to i256 -%r82 = shl i256 %r81, 192 -%r83 = or i256 %r77, %r82 -%r84 = zext i256 %r83 to i320 -%r86 = getelementptr i64, i64* %r3, i32 4 +%r81 = zext i64 %r80 to i320 +%r82 = shl i320 %r81, 256 +%r83 = or i320 %r77, %r82 +%r84 = zext i320 %r83 to i384 +%r86 = getelementptr i64, i64* %r3, i32 5 %r87 = load i64, i64* %r86 -%r88 = zext i64 %r87 to i320 -%r89 = shl i320 %r88, 256 -%r90 = or i320 %r84, %r89 -%r91 = zext i320 %r90 to i384 -%r93 = getelementptr i64, i64* %r3, i32 5 +%r88 = zext i64 %r87 to i384 +%r89 = shl i384 %r88, 320 +%r90 = or i384 %r84, %r89 +%r91 = zext i384 %r90 to i448 +%r93 = getelementptr i64, i64* %r3, i32 6 %r94 = load i64, i64* %r93 -%r95 = zext i64 %r94 to i384 -%r96 = shl i384 %r95, 320 -%r97 = or i384 %r91, %r96 -%r98 = zext i384 %r97 to i448 -%r100 = getelementptr i64, i64* %r3, i32 6 +%r95 = zext i64 %r94 to i448 +%r96 = shl i448 %r95, 384 +%r97 = or i448 %r91, %r96 +%r98 = zext i448 %r97 to i512 +%r100 = getelementptr i64, i64* %r3, i32 7 %r101 = load i64, i64* %r100 -%r102 = zext i64 %r101 to i448 -%r103 = shl i448 %r102, 384 -%r104 = or i448 %r98, %r103 -%r105 = zext i448 %r104 to i512 -%r107 = getelementptr i64, i64* %r3, i32 7 -%r108 = load i64, i64* %r107 -%r109 = zext i64 %r108 to i512 -%r110 = shl i512 %r109, 448 -%r111 = or i512 %r105, %r110 -%r112 = zext i512 %r111 to i576 -%r114 = getelementptr i64, i64* %r3, i32 8 -%r115 = load i64, i64* %r114 -%r116 = zext i64 %r115 to i576 -%r117 = shl i576 %r116, 512 -%r118 = or i576 %r112, %r117 -%r119 = sub i576 %r61, %r118 -%r120 = lshr i576 %r119, 575 -%r121 = trunc i576 %r120 to i1 -%r122 = load i64, i64* %r4 -%r123 = zext i64 %r122 to i128 -%r125 = getelementptr i64, i64* %r4, i32 1 +%r102 = zext i64 %r101 to i512 +%r103 = shl i512 %r102, 448 +%r104 = or i512 %r98, %r103 +%r105 = sub i512 %r54, %r104 +%r106 = lshr i512 %r105, 511 +%r107 = trunc i512 %r106 to i1 +%r108 = load i64, i64* %r4 +%r109 = zext i64 %r108 to i128 +%r111 = getelementptr i64, i64* %r4, i32 1 +%r112 = load i64, i64* %r111 +%r113 = zext i64 %r112 to i128 +%r114 = shl i128 %r113, 64 +%r115 = or i128 %r109, %r114 +%r116 = zext i128 %r115 to i192 +%r118 = getelementptr i64, i64* %r4, i32 2 +%r119 = load i64, i64* %r118 +%r120 = zext i64 %r119 to i192 +%r121 = shl i192 %r120, 128 +%r122 = or i192 %r116, %r121 +%r123 = zext i192 %r122 to i256 +%r125 = getelementptr i64, i64* %r4, i32 3 %r126 = load i64, i64* %r125 -%r127 = zext i64 %r126 to i128 -%r128 = shl i128 %r127, 64 -%r129 = or i128 %r123, %r128 -%r130 = zext i128 %r129 to i192 -%r132 = getelementptr i64, i64* %r4, i32 2 +%r127 = zext i64 %r126 to i256 +%r128 = shl i256 %r127, 192 +%r129 = or i256 %r123, %r128 +%r130 = zext i256 %r129 to i320 +%r132 = getelementptr i64, i64* %r4, i32 4 %r133 = load i64, i64* %r132 -%r134 = zext i64 %r133 to i192 -%r135 = shl i192 %r134, 128 -%r136 = or i192 %r130, %r135 -%r137 = zext i192 %r136 to i256 -%r139 = getelementptr i64, i64* %r4, i32 3 +%r134 = zext i64 %r133 to i320 +%r135 = shl i320 %r134, 256 +%r136 = or i320 %r130, %r135 +%r137 = zext i320 %r136 to i384 +%r139 = getelementptr i64, i64* %r4, i32 5 %r140 = load i64, i64* %r139 -%r141 = zext i64 %r140 to i256 -%r142 = shl i256 %r141, 192 -%r143 = or i256 %r137, %r142 -%r144 = zext i256 %r143 to i320 -%r146 = getelementptr i64, i64* %r4, i32 4 +%r141 = zext i64 %r140 to i384 +%r142 = shl i384 %r141, 320 +%r143 = or i384 %r137, %r142 +%r144 = zext i384 %r143 to i448 +%r146 = getelementptr i64, i64* %r4, i32 6 %r147 = load i64, i64* %r146 -%r148 = zext i64 %r147 to i320 -%r149 = shl i320 %r148, 256 -%r150 = or i320 %r144, %r149 -%r151 = zext i320 %r150 to i384 -%r153 = getelementptr i64, i64* %r4, i32 5 +%r148 = zext i64 %r147 to i448 +%r149 = shl i448 %r148, 384 +%r150 = or i448 %r144, %r149 +%r151 = zext i448 %r150 to i512 +%r153 = getelementptr i64, i64* %r4, i32 7 %r154 = load i64, i64* %r153 -%r155 = zext i64 %r154 to i384 -%r156 = shl i384 %r155, 320 -%r157 = or i384 %r151, %r156 -%r158 = zext i384 %r157 to i448 -%r160 = getelementptr i64, i64* %r4, i32 6 -%r161 = load i64, i64* %r160 -%r162 = zext i64 %r161 to i448 -%r163 = shl i448 %r162, 384 -%r164 = or i448 %r158, %r163 -%r165 = zext i448 %r164 to i512 -%r167 = getelementptr i64, i64* %r4, i32 7 -%r168 = load i64, i64* %r167 -%r169 = zext i64 %r168 to i512 -%r170 = shl i512 %r169, 448 -%r171 = or i512 %r165, %r170 -%r172 = zext i512 %r171 to i576 -%r174 = getelementptr i64, i64* %r4, i32 8 -%r175 = load i64, i64* %r174 -%r176 = zext i64 %r175 to i576 -%r177 = shl i576 %r176, 512 -%r178 = or i576 %r172, %r177 -%r180 = select i1 %r121, i576 %r178, i576 0 -%r181 = add i576 %r119, %r180 -%r182 = trunc i576 %r181 to i64 -%r184 = getelementptr i64, i64* %r1, i32 0 -store i64 %r182, i64* %r184 -%r185 = lshr i576 %r181, 64 -%r186 = trunc i576 %r185 to i64 -%r188 = getelementptr i64, i64* %r1, i32 1 -store i64 %r186, i64* %r188 -%r189 = lshr i576 %r185, 64 -%r190 = trunc i576 %r189 to i64 -%r192 = getelementptr i64, i64* %r1, i32 2 -store i64 %r190, i64* %r192 -%r193 = lshr i576 %r189, 64 -%r194 = trunc i576 %r193 to i64 -%r196 = getelementptr i64, i64* %r1, i32 3 -store i64 %r194, i64* %r196 -%r197 = lshr i576 %r193, 64 -%r198 = trunc i576 %r197 to i64 -%r200 = getelementptr i64, i64* %r1, i32 4 -store i64 %r198, i64* %r200 -%r201 = lshr i576 %r197, 64 -%r202 = trunc i576 %r201 to i64 -%r204 = getelementptr i64, i64* %r1, i32 5 -store i64 %r202, i64* %r204 -%r205 = lshr i576 %r201, 64 -%r206 = trunc i576 %r205 to i64 -%r208 = getelementptr i64, i64* %r1, i32 6 -store i64 %r206, i64* %r208 -%r209 = lshr i576 %r205, 64 -%r210 = trunc i576 %r209 to i64 -%r212 = getelementptr i64, i64* %r1, i32 7 -store i64 %r210, i64* %r212 -%r213 = lshr i576 %r209, 64 -%r214 = trunc i576 %r213 to i64 -%r216 = getelementptr i64, i64* %r1, i32 8 -store i64 %r214, i64* %r216 +%r155 = zext i64 %r154 to i512 +%r156 = shl i512 %r155, 448 +%r157 = or i512 %r151, %r156 +%r159 = select i1 %r107, i512 %r157, i512 0 +%r160 = add i512 %r105, %r159 +%r162 = getelementptr i64, i64* %r1, i32 0 +%r163 = trunc i512 %r160 to i64 +store i64 %r163, i64* %r162 +%r164 = lshr i512 %r160, 64 +%r166 = getelementptr i64, i64* %r1, i32 1 +%r167 = trunc i512 %r164 to i64 +store i64 %r167, i64* %r166 +%r168 = lshr i512 %r164, 64 +%r170 = getelementptr i64, i64* %r1, i32 2 +%r171 = trunc i512 %r168 to i64 +store i64 %r171, i64* %r170 +%r172 = lshr i512 %r168, 64 +%r174 = getelementptr i64, i64* %r1, i32 3 +%r175 = trunc i512 %r172 to i64 +store i64 %r175, i64* %r174 +%r176 = lshr i512 %r172, 64 +%r178 = getelementptr i64, i64* %r1, i32 4 +%r179 = trunc i512 %r176 to i64 +store i64 %r179, i64* %r178 +%r180 = lshr i512 %r176, 64 +%r182 = getelementptr i64, i64* %r1, i32 5 +%r183 = trunc i512 %r180 to i64 +store i64 %r183, i64* %r182 +%r184 = lshr i512 %r180, 64 +%r186 = getelementptr i64, i64* %r1, i32 6 +%r187 = trunc i512 %r184 to i64 +store i64 %r187, i64* %r186 +%r188 = lshr i512 %r184, 64 +%r190 = getelementptr i64, i64* %r1, i32 7 +%r191 = trunc i512 %r188 to i64 +store i64 %r191, i64* %r190 ret void } -define void @mcl_fpDbl_add9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_add8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -14792,256 +7438,218 @@ define void @mcl_fpDbl_add9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r108 = zext i64 %r107 to i1024 %r109 = shl i1024 %r108, 960 %r110 = or i1024 %r104, %r109 -%r111 = zext i1024 %r110 to i1088 -%r113 = getelementptr i64, i64* %r2, i32 16 -%r114 = load i64, i64* %r113 -%r115 = zext i64 %r114 to i1088 -%r116 = shl i1088 %r115, 1024 -%r117 = or i1088 %r111, %r116 -%r118 = zext i1088 %r117 to i1152 -%r120 = getelementptr i64, i64* %r2, i32 17 -%r121 = load i64, i64* %r120 -%r122 = zext i64 %r121 to i1152 -%r123 = shl i1152 %r122, 1088 -%r124 = or i1152 %r118, %r123 -%r125 = load i64, i64* %r3 -%r126 = zext i64 %r125 to i128 -%r128 = getelementptr i64, i64* %r3, i32 1 +%r111 = load i64, i64* %r3 +%r112 = zext i64 %r111 to i128 +%r114 = getelementptr i64, i64* %r3, i32 1 +%r115 = load i64, i64* %r114 +%r116 = zext i64 %r115 to i128 +%r117 = shl i128 %r116, 64 +%r118 = or i128 %r112, %r117 +%r119 = zext i128 %r118 to i192 +%r121 = getelementptr i64, i64* %r3, i32 2 +%r122 = load i64, i64* %r121 +%r123 = zext i64 %r122 to i192 +%r124 = shl i192 %r123, 128 +%r125 = or i192 %r119, %r124 +%r126 = zext i192 %r125 to i256 +%r128 = getelementptr i64, i64* %r3, i32 3 %r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i128 -%r131 = shl i128 %r130, 64 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i192 -%r135 = getelementptr i64, i64* %r3, i32 2 +%r130 = zext i64 %r129 to i256 +%r131 = shl i256 %r130, 192 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i320 +%r135 = getelementptr i64, i64* %r3, i32 4 %r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i192 -%r138 = shl i192 %r137, 128 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i256 -%r142 = getelementptr i64, i64* %r3, i32 3 +%r137 = zext i64 %r136 to i320 +%r138 = shl i320 %r137, 256 +%r139 = or i320 %r133, %r138 +%r140 = zext i320 %r139 to i384 +%r142 = getelementptr i64, i64* %r3, i32 5 %r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i256 -%r145 = shl i256 %r144, 192 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i320 -%r149 = getelementptr i64, i64* %r3, i32 4 +%r144 = zext i64 %r143 to i384 +%r145 = shl i384 %r144, 320 +%r146 = or i384 %r140, %r145 +%r147 = zext i384 %r146 to i448 +%r149 = getelementptr i64, i64* %r3, i32 6 %r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i320 -%r152 = shl i320 %r151, 256 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i384 -%r156 = getelementptr i64, i64* %r3, i32 5 +%r151 = zext i64 %r150 to i448 +%r152 = shl i448 %r151, 384 +%r153 = or i448 %r147, %r152 +%r154 = zext i448 %r153 to i512 +%r156 = getelementptr i64, i64* %r3, i32 7 %r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i384 -%r159 = shl i384 %r158, 320 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r160 to i448 -%r163 = getelementptr i64, i64* %r3, i32 6 +%r158 = zext i64 %r157 to i512 +%r159 = shl i512 %r158, 448 +%r160 = or i512 %r154, %r159 +%r161 = zext i512 %r160 to i576 +%r163 = getelementptr i64, i64* %r3, i32 8 %r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i448 -%r166 = shl i448 %r165, 384 -%r167 = or i448 %r161, %r166 -%r168 = zext i448 %r167 to i512 -%r170 = getelementptr i64, i64* %r3, i32 7 +%r165 = zext i64 %r164 to i576 +%r166 = shl i576 %r165, 512 +%r167 = or i576 %r161, %r166 +%r168 = zext i576 %r167 to i640 +%r170 = getelementptr i64, i64* %r3, i32 9 %r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i512 -%r173 = shl i512 %r172, 448 -%r174 = or i512 %r168, %r173 -%r175 = zext i512 %r174 to i576 -%r177 = getelementptr i64, i64* %r3, i32 8 +%r172 = zext i64 %r171 to i640 +%r173 = shl i640 %r172, 576 +%r174 = or i640 %r168, %r173 +%r175 = zext i640 %r174 to i704 +%r177 = getelementptr i64, i64* %r3, i32 10 %r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i576 -%r180 = shl i576 %r179, 512 -%r181 = or i576 %r175, %r180 -%r182 = zext i576 %r181 to i640 -%r184 = getelementptr i64, i64* %r3, i32 9 +%r179 = zext i64 %r178 to i704 +%r180 = shl i704 %r179, 640 +%r181 = or i704 %r175, %r180 +%r182 = zext i704 %r181 to i768 +%r184 = getelementptr i64, i64* %r3, i32 11 %r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i640 -%r187 = shl i640 %r186, 576 -%r188 = or i640 %r182, %r187 -%r189 = zext i640 %r188 to i704 -%r191 = getelementptr i64, i64* %r3, i32 10 +%r186 = zext i64 %r185 to i768 +%r187 = shl i768 %r186, 704 +%r188 = or i768 %r182, %r187 +%r189 = zext i768 %r188 to i832 +%r191 = getelementptr i64, i64* %r3, i32 12 %r192 = load i64, i64* %r191 -%r193 = zext i64 %r192 to i704 -%r194 = shl i704 %r193, 640 -%r195 = or i704 %r189, %r194 -%r196 = zext i704 %r195 to i768 -%r198 = getelementptr i64, i64* %r3, i32 11 +%r193 = zext i64 %r192 to i832 +%r194 = shl i832 %r193, 768 +%r195 = or i832 %r189, %r194 +%r196 = zext i832 %r195 to i896 +%r198 = getelementptr i64, i64* %r3, i32 13 %r199 = load i64, i64* %r198 -%r200 = zext i64 %r199 to i768 -%r201 = shl i768 %r200, 704 -%r202 = or i768 %r196, %r201 -%r203 = zext i768 %r202 to i832 -%r205 = getelementptr i64, i64* %r3, i32 12 +%r200 = zext i64 %r199 to i896 +%r201 = shl i896 %r200, 832 +%r202 = or i896 %r196, %r201 +%r203 = zext i896 %r202 to i960 +%r205 = getelementptr i64, i64* %r3, i32 14 %r206 = load i64, i64* %r205 -%r207 = zext i64 %r206 to i832 -%r208 = shl i832 %r207, 768 -%r209 = or i832 %r203, %r208 -%r210 = zext i832 %r209 to i896 -%r212 = getelementptr i64, i64* %r3, i32 13 +%r207 = zext i64 %r206 to i960 +%r208 = shl i960 %r207, 896 +%r209 = or i960 %r203, %r208 +%r210 = zext i960 %r209 to i1024 +%r212 = getelementptr i64, i64* %r3, i32 15 %r213 = load i64, i64* %r212 -%r214 = zext i64 %r213 to i896 -%r215 = shl i896 %r214, 832 -%r216 = or i896 %r210, %r215 -%r217 = zext i896 %r216 to i960 -%r219 = getelementptr i64, i64* %r3, i32 14 -%r220 = load i64, i64* %r219 -%r221 = zext i64 %r220 to i960 -%r222 = shl i960 %r221, 896 -%r223 = or i960 %r217, %r222 -%r224 = zext i960 %r223 to i1024 -%r226 = getelementptr i64, i64* %r3, i32 15 -%r227 = load i64, i64* %r226 -%r228 = zext i64 %r227 to i1024 -%r229 = shl i1024 %r228, 960 -%r230 = or i1024 %r224, %r229 -%r231 = zext i1024 %r230 to i1088 -%r233 = getelementptr i64, i64* %r3, i32 16 -%r234 = load i64, i64* %r233 -%r235 = zext i64 %r234 to i1088 -%r236 = shl i1088 %r235, 1024 -%r237 = or i1088 %r231, %r236 -%r238 = zext i1088 %r237 to i1152 -%r240 = getelementptr i64, i64* %r3, i32 17 -%r241 = load i64, i64* %r240 -%r242 = zext i64 %r241 to i1152 -%r243 = shl i1152 %r242, 1088 -%r244 = or i1152 %r238, %r243 -%r245 = zext i1152 %r124 to i1216 -%r246 = zext i1152 %r244 to i1216 -%r247 = add i1216 %r245, %r246 -%r248 = trunc i1216 %r247 to i576 -%r249 = trunc i576 %r248 to i64 -%r251 = getelementptr i64, i64* %r1, i32 0 -store i64 %r249, i64* %r251 -%r252 = lshr i576 %r248, 64 -%r253 = trunc i576 %r252 to i64 -%r255 = getelementptr i64, i64* %r1, i32 1 -store i64 %r253, i64* %r255 -%r256 = lshr i576 %r252, 64 -%r257 = trunc i576 %r256 to i64 -%r259 = getelementptr i64, i64* %r1, i32 2 -store i64 %r257, i64* %r259 -%r260 = lshr i576 %r256, 64 -%r261 = trunc i576 %r260 to i64 -%r263 = getelementptr i64, i64* %r1, i32 3 -store i64 %r261, i64* %r263 -%r264 = lshr i576 %r260, 64 -%r265 = trunc i576 %r264 to i64 -%r267 = getelementptr i64, i64* %r1, i32 4 -store i64 %r265, i64* %r267 -%r268 = lshr i576 %r264, 64 -%r269 = trunc i576 %r268 to i64 -%r271 = getelementptr i64, i64* %r1, i32 5 -store i64 %r269, i64* %r271 -%r272 = lshr i576 %r268, 64 -%r273 = trunc i576 %r272 to i64 -%r275 = getelementptr i64, i64* %r1, i32 6 -store i64 %r273, i64* %r275 -%r276 = lshr i576 %r272, 64 -%r277 = trunc i576 %r276 to i64 -%r279 = getelementptr i64, i64* %r1, i32 7 -store i64 %r277, i64* %r279 -%r280 = lshr i576 %r276, 64 -%r281 = trunc i576 %r280 to i64 -%r283 = getelementptr i64, i64* %r1, i32 8 -store i64 %r281, i64* %r283 -%r284 = lshr i1216 %r247, 576 -%r285 = trunc i1216 %r284 to i640 -%r286 = load i64, i64* %r4 -%r287 = zext i64 %r286 to i128 -%r289 = getelementptr i64, i64* %r4, i32 1 -%r290 = load i64, i64* %r289 -%r291 = zext i64 %r290 to i128 -%r292 = shl i128 %r291, 64 -%r293 = or i128 %r287, %r292 -%r294 = zext i128 %r293 to i192 -%r296 = getelementptr i64, i64* %r4, i32 2 -%r297 = load i64, i64* %r296 -%r298 = zext i64 %r297 to i192 -%r299 = shl i192 %r298, 128 -%r300 = or i192 %r294, %r299 -%r301 = zext i192 %r300 to i256 -%r303 = getelementptr i64, i64* %r4, i32 3 -%r304 = load i64, i64* %r303 -%r305 = zext i64 %r304 to i256 -%r306 = shl i256 %r305, 192 -%r307 = or i256 %r301, %r306 -%r308 = zext i256 %r307 to i320 -%r310 = getelementptr i64, i64* %r4, i32 4 -%r311 = load i64, i64* %r310 -%r312 = zext i64 %r311 to i320 -%r313 = shl i320 %r312, 256 -%r314 = or i320 %r308, %r313 -%r315 = zext i320 %r314 to i384 -%r317 = getelementptr i64, i64* %r4, i32 5 -%r318 = load i64, i64* %r317 -%r319 = zext i64 %r318 to i384 -%r320 = shl i384 %r319, 320 -%r321 = or i384 %r315, %r320 -%r322 = zext i384 %r321 to i448 -%r324 = getelementptr i64, i64* %r4, i32 6 -%r325 = load i64, i64* %r324 -%r326 = zext i64 %r325 to i448 -%r327 = shl i448 %r326, 384 -%r328 = or i448 %r322, %r327 -%r329 = zext i448 %r328 to i512 -%r331 = getelementptr i64, i64* %r4, i32 7 -%r332 = load i64, i64* %r331 -%r333 = zext i64 %r332 to i512 -%r334 = shl i512 %r333, 448 -%r335 = or i512 %r329, %r334 -%r336 = zext i512 %r335 to i576 -%r338 = getelementptr i64, i64* %r4, i32 8 -%r339 = load i64, i64* %r338 -%r340 = zext i64 %r339 to i576 -%r341 = shl i576 %r340, 512 -%r342 = or i576 %r336, %r341 -%r343 = zext i576 %r342 to i640 -%r344 = sub i640 %r285, %r343 -%r345 = lshr i640 %r344, 576 -%r346 = trunc i640 %r345 to i1 -%r347 = select i1 %r346, i640 %r285, i640 %r344 -%r348 = trunc i640 %r347 to i576 -%r350 = getelementptr i64, i64* %r1, i32 9 -%r351 = trunc i576 %r348 to i64 -%r353 = getelementptr i64, i64* %r350, i32 0 -store i64 %r351, i64* %r353 -%r354 = lshr i576 %r348, 64 -%r355 = trunc i576 %r354 to i64 -%r357 = getelementptr i64, i64* %r350, i32 1 -store i64 %r355, i64* %r357 -%r358 = lshr i576 %r354, 64 -%r359 = trunc i576 %r358 to i64 -%r361 = getelementptr i64, i64* %r350, i32 2 -store i64 %r359, i64* %r361 -%r362 = lshr i576 %r358, 64 -%r363 = trunc i576 %r362 to i64 -%r365 = getelementptr i64, i64* %r350, i32 3 -store i64 %r363, i64* %r365 -%r366 = lshr i576 %r362, 64 -%r367 = trunc i576 %r366 to i64 -%r369 = getelementptr i64, i64* %r350, i32 4 -store i64 %r367, i64* %r369 -%r370 = lshr i576 %r366, 64 -%r371 = trunc i576 %r370 to i64 -%r373 = getelementptr i64, i64* %r350, i32 5 -store i64 %r371, i64* %r373 -%r374 = lshr i576 %r370, 64 -%r375 = trunc i576 %r374 to i64 -%r377 = getelementptr i64, i64* %r350, i32 6 -store i64 %r375, i64* %r377 -%r378 = lshr i576 %r374, 64 -%r379 = trunc i576 %r378 to i64 -%r381 = getelementptr i64, i64* %r350, i32 7 -store i64 %r379, i64* %r381 -%r382 = lshr i576 %r378, 64 -%r383 = trunc i576 %r382 to i64 -%r385 = getelementptr i64, i64* %r350, i32 8 -store i64 %r383, i64* %r385 +%r214 = zext i64 %r213 to i1024 +%r215 = shl i1024 %r214, 960 +%r216 = or i1024 %r210, %r215 +%r217 = zext i1024 %r110 to i1088 +%r218 = zext i1024 %r216 to i1088 +%r219 = add i1088 %r217, %r218 +%r220 = trunc i1088 %r219 to i512 +%r222 = getelementptr i64, i64* %r1, i32 0 +%r223 = trunc i512 %r220 to i64 +store i64 %r223, i64* %r222 +%r224 = lshr i512 %r220, 64 +%r226 = getelementptr i64, i64* %r1, i32 1 +%r227 = trunc i512 %r224 to i64 +store i64 %r227, i64* %r226 +%r228 = lshr i512 %r224, 64 +%r230 = getelementptr i64, i64* %r1, i32 2 +%r231 = trunc i512 %r228 to i64 +store i64 %r231, i64* %r230 +%r232 = lshr i512 %r228, 64 +%r234 = getelementptr i64, i64* %r1, i32 3 +%r235 = trunc i512 %r232 to i64 +store i64 %r235, i64* %r234 +%r236 = lshr i512 %r232, 64 +%r238 = getelementptr i64, i64* %r1, i32 4 +%r239 = trunc i512 %r236 to i64 +store i64 %r239, i64* %r238 +%r240 = lshr i512 %r236, 64 +%r242 = getelementptr i64, i64* %r1, i32 5 +%r243 = trunc i512 %r240 to i64 +store i64 %r243, i64* %r242 +%r244 = lshr i512 %r240, 64 +%r246 = getelementptr i64, i64* %r1, i32 6 +%r247 = trunc i512 %r244 to i64 +store i64 %r247, i64* %r246 +%r248 = lshr i512 %r244, 64 +%r250 = getelementptr i64, i64* %r1, i32 7 +%r251 = trunc i512 %r248 to i64 +store i64 %r251, i64* %r250 +%r252 = lshr i1088 %r219, 512 +%r253 = trunc i1088 %r252 to i576 +%r254 = load i64, i64* %r4 +%r255 = zext i64 %r254 to i128 +%r257 = getelementptr i64, i64* %r4, i32 1 +%r258 = load i64, i64* %r257 +%r259 = zext i64 %r258 to i128 +%r260 = shl i128 %r259, 64 +%r261 = or i128 %r255, %r260 +%r262 = zext i128 %r261 to i192 +%r264 = getelementptr i64, i64* %r4, i32 2 +%r265 = load i64, i64* %r264 +%r266 = zext i64 %r265 to i192 +%r267 = shl i192 %r266, 128 +%r268 = or i192 %r262, %r267 +%r269 = zext i192 %r268 to i256 +%r271 = getelementptr i64, i64* %r4, i32 3 +%r272 = load i64, i64* %r271 +%r273 = zext i64 %r272 to i256 +%r274 = shl i256 %r273, 192 +%r275 = or i256 %r269, %r274 +%r276 = zext i256 %r275 to i320 +%r278 = getelementptr i64, i64* %r4, i32 4 +%r279 = load i64, i64* %r278 +%r280 = zext i64 %r279 to i320 +%r281 = shl i320 %r280, 256 +%r282 = or i320 %r276, %r281 +%r283 = zext i320 %r282 to i384 +%r285 = getelementptr i64, i64* %r4, i32 5 +%r286 = load i64, i64* %r285 +%r287 = zext i64 %r286 to i384 +%r288 = shl i384 %r287, 320 +%r289 = or i384 %r283, %r288 +%r290 = zext i384 %r289 to i448 +%r292 = getelementptr i64, i64* %r4, i32 6 +%r293 = load i64, i64* %r292 +%r294 = zext i64 %r293 to i448 +%r295 = shl i448 %r294, 384 +%r296 = or i448 %r290, %r295 +%r297 = zext i448 %r296 to i512 +%r299 = getelementptr i64, i64* %r4, i32 7 +%r300 = load i64, i64* %r299 +%r301 = zext i64 %r300 to i512 +%r302 = shl i512 %r301, 448 +%r303 = or i512 %r297, %r302 +%r304 = zext i512 %r303 to i576 +%r305 = sub i576 %r253, %r304 +%r306 = lshr i576 %r305, 512 +%r307 = trunc i576 %r306 to i1 +%r308 = select i1 %r307, i576 %r253, i576 %r305 +%r309 = trunc i576 %r308 to i512 +%r311 = getelementptr i64, i64* %r1, i32 8 +%r313 = getelementptr i64, i64* %r311, i32 0 +%r314 = trunc i512 %r309 to i64 +store i64 %r314, i64* %r313 +%r315 = lshr i512 %r309, 64 +%r317 = getelementptr i64, i64* %r311, i32 1 +%r318 = trunc i512 %r315 to i64 +store i64 %r318, i64* %r317 +%r319 = lshr i512 %r315, 64 +%r321 = getelementptr i64, i64* %r311, i32 2 +%r322 = trunc i512 %r319 to i64 +store i64 %r322, i64* %r321 +%r323 = lshr i512 %r319, 64 +%r325 = getelementptr i64, i64* %r311, i32 3 +%r326 = trunc i512 %r323 to i64 +store i64 %r326, i64* %r325 +%r327 = lshr i512 %r323, 64 +%r329 = getelementptr i64, i64* %r311, i32 4 +%r330 = trunc i512 %r327 to i64 +store i64 %r330, i64* %r329 +%r331 = lshr i512 %r327, 64 +%r333 = getelementptr i64, i64* %r311, i32 5 +%r334 = trunc i512 %r331 to i64 +store i64 %r334, i64* %r333 +%r335 = lshr i512 %r331, 64 +%r337 = getelementptr i64, i64* %r311, i32 6 +%r338 = trunc i512 %r335 to i64 +store i64 %r338, i64* %r337 +%r339 = lshr i512 %r335, 64 +%r341 = getelementptr i64, i64* %r311, i32 7 +%r342 = trunc i512 %r339 to i64 +store i64 %r342, i64* %r341 ret void } -define void @mcl_fpDbl_sub9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) +define void @mcl_fpDbl_sub8L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r3, i64* noalias %r4) { %r5 = load i64, i64* %r2 %r6 = zext i64 %r5 to i128 @@ -15134,250 +7742,212 @@ define void @mcl_fpDbl_sub9L(i64* noalias %r1, i64* noalias %r2, i64* noalias %r108 = zext i64 %r107 to i1024 %r109 = shl i1024 %r108, 960 %r110 = or i1024 %r104, %r109 -%r111 = zext i1024 %r110 to i1088 -%r113 = getelementptr i64, i64* %r2, i32 16 -%r114 = load i64, i64* %r113 -%r115 = zext i64 %r114 to i1088 -%r116 = shl i1088 %r115, 1024 -%r117 = or i1088 %r111, %r116 -%r118 = zext i1088 %r117 to i1152 -%r120 = getelementptr i64, i64* %r2, i32 17 -%r121 = load i64, i64* %r120 -%r122 = zext i64 %r121 to i1152 -%r123 = shl i1152 %r122, 1088 -%r124 = or i1152 %r118, %r123 -%r125 = load i64, i64* %r3 -%r126 = zext i64 %r125 to i128 -%r128 = getelementptr i64, i64* %r3, i32 1 +%r111 = load i64, i64* %r3 +%r112 = zext i64 %r111 to i128 +%r114 = getelementptr i64, i64* %r3, i32 1 +%r115 = load i64, i64* %r114 +%r116 = zext i64 %r115 to i128 +%r117 = shl i128 %r116, 64 +%r118 = or i128 %r112, %r117 +%r119 = zext i128 %r118 to i192 +%r121 = getelementptr i64, i64* %r3, i32 2 +%r122 = load i64, i64* %r121 +%r123 = zext i64 %r122 to i192 +%r124 = shl i192 %r123, 128 +%r125 = or i192 %r119, %r124 +%r126 = zext i192 %r125 to i256 +%r128 = getelementptr i64, i64* %r3, i32 3 %r129 = load i64, i64* %r128 -%r130 = zext i64 %r129 to i128 -%r131 = shl i128 %r130, 64 -%r132 = or i128 %r126, %r131 -%r133 = zext i128 %r132 to i192 -%r135 = getelementptr i64, i64* %r3, i32 2 +%r130 = zext i64 %r129 to i256 +%r131 = shl i256 %r130, 192 +%r132 = or i256 %r126, %r131 +%r133 = zext i256 %r132 to i320 +%r135 = getelementptr i64, i64* %r3, i32 4 %r136 = load i64, i64* %r135 -%r137 = zext i64 %r136 to i192 -%r138 = shl i192 %r137, 128 -%r139 = or i192 %r133, %r138 -%r140 = zext i192 %r139 to i256 -%r142 = getelementptr i64, i64* %r3, i32 3 +%r137 = zext i64 %r136 to i320 +%r138 = shl i320 %r137, 256 +%r139 = or i320 %r133, %r138 +%r140 = zext i320 %r139 to i384 +%r142 = getelementptr i64, i64* %r3, i32 5 %r143 = load i64, i64* %r142 -%r144 = zext i64 %r143 to i256 -%r145 = shl i256 %r144, 192 -%r146 = or i256 %r140, %r145 -%r147 = zext i256 %r146 to i320 -%r149 = getelementptr i64, i64* %r3, i32 4 +%r144 = zext i64 %r143 to i384 +%r145 = shl i384 %r144, 320 +%r146 = or i384 %r140, %r145 +%r147 = zext i384 %r146 to i448 +%r149 = getelementptr i64, i64* %r3, i32 6 %r150 = load i64, i64* %r149 -%r151 = zext i64 %r150 to i320 -%r152 = shl i320 %r151, 256 -%r153 = or i320 %r147, %r152 -%r154 = zext i320 %r153 to i384 -%r156 = getelementptr i64, i64* %r3, i32 5 +%r151 = zext i64 %r150 to i448 +%r152 = shl i448 %r151, 384 +%r153 = or i448 %r147, %r152 +%r154 = zext i448 %r153 to i512 +%r156 = getelementptr i64, i64* %r3, i32 7 %r157 = load i64, i64* %r156 -%r158 = zext i64 %r157 to i384 -%r159 = shl i384 %r158, 320 -%r160 = or i384 %r154, %r159 -%r161 = zext i384 %r160 to i448 -%r163 = getelementptr i64, i64* %r3, i32 6 +%r158 = zext i64 %r157 to i512 +%r159 = shl i512 %r158, 448 +%r160 = or i512 %r154, %r159 +%r161 = zext i512 %r160 to i576 +%r163 = getelementptr i64, i64* %r3, i32 8 %r164 = load i64, i64* %r163 -%r165 = zext i64 %r164 to i448 -%r166 = shl i448 %r165, 384 -%r167 = or i448 %r161, %r166 -%r168 = zext i448 %r167 to i512 -%r170 = getelementptr i64, i64* %r3, i32 7 +%r165 = zext i64 %r164 to i576 +%r166 = shl i576 %r165, 512 +%r167 = or i576 %r161, %r166 +%r168 = zext i576 %r167 to i640 +%r170 = getelementptr i64, i64* %r3, i32 9 %r171 = load i64, i64* %r170 -%r172 = zext i64 %r171 to i512 -%r173 = shl i512 %r172, 448 -%r174 = or i512 %r168, %r173 -%r175 = zext i512 %r174 to i576 -%r177 = getelementptr i64, i64* %r3, i32 8 +%r172 = zext i64 %r171 to i640 +%r173 = shl i640 %r172, 576 +%r174 = or i640 %r168, %r173 +%r175 = zext i640 %r174 to i704 +%r177 = getelementptr i64, i64* %r3, i32 10 %r178 = load i64, i64* %r177 -%r179 = zext i64 %r178 to i576 -%r180 = shl i576 %r179, 512 -%r181 = or i576 %r175, %r180 -%r182 = zext i576 %r181 to i640 -%r184 = getelementptr i64, i64* %r3, i32 9 +%r179 = zext i64 %r178 to i704 +%r180 = shl i704 %r179, 640 +%r181 = or i704 %r175, %r180 +%r182 = zext i704 %r181 to i768 +%r184 = getelementptr i64, i64* %r3, i32 11 %r185 = load i64, i64* %r184 -%r186 = zext i64 %r185 to i640 -%r187 = shl i640 %r186, 576 -%r188 = or i640 %r182, %r187 -%r189 = zext i640 %r188 to i704 -%r191 = getelementptr i64, i64* %r3, i32 10 +%r186 = zext i64 %r185 to i768 +%r187 = shl i768 %r186, 704 +%r188 = or i768 %r182, %r187 +%r189 = zext i768 %r188 to i832 +%r191 = getelementptr i64, i64* %r3, i32 12 %r192 = load i64, i64* %r191 -%r193 = zext i64 %r192 to i704 -%r194 = shl i704 %r193, 640 -%r195 = or i704 %r189, %r194 -%r196 = zext i704 %r195 to i768 -%r198 = getelementptr i64, i64* %r3, i32 11 +%r193 = zext i64 %r192 to i832 +%r194 = shl i832 %r193, 768 +%r195 = or i832 %r189, %r194 +%r196 = zext i832 %r195 to i896 +%r198 = getelementptr i64, i64* %r3, i32 13 %r199 = load i64, i64* %r198 -%r200 = zext i64 %r199 to i768 -%r201 = shl i768 %r200, 704 -%r202 = or i768 %r196, %r201 -%r203 = zext i768 %r202 to i832 -%r205 = getelementptr i64, i64* %r3, i32 12 +%r200 = zext i64 %r199 to i896 +%r201 = shl i896 %r200, 832 +%r202 = or i896 %r196, %r201 +%r203 = zext i896 %r202 to i960 +%r205 = getelementptr i64, i64* %r3, i32 14 %r206 = load i64, i64* %r205 -%r207 = zext i64 %r206 to i832 -%r208 = shl i832 %r207, 768 -%r209 = or i832 %r203, %r208 -%r210 = zext i832 %r209 to i896 -%r212 = getelementptr i64, i64* %r3, i32 13 +%r207 = zext i64 %r206 to i960 +%r208 = shl i960 %r207, 896 +%r209 = or i960 %r203, %r208 +%r210 = zext i960 %r209 to i1024 +%r212 = getelementptr i64, i64* %r3, i32 15 %r213 = load i64, i64* %r212 -%r214 = zext i64 %r213 to i896 -%r215 = shl i896 %r214, 832 -%r216 = or i896 %r210, %r215 -%r217 = zext i896 %r216 to i960 -%r219 = getelementptr i64, i64* %r3, i32 14 -%r220 = load i64, i64* %r219 -%r221 = zext i64 %r220 to i960 -%r222 = shl i960 %r221, 896 -%r223 = or i960 %r217, %r222 -%r224 = zext i960 %r223 to i1024 -%r226 = getelementptr i64, i64* %r3, i32 15 -%r227 = load i64, i64* %r226 -%r228 = zext i64 %r227 to i1024 -%r229 = shl i1024 %r228, 960 -%r230 = or i1024 %r224, %r229 -%r231 = zext i1024 %r230 to i1088 -%r233 = getelementptr i64, i64* %r3, i32 16 -%r234 = load i64, i64* %r233 -%r235 = zext i64 %r234 to i1088 -%r236 = shl i1088 %r235, 1024 -%r237 = or i1088 %r231, %r236 -%r238 = zext i1088 %r237 to i1152 -%r240 = getelementptr i64, i64* %r3, i32 17 -%r241 = load i64, i64* %r240 -%r242 = zext i64 %r241 to i1152 -%r243 = shl i1152 %r242, 1088 -%r244 = or i1152 %r238, %r243 -%r245 = zext i1152 %r124 to i1216 -%r246 = zext i1152 %r244 to i1216 -%r247 = sub i1216 %r245, %r246 -%r248 = trunc i1216 %r247 to i576 -%r249 = trunc i576 %r248 to i64 -%r251 = getelementptr i64, i64* %r1, i32 0 -store i64 %r249, i64* %r251 -%r252 = lshr i576 %r248, 64 -%r253 = trunc i576 %r252 to i64 -%r255 = getelementptr i64, i64* %r1, i32 1 -store i64 %r253, i64* %r255 -%r256 = lshr i576 %r252, 64 -%r257 = trunc i576 %r256 to i64 -%r259 = getelementptr i64, i64* %r1, i32 2 -store i64 %r257, i64* %r259 -%r260 = lshr i576 %r256, 64 -%r261 = trunc i576 %r260 to i64 -%r263 = getelementptr i64, i64* %r1, i32 3 -store i64 %r261, i64* %r263 -%r264 = lshr i576 %r260, 64 -%r265 = trunc i576 %r264 to i64 -%r267 = getelementptr i64, i64* %r1, i32 4 -store i64 %r265, i64* %r267 -%r268 = lshr i576 %r264, 64 -%r269 = trunc i576 %r268 to i64 -%r271 = getelementptr i64, i64* %r1, i32 5 -store i64 %r269, i64* %r271 -%r272 = lshr i576 %r268, 64 -%r273 = trunc i576 %r272 to i64 -%r275 = getelementptr i64, i64* %r1, i32 6 -store i64 %r273, i64* %r275 -%r276 = lshr i576 %r272, 64 -%r277 = trunc i576 %r276 to i64 -%r279 = getelementptr i64, i64* %r1, i32 7 -store i64 %r277, i64* %r279 -%r280 = lshr i576 %r276, 64 -%r281 = trunc i576 %r280 to i64 -%r283 = getelementptr i64, i64* %r1, i32 8 -store i64 %r281, i64* %r283 -%r284 = lshr i1216 %r247, 576 -%r285 = trunc i1216 %r284 to i576 -%r286 = lshr i1216 %r247, 1152 -%r287 = trunc i1216 %r286 to i1 -%r288 = load i64, i64* %r4 -%r289 = zext i64 %r288 to i128 -%r291 = getelementptr i64, i64* %r4, i32 1 -%r292 = load i64, i64* %r291 -%r293 = zext i64 %r292 to i128 -%r294 = shl i128 %r293, 64 -%r295 = or i128 %r289, %r294 -%r296 = zext i128 %r295 to i192 -%r298 = getelementptr i64, i64* %r4, i32 2 -%r299 = load i64, i64* %r298 -%r300 = zext i64 %r299 to i192 -%r301 = shl i192 %r300, 128 -%r302 = or i192 %r296, %r301 -%r303 = zext i192 %r302 to i256 -%r305 = getelementptr i64, i64* %r4, i32 3 -%r306 = load i64, i64* %r305 -%r307 = zext i64 %r306 to i256 -%r308 = shl i256 %r307, 192 -%r309 = or i256 %r303, %r308 -%r310 = zext i256 %r309 to i320 -%r312 = getelementptr i64, i64* %r4, i32 4 -%r313 = load i64, i64* %r312 -%r314 = zext i64 %r313 to i320 -%r315 = shl i320 %r314, 256 -%r316 = or i320 %r310, %r315 -%r317 = zext i320 %r316 to i384 -%r319 = getelementptr i64, i64* %r4, i32 5 -%r320 = load i64, i64* %r319 -%r321 = zext i64 %r320 to i384 -%r322 = shl i384 %r321, 320 -%r323 = or i384 %r317, %r322 -%r324 = zext i384 %r323 to i448 -%r326 = getelementptr i64, i64* %r4, i32 6 -%r327 = load i64, i64* %r326 -%r328 = zext i64 %r327 to i448 -%r329 = shl i448 %r328, 384 -%r330 = or i448 %r324, %r329 -%r331 = zext i448 %r330 to i512 -%r333 = getelementptr i64, i64* %r4, i32 7 -%r334 = load i64, i64* %r333 -%r335 = zext i64 %r334 to i512 -%r336 = shl i512 %r335, 448 -%r337 = or i512 %r331, %r336 -%r338 = zext i512 %r337 to i576 -%r340 = getelementptr i64, i64* %r4, i32 8 -%r341 = load i64, i64* %r340 -%r342 = zext i64 %r341 to i576 -%r343 = shl i576 %r342, 512 -%r344 = or i576 %r338, %r343 -%r346 = select i1 %r287, i576 %r344, i576 0 -%r347 = add i576 %r285, %r346 -%r349 = getelementptr i64, i64* %r1, i32 9 -%r350 = trunc i576 %r347 to i64 -%r352 = getelementptr i64, i64* %r349, i32 0 -store i64 %r350, i64* %r352 -%r353 = lshr i576 %r347, 64 -%r354 = trunc i576 %r353 to i64 -%r356 = getelementptr i64, i64* %r349, i32 1 -store i64 %r354, i64* %r356 -%r357 = lshr i576 %r353, 64 -%r358 = trunc i576 %r357 to i64 -%r360 = getelementptr i64, i64* %r349, i32 2 -store i64 %r358, i64* %r360 -%r361 = lshr i576 %r357, 64 -%r362 = trunc i576 %r361 to i64 -%r364 = getelementptr i64, i64* %r349, i32 3 -store i64 %r362, i64* %r364 -%r365 = lshr i576 %r361, 64 -%r366 = trunc i576 %r365 to i64 -%r368 = getelementptr i64, i64* %r349, i32 4 -store i64 %r366, i64* %r368 -%r369 = lshr i576 %r365, 64 -%r370 = trunc i576 %r369 to i64 -%r372 = getelementptr i64, i64* %r349, i32 5 -store i64 %r370, i64* %r372 -%r373 = lshr i576 %r369, 64 -%r374 = trunc i576 %r373 to i64 -%r376 = getelementptr i64, i64* %r349, i32 6 -store i64 %r374, i64* %r376 -%r377 = lshr i576 %r373, 64 -%r378 = trunc i576 %r377 to i64 -%r380 = getelementptr i64, i64* %r349, i32 7 -store i64 %r378, i64* %r380 -%r381 = lshr i576 %r377, 64 -%r382 = trunc i576 %r381 to i64 -%r384 = getelementptr i64, i64* %r349, i32 8 -store i64 %r382, i64* %r384 +%r214 = zext i64 %r213 to i1024 +%r215 = shl i1024 %r214, 960 +%r216 = or i1024 %r210, %r215 +%r217 = zext i1024 %r110 to i1088 +%r218 = zext i1024 %r216 to i1088 +%r219 = sub i1088 %r217, %r218 +%r220 = trunc i1088 %r219 to i512 +%r222 = getelementptr i64, i64* %r1, i32 0 +%r223 = trunc i512 %r220 to i64 +store i64 %r223, i64* %r222 +%r224 = lshr i512 %r220, 64 +%r226 = getelementptr i64, i64* %r1, i32 1 +%r227 = trunc i512 %r224 to i64 +store i64 %r227, i64* %r226 +%r228 = lshr i512 %r224, 64 +%r230 = getelementptr i64, i64* %r1, i32 2 +%r231 = trunc i512 %r228 to i64 +store i64 %r231, i64* %r230 +%r232 = lshr i512 %r228, 64 +%r234 = getelementptr i64, i64* %r1, i32 3 +%r235 = trunc i512 %r232 to i64 +store i64 %r235, i64* %r234 +%r236 = lshr i512 %r232, 64 +%r238 = getelementptr i64, i64* %r1, i32 4 +%r239 = trunc i512 %r236 to i64 +store i64 %r239, i64* %r238 +%r240 = lshr i512 %r236, 64 +%r242 = getelementptr i64, i64* %r1, i32 5 +%r243 = trunc i512 %r240 to i64 +store i64 %r243, i64* %r242 +%r244 = lshr i512 %r240, 64 +%r246 = getelementptr i64, i64* %r1, i32 6 +%r247 = trunc i512 %r244 to i64 +store i64 %r247, i64* %r246 +%r248 = lshr i512 %r244, 64 +%r250 = getelementptr i64, i64* %r1, i32 7 +%r251 = trunc i512 %r248 to i64 +store i64 %r251, i64* %r250 +%r252 = lshr i1088 %r219, 512 +%r253 = trunc i1088 %r252 to i512 +%r254 = lshr i1088 %r219, 1024 +%r255 = trunc i1088 %r254 to i1 +%r256 = load i64, i64* %r4 +%r257 = zext i64 %r256 to i128 +%r259 = getelementptr i64, i64* %r4, i32 1 +%r260 = load i64, i64* %r259 +%r261 = zext i64 %r260 to i128 +%r262 = shl i128 %r261, 64 +%r263 = or i128 %r257, %r262 +%r264 = zext i128 %r263 to i192 +%r266 = getelementptr i64, i64* %r4, i32 2 +%r267 = load i64, i64* %r266 +%r268 = zext i64 %r267 to i192 +%r269 = shl i192 %r268, 128 +%r270 = or i192 %r264, %r269 +%r271 = zext i192 %r270 to i256 +%r273 = getelementptr i64, i64* %r4, i32 3 +%r274 = load i64, i64* %r273 +%r275 = zext i64 %r274 to i256 +%r276 = shl i256 %r275, 192 +%r277 = or i256 %r271, %r276 +%r278 = zext i256 %r277 to i320 +%r280 = getelementptr i64, i64* %r4, i32 4 +%r281 = load i64, i64* %r280 +%r282 = zext i64 %r281 to i320 +%r283 = shl i320 %r282, 256 +%r284 = or i320 %r278, %r283 +%r285 = zext i320 %r284 to i384 +%r287 = getelementptr i64, i64* %r4, i32 5 +%r288 = load i64, i64* %r287 +%r289 = zext i64 %r288 to i384 +%r290 = shl i384 %r289, 320 +%r291 = or i384 %r285, %r290 +%r292 = zext i384 %r291 to i448 +%r294 = getelementptr i64, i64* %r4, i32 6 +%r295 = load i64, i64* %r294 +%r296 = zext i64 %r295 to i448 +%r297 = shl i448 %r296, 384 +%r298 = or i448 %r292, %r297 +%r299 = zext i448 %r298 to i512 +%r301 = getelementptr i64, i64* %r4, i32 7 +%r302 = load i64, i64* %r301 +%r303 = zext i64 %r302 to i512 +%r304 = shl i512 %r303, 448 +%r305 = or i512 %r299, %r304 +%r307 = select i1 %r255, i512 %r305, i512 0 +%r308 = add i512 %r253, %r307 +%r310 = getelementptr i64, i64* %r1, i32 8 +%r312 = getelementptr i64, i64* %r310, i32 0 +%r313 = trunc i512 %r308 to i64 +store i64 %r313, i64* %r312 +%r314 = lshr i512 %r308, 64 +%r316 = getelementptr i64, i64* %r310, i32 1 +%r317 = trunc i512 %r314 to i64 +store i64 %r317, i64* %r316 +%r318 = lshr i512 %r314, 64 +%r320 = getelementptr i64, i64* %r310, i32 2 +%r321 = trunc i512 %r318 to i64 +store i64 %r321, i64* %r320 +%r322 = lshr i512 %r318, 64 +%r324 = getelementptr i64, i64* %r310, i32 3 +%r325 = trunc i512 %r322 to i64 +store i64 %r325, i64* %r324 +%r326 = lshr i512 %r322, 64 +%r328 = getelementptr i64, i64* %r310, i32 4 +%r329 = trunc i512 %r326 to i64 +store i64 %r329, i64* %r328 +%r330 = lshr i512 %r326, 64 +%r332 = getelementptr i64, i64* %r310, i32 5 +%r333 = trunc i512 %r330 to i64 +store i64 %r333, i64* %r332 +%r334 = lshr i512 %r330, 64 +%r336 = getelementptr i64, i64* %r310, i32 6 +%r337 = trunc i512 %r334 to i64 +store i64 %r337, i64* %r336 +%r338 = lshr i512 %r334, 64 +%r340 = getelementptr i64, i64* %r310, i32 7 +%r341 = trunc i512 %r338 to i64 +store i64 %r341, i64* %r340 ret void }