// File: /workspace/github_cpp_makefile_star2_O3/vsklad[P]cgen/./acl/sha256.hpp
// Function: acl::SHA256<bal::Literal<bal::Anf>>::execute(bal::Ref<bal::GF2NElement<32ul, bal::Literal<bal::Anf>>>*, unsigned long, bal::Ref<bal::GF2NElement<32ul, bal::Literal<bal::Anf>>> (&) [8], bal::Tracer<32ul, bal::Literal<bal::Anf>>&, unsigned int)
void execute(Ref<Word> *M,
                     const std::size_t M_size, // size in words
                     Ref<Word> (&H)[SHA256_HASH_SIZE],
                     Tracer<SHA256_WORD_SIZE, BIT>& tracer,
                     const uint32_t rounds = ROUNDS_NUMBER) {
            
            assert(M_size > 0 && (M_size % SHA256_MESSAGE_BLOCK_SIZE) == 0);
            assert(rounds > 0 && rounds <= SHA256_ROUNDS_NUMBER);
            
            const Ref<Word> K[SHA256_ROUNDS_NUMBER] = {
                0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
                0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
                0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
                0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
                0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
                0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
                0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
                0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
                0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
                0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
                0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
                0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
                0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
                0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
                0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
                0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
            };
            
            H[0] = 0x6a09e667;
            H[1] = 0xbb67ae85;
            H[2] = 0x3c6ef372;
            H[3] = 0xa54ff53a;
            H[4] = 0x510e527f;
            H[5] = 0x9b05688c;
            H[6] = 0x1f83d9ab;
            H[7] = 0x5be0cd19;
            
            for (std::size_t block_index = 0; block_index < M_size / SHA256_MESSAGE_BLOCK_SIZE; block_index++) {
                Ref<Word> W[rounds];
                
                for (unsigned int i = 0; i < _min(SHA256_MESSAGE_BLOCK_SIZE, rounds); i++) {
                    W[i] = M[i];
                    tracer.trace("M", block_index * SHA256_MESSAGE_BLOCK_SIZE + i, M[i]);
                    tracer.trace("W", block_index * SHA256_MESSAGE_BLOCK_SIZE + i, M[i]);
                };
                
                for (unsigned int i = SHA256_MESSAGE_BLOCK_SIZE; i < rounds; i++) {
                    Ref<Word> args[] = { ss1(W[i-2]), W[i-7], ss0(W[i-15]), W[i-16] };
                    W[i] = add(args);
                    tracer.trace("W", block_index * SHA256_MESSAGE_BLOCK_SIZE + i, W[i]);
                };
                
                Ref<Word> a = H[0];
                Ref<Word> b = H[1];
                Ref<Word> c = H[2];
                Ref<Word> d = H[3];
                Ref<Word> e = H[4];
                Ref<Word> f = H[5];
                Ref<Word> g = H[6];
                Ref<Word> h = H[7];
                
                for (unsigned int i = 0; i < rounds; i++) {
                    Ref<Word> args[] = { h, sl1(e), ch(e, f, g), K[i], W[i] };
                    Ref<Word> t1 = add(args);
                    Ref<Word> t2 = sl0(a) + maj(a, b, c);
                    
                    h = g;
                    g = f;
                    f = e;
                    e = d + t1;
                    d = c;
                    c = b;
                    b = a;
                    a = t1 + t2;
                    
                    tracer.trace("A", block_index * SHA256_MESSAGE_BLOCK_SIZE + i, a);
                };
                
                H[0] = a + H[0];
                H[1] = b + H[1];
                H[2] = c + H[2];
                H[3] = d + H[3];
                H[4] = e + H[4];
                H[5] = f + H[5];
                H[6] = g + H[6];
                H[7] = h + H[7];
                
                M += SHA256_MESSAGE_BLOCK_SIZE;
            };
                
            trace(tracer, "H", H);
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x348, %rsp            # imm = 0x348
movq %r9, -0xc8(%rbp)
movq %rsi, -0x130(%rbp)
movq %rdi, -0xb8(%rbp)
testq %rdx, %rdx
je 0x310bc
movq %rdx, %r15
movl %r15d, %eax
andl $0xf, %eax
jne 0x310bc
movq %rcx, -0xe8(%rbp)
movq -0xc8(%rbp), %rax
decl %eax
cmpl $0x40, %eax
jae 0x310db
movq %r8, %r14
xorl %ebx, %ebx
leaq -0x370(%rbp), %r13
movq %rbx, (%r13)
xorl %edi, %edi
movl $0x428a2f98, %esi       # imm = 0x428A2F98
callq 0x2ec16
movq %r13, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x368(%rbp), %r12
movq %rbx, (%r12)
xorl %edi, %edi
movl $0x71374491, %esi       # imm = 0x71374491
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x360(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xb5c0fbcf, %esi       # imm = 0xB5C0FBCF
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x358(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xe9b5dba5, %esi       # imm = 0xE9B5DBA5
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x350(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x3956c25b, %esi       # imm = 0x3956C25B
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x348(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x59f111f1, %esi       # imm = 0x59F111F1
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x340(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x923f82a4, %esi       # imm = 0x923F82A4
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x338(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xab1c5ed5, %esi       # imm = 0xAB1C5ED5
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x330(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xd807aa98, %esi       # imm = 0xD807AA98
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x328(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x12835b01, %esi       # imm = 0x12835B01
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x320(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x243185be, %esi       # imm = 0x243185BE
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x318(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x550c7dc3, %esi       # imm = 0x550C7DC3
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x310(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x72be5d74, %esi       # imm = 0x72BE5D74
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x308(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x80deb1fe, %esi       # imm = 0x80DEB1FE
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x300(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x9bdc06a7, %esi       # imm = 0x9BDC06A7
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2f8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xc19bf174, %esi       # imm = 0xC19BF174
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2f0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xe49b69c1, %esi       # imm = 0xE49B69C1
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2e8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xefbe4786, %esi       # imm = 0xEFBE4786
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2e0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xfc19dc6, %esi        # imm = 0xFC19DC6
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2d8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x240ca1cc, %esi       # imm = 0x240CA1CC
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2d0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x2de92c6f, %esi       # imm = 0x2DE92C6F
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2c8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x4a7484aa, %esi       # imm = 0x4A7484AA
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2c0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x5cb0a9dc, %esi       # imm = 0x5CB0A9DC
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2b8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x76f988da, %esi       # imm = 0x76F988DA
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2b0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x983e5152, %esi       # imm = 0x983E5152
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2a8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xa831c66d, %esi       # imm = 0xA831C66D
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x2a0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xb00327c8, %esi       # imm = 0xB00327C8
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x298(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xbf597fc7, %esi       # imm = 0xBF597FC7
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x290(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xc6e00bf3, %esi       # imm = 0xC6E00BF3
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x288(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xd5a79147, %esi       # imm = 0xD5A79147
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x280(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x6ca6351, %esi        # imm = 0x6CA6351
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x278(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x14292967, %esi       # imm = 0x14292967
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x270(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x27b70a85, %esi       # imm = 0x27B70A85
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x268(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x2e1b2138, %esi       # imm = 0x2E1B2138
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x260(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x4d2c6dfc, %esi       # imm = 0x4D2C6DFC
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x258(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x53380d13, %esi       # imm = 0x53380D13
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x250(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x650a7354, %esi       # imm = 0x650A7354
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x248(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x766a0abb, %esi       # imm = 0x766A0ABB
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x240(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x81c2c92e, %esi       # imm = 0x81C2C92E
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x238(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x92722c85, %esi       # imm = 0x92722C85
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x230(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xa2bfe8a1, %esi       # imm = 0xA2BFE8A1
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x228(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xa81a664b, %esi       # imm = 0xA81A664B
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x220(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xc24b8b70, %esi       # imm = 0xC24B8B70
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x218(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xc76c51a3, %esi       # imm = 0xC76C51A3
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x210(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xd192e819, %esi       # imm = 0xD192E819
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x208(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xd6990624, %esi       # imm = 0xD6990624
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x200(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xf40e3585, %esi       # imm = 0xF40E3585
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1f8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x106aa070, %esi       # imm = 0x106AA070
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1f0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x19a4c116, %esi       # imm = 0x19A4C116
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1e8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x1e376c08, %esi       # imm = 0x1E376C08
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1e0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x2748774c, %esi       # imm = 0x2748774C
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1d8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x34b0bcb5, %esi       # imm = 0x34B0BCB5
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1d0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x391c0cb3, %esi       # imm = 0x391C0CB3
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1c8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x4ed8aa4a, %esi       # imm = 0x4ED8AA4A
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1c0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x5b9cca4f, %esi       # imm = 0x5B9CCA4F
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1b8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x682e6ff3, %esi       # imm = 0x682E6FF3
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1b0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x748f82ee, %esi       # imm = 0x748F82EE
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1a8(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x78a5636f, %esi       # imm = 0x78A5636F
callq 0x2ec16
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x1a0(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x84c87814, %esi       # imm = 0x84C87814
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x198(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x8cc70208, %esi       # imm = 0x8CC70208
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x190(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0x90befffa, %esi       # imm = 0x90BEFFFA
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x188(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xa4506ceb, %esi       # imm = 0xA4506CEB
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x180(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xbef9a3f7, %esi       # imm = 0xBEF9A3F7
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
leaq -0x178(%rbp), %r12
movq $0x0, (%r12)
xorl %edi, %edi
movl $0xc67178f2, %esi       # imm = 0xC67178F2
callq 0x2ecb6
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d8ee
movq -0xe8(%rbp), %rbx
movq (%rbx), %rdi
movl $0x6a09e667, %esi       # imm = 0x6A09E667
callq 0x2ec16
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2d8ee
movq 0x8(%rbx), %rdi
movl $0xbb67ae85, %esi       # imm = 0xBB67AE85
callq 0x2ecb6
leaq 0x8(%rbx), %rdi
movq %rdi, -0x118(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x10(%rbx), %rdi
movl $0x3c6ef372, %esi       # imm = 0x3C6EF372
callq 0x2ec16
leaq 0x10(%rbx), %rdi
movq %rdi, -0x120(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x18(%rbx), %rdi
movl $0xa54ff53a, %esi       # imm = 0xA54FF53A
callq 0x2ecb6
leaq 0x18(%rbx), %rdi
movq %rdi, -0x110(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x20(%rbx), %rdi
movl $0x510e527f, %esi       # imm = 0x510E527F
callq 0x2ec16
leaq 0x20(%rbx), %rdi
movq %rdi, -0x108(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x28(%rbx), %rdi
movl $0x9b05688c, %esi       # imm = 0x9B05688C
callq 0x2ecb6
leaq 0x28(%rbx), %rdi
movq %rdi, -0x100(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x30(%rbx), %rdi
movl $0x1f83d9ab, %esi       # imm = 0x1F83D9AB
callq 0x2ec16
movq %r14, -0xb0(%rbp)
leaq 0x30(%rbx), %rdi
movq %rdi, -0xf8(%rbp)
movq %rax, %rsi
callq 0x2d8ee
movq 0x38(%rbx), %rdi
movl $0x5be0cd19, %esi       # imm = 0x5BE0CD19
callq 0x2ec16
leaq 0x38(%rbx), %rdi
movq %rdi, -0xf0(%rbp)
movq %rax, %rsi
callq 0x2d8ee
shrq $0x4, %r15
movq -0xc8(%rbp), %rax
cmpl $0x10, %eax
movl $0x10, %ecx
cmovbl %eax, %ecx
movl %eax, %r13d
leaq (,%r13,8), %rax
movq %rax, -0x128(%rbp)
shll $0x3, %ecx
movq %rcx, -0x170(%rbp)
xorl %r14d, %r14d
movq $0x0, -0xa8(%rbp)
movq %r15, -0x148(%rbp)
movq %rsp, -0x150(%rbp)
movq %rsp, %rdi
leaq 0xf(,%r13,8), %rax
andq $-0x10, %rax
subq %rax, %rdi
movq %rdi, %rsp
movq %rdi, -0x30(%rbp)
xorl %esi, %esi
movq -0x128(%rbp), %rdx
callq 0xb160
movq %r14, -0x158(%rbp)
xorl %ebx, %ebx
movq -0x130(%rbp), %rax
leaq (%rax,%rbx), %r15
movq -0x30(%rbp), %rcx
leaq (%rcx,%rbx), %rdi
movq (%rax,%rbx), %rsi
callq 0x2d8ee
movq -0xb0(%rbp), %r12
movq (%r12), %rax
movq %r12, %rdi
leaq 0x18190(%rip), %rsi     # 0x489ab
movq %r14, %rdx
movq %r15, %rcx
callq *0x8(%rax)
movq (%r12), %rax
movq %r12, %rdi
leaq 0x150ef(%rip), %rsi     # 0x45921
movq %r14, %rdx
movq %r15, %rcx
callq *0x8(%rax)
addq $0x8, %rbx
incq %r14
cmpq %rbx, -0x170(%rbp)
jne 0x307ea
cmpl $0x11, -0xc8(%rbp)
movq -0xe8(%rbp), %r12
jb 0x30992
movq -0xa8(%rbp), %rbx
shlq $0x4, %rbx
movq -0x30(%rbp), %rax
leaq -0x10(%rax), %rcx
movq %rcx, -0x168(%rbp)
addq $-0x78, %rax
movq %rax, -0x160(%rbp)
movl $0x10, %r14d
movq -0x168(%rbp), %rax
leaq (%rax,%r14,8), %rdx
leaq -0x90(%rbp), %r15
movq %r15, %rdi
movq -0xb8(%rbp), %rsi
callq 0x314de
movq -0x30(%rbp), %rax
movq -0x38(%rax,%r14,8), %rax
movq %rax, -0x88(%rbp)
testq %rax, %rax
je 0x308cb
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x160(%rbp), %rax
leaq (%rax,%r14,8), %rdx
leaq -0x80(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0x315be
movq -0x30(%rbp), %rax
movq -0x80(%rax,%r14,8), %rax
movq %rax, -0x78(%rbp)
testq %rax, %rax
je 0x30903
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
leaq -0x140(%rbp), %rdi
movq %r15, %rsi
callq 0x3169e
movq -0x30(%rbp), %rax
leaq (%rax,%r14,8), %rcx
movq -0x140(%rbp), %rax
movq %rax, (%rcx)
leaq (%rbx,%r14), %rdx
movq -0xb0(%rbp), %rdi
movq (%rdi), %rax
leaq 0x14fe8(%rip), %rsi     # 0x45921
callq *0x8(%rax)
movl $0x18, %r15d
movq -0x90(%rbp,%r15), %rax
testq %rax, %rax
je 0x3097c
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x3096b
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30970
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x90(%rbp,%r15)
addq $-0x8, %r15
cmpq $-0x8, %r15
jne 0x30942
incq %r14
cmpq %r13, %r14
jne 0x3088a
movq (%r12), %rax
movq %rax, -0x38(%rbp)
testq %rax, %rax
je 0x309aa
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x118(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
testq %rax, %rax
movq -0x120(%rbp), %rdx
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %r8
movq -0xf8(%rbp), %r9
movq -0xf0(%rbp), %r10
je 0x309f2
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%rdx), %rax
movq %rax, -0x58(%rbp)
testq %rax, %rax
je 0x30a09
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%rsi), %rax
movq %rax, -0xa0(%rbp)
testq %rax, %rax
je 0x30a23
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%rdi), %rax
movq %rax, -0x40(%rbp)
testq %rax, %rax
je 0x30a3a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%r8), %rax
movq %rax, -0x50(%rbp)
testq %rax, %rax
je 0x30a51
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%r9), %rax
movq %rax, -0x48(%rbp)
testq %rax, %rax
je 0x30a68
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq (%r10), %rax
movq %rax, -0x98(%rbp)
testq %rax, %rax
je 0x30a82
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0xa8(%rbp), %r15
shlq $0x4, %r15
xorl %ebx, %ebx
movq -0x98(%rbp), %rax
movq %rax, -0x90(%rbp)
testq %rax, %rax
je 0x30aad
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
leaq -0x88(%rbp), %rdi
movq %rdi, %r14
movq -0xb8(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x3173a
movq -0x40(%rbp), %rdx
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %r8
leaq -0x80(%rbp), %rdi
movq %rdi, %r14
xorl %esi, %esi
callq 0x2f261
movq -0x370(%rbp,%rbx,8), %rax
movq %rax, -0x78(%rbp)
testq %rax, %rax
je 0x30afd
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
movq -0x30(%rbp), %rax
movq (%rax,%rbx,8), %rax
movq %rax, -0x70(%rbp)
testq %rax, %rax
je 0x30b19
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
incl 0x8(%rax,%rcx)
leaq -0xc0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x2eb79
leaq -0xd8(%rbp), %rdi
movq -0xb8(%rbp), %rsi
leaq -0x38(%rbp), %rdx
callq 0x3181a
movq -0x38(%rbp), %rdx
movq -0x60(%rbp), %rcx
movq -0x58(%rbp), %r8
leaq -0xd0(%rbp), %rdi
xorl %esi, %esi
callq 0x2f8cd
movq -0xd8(%rbp), %rdx
movq -0xd0(%rbp), %rcx
leaq -0xe0(%rbp), %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0xd0(%rbp), %rax
testq %rax, %rax
je 0x30ba6
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30ba1
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30ba6
decl %eax
movl %eax, 0x8(%rdi)
movq -0xd8(%rbp), %rax
testq %rax, %rax
je 0x30bd3
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30bce
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30bd3
decl %eax
movl %eax, 0x8(%rdi)
movq -0x48(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x2d8ee
movq -0x50(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x2d8ee
movq -0x40(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x2d8ee
movq -0xa0(%rbp), %rdx
movq -0xc0(%rbp), %rcx
leaq -0x140(%rbp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x140(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x58(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x2d8ee
movq -0x60(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x2d8ee
movq -0x38(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x2d8ee
movq -0xc0(%rbp), %rdx
movq -0xe0(%rbp), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x140(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq (%r15,%rbx), %rdx
movq -0xb0(%rbp), %rdi
movq (%rdi), %rax
leaq 0x1870b(%rip), %rsi     # 0x49394
leaq -0x38(%rbp), %rcx
callq *0x8(%rax)
movq -0xe0(%rbp), %rax
testq %rax, %rax
je 0x30cbd
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30cb8
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30cbd
decl %eax
movl %eax, 0x8(%rdi)
movq -0xc0(%rbp), %rax
testq %rax, %rax
je 0x30cea
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30ce5
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30cea
decl %eax
movl %eax, 0x8(%rdi)
movl $0x20, %r14d
movq -0x90(%rbp,%r14), %rax
testq %rax, %rax
je 0x30d2a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30d19
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30d1e
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x90(%rbp,%r14)
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x30cf0
incq %rbx
cmpq %r13, %rbx
jne 0x30a8f
movq -0x38(%rbp), %rdx
movq (%r12), %rcx
leaq -0x90(%rbp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%r12)
movq -0x60(%rbp), %rdx
movq 0x8(%r12), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x148(%rbp), %r15
movq -0x120(%rbp), %rbx
movq -0x90(%rbp), %rax
movq -0x118(%rbp), %rcx
movq %rax, (%rcx)
movq -0x58(%rbp), %rdx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0xa0(%rbp), %rdx
movq -0x110(%rbp), %rbx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0x40(%rbp), %rdx
movq -0x108(%rbp), %rbx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0x50(%rbp), %rdx
movq -0x100(%rbp), %rbx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0x48(%rbp), %rdx
movq -0xf8(%rbp), %rbx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0x98(%rbp), %rdx
movq -0xf0(%rbp), %rbx
movq (%rbx), %rcx
movq %r14, %rdi
xorl %esi, %esi
callq 0x2fa97
movq -0x90(%rbp), %rax
movq %rax, (%rbx)
movq -0x98(%rbp), %rax
testq %rax, %rax
je 0x30e8e
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30e89
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30e8e
decl %eax
movl %eax, 0x8(%rdi)
movq -0x48(%rbp), %rax
testq %rax, %rax
je 0x30eb8
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30eb3
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30eb8
decl %eax
movl %eax, 0x8(%rdi)
movq -0x50(%rbp), %rax
testq %rax, %rax
je 0x30ee2
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30edd
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30ee2
decl %eax
movl %eax, 0x8(%rdi)
movq -0x40(%rbp), %rax
testq %rax, %rax
je 0x30f0c
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30f07
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30f0c
decl %eax
movl %eax, 0x8(%rdi)
movq -0xa0(%rbp), %rax
testq %rax, %rax
je 0x30f39
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30f34
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30f39
decl %eax
movl %eax, 0x8(%rdi)
movq -0x58(%rbp), %rax
testq %rax, %rax
je 0x30f63
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30f5e
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30f63
decl %eax
movl %eax, 0x8(%rdi)
movq -0x60(%rbp), %rax
testq %rax, %rax
je 0x30f8d
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30f88
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30f8d
decl %eax
movl %eax, 0x8(%rdi)
movq -0x38(%rbp), %rax
testq %rax, %rax
je 0x30fb7
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30fb2
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30fb7
decl %eax
movl %eax, 0x8(%rdi)
subq $-0x80, -0x130(%rbp)
movq -0x128(%rbp), %rbx
movq -0x30(%rbp), %rax
movq -0x8(%rax,%rbx), %rax
testq %rax, %rax
je 0x31002
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x30ff0
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x30ff5
decl %eax
movl %eax, 0x8(%rdi)
movq -0x30(%rbp), %rax
movq $0x0, -0x8(%rax,%rbx)
addq $-0x8, %rbx
jne 0x30fc6
movq -0x150(%rbp), %rsp
movq -0xa8(%rbp), %rcx
incq %rcx
movq -0x158(%rbp), %r14
addq $0x10, %r14
movq %rcx, -0xa8(%rbp)
cmpq %r15, %rcx
jne 0x307b3
xorl %r14d, %r14d
leaq 0x18358(%rip), %r15     # 0x49396
movq -0xb0(%rbp), %rbx
movq (%rbx), %rax
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %r12, %rcx
callq *0x8(%rax)
incq %r14
addq $0x8, %r12
cmpq $0x8, %r14
jne 0x31045
movl $0x1f8, %ebx            # imm = 0x1F8
movq -0x370(%rbp,%rbx), %rax
testq %rax, %rax
je 0x310a3
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x31092
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x31097
decl %eax
movl %eax, 0x8(%rdi)
movq $0x0, -0x370(%rbp,%rbx)
addq $-0x8, %rbx
cmpq $-0x8, %rbx
jne 0x31069
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18b68(%rip), %rdi     # 0x49c2b
leaq 0x18b99(%rip), %rsi     # 0x49c63
leaq 0x18ba3(%rip), %rcx     # 0x49c74
movl $0x3d, %edx
callq 0xb180
leaq 0x18c38(%rip), %rdi     # 0x49d1a
leaq 0x18b7a(%rip), %rsi     # 0x49c63
leaq 0x18b84(%rip), %rcx     # 0x49c74
movl $0x3e, %edx
callq 0xb180
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x311c7
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
jmp 0x3119e
movq %rax, %rbx
addq $-0x8, %r12
movq (%r12), %rdi
testq %rdi, %rdi
jne 0x311bd
leaq -0x8(%r12), %rax
cmpq %r13, %r12
movq %rax, %r12
jne 0x311a5
jmp 0x311fb
movq %r12, %rsi
callq 0xbc13
jmp 0x311ae
movq %rax, %rbx
movl $0x1f8, %r14d           # imm = 0x1F8
movq -0x370(%rbp,%r14), %rdi
testq %rdi, %rdi
jne 0x311e9
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x311d0
jmp 0x311fb
leaq (%r14,%rbp), %rsi
addq $-0x370, %rsi           # imm = 0xFC90
callq 0xbc4a
jmp 0x311dd
movq %rbx, %rdi
callq 0xb4e0
jmp 0x31211
jmp 0x31211
jmp 0x31211
jmp 0x31211
jmp 0x31211
jmp 0x31211
jmp 0x31211
movq %rax, %rbx
jmp 0x31352
movq %rax, %rbx
leaq -0x90(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0xba94
jmp 0x314ad
jmp 0x31238
jmp 0x314aa
movq %rax, %rbx
movl $0x18, %r14d
movq -0x90(%rbp,%r14), %rdi
testq %rdi, %rdi
jne 0x3125d
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x31241
jmp 0x314ad
leaq (%r14,%rbp), %rsi
addq $-0x90, %rsi
callq 0xbba5
jmp 0x3124e
movq %rax, %rbx
jmp 0x3130f
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
testq %rdi, %rdi
je 0x312a0
leaq -0x140(%rbp), %r14
movq %rbx, %rsi
movq %r14, %rcx
callq 0xbb26
movq (%r14), %rbx
jmp 0x312a0
movq %rax, %rbx
movq -0xd8(%rbp), %rax
jmp 0x312bc
movq %rax, %rbx
jmp 0x312e2
jmp 0x312b2
jmp 0x312b2
movq %rax, %rbx
movq -0xe0(%rbp), %rax
testq %rax, %rax
je 0x312e2
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x312dd
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x312e2
decl %eax
movl %eax, 0x8(%rdi)
movq -0xc0(%rbp), %rax
testq %rax, %rax
je 0x3130f
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x3130a
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x3130f
decl %eax
movl %eax, 0x8(%rdi)
movl $0x20, %r14d
movq -0x90(%rbp,%r14), %rdi
testq %rdi, %rdi
jne 0x3132e
addq $-0x8, %r14
cmpq $-0x8, %r14
jne 0x31315
jmp 0x31352
leaq (%r14,%rbp), %rsi
addq $-0x90, %rsi
callq 0xbb6e
jmp 0x31322
movq %rax, %rbx
leaq -0x90(%rbp), %rsi
movq %r14, %rdi
callq 0xbadd
movq -0x98(%rbp), %rax
testq %rax, %rax
je 0x3137f
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x3137a
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x3137f
decl %eax
movl %eax, 0x8(%rdi)
movq -0x48(%rbp), %rax
testq %rax, %rax
je 0x313a9
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x313a4
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x313a9
decl %eax
movl %eax, 0x8(%rdi)
movq -0x50(%rbp), %rax
testq %rax, %rax
je 0x313d3
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x313ce
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x313d3
decl %eax
movl %eax, 0x8(%rdi)
movq -0x40(%rbp), %rax
testq %rax, %rax
je 0x313fd
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x313f8
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x313fd
decl %eax
movl %eax, 0x8(%rdi)
movq -0xa0(%rbp), %rax
testq %rax, %rax
je 0x3142a
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x31425
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x3142a
decl %eax
movl %eax, 0x8(%rdi)
movq -0x58(%rbp), %rax
testq %rax, %rax
je 0x31454
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x3144f
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x31454
decl %eax
movl %eax, 0x8(%rdi)
movq -0x60(%rbp), %rax
testq %rax, %rax
je 0x3147e
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x31479
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x3147e
decl %eax
movl %eax, 0x8(%rdi)
movq -0x38(%rbp), %rax
testq %rax, %rax
je 0x314ad
movq (%rax), %rcx
movq -0x20(%rcx), %rcx
leaq (%rax,%rcx), %rdi
movl 0x8(%rax,%rcx), %eax
cmpl $0x1, %eax
ja 0x314a3
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x314ad
decl %eax
movl %eax, 0x8(%rdi)
jmp 0x314ad
movq %rax, %rbx
addq $-0x8, -0x30(%rbp)
shlq $0x3, %r13
movq -0x30(%rbp), %rax
movq (%rax,%r13), %rdi
testq %rdi, %rdi
jne 0x314ce
addq $-0x8, %r13
jne 0x314b6
jmp 0x311ca
movq -0x30(%rbp), %rax
leaq (%rax,%r13), %rsi
callq 0xbbdc
jmp 0x314c3
nop