Fixture 155

long dependency chain

C · 3 functions · 4 lanes · 11 of 12 function-lanes behave identically

One lane has a function that returns a different result after decompilation: clang-O2 (2/3).

Scale stress: dependency-chain length.

chain155_scalar is 320 arithmetic steps in a row, each one consuming the result of the previous one. There is no parallelism to find and no loop to roll up: the value at the end depends on every step in order, so a single dropped, reordered or width-truncated step changes the answer. Expression-tree builders that grow a term per step, and simplifiers that try to normalise the whole chain, are quadratic here.

chain155_signed runs 256 steps through an int32_t carrier with every operation routed through uint32_t, so the widths keep changing while the arithmetic stays defined. chain155_buffered threads 192 steps through a 16-slot snapshot of a caller-owned buffer.

Shift counts are constants in 1..31 and all wrapping goes through unsigned, so nothing here is undefined.

tests/decompiler_fixtures/src/155_long_dependency_chain.c source
#include <stdint.h>

/* Scale stress: dependency-chain length.
 *
 * `chain155_scalar` is 320 arithmetic steps in a row, each one consuming
 * the result of the previous one. There is no parallelism to find and no
 * loop to roll up: the value at the end depends on every step in order, so
 * a single dropped, reordered or width-truncated step changes the answer.
 * Expression-tree builders that grow a term per step, and simplifiers that
 * try to normalise the whole chain, are quadratic here.
 *
 * `chain155_signed` runs 256 steps through an int32_t carrier with every
 * operation routed through uint32_t, so the widths keep changing while the
 * arithmetic stays defined. `chain155_buffered` threads 192 steps through a
 * 16-slot snapshot of a caller-owned buffer.
 *
 * Shift counts are constants in 1..31 and all wrapping goes through
 * unsigned, so nothing here is undefined. */

#define CHAIN155_SLOTS 16
#define CHAIN155_SCALAR_STEPS 320
#define CHAIN155_SIGNED_STEPS 256
#define CHAIN155_BUFFER_STEPS 192

__attribute__((noinline)) uint32_t chain155_scalar(uint32_t value) {
    uint32_t acc = value ^ 0x9E3779B9u;

    acc = acc * 1103515245u + 0x9E3779B1u;
    acc ^= acc >> 2u;
    acc = (acc << 3u) | (acc >> 29u);
    acc += 0x78DDE6C4u;
    acc ^= 0x17156075u;
    acc = (acc >> 6u) + (acc << 26u);
    acc = acc * 1103515413u + 0x538453D7u;
    acc ^= acc >> 8u;
    acc = (acc << 9u) | (acc >> 23u);
    acc += 0x2E2AC0EAu;
    acc ^= 0xCC623A9Bu;
    acc = (acc >> 12u) + (acc << 20u);
    acc = acc * 1103515581u + 0x08D12DFDu;
    acc ^= acc >> 14u;
    acc = (acc << 15u) | (acc >> 17u);
    acc += 0xE3779B10u;
    acc ^= 0x81AF14C1u;
    acc = (acc >> 18u) + (acc << 14u);
    acc = acc * 1103515749u + 0xBE1E0823u;
    acc ^= acc >> 20u;
    acc = (acc << 21u) | (acc >> 11u);
    acc += 0x98C47536u;
    acc ^= 0x36FBEEE7u;
    acc = (acc >> 24u) + (acc << 8u);
    acc = acc * 1103515917u + 0x736AE249u;
    acc ^= acc >> 26u;
    acc = (acc << 27u) | (acc >> 5u);
    acc += 0x4E114F5Cu;
    acc ^= 0xEC48C90Du;
    acc = (acc >> 30u) + (acc << 2u);
    acc = acc * 1103516085u + 0x28B7BC6Fu;
    acc ^= acc >> 1u;
    acc = (acc << 2u) | (acc >> 30u);
    acc += 0x035E2982u;
    acc ^= 0xA195A333u;
    acc = (acc >> 5u) + (acc << 27u);
    acc = acc * 1103516253u + 0xDE049695u;
    acc ^= acc >> 7u;
    acc = (acc << 8u) | (acc >> 24u);
    acc += 0xB8AB03A8u;
    acc ^= 0x56E27D59u;
    acc = (acc >> 11u) + (acc << 21u);
    acc = acc * 1103516421u + 0x935170BBu;
    acc ^= acc >> 13u;
    acc = (acc << 14u) | (acc >> 18u);
    acc += 0x6DF7DDCEu;
    acc ^= 0x0C2F577Fu;
    acc = (acc >> 17u) + (acc << 15u);
    acc = acc * 1103516589u + 0x489E4AE1u;
    acc ^= acc >> 19u;
    acc = (acc << 20u) | (acc >> 12u);
    acc += 0x2344B7F4u;
    acc ^= 0xC17C31A5u;
    acc = (acc >> 23u) + (acc << 9u);
    acc = acc * 1103516757u + 0xFDEB2507u;
    acc ^= acc >> 25u;
    acc = (acc << 26u) | (acc >> 6u);
    acc += 0xD891921Au;
    acc ^= 0x76C90BCBu;
    acc = (acc >> 29u) + (acc << 3u);
    acc = acc * 1103516925u + 0xB337FF2Du;
    acc ^= acc >> 31u;
    acc = (acc << 1u) | (acc >> 31u);
    acc += 0x8DDE6C40u;
    acc ^= 0x2C15E5F1u;
    acc = (acc >> 4u) + (acc << 28u);
    acc = acc * 1103517093u + 0x6884D953u;
    acc ^= acc >> 6u;
    acc = (acc << 7u) | (acc >> 25u);
    acc += 0x432B4666u;
    acc ^= 0xE162C017u;
    acc = (acc >> 10u) + (acc << 22u);
    acc = acc * 1103517261u + 0x1DD1B379u;
    acc ^= acc >> 12u;
    acc = (acc << 13u) | (acc >> 19u);
    acc += 0xF878208Cu;
    acc ^= 0x96AF9A3Du;
    acc = (acc >> 16u) + (acc << 16u);
    acc = acc * 1103517429u + 0xD31E8D9Fu;
    acc ^= acc >> 18u;
    acc = (acc << 19u) | (acc >> 13u);
    acc += 0xADC4FAB2u;
    acc ^= 0x4BFC7463u;
    acc = (acc >> 22u) + (acc << 10u);
    acc = acc * 1103517597u + 0x886B67C5u;
    acc ^= acc >> 24u;
    acc = (acc << 25u) | (acc >> 7u);
    acc += 0x6311D4D8u;
    acc ^= 0x01494E89u;
    acc = (acc >> 28u) + (acc << 4u);
    acc = acc * 1103517765u + 0x3DB841EBu;
    acc ^= acc >> 30u;
    acc = (acc << 31u) | (acc >> 1u);
    acc += 0x185EAEFEu;
    acc ^= 0xB69628AFu;
    acc = (acc >> 3u) + (acc << 29u);
    acc = acc * 1103517933u + 0xF3051C11u;
    acc ^= acc >> 5u;
    acc = (acc << 6u) | (acc >> 26u);
    acc += 0xCDAB8924u;
    acc ^= 0x6BE302D5u;
    acc = (acc >> 9u) + (acc << 23u);
    acc = acc * 1103518101u + 0xA851F637u;
    acc ^= acc >> 11u;
    acc = (acc << 12u) | (acc >> 20u);
    acc += 0x82F8634Au;
    acc ^= 0x212FDCFBu;
    acc = (acc >> 15u) + (acc << 17u);
    acc = acc * 1103518269u + 0x5D9ED05Du;
    acc ^= acc >> 17u;
    acc = (acc << 18u) | (acc >> 14u);
    acc += 0x38453D70u;
    acc ^= 0xD67CB721u;
    acc = (acc >> 21u) + (acc << 11u);
    acc = acc * 1103518437u + 0x12EBAA83u;
    acc ^= acc >> 23u;
    acc = (acc << 24u) | (acc >> 8u);
    acc += 0xED921796u;
    acc ^= 0x8BC99147u;
    acc = (acc >> 27u) + (acc << 5u);
    acc = acc * 1103518605u + 0xC83884A9u;
    acc ^= acc >> 29u;
    acc = (acc << 30u) | (acc >> 2u);
    acc += 0xA2DEF1BCu;
    acc ^= 0x41166B6Du;
    acc = (acc >> 2u) + (acc << 30u);
    acc = acc * 1103518773u + 0x7D855ECFu;
    acc ^= acc >> 4u;
    acc = (acc << 5u) | (acc >> 27u);
    acc += 0x582BCBE2u;
    acc ^= 0xF6634593u;
    acc = (acc >> 8u) + (acc << 24u);
    acc = acc * 1103518941u + 0x32D238F5u;
    acc ^= acc >> 10u;
    acc = (acc << 11u) | (acc >> 21u);
    acc += 0x0D78A608u;
    acc ^= 0xABB01FB9u;
    acc = (acc >> 14u) + (acc << 18u);
    acc = acc * 1103519109u + 0xE81F131Bu;
    acc ^= acc >> 16u;
    acc = (acc << 17u) | (acc >> 15u);
    acc += 0xC2C5802Eu;
    acc ^= 0x60FCF9DFu;
    acc = (acc >> 20u) + (acc << 12u);
    acc = acc * 1103519277u + 0x9D6BED41u;
    acc ^= acc >> 22u;
    acc = (acc << 23u) | (acc >> 9u);
    acc += 0x78125A54u;
    acc ^= 0x1649D405u;
    acc = (acc >> 26u) + (acc << 6u);
    acc = acc * 1103519445u + 0x52B8C767u;
    acc ^= acc >> 28u;
    acc = (acc << 29u) | (acc >> 3u);
    acc += 0x2D5F347Au;
    acc ^= 0xCB96AE2Bu;
    acc = (acc >> 1u) + (acc << 31u);
    acc = acc * 1103519613u + 0x0805A18Du;
    acc ^= acc >> 3u;
    acc = (acc << 4u) | (acc >> 28u);
    acc += 0xE2AC0EA0u;
    acc ^= 0x80E38851u;
    acc = (acc >> 7u) + (acc << 25u);
    acc = acc * 1103519781u + 0xBD527BB3u;
    acc ^= acc >> 9u;
    acc = (acc << 10u) | (acc >> 22u);
    acc += 0x97F8E8C6u;
    acc ^= 0x36306277u;
    acc = (acc >> 13u) + (acc << 19u);
    acc = acc * 1103519949u + 0x729F55D9u;
    acc ^= acc >> 15u;
    acc = (acc << 16u) | (acc >> 16u);
    acc += 0x4D45C2ECu;
    acc ^= 0xEB7D3C9Du;
    acc = (acc >> 19u) + (acc << 13u);
    acc = acc * 1103520117u + 0x27EC2FFFu;
    acc ^= acc >> 21u;
    acc = (acc << 22u) | (acc >> 10u);
    acc += 0x02929D12u;
    acc ^= 0xA0CA16C3u;
    acc = (acc >> 25u) + (acc << 7u);
    acc = acc * 1103520285u + 0xDD390A25u;
    acc ^= acc >> 27u;
    acc = (acc << 28u) | (acc >> 4u);
    acc += 0xB7DF7738u;
    acc ^= 0x5616F0E9u;
    acc = (acc >> 31u) + (acc << 1u);
    acc = acc * 1103520453u + 0x9285E44Bu;
    acc ^= acc >> 2u;
    acc = (acc << 3u) | (acc >> 29u);
    acc += 0x6D2C515Eu;
    acc ^= 0x0B63CB0Fu;
    acc = (acc >> 6u) + (acc << 26u);
    acc = acc * 1103520621u + 0x47D2BE71u;
    acc ^= acc >> 8u;
    acc = (acc << 9u) | (acc >> 23u);
    acc += 0x22792B84u;
    acc ^= 0xC0B0A535u;
    acc = (acc >> 12u) + (acc << 20u);
    acc = acc * 1103520789u + 0xFD1F9897u;
    acc ^= acc >> 14u;
    acc = (acc << 15u) | (acc >> 17u);
    acc += 0xD7C605AAu;
    acc ^= 0x75FD7F5Bu;
    acc = (acc >> 18u) + (acc << 14u);
    acc = acc * 1103520957u + 0xB26C72BDu;
    acc ^= acc >> 20u;
    acc = (acc << 21u) | (acc >> 11u);
    acc += 0x8D12DFD0u;
    acc ^= 0x2B4A5981u;
    acc = (acc >> 24u) + (acc << 8u);
    acc = acc * 1103521125u + 0x67B94CE3u;
    acc ^= acc >> 26u;
    acc = (acc << 27u) | (acc >> 5u);
    acc += 0x425FB9F6u;
    acc ^= 0xE09733A7u;
    acc = (acc >> 30u) + (acc << 2u);
    acc = acc * 1103521293u + 0x1D062709u;
    acc ^= acc >> 1u;
    acc = (acc << 2u) | (acc >> 30u);
    acc += 0xF7AC941Cu;
    acc ^= 0x95E40DCDu;
    acc = (acc >> 5u) + (acc << 27u);
    acc = acc * 1103521461u + 0xD253012Fu;
    acc ^= acc >> 7u;
    acc = (acc << 8u) | (acc >> 24u);
    acc += 0xACF96E42u;
    acc ^= 0x4B30E7F3u;
    acc = (acc >> 11u) + (acc << 21u);
    acc = acc * 1103521629u + 0x879FDB55u;
    acc ^= acc >> 13u;
    acc = (acc << 14u) | (acc >> 18u);
    acc += 0x62464868u;
    acc ^= 0x007DC219u;
    acc = (acc >> 17u) + (acc << 15u);
    acc = acc * 1103521797u + 0x3CECB57Bu;
    acc ^= acc >> 19u;
    acc = (acc << 20u) | (acc >> 12u);
    acc += 0x1793228Eu;
    acc ^= 0xB5CA9C3Fu;
    acc = (acc >> 23u) + (acc << 9u);
    acc = acc * 1103521965u + 0xF2398FA1u;
    acc ^= acc >> 25u;
    acc = (acc << 26u) | (acc >> 6u);
    acc += 0xCCDFFCB4u;
    acc ^= 0x6B177665u;
    acc = (acc >> 29u) + (acc << 3u);
    acc = acc * 1103522133u + 0xA78669C7u;
    acc ^= acc >> 31u;
    acc = (acc << 1u) | (acc >> 31u);
    acc += 0x822CD6DAu;
    acc ^= 0x2064508Bu;
    acc = (acc >> 4u) + (acc << 28u);
    acc = acc * 1103522301u + 0x5CD343EDu;
    acc ^= acc >> 6u;
    acc = (acc << 7u) | (acc >> 25u);
    acc += 0x3779B100u;
    acc ^= 0xD5B12AB1u;
    acc = (acc >> 10u) + (acc << 22u);
    acc = acc * 1103522469u + 0x12201E13u;
    acc ^= acc >> 12u;
    acc = (acc << 13u) | (acc >> 19u);
    acc += 0xECC68B26u;
    acc ^= 0x8AFE04D7u;
    acc = (acc >> 16u) + (acc << 16u);
    acc = acc * 1103522637u + 0xC76CF839u;
    acc ^= acc >> 18u;
    acc = (acc << 19u) | (acc >> 13u);
    acc += 0xA213654Cu;
    acc ^= 0x404ADEFDu;
    acc = (acc >> 22u) + (acc << 10u);
    acc = acc * 1103522805u + 0x7CB9D25Fu;
    acc ^= acc >> 24u;
    acc = (acc << 25u) | (acc >> 7u);
    acc += 0x57603F72u;
    acc ^= 0xF597B923u;
    acc = (acc >> 28u) + (acc << 4u);
    acc = acc * 1103522973u + 0x3206AC85u;
    acc ^= acc >> 30u;
    acc = (acc << 31u) | (acc >> 1u);
    acc += 0x0CAD1998u;
    acc ^= 0xAAE49349u;
    acc = (acc >> 3u) + (acc << 29u);
    acc = acc * 1103523141u + 0xE75386ABu;
    acc ^= acc >> 5u;
    acc = (acc << 6u) | (acc >> 26u);
    acc += 0xC1F9F3BEu;
    acc ^= 0x60316D6Fu;
    acc = (acc >> 9u) + (acc << 23u);
    acc = acc * 1103523309u + 0x9CA060D1u;
    acc ^= acc >> 11u;
    acc = (acc << 12u) | (acc >> 20u);
    acc += 0x7746CDE4u;
    acc ^= 0x157E4795u;
    acc = (acc >> 15u) + (acc << 17u);
    acc = acc * 1103523477u + 0x51ED3AF7u;
    acc ^= acc >> 17u;
    acc = (acc << 18u) | (acc >> 14u);
    acc += 0x2C93A80Au;
    acc ^= 0xCACB21BBu;
    acc = (acc >> 21u) + (acc << 11u);
    acc = acc * 1103523645u + 0x073A151Du;
    acc ^= acc >> 23u;
    acc = (acc << 24u) | (acc >> 8u);
    acc += 0xE1E08230u;
    acc ^= 0x8017FBE1u;
    acc = (acc >> 27u) + (acc << 5u);
    acc = acc * 1103523813u + 0xBC86EF43u;
    acc ^= acc >> 29u;
    acc = (acc << 30u) | (acc >> 2u);
    acc += 0x972D5C56u;
    acc ^= 0x3564D607u;
    acc = (acc >> 2u) + (acc << 30u);
    acc = acc * 1103523981u + 0x71D3C969u;
    acc ^= acc >> 4u;
    acc = (acc << 5u) | (acc >> 27u);
    acc += 0x4C7A367Cu;
    acc ^= 0xEAB1B02Du;
    acc = (acc >> 8u) + (acc << 24u);
    acc = acc * 1103524149u + 0x2720A38Fu;
    acc ^= acc >> 10u;

    return acc + CHAIN155_SCALAR_STEPS;
}

__attribute__((noinline)) int32_t chain155_signed(int32_t value) {
    int32_t step = value;

    step = (int32_t)((uint32_t)step * 1103515245u + 0x9E3779B1u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 2u));
    step = (int32_t)(((uint32_t)step << 3u) | ((uint32_t)step >> 29u));
    step = (int32_t)((uint32_t)step + 0x78DDE6C4u);
    step = (int32_t)((uint32_t)step ^ 0x17156075u);
    step = (int32_t)(((uint32_t)step >> 6u) + ((uint32_t)step << 26u));
    step = (int32_t)((uint32_t)step * 1103515413u + 0x538453D7u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 8u));
    step = (int32_t)(((uint32_t)step << 9u) | ((uint32_t)step >> 23u));
    step = (int32_t)((uint32_t)step + 0x2E2AC0EAu);
    step = (int32_t)((uint32_t)step ^ 0xCC623A9Bu);
    step = (int32_t)(((uint32_t)step >> 12u) + ((uint32_t)step << 20u));
    step = (int32_t)((uint32_t)step * 1103515581u + 0x08D12DFDu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 14u));
    step = (int32_t)(((uint32_t)step << 15u) | ((uint32_t)step >> 17u));
    step = (int32_t)((uint32_t)step + 0xE3779B10u);
    step = (int32_t)((uint32_t)step ^ 0x81AF14C1u);
    step = (int32_t)(((uint32_t)step >> 18u) + ((uint32_t)step << 14u));
    step = (int32_t)((uint32_t)step * 1103515749u + 0xBE1E0823u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 20u));
    step = (int32_t)(((uint32_t)step << 21u) | ((uint32_t)step >> 11u));
    step = (int32_t)((uint32_t)step + 0x98C47536u);
    step = (int32_t)((uint32_t)step ^ 0x36FBEEE7u);
    step = (int32_t)(((uint32_t)step >> 24u) + ((uint32_t)step << 8u));
    step = (int32_t)((uint32_t)step * 1103515917u + 0x736AE249u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 26u));
    step = (int32_t)(((uint32_t)step << 27u) | ((uint32_t)step >> 5u));
    step = (int32_t)((uint32_t)step + 0x4E114F5Cu);
    step = (int32_t)((uint32_t)step ^ 0xEC48C90Du);
    step = (int32_t)(((uint32_t)step >> 30u) + ((uint32_t)step << 2u));
    step = (int32_t)((uint32_t)step * 1103516085u + 0x28B7BC6Fu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 1u));
    step = (int32_t)(((uint32_t)step << 2u) | ((uint32_t)step >> 30u));
    step = (int32_t)((uint32_t)step + 0x035E2982u);
    step = (int32_t)((uint32_t)step ^ 0xA195A333u);
    step = (int32_t)(((uint32_t)step >> 5u) + ((uint32_t)step << 27u));
    step = (int32_t)((uint32_t)step * 1103516253u + 0xDE049695u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 7u));
    step = (int32_t)(((uint32_t)step << 8u) | ((uint32_t)step >> 24u));
    step = (int32_t)((uint32_t)step + 0xB8AB03A8u);
    step = (int32_t)((uint32_t)step ^ 0x56E27D59u);
    step = (int32_t)(((uint32_t)step >> 11u) + ((uint32_t)step << 21u));
    step = (int32_t)((uint32_t)step * 1103516421u + 0x935170BBu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 13u));
    step = (int32_t)(((uint32_t)step << 14u) | ((uint32_t)step >> 18u));
    step = (int32_t)((uint32_t)step + 0x6DF7DDCEu);
    step = (int32_t)((uint32_t)step ^ 0x0C2F577Fu);
    step = (int32_t)(((uint32_t)step >> 17u) + ((uint32_t)step << 15u));
    step = (int32_t)((uint32_t)step * 1103516589u + 0x489E4AE1u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 19u));
    step = (int32_t)(((uint32_t)step << 20u) | ((uint32_t)step >> 12u));
    step = (int32_t)((uint32_t)step + 0x2344B7F4u);
    step = (int32_t)((uint32_t)step ^ 0xC17C31A5u);
    step = (int32_t)(((uint32_t)step >> 23u) + ((uint32_t)step << 9u));
    step = (int32_t)((uint32_t)step * 1103516757u + 0xFDEB2507u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 25u));
    step = (int32_t)(((uint32_t)step << 26u) | ((uint32_t)step >> 6u));
    step = (int32_t)((uint32_t)step + 0xD891921Au);
    step = (int32_t)((uint32_t)step ^ 0x76C90BCBu);
    step = (int32_t)(((uint32_t)step >> 29u) + ((uint32_t)step << 3u));
    step = (int32_t)((uint32_t)step * 1103516925u + 0xB337FF2Du);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 31u));
    step = (int32_t)(((uint32_t)step << 1u) | ((uint32_t)step >> 31u));
    step = (int32_t)((uint32_t)step + 0x8DDE6C40u);
    step = (int32_t)((uint32_t)step ^ 0x2C15E5F1u);
    step = (int32_t)(((uint32_t)step >> 4u) + ((uint32_t)step << 28u));
    step = (int32_t)((uint32_t)step * 1103517093u + 0x6884D953u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 6u));
    step = (int32_t)(((uint32_t)step << 7u) | ((uint32_t)step >> 25u));
    step = (int32_t)((uint32_t)step + 0x432B4666u);
    step = (int32_t)((uint32_t)step ^ 0xE162C017u);
    step = (int32_t)(((uint32_t)step >> 10u) + ((uint32_t)step << 22u));
    step = (int32_t)((uint32_t)step * 1103517261u + 0x1DD1B379u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 12u));
    step = (int32_t)(((uint32_t)step << 13u) | ((uint32_t)step >> 19u));
    step = (int32_t)((uint32_t)step + 0xF878208Cu);
    step = (int32_t)((uint32_t)step ^ 0x96AF9A3Du);
    step = (int32_t)(((uint32_t)step >> 16u) + ((uint32_t)step << 16u));
    step = (int32_t)((uint32_t)step * 1103517429u + 0xD31E8D9Fu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 18u));
    step = (int32_t)(((uint32_t)step << 19u) | ((uint32_t)step >> 13u));
    step = (int32_t)((uint32_t)step + 0xADC4FAB2u);
    step = (int32_t)((uint32_t)step ^ 0x4BFC7463u);
    step = (int32_t)(((uint32_t)step >> 22u) + ((uint32_t)step << 10u));
    step = (int32_t)((uint32_t)step * 1103517597u + 0x886B67C5u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 24u));
    step = (int32_t)(((uint32_t)step << 25u) | ((uint32_t)step >> 7u));
    step = (int32_t)((uint32_t)step + 0x6311D4D8u);
    step = (int32_t)((uint32_t)step ^ 0x01494E89u);
    step = (int32_t)(((uint32_t)step >> 28u) + ((uint32_t)step << 4u));
    step = (int32_t)((uint32_t)step * 1103517765u + 0x3DB841EBu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 30u));
    step = (int32_t)(((uint32_t)step << 31u) | ((uint32_t)step >> 1u));
    step = (int32_t)((uint32_t)step + 0x185EAEFEu);
    step = (int32_t)((uint32_t)step ^ 0xB69628AFu);
    step = (int32_t)(((uint32_t)step >> 3u) + ((uint32_t)step << 29u));
    step = (int32_t)((uint32_t)step * 1103517933u + 0xF3051C11u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 5u));
    step = (int32_t)(((uint32_t)step << 6u) | ((uint32_t)step >> 26u));
    step = (int32_t)((uint32_t)step + 0xCDAB8924u);
    step = (int32_t)((uint32_t)step ^ 0x6BE302D5u);
    step = (int32_t)(((uint32_t)step >> 9u) + ((uint32_t)step << 23u));
    step = (int32_t)((uint32_t)step * 1103518101u + 0xA851F637u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 11u));
    step = (int32_t)(((uint32_t)step << 12u) | ((uint32_t)step >> 20u));
    step = (int32_t)((uint32_t)step + 0x82F8634Au);
    step = (int32_t)((uint32_t)step ^ 0x212FDCFBu);
    step = (int32_t)(((uint32_t)step >> 15u) + ((uint32_t)step << 17u));
    step = (int32_t)((uint32_t)step * 1103518269u + 0x5D9ED05Du);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 17u));
    step = (int32_t)(((uint32_t)step << 18u) | ((uint32_t)step >> 14u));
    step = (int32_t)((uint32_t)step + 0x38453D70u);
    step = (int32_t)((uint32_t)step ^ 0xD67CB721u);
    step = (int32_t)(((uint32_t)step >> 21u) + ((uint32_t)step << 11u));
    step = (int32_t)((uint32_t)step * 1103518437u + 0x12EBAA83u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 23u));
    step = (int32_t)(((uint32_t)step << 24u) | ((uint32_t)step >> 8u));
    step = (int32_t)((uint32_t)step + 0xED921796u);
    step = (int32_t)((uint32_t)step ^ 0x8BC99147u);
    step = (int32_t)(((uint32_t)step >> 27u) + ((uint32_t)step << 5u));
    step = (int32_t)((uint32_t)step * 1103518605u + 0xC83884A9u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 29u));
    step = (int32_t)(((uint32_t)step << 30u) | ((uint32_t)step >> 2u));
    step = (int32_t)((uint32_t)step + 0xA2DEF1BCu);
    step = (int32_t)((uint32_t)step ^ 0x41166B6Du);
    step = (int32_t)(((uint32_t)step >> 2u) + ((uint32_t)step << 30u));
    step = (int32_t)((uint32_t)step * 1103518773u + 0x7D855ECFu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 4u));
    step = (int32_t)(((uint32_t)step << 5u) | ((uint32_t)step >> 27u));
    step = (int32_t)((uint32_t)step + 0x582BCBE2u);
    step = (int32_t)((uint32_t)step ^ 0xF6634593u);
    step = (int32_t)(((uint32_t)step >> 8u) + ((uint32_t)step << 24u));
    step = (int32_t)((uint32_t)step * 1103518941u + 0x32D238F5u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 10u));
    step = (int32_t)(((uint32_t)step << 11u) | ((uint32_t)step >> 21u));
    step = (int32_t)((uint32_t)step + 0x0D78A608u);
    step = (int32_t)((uint32_t)step ^ 0xABB01FB9u);
    step = (int32_t)(((uint32_t)step >> 14u) + ((uint32_t)step << 18u));
    step = (int32_t)((uint32_t)step * 1103519109u + 0xE81F131Bu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 16u));
    step = (int32_t)(((uint32_t)step << 17u) | ((uint32_t)step >> 15u));
    step = (int32_t)((uint32_t)step + 0xC2C5802Eu);
    step = (int32_t)((uint32_t)step ^ 0x60FCF9DFu);
    step = (int32_t)(((uint32_t)step >> 20u) + ((uint32_t)step << 12u));
    step = (int32_t)((uint32_t)step * 1103519277u + 0x9D6BED41u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 22u));
    step = (int32_t)(((uint32_t)step << 23u) | ((uint32_t)step >> 9u));
    step = (int32_t)((uint32_t)step + 0x78125A54u);
    step = (int32_t)((uint32_t)step ^ 0x1649D405u);
    step = (int32_t)(((uint32_t)step >> 26u) + ((uint32_t)step << 6u));
    step = (int32_t)((uint32_t)step * 1103519445u + 0x52B8C767u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 28u));
    step = (int32_t)(((uint32_t)step << 29u) | ((uint32_t)step >> 3u));
    step = (int32_t)((uint32_t)step + 0x2D5F347Au);
    step = (int32_t)((uint32_t)step ^ 0xCB96AE2Bu);
    step = (int32_t)(((uint32_t)step >> 1u) + ((uint32_t)step << 31u));
    step = (int32_t)((uint32_t)step * 1103519613u + 0x0805A18Du);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 3u));
    step = (int32_t)(((uint32_t)step << 4u) | ((uint32_t)step >> 28u));
    step = (int32_t)((uint32_t)step + 0xE2AC0EA0u);
    step = (int32_t)((uint32_t)step ^ 0x80E38851u);
    step = (int32_t)(((uint32_t)step >> 7u) + ((uint32_t)step << 25u));
    step = (int32_t)((uint32_t)step * 1103519781u + 0xBD527BB3u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 9u));
    step = (int32_t)(((uint32_t)step << 10u) | ((uint32_t)step >> 22u));
    step = (int32_t)((uint32_t)step + 0x97F8E8C6u);
    step = (int32_t)((uint32_t)step ^ 0x36306277u);
    step = (int32_t)(((uint32_t)step >> 13u) + ((uint32_t)step << 19u));
    step = (int32_t)((uint32_t)step * 1103519949u + 0x729F55D9u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 15u));
    step = (int32_t)(((uint32_t)step << 16u) | ((uint32_t)step >> 16u));
    step = (int32_t)((uint32_t)step + 0x4D45C2ECu);
    step = (int32_t)((uint32_t)step ^ 0xEB7D3C9Du);
    step = (int32_t)(((uint32_t)step >> 19u) + ((uint32_t)step << 13u));
    step = (int32_t)((uint32_t)step * 1103520117u + 0x27EC2FFFu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 21u));
    step = (int32_t)(((uint32_t)step << 22u) | ((uint32_t)step >> 10u));
    step = (int32_t)((uint32_t)step + 0x02929D12u);
    step = (int32_t)((uint32_t)step ^ 0xA0CA16C3u);
    step = (int32_t)(((uint32_t)step >> 25u) + ((uint32_t)step << 7u));
    step = (int32_t)((uint32_t)step * 1103520285u + 0xDD390A25u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 27u));
    step = (int32_t)(((uint32_t)step << 28u) | ((uint32_t)step >> 4u));
    step = (int32_t)((uint32_t)step + 0xB7DF7738u);
    step = (int32_t)((uint32_t)step ^ 0x5616F0E9u);
    step = (int32_t)(((uint32_t)step >> 31u) + ((uint32_t)step << 1u));
    step = (int32_t)((uint32_t)step * 1103520453u + 0x9285E44Bu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 2u));
    step = (int32_t)(((uint32_t)step << 3u) | ((uint32_t)step >> 29u));
    step = (int32_t)((uint32_t)step + 0x6D2C515Eu);
    step = (int32_t)((uint32_t)step ^ 0x0B63CB0Fu);
    step = (int32_t)(((uint32_t)step >> 6u) + ((uint32_t)step << 26u));
    step = (int32_t)((uint32_t)step * 1103520621u + 0x47D2BE71u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 8u));
    step = (int32_t)(((uint32_t)step << 9u) | ((uint32_t)step >> 23u));
    step = (int32_t)((uint32_t)step + 0x22792B84u);
    step = (int32_t)((uint32_t)step ^ 0xC0B0A535u);
    step = (int32_t)(((uint32_t)step >> 12u) + ((uint32_t)step << 20u));
    step = (int32_t)((uint32_t)step * 1103520789u + 0xFD1F9897u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 14u));
    step = (int32_t)(((uint32_t)step << 15u) | ((uint32_t)step >> 17u));
    step = (int32_t)((uint32_t)step + 0xD7C605AAu);
    step = (int32_t)((uint32_t)step ^ 0x75FD7F5Bu);
    step = (int32_t)(((uint32_t)step >> 18u) + ((uint32_t)step << 14u));
    step = (int32_t)((uint32_t)step * 1103520957u + 0xB26C72BDu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 20u));
    step = (int32_t)(((uint32_t)step << 21u) | ((uint32_t)step >> 11u));
    step = (int32_t)((uint32_t)step + 0x8D12DFD0u);
    step = (int32_t)((uint32_t)step ^ 0x2B4A5981u);
    step = (int32_t)(((uint32_t)step >> 24u) + ((uint32_t)step << 8u));
    step = (int32_t)((uint32_t)step * 1103521125u + 0x67B94CE3u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 26u));
    step = (int32_t)(((uint32_t)step << 27u) | ((uint32_t)step >> 5u));
    step = (int32_t)((uint32_t)step + 0x425FB9F6u);
    step = (int32_t)((uint32_t)step ^ 0xE09733A7u);
    step = (int32_t)(((uint32_t)step >> 30u) + ((uint32_t)step << 2u));
    step = (int32_t)((uint32_t)step * 1103521293u + 0x1D062709u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 1u));
    step = (int32_t)(((uint32_t)step << 2u) | ((uint32_t)step >> 30u));
    step = (int32_t)((uint32_t)step + 0xF7AC941Cu);
    step = (int32_t)((uint32_t)step ^ 0x95E40DCDu);
    step = (int32_t)(((uint32_t)step >> 5u) + ((uint32_t)step << 27u));
    step = (int32_t)((uint32_t)step * 1103521461u + 0xD253012Fu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 7u));
    step = (int32_t)(((uint32_t)step << 8u) | ((uint32_t)step >> 24u));
    step = (int32_t)((uint32_t)step + 0xACF96E42u);
    step = (int32_t)((uint32_t)step ^ 0x4B30E7F3u);
    step = (int32_t)(((uint32_t)step >> 11u) + ((uint32_t)step << 21u));
    step = (int32_t)((uint32_t)step * 1103521629u + 0x879FDB55u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 13u));
    step = (int32_t)(((uint32_t)step << 14u) | ((uint32_t)step >> 18u));
    step = (int32_t)((uint32_t)step + 0x62464868u);
    step = (int32_t)((uint32_t)step ^ 0x007DC219u);
    step = (int32_t)(((uint32_t)step >> 17u) + ((uint32_t)step << 15u));
    step = (int32_t)((uint32_t)step * 1103521797u + 0x3CECB57Bu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 19u));
    step = (int32_t)(((uint32_t)step << 20u) | ((uint32_t)step >> 12u));
    step = (int32_t)((uint32_t)step + 0x1793228Eu);
    step = (int32_t)((uint32_t)step ^ 0xB5CA9C3Fu);
    step = (int32_t)(((uint32_t)step >> 23u) + ((uint32_t)step << 9u));
    step = (int32_t)((uint32_t)step * 1103521965u + 0xF2398FA1u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 25u));
    step = (int32_t)(((uint32_t)step << 26u) | ((uint32_t)step >> 6u));
    step = (int32_t)((uint32_t)step + 0xCCDFFCB4u);
    step = (int32_t)((uint32_t)step ^ 0x6B177665u);
    step = (int32_t)(((uint32_t)step >> 29u) + ((uint32_t)step << 3u));
    step = (int32_t)((uint32_t)step * 1103522133u + 0xA78669C7u);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 31u));
    step = (int32_t)(((uint32_t)step << 1u) | ((uint32_t)step >> 31u));
    step = (int32_t)((uint32_t)step + 0x822CD6DAu);
    step = (int32_t)((uint32_t)step ^ 0x2064508Bu);
    step = (int32_t)(((uint32_t)step >> 4u) + ((uint32_t)step << 28u));
    step = (int32_t)((uint32_t)step * 1103522301u + 0x5CD343EDu);
    step = (int32_t)((uint32_t)step ^ ((uint32_t)step >> 6u));
    step = (int32_t)(((uint32_t)step << 7u) | ((uint32_t)step >> 25u));
    step = (int32_t)((uint32_t)step + 0x3779B100u);

    return (int32_t)((uint32_t)step + CHAIN155_SIGNED_STEPS);
}

/* The buffer is snapshotted into a fixed 16-slot local first, so every
 * subscript in the chain below is a compile-time constant and no input can
 * steer an access. */
__attribute__((noinline)) int32_t
chain155_buffered(int32_t *cells, int32_t slots) {
    uint32_t work[CHAIN155_SLOTS];
    uint32_t carry = 0x2545F491u;
    int32_t index;

    if (cells == 0 || slots < 1 || slots > CHAIN155_SLOTS) {
        return -1;
    }
    for (index = 0; index < CHAIN155_SLOTS; ++index) {
        work[index] = (index < slots) ? (uint32_t)cells[index] : 0u;
    }

    carry = carry * 1103515245u + work[0];
    carry ^= (work[1] + carry) >> 2u;
    carry = (carry << 3u) | (carry >> 29u);
    carry = carry * 1103515341u + work[3];
    carry ^= (work[4] + carry) >> 5u;
    carry = (carry << 6u) | (carry >> 26u);
    carry = carry * 1103515437u + work[6];
    carry ^= (work[7] + carry) >> 8u;
    carry = (carry << 9u) | (carry >> 23u);
    carry = carry * 1103515533u + work[9];
    carry ^= (work[10] + carry) >> 11u;
    carry = (carry << 12u) | (carry >> 20u);
    carry = carry * 1103515629u + work[12];
    carry ^= (work[13] + carry) >> 14u;
    carry = (carry << 15u) | (carry >> 17u);
    carry = carry * 1103515725u + work[15];
    carry ^= (work[0] + carry) >> 17u;
    carry = (carry << 18u) | (carry >> 14u);
    carry = carry * 1103515821u + work[2];
    carry ^= (work[3] + carry) >> 20u;
    carry = (carry << 21u) | (carry >> 11u);
    carry = carry * 1103515917u + work[5];
    carry ^= (work[6] + carry) >> 23u;
    carry = (carry << 24u) | (carry >> 8u);
    carry = carry * 1103516013u + work[8];
    carry ^= (work[9] + carry) >> 26u;
    carry = (carry << 27u) | (carry >> 5u);
    carry = carry * 1103516109u + work[11];
    carry ^= (work[12] + carry) >> 29u;
    carry = (carry << 30u) | (carry >> 2u);
    carry = carry * 1103516205u + work[14];
    carry ^= (work[15] + carry) >> 1u;
    carry = (carry << 2u) | (carry >> 30u);
    carry = carry * 1103516301u + work[1];
    carry ^= (work[2] + carry) >> 4u;
    carry = (carry << 5u) | (carry >> 27u);
    carry = carry * 1103516397u + work[4];
    carry ^= (work[5] + carry) >> 7u;
    carry = (carry << 8u) | (carry >> 24u);
    carry = carry * 1103516493u + work[7];
    carry ^= (work[8] + carry) >> 10u;
    carry = (carry << 11u) | (carry >> 21u);
    carry = carry * 1103516589u + work[10];
    carry ^= (work[11] + carry) >> 13u;
    carry = (carry << 14u) | (carry >> 18u);
    carry = carry * 1103516685u + work[13];
    carry ^= (work[14] + carry) >> 16u;
    carry = (carry << 17u) | (carry >> 15u);
    carry = carry * 1103516781u + work[0];
    carry ^= (work[1] + carry) >> 19u;
    carry = (carry << 20u) | (carry >> 12u);
    carry = carry * 1103516877u + work[3];
    carry ^= (work[4] + carry) >> 22u;
    carry = (carry << 23u) | (carry >> 9u);
    carry = carry * 1103516973u + work[6];
    carry ^= (work[7] + carry) >> 25u;
    carry = (carry << 26u) | (carry >> 6u);
    carry = carry * 1103517069u + work[9];
    carry ^= (work[10] + carry) >> 28u;
    carry = (carry << 29u) | (carry >> 3u);
    carry = carry * 1103517165u + work[12];
    carry ^= (work[13] + carry) >> 31u;
    carry = (carry << 1u) | (carry >> 31u);
    carry = carry * 1103517261u + work[15];
    carry ^= (work[0] + carry) >> 3u;
    carry = (carry << 4u) | (carry >> 28u);
    carry = carry * 1103517357u + work[2];
    carry ^= (work[3] + carry) >> 6u;
    carry = (carry << 7u) | (carry >> 25u);
    carry = carry * 1103517453u + work[5];
    carry ^= (work[6] + carry) >> 9u;
    carry = (carry << 10u) | (carry >> 22u);
    carry = carry * 1103517549u + work[8];
    carry ^= (work[9] + carry) >> 12u;
    carry = (carry << 13u) | (carry >> 19u);
    carry = carry * 1103517645u + work[11];
    carry ^= (work[12] + carry) >> 15u;
    carry = (carry << 16u) | (carry >> 16u);
    carry = carry * 1103517741u + work[14];
    carry ^= (work[15] + carry) >> 18u;
    carry = (carry << 19u) | (carry >> 13u);
    carry = carry * 1103517837u + work[1];
    carry ^= (work[2] + carry) >> 21u;
    carry = (carry << 22u) | (carry >> 10u);
    carry = carry * 1103517933u + work[4];
    carry ^= (work[5] + carry) >> 24u;
    carry = (carry << 25u) | (carry >> 7u);
    carry = carry * 1103518029u + work[7];
    carry ^= (work[8] + carry) >> 27u;
    carry = (carry << 28u) | (carry >> 4u);
    carry = carry * 1103518125u + work[10];
    carry ^= (work[11] + carry) >> 30u;
    carry = (carry << 31u) | (carry >> 1u);
    carry = carry * 1103518221u + work[13];
    carry ^= (work[14] + carry) >> 2u;
    carry = (carry << 3u) | (carry >> 29u);
    carry = carry * 1103518317u + work[0];
    carry ^= (work[1] + carry) >> 5u;
    carry = (carry << 6u) | (carry >> 26u);
    carry = carry * 1103518413u + work[3];
    carry ^= (work[4] + carry) >> 8u;
    carry = (carry << 9u) | (carry >> 23u);
    carry = carry * 1103518509u + work[6];
    carry ^= (work[7] + carry) >> 11u;
    carry = (carry << 12u) | (carry >> 20u);
    carry = carry * 1103518605u + work[9];
    carry ^= (work[10] + carry) >> 14u;
    carry = (carry << 15u) | (carry >> 17u);
    carry = carry * 1103518701u + work[12];
    carry ^= (work[13] + carry) >> 17u;
    carry = (carry << 18u) | (carry >> 14u);
    carry = carry * 1103518797u + work[15];
    carry ^= (work[0] + carry) >> 20u;
    carry = (carry << 21u) | (carry >> 11u);
    carry = carry * 1103518893u + work[2];
    carry ^= (work[3] + carry) >> 23u;
    carry = (carry << 24u) | (carry >> 8u);
    carry = carry * 1103518989u + work[5];
    carry ^= (work[6] + carry) >> 26u;
    carry = (carry << 27u) | (carry >> 5u);
    carry = carry * 1103519085u + work[8];
    carry ^= (work[9] + carry) >> 29u;
    carry = (carry << 30u) | (carry >> 2u);
    carry = carry * 1103519181u + work[11];
    carry ^= (work[12] + carry) >> 1u;
    carry = (carry << 2u) | (carry >> 30u);
    carry = carry * 1103519277u + work[14];
    carry ^= (work[15] + carry) >> 4u;
    carry = (carry << 5u) | (carry >> 27u);
    carry = carry * 1103519373u + work[1];
    carry ^= (work[2] + carry) >> 7u;
    carry = (carry << 8u) | (carry >> 24u);
    carry = carry * 1103519469u + work[4];
    carry ^= (work[5] + carry) >> 10u;
    carry = (carry << 11u) | (carry >> 21u);
    carry = carry * 1103519565u + work[7];
    carry ^= (work[8] + carry) >> 13u;
    carry = (carry << 14u) | (carry >> 18u);
    carry = carry * 1103519661u + work[10];
    carry ^= (work[11] + carry) >> 16u;
    carry = (carry << 17u) | (carry >> 15u);
    carry = carry * 1103519757u + work[13];
    carry ^= (work[14] + carry) >> 19u;
    carry = (carry << 20u) | (carry >> 12u);
    carry = carry * 1103519853u + work[0];
    carry ^= (work[1] + carry) >> 22u;
    carry = (carry << 23u) | (carry >> 9u);
    carry = carry * 1103519949u + work[3];
    carry ^= (work[4] + carry) >> 25u;
    carry = (carry << 26u) | (carry >> 6u);
    carry = carry * 1103520045u + work[6];
    carry ^= (work[7] + carry) >> 28u;
    carry = (carry << 29u) | (carry >> 3u);
    carry = carry * 1103520141u + work[9];
    carry ^= (work[10] + carry) >> 31u;
    carry = (carry << 1u) | (carry >> 31u);
    carry = carry * 1103520237u + work[12];
    carry ^= (work[13] + carry) >> 3u;
    carry = (carry << 4u) | (carry >> 28u);
    carry = carry * 1103520333u + work[15];
    carry ^= (work[0] + carry) >> 6u;
    carry = (carry << 7u) | (carry >> 25u);
    carry = carry * 1103520429u + work[2];
    carry ^= (work[3] + carry) >> 9u;
    carry = (carry << 10u) | (carry >> 22u);
    carry = carry * 1103520525u + work[5];
    carry ^= (work[6] + carry) >> 12u;
    carry = (carry << 13u) | (carry >> 19u);
    carry = carry * 1103520621u + work[8];
    carry ^= (work[9] + carry) >> 15u;
    carry = (carry << 16u) | (carry >> 16u);
    carry = carry * 1103520717u + work[11];
    carry ^= (work[12] + carry) >> 18u;
    carry = (carry << 19u) | (carry >> 13u);
    carry = carry * 1103520813u + work[14];
    carry ^= (work[15] + carry) >> 21u;
    carry = (carry << 22u) | (carry >> 10u);
    carry = carry * 1103520909u + work[1];
    carry ^= (work[2] + carry) >> 24u;
    carry = (carry << 25u) | (carry >> 7u);
    carry = carry * 1103521005u + work[4];
    carry ^= (work[5] + carry) >> 27u;
    carry = (carry << 28u) | (carry >> 4u);
    carry = carry * 1103521101u + work[7];
    carry ^= (work[8] + carry) >> 30u;
    carry = (carry << 31u) | (carry >> 1u);
    carry = carry * 1103521197u + work[10];
    carry ^= (work[11] + carry) >> 2u;
    carry = (carry << 3u) | (carry >> 29u);
    carry = carry * 1103521293u + work[13];
    carry ^= (work[14] + carry) >> 5u;
    carry = (carry << 6u) | (carry >> 26u);

    for (index = 0; index < slots; ++index) {
        cells[index] = (int32_t)((carry ^ work[index]) & 0x7FFFFFFFu);
        carry = carry * 1664525u + 1013904223u;
    }
    return (int32_t)(carry & 0x00FFFFFFu) + CHAIN155_BUFFER_STEPS;
}

Recovered C

Generated by glaurung decompile --style decbench at b47f6b43. baseline.json records the result after recompiling the C and calling it beside the original with seeded inputs.

clang -O2

2/3
chain155_buffered fail 527 lines
// glaurung: chain155_buffered @ 0x1ea0
__attribute__((no_stack_protector)) int32_t chain155_buffered(int32_t * arg0, int32_t arg1) {
    int index;
    unsigned int carry;
    unsigned char local_c8[200];
    long local_d0;
    long local_e0;
    long local_e8;
    long local_f0;
    long local_f8;
    long rbp;
    long ret;
    long var1;
    long var10;
    int var101;
    long var109;
    int var114;
    long var12;
    long var122;
    int var126;
    long var133;
    long var136;
    int var137;
    long var14;
    long var144;
    long var147;
    int var148;
    long var155;
    int var158;
    long var16;
    long var165;
    long var168;
    int var169;
    long var176;
    long var18;
    int var180;
    long var188;
    int var191;
    long var199;
    long var2;
    long var20;
    int var203;
    long var210;
    int var213;
    long var22;
    long var220;
    int var223;
    long var230;
    long var233;
    int var234;
    long var24;
    long var241;
    int var245;
    long var252;
    long var255;
    int var256;
    long var26;
    long var263;
    int var267;
    long var269;
    int var279;
    long var286;
    long var29;
    int var290;
    long var297;
    long var3;
    int var300;
    long var307;
    long var31;
    int var310;
    long var317;
    int var320;
    long var327;
    long var33;
    int var330;
    long var337;
    long var340;
    int var341;
    long var348;
    long var35;
    int var352;
    long var359;
    long var36;
    int var362;
    long var370;
    int var374;
    long var381;
    int var385;
    long var392;
    long var395;
    int var396;
    long var4;
    long var404;
    long var407;
    int var408;
    long var416;
    int var420;
    long var427;
    long var430;
    int var431;
    long var438;
    long var441;
    int var442;
    long var450;
    int var453;
    long var460;
    int var464;
    long var471;
    int var475;
    long var482;
    int var485;
    long var492;
    int var495;
    long var5;
    long var50;
    long var502;
    int var505;
    long var512;
    int var516;
    long var523;
    int var526;
    int var53;
    long var534;
    long var537;
    int var538;
    long var545;
    int var549;
    long var556;
    int var560;
    long var567;
    long var570;
    int var571;
    long var578;
    long var581;
    int var582;
    long var589;
    int var593;
    long var6;
    long var600;
    int var603;
    long var615;
    int var616;
    long var62;
    long var623;
    int var626;
    long var634;
    int var638;
    long var646;
    int var649;
    long var657;
    int var66;
    int var660;
    long var669;
    int var672;
    long var681;
    int var684;
    long var692;
    int var695;
    long var704;
    int var707;
    long var715;
    int var718;
    long var726;
    int var729;
    long var737;
    long var74;
    int var740;
    long var748;
    long var749;
    long var751;
    long var754;
    long var757;
    long var758;
    int var765;
    int var77;
    int var772;
    long var774;
    long var775;
    long var778;
    int var789;
    long var8;
    long var87;
    int var90;
    long var97;
    ret = 0xffffffff;
    if ((arg0 == 0)) {
        return ret;
    }
    if (((unsigned long)((unsigned long)((unsigned int)((arg1 - 17)))) < (unsigned long)(0xfffffff0))) {
        return ret;
    }
    *(long *)((&local_c8[0] + 192)) = rbp;
    *(long *)((&local_c8[0] + 184)) = var1;
    *(long *)((&local_c8[0] + 176)) = var2;
    *(long *)((&local_c8[0] + 168)) = var3;
    *(long *)((&local_c8[0] + 160)) = var4;
    *(long *)((&local_c8[0] + 152)) = var5;
    var6 = (unsigned long)((unsigned int)(*(int *)(((long)arg0))));
    *(int *)(&local_c8[0]) = var6;
    if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(1))) {
        *(int *)((&local_c8[0] + 4)) = 0;
        var8 = 0;
        L_2010: ;
        *(int *)((&local_c8[0] + 8)) = 0;
        var10 = 0;
        L_201a: ;
        *(int *)((&local_c8[0] + 12)) = 0;
        var12 = 0;
        L_2025: ;
        *(int *)((&local_c8[0] + 16)) = 0;
        var14 = 0;
        L_202f: ;
        local_e0 = var14;
        local_f0 = var10;
        *(int *)((&local_c8[0] + 20)) = 0;
        var10 = 0;
        local_d0 = 0;
        var16 = rbp;
        L_2048: ;
        *(int *)((&local_c8[0] + 24)) = 0;
        var18 = 0;
        L_2052: ;
        local_f8 = var18;
        *(int *)((&local_c8[0] + 28)) = 0;
        var20 = 0;
        L_2062: ;
        *(int *)((&local_c8[0] + 32)) = 0;
        var22 = 0;
        L_206c: ;
        *(int *)((&local_c8[0] + 36)) = 0;
        var24 = 0;
        L_2076: ;
        *(int *)((&local_c8[0] + 40)) = 0;
        var26 = 0;
        L_2080: ;
        *(long *)((&local_c8[0] + 80)) = var22;
        local_e8 = var26;
        *(int *)((&local_c8[0] + 44)) = 0;
        var26 = 0;
        *(long *)((&local_c8[0] + 88)) = 0;
        L_2098: ;
        *(int *)((&local_c8[0] + 48)) = 0;
        var29 = 0;
        L_20a3: ;
        *(int *)((&local_c8[0] + 52)) = 0;
        var31 = 0;
        L_20ad: ;
        *(int *)((&local_c8[0] + 56)) = 0;
        var33 = 0;
        L_20b7: ;
        var35 = 0;
    } else {
        var8 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x4))));
        *(int *)((&local_c8[0] + 4)) = var8;
        if (((unsigned long)((unsigned int)(arg1)) == 2)) {
            goto L_2010;
        } else {
            var10 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x8))));
            *(int *)((&local_c8[0] + 8)) = var10;
            if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(3))) {
                goto L_201a;
            } else {
                var12 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0xc))));
                *(int *)((&local_c8[0] + 12)) = var12;
                if (((unsigned long)((unsigned int)(arg1)) == 4)) {
                    goto L_2025;
                } else {
                    var14 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x10))));
                    *(int *)((&local_c8[0] + 16)) = var14;
                    if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(5))) {
                        goto L_202f;
                    } else {
                        var16 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x14))));
                        *(int *)((&local_c8[0] + 20)) = var16;
                        local_f0 = var10;
                        local_e0 = var14;
                        local_d0 = var16;
                        if (((unsigned long)((unsigned int)(arg1)) == 6)) {
                            goto L_2048;
                        } else {
                            var18 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x18))));
                            *(int *)((&local_c8[0] + 24)) = var18;
                            if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(7))) {
                                goto L_2052;
                            } else {
                                var20 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x1c))));
                                *(int *)((&local_c8[0] + 28)) = var20;
                                local_f8 = var18;
                                if (((unsigned long)((unsigned int)(arg1)) == 8)) {
                                    goto L_2062;
                                } else {
                                    var22 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x20))));
                                    *(int *)((&local_c8[0] + 32)) = var22;
                                    if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(9))) {
                                        goto L_206c;
                                    } else {
                                        var24 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x24))));
                                        *(int *)((&local_c8[0] + 36)) = var24;
                                        if (((unsigned long)((unsigned int)(arg1)) == 10)) {
                                            goto L_2076;
                                        } else {
                                            var26 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x28))));
                                            *(int *)((&local_c8[0] + 40)) = var26;
                                            if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(11))) {
                                                goto L_2080;
                                            } else {
                                                var36 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x2c))));
                                                *(int *)((&local_c8[0] + 44)) = var36;
                                                local_e8 = var26;
                                                *(long *)((&local_c8[0] + 88)) = var36;
                                                *(long *)((&local_c8[0] + 80)) = var22;
                                                if (((unsigned long)((unsigned int)(arg1)) == 12)) {
                                                    goto L_2098;
                                                } else {
                                                    var26 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x30))));
                                                    var29 = var26;
                                                    *(int *)((&local_c8[0] + 48)) = var26;
                                                    if (((unsigned long)((unsigned long)((unsigned int)(arg1))) <= (unsigned long)(13))) {
                                                        goto L_20a3;
                                                    } else {
                                                        var26 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x34))));
                                                        var31 = var26;
                                                        *(int *)((&local_c8[0] + 52)) = var26;
                                                        if (((unsigned long)((unsigned int)(arg1)) == 14)) {
                                                            goto L_20ad;
                                                        } else {
                                                            var33 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x38))));
                                                            *(int *)((&local_c8[0] + 56)) = var33;
                                                            if (((unsigned long)((unsigned long)((unsigned int)(*(int *)((&local_c8[0] + 96))))) < (unsigned long)(16))) {
                                                                goto L_20b7;
                                                            } else {
                                                                var35 = (unsigned long)((unsigned int)(*(int *)(((long)arg0 + 0x3c))));
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    *(long *)((&local_c8[0] + 120)) = var8;
    var50 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var6 + var8))) + 0x28734fbd))) >> 2))) ^ (unsigned long)((unsigned int)((var6 + 0x28734fbd))))));
    var53 = ((((var50 << 3) | ((unsigned long)(var50) >> 29)) * 0x41c64ecd) + var12);
    *(long *)((&local_c8[0] + 72)) = var12;
    var62 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((local_e0 + (unsigned long)((unsigned int)(var53))))) >> 5))) ^ (unsigned long)((unsigned int)(var53)))));
    var66 = ((((var62 << 6) | ((unsigned long)(var62) >> 26)) * 0x41c64f2d) + local_f8);
    var74 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var66)) + var20))) >> 8))) ^ (unsigned long)((unsigned int)(var66)))));
    var77 = ((((var74 << 9) | ((unsigned long)(var74) >> 23)) * 0x41c64f8d) + var24);
    *(long *)((&local_c8[0] + 136)) = var24;
    var87 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((local_e8 + (unsigned long)((unsigned int)(var77))))) >> 11))) ^ (unsigned long)((unsigned int)(var77)))));
    var90 = ((((var87 << 12) | ((unsigned long)(var87) >> 20)) * 0x41c64fed) + var29);
    var97 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var90)) + var31))) >> 14))) ^ (unsigned long)((unsigned int)(var90)))));
    var101 = ((((var97 << 15) | ((unsigned long)(var97) >> 17)) * 0x41c6504d) + var35);
    var109 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var101)) + var6))) >> 17))) ^ (unsigned long)((unsigned int)(var101)))));
    *(long *)((&local_c8[0] + 144)) = var31;
    var114 = ((((var109 << 18) | ((unsigned long)(var109) >> 14)) * 0x41c650ad) + local_f0);
    var122 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var114)) + var12))) >> 20))) ^ (unsigned long)((unsigned int)(var114)))));
    var126 = ((((var122 << 21) | ((unsigned long)(var122) >> 11)) * 0x41c6510d) + local_d0);
    var133 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var126)) + local_f8))) >> 23))) ^ (unsigned long)((unsigned int)(var126)))));
    var136 = *(long *)((&local_c8[0] + 80));
    var137 = ((((var133 << 24) | ((unsigned long)(var133) >> 8)) * 0x41c6516d) + var136);
    var144 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var137)) + var24))) >> 26))) ^ (unsigned long)((unsigned int)(var137)))));
    var147 = *(long *)((&local_c8[0] + 88));
    var148 = ((((var144 << 27) | ((unsigned long)(var144) >> 5)) * 0x41c651cd) + var147);
    var155 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var148)) + var29))) >> 29))) ^ (unsigned long)((unsigned int)(var148)))));
    var158 = ((((var155 << 30) | ((unsigned long)(var155) >> 2)) * 0x41c6522d) + var33);
    var165 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var158)) + var35))) >> 1))) ^ (unsigned long)((unsigned int)(var158)))));
    var168 = *(long *)((&local_c8[0] + 120));
    var169 = ((((var165 << 2) | ((unsigned long)(var165) >> 30)) * 0x41c6528d) + var168);
    var176 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var169)) + local_f0))) >> 4))) ^ (unsigned long)((unsigned int)(var169)))));
    var180 = ((((var176 << 5) | ((unsigned long)(var176) >> 27)) * 0x41c652ed) + local_e0);
    var188 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var180)) + local_d0))) >> 7))) ^ (unsigned long)((unsigned int)(var180)))));
    var191 = ((((var188 << 8) | ((unsigned long)(var188) >> 24)) * 0x41c6534d) + var20);
    var199 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var191)) + var136))) >> 10))) ^ (unsigned long)((unsigned int)(var191)))));
    var203 = ((((var199 << 11) | ((unsigned long)(var199) >> 21)) * 0x41c653ad) + local_e8);
    var210 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var203)) + var147))) >> 13))) ^ (unsigned long)((unsigned int)(var203)))));
    var213 = ((((var210 << 14) | ((unsigned long)(var210) >> 18)) * 0x41c6540d) + var31);
    var220 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var213)) + var33))) >> 16))) ^ (unsigned long)((unsigned int)(var213)))));
    var223 = ((((var220 << 17) | ((unsigned long)(var220) >> 15)) * 0x41c6546d) + var6);
    *(long *)((&local_c8[0] + 104)) = var6;
    var230 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var223)) + var168))) >> 19))) ^ (unsigned long)((unsigned int)(var223)))));
    var233 = *(long *)((&local_c8[0] + 72));
    var234 = ((((var230 << 20) | ((unsigned long)(var230) >> 12)) * 0x41c654cd) + var233);
    var241 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var234)) + local_e0))) >> 22))) ^ (unsigned long)((unsigned int)(var234)))));
    var245 = ((((var241 << 23) | ((unsigned long)(var241) >> 9)) * 0x41c6552d) + local_f8);
    var252 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var245)) + var20))) >> 25))) ^ (unsigned long)((unsigned int)(var245)))));
    var255 = *(long *)((&local_c8[0] + 136));
    var256 = ((((var252 << 26) | ((unsigned long)(var252) >> 6)) * 0x41c6558d) + var255);
    var263 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var256)) + local_e8))) >> 28))) ^ (unsigned long)((unsigned int)(var256)))));
    *(long *)((&local_c8[0] + 128)) = var29;
    var267 = ((((var263 << 29) | ((unsigned long)(var263) >> 3)) * 0x41c655ed) + var29);
    var269 = *(long *)((&local_c8[0] + 144));
    var279 = ((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var267)) + var269))) >> 31))) ^ (unsigned long)((unsigned int)(var267))))) << 1) | ((unsigned long)((unsigned int)(var267)) >> 31)) & 0xffffffff) * 0x41c6564d) + var35);
    var286 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var279)) + var6))) >> 3))) ^ (unsigned long)((unsigned int)(var279)))));
    var290 = ((((var286 << 4) | ((unsigned long)(var286) >> 28)) * 0x41c656ad) + local_f0);
    var297 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var290)) + var233))) >> 6))) ^ (unsigned long)((unsigned int)(var290)))));
    var300 = ((((var297 << 7) | ((unsigned long)(var297) >> 25)) * 0x41c6570d) + local_d0);
    var307 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var300)) + local_f8))) >> 9))) ^ (unsigned long)((unsigned int)(var300)))));
    var310 = ((((var307 << 10) | ((unsigned long)(var307) >> 22)) * 0x41c6576d) + var136);
    var317 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var310)) + var255))) >> 12))) ^ (unsigned long)((unsigned int)(var310)))));
    var320 = ((((var317 << 13) | ((unsigned long)(var317) >> 19)) * 0x41c657cd) + var147);
    var327 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var320)) + var29))) >> 15))) ^ (unsigned long)((unsigned int)(var320)))));
    var330 = ((((var327 << 16) | ((unsigned long)(var327) >> 16)) * 0x41c6582d) + var33);
    var337 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var330)) + var35))) >> 18))) ^ (unsigned long)((unsigned int)(var330)))));
    var340 = *(long *)((&local_c8[0] + 120));
    var341 = ((((var337 << 19) | ((unsigned long)(var337) >> 13)) * 0x41c6588d) + var340);
    var348 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var341)) + local_f0))) >> 21))) ^ (unsigned long)((unsigned int)(var341)))));
    var352 = ((((var348 << 22) | ((unsigned long)(var348) >> 10)) * 0x41c658ed) + local_e0);
    var359 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var352)) + local_d0))) >> 24))) ^ (unsigned long)((unsigned int)(var352)))));
    var362 = ((((var359 << 25) | ((unsigned long)(var359) >> 7)) * 0x41c6594d) + var20);
    *(long *)((&local_c8[0] + 112)) = var20;
    var370 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var362)) + var136))) >> 27))) ^ (unsigned long)((unsigned int)(var362)))));
    var374 = ((((var370 << 28) | ((unsigned long)(var370) >> 4)) * 0x41c659ad) + local_e8);
    var381 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var374)) + var147))) >> 30))) ^ (unsigned long)((unsigned int)(var374)))));
    var385 = (((((unsigned long)(var381) >> 1) | (var381 << 31)) * 0x41c65a0d) + var269);
    var392 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var385)) + var33))) >> 2))) ^ (unsigned long)((unsigned int)(var385)))));
    var395 = *(long *)((&local_c8[0] + 104));
    var396 = ((((var392 << 3) | ((unsigned long)(var392) >> 29)) * 0x41c65a6d) + var395);
    var404 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var396)) + var340))) >> 5))) ^ (unsigned long)((unsigned int)(var396)))));
    var407 = *(long *)((&local_c8[0] + 72));
    var408 = ((((var404 << 6) | ((unsigned long)(var404) >> 26)) * 0x41c65acd) + var407);
    var416 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var408)) + local_e0))) >> 8))) ^ (unsigned long)((unsigned int)(var408)))));
    var420 = ((((var416 << 9) | ((unsigned long)(var416) >> 23)) * 0x41c65b2d) + local_f8);
    var427 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var420)) + var20))) >> 11))) ^ (unsigned long)((unsigned int)(var420)))));
    var430 = *(long *)((&local_c8[0] + 136));
    var431 = ((((var427 << 12) | ((unsigned long)(var427) >> 20)) * 0x41c65b8d) + var430);
    var438 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var431)) + local_e8))) >> 14))) ^ (unsigned long)((unsigned int)(var431)))));
    var441 = *(long *)((&local_c8[0] + 128));
    var442 = ((((var438 << 15) | ((unsigned long)(var438) >> 17)) * 0x41c65bed) + var441);
    var450 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var442)) + var269))) >> 17))) ^ (unsigned long)((unsigned int)(var442)))));
    var453 = ((((var450 << 18) | ((unsigned long)(var450) >> 14)) * 0x41c65c4d) + var35);
    var460 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var453)) + var395))) >> 20))) ^ (unsigned long)((unsigned int)(var453)))));
    var464 = ((((var460 << 21) | ((unsigned long)(var460) >> 11)) * 0x41c65cad) + local_f0);
    var471 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var464)) + var407))) >> 23))) ^ (unsigned long)((unsigned int)(var464)))));
    var475 = ((((var471 << 24) | ((unsigned long)(var471) >> 8)) * 0x41c65d0d) + local_d0);
    var482 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var475)) + local_f8))) >> 26))) ^ (unsigned long)((unsigned int)(var475)))));
    var485 = ((((var482 << 27) | ((unsigned long)(var482) >> 5)) * 0x41c65d6d) + var136);
    var492 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var485)) + var430))) >> 29))) ^ (unsigned long)((unsigned int)(var485)))));
    var495 = ((((var492 << 30) | ((unsigned long)(var492) >> 2)) * 0x41c65dcd) + var147);
    var502 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var495)) + var441))) >> 1))) ^ (unsigned long)((unsigned int)(var495)))));
    var505 = ((((var502 << 2) | ((unsigned long)(var502) >> 30)) * 0x41c65e2d) + var33);
    var512 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var505)) + var35))) >> 4))) ^ (unsigned long)((unsigned int)(var505)))));
    var516 = ((((var512 << 5) | ((unsigned long)(var512) >> 27)) * 0x41c65e8d) + var340);
    var523 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var516)) + local_f0))) >> 7))) ^ (unsigned long)((unsigned int)(var516)))));
    var526 = ((((var523 << 8) | ((unsigned long)(var523) >> 24)) * 0x41c65eed) + local_e0);
    var534 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var526)) + local_d0))) >> 10))) ^ (unsigned long)((unsigned int)(var526)))));
    var537 = *(long *)((&local_c8[0] + 112));
    var538 = ((((var534 << 11) | ((unsigned long)(var534) >> 21)) * 0x41c65f4d) + var537);
    var545 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var538)) + var136))) >> 13))) ^ (unsigned long)((unsigned int)(var538)))));
    var549 = ((((var545 << 14) | ((unsigned long)(var545) >> 18)) * 0x41c65fad) + local_e8);
    var556 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var549)) + var147))) >> 16))) ^ (unsigned long)((unsigned int)(var549)))));
    var560 = ((((var556 << 17) | ((unsigned long)(var556) >> 15)) * 0x41c6600d) + var269);
    var567 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var560)) + var33))) >> 19))) ^ (unsigned long)((unsigned int)(var560)))));
    var570 = *(long *)((&local_c8[0] + 104));
    var571 = ((((var567 << 20) | ((unsigned long)(var567) >> 12)) * 0x41c6606d) + var570);
    var578 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var571)) + var340))) >> 22))) ^ (unsigned long)((unsigned int)(var571)))));
    var581 = *(long *)((&local_c8[0] + 72));
    var582 = ((((var578 << 23) | ((unsigned long)(var578) >> 9)) * 0x41c660cd) + var581);
    var589 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var582)) + local_e0))) >> 25))) ^ (unsigned long)((unsigned int)(var582)))));
    var593 = ((((var589 << 26) | ((unsigned long)(var589) >> 6)) * 0x41c6612d) + local_f8);
    var600 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var593)) + var537))) >> 28))) ^ (unsigned long)((unsigned int)(var593)))));
    var603 = ((((var600 << 29) | ((unsigned long)(var600) >> 3)) * 0x41c6618d) + var430);
    var615 = *(long *)((&local_c8[0] + 128));
    var616 = ((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var603)) + local_e8))) >> 31))) ^ (unsigned long)((unsigned int)(var603))))) << 1) | ((unsigned long)((unsigned int)(var603)) >> 31)) & 0xffffffff) * 0x41c661ed) + var615);
    var623 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var616)) + var269))) >> 3))) ^ (unsigned long)((unsigned int)(var616)))));
    var626 = ((((var623 << 4) | ((unsigned long)(var623) >> 28)) * 0x41c6624d) + var35);
    var634 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var570 + (unsigned long)((unsigned int)(var626))))) >> 6))) ^ (unsigned long)((unsigned int)(var626)))));
    var638 = ((((var634 << 7) | ((unsigned long)(var634) >> 25)) * 0x41c662ad) + local_f0);
    var646 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var581 + (unsigned long)((unsigned int)(var638))))) >> 9))) ^ (unsigned long)((unsigned int)(var638)))));
    var649 = ((((var646 << 10) | ((unsigned long)(var646) >> 22)) * 0x41c6630d) + local_d0);
    var657 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((local_f8 + (unsigned long)((unsigned int)(var649))))) >> 12))) ^ (unsigned long)((unsigned int)(var649)))));
    var660 = ((((var657 << 13) | ((unsigned long)(var657) >> 19)) * 0x41c6636d) + var136);
    var669 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var430 + (unsigned long)((unsigned int)(var660))))) >> 15))) ^ (unsigned long)((unsigned int)(var660)))));
    var672 = ((((var669 << 16) | ((unsigned long)(var669) >> 16)) * 0x41c663cd) + var147);
    var681 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var615 + (unsigned long)((unsigned int)(var672))))) >> 18))) ^ (unsigned long)((unsigned int)(var672)))));
    *(int *)((&local_c8[0] + 60)) = var35;
    var684 = ((((var681 << 19) | ((unsigned long)(var681) >> 13)) * 0x41c6642d) + var33);
    var692 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var35 + (unsigned long)((unsigned int)(var684))))) >> 21))) ^ (unsigned long)((unsigned int)(var684)))));
    var695 = ((((var692 << 22) | ((unsigned long)(var692) >> 10)) * 0x41c6648d) + var340);
    var704 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((local_f0 + (unsigned long)((unsigned int)(var695))))) >> 24))) ^ (unsigned long)((unsigned int)(var695)))));
    var707 = ((((var704 << 25) | ((unsigned long)(var704) >> 7)) * 0x41c664ed) + (unsigned int)(local_e0));
    var715 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((local_d0 + (unsigned long)((unsigned int)(var707))))) >> 27))) ^ (unsigned long)((unsigned int)(var707)))));
    var718 = ((((var715 << 28) | ((unsigned long)(var715) >> 4)) * 0x41c6654d) + *(int *)((&local_c8[0] + 112)));
    var726 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var136 + (unsigned long)((unsigned int)(var718))))) >> 30))) ^ (unsigned long)((unsigned int)(var718)))));
    var729 = (((((unsigned long)(var726) >> 1) | (var726 << 31)) * 0x41c665ad) + (unsigned int)(local_e8));
    var737 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var147 + (unsigned long)((unsigned int)(var729))))) >> 2))) ^ (unsigned long)((unsigned int)(var729)))));
    var740 = ((((var737 << 3) | ((unsigned long)(var737) >> 29)) * 0x41c6660d) + var269);
    var748 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var33 + (unsigned long)((unsigned int)(var740))))) >> 5))) ^ (unsigned long)((unsigned int)(var740)))));
    var749 = ((var748 << 6) | ((unsigned long)(var748) >> 26));
    var751 = (unsigned long)((unsigned int)(arg1));
    if (((unsigned long)((unsigned int)(arg1)) != 1)) {
        var754 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var751)) & -2)));
        var757 = (long)arg0;
        var758 = var749;
        index = 0;
        do {
            *(int *)((var757 + index * 4)) = ((unsigned long)((unsigned int)((var758 ^ *(int *)((&local_c8[0] + (index * 4)))))) & 0x7fffffff);
            var765 = ((var758 * 0x19660d) + 0x3c6ef35f);
            *(int *)((var757 + index * 4 + 0x4)) = ((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var765)) ^ *(int *)((&local_c8[0] + ((index * 4) + 4)))))) & 0x7fffffff);
            var772 = (((unsigned int)(var765) * 0x19660d) + 0x3c6ef35f);
            index = (index + 2);
            var758 = (unsigned long)((unsigned int)(var772));
            var774 = (unsigned long)((unsigned int)(var772));
            var775 = (unsigned long)((unsigned int)(index));
        } while ((var754 != index));
    } else {
        var757 = (long)arg0;
        var774 = var749;
        var775 = 0;
    }
    var778 = var774;
    if (((unsigned long)((unsigned char)((var751 & 1))) != 0)) {
        *(int *)((var757 + var775 * 4)) = ((unsigned long)((unsigned int)((var774 ^ *(int *)((&local_c8[0] + (var775 * 4)))))) & 0x7fffffff);
        var778 = (unsigned long)((unsigned int)(((var774 * 0x19660d) + 0x3c6ef35f)));
    }
    var789 = ((unsigned int)((var778 & 0xffffff)) + 192);
    ret = (unsigned long)((unsigned int)(var789));
    // x86-64 epilogue: tear down frame
    return (unsigned int)(var789);
}
chain155_scalar pass 321 lines
// glaurung: chain155_scalar @ 0x1100
uint32_t chain155_scalar(uint32_t arg0) {
    unsigned int acc;
    long var10;
    long var100;
    long var105;
    int var108;
    long var115;
    long var120;
    int var123;
    long var130;
    long var135;
    int var138;
    long var145;
    long var15;
    long var150;
    int var153;
    long var166;
    int var169;
    long var176;
    int var18;
    long var181;
    int var184;
    long var191;
    long var196;
    int var199;
    long var206;
    long var211;
    int var214;
    long var221;
    int var223;
    int var229;
    long var236;
    long var241;
    int var244;
    long var25;
    long var251;
    long var256;
    int var259;
    long var266;
    long var271;
    int var274;
    long var281;
    long var286;
    int var289;
    long var296;
    int var3;
    long var30;
    long var301;
    int var304;
    long var311;
    long var316;
    int var319;
    long var326;
    int var33;
    long var331;
    int var334;
    long var341;
    long var346;
    int var349;
    long var356;
    long var361;
    int var364;
    long var371;
    long var376;
    int var379;
    long var386;
    long var391;
    int var394;
    long var40;
    long var401;
    long var406;
    int var409;
    long var416;
    long var421;
    int var424;
    long var431;
    long var436;
    int var439;
    long var446;
    long var45;
    long var451;
    int var454;
    long var461;
    int var463;
    int var469;
    long var476;
    int var48;
    long var481;
    int var484;
    long var491;
    long var496;
    int var499;
    long var506;
    long var511;
    int var514;
    long var521;
    long var526;
    int var529;
    long var536;
    long var541;
    int var544;
    long var55;
    long var551;
    long var556;
    int var559;
    long var566;
    long var571;
    int var574;
    long var581;
    long var586;
    int var589;
    long var596;
    long var60;
    long var601;
    int var604;
    long var611;
    long var616;
    int var619;
    int var63;
    long var632;
    int var635;
    long var642;
    long var647;
    int var650;
    long var657;
    long var662;
    int var665;
    long var672;
    long var677;
    int var680;
    long var687;
    long var692;
    int var695;
    long var70;
    long var702;
    long var707;
    int var710;
    long var717;
    long var722;
    int var725;
    long var732;
    long var737;
    int var740;
    long var747;
    long var75;
    long var752;
    int var755;
    long var762;
    long var767;
    int var770;
    long var777;
    int var78;
    long var782;
    int var785;
    long var792;
    long var797;
    int var800;
    long var85;
    long var90;
    int var93;
    var3 = (((unsigned int)((arg0 ^ -0x61c88647LL)) * 0x41c64e6d) - 0x61c8864f);
    var10 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var3)) >> 2))) ^ (unsigned long)((unsigned int)(var3)))));
    var15 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var10 << 3) | ((unsigned long)(var10) >> 29)) + 0x78dde6c4))) ^ 0x17156075)));
    var18 = ((((var15 << 26) | ((unsigned long)(var15) >> 6)) * 0x41c64f15) + 0x538453d7);
    var25 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var18)) >> 8))) ^ (unsigned long)((unsigned int)(var18)))));
    var30 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var25 << 9) | ((unsigned long)(var25) >> 23)) + 0x2e2ac0ea))) ^ -0x339dc565LL)));
    var33 = ((((var30 << 20) | ((unsigned long)(var30) >> 12)) * 0x41c64fbd) + 0x8d12dfd);
    var40 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var33)) >> 14))) ^ (unsigned long)((unsigned int)(var33)))));
    var45 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var40 << 15) | ((unsigned long)(var40) >> 17)) - 0x1c8864f0))) ^ -0x7e50eb3fLL)));
    var48 = ((((var45 << 14) | ((unsigned long)(var45) >> 18)) * 0x41c65065) - 0x41e1f7dd);
    var55 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var48)) >> 20))) ^ (unsigned long)((unsigned int)(var48)))));
    var60 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var55 << 21) | ((unsigned long)(var55) >> 11)) - 0x673b8aca))) ^ 0x36fbeee7)));
    var63 = ((((var60 << 8) | ((unsigned long)(var60) >> 24)) * 0x41c6510d) + 0x736ae249);
    var70 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var63)) >> 26))) ^ (unsigned long)((unsigned int)(var63)))));
    var75 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var70 << 27) | ((unsigned long)(var70) >> 5)) + 0x4e114f5c))) ^ -0x13b736f3LL)));
    var78 = ((((var75 << 2) | ((unsigned long)(var75) >> 30)) * 0x41c651b5) + 0x28b7bc6f);
    var85 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var78)) >> 1))) ^ (unsigned long)((unsigned int)(var78)))));
    var90 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var85 << 2) | ((unsigned long)(var85) >> 30)) + 0x35e2982))) ^ -0x5e6a5ccdLL)));
    var93 = ((((var90 << 27) | ((unsigned long)(var90) >> 5)) * 0x41c6525d) - 0x21fb696b);
    var100 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var93)) >> 7))) ^ (unsigned long)((unsigned int)(var93)))));
    var105 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var100 << 8) | ((unsigned long)(var100) >> 24)) - 0x4754fc58))) ^ 0x56e27d59)));
    var108 = ((((var105 << 21) | ((unsigned long)(var105) >> 11)) * 0x41c65305) - 0x6cae8f45);
    var115 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var108)) >> 13))) ^ (unsigned long)((unsigned int)(var108)))));
    var120 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var115 << 14) | ((unsigned long)(var115) >> 18)) + 0x6df7ddce))) ^ 0xc2f577f)));
    var123 = ((((var120 << 15) | ((unsigned long)(var120) >> 17)) * 0x41c653ad) + 0x489e4ae1);
    var130 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var123)) >> 19))) ^ (unsigned long)((unsigned int)(var123)))));
    var135 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var130 << 20) | ((unsigned long)(var130) >> 12)) + 0x2344b7f4))) ^ -0x3e83ce5bLL)));
    var138 = ((((var135 << 9) | ((unsigned long)(var135) >> 23)) * 0x41c65455) - 0x214daf9);
    var145 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var138)) >> 25))) ^ (unsigned long)((unsigned int)(var138)))));
    var150 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var145 << 26) | ((unsigned long)(var145) >> 6)) - 0x276e6de6))) ^ 0x76c90bcb)));
    var153 = ((((var150 << 3) | ((unsigned long)(var150) >> 29)) * 0x41c654fd) - 0x4cc800d3);
    var166 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var153)) >> 31))) ^ (unsigned long)((unsigned int)(var153))))) << 1) | ((unsigned long)((unsigned int)(var153)) >> 31)) & 0xffffffff) - 0x722193c0))) ^ 0x2c15e5f1)));
    var169 = ((((var166 << 28) | ((unsigned long)(var166) >> 4)) * 0x41c655a5) + 0x6884d953);
    var176 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var169)) >> 6))) ^ (unsigned long)((unsigned int)(var169)))));
    var181 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var176 << 7) | ((unsigned long)(var176) >> 25)) + 0x432b4666))) ^ -0x1e9d3fe9LL)));
    var184 = ((((var181 << 22) | ((unsigned long)(var181) >> 10)) * 0x41c6564d) + 0x1dd1b379);
    var191 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var184)) >> 12))) ^ (unsigned long)((unsigned int)(var184)))));
    var196 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var191 << 13) | ((unsigned long)(var191) >> 19)) - 0x787df74))) ^ -0x695065c3LL)));
    var199 = ((((var196 << 16) | ((unsigned long)(var196) >> 16)) * 0x41c656f5) - 0x2ce17261);
    var206 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var199)) >> 18))) ^ (unsigned long)((unsigned int)(var199)))));
    var211 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var206 << 19) | ((unsigned long)(var206) >> 13)) - 0x523b054e))) ^ 0x4bfc7463)));
    var214 = ((((var211 << 10) | ((unsigned long)(var211) >> 22)) * 0x41c6579d) - 0x7794983b);
    var221 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var214)) >> 24))) ^ (unsigned long)((unsigned int)(var214)))));
    var223 = (((var221 << 25) | ((unsigned long)(var221) >> 7)) + 0x6311d4d8);
    var229 = (((unsigned int)(((((unsigned long)((unsigned int)(var223)) << 4) | ((unsigned long)((unsigned int)(var223)) >> 28)) ^ 0x1494e890)) * 0x41c65845) + 0x3db841eb);
    var236 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var229)) >> 30))) ^ (unsigned long)((unsigned int)(var229)))));
    var241 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var236) >> 1) | (var236 << 31)) + 0x185eaefe))) ^ -0x4969d751LL)));
    var244 = ((((var241 << 29) | ((unsigned long)(var241) >> 3)) * 0x41c658ed) - 0xcfae3ef);
    var251 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var244)) >> 5))) ^ (unsigned long)((unsigned int)(var244)))));
    var256 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var251 << 6) | ((unsigned long)(var251) >> 26)) - 0x325476dc))) ^ 0x6be302d5)));
    var259 = ((((var256 << 23) | ((unsigned long)(var256) >> 9)) * 0x41c65995) - 0x57ae09c9);
    var266 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var259)) >> 11))) ^ (unsigned long)((unsigned int)(var259)))));
    var271 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var266 << 12) | ((unsigned long)(var266) >> 20)) - 0x7d079cb6))) ^ 0x212fdcfb)));
    var274 = ((((var271 << 17) | ((unsigned long)(var271) >> 15)) * 0x41c65a3d) + 0x5d9ed05d);
    var281 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var274)) >> 17))) ^ (unsigned long)((unsigned int)(var274)))));
    var286 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var281 << 18) | ((unsigned long)(var281) >> 14)) + 0x38453d70))) ^ -0x298348dfLL)));
    var289 = ((((var286 << 11) | ((unsigned long)(var286) >> 21)) * 0x41c65ae5) + 0x12ebaa83);
    var296 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var289)) >> 23))) ^ (unsigned long)((unsigned int)(var289)))));
    var301 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var296 << 24) | ((unsigned long)(var296) >> 8)) - 0x126de86a))) ^ -0x74366eb9LL)));
    var304 = ((((var301 << 5) | ((unsigned long)(var301) >> 27)) * 0x41c65b8d) - 0x37c77b57);
    var311 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var304)) >> 29))) ^ (unsigned long)((unsigned int)(var304)))));
    var316 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var311 << 30) | ((unsigned long)(var311) >> 2)) - 0x5d210e44))) ^ 0x41166b6d)));
    var319 = ((((var316 << 30) | ((unsigned long)(var316) >> 2)) * 0x41c65c35) + 0x7d855ecf);
    var326 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var319)) >> 4))) ^ (unsigned long)((unsigned int)(var319)))));
    var331 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var326 << 5) | ((unsigned long)(var326) >> 27)) + 0x582bcbe2))) ^ -0x99cba6dLL)));
    var334 = ((((var331 << 24) | ((unsigned long)(var331) >> 8)) * 0x41c65cdd) + 0x32d238f5);
    var341 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var334)) >> 10))) ^ (unsigned long)((unsigned int)(var334)))));
    var346 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var341 << 11) | ((unsigned long)(var341) >> 21)) + 0xd78a608))) ^ -0x544fe047LL)));
    var349 = ((((var346 << 18) | ((unsigned long)(var346) >> 14)) * 0x41c65d85) - 0x17e0ece5);
    var356 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var349)) >> 16))) ^ (unsigned long)((unsigned int)(var349)))));
    var361 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var356 << 17) | ((unsigned long)(var356) >> 15)) - 0x3d3a7fd2))) ^ 0x60fcf9df)));
    var364 = ((((var361 << 12) | ((unsigned long)(var361) >> 20)) * 0x41c65e2d) - 0x629412bf);
    var371 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var364)) >> 22))) ^ (unsigned long)((unsigned int)(var364)))));
    var376 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var371 << 23) | ((unsigned long)(var371) >> 9)) + 0x78125a54))) ^ 0x1649d405)));
    var379 = ((((var376 << 6) | ((unsigned long)(var376) >> 26)) * 0x41c65ed5) + 0x52b8c767);
    var386 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var379)) >> 28))) ^ (unsigned long)((unsigned int)(var379)))));
    var391 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var386 << 29) | ((unsigned long)(var386) >> 3)) + 0x2d5f347a))) ^ -0x346951d5LL)));
    var394 = (((((unsigned long)(var391) >> 1) | (var391 << 31)) * 0x41c65f7d) + 0x805a18d);
    var401 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var394)) >> 3))) ^ (unsigned long)((unsigned int)(var394)))));
    var406 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var401 << 4) | ((unsigned long)(var401) >> 28)) - 0x1d53f160))) ^ -0x7f1c77afLL)));
    var409 = ((((var406 << 25) | ((unsigned long)(var406) >> 7)) * 0x41c66025) - 0x42ad844d);
    var416 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var409)) >> 9))) ^ (unsigned long)((unsigned int)(var409)))));
    var421 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var416 << 10) | ((unsigned long)(var416) >> 22)) - 0x6807173a))) ^ 0x36306277)));
    var424 = ((((var421 << 19) | ((unsigned long)(var421) >> 13)) * 0x41c660cd) + 0x729f55d9);
    var431 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var424)) >> 15))) ^ (unsigned long)((unsigned int)(var424)))));
    var436 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var431 << 16) | ((unsigned long)(var431) >> 16)) + 0x4d45c2ec))) ^ -0x1482c363LL)));
    var439 = ((((var436 << 13) | ((unsigned long)(var436) >> 19)) * 0x41c66175) + 0x27ec2fff);
    var446 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var439)) >> 21))) ^ (unsigned long)((unsigned int)(var439)))));
    var451 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var446 << 22) | ((unsigned long)(var446) >> 10)) + 0x2929d12))) ^ -0x5f35e93dLL)));
    var454 = ((((var451 << 7) | ((unsigned long)(var451) >> 25)) * 0x41c6621d) - 0x22c6f5db);
    var461 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var454)) >> 27))) ^ (unsigned long)((unsigned int)(var454)))));
    var463 = (((var461 << 28) | ((unsigned long)(var461) >> 4)) - 0x482088c8);
    var469 = (((unsigned int)(((((unsigned long)((unsigned int)(var463)) << 1) | ((unsigned long)((unsigned int)(var463)) >> 31)) ^ -0x53d21e2eLL)) * 0x41c662c5) - 0x6d7a1bb5);
    var476 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var469)) >> 2))) ^ (unsigned long)((unsigned int)(var469)))));
    var481 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var476 << 3) | ((unsigned long)(var476) >> 29)) + 0x6d2c515e))) ^ 0xb63cb0f)));
    var484 = ((((var481 << 26) | ((unsigned long)(var481) >> 6)) * 0x41c6636d) + 0x47d2be71);
    var491 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var484)) >> 8))) ^ (unsigned long)((unsigned int)(var484)))));
    var496 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var491 << 9) | ((unsigned long)(var491) >> 23)) + 0x22792b84))) ^ -0x3f4f5acbLL)));
    var499 = ((((var496 << 20) | ((unsigned long)(var496) >> 12)) * 0x41c66415) - 0x2e06769);
    var506 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var499)) >> 14))) ^ (unsigned long)((unsigned int)(var499)))));
    var511 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var506 << 15) | ((unsigned long)(var506) >> 17)) - 0x2839fa56))) ^ 0x75fd7f5b)));
    var514 = ((((var511 << 14) | ((unsigned long)(var511) >> 18)) * 0x41c664bd) - 0x4d938d43);
    var521 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var514)) >> 20))) ^ (unsigned long)((unsigned int)(var514)))));
    var526 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var521 << 21) | ((unsigned long)(var521) >> 11)) - 0x72ed2030))) ^ 0x2b4a5981)));
    var529 = ((((var526 << 8) | ((unsigned long)(var526) >> 24)) * 0x41c66565) + 0x67b94ce3);
    var536 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var529)) >> 26))) ^ (unsigned long)((unsigned int)(var529)))));
    var541 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var536 << 27) | ((unsigned long)(var536) >> 5)) + 0x425fb9f6))) ^ -0x1f68cc59LL)));
    var544 = ((((var541 << 2) | ((unsigned long)(var541) >> 30)) * 0x41c6660d) + 0x1d062709);
    var551 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var544)) >> 1))) ^ (unsigned long)((unsigned int)(var544)))));
    var556 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var551 << 2) | ((unsigned long)(var551) >> 30)) - 0x8536be4))) ^ -0x6a1bf233LL)));
    var559 = ((((var556 << 27) | ((unsigned long)(var556) >> 5)) * 0x41c666b5) - 0x2dacfed1);
    var566 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var559)) >> 7))) ^ (unsigned long)((unsigned int)(var559)))));
    var571 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var566 << 8) | ((unsigned long)(var566) >> 24)) - 0x530691be))) ^ 0x4b30e7f3)));
    var574 = ((((var571 << 21) | ((unsigned long)(var571) >> 11)) * 0x41c6675d) - 0x786024ab);
    var581 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var574)) >> 13))) ^ (unsigned long)((unsigned int)(var574)))));
    var586 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var581 << 14) | ((unsigned long)(var581) >> 18)) + 0x62464868))) ^ 0x7dc219)));
    var589 = ((((var586 << 15) | ((unsigned long)(var586) >> 17)) * 0x41c66805) + 0x3cecb57b);
    var596 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var589)) >> 19))) ^ (unsigned long)((unsigned int)(var589)))));
    var601 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var596 << 20) | ((unsigned long)(var596) >> 12)) + 0x1793228e))) ^ -0x4a3563c1LL)));
    var604 = ((((var601 << 9) | ((unsigned long)(var601) >> 23)) * 0x41c668ad) - 0xdc6705f);
    var611 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var604)) >> 25))) ^ (unsigned long)((unsigned int)(var604)))));
    var616 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var611 << 26) | ((unsigned long)(var611) >> 6)) - 0x3320034c))) ^ 0x6b177665)));
    var619 = ((((var616 << 3) | ((unsigned long)(var616) >> 29)) * 0x41c66955) - 0x58799639);
    var632 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var619)) >> 31))) ^ (unsigned long)((unsigned int)(var619))))) << 1) | ((unsigned long)((unsigned int)(var619)) >> 31)) & 0xffffffff) - 0x7dd32926))) ^ 0x2064508b)));
    var635 = ((((var632 << 28) | ((unsigned long)(var632) >> 4)) * 0x41c669fd) + 0x5cd343ed);
    var642 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var635)) >> 6))) ^ (unsigned long)((unsigned int)(var635)))));
    var647 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var642 << 7) | ((unsigned long)(var642) >> 25)) + 0x3779b100))) ^ -0x2a4ed54fLL)));
    var650 = ((((var647 << 22) | ((unsigned long)(var647) >> 10)) * 0x41c66aa5) + 0x12201e13);
    var657 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var650)) >> 12))) ^ (unsigned long)((unsigned int)(var650)))));
    var662 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var657 << 13) | ((unsigned long)(var657) >> 19)) - 0x133974da))) ^ -0x7501fb29LL)));
    var665 = ((((var662 << 16) | ((unsigned long)(var662) >> 16)) * 0x41c66b4d) - 0x389307c7);
    var672 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var665)) >> 18))) ^ (unsigned long)((unsigned int)(var665)))));
    var677 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var672 << 19) | ((unsigned long)(var672) >> 13)) - 0x5dec9ab4))) ^ 0x404adefd)));
    var680 = ((((var677 << 10) | ((unsigned long)(var677) >> 22)) * 0x41c66bf5) + 0x7cb9d25f);
    var687 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var680)) >> 24))) ^ (unsigned long)((unsigned int)(var680)))));
    var692 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var687 << 25) | ((unsigned long)(var687) >> 7)) + 0x57603f72))) ^ -0xa6846ddLL)));
    var695 = ((((var692 << 4) | ((unsigned long)(var692) >> 28)) * 0x41c66c9d) + 0x3206ac85);
    var702 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var695)) >> 30))) ^ (unsigned long)((unsigned int)(var695)))));
    var707 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var702) >> 1) | (var702 << 31)) + 0xcad1998))) ^ -0x551b6cb7LL)));
    var710 = ((((var707 << 29) | ((unsigned long)(var707) >> 3)) * 0x41c66d45) - 0x18ac7955);
    var717 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var710)) >> 5))) ^ (unsigned long)((unsigned int)(var710)))));
    var722 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var717 << 6) | ((unsigned long)(var717) >> 26)) - 0x3e060c42))) ^ 0x60316d6f)));
    var725 = ((((var722 << 23) | ((unsigned long)(var722) >> 9)) * 0x41c66ded) - 0x635f9f2f);
    var732 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var725)) >> 11))) ^ (unsigned long)((unsigned int)(var725)))));
    var737 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var732 << 12) | ((unsigned long)(var732) >> 20)) + 0x7746cde4))) ^ 0x157e4795)));
    var740 = ((((var737 << 17) | ((unsigned long)(var737) >> 15)) * 0x41c66e95) + 0x51ed3af7);
    var747 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var740)) >> 17))) ^ (unsigned long)((unsigned int)(var740)))));
    var752 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var747 << 18) | ((unsigned long)(var747) >> 14)) + 0x2c93a80a))) ^ -0x3534de45LL)));
    var755 = ((((var752 << 11) | ((unsigned long)(var752) >> 21)) * 0x41c66f3d) + 0x73a151d);
    var762 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var755)) >> 23))) ^ (unsigned long)((unsigned int)(var755)))));
    var767 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var762 << 24) | ((unsigned long)(var762) >> 8)) - 0x1e1f7dd0))) ^ -0x7fe8041fLL)));
    var770 = ((((var767 << 5) | ((unsigned long)(var767) >> 27)) * 0x41c66fe5) - 0x437910bd);
    var777 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var770)) >> 29))) ^ (unsigned long)((unsigned int)(var770)))));
    var782 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var777 << 30) | ((unsigned long)(var777) >> 2)) - 0x68d2a3aa))) ^ 0x3564d607)));
    var785 = ((((var782 << 30) | ((unsigned long)(var782) >> 2)) * 0x41c6708d) + 0x71d3c969);
    var792 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var785)) >> 4))) ^ (unsigned long)((unsigned int)(var785)))));
    var797 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var792 << 5) | ((unsigned long)(var792) >> 27)) + 0x4c7a367c))) ^ -0x154e4fd3LL)));
    var800 = ((((var797 << 24) | ((unsigned long)(var797) >> 8)) * 0x41c67135) + 0x2720a38f);
    return (unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var800)) >> 10))) ^ (unsigned long)((unsigned int)(var800))))) + 320));
}
chain155_signed pass 257 lines
// glaurung: chain155_signed @ 0x1890
int32_t chain155_signed(int32_t arg0) {
    int step;
    int var1;
    long var103;
    int var106;
    long var113;
    long var118;
    int var121;
    long var128;
    long var13;
    long var133;
    int var136;
    long var143;
    long var148;
    int var151;
    int var16;
    long var164;
    int var167;
    long var174;
    long var179;
    int var182;
    long var189;
    long var194;
    int var197;
    long var204;
    long var209;
    int var212;
    long var219;
    int var221;
    int var227;
    long var23;
    long var234;
    long var239;
    int var242;
    long var249;
    long var254;
    int var257;
    long var264;
    long var269;
    int var272;
    long var279;
    long var28;
    long var284;
    int var287;
    long var294;
    long var299;
    int var302;
    long var309;
    int var31;
    long var314;
    int var317;
    long var324;
    long var329;
    int var332;
    long var339;
    long var344;
    int var347;
    long var354;
    long var359;
    int var362;
    long var369;
    long var374;
    int var377;
    long var38;
    long var384;
    long var389;
    int var392;
    long var399;
    long var404;
    int var407;
    long var414;
    long var419;
    int var422;
    long var429;
    long var43;
    long var434;
    int var437;
    long var444;
    long var449;
    int var452;
    long var459;
    int var46;
    int var461;
    int var467;
    long var474;
    long var479;
    int var482;
    long var489;
    long var494;
    int var497;
    long var504;
    long var509;
    int var512;
    long var519;
    long var524;
    int var527;
    long var53;
    long var534;
    long var539;
    int var542;
    long var549;
    long var554;
    int var557;
    long var564;
    long var569;
    int var572;
    long var579;
    long var58;
    long var584;
    int var587;
    long var594;
    long var599;
    int var602;
    long var609;
    int var61;
    long var614;
    int var617;
    long var630;
    int var633;
    long var640;
    long var68;
    long var73;
    int var76;
    long var8;
    long var83;
    long var88;
    int var91;
    long var98;
    var1 = ((arg0 * 0x41c64e6d) - 0x61c8864f);
    var8 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var1)) >> 2))) ^ (unsigned long)((unsigned int)(var1)))));
    var13 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var8 << 3) | ((unsigned long)(var8) >> 29)) + 0x78dde6c4))) ^ 0x17156075)));
    var16 = ((((var13 << 26) | ((unsigned long)(var13) >> 6)) * 0x41c64f15) + 0x538453d7);
    var23 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var16)) >> 8))) ^ (unsigned long)((unsigned int)(var16)))));
    var28 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var23 << 9) | ((unsigned long)(var23) >> 23)) + 0x2e2ac0ea))) ^ -0x339dc565LL)));
    var31 = ((((var28 << 20) | ((unsigned long)(var28) >> 12)) * 0x41c64fbd) + 0x8d12dfd);
    var38 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var31)) >> 14))) ^ (unsigned long)((unsigned int)(var31)))));
    var43 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var38 << 15) | ((unsigned long)(var38) >> 17)) - 0x1c8864f0))) ^ -0x7e50eb3fLL)));
    var46 = ((((var43 << 14) | ((unsigned long)(var43) >> 18)) * 0x41c65065) - 0x41e1f7dd);
    var53 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var46)) >> 20))) ^ (unsigned long)((unsigned int)(var46)))));
    var58 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var53 << 21) | ((unsigned long)(var53) >> 11)) - 0x673b8aca))) ^ 0x36fbeee7)));
    var61 = ((((var58 << 8) | ((unsigned long)(var58) >> 24)) * 0x41c6510d) + 0x736ae249);
    var68 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var61)) >> 26))) ^ (unsigned long)((unsigned int)(var61)))));
    var73 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var68 << 27) | ((unsigned long)(var68) >> 5)) + 0x4e114f5c))) ^ -0x13b736f3LL)));
    var76 = ((((var73 << 2) | ((unsigned long)(var73) >> 30)) * 0x41c651b5) + 0x28b7bc6f);
    var83 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var76)) >> 1))) ^ (unsigned long)((unsigned int)(var76)))));
    var88 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var83 << 2) | ((unsigned long)(var83) >> 30)) + 0x35e2982))) ^ -0x5e6a5ccdLL)));
    var91 = ((((var88 << 27) | ((unsigned long)(var88) >> 5)) * 0x41c6525d) - 0x21fb696b);
    var98 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var91)) >> 7))) ^ (unsigned long)((unsigned int)(var91)))));
    var103 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var98 << 8) | ((unsigned long)(var98) >> 24)) - 0x4754fc58))) ^ 0x56e27d59)));
    var106 = ((((var103 << 21) | ((unsigned long)(var103) >> 11)) * 0x41c65305) - 0x6cae8f45);
    var113 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var106)) >> 13))) ^ (unsigned long)((unsigned int)(var106)))));
    var118 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var113 << 14) | ((unsigned long)(var113) >> 18)) + 0x6df7ddce))) ^ 0xc2f577f)));
    var121 = ((((var118 << 15) | ((unsigned long)(var118) >> 17)) * 0x41c653ad) + 0x489e4ae1);
    var128 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var121)) >> 19))) ^ (unsigned long)((unsigned int)(var121)))));
    var133 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var128 << 20) | ((unsigned long)(var128) >> 12)) + 0x2344b7f4))) ^ -0x3e83ce5bLL)));
    var136 = ((((var133 << 9) | ((unsigned long)(var133) >> 23)) * 0x41c65455) - 0x214daf9);
    var143 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var136)) >> 25))) ^ (unsigned long)((unsigned int)(var136)))));
    var148 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var143 << 26) | ((unsigned long)(var143) >> 6)) - 0x276e6de6))) ^ 0x76c90bcb)));
    var151 = ((((var148 << 3) | ((unsigned long)(var148) >> 29)) * 0x41c654fd) - 0x4cc800d3);
    var164 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var151)) >> 31))) ^ (unsigned long)((unsigned int)(var151))))) << 1) | ((unsigned long)((unsigned int)(var151)) >> 31)) & 0xffffffff) - 0x722193c0))) ^ 0x2c15e5f1)));
    var167 = ((((var164 << 28) | ((unsigned long)(var164) >> 4)) * 0x41c655a5) + 0x6884d953);
    var174 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var167)) >> 6))) ^ (unsigned long)((unsigned int)(var167)))));
    var179 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var174 << 7) | ((unsigned long)(var174) >> 25)) + 0x432b4666))) ^ -0x1e9d3fe9LL)));
    var182 = ((((var179 << 22) | ((unsigned long)(var179) >> 10)) * 0x41c6564d) + 0x1dd1b379);
    var189 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var182)) >> 12))) ^ (unsigned long)((unsigned int)(var182)))));
    var194 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var189 << 13) | ((unsigned long)(var189) >> 19)) - 0x787df74))) ^ -0x695065c3LL)));
    var197 = ((((var194 << 16) | ((unsigned long)(var194) >> 16)) * 0x41c656f5) - 0x2ce17261);
    var204 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var197)) >> 18))) ^ (unsigned long)((unsigned int)(var197)))));
    var209 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var204 << 19) | ((unsigned long)(var204) >> 13)) - 0x523b054e))) ^ 0x4bfc7463)));
    var212 = ((((var209 << 10) | ((unsigned long)(var209) >> 22)) * 0x41c6579d) - 0x7794983b);
    var219 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var212)) >> 24))) ^ (unsigned long)((unsigned int)(var212)))));
    var221 = (((var219 << 25) | ((unsigned long)(var219) >> 7)) + 0x6311d4d8);
    var227 = (((unsigned int)(((((unsigned long)((unsigned int)(var221)) << 4) | ((unsigned long)((unsigned int)(var221)) >> 28)) ^ 0x1494e890)) * 0x41c65845) + 0x3db841eb);
    var234 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var227)) >> 30))) ^ (unsigned long)((unsigned int)(var227)))));
    var239 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var234) >> 1) | (var234 << 31)) + 0x185eaefe))) ^ -0x4969d751LL)));
    var242 = ((((var239 << 29) | ((unsigned long)(var239) >> 3)) * 0x41c658ed) - 0xcfae3ef);
    var249 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var242)) >> 5))) ^ (unsigned long)((unsigned int)(var242)))));
    var254 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var249 << 6) | ((unsigned long)(var249) >> 26)) - 0x325476dc))) ^ 0x6be302d5)));
    var257 = ((((var254 << 23) | ((unsigned long)(var254) >> 9)) * 0x41c65995) - 0x57ae09c9);
    var264 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var257)) >> 11))) ^ (unsigned long)((unsigned int)(var257)))));
    var269 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var264 << 12) | ((unsigned long)(var264) >> 20)) - 0x7d079cb6))) ^ 0x212fdcfb)));
    var272 = ((((var269 << 17) | ((unsigned long)(var269) >> 15)) * 0x41c65a3d) + 0x5d9ed05d);
    var279 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var272)) >> 17))) ^ (unsigned long)((unsigned int)(var272)))));
    var284 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var279 << 18) | ((unsigned long)(var279) >> 14)) + 0x38453d70))) ^ -0x298348dfLL)));
    var287 = ((((var284 << 11) | ((unsigned long)(var284) >> 21)) * 0x41c65ae5) + 0x12ebaa83);
    var294 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var287)) >> 23))) ^ (unsigned long)((unsigned int)(var287)))));
    var299 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var294 << 24) | ((unsigned long)(var294) >> 8)) - 0x126de86a))) ^ -0x74366eb9LL)));
    var302 = ((((var299 << 5) | ((unsigned long)(var299) >> 27)) * 0x41c65b8d) - 0x37c77b57);
    var309 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var302)) >> 29))) ^ (unsigned long)((unsigned int)(var302)))));
    var314 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var309 << 30) | ((unsigned long)(var309) >> 2)) - 0x5d210e44))) ^ 0x41166b6d)));
    var317 = ((((var314 << 30) | ((unsigned long)(var314) >> 2)) * 0x41c65c35) + 0x7d855ecf);
    var324 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var317)) >> 4))) ^ (unsigned long)((unsigned int)(var317)))));
    var329 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var324 << 5) | ((unsigned long)(var324) >> 27)) + 0x582bcbe2))) ^ -0x99cba6dLL)));
    var332 = ((((var329 << 24) | ((unsigned long)(var329) >> 8)) * 0x41c65cdd) + 0x32d238f5);
    var339 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var332)) >> 10))) ^ (unsigned long)((unsigned int)(var332)))));
    var344 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var339 << 11) | ((unsigned long)(var339) >> 21)) + 0xd78a608))) ^ -0x544fe047LL)));
    var347 = ((((var344 << 18) | ((unsigned long)(var344) >> 14)) * 0x41c65d85) - 0x17e0ece5);
    var354 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var347)) >> 16))) ^ (unsigned long)((unsigned int)(var347)))));
    var359 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var354 << 17) | ((unsigned long)(var354) >> 15)) - 0x3d3a7fd2))) ^ 0x60fcf9df)));
    var362 = ((((var359 << 12) | ((unsigned long)(var359) >> 20)) * 0x41c65e2d) - 0x629412bf);
    var369 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var362)) >> 22))) ^ (unsigned long)((unsigned int)(var362)))));
    var374 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var369 << 23) | ((unsigned long)(var369) >> 9)) + 0x78125a54))) ^ 0x1649d405)));
    var377 = ((((var374 << 6) | ((unsigned long)(var374) >> 26)) * 0x41c65ed5) + 0x52b8c767);
    var384 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var377)) >> 28))) ^ (unsigned long)((unsigned int)(var377)))));
    var389 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var384 << 29) | ((unsigned long)(var384) >> 3)) + 0x2d5f347a))) ^ -0x346951d5LL)));
    var392 = (((((unsigned long)(var389) >> 1) | (var389 << 31)) * 0x41c65f7d) + 0x805a18d);
    var399 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var392)) >> 3))) ^ (unsigned long)((unsigned int)(var392)))));
    var404 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var399 << 4) | ((unsigned long)(var399) >> 28)) - 0x1d53f160))) ^ -0x7f1c77afLL)));
    var407 = ((((var404 << 25) | ((unsigned long)(var404) >> 7)) * 0x41c66025) - 0x42ad844d);
    var414 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var407)) >> 9))) ^ (unsigned long)((unsigned int)(var407)))));
    var419 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var414 << 10) | ((unsigned long)(var414) >> 22)) - 0x6807173a))) ^ 0x36306277)));
    var422 = ((((var419 << 19) | ((unsigned long)(var419) >> 13)) * 0x41c660cd) + 0x729f55d9);
    var429 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var422)) >> 15))) ^ (unsigned long)((unsigned int)(var422)))));
    var434 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var429 << 16) | ((unsigned long)(var429) >> 16)) + 0x4d45c2ec))) ^ -0x1482c363LL)));
    var437 = ((((var434 << 13) | ((unsigned long)(var434) >> 19)) * 0x41c66175) + 0x27ec2fff);
    var444 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var437)) >> 21))) ^ (unsigned long)((unsigned int)(var437)))));
    var449 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var444 << 22) | ((unsigned long)(var444) >> 10)) + 0x2929d12))) ^ -0x5f35e93dLL)));
    var452 = ((((var449 << 7) | ((unsigned long)(var449) >> 25)) * 0x41c6621d) - 0x22c6f5db);
    var459 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var452)) >> 27))) ^ (unsigned long)((unsigned int)(var452)))));
    var461 = (((var459 << 28) | ((unsigned long)(var459) >> 4)) - 0x482088c8);
    var467 = (((unsigned int)(((((unsigned long)((unsigned int)(var461)) << 1) | ((unsigned long)((unsigned int)(var461)) >> 31)) ^ -0x53d21e2eLL)) * 0x41c662c5) - 0x6d7a1bb5);
    var474 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var467)) >> 2))) ^ (unsigned long)((unsigned int)(var467)))));
    var479 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var474 << 3) | ((unsigned long)(var474) >> 29)) + 0x6d2c515e))) ^ 0xb63cb0f)));
    var482 = ((((var479 << 26) | ((unsigned long)(var479) >> 6)) * 0x41c6636d) + 0x47d2be71);
    var489 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var482)) >> 8))) ^ (unsigned long)((unsigned int)(var482)))));
    var494 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var489 << 9) | ((unsigned long)(var489) >> 23)) + 0x22792b84))) ^ -0x3f4f5acbLL)));
    var497 = ((((var494 << 20) | ((unsigned long)(var494) >> 12)) * 0x41c66415) - 0x2e06769);
    var504 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var497)) >> 14))) ^ (unsigned long)((unsigned int)(var497)))));
    var509 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var504 << 15) | ((unsigned long)(var504) >> 17)) - 0x2839fa56))) ^ 0x75fd7f5b)));
    var512 = ((((var509 << 14) | ((unsigned long)(var509) >> 18)) * 0x41c664bd) - 0x4d938d43);
    var519 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var512)) >> 20))) ^ (unsigned long)((unsigned int)(var512)))));
    var524 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var519 << 21) | ((unsigned long)(var519) >> 11)) - 0x72ed2030))) ^ 0x2b4a5981)));
    var527 = ((((var524 << 8) | ((unsigned long)(var524) >> 24)) * 0x41c66565) + 0x67b94ce3);
    var534 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var527)) >> 26))) ^ (unsigned long)((unsigned int)(var527)))));
    var539 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var534 << 27) | ((unsigned long)(var534) >> 5)) + 0x425fb9f6))) ^ -0x1f68cc59LL)));
    var542 = ((((var539 << 2) | ((unsigned long)(var539) >> 30)) * 0x41c6660d) + 0x1d062709);
    var549 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var542)) >> 1))) ^ (unsigned long)((unsigned int)(var542)))));
    var554 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var549 << 2) | ((unsigned long)(var549) >> 30)) - 0x8536be4))) ^ -0x6a1bf233LL)));
    var557 = ((((var554 << 27) | ((unsigned long)(var554) >> 5)) * 0x41c666b5) - 0x2dacfed1);
    var564 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var557)) >> 7))) ^ (unsigned long)((unsigned int)(var557)))));
    var569 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var564 << 8) | ((unsigned long)(var564) >> 24)) - 0x530691be))) ^ 0x4b30e7f3)));
    var572 = ((((var569 << 21) | ((unsigned long)(var569) >> 11)) * 0x41c6675d) - 0x786024ab);
    var579 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var572)) >> 13))) ^ (unsigned long)((unsigned int)(var572)))));
    var584 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var579 << 14) | ((unsigned long)(var579) >> 18)) + 0x62464868))) ^ 0x7dc219)));
    var587 = ((((var584 << 15) | ((unsigned long)(var584) >> 17)) * 0x41c66805) + 0x3cecb57b);
    var594 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var587)) >> 19))) ^ (unsigned long)((unsigned int)(var587)))));
    var599 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var594 << 20) | ((unsigned long)(var594) >> 12)) + 0x1793228e))) ^ -0x4a3563c1LL)));
    var602 = ((((var599 << 9) | ((unsigned long)(var599) >> 23)) * 0x41c668ad) - 0xdc6705f);
    var609 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var602)) >> 25))) ^ (unsigned long)((unsigned int)(var602)))));
    var614 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var609 << 26) | ((unsigned long)(var609) >> 6)) - 0x3320034c))) ^ 0x6b177665)));
    var617 = ((((var614 << 3) | ((unsigned long)(var614) >> 29)) * 0x41c66955) - 0x58799639);
    var630 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var617)) >> 31))) ^ (unsigned long)((unsigned int)(var617))))) << 1) | ((unsigned long)((unsigned int)(var617)) >> 31)) & 0xffffffff) - 0x7dd32926))) ^ 0x2064508b)));
    var633 = ((((var630 << 28) | ((unsigned long)(var630) >> 4)) * 0x41c669fd) + 0x5cd343ed);
    var640 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var633)) >> 6))) ^ (unsigned long)((unsigned int)(var633)))));
    return (unsigned int)((((var640 << 7) | ((unsigned long)(var640) >> 25)) + 0x3779b200));
}

clang -O0

3/3
chain155_buffered pass 228 lines
// glaurung: chain155_buffered @ 0x30c0
__attribute__((no_stack_protector)) int32_t chain155_buffered(int32_t * arg0, int32_t arg1) {
    unsigned int carry;
    int index;
    int local_4;
    unsigned char local_60[64];
    int local_6c;
    // x86-64 prologue: save rbp
    carry = 0x2545f491;
    if ((arg0 == 0)) {
        local_4 = -1;
        // x86-64 epilogue: restore rbp
        return (unsigned int)(local_4);
    }
    if (((long)(arg1) < 1)) {
        local_4 = -1;
        // x86-64 epilogue: restore rbp
        return (unsigned int)(local_4);
    }
    if (((((unsigned long)((unsigned int)(arg1)) == 16) | ((long)(arg1) < 16)) == 0)) {
        local_4 = -1;
        // x86-64 epilogue: restore rbp
        return (unsigned int)(local_4);
    }
    for (index = 0; ((long)(index) < 16); index++) {
        local_6c = ((arg1 <= index) ? 0 : arg0[(long)(index)]);
        *(int *)((&local_60[0] + ((long)(index) * 4))) = local_6c;
    }
    carry = ((carry * 0x41c64e6d) + *(int *)(&local_60[0]));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 4)))) + carry))) >> 2)) ^ carry);
    carry = ((unsigned int)((carry << 3)) | (unsigned int)(((unsigned int)(carry) >> 29)));
    carry = ((carry * 0x41c64ecd) + *(int *)((&local_60[0] + 12)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 16)))) + carry))) >> 5)) ^ carry);
    carry = ((unsigned int)((carry << 6)) | (unsigned int)(((unsigned int)(carry) >> 26)));
    carry = ((carry * 0x41c64f2d) + *(int *)((&local_60[0] + 24)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 28)))) + carry))) >> 8)) ^ carry);
    carry = ((unsigned int)((carry << 9)) | (unsigned int)(((unsigned int)(carry) >> 23)));
    carry = ((carry * 0x41c64f8d) + *(int *)((&local_60[0] + 36)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 40)))) + carry))) >> 11)) ^ carry);
    carry = ((unsigned int)((carry << 12)) | (unsigned int)(((unsigned int)(carry) >> 20)));
    carry = ((carry * 0x41c64fed) + *(int *)((&local_60[0] + 48)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 52)))) + carry))) >> 14)) ^ carry);
    carry = ((unsigned int)((carry << 15)) | (unsigned int)(((unsigned int)(carry) >> 17)));
    carry = ((carry * 0x41c6504d) + *(int *)((&local_60[0] + 60)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)(&local_60[0]))) + carry))) >> 17)) ^ carry);
    carry = ((unsigned int)((carry << 18)) | (unsigned int)(((unsigned int)(carry) >> 14)));
    carry = ((carry * 0x41c650ad) + *(int *)((&local_60[0] + 8)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 12)))) + carry))) >> 20)) ^ carry);
    carry = ((unsigned int)((carry << 21)) | (unsigned int)(((unsigned int)(carry) >> 11)));
    carry = ((carry * 0x41c6510d) + *(int *)((&local_60[0] + 20)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 24)))) + carry))) >> 23)) ^ carry);
    carry = ((unsigned int)((carry << 24)) | (unsigned int)(((unsigned int)(carry) >> 8)));
    carry = ((carry * 0x41c6516d) + *(int *)((&local_60[0] + 32)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 36)))) + carry))) >> 26)) ^ carry);
    carry = ((unsigned int)((carry << 27)) | (unsigned int)(((unsigned int)(carry) >> 5)));
    carry = ((carry * 0x41c651cd) + *(int *)((&local_60[0] + 44)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 48)))) + carry))) >> 29)) ^ carry);
    carry = ((unsigned int)((carry << 30)) | (unsigned int)(((unsigned int)(carry) >> 2)));
    carry = ((carry * 0x41c6522d) + *(int *)((&local_60[0] + 56)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 60)))) + carry))) >> 1)) ^ carry);
    carry = ((unsigned int)((carry << 2)) | (unsigned int)(((unsigned int)(carry) >> 30)));
    carry = ((carry * 0x41c6528d) + *(int *)((&local_60[0] + 4)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 8)))) + carry))) >> 4)) ^ carry);
    carry = ((unsigned int)((carry << 5)) | (unsigned int)(((unsigned int)(carry) >> 27)));
    carry = ((carry * 0x41c652ed) + *(int *)((&local_60[0] + 16)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 20)))) + carry))) >> 7)) ^ carry);
    carry = ((unsigned int)((carry << 8)) | (unsigned int)(((unsigned int)(carry) >> 24)));
    carry = ((carry * 0x41c6534d) + *(int *)((&local_60[0] + 28)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 32)))) + carry))) >> 10)) ^ carry);
    carry = ((unsigned int)((carry << 11)) | (unsigned int)(((unsigned int)(carry) >> 21)));
    carry = ((carry * 0x41c653ad) + *(int *)((&local_60[0] + 40)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 44)))) + carry))) >> 13)) ^ carry);
    carry = ((unsigned int)((carry << 14)) | (unsigned int)(((unsigned int)(carry) >> 18)));
    carry = ((carry * 0x41c6540d) + *(int *)((&local_60[0] + 52)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 56)))) + carry))) >> 16)) ^ carry);
    carry = ((unsigned int)((carry << 17)) | (unsigned int)(((unsigned int)(carry) >> 15)));
    carry = ((carry * 0x41c6546d) + *(int *)(&local_60[0]));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 4)))) + carry))) >> 19)) ^ carry);
    carry = ((unsigned int)((carry << 20)) | (unsigned int)(((unsigned int)(carry) >> 12)));
    carry = ((carry * 0x41c654cd) + *(int *)((&local_60[0] + 12)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 16)))) + carry))) >> 22)) ^ carry);
    carry = ((unsigned int)((carry << 23)) | (unsigned int)(((unsigned int)(carry) >> 9)));
    carry = ((carry * 0x41c6552d) + *(int *)((&local_60[0] + 24)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 28)))) + carry))) >> 25)) ^ carry);
    carry = ((unsigned int)((carry << 26)) | (unsigned int)(((unsigned int)(carry) >> 6)));
    carry = ((carry * 0x41c6558d) + *(int *)((&local_60[0] + 36)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 40)))) + carry))) >> 28)) ^ carry);
    carry = ((unsigned int)((carry << 29)) | (unsigned int)(((unsigned int)(carry) >> 3)));
    carry = ((carry * 0x41c655ed) + *(int *)((&local_60[0] + 48)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 52)))) + carry))) >> 31)) ^ carry);
    carry = ((unsigned int)((carry << 1)) | (unsigned int)(((unsigned int)(carry) >> 31)));
    carry = ((carry * 0x41c6564d) + *(int *)((&local_60[0] + 60)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)(&local_60[0]))) + carry))) >> 3)) ^ carry);
    carry = ((unsigned int)((carry << 4)) | (unsigned int)(((unsigned int)(carry) >> 28)));
    carry = ((carry * 0x41c656ad) + *(int *)((&local_60[0] + 8)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 12)))) + carry))) >> 6)) ^ carry);
    carry = ((unsigned int)((carry << 7)) | (unsigned int)(((unsigned int)(carry) >> 25)));
    carry = ((carry * 0x41c6570d) + *(int *)((&local_60[0] + 20)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 24)))) + carry))) >> 9)) ^ carry);
    carry = ((unsigned int)((carry << 10)) | (unsigned int)(((unsigned int)(carry) >> 22)));
    carry = ((carry * 0x41c6576d) + *(int *)((&local_60[0] + 32)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 36)))) + carry))) >> 12)) ^ carry);
    carry = ((unsigned int)((carry << 13)) | (unsigned int)(((unsigned int)(carry) >> 19)));
    carry = ((carry * 0x41c657cd) + *(int *)((&local_60[0] + 44)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 48)))) + carry))) >> 15)) ^ carry);
    carry = ((unsigned int)((carry << 16)) | (unsigned int)(((unsigned int)(carry) >> 16)));
    carry = ((carry * 0x41c6582d) + *(int *)((&local_60[0] + 56)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 60)))) + carry))) >> 18)) ^ carry);
    carry = ((unsigned int)((carry << 19)) | (unsigned int)(((unsigned int)(carry) >> 13)));
    carry = ((carry * 0x41c6588d) + *(int *)((&local_60[0] + 4)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 8)))) + carry))) >> 21)) ^ carry);
    carry = ((unsigned int)((carry << 22)) | (unsigned int)(((unsigned int)(carry) >> 10)));
    carry = ((carry * 0x41c658ed) + *(int *)((&local_60[0] + 16)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 20)))) + carry))) >> 24)) ^ carry);
    carry = ((unsigned int)((carry << 25)) | (unsigned int)(((unsigned int)(carry) >> 7)));
    carry = ((carry * 0x41c6594d) + *(int *)((&local_60[0] + 28)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 32)))) + carry))) >> 27)) ^ carry);
    carry = ((unsigned int)((carry << 28)) | (unsigned int)(((unsigned int)(carry) >> 4)));
    carry = ((carry * 0x41c659ad) + *(int *)((&local_60[0] + 40)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 44)))) + carry))) >> 30)) ^ carry);
    carry = ((unsigned int)((carry << 31)) | (unsigned int)(((unsigned int)(carry) >> 1)));
    carry = ((carry * 0x41c65a0d) + *(int *)((&local_60[0] + 52)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 56)))) + carry))) >> 2)) ^ carry);
    carry = ((unsigned int)((carry << 3)) | (unsigned int)(((unsigned int)(carry) >> 29)));
    carry = ((carry * 0x41c65a6d) + *(int *)(&local_60[0]));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 4)))) + carry))) >> 5)) ^ carry);
    carry = ((unsigned int)((carry << 6)) | (unsigned int)(((unsigned int)(carry) >> 26)));
    carry = ((carry * 0x41c65acd) + *(int *)((&local_60[0] + 12)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 16)))) + carry))) >> 8)) ^ carry);
    carry = ((unsigned int)((carry << 9)) | (unsigned int)(((unsigned int)(carry) >> 23)));
    carry = ((carry * 0x41c65b2d) + *(int *)((&local_60[0] + 24)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 28)))) + carry))) >> 11)) ^ carry);
    carry = ((unsigned int)((carry << 12)) | (unsigned int)(((unsigned int)(carry) >> 20)));
    carry = ((carry * 0x41c65b8d) + *(int *)((&local_60[0] + 36)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 40)))) + carry))) >> 14)) ^ carry);
    carry = ((unsigned int)((carry << 15)) | (unsigned int)(((unsigned int)(carry) >> 17)));
    carry = ((carry * 0x41c65bed) + *(int *)((&local_60[0] + 48)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 52)))) + carry))) >> 17)) ^ carry);
    carry = ((unsigned int)((carry << 18)) | (unsigned int)(((unsigned int)(carry) >> 14)));
    carry = ((carry * 0x41c65c4d) + *(int *)((&local_60[0] + 60)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)(&local_60[0]))) + carry))) >> 20)) ^ carry);
    carry = ((unsigned int)((carry << 21)) | (unsigned int)(((unsigned int)(carry) >> 11)));
    carry = ((carry * 0x41c65cad) + *(int *)((&local_60[0] + 8)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 12)))) + carry))) >> 23)) ^ carry);
    carry = ((unsigned int)((carry << 24)) | (unsigned int)(((unsigned int)(carry) >> 8)));
    carry = ((carry * 0x41c65d0d) + *(int *)((&local_60[0] + 20)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 24)))) + carry))) >> 26)) ^ carry);
    carry = ((unsigned int)((carry << 27)) | (unsigned int)(((unsigned int)(carry) >> 5)));
    carry = ((carry * 0x41c65d6d) + *(int *)((&local_60[0] + 32)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 36)))) + carry))) >> 29)) ^ carry);
    carry = ((unsigned int)((carry << 30)) | (unsigned int)(((unsigned int)(carry) >> 2)));
    carry = ((carry * 0x41c65dcd) + *(int *)((&local_60[0] + 44)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 48)))) + carry))) >> 1)) ^ carry);
    carry = ((unsigned int)((carry << 2)) | (unsigned int)(((unsigned int)(carry) >> 30)));
    carry = ((carry * 0x41c65e2d) + *(int *)((&local_60[0] + 56)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 60)))) + carry))) >> 4)) ^ carry);
    carry = ((unsigned int)((carry << 5)) | (unsigned int)(((unsigned int)(carry) >> 27)));
    carry = ((carry * 0x41c65e8d) + *(int *)((&local_60[0] + 4)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 8)))) + carry))) >> 7)) ^ carry);
    carry = ((unsigned int)((carry << 8)) | (unsigned int)(((unsigned int)(carry) >> 24)));
    carry = ((carry * 0x41c65eed) + *(int *)((&local_60[0] + 16)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 20)))) + carry))) >> 10)) ^ carry);
    carry = ((unsigned int)((carry << 11)) | (unsigned int)(((unsigned int)(carry) >> 21)));
    carry = ((carry * 0x41c65f4d) + *(int *)((&local_60[0] + 28)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 32)))) + carry))) >> 13)) ^ carry);
    carry = ((unsigned int)((carry << 14)) | (unsigned int)(((unsigned int)(carry) >> 18)));
    carry = ((carry * 0x41c65fad) + *(int *)((&local_60[0] + 40)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 44)))) + carry))) >> 16)) ^ carry);
    carry = ((unsigned int)((carry << 17)) | (unsigned int)(((unsigned int)(carry) >> 15)));
    carry = ((carry * 0x41c6600d) + *(int *)((&local_60[0] + 52)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 56)))) + carry))) >> 19)) ^ carry);
    carry = ((unsigned int)((carry << 20)) | (unsigned int)(((unsigned int)(carry) >> 12)));
    carry = ((carry * 0x41c6606d) + *(int *)(&local_60[0]));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 4)))) + carry))) >> 22)) ^ carry);
    carry = ((unsigned int)((carry << 23)) | (unsigned int)(((unsigned int)(carry) >> 9)));
    carry = ((carry * 0x41c660cd) + *(int *)((&local_60[0] + 12)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 16)))) + carry))) >> 25)) ^ carry);
    carry = ((unsigned int)((carry << 26)) | (unsigned int)(((unsigned int)(carry) >> 6)));
    carry = ((carry * 0x41c6612d) + *(int *)((&local_60[0] + 24)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 28)))) + carry))) >> 28)) ^ carry);
    carry = ((unsigned int)((carry << 29)) | (unsigned int)(((unsigned int)(carry) >> 3)));
    carry = ((carry * 0x41c6618d) + *(int *)((&local_60[0] + 36)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 40)))) + carry))) >> 31)) ^ carry);
    carry = ((unsigned int)((carry << 1)) | (unsigned int)(((unsigned int)(carry) >> 31)));
    carry = ((carry * 0x41c661ed) + *(int *)((&local_60[0] + 48)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 52)))) + carry))) >> 3)) ^ carry);
    carry = ((unsigned int)((carry << 4)) | (unsigned int)(((unsigned int)(carry) >> 28)));
    carry = ((carry * 0x41c6624d) + *(int *)((&local_60[0] + 60)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)(&local_60[0]))) + carry))) >> 6)) ^ carry);
    carry = ((unsigned int)((carry << 7)) | (unsigned int)(((unsigned int)(carry) >> 25)));
    carry = ((carry * 0x41c662ad) + *(int *)((&local_60[0] + 8)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 12)))) + carry))) >> 9)) ^ carry);
    carry = ((unsigned int)((carry << 10)) | (unsigned int)(((unsigned int)(carry) >> 22)));
    carry = ((carry * 0x41c6630d) + *(int *)((&local_60[0] + 20)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 24)))) + carry))) >> 12)) ^ carry);
    carry = ((unsigned int)((carry << 13)) | (unsigned int)(((unsigned int)(carry) >> 19)));
    carry = ((carry * 0x41c6636d) + *(int *)((&local_60[0] + 32)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 36)))) + carry))) >> 15)) ^ carry);
    carry = ((unsigned int)((carry << 16)) | (unsigned int)(((unsigned int)(carry) >> 16)));
    carry = ((carry * 0x41c663cd) + *(int *)((&local_60[0] + 44)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 48)))) + carry))) >> 18)) ^ carry);
    carry = ((unsigned int)((carry << 19)) | (unsigned int)(((unsigned int)(carry) >> 13)));
    carry = ((carry * 0x41c6642d) + *(int *)((&local_60[0] + 56)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 60)))) + carry))) >> 21)) ^ carry);
    carry = ((unsigned int)((carry << 22)) | (unsigned int)(((unsigned int)(carry) >> 10)));
    carry = ((carry * 0x41c6648d) + *(int *)((&local_60[0] + 4)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 8)))) + carry))) >> 24)) ^ carry);
    carry = ((unsigned int)((carry << 25)) | (unsigned int)(((unsigned int)(carry) >> 7)));
    carry = ((carry * 0x41c664ed) + *(int *)((&local_60[0] + 16)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 20)))) + carry))) >> 27)) ^ carry);
    carry = ((unsigned int)((carry << 28)) | (unsigned int)(((unsigned int)(carry) >> 4)));
    carry = ((carry * 0x41c6654d) + *(int *)((&local_60[0] + 28)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 32)))) + carry))) >> 30)) ^ carry);
    carry = ((unsigned int)((carry << 31)) | (unsigned int)(((unsigned int)(carry) >> 1)));
    carry = ((carry * 0x41c665ad) + *(int *)((&local_60[0] + 40)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 44)))) + carry))) >> 2)) ^ carry);
    carry = ((unsigned int)((carry << 3)) | (unsigned int)(((unsigned int)(carry) >> 29)));
    carry = ((carry * 0x41c6660d) + *(int *)((&local_60[0] + 52)));
    carry = ((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_60[0] + 56)))) + carry))) >> 5)) ^ carry);
    carry = ((unsigned int)((carry << 6)) | (unsigned int)(((unsigned int)(carry) >> 26)));
    for (index = 0; (index < arg1); index++) {
        arg0[(long)(index)] = ((unsigned long)((unsigned int)((carry ^ *(int *)((&local_60[0] + ((long)(index) * 4)))))) & 0x7fffffff);
        carry = ((carry * 0x19660d) + 0x3c6ef35f);
    }
    local_4 = ((unsigned int)((carry & 0xffffff)) + 192);
    // x86-64 epilogue: restore rbp
    return (unsigned int)(local_4);
}
chain155_scalar pass 328 lines
// glaurung: chain155_scalar @ 0x1100
uint32_t chain155_scalar(uint32_t arg0) {
    unsigned int acc;
    // x86-64 prologue: save rbp
    acc = (arg0 ^ -0x61c88647LL);
    acc = ((acc * 0x41c64e6d) - 0x61c8864f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 2)) ^ acc);
    acc = ((unsigned int)((acc << 3)) | (unsigned int)(((unsigned int)(acc) >> 29)));
    acc = (acc + 0x78dde6c4);
    acc = (acc ^ 0x17156075);
    acc = ((unsigned int)(((unsigned int)(acc) >> 6)) + (unsigned int)((acc << 26)));
    acc = ((acc * 0x41c64f15) + 0x538453d7);
    acc = ((unsigned int)(((unsigned int)(acc) >> 8)) ^ acc);
    acc = ((unsigned int)((acc << 9)) | (unsigned int)(((unsigned int)(acc) >> 23)));
    acc = (acc + 0x2e2ac0ea);
    acc = (acc ^ -0x339dc565LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 12)) + (unsigned int)((acc << 20)));
    acc = ((acc * 0x41c64fbd) + 0x8d12dfd);
    acc = ((unsigned int)(((unsigned int)(acc) >> 14)) ^ acc);
    acc = ((unsigned int)((acc << 15)) | (unsigned int)(((unsigned int)(acc) >> 17)));
    acc = (acc - 0x1c8864f0);
    acc = (acc ^ -0x7e50eb3fLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 18)) + (unsigned int)((acc << 14)));
    acc = ((acc * 0x41c65065) - 0x41e1f7dd);
    acc = ((unsigned int)(((unsigned int)(acc) >> 20)) ^ acc);
    acc = ((unsigned int)((acc << 21)) | (unsigned int)(((unsigned int)(acc) >> 11)));
    acc = (acc - 0x673b8aca);
    acc = (acc ^ 0x36fbeee7);
    acc = ((unsigned int)(((unsigned int)(acc) >> 24)) + (unsigned int)((acc << 8)));
    acc = ((acc * 0x41c6510d) + 0x736ae249);
    acc = ((unsigned int)(((unsigned int)(acc) >> 26)) ^ acc);
    acc = ((unsigned int)((acc << 27)) | (unsigned int)(((unsigned int)(acc) >> 5)));
    acc = (acc + 0x4e114f5c);
    acc = (acc ^ -0x13b736f3LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 30)) + (unsigned int)((acc << 2)));
    acc = ((acc * 0x41c651b5) + 0x28b7bc6f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 1)) ^ acc);
    acc = ((unsigned int)((acc << 2)) | (unsigned int)(((unsigned int)(acc) >> 30)));
    acc = (acc + 0x35e2982);
    acc = (acc ^ -0x5e6a5ccdLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 5)) + (unsigned int)((acc << 27)));
    acc = ((acc * 0x41c6525d) - 0x21fb696b);
    acc = ((unsigned int)(((unsigned int)(acc) >> 7)) ^ acc);
    acc = ((unsigned int)((acc << 8)) | (unsigned int)(((unsigned int)(acc) >> 24)));
    acc = (acc - 0x4754fc58);
    acc = (acc ^ 0x56e27d59);
    acc = ((unsigned int)(((unsigned int)(acc) >> 11)) + (unsigned int)((acc << 21)));
    acc = ((acc * 0x41c65305) - 0x6cae8f45);
    acc = ((unsigned int)(((unsigned int)(acc) >> 13)) ^ acc);
    acc = ((unsigned int)((acc << 14)) | (unsigned int)(((unsigned int)(acc) >> 18)));
    acc = (acc + 0x6df7ddce);
    acc = (acc ^ 0xc2f577f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 17)) + (unsigned int)((acc << 15)));
    acc = ((acc * 0x41c653ad) + 0x489e4ae1);
    acc = ((unsigned int)(((unsigned int)(acc) >> 19)) ^ acc);
    acc = ((unsigned int)((acc << 20)) | (unsigned int)(((unsigned int)(acc) >> 12)));
    acc = (acc + 0x2344b7f4);
    acc = (acc ^ -0x3e83ce5bLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 23)) + (unsigned int)((acc << 9)));
    acc = ((acc * 0x41c65455) - 0x214daf9);
    acc = ((unsigned int)(((unsigned int)(acc) >> 25)) ^ acc);
    acc = ((unsigned int)((acc << 26)) | (unsigned int)(((unsigned int)(acc) >> 6)));
    acc = (acc - 0x276e6de6);
    acc = (acc ^ 0x76c90bcb);
    acc = ((unsigned int)(((unsigned int)(acc) >> 29)) + (unsigned int)((acc << 3)));
    acc = ((acc * 0x41c654fd) - 0x4cc800d3);
    acc = ((unsigned int)(((unsigned int)(acc) >> 31)) ^ acc);
    acc = ((unsigned int)((acc << 1)) | (unsigned int)(((unsigned int)(acc) >> 31)));
    acc = (acc - 0x722193c0);
    acc = (acc ^ 0x2c15e5f1);
    acc = ((unsigned int)(((unsigned int)(acc) >> 4)) + (unsigned int)((acc << 28)));
    acc = ((acc * 0x41c655a5) + 0x6884d953);
    acc = ((unsigned int)(((unsigned int)(acc) >> 6)) ^ acc);
    acc = ((unsigned int)((acc << 7)) | (unsigned int)(((unsigned int)(acc) >> 25)));
    acc = (acc + 0x432b4666);
    acc = (acc ^ -0x1e9d3fe9LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 10)) + (unsigned int)((acc << 22)));
    acc = ((acc * 0x41c6564d) + 0x1dd1b379);
    acc = ((unsigned int)(((unsigned int)(acc) >> 12)) ^ acc);
    acc = ((unsigned int)((acc << 13)) | (unsigned int)(((unsigned int)(acc) >> 19)));
    acc = (acc - 0x787df74);
    acc = (acc ^ -0x695065c3LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 16)) + (unsigned int)((acc << 16)));
    acc = ((acc * 0x41c656f5) - 0x2ce17261);
    acc = ((unsigned int)(((unsigned int)(acc) >> 18)) ^ acc);
    acc = ((unsigned int)((acc << 19)) | (unsigned int)(((unsigned int)(acc) >> 13)));
    acc = (acc - 0x523b054e);
    acc = (acc ^ 0x4bfc7463);
    acc = ((unsigned int)(((unsigned int)(acc) >> 22)) + (unsigned int)((acc << 10)));
    acc = ((acc * 0x41c6579d) - 0x7794983b);
    acc = ((unsigned int)(((unsigned int)(acc) >> 24)) ^ acc);
    acc = ((unsigned int)((acc << 25)) | (unsigned int)(((unsigned int)(acc) >> 7)));
    acc = (acc + 0x6311d4d8);
    acc = (acc ^ 0x1494e89);
    acc = ((unsigned int)(((unsigned int)(acc) >> 28)) + (unsigned int)((acc << 4)));
    acc = ((acc * 0x41c65845) + 0x3db841eb);
    acc = ((unsigned int)(((unsigned int)(acc) >> 30)) ^ acc);
    acc = ((unsigned int)((acc << 31)) | (unsigned int)(((unsigned int)(acc) >> 1)));
    acc = (acc + 0x185eaefe);
    acc = (acc ^ -0x4969d751LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 3)) + (unsigned int)((acc << 29)));
    acc = ((acc * 0x41c658ed) - 0xcfae3ef);
    acc = ((unsigned int)(((unsigned int)(acc) >> 5)) ^ acc);
    acc = ((unsigned int)((acc << 6)) | (unsigned int)(((unsigned int)(acc) >> 26)));
    acc = (acc - 0x325476dc);
    acc = (acc ^ 0x6be302d5);
    acc = ((unsigned int)(((unsigned int)(acc) >> 9)) + (unsigned int)((acc << 23)));
    acc = ((acc * 0x41c65995) - 0x57ae09c9);
    acc = ((unsigned int)(((unsigned int)(acc) >> 11)) ^ acc);
    acc = ((unsigned int)((acc << 12)) | (unsigned int)(((unsigned int)(acc) >> 20)));
    acc = (acc - 0x7d079cb6);
    acc = (acc ^ 0x212fdcfb);
    acc = ((unsigned int)(((unsigned int)(acc) >> 15)) + (unsigned int)((acc << 17)));
    acc = ((acc * 0x41c65a3d) + 0x5d9ed05d);
    acc = ((unsigned int)(((unsigned int)(acc) >> 17)) ^ acc);
    acc = ((unsigned int)((acc << 18)) | (unsigned int)(((unsigned int)(acc) >> 14)));
    acc = (acc + 0x38453d70);
    acc = (acc ^ -0x298348dfLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 21)) + (unsigned int)((acc << 11)));
    acc = ((acc * 0x41c65ae5) + 0x12ebaa83);
    acc = ((unsigned int)(((unsigned int)(acc) >> 23)) ^ acc);
    acc = ((unsigned int)((acc << 24)) | (unsigned int)(((unsigned int)(acc) >> 8)));
    acc = (acc - 0x126de86a);
    acc = (acc ^ -0x74366eb9LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 27)) + (unsigned int)((acc << 5)));
    acc = ((acc * 0x41c65b8d) - 0x37c77b57);
    acc = ((unsigned int)(((unsigned int)(acc) >> 29)) ^ acc);
    acc = ((unsigned int)((acc << 30)) | (unsigned int)(((unsigned int)(acc) >> 2)));
    acc = (acc - 0x5d210e44);
    acc = (acc ^ 0x41166b6d);
    acc = ((unsigned int)(((unsigned int)(acc) >> 2)) + (unsigned int)((acc << 30)));
    acc = ((acc * 0x41c65c35) + 0x7d855ecf);
    acc = ((unsigned int)(((unsigned int)(acc) >> 4)) ^ acc);
    acc = ((unsigned int)((acc << 5)) | (unsigned int)(((unsigned int)(acc) >> 27)));
    acc = (acc + 0x582bcbe2);
    acc = (acc ^ -0x99cba6dLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 8)) + (unsigned int)((acc << 24)));
    acc = ((acc * 0x41c65cdd) + 0x32d238f5);
    acc = ((unsigned int)(((unsigned int)(acc) >> 10)) ^ acc);
    acc = ((unsigned int)((acc << 11)) | (unsigned int)(((unsigned int)(acc) >> 21)));
    acc = (acc + 0xd78a608);
    acc = (acc ^ -0x544fe047LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 14)) + (unsigned int)((acc << 18)));
    acc = ((acc * 0x41c65d85) - 0x17e0ece5);
    acc = ((unsigned int)(((unsigned int)(acc) >> 16)) ^ acc);
    acc = ((unsigned int)((acc << 17)) | (unsigned int)(((unsigned int)(acc) >> 15)));
    acc = (acc - 0x3d3a7fd2);
    acc = (acc ^ 0x60fcf9df);
    acc = ((unsigned int)(((unsigned int)(acc) >> 20)) + (unsigned int)((acc << 12)));
    acc = ((acc * 0x41c65e2d) - 0x629412bf);
    acc = ((unsigned int)(((unsigned int)(acc) >> 22)) ^ acc);
    acc = ((unsigned int)((acc << 23)) | (unsigned int)(((unsigned int)(acc) >> 9)));
    acc = (acc + 0x78125a54);
    acc = (acc ^ 0x1649d405);
    acc = ((unsigned int)(((unsigned int)(acc) >> 26)) + (unsigned int)((acc << 6)));
    acc = ((acc * 0x41c65ed5) + 0x52b8c767);
    acc = ((unsigned int)(((unsigned int)(acc) >> 28)) ^ acc);
    acc = ((unsigned int)((acc << 29)) | (unsigned int)(((unsigned int)(acc) >> 3)));
    acc = (acc + 0x2d5f347a);
    acc = (acc ^ -0x346951d5LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 1)) + (unsigned int)((acc << 31)));
    acc = ((acc * 0x41c65f7d) + 0x805a18d);
    acc = ((unsigned int)(((unsigned int)(acc) >> 3)) ^ acc);
    acc = ((unsigned int)((acc << 4)) | (unsigned int)(((unsigned int)(acc) >> 28)));
    acc = (acc - 0x1d53f160);
    acc = (acc ^ -0x7f1c77afLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 7)) + (unsigned int)((acc << 25)));
    acc = ((acc * 0x41c66025) - 0x42ad844d);
    acc = ((unsigned int)(((unsigned int)(acc) >> 9)) ^ acc);
    acc = ((unsigned int)((acc << 10)) | (unsigned int)(((unsigned int)(acc) >> 22)));
    acc = (acc - 0x6807173a);
    acc = (acc ^ 0x36306277);
    acc = ((unsigned int)(((unsigned int)(acc) >> 13)) + (unsigned int)((acc << 19)));
    acc = ((acc * 0x41c660cd) + 0x729f55d9);
    acc = ((unsigned int)(((unsigned int)(acc) >> 15)) ^ acc);
    acc = ((unsigned int)((acc << 16)) | (unsigned int)(((unsigned int)(acc) >> 16)));
    acc = (acc + 0x4d45c2ec);
    acc = (acc ^ -0x1482c363LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 19)) + (unsigned int)((acc << 13)));
    acc = ((acc * 0x41c66175) + 0x27ec2fff);
    acc = ((unsigned int)(((unsigned int)(acc) >> 21)) ^ acc);
    acc = ((unsigned int)((acc << 22)) | (unsigned int)(((unsigned int)(acc) >> 10)));
    acc = (acc + 0x2929d12);
    acc = (acc ^ -0x5f35e93dLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 25)) + (unsigned int)((acc << 7)));
    acc = ((acc * 0x41c6621d) - 0x22c6f5db);
    acc = ((unsigned int)(((unsigned int)(acc) >> 27)) ^ acc);
    acc = ((unsigned int)((acc << 28)) | (unsigned int)(((unsigned int)(acc) >> 4)));
    acc = (acc - 0x482088c8);
    acc = (acc ^ 0x5616f0e9);
    acc = ((unsigned int)(((unsigned int)(acc) >> 31)) + (unsigned int)((acc << 1)));
    acc = ((acc * 0x41c662c5) - 0x6d7a1bb5);
    acc = ((unsigned int)(((unsigned int)(acc) >> 2)) ^ acc);
    acc = ((unsigned int)((acc << 3)) | (unsigned int)(((unsigned int)(acc) >> 29)));
    acc = (acc + 0x6d2c515e);
    acc = (acc ^ 0xb63cb0f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 6)) + (unsigned int)((acc << 26)));
    acc = ((acc * 0x41c6636d) + 0x47d2be71);
    acc = ((unsigned int)(((unsigned int)(acc) >> 8)) ^ acc);
    acc = ((unsigned int)((acc << 9)) | (unsigned int)(((unsigned int)(acc) >> 23)));
    acc = (acc + 0x22792b84);
    acc = (acc ^ -0x3f4f5acbLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 12)) + (unsigned int)((acc << 20)));
    acc = ((acc * 0x41c66415) - 0x2e06769);
    acc = ((unsigned int)(((unsigned int)(acc) >> 14)) ^ acc);
    acc = ((unsigned int)((acc << 15)) | (unsigned int)(((unsigned int)(acc) >> 17)));
    acc = (acc - 0x2839fa56);
    acc = (acc ^ 0x75fd7f5b);
    acc = ((unsigned int)(((unsigned int)(acc) >> 18)) + (unsigned int)((acc << 14)));
    acc = ((acc * 0x41c664bd) - 0x4d938d43);
    acc = ((unsigned int)(((unsigned int)(acc) >> 20)) ^ acc);
    acc = ((unsigned int)((acc << 21)) | (unsigned int)(((unsigned int)(acc) >> 11)));
    acc = (acc - 0x72ed2030);
    acc = (acc ^ 0x2b4a5981);
    acc = ((unsigned int)(((unsigned int)(acc) >> 24)) + (unsigned int)((acc << 8)));
    acc = ((acc * 0x41c66565) + 0x67b94ce3);
    acc = ((unsigned int)(((unsigned int)(acc) >> 26)) ^ acc);
    acc = ((unsigned int)((acc << 27)) | (unsigned int)(((unsigned int)(acc) >> 5)));
    acc = (acc + 0x425fb9f6);
    acc = (acc ^ -0x1f68cc59LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 30)) + (unsigned int)((acc << 2)));
    acc = ((acc * 0x41c6660d) + 0x1d062709);
    acc = ((unsigned int)(((unsigned int)(acc) >> 1)) ^ acc);
    acc = ((unsigned int)((acc << 2)) | (unsigned int)(((unsigned int)(acc) >> 30)));
    acc = (acc - 0x8536be4);
    acc = (acc ^ -0x6a1bf233LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 5)) + (unsigned int)((acc << 27)));
    acc = ((acc * 0x41c666b5) - 0x2dacfed1);
    acc = ((unsigned int)(((unsigned int)(acc) >> 7)) ^ acc);
    acc = ((unsigned int)((acc << 8)) | (unsigned int)(((unsigned int)(acc) >> 24)));
    acc = (acc - 0x530691be);
    acc = (acc ^ 0x4b30e7f3);
    acc = ((unsigned int)(((unsigned int)(acc) >> 11)) + (unsigned int)((acc << 21)));
    acc = ((acc * 0x41c6675d) - 0x786024ab);
    acc = ((unsigned int)(((unsigned int)(acc) >> 13)) ^ acc);
    acc = ((unsigned int)((acc << 14)) | (unsigned int)(((unsigned int)(acc) >> 18)));
    acc = (acc + 0x62464868);
    acc = (acc ^ 0x7dc219);
    acc = ((unsigned int)(((unsigned int)(acc) >> 17)) + (unsigned int)((acc << 15)));
    acc = ((acc * 0x41c66805) + 0x3cecb57b);
    acc = ((unsigned int)(((unsigned int)(acc) >> 19)) ^ acc);
    acc = ((unsigned int)((acc << 20)) | (unsigned int)(((unsigned int)(acc) >> 12)));
    acc = (acc + 0x1793228e);
    acc = (acc ^ -0x4a3563c1LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 23)) + (unsigned int)((acc << 9)));
    acc = ((acc * 0x41c668ad) - 0xdc6705f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 25)) ^ acc);
    acc = ((unsigned int)((acc << 26)) | (unsigned int)(((unsigned int)(acc) >> 6)));
    acc = (acc - 0x3320034c);
    acc = (acc ^ 0x6b177665);
    acc = ((unsigned int)(((unsigned int)(acc) >> 29)) + (unsigned int)((acc << 3)));
    acc = ((acc * 0x41c66955) - 0x58799639);
    acc = ((unsigned int)(((unsigned int)(acc) >> 31)) ^ acc);
    acc = ((unsigned int)((acc << 1)) | (unsigned int)(((unsigned int)(acc) >> 31)));
    acc = (acc - 0x7dd32926);
    acc = (acc ^ 0x2064508b);
    acc = ((unsigned int)(((unsigned int)(acc) >> 4)) + (unsigned int)((acc << 28)));
    acc = ((acc * 0x41c669fd) + 0x5cd343ed);
    acc = ((unsigned int)(((unsigned int)(acc) >> 6)) ^ acc);
    acc = ((unsigned int)((acc << 7)) | (unsigned int)(((unsigned int)(acc) >> 25)));
    acc = (acc + 0x3779b100);
    acc = (acc ^ -0x2a4ed54fLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 10)) + (unsigned int)((acc << 22)));
    acc = ((acc * 0x41c66aa5) + 0x12201e13);
    acc = ((unsigned int)(((unsigned int)(acc) >> 12)) ^ acc);
    acc = ((unsigned int)((acc << 13)) | (unsigned int)(((unsigned int)(acc) >> 19)));
    acc = (acc - 0x133974da);
    acc = (acc ^ -0x7501fb29LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 16)) + (unsigned int)((acc << 16)));
    acc = ((acc * 0x41c66b4d) - 0x389307c7);
    acc = ((unsigned int)(((unsigned int)(acc) >> 18)) ^ acc);
    acc = ((unsigned int)((acc << 19)) | (unsigned int)(((unsigned int)(acc) >> 13)));
    acc = (acc - 0x5dec9ab4);
    acc = (acc ^ 0x404adefd);
    acc = ((unsigned int)(((unsigned int)(acc) >> 22)) + (unsigned int)((acc << 10)));
    acc = ((acc * 0x41c66bf5) + 0x7cb9d25f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 24)) ^ acc);
    acc = ((unsigned int)((acc << 25)) | (unsigned int)(((unsigned int)(acc) >> 7)));
    acc = (acc + 0x57603f72);
    acc = (acc ^ -0xa6846ddLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 28)) + (unsigned int)((acc << 4)));
    acc = ((acc * 0x41c66c9d) + 0x3206ac85);
    acc = ((unsigned int)(((unsigned int)(acc) >> 30)) ^ acc);
    acc = ((unsigned int)((acc << 31)) | (unsigned int)(((unsigned int)(acc) >> 1)));
    acc = (acc + 0xcad1998);
    acc = (acc ^ -0x551b6cb7LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 3)) + (unsigned int)((acc << 29)));
    acc = ((acc * 0x41c66d45) - 0x18ac7955);
    acc = ((unsigned int)(((unsigned int)(acc) >> 5)) ^ acc);
    acc = ((unsigned int)((acc << 6)) | (unsigned int)(((unsigned int)(acc) >> 26)));
    acc = (acc - 0x3e060c42);
    acc = (acc ^ 0x60316d6f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 9)) + (unsigned int)((acc << 23)));
    acc = ((acc * 0x41c66ded) - 0x635f9f2f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 11)) ^ acc);
    acc = ((unsigned int)((acc << 12)) | (unsigned int)(((unsigned int)(acc) >> 20)));
    acc = (acc + 0x7746cde4);
    acc = (acc ^ 0x157e4795);
    acc = ((unsigned int)(((unsigned int)(acc) >> 15)) + (unsigned int)((acc << 17)));
    acc = ((acc * 0x41c66e95) + 0x51ed3af7);
    acc = ((unsigned int)(((unsigned int)(acc) >> 17)) ^ acc);
    acc = ((unsigned int)((acc << 18)) | (unsigned int)(((unsigned int)(acc) >> 14)));
    acc = (acc + 0x2c93a80a);
    acc = (acc ^ -0x3534de45LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 21)) + (unsigned int)((acc << 11)));
    acc = ((acc * 0x41c66f3d) + 0x73a151d);
    acc = ((unsigned int)(((unsigned int)(acc) >> 23)) ^ acc);
    acc = ((unsigned int)((acc << 24)) | (unsigned int)(((unsigned int)(acc) >> 8)));
    acc = (acc - 0x1e1f7dd0);
    acc = (acc ^ -0x7fe8041fLL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 27)) + (unsigned int)((acc << 5)));
    acc = ((acc * 0x41c66fe5) - 0x437910bd);
    acc = ((unsigned int)(((unsigned int)(acc) >> 29)) ^ acc);
    acc = ((unsigned int)((acc << 30)) | (unsigned int)(((unsigned int)(acc) >> 2)));
    acc = (acc - 0x68d2a3aa);
    acc = (acc ^ 0x3564d607);
    acc = ((unsigned int)(((unsigned int)(acc) >> 2)) + (unsigned int)((acc << 30)));
    acc = ((acc * 0x41c6708d) + 0x71d3c969);
    acc = ((unsigned int)(((unsigned int)(acc) >> 4)) ^ acc);
    acc = ((unsigned int)((acc << 5)) | (unsigned int)(((unsigned int)(acc) >> 27)));
    acc = (acc + 0x4c7a367c);
    acc = (acc ^ -0x154e4fd3LL);
    acc = ((unsigned int)(((unsigned int)(acc) >> 8)) + (unsigned int)((acc << 24)));
    acc = ((acc * 0x41c67135) + 0x2720a38f);
    acc = ((unsigned int)(((unsigned int)(acc) >> 10)) ^ acc);
    // x86-64 epilogue: restore rbp
    return (unsigned int)(((unsigned long)(acc) + 320));
}
chain155_signed pass 264 lines
// glaurung: chain155_signed @ 0x2270
int32_t chain155_signed(int32_t arg0) {
    int step;
    // x86-64 prologue: save rbp
    step = arg0;
    step = ((step * 0x41c64e6d) - 0x61c8864f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 3)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)));
    step = ((unsigned int)(step) + 0x78dde6c4);
    step = ((unsigned int)(step) ^ 0x17156075);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 26)));
    step = ((step * 0x41c64f15) + 0x538453d7);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 9)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)));
    step = ((unsigned int)(step) + 0x2e2ac0ea);
    step = ((unsigned int)(step) ^ -0x339dc565LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 20)));
    step = ((step * 0x41c64fbd) + 0x8d12dfd);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 15)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)));
    step = ((unsigned int)(step) - 0x1c8864f0);
    step = ((unsigned int)(step) ^ -0x7e50eb3fLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 14)));
    step = ((step * 0x41c65065) - 0x41e1f7dd);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 21)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)));
    step = ((unsigned int)(step) - 0x673b8aca);
    step = ((unsigned int)(step) ^ 0x36fbeee7);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 8)));
    step = ((step * 0x41c6510d) + 0x736ae249);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 27)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)));
    step = ((unsigned int)(step) + 0x4e114f5c);
    step = ((unsigned int)(step) ^ -0x13b736f3LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 2)));
    step = ((step * 0x41c651b5) + 0x28b7bc6f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 2)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)));
    step = ((unsigned int)(step) + 0x35e2982);
    step = ((unsigned int)(step) ^ -0x5e6a5ccdLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 27)));
    step = ((step * 0x41c6525d) - 0x21fb696b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 8)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)));
    step = ((unsigned int)(step) - 0x4754fc58);
    step = ((unsigned int)(step) ^ 0x56e27d59);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 21)));
    step = ((step * 0x41c65305) - 0x6cae8f45);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 14)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)));
    step = ((unsigned int)(step) + 0x6df7ddce);
    step = ((unsigned int)(step) ^ 0xc2f577f);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 15)));
    step = ((step * 0x41c653ad) + 0x489e4ae1);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 20)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)));
    step = ((unsigned int)(step) + 0x2344b7f4);
    step = ((unsigned int)(step) ^ -0x3e83ce5bLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 9)));
    step = ((step * 0x41c65455) - 0x214daf9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 26)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = ((unsigned int)(step) - 0x276e6de6);
    step = ((unsigned int)(step) ^ 0x76c90bcb);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 3)));
    step = ((step * 0x41c654fd) - 0x4cc800d3);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 1)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = ((unsigned int)(step) - 0x722193c0);
    step = ((unsigned int)(step) ^ 0x2c15e5f1);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 4)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 28)));
    step = ((step * 0x41c655a5) + 0x6884d953);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 7)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = ((unsigned int)(step) + 0x432b4666);
    step = ((unsigned int)(step) ^ -0x1e9d3fe9LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 10)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 22)));
    step = ((step * 0x41c6564d) + 0x1dd1b379);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 13)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)));
    step = ((unsigned int)(step) - 0x787df74);
    step = ((unsigned int)(step) ^ -0x695065c3LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 16)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 16)));
    step = ((step * 0x41c656f5) - 0x2ce17261);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 19)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)));
    step = ((unsigned int)(step) - 0x523b054e);
    step = ((unsigned int)(step) ^ 0x4bfc7463);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 22)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 10)));
    step = ((step * 0x41c6579d) - 0x7794983b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 25)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)));
    step = ((unsigned int)(step) + 0x6311d4d8);
    step = ((unsigned int)(step) ^ 0x1494e89);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 28)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 4)));
    step = ((step * 0x41c65845) + 0x3db841eb);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 31)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)));
    step = ((unsigned int)(step) + 0x185eaefe);
    step = ((unsigned int)(step) ^ -0x4969d751LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 3)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 29)));
    step = ((step * 0x41c658ed) - 0xcfae3ef);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 6)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)));
    step = ((unsigned int)(step) - 0x325476dc);
    step = ((unsigned int)(step) ^ 0x6be302d5);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 9)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 23)));
    step = ((step * 0x41c65995) - 0x57ae09c9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 12)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)));
    step = ((unsigned int)(step) - 0x7d079cb6);
    step = ((unsigned int)(step) ^ 0x212fdcfb);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 15)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 17)));
    step = ((step * 0x41c65a3d) + 0x5d9ed05d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 18)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)));
    step = ((unsigned int)(step) + 0x38453d70);
    step = ((unsigned int)(step) ^ -0x298348dfLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 21)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 11)));
    step = ((step * 0x41c65ae5) + 0x12ebaa83);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 24)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)));
    step = ((unsigned int)(step) - 0x126de86a);
    step = ((unsigned int)(step) ^ -0x74366eb9LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 27)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 5)));
    step = ((step * 0x41c65b8d) - 0x37c77b57);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 30)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)));
    step = ((unsigned int)(step) - 0x5d210e44);
    step = ((unsigned int)(step) ^ 0x41166b6d);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 30)));
    step = ((step * 0x41c65c35) + 0x7d855ecf);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 4)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 5)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 27)));
    step = ((unsigned int)(step) + 0x582bcbe2);
    step = ((unsigned int)(step) ^ -0x99cba6dLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 24)));
    step = ((step * 0x41c65cdd) + 0x32d238f5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 10)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 11)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 21)));
    step = ((unsigned int)(step) + 0xd78a608);
    step = ((unsigned int)(step) ^ -0x544fe047LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 18)));
    step = ((step * 0x41c65d85) - 0x17e0ece5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 16)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 17)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 15)));
    step = ((unsigned int)(step) - 0x3d3a7fd2);
    step = ((unsigned int)(step) ^ 0x60fcf9df);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 12)));
    step = ((step * 0x41c65e2d) - 0x629412bf);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 22)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 23)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 9)));
    step = ((unsigned int)(step) + 0x78125a54);
    step = ((unsigned int)(step) ^ 0x1649d405);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 6)));
    step = ((step * 0x41c65ed5) + 0x52b8c767);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 28)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 29)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 3)));
    step = ((unsigned int)(step) + 0x2d5f347a);
    step = ((unsigned int)(step) ^ -0x346951d5LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 31)));
    step = ((step * 0x41c65f7d) + 0x805a18d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 3)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 4)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 28)));
    step = ((unsigned int)(step) - 0x1d53f160);
    step = ((unsigned int)(step) ^ -0x7f1c77afLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 25)));
    step = ((step * 0x41c66025) - 0x42ad844d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 9)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 10)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 22)));
    step = ((unsigned int)(step) - 0x6807173a);
    step = ((unsigned int)(step) ^ 0x36306277);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 19)));
    step = ((step * 0x41c660cd) + 0x729f55d9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 15)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 16)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 16)));
    step = ((unsigned int)(step) + 0x4d45c2ec);
    step = ((unsigned int)(step) ^ -0x1482c363LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 13)));
    step = ((step * 0x41c66175) + 0x27ec2fff);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 21)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 22)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 10)));
    step = ((unsigned int)(step) + 0x2929d12);
    step = ((unsigned int)(step) ^ -0x5f35e93dLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 7)));
    step = ((step * 0x41c6621d) - 0x22c6f5db);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 27)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 28)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 4)));
    step = ((unsigned int)(step) - 0x482088c8);
    step = ((unsigned int)(step) ^ 0x5616f0e9);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 1)));
    step = ((step * 0x41c662c5) - 0x6d7a1bb5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 3)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)));
    step = ((unsigned int)(step) + 0x6d2c515e);
    step = ((unsigned int)(step) ^ 0xb63cb0f);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 26)));
    step = ((step * 0x41c6636d) + 0x47d2be71);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 9)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)));
    step = ((unsigned int)(step) + 0x22792b84);
    step = ((unsigned int)(step) ^ -0x3f4f5acbLL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 20)));
    step = ((step * 0x41c66415) - 0x2e06769);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 15)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)));
    step = ((unsigned int)(step) - 0x2839fa56);
    step = ((unsigned int)(step) ^ 0x75fd7f5b);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 14)));
    step = ((step * 0x41c664bd) - 0x4d938d43);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 21)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)));
    step = ((unsigned int)(step) - 0x72ed2030);
    step = ((unsigned int)(step) ^ 0x2b4a5981);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 8)));
    step = ((step * 0x41c66565) + 0x67b94ce3);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 27)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)));
    step = ((unsigned int)(step) + 0x425fb9f6);
    step = ((unsigned int)(step) ^ -0x1f68cc59LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 2)));
    step = ((step * 0x41c6660d) + 0x1d062709);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 2)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)));
    step = ((unsigned int)(step) - 0x8536be4);
    step = ((unsigned int)(step) ^ -0x6a1bf233LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 27)));
    step = ((step * 0x41c666b5) - 0x2dacfed1);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 8)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)));
    step = ((unsigned int)(step) - 0x530691be);
    step = ((unsigned int)(step) ^ 0x4b30e7f3);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 21)));
    step = ((step * 0x41c6675d) - 0x786024ab);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 14)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)));
    step = ((unsigned int)(step) + 0x62464868);
    step = ((unsigned int)(step) ^ 0x7dc219);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 15)));
    step = ((step * 0x41c66805) + 0x3cecb57b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 20)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)));
    step = ((unsigned int)(step) + 0x1793228e);
    step = ((unsigned int)(step) ^ -0x4a3563c1LL);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 9)));
    step = ((step * 0x41c668ad) - 0xdc6705f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 26)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = ((unsigned int)(step) - 0x3320034c);
    step = ((unsigned int)(step) ^ 0x6b177665);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 3)));
    step = ((step * 0x41c66955) - 0x58799639);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 1)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = ((unsigned int)(step) - 0x7dd32926);
    step = ((unsigned int)(step) ^ 0x2064508b);
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) >> 4)) + (unsigned int)(((unsigned long)((unsigned int)(step)) << 28)));
    step = ((step * 0x41c669fd) + 0x5cd343ed);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = ((unsigned int)(((unsigned long)((unsigned int)(step)) << 7)) | (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = ((unsigned int)(step) + 0x3779b100);
    // x86-64 epilogue: restore rbp
    return (unsigned int)(((unsigned long)((unsigned int)(step)) + 256));
}

gcc -O0

3/3
chain155_buffered pass 221 lines
// glaurung: chain155_buffered @ 0x277e
int32_t chain155_buffered(int32_t * arg0, int32_t arg1) {
    extern __attribute__((noreturn)) void __stack_chk_fail(void);
    unsigned int carry;
    int index;
    unsigned char local_50[64];
    long local_8;
    long ret;
    // x86-64 prologue: save rbp, frame 112 bytes
    local_8 = (long)(0x28);
    carry = 0x2545f491;
    if ((((arg0 == 0) || (((unsigned long)((unsigned int)(arg1)) == 0) | ((long)(arg1) < 0))) || (((unsigned long)((unsigned int)(arg1)) != 16) && (16 <= (long)(arg1))))) {
        ret = 0xffffffff;
    } else {
        for (index = 0; ((((unsigned long)((unsigned int)(index)) == 15) | ((long)(index) < 15)) != 0); index++) {
            *(int *)((&local_50[0] + ((long)(index) * 4))) = ((arg1 <= index) ? 0 : (unsigned long)((unsigned int)(arg0[(long)(index)])));
        }
        carry = ((unsigned int)(*(int *)(&local_50[0])) + (carry * 0x41c64e6d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 4))))))) >> 2)));
        carry = ((carry << 3) | ((unsigned int)(carry) >> 29));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 12))) + (carry * 0x41c64ecd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 16))))))) >> 5)));
        carry = ((carry << 6) | ((unsigned int)(carry) >> 26));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 24))) + (carry * 0x41c64f2d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 28))))))) >> 8)));
        carry = ((carry << 9) | ((unsigned int)(carry) >> 23));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 36))) + (carry * 0x41c64f8d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 40))))))) >> 11)));
        carry = ((carry << 12) | ((unsigned int)(carry) >> 20));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 48))) + (carry * 0x41c64fed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 52))))))) >> 14)));
        carry = ((carry << 15) | ((unsigned int)(carry) >> 17));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 60))) + (carry * 0x41c6504d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)(&local_50[0])))))) >> 17)));
        carry = (((unsigned int)(carry) >> 14) | (carry << 18));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 8))) + (carry * 0x41c650ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 12))))))) >> 20)));
        carry = (((unsigned int)(carry) >> 11) | (carry << 21));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 20))) + (carry * 0x41c6510d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 24))))))) >> 23)));
        carry = (((unsigned int)(carry) >> 8) | (carry << 24));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 32))) + (carry * 0x41c6516d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 36))))))) >> 26)));
        carry = (((unsigned int)(carry) >> 5) | (carry << 27));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 44))) + (carry * 0x41c651cd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 48))))))) >> 29)));
        carry = (((unsigned int)(carry) >> 2) | (carry << 30));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 56))) + (carry * 0x41c6522d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 60))))))) >> 1)));
        carry = ((carry << 2) | ((unsigned int)(carry) >> 30));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 4))) + (carry * 0x41c6528d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 8))))))) >> 4)));
        carry = ((carry << 5) | ((unsigned int)(carry) >> 27));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 16))) + (carry * 0x41c652ed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 20))))))) >> 7)));
        carry = ((carry << 8) | ((unsigned int)(carry) >> 24));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 28))) + (carry * 0x41c6534d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 32))))))) >> 10)));
        carry = ((carry << 11) | ((unsigned int)(carry) >> 21));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 40))) + (carry * 0x41c653ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 44))))))) >> 13)));
        carry = ((carry << 14) | ((unsigned int)(carry) >> 18));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 52))) + (carry * 0x41c6540d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 56))))))) >> 16)));
        carry = (((unsigned int)(carry) >> 15) | (carry << 17));
        carry = ((unsigned int)(*(int *)(&local_50[0])) + (carry * 0x41c6546d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 4))))))) >> 19)));
        carry = (((unsigned int)(carry) >> 12) | (carry << 20));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 12))) + (carry * 0x41c654cd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 16))))))) >> 22)));
        carry = (((unsigned int)(carry) >> 9) | (carry << 23));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 24))) + (carry * 0x41c6552d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 28))))))) >> 25)));
        carry = (((unsigned int)(carry) >> 6) | (carry << 26));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 36))) + (carry * 0x41c6558d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 40))))))) >> 28)));
        carry = (((unsigned int)(carry) >> 3) | (carry << 29));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 48))) + (carry * 0x41c655ed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 52))))))) >> 31)));
        carry = ((carry << 1) | ((unsigned int)(carry) >> 31));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 60))) + (carry * 0x41c6564d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)(&local_50[0])))))) >> 3)));
        carry = ((carry << 4) | ((unsigned int)(carry) >> 28));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 8))) + (carry * 0x41c656ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 12))))))) >> 6)));
        carry = ((carry << 7) | ((unsigned int)(carry) >> 25));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 20))) + (carry * 0x41c6570d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 24))))))) >> 9)));
        carry = ((carry << 10) | ((unsigned int)(carry) >> 22));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 32))) + (carry * 0x41c6576d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 36))))))) >> 12)));
        carry = ((carry << 13) | ((unsigned int)(carry) >> 19));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 44))) + (carry * 0x41c657cd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 48))))))) >> 15)));
        carry = ((carry << 16) | ((unsigned int)(carry) >> 16));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 56))) + (carry * 0x41c6582d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 60))))))) >> 18)));
        carry = (((unsigned int)(carry) >> 13) | (carry << 19));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 4))) + (carry * 0x41c6588d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 8))))))) >> 21)));
        carry = (((unsigned int)(carry) >> 10) | (carry << 22));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 16))) + (carry * 0x41c658ed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 20))))))) >> 24)));
        carry = (((unsigned int)(carry) >> 7) | (carry << 25));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 28))) + (carry * 0x41c6594d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 32))))))) >> 27)));
        carry = (((unsigned int)(carry) >> 4) | (carry << 28));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 40))) + (carry * 0x41c659ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 44))))))) >> 30)));
        carry = (((unsigned int)(carry) >> 1) | (carry << 31));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 52))) + (carry * 0x41c65a0d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 56))))))) >> 2)));
        carry = ((carry << 3) | ((unsigned int)(carry) >> 29));
        carry = ((unsigned int)(*(int *)(&local_50[0])) + (carry * 0x41c65a6d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 4))))))) >> 5)));
        carry = ((carry << 6) | ((unsigned int)(carry) >> 26));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 12))) + (carry * 0x41c65acd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 16))))))) >> 8)));
        carry = ((carry << 9) | ((unsigned int)(carry) >> 23));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 24))) + (carry * 0x41c65b2d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 28))))))) >> 11)));
        carry = ((carry << 12) | ((unsigned int)(carry) >> 20));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 36))) + (carry * 0x41c65b8d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 40))))))) >> 14)));
        carry = ((carry << 15) | ((unsigned int)(carry) >> 17));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 48))) + (carry * 0x41c65bed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 52))))))) >> 17)));
        carry = (((unsigned int)(carry) >> 14) | (carry << 18));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 60))) + (carry * 0x41c65c4d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)(&local_50[0])))))) >> 20)));
        carry = (((unsigned int)(carry) >> 11) | (carry << 21));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 8))) + (carry * 0x41c65cad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 12))))))) >> 23)));
        carry = (((unsigned int)(carry) >> 8) | (carry << 24));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 20))) + (carry * 0x41c65d0d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 24))))))) >> 26)));
        carry = (((unsigned int)(carry) >> 5) | (carry << 27));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 32))) + (carry * 0x41c65d6d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 36))))))) >> 29)));
        carry = (((unsigned int)(carry) >> 2) | (carry << 30));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 44))) + (carry * 0x41c65dcd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 48))))))) >> 1)));
        carry = ((carry << 2) | ((unsigned int)(carry) >> 30));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 56))) + (carry * 0x41c65e2d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 60))))))) >> 4)));
        carry = ((carry << 5) | ((unsigned int)(carry) >> 27));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 4))) + (carry * 0x41c65e8d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 8))))))) >> 7)));
        carry = ((carry << 8) | ((unsigned int)(carry) >> 24));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 16))) + (carry * 0x41c65eed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 20))))))) >> 10)));
        carry = ((carry << 11) | ((unsigned int)(carry) >> 21));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 28))) + (carry * 0x41c65f4d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 32))))))) >> 13)));
        carry = ((carry << 14) | ((unsigned int)(carry) >> 18));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 40))) + (carry * 0x41c65fad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 44))))))) >> 16)));
        carry = (((unsigned int)(carry) >> 15) | (carry << 17));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 52))) + (carry * 0x41c6600d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 56))))))) >> 19)));
        carry = (((unsigned int)(carry) >> 12) | (carry << 20));
        carry = ((unsigned int)(*(int *)(&local_50[0])) + (carry * 0x41c6606d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 4))))))) >> 22)));
        carry = (((unsigned int)(carry) >> 9) | (carry << 23));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 12))) + (carry * 0x41c660cd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 16))))))) >> 25)));
        carry = (((unsigned int)(carry) >> 6) | (carry << 26));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 24))) + (carry * 0x41c6612d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 28))))))) >> 28)));
        carry = (((unsigned int)(carry) >> 3) | (carry << 29));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 36))) + (carry * 0x41c6618d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 40))))))) >> 31)));
        carry = ((carry << 1) | ((unsigned int)(carry) >> 31));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 48))) + (carry * 0x41c661ed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 52))))))) >> 3)));
        carry = ((carry << 4) | ((unsigned int)(carry) >> 28));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 60))) + (carry * 0x41c6624d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)(&local_50[0])))))) >> 6)));
        carry = ((carry << 7) | ((unsigned int)(carry) >> 25));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 8))) + (carry * 0x41c662ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 12))))))) >> 9)));
        carry = ((carry << 10) | ((unsigned int)(carry) >> 22));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 20))) + (carry * 0x41c6630d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 24))))))) >> 12)));
        carry = ((carry << 13) | ((unsigned int)(carry) >> 19));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 32))) + (carry * 0x41c6636d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 36))))))) >> 15)));
        carry = ((carry << 16) | ((unsigned int)(carry) >> 16));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 44))) + (carry * 0x41c663cd));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 48))))))) >> 18)));
        carry = (((unsigned int)(carry) >> 13) | (carry << 19));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 56))) + (carry * 0x41c6642d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 60))))))) >> 21)));
        carry = (((unsigned int)(carry) >> 10) | (carry << 22));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 4))) + (carry * 0x41c6648d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 8))))))) >> 24)));
        carry = (((unsigned int)(carry) >> 7) | (carry << 25));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 16))) + (carry * 0x41c664ed));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 20))))))) >> 27)));
        carry = (((unsigned int)(carry) >> 4) | (carry << 28));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 28))) + (carry * 0x41c6654d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 32))))))) >> 30)));
        carry = (((unsigned int)(carry) >> 1) | (carry << 31));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 40))) + (carry * 0x41c665ad));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 44))))))) >> 2)));
        carry = ((carry << 3) | ((unsigned int)(carry) >> 29));
        carry = ((unsigned int)(*(int *)((&local_50[0] + 52))) + (carry * 0x41c6660d));
        carry = (carry ^ (unsigned int)(((unsigned long)((unsigned int)((carry + (unsigned long)((unsigned int)(*(int *)((&local_50[0] + 56))))))) >> 5)));
        carry = ((carry << 6) | ((unsigned int)(carry) >> 26));
        for (index = 0; (index < arg1); index++) {
            arg0[(long)(index)] = ((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_50[0] + ((long)(index) * 4))))) ^ carry))) & 0x7fffffff);
            carry = ((carry * 0x19660d) + 0x3c6ef35f);
        }
        ret = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((carry & 0xffffff))) + 192)));
    }
    if ((local_8 != 0x28)) {
        __stack_chk_fail();
    }
    // x86-64 epilogue: restore rbp
    return ret;
}
chain155_scalar pass 328 lines
// glaurung: chain155_scalar @ 0x1119
uint32_t chain155_scalar(uint32_t arg0) {
    unsigned int acc;
    // x86-64 prologue: save rbp
    acc = (arg0 ^ -0x61c88647LL);
    acc = ((acc * 0x41c64e6d) - 0x61c8864f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 2)));
    acc = ((acc << 3) | ((unsigned int)(acc) >> 29));
    acc = (acc + 0x78dde6c4);
    acc = (acc ^ 0x17156075);
    acc = (((unsigned int)(acc) >> 6) | (acc << 26));
    acc = ((acc * 0x41c64f15) + 0x538453d7);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 8)));
    acc = ((acc << 9) | ((unsigned int)(acc) >> 23));
    acc = (acc + 0x2e2ac0ea);
    acc = (acc ^ -0x339dc565LL);
    acc = (((unsigned int)(acc) >> 12) | (acc << 20));
    acc = ((acc * 0x41c64fbd) + 0x8d12dfd);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 14)));
    acc = ((acc << 15) | ((unsigned int)(acc) >> 17));
    acc = (acc - 0x1c8864f0);
    acc = (acc ^ -0x7e50eb3fLL);
    acc = ((acc << 14) | ((unsigned int)(acc) >> 18));
    acc = ((acc * 0x41c65065) - 0x41e1f7dd);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 20)));
    acc = (((unsigned int)(acc) >> 11) | (acc << 21));
    acc = (acc - 0x673b8aca);
    acc = (acc ^ 0x36fbeee7);
    acc = ((acc << 8) | ((unsigned int)(acc) >> 24));
    acc = ((acc * 0x41c6510d) + 0x736ae249);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 26)));
    acc = (((unsigned int)(acc) >> 5) | (acc << 27));
    acc = (acc + 0x4e114f5c);
    acc = (acc ^ -0x13b736f3LL);
    acc = ((acc << 2) | ((unsigned int)(acc) >> 30));
    acc = ((acc * 0x41c651b5) + 0x28b7bc6f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 1)));
    acc = ((acc << 2) | ((unsigned int)(acc) >> 30));
    acc = (acc + 0x35e2982);
    acc = (acc ^ -0x5e6a5ccdLL);
    acc = (((unsigned int)(acc) >> 5) | (acc << 27));
    acc = ((acc * 0x41c6525d) - 0x21fb696b);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 7)));
    acc = ((acc << 8) | ((unsigned int)(acc) >> 24));
    acc = (acc - 0x4754fc58);
    acc = (acc ^ 0x56e27d59);
    acc = (((unsigned int)(acc) >> 11) | (acc << 21));
    acc = ((acc * 0x41c65305) - 0x6cae8f45);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 13)));
    acc = ((acc << 14) | ((unsigned int)(acc) >> 18));
    acc = (acc + 0x6df7ddce);
    acc = (acc ^ 0xc2f577f);
    acc = ((acc << 15) | ((unsigned int)(acc) >> 17));
    acc = ((acc * 0x41c653ad) + 0x489e4ae1);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 19)));
    acc = (((unsigned int)(acc) >> 12) | (acc << 20));
    acc = (acc + 0x2344b7f4);
    acc = (acc ^ -0x3e83ce5bLL);
    acc = ((acc << 9) | ((unsigned int)(acc) >> 23));
    acc = ((acc * 0x41c65455) - 0x214daf9);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 25)));
    acc = (((unsigned int)(acc) >> 6) | (acc << 26));
    acc = (acc - 0x276e6de6);
    acc = (acc ^ 0x76c90bcb);
    acc = ((acc << 3) | ((unsigned int)(acc) >> 29));
    acc = ((acc * 0x41c654fd) - 0x4cc800d3);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 31)));
    acc = ((acc << 1) | ((unsigned int)(acc) >> 31));
    acc = (acc - 0x722193c0);
    acc = (acc ^ 0x2c15e5f1);
    acc = (((unsigned int)(acc) >> 4) | (acc << 28));
    acc = ((acc * 0x41c655a5) + 0x6884d953);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 6)));
    acc = ((acc << 7) | ((unsigned int)(acc) >> 25));
    acc = (acc + 0x432b4666);
    acc = (acc ^ -0x1e9d3fe9LL);
    acc = (((unsigned int)(acc) >> 10) | (acc << 22));
    acc = ((acc * 0x41c6564d) + 0x1dd1b379);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 12)));
    acc = ((acc << 13) | ((unsigned int)(acc) >> 19));
    acc = (acc - 0x787df74);
    acc = (acc ^ -0x695065c3LL);
    acc = ((acc << 16) | ((unsigned int)(acc) >> 16));
    acc = ((acc * 0x41c656f5) - 0x2ce17261);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 18)));
    acc = (((unsigned int)(acc) >> 13) | (acc << 19));
    acc = (acc - 0x523b054e);
    acc = (acc ^ 0x4bfc7463);
    acc = ((acc << 10) | ((unsigned int)(acc) >> 22));
    acc = ((acc * 0x41c6579d) - 0x7794983b);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 24)));
    acc = (((unsigned int)(acc) >> 7) | (acc << 25));
    acc = (acc + 0x6311d4d8);
    acc = (acc ^ 0x1494e89);
    acc = ((acc << 4) | ((unsigned int)(acc) >> 28));
    acc = ((acc * 0x41c65845) + 0x3db841eb);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 30)));
    acc = (((unsigned int)(acc) >> 1) | (acc << 31));
    acc = (acc + 0x185eaefe);
    acc = (acc ^ -0x4969d751LL);
    acc = (((unsigned int)(acc) >> 3) | (acc << 29));
    acc = ((acc * 0x41c658ed) - 0xcfae3ef);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 5)));
    acc = ((acc << 6) | ((unsigned int)(acc) >> 26));
    acc = (acc - 0x325476dc);
    acc = (acc ^ 0x6be302d5);
    acc = (((unsigned int)(acc) >> 9) | (acc << 23));
    acc = ((acc * 0x41c65995) - 0x57ae09c9);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 11)));
    acc = ((acc << 12) | ((unsigned int)(acc) >> 20));
    acc = (acc - 0x7d079cb6);
    acc = (acc ^ 0x212fdcfb);
    acc = (((unsigned int)(acc) >> 15) | (acc << 17));
    acc = ((acc * 0x41c65a3d) + 0x5d9ed05d);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 17)));
    acc = (((unsigned int)(acc) >> 14) | (acc << 18));
    acc = (acc + 0x38453d70);
    acc = (acc ^ -0x298348dfLL);
    acc = ((acc << 11) | ((unsigned int)(acc) >> 21));
    acc = ((acc * 0x41c65ae5) + 0x12ebaa83);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 23)));
    acc = (((unsigned int)(acc) >> 8) | (acc << 24));
    acc = (acc - 0x126de86a);
    acc = (acc ^ -0x74366eb9LL);
    acc = ((acc << 5) | ((unsigned int)(acc) >> 27));
    acc = ((acc * 0x41c65b8d) - 0x37c77b57);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 29)));
    acc = (((unsigned int)(acc) >> 2) | (acc << 30));
    acc = (acc - 0x5d210e44);
    acc = (acc ^ 0x41166b6d);
    acc = (((unsigned int)(acc) >> 2) | (acc << 30));
    acc = ((acc * 0x41c65c35) + 0x7d855ecf);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 4)));
    acc = ((acc << 5) | ((unsigned int)(acc) >> 27));
    acc = (acc + 0x582bcbe2);
    acc = (acc ^ -0x99cba6dLL);
    acc = (((unsigned int)(acc) >> 8) | (acc << 24));
    acc = ((acc * 0x41c65cdd) + 0x32d238f5);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 10)));
    acc = ((acc << 11) | ((unsigned int)(acc) >> 21));
    acc = (acc + 0xd78a608);
    acc = (acc ^ -0x544fe047LL);
    acc = (((unsigned int)(acc) >> 14) | (acc << 18));
    acc = ((acc * 0x41c65d85) - 0x17e0ece5);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 16)));
    acc = (((unsigned int)(acc) >> 15) | (acc << 17));
    acc = (acc - 0x3d3a7fd2);
    acc = (acc ^ 0x60fcf9df);
    acc = ((acc << 12) | ((unsigned int)(acc) >> 20));
    acc = ((acc * 0x41c65e2d) - 0x629412bf);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 22)));
    acc = (((unsigned int)(acc) >> 9) | (acc << 23));
    acc = (acc + 0x78125a54);
    acc = (acc ^ 0x1649d405);
    acc = ((acc << 6) | ((unsigned int)(acc) >> 26));
    acc = ((acc * 0x41c65ed5) + 0x52b8c767);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 28)));
    acc = (((unsigned int)(acc) >> 3) | (acc << 29));
    acc = (acc + 0x2d5f347a);
    acc = (acc ^ -0x346951d5LL);
    acc = (((unsigned int)(acc) >> 1) | (acc << 31));
    acc = ((acc * 0x41c65f7d) + 0x805a18d);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 3)));
    acc = ((acc << 4) | ((unsigned int)(acc) >> 28));
    acc = (acc - 0x1d53f160);
    acc = (acc ^ -0x7f1c77afLL);
    acc = (((unsigned int)(acc) >> 7) | (acc << 25));
    acc = ((acc * 0x41c66025) - 0x42ad844d);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 9)));
    acc = ((acc << 10) | ((unsigned int)(acc) >> 22));
    acc = (acc - 0x6807173a);
    acc = (acc ^ 0x36306277);
    acc = (((unsigned int)(acc) >> 13) | (acc << 19));
    acc = ((acc * 0x41c660cd) + 0x729f55d9);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 15)));
    acc = ((acc << 16) | ((unsigned int)(acc) >> 16));
    acc = (acc + 0x4d45c2ec);
    acc = (acc ^ -0x1482c363LL);
    acc = ((acc << 13) | ((unsigned int)(acc) >> 19));
    acc = ((acc * 0x41c66175) + 0x27ec2fff);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 21)));
    acc = (((unsigned int)(acc) >> 10) | (acc << 22));
    acc = (acc + 0x2929d12);
    acc = (acc ^ -0x5f35e93dLL);
    acc = ((acc << 7) | ((unsigned int)(acc) >> 25));
    acc = ((acc * 0x41c6621d) - 0x22c6f5db);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 27)));
    acc = (((unsigned int)(acc) >> 4) | (acc << 28));
    acc = (acc - 0x482088c8);
    acc = (acc ^ 0x5616f0e9);
    acc = ((acc << 1) | ((unsigned int)(acc) >> 31));
    acc = ((acc * 0x41c662c5) - 0x6d7a1bb5);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 2)));
    acc = ((acc << 3) | ((unsigned int)(acc) >> 29));
    acc = (acc + 0x6d2c515e);
    acc = (acc ^ 0xb63cb0f);
    acc = (((unsigned int)(acc) >> 6) | (acc << 26));
    acc = ((acc * 0x41c6636d) + 0x47d2be71);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 8)));
    acc = ((acc << 9) | ((unsigned int)(acc) >> 23));
    acc = (acc + 0x22792b84);
    acc = (acc ^ -0x3f4f5acbLL);
    acc = (((unsigned int)(acc) >> 12) | (acc << 20));
    acc = ((acc * 0x41c66415) - 0x2e06769);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 14)));
    acc = ((acc << 15) | ((unsigned int)(acc) >> 17));
    acc = (acc - 0x2839fa56);
    acc = (acc ^ 0x75fd7f5b);
    acc = ((acc << 14) | ((unsigned int)(acc) >> 18));
    acc = ((acc * 0x41c664bd) - 0x4d938d43);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 20)));
    acc = (((unsigned int)(acc) >> 11) | (acc << 21));
    acc = (acc - 0x72ed2030);
    acc = (acc ^ 0x2b4a5981);
    acc = ((acc << 8) | ((unsigned int)(acc) >> 24));
    acc = ((acc * 0x41c66565) + 0x67b94ce3);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 26)));
    acc = (((unsigned int)(acc) >> 5) | (acc << 27));
    acc = (acc + 0x425fb9f6);
    acc = (acc ^ -0x1f68cc59LL);
    acc = ((acc << 2) | ((unsigned int)(acc) >> 30));
    acc = ((acc * 0x41c6660d) + 0x1d062709);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 1)));
    acc = ((acc << 2) | ((unsigned int)(acc) >> 30));
    acc = (acc - 0x8536be4);
    acc = (acc ^ -0x6a1bf233LL);
    acc = (((unsigned int)(acc) >> 5) | (acc << 27));
    acc = ((acc * 0x41c666b5) - 0x2dacfed1);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 7)));
    acc = ((acc << 8) | ((unsigned int)(acc) >> 24));
    acc = (acc - 0x530691be);
    acc = (acc ^ 0x4b30e7f3);
    acc = (((unsigned int)(acc) >> 11) | (acc << 21));
    acc = ((acc * 0x41c6675d) - 0x786024ab);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 13)));
    acc = ((acc << 14) | ((unsigned int)(acc) >> 18));
    acc = (acc + 0x62464868);
    acc = (acc ^ 0x7dc219);
    acc = ((acc << 15) | ((unsigned int)(acc) >> 17));
    acc = ((acc * 0x41c66805) + 0x3cecb57b);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 19)));
    acc = (((unsigned int)(acc) >> 12) | (acc << 20));
    acc = (acc + 0x1793228e);
    acc = (acc ^ -0x4a3563c1LL);
    acc = ((acc << 9) | ((unsigned int)(acc) >> 23));
    acc = ((acc * 0x41c668ad) - 0xdc6705f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 25)));
    acc = (((unsigned int)(acc) >> 6) | (acc << 26));
    acc = (acc - 0x3320034c);
    acc = (acc ^ 0x6b177665);
    acc = ((acc << 3) | ((unsigned int)(acc) >> 29));
    acc = ((acc * 0x41c66955) - 0x58799639);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 31)));
    acc = ((acc << 1) | ((unsigned int)(acc) >> 31));
    acc = (acc - 0x7dd32926);
    acc = (acc ^ 0x2064508b);
    acc = (((unsigned int)(acc) >> 4) | (acc << 28));
    acc = ((acc * 0x41c669fd) + 0x5cd343ed);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 6)));
    acc = ((acc << 7) | ((unsigned int)(acc) >> 25));
    acc = (acc + 0x3779b100);
    acc = (acc ^ -0x2a4ed54fLL);
    acc = (((unsigned int)(acc) >> 10) | (acc << 22));
    acc = ((acc * 0x41c66aa5) + 0x12201e13);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 12)));
    acc = ((acc << 13) | ((unsigned int)(acc) >> 19));
    acc = (acc - 0x133974da);
    acc = (acc ^ -0x7501fb29LL);
    acc = ((acc << 16) | ((unsigned int)(acc) >> 16));
    acc = ((acc * 0x41c66b4d) - 0x389307c7);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 18)));
    acc = (((unsigned int)(acc) >> 13) | (acc << 19));
    acc = (acc - 0x5dec9ab4);
    acc = (acc ^ 0x404adefd);
    acc = ((acc << 10) | ((unsigned int)(acc) >> 22));
    acc = ((acc * 0x41c66bf5) + 0x7cb9d25f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 24)));
    acc = (((unsigned int)(acc) >> 7) | (acc << 25));
    acc = (acc + 0x57603f72);
    acc = (acc ^ -0xa6846ddLL);
    acc = ((acc << 4) | ((unsigned int)(acc) >> 28));
    acc = ((acc * 0x41c66c9d) + 0x3206ac85);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 30)));
    acc = (((unsigned int)(acc) >> 1) | (acc << 31));
    acc = (acc + 0xcad1998);
    acc = (acc ^ -0x551b6cb7LL);
    acc = (((unsigned int)(acc) >> 3) | (acc << 29));
    acc = ((acc * 0x41c66d45) - 0x18ac7955);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 5)));
    acc = ((acc << 6) | ((unsigned int)(acc) >> 26));
    acc = (acc - 0x3e060c42);
    acc = (acc ^ 0x60316d6f);
    acc = (((unsigned int)(acc) >> 9) | (acc << 23));
    acc = ((acc * 0x41c66ded) - 0x635f9f2f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 11)));
    acc = ((acc << 12) | ((unsigned int)(acc) >> 20));
    acc = (acc + 0x7746cde4);
    acc = (acc ^ 0x157e4795);
    acc = (((unsigned int)(acc) >> 15) | (acc << 17));
    acc = ((acc * 0x41c66e95) + 0x51ed3af7);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 17)));
    acc = (((unsigned int)(acc) >> 14) | (acc << 18));
    acc = (acc + 0x2c93a80a);
    acc = (acc ^ -0x3534de45LL);
    acc = ((acc << 11) | ((unsigned int)(acc) >> 21));
    acc = ((acc * 0x41c66f3d) + 0x73a151d);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 23)));
    acc = (((unsigned int)(acc) >> 8) | (acc << 24));
    acc = (acc - 0x1e1f7dd0);
    acc = (acc ^ -0x7fe8041fLL);
    acc = ((acc << 5) | ((unsigned int)(acc) >> 27));
    acc = ((acc * 0x41c66fe5) - 0x437910bd);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 29)));
    acc = (((unsigned int)(acc) >> 2) | (acc << 30));
    acc = (acc - 0x68d2a3aa);
    acc = (acc ^ 0x3564d607);
    acc = (((unsigned int)(acc) >> 2) | (acc << 30));
    acc = ((acc * 0x41c6708d) + 0x71d3c969);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 4)));
    acc = ((acc << 5) | ((unsigned int)(acc) >> 27));
    acc = (acc + 0x4c7a367c);
    acc = (acc ^ -0x154e4fd3LL);
    acc = (((unsigned int)(acc) >> 8) | (acc << 24));
    acc = ((acc * 0x41c67135) + 0x2720a38f);
    acc = (acc ^ (unsigned int)(((unsigned int)(acc) >> 10)));
    // x86-64 epilogue: restore rbp
    return (unsigned int)(((unsigned long)(acc) + 320));
}
chain155_signed pass 264 lines
// glaurung: chain155_signed @ 0x1b3b
int32_t chain155_signed(int32_t arg0) {
    int step;
    // x86-64 prologue: save rbp
    step = arg0;
    step = (((unsigned int)(step) * 0x41c64e6d) - 0x61c8864f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)));
    step = (((unsigned long)((unsigned int)(step)) << 3) | ((unsigned long)((unsigned int)(step)) >> 29));
    step = ((unsigned int)(step) + 0x78dde6c4);
    step = ((unsigned int)(step) ^ 0x17156075);
    step = (((unsigned long)((unsigned int)(step)) >> 6) | ((unsigned long)((unsigned int)(step)) << 26));
    step = (((unsigned int)(step) * 0x41c64f15) + 0x538453d7);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)));
    step = (((unsigned long)((unsigned int)(step)) << 9) | ((unsigned long)((unsigned int)(step)) >> 23));
    step = ((unsigned int)(step) + 0x2e2ac0ea);
    step = ((unsigned int)(step) ^ -0x339dc565LL);
    step = (((unsigned long)((unsigned int)(step)) >> 12) | ((unsigned long)((unsigned int)(step)) << 20));
    step = (((unsigned int)(step) * 0x41c64fbd) + 0x8d12dfd);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)));
    step = (((unsigned long)((unsigned int)(step)) << 15) | ((unsigned long)((unsigned int)(step)) >> 17));
    step = ((unsigned int)(step) - 0x1c8864f0);
    step = ((unsigned int)(step) ^ -0x7e50eb3fLL);
    step = (((unsigned long)((unsigned int)(step)) << 14) | ((unsigned long)((unsigned int)(step)) >> 18));
    step = (((unsigned int)(step) * 0x41c65065) - 0x41e1f7dd);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)));
    step = (((unsigned long)((unsigned int)(step)) >> 11) | ((unsigned long)((unsigned int)(step)) << 21));
    step = ((unsigned int)(step) - 0x673b8aca);
    step = ((unsigned int)(step) ^ 0x36fbeee7);
    step = (((unsigned long)((unsigned int)(step)) << 8) | ((unsigned long)((unsigned int)(step)) >> 24));
    step = (((unsigned int)(step) * 0x41c6510d) + 0x736ae249);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)));
    step = (((unsigned long)((unsigned int)(step)) >> 5) | ((unsigned long)((unsigned int)(step)) << 27));
    step = ((unsigned int)(step) + 0x4e114f5c);
    step = ((unsigned int)(step) ^ -0x13b736f3LL);
    step = (((unsigned long)((unsigned int)(step)) << 2) | ((unsigned long)((unsigned int)(step)) >> 30));
    step = (((unsigned int)(step) * 0x41c651b5) + 0x28b7bc6f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)));
    step = (((unsigned long)((unsigned int)(step)) << 2) | ((unsigned long)((unsigned int)(step)) >> 30));
    step = ((unsigned int)(step) + 0x35e2982);
    step = ((unsigned int)(step) ^ -0x5e6a5ccdLL);
    step = (((unsigned long)((unsigned int)(step)) >> 5) | ((unsigned long)((unsigned int)(step)) << 27));
    step = (((unsigned int)(step) * 0x41c6525d) - 0x21fb696b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)));
    step = (((unsigned long)((unsigned int)(step)) << 8) | ((unsigned long)((unsigned int)(step)) >> 24));
    step = ((unsigned int)(step) - 0x4754fc58);
    step = ((unsigned int)(step) ^ 0x56e27d59);
    step = (((unsigned long)((unsigned int)(step)) >> 11) | ((unsigned long)((unsigned int)(step)) << 21));
    step = (((unsigned int)(step) * 0x41c65305) - 0x6cae8f45);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)));
    step = (((unsigned long)((unsigned int)(step)) << 14) | ((unsigned long)((unsigned int)(step)) >> 18));
    step = ((unsigned int)(step) + 0x6df7ddce);
    step = ((unsigned int)(step) ^ 0xc2f577f);
    step = (((unsigned long)((unsigned int)(step)) << 15) | ((unsigned long)((unsigned int)(step)) >> 17));
    step = (((unsigned int)(step) * 0x41c653ad) + 0x489e4ae1);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)));
    step = (((unsigned long)((unsigned int)(step)) >> 12) | ((unsigned long)((unsigned int)(step)) << 20));
    step = ((unsigned int)(step) + 0x2344b7f4);
    step = ((unsigned int)(step) ^ -0x3e83ce5bLL);
    step = (((unsigned long)((unsigned int)(step)) << 9) | ((unsigned long)((unsigned int)(step)) >> 23));
    step = (((unsigned int)(step) * 0x41c65455) - 0x214daf9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = (((unsigned long)((unsigned int)(step)) >> 6) | ((unsigned long)((unsigned int)(step)) << 26));
    step = ((unsigned int)(step) - 0x276e6de6);
    step = ((unsigned int)(step) ^ 0x76c90bcb);
    step = (((unsigned long)((unsigned int)(step)) << 3) | ((unsigned long)((unsigned int)(step)) >> 29));
    step = (((unsigned int)(step) * 0x41c654fd) - 0x4cc800d3);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = (((unsigned long)((unsigned int)(step)) << 1) | ((unsigned long)((unsigned int)(step)) >> 31));
    step = ((unsigned int)(step) - 0x722193c0);
    step = ((unsigned int)(step) ^ 0x2c15e5f1);
    step = (((unsigned long)((unsigned int)(step)) >> 4) | ((unsigned long)((unsigned int)(step)) << 28));
    step = (((unsigned int)(step) * 0x41c655a5) + 0x6884d953);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = (((unsigned long)((unsigned int)(step)) << 7) | ((unsigned long)((unsigned int)(step)) >> 25));
    step = ((unsigned int)(step) + 0x432b4666);
    step = ((unsigned int)(step) ^ -0x1e9d3fe9LL);
    step = (((unsigned long)((unsigned int)(step)) >> 10) | ((unsigned long)((unsigned int)(step)) << 22));
    step = (((unsigned int)(step) * 0x41c6564d) + 0x1dd1b379);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 12)));
    step = (((unsigned long)((unsigned int)(step)) << 13) | ((unsigned long)((unsigned int)(step)) >> 19));
    step = ((unsigned int)(step) - 0x787df74);
    step = ((unsigned int)(step) ^ -0x695065c3LL);
    step = (((unsigned long)((unsigned int)(step)) << 16) | ((unsigned long)((unsigned int)(step)) >> 16));
    step = (((unsigned int)(step) * 0x41c656f5) - 0x2ce17261);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 18)));
    step = (((unsigned long)((unsigned int)(step)) >> 13) | ((unsigned long)((unsigned int)(step)) << 19));
    step = ((unsigned int)(step) - 0x523b054e);
    step = ((unsigned int)(step) ^ 0x4bfc7463);
    step = (((unsigned long)((unsigned int)(step)) << 10) | ((unsigned long)((unsigned int)(step)) >> 22));
    step = (((unsigned int)(step) * 0x41c6579d) - 0x7794983b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 24)));
    step = (((unsigned long)((unsigned int)(step)) >> 7) | ((unsigned long)((unsigned int)(step)) << 25));
    step = ((unsigned int)(step) + 0x6311d4d8);
    step = ((unsigned int)(step) ^ 0x1494e89);
    step = (((unsigned long)((unsigned int)(step)) << 4) | ((unsigned long)((unsigned int)(step)) >> 28));
    step = (((unsigned int)(step) * 0x41c65845) + 0x3db841eb);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 30)));
    step = (((unsigned long)((unsigned int)(step)) >> 1) | ((unsigned long)((unsigned int)(step)) << 31));
    step = ((unsigned int)(step) + 0x185eaefe);
    step = ((unsigned int)(step) ^ -0x4969d751LL);
    step = (((unsigned long)((unsigned int)(step)) >> 3) | ((unsigned long)((unsigned int)(step)) << 29));
    step = (((unsigned int)(step) * 0x41c658ed) - 0xcfae3ef);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 5)));
    step = (((unsigned long)((unsigned int)(step)) << 6) | ((unsigned long)((unsigned int)(step)) >> 26));
    step = ((unsigned int)(step) - 0x325476dc);
    step = ((unsigned int)(step) ^ 0x6be302d5);
    step = (((unsigned long)((unsigned int)(step)) >> 9) | ((unsigned long)((unsigned int)(step)) << 23));
    step = (((unsigned int)(step) * 0x41c65995) - 0x57ae09c9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 11)));
    step = (((unsigned long)((unsigned int)(step)) << 12) | ((unsigned long)((unsigned int)(step)) >> 20));
    step = ((unsigned int)(step) - 0x7d079cb6);
    step = ((unsigned int)(step) ^ 0x212fdcfb);
    step = (((unsigned long)((unsigned int)(step)) >> 15) | ((unsigned long)((unsigned int)(step)) << 17));
    step = (((unsigned int)(step) * 0x41c65a3d) + 0x5d9ed05d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 17)));
    step = (((unsigned long)((unsigned int)(step)) >> 14) | ((unsigned long)((unsigned int)(step)) << 18));
    step = ((unsigned int)(step) + 0x38453d70);
    step = ((unsigned int)(step) ^ -0x298348dfLL);
    step = (((unsigned long)((unsigned int)(step)) << 11) | ((unsigned long)((unsigned int)(step)) >> 21));
    step = (((unsigned int)(step) * 0x41c65ae5) + 0x12ebaa83);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 23)));
    step = (((unsigned long)((unsigned int)(step)) >> 8) | ((unsigned long)((unsigned int)(step)) << 24));
    step = ((unsigned int)(step) - 0x126de86a);
    step = ((unsigned int)(step) ^ -0x74366eb9LL);
    step = (((unsigned long)((unsigned int)(step)) << 5) | ((unsigned long)((unsigned int)(step)) >> 27));
    step = (((unsigned int)(step) * 0x41c65b8d) - 0x37c77b57);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 29)));
    step = (((unsigned long)((unsigned int)(step)) >> 2) | ((unsigned long)((unsigned int)(step)) << 30));
    step = ((unsigned int)(step) - 0x5d210e44);
    step = ((unsigned int)(step) ^ 0x41166b6d);
    step = (((unsigned long)((unsigned int)(step)) >> 2) | ((unsigned long)((unsigned int)(step)) << 30));
    step = (((unsigned int)(step) * 0x41c65c35) + 0x7d855ecf);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 4)));
    step = (((unsigned long)((unsigned int)(step)) << 5) | ((unsigned long)((unsigned int)(step)) >> 27));
    step = ((unsigned int)(step) + 0x582bcbe2);
    step = ((unsigned int)(step) ^ -0x99cba6dLL);
    step = (((unsigned long)((unsigned int)(step)) >> 8) | ((unsigned long)((unsigned int)(step)) << 24));
    step = (((unsigned int)(step) * 0x41c65cdd) + 0x32d238f5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 10)));
    step = (((unsigned long)((unsigned int)(step)) << 11) | ((unsigned long)((unsigned int)(step)) >> 21));
    step = ((unsigned int)(step) + 0xd78a608);
    step = ((unsigned int)(step) ^ -0x544fe047LL);
    step = (((unsigned long)((unsigned int)(step)) >> 14) | ((unsigned long)((unsigned int)(step)) << 18));
    step = (((unsigned int)(step) * 0x41c65d85) - 0x17e0ece5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 16)));
    step = (((unsigned long)((unsigned int)(step)) >> 15) | ((unsigned long)((unsigned int)(step)) << 17));
    step = ((unsigned int)(step) - 0x3d3a7fd2);
    step = ((unsigned int)(step) ^ 0x60fcf9df);
    step = (((unsigned long)((unsigned int)(step)) << 12) | ((unsigned long)((unsigned int)(step)) >> 20));
    step = (((unsigned int)(step) * 0x41c65e2d) - 0x629412bf);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 22)));
    step = (((unsigned long)((unsigned int)(step)) >> 9) | ((unsigned long)((unsigned int)(step)) << 23));
    step = ((unsigned int)(step) + 0x78125a54);
    step = ((unsigned int)(step) ^ 0x1649d405);
    step = (((unsigned long)((unsigned int)(step)) << 6) | ((unsigned long)((unsigned int)(step)) >> 26));
    step = (((unsigned int)(step) * 0x41c65ed5) + 0x52b8c767);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 28)));
    step = (((unsigned long)((unsigned int)(step)) >> 3) | ((unsigned long)((unsigned int)(step)) << 29));
    step = ((unsigned int)(step) + 0x2d5f347a);
    step = ((unsigned int)(step) ^ -0x346951d5LL);
    step = (((unsigned long)((unsigned int)(step)) >> 1) | ((unsigned long)((unsigned int)(step)) << 31));
    step = (((unsigned int)(step) * 0x41c65f7d) + 0x805a18d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 3)));
    step = (((unsigned long)((unsigned int)(step)) << 4) | ((unsigned long)((unsigned int)(step)) >> 28));
    step = ((unsigned int)(step) - 0x1d53f160);
    step = ((unsigned int)(step) ^ -0x7f1c77afLL);
    step = (((unsigned long)((unsigned int)(step)) >> 7) | ((unsigned long)((unsigned int)(step)) << 25));
    step = (((unsigned int)(step) * 0x41c66025) - 0x42ad844d);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 9)));
    step = (((unsigned long)((unsigned int)(step)) << 10) | ((unsigned long)((unsigned int)(step)) >> 22));
    step = ((unsigned int)(step) - 0x6807173a);
    step = ((unsigned int)(step) ^ 0x36306277);
    step = (((unsigned long)((unsigned int)(step)) >> 13) | ((unsigned long)((unsigned int)(step)) << 19));
    step = (((unsigned int)(step) * 0x41c660cd) + 0x729f55d9);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 15)));
    step = (((unsigned long)((unsigned int)(step)) << 16) | ((unsigned long)((unsigned int)(step)) >> 16));
    step = ((unsigned int)(step) + 0x4d45c2ec);
    step = ((unsigned int)(step) ^ -0x1482c363LL);
    step = (((unsigned long)((unsigned int)(step)) << 13) | ((unsigned long)((unsigned int)(step)) >> 19));
    step = (((unsigned int)(step) * 0x41c66175) + 0x27ec2fff);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 21)));
    step = (((unsigned long)((unsigned int)(step)) >> 10) | ((unsigned long)((unsigned int)(step)) << 22));
    step = ((unsigned int)(step) + 0x2929d12);
    step = ((unsigned int)(step) ^ -0x5f35e93dLL);
    step = (((unsigned long)((unsigned int)(step)) << 7) | ((unsigned long)((unsigned int)(step)) >> 25));
    step = (((unsigned int)(step) * 0x41c6621d) - 0x22c6f5db);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 27)));
    step = (((unsigned long)((unsigned int)(step)) >> 4) | ((unsigned long)((unsigned int)(step)) << 28));
    step = ((unsigned int)(step) - 0x482088c8);
    step = ((unsigned int)(step) ^ 0x5616f0e9);
    step = (((unsigned long)((unsigned int)(step)) << 1) | ((unsigned long)((unsigned int)(step)) >> 31));
    step = (((unsigned int)(step) * 0x41c662c5) - 0x6d7a1bb5);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 2)));
    step = (((unsigned long)((unsigned int)(step)) << 3) | ((unsigned long)((unsigned int)(step)) >> 29));
    step = ((unsigned int)(step) + 0x6d2c515e);
    step = ((unsigned int)(step) ^ 0xb63cb0f);
    step = (((unsigned long)((unsigned int)(step)) >> 6) | ((unsigned long)((unsigned int)(step)) << 26));
    step = (((unsigned int)(step) * 0x41c6636d) + 0x47d2be71);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 8)));
    step = (((unsigned long)((unsigned int)(step)) << 9) | ((unsigned long)((unsigned int)(step)) >> 23));
    step = ((unsigned int)(step) + 0x22792b84);
    step = ((unsigned int)(step) ^ -0x3f4f5acbLL);
    step = (((unsigned long)((unsigned int)(step)) >> 12) | ((unsigned long)((unsigned int)(step)) << 20));
    step = (((unsigned int)(step) * 0x41c66415) - 0x2e06769);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 14)));
    step = (((unsigned long)((unsigned int)(step)) << 15) | ((unsigned long)((unsigned int)(step)) >> 17));
    step = ((unsigned int)(step) - 0x2839fa56);
    step = ((unsigned int)(step) ^ 0x75fd7f5b);
    step = (((unsigned long)((unsigned int)(step)) << 14) | ((unsigned long)((unsigned int)(step)) >> 18));
    step = (((unsigned int)(step) * 0x41c664bd) - 0x4d938d43);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 20)));
    step = (((unsigned long)((unsigned int)(step)) >> 11) | ((unsigned long)((unsigned int)(step)) << 21));
    step = ((unsigned int)(step) - 0x72ed2030);
    step = ((unsigned int)(step) ^ 0x2b4a5981);
    step = (((unsigned long)((unsigned int)(step)) << 8) | ((unsigned long)((unsigned int)(step)) >> 24));
    step = (((unsigned int)(step) * 0x41c66565) + 0x67b94ce3);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 26)));
    step = (((unsigned long)((unsigned int)(step)) >> 5) | ((unsigned long)((unsigned int)(step)) << 27));
    step = ((unsigned int)(step) + 0x425fb9f6);
    step = ((unsigned int)(step) ^ -0x1f68cc59LL);
    step = (((unsigned long)((unsigned int)(step)) << 2) | ((unsigned long)((unsigned int)(step)) >> 30));
    step = (((unsigned int)(step) * 0x41c6660d) + 0x1d062709);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 1)));
    step = (((unsigned long)((unsigned int)(step)) << 2) | ((unsigned long)((unsigned int)(step)) >> 30));
    step = ((unsigned int)(step) - 0x8536be4);
    step = ((unsigned int)(step) ^ -0x6a1bf233LL);
    step = (((unsigned long)((unsigned int)(step)) >> 5) | ((unsigned long)((unsigned int)(step)) << 27));
    step = (((unsigned int)(step) * 0x41c666b5) - 0x2dacfed1);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 7)));
    step = (((unsigned long)((unsigned int)(step)) << 8) | ((unsigned long)((unsigned int)(step)) >> 24));
    step = ((unsigned int)(step) - 0x530691be);
    step = ((unsigned int)(step) ^ 0x4b30e7f3);
    step = (((unsigned long)((unsigned int)(step)) >> 11) | ((unsigned long)((unsigned int)(step)) << 21));
    step = (((unsigned int)(step) * 0x41c6675d) - 0x786024ab);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 13)));
    step = (((unsigned long)((unsigned int)(step)) << 14) | ((unsigned long)((unsigned int)(step)) >> 18));
    step = ((unsigned int)(step) + 0x62464868);
    step = ((unsigned int)(step) ^ 0x7dc219);
    step = (((unsigned long)((unsigned int)(step)) << 15) | ((unsigned long)((unsigned int)(step)) >> 17));
    step = (((unsigned int)(step) * 0x41c66805) + 0x3cecb57b);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 19)));
    step = (((unsigned long)((unsigned int)(step)) >> 12) | ((unsigned long)((unsigned int)(step)) << 20));
    step = ((unsigned int)(step) + 0x1793228e);
    step = ((unsigned int)(step) ^ -0x4a3563c1LL);
    step = (((unsigned long)((unsigned int)(step)) << 9) | ((unsigned long)((unsigned int)(step)) >> 23));
    step = (((unsigned int)(step) * 0x41c668ad) - 0xdc6705f);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 25)));
    step = (((unsigned long)((unsigned int)(step)) >> 6) | ((unsigned long)((unsigned int)(step)) << 26));
    step = ((unsigned int)(step) - 0x3320034c);
    step = ((unsigned int)(step) ^ 0x6b177665);
    step = (((unsigned long)((unsigned int)(step)) << 3) | ((unsigned long)((unsigned int)(step)) >> 29));
    step = (((unsigned int)(step) * 0x41c66955) - 0x58799639);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 31)));
    step = (((unsigned long)((unsigned int)(step)) << 1) | ((unsigned long)((unsigned int)(step)) >> 31));
    step = ((unsigned int)(step) - 0x7dd32926);
    step = ((unsigned int)(step) ^ 0x2064508b);
    step = (((unsigned long)((unsigned int)(step)) >> 4) | ((unsigned long)((unsigned int)(step)) << 28));
    step = (((unsigned int)(step) * 0x41c669fd) + 0x5cd343ed);
    step = ((unsigned int)(step) ^ (unsigned int)(((unsigned long)((unsigned int)(step)) >> 6)));
    step = (((unsigned long)((unsigned int)(step)) << 7) | ((unsigned long)((unsigned int)(step)) >> 25));
    step = ((unsigned int)(step) + 0x3779b100);
    // x86-64 epilogue: restore rbp
    return (unsigned int)(((unsigned long)((unsigned int)(step)) + 256));
}

gcc -O2

3/3
chain155_buffered pass 334 lines
// glaurung: chain155_buffered @ 0x1e90
int32_t chain155_buffered(int32_t * arg0, int32_t arg1) {
    extern __attribute__((noreturn)) void __stack_chk_fail(void);
    int index;
    unsigned int carry;
    long local_40;
    unsigned char local_88[64];
    long ret;
    long var10;
    long var104;
    int var107;
    long var114;
    int var117;
    long var12;
    long var124;
    long var125;
    int var128;
    long var13;
    long var135;
    int var138;
    long var14;
    long var145;
    int var149;
    long var15;
    long var157;
    long var16;
    int var161;
    long var169;
    long var17;
    int var173;
    long var18;
    long var181;
    int var184;
    long var19;
    long var191;
    int var194;
    long var201;
    int var204;
    long var21;
    long var211;
    int var215;
    long var22;
    long var223;
    int var227;
    long var235;
    int var239;
    long var247;
    int var250;
    long var257;
    int var260;
    long var267;
    long var27;
    int var270;
    long var277;
    int var280;
    long var287;
    int var290;
    long var297;
    int var30;
    int var300;
    long var307;
    int var310;
    long var317;
    int var321;
    long var329;
    int var333;
    long var341;
    int var344;
    long var353;
    int var356;
    long var363;
    int var366;
    long var37;
    long var373;
    int var376;
    long var383;
    int var387;
    long var395;
    int var399;
    long var4;
    long var407;
    int var41;
    int var411;
    long var419;
    int var422;
    long var429;
    int var432;
    long var439;
    int var442;
    long var449;
    int var452;
    long var459;
    int var462;
    long var469;
    int var472;
    long var479;
    int var482;
    long var489;
    long var49;
    int var493;
    long var5;
    long var501;
    int var505;
    long var513;
    int var517;
    long var525;
    int var528;
    int var53;
    long var535;
    int var538;
    long var545;
    int var548;
    long var555;
    int var559;
    long var567;
    int var571;
    long var579;
    int var583;
    long var591;
    int var594;
    long var601;
    int var604;
    long var61;
    long var612;
    int var615;
    long var623;
    int var626;
    long var634;
    int var637;
    long var645;
    int var648;
    int var65;
    long var656;
    int var659;
    long var666;
    int var669;
    long var678;
    int var681;
    long var690;
    int var693;
    long var7;
    long var702;
    int var705;
    long var713;
    long var717;
    long var725;
    long var73;
    long var74;
    int var77;
    long var84;
    int var87;
    long var9;
    long var94;
    int var97;
    local_40 = (long)(0x28);
    if (((unsigned long)(15) < (unsigned long)((unsigned long)((unsigned int)((arg1 - 1)))))) {
        L_25fa: ;
        ret = 0xffffffff;
    } else {
        var4 = (long)arg0;
        if ((arg0 == 0)) {
            goto L_25fa;
        } else {
            var5 = (unsigned long)((unsigned int)(arg1));
            var7 = 0;
            var9 = var10;
            do {
                var9 = 0;
                if (((((unsigned int)(var5) == (unsigned int)(var7)) | ((long)((int)(var5)) < (long)((int)(var7)))) == 0)) {
                    var9 = (unsigned long)((unsigned int)(*(int *)((var4 + var7 * 4))));
                }
                *(int *)((&local_88[0] + (var7 * 4))) = var9;
                var12 = (var7 + 1);
                var7 = var12;
            } while ((var12 != 16));
            var13 = (unsigned long)((unsigned int)(*(int *)(&local_88[0])));
            var14 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 4))));
            var15 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 12))));
            var16 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 16))));
            var17 = (unsigned long)((unsigned int)((var13 + 0x28734fbd)));
            var18 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 24))));
            var19 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 36))));
            var21 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 48))));
            var22 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 8))));
            var27 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var14 + var17))) >> 2))) ^ var17)));
            var30 = ((((var27 << 3) | ((unsigned long)(var27) >> 29)) * 0x41c64ecd) + var15);
            var37 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var16 + (unsigned long)((unsigned int)(var30))))) >> 5))) ^ (unsigned long)((unsigned int)(var30)))));
            var41 = ((((var37 << 6) | ((unsigned long)(var37) >> 26)) * 0x41c64f2d) + var18);
            var49 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 28)))) + (unsigned long)((unsigned int)(var41))))) >> 8))) ^ (unsigned long)((unsigned int)(var41)))));
            var53 = ((((var49 << 9) | ((unsigned long)(var49) >> 23)) * 0x41c64f8d) + var19);
            var61 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 40)))) + (unsigned long)((unsigned int)(var53))))) >> 11))) ^ (unsigned long)((unsigned int)(var53)))));
            var65 = ((((var61 << 12) | ((unsigned long)(var61) >> 20)) * 0x41c64fed) + var21);
            var73 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 52)))) + (unsigned long)((unsigned int)(var65))))) >> 14))) ^ (unsigned long)((unsigned int)(var65)))));
            var74 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 60))));
            var77 = ((((var73 << 15) | ((unsigned long)(var73) >> 17)) * 0x41c6504d) + var74);
            var84 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var13 + (unsigned long)((unsigned int)(var77))))) >> 17))) ^ (unsigned long)((unsigned int)(var77)))));
            var87 = (((((unsigned long)(var84) >> 14) | (var84 << 18)) * 0x41c650ad) + var22);
            var94 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var15 + (unsigned long)((unsigned int)(var87))))) >> 20))) ^ (unsigned long)((unsigned int)(var87)))));
            var97 = (((((unsigned long)(var94) >> 11) | (var94 << 21)) * 0x41c6510d) + *(int *)((&local_88[0] + 20)));
            var104 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var18 + (unsigned long)((unsigned int)(var97))))) >> 23))) ^ (unsigned long)((unsigned int)(var97)))));
            var107 = (((((unsigned long)(var104) >> 8) | (var104 << 24)) * 0x41c6516d) + *(int *)((&local_88[0] + 32)));
            var114 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var19 + (unsigned long)((unsigned int)(var107))))) >> 26))) ^ (unsigned long)((unsigned int)(var107)))));
            var117 = (((((unsigned long)(var114) >> 5) | (var114 << 27)) * 0x41c651cd) + *(int *)((&local_88[0] + 44)));
            var124 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var21 + (unsigned long)((unsigned int)(var117))))) >> 29))) ^ (unsigned long)((unsigned int)(var117)))));
            var125 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + 56))));
            var128 = (((((unsigned long)(var124) >> 2) | (var124 << 30)) * 0x41c6522d) + var125);
            var135 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var74 + (unsigned long)((unsigned int)(var128))))) >> 1))) ^ (unsigned long)((unsigned int)(var128)))));
            var138 = ((((var135 << 2) | ((unsigned long)(var135) >> 30)) * 0x41c6528d) + var14);
            var145 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var22 + (unsigned long)((unsigned int)(var138))))) >> 4))) ^ (unsigned long)((unsigned int)(var138)))));
            var149 = ((((var145 << 5) | ((unsigned long)(var145) >> 27)) * 0x41c652ed) + var16);
            var157 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 20)))) + (unsigned long)((unsigned int)(var149))))) >> 7))) ^ (unsigned long)((unsigned int)(var149)))));
            var161 = ((((var157 << 8) | ((unsigned long)(var157) >> 24)) * 0x41c6534d) + *(int *)((&local_88[0] + 28)));
            var169 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 32)))) + (unsigned long)((unsigned int)(var161))))) >> 10))) ^ (unsigned long)((unsigned int)(var161)))));
            var173 = ((((var169 << 11) | ((unsigned long)(var169) >> 21)) * 0x41c653ad) + *(int *)((&local_88[0] + 40)));
            var181 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 44)))) + (unsigned long)((unsigned int)(var173))))) >> 13))) ^ (unsigned long)((unsigned int)(var173)))));
            var184 = ((((var181 << 14) | ((unsigned long)(var181) >> 18)) * 0x41c6540d) + *(int *)((&local_88[0] + 52)));
            var191 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var125 + (unsigned long)((unsigned int)(var184))))) >> 16))) ^ (unsigned long)((unsigned int)(var184)))));
            var194 = (((((unsigned long)(var191) >> 15) | (var191 << 17)) * 0x41c6546d) + var13);
            var201 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var14 + (unsigned long)((unsigned int)(var194))))) >> 19))) ^ (unsigned long)((unsigned int)(var194)))));
            var204 = (((((unsigned long)(var201) >> 12) | (var201 << 20)) * 0x41c654cd) + var15);
            var211 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var16 + (unsigned long)((unsigned int)(var204))))) >> 22))) ^ (unsigned long)((unsigned int)(var204)))));
            var215 = (((((unsigned long)(var211) >> 9) | (var211 << 23)) * 0x41c6552d) + var18);
            var223 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 28)))) + (unsigned long)((unsigned int)(var215))))) >> 25))) ^ (unsigned long)((unsigned int)(var215)))));
            var227 = (((((unsigned long)(var223) >> 6) | (var223 << 26)) * 0x41c6558d) + var19);
            var235 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 40)))) + (unsigned long)((unsigned int)(var227))))) >> 28))) ^ (unsigned long)((unsigned int)(var227)))));
            var239 = (((((unsigned long)(var235) >> 3) | (var235 << 29)) * 0x41c655ed) + var21);
            var247 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 52)))) + (unsigned long)((unsigned int)(var239))))) >> 31))) ^ (unsigned long)((unsigned int)(var239)))));
            var250 = ((((var247 << 1) | ((unsigned long)(var247) >> 31)) * 0x41c6564d) + var74);
            var257 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var13 + (unsigned long)((unsigned int)(var250))))) >> 3))) ^ (unsigned long)((unsigned int)(var250)))));
            var260 = ((((var257 << 4) | ((unsigned long)(var257) >> 28)) * 0x41c656ad) + var22);
            var267 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var15 + (unsigned long)((unsigned int)(var260))))) >> 6))) ^ (unsigned long)((unsigned int)(var260)))));
            var270 = ((((var267 << 7) | ((unsigned long)(var267) >> 25)) * 0x41c6570d) + *(int *)((&local_88[0] + 20)));
            var277 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var18 + (unsigned long)((unsigned int)(var270))))) >> 9))) ^ (unsigned long)((unsigned int)(var270)))));
            var280 = ((((var277 << 10) | ((unsigned long)(var277) >> 22)) * 0x41c6576d) + *(int *)((&local_88[0] + 32)));
            var287 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var19 + (unsigned long)((unsigned int)(var280))))) >> 12))) ^ (unsigned long)((unsigned int)(var280)))));
            var290 = ((((var287 << 13) | ((unsigned long)(var287) >> 19)) * 0x41c657cd) + *(int *)((&local_88[0] + 44)));
            var297 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var21 + (unsigned long)((unsigned int)(var290))))) >> 15))) ^ (unsigned long)((unsigned int)(var290)))));
            var300 = ((((var297 << 16) | ((unsigned long)(var297) >> 16)) * 0x41c6582d) + var125);
            var307 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var74 + (unsigned long)((unsigned int)(var300))))) >> 18))) ^ (unsigned long)((unsigned int)(var300)))));
            var310 = (((((unsigned long)(var307) >> 13) | (var307 << 19)) * 0x41c6588d) + var14);
            var317 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var22 + (unsigned long)((unsigned int)(var310))))) >> 21))) ^ (unsigned long)((unsigned int)(var310)))));
            var321 = (((((unsigned long)(var317) >> 10) | (var317 << 22)) * 0x41c658ed) + var16);
            var329 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 20)))) + (unsigned long)((unsigned int)(var321))))) >> 24))) ^ (unsigned long)((unsigned int)(var321)))));
            var333 = (((((unsigned long)(var329) >> 7) | (var329 << 25)) * 0x41c6594d) + *(int *)((&local_88[0] + 28)));
            var341 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 32)))) + (unsigned long)((unsigned int)(var333))))) >> 27))) ^ (unsigned long)((unsigned int)(var333)))));
            var344 = (((((unsigned long)(var341) >> 4) | (var341 << 28)) * 0x41c659ad) + *(int *)((&local_88[0] + 40)));
            var353 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 44)))) + (unsigned long)((unsigned int)(var344))))) >> 30))) ^ (unsigned long)((unsigned int)(var344)))));
            var356 = (((((unsigned long)(var353) >> 1) | (var353 << 31)) * 0x41c65a0d) + *(int *)((&local_88[0] + 52)));
            var363 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var125 + (unsigned long)((unsigned int)(var356))))) >> 2))) ^ (unsigned long)((unsigned int)(var356)))));
            var366 = ((((var363 << 3) | ((unsigned long)(var363) >> 29)) * 0x41c65a6d) + var13);
            var373 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var14 + (unsigned long)((unsigned int)(var366))))) >> 5))) ^ (unsigned long)((unsigned int)(var366)))));
            var376 = ((((var373 << 6) | ((unsigned long)(var373) >> 26)) * 0x41c65acd) + var15);
            var383 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var16 + (unsigned long)((unsigned int)(var376))))) >> 8))) ^ (unsigned long)((unsigned int)(var376)))));
            var387 = ((((var383 << 9) | ((unsigned long)(var383) >> 23)) * 0x41c65b2d) + var18);
            var395 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 28)))) + (unsigned long)((unsigned int)(var387))))) >> 11))) ^ (unsigned long)((unsigned int)(var387)))));
            var399 = ((((var395 << 12) | ((unsigned long)(var395) >> 20)) * 0x41c65b8d) + var19);
            var407 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 40)))) + (unsigned long)((unsigned int)(var399))))) >> 14))) ^ (unsigned long)((unsigned int)(var399)))));
            var411 = ((((var407 << 15) | ((unsigned long)(var407) >> 17)) * 0x41c65bed) + var21);
            var419 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 52)))) + (unsigned long)((unsigned int)(var411))))) >> 17))) ^ (unsigned long)((unsigned int)(var411)))));
            var422 = (((((unsigned long)(var419) >> 14) | (var419 << 18)) * 0x41c65c4d) + var74);
            var429 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var13 + (unsigned long)((unsigned int)(var422))))) >> 20))) ^ (unsigned long)((unsigned int)(var422)))));
            var432 = (((((unsigned long)(var429) >> 11) | (var429 << 21)) * 0x41c65cad) + var22);
            var439 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var15 + (unsigned long)((unsigned int)(var432))))) >> 23))) ^ (unsigned long)((unsigned int)(var432)))));
            var442 = (((((unsigned long)(var439) >> 8) | (var439 << 24)) * 0x41c65d0d) + *(int *)((&local_88[0] + 20)));
            var449 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var18 + (unsigned long)((unsigned int)(var442))))) >> 26))) ^ (unsigned long)((unsigned int)(var442)))));
            var452 = (((((unsigned long)(var449) >> 5) | (var449 << 27)) * 0x41c65d6d) + *(int *)((&local_88[0] + 32)));
            var459 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var19 + (unsigned long)((unsigned int)(var452))))) >> 29))) ^ (unsigned long)((unsigned int)(var452)))));
            var462 = (((((unsigned long)(var459) >> 2) | (var459 << 30)) * 0x41c65dcd) + *(int *)((&local_88[0] + 44)));
            var469 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var21 + (unsigned long)((unsigned int)(var462))))) >> 1))) ^ (unsigned long)((unsigned int)(var462)))));
            var472 = ((((var469 << 2) | ((unsigned long)(var469) >> 30)) * 0x41c65e2d) + var125);
            var479 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var74 + (unsigned long)((unsigned int)(var472))))) >> 4))) ^ (unsigned long)((unsigned int)(var472)))));
            var482 = ((((var479 << 5) | ((unsigned long)(var479) >> 27)) * 0x41c65e8d) + var14);
            var489 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var22 + (unsigned long)((unsigned int)(var482))))) >> 7))) ^ (unsigned long)((unsigned int)(var482)))));
            var493 = ((((var489 << 8) | ((unsigned long)(var489) >> 24)) * 0x41c65eed) + var16);
            var501 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 20)))) + (unsigned long)((unsigned int)(var493))))) >> 10))) ^ (unsigned long)((unsigned int)(var493)))));
            var505 = ((((var501 << 11) | ((unsigned long)(var501) >> 21)) * 0x41c65f4d) + *(int *)((&local_88[0] + 28)));
            var513 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 32)))) + (unsigned long)((unsigned int)(var505))))) >> 13))) ^ (unsigned long)((unsigned int)(var505)))));
            var517 = ((((var513 << 14) | ((unsigned long)(var513) >> 18)) * 0x41c65fad) + *(int *)((&local_88[0] + 40)));
            var525 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 44)))) + (unsigned long)((unsigned int)(var517))))) >> 16))) ^ (unsigned long)((unsigned int)(var517)))));
            var528 = (((((unsigned long)(var525) >> 15) | (var525 << 17)) * 0x41c6600d) + *(int *)((&local_88[0] + 52)));
            var535 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var125 + (unsigned long)((unsigned int)(var528))))) >> 19))) ^ (unsigned long)((unsigned int)(var528)))));
            var538 = (((((unsigned long)(var535) >> 12) | (var535 << 20)) * 0x41c6606d) + var13);
            var545 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var14 + (unsigned long)((unsigned int)(var538))))) >> 22))) ^ (unsigned long)((unsigned int)(var538)))));
            var548 = (((((unsigned long)(var545) >> 9) | (var545 << 23)) * 0x41c660cd) + var15);
            var555 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var16 + (unsigned long)((unsigned int)(var548))))) >> 25))) ^ (unsigned long)((unsigned int)(var548)))));
            var559 = (((((unsigned long)(var555) >> 6) | (var555 << 26)) * 0x41c6612d) + var18);
            var567 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 28)))) + (unsigned long)((unsigned int)(var559))))) >> 28))) ^ (unsigned long)((unsigned int)(var559)))));
            var571 = (((((unsigned long)(var567) >> 3) | (var567 << 29)) * 0x41c6618d) + var19);
            var579 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 40)))) + (unsigned long)((unsigned int)(var571))))) >> 31))) ^ (unsigned long)((unsigned int)(var571)))));
            var583 = ((((var579 << 1) | ((unsigned long)(var579) >> 31)) * 0x41c661ed) + var21);
            var591 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 52)))) + (unsigned long)((unsigned int)(var583))))) >> 3))) ^ (unsigned long)((unsigned int)(var583)))));
            var594 = ((((var591 << 4) | ((unsigned long)(var591) >> 28)) * 0x41c6624d) + var74);
            var601 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var13 + (unsigned long)((unsigned int)(var594))))) >> 6))) ^ (unsigned long)((unsigned int)(var594)))));
            var604 = ((((var601 << 7) | ((unsigned long)(var601) >> 25)) * 0x41c662ad) + var22);
            var612 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var15 + (unsigned long)((unsigned int)(var604))))) >> 9))) ^ (unsigned long)((unsigned int)(var604)))));
            var615 = ((((var612 << 10) | ((unsigned long)(var612) >> 22)) * 0x41c6630d) + *(int *)((&local_88[0] + 20)));
            var623 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var18 + (unsigned long)((unsigned int)(var615))))) >> 12))) ^ (unsigned long)((unsigned int)(var615)))));
            var626 = ((((var623 << 13) | ((unsigned long)(var623) >> 19)) * 0x41c6636d) + *(int *)((&local_88[0] + 32)));
            var634 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var19 + (unsigned long)((unsigned int)(var626))))) >> 15))) ^ (unsigned long)((unsigned int)(var626)))));
            var637 = ((((var634 << 16) | ((unsigned long)(var634) >> 16)) * 0x41c663cd) + *(int *)((&local_88[0] + 44)));
            var645 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var21 + (unsigned long)((unsigned int)(var637))))) >> 18))) ^ (unsigned long)((unsigned int)(var637)))));
            var648 = (((((unsigned long)(var645) >> 13) | (var645 << 19)) * 0x41c6642d) + var125);
            var656 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var74 + (unsigned long)((unsigned int)(var648))))) >> 21))) ^ (unsigned long)((unsigned int)(var648)))));
            var659 = (((((unsigned long)(var656) >> 10) | (var656 << 22)) * 0x41c6648d) + var14);
            var666 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var22 + (unsigned long)((unsigned int)(var659))))) >> 24))) ^ (unsigned long)((unsigned int)(var659)))));
            var669 = (var16 + ((((unsigned long)(var666) >> 7) | (var666 << 25)) * 0x41c664ed));
            var678 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(*(int *)((&local_88[0] + 20)))) + (unsigned long)((unsigned int)(var669))))) >> 27))) ^ (unsigned long)((unsigned int)(var669)))));
            var681 = (((((unsigned long)(var678) >> 4) | (var678 << 28)) * 0x41c6654d) + *(int *)((&local_88[0] + 28)));
            var690 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var681)) + *(int *)((&local_88[0] + 32))))) >> 30))) ^ (unsigned long)((unsigned int)(var681)))));
            var693 = (((((unsigned long)(var690) >> 1) | (var690 << 31)) * 0x41c665ad) + *(int *)((&local_88[0] + 40)));
            var702 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var693)) + *(int *)((&local_88[0] + 44))))) >> 2))) ^ (unsigned long)((unsigned int)(var693)))));
            var705 = ((((var702 << 3) | ((unsigned long)(var702) >> 29)) * 0x41c6660d) + *(int *)((&local_88[0] + 52)));
            var713 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var125 + (unsigned long)((unsigned int)(var705))))) >> 5))) ^ (unsigned long)((unsigned int)(var705)))));
            var717 = ((var713 << 6) | ((unsigned long)(var713) >> 26));
            index = 0;
            while (1) {
                *(int *)((var4 + index * 4)) = ((unsigned long)((unsigned int)((var13 ^ var717))) & 0x7fffffff);
                index = (index + 1);
                var725 = (unsigned long)((unsigned int)(((var717 * 0x19660d) + 0x3c6ef35f)));
                if (((((unsigned int)(var5) == (unsigned int)(index)) | ((long)((int)(var5)) < (long)(index))) != 0)) {
                    break;
                }
                var13 = (unsigned long)((unsigned int)(*(int *)((&local_88[0] + (index * 4)))));
                var717 = var725;
            }
            ret = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((var725 & 0xffffff))) + 192)));
        }
    }
    if ((local_40 != 0x28)) {
        __stack_chk_fail();
    }
    // x86-64 epilogue: tear down frame
    return ret;
}
chain155_scalar pass 325 lines
// glaurung: chain155_scalar @ 0x1120
uint32_t chain155_scalar(uint32_t arg0) {
    unsigned int acc;
    long var10;
    long var100;
    long var105;
    long var109;
    long var115;
    long var120;
    int var123;
    long var130;
    long var135;
    long var139;
    long var145;
    long var15;
    long var150;
    long var154;
    long var160;
    long var165;
    int var168;
    long var175;
    int var18;
    long var180;
    int var183;
    long var190;
    long var195;
    long var199;
    long var205;
    long var210;
    long var214;
    long var220;
    long var225;
    int var228;
    long var235;
    long var240;
    long var244;
    long var25;
    long var250;
    long var255;
    long var259;
    long var265;
    long var270;
    int var273;
    long var280;
    long var285;
    int var288;
    long var295;
    long var30;
    long var300;
    long var304;
    long var310;
    long var315;
    int var318;
    long var325;
    int var33;
    long var330;
    int var333;
    long var340;
    long var345;
    long var349;
    long var355;
    long var360;
    long var364;
    long var370;
    long var375;
    int var378;
    long var385;
    long var390;
    int var393;
    long var4;
    long var40;
    long var400;
    long var405;
    long var409;
    long var415;
    long var420;
    int var423;
    long var430;
    long var435;
    int var438;
    long var445;
    long var45;
    long var450;
    long var454;
    long var460;
    long var465;
    long var469;
    long var475;
    long var480;
    int var483;
    long var49;
    long var490;
    long var495;
    long var499;
    long var505;
    long var510;
    long var514;
    long var520;
    long var525;
    int var528;
    long var535;
    long var540;
    int var543;
    long var55;
    long var550;
    long var555;
    long var559;
    long var565;
    long var570;
    long var574;
    long var580;
    long var585;
    int var588;
    long var595;
    long var60;
    long var600;
    long var604;
    long var610;
    long var615;
    long var619;
    long var625;
    int var63;
    long var630;
    int var633;
    long var640;
    long var645;
    int var648;
    long var655;
    long var660;
    long var664;
    long var670;
    long var675;
    int var678;
    long var685;
    long var690;
    int var693;
    long var70;
    long var700;
    long var705;
    long var709;
    long var715;
    long var720;
    long var724;
    long var730;
    long var735;
    int var738;
    long var745;
    long var75;
    long var750;
    int var753;
    long var760;
    long var765;
    long var769;
    long var775;
    int var78;
    long var780;
    int var783;
    long var790;
    long var795;
    int var798;
    long var85;
    long var90;
    long var94;
    var4 = (unsigned long)((unsigned int)((((unsigned long)((unsigned int)((arg0 ^ -0x61c88647LL))) * 0x41c64e6d) - 0x61c8864f)));
    var10 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var4)) >> 2))) ^ var4)));
    var15 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var10 << 3) | ((unsigned long)(var10) >> 29)) + 0x78dde6c4))) ^ 0x17156075)));
    var18 = (((((unsigned long)(var15) >> 6) | (var15 << 26)) * 0x41c64f15) + 0x538453d7);
    var25 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var18)) >> 8))) ^ (unsigned long)((unsigned int)(var18)))));
    var30 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var25 << 9) | ((unsigned long)(var25) >> 23)) + 0x2e2ac0ea))) ^ -0x339dc565LL)));
    var33 = (((((unsigned long)(var30) >> 12) | (var30 << 20)) * 0x41c64fbd) + 0x8d12dfd);
    var40 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var33)) >> 14))) ^ (unsigned long)((unsigned int)(var33)))));
    var45 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var40 << 15) | ((unsigned long)(var40) >> 17)) - 0x1c8864f0))) ^ -0x7e50eb3fLL)));
    var49 = (unsigned long)((unsigned int)(((((var45 << 14) | ((unsigned long)(var45) >> 18)) * 0x41c65065) - 0x41e1f7dd)));
    var55 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var49)) >> 20))) ^ var49)));
    var60 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var55) >> 11) | (var55 << 21)) - 0x673b8aca))) ^ 0x36fbeee7)));
    var63 = ((((var60 << 8) | ((unsigned long)(var60) >> 24)) * 0x41c6510d) + 0x736ae249);
    var70 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var63)) >> 26))) ^ (unsigned long)((unsigned int)(var63)))));
    var75 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var70) >> 5) | (var70 << 27)) + 0x4e114f5c))) ^ -0x13b736f3LL)));
    var78 = ((((var75 << 2) | ((unsigned long)(var75) >> 30)) * 0x41c651b5) + 0x28b7bc6f);
    var85 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var78)) >> 1))) ^ (unsigned long)((unsigned int)(var78)))));
    var90 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var85 << 2) | ((unsigned long)(var85) >> 30)) + 0x35e2982))) ^ -0x5e6a5ccdLL)));
    var94 = (unsigned long)((unsigned int)((((((unsigned long)(var90) >> 5) | (var90 << 27)) * 0x41c6525d) - 0x21fb696b)));
    var100 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var94)) >> 7))) ^ var94)));
    var105 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var100 << 8) | ((unsigned long)(var100) >> 24)) - 0x4754fc58))) ^ 0x56e27d59)));
    var109 = (unsigned long)((unsigned int)((((((unsigned long)(var105) >> 11) | (var105 << 21)) * 0x41c65305) - 0x6cae8f45)));
    var115 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var109)) >> 13))) ^ var109)));
    var120 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var115 << 14) | ((unsigned long)(var115) >> 18)) + 0x6df7ddce))) ^ 0xc2f577f)));
    var123 = ((((var120 << 15) | ((unsigned long)(var120) >> 17)) * 0x41c653ad) + 0x489e4ae1);
    var130 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var123)) >> 19))) ^ (unsigned long)((unsigned int)(var123)))));
    var135 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var130) >> 12) | (var130 << 20)) + 0x2344b7f4))) ^ -0x3e83ce5bLL)));
    var139 = (unsigned long)((unsigned int)(((((var135 << 9) | ((unsigned long)(var135) >> 23)) * 0x41c65455) - 0x214daf9)));
    var145 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var139)) >> 25))) ^ var139)));
    var150 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var145) >> 6) | (var145 << 26)) - 0x276e6de6))) ^ 0x76c90bcb)));
    var154 = (unsigned long)((unsigned int)(((((var150 << 3) | ((unsigned long)(var150) >> 29)) * 0x41c654fd) - 0x4cc800d3)));
    var160 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var154)) >> 31))) ^ var154)));
    var165 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var160 << 1) | ((unsigned long)(var160) >> 31)) - 0x722193c0))) ^ 0x2c15e5f1)));
    var168 = (((((unsigned long)(var165) >> 4) | (var165 << 28)) * 0x41c655a5) + 0x6884d953);
    var175 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var168)) >> 6))) ^ (unsigned long)((unsigned int)(var168)))));
    var180 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var175 << 7) | ((unsigned long)(var175) >> 25)) + 0x432b4666))) ^ -0x1e9d3fe9LL)));
    var183 = (((((unsigned long)(var180) >> 10) | (var180 << 22)) * 0x41c6564d) + 0x1dd1b379);
    var190 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var183)) >> 12))) ^ (unsigned long)((unsigned int)(var183)))));
    var195 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var190 << 13) | ((unsigned long)(var190) >> 19)) - 0x787df74))) ^ -0x695065c3LL)));
    var199 = (unsigned long)((unsigned int)(((((var195 << 16) | ((unsigned long)(var195) >> 16)) * 0x41c656f5) - 0x2ce17261)));
    var205 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var199)) >> 18))) ^ var199)));
    var210 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var205) >> 13) | (var205 << 19)) - 0x523b054e))) ^ 0x4bfc7463)));
    var214 = (unsigned long)((unsigned int)(((((var210 << 10) | ((unsigned long)(var210) >> 22)) * 0x41c6579d) - 0x7794983b)));
    var220 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var214)) >> 24))) ^ var214)));
    var225 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var220) >> 7) | (var220 << 25)) + 0x6311d4d8))) ^ 0x1494e89)));
    var228 = ((((var225 << 4) | ((unsigned long)(var225) >> 28)) * 0x41c65845) + 0x3db841eb);
    var235 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var228)) >> 30))) ^ (unsigned long)((unsigned int)(var228)))));
    var240 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var235) >> 1) | (var235 << 31)) + 0x185eaefe))) ^ -0x4969d751LL)));
    var244 = (unsigned long)((unsigned int)((((((unsigned long)(var240) >> 3) | (var240 << 29)) * 0x41c658ed) - 0xcfae3ef)));
    var250 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var244)) >> 5))) ^ var244)));
    var255 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var250 << 6) | ((unsigned long)(var250) >> 26)) - 0x325476dc))) ^ 0x6be302d5)));
    var259 = (unsigned long)((unsigned int)((((((unsigned long)(var255) >> 9) | (var255 << 23)) * 0x41c65995) - 0x57ae09c9)));
    var265 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var259)) >> 11))) ^ var259)));
    var270 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var265 << 12) | ((unsigned long)(var265) >> 20)) - 0x7d079cb6))) ^ 0x212fdcfb)));
    var273 = (((((unsigned long)(var270) >> 15) | (var270 << 17)) * 0x41c65a3d) + 0x5d9ed05d);
    var280 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var273)) >> 17))) ^ (unsigned long)((unsigned int)(var273)))));
    var285 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var280) >> 14) | (var280 << 18)) + 0x38453d70))) ^ -0x298348dfLL)));
    var288 = ((((var285 << 11) | ((unsigned long)(var285) >> 21)) * 0x41c65ae5) + 0x12ebaa83);
    var295 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var288)) >> 23))) ^ (unsigned long)((unsigned int)(var288)))));
    var300 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var295) >> 8) | (var295 << 24)) - 0x126de86a))) ^ -0x74366eb9LL)));
    var304 = (unsigned long)((unsigned int)(((((var300 << 5) | ((unsigned long)(var300) >> 27)) * 0x41c65b8d) - 0x37c77b57)));
    var310 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var304)) >> 29))) ^ var304)));
    var315 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var310) >> 2) | (var310 << 30)) - 0x5d210e44))) ^ 0x41166b6d)));
    var318 = (((((unsigned long)(var315) >> 2) | (var315 << 30)) * 0x41c65c35) + 0x7d855ecf);
    var325 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var318)) >> 4))) ^ (unsigned long)((unsigned int)(var318)))));
    var330 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var325 << 5) | ((unsigned long)(var325) >> 27)) + 0x582bcbe2))) ^ -0x99cba6dLL)));
    var333 = (((((unsigned long)(var330) >> 8) | (var330 << 24)) * 0x41c65cdd) + 0x32d238f5);
    var340 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var333)) >> 10))) ^ (unsigned long)((unsigned int)(var333)))));
    var345 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var340 << 11) | ((unsigned long)(var340) >> 21)) + 0xd78a608))) ^ -0x544fe047LL)));
    var349 = (unsigned long)((unsigned int)((((((unsigned long)(var345) >> 14) | (var345 << 18)) * 0x41c65d85) - 0x17e0ece5)));
    var355 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var349)) >> 16))) ^ var349)));
    var360 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var355) >> 15) | (var355 << 17)) - 0x3d3a7fd2))) ^ 0x60fcf9df)));
    var364 = (unsigned long)((unsigned int)(((((var360 << 12) | ((unsigned long)(var360) >> 20)) * 0x41c65e2d) - 0x629412bf)));
    var370 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var364)) >> 22))) ^ var364)));
    var375 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var370) >> 9) | (var370 << 23)) + 0x78125a54))) ^ 0x1649d405)));
    var378 = ((((var375 << 6) | ((unsigned long)(var375) >> 26)) * 0x41c65ed5) + 0x52b8c767);
    var385 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var378)) >> 28))) ^ (unsigned long)((unsigned int)(var378)))));
    var390 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var385) >> 3) | (var385 << 29)) + 0x2d5f347a))) ^ -0x346951d5LL)));
    var393 = (((((unsigned long)(var390) >> 1) | (var390 << 31)) * 0x41c65f7d) + 0x805a18d);
    var400 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var393)) >> 3))) ^ (unsigned long)((unsigned int)(var393)))));
    var405 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var400 << 4) | ((unsigned long)(var400) >> 28)) - 0x1d53f160))) ^ -0x7f1c77afLL)));
    var409 = (unsigned long)((unsigned int)((((((unsigned long)(var405) >> 7) | (var405 << 25)) * 0x41c66025) - 0x42ad844d)));
    var415 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var409)) >> 9))) ^ var409)));
    var420 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var415 << 10) | ((unsigned long)(var415) >> 22)) - 0x6807173a))) ^ 0x36306277)));
    var423 = (((((unsigned long)(var420) >> 13) | (var420 << 19)) * 0x41c660cd) + 0x729f55d9);
    var430 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var423)) >> 15))) ^ (unsigned long)((unsigned int)(var423)))));
    var435 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var430 << 16) | ((unsigned long)(var430) >> 16)) + 0x4d45c2ec))) ^ -0x1482c363LL)));
    var438 = ((((var435 << 13) | ((unsigned long)(var435) >> 19)) * 0x41c66175) + 0x27ec2fff);
    var445 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var438)) >> 21))) ^ (unsigned long)((unsigned int)(var438)))));
    var450 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var445) >> 10) | (var445 << 22)) + 0x2929d12))) ^ -0x5f35e93dLL)));
    var454 = (unsigned long)((unsigned int)(((((var450 << 7) | ((unsigned long)(var450) >> 25)) * 0x41c6621d) - 0x22c6f5db)));
    var460 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var454)) >> 27))) ^ var454)));
    var465 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var460) >> 4) | (var460 << 28)) - 0x482088c8))) ^ 0x5616f0e9)));
    var469 = (unsigned long)((unsigned int)(((((var465 << 1) | ((unsigned long)(var465) >> 31)) * 0x41c662c5) - 0x6d7a1bb5)));
    var475 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var469)) >> 2))) ^ var469)));
    var480 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var475 << 3) | ((unsigned long)(var475) >> 29)) + 0x6d2c515e))) ^ 0xb63cb0f)));
    var483 = (((((unsigned long)(var480) >> 6) | (var480 << 26)) * 0x41c6636d) + 0x47d2be71);
    var490 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var483)) >> 8))) ^ (unsigned long)((unsigned int)(var483)))));
    var495 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var490 << 9) | ((unsigned long)(var490) >> 23)) + 0x22792b84))) ^ -0x3f4f5acbLL)));
    var499 = (unsigned long)((unsigned int)((((((unsigned long)(var495) >> 12) | (var495 << 20)) * 0x41c66415) - 0x2e06769)));
    var505 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var499)) >> 14))) ^ var499)));
    var510 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var505 << 15) | ((unsigned long)(var505) >> 17)) - 0x2839fa56))) ^ 0x75fd7f5b)));
    var514 = (unsigned long)((unsigned int)(((((var510 << 14) | ((unsigned long)(var510) >> 18)) * 0x41c664bd) - 0x4d938d43)));
    var520 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var514)) >> 20))) ^ var514)));
    var525 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var520) >> 11) | (var520 << 21)) - 0x72ed2030))) ^ 0x2b4a5981)));
    var528 = ((((var525 << 8) | ((unsigned long)(var525) >> 24)) * 0x41c66565) + 0x67b94ce3);
    var535 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var528)) >> 26))) ^ (unsigned long)((unsigned int)(var528)))));
    var540 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var535) >> 5) | (var535 << 27)) + 0x425fb9f6))) ^ -0x1f68cc59LL)));
    var543 = ((((var540 << 2) | ((unsigned long)(var540) >> 30)) * 0x41c6660d) + 0x1d062709);
    var550 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var543)) >> 1))) ^ (unsigned long)((unsigned int)(var543)))));
    var555 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var550 << 2) | ((unsigned long)(var550) >> 30)) - 0x8536be4))) ^ -0x6a1bf233LL)));
    var559 = (unsigned long)((unsigned int)((((((unsigned long)(var555) >> 5) | (var555 << 27)) * 0x41c666b5) - 0x2dacfed1)));
    var565 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var559)) >> 7))) ^ var559)));
    var570 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var565 << 8) | ((unsigned long)(var565) >> 24)) - 0x530691be))) ^ 0x4b30e7f3)));
    var574 = (unsigned long)((unsigned int)((((((unsigned long)(var570) >> 11) | (var570 << 21)) * 0x41c6675d) - 0x786024ab)));
    var580 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var574)) >> 13))) ^ var574)));
    var585 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var580 << 14) | ((unsigned long)(var580) >> 18)) + 0x62464868))) ^ 0x7dc219)));
    var588 = ((((var585 << 15) | ((unsigned long)(var585) >> 17)) * 0x41c66805) + 0x3cecb57b);
    var595 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var588)) >> 19))) ^ (unsigned long)((unsigned int)(var588)))));
    var600 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var595) >> 12) | (var595 << 20)) + 0x1793228e))) ^ -0x4a3563c1LL)));
    var604 = (unsigned long)((unsigned int)(((((var600 << 9) | ((unsigned long)(var600) >> 23)) * 0x41c668ad) - 0xdc6705f)));
    var610 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var604)) >> 25))) ^ var604)));
    var615 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var610) >> 6) | (var610 << 26)) - 0x3320034c))) ^ 0x6b177665)));
    var619 = (unsigned long)((unsigned int)(((((var615 << 3) | ((unsigned long)(var615) >> 29)) * 0x41c66955) - 0x58799639)));
    var625 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var619)) >> 31))) ^ var619)));
    var630 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var625 << 1) | ((unsigned long)(var625) >> 31)) - 0x7dd32926))) ^ 0x2064508b)));
    var633 = (((((unsigned long)(var630) >> 4) | (var630 << 28)) * 0x41c669fd) + 0x5cd343ed);
    var640 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var633)) >> 6))) ^ (unsigned long)((unsigned int)(var633)))));
    var645 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var640 << 7) | ((unsigned long)(var640) >> 25)) + 0x3779b100))) ^ -0x2a4ed54fLL)));
    var648 = (((((unsigned long)(var645) >> 10) | (var645 << 22)) * 0x41c66aa5) + 0x12201e13);
    var655 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var648)) >> 12))) ^ (unsigned long)((unsigned int)(var648)))));
    var660 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var655 << 13) | ((unsigned long)(var655) >> 19)) - 0x133974da))) ^ -0x7501fb29LL)));
    var664 = (unsigned long)((unsigned int)(((((var660 << 16) | ((unsigned long)(var660) >> 16)) * 0x41c66b4d) - 0x389307c7)));
    var670 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var664)) >> 18))) ^ var664)));
    var675 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var670) >> 13) | (var670 << 19)) - 0x5dec9ab4))) ^ 0x404adefd)));
    var678 = ((((var675 << 10) | ((unsigned long)(var675) >> 22)) * 0x41c66bf5) + 0x7cb9d25f);
    var685 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var678)) >> 24))) ^ (unsigned long)((unsigned int)(var678)))));
    var690 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var685) >> 7) | (var685 << 25)) + 0x57603f72))) ^ -0xa6846ddLL)));
    var693 = ((((var690 << 4) | ((unsigned long)(var690) >> 28)) * 0x41c66c9d) + 0x3206ac85);
    var700 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var693)) >> 30))) ^ (unsigned long)((unsigned int)(var693)))));
    var705 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var700) >> 1) | (var700 << 31)) + 0xcad1998))) ^ -0x551b6cb7LL)));
    var709 = (unsigned long)((unsigned int)((((((unsigned long)(var705) >> 3) | (var705 << 29)) * 0x41c66d45) - 0x18ac7955)));
    var715 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var709)) >> 5))) ^ var709)));
    var720 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var715 << 6) | ((unsigned long)(var715) >> 26)) - 0x3e060c42))) ^ 0x60316d6f)));
    var724 = (unsigned long)((unsigned int)((((((unsigned long)(var720) >> 9) | (var720 << 23)) * 0x41c66ded) - 0x635f9f2f)));
    var730 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var724)) >> 11))) ^ var724)));
    var735 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var730 << 12) | ((unsigned long)(var730) >> 20)) + 0x7746cde4))) ^ 0x157e4795)));
    var738 = (((((unsigned long)(var735) >> 15) | (var735 << 17)) * 0x41c66e95) + 0x51ed3af7);
    var745 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var738)) >> 17))) ^ (unsigned long)((unsigned int)(var738)))));
    var750 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var745) >> 14) | (var745 << 18)) + 0x2c93a80a))) ^ -0x3534de45LL)));
    var753 = ((((var750 << 11) | ((unsigned long)(var750) >> 21)) * 0x41c66f3d) + 0x73a151d);
    var760 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var753)) >> 23))) ^ (unsigned long)((unsigned int)(var753)))));
    var765 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var760) >> 8) | (var760 << 24)) - 0x1e1f7dd0))) ^ -0x7fe8041fLL)));
    var769 = (unsigned long)((unsigned int)(((((var765 << 5) | ((unsigned long)(var765) >> 27)) * 0x41c66fe5) - 0x437910bd)));
    var775 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var769)) >> 29))) ^ var769)));
    var780 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var775) >> 2) | (var775 << 30)) - 0x68d2a3aa))) ^ 0x3564d607)));
    var783 = (((((unsigned long)(var780) >> 2) | (var780 << 30)) * 0x41c6708d) + 0x71d3c969);
    var790 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var783)) >> 4))) ^ (unsigned long)((unsigned int)(var783)))));
    var795 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var790 << 5) | ((unsigned long)(var790) >> 27)) + 0x4c7a367c))) ^ -0x154e4fd3LL)));
    var798 = (((((unsigned long)(var795) >> 8) | (var795 << 24)) * 0x41c67135) + 0x2720a38f);
    return (unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var798)) >> 10))) ^ (unsigned long)((unsigned int)(var798))))) + 320));
}
chain155_signed pass 260 lines
// glaurung: chain155_signed @ 0x18a0
int32_t chain155_signed(int32_t arg0) {
    long var103;
    long var107;
    long var113;
    long var118;
    int var121;
    long var128;
    long var13;
    long var133;
    long var137;
    long var143;
    long var148;
    long var152;
    long var158;
    int var16;
    long var163;
    int var166;
    long var173;
    long var178;
    int var181;
    long var188;
    long var193;
    long var197;
    long var2;
    long var203;
    long var208;
    long var212;
    long var218;
    long var223;
    int var226;
    long var23;
    long var233;
    long var238;
    long var242;
    long var248;
    long var253;
    long var257;
    long var263;
    long var268;
    int var271;
    long var278;
    long var28;
    long var283;
    int var286;
    long var293;
    long var298;
    long var302;
    long var308;
    int var31;
    long var313;
    int var316;
    long var323;
    long var328;
    int var331;
    long var338;
    long var343;
    long var347;
    long var353;
    long var358;
    long var362;
    long var368;
    long var373;
    int var376;
    long var38;
    long var383;
    long var388;
    int var391;
    long var398;
    long var403;
    long var407;
    long var413;
    long var418;
    int var421;
    long var428;
    long var43;
    long var433;
    int var436;
    long var443;
    long var448;
    long var452;
    long var458;
    long var463;
    long var467;
    long var47;
    long var473;
    long var478;
    int var481;
    long var488;
    long var493;
    long var497;
    long var503;
    long var508;
    long var512;
    long var518;
    long var523;
    int var526;
    long var53;
    long var533;
    long var538;
    int var541;
    long var548;
    long var553;
    long var557;
    long var563;
    long var568;
    long var572;
    long var578;
    long var58;
    long var583;
    int var586;
    long var593;
    long var598;
    long var602;
    long var608;
    int var61;
    long var613;
    long var617;
    long var623;
    long var628;
    int var631;
    long var638;
    long var68;
    long var73;
    int var76;
    long var8;
    long var83;
    long var88;
    long var92;
    long var98;
    var2 = (unsigned long)((unsigned int)(((arg0 * 0x41c64e6d) - 0x61c8864f)));
    var8 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var2)) >> 2))) ^ var2)));
    var13 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var8 << 3) | ((unsigned long)(var8) >> 29)) + 0x78dde6c4))) ^ 0x17156075)));
    var16 = (((((unsigned long)(var13) >> 6) | (var13 << 26)) * 0x41c64f15) + 0x538453d7);
    var23 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var16)) >> 8))) ^ (unsigned long)((unsigned int)(var16)))));
    var28 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var23 << 9) | ((unsigned long)(var23) >> 23)) + 0x2e2ac0ea))) ^ -0x339dc565LL)));
    var31 = (((((unsigned long)(var28) >> 12) | (var28 << 20)) * 0x41c64fbd) + 0x8d12dfd);
    var38 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var31)) >> 14))) ^ (unsigned long)((unsigned int)(var31)))));
    var43 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var38 << 15) | ((unsigned long)(var38) >> 17)) - 0x1c8864f0))) ^ -0x7e50eb3fLL)));
    var47 = (unsigned long)((unsigned int)(((((var43 << 14) | ((unsigned long)(var43) >> 18)) * 0x41c65065) - 0x41e1f7dd)));
    var53 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var47)) >> 20))) ^ var47)));
    var58 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var53) >> 11) | (var53 << 21)) - 0x673b8aca))) ^ 0x36fbeee7)));
    var61 = ((((var58 << 8) | ((unsigned long)(var58) >> 24)) * 0x41c6510d) + 0x736ae249);
    var68 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var61)) >> 26))) ^ (unsigned long)((unsigned int)(var61)))));
    var73 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var68) >> 5) | (var68 << 27)) + 0x4e114f5c))) ^ -0x13b736f3LL)));
    var76 = ((((var73 << 2) | ((unsigned long)(var73) >> 30)) * 0x41c651b5) + 0x28b7bc6f);
    var83 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var76)) >> 1))) ^ (unsigned long)((unsigned int)(var76)))));
    var88 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var83 << 2) | ((unsigned long)(var83) >> 30)) + 0x35e2982))) ^ -0x5e6a5ccdLL)));
    var92 = (unsigned long)((unsigned int)((((((unsigned long)(var88) >> 5) | (var88 << 27)) * 0x41c6525d) - 0x21fb696b)));
    var98 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var92)) >> 7))) ^ var92)));
    var103 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var98 << 8) | ((unsigned long)(var98) >> 24)) - 0x4754fc58))) ^ 0x56e27d59)));
    var107 = (unsigned long)((unsigned int)((((((unsigned long)(var103) >> 11) | (var103 << 21)) * 0x41c65305) - 0x6cae8f45)));
    var113 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var107)) >> 13))) ^ var107)));
    var118 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var113 << 14) | ((unsigned long)(var113) >> 18)) + 0x6df7ddce))) ^ 0xc2f577f)));
    var121 = ((((var118 << 15) | ((unsigned long)(var118) >> 17)) * 0x41c653ad) + 0x489e4ae1);
    var128 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var121)) >> 19))) ^ (unsigned long)((unsigned int)(var121)))));
    var133 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var128) >> 12) | (var128 << 20)) + 0x2344b7f4))) ^ -0x3e83ce5bLL)));
    var137 = (unsigned long)((unsigned int)(((((var133 << 9) | ((unsigned long)(var133) >> 23)) * 0x41c65455) - 0x214daf9)));
    var143 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var137)) >> 25))) ^ var137)));
    var148 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var143) >> 6) | (var143 << 26)) - 0x276e6de6))) ^ 0x76c90bcb)));
    var152 = (unsigned long)((unsigned int)(((((var148 << 3) | ((unsigned long)(var148) >> 29)) * 0x41c654fd) - 0x4cc800d3)));
    var158 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var152)) >> 31))) ^ var152)));
    var163 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var158 << 1) | ((unsigned long)(var158) >> 31)) - 0x722193c0))) ^ 0x2c15e5f1)));
    var166 = (((((unsigned long)(var163) >> 4) | (var163 << 28)) * 0x41c655a5) + 0x6884d953);
    var173 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var166)) >> 6))) ^ (unsigned long)((unsigned int)(var166)))));
    var178 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var173 << 7) | ((unsigned long)(var173) >> 25)) + 0x432b4666))) ^ -0x1e9d3fe9LL)));
    var181 = (((((unsigned long)(var178) >> 10) | (var178 << 22)) * 0x41c6564d) + 0x1dd1b379);
    var188 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var181)) >> 12))) ^ (unsigned long)((unsigned int)(var181)))));
    var193 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var188 << 13) | ((unsigned long)(var188) >> 19)) - 0x787df74))) ^ -0x695065c3LL)));
    var197 = (unsigned long)((unsigned int)(((((var193 << 16) | ((unsigned long)(var193) >> 16)) * 0x41c656f5) - 0x2ce17261)));
    var203 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var197)) >> 18))) ^ var197)));
    var208 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var203) >> 13) | (var203 << 19)) - 0x523b054e))) ^ 0x4bfc7463)));
    var212 = (unsigned long)((unsigned int)(((((var208 << 10) | ((unsigned long)(var208) >> 22)) * 0x41c6579d) - 0x7794983b)));
    var218 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var212)) >> 24))) ^ var212)));
    var223 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var218) >> 7) | (var218 << 25)) + 0x6311d4d8))) ^ 0x1494e89)));
    var226 = ((((var223 << 4) | ((unsigned long)(var223) >> 28)) * 0x41c65845) + 0x3db841eb);
    var233 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var226)) >> 30))) ^ (unsigned long)((unsigned int)(var226)))));
    var238 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var233) >> 1) | (var233 << 31)) + 0x185eaefe))) ^ -0x4969d751LL)));
    var242 = (unsigned long)((unsigned int)((((((unsigned long)(var238) >> 3) | (var238 << 29)) * 0x41c658ed) - 0xcfae3ef)));
    var248 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var242)) >> 5))) ^ var242)));
    var253 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var248 << 6) | ((unsigned long)(var248) >> 26)) - 0x325476dc))) ^ 0x6be302d5)));
    var257 = (unsigned long)((unsigned int)((((((unsigned long)(var253) >> 9) | (var253 << 23)) * 0x41c65995) - 0x57ae09c9)));
    var263 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var257)) >> 11))) ^ var257)));
    var268 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var263 << 12) | ((unsigned long)(var263) >> 20)) - 0x7d079cb6))) ^ 0x212fdcfb)));
    var271 = (((((unsigned long)(var268) >> 15) | (var268 << 17)) * 0x41c65a3d) + 0x5d9ed05d);
    var278 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var271)) >> 17))) ^ (unsigned long)((unsigned int)(var271)))));
    var283 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var278) >> 14) | (var278 << 18)) + 0x38453d70))) ^ -0x298348dfLL)));
    var286 = ((((var283 << 11) | ((unsigned long)(var283) >> 21)) * 0x41c65ae5) + 0x12ebaa83);
    var293 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var286)) >> 23))) ^ (unsigned long)((unsigned int)(var286)))));
    var298 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var293) >> 8) | (var293 << 24)) - 0x126de86a))) ^ -0x74366eb9LL)));
    var302 = (unsigned long)((unsigned int)(((((var298 << 5) | ((unsigned long)(var298) >> 27)) * 0x41c65b8d) - 0x37c77b57)));
    var308 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var302)) >> 29))) ^ var302)));
    var313 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var308) >> 2) | (var308 << 30)) - 0x5d210e44))) ^ 0x41166b6d)));
    var316 = (((((unsigned long)(var313) >> 2) | (var313 << 30)) * 0x41c65c35) + 0x7d855ecf);
    var323 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var316)) >> 4))) ^ (unsigned long)((unsigned int)(var316)))));
    var328 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var323 << 5) | ((unsigned long)(var323) >> 27)) + 0x582bcbe2))) ^ -0x99cba6dLL)));
    var331 = (((((unsigned long)(var328) >> 8) | (var328 << 24)) * 0x41c65cdd) + 0x32d238f5);
    var338 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var331)) >> 10))) ^ (unsigned long)((unsigned int)(var331)))));
    var343 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var338 << 11) | ((unsigned long)(var338) >> 21)) + 0xd78a608))) ^ -0x544fe047LL)));
    var347 = (unsigned long)((unsigned int)((((((unsigned long)(var343) >> 14) | (var343 << 18)) * 0x41c65d85) - 0x17e0ece5)));
    var353 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var347)) >> 16))) ^ var347)));
    var358 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var353) >> 15) | (var353 << 17)) - 0x3d3a7fd2))) ^ 0x60fcf9df)));
    var362 = (unsigned long)((unsigned int)(((((var358 << 12) | ((unsigned long)(var358) >> 20)) * 0x41c65e2d) - 0x629412bf)));
    var368 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var362)) >> 22))) ^ var362)));
    var373 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var368) >> 9) | (var368 << 23)) + 0x78125a54))) ^ 0x1649d405)));
    var376 = ((((var373 << 6) | ((unsigned long)(var373) >> 26)) * 0x41c65ed5) + 0x52b8c767);
    var383 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var376)) >> 28))) ^ (unsigned long)((unsigned int)(var376)))));
    var388 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var383) >> 3) | (var383 << 29)) + 0x2d5f347a))) ^ -0x346951d5LL)));
    var391 = (((((unsigned long)(var388) >> 1) | (var388 << 31)) * 0x41c65f7d) + 0x805a18d);
    var398 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var391)) >> 3))) ^ (unsigned long)((unsigned int)(var391)))));
    var403 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var398 << 4) | ((unsigned long)(var398) >> 28)) - 0x1d53f160))) ^ -0x7f1c77afLL)));
    var407 = (unsigned long)((unsigned int)((((((unsigned long)(var403) >> 7) | (var403 << 25)) * 0x41c66025) - 0x42ad844d)));
    var413 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var407)) >> 9))) ^ var407)));
    var418 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var413 << 10) | ((unsigned long)(var413) >> 22)) - 0x6807173a))) ^ 0x36306277)));
    var421 = (((((unsigned long)(var418) >> 13) | (var418 << 19)) * 0x41c660cd) + 0x729f55d9);
    var428 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var421)) >> 15))) ^ (unsigned long)((unsigned int)(var421)))));
    var433 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var428 << 16) | ((unsigned long)(var428) >> 16)) + 0x4d45c2ec))) ^ -0x1482c363LL)));
    var436 = ((((var433 << 13) | ((unsigned long)(var433) >> 19)) * 0x41c66175) + 0x27ec2fff);
    var443 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var436)) >> 21))) ^ (unsigned long)((unsigned int)(var436)))));
    var448 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var443) >> 10) | (var443 << 22)) + 0x2929d12))) ^ -0x5f35e93dLL)));
    var452 = (unsigned long)((unsigned int)(((((var448 << 7) | ((unsigned long)(var448) >> 25)) * 0x41c6621d) - 0x22c6f5db)));
    var458 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var452)) >> 27))) ^ var452)));
    var463 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var458) >> 4) | (var458 << 28)) - 0x482088c8))) ^ 0x5616f0e9)));
    var467 = (unsigned long)((unsigned int)(((((var463 << 1) | ((unsigned long)(var463) >> 31)) * 0x41c662c5) - 0x6d7a1bb5)));
    var473 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var467)) >> 2))) ^ var467)));
    var478 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var473 << 3) | ((unsigned long)(var473) >> 29)) + 0x6d2c515e))) ^ 0xb63cb0f)));
    var481 = (((((unsigned long)(var478) >> 6) | (var478 << 26)) * 0x41c6636d) + 0x47d2be71);
    var488 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var481)) >> 8))) ^ (unsigned long)((unsigned int)(var481)))));
    var493 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var488 << 9) | ((unsigned long)(var488) >> 23)) + 0x22792b84))) ^ -0x3f4f5acbLL)));
    var497 = (unsigned long)((unsigned int)((((((unsigned long)(var493) >> 12) | (var493 << 20)) * 0x41c66415) - 0x2e06769)));
    var503 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var497)) >> 14))) ^ var497)));
    var508 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var503 << 15) | ((unsigned long)(var503) >> 17)) - 0x2839fa56))) ^ 0x75fd7f5b)));
    var512 = (unsigned long)((unsigned int)(((((var508 << 14) | ((unsigned long)(var508) >> 18)) * 0x41c664bd) - 0x4d938d43)));
    var518 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var512)) >> 20))) ^ var512)));
    var523 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var518) >> 11) | (var518 << 21)) - 0x72ed2030))) ^ 0x2b4a5981)));
    var526 = ((((var523 << 8) | ((unsigned long)(var523) >> 24)) * 0x41c66565) + 0x67b94ce3);
    var533 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var526)) >> 26))) ^ (unsigned long)((unsigned int)(var526)))));
    var538 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var533) >> 5) | (var533 << 27)) + 0x425fb9f6))) ^ -0x1f68cc59LL)));
    var541 = ((((var538 << 2) | ((unsigned long)(var538) >> 30)) * 0x41c6660d) + 0x1d062709);
    var548 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var541)) >> 1))) ^ (unsigned long)((unsigned int)(var541)))));
    var553 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var548 << 2) | ((unsigned long)(var548) >> 30)) - 0x8536be4))) ^ -0x6a1bf233LL)));
    var557 = (unsigned long)((unsigned int)((((((unsigned long)(var553) >> 5) | (var553 << 27)) * 0x41c666b5) - 0x2dacfed1)));
    var563 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var557)) >> 7))) ^ var557)));
    var568 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var563 << 8) | ((unsigned long)(var563) >> 24)) - 0x530691be))) ^ 0x4b30e7f3)));
    var572 = (unsigned long)((unsigned int)((((((unsigned long)(var568) >> 11) | (var568 << 21)) * 0x41c6675d) - 0x786024ab)));
    var578 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var572)) >> 13))) ^ var572)));
    var583 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var578 << 14) | ((unsigned long)(var578) >> 18)) + 0x62464868))) ^ 0x7dc219)));
    var586 = ((((var583 << 15) | ((unsigned long)(var583) >> 17)) * 0x41c66805) + 0x3cecb57b);
    var593 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var586)) >> 19))) ^ (unsigned long)((unsigned int)(var586)))));
    var598 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var593) >> 12) | (var593 << 20)) + 0x1793228e))) ^ -0x4a3563c1LL)));
    var602 = (unsigned long)((unsigned int)(((((var598 << 9) | ((unsigned long)(var598) >> 23)) * 0x41c668ad) - 0xdc6705f)));
    var608 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var602)) >> 25))) ^ var602)));
    var613 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((((unsigned long)(var608) >> 6) | (var608 << 26)) - 0x3320034c))) ^ 0x6b177665)));
    var617 = (unsigned long)((unsigned int)(((((var613 << 3) | ((unsigned long)(var613) >> 29)) * 0x41c66955) - 0x58799639)));
    var623 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var617)) >> 31))) ^ var617)));
    var628 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)((((var623 << 1) | ((unsigned long)(var623) >> 31)) - 0x7dd32926))) ^ 0x2064508b)));
    var631 = (((((unsigned long)(var628) >> 4) | (var628 << 28)) * 0x41c669fd) + 0x5cd343ed);
    var638 = (unsigned long)((unsigned int)(((unsigned long)((unsigned int)(((unsigned long)((unsigned int)(var631)) >> 6))) ^ (unsigned long)((unsigned int)(var631)))));
    return (unsigned int)((((var638 << 7) | ((unsigned long)(var638) >> 25)) + 0x3779b200));
}

← 213 fixtures